浏览代码

mfd: cros_ec_dev: Register cros_usbpd-charger driver as a subdevice.

Check whether this EC instance has USBPD host command support and
instatiate the cros_usbpd-charger driver as a subdevice in such case.

Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Enric Balletbo i Serra 7 年之前
父节点
当前提交
3144dce72b
共有 1 个文件被更改,包括 16 次插入0 次删除
  1. 16 0
      drivers/mfd/cros_ec_dev.c

+ 16 - 0
drivers/mfd/cros_ec_dev.c

@@ -381,6 +381,10 @@ static const struct mfd_cell cros_ec_rtc_cells[] = {
 	{ .name = "cros-ec-rtc" }
 	{ .name = "cros-ec-rtc" }
 };
 };
 
 
+static const struct mfd_cell cros_usbpd_charger_cells[] = {
+	{ .name = "cros-usbpd-charger" }
+};
+
 static int ec_device_probe(struct platform_device *pdev)
 static int ec_device_probe(struct platform_device *pdev)
 {
 {
 	int retval = -ENOMEM;
 	int retval = -ENOMEM;
@@ -431,6 +435,18 @@ static int ec_device_probe(struct platform_device *pdev)
 				retval);
 				retval);
 	}
 	}
 
 
+	/* Check whether this EC instance has the PD charge manager */
+	if (cros_ec_check_features(ec, EC_FEATURE_USB_PD)) {
+		retval = mfd_add_devices(ec->dev, PLATFORM_DEVID_AUTO,
+					 cros_usbpd_charger_cells,
+					 ARRAY_SIZE(cros_usbpd_charger_cells),
+					 NULL, 0, NULL);
+		if (retval)
+			dev_err(ec->dev,
+				"failed to add cros-usbpd-charger device: %d\n",
+				retval);
+	}
+
 	/* Take control of the lightbar from the EC. */
 	/* Take control of the lightbar from the EC. */
 	lb_manual_suspend_ctrl(ec, 1);
 	lb_manual_suspend_ctrl(ec, 1);