So, what's happening is that omap-hsmmc tries to set its functional clock to the DT-specified max frequency. However, although the choices available are { 192, 128, 96, 64 } MHz, it will only pick 192 or 96 MHz, I guess because it's afraid to toggle a mux? (even though it is the only downstream user of that clock).
It will use 128 MHz or 64 MHz if you first toggle the mux in u-boot: mw 4A009630 00070000
I seem to be able to write eMMC at 96 MHz and read it at 128 MHz. The mux seems to hold up quite well, although I'm not sure I'd *trust* it at those speeds, especially not since the driver currently seems to have very bad error handling and treats crc errors as fatal IO errors instead of retrying?
A few large transfers at those speeds did also warm up the whole thing to the point that my charger led started blinking due to battery temperature max.
And what the hell is happening here on my boot disk in primary SD slot:
[ 2.682459] omap_hsmmc 4809c000.mmc: set clock to 192000 kHz / 480 = 400 kHz [ 2.685264] omap_hsmmc 4809c000.mmc: set clock to 192000 kHz / 480 = 400 kHz [ 2.687072] omap_hsmmc 4809c000.mmc: set clock to 192000 kHz / 1 = 192000 kHz [ 2.762999] mmc0: new ultra high speed SDR104 SDHC card at address 59b4 [ 2.768274] mmcblk0: mmc0:59b4 RUNSD 29.5 GiB [ 2.774714] mmcblk0: p1 ... [ 2.908282] EXT4-fs (mmcblk0p1): INFO: recovery required on readonly filesystem [ 2.910205] EXT4-fs (mmcblk0p1): write access will be enabled during recovery [ 2.914126] omap_hsmmc 4809c000.mmc: ADMA err: ST_TFR, desc at 0xfd858020 follows the erroneous one [ 3.008230] omap_hsmmc 4809c000.mmc: ADMA err: ST_TFR, desc at 0xfd858020 follows the erroneous one [ 3.039096] mmcblk0: error -84 transferring data, sector 16672, nr 48, cmd response 0x900, card status 0xb00 [ 3.042740] omap_hsmmc 4809c000.mmc: set clock to 192000 kHz / 1 = 192000 kHz [ 3.054383] omap_hsmmc 4809c000.mmc: set clock to 192000 kHz / 1 = 192000 kHz [ 3.089025] omap_hsmmc 4809c000.mmc: set clock to 192000 kHz / 480 = 400 kHz [ 3.119008] omap_hsmmc 4809c000.mmc: set clock to 192000 kHz / 480 = 400 kHz [ 3.123061] omap_hsmmc 4809c000.mmc: set clock to 192000 kHz / 480 = 400 kHz [ 3.153166] omap_hsmmc 4809c000.mmc: set clock to 192000 kHz / 480 = 400 kHz [ 3.154976] omap_hsmmc 4809c000.mmc: set clock to 192000 kHz / 4 = 48000 kHz [ 3.156923] omap_hsmmc 4809c000.mmc: set clock to 192000 kHz / 4 = 48000 kHz [ 3.580391] EXT4-fs (mmcblk0p1): recovery complete [ 3.587965] EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode. Opts: (null)
It remains at 3.3V 48 MHz from there on...
The "recovery required" is another interesting bit, this happens every single time, even after I've shut down cleanly. This is with an UHS-I microSD in an SD adapter in the primary slot.