Commit 58f504ef authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull tty / serial driver updates from Greg KH:
 "Here is the tty/serial driver set of changes for 6.14-rc1. Nothing
  major in here, it was delayed a bit due to a regression found in
  linux-next which has now been reverted and verified that it is fixed.

  Other than the reverts, highlights include:

   - 8250 work to get the nbcon mode working (partially reverted)

   - altera_jtaguart minor fixes

   - fsl_lpuart minor updates

   - sh-sci driver minor updatesa

   - other tiny driver updates and cleanups

  All of these have been in linux-next for a while, and now with no
  reports of problems (thanks to the reverts)"

* tag 'tty-6.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (44 commits)
  Revert "serial: 8250: Switch to nbcon console"
  Revert "serial: 8250: Revert "drop lockdep annotation from serial8250_clear_IER()""
  serial: sh-sci: Increment the runtime usage counter for the earlycon device
  serial: sh-sci: Clean sci_ports[0] after at earlycon exit
  serial: sh-sci: Do not probe the serial port if its slot in sci_ports[] is in use
  serial: sh-sci: Move runtime PM enable to sci_probe_single()
  serial: sh-sci: Drop __initdata macro for port_cfg
  serial: kgdb_nmi: Remove unused knock code
  tty: Permit some TIOCL_SETSEL modes without CAP_SYS_ADMIN
  tty: xilinx_uartps: split sysrq handling
  serial: 8250: Revert "drop lockdep annotation from serial8250_clear_IER()"
  serial: 8250: Switch to nbcon console
  serial: 8250: Provide flag for IER toggling for RS485
  serial: 8250: Use high-level writing function for FIFO
  serial: 8250: Use frame time to determine timeout
  serial: 8250: Adjust the timeout for FIFO mode
  tty: atmel_serial: Use of_property_present() for non-boolean properties
  serial: sc16is7xx: Add polling mode if no IRQ pin is available
  dt-bindings: serial: sc16is7xx: Add description for polling mode
  tty: serial: atmel: make it selectable for ARCH_LAN969X
  ...
parents e2ee2e9b f79b163c
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@ properties:
    maxItems: 1

  interrupts:
    description:
      When missing, device driver uses polling instead.
    maxItems: 1

  clocks:
@@ -76,7 +78,6 @@ properties:
required:
  - compatible
  - reg
  - interrupts

allOf:
  - $ref: /schemas/spi/spi-peripheral-props.yaml#
+5 −0
Original line number Diff line number Diff line
@@ -83,6 +83,11 @@ properties:

      - const: renesas,scif-r9a09g057       # RZ/V2H(P)

      - items:
          - enum:
              - renesas,scif-r9a09g047      # RZ/G3E
          - const: renesas,scif-r9a09g057   # RZ/V2H fallback

  reg:
    maxItems: 1

+8 −4
Original line number Diff line number Diff line
@@ -266,10 +266,14 @@ static struct pci_device_id parport_serial_pci_tbl[] = {
	{ 0x1409, 0x7168, 0x1409, 0xd079, 0, 0, timedia_9079c },

	/* WCH CARDS */
	{ 0x4348, 0x5053, PCI_ANY_ID, PCI_ANY_ID, 0, 0, wch_ch353_1s1p},
	{ 0x4348, 0x7053, 0x4348, 0x3253, 0, 0, wch_ch353_2s1p},
	{ 0x1c00, 0x3050, 0x1c00, 0x3050, 0, 0, wch_ch382_0s1p},
	{ 0x1c00, 0x3250, 0x1c00, 0x3250, 0, 0, wch_ch382_2s1p},
	{ PCI_VENDOR_ID_WCHCN, PCI_DEVICE_ID_WCHCN_CH353_1S1P,
	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, wch_ch353_1s1p },
	{ PCI_VENDOR_ID_WCHCN, PCI_DEVICE_ID_WCHCN_CH353_2S1P,
	  0x4348, 0x3253, 0, 0, wch_ch353_2s1p },
	{ PCI_VENDOR_ID_WCHIC, PCI_DEVICE_ID_WCHIC_CH382_0S1P,
	  0x1c00, 0x3050, 0, 0, wch_ch382_0s1p },
	{ PCI_VENDOR_ID_WCHIC, PCI_DEVICE_ID_WCHIC_CH382_2S1P,
	  0x1c00, 0x3250, 0, 0, wch_ch382_2s1p },

	/* BrainBoxes PX272/PX306 MIO card */
	{ PCI_VENDOR_ID_INTASHIELD, 0x4100,
+2 −2
Original line number Diff line number Diff line
@@ -1154,7 +1154,7 @@ static char kgdbfdc_rbuf[4];

/* write buffer to allow compaction */
static unsigned int kgdbfdc_wbuflen;
static char kgdbfdc_wbuf[4];
static u8 kgdbfdc_wbuf[4];

static void __iomem *kgdbfdc_setup(void)
{
@@ -1215,7 +1215,7 @@ static int kgdbfdc_read_char(void)
/* push an FDC word from write buffer to TX FIFO */
static void kgdbfdc_push_one(void)
{
	const char *bufs[1] = { kgdbfdc_wbuf };
	const u8 *bufs[1] = { kgdbfdc_wbuf };
	struct fdc_word word;
	void __iomem *regs;
	unsigned int i;
+27 −12
Original line number Diff line number Diff line
@@ -2224,7 +2224,7 @@ static int gsm_dlci_negotiate(struct gsm_dlci *dlci)
 *
 *	Some control dlci can stay in ADM mode with other dlci working just
 *	fine. In that case we can just keep the control dlci open after the
 *	DLCI_OPENING retries time out.
 *	DLCI_OPENING receives DM.
 */

static void gsm_dlci_t1(struct timer_list *t)
@@ -2243,16 +2243,19 @@ static void gsm_dlci_t1(struct timer_list *t)
		}
		break;
	case DLCI_OPENING:
		if (dlci->retries) {
			dlci->retries--;
			gsm_command(dlci->gsm, dlci->addr, SABM|PF);
			mod_timer(&dlci->t1, jiffies + gsm->t1 * HZ / 100);
		} else if (!dlci->addr && gsm->control == (DM | PF)) {
		if (!dlci->addr && gsm->control == (DM | PF)) {
			if (debug & DBG_ERRORS)
				pr_info("DLCI %d opening in ADM mode.\n",
					dlci->addr);
				pr_info("DLCI 0 opening in ADM mode.\n");
			dlci->mode = DLCI_MODE_ADM;
			gsm_dlci_open(dlci);
		} else if (dlci->retries) {
			if (!dlci->addr || !gsm->dlci[0] ||
			    gsm->dlci[0]->state != DLCI_OPENING) {
				dlci->retries--;
				gsm_command(dlci->gsm, dlci->addr, SABM|PF);
			}

			mod_timer(&dlci->t1, jiffies + gsm->t1 * HZ / 100);
		} else {
			gsm->open_error++;
			gsm_dlci_begin_close(dlci); /* prevent half open link */
@@ -2308,6 +2311,8 @@ static void gsm_dlci_begin_open(struct gsm_dlci *dlci)
		dlci->retries = gsm->n2;
		if (!need_pn) {
			dlci->state = DLCI_OPENING;
			if (!dlci->addr || !gsm->dlci[0] ||
			    gsm->dlci[0]->state != DLCI_OPENING)
				gsm_command(gsm, dlci->addr, SABM|PF);
		} else {
			/* Configure DLCI before setup */
@@ -4251,7 +4256,7 @@ static const struct tty_port_operations gsm_port_ops = {
static int gsmtty_install(struct tty_driver *driver, struct tty_struct *tty)
{
	struct gsm_mux *gsm;
	struct gsm_dlci *dlci;
	struct gsm_dlci *dlci, *dlci0;
	unsigned int line = tty->index;
	unsigned int mux = mux_line_to_num(line);
	bool alloc = false;
@@ -4274,10 +4279,20 @@ static int gsmtty_install(struct tty_driver *driver, struct tty_struct *tty)
	perspective as we don't have to worry about this
	if DLCI0 is lost */
	mutex_lock(&gsm->mutex);
	if (gsm->dlci[0] && gsm->dlci[0]->state != DLCI_OPEN) {

	dlci0 = gsm->dlci[0];
	if (dlci0 && dlci0->state != DLCI_OPEN) {
		mutex_unlock(&gsm->mutex);

		if (dlci0->state == DLCI_OPENING)
			wait_event(gsm->event, dlci0->state != DLCI_OPENING);

		if (dlci0->state != DLCI_OPEN)
			return -EL2NSYNC;

		mutex_lock(&gsm->mutex);
	}

	dlci = gsm->dlci[line];
	if (dlci == NULL) {
		alloc = true;
Loading