Commit 8e882ba111bb52fbb42c34a265afb97ddd4fcea1

Authored by Sergei Shtylyov
Committed by Bartlomiej Zolnierkiewicz
1 parent 7b56a937a1

ide: introduce CONFIG_BLK_DEV_IDEDMA_SFF option

Introduce new option CONFIG_BLK_DEV_IDEDMA_SFF for non-PCI SFF-8038i compatible
bus mastering IDE controllers (which there are a few known), thus fixing a hack
made for Palmchip BK3710 controller...

Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Cc: Anton Salnikov <asalnikov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>

Showing 3 changed files with 18 additions and 14 deletions Side-by-side Diff

... ... @@ -378,6 +378,9 @@
378 378 would like the kernel to automatically detect and activate
379 379 it, say Y here.
380 380  
  381 +config BLK_DEV_IDEDMA_SFF
  382 + bool
  383 +
381 384 if PCI
382 385  
383 386 comment "PCI IDE chipsets support"
... ... @@ -459,6 +462,7 @@
459 462 config BLK_DEV_IDEDMA_PCI
460 463 bool
461 464 select BLK_DEV_IDEPCI
  465 + select BLK_DEV_IDEDMA_SFF
462 466  
463 467 config BLK_DEV_AEC62XX
464 468 tristate "AEC62XX chipset support"
... ... @@ -999,7 +1003,7 @@
999 1003 config BLK_DEV_PALMCHIP_BK3710
1000 1004 tristate "Palmchip bk3710 IDE controller support"
1001 1005 depends on ARCH_DAVINCI
1002   - select BLK_DEV_IDEDMA_PCI
  1006 + select BLK_DEV_IDEDMA_SFF
1003 1007 help
1004 1008 Say Y here if you want to support the onchip IDE controller on the
1005 1009 TI DaVinci SoC
... ... @@ -1107,7 +1111,8 @@
1107 1111 endif
1108 1112  
1109 1113 config BLK_DEV_IDEDMA
1110   - def_bool BLK_DEV_IDEDMA_PCI || BLK_DEV_IDEDMA_PMAC || BLK_DEV_IDEDMA_ICS || BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
  1114 + def_bool BLK_DEV_IDEDMA_SFF || BLK_DEV_IDEDMA_PMAC || \
  1115 + BLK_DEV_IDEDMA_ICS || BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
1111 1116  
1112 1117 config IDE_ARCH_OBSOLETE_INIT
1113 1118 def_bool ALPHA || (ARM && !ARCH_L7200) || BLACKFIN || X86 || IA64 || M32R || MIPS || PARISC || PPC || (SUPERH64 && BLK_DEV_IDEPCI) || SPARC
drivers/ide/ide-dma.c
... ... @@ -198,7 +198,7 @@
198 198  
199 199 EXPORT_SYMBOL_GPL(ide_build_sglist);
200 200  
201   -#ifdef CONFIG_BLK_DEV_IDEDMA_PCI
  201 +#ifdef CONFIG_BLK_DEV_IDEDMA_SFF
202 202 /**
203 203 * ide_build_dmatable - build IDE DMA table
204 204 *
... ... @@ -316,7 +316,7 @@
316 316  
317 317 EXPORT_SYMBOL_GPL(ide_destroy_dmatable);
318 318  
319   -#ifdef CONFIG_BLK_DEV_IDEDMA_PCI
  319 +#ifdef CONFIG_BLK_DEV_IDEDMA_SFF
320 320 /**
321 321 * config_drive_for_dma - attempt to activate IDE DMA
322 322 * @drive: the drive to place in DMA mode
... ... @@ -424,7 +424,7 @@
424 424 }
425 425  
426 426 EXPORT_SYMBOL_GPL(ide_dma_host_set);
427   -#endif /* CONFIG_BLK_DEV_IDEDMA_PCI */
  427 +#endif /* CONFIG_BLK_DEV_IDEDMA_SFF */
428 428  
429 429 /**
430 430 * ide_dma_off_quietly - Generic DMA kill
... ... @@ -474,7 +474,7 @@
474 474 drive->hwif->dma_host_set(drive, 1);
475 475 }
476 476  
477   -#ifdef CONFIG_BLK_DEV_IDEDMA_PCI
  477 +#ifdef CONFIG_BLK_DEV_IDEDMA_SFF
478 478 /**
479 479 * ide_dma_setup - begin a DMA phase
480 480 * @drive: target device
... ... @@ -591,7 +591,7 @@
591 591 }
592 592 #else
593 593 static inline int config_drive_for_dma(ide_drive_t *drive) { return 0; }
594   -#endif /* CONFIG_BLK_DEV_IDEDMA_PCI */
  594 +#endif /* CONFIG_BLK_DEV_IDEDMA_SFF */
595 595  
596 596 int __ide_dma_bad_drive (ide_drive_t *drive)
597 597 {
... ... @@ -840,7 +840,7 @@
840 840 ide_dma_on(drive);
841 841 }
842 842  
843   -#ifdef CONFIG_BLK_DEV_IDEDMA_PCI
  843 +#ifdef CONFIG_BLK_DEV_IDEDMA_SFF
844 844 void ide_dma_lost_irq (ide_drive_t *drive)
845 845 {
846 846 printk("%s: DMA interrupt recovery\n", drive->name);
... ... @@ -1002,5 +1002,5 @@
1002 1002 }
1003 1003  
1004 1004 EXPORT_SYMBOL_GPL(ide_setup_dma);
1005   -#endif /* CONFIG_BLK_DEV_IDEDMA_PCI */
  1005 +#endif /* CONFIG_BLK_DEV_IDEDMA_SFF */
... ... @@ -998,8 +998,7 @@
998 998 void ide_pci_setup_ports(struct pci_dev *, const struct ide_port_info *, int, u8 *);
999 999 void ide_setup_pci_noise(struct pci_dev *, const struct ide_port_info *);
1000 1000  
1001   -/* FIXME: palm_bk3710 uses BLK_DEV_IDEDMA_PCI without BLK_DEV_IDEPCI! */
1002   -#if defined(CONFIG_BLK_DEV_IDEPCI) && defined(CONFIG_BLK_DEV_IDEDMA_PCI)
  1001 +#ifdef CONFIG_BLK_DEV_IDEDMA_PCI
1003 1002 void ide_hwif_setup_dma(ide_hwif_t *, const struct ide_port_info *);
1004 1003 #else
1005 1004 static inline void ide_hwif_setup_dma(ide_hwif_t *hwif,
... ... @@ -1146,7 +1145,7 @@
1146 1145 int ide_build_sglist(ide_drive_t *, struct request *);
1147 1146 void ide_destroy_dmatable(ide_drive_t *);
1148 1147  
1149   -#ifdef CONFIG_BLK_DEV_IDEDMA_PCI
  1148 +#ifdef CONFIG_BLK_DEV_IDEDMA_SFF
1150 1149 extern int ide_build_dmatable(ide_drive_t *, struct request *);
1151 1150 extern int ide_release_dma(ide_hwif_t *);
1152 1151 extern void ide_setup_dma(ide_hwif_t *, unsigned long);
... ... @@ -1157,7 +1156,7 @@
1157 1156 extern int __ide_dma_end(ide_drive_t *);
1158 1157 extern void ide_dma_lost_irq(ide_drive_t *);
1159 1158 extern void ide_dma_timeout(ide_drive_t *);
1160   -#endif /* CONFIG_BLK_DEV_IDEDMA_PCI */
  1159 +#endif /* CONFIG_BLK_DEV_IDEDMA_SFF */
1161 1160  
1162 1161 #else
1163 1162 static inline int ide_id_dma_bug(ide_drive_t *drive) { return 0; }
... ... @@ -1171,7 +1170,7 @@
1171 1170 static inline void ide_check_dma_crc(ide_drive_t *drive) { ; }
1172 1171 #endif /* CONFIG_BLK_DEV_IDEDMA */
1173 1172  
1174   -#ifndef CONFIG_BLK_DEV_IDEDMA_PCI
  1173 +#ifndef CONFIG_BLK_DEV_IDEDMA_SFF
1175 1174 static inline void ide_release_dma(ide_hwif_t *drive) {;}
1176 1175 #endif
1177 1176