diff for duplicates of <87sjhkjj8m.fsf@ti.com> diff --git a/a/1.txt b/N1/1.txt index 336a090..04208c2 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -19,18 +19,18 @@ Russ Dill <Russ.Dill@ti.com> writes: >>>> >>>> [...] >>>> ->>>> > /* ->>>> > * Initialize smsc911x device connected to the GPMC. Note that we ->>>> > * assume that pin multiplexing is done in the board-*.c file, +>>>> > ?/* +>>>> > ? * Initialize smsc911x device connected to the GPMC. Note that we +>>>> > ? * assume that pin multiplexing is done in the board-*.c file, >>>> > @@ -55,6 +101,12 @@ void __init gpmc_smsc911x_init(struct omap_smsc911x_platform_data *board_data) >>>> > ->>>> > gpmc_cfg = 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; ->>>> > + } +>>>> > + ?ret = platform_device_register(&gpmc_smsc911x_regulator); +>>>> > + ?if (ret < 0) { +>>>> > + ? ? ? ? ?pr_err("Unable to register smsc911x regulators: %d\n", ret); +>>>> > + ? ? ? ? ?return; +>>>> > + ?} >>>> > + >>>> >>>> Boards that have more than one instance of the smsc911x (OMAP3/Overo) @@ -49,56 +49,56 @@ Russ Dill <Russ.Dill@ti.com> writes: >>>> >>>> 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 +>>>> 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 +>>>> the same regulator more than once which causes a panic(). ?Fix this by >>>> tracking the regulator registration ensuring only a single device is >>>> registered. >>>> >>>> Cc: Matt Porter <mporter@ti.com> >>>> Signed-off-by: Kevin Hilman <khilman@ti.com> >>>> --- ->>>> arch/arm/mach-omap2/gpmc-smsc911x.c | 14 ++++++++++---- ->>>> 1 file changed, 10 insertions(+), 4 deletions(-) +>>>> ?arch/arm/mach-omap2/gpmc-smsc911x.c | ? 14 ++++++++++---- +>>>> ?1 file changed, 10 insertions(+), 4 deletions(-) >>>> >>>> diff --git a/arch/arm/mach-omap2/gpmc-smsc911x.c b/arch/arm/mach-omap2/gpmc-smsc911x.c >>>> index bbb870c..95e6c7d 100644 >>>> --- a/arch/arm/mach-omap2/gpmc-smsc911x.c >>>> +++ b/arch/arm/mach-omap2/gpmc-smsc911x.c >>>> @@ -88,6 +88,8 @@ static struct platform_device gpmc_smsc911x_regulator = { ->>>> }, ->>>> }; +>>>> ? ? ?}, +>>>> ?}; >>>> >>>> +static bool regulator_registered; >>>> + ->>>> /* ->>>> * Initialize smsc911x device connected to the GPMC. Note that we ->>>> * assume that pin multiplexing is done in the board-*.c file, +>>>> ?/* +>>>> ? * Initialize smsc911x device connected to the GPMC. Note that we +>>>> ? * assume that pin multiplexing is done in the board-*.c file, >>>> @@ -101,10 +103,14 @@ void __init gpmc_smsc911x_init(struct omap_smsc911x_platform_data *board_data) >>>> ->>>> gpmc_cfg = 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 (!regulator_registered) { ->>>> + ret = platform_device_register(&gpmc_smsc911x_regulator); ->>>> + if (ret < 0) { ->>>> + pr_err("Unable to register smsc911x regulators: %d\n", ->>>> + ret); ->>>> + return; ->>>> + } ->>>> + regulator_registered = true; +>>>> - ? ?ret = platform_device_register(&gpmc_smsc911x_regulator); +>>>> - ? ?if (ret < 0) { +>>>> - ? ? ? ? ? ?pr_err("Unable to register smsc911x regulators: %d\n", ret); +>>>> - ? ? ? ? ? ?return; +>>>> + ? ?if (!regulator_registered) { +>>>> + ? ? ? ? ? ?ret = platform_device_register(&gpmc_smsc911x_regulator); +>>>> + ? ? ? ? ? ?if (ret < 0) { +>>>> + ? ? ? ? ? ? ? ? ? ?pr_err("Unable to register smsc911x regulators: %d\n", +>>>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ret); +>>>> + ? ? ? ? ? ? ? ? ? ?return; +>>>> + ? ? ? ? ? ?} +>>>> + ? ? ? ? ? ?regulator_registered = true; >>> >>> Wow, this is quite a hack. Is the regulator part of the SMSC911x >>> device or is it outside ? If it's outside the SMSC91xx (which I >>> believe it is) there should be a regulator driver instead of this ->>> hack. For boards which don't provide such a regulator (and tie the +>>> hack. ?For boards which don't provide such a regulator (and tie the >>> supply pin to some constant voltage source) there should be a constant >>> regulator supplying the pin. But this patch is quite hacky. >> ->> Are you referring to my patch or to the original $SUBJECT patch? It's +>> Are you referring to my patch or to the original $SUBJECT patch? ?It's >> not terribly clear. >> >> My patch doesn't add any regulators, it just fixes a bug when this init diff --git a/a/content_digest b/N1/content_digest index 42194fd..9d8fb1a 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -3,17 +3,10 @@ "ref\020120301204553.GA21841@legolas.emea.dhcp.ti.com\0" "ref\087pqcqnc7u.fsf@ti.com\0" "ref\0CA+Bv8XaJqL1L8F-n6skY7dHn1XAdDLRKaRjw0deLeoQ5Ao0Fhg@mail.gmail.com\0" - "From\0Kevin Hilman <khilman@ti.com>\0" - "Subject\0Re: [PATCH v3] ARM: OMAP2+: gpmc-smsc911x: add required smsc911x regulators\0" + "From\0khilman@ti.com (Kevin Hilman)\0" + "Subject\0[PATCH v3] ARM: OMAP2+: gpmc-smsc911x: add required smsc911x regulators\0" "Date\0Wed, 07 Mar 2012 11:36:57 -0800\0" - "To\0Russ Dill <Russ.Dill@ti.com>\0" - "Cc\0balbi@ti.com" - Matt Porter <mporter@ti.com> - Tony Lindgren <tony@atomide.com> - Russell King <linux@arm.linux.org.uk> - Linux OMAP List <linux-omap@vger.kernel.org> - Linux ARM Kernel List <linux-arm-kernel@lists.infradead.org> - " linux-kernel@vger.kernel.org\0" + "To\0linux-arm-kernel@lists.infradead.org\0" "\00:1\0" "b\0" "Hi Russ,\n" @@ -37,18 +30,18 @@ ">>>>\n" ">>>> [...]\n" ">>>>\n" - ">>>> > \302\240/*\n" - ">>>> > \302\240 * Initialize smsc911x device connected to the GPMC. Note that we\n" - ">>>> > \302\240 * assume that pin multiplexing is done in the board-*.c file,\n" + ">>>> > ?/*\n" + ">>>> > ? * Initialize smsc911x device connected to the GPMC. Note that we\n" + ">>>> > ? * assume that pin multiplexing is done in the board-*.c file,\n" ">>>> > @@ -55,6 +101,12 @@ void __init gpmc_smsc911x_init(struct omap_smsc911x_platform_data *board_data)\n" ">>>> >\n" - ">>>> > \302\240 \302\240gpmc_cfg = board_data;\n" + ">>>> > ? ?gpmc_cfg = board_data;\n" ">>>> >\n" - ">>>> > + \302\240ret = platform_device_register(&gpmc_smsc911x_regulator);\n" - ">>>> > + \302\240if (ret < 0) {\n" - ">>>> > + \302\240 \302\240 \302\240 \302\240 \302\240pr_err(\"Unable to register smsc911x regulators: %d\\n\", ret);\n" - ">>>> > + \302\240 \302\240 \302\240 \302\240 \302\240return;\n" - ">>>> > + \302\240}\n" + ">>>> > + ?ret = platform_device_register(&gpmc_smsc911x_regulator);\n" + ">>>> > + ?if (ret < 0) {\n" + ">>>> > + ? ? ? ? ?pr_err(\"Unable to register smsc911x regulators: %d\\n\", ret);\n" + ">>>> > + ? ? ? ? ?return;\n" + ">>>> > + ?}\n" ">>>> > +\n" ">>>>\n" ">>>> Boards that have more than one instance of the smsc911x (OMAP3/Overo)\n" @@ -67,56 +60,56 @@ ">>>>\n" ">>>> commit e4b0b2cbbb (ARM: OMAP2+: gpmc-smsc911x: add required smsc911x\n" ">>>> regulators) added regulators which are registered during\n" - ">>>> gpmc_smsc911x_init(). \302\240However, some platforms (OMAP3/Overo) have more\n" + ">>>> gpmc_smsc911x_init(). ?However, some platforms (OMAP3/Overo) have more\n" ">>>> than one instance of the SMSC911x and result in attempting to register\n" - ">>>> the same regulator more than once which causes a panic(). \302\240Fix this by\n" + ">>>> the same regulator more than once which causes a panic(). ?Fix this by\n" ">>>> tracking the regulator registration ensuring only a single device is\n" ">>>> registered.\n" ">>>>\n" ">>>> Cc: Matt Porter <mporter@ti.com>\n" ">>>> Signed-off-by: Kevin Hilman <khilman@ti.com>\n" ">>>> ---\n" - ">>>> \302\240arch/arm/mach-omap2/gpmc-smsc911x.c | \302\240 14 ++++++++++----\n" - ">>>> \302\2401 file changed, 10 insertions(+), 4 deletions(-)\n" + ">>>> ?arch/arm/mach-omap2/gpmc-smsc911x.c | ? 14 ++++++++++----\n" + ">>>> ?1 file changed, 10 insertions(+), 4 deletions(-)\n" ">>>>\n" ">>>> diff --git a/arch/arm/mach-omap2/gpmc-smsc911x.c b/arch/arm/mach-omap2/gpmc-smsc911x.c\n" ">>>> index bbb870c..95e6c7d 100644\n" ">>>> --- a/arch/arm/mach-omap2/gpmc-smsc911x.c\n" ">>>> +++ b/arch/arm/mach-omap2/gpmc-smsc911x.c\n" ">>>> @@ -88,6 +88,8 @@ static struct platform_device gpmc_smsc911x_regulator = {\n" - ">>>> \302\240 \302\240 \302\240},\n" - ">>>> \302\240};\n" + ">>>> ? ? ?},\n" + ">>>> ?};\n" ">>>>\n" ">>>> +static bool regulator_registered;\n" ">>>> +\n" - ">>>> \302\240/*\n" - ">>>> \302\240 * Initialize smsc911x device connected to the GPMC. Note that we\n" - ">>>> \302\240 * assume that pin multiplexing is done in the board-*.c file,\n" + ">>>> ?/*\n" + ">>>> ? * Initialize smsc911x device connected to the GPMC. Note that we\n" + ">>>> ? * assume that pin multiplexing is done in the board-*.c file,\n" ">>>> @@ -101,10 +103,14 @@ void __init gpmc_smsc911x_init(struct omap_smsc911x_platform_data *board_data)\n" ">>>>\n" - ">>>> \302\240 \302\240 \302\240gpmc_cfg = board_data;\n" + ">>>> ? ? ?gpmc_cfg = board_data;\n" ">>>>\n" - ">>>> - \302\240 \302\240ret = platform_device_register(&gpmc_smsc911x_regulator);\n" - ">>>> - \302\240 \302\240if (ret < 0) {\n" - ">>>> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240pr_err(\"Unable to register smsc911x regulators: %d\\n\", ret);\n" - ">>>> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240return;\n" - ">>>> + \302\240 \302\240if (!regulator_registered) {\n" - ">>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240ret = platform_device_register(&gpmc_smsc911x_regulator);\n" - ">>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240if (ret < 0) {\n" - ">>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240pr_err(\"Unable to register smsc911x regulators: %d\\n\",\n" - ">>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 ret);\n" - ">>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240return;\n" - ">>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240}\n" - ">>>> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240regulator_registered = true;\n" + ">>>> - ? ?ret = platform_device_register(&gpmc_smsc911x_regulator);\n" + ">>>> - ? ?if (ret < 0) {\n" + ">>>> - ? ? ? ? ? ?pr_err(\"Unable to register smsc911x regulators: %d\\n\", ret);\n" + ">>>> - ? ? ? ? ? ?return;\n" + ">>>> + ? ?if (!regulator_registered) {\n" + ">>>> + ? ? ? ? ? ?ret = platform_device_register(&gpmc_smsc911x_regulator);\n" + ">>>> + ? ? ? ? ? ?if (ret < 0) {\n" + ">>>> + ? ? ? ? ? ? ? ? ? ?pr_err(\"Unable to register smsc911x regulators: %d\\n\",\n" + ">>>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ret);\n" + ">>>> + ? ? ? ? ? ? ? ? ? ?return;\n" + ">>>> + ? ? ? ? ? ?}\n" + ">>>> + ? ? ? ? ? ?regulator_registered = true;\n" ">>>\n" ">>> Wow, this is quite a hack. Is the regulator part of the SMSC911x\n" ">>> device or is it outside ? If it's outside the SMSC91xx (which I\n" ">>> believe it is) there should be a regulator driver instead of this\n" - ">>> hack. \302\240For boards which don't provide such a regulator (and tie the\n" + ">>> hack. ?For boards which don't provide such a regulator (and tie the\n" ">>> supply pin to some constant voltage source) there should be a constant\n" ">>> regulator supplying the pin. But this patch is quite hacky.\n" ">>\n" - ">> Are you referring to my patch or to the original $SUBJECT patch? \302\240It's\n" + ">> Are you referring to my patch or to the original $SUBJECT patch? ?It's\n" ">> not terribly clear.\n" ">>\n" ">> My patch doesn't add any regulators, it just fixes a bug when this init\n" @@ -204,4 +197,4 @@ "[ 0.704711] [<c06068ac>] (kernel_init+0x8c/0x130) from [<c000e850>] (kernel_thread_exit+0x0/0x8)\n" [ 0.713897] gpmc_smsc911x_init: Unable to register smsc911x regulators: -17 -7cd7f94a014bf7601fb5a13eb67f7e7b891c489d51116c47b840a7524f007401 +78c32e44e19ef533c522d3430f5fac5cd448f9da6bc7949b82b6e01d1782d4f5
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.