Loading drivers/acpi/dptf/dptf_pch_fivr.c +43 −8 Original line number Diff line number Diff line Loading @@ -9,6 +9,42 @@ #include <linux/module.h> #include <linux/platform_device.h> struct pch_fivr_resp { u64 status; u64 result; }; static int pch_fivr_read(acpi_handle handle, char *method, struct pch_fivr_resp *fivr_resp) { struct acpi_buffer resp = { sizeof(struct pch_fivr_resp), fivr_resp}; struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; struct acpi_buffer format = { sizeof("NN"), "NN" }; union acpi_object *obj; acpi_status status; int ret = -EFAULT; status = acpi_evaluate_object(handle, method, NULL, &buffer); if (ACPI_FAILURE(status)) return ret; obj = buffer.pointer; if (!obj || obj->type != ACPI_TYPE_PACKAGE) goto release_buffer; status = acpi_extract_package(obj, &format, &resp); if (ACPI_FAILURE(status)) goto release_buffer; if (fivr_resp->status) goto release_buffer; ret = 0; release_buffer: kfree(buffer.pointer); return ret; } /* * Presentation of attributes which are defined for INT1045 * They are: Loading @@ -23,15 +59,14 @@ static ssize_t name##_show(struct device *dev,\ char *buf)\ {\ struct acpi_device *acpi_dev = dev_get_drvdata(dev);\ unsigned long long val;\ acpi_status status;\ struct pch_fivr_resp fivr_resp;\ int status;\ \ status = acpi_evaluate_integer(acpi_dev->handle, #method,\ NULL, &val);\ if (ACPI_SUCCESS(status))\ return sprintf(buf, "%d\n", (int)val);\ else\ return -EINVAL;\ status = pch_fivr_read(acpi_dev->handle, #method, &fivr_resp);\ if (status)\ return status;\ \ return sprintf(buf, "%llu\n", fivr_resp.result);\ } #define PCH_FIVR_STORE(name, method) \ Loading drivers/acpi/resource.c +1 −8 Original line number Diff line number Diff line Loading @@ -423,13 +423,6 @@ static void acpi_dev_get_irqresource(struct resource *res, u32 gsi, } } static bool irq_is_legacy(struct acpi_resource_irq *irq) { return irq->triggering == ACPI_EDGE_SENSITIVE && irq->polarity == ACPI_ACTIVE_HIGH && irq->shareable == ACPI_EXCLUSIVE; } /** * acpi_dev_resource_interrupt - Extract ACPI interrupt resource information. * @ares: Input ACPI resource object. Loading Loading @@ -468,7 +461,7 @@ bool acpi_dev_resource_interrupt(struct acpi_resource *ares, int index, } acpi_dev_get_irqresource(res, irq->interrupts[index], irq->triggering, irq->polarity, irq->shareable, irq_is_legacy(irq)); irq->shareable, true); break; case ACPI_RESOURCE_TYPE_EXTENDED_IRQ: ext_irq = &ares->data.extended_irq; Loading Loading
drivers/acpi/dptf/dptf_pch_fivr.c +43 −8 Original line number Diff line number Diff line Loading @@ -9,6 +9,42 @@ #include <linux/module.h> #include <linux/platform_device.h> struct pch_fivr_resp { u64 status; u64 result; }; static int pch_fivr_read(acpi_handle handle, char *method, struct pch_fivr_resp *fivr_resp) { struct acpi_buffer resp = { sizeof(struct pch_fivr_resp), fivr_resp}; struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; struct acpi_buffer format = { sizeof("NN"), "NN" }; union acpi_object *obj; acpi_status status; int ret = -EFAULT; status = acpi_evaluate_object(handle, method, NULL, &buffer); if (ACPI_FAILURE(status)) return ret; obj = buffer.pointer; if (!obj || obj->type != ACPI_TYPE_PACKAGE) goto release_buffer; status = acpi_extract_package(obj, &format, &resp); if (ACPI_FAILURE(status)) goto release_buffer; if (fivr_resp->status) goto release_buffer; ret = 0; release_buffer: kfree(buffer.pointer); return ret; } /* * Presentation of attributes which are defined for INT1045 * They are: Loading @@ -23,15 +59,14 @@ static ssize_t name##_show(struct device *dev,\ char *buf)\ {\ struct acpi_device *acpi_dev = dev_get_drvdata(dev);\ unsigned long long val;\ acpi_status status;\ struct pch_fivr_resp fivr_resp;\ int status;\ \ status = acpi_evaluate_integer(acpi_dev->handle, #method,\ NULL, &val);\ if (ACPI_SUCCESS(status))\ return sprintf(buf, "%d\n", (int)val);\ else\ return -EINVAL;\ status = pch_fivr_read(acpi_dev->handle, #method, &fivr_resp);\ if (status)\ return status;\ \ return sprintf(buf, "%llu\n", fivr_resp.result);\ } #define PCH_FIVR_STORE(name, method) \ Loading
drivers/acpi/resource.c +1 −8 Original line number Diff line number Diff line Loading @@ -423,13 +423,6 @@ static void acpi_dev_get_irqresource(struct resource *res, u32 gsi, } } static bool irq_is_legacy(struct acpi_resource_irq *irq) { return irq->triggering == ACPI_EDGE_SENSITIVE && irq->polarity == ACPI_ACTIVE_HIGH && irq->shareable == ACPI_EXCLUSIVE; } /** * acpi_dev_resource_interrupt - Extract ACPI interrupt resource information. * @ares: Input ACPI resource object. Loading Loading @@ -468,7 +461,7 @@ bool acpi_dev_resource_interrupt(struct acpi_resource *ares, int index, } acpi_dev_get_irqresource(res, irq->interrupts[index], irq->triggering, irq->polarity, irq->shareable, irq_is_legacy(irq)); irq->shareable, true); break; case ACPI_RESOURCE_TYPE_EXTENDED_IRQ: ext_irq = &ares->data.extended_irq; Loading