Hello, Le 29/01/2024 à 12:17, Tony Lindgren a écrit : > * Romain Naour <romain.naour@xxxxxxxx> [240129 10:11]: >> Hello, >> >> Le 27/01/2024 à 05:48, Tony Lindgren a écrit : >>> Hi, >>> >>> * Romain Naour <romain.naour@xxxxxxxx> [240126 20:53]: >>>> Hello, >>>> >>>> I'm upgrading the kernel from 5.10.168 to 6.1.69 (both from TI tree) on a custom >>>> board based on a AM574x SoC and I noticed a regression on the sdhci-omap driver. >>>> >>>> The emmc was working on the 5.10 kernel using mmc-hs200 powered at 1,8v (mmc2). >>> >>> Is this limited to emmc or does it also happen with the micro-sd or wlan possibly? >> >> I can't test with a wlan device but I noticed the same issue on micro-sd (the >> mmc0 interface in my first post is a micro-sd) > > OK > >>> If the issue is emmc related, do you have mmc-pwrseq-emmc configured in the dts? >>> >>>> I'm able to reproduce on the IDK574x evaluation board (where the emmc is powered >>>> at 3v3) with vanilla kernels. >>> >>> OK, looks like only am5729-beagleboneai.dts has configured mmc-pwrseq-emmc. >>> >>>> I had to revert all commits related to "PM runtime functions" [1] and "card >>>> power off and enable aggressive PM" [2] from kernel 5.16 to use the emmc again >>>> on both boards. >>> >>> OK, this sounds like power sequence related when the emmc gets idled. >> >> It seems mmc0 ios infos are lost at some point, just after the kernel boot they >> are correct: >> >> cat /sys/kernel/debug/mmc0/ios >> clock: 50000000 Hz >> vdd: 21 (3.3 ~ 3.4 V) >> bus mode: 2 (push-pull) >> chip select: 0 (don't care) >> power mode: 2 (on) >> bus width: 2 (4 bits) >> timing spec: 2 (sd high-speed) >> signal voltage: 0 (3.30 V) >> driver type: 0 (driver type B) >> >> And without notice, ios became wrong: >> >> cat /sys/kernel/debug/mmc0/ios >> clock: 0 Hz >> vdd: 0 (invalid) >> bus mode: 2 (push-pull) >> chip select: 0 (don't care) >> power mode: 0 (off) >> bus width: 0 (1 bits) >> timing spec: 0 (legacy) >> signal voltage: 0 (3.30 V) >> driver type: 0 (driver type B) >> >> # cat /sys/bus/mmc/devices/mmc0:1234/type >> SD > > With a beagle x15, the ios values are correct after I do > something like fdisk -l /dev/mmcblk0: > > # cat /sys/kernel/debug/mmc0/ios > clock: 0 Hz > vdd: 0 (invalid) > bus mode: 2 (push-pull) > chip select: 0 (don't care) > power mode: 0 (off) > bus width: 0 (1 bits) > timing spec: 0 (legacy) > signal voltage: 0 (3.30 V) > driver type: 0 (driver type B) > > # fdisk -l /dev/mmcblk0 > ... > > # cat /sys/kernel/debug/mmc0/ios > clock: 50000000 Hz > vdd: 21 (3.3 ~ 3.4 V) > bus mode: 2 (push-pull) > chip select: 0 (don't care) > power mode: 2 (on) > bus width: 2 (4 bits) > timing spec: 2 (sd high-speed) > signal voltage: 0 (3.30 V) > driver type: 0 (driver type B) OK, I reproduced the same behavior on the AM574x evaluation board. I didn't know that ios can report clock 0 Hz and vdd invalid when the device is idle. I thought that was a symptom of my initial issue "mmc1: cache flush error -110". So, there is no issue on AM574x evaluation board. > > So I'm still guessing your issue is with emmc not getting reinitialized > properly as there's no mmc-pwrseq-emmc configured. Can you give it a > try? See am5729-beagleboneai.dts for an example. I don't understand how the emmc_pwrseq node can work on am5729-beagleboneai using gpio5_7 as reset-gpio since this pin it's not connected (F13 ball) emmc_pwrseq: emmc_pwrseq { compatible = "mmc-pwrseq-emmc"; reset-gpios = <&gpio5 7 GPIO_ACTIVE_LOW>; }; https://openbeagle.org/beagleboard/beaglebone-ai/-/blob/master/BeagleBone-AI_RevA2_sch.pdf Note that mmc2 node is using ti,needs-special-reset property that is not used in shdci-omap driver but only in omap_hsmmc. Best regards, Romain > > Regards, > > Tony