[PATCH 05/11] tty: amba-pl011: add register lookup table

Russell King - ARM Linux linux at arm.linux.org.uk
Thu Nov 5 16:24:11 PST 2015


On Thu, Nov 05, 2015 at 06:00:08PM -0600, Timur Tabi wrote:
> On 11/03/2015 08:51 AM, Russell King wrote:
> >  enum {
> >-	REG_DR = UART01x_DR,
> >-	REG_ST_DMAWM = ST_UART011_DMAWM,
> >-	REG_ST_TIMEOUT = ST_UART011_TIMEOUT,
> >-	REG_FR = UART01x_FR,
> >-	REG_ST_LCRH_RX = ST_UART011_LCRH_RX,
> >-	REG_IBRD = UART011_IBRD,
> >-	REG_FBRD = UART011_FBRD,
> >-	REG_LCRH = UART011_LCRH,
> >-	REG_ST_LCRH_TX = ST_UART011_LCRH_TX,
> >-	REG_CR = UART011_CR,
> >-	REG_IFLS = UART011_IFLS,
> >-	REG_IMSC = UART011_IMSC,
> >-	REG_RIS = UART011_RIS,
> >-	REG_MIS = UART011_MIS,
> >-	REG_ICR = UART011_ICR,
> >-	REG_DMACR = UART011_DMACR,
> >-	REG_ST_XFCR = ST_UART011_XFCR,
> >-	REG_ST_XON1 = ST_UART011_XON1,
> >-	REG_ST_XON2 = ST_UART011_XON2,
> >-	REG_ST_XOFF1 = ST_UART011_XOFF1,
> >-	REG_ST_XOFF2 = ST_UART011_XOFF2,
> >-	REG_ST_ITCR = ST_UART011_ITCR,
> >-	REG_ST_ITIP = ST_UART011_ITIP,
> >-	REG_ST_ABCR = ST_UART011_ABCR,
> >-	REG_ST_ABIMSC = ST_UART011_ABIMSC,
> >+	REG_DR,
> >+	REG_ST_DMAWM,
> >+	REG_ST_TIMEOUT,
> >+	REG_FR,
> >+	REG_ST_LCRH_RX,
> >+	REG_IBRD,
> >+	REG_FBRD,
> >+	REG_LCRH,
> >+	REG_ST_LCRH_TX,
> >+	REG_CR,
> >+	REG_IFLS,
> >+	REG_IMSC,
> >+	REG_RIS,
> >+	REG_MIS,
> >+	REG_ICR,
> >+	REG_DMACR,
> >+	REG_ST_XFCR,
> >+	REG_ST_XON1,
> >+	REG_ST_XON2,
> >+	REG_ST_XOFF1,
> >+	REG_ST_XOFF2,
> >+	REG_ST_ITCR,
> >+	REG_ST_ITIP,
> >+	REG_ST_ABCR,
> >+	REG_ST_ABIMSC,
> >+
> >+	/* The size of the array - must be last */
> >+	REG_ARRAY_SIZE,
> >  };
> 
> This breaks early console because REG_DR and REG_FR are now enums instead of
> an actual register offset, and so
> 
> static void pl011_putc(struct uart_port *port, int c)
> {
> 	while (readl(port->membase + REG_FR) & UART01x_FR_TXFF)
> 		;
> 	writeb(c, port->membase + REG_DR);
> 	while (readl(port->membase + REG_FR) & UART01x_FR_BUSY)
> 		;
> }
> 
> is wrong.  I get alignment violations because REG_FR is equal to 3 instead
> of 0x18.

I know, and I said as much on the 3rd November in my reply to you that
this change should be undone, and again earlier today in reply to Linus.

-- 
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.



More information about the linux-arm-kernel mailing list