lkml.org 
[lkml]   [2012]   [Dec]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 1/4] mfd: 88pm80x: fix regmap not init before used
On 12/03/2012 01:38 PM, Qing Xu wrote:
> From: Qing Xu <qingx@marvell.com>
>
> 1.put the pm800_page_init before 800_init, otherwise power and
> gpadc regmap handle are not inited before being used.
> 2.remove regmap exit, as it will be called in driver release
> 3.add lost "return 0" in probe()
> 4.update driver's name
>
> Signed-off-by: Qiao Zhou <zhouqiao@marvell.com>
> Signed-off-by: Qing Xu <qingx@marvell.com>
> ---
> drivers/mfd/88pm800.c | 25 ++++++++++++-------------
> drivers/mfd/88pm805.c | 5 +++--
> drivers/mfd/88pm80x.c | 2 +-
> 3 files changed, 16 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/mfd/88pm800.c b/drivers/mfd/88pm800.c
> index ce229ea..73b2c9f 100644
> --- a/drivers/mfd/88pm800.c
> +++ b/drivers/mfd/88pm800.c
> @@ -401,9 +401,6 @@ static void pm800_pages_exit(struct pm80x_chip *chip)
> {
> struct pm80x_subchip *subchip;
>
> - regmap_exit(chip->regmap);
> - i2c_unregister_device(chip->client);
> -
> subchip = chip->subchip;
> if (subchip->power_page) {
> regmap_exit(subchip->regmap_power);
> @@ -413,6 +410,7 @@ static void pm800_pages_exit(struct pm80x_chip *chip)
> regmap_exit(subchip->regmap_gpadc);
> i2c_unregister_device(subchip->gpadc_page);
> }
> + i2c_unregister_device(chip->client);
> }
>
> static int __devinit device_800_init(struct pm80x_chip *chip,
> @@ -528,25 +526,26 @@ static int __devinit pm800_probe(struct i2c_client *client,
> subchip->gpadc_page_addr = pdata->gpadc_page_addr;
> chip->subchip = subchip;
>
> - ret = device_800_init(chip, pdata);
> - if (ret) {
> - dev_err(chip->dev, "%s id 0x%x failed!\n", __func__, chip->id);
> - goto err_800_init;
> - }
> -
> ret = pm800_pages_init(chip);
> if (ret) {
> dev_err(&client->dev, "pm800_pages_init failed!\n");
> goto err_page_init;
> }
>
> + ret = device_800_init(chip, pdata);
> + if (ret) {
> + dev_err(chip->dev, "%s id 0x%x failed!\n", __func__, chip->id);
> + goto err_800_init;
> + }
> +
> if (pdata->plat_config)
> pdata->plat_config(chip, pdata);
>
> -err_page_init:
> - mfd_remove_devices(chip->dev);
> - device_irq_exit_800(chip);
> + return 0;
> +
> err_800_init:
> + pm800_pages_exit(chip);
> +err_page_init:
> devm_kfree(&client->dev, subchip);
> err_subchip_alloc:
> pm80x_deinit(client);
> @@ -571,7 +570,7 @@ static int __devexit pm800_remove(struct i2c_client *client)
>
> static struct i2c_driver pm800_driver = {
> .driver = {
> - .name = "88PM80X",
> + .name = "88PM800",
> .owner = THIS_MODULE,
> .pm = &pm80x_pm_ops,
> },
> diff --git a/drivers/mfd/88pm805.c b/drivers/mfd/88pm805.c
> index c20a311..7878013 100644
> --- a/drivers/mfd/88pm805.c
> +++ b/drivers/mfd/88pm805.c
> @@ -168,7 +168,6 @@ static int __devinit device_irq_init_805(struct pm80x_chip *chip)
> ret =
> regmap_add_irq_chip(chip->regmap, chip->irq, flags, -1,
> chip->regmap_irq_chip, &chip->irq_data);
> -
> out:
> return ret;
> }
> @@ -256,6 +255,8 @@ static int __devinit pm805_probe(struct i2c_client *client,
> if (pdata->plat_config)
> pdata->plat_config(chip, pdata);
>
> + return 0;
> +
> err_805_init:
> pm80x_deinit(client);
> out_init:
> @@ -276,7 +277,7 @@ static int __devexit pm805_remove(struct i2c_client *client)
>
> static struct i2c_driver pm805_driver = {
> .driver = {
> - .name = "88PM80X",
> + .name = "88PM805",
> .owner = THIS_MODULE,
> .pm = &pm80x_pm_ops,
> },
> diff --git a/drivers/mfd/88pm80x.c b/drivers/mfd/88pm80x.c
> index cd0bf52..1adb355 100644
> --- a/drivers/mfd/88pm80x.c
> +++ b/drivers/mfd/88pm80x.c
> @@ -31,7 +31,7 @@ const struct regmap_config pm80x_regmap_config = {
> };
> EXPORT_SYMBOL_GPL(pm80x_regmap_config);
>
> -int __devinit pm80x_init(struct i2c_client *client,
> +int pm80x_init(struct i2c_client *client,
> const struct i2c_device_id *id)
> {
> struct pm80x_chip *chip;


Samuel,

Could you help to review the patch? Thanks a lot!

Qing



\
 
 \ /
  Last update: 2012-12-12 07:41    [W:0.100 / U:0.008 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site