diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2024-05-21 11:37:51 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2024-05-21 11:37:51 -0700 |
| commit | 62a12816cb2006776ac8ee9ef026fd99c3a47de6 (patch) | |
| tree | cb84a6cf62eca3c318bb06d9b7a656e3c2bb28ee /drivers/platform | |
| parent | 5b5a5ad5a5cc587544341051ae9cd591c98f8d37 (diff) | |
| parent | 98a83da39b482c638954b111803906843a83a747 (diff) | |
Merge tag 'acpi-6.10-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull ACPI fixes from Rafael Wysocki:
"These make the ACPI EC driver always install the EC address space
handler at the root of the ACPI namespace which causes it to take care
of all EC operation regions everywhere.
This means that the custom EC address space handler in the WMI driver
is not needed any more and accordingly it gets removed altogether"
* tag 'acpi-6.10-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
platform/x86: wmi: Remove custom EC address space handler
ACPI: EC: Install address space handler at the namespace root
Diffstat (limited to 'drivers/platform')
| -rw-r--r-- | drivers/platform/x86/wmi.c | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c index 060e4236f932..d21f3fa25823 100644 --- a/drivers/platform/x86/wmi.c +++ b/drivers/platform/x86/wmi.c @@ -1153,77 +1153,6 @@ static int parse_wdg(struct device *wmi_bus_dev, struct platform_device *pdev) return 0; } -static int ec_read_multiple(u8 address, u8 *buffer, size_t bytes) -{ - size_t i; - int ret; - - for (i = 0; i < bytes; i++) { - ret = ec_read(address + i, &buffer[i]); - if (ret < 0) - return ret; - } - - return 0; -} - -static int ec_write_multiple(u8 address, u8 *buffer, size_t bytes) -{ - size_t i; - int ret; - - for (i = 0; i < bytes; i++) { - ret = ec_write(address + i, buffer[i]); - if (ret < 0) - return ret; - } - - return 0; -} - -/* - * WMI can have EmbeddedControl access regions. In which case, we just want to - * hand these off to the EC driver. - */ -static acpi_status -acpi_wmi_ec_space_handler(u32 function, acpi_physical_address address, - u32 bits, u64 *value, - void *handler_context, void *region_context) -{ - int bytes = bits / BITS_PER_BYTE; - int ret; - - if (!value) - return AE_NULL_ENTRY; - - if (!bytes || bytes > sizeof(*value)) - return AE_BAD_PARAMETER; - - if (address > U8_MAX || address + bytes - 1 > U8_MAX) - return AE_BAD_PARAMETER; - - if (function != ACPI_READ && function != ACPI_WRITE) - return AE_BAD_PARAMETER; - - if (function == ACPI_READ) - ret = ec_read_multiple(address, (u8 *)value, bytes); - else - ret = ec_write_multiple(address, (u8 *)value, bytes); - - switch (ret) { - case -EINVAL: - return AE_BAD_PARAMETER; - case -ENODEV: - return AE_NOT_FOUND; - case -ETIME: - return AE_TIME; - case 0: - return AE_OK; - default: - return AE_ERROR; - } -} - static int wmi_get_notify_data(struct wmi_block *wblock, union acpi_object **obj) { struct acpi_buffer data = { ACPI_ALLOCATE_BUFFER, NULL }; @@ -1338,14 +1267,6 @@ static void acpi_wmi_remove_notify_handler(void *data) acpi_remove_notify_handler(acpi_device->handle, ACPI_ALL_NOTIFY, acpi_wmi_notify_handler); } -static void acpi_wmi_remove_address_space_handler(void *data) -{ - struct acpi_device *acpi_device = data; - - acpi_remove_address_space_handler(acpi_device->handle, ACPI_ADR_SPACE_EC, - &acpi_wmi_ec_space_handler); -} - static void acpi_wmi_remove_bus_device(void *data) { struct device *wmi_bus_dev = data; @@ -1377,19 +1298,6 @@ static int acpi_wmi_probe(struct platform_device *device) dev_set_drvdata(&device->dev, wmi_bus_dev); - status = acpi_install_address_space_handler(acpi_device->handle, - ACPI_ADR_SPACE_EC, - &acpi_wmi_ec_space_handler, - NULL, NULL); - if (ACPI_FAILURE(status)) { - dev_err(&device->dev, "Error installing EC region handler\n"); - return -ENODEV; - } - error = devm_add_action_or_reset(&device->dev, acpi_wmi_remove_address_space_handler, - acpi_device); - if (error < 0) - return error; - status = acpi_install_notify_handler(acpi_device->handle, ACPI_ALL_NOTIFY, acpi_wmi_notify_handler, wmi_bus_dev); if (ACPI_FAILURE(status)) { |
