devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 2/7] mfd: max8925: fix mfd device register failure
@ 2012-11-06  7:38 Qing Xu
  2012-11-23  7:14 ` Qing Xu
  2012-11-23  8:41 ` Haojian Zhuang
  0 siblings, 2 replies; 4+ messages in thread
From: Qing Xu @ 2012-11-06  7:38 UTC (permalink / raw)
  To: qingx, sameo, grant.likely, rob.herring, haojian.zhuang, cxie4,
	linux-kernel, devicetree-discuss

From: Qing Xu <qingx@marvell.com>

we encounter rtc/power/touch driver registry failure, root cause
it is resources confilict in insert_resouce, solved by changing
mfd_add_devices 5th parameter to NULL

Signed-off-by: Qing Xu <qingx@marvell.com>
---
 drivers/mfd/max8925-core.c |   22 ++++++++++------------
 1 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/drivers/mfd/max8925-core.c b/drivers/mfd/max8925-core.c
index dcc218a..b1eacae 100644
--- a/drivers/mfd/max8925-core.c
+++ b/drivers/mfd/max8925-core.c
@@ -873,7 +873,7 @@ int __devinit max8925_device_init(struct max8925_chip *chip,
 
 	ret = mfd_add_devices(chip->dev, 0, &rtc_devs[0],
 			      ARRAY_SIZE(rtc_devs),
-			      &rtc_resources[0], chip->irq_base, NULL);
+			      NULL, chip->irq_base, NULL);
 	if (ret < 0) {
 		dev_err(chip->dev, "Failed to add rtc subdev\n");
 		goto out;
@@ -881,7 +881,7 @@ int __devinit max8925_device_init(struct max8925_chip *chip,
 
 	ret = mfd_add_devices(chip->dev, 0, &onkey_devs[0],
 			      ARRAY_SIZE(onkey_devs),
-			      &onkey_resources[0], 0, NULL);
+			      NULL, 0, NULL);
 	if (ret < 0) {
 		dev_err(chip->dev, "Failed to add onkey subdev\n");
 		goto out_dev;
@@ -900,21 +900,19 @@ int __devinit max8925_device_init(struct max8925_chip *chip,
 		goto out_dev;
 	}
 
-	if (pdata && pdata->power) {
-		ret = mfd_add_devices(chip->dev, 0, &power_devs[0],
-					ARRAY_SIZE(power_devs),
-					&power_supply_resources[0], 0, NULL);
-		if (ret < 0) {
-			dev_err(chip->dev, "Failed to add power supply "
-				"subdev\n");
-			goto out_dev;
-		}
+	ret = mfd_add_devices(chip->dev, 0, &power_devs[0],
+				ARRAY_SIZE(power_devs),
+				NULL, 0, NULL);
+	if (ret < 0) {
+		dev_err(chip->dev, "Failed to add power supply "
+			"subdev, err = %d\n", ret);
+		goto out_dev;
 	}
 
 	if (pdata && pdata->touch) {
 		ret = mfd_add_devices(chip->dev, 0, &touch_devs[0],
 				      ARRAY_SIZE(touch_devs),
-				      &touch_resources[0], 0, NULL);
+				      NULL, chip->tsc_irq_base, NULL);
 		if (ret < 0) {
 			dev_err(chip->dev, "Failed to add touch subdev\n");
 			goto out_dev;
-- 
1.7.0.4

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/7] mfd: max8925: fix mfd device register failure
  2012-11-06  7:38 [PATCH 2/7] mfd: max8925: fix mfd device register failure Qing Xu
@ 2012-11-23  7:14 ` Qing Xu
  2012-11-23  8:41 ` Haojian Zhuang
  1 sibling, 0 replies; 4+ messages in thread
From: Qing Xu @ 2012-11-23  7:14 UTC (permalink / raw)
  To: Qing Xu
  Cc: sameo@linux.intel.com, grant.likely@secretlab.ca,
	rob.herring@calxeda.com, haojian.zhuang@gmail.com, Chao Xie,
	linux-kernel@vger.kernel.org, devicetree-discuss@lists.ozlabs.org

On 11/06/2012 03:38 PM, Qing Xu wrote:
> From: Qing Xu <qingx@marvell.com>
>
> we encounter rtc/power/touch driver registry failure, root cause
> it is resources confilict in insert_resouce, solved by changing
> mfd_add_devices 5th parameter to NULL
>
> Signed-off-by: Qing Xu <qingx@marvell.com>
> ---
>   drivers/mfd/max8925-core.c |   22 ++++++++++------------
>   1 files changed, 10 insertions(+), 12 deletions(-)
Hi Haojian, Sameo,

Could you help to review my patches? Can it be merged?

Thanks a lot!
-Qing

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/7] mfd: max8925: fix mfd device register failure
  2012-11-06  7:38 [PATCH 2/7] mfd: max8925: fix mfd device register failure Qing Xu
  2012-11-23  7:14 ` Qing Xu
@ 2012-11-23  8:41 ` Haojian Zhuang
  2012-11-27 10:02   ` Qing Xu
  1 sibling, 1 reply; 4+ messages in thread
From: Haojian Zhuang @ 2012-11-23  8:41 UTC (permalink / raw)
  To: Qing Xu
  Cc: Samuel Ortiz, Grant Likely, Rob Herring, cxie4,
	linux-kernel@vger.kernel.org, devicetree-discuss

On Tue, Nov 6, 2012 at 3:38 PM, Qing Xu <qingx@marvell.com> wrote:
> From: Qing Xu <qingx@marvell.com>
>
> we encounter rtc/power/touch driver registry failure, root cause
> it is resources confilict in insert_resouce, solved by changing
> mfd_add_devices 5th parameter to NULL
>
Since resources are not used in power/rtc driver and touch driver
isn't implemented,
it's OK to avoid use resources. Please remove those resources in
max8925-core.c also.


> Signed-off-by: Qing Xu <qingx@marvell.com>
> ---
>  drivers/mfd/max8925-core.c |   22 ++++++++++------------
>  1 files changed, 10 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/mfd/max8925-core.c b/drivers/mfd/max8925-core.c
> index dcc218a..b1eacae 100644
> --- a/drivers/mfd/max8925-core.c
> +++ b/drivers/mfd/max8925-core.c
> @@ -873,7 +873,7 @@ int __devinit max8925_device_init(struct max8925_chip *chip,
>
>         ret = mfd_add_devices(chip->dev, 0, &rtc_devs[0],
>                               ARRAY_SIZE(rtc_devs),
> -                             &rtc_resources[0], chip->irq_base, NULL);
> +                             NULL, chip->irq_base, NULL);
>         if (ret < 0) {
>                 dev_err(chip->dev, "Failed to add rtc subdev\n");
>                 goto out;
> @@ -881,7 +881,7 @@ int __devinit max8925_device_init(struct max8925_chip *chip,
>
>         ret = mfd_add_devices(chip->dev, 0, &onkey_devs[0],
>                               ARRAY_SIZE(onkey_devs),
> -                             &onkey_resources[0], 0, NULL);
> +                             NULL, 0, NULL);
>         if (ret < 0) {
>                 dev_err(chip->dev, "Failed to add onkey subdev\n");
>                 goto out_dev;
> @@ -900,21 +900,19 @@ int __devinit max8925_device_init(struct max8925_chip *chip,
>                 goto out_dev;
>         }
>
> -       if (pdata && pdata->power) {
> -               ret = mfd_add_devices(chip->dev, 0, &power_devs[0],
> -                                       ARRAY_SIZE(power_devs),
> -                                       &power_supply_resources[0], 0, NULL);
> -               if (ret < 0) {
> -                       dev_err(chip->dev, "Failed to add power supply "
> -                               "subdev\n");
> -                       goto out_dev;
> -               }
> +       ret = mfd_add_devices(chip->dev, 0, &power_devs[0],
> +                               ARRAY_SIZE(power_devs),
> +                               NULL, 0, NULL);
> +       if (ret < 0) {
> +               dev_err(chip->dev, "Failed to add power supply "
> +                       "subdev, err = %d\n", ret);
> +               goto out_dev;
>         }
>
>         if (pdata && pdata->touch) {
>                 ret = mfd_add_devices(chip->dev, 0, &touch_devs[0],
>                                       ARRAY_SIZE(touch_devs),
> -                                     &touch_resources[0], 0, NULL);
> +                                     NULL, chip->tsc_irq_base, NULL);
>                 if (ret < 0) {
>                         dev_err(chip->dev, "Failed to add touch subdev\n");
>                         goto out_dev;
> --
> 1.7.0.4
>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/7] mfd: max8925: fix mfd device register failure
  2012-11-23  8:41 ` Haojian Zhuang
@ 2012-11-27 10:02   ` Qing Xu
  0 siblings, 0 replies; 4+ messages in thread
From: Qing Xu @ 2012-11-27 10:02 UTC (permalink / raw)
  To: Haojian Zhuang
  Cc: Samuel Ortiz, Grant Likely, Rob Herring, Chao Xie,
	linux-kernel@vger.kernel.org, devicetree-discuss@lists.ozlabs.org

On 11/23/2012 04:41 PM, Haojian Zhuang wrote:
> On Tue, Nov 6, 2012 at 3:38 PM, Qing Xu <qingx@marvell.com> wrote:
>> From: Qing Xu <qingx@marvell.com>
>>
>> we encounter rtc/power/touch driver registry failure, root cause
>> it is resources confilict in insert_resouce, solved by changing
>> mfd_add_devices 5th parameter to NULL
>>
> Since resources are not used in power/rtc driver and touch driver
> isn't implemented,
> it's OK to avoid use resources. Please remove those resources in
> max8925-core.c also.
>

oh, we can not remove those resources, it is include in mfd_cell,
such as :
static struct resource rtc_resources[] = {
         {
                 ...

         },
};

static struct mfd_cell rtc_devs[] = {
         {
                 .name           = "max8925-rtc",
                 ...
                 .resources      = &rtc_resources[0],
                 ...

         },
};

In the struct, the resources is for rtc dev itself's resource, but in:

ret = mfd_add_devices(chip->dev, 0, &rtc_devs[0],
                                  ARRAY_SIZE(rtc_devs),
                                 &rtc_resources[0], chip->irq_base, NULL);

the 5th parameter, it is for rtc's child, not rtc itself, we should
remove it to NULL, otherwise, device register will find conflict
on child's and parent's resource.

>> Signed-off-by: Qing Xu <qingx@marvell.com>
>> ---
>>   drivers/mfd/max8925-core.c |   22 ++++++++++------------
>>   1 files changed, 10 insertions(+), 12 deletions(-)
>>
>> diff --git a/drivers/mfd/max8925-core.c b/drivers/mfd/max8925-core.c
>> index dcc218a..b1eacae 100644
>> --- a/drivers/mfd/max8925-core.c
>> +++ b/drivers/mfd/max8925-core.c
>> @@ -873,7 +873,7 @@ int __devinit max8925_device_init(struct max8925_chip *chip,
>>
>>          ret = mfd_add_devices(chip->dev, 0, &rtc_devs[0],
>>                                ARRAY_SIZE(rtc_devs),
>> -                             &rtc_resources[0], chip->irq_base, NULL);
>> +                             NULL, chip->irq_base, NULL);
>>          if (ret < 0) {
>>                  dev_err(chip->dev, "Failed to add rtc subdev\n");
>>                  goto out;
>> @@ -881,7 +881,7 @@ int __devinit max8925_device_init(struct max8925_chip *chip,
>>
>>          ret = mfd_add_devices(chip->dev, 0, &onkey_devs[0],
>>                                ARRAY_SIZE(onkey_devs),
>> -                             &onkey_resources[0], 0, NULL);
>> +                             NULL, 0, NULL);
>>          if (ret < 0) {
>>                  dev_err(chip->dev, "Failed to add onkey subdev\n");
>>                  goto out_dev;
>> @@ -900,21 +900,19 @@ int __devinit max8925_device_init(struct max8925_chip *chip,
>>                  goto out_dev;
>>          }
>>
>> -       if (pdata && pdata->power) {
>> -               ret = mfd_add_devices(chip->dev, 0, &power_devs[0],
>> -                                       ARRAY_SIZE(power_devs),
>> -                                       &power_supply_resources[0], 0, NULL);
>> -               if (ret < 0) {
>> -                       dev_err(chip->dev, "Failed to add power supply "
>> -                               "subdev\n");
>> -                       goto out_dev;
>> -               }
>> +       ret = mfd_add_devices(chip->dev, 0, &power_devs[0],
>> +                               ARRAY_SIZE(power_devs),
>> +                               NULL, 0, NULL);
>> +       if (ret < 0) {
>> +               dev_err(chip->dev, "Failed to add power supply "
>> +                       "subdev, err = %d\n", ret);
>> +               goto out_dev;
>>          }
>>
>>          if (pdata && pdata->touch) {
>>                  ret = mfd_add_devices(chip->dev, 0, &touch_devs[0],
>>                                        ARRAY_SIZE(touch_devs),
>> -                                     &touch_resources[0], 0, NULL);
>> +                                     NULL, chip->tsc_irq_base, NULL);
>>                  if (ret < 0) {
>>                          dev_err(chip->dev, "Failed to add touch subdev\n");
>>                          goto out_dev;
>> --
>> 1.7.0.4
>>

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-11-27 10:02 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-11-06  7:38 [PATCH 2/7] mfd: max8925: fix mfd device register failure Qing Xu
2012-11-23  7:14 ` Qing Xu
2012-11-23  8:41 ` Haojian Zhuang
2012-11-27 10:02   ` Qing Xu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).