[PATCH v3] tty: serial: samsung_tty: loopback mode support
Chanho Park
chanho61.park at samsung.com
Mon Jul 11 17:44:42 PDT 2022
> > + if (mctrl & TIOCM_LOOP)
> > + ucon |= S3C2410_UCON_LOOPBACK;
> > + else
> > + ucon &= ~S3C2410_UCON_LOOPBACK;
> > +
> > + wr_regl(port, S3C2410_UCON, ucon);
>
> S3C2410_UCON must be modified at least under the local_irq_save() or port
> lock, otherwise it breaks kernel console operation on older Exynos SoCs
> (especially when DMA mode is used).
>
> The above read-modify-write sequence should be replaced with the following
> pattern:
>
> if (mctrl & TIOCM_LOOP)
> s3c24xx_set_bit(port, S3C2410_UCON_LOOPBACK, S3C2410_UCON);
> else
> s3c24xx_clear_bit(port, S3C2410_UCON_LOOPBACK, S3C2410_UCON);
All the set_mctrl() call can be protected by spin_[un]lock_irq[save/restore] with port->lock.
So, I think it is not required.
Best Regards,
Chanho Park
More information about the linux-arm-kernel
mailing list