mfd: cros_ec: Add cros-usbpd-notify subdevice
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>
This commit is contained in:
parent
1112ba02ff
commit
4602dce036
1 changed files with 22 additions and 0 deletions
|
@ -5,6 +5,7 @@
|
||||||
* Copyright (C) 2014 Google, Inc.
|
* Copyright (C) 2014 Google, Inc.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <linux/kconfig.h>
|
||||||
#include <linux/mfd/core.h>
|
#include <linux/mfd/core.h>
|
||||||
#include <linux/mfd/cros_ec.h>
|
#include <linux/mfd/cros_ec.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
@ -87,6 +88,10 @@ static const struct mfd_cell cros_usbpd_charger_cells[] = {
|
||||||
{ .name = "cros-usbpd-logger", },
|
{ .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[] = {
|
static const struct cros_feature_to_cells cros_subdevices[] = {
|
||||||
{
|
{
|
||||||
.id = EC_FEATURE_CEC,
|
.id = EC_FEATURE_CEC,
|
||||||
|
@ -202,6 +207,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
|
* The following subdevices cannot be detected by sending the
|
||||||
* EC_FEATURE_GET_CMD to the Embedded Controller device.
|
* EC_FEATURE_GET_CMD to the Embedded Controller device.
|
||||||
|
|
Loading…
Add table
Reference in a new issue