Re: Odroid-C1 regression with commit 4bc31edebde5 ("mmc: core: Set HS clock speed before sending HS CMD13")

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, May 15, 2023 at 11:44 AM Ulf Hansson <ulf.hansson@xxxxxxxxxx> wrote:
[...]
> > > 3) If 2) seems to work above, we need to figure out why
> > > mmc_switch_status() is hanging. If there is a problem with the eMMC
> > > card responding in-correctly, the host driver should return with an
> > > error code, right?
> > You're right: it's indeed hanging in mmc_switch_status()
> > I don't get any interrupts (timeout, CRC error, ...) for it.
> > Do you have any suggestions what to check next?
>
> So the mmc_switch_status() is sending a CMD13. Even if the card
> doesn't reply, I would expect that the meson mmc controller would
> raise some kind of error condition, probably via a timeout-irq.
>
> Did you verify that the driver is actually waiting for an IRQ to
> happen, which also means waiting for a CMD13 response?
register 0x24 is ICTL (interrupt control) and 0x28 is ISTAT (interrupt status)
ISTAT is all zeros and ICTL is 0x3067 which translates so:
- BIT(0): RESP_OK
- BIT(1): RESP_TIMEOUT
- BIT(2): RESP_ERR_CRC
- BIT(5): DATA_TIMEOUT
- BIT(6): DATA_ERR_CRC
- BIT(12): RXFIFO_FULL
- BIT(13): TXFIFO_EMPTY

I guess in this case BIT(1) RESP_TIMEOUT is the relevant one.

register 0x04 is SEND and reads 0x4d which translates to:
- CMD13
- MMC_RSP_PRESENT (HAS_RESP, BIT(6))
- no other flags (STOP, R1B, ...) are set

Full register dump:
# cat /sys/kernel/debug/regmap/c1108e00.mmc/registers
00: 00000900
04: 0000004d
08: e7ffe002
0c: 02f0003f
10: 0003f009
14: 03b81c00
18: 2c43bcf0
1c: e0000150
20: 00000000
24: 00003067
28: 00000000
2c: 00000000
30: 00000000
34: 00fe0cff
38: 0000100b

In case you are curious, the driver is: drivers/mmc/host/meson-mx-sdhc-mmc.c


Best regards,
Martin




[Index of Archives]     [Linux Memonry Technology]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux