|
@@ -3016,7 +3016,7 @@ static int acpi_nfit_remove(struct acpi_device *adev)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-void __acpi_nfit_notify(struct device *dev, acpi_handle handle, u32 event)
|
|
|
+static void acpi_nfit_update_notify(struct device *dev, acpi_handle handle)
|
|
|
{
|
|
|
struct acpi_nfit_desc *acpi_desc = dev_get_drvdata(dev);
|
|
|
struct acpi_buffer buf = { ACPI_ALLOCATE_BUFFER, NULL };
|
|
@@ -3024,11 +3024,6 @@ void __acpi_nfit_notify(struct device *dev, acpi_handle handle, u32 event)
|
|
|
acpi_status status;
|
|
|
int ret;
|
|
|
|
|
|
- dev_dbg(dev, "%s: event: %d\n", __func__, event);
|
|
|
-
|
|
|
- if (event != NFIT_NOTIFY_UPDATE)
|
|
|
- return;
|
|
|
-
|
|
|
if (!dev->driver) {
|
|
|
/* dev->driver may be null if we're being removed */
|
|
|
dev_dbg(dev, "%s: no driver found for dev\n", __func__);
|
|
@@ -3065,6 +3060,27 @@ void __acpi_nfit_notify(struct device *dev, acpi_handle handle, u32 event)
|
|
|
dev_err(dev, "Invalid _FIT\n");
|
|
|
kfree(buf.pointer);
|
|
|
}
|
|
|
+
|
|
|
+static void acpi_nfit_uc_error_notify(struct device *dev, acpi_handle handle)
|
|
|
+{
|
|
|
+ struct acpi_nfit_desc *acpi_desc = dev_get_drvdata(dev);
|
|
|
+
|
|
|
+ acpi_nfit_ars_rescan(acpi_desc);
|
|
|
+}
|
|
|
+
|
|
|
+void __acpi_nfit_notify(struct device *dev, acpi_handle handle, u32 event)
|
|
|
+{
|
|
|
+ dev_dbg(dev, "%s: event: 0x%x\n", __func__, event);
|
|
|
+
|
|
|
+ switch (event) {
|
|
|
+ case NFIT_NOTIFY_UPDATE:
|
|
|
+ return acpi_nfit_update_notify(dev, handle);
|
|
|
+ case NFIT_NOTIFY_UC_MEMORY_ERROR:
|
|
|
+ return acpi_nfit_uc_error_notify(dev, handle);
|
|
|
+ default:
|
|
|
+ return;
|
|
|
+ }
|
|
|
+}
|
|
|
EXPORT_SYMBOL_GPL(__acpi_nfit_notify);
|
|
|
|
|
|
static void acpi_nfit_notify(struct acpi_device *adev, u32 event)
|