mfd / platform: cros_ec: Move lightbar attributes to its own driver
The entire way how cros sysfs attibutes are created is broken. cros_ec_lightbar should be its own driver and its attributes should be associated with a lightbar driver not the mfd driver. In order to retain the path, the lightbar attributes are attached to the cros_class. The patch also adds the sysfs documentation. Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com> Reviewed-by: Guenter Roeck <groeck@chromium.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
This commit is contained in:

committed by
Lee Jones

parent
4bc59c2f7e
commit
ecf8a6cd94
@@ -36,7 +36,6 @@ static int ec_major;
|
||||
|
||||
static const struct attribute_group *cros_ec_groups[] = {
|
||||
&cros_ec_attr_group,
|
||||
&cros_ec_lightbar_attr_group,
|
||||
&cros_ec_vbc_attr_group,
|
||||
NULL,
|
||||
};
|
||||
@@ -395,6 +394,10 @@ static const struct mfd_cell cros_usbpd_charger_cells[] = {
|
||||
{ .name = "cros-usbpd-charger" }
|
||||
};
|
||||
|
||||
static const struct mfd_cell cros_ec_platform_cells[] = {
|
||||
{ .name = "cros-ec-lightbar" },
|
||||
};
|
||||
|
||||
static int ec_device_probe(struct platform_device *pdev)
|
||||
{
|
||||
int retval = -ENOMEM;
|
||||
@@ -470,9 +473,6 @@ static int ec_device_probe(struct platform_device *pdev)
|
||||
retval);
|
||||
}
|
||||
|
||||
/* Take control of the lightbar from the EC. */
|
||||
lb_manual_suspend_ctrl(ec, 1);
|
||||
|
||||
/* We can now add the sysfs class, we know which parameter to show */
|
||||
retval = cdev_device_add(&ec->cdev, &ec->class_dev);
|
||||
if (retval) {
|
||||
@@ -480,6 +480,15 @@ static int ec_device_probe(struct platform_device *pdev)
|
||||
goto failed;
|
||||
}
|
||||
|
||||
retval = mfd_add_devices(ec->dev, PLATFORM_DEVID_AUTO,
|
||||
cros_ec_platform_cells,
|
||||
ARRAY_SIZE(cros_ec_platform_cells),
|
||||
NULL, 0, NULL);
|
||||
if (retval)
|
||||
dev_warn(ec->dev,
|
||||
"failed to add cros-ec platform devices: %d\n",
|
||||
retval);
|
||||
|
||||
if (cros_ec_debugfs_init(ec))
|
||||
dev_warn(dev, "failed to create debugfs directory\n");
|
||||
|
||||
@@ -494,9 +503,6 @@ static int ec_device_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct cros_ec_dev *ec = dev_get_drvdata(&pdev->dev);
|
||||
|
||||
/* Let the EC take over the lightbar again. */
|
||||
lb_manual_suspend_ctrl(ec, 0);
|
||||
|
||||
cros_ec_debugfs_remove(ec);
|
||||
|
||||
mfd_remove_devices(ec->dev);
|
||||
@@ -525,8 +531,6 @@ static __maybe_unused int ec_device_suspend(struct device *dev)
|
||||
|
||||
cros_ec_debugfs_suspend(ec);
|
||||
|
||||
lb_suspend(ec);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -536,8 +540,6 @@ static __maybe_unused int ec_device_resume(struct device *dev)
|
||||
|
||||
cros_ec_debugfs_resume(ec);
|
||||
|
||||
lb_resume(ec);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user