From: Marek Vasut <marex@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] nios2: convert altera_uart to driver model
Date: Fri, 18 Sep 2015 05:29:12 +0200 [thread overview]
Message-ID: <201509180529.12773.marex@denx.de> (raw)
In-Reply-To: <1442546658-26012-1-git-send-email-thomas@wytron.com.tw>
On Friday, September 18, 2015 at 05:24:18 AM, Thomas Chou wrote:
> Convert altera_uart to driver model.
>
> Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
> ---
Hi!
minor nitpicks below :)
> -typedef volatile struct {
> +struct altera_uart_regs {
> unsigned rxdata; /* Rx data reg */
> unsigned txdata; /* Tx data reg */
> unsigned status; /* Status reg */
> unsigned control; /* Control reg */
> unsigned divisor; /* Baud rate divisor reg */
> unsigned endofpacket; /* End-of-packet reg */
Probably make this u32 instead of unsigned, so we're in the safe.
> -} nios_uart_t;
> +};
[...]
> -static int altera_serial_init(void)
> +static int altera_uart_putc(struct udevice *dev, const char c)
> {
> - return 0;
> -}
> + struct altera_uart_platdata *plat = dev->platdata;
> + struct altera_uart_regs *const regs = plat->reg;
>
> -#else
> + if (!(readl(®s->status) & NIOS_UART_TRDY))
> + return -EAGAIN;
>
> -static void altera_serial_setbrg(void)
> -{
> - unsigned div;
> + writel((unsigned char)c, ®s->txdata);
Is this type-cast needed ?
> - div = (CONFIG_SYS_CLK_FREQ/gd->baudrate)-1;
> - writel (div, &uart->divisor);
> + return 0;
> }
>
> -static int altera_serial_init(void)
> +static int altera_uart_pending(struct udevice *dev, bool input)
> {
> - serial_setbrg();
> - return 0;
> + struct altera_uart_platdata *plat = dev->platdata;
> + struct altera_uart_regs *const regs = plat->reg;
> + unsigned st = readl(®s->status);
> +
> + if (input)
> + return (st & NIOS_UART_RRDY) ? 1 : 0;
> + else
> + return (st & NIOS_UART_TMT) ? 0 : 1;
Drop the ternary please, just use return st & flag or return !(st & flag),
it's not necessary to return 0 or 1, you can safely return 0 or non-zero.
> }
>
> -#endif /* CONFIG_SYS_NIOS_FIXEDBAUD */
> -
> -/*-----------------------------------------------------------------------
> - * UART CONSOLE
> - *---------------------------------------------------------------------*/
> -static void altera_serial_putc(char c)
> +static int altera_uart_getc(struct udevice *dev)
> {
> - if (c == '\n')
> - serial_putc ('\r');
> - while ((readl (&uart->status) & NIOS_UART_TRDY) == 0)
> - WATCHDOG_RESET ();
> - writel ((unsigned char)c, &uart->txdata);
> + struct altera_uart_platdata *plat = dev->platdata;
> + struct altera_uart_regs *const regs = plat->reg;
> +
> + if (readl(®s->status) & NIOS_UART_RRDY)
> + return (readl(®s->rxdata) & 0xff);
Parenthesis not needed around the readl(...) & 0xff expression.
> + else
> + return -EAGAIN;
> }
[...]
Thanks!
next prev parent reply other threads:[~2015-09-18 3:29 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-18 3:24 [U-Boot] [PATCH] nios2: convert altera_uart to driver model Thomas Chou
2015-09-18 3:29 ` Marek Vasut [this message]
2015-09-18 4:04 ` Simon Glass
2015-09-18 6:08 ` [U-Boot] [PATCH v2] " Thomas Chou
2015-09-18 14:54 ` Marek Vasut
2015-09-20 11:41 ` [U-Boot] [PATCH v3] " Thomas Chou
2015-09-24 6:58 ` Thomas Chou
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201509180529.12773.marex@denx.de \
--to=marex@denx.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox