diff options
author | Lars-Peter Clausen <lars@metafoo.de> | 2010-05-24 23:37:19 +0200 |
---|---|---|
committer | Lars-Peter Clausen <lars@metafoo.de> | 2010-06-08 15:37:09 +0200 |
commit | 4a29094bdf6ff382b7558e242ddb91c67fc200c7 (patch) | |
tree | a6956e158bdcf88c2b916e2f383a810f81acef86 /drivers/power/pcf50633-charger.c | |
parent | 7c3f9799aa31d974507bf73e8c29172ecc672ecf (diff) |
MFD: pcf50633: Use mfd cells to register child devices
This patch changes the pcf50633 core code to use mfd cells to register child
devices instead of calling platform_device_{alloc,add} for each child.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Diffstat (limited to 'drivers/power/pcf50633-charger.c')
-rw-r--r-- | drivers/power/pcf50633-charger.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/power/pcf50633-charger.c b/drivers/power/pcf50633-charger.c index 066f994e6fe..f7114858eb1 100644 --- a/drivers/power/pcf50633-charger.c +++ b/drivers/power/pcf50633-charger.c @@ -40,7 +40,7 @@ struct pcf50633_mbc { int pcf50633_mbc_usb_curlim_set(struct pcf50633 *pcf, int ma) { - struct pcf50633_mbc *mbc = platform_get_drvdata(pcf->mbc_pdev); + struct pcf50633_mbc *mbc = pcf->mbc; int ret = 0; u8 bits; int charging_start = 1; @@ -112,7 +112,7 @@ EXPORT_SYMBOL_GPL(pcf50633_mbc_usb_curlim_set); int pcf50633_mbc_get_status(struct pcf50633 *pcf) { - struct pcf50633_mbc *mbc = platform_get_drvdata(pcf->mbc_pdev); + struct pcf50633_mbc *mbc = pcf->mbc; int status = 0; u8 chgmod; @@ -143,7 +143,7 @@ EXPORT_SYMBOL_GPL(pcf50633_mbc_get_status); int pcf50633_mbc_get_usb_online_status(struct pcf50633 *pcf) { - struct pcf50633_mbc *mbc = platform_get_drvdata(pcf->mbc_pdev); + struct pcf50633_mbc *mbc = pcf->mbc; if (!mbc) return 0; @@ -368,6 +368,7 @@ static const u8 mbc_irq_handlers[] = { static int __devinit pcf50633_mbc_probe(struct platform_device *pdev) { + struct pcf50633 *pcf = dev_to_pcf50633(pdev->dev.parent); struct pcf50633_mbc *mbc; int ret; int i; @@ -378,7 +379,7 @@ static int __devinit pcf50633_mbc_probe(struct platform_device *pdev) return -ENOMEM; platform_set_drvdata(pdev, mbc); - mbc->pcf = dev_to_pcf50633(pdev->dev.parent); + mbc->pcf = pcf; /* Set up IRQ handlers */ for (i = 0; i < ARRAY_SIZE(mbc_irq_handlers); i++) @@ -444,6 +445,8 @@ static int __devinit pcf50633_mbc_probe(struct platform_device *pdev) if (mbcs1 & PCF50633_MBCS1_ADAPTPRES) pcf50633_mbc_irq_handler(PCF50633_IRQ_ADPINS, mbc); + pcf->mbc = mbc; + return 0; } @@ -452,6 +455,8 @@ static int __devexit pcf50633_mbc_remove(struct platform_device *pdev) struct pcf50633_mbc *mbc = platform_get_drvdata(pdev); int i; + mbc->pcf->mbc = NULL; + /* Remove IRQ handlers */ for (i = 0; i < ARRAY_SIZE(mbc_irq_handlers); i++) pcf50633_free_irq(mbc->pcf, mbc_irq_handlers[i]); |