mfd / platform: cros_ec: Use devm_mfd_add_devices

Use devm_mfd_add_devices() for adding cros-ec core MFD child devices. This
reduces the need of remove callback from platform/chrome for removing the
MFD child devices.

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:
Enric Balletbo i Serra 2018-12-12 18:33:56 +01:00 committed by Lee Jones
parent 49a57857ae
commit 4bc59c2f7e
5 changed files with 3 additions and 46 deletions

View File

@ -129,8 +129,8 @@ int cros_ec_register(struct cros_ec_device *ec_dev)
} }
} }
err = mfd_add_devices(ec_dev->dev, PLATFORM_DEVID_AUTO, &ec_cell, 1, err = devm_mfd_add_devices(ec_dev->dev, PLATFORM_DEVID_AUTO, &ec_cell,
NULL, ec_dev->irq, NULL); 1, NULL, ec_dev->irq, NULL);
if (err) { if (err) {
dev_err(dev, dev_err(dev,
"Failed to register Embedded Controller subdevice %d\n", "Failed to register Embedded Controller subdevice %d\n",
@ -147,7 +147,7 @@ int cros_ec_register(struct cros_ec_device *ec_dev)
* - the EC is responsive at init time (it is not true for a * - the EC is responsive at init time (it is not true for a
* sensor hub. * sensor hub.
*/ */
err = mfd_add_devices(ec_dev->dev, PLATFORM_DEVID_AUTO, err = devm_mfd_add_devices(ec_dev->dev, PLATFORM_DEVID_AUTO,
&ec_pd_cell, 1, NULL, ec_dev->irq, NULL); &ec_pd_cell, 1, NULL, ec_dev->irq, NULL);
if (err) { if (err) {
dev_err(dev, dev_err(dev,
@ -181,14 +181,6 @@ int cros_ec_register(struct cros_ec_device *ec_dev)
} }
EXPORT_SYMBOL(cros_ec_register); EXPORT_SYMBOL(cros_ec_register);
int cros_ec_remove(struct cros_ec_device *ec_dev)
{
mfd_remove_devices(ec_dev->dev);
return 0;
}
EXPORT_SYMBOL(cros_ec_remove);
#ifdef CONFIG_PM_SLEEP #ifdef CONFIG_PM_SLEEP
int cros_ec_suspend(struct cros_ec_device *ec_dev) int cros_ec_suspend(struct cros_ec_device *ec_dev)
{ {

View File

@ -317,15 +317,6 @@ static int cros_ec_i2c_probe(struct i2c_client *client,
return 0; return 0;
} }
static int cros_ec_i2c_remove(struct i2c_client *client)
{
struct cros_ec_device *ec_dev = i2c_get_clientdata(client);
cros_ec_remove(ec_dev);
return 0;
}
#ifdef CONFIG_PM_SLEEP #ifdef CONFIG_PM_SLEEP
static int cros_ec_i2c_suspend(struct device *dev) static int cros_ec_i2c_suspend(struct device *dev)
{ {
@ -376,7 +367,6 @@ static struct i2c_driver cros_ec_driver = {
.pm = &cros_ec_i2c_pm_ops, .pm = &cros_ec_i2c_pm_ops,
}, },
.probe = cros_ec_i2c_probe, .probe = cros_ec_i2c_probe,
.remove = cros_ec_i2c_remove,
.id_table = cros_ec_i2c_id, .id_table = cros_ec_i2c_id,
}; };

View File

@ -327,7 +327,6 @@ static int cros_ec_lpc_probe(struct platform_device *pdev)
static int cros_ec_lpc_remove(struct platform_device *pdev) static int cros_ec_lpc_remove(struct platform_device *pdev)
{ {
struct cros_ec_device *ec_dev;
struct acpi_device *adev; struct acpi_device *adev;
adev = ACPI_COMPANION(&pdev->dev); adev = ACPI_COMPANION(&pdev->dev);
@ -335,9 +334,6 @@ static int cros_ec_lpc_remove(struct platform_device *pdev)
acpi_remove_notify_handler(adev->handle, ACPI_ALL_NOTIFY, acpi_remove_notify_handler(adev->handle, ACPI_ALL_NOTIFY,
cros_ec_lpc_acpi_notify); cros_ec_lpc_acpi_notify);
ec_dev = platform_get_drvdata(pdev);
cros_ec_remove(ec_dev);
return 0; return 0;
} }

View File

@ -685,16 +685,6 @@ static int cros_ec_spi_probe(struct spi_device *spi)
return 0; return 0;
} }
static int cros_ec_spi_remove(struct spi_device *spi)
{
struct cros_ec_device *ec_dev;
ec_dev = spi_get_drvdata(spi);
cros_ec_remove(ec_dev);
return 0;
}
#ifdef CONFIG_PM_SLEEP #ifdef CONFIG_PM_SLEEP
static int cros_ec_spi_suspend(struct device *dev) static int cros_ec_spi_suspend(struct device *dev)
{ {
@ -733,7 +723,6 @@ static struct spi_driver cros_ec_driver_spi = {
.pm = &cros_ec_spi_pm_ops, .pm = &cros_ec_spi_pm_ops,
}, },
.probe = cros_ec_spi_probe, .probe = cros_ec_spi_probe,
.remove = cros_ec_spi_remove,
.id_table = cros_ec_spi_id, .id_table = cros_ec_spi_id,
}; };

View File

@ -281,16 +281,6 @@ int cros_ec_cmd_xfer(struct cros_ec_device *ec_dev,
int cros_ec_cmd_xfer_status(struct cros_ec_device *ec_dev, int cros_ec_cmd_xfer_status(struct cros_ec_device *ec_dev,
struct cros_ec_command *msg); struct cros_ec_command *msg);
/**
* cros_ec_remove() - Remove a ChromeOS EC.
* @ec_dev: Device to register.
*
* Call this to deregister a ChromeOS EC, then clean up any private data.
*
* Return: 0 on success or negative error code.
*/
int cros_ec_remove(struct cros_ec_device *ec_dev);
/** /**
* cros_ec_register() - Register a new ChromeOS EC, using the provided info. * cros_ec_register() - Register a new ChromeOS EC, using the provided info.
* @ec_dev: Device to register. * @ec_dev: Device to register.