diff options
Diffstat (limited to 'drivers/ide/it8172.c')
-rw-r--r-- | drivers/ide/it8172.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/ide/it8172.c b/drivers/ide/it8172.c index 0d266a5b524d..560e66d07659 100644 --- a/drivers/ide/it8172.c +++ b/drivers/ide/it8172.c | |||
@@ -37,12 +37,12 @@ | |||
37 | 37 | ||
38 | #define DRV_NAME "IT8172" | 38 | #define DRV_NAME "IT8172" |
39 | 39 | ||
40 | static void it8172_set_pio_mode(ide_drive_t *drive, const u8 pio) | 40 | static void it8172_set_pio_mode(ide_hwif_t *hwif, ide_drive_t *drive) |
41 | { | 41 | { |
42 | ide_hwif_t *hwif = drive->hwif; | ||
43 | struct pci_dev *dev = to_pci_dev(hwif->dev); | 42 | struct pci_dev *dev = to_pci_dev(hwif->dev); |
44 | u16 drive_enables; | 43 | u16 drive_enables; |
45 | u32 drive_timing; | 44 | u32 drive_timing; |
45 | const u8 pio = drive->pio_mode - XFER_PIO_0; | ||
46 | 46 | ||
47 | /* | 47 | /* |
48 | * The highest value of DIOR/DIOW pulse width and recovery time | 48 | * The highest value of DIOR/DIOW pulse width and recovery time |
@@ -77,14 +77,14 @@ static void it8172_set_pio_mode(ide_drive_t *drive, const u8 pio) | |||
77 | pci_write_config_dword(dev, 0x44, drive_timing); | 77 | pci_write_config_dword(dev, 0x44, drive_timing); |
78 | } | 78 | } |
79 | 79 | ||
80 | static void it8172_set_dma_mode(ide_drive_t *drive, const u8 speed) | 80 | static void it8172_set_dma_mode(ide_hwif_t *hwif, ide_drive_t *drive) |
81 | { | 81 | { |
82 | ide_hwif_t *hwif = drive->hwif; | ||
83 | struct pci_dev *dev = to_pci_dev(hwif->dev); | 82 | struct pci_dev *dev = to_pci_dev(hwif->dev); |
84 | int a_speed = 3 << (drive->dn * 4); | 83 | int a_speed = 3 << (drive->dn * 4); |
85 | int u_flag = 1 << drive->dn; | 84 | int u_flag = 1 << drive->dn; |
86 | int u_speed = 0; | 85 | int u_speed = 0; |
87 | u8 reg48, reg4a; | 86 | u8 reg48, reg4a; |
87 | const u8 speed = drive->dma_mode; | ||
88 | 88 | ||
89 | pci_read_config_byte(dev, 0x48, ®48); | 89 | pci_read_config_byte(dev, 0x48, ®48); |
90 | pci_read_config_byte(dev, 0x4a, ®4a); | 90 | pci_read_config_byte(dev, 0x4a, ®4a); |
@@ -98,14 +98,14 @@ static void it8172_set_dma_mode(ide_drive_t *drive, const u8 speed) | |||
98 | pci_write_config_byte(dev, 0x4a, reg4a | u_speed); | 98 | pci_write_config_byte(dev, 0x4a, reg4a | u_speed); |
99 | } else { | 99 | } else { |
100 | const u8 mwdma_to_pio[] = { 0, 3, 4 }; | 100 | const u8 mwdma_to_pio[] = { 0, 3, 4 }; |
101 | u8 pio; | ||
102 | 101 | ||
103 | pci_write_config_byte(dev, 0x48, reg48 & ~u_flag); | 102 | pci_write_config_byte(dev, 0x48, reg48 & ~u_flag); |
104 | pci_write_config_byte(dev, 0x4a, reg4a & ~a_speed); | 103 | pci_write_config_byte(dev, 0x4a, reg4a & ~a_speed); |
105 | 104 | ||
106 | pio = mwdma_to_pio[speed - XFER_MW_DMA_0]; | 105 | drive->pio_mode = |
106 | mwdma_to_pio[speed - XFER_MW_DMA_0] + XFER_PIO_0; | ||
107 | 107 | ||
108 | it8172_set_pio_mode(drive, pio); | 108 | it8172_set_pio_mode(hwif, drive); |
109 | } | 109 | } |
110 | } | 110 | } |
111 | 111 | ||