diff mbox

OMAP2/3: mmc-twl4030: Free up MMC regulators while cleaning up

Message ID 1245762070-13302-1-git-send-email-ext-roger.quadros@nokia.com (mailing list archive)
State Accepted
Commit 8b28d125dcfa4a250a897baa2425d1f30dd56219
Headers show

Commit Message

Roger Quadros June 23, 2009, 1:01 p.m. UTC
twl_mmc_cleanup() must free up the regulators that were
allocated by twl_mmc_late_init().
This eliminates the below error when 'omap_hsmmc' module is
repeatedly loaded and unloaded.

"sysfs: cannot create duplicate filename '/devices/platform
 /mmci-omap-hs.0/microamps_requested_vmmc'"

Signed-off-by: Roger Quadros <ext-roger.quadros@nokia.com>
---
 arch/arm/mach-omap2/mmc-twl4030.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

Comments

Roger Quadros Aug. 5, 2009, 3:25 p.m. UTC | #1
Tony,

any comments on this?

regards,
-roger

ext Roger Quadros wrote:
> twl_mmc_cleanup() must free up the regulators that were
> allocated by twl_mmc_late_init().
> This eliminates the below error when 'omap_hsmmc' module is
> repeatedly loaded and unloaded.
> 
> "sysfs: cannot create duplicate filename '/devices/platform
>  /mmci-omap-hs.0/microamps_requested_vmmc'"
> 
> Signed-off-by: Roger Quadros <ext-roger.quadros@nokia.com>
> ---
>  arch/arm/mach-omap2/mmc-twl4030.c |    6 ++++++
>  1 files changed, 6 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/mmc-twl4030.c b/arch/arm/mach-omap2/mmc-twl4030.c
> index 06b252f..0007115 100644
> --- a/arch/arm/mach-omap2/mmc-twl4030.c
> +++ b/arch/arm/mach-omap2/mmc-twl4030.c
> @@ -119,6 +119,7 @@ static int twl_mmc_late_init(struct device *dev)
>  				if (i != 0)
>  					break;
>  				ret = PTR_ERR(reg);
> +				hsmmc[i].vcc = NULL;
>  				goto err;
>  			}
>  			hsmmc[i].vcc = reg;
> @@ -165,8 +166,13 @@ done:
>  static void twl_mmc_cleanup(struct device *dev)
>  {
>  	struct omap_mmc_platform_data *mmc = dev->platform_data;
> +	int i;
>  
>  	gpio_free(mmc->slots[0].switch_pin);
> +	for(i = 0; i < ARRAY_SIZE(hsmmc); i++) {
> +		regulator_put(hsmmc[i].vcc);
> +		regulator_put(hsmmc[i].vcc_aux);
> +	}
>  }
>  
>  #ifdef CONFIG_PM

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Tony Lindgren Aug. 6, 2009, 6:48 a.m. UTC | #2
* Roger Quadros <ext-roger.quadros@nokia.com> [090805 18:25]:
> Tony,
>
> any comments on this?

Thanks for pinging me, will add it to my omap-fixes queue.

Tony

> regards,
> -roger
>
> ext Roger Quadros wrote:
>> twl_mmc_cleanup() must free up the regulators that were
>> allocated by twl_mmc_late_init().
>> This eliminates the below error when 'omap_hsmmc' module is
>> repeatedly loaded and unloaded.
>>
>> "sysfs: cannot create duplicate filename '/devices/platform
>>  /mmci-omap-hs.0/microamps_requested_vmmc'"
>>
>> Signed-off-by: Roger Quadros <ext-roger.quadros@nokia.com>
>> ---
>>  arch/arm/mach-omap2/mmc-twl4030.c |    6 ++++++
>>  1 files changed, 6 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/mach-omap2/mmc-twl4030.c b/arch/arm/mach-omap2/mmc-twl4030.c
>> index 06b252f..0007115 100644
>> --- a/arch/arm/mach-omap2/mmc-twl4030.c
>> +++ b/arch/arm/mach-omap2/mmc-twl4030.c
>> @@ -119,6 +119,7 @@ static int twl_mmc_late_init(struct device *dev)
>>  				if (i != 0)
>>  					break;
>>  				ret = PTR_ERR(reg);
>> +				hsmmc[i].vcc = NULL;
>>  				goto err;
>>  			}
>>  			hsmmc[i].vcc = reg;
>> @@ -165,8 +166,13 @@ done:
>>  static void twl_mmc_cleanup(struct device *dev)
>>  {
>>  	struct omap_mmc_platform_data *mmc = dev->platform_data;
>> +	int i;
>>   	gpio_free(mmc->slots[0].switch_pin);
>> +	for(i = 0; i < ARRAY_SIZE(hsmmc); i++) {
>> +		regulator_put(hsmmc[i].vcc);
>> +		regulator_put(hsmmc[i].vcc_aux);
>> +	}
>>  }
>>   #ifdef CONFIG_PM
>
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Tony Lindgren Aug. 6, 2009, 6:49 a.m. UTC | #3
This patch has been applied to the linux-omap
by youw fwiendly patch wobot.

Branch in linux-omap: omap-fixes

Initial commit ID (Likely to change): 8b28d125dcfa4a250a897baa2425d1f30dd56219

PatchWorks
http://patchwork.kernel.org/patch/31970/

Git (Likely to change, and takes a while to get mirrored)
http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=commit;h=8b28d125dcfa4a250a897baa2425d1f30dd56219


--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/arm/mach-omap2/mmc-twl4030.c b/arch/arm/mach-omap2/mmc-twl4030.c
index 06b252f..0007115 100644
--- a/arch/arm/mach-omap2/mmc-twl4030.c
+++ b/arch/arm/mach-omap2/mmc-twl4030.c
@@ -119,6 +119,7 @@  static int twl_mmc_late_init(struct device *dev)
 				if (i != 0)
 					break;
 				ret = PTR_ERR(reg);
+				hsmmc[i].vcc = NULL;
 				goto err;
 			}
 			hsmmc[i].vcc = reg;
@@ -165,8 +166,13 @@  done:
 static void twl_mmc_cleanup(struct device *dev)
 {
 	struct omap_mmc_platform_data *mmc = dev->platform_data;
+	int i;
 
 	gpio_free(mmc->slots[0].switch_pin);
+	for(i = 0; i < ARRAY_SIZE(hsmmc); i++) {
+		regulator_put(hsmmc[i].vcc);
+		regulator_put(hsmmc[i].vcc_aux);
+	}
 }
 
 #ifdef CONFIG_PM