
On Sunday, September 13, 2015 at 10:32:10 AM, Thomas Chou wrote:
Convert altera_jtag_uart to driver model.
Signed-off-by: Thomas Chou thomas@wytron.com.tw
[...]
-static int altera_jtag_serial_init(void) +static int altera_jtaguart_putc(struct udevice *dev, const char c) {
- return 0;
-}
- struct altera_jtaguart_platdata *plat = dev->platdata;
- struct altera_jtaguart_regs *const regs = plat->reg;
-static void altera_jtag_serial_putc(char c) -{ while (1) {
unsigned st = readl(&jtag->control);
if (NIOS_JTAG_WSPACE(st)) break;unsigned st = readl(®s->control);
#ifdef CONFIG_ALTERA_JTAG_UART_BYPASS if (!(st & NIOS_JTAG_AC)) /* no connection */
return;
return 0;
#endif
WATCHDOG_RESET();
Please keep those WATCHDOG_RESET() calls, they're needed in case you do have a WDT on your board.
}
- writel ((unsigned char)c, &jtag->data);
- writel((unsigned char)c, ®s->data);
- return 0;
}
[...]
-static int altera_jtag_serial_getc(void) +static int altera_jtaguart_getc(struct udevice *dev) {
- int c;
- struct altera_jtaguart_platdata *plat = dev->platdata;
- struct altera_jtaguart_regs *const regs = plat->reg; unsigned val;
- while (1) {
WATCHDOG_RESET ();
val = readl (&jtag->data);
if (val & NIOS_JTAG_RVALID)
break;
- }
- c = val & 0x0ff;
- return (c);
- while (!((val = readl(®s->data)) & NIOS_JTAG_RVALID))
Ewww, this is ugly. Please expand it into something like the following, for the sake of readability.
while (1) { val = readl() if (val & cond) break; }
;
- return (val & 0xff);
}
Looks good otherwise, thanks ! :)
[...]