mfd: cros_ec_dev: Add GPIO device if feature present on EC
authorStephen Boyd <swboyd@chromium.org>
Mon, 19 Feb 2024 20:23:24 +0000 (12:23 -0800)
committerLee Jones <lee@kernel.org>
Fri, 23 Feb 2024 17:14:13 +0000 (17:14 +0000)
The ChromeOS embedded controller (EC) supports setting the state of
GPIOs when the system is unlocked, and getting the state of GPIOs in all
cases. Check for the feature support by checking for the GPIO feature
and then populate a sub-device for the gpio hardware on the EC.

Signed-off-by: Stephen Boyd <swboyd@chromium.org>
Link: https://lore.kernel.org/r/20240219202325.4095816-3-swboyd@chromium.org
Signed-off-by: Lee Jones <lee@kernel.org>
drivers/mfd/cros_ec_dev.c

index 4996220ce64b7b266a39814ae7c17348f0a92c3d..a52d59cc2b1ecba0998f465cd53d9b8de5c6a5a4 100644 (file)
@@ -74,6 +74,10 @@ static const struct mfd_cell cros_ec_cec_cells[] = {
        { .name = "cros-ec-cec", },
 };
 
+static const struct mfd_cell cros_ec_gpio_cells[] = {
+       { .name = "cros-ec-gpio", },
+};
+
 static const struct mfd_cell cros_ec_rtc_cells[] = {
        { .name = "cros-ec-rtc", },
 };
@@ -101,6 +105,11 @@ static const struct cros_feature_to_cells cros_subdevices[] = {
                .mfd_cells      = cros_ec_cec_cells,
                .num_cells      = ARRAY_SIZE(cros_ec_cec_cells),
        },
+       {
+               .id             = EC_FEATURE_GPIO,
+               .mfd_cells      = cros_ec_gpio_cells,
+               .num_cells      = ARRAY_SIZE(cros_ec_gpio_cells),
+       },
        {
                .id             = EC_FEATURE_RTC,
                .mfd_cells      = cros_ec_rtc_cells,