Loading drivers/platform/x86/amd/pmf/acpi.c +22 −16 Original line number Diff line number Diff line Loading @@ -243,6 +243,28 @@ int apmf_get_dyn_slider_def_dc(struct amd_pmf_dev *pdev, struct apmf_dyn_slider_ return apmf_if_call_store_buffer(pdev, APMF_FUNC_DYN_SLIDER_DC, data, sizeof(*data)); } int apmf_install_handler(struct amd_pmf_dev *pmf_dev) { acpi_handle ahandle = ACPI_HANDLE(pmf_dev->dev); acpi_status status; /* Install the APMF Notify handler */ if (is_apmf_func_supported(pmf_dev, APMF_FUNC_AUTO_MODE) && is_apmf_func_supported(pmf_dev, APMF_FUNC_SBIOS_REQUESTS)) { status = acpi_install_notify_handler(ahandle, ACPI_ALL_NOTIFY, apmf_event_handler, pmf_dev); if (ACPI_FAILURE(status)) { dev_err(pmf_dev->dev, "failed to install notify handler\n"); return -ENODEV; } /* Call the handler once manually to catch up with possibly missed notifies. */ apmf_event_handler(ahandle, 0, pmf_dev); } return 0; } void apmf_acpi_deinit(struct amd_pmf_dev *pmf_dev) { acpi_handle ahandle = ACPI_HANDLE(pmf_dev->dev); Loading @@ -257,8 +279,6 @@ void apmf_acpi_deinit(struct amd_pmf_dev *pmf_dev) int apmf_acpi_init(struct amd_pmf_dev *pmf_dev) { acpi_handle ahandle = ACPI_HANDLE(pmf_dev->dev); acpi_status status; int ret; ret = apmf_if_verify_interface(pmf_dev); Loading @@ -279,20 +299,6 @@ int apmf_acpi_init(struct amd_pmf_dev *pmf_dev) schedule_delayed_work(&pmf_dev->heart_beat, 0); } /* Install the APMF Notify handler */ if (is_apmf_func_supported(pmf_dev, APMF_FUNC_AUTO_MODE) && is_apmf_func_supported(pmf_dev, APMF_FUNC_SBIOS_REQUESTS)) { status = acpi_install_notify_handler(ahandle, ACPI_ALL_NOTIFY, apmf_event_handler, pmf_dev); if (ACPI_FAILURE(status)) { dev_err(pmf_dev->dev, "failed to install notify handler\n"); return -ENODEV; } /* Call the handler once manually to catch up with possibly missed notifies. */ apmf_event_handler(ahandle, 0, pmf_dev); } out: return ret; } drivers/platform/x86/amd/pmf/core.c +1 −0 Original line number Diff line number Diff line Loading @@ -369,6 +369,7 @@ static int amd_pmf_probe(struct platform_device *pdev) apmf_acpi_init(dev); platform_set_drvdata(pdev, dev); amd_pmf_init_features(dev); apmf_install_handler(dev); amd_pmf_dbgfs_register(dev); mutex_init(&dev->lock); Loading drivers/platform/x86/amd/pmf/pmf.h +1 −0 Original line number Diff line number Diff line Loading @@ -381,6 +381,7 @@ int is_apmf_func_supported(struct amd_pmf_dev *pdev, unsigned long index); int amd_pmf_send_cmd(struct amd_pmf_dev *dev, u8 message, bool get, u32 arg, u32 *data); int amd_pmf_init_metrics_table(struct amd_pmf_dev *dev); int amd_pmf_get_power_source(void); int apmf_install_handler(struct amd_pmf_dev *pmf_dev); /* SPS Layer */ int amd_pmf_get_pprof_modes(struct amd_pmf_dev *pmf); Loading Loading
drivers/platform/x86/amd/pmf/acpi.c +22 −16 Original line number Diff line number Diff line Loading @@ -243,6 +243,28 @@ int apmf_get_dyn_slider_def_dc(struct amd_pmf_dev *pdev, struct apmf_dyn_slider_ return apmf_if_call_store_buffer(pdev, APMF_FUNC_DYN_SLIDER_DC, data, sizeof(*data)); } int apmf_install_handler(struct amd_pmf_dev *pmf_dev) { acpi_handle ahandle = ACPI_HANDLE(pmf_dev->dev); acpi_status status; /* Install the APMF Notify handler */ if (is_apmf_func_supported(pmf_dev, APMF_FUNC_AUTO_MODE) && is_apmf_func_supported(pmf_dev, APMF_FUNC_SBIOS_REQUESTS)) { status = acpi_install_notify_handler(ahandle, ACPI_ALL_NOTIFY, apmf_event_handler, pmf_dev); if (ACPI_FAILURE(status)) { dev_err(pmf_dev->dev, "failed to install notify handler\n"); return -ENODEV; } /* Call the handler once manually to catch up with possibly missed notifies. */ apmf_event_handler(ahandle, 0, pmf_dev); } return 0; } void apmf_acpi_deinit(struct amd_pmf_dev *pmf_dev) { acpi_handle ahandle = ACPI_HANDLE(pmf_dev->dev); Loading @@ -257,8 +279,6 @@ void apmf_acpi_deinit(struct amd_pmf_dev *pmf_dev) int apmf_acpi_init(struct amd_pmf_dev *pmf_dev) { acpi_handle ahandle = ACPI_HANDLE(pmf_dev->dev); acpi_status status; int ret; ret = apmf_if_verify_interface(pmf_dev); Loading @@ -279,20 +299,6 @@ int apmf_acpi_init(struct amd_pmf_dev *pmf_dev) schedule_delayed_work(&pmf_dev->heart_beat, 0); } /* Install the APMF Notify handler */ if (is_apmf_func_supported(pmf_dev, APMF_FUNC_AUTO_MODE) && is_apmf_func_supported(pmf_dev, APMF_FUNC_SBIOS_REQUESTS)) { status = acpi_install_notify_handler(ahandle, ACPI_ALL_NOTIFY, apmf_event_handler, pmf_dev); if (ACPI_FAILURE(status)) { dev_err(pmf_dev->dev, "failed to install notify handler\n"); return -ENODEV; } /* Call the handler once manually to catch up with possibly missed notifies. */ apmf_event_handler(ahandle, 0, pmf_dev); } out: return ret; }
drivers/platform/x86/amd/pmf/core.c +1 −0 Original line number Diff line number Diff line Loading @@ -369,6 +369,7 @@ static int amd_pmf_probe(struct platform_device *pdev) apmf_acpi_init(dev); platform_set_drvdata(pdev, dev); amd_pmf_init_features(dev); apmf_install_handler(dev); amd_pmf_dbgfs_register(dev); mutex_init(&dev->lock); Loading
drivers/platform/x86/amd/pmf/pmf.h +1 −0 Original line number Diff line number Diff line Loading @@ -381,6 +381,7 @@ int is_apmf_func_supported(struct amd_pmf_dev *pdev, unsigned long index); int amd_pmf_send_cmd(struct amd_pmf_dev *dev, u8 message, bool get, u32 arg, u32 *data); int amd_pmf_init_metrics_table(struct amd_pmf_dev *dev); int amd_pmf_get_power_source(void); int apmf_install_handler(struct amd_pmf_dev *pmf_dev); /* SPS Layer */ int amd_pmf_get_pprof_modes(struct amd_pmf_dev *pmf); Loading