Pull tty / serial driver updates from Greg KH: "Here is the big set of TTY/Serial driver updates and cleanups for 6.9-rc1. Included in here are: - more tty cleanups from Jiri - loads of 8250 driver cleanups from Andy - max310x driver updates - samsung serial driver updates - uart_prepare_sysrq_char() updates for many drivers - platform driver remove callback void cleanups - stm32 driver updates - other small tty/serial driver updates All of these have been in linux-next for a long time with no reported issues" * tag 'tty-6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (199 commits) dt-bindings: serial: stm32: add power-domains property serial: 8250_dw: Replace ACPI device check by a quirk serial: Lock console when calling into driver before registration serial: 8250_uniphier: Switch to use uart_read_port_properties() serial: 8250_tegra: Switch to use uart_read_port_properties() serial: 8250_pxa: Switch to use uart_read_port_properties() serial: 8250_omap: Switch to use uart_read_port_properties() serial: 8250_of: Switch to use uart_read_port_properties() serial: 8250_lpc18xx: Switch to use uart_read_port_properties() serial: 8250_ingenic: Switch to use uart_read_port_properties() serial: 8250_dw: Switch to use uart_read_port_properties() serial: 8250_bcm7271: Switch to use uart_read_port_properties() serial: 8250_bcm2835aux: Switch to use uart_read_port_properties() serial: 8250_aspeed_vuart: Switch to use uart_read_port_properties() serial: port: Introduce a common helper to read properties serial: core: Add UPIO_UNKNOWN constant for unknown port type serial: core: Move struct uart_port::quirks closer to possible values serial: sh-sci: Call sci_serial_{in,out}() directly serial: core: only stop transmit when HW fifo is empty serial: pch: Use uart_prepare_sysrq_char(). ...
Showing the changes to kernel (1 of 122 files). Show all
Unified · Split
| @@ -3269,6 +3269,21 @@ static int __init keep_bootcon_setup(char *str) · 3268 unmodified lines | ||
| 3269 | 3269 | |
| 3270 | 3270 | early_param("keep_bootcon", keep_bootcon_setup); |
| 3271 | 3271 | |
| 3272 | +static int console_call_setup(struct console *newcon, char *options) | |
| 3273 | +{ | |
| 3274 | + int err; | |
| 3275 | + | |
| 3276 | + if (!newcon->setup) | |
| 3277 | + return 0; | |
| 3278 | + | |
| 3279 | + /* Synchronize with possible boot console. */ | |
| 3280 | + console_lock(); | |
| 3281 | + err = newcon->setup(newcon, options); | |
| 3282 | + console_unlock(); | |
| 3283 | + | |
| 3284 | + return err; | |
| 3285 | +} | |
| 3286 | + | |
| 3272 | 3287 | /* |
| 3273 | 3288 | * This is called by register_console() to try to match |
| 3274 | 3289 | * the newly registered console with any of the ones selected |
| @@ -3304,8 +3319,8 @@ static int try_enable_preferred_console(struct console *newcon, · 29 unmodified lines | ||
| 3304 | 3319 | if (_braille_register_console(newcon, c)) |
| 3305 | 3320 | return 0; |
| 3306 | 3321 | |
| 3307 | − if (newcon->setup && | |
| 3308 | − (err = newcon->setup(newcon, c->options)) != 0) | |
| 3322 | + err = console_call_setup(newcon, c->options); | |
| 3323 | + if (err) | |
| 3309 | 3324 | return err; |
| 3310 | 3325 | } |
| 3311 | 3326 | newcon->flags |= CON_ENABLED; |
| @@ -3331,7 +3346,7 @@ static void try_enable_default_console(struct console *newcon) · 19 unmodified lines | ||
| 3331 | 3346 | if (newcon->index < 0) |
| 3332 | 3347 | newcon->index = 0; |
| 3333 | 3348 | |
| 3334 | − if (newcon->setup && newcon->setup(newcon, NULL) != 0) | |
| 3349 | + if (console_call_setup(newcon, NULL) != 0) | |
| 3335 | 3350 | return; |
| 3336 | 3351 | |
| 3337 | 3352 | newcon->flags |= CON_ENABLED; |