On Thu, Mar 03, 2022 at 07:32:59AM +0100, Jiri Slaby wrote: > On 02. 03. 22, 8:27, Jiri Slaby wrote: > > Currently, uart_console_write->putchar's second parameter (the > > character) is of type int. It makes little sense, provided uart_console_write() > > accepts the input string as "const char *s" and passes its content -- the > > characters -- to putchar(). So switch the character's type to unsigned > > char. > > > > We don't use char as that is signed on some platforms. That would cause > > troubles for drivers which (implicitly) cast the char to u16 when > > writing to the device. Sign extension would happen in that case and the > > value written would be completely different to the provided char. DZ is > > an example of such a driver -- on MIPS, it uses u16 for dz_out in > > dz_console_putchar(). > > > > Note we do the char -> uchar conversion implicitly in > > uart_console_write(). Provided we do not change size of the data type, > > sign extension does not happen there, so the problem is void. > > > > This makes the types consistent and unified with the rest of the uart > > layer, which uses unsigned char in most places already. One exception is > > xmit_buf, but that is going to be converted later. > > Kbuild seems to serve me this one by one. So this patch is still incomplete: > > drivers/tty/serial/sunplus-uart.c:526:7: error: incompatible function > pointer types passing 'void (struct uart_port *, int)' to parameter of type > 'void (*)(struct uart_port *, unsigned char)' Let me just add this to my -testing branch, that will give us much quicker kbuild responses and handle stuff like this easier and I can fix the errors up when they are reported. thanks, greg k-h