diff options
author | Andrey Smirnov <andrew.smirnov@gmail.com> | 2023-09-24 15:02:33 -0700 |
---|---|---|
committer | Pierre-Loup A. Griffais <pgriffais@valvesoftware.com> | 2023-11-22 15:56:52 -0800 |
commit | 4a9a68a2d2ceeebc5c5393ddbf8caa5ac2fdbecd (patch) | |
tree | 48b8242cb8f6050e9660b6786ef17d13116854fa /drivers | |
parent | e90fb9bec45c15c0c541ce60b994bab3922ddadf (diff) | |
download | linux-4a9a68a2d2ceeebc5c5393ddbf8caa5ac2fdbecd.tar.gz |
mfd: steamdeck: Expose controller board power in sysfs
As of version 118 Deck's BIOS implements "SCBP" method that allows gating power of the controller board (VBUS). Add a basic WO method to our root MFD device to allow toggling that. Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> (cherry picked from commit f97f32718acc10cbb51fef925842392e80904d74)
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/mfd/steamdeck.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/mfd/steamdeck.c b/drivers/mfd/steamdeck.c index 0e504b3c2796..a60fa7db9141 100644 --- a/drivers/mfd/steamdeck.c +++ b/drivers/mfd/steamdeck.c @@ -41,9 +41,29 @@ struct steamdeck { STEAMDECK_ATTR_RO(firmware_version, "PDFW"); STEAMDECK_ATTR_RO(board_id, "BOID"); +static ssize_t controller_board_power_store(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + struct steamdeck *sd = dev_get_drvdata(dev); + bool enabled; + ssize_t ret = kstrtobool(buf, &enabled); + + if (ret) + return ret; + + if (ACPI_FAILURE(acpi_execute_simple_method(sd->adev->handle, + "SCBP", enabled))) + return -EIO; + + return count; +} +static DEVICE_ATTR_WO(controller_board_power); + static struct attribute *steamdeck_attrs[] = { &dev_attr_firmware_version.attr, &dev_attr_board_id.attr, + &dev_attr_controller_board_power.attr, NULL }; |