platform/x86: wmi: introduce helper to convert driver to WMI driver
[ Upstream commit e7b2e33449
]
Introduce a helper function which wraps the appropriate
`container_of()` macro invocation to convert
a `struct device_driver` to `struct wmi_driver`.
Signed-off-by: Barnabás Pőcze <pobrn@protonmail.com>
Link: https://lore.kernel.org/r/20210904175450.156801-27-pobrn@protonmail.com
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Родитель
a9a1018424
Коммит
789382ce73
|
@ -676,6 +676,11 @@ static struct wmi_device *dev_to_wdev(struct device *dev)
|
|||
return container_of(dev, struct wmi_device, dev);
|
||||
}
|
||||
|
||||
static inline struct wmi_driver *drv_to_wdrv(struct device_driver *drv)
|
||||
{
|
||||
return container_of(drv, struct wmi_driver, driver);
|
||||
}
|
||||
|
||||
/*
|
||||
* sysfs interface
|
||||
*/
|
||||
|
@ -794,8 +799,7 @@ static void wmi_dev_release(struct device *dev)
|
|||
|
||||
static int wmi_dev_match(struct device *dev, struct device_driver *driver)
|
||||
{
|
||||
struct wmi_driver *wmi_driver =
|
||||
container_of(driver, struct wmi_driver, driver);
|
||||
struct wmi_driver *wmi_driver = drv_to_wdrv(driver);
|
||||
struct wmi_block *wblock = dev_to_wblock(dev);
|
||||
const struct wmi_device_id *id = wmi_driver->id_table;
|
||||
|
||||
|
@ -892,8 +896,7 @@ static long wmi_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
|||
}
|
||||
|
||||
/* let the driver do any filtering and do the call */
|
||||
wdriver = container_of(wblock->dev.dev.driver,
|
||||
struct wmi_driver, driver);
|
||||
wdriver = drv_to_wdrv(wblock->dev.dev.driver);
|
||||
if (!try_module_get(wdriver->driver.owner)) {
|
||||
ret = -EBUSY;
|
||||
goto out_ioctl;
|
||||
|
@ -926,8 +929,7 @@ static const struct file_operations wmi_fops = {
|
|||
static int wmi_dev_probe(struct device *dev)
|
||||
{
|
||||
struct wmi_block *wblock = dev_to_wblock(dev);
|
||||
struct wmi_driver *wdriver =
|
||||
container_of(dev->driver, struct wmi_driver, driver);
|
||||
struct wmi_driver *wdriver = drv_to_wdrv(dev->driver);
|
||||
int ret = 0;
|
||||
char *buf;
|
||||
|
||||
|
@ -990,8 +992,7 @@ probe_failure:
|
|||
static void wmi_dev_remove(struct device *dev)
|
||||
{
|
||||
struct wmi_block *wblock = dev_to_wblock(dev);
|
||||
struct wmi_driver *wdriver =
|
||||
container_of(dev->driver, struct wmi_driver, driver);
|
||||
struct wmi_driver *wdriver = drv_to_wdrv(dev->driver);
|
||||
|
||||
if (wdriver->filter_callback) {
|
||||
misc_deregister(&wblock->char_dev);
|
||||
|
@ -1296,15 +1297,12 @@ static void acpi_wmi_notify_handler(acpi_handle handle, u32 event,
|
|||
|
||||
/* If a driver is bound, then notify the driver. */
|
||||
if (wblock->dev.dev.driver) {
|
||||
struct wmi_driver *driver;
|
||||
struct wmi_driver *driver = drv_to_wdrv(wblock->dev.dev.driver);
|
||||
struct acpi_object_list input;
|
||||
union acpi_object params[1];
|
||||
struct acpi_buffer evdata = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
acpi_status status;
|
||||
|
||||
driver = container_of(wblock->dev.dev.driver,
|
||||
struct wmi_driver, driver);
|
||||
|
||||
input.count = 1;
|
||||
input.pointer = params;
|
||||
params[0].type = ACPI_TYPE_INTEGER;
|
||||
|
|
Загрузка…
Ссылка в новой задаче