Skip to contentSkip to conversation

mmc: implement eMMC4.4 standard HW reset feature

PATCH In review Chuanxiao Dong 2 participants 4 messages Dec 27, 2010 – Jan 11, 2011 MMC, SD and SDIO

lore
Share & tools
lore
#0 lore raw

v6 cover mmc: implement eMMC4.4 standard HW reset feature

Hi all,
This is the version 6 of hardware reset feature implementation. When eMMC card cannot response any command, signal RST_n can help to reset eMMC card.

patch1: enable HW reset capability if card supports.
patch2: do hardware reset if card occurs read/write/erase timeout
patch3: implement hwreset_emmc and reinit_emmc callbacks. In this patch, hwreset_emmc callback will pull up/down the corresponded GPIO line number to trigger RST_n signal.

change log:
1. Move hardware_reset callback to mmc_bus_ops so that all kinds of host controller can use hardware_reset callback to trigger RST_n signal. Different host controller only needs to provide a GPIO line number to this callback.
2. Add GPIO pull up/down part in hardware_reset callback.
3. Remove reset_emmc callback in sdhci_ops.

Thanks
Chuanxiao

#1 lore raw

Hi Chris,
The HW ware reset patches have been pending for several weeks. The first version was sent at Oct.25th, and now I have updated them to be the version 6. So Chris, would you help me on this?. I want to know whether they are acceptable. And I am ready to fix all the comments from the community. Thanks a lot.

-Chuanxiao

Quoted 33 lines

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Chuanxiao Dong
Sent: Monday, December 27, 2010 6:13 PM
To: [email protected]
Cc: [email protected]; [email protected]; [email protected]
Subject: [PATCH v6 0/3]mmc: implement eMMC4.4 standard HW reset feature

Hi all,
This is the version 6 of hardware reset feature implementation. When eMMC card cannot response any command, signal RST_n can help to reset eMMC card.

patch1: enable HW reset capability if card supports.
patch2: do hardware reset if card occurs read/write/erase timeout
patch3: implement hwreset_emmc and reinit_emmc callbacks. In this patch, hwreset_emmc callback will pull up/down the corresponded GPIO line number to trigger RST_n signal.

change log:
1. Move hardware_reset callback to mmc_bus_ops so that all kinds of host controller can use hardware_reset callback to trigger RST_n signal. Different host controller only needs to provide a GPIO line number to this callback.
2. Add GPIO pull up/down part in hardware_reset callback.
3. Remove reset_emmc callback in sdhci_ops.

Thanks
Chuanxiao
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#2 lore raw
In reply to Chuanxiao Dong

Hi Chuanxiao,

Quoted 10 lines · Chuanxiao Dong

Hi all,
This is the version 6 of hardware reset feature implementation. When eMMC card cannot response any command, signal RST_n can help to reset eMMC card.

patch1: enable HW reset capability if card supports.
patch2: do hardware reset if card occurs read/write/erase timeout
patch3: implement hwreset_emmc and reinit_emmc callbacks. In this patch, hwreset_emmc callback will pull up/down the corresponded GPIO line number to trigger RST_n signal.

Sorry for the very late reply. I'm simply not sure what to do about this patchset -- I'm extremely reluctant to touch the once-only programmable bits on the eMMC, and especially to do so silently by default.

Also, where exactly do you assign host->rst_gpio? It isn't assigned to in this patch, so where will it be set? It looks like you could end up strobing GPIO0 if a gpio isn't passed in at all.

I haven't seen any other reports of -ETIMEDOUT from eMMC controllers not responding to CMD0; I wonder if only your controller has this problem, and if that should change how we handle it.

Does anyone else on the list have feedback on how best to proceed?

Thanks,

Signature · 2 lines
Chris Ball   <[email protected]>   <http://printf.net/>
One Laptop Per Child
#3 lore raw

Hi Chris, Thanks for your review! Below is my answer about your concerns.

Quoted 20 lines

-----Original Message-----
From: Chris Ball [mailto:[email protected]]
Sent: Tuesday, January 11, 2011 7:20 AM
To: Dong, Chuanxiao
Cc: [email protected]; [email protected]; [email protected]
Subject: Re: [PATCH v6 0/3]mmc: implement eMMC4.4 standard HW reset feature

Hi Chuanxiao,

Quoted 9 lines · Chuanxiao Dong

Hi all,
This is the version 6 of hardware reset feature implementation. When eMMC card cannot response any command, signal RST_n can help to reset eMMC card.

patch1: enable HW reset capability if card supports.
patch2: do hardware reset if card occurs read/write/erase timeout
patch3: implement hwreset_emmc and reinit_emmc callbacks. In this patch, hwreset_emmc callback will pull up/down the corresponded GPIO line

Quoted 7 lines

number

Quoted 1 line

to trigger RST_n signal.

Sorry for the very late reply. I'm simply not sure what to do about this patchset -- I'm extremely reluctant to touch the once-only programmable bits on the eMMC, and especially to do so silently by default.

Some eMMC4.4 or later new features need to touch the once-only programmable bits...If we support such features, we cannot avoid doing this. So do you think it is better for driver only read such once-only programmable bits? Writing such bits can leave to the manufactory line? Or using a Kconfig option to notice user is better?

Quoted 3 lines

Also, where exactly do you assign host->rst_gpio? It isn't assigned to in this patch, so where will it be set? It looks like you could

Yes. host->rst_gpio was planned to put in host controller driver. But there is a dependence for getting the reset gpio number since different platform may use different gpios. I will send it out with my host controller support in the next submission for your review.

Quoted 1 line

end up strobing GPIO0 if a gpio isn't passed in at all.

Yes. If the rst_gpio was initialized by -ENODEV during host probing by default, this problem will be gone.

Quoted 4 lines

I haven't seen any other reports of -ETIMEDOUT from eMMC controllers not responding to CMD0; I wonder if only your controller has this problem, and if that should change how we handle it.

My host controller can also responding to CMD0. I am not sure if there will happen such scenario: eMMC card is in some error state and cannot respond any command in case during read/write/erase, host controller can still have another way to reset card and make it back to a normal working state. If such scenario occurs, HW reset feature can be used.

Quoted 8 lines

Does anyone else on the list have feedback on how best to proceed?

Thanks,

--
Chris Ball <[email protected]> <http://printf.net/>
One Laptop Per Child