From de19f203e07fb435e9528425e79c8590444aedb4 Mon Sep 17 00:00:00 2001 From: Dawid Buchwald Date: Sat, 19 Feb 2022 15:07:32 +0100 Subject: [PATCH] Smallest possible fix for PL2303HX --- src/updi_link.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/updi_link.c b/src/updi_link.c index 684b6b8d..541a70a2 100644 --- a/src/updi_link.c +++ b/src/updi_link.c @@ -53,7 +53,7 @@ static void updi_set_rtsdtr_mode(PROGRAMMER* pgm) static int updi_physical_open(PROGRAMMER* pgm, int baudrate, unsigned long cflags) { - serial_recv_timeout = 100; + serial_recv_timeout = 1000; union pinfo pinfo; pinfo.serialinfo.baud = baudrate; @@ -155,6 +155,8 @@ static int updi_physical_send_double_break(PROGRAMMER * pgm) serial_send(&pgm->fd, buffer, 1); serial_recv(&pgm->fd, buffer, 1); + serial_drain(&pgm->fd, 0); + if (serial_setparams(&pgm->fd, pgm->baudrate? pgm->baudrate: 115200, SERIAL_8E2) < 0) { return -1; } @@ -196,10 +198,14 @@ int updi_physical_sib(PROGRAMMER * pgm, unsigned char * buffer, uint8_t size) int updi_link_open(PROGRAMMER * pgm) { + char init_buffer[1]; + if (updi_physical_open(pgm, pgm->baudrate? pgm->baudrate: 115200, SERIAL_8E2) < 0) { return -1; } - return updi_physical_send_double_break(pgm); + + init_buffer[0]=UPDI_BREAK; + return updi_physical_send(pgm, init_buffer, 1); } void updi_link_close(PROGRAMMER * pgm)