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.

"gpmc" node in .dts file not being used correctly

Other Parts Discussed in Thread: TPS65217

Hello,

I'm having a problem where the GPMC registers are not being configured correctly (or are being overwritten) in "linux-3.14.43".
This was previously working OK in "linux-3.12.9".

With linux-3.12.9:
I'm using the GPMC to creat a peripheral bus to connect to an external QUART and DUART. I'm first configuring the GPMC in u-boot.
And then again in the kernel by adding the required information to the "am335x-bone-common.dtsi" file (See included am335x-bone-
common.dtsi file). Everything works OK, and I'm able to talk to the QUART and DUART. In fact, I can comment out the GPMC timing
information in the am335x-bone-common.dtsi file, and it still works. The kernel just leaves the settings as they were set in u-
boot.

With linux-3.14.43:
Last week I decided to update to Linux version 3.14.43 (from your latest SDK) to try to correct a serial data loss problem. Now
the bus isn't working. When I used the debugger to check the GPMC registers, they were all changed. They were NOT set to the
values they were set to in u-boot. And, they were NOT set to the values specified in the am335x-bone-common.dtsi file.

QUESTION:
In linux-3.14.43, something else in the kernel is setting the GPMC registers. This was not happening in linux-3.12.9. Can you
tell me what is doing this?

Thank you for your time,
Everett

=====================================================================
=====================================================================

/*
* Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/

/ {
/*model = "TI AM335x BeagleBone";
compatible = "ti,am335x-bone", "ti,am33xx";*/
model = "TI AM335x EVM";
compatible = "ti,am335x-evm", "ti,am33xx";

cpus {
cpu@0 {
cpu0-supply = <&dcdc2_reg>;
};
};

memory {
device_type = "memory";
reg = <0x80000000 0x10000000>; /* 256 MB */
};

vmmcsd_fixed: fixedregulator@0 {
compatible = "regulator-fixed";
regulator-name = "vmmcsd_fixed";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
};

&am33xx_pinmux {
pinctrl-names = "default";

i2c0_pins: pinmux_i2c0_pins {
pinctrl-single,pins = <
/*0x188 (PIN_INPUT_PULLUP | MUX_MODE0) /* i2c0_sda.i2c0_sda */
0x188 0x28 /* i2c0_sda, INPUT | MODE0 */
/*0x18c (PIN_INPUT_PULLUP | MUX_MODE0) /* i2c0_scl.i2c0_scl */
0x18c 0x28 /* i2c0_scl, INPUT | MODE0 */
>;
};

uart0_pins: pinmux_uart0_pins {
pinctrl-single,pins = <
/*0x170 (PIN_INPUT_PULLUP | MUX_MODE0) /* uart0_rxd.uart0_rxd */
/*0x174 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart0_txd.uart0_txd */
0x170 0x28 /* uart0_rxd, INPUT | MODE0 */
0x174 0x08 /* uart0_txd, OUTPUT | MODE0 */
>;
};

nandflash_pins_s0: nandflash_pins_s0 {
pinctrl-single,pins = <
/*0x0 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad0.gpmc_ad0 */
/*0x4 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad1.gpmc_ad1 */
/*0x8 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad2.gpmc_ad2 */
/*0xc (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad3.gpmc_ad3 */
/*0x10 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad4.gpmc_ad4 */
/*0x14 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad5.gpmc_ad5 */
/*0x18 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad6.gpmc_ad6 */
/*0x1c (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_ad7.gpmc_ad7 */
/*0x70 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_wait0.gpmc_wait0 */
/*0x74 (PIN_INPUT_PULLUP | MUX_MODE7) /* gpmc_wpn.gpio0_30 */
/*0x7c (PIN_OUTPUT | MUX_MODE0) /* gpmc_csn0.gpmc_csn0 */
/*0x90 (PIN_OUTPUT | MUX_MODE0) /* gpmc_advn_ale.gpmc_advn_ale */
/*0x94 (PIN_OUTPUT | MUX_MODE0) /* gpmc_oen_ren.gpmc_oen_ren */
/*0x98 (PIN_OUTPUT | MUX_MODE0) /* gpmc_wen.gpmc_wen */
/*0x9c (PIN_OUTPUT | MUX_MODE0) /* gpmc_be0n_cle.gpmc_be0n_cle */
0x000 0x20 /* gpmc_ad0, INPUT_PULLDOWN | MODE0 */
0x004 0x20 /* gpmc_ad1, INPUT_PULLDOWN | MODE0 */
0x008 0x20 /* gpmc_ad2, INPUT_PULLDOWN | MODE0 */
0x00c 0x20 /* gpmc_ad3, INPUT_PULLDOWN | MODE0 */
0x010 0x20 /* gpmc_ad4, INPUT_PULLDOWN | MODE0 */
0x014 0x20 /* gpmc_ad5, INPUT_PULLDOWN | MODE0 */
0x018 0x20 /* gpmc_ad6, INPUT_PULLDOWN | MODE0 */
0x01c 0x20 /* gpmc_ad7, INPUT_PULLDOWN | MODE0 */
/*......................................................................*/
/* ISSUE: Ev Sykes - (ARM BOARD REV B) - Mods for 16-bit NAND. */
0x020 0x20 /* gpmc_ad8, INPUT_PULLDOWN | MODE0 */
0x024 0x20 /* gpmc_ad9, INPUT_PULLDOWN | MODE0 */
0x028 0x20 /* gpmc_ad10, INPUT_PULLDOWN | MODE0 */
0x02c 0x20 /* gpmc_ad11, INPUT_PULLDOWN | MODE0 */
0x030 0x20 /* gpmc_ad12, INPUT_PULLDOWN | MODE0 */
0x034 0x20 /* gpmc_ad13, INPUT_PULLDOWN | MODE0 */
0x038 0x20 /* gpmc_ad14, INPUT_PULLDOWN | MODE0 */
0x03c 0x20 /* gpmc_ad15, INPUT_PULLDOWN | MODE0 */
/*......................................................................*/
0x070 0x30 /* gpmc_wait0, INPUT_PULLUP | MODE0 */
0x074 0x10 /* gpmc_wpn, OUTPUT_PULLUP | MODE0 */
0x07c 0x10 /* gpmc_csn0, OUTPUT_PULLUP | MODE0 */
0x090 0x10 /* gpmc_advn_ale, OUTPUT_PULLUP | MODE0 */
0x094 0x10 /* gpmc_oen_ren, OUTPUT_PULLUP | MODE0 */
0x098 0x10 /* gpmc_wen, OUTPUT_PULLUP | MODE0 */
0x09c 0x10 /* gpmc_ben0_cle.gpmc_be0n_cle, OUTPUT_PULLUP | MODE0 */
>;
};

serial_pins_s1: serial_pins_s1 {
pinctrl-single,pins = <
0x080 0x10 /* gpmc_csn1, OUTPUT_PULLUP | MODE0 */
0x098 0x10 /* gpmc_wen, OUTPUT_PULLUP | MODE0 */
0x090 0x10 /* gpmc_advn_ale, OUTPUT_PULLUP | MODE0 */
0x094 0x10 /* gpmc_oen_ren, OUTPUT_PULLUP | MODE0 */

0x0a0 0x09 /* lcd_data0.gpmc_a0_mux1, OUTPUT | MODE1 */
0x0a4 0x09 /* lcd_data1.gpmc_a1_mux1, OUTPUT | MODE1 */
0x0a8 0x09 /* lcd_data2.gpmc_a2_mux1, OUTPUT | MODE1 */
0x0ac 0x09 /* lcd_data3.gpmc_a3_mux1, OUTPUT | MODE1 */
0x0b0 0x09 /* lcd_data4.gpmc_a4_mux1, OUTPUT | MODE1 */
0x0b4 0x09 /* lcd_data5.gpmc_a5_mux1, OUTPUT | MODE1 */
0x0b8 0x09 /* lcd_data6.gpmc_a6_mux1, OUTPUT | MODE1 */
0x0bc 0x09 /* lcd_data7.gpmc_a7_mux1, OUTPUT | MODE1 */
0x0c0 0x09 /* lcd_data8.gpmc_a12, OUTPUT | MODE1 */
0x0c4 0x09 /* lcd_data9.gpmc_a13, OUTPUT | MODE1 */
0x0c8 0x09 /* lcd_data10.gpmc_a14, OUTPUT | MODE1 */
0x0cc 0x09 /* lcd_data11.gpmc_a15, OUTPUT | MODE1 */
0x0d0 0x09 /* lcd_data12.gpmc_a16_mux1, OUTPUT | MODE1 */
0x0d4 0x09 /* lcd_data13.gpmc_a17_mux1, OUTPUT | MODE1 */
0x0d8 0x09 /* lcd_data14.gpmc_a18_mux1, OUTPUT | MODE1 */
0x0dc 0x09 /* lcd_data15.gpmc_a19_mux1, OUTPUT | MODE1 */
0x0e0 0x09 /* lcd_vsync.gpmc_a8_mux1, OUTPUT | MODE1 */
0x0e4 0x09 /* lcd_hsync.gpmc_a9_mux1, OUTPUT | MODE1 */
0x0e8 0x09 /* lcd_pclk.gpmc_a10_mux1, OUTPUT | MODE1 */
0x0ec 0x09 /* lcd_ac_bias_en.gpmc_a11_mux1, OUTPUT | MODE1 */

0x000 0x20 /* gpmc_ad0, INPUT_PULLDOWN | MODE0 */
0x004 0x20 /* gpmc_ad1, INPUT_PULLDOWN | MODE0 */
0x008 0x20 /* gpmc_ad2, INPUT_PULLDOWN | MODE0 */
0x00c 0x20 /* gpmc_ad3, INPUT_PULLDOWN | MODE0 */
0x010 0x20 /* gpmc_ad4, INPUT_PULLDOWN | MODE0 */
0x014 0x20 /* gpmc_ad5, INPUT_PULLDOWN | MODE0 */
0x018 0x20 /* gpmc_ad6, INPUT_PULLDOWN | MODE0 */
0x01c 0x20 /* gpmc_ad7, INPUT_PULLDOWN | MODE0 */
>;
};

serial_pins_s3: serial_pins_s3 {
pinctrl-single,pins = <
0x088 0x10 /* gpmc_csn3, OUTPUT_PULLUP | MODE0 */
0x098 0x10 /* gpmc_wen, OUTPUT_PULLUP | MODE0 */
0x090 0x10 /* gpmc_advn_ale, OUTPUT_PULLUP | MODE0 */
0x094 0x10 /* gpmc_oen_ren, OUTPUT_PULLUP | MODE0 */

0x0a0 0x09 /* lcd_data0.gpmc_a0_mux1, OUTPUT | MODE1 */
0x0a4 0x09 /* lcd_data1.gpmc_a1_mux1, OUTPUT | MODE1 */
0x0a8 0x09 /* lcd_data2.gpmc_a2_mux1, OUTPUT | MODE1 */
0x0ac 0x09 /* lcd_data3.gpmc_a3_mux1, OUTPUT | MODE1 */
0x0b0 0x09 /* lcd_data4.gpmc_a4_mux1, OUTPUT | MODE1 */
0x0b4 0x09 /* lcd_data5.gpmc_a5_mux1, OUTPUT | MODE1 */
0x0b8 0x09 /* lcd_data6.gpmc_a6_mux1, OUTPUT | MODE1 */
0x0bc 0x09 /* lcd_data7.gpmc_a7_mux1, OUTPUT | MODE1 */
0x0c0 0x09 /* lcd_data8.gpmc_a12, OUTPUT | MODE1 */
0x0c4 0x09 /* lcd_data9.gpmc_a13, OUTPUT | MODE1 */
0x0c8 0x09 /* lcd_data10.gpmc_a14, OUTPUT | MODE1 */
0x0cc 0x09 /* lcd_data11.gpmc_a15, OUTPUT | MODE1 */
0x0d0 0x09 /* lcd_data12.gpmc_a16_mux1, OUTPUT | MODE1 */
0x0d4 0x09 /* lcd_data13.gpmc_a17_mux1, OUTPUT | MODE1 */
0x0d8 0x09 /* lcd_data14.gpmc_a18_mux1, OUTPUT | MODE1 */
0x0dc 0x09 /* lcd_data15.gpmc_a19_mux1, OUTPUT | MODE1 */
0x0e0 0x09 /* lcd_vsync.gpmc_a8_mux1, OUTPUT | MODE1 */
0x0e4 0x09 /* lcd_hsync.gpmc_a9_mux1, OUTPUT | MODE1 */
0x0e8 0x09 /* lcd_pclk.gpmc_a10_mux1, OUTPUT | MODE1 */
0x0ec 0x09 /* lcd_ac_bias_en.gpmc_a11_mux1, OUTPUT | MODE1 */

0x000 0x20 /* gpmc_ad0, INPUT_PULLDOWN | MODE0 */
0x004 0x20 /* gpmc_ad1, INPUT_PULLDOWN | MODE0 */
0x008 0x20 /* gpmc_ad2, INPUT_PULLDOWN | MODE0 */
0x00c 0x20 /* gpmc_ad3, INPUT_PULLDOWN | MODE0 */
0x010 0x20 /* gpmc_ad4, INPUT_PULLDOWN | MODE0 */
0x014 0x20 /* gpmc_ad5, INPUT_PULLDOWN | MODE0 */
0x018 0x20 /* gpmc_ad6, INPUT_PULLDOWN | MODE0 */
0x01c 0x20 /* gpmc_ad7, INPUT_PULLDOWN | MODE0 */
>;
};

cpsw_default: cpsw_default {
pinctrl-single,pins = <
/* Slave 1 */
/*0x110 (PIN_INPUT_PULLUP | MUX_MODE0) /* mii1_rxerr.mii1_rxerr */
0x110 0x37 /* mii1_rx_er.gpio3[2], INPUT_PULLUP | MODE7 */
/*0x114 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* mii1_txen.mii1_txen */
0x114 0x02 /* mii1_tx_en.rgmii1_tctl, OUTPUT_PULLDOWN | MODE2 */
/*0x118 (PIN_INPUT_PULLUP | MUX_MODE0) /* mii1_rxdv.mii1_rxdv */
0x118 0x22 /* mii1_rx_dv.rgmii1_rctl, INPUT_PULLDOWN | MODE2 */
/*0x11c (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* mii1_txd3.mii1_txd3 */
0x11c 0x02 /* mii1_txd3.rgmii1_td3, OUTPUT_PULLDOWN | MODE2 */
/*0x120 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* mii1_txd2.mii1_txd2 */
0x124 0x02 /* mii1_txd1.rgmii1_td1, OUTPUT_PULLDOWN | MODE2 */
/*0x124 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* mii1_txd1.mii1_txd1 */
0x124 0x02 /* mii1_txd1.rgmii1_td1, OUTPUT_PULLDOWN | MODE2 */
/*0x128 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* mii1_txd0.mii1_txd0 */
0x128 0x02 /* mii1_txd0.rgmii1_td0, OUTPUT_PULLDOWN | MODE2 */
/*0x12c (PIN_INPUT_PULLUP | MUX_MODE0) /* mii1_txclk.mii1_txclk */
0x12c 0x02 /* mii1_tx_clk.rgmii1_tclk, OUTPUT_PULLDOWN | MODE2 */
/*0x130 (PIN_INPUT_PULLUP | MUX_MODE0) /* mii1_rxclk.mii1_rxclk */
0x130 0x22 /* mii1_rx_clk.rgmii1_rclk, INPUT_PULLDOWN | MODE2 */
/*0x134 (PIN_INPUT_PULLUP | MUX_MODE0) /* mii1_rxd3.mii1_rxd3 */
0x134 0x22 /* mii1_rxd3.rgmii1_rd3, INPUT_PULLDOWN | MODE2 */
/*0x138 (PIN_INPUT_PULLUP | MUX_MODE0) /* mii1_rxd2.mii1_rxd2 */
0x138 0x22 /* mii1_rxd2.rgmii1_rd2, INPUT_PULLDOWN | MODE2 */
/*0x13c (PIN_INPUT_PULLUP | MUX_MODE0) /* mii1_rxd1.mii1_rxd1 */
0x13c 0x22 /* mii1_rxd1.rgmii1_rd1, INPUT_PULLDOWN | MODE2 */
/*0x140 (PIN_INPUT_PULLUP | MUX_MODE0) /* mii1_rxd0.mii1_rxd0 */
0x140 0x22 /* mii1_rxd0.rgmii1_rd0, INPUT_PULLDOWN | MODE2 */
>;
};

cpsw_sleep: cpsw_sleep {
pinctrl-single,pins = <
/* Slave 1 reset value */
0x110 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x114 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x118 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x11c (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x120 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x124 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x128 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x12c (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x130 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x134 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x138 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x13c (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x140 (PIN_INPUT_PULLDOWN | MUX_MODE7)
>;
};

davinci_mdio_default: davinci_mdio_default {
pinctrl-single,pins = <
/* MDIO */
/*0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) /* mdio_data.mdio_data */
0x148 0x30 /* mdio.mdio_data, INPUT_PULLUP | MODE0 */
/*0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0) /* mdio_clk.mdio_clk */
0x14c 0x10 /* mdc.mdio_clk, OUTPUT_PULLUP | MODE0 */
>;
};

davinci_mdio_sleep: davinci_mdio_sleep {
pinctrl-single,pins = <
/* MDIO reset value */
0x148 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x14c (PIN_INPUT_PULLDOWN | MUX_MODE7)
>;
};

mmc1_pins: pinmux_mmc1_pins {
pinctrl-single,pins = <
/*0x160 (PIN_INPUT | MUX_MODE7) /* GPIO0_6 */
0x190 0x24 /* mcasp0_aclkx.mmc0_sdcd_mux1, INPUT_PULLDOWN | MODE4 */
>;
};
};

&uart0 {
pinctrl-names = "default";
pinctrl-0 = <&uart0_pins>;

status = "okay";
};

&usb {
status = "okay";

control@44e10620 {
status = "okay";
};

usb-phy@47401300 {
status = "okay";
};

usb-phy@47401b00 {
status = "okay";
};

usb@47401000 {
status = "okay";
};

usb@47401800 {
status = "okay";
dr_mode = "host";
};

dma-controller@47402000 {
status = "okay";
};
};

&i2c0 {
pinctrl-names = "default";
pinctrl-0 = <&i2c0_pins>;

status = "okay";
clock-frequency = <400000>;

tps: tps@24 {
reg = <0x24>;
};

hwmon@48 {
compatible = "national,lm75";
reg = <0x48>;
};

baseboard_eeprom: baseboard_eeprom@50 {
compatible = "atmel,24c08";
reg = <0x50>;
pagesize = <16>;
};

rtc@68 {
compatible = "dallas,ds1339";
reg = <0x68>;
};
};

/include/ "tps65217.dtsi"

&elm {
status = "okay";
};

&gpmc {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&nandflash_pins_s0>;
pinctrl-1 = <&serial_pins_s1>;
pinctrl-3 = <&serial_pins_s3>;
ranges = < 0 0 0x08000000 0x10000000 /* CS0: NAND */
1 0 0x01000000 0x01000000 /* CS1: DUART */
2 0 0x02000000 0x01000000 /* CS2: Unused */
3 0 0x03000000 0x01000000 /* CS3: QUARTs, Latches, etc. */
>;
nand@0,0 {
reg = <0 0 0>; /* CS0, offset 0 */
/*......................................................................*/
/* ISSUE: Ev Sykes - (ARM BOARD REV B) - Mods for 16-bit NAND:
8-bit:
nand-bus-width = <8>;
gpmc,device-width = <1>;
16-bit:
nand-bus-width = <16>;
gpmc,device-width = <2>;
*/
nand-bus-width = <16>;
gpmc,device-width = <2>;
/*......................................................................*/
ti,nand-ecc-opt = "hw";
gpmc,device-nand = "true";
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,wait-on-read = "true";
gpmc,wait-on-write = "true";
gpmc,bus-turnaround-ns = <0>;
gpmc,cycle2cycle-delay-ns = <0>;
gpmc,clk-activation-ns = <0>;
gpmc,wait-monitoring-ns = <0>;
gpmc,wr-access-ns = <40>;
gpmc,wr-data-mux-bus-ns = <0>;

#address-cells = <1>;
#size-cells = <1>;
elm_id = <&elm>;

/* MTD partition table */
partition@0 {
label = "NAND.SPL";
reg = <0x00000000 0x00020000>;
read-only;
};
partition@1 {
label = "NAND.SPL.backup1";
reg = <0x00020000 0x00020000>;
read-only;
};
partition@2 {
label = "NAND.SPL.backup2";
reg = <0x00040000 0x00020000>;
read-only;
};
partition@3 {
label = "NAND.SPL.backup3";
reg = <0x00060000 0x00020000>;
read-only;
};
partition@4 {
label = "NAND.u-boot-spl-os";
reg = <0x00080000 0x00040000>;
read-only;
};
partition@5 {
label = "NAND.u-boot";
reg = <0x000c0000 0x00100000>;
read-only;
};
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 0x03000000>;
};
partition@9 {
label = "NAND.kernel.backup1";
reg = <0x03200000 0x03000000>;
};
partition@10 {
label = "NAND.flash";
reg = <0x06200000 0x00800000>;
};
partition@11 {
label = "NAND.flash2";
reg = <0x06a00000 0x01600000>;
};
};

/*......................................................................*/
/* QUART 1 */
serial@3,0 {
device_type = "serial";
compatible = "ns16550";

uart-device-id = < 8 >;
gpmc,device-width = <1>;
gpmc,cs-wr-off-ns = <160>;
gpmc,cs-rd-off-ns = <160>;
gpmc,cs-on-ns = <60>;
gpmc,adv-wr-off-ns = <130>;
gpmc,adv-rd-off-ns = <140>;
gpmc,adv-on-ns = <40>;
gpmc,we-off-ns = <200>;
gpmc,we-on-ns = <20>;
gpmc,oe-off-ns = <140>;
gpmc,oe-on-ns = <20>;
gpmc,access-ns = <100>;
gpmc,rd-access-ns = <100>;
gpmc,wr-cycle-ns = <210>;
gpmc,rd-cycle-ns = <190>;
gpmc,wr-access-ns = <170>;
gpmc,cycle2cycle-delay-ns = <2>;
gpmc,cycle2cycle-samecsen = <1>;
gpmc,cycle2cycle-diffcsen = <1>;

reg = <3 0x0000 0x0008>;
clock-frequency = <7372800>;
interrupts = <16 8>;
interrupt-parent = <&gpio3>;
status = "okay";
};
/*......................................................................*/
/* DUART (ARM BOARD) */
serial@1,0 {
device_type = "serial";
compatible = "ns16550";

uart-device-id = < 7 >;
gpmc,bank-width = <1>;
gpmc,device-width = <1>;
gpmc,cs-wr-off-ns = <160>;
gpmc,cs-rd-off-ns = <160>;
gpmc,cs-on-ns = <60>;
gpmc,adv-wr-off-ns = <130>;
gpmc,adv-rd-off-ns = <140>;
gpmc,adv-on-ns = <40>;
gpmc,we-off-ns = <200>;
gpmc,we-on-ns = <20>;
gpmc,oe-off-ns = <140>;
gpmc,oe-on-ns = <20>;
gpmc,access-ns = <100>;
gpmc,rd-access-ns = <100>;
gpmc,wr-cycle-ns = <210>;
gpmc,rd-cycle-ns = <190>;
gpmc,wr-access-ns = <170>;
gpmc,cycle2cycle-delay-ns = <2>;
gpmc,cycle2cycle-samecsen = <1>;
gpmc,cycle2cycle-diffcsen = <1>;

reg = <1 0x00c0 0x0008>;
clock-frequency = <14745600>;
interrupts = <17 8>;
interrupt-parent = <&gpio3>;
status = "okay";
};

serial@1,1 {
device_type = "serial";
compatible = "ns16550";

uart-device-id = < 7 >;
gpmc,bank-width = <1>;
gpmc,device-width = <1>;
gpmc,cs-wr-off-ns = <160>;
gpmc,cs-rd-off-ns = <160>;
gpmc,cs-on-ns = <60>;
gpmc,adv-wr-off-ns = <130>;
gpmc,adv-rd-off-ns = <140>;
gpmc,adv-on-ns = <40>;
gpmc,we-off-ns = <200>;
gpmc,we-on-ns = <20>;
gpmc,oe-off-ns = <140>;
gpmc,oe-on-ns = <20>;
gpmc,access-ns = <100>;
gpmc,rd-access-ns = <100>;
gpmc,wr-cycle-ns = <210>;
gpmc,rd-cycle-ns = <190>;
gpmc,wr-access-ns = <170>;
gpmc,cycle2cycle-delay-ns = <2>;
gpmc,cycle2cycle-samecsen = <1>;
gpmc,cycle2cycle-diffcsen = <1>;

reg = <1 0x00c8 0x0008>;
clock-frequency = <14745600>;
interrupts = <17 8>;
interrupt-parent = <&gpio3>;
status = "okay";
};
/*......................................................................*/
};

&tps {
regulators {
dcdc1_reg: regulator@0 {
regulator-always-on;
};

dcdc2_reg: regulator@1 {
/* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */
regulator-name = "vdd_mpu";
regulator-min-microvolt = <925000>;
regulator-max-microvolt = <1325000>;
regulator-boot-on;
regulator-always-on;
};

dcdc3_reg: regulator@2 {
/* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */
regulator-name = "vdd_core";
regulator-min-microvolt = <925000>;
regulator-max-microvolt = <1150000>;
regulator-boot-on;
regulator-always-on;
};

ldo1_reg: regulator@3 {
regulator-always-on;
};

ldo2_reg: regulator@4 {
regulator-always-on;
};

ldo3_reg: regulator@5 {
regulator-always-on;
};

ldo4_reg: regulator@6 {
regulator-always-on;
};
};
};

/*......................................................................*/
/* ISSUE: Ev Sykes - (ARM BOARD REV B) - Mods for PHY addresses:
Rev A:
phy_id = <&davinci_mdio>, <0>;
phy_id = <&davinci_mdio>, <1>;
Rev B:
phy_id = <&davinci_mdio>, <3>;
phy_id = <&davinci_mdio>, <7>;
*/
&cpsw_emac0 {
phy_id = <&davinci_mdio>, <3>;
phy-mode = "rgmii";
};

&cpsw_emac1 {
phy_id = <&davinci_mdio>, <7>;
phy-mode = "rgmii";
};
/*......................................................................*/

&mac {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&cpsw_default>;
pinctrl-1 = <&cpsw_sleep>;

};

&davinci_mdio {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&davinci_mdio_default>;
pinctrl-1 = <&davinci_mdio_sleep>;
};

&mmc1 {
status = "okay";
bus-width = <0x4>;
pinctrl-names = "default";
pinctrl-0 = <&mmc1_pins>;
cd-gpios = <&gpio3 14 GPIO_ACTIVE_HIGH>;
cd-inverted;
};