This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM3352: SDK 08.02.00.24 nand ecc mode

Part Number: AM3352

Hello TI team,

We are using nand flash(MT29F2G08ABAEAWP) on custom board.

Below is the gpmc define of dts file.

&gpmc {
	status = "okay";
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&nandflash_pins_default>;
	pinctrl-1 = <&nandflash_pins_sleep>;
	ranges = <0 0 0x08000000 0x1000000>;	/* CS0: 16MB for NAND */
	nand@0,0 {
		compatible = "ti,omap2-nand";
		reg = <0 0 4>; /* CS0, offset 0, IO size 4 */
		interrupt-parent = <&gpmc>;
		interrupts = <0 IRQ_TYPE_NONE>, /* fifoevent */
			     <1 IRQ_TYPE_NONE>;	/* termcount */
		rb-gpios = <&gpmc 0 GPIO_ACTIVE_HIGH>; /* gpmc_wait0 */
		ti,nand-ecc-opt = "bch8";
		ti,elm-id = <&elm>;
		nand-bus-width = <8>;
		gpmc,device-nand = "true";
		gpmc,device-width = <1>;
		gpmc,sync-clk-ps = <0>;
		gpmc,cs-on-ns = <0>;
		gpmc,cs-rd-off-ns = <44>;
		gpmc,cs-wr-off-ns = <44>;
		gpmc,adv-on-ns = <6>;
		gpmc,adv-rd-off-ns = <34>;
		gpmc,adv-wr-off-ns = <44>;
		gpmc,we-on-ns = <0>;
		gpmc,we-off-ns = <40>;
		gpmc,oe-on-ns = <0>;
		gpmc,oe-off-ns = <54>;
		gpmc,access-ns = <64>;
		gpmc,rd-cycle-ns = <82>;
		gpmc,wr-cycle-ns = <82>;
		gpmc,bus-turnaround-ns = <0>;
		gpmc,cycle2cycle-delay-ns = <0>;
		gpmc,clk-activation-ns = <0>;
		gpmc,wr-access-ns = <40>;
		gpmc,wr-data-mux-bus-ns = <0>;

		/* MTD partition table */
		/* All SPL-* partitions are sized to minimal length
		* which can be independently programmable. For
		* NAND flash this is equal to size of erase-block */
		#address-cells = <1>;
		#size-cells = <1>;
		partition@0 {
		label = "NAND.SPL";
		reg = <0x00000000 0x000020000>;
		};
		partition@1 {
		label = "NAND.SPL.backup1";
		reg = <0x00020000 0x00020000>;
		};
		partition@2 {
		label = "NAND.SPL.backup2";
		reg = <0x00040000 0x00020000>;
		};
		partition@3 {
		label = "NAND.SPL.backup3";
		reg = <0x00060000 0x00020000>;
		};
		partition@4 {
		label = "NAND.u-boot-spl-os";
		reg = <0x00080000 0x00040000>;
		};
		partition@5 {
		label = "NAND.u-boot";
		reg = <0x000C0000 0x00100000>;
		};
		partition@6 {
		label = "NAND.u-boot-env";
		reg = <0x001C0000 0x00020000>;
		};
		partition@7 {
		label = "NAND.u-boot-env.backup1";
		reg = <0x001E0000 0x00020000>;
		};
		partition@8 {
		label = "NAND.kernel";
		reg = <0x00200000 0x00800000>;
		};
		partition@9 {
		label = "NAND.file-system";
		reg = <0x00A00000 0x0F600000>;
		};
	};
};

We want to know whether the current nand flash mode is hw ecc or sw ecc.

1. Is the reference source set to hw ecc by default? Or is it set to sw ecc?

2. Where can I check what ecc mode is set in u-boot source code?

3. If it is set to sw ecc by deault, how to change it to hw ecc?

Please check.

Thank you.

S.C

  • Hello,
    Do we know if the NAND device has internal built-in ECC?

    AM335x TRM <26.1.8.4 NAND> is a good reference on NAND ECC supoort by ROM.
    ECC on AM335x SoC support is using the GPMC and ELM hardware.
    In addition ECC computation done by the ROM can be turned off completely by using SYSBOOT[9]. This is particularly useful when interfacing with NAND devices that have built in ECC engines.

    One reference on BCH scheme vs OOB size in u-boot/kernel
    www.kernel.org/.../gpmc-nand.txt

    Best,
    -Hong

  • Hello Hong,

    Thank you for the reply.

    Our nand flash has internal ECC.

    And, I could check the serveral information at TRM doc.

    The reason why I have a interet in this part is to know which mode to choose for faster booting speed.(speed of reading from nand)

    Also, Is 'nand-xfer-type' related with booting speed?  ("prefetch-polled", "polled", "prefetch-dma", "prefetch-irq")

    Please check.

    Thank you.

    S.C