Messages in this thread Patch in this message |  | | Date | Fri, 3 Apr 2026 22:32:25 +0000 | | From | Benson Leung <> | | Subject | Re: [PATCH v1 1/1] mfd: cros_ec: Don't add cros_ec_ucsi if it is defined in OF or ACPI |
| |
On Fri, Apr 03, 2026 at 10:22:53PM +0000, Jameson Thies wrote: > On devices with a UCSI PPM in the EC, check for cros_ec_ucsi to be > defined in the OF device tree or an ACPI node. If it is defined by > either OF or ACPI, it does not need to be added as a subdevice of > cros_ec_dev mfd. cros_ec_ucsi will load from the OF or ACPI node. > > Signed-off-by: Jameson Thies <jthies@google.com>
Reviewed-by: Benson Leung <bleung@chromium.org>
> --- > drivers/mfd/cros_ec_dev.c | 23 ++++++++++++++++++----- > 1 file changed, 18 insertions(+), 5 deletions(-) > > diff --git a/drivers/mfd/cros_ec_dev.c b/drivers/mfd/cros_ec_dev.c > index 39430dd44e30..70d64b7c6243 100644 > --- a/drivers/mfd/cros_ec_dev.c > +++ b/drivers/mfd/cros_ec_dev.c > @@ -5,6 +5,7 @@ > * Copyright (C) 2014 Google, Inc. > */ > > +#include <linux/acpi.h> > #include <linux/dmi.h> > #include <linux/kconfig.h> > #include <linux/mfd/core.h> > @@ -131,11 +132,6 @@ static const struct cros_feature_to_cells cros_subdevices[] = { > .mfd_cells = cros_ec_rtc_cells, > .num_cells = ARRAY_SIZE(cros_ec_rtc_cells), > }, > - { > - .id = EC_FEATURE_UCSI_PPM, > - .mfd_cells = cros_ec_ucsi_cells, > - .num_cells = ARRAY_SIZE(cros_ec_ucsi_cells), > - }, > { > .id = EC_FEATURE_HANG_DETECT, > .mfd_cells = cros_ec_wdt_cells, > @@ -264,6 +260,23 @@ static int ec_device_probe(struct platform_device *pdev) > } > } > > + /* > + * FW nodes can load cros_ec_ucsi, but early PDC devices did not define > + * the required nodes. On PDC systems without FW nodes for cros_ec_ucsi, > + * the driver should be added as an mfd subdevice. > + */ > + if (cros_ec_check_features(ec, EC_FEATURE_USB_PD) && > + cros_ec_check_features(ec, EC_FEATURE_UCSI_PPM) && > + !acpi_dev_found("GOOG0021") && > + !of_find_compatible_node(NULL, NULL, "google,cros-ec-ucsi")) { > + retval = mfd_add_hotplug_devices(ec->dev, > + cros_ec_ucsi_cells, > + ARRAY_SIZE(cros_ec_ucsi_cells)); > + > + if (retval) > + dev_warn(ec->dev, "failed to add cros_ec_ucsi: %d\n", retval); > + } > + > /* > * UCSI provides power supply information so we don't need to separately > * load the cros_usbpd_charger driver. > -- > 2.53.0.1213.gd9a14994de-goog > [unhandled content-type:application/pgp-signature] |  |