platform/x86: Add intel_bytcrc_pwrsrc driver
authorHans de Goede <hdegoede@redhat.com>
Fri, 3 Mar 2023 22:19:28 +0000 (23:19 +0100)
committerHans de Goede <hdegoede@redhat.com>
Thu, 16 Mar 2023 13:42:30 +0000 (14:42 +0100)
commit94227b9c88f3df8ac3025611719cebd125b5981a
tree360d67c0b08928b290badf25cb12a03273dd5cac
parentde4fb5f5165582caf21b9074b918acccf99582a1
platform/x86: Add intel_bytcrc_pwrsrc driver

Add a new driver for the power-, wake- and reset-source functionality
of the Bay Trail (BYT) version of the Crystal Cove PMIC.

The main functionality here is detecting which power-sources (USB /
DC in / battery) are active. This is normally exposed to userspace as
a power_supply class charger device with an online sysfs attribute.

But if a charger is online or not is already exposed on BYT-CRC devices
through either an ACPI AC power_supply device, or through a native driver
for the battery charger chip (e.g. a BQ24292i).

So instead of adding duplicate info under the power_supply class this
driver exports the info through debugfs and likewise adds debugfs files
for the reset- and wake-source info / registers.

Despite this driver only exporting debugfs bits it is still useful to
have this driver because it clears the wake- and reset-source registers
after reading them. Not clearing these can have undesirable side-effects.

Specifically if the WAKESRC register contains 0x01 (wake by powerbutton)
on reboot then the firmware on some tablets turns the reboot into
a poweroff. I guess this may be necessary to make long power-presses turn
into a poweroff somehow?

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20230303221928.285477-1-hdegoede@redhat.com
drivers/platform/x86/intel/Kconfig
drivers/platform/x86/intel/Makefile
drivers/platform/x86/intel/bytcrc_pwrsrc.c [new file with mode: 0644]