From d981cf357cc1cbd48c6e5f5e0954b14a9ee8f39d Mon Sep 17 00:00:00 2001 From: Sylvain Munaut Date: Sat, 13 Nov 2010 15:36:14 +0100 Subject: [HACK] Increase speed of l1ctl to 408250bps after boot This is required to deal with the increased traffic of a passive listener Note that it break the 'auto-restart' of osmocon when active because the bootloader will send the prompt at 115200 baud and we won't see it ... Change-Id: I3434bb020286ab72ba3556124786656eeacf10a9 Signed-off-by: Sylvain Munaut --- src/host/osmocon/osmocon.c | 31 ++++++++++++++++++++++++++ src/target/firmware/board/compal_e86/init.c | 2 +- src/target/firmware/board/compal_e88/init.c | 2 +- src/target/firmware/board/compal_e99/init.c | 2 +- src/target/firmware/board/gta0x/init.c | 2 +- src/target/firmware/board/pirelli_dpl10/init.c | 2 +- 6 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/host/osmocon/osmocon.c b/src/host/osmocon/osmocon.c index d49c3fdf..26513d8f 100644 --- a/src/host/osmocon/osmocon.c +++ b/src/host/osmocon/osmocon.c @@ -236,6 +236,34 @@ static const uint8_t mtk_init_cmd[] = { 0xa0, 0x0a, 0x50, 0x05 }; static const uint8_t mtk_init_resp[] = { 0x5f, 0xf5, 0xaf, 0xfa }; static const uint8_t mtk_command[] = { 0xa1, 0xa2, 0xa4, 0xa8 }; + +static int serial_up_to_eleven(void) +{ + int rv; + + /* Attempt custom baudrate */ + rv = osmo_serial_set_custom_baudrate(dnload.serial_fd.fd, 406250); + if (rv == 0) + return 0; + +#ifdef I_HAVE_A_CP210x /* and I know what I'm doing, I swear ! */ + /* Try closest standard baudrate (CP210x reprogrammed adapters) */ + rv = osmo_serial_set_baudrate(dnload.serial_fd.fd, B460800); + if (rv == 0) + return 0; +#endif + + /* Everything failed */ + fprintf(stderr, "!!!\n"); + fprintf(stderr, "!!! ERROR !!!\n"); + fprintf(stderr, "!!!\n"); + fprintf(stderr, "!!! Unable to set custom baudrate, please use appropriate cable\n"); + fprintf(stderr, "!!! ( see wiki http://bb.osmocom.org/trac/wiki/Sniffing )\n"); + fprintf(stderr, "!!!\n"); + + exit(-1); +} + static void beacon_timer_cb(void *p) { int rc; @@ -865,6 +893,8 @@ static int handle_read(void) tick_timer.data = &tick_timer; osmo_timer_schedule(&tick_timer, 0, dnload.beacon_interval); } + else + serial_up_to_eleven(); } else if (!memcmp(buffer, phone_nack, sizeof(phone_nack))) { printf("Received DOWNLOAD NACK from phone, something went" " wrong :(\n"); @@ -1000,6 +1030,7 @@ static int handle_read_romload(void) if (!memcmp(buffer, romload_branch_ack, sizeof(romload_branch_ack))) { printf("Received branch ack, your code is running now!\n"); + serial_up_to_eleven(); osmo_fd_update_when(&dnload.serial_fd, 0, OSMO_FD_READ); dnload.romload_state = FINISHED; dnload.write_ptr = dnload.data; diff --git a/src/target/firmware/board/compal_e86/init.c b/src/target/firmware/board/compal_e86/init.c index 725f1841..22363033 100644 --- a/src/target/firmware/board/compal_e86/init.c +++ b/src/target/firmware/board/compal_e86/init.c @@ -115,7 +115,7 @@ void board_init(int with_irq) /* initialize MODEM UART to be used for sercomm */ uart_init(UART_MODEM, with_irq); - uart_baudrate(UART_MODEM, UART_115200); + uart_baudrate(UART_MODEM, UART_460800); /* initialize IRDA UART to be used for old-school console code. * note: IRDA uart only accessible on C115 and C117 PCB */ diff --git a/src/target/firmware/board/compal_e88/init.c b/src/target/firmware/board/compal_e88/init.c index 956f7dc5..7c060416 100755 --- a/src/target/firmware/board/compal_e88/init.c +++ b/src/target/firmware/board/compal_e88/init.c @@ -110,7 +110,7 @@ void board_init(int with_irq) /* initialize MODEM UART to be used for sercomm */ uart_init(UART_MODEM, with_irq); - uart_baudrate(UART_MODEM, UART_115200); + uart_baudrate(UART_MODEM, UART_460800); /* Initialize IRDA UART to be used for old-school console code. * note: IRDA uart only accessible on C115 and C117 PCB */ diff --git a/src/target/firmware/board/compal_e99/init.c b/src/target/firmware/board/compal_e99/init.c index 0271f16e..7013e715 100644 --- a/src/target/firmware/board/compal_e99/init.c +++ b/src/target/firmware/board/compal_e99/init.c @@ -120,7 +120,7 @@ void board_init(int with_irq) /* initialize MODEM UART to be used for sercomm */ uart_init(UART_MODEM, with_irq); - uart_baudrate(UART_MODEM, UART_115200); + uart_baudrate(UART_MODEM, UART_460800); /* initialize IRDA UART to be used for old-school console code. * note: IRDA uart only accessible on C115 and C117 PCB */ diff --git a/src/target/firmware/board/gta0x/init.c b/src/target/firmware/board/gta0x/init.c index 7fba7561..58420947 100644 --- a/src/target/firmware/board/gta0x/init.c +++ b/src/target/firmware/board/gta0x/init.c @@ -105,7 +105,7 @@ void board_init(int with_irq) /* initialize MODEM UART to be used for sercomm */ uart_init(UART_MODEM, with_irq); - uart_baudrate(UART_MODEM, UART_115200); + uart_baudrate(UART_MODEM, UART_460800); /* Initialize IRDA UART to be used for old-school console code. * note: IRDA uart only accessible on C115 and C117 PCB */ diff --git a/src/target/firmware/board/pirelli_dpl10/init.c b/src/target/firmware/board/pirelli_dpl10/init.c index 1af6e7c9..f0b573cc 100644 --- a/src/target/firmware/board/pirelli_dpl10/init.c +++ b/src/target/firmware/board/pirelli_dpl10/init.c @@ -125,7 +125,7 @@ void board_init(int with_irq) /* initialize IRDA UART to be used for sercomm */ uart_init(UART_IRDA, with_irq); - uart_baudrate(UART_IRDA, UART_115200); + uart_baudrate(UART_IRDA, UART_460800); /* Initialize MODEM UART to be used for old-school console code. */ uart_init(UART_MODEM, with_irq); -- cgit v1.2.3