Commit 82303dd3 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki

Merge branch 'acpi-bus'

Merge changes related to _OSC handling and updates eliminating the owner
field from struct acpi_driver:

 - Make the kernel indicate support for several ACPI features that are
   in fact supported to the platform firmware through _OSC and fix
   the Generic Initiator Affinity _OSC bit (Armin Wolf).

 - Make the ACPI core set the owner value for ACPI drivers, drop the
   owner setting from a number of drivers and eliminate the owner
   field from struct acpi_driver (Krzysztof Kozlowski).

* acpi-bus: (24 commits)
  ACPI: drop redundant owner from acpi_driver
  virt: vmgenid: drop owner assignment
  ptp: vmw: drop owner assignment
  platform/x86/wireless-hotkey: drop owner assignment
  platform/x86/toshiba_haps: drop owner assignment
  platform/x86/toshiba_bluetooth: drop owner assignment
  platform/x86/toshiba_acpi: drop owner assignment
  platform/x86/sony-laptop: drop owner assignment
  platform/x86/lg-laptop: drop owner assignment
  platform/x86/intel/smartconnect: drop owner assignment
  platform/x86/intel/rst: drop owner assignment
  platform/x86/eeepc: drop owner assignment
  platform/x86/dell: drop owner assignment
  platform: classmate-laptop: drop owner assignment
  platform: asus-laptop: drop owner assignment
  platform/chrome: wilco_ec: drop owner assignment
  net: fjes: drop owner assignment
  Input: atlas - drop owner assignment
  ACPI: store owner from modules with acpi_bus_register_driver()
  ACPI: bus: Indicate support for IRQ ResourceSource thru _OSC
  ...
parents 84fa7ad6 51373c50
...@@ -316,9 +316,14 @@ static void acpi_bus_osc_negotiate_platform_control(void) ...@@ -316,9 +316,14 @@ static void acpi_bus_osc_negotiate_platform_control(void)
capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_PAD_SUPPORT; capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_PAD_SUPPORT;
if (IS_ENABLED(CONFIG_ACPI_PROCESSOR)) if (IS_ENABLED(CONFIG_ACPI_PROCESSOR))
capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_PPC_OST_SUPPORT; capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_PPC_OST_SUPPORT;
if (IS_ENABLED(CONFIG_ACPI_THERMAL))
capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_FAST_THERMAL_SAMPLING_SUPPORT;
capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_HOTPLUG_OST_SUPPORT; capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_HOTPLUG_OST_SUPPORT;
capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_PCLPI_SUPPORT; capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_PCLPI_SUPPORT;
capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_OVER_16_PSTATES_SUPPORT;
capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_GED_SUPPORT;
capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_IRQ_RESOURCE_SOURCE_SUPPORT;
if (IS_ENABLED(CONFIG_ACPI_PRMT)) if (IS_ENABLED(CONFIG_ACPI_PRMT))
capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_PRM_SUPPORT; capbuf[OSC_SUPPORT_DWORD] |= OSC_SB_PRM_SUPPORT;
if (IS_ENABLED(CONFIG_ACPI_FFH)) if (IS_ENABLED(CONFIG_ACPI_FFH))
...@@ -990,25 +995,26 @@ EXPORT_SYMBOL_GPL(acpi_driver_match_device); ...@@ -990,25 +995,26 @@ EXPORT_SYMBOL_GPL(acpi_driver_match_device);
-------------------------------------------------------------------------- */ -------------------------------------------------------------------------- */
/** /**
* acpi_bus_register_driver - register a driver with the ACPI bus * __acpi_bus_register_driver - register a driver with the ACPI bus
* @driver: driver being registered * @driver: driver being registered
* @owner: owning module/driver
* *
* Registers a driver with the ACPI bus. Searches the namespace for all * Registers a driver with the ACPI bus. Searches the namespace for all
* devices that match the driver's criteria and binds. Returns zero for * devices that match the driver's criteria and binds. Returns zero for
* success or a negative error status for failure. * success or a negative error status for failure.
*/ */
int acpi_bus_register_driver(struct acpi_driver *driver) int __acpi_bus_register_driver(struct acpi_driver *driver, struct module *owner)
{ {
if (acpi_disabled) if (acpi_disabled)
return -ENODEV; return -ENODEV;
driver->drv.name = driver->name; driver->drv.name = driver->name;
driver->drv.bus = &acpi_bus_type; driver->drv.bus = &acpi_bus_type;
driver->drv.owner = driver->owner; driver->drv.owner = owner;
return driver_register(&driver->drv); return driver_register(&driver->drv);
} }
EXPORT_SYMBOL(acpi_bus_register_driver); EXPORT_SYMBOL(__acpi_bus_register_driver);
/** /**
* acpi_bus_unregister_driver - unregisters a driver with the ACPI bus * acpi_bus_unregister_driver - unregisters a driver with the ACPI bus
......
...@@ -127,7 +127,6 @@ MODULE_DEVICE_TABLE(acpi, atlas_device_ids); ...@@ -127,7 +127,6 @@ MODULE_DEVICE_TABLE(acpi, atlas_device_ids);
static struct acpi_driver atlas_acpi_driver = { static struct acpi_driver atlas_acpi_driver = {
.name = ACPI_ATLAS_NAME, .name = ACPI_ATLAS_NAME,
.class = ACPI_ATLAS_CLASS, .class = ACPI_ATLAS_CLASS,
.owner = THIS_MODULE,
.ids = atlas_device_ids, .ids = atlas_device_ids,
.ops = { .ops = {
.add = atlas_acpi_button_add, .add = atlas_acpi_button_add,
......
...@@ -156,7 +156,6 @@ static void fjes_acpi_remove(struct acpi_device *device) ...@@ -156,7 +156,6 @@ static void fjes_acpi_remove(struct acpi_device *device)
static struct acpi_driver fjes_acpi_driver = { static struct acpi_driver fjes_acpi_driver = {
.name = DRV_NAME, .name = DRV_NAME,
.class = DRV_NAME, .class = DRV_NAME,
.owner = THIS_MODULE,
.ids = fjes_acpi_ids, .ids = fjes_acpi_ids,
.ops = { .ops = {
.add = fjes_acpi_add, .add = fjes_acpi_add,
......
...@@ -523,7 +523,6 @@ static struct acpi_driver event_driver = { ...@@ -523,7 +523,6 @@ static struct acpi_driver event_driver = {
.notify = event_device_notify, .notify = event_device_notify,
.remove = event_device_remove, .remove = event_device_remove,
}, },
.owner = THIS_MODULE,
}; };
static int __init event_module_init(void) static int __init event_module_init(void)
......
...@@ -1925,7 +1925,6 @@ MODULE_DEVICE_TABLE(acpi, asus_device_ids); ...@@ -1925,7 +1925,6 @@ MODULE_DEVICE_TABLE(acpi, asus_device_ids);
static struct acpi_driver asus_acpi_driver = { static struct acpi_driver asus_acpi_driver = {
.name = ASUS_LAPTOP_NAME, .name = ASUS_LAPTOP_NAME,
.class = ASUS_LAPTOP_CLASS, .class = ASUS_LAPTOP_CLASS,
.owner = THIS_MODULE,
.ids = asus_device_ids, .ids = asus_device_ids,
.flags = ACPI_DRIVER_ALL_NOTIFY_EVENTS, .flags = ACPI_DRIVER_ALL_NOTIFY_EVENTS,
.ops = { .ops = {
......
...@@ -434,7 +434,6 @@ static const struct acpi_device_id cmpc_accel_device_ids_v4[] = { ...@@ -434,7 +434,6 @@ static const struct acpi_device_id cmpc_accel_device_ids_v4[] = {
}; };
static struct acpi_driver cmpc_accel_acpi_driver_v4 = { static struct acpi_driver cmpc_accel_acpi_driver_v4 = {
.owner = THIS_MODULE,
.name = "cmpc_accel_v4", .name = "cmpc_accel_v4",
.class = "cmpc_accel_v4", .class = "cmpc_accel_v4",
.ids = cmpc_accel_device_ids_v4, .ids = cmpc_accel_device_ids_v4,
...@@ -660,7 +659,6 @@ static const struct acpi_device_id cmpc_accel_device_ids[] = { ...@@ -660,7 +659,6 @@ static const struct acpi_device_id cmpc_accel_device_ids[] = {
}; };
static struct acpi_driver cmpc_accel_acpi_driver = { static struct acpi_driver cmpc_accel_acpi_driver = {
.owner = THIS_MODULE,
.name = "cmpc_accel", .name = "cmpc_accel",
.class = "cmpc_accel", .class = "cmpc_accel",
.ids = cmpc_accel_device_ids, .ids = cmpc_accel_device_ids,
...@@ -754,7 +752,6 @@ static const struct acpi_device_id cmpc_tablet_device_ids[] = { ...@@ -754,7 +752,6 @@ static const struct acpi_device_id cmpc_tablet_device_ids[] = {
}; };
static struct acpi_driver cmpc_tablet_acpi_driver = { static struct acpi_driver cmpc_tablet_acpi_driver = {
.owner = THIS_MODULE,
.name = "cmpc_tablet", .name = "cmpc_tablet",
.class = "cmpc_tablet", .class = "cmpc_tablet",
.ids = cmpc_tablet_device_ids, .ids = cmpc_tablet_device_ids,
...@@ -996,7 +993,6 @@ static const struct acpi_device_id cmpc_ipml_device_ids[] = { ...@@ -996,7 +993,6 @@ static const struct acpi_device_id cmpc_ipml_device_ids[] = {
}; };
static struct acpi_driver cmpc_ipml_acpi_driver = { static struct acpi_driver cmpc_ipml_acpi_driver = {
.owner = THIS_MODULE,
.name = "cmpc", .name = "cmpc",
.class = "cmpc", .class = "cmpc",
.ids = cmpc_ipml_device_ids, .ids = cmpc_ipml_device_ids,
...@@ -1064,7 +1060,6 @@ static const struct acpi_device_id cmpc_keys_device_ids[] = { ...@@ -1064,7 +1060,6 @@ static const struct acpi_device_id cmpc_keys_device_ids[] = {
}; };
static struct acpi_driver cmpc_keys_acpi_driver = { static struct acpi_driver cmpc_keys_acpi_driver = {
.owner = THIS_MODULE,
.name = "cmpc_keys", .name = "cmpc_keys",
.class = "cmpc_keys", .class = "cmpc_keys",
.ids = cmpc_keys_device_ids, .ids = cmpc_keys_device_ids,
......
...@@ -295,7 +295,6 @@ static struct acpi_driver rbtn_driver = { ...@@ -295,7 +295,6 @@ static struct acpi_driver rbtn_driver = {
.remove = rbtn_remove, .remove = rbtn_remove,
.notify = rbtn_notify, .notify = rbtn_notify,
}, },
.owner = THIS_MODULE,
}; };
......
...@@ -1463,7 +1463,6 @@ MODULE_DEVICE_TABLE(acpi, eeepc_device_ids); ...@@ -1463,7 +1463,6 @@ MODULE_DEVICE_TABLE(acpi, eeepc_device_ids);
static struct acpi_driver eeepc_acpi_driver = { static struct acpi_driver eeepc_acpi_driver = {
.name = EEEPC_LAPTOP_NAME, .name = EEEPC_LAPTOP_NAME,
.class = EEEPC_ACPI_CLASS, .class = EEEPC_ACPI_CLASS,
.owner = THIS_MODULE,
.ids = eeepc_device_ids, .ids = eeepc_device_ids,
.flags = ACPI_DRIVER_ALL_NOTIFY_EVENTS, .flags = ACPI_DRIVER_ALL_NOTIFY_EVENTS,
.ops = { .ops = {
......
...@@ -125,7 +125,6 @@ static const struct acpi_device_id irst_ids[] = { ...@@ -125,7 +125,6 @@ static const struct acpi_device_id irst_ids[] = {
}; };
static struct acpi_driver irst_driver = { static struct acpi_driver irst_driver = {
.owner = THIS_MODULE,
.name = "intel_rapid_start", .name = "intel_rapid_start",
.class = "intel_rapid_start", .class = "intel_rapid_start",
.ids = irst_ids, .ids = irst_ids,
......
...@@ -32,7 +32,6 @@ static const struct acpi_device_id smartconnect_ids[] = { ...@@ -32,7 +32,6 @@ static const struct acpi_device_id smartconnect_ids[] = {
MODULE_DEVICE_TABLE(acpi, smartconnect_ids); MODULE_DEVICE_TABLE(acpi, smartconnect_ids);
static struct acpi_driver smartconnect_driver = { static struct acpi_driver smartconnect_driver = {
.owner = THIS_MODULE,
.name = "intel_smart_connect", .name = "intel_smart_connect",
.class = "intel_smart_connect", .class = "intel_smart_connect",
.ids = smartconnect_ids, .ids = smartconnect_ids,
......
...@@ -790,7 +790,6 @@ static struct acpi_driver acpi_driver = { ...@@ -790,7 +790,6 @@ static struct acpi_driver acpi_driver = {
.remove = acpi_remove, .remove = acpi_remove,
.notify = acpi_notify, .notify = acpi_notify,
}, },
.owner = THIS_MODULE,
}; };
static int __init acpi_init(void) static int __init acpi_init(void)
......
...@@ -3303,7 +3303,6 @@ static struct acpi_driver sony_nc_driver = { ...@@ -3303,7 +3303,6 @@ static struct acpi_driver sony_nc_driver = {
.name = SONY_NC_DRIVER_NAME, .name = SONY_NC_DRIVER_NAME,
.class = SONY_NC_CLASS, .class = SONY_NC_CLASS,
.ids = sony_nc_device_ids, .ids = sony_nc_device_ids,
.owner = THIS_MODULE,
.ops = { .ops = {
.add = sony_nc_add, .add = sony_nc_add,
.remove = sony_nc_remove, .remove = sony_nc_remove,
...@@ -4844,7 +4843,6 @@ static struct acpi_driver sony_pic_driver = { ...@@ -4844,7 +4843,6 @@ static struct acpi_driver sony_pic_driver = {
.name = SONY_PIC_DRIVER_NAME, .name = SONY_PIC_DRIVER_NAME,
.class = SONY_PIC_CLASS, .class = SONY_PIC_CLASS,
.ids = sony_pic_device_ids, .ids = sony_pic_device_ids,
.owner = THIS_MODULE,
.ops = { .ops = {
.add = sony_pic_add, .add = sony_pic_add,
.remove = sony_pic_remove, .remove = sony_pic_remove,
......
...@@ -3583,7 +3583,6 @@ static SIMPLE_DEV_PM_OPS(toshiba_acpi_pm, ...@@ -3583,7 +3583,6 @@ static SIMPLE_DEV_PM_OPS(toshiba_acpi_pm,
static struct acpi_driver toshiba_acpi_driver = { static struct acpi_driver toshiba_acpi_driver = {
.name = "Toshiba ACPI driver", .name = "Toshiba ACPI driver",
.owner = THIS_MODULE,
.ids = toshiba_device_ids, .ids = toshiba_device_ids,
.flags = ACPI_DRIVER_ALL_NOTIFY_EVENTS, .flags = ACPI_DRIVER_ALL_NOTIFY_EVENTS,
.ops = { .ops = {
......
...@@ -59,7 +59,6 @@ static struct acpi_driver toshiba_bt_rfkill_driver = { ...@@ -59,7 +59,6 @@ static struct acpi_driver toshiba_bt_rfkill_driver = {
.remove = toshiba_bt_rfkill_remove, .remove = toshiba_bt_rfkill_remove,
.notify = toshiba_bt_rfkill_notify, .notify = toshiba_bt_rfkill_notify,
}, },
.owner = THIS_MODULE,
.drv.pm = &toshiba_bt_pm, .drv.pm = &toshiba_bt_pm,
}; };
......
...@@ -251,7 +251,6 @@ MODULE_DEVICE_TABLE(acpi, haps_device_ids); ...@@ -251,7 +251,6 @@ MODULE_DEVICE_TABLE(acpi, haps_device_ids);
static struct acpi_driver toshiba_haps_driver = { static struct acpi_driver toshiba_haps_driver = {
.name = "Toshiba HAPS", .name = "Toshiba HAPS",
.owner = THIS_MODULE,
.ids = haps_device_ids, .ids = haps_device_ids,
.flags = ACPI_DRIVER_ALL_NOTIFY_EVENTS, .flags = ACPI_DRIVER_ALL_NOTIFY_EVENTS,
.ops = { .ops = {
......
...@@ -110,7 +110,6 @@ static void wl_remove(struct acpi_device *device) ...@@ -110,7 +110,6 @@ static void wl_remove(struct acpi_device *device)
static struct acpi_driver wl_driver = { static struct acpi_driver wl_driver = {
.name = "wireless-hotkey", .name = "wireless-hotkey",
.owner = THIS_MODULE,
.ids = wl_ids, .ids = wl_ids,
.ops = { .ops = {
.add = wl_add, .add = wl_add,
......
...@@ -120,7 +120,6 @@ static struct acpi_driver ptp_vmw_acpi_driver = { ...@@ -120,7 +120,6 @@ static struct acpi_driver ptp_vmw_acpi_driver = {
.add = ptp_vmw_acpi_add, .add = ptp_vmw_acpi_add,
.remove = ptp_vmw_acpi_remove .remove = ptp_vmw_acpi_remove
}, },
.owner = THIS_MODULE
}; };
static int __init ptp_vmw_init(void) static int __init ptp_vmw_init(void)
......
...@@ -86,7 +86,6 @@ static const struct acpi_device_id vmgenid_ids[] = { ...@@ -86,7 +86,6 @@ static const struct acpi_device_id vmgenid_ids[] = {
static struct acpi_driver vmgenid_driver = { static struct acpi_driver vmgenid_driver = {
.name = "vmgenid", .name = "vmgenid",
.ids = vmgenid_ids, .ids = vmgenid_ids,
.owner = THIS_MODULE,
.ops = { .ops = {
.add = vmgenid_add, .add = vmgenid_add,
.notify = vmgenid_notify .notify = vmgenid_notify
......
...@@ -170,7 +170,6 @@ struct acpi_driver { ...@@ -170,7 +170,6 @@ struct acpi_driver {
unsigned int flags; unsigned int flags;
struct acpi_device_ops ops; struct acpi_device_ops ops;
struct device_driver drv; struct device_driver drv;
struct module *owner;
}; };
/* /*
...@@ -656,7 +655,12 @@ void acpi_scan_lock_release(void); ...@@ -656,7 +655,12 @@ void acpi_scan_lock_release(void);
void acpi_lock_hp_context(void); void acpi_lock_hp_context(void);
void acpi_unlock_hp_context(void); void acpi_unlock_hp_context(void);
int acpi_scan_add_handler(struct acpi_scan_handler *handler); int acpi_scan_add_handler(struct acpi_scan_handler *handler);
int acpi_bus_register_driver(struct acpi_driver *driver); /*
* use a macro to avoid include chaining to get THIS_MODULE
*/
#define acpi_bus_register_driver(drv) \
__acpi_bus_register_driver(drv, THIS_MODULE)
int __acpi_bus_register_driver(struct acpi_driver *driver, struct module *owner);
void acpi_bus_unregister_driver(struct acpi_driver *driver); void acpi_bus_unregister_driver(struct acpi_driver *driver);
int acpi_bus_scan(acpi_handle handle); int acpi_bus_scan(acpi_handle handle);
void acpi_bus_trim(struct acpi_device *start); void acpi_bus_trim(struct acpi_device *start);
......
...@@ -573,9 +573,13 @@ acpi_status acpi_run_osc(acpi_handle handle, struct acpi_osc_context *context); ...@@ -573,9 +573,13 @@ acpi_status acpi_run_osc(acpi_handle handle, struct acpi_osc_context *context);
#define OSC_SB_CPCV2_SUPPORT 0x00000040 #define OSC_SB_CPCV2_SUPPORT 0x00000040
#define OSC_SB_PCLPI_SUPPORT 0x00000080 #define OSC_SB_PCLPI_SUPPORT 0x00000080
#define OSC_SB_OSLPI_SUPPORT 0x00000100 #define OSC_SB_OSLPI_SUPPORT 0x00000100
#define OSC_SB_FAST_THERMAL_SAMPLING_SUPPORT 0x00000200
#define OSC_SB_OVER_16_PSTATES_SUPPORT 0x00000400
#define OSC_SB_GED_SUPPORT 0x00000800
#define OSC_SB_CPC_DIVERSE_HIGH_SUPPORT 0x00001000 #define OSC_SB_CPC_DIVERSE_HIGH_SUPPORT 0x00001000
#define OSC_SB_GENERIC_INITIATOR_SUPPORT 0x00002000 #define OSC_SB_IRQ_RESOURCE_SOURCE_SUPPORT 0x00002000
#define OSC_SB_CPC_FLEXIBLE_ADR_SPACE 0x00004000 #define OSC_SB_CPC_FLEXIBLE_ADR_SPACE 0x00004000
#define OSC_SB_GENERIC_INITIATOR_SUPPORT 0x00020000
#define OSC_SB_NATIVE_USB4_SUPPORT 0x00040000 #define OSC_SB_NATIVE_USB4_SUPPORT 0x00040000
#define OSC_SB_PRM_SUPPORT 0x00200000 #define OSC_SB_PRM_SUPPORT 0x00200000
#define OSC_SB_FFH_OPR_SUPPORT 0x00400000 #define OSC_SB_FFH_OPR_SUPPORT 0x00400000
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment