mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-16 10:17:32 +00:00
platform/x86: wmi: Introduce to_wmi_driver()
Introduce to_wmi_driver() as a replacement for dev_to_wdrv() so WMI drivers can use this support macro instead of having to duplicate its functionality. Signed-off-by: Armin Wolf <W_Armin@gmx.de> Link: https://lore.kernel.org/r/20241026193803.8802-3-W_Armin@gmx.de Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
This commit is contained in:
parent
c382429b58
commit
e001341a98
@ -653,8 +653,6 @@ char *wmi_get_acpi_device_uid(const char *guid_string)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(wmi_get_acpi_device_uid);
|
EXPORT_SYMBOL_GPL(wmi_get_acpi_device_uid);
|
||||||
|
|
||||||
#define drv_to_wdrv(__drv) container_of_const(__drv, struct wmi_driver, driver)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* sysfs interface
|
* sysfs interface
|
||||||
*/
|
*/
|
||||||
@ -802,7 +800,7 @@ static void wmi_dev_release(struct device *dev)
|
|||||||
|
|
||||||
static int wmi_dev_match(struct device *dev, const struct device_driver *driver)
|
static int wmi_dev_match(struct device *dev, const struct device_driver *driver)
|
||||||
{
|
{
|
||||||
const struct wmi_driver *wmi_driver = drv_to_wdrv(driver);
|
const struct wmi_driver *wmi_driver = to_wmi_driver(driver);
|
||||||
struct wmi_block *wblock = dev_to_wblock(dev);
|
struct wmi_block *wblock = dev_to_wblock(dev);
|
||||||
const struct wmi_device_id *id = wmi_driver->id_table;
|
const struct wmi_device_id *id = wmi_driver->id_table;
|
||||||
|
|
||||||
@ -826,7 +824,7 @@ static int wmi_dev_match(struct device *dev, const struct device_driver *driver)
|
|||||||
static int wmi_dev_probe(struct device *dev)
|
static int wmi_dev_probe(struct device *dev)
|
||||||
{
|
{
|
||||||
struct wmi_block *wblock = dev_to_wblock(dev);
|
struct wmi_block *wblock = dev_to_wblock(dev);
|
||||||
struct wmi_driver *wdriver = drv_to_wdrv(dev->driver);
|
struct wmi_driver *wdriver = to_wmi_driver(dev->driver);
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
/* Some older WMI drivers will break if instantiated multiple times,
|
/* Some older WMI drivers will break if instantiated multiple times,
|
||||||
@ -870,7 +868,7 @@ static int wmi_dev_probe(struct device *dev)
|
|||||||
static void wmi_dev_remove(struct device *dev)
|
static void wmi_dev_remove(struct device *dev)
|
||||||
{
|
{
|
||||||
struct wmi_block *wblock = dev_to_wblock(dev);
|
struct wmi_block *wblock = dev_to_wblock(dev);
|
||||||
struct wmi_driver *wdriver = drv_to_wdrv(dev->driver);
|
struct wmi_driver *wdriver = to_wmi_driver(dev->driver);
|
||||||
|
|
||||||
down_write(&wblock->notify_lock);
|
down_write(&wblock->notify_lock);
|
||||||
wblock->driver_ready = false;
|
wblock->driver_ready = false;
|
||||||
@ -889,7 +887,7 @@ static void wmi_dev_shutdown(struct device *dev)
|
|||||||
struct wmi_block *wblock;
|
struct wmi_block *wblock;
|
||||||
|
|
||||||
if (dev->driver) {
|
if (dev->driver) {
|
||||||
wdriver = drv_to_wdrv(dev->driver);
|
wdriver = to_wmi_driver(dev->driver);
|
||||||
wblock = dev_to_wblock(dev);
|
wblock = dev_to_wblock(dev);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1173,7 +1171,7 @@ static int wmi_get_notify_data(struct wmi_block *wblock, union acpi_object **obj
|
|||||||
|
|
||||||
static void wmi_notify_driver(struct wmi_block *wblock, union acpi_object *obj)
|
static void wmi_notify_driver(struct wmi_block *wblock, union acpi_object *obj)
|
||||||
{
|
{
|
||||||
struct wmi_driver *driver = drv_to_wdrv(wblock->dev.dev.driver);
|
struct wmi_driver *driver = to_wmi_driver(wblock->dev.dev.driver);
|
||||||
|
|
||||||
if (!obj && !driver->no_notify_data) {
|
if (!obj && !driver->no_notify_data) {
|
||||||
dev_warn(&wblock->dev.dev, "Event contains no event data\n");
|
dev_warn(&wblock->dev.dev, "Event contains no event data\n");
|
||||||
|
@ -73,6 +73,14 @@ struct wmi_driver {
|
|||||||
void (*notify)(struct wmi_device *device, union acpi_object *data);
|
void (*notify)(struct wmi_device *device, union acpi_object *data);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* to_wmi_driver() - Helper macro to cast a driver to a wmi_driver
|
||||||
|
* @drv: driver struct
|
||||||
|
*
|
||||||
|
* Cast a struct device_driver to a struct wmi_driver.
|
||||||
|
*/
|
||||||
|
#define to_wmi_driver(drv) container_of_const(drv, struct wmi_driver, driver)
|
||||||
|
|
||||||
extern int __must_check __wmi_driver_register(struct wmi_driver *driver,
|
extern int __must_check __wmi_driver_register(struct wmi_driver *driver,
|
||||||
struct module *owner);
|
struct module *owner);
|
||||||
extern void wmi_driver_unregister(struct wmi_driver *driver);
|
extern void wmi_driver_unregister(struct wmi_driver *driver);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user