]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mfd: cros_ec: Separate charge-control probing from USB-PD
authorThomas Weißschuh <linux@weissschuh.net>
Wed, 21 May 2025 14:42:51 +0000 (16:42 +0200)
committerLee Jones <lee@kernel.org>
Thu, 24 Jul 2025 10:26:54 +0000 (11:26 +0100)
The charge-control subsystem in the ChromeOS EC is not strictly tied to
its USB-PD subsystem.

Since commit 7613bc0d116a ("mfd: cros_ec: Don't load charger with UCSI")
the presence of EC_FEATURE_UCSI_PPM would inhibit the probing of the
charge-control driver.

Furthermore recent versions of the EC firmware in Framework laptops
hard-disable EC_FEATURE_USB_PD to avoid probing cros-usbpd-charger,
which then also breaks cros-charge-control.

Instead use the dedicated EC_FEATURE_CHARGER.

Cc: stable@vger.kernel.org
Link: https://github.com/FrameworkComputer/EmbeddedController/commit/1d7bcf1d50137c8c01969eb65880bc83e424597e
Fixes: 555b5fcdb844 ("mfd: cros_ec: Register charge control subdevice")
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Reviewed-by: Tzung-Bi Shih <tzungbi@kernel.org>
Tested-by: Tom Vincent <linux@tlvince.com>
Link: https://lore.kernel.org/r/20250521-cros-ec-mfd-chctl-probe-v1-1-6ebfe3a6efa7@weissschuh.net
Signed-off-by: Lee Jones <lee@kernel.org>
drivers/mfd/cros_ec_dev.c

index 9f84a52b48d6a8994d23edba999398684303ee64..dc80a272726bb16b58253418999021cd56dfd975 100644 (file)
@@ -87,7 +87,6 @@ static const struct mfd_cell cros_ec_sensorhub_cells[] = {
 };
 
 static const struct mfd_cell cros_usbpd_charger_cells[] = {
-       { .name = "cros-charge-control", },
        { .name = "cros-usbpd-charger", },
        { .name = "cros-usbpd-logger", },
 };
@@ -112,6 +111,10 @@ static const struct mfd_cell cros_ec_ucsi_cells[] = {
        { .name = "cros_ec_ucsi", },
 };
 
+static const struct mfd_cell cros_ec_charge_control_cells[] = {
+       { .name = "cros-charge-control", },
+};
+
 static const struct cros_feature_to_cells cros_subdevices[] = {
        {
                .id             = EC_FEATURE_CEC,
@@ -148,6 +151,11 @@ static const struct cros_feature_to_cells cros_subdevices[] = {
                .mfd_cells      = cros_ec_keyboard_leds_cells,
                .num_cells      = ARRAY_SIZE(cros_ec_keyboard_leds_cells),
        },
+       {
+               .id             = EC_FEATURE_CHARGER,
+               .mfd_cells      = cros_ec_charge_control_cells,
+               .num_cells      = ARRAY_SIZE(cros_ec_charge_control_cells),
+       },
 };
 
 static const struct mfd_cell cros_ec_platform_cells[] = {