ACPI: autoload modules - Create __mod_acpi_device_table symbol for all ACPI drivers
modpost is going to use these to create e.g. acpi:ACPI0001 in modules.alias. Signed-off-by: Thomas Renninger <trenn@suse.de> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:

committato da
Len Brown

parent
29b71a1ca7
commit
1ba90e3a87
@@ -53,7 +53,6 @@
|
||||
#define ASUS_HOTK_NAME "Asus Laptop Support"
|
||||
#define ASUS_HOTK_CLASS "hotkey"
|
||||
#define ASUS_HOTK_DEVICE_NAME "Hotkey"
|
||||
#define ASUS_HOTK_HID "ATK0100"
|
||||
#define ASUS_HOTK_FILE "asus-laptop"
|
||||
#define ASUS_HOTK_PREFIX "\\_SB.ATKD."
|
||||
|
||||
@@ -197,12 +196,18 @@ static struct asus_hotk *hotk;
|
||||
/*
|
||||
* The hotkey driver declaration
|
||||
*/
|
||||
static const struct acpi_device_id asus_device_ids[] = {
|
||||
{"ATK0100", 0},
|
||||
{"", 0},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(acpi, asus_device_ids);
|
||||
|
||||
static int asus_hotk_add(struct acpi_device *device);
|
||||
static int asus_hotk_remove(struct acpi_device *device, int type);
|
||||
static struct acpi_driver asus_hotk_driver = {
|
||||
.name = ASUS_HOTK_NAME,
|
||||
.class = ASUS_HOTK_CLASS,
|
||||
.ids = ASUS_HOTK_HID,
|
||||
.ids = asus_device_ids,
|
||||
.ops = {
|
||||
.add = asus_hotk_add,
|
||||
.remove = asus_hotk_remove,
|
||||
|
@@ -1124,10 +1124,22 @@ static int sony_nc_remove(struct acpi_device *device, int type)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct acpi_device_id sony_device_ids[] = {
|
||||
{SONY_NC_HID, 0},
|
||||
{SONY_PIC_HID, 0},
|
||||
{"", 0},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(acpi, sony_device_ids);
|
||||
|
||||
static const struct acpi_device_id sony_nc_device_ids[] = {
|
||||
{SONY_NC_HID, 0},
|
||||
{"", 0},
|
||||
};
|
||||
|
||||
static struct acpi_driver sony_nc_driver = {
|
||||
.name = SONY_NC_DRIVER_NAME,
|
||||
.class = SONY_NC_CLASS,
|
||||
.ids = SONY_NC_HID,
|
||||
.ids = sony_nc_device_ids,
|
||||
.owner = THIS_MODULE,
|
||||
.ops = {
|
||||
.add = sony_nc_add,
|
||||
@@ -2470,10 +2482,15 @@ static int sony_pic_resume(struct acpi_device *device)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct acpi_device_id sony_pic_device_ids[] = {
|
||||
{SONY_PIC_HID, 0},
|
||||
{"", 0},
|
||||
};
|
||||
|
||||
static struct acpi_driver sony_pic_driver = {
|
||||
.name = SONY_PIC_DRIVER_NAME,
|
||||
.class = SONY_PIC_CLASS,
|
||||
.ids = SONY_PIC_HID,
|
||||
.ids = sony_pic_device_ids,
|
||||
.owner = THIS_MODULE,
|
||||
.ops = {
|
||||
.add = sony_pic_add,
|
||||
|
@@ -411,12 +411,13 @@ static int __init register_tpacpi_subdriver(struct ibm_struct *ibm)
|
||||
|
||||
sprintf(ibm->acpi->driver->name, "%s_%s", IBM_NAME, ibm->name);
|
||||
ibm->acpi->driver->ids = ibm->acpi->hid;
|
||||
|
||||
ibm->acpi->driver->ops.add = &tpacpi_device_add;
|
||||
|
||||
rc = acpi_bus_register_driver(ibm->acpi->driver);
|
||||
if (rc < 0) {
|
||||
printk(IBM_ERR "acpi_bus_register_driver(%s) failed: %d\n",
|
||||
ibm->acpi->hid, rc);
|
||||
ibm->name, rc);
|
||||
kfree(ibm->acpi->driver);
|
||||
ibm->acpi->driver = NULL;
|
||||
} else if (!rc)
|
||||
@@ -1316,8 +1317,13 @@ errexit:
|
||||
return res;
|
||||
}
|
||||
|
||||
static const struct acpi_device_id ibm_htk_device_ids[] = {
|
||||
{IBM_HKEY_HID, 0},
|
||||
{"", 0},
|
||||
};
|
||||
|
||||
static struct tp_acpi_drv_struct ibm_hotkey_acpidriver = {
|
||||
.hid = IBM_HKEY_HID,
|
||||
.hid = ibm_htk_device_ids,
|
||||
.notify = hotkey_notify,
|
||||
.handle = &hkey_handle,
|
||||
.type = ACPI_DEVICE_NOTIFY,
|
||||
@@ -2080,6 +2086,11 @@ IBM_HANDLE(dock, root, "\\_SB.GDCK", /* X30, X31, X40 */
|
||||
/* don't list other alternatives as we install a notify handler on the 570 */
|
||||
IBM_HANDLE(pci, root, "\\_SB.PCI"); /* 570 */
|
||||
|
||||
static const struct acpi_device_id ibm_pci_device_ids[] = {
|
||||
{PCI_ROOT_HID_STRING, 0},
|
||||
{"", 0},
|
||||
};
|
||||
|
||||
static struct tp_acpi_drv_struct ibm_dock_acpidriver[2] = {
|
||||
{
|
||||
.notify = dock_notify,
|
||||
@@ -2090,7 +2101,7 @@ static struct tp_acpi_drv_struct ibm_dock_acpidriver[2] = {
|
||||
/* THIS ONE MUST NEVER BE USED FOR DRIVER AUTOLOADING.
|
||||
* We just use it to get notifications of dock hotplug
|
||||
* in very old thinkpads */
|
||||
.hid = PCI_ROOT_HID_STRING,
|
||||
.hid = ibm_pci_device_ids,
|
||||
.notify = dock_notify,
|
||||
.handle = &pci_handle,
|
||||
.type = ACPI_SYSTEM_NOTIFY,
|
||||
@@ -2149,7 +2160,8 @@ static int __init dock_init2(struct ibm_init_struct *iibm)
|
||||
static void dock_notify(struct ibm_struct *ibm, u32 event)
|
||||
{
|
||||
int docked = dock_docked();
|
||||
int pci = ibm->acpi->hid && strstr(ibm->acpi->hid, PCI_ROOT_HID_STRING);
|
||||
int pci = ibm->acpi->hid && ibm->acpi->device &&
|
||||
acpi_match_device_ids(ibm->acpi->device, ibm_pci_device_ids);
|
||||
|
||||
if (event == 1 && !pci) /* 570 */
|
||||
acpi_bus_generate_event(ibm->acpi->device, event, 1); /* button */
|
||||
|
@@ -193,7 +193,7 @@ static void thinkpad_acpi_module_exit(void);
|
||||
struct ibm_struct;
|
||||
|
||||
struct tp_acpi_drv_struct {
|
||||
char *hid;
|
||||
const struct acpi_device_id *hid;
|
||||
struct acpi_driver *driver;
|
||||
|
||||
void (*notify) (struct ibm_struct *, u32);
|
||||
|
Fai riferimento in un nuovo problema
Block a user