platform/chrome: add a driver for HPS
authorDan Callaghan <dcallagh@chromium.org>
Tue, 18 Oct 2022 04:06:23 +0000 (15:06 +1100)
committerTzung-Bi Shih <tzungbi@kernel.org>
Tue, 18 Oct 2022 04:53:15 +0000 (12:53 +0800)
commit5f9952548d91263eaf70a2ca71f8897c2a638cf1
tree49ddcdbb354d7ae43ca5c4658f069b7440fee78a
parent9abf2313adc1ca1b6180c508c25f22f9395cc780
platform/chrome: add a driver for HPS

This patch introduces a driver for the ChromeOS human presence
sensor (aka. HPS). The driver supports a sensor connected to the I2C bus
and identified as "GOOG0020" in the ACPI tables.

When loaded, the driver exports the sensor to userspace through a
character device. This device only supports power management, i.e.,
communication with the sensor must be done through regular I2C
transmissions from userspace.

Power management is implemented by enabling the respective power GPIO
while at least one userspace process holds an open fd on the character
device. By default, the device is powered down if there are no active
clients.

Note that the driver makes no effort to preserve the state of the sensor
between power down and power up events. Userspace is responsible for
reinitializing any needed state once power has been restored.

The device firmware, I2C protocol and other documentation is available
at https://chromium.googlesource.com/chromiumos/platform/hps-firmware.

Co-developed-by: Sami Kyöstilä <skyostil@chromium.org>
Signed-off-by: Sami Kyöstilä <skyostil@chromium.org>
Signed-off-by: Dan Callaghan <dcallagh@chromium.org>
Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
Link: https://lore.kernel.org/r/20221018040623.2173441-1-dcallagh@chromium.org
MAINTAINERS
drivers/platform/chrome/Kconfig
drivers/platform/chrome/Makefile
drivers/platform/chrome/cros_hps_i2c.c [new file with mode: 0644]