How to use the Parallel NOR-Flash on custom board based on imx6qsabresd

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

How to use the Parallel NOR-Flash on custom board based on imx6qsabresd

1,115 Views
sumish_ks
Contributor II

Hello,

I am trying to use S29GL01GS parallel NOR flash (128MB) on custom board based on imx6qsabresd. I have configured weim in the dts file as shown below:

weim {
        pinctrl_weim_cs0_2: weim_cs0grp-2 {
            fsl,pins = <
                MX6QDL_PAD_EIM_CS0__EIM_CS0_B   0xb0b1/*custom add*/
            >;
        };

        pinctrl_weim_nor_2: weim_norgrp-2 {
            fsl,pins = <                
                MX6QDL_PAD_EIM_OE__EIM_OE_B     0xb0b1
                MX6QDL_PAD_EIM_RW__EIM_RW       0xb0b1
                MX6QDL_PAD_EIM_WAIT__EIM_WAIT_B 0xb060
                
                MX6QDL_PAD_CSI0_DATA_EN__EIM_DATA00  0x1b0b0
                MX6QDL_PAD_CSI0_VSYNC__EIM_DATA01 0x1b0b0    
                MX6QDL_PAD_CSI0_DAT4__EIM_DATA02  0x1b0b0    
                MX6QDL_PAD_CSI0_DAT5__EIM_DATA03  0x1b0b0    
                MX6QDL_PAD_CSI0_DAT6__EIM_DATA04  0x1b0b0    
                MX6QDL_PAD_CSI0_DAT7__EIM_DATA05  0x1b0b0    
                MX6QDL_PAD_CSI0_DAT8__EIM_DATA06  0x1b0b0    
                MX6QDL_PAD_CSI0_DAT9__EIM_DATA07  0x1b0b0    
                MX6QDL_PAD_CSI0_DAT12__EIM_DATA08 0x1b0b0    
                MX6QDL_PAD_CSI0_DAT13__EIM_DATA09 0x1b0b0    
                MX6QDL_PAD_CSI0_DAT14__EIM_DATA10 0x1b0b0    
                MX6QDL_PAD_CSI0_DAT15__EIM_DATA11 0x1b0b0    
                MX6QDL_PAD_CSI0_DAT16__EIM_DATA12 0x1b0b0    
                MX6QDL_PAD_CSI0_DAT17__EIM_DATA13 0x1b0b0    
                MX6QDL_PAD_CSI0_DAT18__EIM_DATA14 0x1b0b0    
                MX6QDL_PAD_CSI0_DAT19__EIM_DATA15 0x1b0b0
                /* address */
                MX6QDL_PAD_EIM_A25__EIM_ADDR25 0xb0b1 /*custom add*/
                MX6QDL_PAD_EIM_A24__EIM_ADDR24 0xb0b1 /*custom add*/
                MX6QDL_PAD_EIM_A23__EIM_ADDR23 0xb0b1
                MX6QDL_PAD_EIM_A22__EIM_ADDR22 0xb0b1
                MX6QDL_PAD_EIM_A21__EIM_ADDR21 0xb0b1
                MX6QDL_PAD_EIM_A20__EIM_ADDR20 0xb0b1
                MX6QDL_PAD_EIM_A19__EIM_ADDR19 0xb0b1
                MX6QDL_PAD_EIM_A18__EIM_ADDR18 0xb0b1
                MX6QDL_PAD_EIM_A17__EIM_ADDR17 0xb0b1
                MX6QDL_PAD_EIM_A16__EIM_ADDR16 0xb0b1
                MX6QDL_PAD_EIM_DA15__EIM_AD15  0xb0b1
                MX6QDL_PAD_EIM_DA14__EIM_AD14  0xb0b1
                MX6QDL_PAD_EIM_DA13__EIM_AD13  0xb0b1
                MX6QDL_PAD_EIM_DA12__EIM_AD12  0xb0b1
                MX6QDL_PAD_EIM_DA11__EIM_AD11  0xb0b1
                MX6QDL_PAD_EIM_DA10__EIM_AD10  0xb0b1
                MX6QDL_PAD_EIM_DA9__EIM_AD09   0xb0b1
                MX6QDL_PAD_EIM_DA8__EIM_AD08   0xb0b1
                MX6QDL_PAD_EIM_DA7__EIM_AD07   0xb0b1
                MX6QDL_PAD_EIM_DA6__EIM_AD06   0xb0b1
                MX6QDL_PAD_EIM_DA5__EIM_AD05   0xb0b1
                MX6QDL_PAD_EIM_DA4__EIM_AD04   0xb0b1
                MX6QDL_PAD_EIM_DA3__EIM_AD03   0xb0b1
                MX6QDL_PAD_EIM_DA2__EIM_AD02   0xb0b1
                MX6QDL_PAD_EIM_DA1__EIM_AD01   0xb0b1
                MX6QDL_PAD_EIM_DA0__EIM_AD00   0xb0b1
            >;
        };
    };


&weim {
        compatible = "fsl,imx6q-weim";
        reg = <0x021b8000 0x4000>;
        clocks = <&clks IMX6QDL_CLK_EIM_SLOW>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_weim_nor_2 &pinctrl_weim_cs0_2>;  
        #address-cells = <2>;//see below:1 cell for 4 hex digits
        #size-cells = <1>;
            ranges = <0 0 0x08000000 0x08000000>;  
        status = "okay";

        nor@0,0 {
            compatible = "cfi-flash";
            reg = <0 0 0x02000000>;
            #address-cells = <1>;
            #size-cells = <1>;
            bank-width = <2>;
            fsl,weim-cs-timing = <0x10610281 0x00000001 0x0b020000
                0x00008000 0x1c000000 0x00000000>;


            };
    };

Kernel Config file contents:

CONFIG_MTD=y
CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_BLOCK=y
CONFIG_MTD_CFI=y
CONFIG_MTD_JEDECPROBE=y
CONFIG_MTD_CFI_INTELEXT=y
CONFIG_MTD_CFI_AMDSTD=y
CONFIG_MTD_CFI_STAA=y
CONFIG_MTD_PHYSMAP_OF=y
CONFIG_MTD_DATAFLASH=y
CONFIG_MTD_M25P80=y
CONFIG_MTD_SST25L=y
CONFIG_MTD_NAND=y
CONFIG_MTD_NAND_GPMI_NAND=y
CONFIG_MTD_NAND_MXC=y
CONFIG_MTD_SPI_NOR=y
CONFIG_SPI_FSL_QUADSPI=y
CONFIG_MTD_UBI=y

When I try to boot, I get this error message:

of-flash 8000000.nor: do_map_probe() failed

Did I miss something? Can anyone tell me how to use it?

Thank you very much in advance.

0 Kudos
2 Replies

795 Views
igorpadykov
NXP Employee
NXP Employee

Hi Sumish

i.MX6Q Sabre Auto board supports parallel nor and one can look at its dts example:

imx6q-sabreauto-gpmi-weim.dts

imx6q-sabreauto-gpmi-weim.dts\dts\boot\arm\arch - linux-imx - i.MX Linux kernel 

Linux driver is described in sect.3.2 EIM NOR attached Linux Manual.

For programming images one can use mfg tool script

  ..More_scripts/mfgtool2-yocto-mx-sabreauto-weim-nor.vbs

https://www.nxp.com/webapp/Download?colCode=IMX6_L4.9.88_2.0.0_MFG_TOOL&appType=license&location=nul... 

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

795 Views
sumish_ks
Contributor II

Hi igor,

 

I have done configurations according to imx6q sabre auto board dts example and I am still getting that error. Do I need to add S29GL01GS NOR flash driver to drivers/mtd directory ?

 

Thanks & Regards,

Sumish

0 Kudos