I can't seem to get UHS-I SD Card configured on my LS1043A. I have the same driver working on the LS1012A so I'm wondering if I'm missing something specific to the 1043. When I insert the SD Card (that should detect as an SD104) I:
1 - Turn off the eSDHC clock
2 - Write bits 4-7 of PRSSTAT at address 1560024h (I've also tried bits 0-3 and 0-7)
3 - I set the block to 1.8V by enabling bit 21 (VOLT_SEL) of PROCTL at address 1560028h
4 - Wait 5ms
5 - Turn on the eSDHC clock
6 - Read back PROCTL and make sure VOLT_SEL is enabled
7 - Read back PRSSTAT and make sure the bits that I wrote in step 2 are still enabled
The failure is at step 7 where I read 0x8D0008 from PRSSTAT. If it helps PROCTL is set to 0x420.
Solved! Go to Solution.
On the 1043ARDB you need to enable EVDD_SEL and SOFT_MUX_ON.EVDD_CTRL_EN bits in the CPLD.
Hi Brian,
I'm trying to get UHS-1 card working on LS1043ardb. I'm just wondering have you got it working on ls1043ardb?
On my board, I could get card attached as SDR104, but it will fail at second block tuning.
[ 242.631787] mmc_sd_init_uhs_card:643: mmc execute tunning
[ 242.637184] mmc0: new ultra high speed SDR104 SDHC card at address 59b4
[ 242.644162] mmcblk0: mmc0:59b4 SRT 15.1 GiB
[ 242.649542] mmcblk0: p1 p2
[ 242.705812] mmcblk0: error -110 sending stop command, original cmd response 0x900, card st0
[ 242.788552] sdhci: Timeout waiting for Buffer Read Ready interrupt during tuning procedurek
[ 242.800112] mmc0: tuning execution failed: -5
[ 242.804475] mmcblk0: error -84 sending status command, retrying
[ 242.884551] sdhci: Timeout waiting for Buffer Read Ready interrupt during tuning procedurek
[ 242.896110] mmc0: tuning execution failed: -5
[ 242.900461] mmcblk0: error -5 sending status command, retrying
[ 242.906298] mmcblk0: error -84 sending status command, aborting
[ 253.040548] mmc0: Timeout waiting for hardware cmd interrupt.
[ 253.046283] sdhci: =========== REGISTER DUMP (mmc0)===========
[ 253.052104] sdhci: Sys addr: 0x00000000 | Version: 0x00002102
[ 253.057925] sdhci: Blk size: 0x00000000 | Blk cnt: 0x00000000
[ 253.063745] sdhci: Argument: 0x000001aa | Trn mode: 0x00000000
[ 253.069565] sdhci: Present: 0x01fd0009 | Host ctl: 0x00000020
[ 253.075386] sdhci: Power: 0x00000000 | Blk gap: 0x00000000
[ 253.081206] sdhci: Wake-up: 0x00000000 | Clock: 0x000020f8
[ 253.087026] sdhci: Timeout: 0x00000000 | Int stat: 0x00000000
[ 253.092846] sdhci: Int enab: 0x007f1087 | Sig enab: 0x007f1083
[ 253.098667] sdhci: AC12 err: 0x00000000 | Slot int: 0x00002102
[ 253.104488] sdhci: Caps: 0x37fa0000 | Caps_1: 0x0000af00
[ 253.110308] sdhci: Cmd: 0x0000081a | Max curr: 0x00000000
[ 253.116128] sdhci: Host ctl2: 0x00000000
[ 253.120039] sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x0000000000000000
[ 253.126553] sdhci: ===========================================
If you got it working, could you please give me some clues?
Thanks.
Regards,
Tony Kong
According to SD specifications, only a power cycle could reset the SD card working on UHS-I speed mode. However, our boards couldn't provide a power cycle for SD card even with reset. This initializes SD UHS-I card to use high speed mode after board reset when the card is on UHS-I speed mode. The workaround is using power off/on instead of reset when using SD UHS-I card.
Have a great day,
Pavel Chubakov
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
On the 1043ARDB you need to enable EVDD_SEL and SOFT_MUX_ON.EVDD_CTRL_EN bits in the CPLD.
I'm still suck here. Is there anyone that can offer some insight?
Just bumping this up. I'm wondering if anyone has confirmed UHS-I to be working on LS1043ARDB.
The PRSSTAT of the LS1043a and LS1012a is read only register.
Do you want to set the UHSM field?
Have a great day,
Pavel Chubakov
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Normally I would set the UHSM bit in AUTOCERR_SYSCTL2 later, but even if I do there is still something wrong. Shouldn't the DAT bits in PRSSTAT be set to 1? I follow these same steps in the LS1012A and works, but not in the LS1043A. Let me outline my steps along with the value of the PRSSTAT register.
That is on LS1043A where a UHS-1, SDR104 card is not working. On LS1012A where it does work the steps are the except for Step 12 where PRSSTAT = 0xF8D0008.
If it helps here is a register dump of the eSDHC registers on 1043:
===========================================================
HCTL_VER 2102 CAP 37f20000 CAP2 af07
SDMA_ARG2 0 ADMA 0 ADMA_ES 0 BLK 0 ARG 0 CMD b1a0000 RSP10 320 RSP32 b RSP54 0 RSP76 0
IS 0 IE 10f0081 ISE 117f11ff WATML 100010 FORCE 0 TUNE_CTRL 80000002 TUNE_PTR 0
PSTATE 8d0008 PCTL 420 SYSCTL e20f8 SYSCTL2 30000 CLKCTRL 0 ESDHCCTL 40
===========================================================
Any idea what is going wrong here?
Bumping up.
I should also mention that I have enabled auto voltage selection in SDHCIOVSELCR by writing 1 to TGLEN 11b to VSELVAL.