On Tue, Jan 16, 2024 at 11:34:32PM +0200, Michael Zaidman wrote: > > +/* The FT260 has a "power saving mode" that causes the device to switch > > + * to a 30 kHz oscillator if there's no activity for 5 seconds. > > + * Unfortunately this mode can only be disabled by reprogramming > > + * internal fuses, which requires an additional programming voltage. > > + * > > + * One effect of this mode is to cause data loss on a fast UART that > > + * transmits after being idle for longer than 5 seconds. We work around > > + * this by sending a dummy report at least once per 4 seconds if the > > + * UART is in use. > > + */ > > For I2C, we addressed a similar issue in > https://lore.kernel.org/all/20221105211151.7094-8-michael.zaidman@xxxxxxxxx/ > commit. But we did it per IO synchronously when the distance between this and > the previous IO exceeded 5 seconds. In this way, the chip can still sleep > between the IOs. On the contrary, the suggested workaround prevents the chip > from entering the power saving mode during active TTY sessions regardless of > the traffic intensity on the UART bus. > > I cannot reproduce the issue with 1K Tx bursts at 921600 baud rate sent every > 10 seconds with the disabled chip wakeup workaround. > > Can you guide me on how to reproduce the data loss you observed? Hi Michael, This was my comment originally. It's been a long time (at least a year), but from memory I had an FT260 attached to a UART console on an MCU dev kit, which would print messages at 115200. If the MCU sat idle for more than 5 seconds and then printed a message, the first few characters of the line would be missing in picocom. If the MCU kept busy, printing more frequently than once every 5 seconds, the problem did not occur. Cheers, Daniel -- Daniel Beer Firmware Engineer at Igor Institute daniel.beer@xxxxxxxxxxxxxxxxx or +64-27-420-8101 Offices in Seattle, San Francisco, and Vancouver BC or (206) 494-3312