drm/nouveau: hook up acpi power supply change tracking
Not used at all yet, but lets hook it up now anyway. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
18a16a768c
commit
6032649df9
2 changed files with 31 additions and 0 deletions
|
@ -439,6 +439,7 @@ struct nouveau_pm_engine {
|
|||
struct nouveau_pm_level *cur;
|
||||
|
||||
struct device *hwmon;
|
||||
struct notifier_block acpi_nb;
|
||||
|
||||
int (*clock_get)(struct drm_device *, u32 id);
|
||||
void *(*clock_pre)(struct drm_device *, struct nouveau_pm_level *,
|
||||
|
|
|
@ -27,6 +27,10 @@
|
|||
#include "nouveau_drv.h"
|
||||
#include "nouveau_pm.h"
|
||||
|
||||
#ifdef CONFIG_ACPI
|
||||
#include <linux/acpi.h>
|
||||
#endif
|
||||
#include <linux/power_supply.h>
|
||||
#include <linux/hwmon.h>
|
||||
#include <linux/hwmon-sysfs.h>
|
||||
|
||||
|
@ -446,6 +450,25 @@ nouveau_hwmon_fini(struct drm_device *dev)
|
|||
#endif
|
||||
}
|
||||
|
||||
#ifdef CONFIG_ACPI
|
||||
static int
|
||||
nouveau_pm_acpi_event(struct notifier_block *nb, unsigned long val, void *data)
|
||||
{
|
||||
struct drm_nouveau_private *dev_priv =
|
||||
container_of(nb, struct drm_nouveau_private, engine.pm.acpi_nb);
|
||||
struct drm_device *dev = dev_priv->dev;
|
||||
struct acpi_bus_event *entry = (struct acpi_bus_event *)data;
|
||||
|
||||
if (strcmp(entry->device_class, "ac_adapter") == 0) {
|
||||
bool ac = power_supply_is_system_supplied();
|
||||
|
||||
NV_DEBUG(dev, "power supply changed: %s\n", ac ? "AC" : "DC");
|
||||
}
|
||||
|
||||
return NOTIFY_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
int
|
||||
nouveau_pm_init(struct drm_device *dev)
|
||||
{
|
||||
|
@ -485,6 +508,10 @@ nouveau_pm_init(struct drm_device *dev)
|
|||
|
||||
nouveau_sysfs_init(dev);
|
||||
nouveau_hwmon_init(dev);
|
||||
#ifdef CONFIG_ACPI
|
||||
pm->acpi_nb.notifier_call = nouveau_pm_acpi_event;
|
||||
register_acpi_notifier(&pm->acpi_nb);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -503,6 +530,9 @@ nouveau_pm_fini(struct drm_device *dev)
|
|||
nouveau_perf_fini(dev);
|
||||
nouveau_volt_fini(dev);
|
||||
|
||||
#ifdef CONFIG_ACPI
|
||||
unregister_acpi_notifier(&pm->acpi_nb);
|
||||
#endif
|
||||
nouveau_hwmon_fini(dev);
|
||||
nouveau_sysfs_fini(dev);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue