|
@@ -32,7 +32,7 @@
|
|
|
#include <linux/libata.h>
|
|
|
|
|
|
#define DRV_NAME "pata_cmd64x"
|
|
|
-#define DRV_VERSION "0.2.5"
|
|
|
+#define DRV_VERSION "0.2.15"
|
|
|
|
|
|
/*
|
|
|
* CMD64x specific registers definition.
|
|
@@ -368,21 +368,27 @@ static int cmd64x_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
|
|
|
if (id->driver_data == 0) /* 643 */
|
|
|
ata_pci_bmdma_clear_simplex(pdev);
|
|
|
|
|
|
- if (pdev->device == PCI_DEVICE_ID_CMD_646) {
|
|
|
- /* Does UDMA work ? */
|
|
|
- if (pdev->revision > 4) {
|
|
|
+ if (pdev->device == PCI_DEVICE_ID_CMD_646)
|
|
|
+ switch (pdev->revision) {
|
|
|
+ /* UDMA works since rev 5 */
|
|
|
+ default:
|
|
|
ppi[0] = &cmd_info[2];
|
|
|
ppi[1] = &cmd_info[2];
|
|
|
- }
|
|
|
- /* Early rev with other problems ? */
|
|
|
- else if (pdev->revision == 1) {
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ case 4:
|
|
|
+ break;
|
|
|
+ /* Rev 1 with other problems? */
|
|
|
+ case 1:
|
|
|
ppi[0] = &cmd_info[3];
|
|
|
ppi[1] = &cmd_info[3];
|
|
|
- }
|
|
|
- /* revs 1,2 have no CNTRL_CH0 */
|
|
|
- if (pdev->revision < 3)
|
|
|
+ /* FALL THRU */
|
|
|
+ /* Early revs have no CNTRL_CH0 */
|
|
|
+ case 2:
|
|
|
+ case 0:
|
|
|
cntrl_ch0_ok = 0;
|
|
|
- }
|
|
|
+ break;
|
|
|
+ }
|
|
|
|
|
|
cmd64x_fixup(pdev);
|
|
|
|