mfd: cros_ec: Add cros-usbpd-notify subdevice
authorPrashant Malani <pmalani@chromium.org>
Tue, 14 Jan 2020 23:22:20 +0000 (15:22 -0800)
committerLee Jones <lee.jones@linaro.org>
Fri, 24 Jan 2020 07:33:59 +0000 (07:33 +0000)
Add the cros-usbpd-notify driver as a subdevice on platforms that
support the EC_FEATURE_USB_PD EC feature flag and don't have the
ACPI PD notification device defined.

This driver allows other cros-ec devices to receive PD event
notifications from the Chrome OS Embedded Controller (EC) via a
notification chain.

Signed-off-by: Prashant Malani <pmalani@chromium.org>
Reviewed-by: Benson Leung <bleung@chromium.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/cros_ec_dev.c

index c4b977a..d0c28a4 100644 (file)
@@ -5,6 +5,7 @@
  * Copyright (C) 2014 Google, Inc.
  */
 
+#include <linux/kconfig.h>
 #include <linux/mfd/core.h>
 #include <linux/mfd/cros_ec.h>
 #include <linux/module.h>
@@ -87,6 +88,10 @@ static const struct mfd_cell cros_usbpd_charger_cells[] = {
        { .name = "cros-usbpd-logger", },
 };
 
+static const struct mfd_cell cros_usbpd_notify_cells[] = {
+       { .name = "cros-usbpd-notify", },
+};
+
 static const struct cros_feature_to_cells cros_subdevices[] = {
        {
                .id             = EC_FEATURE_CEC,
@@ -203,6 +208,23 @@ static int ec_device_probe(struct platform_device *pdev)
        }
 
        /*
+        * The PD notifier driver cell is separate since it only needs to be
+        * explicitly added on platforms that don't have the PD notifier ACPI
+        * device entry defined.
+        */
+       if (IS_ENABLED(CONFIG_OF)) {
+               if (cros_ec_check_features(ec, EC_FEATURE_USB_PD)) {
+                       retval = mfd_add_hotplug_devices(ec->dev,
+                                       cros_usbpd_notify_cells,
+                                       ARRAY_SIZE(cros_usbpd_notify_cells));
+                       if (retval)
+                               dev_err(ec->dev,
+                                       "failed to add PD notify devices: %d\n",
+                                       retval);
+               }
+       }
+
+       /*
         * The following subdevices cannot be detected by sending the
         * EC_FEATURE_GET_CMD to the Embedded Controller device.
         */