All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marc Kleine-Budde <mkl@pengutronix.de>
To: franck.jullien@gmail.com
Cc: barebox@lists.infradead.org
Subject: Re: [PATCH] Nios2: Add Altera UART driver
Date: Sun, 03 Apr 2011 14:29:00 +0200	[thread overview]
Message-ID: <4D98680C.9060904@pengutronix.de> (raw)
In-Reply-To: <1301826331-18875-1-git-send-email-franck.jullien@gmail.com>


[-- Attachment #1.1: Type: text/plain, Size: 6791 bytes --]

On 04/03/2011 12:25 PM, franck.jullien@gmail.com wrote:
> From: Franck JULLIEN <franck.jullien@gmail.com>

Please add your S-o-b to the driver. See Documentation/SubmittingPatches
in a Linux-kernel tree.

See comments inline.
> 
> ---
>  drivers/serial/Kconfig         |    5 ++
>  drivers/serial/Makefile        |   25 +++++-----
>  drivers/serial/serial_altera.c |   97 ++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 115 insertions(+), 12 deletions(-)
>  create mode 100644 drivers/serial/serial_altera.c
> 
> diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
> index ffd877a..9e05f4b 100644
> --- a/drivers/serial/Kconfig
> +++ b/drivers/serial/Kconfig
> @@ -43,6 +43,11 @@ config DRIVER_SERIAL_BLACKFIN
>  	default y
>  	bool "Blackfin serial driver"
>  
> +config DRIVER_SERIAL_ALTERA
> +	depends on NIOS2
> +	default y
> +	bool "Altera serial driver"
> +
>  config DRIVER_SERIAL_NS16550
>  	default n
>  	bool "NS16550 serial driver"
> diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile
> index 9f0e12b..8067b74 100644
> --- a/drivers/serial/Makefile
> +++ b/drivers/serial/Makefile
> @@ -4,15 +4,16 @@
>  # serial_max3100.o
>  # serial_pl010.o
>  # serial_xuartlite.o
> -obj-$(CONFIG_DRIVER_SERIAL_ARM_DCC)		+= arm_dcc.o
> -obj-$(CONFIG_SERIAL_AMBA_PL011) += amba-pl011.o
> -obj-$(CONFIG_DRIVER_SERIAL_IMX)			+= serial_imx.o
> -obj-$(CONFIG_DRIVER_SERIAL_STM378X)		+= stm-serial.o
> -obj-$(CONFIG_DRIVER_SERIAL_ATMEL)		+= atmel.o
> -obj-$(CONFIG_DRIVER_SERIAL_NETX)		+= serial_netx.o
> -obj-$(CONFIG_DRIVER_SERIAL_LINUX_COMSOLE)	+= linux_console.o
> -obj-$(CONFIG_DRIVER_SERIAL_MPC5XXX)		+= serial_mpc5xxx.o
> -obj-$(CONFIG_DRIVER_SERIAL_BLACKFIN)		+= serial_blackfin.o
> -obj-$(CONFIG_DRIVER_SERIAL_NS16550)		+= serial_ns16550.o
> -obj-$(CONFIG_DRIVER_SERIAL_PL010)		+= serial_pl010.o
> -obj-$(CONFIG_DRIVER_SERIAL_S3C24X0)		+= serial_s3c24x0.o
> +obj-$(CONFIG_DRIVER_SERIAL_ARM_DCC)             += arm_dcc.o
> +obj-$(CONFIG_SERIAL_AMBA_PL011)                 += amba-pl011.o
> +obj-$(CONFIG_DRIVER_SERIAL_IMX)                 += serial_imx.o
> +obj-$(CONFIG_DRIVER_SERIAL_STM378X)             += stm-serial.o
> +obj-$(CONFIG_DRIVER_SERIAL_ATMEL)               += atmel.o
> +obj-$(CONFIG_DRIVER_SERIAL_NETX)                += serial_netx.o
> +obj-$(CONFIG_DRIVER_SERIAL_LINUX_COMSOLE)       += linux_console.o
> +obj-$(CONFIG_DRIVER_SERIAL_MPC5XXX)             += serial_mpc5xxx.o
> +obj-$(CONFIG_DRIVER_SERIAL_BLACKFIN)            += serial_blackfin.o
> +obj-$(CONFIG_DRIVER_SERIAL_NS16550)             += serial_ns16550.o
> +obj-$(CONFIG_DRIVER_SERIAL_PL010)               += serial_pl010.o
> +obj-$(CONFIG_DRIVER_SERIAL_S3C24X0)             += serial_s3c24x0.o
> +obj-$(CONFIG_DRIVER_SERIAL_ALTERA)              += serial_altera.o

Why do you reformat the whole file? Please don't do that.

> diff --git a/drivers/serial/serial_altera.c b/drivers/serial/serial_altera.c
> new file mode 100644
> index 0000000..03e48d1
> --- /dev/null
> +++ b/drivers/serial/serial_altera.c
> @@ -0,0 +1,97 @@
> +/*
> + * (C) Copyright 2011, Franck JULLIEN, <elec4fun@gmail.com>
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +#include <common.h>
> +#include <driver.h>
> +#include <init.h>
> +#include <malloc.h>
> +#include <asm/io.h>
> +#include <asm/nios2-io.h>
> +
> +static int altera_serial_setbaudrate(struct console_device *cdev, int baudrate)
> +{
> +	volatile struct nios_uart * uart = (struct nios_uart *)cdev->dev->map_base;
                                   ^

please remove this space.

no volatiles please.

> +	unsigned div;
> +
> +	div = (CPU_FREQ / baudrate) - 1;
> +	writel(div, &uart->divisor);
> +
> +	return 0;
> +}
> +
> +static void altera_serial_putc(struct console_device *cdev, char c)
> +{
> +	volatile struct nios_uart *uart = (struct nios_uart *)cdev->dev->map_base;
> +
> +	if (c == '\n')
> +		altera_serial_putc(cdev, '\r');

Why this? Only the at91rm9200 driver does this and I don't know why....

> +
> +	while ((readl(&uart->status) & NIOS_UART_TRDY) == 0);
> +	writel(c, &uart->txdata);
> +}
> +
> +static int altera_serial_tstc(struct console_device *cdev)
> +{
> +	volatile struct nios_uart *uart = (struct nios_uart *)cdev->dev->map_base;

No volatiles

> +
> +	return readl(&uart->status) & NIOS_UART_RRDY;
> +}
> +
> +static int altera_serial_getc(struct console_device *cdev)
> +{
> +	volatile struct nios_uart *uart = (struct nios_uart *)cdev->dev->map_base;
dito
> +
> +	while (altera_serial_tstc(cdev) == 0);
please add a comment, or at least an empty line after while

> +	return readl(&uart->rxdata) & 0x000000FF;
> +}
> +
> +static int altera_serial_probe(struct device_d *dev)
> +{
> +	struct console_device *cdev;
> +
> +	cdev = malloc(sizeof(struct console_device));

malloc can fail, use xmalloc instead

> +	dev->type_data = cdev;
> +	cdev->dev = dev;
> +	cdev->f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR;
> +	cdev->tstc = altera_serial_tstc;
> +	cdev->putc = altera_serial_putc;
> +	cdev->getc = altera_serial_getc;
> +	cdev->setbrg = altera_serial_setbaudrate;
> +
> +	console_register(cdev);
> +
> +	return 0;
> +}
> +
> +static struct driver_d altera_serial_driver = {
> +	.name  = "altera_serial",
             ^^
one space is enough

> +	.probe = altera_serial_probe,
> +};
> +
> +static int altera_serial_init(void)
> +{
> +	register_driver(&altera_serial_driver);
> +	return 0;

I think return register_driver(); is preferred.

> +}
> +
> +console_initcall(altera_serial_init);
> +

cheers, Marc

-- 
Pengutronix e.K.                  | Marc Kleine-Budde           |
Industrial Linux Solutions        | Phone: +49-231-2826-924     |
Vertretung West/Dortmund          | Fax:   +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686  | http://www.pengutronix.de   |


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 262 bytes --]

[-- Attachment #2: Type: text/plain, Size: 149 bytes --]

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

  reply	other threads:[~2011-04-03 12:29 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-03 10:25 [PATCH] Nios2: Add Altera UART driver franck.jullien
2011-04-03 12:29 ` Marc Kleine-Budde [this message]
2011-04-03 14:02   ` Franck JULLIEN
     [not found]     ` <BANLkTikgKx7yb265QoYT0pNCPesu0E7E8A@mail.gmail.com>
2011-04-03 14:44       ` Franck JULLIEN
2011-04-03 17:58     ` Marc Kleine-Budde
2011-04-04  7:35       ` Sascha Hauer

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=4D98680C.9060904@pengutronix.de \
    --to=mkl@pengutronix.de \
    --cc=barebox@lists.infradead.org \
    --cc=franck.jullien@gmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.