Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'tty-6.18-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty

Pull tty/serial driver fixes from Greg KH:
"Here are some small tty and serial driver fixes for reported issues.
Included in here are:

- sh-sci serial driver fixes

- 8250_dw and _mtk driver fixes

- sc16is7xx driver bugfix

- new 8250_exar device ids added

All of these have been in linux-next this past week with no reported
issues"

* tag 'tty-6.18-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
serial: 8250_mtk: Enable baud clock and manage in runtime PM
serial: 8250_dw: handle reset control deassert error
dt-bindings: serial: sh-sci: Fix r8a78000 interrupts
serial: sc16is7xx: remove useless enable of enhanced features
serial: 8250_exar: add support for Advantech 2 port card with Device ID 0x0018
tty: serial: sh-sci: fix RSCI FIFO overrun handling

+27 -16
+1
Documentation/devicetree/bindings/serial/renesas,scif.yaml
··· 197 197 - renesas,rcar-gen2-scif 198 198 - renesas,rcar-gen3-scif 199 199 - renesas,rcar-gen4-scif 200 + - renesas,rcar-gen5-scif 200 201 then: 201 202 properties: 202 203 interrupts:
+3 -1
drivers/tty/serial/8250/8250_dw.c
··· 635 635 if (IS_ERR(data->rst)) 636 636 return PTR_ERR(data->rst); 637 637 638 - reset_control_deassert(data->rst); 638 + err = reset_control_deassert(data->rst); 639 + if (err) 640 + return dev_err_probe(dev, err, "failed to deassert resets\n"); 639 641 640 642 err = devm_add_action_or_reset(dev, dw8250_reset_control_assert, data->rst); 641 643 if (err)
+11
drivers/tty/serial/8250/8250_exar.c
··· 40 40 #define PCI_DEVICE_ID_ACCESSIO_COM_4SM 0x10db 41 41 #define PCI_DEVICE_ID_ACCESSIO_COM_8SM 0x10ea 42 42 43 + #define PCI_DEVICE_ID_ADVANTECH_XR17V352 0x0018 44 + 43 45 #define PCI_DEVICE_ID_COMMTECH_4224PCI335 0x0002 44 46 #define PCI_DEVICE_ID_COMMTECH_4222PCI335 0x0004 45 47 #define PCI_DEVICE_ID_COMMTECH_2324PCI335 0x000a ··· 1624 1622 .exit = pci_xr17v35x_exit, 1625 1623 }; 1626 1624 1625 + static const struct exar8250_board pbn_adv_XR17V352 = { 1626 + .num_ports = 2, 1627 + .setup = pci_xr17v35x_setup, 1628 + .exit = pci_xr17v35x_exit, 1629 + }; 1630 + 1627 1631 static const struct exar8250_board pbn_exar_XR17V4358 = { 1628 1632 .num_ports = 12, 1629 1633 .setup = pci_xr17v35x_setup, ··· 1703 1695 /* USRobotics USR298x-OEM PCI Modems */ 1704 1696 USR_DEVICE(XR17C152, 2980, pbn_exar_XR17C15x), 1705 1697 USR_DEVICE(XR17C152, 2981, pbn_exar_XR17C15x), 1698 + 1699 + /* ADVANTECH devices */ 1700 + EXAR_DEVICE(ADVANTECH, XR17V352, pbn_adv_XR17V352), 1706 1701 1707 1702 /* Exar Corp. XR17C15[248] Dual/Quad/Octal UART */ 1708 1703 EXAR_DEVICE(EXAR, XR17C152, pbn_exar_XR17C15x),
+4 -2
drivers/tty/serial/8250/8250_mtk.c
··· 435 435 while 436 436 (serial_in(up, MTK_UART_DEBUG0)); 437 437 438 + clk_disable_unprepare(data->uart_clk); 438 439 clk_disable_unprepare(data->bus_clk); 439 440 440 441 return 0; ··· 446 445 struct mtk8250_data *data = dev_get_drvdata(dev); 447 446 448 447 clk_prepare_enable(data->bus_clk); 448 + clk_prepare_enable(data->uart_clk); 449 449 450 450 return 0; 451 451 } ··· 477 475 int dmacnt; 478 476 #endif 479 477 480 - data->uart_clk = devm_clk_get(&pdev->dev, "baud"); 478 + data->uart_clk = devm_clk_get_enabled(&pdev->dev, "baud"); 481 479 if (IS_ERR(data->uart_clk)) { 482 480 /* 483 481 * For compatibility with older device trees try unnamed 484 482 * clk when no baud clk can be found. 485 483 */ 486 - data->uart_clk = devm_clk_get(&pdev->dev, NULL); 484 + data->uart_clk = devm_clk_get_enabled(&pdev->dev, NULL); 487 485 if (IS_ERR(data->uart_clk)) { 488 486 dev_warn(&pdev->dev, "Can't get uart clock\n"); 489 487 return PTR_ERR(data->uart_clk);
-7
drivers/tty/serial/sc16is7xx.c
··· 588 588 div /= prescaler; 589 589 } 590 590 591 - /* Enable enhanced features */ 592 - sc16is7xx_efr_lock(port); 593 - sc16is7xx_port_update(port, SC16IS7XX_EFR_REG, 594 - SC16IS7XX_EFR_ENABLE_BIT, 595 - SC16IS7XX_EFR_ENABLE_BIT); 596 - sc16is7xx_efr_unlock(port); 597 - 598 591 /* If bit MCR_CLKSEL is set, the divide by 4 prescaler is activated. */ 599 592 sc16is7xx_port_update(port, SC16IS7XX_MCR_REG, 600 593 SC16IS7XX_MCR_CLKSEL_BIT,
+8 -6
drivers/tty/serial/sh-sci.c
··· 1014 1014 struct sci_port *s = to_sci_port(port); 1015 1015 const struct plat_sci_reg *reg; 1016 1016 int copied = 0; 1017 - u16 status; 1017 + u32 status; 1018 1018 1019 - reg = sci_getreg(port, s->params->overrun_reg); 1020 - if (!reg->size) 1021 - return 0; 1019 + if (s->type != SCI_PORT_RSCI) { 1020 + reg = sci_getreg(port, s->params->overrun_reg); 1021 + if (!reg->size) 1022 + return 0; 1023 + } 1022 1024 1023 - status = sci_serial_in(port, s->params->overrun_reg); 1025 + status = s->ops->read_reg(port, s->params->overrun_reg); 1024 1026 if (status & s->params->overrun_mask) { 1025 1027 status &= ~s->params->overrun_mask; 1026 - sci_serial_out(port, s->params->overrun_reg, status); 1028 + s->ops->write_reg(port, s->params->overrun_reg, status); 1027 1029 1028 1030 port->icount.overrun++; 1029 1031