ide: sanitize ACPI initialization
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Tue, 24 Mar 2009 22:22:41 +0000 (23:22 +0100)
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Tue, 24 Mar 2009 22:22:41 +0000 (23:22 +0100)
* ide_acpi_init() -> ide_acpi_init_port()

* ide_acpi_blacklist() -> ide_acpi_init()

* Call ide_acpi_init() only once (do it during IDE core
  initialization) and cleanup the function accordingly.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
drivers/ide/ide-acpi.c
drivers/ide/ide-probe.c
drivers/ide/ide.c
include/linux/ide.h

index 8d6d31fcbfba45d0c52baf64dcae7abb3d4716e7..ba5932d7b1bb37a7cdbac0dc041d8d1c68efb4dc 100644 (file)
@@ -89,12 +89,8 @@ static const struct dmi_system_id ide_acpi_dmi_table[] = {
        { }     /* terminate list */
 };
 
-static int ide_acpi_blacklist(void)
+int ide_acpi_init(void)
 {
-       static int done;
-       if (done)
-               return 0;
-       done = 1;
        dmi_check_system(ide_acpi_dmi_table);
        return 0;
 }
@@ -624,7 +620,7 @@ void ide_acpi_set_state(ide_hwif_t *hwif, int on)
 }
 
 /**
- * ide_acpi_init - initialize the ACPI link for an IDE interface
+ * ide_acpi_init_port - initialize the ACPI link for an IDE interface
  * @hwif: target IDE interface (channel)
  *
  * The ACPI spec is not quite clear when the drive identify buffer
@@ -634,10 +630,8 @@ void ide_acpi_set_state(ide_hwif_t *hwif, int on)
  * So we get the information during startup; but this means that
  * any changes during run-time will be lost after resume.
  */
-void ide_acpi_init(ide_hwif_t *hwif)
+void ide_acpi_init_port(ide_hwif_t *hwif)
 {
-       ide_acpi_blacklist();
-
        hwif->acpidata = kzalloc(sizeof(struct ide_acpi_hwif_link), GFP_KERNEL);
        if (!hwif->acpidata)
                return;
index eb0a38cd83ce4ae079c77001393cef47dda55d8f..a51ad2bd62b4300ce0e8ebbada74068629aa3cbb 100644 (file)
@@ -1543,7 +1543,7 @@ int ide_host_register(struct ide_host *host, const struct ide_port_info *d,
 
                j++;
 
-               ide_acpi_init(hwif);
+               ide_acpi_init_port(hwif);
 
                if (hwif->present)
                        ide_acpi_port_init_devices(hwif);
index 0920e3b0c962451d6e98cff91bf87e5e150b0afb..c779aa24dbe66a28d8a96a146c75177c5cff7330 100644 (file)
@@ -527,6 +527,8 @@ static int __init ide_init(void)
                goto out_port_class;
        }
 
+       ide_acpi_init();
+
        proc_ide_create();
 
        return 0;
index 7ed395b4b89164b0d5b596d5da7beeaecfd7465a..6bb104f4e3415e9465def2672cac93dfc1a41031 100644 (file)
@@ -1484,17 +1484,19 @@ static inline void ide_release_dma_engine(ide_hwif_t *hwif) { ; }
 #endif /* CONFIG_BLK_DEV_IDEDMA */
 
 #ifdef CONFIG_BLK_DEV_IDEACPI
+int ide_acpi_init(void);
 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_init_port(ide_hwif_t *);
 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_init(void) { return 0; }
 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_init_port(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