-+ __raw_writeq(M_DUART_RX_EN|M_DUART_TX_EN,
-+ IOADDR(UNIT_CHANREG(i, R_DUART_CMD)));
-+ duart_set_cflag(i, DEFAULT_CFLAGS);
++ /*
++ * this generic write to a register does not implement the 1956
++ * WAR and sometimes output gets corrupted afterwards,
++ * especially if the port was in use as a console.
++ */
++ __raw_writel(M_DUART_RX_EN|M_DUART_TX_EN, port->cmd);
++
++ /*
++ * we should really check to see if it's registered as a console
++ * before trashing those settings
++ */
++ duart_set_cflag(i, port->last_cflags);