LX2080A SPI3 & SDHC1 using problem

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

LX2080A SPI3 & SDHC1 using problem

1,069 Views
Rex4_Huang
Contributor I

Hi Sir,

Could you provide GEN A-050752 for reference?

May I know if LX2080A can simultaneously use SPI3 and SDHC1?

SDHC1 used for SD card slot for RCW source

SPI3 used for other functions 

Rex4_Huang_0-1697081317296.png

Thanks.

0 Kudos
Reply
7 Replies

1,045 Views
yipingwang
NXP TechSupport
NXP TechSupport

You have faced with erratum A-050752.

I have sent LX2160A Chip Errata list to you, please refer to the workaround of A-050752.

0 Kudos
Reply

575 Views
qhr
Contributor I

@yipingwang 

Could you send the file LX2160A Chip Errata?
Best Regards.

0 Kudos
Reply

1,007 Views
Lori1
Contributor I

Please kindly provide us the download link for erratum A-050752. I cannot find the erratum from NXP site.

0 Kudos
Reply

1,039 Views
Rex4_Huang
Contributor I

Hi Sir,

Thanks for your update, I have got the file,

I would like to double check with you, does the issue can be reslove by the software workaround ? because I think that SPI will not be used when LX2 in the bootloader phase, Thanks.

 

Workaround:

Do the following after the PBI has completed and in bootloader phase prior to using SPI3
or GPIO1_[14:12]:
1. Read DCFG_CCSR_PORSR1, dat = DCFG_CCSR_PORSR1
2. Clear RCW_SRC bits (i.e. bits 26:23 of PORSR1[26:23]), dat[26:23] = 0
3. Write the updated data value of dat to address 0x7_0010_0000
4. Write 0x0200_0000 to address 0x01e6_0000 to mask HRESET_B

0 Kudos
Reply

992 Views
yipingwang
NXP TechSupport
NXP TechSupport

Yes, the issue can be resolved by the software workaround.

DPSI and SD card(HS only) work when we configure

For below listed RCW settings

SDHC1_DIR_PMUX=3
SDHC1_DS_PMUX=2
SDHC1_BASE_PMUX=3

In order to get DSPI and SD card (both HS and UHS modes) work simultaneously, SDHC1_BASE_PMUX should be set to 0. The configuration should be fine after this change. Please also make sure that you do indeed to make change to an UHS mode in your code and switch the voltage to 1.8V as part of the routine.

I searched the code to control the EVDD voltage under Linux code. Please refer the subroutine esdhc_signal_voltage_switch in drivers/mmc/host/sdhci-of-esdhc.c. You need to switch the voltage to 1.8V when running at an UHS mode.

 

static int esdhc_signal_voltage_switch(struct mmc_host *mmc,

                                       struct mmc_ios *ios)

{

        struct sdhci_host *host = mmc_priv(mmc);

        struct device_node *scfg_node;

        void __iomem *scfg_base = NULL;

        u32 sdhciovselcr;

        u32 val;

 

        /*

         * Signal Voltage Switching is only applicable for Host Controllers

         * v3.00 and above.

         */

        if (host->version < SDHCI_SPEC_300)

               return 0;

 

        val = sdhci_readl(host, ESDHC_PROCTL);

 

        switch (ios->signal_voltage) {

        case MMC_SIGNAL_VOLTAGE_330:

                val &= ~ESDHC_VOLT_SEL;

                sdhci_writel(host, val, ESDHC_PROCTL);

                return 0;

        case MMC_SIGNAL_VOLTAGE_180:

                scfg_node = of_find_matching_node(NULL, scfg_device_ids);

                if (scfg_node)

                        scfg_base = of_iomap(scfg_node, 0);

                if (scfg_base) {

                        sdhciovselcr = SDHCIOVSELCR_TGLEN |

                                       SDHCIOVSELCR_VSELVAL;

                        iowrite32be(sdhciovselcr,

                                scfg_base + SCFG_SDHCIOVSELCR);

 

                        val |= ESDHC_VOLT_SEL;

                        sdhci_writel(host, val, ESDHC_PROCTL);

                        mdelay(5);

 

                        sdhciovselcr = SDHCIOVSELCR_TGLEN |

                                       SDHCIOVSELCR_SDHC_VS;

                        iowrite32be(sdhciovselcr,

                                scfg_base + SCFG_SDHCIOVSELCR);

                        iounmap(scfg_base);

                } else {

                        val |= ESDHC_VOLT_SEL;

                        sdhci_writel(host, val, ESDHC_PROCTL);

                }

                return 0;

        default:

                return 0;

}

}

0 Kudos
Reply

981 Views
Rex4_Huang
Contributor I

Hi Sir,

Thanks your check,

but I have used NVT4857UKZ for the SDHC1 IO voltage translator from NXP suggestion, if so, Can SDHC1 only support UHS & HS mode when SPI3 works simultaneously even NVT4857UKZ used? may I remove the NVT4857UKZ if SDHC1 only supprt UHS & HS mode?

Thanks.

 

0 Kudos
Reply

877 Views
yipingwang
NXP TechSupport
NXP TechSupport

Can SDHC1 only support UHS & HS mode when SPI3 works simultaneously even NVT4857UKZ used?

NXP: Yes after the workaround is applied.

may I remove the NVT4857UKZ if SDHC1 only support UHS & HS mode?

NXP: No. SDHC1 interface is only 1.8V.

0 Kudos
Reply