[PATCH v4 2/2] mfd: cros_ec: Add cros-usbpd-notify subdevice

From: Prashant Malani
Date: Fri Dec 20 2019 - 14:45:30 EST


Add the cros-usbpd-notify driver as a subdevice on non-ACPI platforms
that support the EC_FEATURE_USB_PD EC feature flag.

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@xxxxxxxxxxxx>
---

Changes in v4:
- Removed #ifndef usage; instead, moved cros-usbpd-notify to a separate
mfd_cell and used an IS_ENABLED() check.
- Changed commit title and description slightly to reflect change in
code.

drivers/mfd/cros_ec_dev.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

diff --git a/drivers/mfd/cros_ec_dev.c b/drivers/mfd/cros_ec_dev.c
index c4b977a5dd966..da198abe2b0a6 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/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,
@@ -202,6 +207,22 @@ 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 non-ACPI platforms.
+ */
+ if (!IS_ENABLED(CONFIG_ACPI)) {
+ 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.
--
2.24.1.735.g03f4e72817-goog