]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - include/linux/ide.h
ide: move create_proc_ide_drives() call to ide_device_add_all()
[mv-sheeva.git] / include / linux / ide.h
index 04422e5e6dd8fb1609df1ce02fde6ed4191e12a8..70209148ef590af4ec3f64b55c0ee911553fd0f3 100644 (file)
@@ -514,6 +514,8 @@ typedef struct hwif_s {
 #if 0
        ide_hwif_ops_t  *hwifops;
 #else
+       /* host specific initialization of devices on a port */
+       void    (*port_init_devs)(struct hwif_s *);
        /* routine to program host for PIO mode */
        void    (*set_pio_mode)(ide_drive_t *, const u8);
        /* routine to program host for DMA mode */
@@ -607,7 +609,6 @@ typedef struct hwif_s {
        unsigned        reset      : 1; /* reset after probe */
        unsigned        auto_poll  : 1; /* supports nop auto-poll */
        unsigned        sg_mapped  : 1; /* sg_table and sg_nents are ready */
-       unsigned        no_io_32bit : 1; /* 1 = can not do 32-bit IO ops */
        unsigned        mmio       : 1; /* host uses MMIO */
 
        struct device   gendev;
@@ -714,6 +715,7 @@ typedef struct {
 void proc_ide_create(void);
 void proc_ide_destroy(void);
 void ide_proc_register_port(ide_hwif_t *);
+void ide_proc_port_register_devices(ide_hwif_t *);
 void ide_proc_unregister_port(ide_hwif_t *);
 void ide_proc_register_driver(ide_drive_t *, ide_driver_t *);
 void ide_proc_unregister_driver(ide_drive_t *, ide_driver_t *);
@@ -746,6 +748,7 @@ void ide_pci_create_host_proc(const char *, get_info_t *);
 static inline void proc_ide_create(void) { ; }
 static inline void proc_ide_destroy(void) { ; }
 static inline void ide_proc_register_port(ide_hwif_t *hwif) { ; }
+static inline void ide_proc_port_register_devices(ide_hwif_t *hwif) { ; }
 static inline void ide_proc_unregister_port(ide_hwif_t *hwif) { ; }
 static inline void ide_proc_register_driver(ide_drive_t *drive, ide_driver_t *driver) { ; }
 static inline void ide_proc_unregister_driver(ide_drive_t *drive, ide_driver_t *driver) { ; }
@@ -1065,7 +1068,7 @@ enum {
        IDE_HFLAG_NO_SET_MODE           = (1 << 9),
        /* trust BIOS for programming chipset/device for DMA */
        IDE_HFLAG_TRUST_BIOS_FOR_DMA    = (1 << 10),
-       /* host uses VDMA */
+       /* host uses VDMA (tied with IDE_HFLAG_CS5520 for now) */
        IDE_HFLAG_VDMA                  = (1 << 11),
        /* ATAPI DMA is unsupported */
        IDE_HFLAG_NO_ATAPI_DMA          = (1 << 12),
@@ -1075,8 +1078,10 @@ enum {
        IDE_HFLAG_NO_DMA                = (1 << 14),
        /* check if host is PCI IDE device before allowing DMA */
        IDE_HFLAG_NO_AUTODMA            = (1 << 15),
+       /* don't autotune PIO */
+       IDE_HFLAG_NO_AUTOTUNE           = (1 << 16),
        /* host is CS5510/CS5520 */
-       IDE_HFLAG_CS5520                = (1 << 16),
+       IDE_HFLAG_CS5520                = IDE_HFLAG_VDMA,
        /* no LBA48 */
        IDE_HFLAG_NO_LBA48              = (1 << 17),
        /* no LBA48 DMA */
@@ -1102,8 +1107,10 @@ 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),
+       /* never use 32-bit I/O ops */
+       IDE_HFLAG_NO_IO_32BIT           = (1 << 30),
+       /* never unmask IRQs */
+       IDE_HFLAG_NO_UNMASK_IRQS        = (1 << 31),
 };
 
 #ifdef CONFIG_BLK_DEV_OFFBOARD
@@ -1197,12 +1204,14 @@ extern int ide_acpi_exec_tfs(ide_drive_t *drive);
 extern void ide_acpi_get_timing(ide_hwif_t *hwif);
 extern void ide_acpi_push_timing(ide_hwif_t *hwif);
 extern void ide_acpi_init(ide_hwif_t *hwif);
+void ide_acpi_port_init_devices(ide_hwif_t *);
 extern void ide_acpi_set_state(ide_hwif_t *hwif, int on);
 #else
 static inline int ide_acpi_exec_tfs(ide_drive_t *drive) { return 0; }
 static inline void ide_acpi_get_timing(ide_hwif_t *hwif) { ; }
 static inline void ide_acpi_push_timing(ide_hwif_t *hwif) { ; }
 static inline void ide_acpi_init(ide_hwif_t *hwif) { ; }
+static inline void ide_acpi_port_init_devices(ide_hwif_t *hwif) { ; }
 static inline void ide_acpi_set_state(ide_hwif_t *hwif, int on) {}
 #endif