Tool/software: Linux
Hi,
In a previous thread I asked how to stop the kernel from reconfiguring the GPMC parameters set by the bootloader (the thread was locked due to inactivity, I had to stay away from work and just got around recently to investigating this issue further). I received a reply telling me to use the "ti,no-reset-on-init" setting in the .dts file, but this seems to cause the kernel to crash because it can't mount /.
Original .dts node:
&gpmc {
status = "okay";
ranges = <0 0 0x01000000 0x10000000>; /* CS0: 256MB */
nand@0,0 {
compatible = "ti,omap2-nand";
reg = <0 0 8>; /* 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-width = <1>;
gpmc,sync-clk-ps = <0>;
gpmc,cs-on-ns = <0>;
gpmc,cs-rd-off-ns = <25>;
gpmc,cs-wr-off-ns = <25>;
gpmc,adv-on-ns = <0>;
gpmc,adv-rd-off-ns = <25>;
gpmc,adv-wr-off-ns = <25>;
gpmc,we-on-ns = <0>;
gpmc,we-off-ns = <10>;
gpmc,oe-on-ns = <0>;
gpmc,oe-off-ns = <10>;
gpmc,access-ns = <20>;
gpmc,rd-cycle-ns = <25>;
gpmc,wr-cycle-ns = <25>;
gpmc,wr-access-ns = <0>;
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 = "SPL";
reg = <0x00000000 0x000020000>;
};
partition@1 {
label = "SPL.backup1";
reg = <0x00020000 0x00020000>;
};
partition@2 {
label = "SPL.backup2";
reg = <0x00040000 0x00020000>;
};
partition@3 {
label = "SPL.backup3";
reg = <0x00060000 0x00020000>;
};
partition@4 {
label = "u-boot";
reg = <0x00080000 0x00080000>;
};
partition@5 {
label = "u-boot.backup1";
reg = <0x00100000 0x00080000>;
};
partition@6 {
label = "u-boot.backup2";
reg = <0x00180000 0x00080000>;
};
partition@7 {
label = "u-boot.backup3";
reg = <0x00200000 0x00080000>;
};
partition@8 {
label = "kernel";
reg = <0x00280000 0x00500000>;
};
partition@9 {
label = "fs";
reg = <0x00780000 0x01400000>;
};
partition@10 {
label = "drivers";
reg = <0x01b80000 0x004e0000>;
};
partition@11 {
label = "dtb";
reg = <0x02060000 0x00020000>;
};
partition@12 {
label = "app";
reg = <0x02080000 0x00a00000>;
};
partition@13 {
label = "upgd";
reg = <0x02a80000 0x00200000>;
};
partition@14 {
label = "hwinfo";
reg = <0x02c80000 0x00100000>;
};
partition@15 {
label = "dmin";
reg = <0x02d80000 0x00a00000>;
};
partition@16 {
label = "dgen";
reg = <0x03780000 0x0c880000>;
};
};
};
Modified .dts node:
&gpmc {
status = "okay";
ranges = <0 0 0x01000000 0x10000000>; /* CS0: 256MB */
ti,no-reset-on-init;
nand@0,0 {
compatible = "ti,omap2-nand";
reg = <0 0 8>; /* 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-width = <1>;
/* 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 = "SPL";
reg = <0x00000000 0x000020000>;
};
partition@1 {
label = "SPL.backup1";
reg = <0x00020000 0x00020000>;
};
partition@2 {
label = "SPL.backup2";
reg = <0x00040000 0x00020000>;
};
partition@3 {
label = "SPL.backup3";
reg = <0x00060000 0x00020000>;
};
partition@4 {
label = "u-boot";
reg = <0x00080000 0x00080000>;
};
partition@5 {
label = "u-boot.backup1";
reg = <0x00100000 0x00080000>;
};
partition@6 {
label = "u-boot.backup2";
reg = <0x00180000 0x00080000>;
};
partition@7 {
label = "u-boot.backup3";
reg = <0x00200000 0x00080000>;
};
partition@8 {
label = "kernel";
reg = <0x00280000 0x00500000>;
};
partition@9 {
label = "fs";
reg = <0x00780000 0x01400000>;
};
partition@10 {
label = "drivers";
reg = <0x01b80000 0x004e0000>;
};
partition@11 {
label = "dtb";
reg = <0x02060000 0x00020000>;
};
partition@12 {
label = "app";
reg = <0x02080000 0x00a00000>;
};
partition@13 {
label = "upgd";
reg = <0x02a80000 0x00200000>;
};
partition@14 {
label = "hwinfo";
reg = <0x02c80000 0x00100000>;
};
partition@15 {
label = "dmin";
reg = <0x02d80000 0x00a00000>;
};
partition@16 {
label = "dgen";
reg = <0x03780000 0x0c880000>;
};
};
};
Is this modification correct? I tried it with the 'ti,no-reset-on-init' only in the gpmc node and only in the nand node, but both ways caused the same error: 'Kernel panic - not syncing: Fatal exception'
Regards,
Guilherme