mmc: tmio: fix reset operation
Subsystems (2)
v3 cover mmc: tmio: fix reset operation
From: Niklas Söderlund <[email protected]>
Hi,
While looking at the Renesas BSP kernel I found patches which improves the state of the hardware at probe and after runtime resume.
Patch 1/3 make sure the module clock is enabled after resuming before register are accessed. Patch 2/3 is the real change in this series and brings in reset of the vendor specific callback when resetting (SCC in the Renesas case). While 3/3 simply make sure that the IRQ mask for Renesas boards (Gen2 and later) are in a good shape after probe (and reset).
In addition to addressing the state after resuming it helped unbreak a SD card I have which are very problematic on Koelsch. Without this series inserting the card results in:
sh_mobile_sdhi ee100000.sd: timeout waiting for hardware interrupt (CMD19) sh_mobile_sdhi ee100000.sd: timeout waiting for hardware interrupt (CMD19) sh_mobile_sdhi ee100000.sd: timeout waiting for hardware interrupt (CMD19) sh_mobile_sdhi ee100000.sd: timeout waiting for hardware interrupt (CMD19) sh_mobile_sdhi ee100000.sd: timeout waiting for hardware interrupt (CMD19) sh_mobile_sdhi ee100000.sd: timeout waiting for hardware interrupt (CMD19) sh_mobile_sdhi ee100000.sd: timeout waiting for hardware interrupt (CMD19) sh_mobile_sdhi ee100000.sd: timeout waiting for hardware interrupt (CMD19) sh_mobile_sdhi ee100000.sd: timeout waiting for hardware interrupt (CMD19) sh_mobile_sdhi ee100000.sd: timeout waiting for hardware interrupt (CMD19) sh_mobile_sdhi ee100000.sd: Tuning procedure failed
mmc0: tuning execution failed: -5
mmc0: error -5 whilst initialising SD cardsh_mobile_sdhi ee100000.sd: timeout waiting for hardware interrupt (CMD19)
While with this series applied (patch 2/3):
sh_mobile_sdhi ee100000.sd: timeout waiting for hardware interrupt (CMD19)
mmc0: new ultra high speed SDR50 SDHC card at address aaaa
mmcblk0: mmc0:aaaa SU04G 3.69 GiB
mmcblk0: p1 p2
Patch 1/3 was previously part of 2/3 but as it deals with a unrelated issue it's here broken out to a separate patch. Patch 3/3 have once been posted outside this series bit after comments from Wolfram it's brought back as it now deepens on 2/3.
Most changes in this series are based on similar work from Masaharu Hayakawa but for this version all changes now differ quiet a lot from his work. All mails sent to him bounce with a "Undelivered Mail Returned to Sender" error. I therefor felt the need to claim authorship as I don't want to post blame of my (potential) mistakes on some else.
Niklas Söderlund (3):
mmc: tmio: enable module clock before resetting when resuming
mmc: tmio: fix reset operation
mmc: renesas_sdhi: add initial setting of interrupt mask register
drivers/mmc/host/renesas_sdhi_core.c | 4 ++++ drivers/mmc/host/tmio_mmc.h | 1 + drivers/mmc/host/tmio_mmc_core.c | 26 +++++++++++++++----------- 3 files changed, 20 insertions(+), 11 deletions(-)
Signature · 1 line
2.19.1
PATCH v3 1/3 mmc: tmio: enable module clock before resetting when resuming
From: Niklas Söderlund <[email protected]>
On runtime power management resume, the host clock needs to be enabled before calling tmio_mmc_reset. If the mmc device has a power domain entry, the host clock is enabled via genpd_runtime_resume, running before tmio_mmc_host_runtime_resume. If the mmc device has no power domain entry, however, genpd_runtime_resume is not called. This patch changes tmio_mmc_host_runtime_resume to enable the host clock before calling tmio_mmc_reset.
Based on work from Masaharu Hayakawa.
--- drivers/mmc/host/tmio_mmc_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/mmc/host/tmio_mmc_core.c +1 -1
@@ -1328,8 +1328,8 @@ int tmio_mmc_host_runtime_resume(struct device *dev) {struct tmio_mmc_host *host =dev_get_drvdata (dev); - host->reset (host);tmio_mmc_clk_enable (host); + host->reset (host);if (host->clk_cache) host->set_clock (host, host->clk_cache);
Signature · 1 line
2.19.1
Re: [PATCH v3 1/3] mmc: tmio: enable module clock before resetting when resuming
Quoted 10 lines · Niklas Söderlund
From: Niklas Söderlund <[email protected]>
On runtime power management resume, the host clock needs to be enabled before calling
tmio_mmc_reset. If the mmc device has a power domain entry, the host clock is enabled viagenpd_runtime_resume, running beforetmio_mmc_host_runtime_resume. If the mmc device has no power domain entry, however,genpd_runtime_resumeis not called. This patch changestmio_mmc_host_runtime_resumeto enable the host clock before callingtmio_mmc_reset.
Quoted 3 lines
Based on work from Masaharu Hayakawa.
Signed-off-by Niklas Söderlund <[email protected]>
Re: [PATCH v3 1/3] mmc: tmio: enable module clock before resetting when resuming
In reply to Niklas SöderlundQuoted 11 lines · Niklas Söderlund
From: Niklas Söderlund <[email protected]>
On runtime power management resume, the host clock needs to be enabled before calling
tmio_mmc_reset. If the mmc device has a power domain entry, the host clock is enabled viagenpd_runtime_resume, running beforetmio_mmc_host_runtime_resume. If the mmc device has no power domain entry, however,genpd_runtime_resumeis not called. This patch changestmio_mmc_host_runtime_resumeto enable the host clock before callingtmio_mmc_reset.
Quoted 3 lines
Based on work from Masaharu Hayakawa.
Signed-off-by Niklas Söderlund <[email protected]>
Quoted 19 lines
--- drivers/mmc/host/tmio_mmc_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/mmc/host/tmio_mmc_core.c +1
-2@@ -1328,8 +1328,8 @@ int tmio_mmc_host_runtime_resume(struct device *dev) {struct tmio_mmc_host *host =dev_get_drvdata (dev); - host->reset (host);tmio_mmc_clk_enable (host); + host->reset (host);if (host->clk_cache) host->set_clock (host, host->clk_cache); --
Quoted 2 lines
2.19.1
--
Best Regards
Masahiro Yamada
Re: [PATCH v3 1/3] mmc: tmio: enable module clock before resetting when resuming
In reply to Niklas SöderlundQuoted 10 lines · Niklas Söderlund
From: Niklas Söderlund <[email protected]>
On runtime power management resume, the host clock needs to be enabled before calling
tmio_mmc_reset. If the mmc device has a power domain entry, the host clock is enabled viagenpd_runtime_resume, running beforetmio_mmc_host_runtime_resume. If the mmc device has no power domain entry, however,genpd_runtime_resumeis not called. This patch changestmio_mmc_host_runtime_resumeto enable the host clock before callingtmio_mmc_reset.
Quoted 3 lines
Based on work from Masaharu Hayakawa.
Signed-off-by Niklas Söderlund <[email protected]>
PATCH v3 2/3 mmc: tmio: fix reset operation
In reply to Niklas SöderlundFrom: Niklas Söderlund <[email protected]>
SD / MMC did not operate properly when suspend transition failed. Because the SCC was not reset at resume, issue of the command failed. Call the host specific reset function and reset the hardware in order to add reset of SCC. This change also fixes tuning on some stubborn cards on Gen2.
Based on work from Masaharu Hayakawa.
---
* Changes sine v1
- Merge tmio_mmc_reset() into tmio_mmc_hw_reset() as it's now the only caller.
* Changes since v2
- Rebased on mmc/next caused small refactoring of the code.
--- drivers/mmc/host/tmio_mmc_core.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-)
drivers/mmc/host/tmio_mmc_core.c +15 -11
@@ -171,6 +171,18 @@ static void tmio_mmc_reset(struct tmio_mmc_host *host) } } +static void tmio_mmc_hw_reset (struct mmc_host *mmc) +{ +struct tmio_mmc_host *host =mmc_priv (mmc); + + host->reset (host); + +tmio_mmc_abort_dma (host); + +if (host->hw_reset) + host->hw_reset (host); +} +static void tmio_mmc_reset_work (struct work_struct *work) { struct tmio_mmc_host *host = container_of(work, struct tmio_mmc_host,
@@ -209,7 +221,7 @@ static void tmio_mmc_reset_work(struct work_struct *work)spin_unlock_irqrestore (&host->lock, flags); - host->reset (host); +tmio_mmc_hw_reset (host->mmc);/* Ready for new calls */ host->mrq =NULL ;
@@ -696,14 +708,6 @@ static int tmio_mmc_start_data(struct tmio_mmc_host *host,return 0 ; } -static void tmio_mmc_hw_reset (struct mmc_host *mmc) -{ -struct tmio_mmc_host *host =mmc_priv (mmc); - -if (host->hw_reset) - host->hw_reset (host); -} -static int tmio_mmc_execute_tuning (struct mmc_host *mmc,u32 opcode) {struct tmio_mmc_host *host =mmc_priv (mmc);
@@ -1228,7 +1232,7 @@ int tmio_mmc_host_probe(struct tmio_mmc_host *_host) _host->sdio_irq_mask =TMIO_SDIO_MASK_ALL ; _host->set_clock (_host,0 ); - _host->reset (_host); +tmio_mmc_hw_reset (mmc); _host->sdcard_irq_mask =sd_ctrl_read16_and_16_as_32 (_host,CTL_IRQ_MASK );tmio_mmc_disable_mmc_irqs (_host,TMIO_MASK_ALL );
@@ -1329,7 +1333,7 @@ int tmio_mmc_host_runtime_resume(struct device *dev)struct tmio_mmc_host *host =dev_get_drvdata (dev);tmio_mmc_clk_enable (host); - host->reset (host); +tmio_mmc_hw_reset (host->mmc);if (host->clk_cache) host->set_clock (host, host->clk_cache);
Signature · 1 line
2.19.1
Quoted 8 lines · Niklas Söderlund
From: Niklas Söderlund <[email protected]>
SD / MMC did not operate properly when suspend transition failed. Because the SCC was not reset at resume, issue of the command failed. Call the host specific reset function and reset the hardware in order to add reset of SCC. This change also fixes tuning on some stubborn cards on Gen2.
Quoted 4 lines
Based on work from Masaharu Hayakawa.
Signed-off-by Niklas Söderlund <[email protected]>
Quoted 48 lines · Niklas Söderlund
From: Niklas Söderlund <[email protected]>
SD / MMC did not operate properly when suspend transition failed. Because the SCC was not reset at resume, issue of the command failed. Call the host specific reset function and reset the hardware in order to add reset of SCC. This change also fixes tuning on some stubborn cards on Gen2.
Based on work from Masaharu Hayakawa.
Signed-off-by Niklas Söderlund <[email protected]>---
* Changes sine v1
- Mergetmio_mmc_reset()intotmio_mmc_hw_reset()as it's now the only caller.* Changes since v2
- Rebased on mmc/next caused small refactoring of the code.--- drivers/mmc/host/tmio_mmc_core.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-)drivers/mmc/host/tmio_mmc_core.c +12
-0@@ -171,6 +171,18 @@ static void tmio_mmc_reset(struct tmio_mmc_host *host) } } +static void tmio_mmc_hw_reset (struct mmc_host *mmc) +{ +struct tmio_mmc_host *host =mmc_priv (mmc); + + host->reset (host); + +tmio_mmc_abort_dma (host); + +if (host->hw_reset) + host->hw_reset (host); +} +static void tmio_mmc_reset_work (struct work_struct *work) { struct tmio_mmc_host *host = container_of(work, struct tmio_mmc_host,
drivers/mmc/host/tmio_mmc_core.c static void tmio_mmc_reset_work(struct work_struct *work) · line 227
Quoted 8 lines
drivers/mmc/host/tmio_mmc_core.c +1
-1@@ -209,7 +221,7 @@ static void tmio_mmc_reset_work(struct work_struct *work)spin_unlock_irqrestore (&host->lock, flags); - host->reset (host); +tmio_mmc_hw_reset (host->mmc);/* Ready for new calls */ host->mrq =NULL ;
I see tmio_mmc_abort_dma() a few lines below.
If you add tmio_mmc_abort_dma() into tmio_mmc_hw_reset(), you do not need to abort DMA twice, don't you?
tmio_mmc_hw_reset(host->mmc);
/* Ready for new calls */
host->mrq = NULL;
tmio_mmc_abort_dma(host); /* <-- abort DMA again? */
mmc_request_done(host->mmc, mrq);
}Quoted 16 lines
drivers/mmc/host/tmio_mmc_core.c +0
-8@@ -696,14 +708,6 @@ static int tmio_mmc_start_data(struct tmio_mmc_host *host,return 0 ; } -static void tmio_mmc_hw_reset (struct mmc_host *mmc) -{ -struct tmio_mmc_host *host =mmc_priv (mmc); - -if (host->hw_reset) - host->hw_reset (host); -} -static int tmio_mmc_execute_tuning (struct mmc_host *mmc,u32 opcode) {struct tmio_mmc_host *host =mmc_priv (mmc);
drivers/mmc/host/tmio_mmc_core.c int tmio_mmc_host_probe(struct tmio_mmc_host *_host) · line 1235
Quoted 5 lines
drivers/mmc/host/tmio_mmc_core.c +1
-1@@ -1228,7 +1232,7 @@ int tmio_mmc_host_probe(struct tmio_mmc_host *_host) _host->sdio_irq_mask =TMIO_SDIO_MASK_ALL ; _host->set_clock (_host,0 ); - _host->reset (_host); +tmio_mmc_hw_reset (mmc);
I think it is weird to call tmio_mmc_abort_dma()
before tmio_mmc_request_dma().
Quoted 12 lines
drivers/mmc/host/tmio_mmc_core.c +1
-2_host->sdcard_irq_mask =sd_ctrl_read16_and_16_as_32 (_host,CTL_IRQ_MASK );tmio_mmc_disable_mmc_irqs (_host,TMIO_MASK_ALL );@@ -1329,7 +1333,7 @@ int tmio_mmc_host_runtime_resume(struct device *dev)struct tmio_mmc_host *host =dev_get_drvdata (dev);tmio_mmc_clk_enable (host); - host->reset (host); +tmio_mmc_hw_reset (host->mmc);if (host->clk_cache) host->set_clock (host, host->clk_cache); --
Quoted 2 lines
2.19.1
--
Best Regards
Masahiro Yamada
Hi Yamada-san,
Thanks for your feedback.
Quoted 69 lines · Masahiro Yamada
Quoted 48 lines · Niklas S�derlund
From: Niklas S�derlund <[email protected]>
SD / MMC did not operate properly when suspend transition failed. Because the SCC was not reset at resume, issue of the command failed. Call the host specific reset function and reset the hardware in order to add reset of SCC. This change also fixes tuning on some stubborn cards on Gen2.
Based on work from Masaharu Hayakawa.
Signed-off-by Niklas S�derlund <[email protected]>---
* Changes sine v1
- Mergetmio_mmc_reset()intotmio_mmc_hw_reset()as it's now the only caller.* Changes since v2
- Rebased on mmc/next caused small refactoring of the code.--- drivers/mmc/host/tmio_mmc_core.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-)drivers/mmc/host/tmio_mmc_core.c +12
-0@@ -171,6 +171,18 @@ static void tmio_mmc_reset(struct tmio_mmc_host *host) } } +static void tmio_mmc_hw_reset (struct mmc_host *mmc) +{ +struct tmio_mmc_host *host =mmc_priv (mmc); + + host->reset (host); + +tmio_mmc_abort_dma (host); + +if (host->hw_reset) + host->hw_reset (host); +} +static void tmio_mmc_reset_work (struct work_struct *work) { struct tmio_mmc_host *host = container_of(work, struct tmio_mmc_host,drivers/mmc/host/tmio_mmc_core.c static void tmio_mmc_reset_work(struct work_struct *work) · line 227
Quoted 8 lines
drivers/mmc/host/tmio_mmc_core.c +1
-1@@ -209,7 +221,7 @@ static void tmio_mmc_reset_work(struct work_struct *work)spin_unlock_irqrestore (&host->lock, flags); - host->reset (host); +tmio_mmc_hw_reset (host->mmc);/* Ready for new calls */ host->mrq =NULL ;I see
tmio_mmc_abort_dma()a few lines below.If you add
tmio_mmc_abort_dma()intotmio_mmc_hw_reset(), you do not need to abort DMA twice, don't you?
Quoted 9 lines
tmio_mmc_hw_reset(host->mmc);
/* Ready for new calls */
host->mrq = NULL;
tmio_mmc_abort_dma(host); /* <-- abort DMA again? */
mmc_request_done(host->mmc, mrq);
}You are correct with this change the call to tmio_mmc_abort_dma() can be dropped here. Will do so and send out a new version. Thanks for pointing this out!
Quoted 50 lines
Quoted 17 lines
drivers/mmc/host/tmio_mmc_core.c +0
-8@@ -696,14 +708,6 @@ static int tmio_mmc_start_data(struct tmio_mmc_host *host,return 0 ; } -static void tmio_mmc_hw_reset (struct mmc_host *mmc) -{ -struct tmio_mmc_host *host =mmc_priv (mmc); - -if (host->hw_reset) - host->hw_reset (host); -} -static int tmio_mmc_execute_tuning (struct mmc_host *mmc,u32 opcode) {struct tmio_mmc_host *host =mmc_priv (mmc);drivers/mmc/host/tmio_mmc_core.c int tmio_mmc_host_probe(struct tmio_mmc_host *_host) · line 1235
Quoted 5 lines
drivers/mmc/host/tmio_mmc_core.c +1
-1@@ -1228,7 +1232,7 @@ int tmio_mmc_host_probe(struct tmio_mmc_host *_host) _host->sdio_irq_mask =TMIO_SDIO_MASK_ALL ; _host->set_clock (_host,0 ); - _host->reset (_host); +tmio_mmc_hw_reset (mmc);I think it is weird to call
tmio_mmc_abort_dma()
beforetmio_mmc_request_dma().Quoted 12 lines
drivers/mmc/host/tmio_mmc_core.c +1
-2_host->sdcard_irq_mask =sd_ctrl_read16_and_16_as_32 (_host,CTL_IRQ_MASK );tmio_mmc_disable_mmc_irqs (_host,TMIO_MASK_ALL );@@ -1329,7 +1333,7 @@ int tmio_mmc_host_runtime_resume(struct device *dev)struct tmio_mmc_host *host =dev_get_drvdata (dev);tmio_mmc_clk_enable (host); - host->reset (host); +tmio_mmc_hw_reset (host->mmc);if (host->clk_cache) host->set_clock (host, host->clk_cache); --Quoted 2 lines
2.19.1
--
Best Regards
Masahiro Yamada
Signature · 2 lines
Regards, Niklas S�derlund
PATCH v3 3/3 mmc: renesas_sdhi: add initial setting of interrupt mask register
In reply to Niklas SöderlundFrom: Niklas Söderlund <[email protected]>
The initial value of the interrupt mask register may be different from the H/W manual at the startup of the kernel by setting from the bootloader. Since the error interrupts may be unmasked, the driver sets initial value.
The initial value is only known for R-Car Gen2 and Gen3 platforms so limit the initialization to those platforms.
Based on work from Masaharu Hayakawa.
---
* Changes since v1
- Limit the initialization to Gen2+ platforms by checking the TMIO_MMC_MIN_RCAR2 flag.
- Rename the constant for the initialization value to reflect it's only for R-Car Gen2+ platforms.
- Move setting of the initial mask to renesas_sdhi.
--- drivers/mmc/host/renesas_sdhi_core.c | 4 ++++ drivers/mmc/host/tmio_mmc.h | 1 + 2 files changed, 5 insertions(+)
drivers/mmc/host/renesas_sdhi_core.c +4 -0
@@ -532,6 +532,10 @@ static void renesas_sdhi_hw_reset(struct tmio_mmc_host *host)sd_scc_write32 (host, priv,SH_MOBILE_SDHI_SCC_RVSCNTL , ~SH_MOBILE_SDHI_SCC_RVSCNTL_RVSEN &sd_scc_read32 (host, priv,SH_MOBILE_SDHI_SCC_RVSCNTL )); + +if (host->pdata->flags &TMIO_MMC_MIN_RCAR2 ) +sd_ctrl_write32_as_16_and_16 (host,CTL_IRQ_MASK , +TMIO_MASK_INIT_RCAR2 ); }static int renesas_sdhi_wait_idle (struct tmio_mmc_host *host,u32 bit)
drivers/mmc/host/tmio_mmc.h +1 -0
@@ -96,6 +96,7 @@/* Define some IRQ masks */ /* This is the mask used at reset by the chip */ +#define TMIO_MASK_INIT_RCAR2 0x8b7f031d/* Initial value for R-Car Gen2+ */ #define TMIO_MASK_ALL 0x837f031d#define TMIO_MASK_READOP (TMIO_STAT_RXRDY | TMIO_STAT_DATAEND)#define TMIO_MASK_WRITEOP (TMIO_STAT_TXRQ | TMIO_STAT_DATAEND)
Signature · 1 line
2.19.1
Re: [PATCH v3 3/3] mmc: renesas_sdhi: add initial setting of interrupt mask register
Quoted 7 lines · Niklas Söderlund
From: Niklas Söderlund <[email protected]>
The initial value of the interrupt mask register may be different from the H/W manual at the startup of the kernel by setting from the bootloader. Since the error interrupts may be unmasked, the driver sets initial value.
Quoted 7 lines
The initial value is only known for R-Car Gen2 and Gen3 platforms so limit the initialization to those platforms.
Based on work from Masaharu Hayakawa.
Signed-off-by Niklas Söderlund <[email protected]>
Re: [PATCH v3 3/3] mmc: renesas_sdhi: add initial setting of interrupt mask register
In reply to Niklas SöderlundQuoted 7 lines · Niklas Söderlund
From: Niklas Söderlund <[email protected]>
The initial value of the interrupt mask register may be different from the H/W manual at the startup of the kernel by setting from the bootloader. Since the error interrupts may be unmasked, the driver sets initial value.
Quoted 6 lines
The initial value is only known for R-Car Gen2 and Gen3 platforms so limit the initialization to those platforms.
Based on work from Masaharu Hayakawa.
Signed-off-by Niklas Söderlund <[email protected]>
So, we agreed on this series during our Renesas SDHI hackathon. Comments / testing from Yamada-san would be very welcome because we really don't want to cause regressions on his hardware.
All patches tested on M3N, H2, and E2.
Quoted 56 lines · Niklas Söderlund
From: Niklas Söderlund <[email protected]>
Hi,
While looking at the Renesas BSP kernel I found patches which improves the state of the hardware at probe and after runtime resume.
Patch 1/3 make sure the module clock is enabled after resuming before register are accessed. Patch 2/3 is the real change in this series and brings in reset of the vendor specific callback when resetting (SCC in the Renesas case). While 3/3 simply make sure that the IRQ mask for Renesas boards (Gen2 and later) are in a good shape after probe (and reset).
In addition to addressing the state after resuming it helped unbreak a SD card I have which are very problematic on Koelsch. Without this series inserting the card results in:
sh_mobile_sdhiee100000.sd: timeout waiting for hardware interrupt (CMD19)sh_mobile_sdhiee100000.sd: timeout waiting for hardware interrupt (CMD19)sh_mobile_sdhiee100000.sd: timeout waiting for hardware interrupt (CMD19)sh_mobile_sdhiee100000.sd: timeout waiting for hardware interrupt (CMD19)sh_mobile_sdhiee100000.sd: timeout waiting for hardware interrupt (CMD19)sh_mobile_sdhiee100000.sd: timeout waiting for hardware interrupt (CMD19)sh_mobile_sdhiee100000.sd: timeout waiting for hardware interrupt (CMD19)sh_mobile_sdhiee100000.sd: timeout waiting for hardware interrupt (CMD19)sh_mobile_sdhiee100000.sd: timeout waiting for hardware interrupt (CMD19)sh_mobile_sdhiee100000.sd: timeout waiting for hardware interrupt (CMD19)sh_mobile_sdhiee100000.sd: Tuning procedure failed
mmc0: tuning execution failed: -5
mmc0: error -5 whilst initialising SD cardsh_mobile_sdhiee100000.sd: timeout waiting for hardware interrupt (CMD19)While with this series applied (patch 2/3):
sh_mobile_sdhiee100000.sd: timeout waiting for hardware interrupt (CMD19)
mmc0: new ultra high speed SDR50 SDHC card at address aaaa
mmcblk0: mmc0:aaaa SU04G 3.69 GiB
mmcblk0: p1 p2Patch 1/3 was previously part of 2/3 but as it deals with a unrelated issue it's here broken out to a separate patch. Patch 3/3 have once been posted outside this series bit after comments from Wolfram it's brought back as it now deepens on 2/3.
Most changes in this series are based on similar work from Masaharu Hayakawa but for this version all changes now differ quiet a lot from his work. All mails sent to him bounce with a "Undelivered Mail Returned to Sender" error. I therefor felt the need to claim authorship as I don't want to post blame of my (potential) mistakes on some else.
Niklas Söderlund (3):
mmc: tmio: enable module clock before resetting when resuming
mmc: tmio: fix reset operation
mmc:renesas_sdhi: add initial setting of interrupt mask register
Quoted 8 lines
drivers/mmc/host/renesas_sdhi_core.c | 4 ++++ drivers/mmc/host/tmio_mmc.h | 1 + drivers/mmc/host/tmio_mmc_core.c | 26 +++++++++++++++----------- 3 files changed, 20 insertions(+), 11 deletions(-)--
2.19.1
Applied for next, thanks!
I noticed there were a minor comment from Yamada-san, however I decided to pick this as is and leave further improvements to be made on top.
Kind regards
Uffe
Quoted 4 lines
I noticed there were a minor comment from Yamada-san, however I decided to pick this as is and leave further improvements to be made on top.
Can I vote for waiting until Niklas comes back from Plumbers and have a proper V2 applied instead? Makes backporting easier.
Quoted 8 lines · Wolfram Sang
Quoted 4 lines
I noticed there were a minor comment from Yamada-san, however I decided to pick this as is and leave further improvements to be made on top.
Can I vote for waiting until Niklas comes back from Plumbers and have a proper V2 applied instead? Makes backporting easier.
Sure, no problem. I drop this and the other series then.
Kind regards
Uffe
Quoted 2 lines
Sure, no problem. I drop this and the other series then.
Thanks, Ulf!
Hi Ulf, Wolfram
Quoted 5 lines · Wolfram Sang
Quoted 2 lines
Sure, no problem. I drop this and the other series then.
Thanks, Ulf!
Thanks for looking out for me here, I will fly home tomorrow so I hope to get a new versions of these series out late this week.
Signature · 2 lines
Regards, Niklas S�derlund