diff options
Diffstat (limited to 'drivers/ide/pci/cs5530.c')
-rw-r--r-- | drivers/ide/pci/cs5530.c | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/drivers/ide/pci/cs5530.c b/drivers/ide/pci/cs5530.c index 0d23b8aabe9c..599408952bd4 100644 --- a/drivers/ide/pci/cs5530.c +++ b/drivers/ide/pci/cs5530.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/drivers/ide/pci/cs5530.c Version 0.76 Aug 3 2007 | 2 | * linux/drivers/ide/pci/cs5530.c Version 0.77 Sep 24 2007 |
3 | * | 3 | * |
4 | * Copyright (C) 2000 Andre Hedrick <andre@linux-ide.org> | 4 | * Copyright (C) 2000 Andre Hedrick <andre@linux-ide.org> |
5 | * Copyright (C) 2000 Mark Lord <mlord@pobox.com> | 5 | * Copyright (C) 2000 Mark Lord <mlord@pobox.com> |
@@ -146,7 +146,6 @@ static void cs5530_set_dma_mode(ide_drive_t *drive, const u8 mode) | |||
146 | static unsigned int __devinit init_chipset_cs5530 (struct pci_dev *dev, const char *name) | 146 | static unsigned int __devinit init_chipset_cs5530 (struct pci_dev *dev, const char *name) |
147 | { | 147 | { |
148 | struct pci_dev *master_0 = NULL, *cs5530_0 = NULL; | 148 | struct pci_dev *master_0 = NULL, *cs5530_0 = NULL; |
149 | unsigned long flags; | ||
150 | 149 | ||
151 | if (pci_resource_start(dev, 4) == 0) | 150 | if (pci_resource_start(dev, 4) == 0) |
152 | return -EFAULT; | 151 | return -EFAULT; |
@@ -171,9 +170,6 @@ static unsigned int __devinit init_chipset_cs5530 (struct pci_dev *dev, const ch | |||
171 | goto out; | 170 | goto out; |
172 | } | 171 | } |
173 | 172 | ||
174 | spin_lock_irqsave(&ide_lock, flags); | ||
175 | /* all CPUs (there should only be one CPU with this chipset) */ | ||
176 | |||
177 | /* | 173 | /* |
178 | * Enable BusMaster and MemoryWriteAndInvalidate for the cs5530: | 174 | * Enable BusMaster and MemoryWriteAndInvalidate for the cs5530: |
179 | * --> OR 0x14 into 16-bit PCI COMMAND reg of function 0 of the cs5530 | 175 | * --> OR 0x14 into 16-bit PCI COMMAND reg of function 0 of the cs5530 |
@@ -224,8 +220,6 @@ static unsigned int __devinit init_chipset_cs5530 (struct pci_dev *dev, const ch | |||
224 | pci_write_config_byte(master_0, 0x42, 0x00); | 220 | pci_write_config_byte(master_0, 0x42, 0x00); |
225 | pci_write_config_byte(master_0, 0x43, 0xc1); | 221 | pci_write_config_byte(master_0, 0x43, 0xc1); |
226 | 222 | ||
227 | spin_unlock_irqrestore(&ide_lock, flags); | ||
228 | |||
229 | out: | 223 | out: |
230 | pci_dev_put(master_0); | 224 | pci_dev_put(master_0); |
231 | pci_dev_put(cs5530_0); | 225 | pci_dev_put(cs5530_0); |
@@ -245,9 +239,6 @@ static void __devinit init_hwif_cs5530 (ide_hwif_t *hwif) | |||
245 | unsigned long basereg; | 239 | unsigned long basereg; |
246 | u32 d0_timings; | 240 | u32 d0_timings; |
247 | 241 | ||
248 | if (hwif->mate) | ||
249 | hwif->serialized = hwif->mate->serialized = 1; | ||
250 | |||
251 | hwif->set_pio_mode = &cs5530_set_pio_mode; | 242 | hwif->set_pio_mode = &cs5530_set_pio_mode; |
252 | hwif->set_dma_mode = &cs5530_set_dma_mode; | 243 | hwif->set_dma_mode = &cs5530_set_dma_mode; |
253 | 244 | ||
@@ -258,27 +249,22 @@ static void __devinit init_hwif_cs5530 (ide_hwif_t *hwif) | |||
258 | if (CS5530_BAD_PIO(inl(basereg + 8))) | 249 | if (CS5530_BAD_PIO(inl(basereg + 8))) |
259 | outl(cs5530_pio_timings[(d0_timings >> 31) & 1][0], basereg + 8); | 250 | outl(cs5530_pio_timings[(d0_timings >> 31) & 1][0], basereg + 8); |
260 | 251 | ||
261 | hwif->drives[0].autotune = 1; | ||
262 | hwif->drives[1].autotune = 1; | ||
263 | |||
264 | if (hwif->dma_base == 0) | 252 | if (hwif->dma_base == 0) |
265 | return; | 253 | return; |
266 | 254 | ||
267 | hwif->atapi_dma = 1; | ||
268 | hwif->ultra_mask = 0x07; | ||
269 | hwif->mwdma_mask = 0x07; | ||
270 | |||
271 | hwif->udma_filter = cs5530_udma_filter; | 255 | hwif->udma_filter = cs5530_udma_filter; |
272 | } | 256 | } |
273 | 257 | ||
274 | static ide_pci_device_t cs5530_chipset __devinitdata = { | 258 | static const struct ide_port_info cs5530_chipset __devinitdata = { |
275 | .name = "CS5530", | 259 | .name = "CS5530", |
276 | .init_chipset = init_chipset_cs5530, | 260 | .init_chipset = init_chipset_cs5530, |
277 | .init_hwif = init_hwif_cs5530, | 261 | .init_hwif = init_hwif_cs5530, |
278 | .autodma = AUTODMA, | 262 | .host_flags = IDE_HFLAG_SERIALIZE | |
279 | .bootable = ON_BOARD, | 263 | IDE_HFLAG_POST_SET_MODE | |
264 | IDE_HFLAG_BOOTABLE, | ||
280 | .pio_mask = ATA_PIO4, | 265 | .pio_mask = ATA_PIO4, |
281 | .host_flags = IDE_HFLAG_POST_SET_MODE, | 266 | .mwdma_mask = ATA_MWDMA2, |
267 | .udma_mask = ATA_UDMA2, | ||
282 | }; | 268 | }; |
283 | 269 | ||
284 | static int __devinit cs5530_init_one(struct pci_dev *dev, const struct pci_device_id *id) | 270 | static int __devinit cs5530_init_one(struct pci_dev *dev, const struct pci_device_id *id) |