Hi All, Just to add, I made the below changes to test cd using SDHI IRQ rather than gpio interrupt on RZ/G2M board. diff --git a/arch/arm64/boot/dts/renesas/hihope-common.dtsi b/arch/arm64/boot/dts/renesas/hihope-common.dtsi index 0c7e6f790590..334225c39003 100644 --- a/arch/arm64/boot/dts/renesas/hihope-common.dtsi +++ b/arch/arm64/boot/dts/renesas/hihope-common.dtsi @@ -225,15 +225,29 @@ }; sdhi0_pins: sd0 { - groups = "sdhi0_data4", "sdhi0_ctrl"; - function = "sdhi0"; - power-source = <3300>; + sd0_data { + groups = "sdhi0_data4", "sdhi0_ctrl"; + function = "sdhi0"; + power-source = <3300>; + }; + + sd0_mux { + groups = "sdhi0_cd"; + function = "sdhi0"; + }; }; sdhi0_pins_uhs: sd0_uhs { - groups = "sdhi0_data4", "sdhi0_ctrl"; - function = "sdhi0"; - power-source = <1800>; + sd0_data_uhs { + groups = "sdhi0_data4", "sdhi0_ctrl"; + function = "sdhi0"; + power-source = <1800>; + }; + + sd0_mux_uhs { + groups = "sdhi0_cd"; + function = "sdhi0"; + }; }; sdhi2_pins: sd2 { @@ -294,7 +308,6 @@ vmmc-supply = <®_3p3v>; vqmmc-supply = <&vccq_sdhi0>; - cd-gpios = <&gpio3 12 GPIO_ACTIVE_LOW>; Regards, Biju > -----Original Message----- > From: Biju Das <biju.das.jz@xxxxxxxxxxxxxx> > Sent: 06 October 2021 13:46 > To: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>; linux- > mmc@xxxxxxxxxxxxxxx > Cc: linux-renesas-soc@xxxxxxxxxxxxxxx; Geert Uytterhoeven > <geert+renesas@xxxxxxxxx>; Yoshihiro Shimoda > <yoshihiro.shimoda.uh@xxxxxxxxxxx>; Geert Uytterhoeven > <geert+renesas@xxxxxxxxx> > Subject: RE: [PATCH] mmc: renesas_sdhi: fix regression with hard reset on > old SDHIs > > Hi All, > > I have reproduced this issue on RZ/G2M pin by configuring cd using SDHI > instead of gpio irq. > After applying the patch card detection/removal works as expected. > > Looks like the issue is present on R-Car Gen3 boards with cd as pin(ie, > card detection/removal using SDHI IRQ). > I will post a patch to fixing this issue. > > Please find the logs > > With IRQ fix on reset function > ----------------------------------- > 3.090956] renesas_sdhi_internal_dmac ee100000.mmc: mmc1 base at > 0x00000000ee100000, max clock rate 200 MHz > [ 4.855266] mmc1: new ultra high speed SDR104 SDHC card at address aaaa > [ 4.865396] mmcblk1: mmc1:aaaa SP32G 29.7 GiB > [ 4.885474] mmcblk1: p1 > > > root@hihope-rzg2m:~# [ 60.220648] mmc1: card aaaa removed > [ 61.613520] mmc1: new ultra high speed SDR104 SDHC card at address aaaa > [ 61.626103] mmcblk1: mmc1:aaaa SP32G 29.7 GiB > [ 61.647925] mmcblk1: p1 > > root@hihope-rzg2m:~# cat /proc/interrupts | grep ee100000.mmc > 162: 2158 0 0 0 0 0 > GIC-0 197 Level ee100000.mmc > > > without IRQ fix. > ----------------- > > renesas_sdhi_internal_dmac ee140000.mmc: mmc2 base at 0x00000000ee140000, > max clock rate 200 MHz > > But there is no card detection during boot. > it is not detecting card removal/removal at all > > root@hihope-rzg2m:~# cat /proc/interrupts | grep ee100000.mmc > 162: 0 0 0 0 0 0 > GIC-0 197 Level ee100000.mmc > root@hihope-rzg2m:~# > > > regards, > Biju > > > > > -----Original Message----- > > From: Biju Das > > Sent: 05 October 2021 18:03 > > To: 'Wolfram Sang' <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>; linux- > > mmc@xxxxxxxxxxxxxxx > > Cc: linux-renesas-soc@xxxxxxxxxxxxxxx; Geert Uytterhoeven > > <geert+renesas@xxxxxxxxx>; Yoshihiro Shimoda > > <yoshihiro.shimoda.uh@xxxxxxxxxxx>; Geert Uytterhoeven > > <geert+renesas@xxxxxxxxx> > > Subject: RE: [PATCH] mmc: renesas_sdhi: fix regression with hard reset > > on old SDHIs > > > > Hi Wolfram, > > > > On my RZ/G2L board, if I configure card detection irq from SDHI, > > instead of card detection using gpio interrupt, then it is missing > > card detection interrupt after reset. > > > > Just wondering, does it work on R-Car with CD irq from SDHI instead of > > card detection using gpio interrupt? > > > > With the below changes, I am getting cd interrupts from SDHI after > reset. > > > > diff --git a/drivers/mmc/host/renesas_sdhi_core.c > > b/drivers/mmc/host/renesas_sdhi_core.c > > index a4407f391f66..32f34de1a2a6 100644 > > --- a/drivers/mmc/host/renesas_sdhi_core.c > > +++ b/drivers/mmc/host/renesas_sdhi_core.c > > @@ -561,6 +561,8 @@ static void renesas_sdhi_reset(struct > > tmio_mmc_host > > *host) > > /* Unknown why but without polling reset status, it > > will hang */ > > read_poll_timeout(reset_control_status, ret, ret == 0, > > 1, 100, > > false, priv->rstc); > > + > > + tmio_mmc_enable_mmc_irqs(host, TMIO_MASK_CMD); > > /* At least SDHI_VER_GEN2_SDR50 needs manual release > > of reset */ > > > > > > Regards, > > Biju > > > > > > > -----Original Message----- > > > From: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx> > > > Sent: 26 August 2021 09:21 > > > To: linux-mmc@xxxxxxxxxxxxxxx > > > Cc: linux-renesas-soc@xxxxxxxxxxxxxxx; Geert Uytterhoeven > > > <geert+renesas@xxxxxxxxx>; Yoshihiro Shimoda > > > <yoshihiro.shimoda.uh@xxxxxxxxxxx>; Wolfram Sang <wsa+renesas@sang- > > > engineering.com> > > > Subject: [PATCH] mmc: renesas_sdhi: fix regression with hard reset > > > on old SDHIs > > > > > > Old SDHI instances have a default value for the reset register which > > > keeps it in reset state by default. So, when applying a hard reset > > > we need to manually leave the soft reset state as well. Later SDHI > > > instances have a different default value, the one we write manually > now. > > > > > > Fixes: b4d86f37eacb ("mmc: renesas_sdhi: do hard reset if possible") > > > Signed-off-by: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx> > > > --- > > > > > > Geez, typical SDHI nastiness here... > > > > > > Geert: I think this fixes the issue you saw on Koelsch. It works > > > fine on my Lager now at least. Can you please test and tag if all goes > well? > > > It would be great to have this in 5.14 but it definately needs > > > Geert's confirmation first. > > > > > > drivers/mmc/host/renesas_sdhi_core.c | 2 ++ > > > 1 file changed, 2 insertions(+) > > > > > > diff --git a/drivers/mmc/host/renesas_sdhi_core.c > > > b/drivers/mmc/host/renesas_sdhi_core.c > > > index 6fc4cf3c9dce..a4407f391f66 100644 > > > --- a/drivers/mmc/host/renesas_sdhi_core.c > > > +++ b/drivers/mmc/host/renesas_sdhi_core.c > > > @@ -561,6 +561,8 @@ static void renesas_sdhi_reset(struct > > > tmio_mmc_host > > > *host) > > > /* Unknown why but without polling reset status, it will hang > > */ > > > read_poll_timeout(reset_control_status, ret, ret == 0, 1, 100, > > > false, priv->rstc); > > > + /* At least SDHI_VER_GEN2_SDR50 needs manual release of reset > > > */ > > > + sd_ctrl_write16(host, CTL_RESET_SD, 0x0001); > > > priv->needs_adjust_hs400 = false; > > > renesas_sdhi_set_clock(host, host->clk_cache); > > > } else if (priv->scc_ctl) { > > > -- > > > 2.30.2