<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/mmc, branch tegra</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>mmc: core: add eMMC hardware reset support</title>
<updated>2017-03-31T08:16:31+00:00</updated>
<author>
<name>Adrian Hunter</name>
<email>adrian.hunter@intel.com</email>
</author>
<published>2011-08-29T13:42:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e5ad0688a6b46f62664bdaad854311017bd039c4'/>
<id>e5ad0688a6b46f62664bdaad854311017bd039c4</id>
<content type='text'>
eMMC's may have a hardware reset line.  This patch provides a
host controller operation to implement hardware reset and
a function to reset and reinitialize the card.  Also, for MMC,
the reset is always performed before initialization.

The host must set the new host capability MMC_CAP_HW_RESET
to enable hardware reset.

Signed-off-by: Adrian Hunter &lt;adrian.hunter@intel.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
(cherry picked from commit b2499518b5ad7e28bb3ed348fd3f370eeb1e36c0)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
eMMC's may have a hardware reset line.  This patch provides a
host controller operation to implement hardware reset and
a function to reset and reinitialize the card.  Also, for MMC,
the reset is always performed before initialization.

The host must set the new host capability MMC_CAP_HW_RESET
to enable hardware reset.

Signed-off-by: Adrian Hunter &lt;adrian.hunter@intel.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
(cherry picked from commit b2499518b5ad7e28bb3ed348fd3f370eeb1e36c0)
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: sdhci: handle command timeout after transfer complete interrupt</title>
<updated>2016-06-22T13:29:35+00:00</updated>
<author>
<name>Nicolas Serafini</name>
<email>nicolas.serafini@sensefly.com</email>
</author>
<published>2016-04-28T09:24:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=887872511354320f6e5000a390677c049033d764'/>
<id>887872511354320f6e5000a390677c049033d764</id>
<content type='text'>
On a tegra3 platform with Hynix eMMC we can observe that sometimes we
receive a command timeout after a transfer complete interrupt on a
multiple block read request.

Here is the output using MMC_DEBUG and ftrace.

When it works:

tegra_sdhci_set_clock: tegra_sdhci_set_clock mmc0 0 enabled=1
tegra_sdhci_set_clock: tegra_sdhci_set_clock mmc0 52000000 enabled=0
__mmc_start_req: mmc0: starting CMD18 arg 00a73044 flags 000000b5
__mmc_start_req: mmc0:    blksz 512 blocks 2 flags 00000200 tsac 150 ms nsac 1000
__mmc_start_req: mmc0:    CMD12 arg 00000000 flags 0000049d
sdhci_irq: sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
sdhci_finish_command: sdhci_finish_command:1075
sdhci_irq: sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000002
sdhci_tasklet_finish: sdhci_tasklet_finish:2064

When we have the error:

tegra_sdhci_set_clock: tegra_sdhci_set_clock mmc0 0 enabled=1
tegra_sdhci_set_clock: tegra_sdhci_set_clock mmc0 52000000 enabled=0
__mmc_start_req: mmc0: starting CMD18 arg 00a63d12 flags 000000b5
__mmc_start_req: mmc0:    blksz 512 blocks 2 flags 00000200 tsac 150 ms nsac 1000
__mmc_start_req: mmc0:    CMD12 arg 00000000 flags 0000049d
sdhci_irq: sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
sdhci_finish_command: sdhci_finish_command:1075
sdhci_irq: sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00018000
------NOW THE REQUEST BLOCK UNTIL TIMEOUT------

We can see that when it works the multiple read blocks command stopped by
the CMD12 receive two interrupts. The first is the Transfer complete
interrupt (SDHCI_INT_RESPONSE) and just after the Block Gap Event
interrupt (SDHCI_INT_DATA_END). In this case the command is finished and
the data is finished too.

In the bad case instead of receiving SDHCI_INT_DATA_END we receive a
command timeout error (SDHCI_INT_TIMEOUT) but command was already
finished by the SDHCI_INT_RESPONSE so not more command is waiting and the
driver wait until the timeout timer end because this case is not managed.

Signed-off-by: Nicolas Serafini &lt;nicolas.serafini@sensefly.com&gt;
Acked-by: Marcel Ziswiler &lt;marcel.ziswiler@toradex.com&gt;
Acked-by: Dominik Sliwa &lt;dominik.sliwa@toradex.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
On a tegra3 platform with Hynix eMMC we can observe that sometimes we
receive a command timeout after a transfer complete interrupt on a
multiple block read request.

Here is the output using MMC_DEBUG and ftrace.

When it works:

tegra_sdhci_set_clock: tegra_sdhci_set_clock mmc0 0 enabled=1
tegra_sdhci_set_clock: tegra_sdhci_set_clock mmc0 52000000 enabled=0
__mmc_start_req: mmc0: starting CMD18 arg 00a73044 flags 000000b5
__mmc_start_req: mmc0:    blksz 512 blocks 2 flags 00000200 tsac 150 ms nsac 1000
__mmc_start_req: mmc0:    CMD12 arg 00000000 flags 0000049d
sdhci_irq: sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
sdhci_finish_command: sdhci_finish_command:1075
sdhci_irq: sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000002
sdhci_tasklet_finish: sdhci_tasklet_finish:2064

When we have the error:

tegra_sdhci_set_clock: tegra_sdhci_set_clock mmc0 0 enabled=1
tegra_sdhci_set_clock: tegra_sdhci_set_clock mmc0 52000000 enabled=0
__mmc_start_req: mmc0: starting CMD18 arg 00a63d12 flags 000000b5
__mmc_start_req: mmc0:    blksz 512 blocks 2 flags 00000200 tsac 150 ms nsac 1000
__mmc_start_req: mmc0:    CMD12 arg 00000000 flags 0000049d
sdhci_irq: sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00000001
sdhci_finish_command: sdhci_finish_command:1075
sdhci_irq: sdhci [sdhci_irq()]: *** mmc0 got interrupt: 0x00018000
------NOW THE REQUEST BLOCK UNTIL TIMEOUT------

We can see that when it works the multiple read blocks command stopped by
the CMD12 receive two interrupts. The first is the Transfer complete
interrupt (SDHCI_INT_RESPONSE) and just after the Block Gap Event
interrupt (SDHCI_INT_DATA_END). In this case the command is finished and
the data is finished too.

In the bad case instead of receiving SDHCI_INT_DATA_END we receive a
command timeout error (SDHCI_INT_TIMEOUT) but command was already
finished by the SDHCI_INT_RESPONSE so not more command is waiting and the
driver wait until the timeout timer end because this case is not managed.

Signed-off-by: Nicolas Serafini &lt;nicolas.serafini@sensefly.com&gt;
Acked-by: Marcel Ziswiler &lt;marcel.ziswiler@toradex.com&gt;
Acked-by: Dominik Sliwa &lt;dominik.sliwa@toradex.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: host: sdhci: fix suspend/resume issue</title>
<updated>2016-06-22T13:29:34+00:00</updated>
<author>
<name>Marcel Ziswiler</name>
<email>marcel.ziswiler@toradex.com</email>
</author>
<published>2016-04-24T14:49:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=0e6396ed35ce5ddf8825298f08faa4bb598d2750'/>
<id>0e6396ed35ce5ddf8825298f08faa4bb598d2750</id>
<content type='text'>
This fixes the following eMMC suspend/resume issue as seen on
Colibri T30 1GB IT V1.1A:

[   75.479664] mmcblk0: error -110 transferring data, sector 287240, nr 2,
 cmd response 0x900, card status 0xc00
[   75.580923] end_request: I/O error, dev mmcblk0, sector 287240
[   75.586782] Buffer I/O error on device mmcblk0p2, logical block 123140
[   75.593313] lost page write due to I/O error on mmcblk0p2

(fixes an issue probably caused by a merge conflict introduced by
commit 7f7b042a978edfc6c7d1e14ec9c6ec01ffcc284b)

Signed-off-by: Mirza Krak &lt;mirza.krak@hostmobility.com&gt;
Signed-off-by: Marcel Ziswiler &lt;marcel.ziswiler@toradex.com&gt;
Acked-by: Dominik Sliwa &lt;dominik.sliwa@toradex.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This fixes the following eMMC suspend/resume issue as seen on
Colibri T30 1GB IT V1.1A:

[   75.479664] mmcblk0: error -110 transferring data, sector 287240, nr 2,
 cmd response 0x900, card status 0xc00
[   75.580923] end_request: I/O error, dev mmcblk0, sector 287240
[   75.586782] Buffer I/O error on device mmcblk0p2, logical block 123140
[   75.593313] lost page write due to I/O error on mmcblk0p2

(fixes an issue probably caused by a merge conflict introduced by
commit 7f7b042a978edfc6c7d1e14ec9c6ec01ffcc284b)

Signed-off-by: Mirza Krak &lt;mirza.krak@hostmobility.com&gt;
Signed-off-by: Marcel Ziswiler &lt;marcel.ziswiler@toradex.com&gt;
Acked-by: Dominik Sliwa &lt;dominik.sliwa@toradex.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: core: Disable HPI for certain Hynix eMMC cards</title>
<updated>2015-10-14T14:11:59+00:00</updated>
<author>
<name>Marcel Ziswiler</name>
<email>marcel.ziswiler@toradex.com</email>
</author>
<published>2015-10-14T14:11:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=332211ed906a6d3c7ffb0f3cae1865348aadcd14'/>
<id>332211ed906a6d3c7ffb0f3cae1865348aadcd14</id>
<content type='text'>
Certain Hynix eMMC 4.41 cards might get broken when HPI feature is used
and hence this patch disables the HPI feature for such buggy cards.

As some of the other features like BKOPs/Cache/Sanitize are dependent on
HPI feature, those features would also get disabled if HPI is disabled.

Change-Id: I6a638ce089cbd977122e47aecb721bc3f0adf7b0
Signed-off-by: Pratibhasagar V &lt;pratibha@codeaurora.org&gt;
Signed-off-by: Subhash Jadavani &lt;subhashj@codeaurora.org&gt;

Fix ported from the following Android MSM kernel commit:

https://www.codeaurora.org/cgit/quic/la/kernel/msm/commit/?id=84af3731019921a28d595dbf6cbf00539706a42c
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Certain Hynix eMMC 4.41 cards might get broken when HPI feature is used
and hence this patch disables the HPI feature for such buggy cards.

As some of the other features like BKOPs/Cache/Sanitize are dependent on
HPI feature, those features would also get disabled if HPI is disabled.

Change-Id: I6a638ce089cbd977122e47aecb721bc3f0adf7b0
Signed-off-by: Pratibhasagar V &lt;pratibha@codeaurora.org&gt;
Signed-off-by: Subhash Jadavani &lt;subhashj@codeaurora.org&gt;

Fix ported from the following Android MSM kernel commit:

https://www.codeaurora.org/cgit/quic/la/kernel/msm/commit/?id=84af3731019921a28d595dbf6cbf00539706a42c
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: sdhci: handle busy-end interrupt during command</title>
<updated>2015-10-10T22:09:01+00:00</updated>
<author>
<name>Chanho Min</name>
<email>chanho.min@lge.com</email>
</author>
<published>2014-08-30T03:40:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=891f3ac4478238d6ff890a3bd5c8536e7ef91d5e'/>
<id>891f3ac4478238d6ff890a3bd5c8536e7ef91d5e</id>
<content type='text'>
It is fully legal for a controller to start handling busy-end interrupt
before it has signaled that the command has completed. So make sure
we do things in the proper order, Or it results that command interrupt
is ignored so it can cause unexpected operations. This is founded at some
toshiba emmc with the bellow warning.

"mmc0: Got command interrupt 0x00000001 even though
no command operation was in progress."

This issue has been also reported by Youssef TRIKI:
It is not specific to Toshiba devices, and happens with eMMC devices
as well as SD card which support Auto-CMD12 rather than CMD23.

Also, similar patch is submitted by:
Gwendal Grignou &lt;gwendal@chromium.org&gt;

Changes since v1:
 Fixed conflict with the next of git.linaro.org/people/ulf.hansson/mmc.git
 and Tested if issue is fixed again.

Signed-off-by: Hankyung Yu &lt;hankyung.yu@lge.com&gt;
Signed-off-by: Chanho Min &lt;chanho.min@lge.com&gt;
Tested-by: Youssef TRIKI &lt;youssef.triki@st.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
(cherry picked from commit e99783a45220a2c5f5a598e0e81213ecf2dbcf2f)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It is fully legal for a controller to start handling busy-end interrupt
before it has signaled that the command has completed. So make sure
we do things in the proper order, Or it results that command interrupt
is ignored so it can cause unexpected operations. This is founded at some
toshiba emmc with the bellow warning.

"mmc0: Got command interrupt 0x00000001 even though
no command operation was in progress."

This issue has been also reported by Youssef TRIKI:
It is not specific to Toshiba devices, and happens with eMMC devices
as well as SD card which support Auto-CMD12 rather than CMD23.

Also, similar patch is submitted by:
Gwendal Grignou &lt;gwendal@chromium.org&gt;

Changes since v1:
 Fixed conflict with the next of git.linaro.org/people/ulf.hansson/mmc.git
 and Tested if issue is fixed again.

Signed-off-by: Hankyung Yu &lt;hankyung.yu@lge.com&gt;
Signed-off-by: Chanho Min &lt;chanho.min@lge.com&gt;
Tested-by: Youssef TRIKI &lt;youssef.triki@st.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
(cherry picked from commit e99783a45220a2c5f5a598e0e81213ecf2dbcf2f)
</pre>
</div>
</content>
</entry>
<entry>
<title>sdhci : handle busy timeout irq</title>
<updated>2015-10-10T22:08:30+00:00</updated>
<author>
<name>Matthieu CASTET</name>
<email>matthieu.castet@parrot.com</email>
</author>
<published>2014-08-14T14:03:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=784248a0e50058f380e87bacedf38c8eb48b5af2'/>
<id>784248a0e50058f380e87bacedf38c8eb48b5af2</id>
<content type='text'>
When we wait for busy after sending a command, if there is
a timeout, we got SDHCI_INT_DATA_TIMEOUT flags.
Before this commit we got the message :
"Got data interrupt 0x00100000 even though no data  operation was in progress."
and we need to wait 10s that sdhci_timeout_timer expires.

Signed-off-by: Matthieu CASTET &lt;matthieu.castet@parrot.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
(cherry picked from commit c5abd5e8998e20c2e82999670a03f26f1437d744)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When we wait for busy after sending a command, if there is
a timeout, we got SDHCI_INT_DATA_TIMEOUT flags.
Before this commit we got the message :
"Got data interrupt 0x00100000 even though no data  operation was in progress."
and we need to wait 10s that sdhci_timeout_timer expires.

Signed-off-by: Matthieu CASTET &lt;matthieu.castet@parrot.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
(cherry picked from commit c5abd5e8998e20c2e82999670a03f26f1437d744)
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: sdhci: clean up sdio interrupt enable handling</title>
<updated>2015-10-10T22:08:06+00:00</updated>
<author>
<name>Russell King</name>
<email>rmk+kernel@arm.linux.org.uk</email>
</author>
<published>2014-04-25T11:55:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=3bec89bc10881125c5c50f9d4491df399074f523'/>
<id>3bec89bc10881125c5c50f9d4491df399074f523</id>
<content type='text'>
We don't need to change the SDHCI_SDIO_IRQ_ENABLED flag when we're
merely receiving an interrupt - IRQ handling thread in the MMC core
will either re-enable or disable the interrupt via the enable_sdio_irq
callback, which will update this status appropriately.

Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Tested-by: Markus Pargmann &lt;mpa@pengutronix.de&gt;
Tested-by: Stephen Warren &lt;swarren@nvidia.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Signed-off-by: Chris Ball &lt;chris@printf.net&gt;
(cherry picked from commit ef104333a234f66cd13fd16632086a21b90fced6)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We don't need to change the SDHCI_SDIO_IRQ_ENABLED flag when we're
merely receiving an interrupt - IRQ handling thread in the MMC core
will either re-enable or disable the interrupt via the enable_sdio_irq
callback, which will update this status appropriately.

Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Tested-by: Markus Pargmann &lt;mpa@pengutronix.de&gt;
Tested-by: Stephen Warren &lt;swarren@nvidia.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Signed-off-by: Chris Ball &lt;chris@printf.net&gt;
(cherry picked from commit ef104333a234f66cd13fd16632086a21b90fced6)
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: sdhci: clean up interrupt handling</title>
<updated>2015-10-10T22:07:28+00:00</updated>
<author>
<name>Russell King</name>
<email>rmk+kernel@arm.linux.org.uk</email>
</author>
<published>2014-04-25T11:55:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=d84f107b6e4d3cb00e40b3508e1e3562c01e4ca9'/>
<id>d84f107b6e4d3cb00e40b3508e1e3562c01e4ca9</id>
<content type='text'>
sdhci interrupt handling is a mess; there is a lot of code doing very
similar things.  Let's clean this up a bit:

1. set's clear down cmd, data and bus power interrupts in one go - we're
   always going to handle these.
2. use a do { } while () loop for looping while there are pending
   interrupts.
3. group clearing of bits in intmask into one place.

This results in the code becoming simpler and easier to read.

Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Tested-by: Markus Pargmann &lt;mpa@pengutronix.de&gt;
Tested-by: Stephen Warren &lt;swarren@nvidia.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Signed-off-by: Chris Ball &lt;chris@printf.net&gt;
(cherry picked from commit 41005003bcaf4ecfc80e02af01247f2670269816)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
sdhci interrupt handling is a mess; there is a lot of code doing very
similar things.  Let's clean this up a bit:

1. set's clear down cmd, data and bus power interrupts in one go - we're
   always going to handle these.
2. use a do { } while () loop for looping while there are pending
   interrupts.
3. group clearing of bits in intmask into one place.

This results in the code becoming simpler and easier to read.

Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Tested-by: Markus Pargmann &lt;mpa@pengutronix.de&gt;
Tested-by: Stephen Warren &lt;swarren@nvidia.com&gt;
Signed-off-by: Ulf Hansson &lt;ulf.hansson@linaro.org&gt;
Signed-off-by: Chris Ball &lt;chris@printf.net&gt;
(cherry picked from commit 41005003bcaf4ecfc80e02af01247f2670269816)
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: sdhci: check interrupt flags in ISR again</title>
<updated>2015-10-10T19:17:28+00:00</updated>
<author>
<name>Alexander Stein</name>
<email>alexander.stein@systec-electronic.com</email>
</author>
<published>2012-03-14T08:52:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=29f0d4ea185e4bbf3240aea647ddd9a04b822743'/>
<id>29f0d4ea185e4bbf3240aea647ddd9a04b822743</id>
<content type='text'>
When using MSI it is possible that a new MSI is sent while an earlier
MSI is currently handled. In this case SDHCI_INT_STATUS only contains
SDHCI_INT_RESPONSE and the ISR would not be called again. But at the end
of the ISR SDHCI_INT_DATA_END is now also pending which would be ignored.

Fix this by rereading the interrupt flags in the ISR until no interrupt
we care is pending.

Signed-off-by: Alexander Stein &lt;alexander.stein@systec-electronic.com&gt;
Acked-by: Adrian Hunter &lt;adrian.hunter@intel.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
(cherry picked from commit 6379b2375a0c5a6ad437616a4018e6b8fd95e97c)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When using MSI it is possible that a new MSI is sent while an earlier
MSI is currently handled. In this case SDHCI_INT_STATUS only contains
SDHCI_INT_RESPONSE and the ISR would not be called again. But at the end
of the ISR SDHCI_INT_DATA_END is now also pending which would be ignored.

Fix this by rereading the interrupt flags in the ISR until no interrupt
we care is pending.

Signed-off-by: Alexander Stein &lt;alexander.stein@systec-electronic.com&gt;
Acked-by: Adrian Hunter &lt;adrian.hunter@intel.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
(cherry picked from commit 6379b2375a0c5a6ad437616a4018e6b8fd95e97c)
</pre>
</div>
</content>
</entry>
<entry>
<title>mmc: sdhci-pci: add runtime pm support</title>
<updated>2015-10-09T19:50:07+00:00</updated>
<author>
<name>Adrian Hunter</name>
<email>adrian.hunter@intel.com</email>
</author>
<published>2011-10-03T12:33:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=bbb72fe0df531d2fe744e746d670572c551fdc57'/>
<id>bbb72fe0df531d2fe744e746d670572c551fdc57</id>
<content type='text'>
Ths patch allows runtime PM for sdhci-pci, runtime suspending after
inactivity of 50ms and ensuring runtime resume before SDHC registers
are accessed.  During runtime suspend, interrupts are masked.
The host controller state is restored at runtime resume.

For Medfield, the host controller's card detect mechanism is
supplanted by an always-on GPIO which provides for card detect wake-up.

Signed-off-by: Adrian Hunter &lt;adrian.hunter@intel.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
(cherry picked from commit 66fd8ad5100b5003046aa744a4f12fa31bb831f9)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Ths patch allows runtime PM for sdhci-pci, runtime suspending after
inactivity of 50ms and ensuring runtime resume before SDHC registers
are accessed.  During runtime suspend, interrupts are masked.
The host controller state is restored at runtime resume.

For Medfield, the host controller's card detect mechanism is
supplanted by an always-on GPIO which provides for card detect wake-up.

Signed-off-by: Adrian Hunter &lt;adrian.hunter@intel.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
(cherry picked from commit 66fd8ad5100b5003046aa744a4f12fa31bb831f9)
</pre>
</div>
</content>
</entry>
</feed>
