Can't configure SD Card UHS-I on LS1043A

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Can't configure SD Card UHS-I on LS1043A

Jump to solution
2,432 Views
brianpaiva
Contributor III

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.

0 Kudos
Reply
1 Solution
2,018 Views
brianpaiva
Contributor III

On the 1043ARDB you need to enable EVDD_SEL and SOFT_MUX_ON.EVDD_CTRL_EN bits in the CPLD.

View solution in original post

0 Kudos
Reply
8 Replies
2,018 Views
tkong
Contributor I

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

0 Kudos
Reply
2,018 Views
Pavel
NXP Employee
NXP Employee

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!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos
Reply
2,019 Views
brianpaiva
Contributor III

On the 1043ARDB you need to enable EVDD_SEL and SOFT_MUX_ON.EVDD_CTRL_EN bits in the CPLD.

0 Kudos
Reply
2,018 Views
brianpaiva
Contributor III

I'm still suck here.  Is there anyone that can offer some insight?

0 Kudos
Reply
2,018 Views
brianpaiva
Contributor III

Just bumping this up.  I'm wondering if anyone has confirmed UHS-I to be working on LS1043ARDB.

0 Kudos
Reply
2,018 Views
Pavel
NXP Employee
NXP Employee

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!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos
Reply
2,018 Views
brianpaiva
Contributor III

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.

  1. At boot time Register 0x01570408 is set to auto voltage selection.
  2. I start off with PRSSTAT = 0xD0008.
  3. Disable SD Clock (SYSCTL bit 3 = 0)
  4. Set SDHC_VS to 1.8V (PROCTL -> VOLT_SEL = 1)
  5. Sleep 5ms
  6. Set UHSM field (AUTOCERR_SYSCTL2 -> AUTOCERR_SYSCTL2 = 011b)
  7. Sleep 5ms
  8. PRSSTAT = 0xD0008
  9. Enable SD Clock
  10. PRSSTAT = 0xD0008
  11. Sleep 1ms
  12. PRSSTAT = 0x8D0008

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?

0 Kudos
Reply
2,018 Views
brianpaiva
Contributor III

Bumping up.

I should also mention that I have enabled auto voltage selection in SDHCIOVSELCR by writing 1 to TGLEN 11b to VSELVAL.

0 Kudos
Reply