mirror_ubuntu-kernels/drivers/platform/chrome
Dan Callaghan 5f9952548d 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
2022-10-18 12:53:15 +08:00
..
wilco_ec platform/chrome: wilco_ec: event: Fix typo in comment 2022-06-24 04:01:13 +00:00
chromeos_acpi.c platform/chrome: Add ChromeOS ACPI device driver 2022-05-13 19:42:30 +08:00
chromeos_laptop.c platform/chrome: fix double-free in chromeos_laptop_prepare() 2022-08-22 06:56:45 +00:00
chromeos_privacy_screen.c platform/chrome: Add driver for ChromeOS privacy-screen 2022-01-10 12:17:37 +01:00
chromeos_pstore.c chrome platform changes for 5.8 2020-06-04 10:54:45 -07:00
chromeos_tbmc.c platform/chrome: chromeos_tbmc: Report wake events 2019-09-12 16:01:35 +02:00
cros_ec_chardev.c platform/chrome: fix memory corruption in ioctl 2022-08-22 06:56:45 +00:00
cros_ec_debugfs.c platform/chrome: cros_ec: Expose suspend_timeout_ms in debugfs 2022-08-24 02:37:07 +00:00
cros_ec_i2c.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
cros_ec_ishtp.c platform/chrome: correct cros_ec_prepare_tx() usage 2022-05-16 10:01:51 +08:00
cros_ec_lightbar.c platform/chrome: Constify static attribute_group structs 2021-01-20 16:19:17 +01:00
cros_ec_lpc_mec.c platform/chrome: cros_ec_lpc: Use DEFINE_MUTEX() for mutex lock 2021-04-21 10:00:30 +02:00
cros_ec_lpc_mec.h platform/chrome: cros_ec: Remove cros_ec dependency in lpc_mec 2019-02-11 10:07:40 +01:00
cros_ec_lpc.c platform/chrome: correct cros_ec_prepare_tx() usage 2022-05-16 10:01:51 +08:00
cros_ec_proto_test.c platform/chrome: cros_ec_proto: add Kunit test for cros_ec_cmd() 2022-07-20 01:22:59 +00:00
cros_ec_proto.c platform/chrome: cros_ec_proto: Update version on GET_NEXT_EVENT failure 2022-08-15 03:24:49 +00:00
cros_ec_rpmsg.c platform/chrome: correct cros_ec_prepare_tx() usage 2022-05-16 10:01:51 +08:00
cros_ec_sensorhub_ring.c platform: chrome: Split trace include file 2022-03-31 16:56:29 -07:00
cros_ec_sensorhub_trace.h platform: chrome: Split trace include file 2022-03-31 16:56:29 -07:00
cros_ec_sensorhub.c platform/chrome: cros_ec_sensorhub: simplify getting .driver_data 2021-09-27 09:18:58 +02:00
cros_ec_spi.c platform/chrome: cros_ec_spi: drop BUG_ON() if din isn't large enough 2022-05-16 10:01:52 +08:00
cros_ec_sysfs.c platform/chrome: cros_ec_sysfs: Add cold-ap-off to sysfs reboot. 2021-01-20 16:19:17 +01:00
cros_ec_trace.c platform/chrome: cros_ec: Add command for regulator control. 2020-06-15 22:40:14 +01:00
cros_ec_trace.h platform/chrome: use macros for passthru indexes 2022-06-10 02:31:42 +00:00
cros_ec_typec.c platform/chrome: cros_ec_typec: Register partner PDOs 2022-09-07 18:02:57 +00:00
cros_ec_vbc.c platform/chrome: Constify static attribute_group structs 2021-01-20 16:19:17 +01:00
cros_ec.c platform/chrome: cros_ec: Notify the PM of wake events during resume 2022-09-19 10:34:38 +08:00
cros_ec.h platform/chrome: cros_ec: Make cros_ec_unregister() return void 2022-02-09 13:00:43 +00:00
cros_hps_i2c.c platform/chrome: add a driver for HPS 2022-10-18 12:53:15 +08:00
cros_kbd_led_backlight.c platform/chrome: cros_kbd_led_backlight: fix build warning 2022-07-20 01:22:59 +00:00
cros_kunit_util.c platform/chrome: cros_kunit_util: add default value for msg->result 2022-07-21 08:49:28 +00:00
cros_kunit_util.h platform/chrome: cros_kunit_util: add default value for msg->result 2022-07-21 08:49:28 +00:00
cros_typec_switch.c platform/chrome: cros_typec_switch: Inline DRV_NAME 2022-09-01 10:15:34 +08:00
cros_usbpd_logger.c platform/chrome: cros_usbpd_logger: Add __printf annotation to append_str() 2020-05-04 14:02:01 -07:00
cros_usbpd_notify.c platform/chrome: cros_ec_proto: Rename cros_ec_command function 2022-06-08 08:14:53 +00:00
Kconfig platform/chrome: add a driver for HPS 2022-10-18 12:53:15 +08:00
Makefile platform/chrome: add a driver for HPS 2022-10-18 12:53:15 +08:00