i.MX6: Board-config for MTD and NAND

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

i.MX6: Board-config for MTD and NAND

ソリューションへジャンプ
3,712件の閲覧回数
kristianlein-ma
Contributor I

Hi!

We've got a custom board similar to Nitrogen6X (and SabreLite), where we've mounted a 8GB NAND chip (my schematic says K9LBG08U0D-PCB0). I cannot, however, seem to find an existing i.MX6 board that uses any chips like this.

I think my pads have been setup quite fine, but I'm struggeling with the NAND partitioning and drivers.

- How can I patch up my kernel board-config to setup NAND flash?

- Can my NAND-chip be auto-detected in any way?

- Where can I find a board-config example that uses a large NAND chip for main storage (and perhaps even sets up Android partitioning)

- What driver should I use for my NAND? "mxc_nand"? I see some use "physmap-flash" but that may be something entirely different

Thanks in advance,

Kristian

ラベル(2)
タグ(3)
0 件の賞賛
返信
1 解決策
1,473件の閲覧回数
EgleTeam
Contributor V

Kristian,

Have you tried a basic init? You can take as example the init on "board-mx6q-sabreauto.c" in Linux 3.0.35. Or our config (very simple):

static int __init es6_gpmi_nand_platform_init(void)

{

    return 0;

}

static const struct gpmi_nand_platform_data

     es6_gpmi_nand_platform_data __initconst = {

    .platform_init           = es6_gpmi_nand_platform_init,

    .min_prop_delay_in_ns    = 5,

    .max_prop_delay_in_ns    = 9,

    .max_chip_count          = 1,

    .enable_bbt              = 1,

};

imx6q_add_gpmi(&es6_gpmi_nand_platform_data); // On Board Init.

With the above simple code and adding support for "nand flash", "mtd" and "ubi",  the kernel should detect your device. We have tested two devices of 512MB (8 bit) from Micron and Spansion: both are recognized but the second one doesn't work with this Kernel.

Good luck!

元の投稿で解決策を見る

0 件の賞賛
返信
3 返答(返信)
1,473件の閲覧回数
jkobs2014
Contributor III

In the end, this was very helpful.  Not all board definitions, even from freescale, properly start up the gpmi code.  HOWEVER, in addition to just the "simple" code above, the MUX tables are required.

Regardless, this was an excellent hint.  If your gpmi driver is not getting started properly, and you're not getting a chip detection, this is a good place to start looking.

0 件の賞賛
返信
1,474件の閲覧回数
EgleTeam
Contributor V

Kristian,

Have you tried a basic init? You can take as example the init on "board-mx6q-sabreauto.c" in Linux 3.0.35. Or our config (very simple):

static int __init es6_gpmi_nand_platform_init(void)

{

    return 0;

}

static const struct gpmi_nand_platform_data

     es6_gpmi_nand_platform_data __initconst = {

    .platform_init           = es6_gpmi_nand_platform_init,

    .min_prop_delay_in_ns    = 5,

    .max_prop_delay_in_ns    = 9,

    .max_chip_count          = 1,

    .enable_bbt              = 1,

};

imx6q_add_gpmi(&es6_gpmi_nand_platform_data); // On Board Init.

With the above simple code and adding support for "nand flash", "mtd" and "ubi",  the kernel should detect your device. We have tested two devices of 512MB (8 bit) from Micron and Spansion: both are recognized but the second one doesn't work with this Kernel.

Good luck!

0 件の賞賛
返信
1,474件の閲覧回数
kristianlein-ma
Contributor I

Thanks Manuel, for pointing me in the right direction. I had tried that before, but my "es6_gpmi_nand_platform_init" was never called so I started looking elsewhere. It turned out I was missing CONFIG_MTD_NAND_GPMI_NAND=y. My flash is now detected:

NAND device: Manufacturer ID: 0x2c, Chip ID: 0x64 (Micron MT29F64G08CBABBWP)

gpmi-nand imx6q-gpmi-nand.0: enable asynchronous EDO mode 5

mtd: Giving out device 0 to gpmi-nand

GPMI NAND driver registered. (IMX)

Thanks!

Krist

0 件の賞賛
返信