fix(usbh_ch34x): program baudrate registers after divisor calculation

This commit is contained in:
MDLZCOOL
2025-12-13 23:40:53 +08:00
committed by sakumisu
parent 799ae48f7c
commit b1ca0406a5

View File

@@ -240,15 +240,14 @@ static int usbh_ch34x_set_line_coding(struct usbh_serial *serial, struct cdc_lin
reg_value |= CH341_L_SB; reg_value |= CH341_L_SB;
} }
reg_value |= 0xC0; usbh_ch34x_get_baudrate_div(line_coding->dwDTERate, &factor, &divisor);
reg_value |= 0xC0;
value |= 0x9c; value |= 0x9c;
value |= reg_value << 8; value |= reg_value << 8;
index |= 0x80 | divisor; index |= 0x80 | divisor;
index |= (uint16_t)factor << 8; index |= (uint16_t)factor << 8;
usbh_ch34x_get_baudrate_div(line_coding->dwDTERate, &factor, &divisor);
return usbh_ch34x_control_out(serial, CH34X_SERIAL_INIT, value, index); return usbh_ch34x_control_out(serial, CH34X_SERIAL_INIT, value, index);
} }