TK1 Serial Port issue on Highest baud rate (more than 4000000 baud rate)

Now I am able to set /dev/ttyTHS0 baud_rate up to 4000000(4M),but the documents say that speed of TK1 UART supports is up to 12.75Mbps.So I really want to know how to do that.
btw,I used this

setserial  /dev/ttyTHS0 baud_base 12000000

(ps: the divisor is 1 )but the baud_rate is not really 12Mbps,I can see that from my oscilloscope.

hello silicon_valley,

any suspicious kernel messages shown when setting the higher the baud rate?
moreover, could you please dump the baud rate at below kernel function?
/kernel/drivers/tty/serial/serial-tegra.c

static void tegra_uart_set_termios()

thanks for reply,
there is no suspiciou skernel when I

setserial  /dev/ttyTHS0 baud_base 12000000

and you mentioned dump the baud rate ,I think we should modifying the following funtions
/kernel_3.10.40_rt/include/uapi/asm-generic/termbits.h

#define  B4000000 0010017
+#define  B12000000 0010020

/kernel_3.10.40_rt/drivers/tty/tty_ioctl.c

static const speed_t baud_table[] = {
	0, 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800,
	9600, 19200, 38400, 57600, 115200, 230400, 460800,
#ifdef __sparc__
	76800, 153600, 307200, 614400, 921600
#else
	500000, 576000, 921600, 1000000, 1152000, 1500000, 2000000,
	2500000, 3000000, 3500000, 4000000,
+12000000
#endif
};

#ifndef __sparc__
static const tcflag_t baud_bits[] = {
	B0, B50, B75, B110, B134, B150, B200, B300, B600,
	B1200, B1800, B2400, B4800, B9600, B19200, B38400,
	B57600, B115200, B230400, B460800, B500000, B576000,
	B921600, B1000000, B1152000, B1500000, B2000000, B2500000,
	B3000000, B3500000, B4000000,
+B12000000
};
#else

HI JerryChang,sorry for the late post.I found one way using termios2 ,and successfully set the baud_rate to 6Mbps,and may set to 12.5Mbps.
I learn that from a post on stackoverflow,here is my code :

/*
 * Allows to set arbitrary speed for the serial device on Linux.
 * stty allows to set only predefined values: 9600, 19200, 38400, 57600, 115200, 230400, 460800.
 */
#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
#include <asm/termios.h>

int main(int argc, char* argv[]) {

    if (argc != 3) {
        printf("%s device speed\n\nSet speed for a serial device.\nFor instance:\n    %s /dev/ttyUSB0 75000\n", argv[0], argv[0]);                   
        return -1;
    }

    int fd = open(argv[1], O_RDONLY);
//    int speed =*(argv[2]);
    int speed = atoi(argv[2]);


    struct termios2 tio;
    printf("%d\n",sizeof(tio));
    ioctl(fd, TCGETS2, &tio);
    tio.c_cflag &= ~CBAUD;
    tio.c_cflag |= BOTHER;

    tio.c_cflag |=CLOCAL;

    tio.c_ispeed = speed;
    tio.c_ospeed = speed;
    int r = ioctl(fd, TCSETS2, &tio);
    close(fd);

    if (r == 0) {
        printf("Changed successfully.\n");
    } else {
        perror("ioctl");
    }
}