From c413b9b94d9a8e7548cc4b2e04b7df0439ce76fd Mon Sep 17 00:00:00 2001 From: Bartlomiej Zolnierkiewicz Date: Sat, 2 Feb 2008 19:56:31 +0100 Subject: ide: add struct ide_port_info instances to legacy host drivers * Remove 'struct pci_dev *dev' argument from ide_hwif_setup_dma(). * Un-static ide_hwif_setup_dma() and add CONFIG_BLK_DEV_IDEDMA_PCI=n version. * Add 'const struct ide_port_info *d' argument to ide_device_add[_all](). * Factor out generic ports init from ide_pci_setup_ports() to ide_init_port(), move it to ide-probe.c and call it in in ide_device_add_all() instead of ide_pci_setup_ports(). * Move ->mate setup to ide_device_add_all() from ide_port_init(). * Add IDE_HFLAG_NO_AUTOTUNE host flag for host drivers that don't enable ->autotune currently. * Setup hwif->chipset in ide_init_port() but iff pi->chipset is set (to not override setup done by ide_hwif_configure()). * Add ETRAX host handling to ide_device_add_all(). * cmd640.c: set IDE_HFLAG_ABUSE_* also for CONFIG_BLK_DEV_CMD640_ENHANCED=n. * pmac.c: make pmac_ide_setup_dma() return an error value and move DMA masks setup to pmac_ide_setup_device(). * Add 'struct ide_port_info' instances to legacy host drivers, pass them to ide_device_add() calls and then remove open-coded ports initialization. Reviewed-by: Sergei Shtylyov Signed-off-by: Bartlomiej Zolnierkiewicz --- include/linux/ide.h | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'include/linux') diff --git a/include/linux/ide.h b/include/linux/ide.h index ec10b2a3bb6..508f7e435cc 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h @@ -1016,6 +1016,13 @@ extern int __ide_pci_register_driver(struct pci_driver *driver, struct module *o void ide_pci_setup_ports(struct pci_dev *, const struct ide_port_info *, int, u8 *); void ide_setup_pci_noise(struct pci_dev *, const struct ide_port_info *); +#ifdef CONFIG_BLK_DEV_IDEDMA_PCI +void ide_hwif_setup_dma(ide_hwif_t *, const struct ide_port_info *); +#else +static inline void ide_hwif_setup_dma(ide_hwif_t *hwif, + const struct ide_port_info *d) { } +#endif + extern void default_hwif_iops(ide_hwif_t *); extern void default_hwif_mmiops(ide_hwif_t *); extern void default_hwif_transport(ide_hwif_t *); @@ -1089,6 +1096,8 @@ enum { IDE_HFLAG_CLEAR_SIMPLEX = (1 << 28), /* DSC overlap is unsupported */ IDE_HFLAG_NO_DSC = (1 << 29), + /* don't autotune PIO */ + IDE_HFLAG_NO_AUTOTUNE = (1 << 30), }; #ifdef CONFIG_BLK_DEV_OFFBOARD @@ -1201,8 +1210,8 @@ void ide_unregister_region(struct gendisk *); void ide_undecoded_slave(ide_drive_t *); -int ide_device_add_all(u8 *idx); -int ide_device_add(u8 idx[4]); +int ide_device_add_all(u8 *idx, const struct ide_port_info *); +int ide_device_add(u8 idx[4], const struct ide_port_info *); static inline void *ide_get_hwifdata (ide_hwif_t * hwif) { -- cgit v1.2.3