Skip to contentSkip to conversation

ARM: OMAP2+: gpmc-smsc911x: only register regulator for first instance

PATCH New Kevin Hilman 3 participants 9 messages Mar 7, 2012 – Mar 20, 2012

Subsystems (5)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ARM: OMAP2+: gpmc-smsc911x: only register regulator for first instance

commit e4b0b2cbbb (ARM: OMAP2+: gpmc-smsc911x: add required smsc911x regulators) added regulators which are registered during gpmc_smsc911x_init(). However, some platforms (OMAP3/Overo) have more than one instance of the SMSC911x and result in attempting to register the same regulator more than once which causes a panic().

Fix this by only registering the regulator when the platform_data id field is zero, indicating its the first instance.

---
Fix needed for v3.3.
Applies on top of Tony's fixes branch.

 arch/arm/mach-omap2/gpmc-smsc911x.c |   11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)
arch/arm/mach-omap2/gpmc-smsc911x.c +7 -4
index bbb870c..4d6f1c6 100644
@@ -101,10 +101,13 @@ void __init gpmc_smsc911x_init(struct omap_smsc911x_platform_data *board_data)
 
 	gpmc_cfg = board_data;
 
-	ret = platform_device_register(&gpmc_smsc911x_regulator);
-	if (ret < 0) {
-		pr_err("Unable to register smsc911x regulators: %d\n", ret);
-		return;
+	if (!gpmc_cfg) {
+		ret = platform_device_register(&gpmc_smsc911x_regulator);
+		if (ret < 0) {
+			pr_err("Unable to register smsc911x regulators: %d\n",
+			       ret);
+			return;
+		}
 	}
 
 	if (gpmc_cs_request(gpmc_cfg->cs, SZ_16M, &cs_mem_base) < 0) {
Signature · 1 line
1.7.9.2
maintainer
#1 lore raw

PATCH 1/1 ARM: OMAP2+: gpmc-smsc911x: only register regulator for first instance

Quoted 23 lines · Kevin Hilman

commit e4b0b2cbbb (ARM: OMAP2+: gpmc-smsc911x: add required smsc911x regulators) added regulators which are registered during gpmc_smsc911x_init(). However, some platforms (OMAP3/Overo) have more than one instance of the SMSC911x and result in attempting to register the same regulator more than once which causes a panic().

Fix this by only registering the regulator when the platform_data id field is zero, indicating its the first instance.

---
Fix needed for v3.3.
Applies on top of Tony's fixes branch.

 arch/arm/mach-omap2/gpmc-smsc911x.c |   11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)
arch/arm/mach-omap2/gpmc-smsc911x.c +0 -0
index bbb870c..4d6f1c6 100644

arch/arm/mach-omap2/gpmc-smsc911x.c void __init gpmc_smsc911x_init(struct omap_smsc911x_platform_data *board_data) · line 104

Quoted 8 lines
arch/arm/mach-omap2/gpmc-smsc911x.c +1 -4
@@ -101,10 +101,13 @@ void __init gpmc_smsc911x_init(struct omap_smsc911x_platform_data *board_data)
 
 	gpmc_cfg = board_data;
 
-	ret = platform_device_register(&gpmc_smsc911x_regulator);
-	if (ret < 0) {
-		pr_err("Unable to register smsc911x regulators: %d\n", ret);
-		return;
+	if (!gpmc_cfg) {

Shouldn't this be !gpmc_cfg->id instead..

arch/arm/mach-omap2/gpmc-smsc911x.c void __init gpmc_smsc911x_init(struct omap_smsc911x_platform_data *board_data) · line 113

Quoted 9 lines
arch/arm/mach-omap2/gpmc-smsc911x.c +6 -0
+		ret = platform_device_register(&gpmc_smsc911x_regulator);
+		if (ret < 0) {
+			pr_err("Unable to register smsc911x regulators: %d\n",
+			       ret);
+			return;
+		}
 	}
 
 	if (gpmc_cs_request(gpmc_cfg->cs, SZ_16M, &cs_mem_base) < 0) {

..because we have gpmc_cfg always passed to gpmc_smsc911x_init().

Regards,

Tony

#2 lore raw

PATCH 1/1 ARM: OMAP2+: gpmc-smsc911x: only register regulator for first instance

Quoted 27 lines · Tony Lindgren
Quoted 26 lines · Kevin Hilman

commit e4b0b2cbbb (ARM: OMAP2+: gpmc-smsc911x: add required smsc911x regulators) added regulators which are registered during gpmc_smsc911x_init(). However, some platforms (OMAP3/Overo) have more than one instance of the SMSC911x and result in attempting to register the same regulator more than once which causes a panic().

Fix this by only registering the regulator when the platform_data id field is zero, indicating its the first instance.

---
Fix needed for v3.3.
Applies on top of Tony's fixes branch.

 arch/arm/mach-omap2/gpmc-smsc911x.c |   11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)
arch/arm/mach-omap2/gpmc-smsc911x.c +0 -0
index bbb870c..4d6f1c6 100644
@@ -101,10 +101,13 @@ void __init gpmc_smsc911x_init(struct omap_smsc911x_platform_data *board_data)
 
 	gpmc_cfg = board_data;
 
Quoted 7 lines

arch/arm/mach-omap2/gpmc-smsc911x.c void __init gpmc_smsc911x_init(struct omap_smsc911x_platform_data *board_data) · line 104

Quoted 5 lines
arch/arm/mach-omap2/gpmc-smsc911x.c +1 -4
-	ret = platform_device_register(&gpmc_smsc911x_regulator);
-	if (ret < 0) {
-		pr_err("Unable to register smsc911x regulators: %d\n", ret);
-		return;
+	if (!gpmc_cfg) {

Shouldn't this be !gpmc_cfg->id instead..

doh, of course. Updated patch below.

Kevin

Quoted 1 line

From 3c17a6fe6fdcc5e4e33f174c2b0982d71e759cf1 Mon Sep 17 00:00:00 2001

From: Kevin Hilman <[email protected]>
Date: Thu, 1 Mar 2012 12:30:42 -0800
Subject: [PATCH] ARM: OMAP2+: gpmc-smsc911x: only register regulator for
first instance

commit e4b0b2cbbb (ARM: OMAP2+: gpmc-smsc911x: add required smsc911x regulators) added regulators which are registered during gpmc_smsc911x_init(). However, some platforms (OMAP3/Overo) have more than one instance of the SMSC911x and result in attempting to register the same regulator more than once which causes a panic().

Fix this by only registering the regulator when the platform_data id field is zero, indicating its the first instance.

---
 arch/arm/mach-omap2/gpmc-smsc911x.c |   11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)
arch/arm/mach-omap2/gpmc-smsc911x.c +7 -4
index bbb870c..5e5880d 100644
@@ -101,10 +101,13 @@ void __init gpmc_smsc911x_init(struct omap_smsc911x_platform_data *board_data)
 
 	gpmc_cfg = board_data;
 
-	ret = platform_device_register(&gpmc_smsc911x_regulator);
-	if (ret < 0) {
-		pr_err("Unable to register smsc911x regulators: %d\n", ret);
-		return;
+	if (!gpmc_cfg->id) {
+		ret = platform_device_register(&gpmc_smsc911x_regulator);
+		if (ret < 0) {
+			pr_err("Unable to register smsc911x regulators: %d\n",
+			       ret);
+			return;
+		}
 	}
 
 	if (gpmc_cs_request(gpmc_cfg->cs, SZ_16M, &cs_mem_base) < 0) {
Signature · 1 line
1.7.9.2
maintainer
#3 lore raw

PATCH 1/1 ARM: OMAP2+: gpmc-smsc911x: only register regulator for first instance

Quoted 37 lines · Kevin Hilman
Quoted 27 lines · Tony Lindgren
Quoted 26 lines · Kevin Hilman

commit e4b0b2cbbb (ARM: OMAP2+: gpmc-smsc911x: add required smsc911x regulators) added regulators which are registered during gpmc_smsc911x_init(). However, some platforms (OMAP3/Overo) have more than one instance of the SMSC911x and result in attempting to register the same regulator more than once which causes a panic().

Fix this by only registering the regulator when the platform_data id field is zero, indicating its the first instance.

---
Fix needed for v3.3.
Applies on top of Tony's fixes branch.

 arch/arm/mach-omap2/gpmc-smsc911x.c |   11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)
arch/arm/mach-omap2/gpmc-smsc911x.c +0 -0
index bbb870c..4d6f1c6 100644
@@ -101,10 +101,13 @@ void __init gpmc_smsc911x_init(struct omap_smsc911x_platform_data *board_data)
 
 	gpmc_cfg = board_data;
 
Quoted 7 lines

arch/arm/mach-omap2/gpmc-smsc911x.c void __init gpmc_smsc911x_init(struct omap_smsc911x_platform_data *board_data)

Quoted 5 lines
arch/arm/mach-omap2/gpmc-smsc911x.c +1 -4
-	ret = platform_device_register(&gpmc_smsc911x_regulator);
-	if (ret < 0) {
-		pr_err("Unable to register smsc911x regulators: %d\n", ret);
-		return;
+	if (!gpmc_cfg) {

Shouldn't this be !gpmc_cfg->id instead..

Quoted 1 line

doh, of course. Updated patch below.

Thanks, applying into fixes.

Regards,

Tony

#4 lore raw

PATCH 1/1 ARM: OMAP2+: gpmc-smsc911x: only register regulator for first instance

In reply to Kevin Hilman
Quoted 11 lines · Kevin Hilman

commit e4b0b2cbbb (ARM: OMAP2+: gpmc-smsc911x: add required smsc911x regulators) added regulators which are registered during gpmc_smsc911x_init(). However, some platforms (OMAP3/Overo) have more than one instance of the SMSC911x and result in attempting to register the same regulator more than once which causes a panic().

Fix this by only registering the regulator when the platform_data id field is zero, indicating its the first instance.

It seems that both Olof and I forgot to forward this one to Linus.

If it's ok for you, I'll add it to the fixes branch for v3.4 now and mark it for backporting to v3.3-stable.

Sorry for the inconvenience.

Arnd

#5 lore raw

PATCH 1/1 ARM: OMAP2+: gpmc-smsc911x: only register regulator for first instance

Hi Arnd,

Quoted 10 lines · Arnd Bergmann
Quoted 9 lines · Kevin Hilman

commit e4b0b2cbbb (ARM: OMAP2+: gpmc-smsc911x: add required smsc911x regulators) added regulators which are registered during gpmc_smsc911x_init(). However, some platforms (OMAP3/Overo) have more than one instance of the SMSC911x and result in attempting to register the same regulator more than once which causes a panic().

Fix this by only registering the regulator when the platform_data id field is zero, indicating its the first instance.

Quoted 7 lines
Quoted 2 lines

It seems that both Olof and I forgot to forward this one to Linus.

If it's ok for you, I'll add it to the fixes branch for v3.4 now and mark it for backporting to v3.3-stable.

A slightly different version of this is already in linux-next as commit bb60424af517d6e6148505fb5ef256caa91b5b43.

It was in your 'fixes' branch, and was merged by Olaf from Tony on 3/13:
Merge branch 'fix-smsc911x-regulator' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into fixes

Kevin

#6 lore raw

PATCH 1/1 ARM: OMAP2+: gpmc-smsc911x: only register regulator for first instance

Quoted 15 lines · Kevin Hilman
Quoted 15 lines · Kevin Hilman
Quoted 11 lines

commit e4b0b2cbbb (ARM: OMAP2+: gpmc-smsc911x: add required smsc911x regulators) added regulators which are registered during gpmc_smsc911x_init(). However, some platforms (OMAP3/Overo) have more than one instance of the SMSC911x and result in attempting to register the same regulator more than once which causes a panic().

Fix this by only registering the regulator when the platform_data id field is zero, indicating its the first instance.

It seems that both Olof and I forgot to forward this one to Linus.

Quoted 9 lines
Quoted 2 lines

If it's ok for you, I'll add it to the fixes branch for v3.4 now and mark it for backporting to v3.3-stable.

A slightly different version of this is already in linux-next as commit bb60424af517d6e6148505fb5ef256caa91b5b43.

It was in your 'fixes' branch, and was merged by Olaf from Tony on 3/13:
Merge branch 'fix-smsc911x-regulator' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into fixes

Yes, I know it's in linux-next because I found it in the fixes branch. That is the branch with stuff that should have gone into v3.3 :(

Is the bb60424af version ok? If I add a stable at vger.kernel.org tag in there, it will obviously get a new changeset ID but I was not planning on changing the contents to the version from the mailing list in case that is different.

Arnd

maintainer
#7 lore raw

PATCH 1/1 ARM: OMAP2+: gpmc-smsc911x: only register regulator for first instance

Quoted 26 lines · Arnd Bergmann
Quoted 15 lines · Kevin Hilman
Quoted 15 lines · Kevin Hilman
Quoted 11 lines

commit e4b0b2cbbb (ARM: OMAP2+: gpmc-smsc911x: add required smsc911x regulators) added regulators which are registered during gpmc_smsc911x_init(). However, some platforms (OMAP3/Overo) have more than one instance of the SMSC911x and result in attempting to register the same regulator more than once which causes a panic().

Fix this by only registering the regulator when the platform_data id field is zero, indicating its the first instance.

It seems that both Olof and I forgot to forward this one to Linus.

Quoted 9 lines
Quoted 2 lines

If it's ok for you, I'll add it to the fixes branch for v3.4 now and mark it for backporting to v3.3-stable.

A slightly different version of this is already in linux-next as commit bb60424af517d6e6148505fb5ef256caa91b5b43.

It was in your 'fixes' branch, and was merged by Olaf from Tony on 3/13:
Merge branch 'fix-smsc911x-regulator' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into fixes

Quoted 7 lines

Yes, I know it's in linux-next because I found it in the fixes branch. That is the branch with stuff that should have gone into v3.3 :(

Is the bb60424af version ok? If I add a stable at vger.kernel.org tag in there, it will obviously get a new changeset ID but I was not planning on changing the contents to the version from the mailing list in case that is different.

Let's just keep bb60424af. There are more patches needed to make multiple smsc91x instances work, but we need to hear from people with such boards first. Then those can be tagged for stable.

Regards,

Tony

#8 lore raw

PATCH 1/1 ARM: OMAP2+: gpmc-smsc911x: only register regulator for first instance

Quoted 4 lines · Tony Lindgren

Let's just keep bb60424af. There are more patches needed to make multiple smsc91x instances work, but we need to hear from people with such boards first. Then those can be tagged for stable.

Ok, I'm just putting that into the fixes branch for 3.4 then.

Thanks,

Arnd