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.

ttyS2 boudRate on DM355

I am using UART ttyS2 on DN355.
the defualt setup for ttyS2 is BaudRate 9600, like ttyS1.
but when I send data on those UARTs I see difference output, on the osciloscope.
While sending with ttyS1 it looks good, the baudrate is 9600,
but on ttyS2 the output looks like other baoudRate ~10600.
Please let me know how to config the port good.
I make some changes to enable those UARTs:

File: arch/arm/mach-davinci/serial.c
static inline unsigned int davinci_serial_in(struct plat_serial8250_port *up,
                                             int offset)
{
        offset <<= up->regshift;
        return (unsigned int)__raw_readw(up->membase + offset);
}
static inline void davinci_serial_outp(struct plat_serial8250_port *p,
                                       int offset, int value)
{
        offset <<= p->regshift;
        __raw_writew(value, p->membase + offset);
}

In file arch/arm/mach-davinci/board-dm355-evm.c -
Adding to function "board_init()" those line:
static void board_init(void)
{
     volatile int *ptr_pgmgt,*ptr_ier;  //Added for UART1 , UART2
 
     board_setup_psc(DAVINCI_GPSC_ARMDOMAIN, DAVINCI_LPSC_VPSSMSTR, 1);
     board_setup_psc(DAVINCI_GPSC_ARMDOMAIN, DAVINCI_LPSC_VPSSSLV, 1);
     board_setup_psc(DAVINCI_GPSC_ARMDOMAIN, DAVINCI_LPSC_TPCC, 1);
     board_setup_psc(DAVINCI_GPSC_ARMDOMAIN, DAVINCI_LPSC_TPTC0, 1);
     board_setup_psc(DAVINCI_GPSC_ARMDOMAIN, DAVINCI_LPSC_TPTC1, 1);
     board_setup_psc(DAVINCI_GPSC_ARMDOMAIN, DAVINCI_LPSC_GPIO, 1);
     board_setup_psc(DAVINCI_GPSC_ARMDOMAIN, DAVINCI_LPSC_McBSP1, 1);
     board_setup_psc(DAVINCI_GPSC_ARMDOMAIN, DAVINCI_LPSC_SPI, 1);

     // Turn on WatchDog timer LPSC.  Needed for RESET to work
     board_setup_psc(DAVINCI_GPSC_ARMDOMAIN, DAVINCI_LPSC_TIMER2, 1);

     // Added for UART1
     board_setup_psc(DAVINCI_GPSC_ARMDOMAIN, DAVINCI_LPSC_UART1, 1);
     davinci_serial_init(&serial_device);
   
     davinci_writel(0x56837210, DAVINCI_VPSS_REGS_BASE + 0x810);
     davinci_writel(0x7b3c0004, DAVINCI_VPSS_REGS_BASE + 0x814);
   
     //Enable UART1
     ptr_pgmgt        = (volatile int *)IO_ADDRESS(DAVINCI_UART1_BASE+0x30) ;
     ptr_ier          = (volatile int *)IO_ADDRESS(DAVINCI_UART1_BASE+0x4);
     *ptr_pgmgt       = 0x0; //reset tx and rx
     *ptr_ier         = 0x0; //disable int
     int del          = 0;

     for(del = 0; del < 100000 ; del++)    // For delay
         *ptr_pgmgt =0x6001;
   
     // Initialize the clock configurations
     davinci_clk_init();
     //End UART1


     // Added for UART2
     board_setup_psc(DAVINCI_GPSC_ARMDOMAIN, DAVINCI_LPSC_UART2, 1);
     davinci_serial_init(&serial_device);
   
     davinci_writel(0x56837210, DAVINCI_VPSS_REGS_BASE + 0x810);
     davinci_writel(0x7b3c0004, DAVINCI_VPSS_REGS_BASE + 0x814);
   
     //Enable UART2
     ptr_pgmgt        = (volatile int *)IO_ADDRESS(DM355_UART2_BASE+0x30) ;
     ptr_ier          = (volatile int *)IO_ADDRESS(DM355_UART2_BASE+0x4);
     *ptr_pgmgt       = 0x0; //reset tx and rx
     *ptr_ier         = 0x0; //disable int
     int del          = 0;

     for(del = 0; del < 100000 ; del++)    // For delay
         *ptr_pgmgt =0x6001;
   
     // Initialize the clock configurations
     davinci_clk_init();
     //End UART2

}

to use the UARTs:

mknod  /dev/ttyS0 c 4 64
mknod  /dev/ttyS1 c 4 65
mknod  /dev/ttyS2 c 4 66

echo 9999 > /dev/ttyS1 ......