diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2007-10-16 16:29:56 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2007-10-16 16:29:56 -0400 |
commit | 1c54a93d4de34c87be9c63fe5094157e10995d6b (patch) | |
tree | 9da94f64f4d432ca222547f555c9c1bb10bf2e25 /drivers/ide/pci/it8213.c | |
parent | 3135469e1f679b1728fa047ed43b0c63cdf50c84 (diff) |
it8213/piix/slc90e66: "de-couple" PIO and UDMA modes
Don't force PIO4 when programming UDMA mode (suggested by Sergei).
Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/pci/it8213.c')
-rw-r--r-- | drivers/ide/pci/it8213.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/ide/pci/it8213.c b/drivers/ide/pci/it8213.c index 069152dd4697..2102167e4f08 100644 --- a/drivers/ide/pci/it8213.c +++ b/drivers/ide/pci/it8213.c | |||
@@ -93,7 +93,7 @@ static void it8213_set_dma_mode(ide_drive_t *drive, const u8 speed) | |||
93 | int w_flag = 0x10 << drive->dn; | 93 | int w_flag = 0x10 << drive->dn; |
94 | int u_speed = 0; | 94 | int u_speed = 0; |
95 | u16 reg4042, reg4a; | 95 | u16 reg4042, reg4a; |
96 | u8 reg48, reg54, reg55, pio; | 96 | u8 reg48, reg54, reg55; |
97 | 97 | ||
98 | pci_read_config_word(dev, maslave, ®4042); | 98 | pci_read_config_word(dev, maslave, ®4042); |
99 | pci_read_config_byte(dev, 0x48, ®48); | 99 | pci_read_config_byte(dev, 0x48, ®48); |
@@ -134,10 +134,9 @@ static void it8213_set_dma_mode(ide_drive_t *drive, const u8 speed) | |||
134 | pci_write_config_byte(dev, 0x54, reg54 | v_flag); | 134 | pci_write_config_byte(dev, 0x54, reg54 | v_flag); |
135 | } else | 135 | } else |
136 | pci_write_config_byte(dev, 0x54, reg54 & ~v_flag); | 136 | pci_write_config_byte(dev, 0x54, reg54 & ~v_flag); |
137 | |||
138 | pio = 4; | ||
139 | } else { | 137 | } else { |
140 | const u8 mwdma_to_pio[] = { 0, 3, 4 }; | 138 | const u8 mwdma_to_pio[] = { 0, 3, 4 }; |
139 | u8 pio; | ||
141 | 140 | ||
142 | if (reg48 & u_flag) | 141 | if (reg48 & u_flag) |
143 | pci_write_config_byte(dev, 0x48, reg48 & ~u_flag); | 142 | pci_write_config_byte(dev, 0x48, reg48 & ~u_flag); |
@@ -152,9 +151,9 @@ static void it8213_set_dma_mode(ide_drive_t *drive, const u8 speed) | |||
152 | pio = mwdma_to_pio[speed - XFER_MW_DMA_0]; | 151 | pio = mwdma_to_pio[speed - XFER_MW_DMA_0]; |
153 | else | 152 | else |
154 | pio = 2; /* only SWDMA2 is allowed */ | 153 | pio = 2; /* only SWDMA2 is allowed */ |
155 | } | ||
156 | 154 | ||
157 | it8213_set_pio_mode(drive, pio); | 155 | it8213_set_pio_mode(drive, pio); |
156 | } | ||
158 | } | 157 | } |
159 | 158 | ||
160 | /** | 159 | /** |