quoted
+ 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
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel