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.

Uart problems in am335x

Other Parts Discussed in Thread: AM3354

Hi,

I am using my uarts (ttyO1, ttyO2, ttyO0, ttyUSB1) using in my am3354 platform and customized drivers in sdk6 Linux 3.2 is working good. When I am using the same uarts in Linux 3.12 sdk7 is giving many issues. Some times the ports are detecting suddenly and stop, some times if I access one uart and the same time if I am using ttyUSB is giving an issue. Simultaneous data is not coming in all uarts. Could u send me the drivers enable logic for serial ports. In Linux 3.2 I am using only 'omap serial port' and DMA disabled.

Please share the feedback why it is behaving in Linux 3.12. Any patches or modifications required to enable multiple uarts in my am3354.

Regards,

Anil

  • Hi Anil,

    The hw description in kernel 3.2 and kernel 3.12 are different, that is kernel 3.2 uses board file from arch/arm/mach-omap2/ and kernel 3.12 uses a device tree file from arch/arm/boot/dts/.

    So first of all make sure you have your device tree file set accordingly. The correct setup of dts file enables your uarts & calls the appropriate kernel drivers.

    Kernel 3.12 also uses the omap-serial driver, but there have been some changes since 3.2 you can use a diff tool to track the differences between the two versions of the driver (in kernel 3.2 & kernel 3.12). I suggest you integrate your modifications in the 3.12 drivers, and not just replace the existing sources in kernel 3.12 with your customized uart drivers.

    Hope this helps.

    Best Regards,
    Yordan
  • Hi Yordan,

    I ma referring the same device tree in Linux 3.12, Please find attached dts file which have declared the definition for all the peripherals.

    Also please suggest me the tools for seeing the difference between the 3.2 & 3.12

    Regards,

    Anil.

    compatible = "ti,am335x-evm", "ti,am33xx";
    
        cpus {
            cpu@0 {
                cpu0-supply = <&vdd1_reg>;
            };
        };
    
        memory {
            device_type = "memory";
            reg = <0x80000000 0x10000000>; /* 256 MB */
        };
    
        am33xx_pinmux: pinmux@44e10800 {
            pinctrl-names = "default";
    //commented        pinctrl-0 = <&volume_keys_s0 &clkout2_pin &mmc2_pins //BUZZ&wlan_pins>;
    
            pinctrl-0 = <&clkout2_pin &mmc2_pins &wlan_pins>;
    
            matrix_keypad_default: matrix_keypad_default {
                pinctrl-single,pins = <
                    0x54 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)    /* gpmc_a5.gpio1_21 */
                    0x58 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)    /* gpmc_a6.gpio1_22 */
                    0x64 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* gpmc_a9.gpio1_25 */
                    0x68 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* gpmc_a10.gpio1_26 */
                    0x6c (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* gpmc_a11.gpio1_27 */
                >;
            };
    
            matrix_keypad_sleep: matrix_keypad_sleep {
                pinctrl-single,pins = <
                    0x54 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* gpmc_a5.gpio1_21 */
                    0x58 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* gpmc_a6.gpio1_22 */
                >;
            };
    
    //commented        volume_keys_s0: volume_keys_s0 {
    //commented            pinctrl-single,pins = <
    //commented                0x150 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* //commented spi0_sclk.gpio0_2 */
    //commented                0x154 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* //commented spi0_d0.gpio0_3 */
    //commented            >;
    //commented        };
    
            edt_ft5x06_pins: edt_ft5x06_pins {
                pinctrl-single,pins = <
    
                0x194 (PIN_INPUT | MUX_MODE7) /* mcasp0_fsx.gpio3_15 */
                >;
            };
    
            i2c0_pins: pinmux_i2c0_pins {
                pinctrl-single,pins = <
                    0x188 (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c0_sda.i2c0_sda */
                    0x18c (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c0_scl.i2c0_scl */
                >;
            };
    
            i2c1_pins: pinmux_i2c1_pins {
                pinctrl-single,pins = <
                    0x158 (PIN_INPUT_PULLUP | MUX_MODE2)    /* spi0_d1.i2c1_sda */
                    0x15c (PIN_INPUT_PULLUP | MUX_MODE2)    /* spi0_cs0.i2c1_scl */
                >;
            };
    
            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 */
                >;
            };
    
            uart1_pins_default: pinmux_uart1_pins_default {
                pinctrl-single,pins = <
                    0x178 (PIN_INPUT | MUX_MODE0)            /* uart1_ctsn.uart1_ctsn */
                    0x17C (PIN_OUTPUT_PULLDOWN | MUX_MODE0)    /* uart1_rtsn.uart1_rtsn */
                    0x180 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart1_rxd.uart1_rxd */
                    0x184 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)     /* uart1_txd.uart1_txd */
                >;
            };
    
            uart1_pins_sleep: pinmux_uart1_pins_sleep {
                pinctrl-single,pins = <
                    0x178 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x17C (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x180 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x184 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                >;
            };
    
             uart2_pins: pinmux_uart2_pins {
                pinctrl-single,pins = <
                    0x150 (PIN_INPUT_PULLUP | MUX_MODE1) /* spi0_sclk.uart2_rxd */
                    0x154 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* spi0_d0.uart2_txd */
                >;
            };
    
            clkout2_pin: pinmux_clkout2_pin {
                pinctrl-single,pins = <
                    0x1b4 (PIN_OUTPUT_PULLDOWN | MUX_MODE3)    /* xdma_event_intr1.clkout2 */
                >;
            };
    
            nandflash_pins_default: nandflash_pins_default {
                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 */
                >;
            };
    
            nandflash_pins_sleep: nandflash_pins_sleep {
                pinctrl-single,pins = <
                    0x0 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x4 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x8 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0xc (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x10 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x14 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x18 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x1c (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x70 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x74 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x7c (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x90 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x94 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x98 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x9c (PIN_INPUT_PULLDOWN | MUX_MODE7)
                >;
            };
    
            ecap0_pins_default: backlight_pins {
                pinctrl-single,pins = <
                    0x164 0x0    /* eCAP0_in_PWM0_out.eCAP0_in_PWM0_out MODE0 */
                >;
            };
    
            cpsw_default: cpsw_default {
                pinctrl-single,pins = <
                    /* Slave 1 */
                    0x114 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)    /* mii1_txen.rgmii1_tctl */
                    0x118 (PIN_INPUT_PULLDOWN | MUX_MODE2)    /* mii1_rxdv.rgmii1_rctl */
                    0x11c (PIN_OUTPUT_PULLDOWN | MUX_MODE2)    /* mii1_txd3.rgmii1_td3 */
                    0x120 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)    /* mii1_txd2.rgmii1_td2 */
                    0x124 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)    /* mii1_txd1.rgmii1_td1 */
                    0x128 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)    /* mii1_txd0.rgmii1_td0 */
                    0x12c (PIN_OUTPUT_PULLDOWN | MUX_MODE2)    /* mii1_txclk.rgmii1_tclk */
                    0x130 (PIN_INPUT_PULLDOWN | MUX_MODE2)    /* mii1_rxclk.rgmii1_rclk */
                    0x134 (PIN_INPUT_PULLDOWN | MUX_MODE2)    /* mii1_rxd3.rgmii1_rd3 */
                    0x138 (PIN_INPUT_PULLDOWN | MUX_MODE2)    /* mii1_rxd2.rgmii1_rd2 */
                    0x13c (PIN_INPUT_PULLDOWN | MUX_MODE2)    /* mii1_rxd1.rgmii1_rd1 */
                    0x140 (PIN_INPUT_PULLDOWN | MUX_MODE2)    /* mii1_rxd0.rgmii1_rd0 */
                >;
            };
    
            cpsw_sleep: cpsw_sleep {
                pinctrl-single,pins = <
                    /* Slave 1 reset value */
                    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 */
                    0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0)            /* mdio_clk.mdio_clk */
                >;
            };
    
            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_default: pinmux_mmc1_pins {
                pinctrl-single,pins = <
                    0x0F0 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_dat3.mmc0_dat3 */
                    0x0F4 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_dat2.mmc0_dat2 */
                    0x0F8 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_dat1.mmc0_dat1 */
                    0x0FC (PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_dat0.mmc0_dat0 */
                    0x100 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_clk.mmc0_clk */
                    0x104 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_cmd.mmc0_cmd */
                    0x1A0 (PIN_INPUT_PULLUP | MUX_MODE7)    /* mcasp0_aclkr.gpio3_18 */
                    0x160 (PIN_INPUT | MUX_MODE7)        /* spi0_cs1.gpio0_6 */
                >;
            };
    
            mmc1_pins_sleep: pinmux_mmc1_pins_sleep {
                pinctrl-single,pins = <
                    0x0F0 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x0F4 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x0F8 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x0FC (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x100 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x104 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x1A0 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x160 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                >;
            };
    
            lcd_pins_default: lcd_pins_default {
                pinctrl-single,pins = <
                    0x20 0x01    /* gpmc_ad8.lcd_data16, OUTPUT | MODE1 */
                    0x24 0x01    /* gpmc_ad9.lcd_data17, OUTPUT | MODE1 */
                    0x28 0x01    /* gpmc_ad10.lcd_data18, OUTPUT | MODE1 */
                    0x2c 0x01    /* gpmc_ad11.lcd_data19, OUTPUT | MODE1 */
                    0x30 0x01    /* gpmc_ad12.lcd_data20, OUTPUT | MODE1 */
                    0x34 0x01    /* gpmc_ad13.lcd_data21, OUTPUT | MODE1 */
                    0x38 0x01    /* gpmc_ad14.lcd_data22, OUTPUT | MODE1 */
                    0x3c 0x01    /* gpmc_ad15.lcd_data23, OUTPUT | MODE1 */
                    0xa0 0x00    /* lcd_data0.lcd_data0, OUTPUT | MODE0 */
                    0xa4 0x00    /* lcd_data1.lcd_data1, OUTPUT | MODE0 */
                    0xa8 0x00    /* lcd_data2.lcd_data2, OUTPUT | MODE0 */
                    0xac 0x00    /* lcd_data3.lcd_data3, OUTPUT | MODE0 */
                    0xb0 0x00    /* lcd_data4.lcd_data4, OUTPUT | MODE0 */
                    0xb4 0x00    /* lcd_data5.lcd_data5, OUTPUT | MODE0 */
                    0xb8 0x00    /* lcd_data6.lcd_data6, OUTPUT | MODE0 */
                    0xbc 0x00    /* lcd_data7.lcd_data7, OUTPUT | MODE0 */
                    0xc0 0x00    /* lcd_data8.lcd_data8, OUTPUT | MODE0 */
                    0xc4 0x00    /* lcd_data9.lcd_data9, OUTPUT | MODE0 */
                    0xc8 0x00    /* lcd_data10.lcd_data10, OUTPUT | MODE0 */
                    0xcc 0x00    /* lcd_data11.lcd_data11, OUTPUT | MODE0 */
                    0xd0 0x00    /* lcd_data12.lcd_data12, OUTPUT | MODE0 */
                    0xd4 0x00    /* lcd_data13.lcd_data13, OUTPUT | MODE0 */
                    0xd8 0x00    /* lcd_data14.lcd_data14, OUTPUT | MODE0 */
                    0xdc 0x00    /* lcd_data15.lcd_data15, OUTPUT | MODE0 */
                    0xe0 0x00    /* lcd_vsync.lcd_vsync, OUTPUT | MODE0 */
                    0xe4 0x00    /* lcd_hsync.lcd_hsync, OUTPUT | MODE0 */
                    0xe8 0x00    /* lcd_pclk.lcd_pclk, OUTPUT | MODE0 */
                    0xec 0x00    /* lcd_ac_bias_en.lcd_ac_bias_en, OUTPUT | MODE0 */
                >;
            };
    
            lcd_pins_sleep: lcd_pins_sleep {
                pinctrl-single,pins = <
                    0x20 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* gpmc_ad8.lcd_data16 */
                    0x24 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* gpmc_ad9.lcd_data17 */
                    0x28 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* gpmc_ad10.lcd_data18 */
                    0x2c (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* gpmc_ad11.lcd_data19 */
                    0x30 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* gpmc_ad12.lcd_data20 */
                    0x34 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* gpmc_ad13.lcd_data21 */
                    0x38 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* gpmc_ad14.lcd_data22 */
                    0x3c (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* gpmc_ad15.lcd_data23 */
                    0xa0 (PULL_DISABLE | MUX_MODE7)        /* lcd_data0.lcd_data0 */
                    0xa4 (PULL_DISABLE | MUX_MODE7)        /* lcd_data1.lcd_data1 */
                    0xa8 (PULL_DISABLE | MUX_MODE7)        /* lcd_data2.lcd_data2 */
                    0xac (PULL_DISABLE | MUX_MODE7)        /* lcd_data3.lcd_data3 */
                    0xb0 (PULL_DISABLE | MUX_MODE7)        /* lcd_data4.lcd_data4 */
                    0xb4 (PULL_DISABLE | MUX_MODE7)        /* lcd_data5.lcd_data5 */
                    0xb8 (PULL_DISABLE | MUX_MODE7)        /* lcd_data6.lcd_data6 */
                    0xbc (PULL_DISABLE | MUX_MODE7)        /* lcd_data7.lcd_data7 */
                    0xc0 (PULL_DISABLE | MUX_MODE7)        /* lcd_data8.lcd_data8 */
                    0xc4 (PULL_DISABLE | MUX_MODE7)        /* lcd_data9.lcd_data9 */
                    0xc8 (PULL_DISABLE | MUX_MODE7)        /* lcd_data10.lcd_data10 */
                    0xcc (PULL_DISABLE | MUX_MODE7)        /* lcd_data11.lcd_data11 */
                    0xd0 (PULL_DISABLE | MUX_MODE7)        /* lcd_data12.lcd_data12 */
                    0xd4 (PULL_DISABLE | MUX_MODE7)        /* lcd_data13.lcd_data13 */
                    0xd8 (PULL_DISABLE | MUX_MODE7)        /* lcd_data14.lcd_data14 */
                    0xdc (PULL_DISABLE | MUX_MODE7)        /* lcd_data15.lcd_data15 */
                    0xe0 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* lcd_vsync.lcd_vsync, OUTPUT | MODE0 */
                    0xe4 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* lcd_hsync.lcd_hsync */
                    0xe8 (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* lcd_pclk.lcd_pclk */
                    0xec (PIN_INPUT_PULLDOWN | MUX_MODE7)    /* lcd_ac_bias_en.lcd_ac_bias_en */
                >;
            };
    
            mcasp1_pins: mcasp1_pins {
                pinctrl-single,pins = <
                    0x10c (PIN_INPUT_PULLDOWN | MUX_MODE4) /* mii1_crs.mcasp1_aclkx */
                    0x110 (PIN_INPUT_PULLDOWN | MUX_MODE4) /* mii1_rxerr.mcasp1_fsx */
                    0x108 (PIN_OUTPUT_PULLDOWN | MUX_MODE4) /* mii1_col.mcasp1_axr2 */
                    0x144 (PIN_INPUT_PULLDOWN | MUX_MODE4) /* rmii1_ref_clk.mcasp1_axr3 */
                >;
            };
    
            mcasp1_sleep_pins: mcasp1_sleep_pins {
                pinctrl-single,pins = <
                    0x10c (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x110 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x108 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                    0x144 (PIN_INPUT_PULLDOWN | MUX_MODE7)
                >;
            };
    
            /* wl12xx/wl18xx card on mmc2 */
            mmc2_pins: pinmux_mmc2_pins {
                pinctrl-single,pins = <
                    0x44 0x33    /* gpmc_a1.mmc2_dat0, INPUT_PULLUP | MODE3 */
                    0x48 0x33    /* gpmc_a2.mmc2_dat1, INPUT_PULLUP | MODE3 */
                    0x4C 0x33    /* gpmc_a3.mmc2_dat2, INPUT_PULLUP | MODE3 */
                    0x78 0x33    /* gpmc_ben1.mmc2_dat3, INPUT_PULLUP | MODE3 */
                    0x88 0x33    /* gpmc_csn3.mmc2_cmd, INPUT_PULLUP | MODE3 */
                    0x8C 0x33    /* gpmc_clk.mmc2_clk, INPUT_PULLUP | MODE3 */
                >;
            };
    
            /* wl12xx/wl18xx card enable/irq GPIOs. */
            wlan_pins: pinmux_wlan_pins {
                pinctrl-single,pins = <
                    0x40 0x07    /* gpmc_a0.gpio1_16, OUTPUT | MODE7 */
                    0x1a4 0x2F    /* mcasp0_fsr.gpio3_19, INPUT | MODE7 */
                    0x1AC 0x17    /* mcasp0_ahclkx.gpio3_21, OUTPUT_PULLUP | MODE7 */
                >;
            };
        };
    
        ocp {
            uart0: serial@44e09000 {
                pinctrl-names = "default";
                pinctrl-0 = <&uart0_pins>;
    
                status = "okay";
            };
    
            uart1: serial@48022000 {
                pinctrl-names = "default", "sleep";
                pinctrl-0 = <&uart1_pins_default>;
                pinctrl-1 = <&uart1_pins_sleep>;
    
                status = "okay";
            };
    
            uart2: serial@48024000 {
                pinctrl-names = "default";
                pinctrl-0 = <&uart2_pins>;
    
                status = "okay";
            };
    
            i2c0: i2c@44e0b000 {
                pinctrl-names = "default";
                pinctrl-0 = <&i2c0_pins>;
                status = "okay";
                clock-frequency = <400000>;
    
                tps: tps@2d {
                    reg = <0x2d>;
                };
    
                        ads1015: ads1015@49 {
                            compatible = "ti,ads1015";
                                status = "okay";
                            #address-cells = <1>;
                            #size-cells = <0>;
                            reg = <0x49>;
    
                            channel@0 {
                                reg = <0>;
                                ti,gain = <2>;
                                ti,datarate = <2>;
                    };
                            channel@1 {
                                reg = <1>;
                                ti,gain = <2>;
                               ti,datarate = <2>;
                            };                
                            channel@2 {
                                reg = <2>;
                                ti,gain = <2>;
                                ti,datarate = <2>;
                            };     
                            channel@3 {
                                reg = <3>;
                                ti,gain = <2>;
                                ti,datarate = <2>;
                            };                
                        };                
    
    					edt-ft5x06@38 {
                            compatible = "edt,edt-ft5x06";
                            reg = <0x38>;
                            pinctrl-names = "default";
                            pinctrl-0 = <&edt_ft5x06_pins>;
                       interrupt-parent = <&gpio3>;
                                       interrupts = <15 8>;
                    touchscreen-size-x = <800>;
                    touchscreen-size-y = <480>;
                    };
            };
    
            musb: usb@47400000 {
                status = "okay";
    
                control@44e10000 {
                    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@07402000  {
                    status = "okay";
                };
            };
    
            i2c1: i2c@4802a000 {
                pinctrl-names = "default";
                pinctrl-0 = <&i2c1_pins>;
    
                status = "okay";
                clock-frequency = <100000>;
    
                lis331dlh: lis331dlh@18 {
                    compatible = "st,lis331dlh", "st,lis3lv02d";
                    reg = <0x18>;
                    Vdd-supply = <&lis3_reg>;
                    Vdd_IO-supply = <&lis3_reg>;
    
                    st,click-single-x;
                    st,click-single-y;
                    st,click-single-z;
                    st,click-thresh-x = <10>;
                    st,click-thresh-y = <10>;
                    st,click-thresh-z = <10>;
                    st,irq1-click;
                    st,irq2-click;
                    st,wakeup-x-lo;
                    st,wakeup-x-hi;
                    st,wakeup-y-lo;
                    st,wakeup-y-hi;
                    st,wakeup-z-lo;
                    st,wakeup-z-hi;
                    st,min-limit-x = <120>;
                    st,min-limit-y = <120>;
                    st,min-limit-z = <140>;
                    st,max-limit-x = <550>;
                    st,max-limit-y = <550>;
                    st,max-limit-z = <750>;
                };
    
                tsl2550: tsl2550@39 {
                    compatible = "taos,tsl2550";
                    reg = <0x39>;
                };
    
                tmp275: tmp275@48 {
                    compatible = "ti,tmp275";
                    reg = <0x48>;
                };
    
                tlv320aic3106: tlv320aic3106@1b {
                    compatible = "ti,tlv320aic3106";
                    reg = <0x1b>;
                    status = "okay";
    
                    /* Regulators */
                    AVDD-supply = <&vaux2_reg>;
                    IOVDD-supply = <&vaux2_reg>;
                    DRVDD-supply = <&vaux2_reg>;
                    DVDD-supply = <&vbat>;
                };
            };
    
            elm: elm@48080000 {
                status = "okay";
            };
    
            epwmss0: epwmss@48300000 {
                status = "okay";
    
                ecap0: ecap@48300100 {
                    status = "okay";
                    pinctrl-names = "default";
                    pinctrl-0 = <&ecap0_pins_default>;
                };
            };
    
            gpmc: gpmc@50000000 {
                status = "okay";
                pinctrl-names = "default", "sleep";
                pinctrl-0 = <&nandflash_pins_default>;
                pinctrl-1 = <&nandflash_pins_sleep>;
                ranges = <0 0 0x08000000 0x10000000>;    /* CS0: NAND */
                nand@0,0 {
                    reg = <0 0 0>; /* CS0, offset 0 */
                    nand-bus-width = <8>;
                    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,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>;
                    ti,nand-ecc-opt= "bch8";
                    ti,elm-id = <&elm>;
                    /* 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 0x000080000>;
                    };
                    partition@1 {
                        label = "NAND.SPL.backup1";
                        reg = <0x00080000 0x00080000>;
                    };
                    partition@2 {
                        label = "NAND.SPL.backup2";
                        reg = <0x00100000 0x00080000>;
                    };
                    partition@3 {
                        label = "NAND.SPL.backup3";
                        reg = <0x00180000 0x00080000>;
                    };
                    partition@4 {
                        label = "NAND.u-boot-spl-os";
                        reg = <0x00200000 0x00080000>;
                    };
                    partition@5 {
                        label = "NAND.u-boot";
                        reg = <0x00280000 0x00100000>;
                    };
                    partition@6 {
                        label = "NAND.u-boot-env";
                        reg = <0x00380000 0x00080000>;
                    };
                    partition@7 {
                        label = "NAND.u-boot-env.backup1";
                        reg = <0x00400000 0x00080000>;
                    };
                    partition@8 {
                        label = "NAND.kernel";
                        reg = <0x00480000 0x00700000>;
                    };
                    partition@9 {
                        label = "NAND.file-system";
    /*Working, but only 256MB        reg = <0x00A00000 0x0F600000>; */
    //working 512mb                reg = <0x00A00000 0x1F100000>; /* 512 */
    //before                reg = <0x00B80000 0x3F480000>;
                        reg = <0x00B80000 0x3F480000>;
                    };
                };
            };
    
            lcdc: lcdc@0x4830e000 {        
                pinctrl-names = "default", "sleep";
                pinctrl-0 = <&lcd_pins_default>;
                pinctrl-1 = <&lcd_pins_sleep>;
                status = "okay";
                display-timings {
                    800x480p62 {
                        clock-frequency = <30000000>;
                        hactive = <800>;
                        vactive = <480>;
                        hfront-porch = <39>;
                        hback-porch = <39>;
                        hsync-len = <47>;
                        vback-porch = <29>;
                        vfront-porch = <13>;
                        vsync-len = <2>;
                        hsync-active = <1>;
                        vsync-active = <1>;
                    };
                };
            };
    
            sound {
                compatible = "ti,da830-evm-audio";
                ti,model = "AM335x-EVM";
                ti,audio-codec = <&tlv320aic3106>;
                ti,mcasp-controller = <&mcasp1>;
                ti,codec-clock-rate = <12000000>;
                ti,audio-routing =
                    "Headphone Jack",       "HPLOUT",
                    "Headphone Jack",       "HPROUT",
                    "LINE1L",               "Line In",
                    "LINE1R",               "Line In";
            };
        };
    
        vbat: fixedregulator@0 {
            compatible = "regulator-fixed";
            regulator-name = "vbat";
            regulator-min-microvolt = <5000000>;
            regulator-max-microvolt = <5000000>;
            regulator-boot-on;
        };
    
        lis3_reg: fixedregulator@1 {
            compatible = "regulator-fixed";
            regulator-name = "lis3_reg";
            regulator-boot-on;
        };
    
        wlan_en_reg: fixedregulator@2 {
            compatible = "regulator-fixed";
            regulator-name = "wlan-en-regulator";
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <1800000>;
    
            /* WLAN_EN GPIO for this board - Bank1, pin16 */
            gpio = <&gpio1 16 0>;
    
            /* WLAN card specific delay */
            startup-delay-us = <70000>;
            enable-active-high;
        };
    
        matrix_keypad: matrix_keypad@0 {
            compatible = "gpio-matrix-keypad";
            debounce-delay-ms = <5>;
            col-scan-delay-us = <2>;
    
            pinctrl-names = "default", "sleep";
            pinctrl-0 = <&matrix_keypad_default>;
            pinctrl-1 = <&matrix_keypad_sleep>;
    
            row-gpios = <&gpio1 25 GPIO_ACTIVE_HIGH        /* Bank1, pin25 */
                     &gpio1 26 GPIO_ACTIVE_HIGH        /* Bank1, pin26 */
                     &gpio1 27 GPIO_ACTIVE_HIGH>;    /* Bank1, pin27 */
    
            col-gpios = <&gpio1 21 GPIO_ACTIVE_HIGH        /* Bank1, pin21 */
                     &gpio1 22 GPIO_ACTIVE_HIGH>;    /* Bank1, pin22 */
    
            linux,keymap = <0x0000008b    /* MENU */
                    0x0100009e    /* BACK */
                    0x02000069    /* LEFT */
                    0x0001006a    /* RIGHT */
                    0x0101001c    /* ENTER */
                    0x0201006c>;    /* DOWN */
        };
    
        gpio_keys: volume_keys@0 {
            compatible = "gpio-keys";
            #address-cells = <1>;
            #size-cells = <0>;
            autorepeat;
    
            switch@9 {
                label = "volume-up";
                linux,code = <115>;
                gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
                gpio-key,wakeup;
            };
    
            switch@10 {
                label = "volume-down";
                linux,code = <114>;
                gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
                gpio-key,wakeup;
            };
        };
    
        backlight {
            compatible = "pwm-backlight";
            pwms = <&ecap0 0 5000000 0>;
    //        brightness-levels = <0 51 53 56 62 75 101 152 255>;
            brightness-levels = <0 25 53 83 95 101 121 152 255>;
            default-brightness-level = <1>;
        };
    
        panel {
            compatible = "ti,tilcdc,panel";
            status = "okay";
            pinctrl-names = "default";
            pinctrl-0 = <&lcd_pins_default>;
            panel-info {
                ac-bias           = <255>;
                ac-bias-intrpt    = <0>;
                dma-burst-sz      = <16>;
                bpp               = <32>;
                fdd               = <0x80>;
                sync-edge         = <0>;
                sync-ctrl         = <1>;
                raster-order      = <0>;
                fifo-th           = <0>;
            };
    
            display-timings {
                800x480p62 {
                    clock-frequency = <30000000>;
                    hactive = <800>;
                    vactive = <480>;
                    hfront-porch = <39>;
                    hback-porch = <39>;
                    hsync-len = <47>;
                    vback-porch = <29>;
                    vfront-porch = <13>;
                    vsync-len = <2>;
                    hsync-active = <1>;
                    vsync-active = <1>;
                };
            };
        };
    
        wlcore {
            compatible = "wlcore";
            gpio = <115>; /* Bank3, pin19 */
    
            /*
             * TODO: use edge irqs for suspend/resume.
             * in newer kerenls, we seem to miss interrupts when
             * working with edge irqs, so revert back to level irqs.
             */
             /* platform-quirks = <1>; */
    
            /* if a 12xx card is there, configure the clock to
               WL12XX_REFCLOCK_38_XTAL */
            board-ref-clock = <4>;
        };
    
        kim {
            compatible = "kim";
            nshutdown_gpio = <117>; /* Bank3, pin21 */
            dev_name = "/dev/ttyO1";
            flow_cntrl = <1>;
            baud_rate = <3000000>;
        };
    
        btwilink {
            compatible = "btwilink";
        };
    
    };
    
    #include "tps65910.dtsi"
    
    &mcasp1 {
            pinctrl-names = "default", "sleep";
            pinctrl-0 = <&mcasp1_pins>;
            pinctrl-1 = <&mcasp1_sleep_pins>;
    
            status = "okay";
    
            op-mode = <0>;          /* MCASP_IIS_MODE */
            tdm-slots = <2>;
            /* 16 serializer */
            serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
                0 0 1 2
            >;
            tx-num-evt = <32>;
            rx-num-evt = <32>;
    };
    
    &tps {
        vcc1-supply = <&vbat>;
        vcc2-supply = <&vbat>;
        vcc3-supply = <&vbat>;
        vcc4-supply = <&vbat>;
        vcc5-supply = <&vbat>;
        vcc6-supply = <&vbat>;
        vcc7-supply = <&vbat>;
        vccio-supply = <&vbat>;
    
        regulators {
            vrtc_reg: regulator@0 {
                regulator-always-on;
            };
    
            vio_reg: regulator@1 {
                regulator-always-on;
            };
    
            vdd1_reg: regulator@2 {
                /* VDD_MPU voltage limits 0.95V - 1.325V with +/-4% tolerance */
                regulator-name = "vdd_mpu";
                regulator-min-microvolt = <912500>;
                regulator-max-microvolt = <1378000>;
                regulator-boot-on;
                regulator-always-on;
            };
    
            vdd2_reg: regulator@3 {
                /* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */
                regulator-name = "vdd_core";
                regulator-min-microvolt = <912500>;
                regulator-max-microvolt = <1150000>;
                regulator-boot-on;
                regulator-always-on;
            };
    
            vdd3_reg: regulator@4 {
                regulator-always-on;
            };
    
            vdig1_reg: regulator@5 {
                regulator-always-on;
            };
    
            vdig2_reg: regulator@6 {
                regulator-always-on;
            };
    
            vpll_reg: regulator@7 {
                regulator-always-on;
            };
    
            vdac_reg: regulator@8 {
                regulator-always-on;
            };
    
            vaux1_reg: regulator@9 {
                regulator-always-on;
            };
    
            vaux2_reg: regulator@10 {
                regulator-always-on;
            };
    
            vaux33_reg: regulator@11 {
                regulator-always-on;
            };
    
            vmmc_reg: regulator@12 {
                regulator-min-microvolt = <1800000>;
                regulator-max-microvolt = <3300000>;
                regulator-always-on;
            };
        };
    };
    
    &mac {
        slaves = <1>;
        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>;
    };
    
    &cpsw_emac0 {
        phy_id = <&davinci_mdio>, <0>;
        phy-mode = "rgmii-txid";
    };
    
    &tscadc {
        status = "okay";
        tsc {
            ti,wires = <4>;
            ti,x-plate-resistance = <200>;
            ti,coordinate-readouts = <5>;
            ti,wire-config = <0x00 0x11 0x22 0x33>;
        };
    
        adc {
            ti,adc-channels = <4 5 6 7>;
        };
    };
    
    &mmc1 {
        status = "okay";
        vmmc-supply = <&vmmc_reg>;
        bus-width = <4>;
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&mmc1_pins_default>;
        pinctrl-1 = <&mmc1_pins_sleep>;
        cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
        wp-gpios = <&gpio3 18 GPIO_ACTIVE_HIGH>;
    };
    
    &mmc3 {
        /* these are on the crossbar and are outlined in the
           xbar-event-map element */
        dmas = <&edma 12
            &edma 13>;
        dma-names = "tx", "rx";
    
        status = "okay";
        vmmc-supply = <&wlan_en_reg>;
        bus-width = <4>;
        ti,non-removable;
        ti,needs-special-hs-handling;
        cap-power-off-card;
        keep-power-in-suspend;
    };
    
    &edma {
        ti,edma-xbar-event-map = <1 12
                      2 13>;
    };

  • Hi Anil,

    anil kumar23 said:
    Also please suggest me the tools for seeing the difference between the 3.2 & 3.12

    Personally I use Meld on my Ubuntu host, to compare driver sources.

    I will have a look at the dts & post if I find anything wrong with the setup.

    Best Regards,

    Yordan

  • Hi Yordan,

    Can you give me the standard configuration file for Linux 3.12 for compiling all the drivers.

    Regards,
    Anil
  • Hi,

    It is available in the sdk. For SDK7.0 it is arch/arm/configs/tisdk_am335x-evm_defconfig.

    Best Regards,
    Yordan
  • Hi Yordan,

    the same thing i have done, but my Qt applications are not syncing, mean it is running my application then if i click and go in to the next widget it is not allowing. there is a issue to pop up next window. It is not going in to the next widget. it is coming next widget executed and staying in previous widget.

    Recently i have changed some drivers in in my menu config and disturbed the whole kernel tree. If i put my old zImage & am335x-evm.dtb and run from sdcard it is working normal. To revert my changes, i need to recover my drivers in menu config. previously I have changed some settings in DMA and under USB drivers.

    Regards
    Anil
  • Hi Yordan,

    Is it prefer to use

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- tisdk_am335x-evm_defconfig

    or

    make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- omap2plus_defconfig

    which one i need to execute the configuration to my am3354 platform.

    Regards,
    Anil
  • Hi,

    The tisdk_am335x-evm_defconfig should be used, when building the SDK7.0 kernel for AM335x devices.

    Regards,
    Yordan