From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-ey0-f177.google.com ([209.85.215.177]) by canuck.infradead.org with esmtps (Exim 4.72 #1 (Red Hat Linux)) id 1Q0GOq-00007b-5Y for barebox@lists.infradead.org; Thu, 17 Mar 2011 16:50:15 +0000 Received: by eyh6 with SMTP id 6so764897eyh.36 for ; Thu, 17 Mar 2011 09:50:10 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <20110316093457.GO29521@pengutronix.de> References: <1299710787-11990-2-git-send-email-franck.jullien@gmail.com> <20110316093457.GO29521@pengutronix.de> Date: Thu, 17 Mar 2011 17:50:09 +0100 Message-ID: From: Franck JULLIEN List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: multipart/mixed; boundary="===============0766741494==" Sender: barebox-bounces@lists.infradead.org Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: Re: [PATCH 1/2] Add Altera Nios2 arch support To: Sascha Hauer , barebox --===============0766741494== Content-Type: multipart/alternative; boundary=000e0cd1e2a04c6e1e049eb07430 --000e0cd1e2a04c6e1e049eb07430 Content-Type: text/plain; charset=ISO-8859-1 Hi Sascha, 2011/3/16 Sascha Hauer > Hi Julien, > > Well....it's Franck ;) I know that's a bit confusing...... > The patch looks mostly ok. Only a few comments inline and some coding > style nitpicks: > > - several trailing whitespaces > - return is not a function (should be return 0 instead of return (0) > - there should be no braces between a function and its arguments > > I think the included checkpatch script should catch most of them. > > > > + > > diff --git a/nios2/configs/generic_defconfig > b/nios2/configs/generic_defconfig > > new file mode 100644 > > index 0000000..76b69da > > --- /dev/null > > +++ b/nios2/configs/generic_defconfig > > Please generate the config with make savedefconfig > > > diff --git a/nios2/include/asm/barebox.h b/nios2/include/asm/barebox.h > > new file mode 100644 > > index 0000000..2fcf31c > > --- /dev/null > > +++ b/nios2/include/asm/barebox.h > > @@ -0,0 +1,47 @@ > > +/* > > + * barebox - barebox.h Structure declarations for board specific data > > + * > > + * Copyright (c) 2005 blackfin.uclinux.org > > + * > > + * (C) Copyright 2000-2004 > > + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. > > + * > > + * 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 > > + */ > > + > > +#ifndef _BAREBOX_H_ > > +#define _BAREBOX_H_ 1 > > + > > +typedef struct bd_info { > > + int bi_baudrate; /* serial console baudrate */ > > + unsigned long bi_ip_addr; /* IP Address */ > > + unsigned char bi_enetaddr[6]; /* Ethernet adress */ > > + unsigned long bi_arch_number; /* unique id for this board */ > > + unsigned long bi_boot_params; /* where this board expects params > */ > > + unsigned long bi_memstart; /* start of DRAM memory */ > > + unsigned long bi_memsize; /* size of DRAM memory in bytes */ > > + unsigned long bi_flashstart; /* start of FLASH memory */ > > + unsigned long bi_flashsize; /* size of FLASH memory */ > > + unsigned long bi_flashoffset; /* reserved area for startup > monitor */ > > +} bd_t; > > This isn't used anywhere in this patch. Is it needed for passing data to > Linux? If yes, ok, otherwise please remove it. > This file is included bu include/common.h Should I provide an empty file ? > > > diff --git a/nios2/include/asm/io.h b/nios2/include/asm/io.h > > new file mode 100644 > > index 0000000..121405c > > --- /dev/null > > +++ b/nios2/include/asm/io.h > > @@ -0,0 +1,130 @@ > > +/* > > + * (C) Copyright 2004, Psyent Corporation > > + * Scott McNutt > > + * > > + * 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 > > + */ > > + > > +#ifndef __ASM_NIOS2_IO_H_ > > +#define __ASM_NIOS2_IO_H_ > > + > > +static inline void sync(void) > > +{ > > + __asm__ __volatile__ ("sync" : : : "memory"); > > +} > > + > > +/* > > + * Given a physical address and a length, return a virtual address > > + * that can be used to access the memory range with the caching > > + * properties specified by "flags". > > + */ > > +#define MAP_NOCACHE (0) > > +#define MAP_WRCOMBINE (0) > > +#define MAP_WRBACK (0) > > +#define MAP_WRTHROUGH (0) > > + > > +static inline void * > > +map_physmem(phys_addr_t paddr, unsigned long len, unsigned long flags) > > +{ > > + return (void *)paddr; > > +} > > + > > +/* > > + * Take down a mapping set up by map_physmem(). > > + */ > > +static inline void unmap_physmem(void *vaddr, unsigned long flags) > > +{ > > + > > +} > > + > > +static inline phys_addr_t virt_to_phys(void * vaddr) > > +{ > > + return (phys_addr_t)(vaddr); > > +} > > + > > +extern unsigned char inb (unsigned char *port); > > +extern unsigned short inw (unsigned short *port); > > +extern unsigned inl (unsigned port); > > + > > +#define __raw_writeb(v,a) (*(volatile unsigned char *)(a) = (v)) > > +#define __raw_writew(v,a) (*(volatile unsigned short *)(a) = (v)) > > +#define __raw_writel(v,a) (*(volatile unsigned int *)(a) = (v)) > > + > > +#define __raw_readb(a) (*(volatile unsigned char *)(a)) > > +#define __raw_readw(a) (*(volatile unsigned short *)(a)) > > +#define __raw_readl(a) (*(volatile unsigned int *)(a)) > > + > > +#define readb(addr)\ > > + ({unsigned char val;\ > > + asm volatile( "ldbio %0, 0(%1)" :"=r"(val) : "r" (addr)); val;}) > > +#define readw(addr)\ > > + ({unsigned short val;\ > > + asm volatile( "ldhio %0, 0(%1)" :"=r"(val) : "r" (addr)); val;}) > > +#define readl(addr)\ > > + ({unsigned long val;\ > > + asm volatile( "ldwio %0, 0(%1)" :"=r"(val) : "r" (addr)); val;}) > > + > > +#define writeb(val,addr)\ > > + asm volatile ("stbio %0, 0(%1)" : : "r" (val), "r" (addr)) > > +#define writew(val,addr)\ > > + asm volatile ("sthio %0, 0(%1)" : : "r" (val), "r" (addr)) > > +#define writel(val,addr)\ > > + asm volatile ("stwio %0, 0(%1)" : : "r" (val), "r" (addr)) > > + > > +#define inb(addr) readb(addr) > > +#define inw(addr) readw(addr) > > +#define inl(addr) readl(addr) > > +#define outb(val, addr) writeb(val,addr) > > +#define outw(val, addr) writew(val,addr) > > +#define outl(val, addr) writel(val,addr) > > We won't need this in barebox environment. We should just stick to > read*/write* > done. > > > diff --git a/nios2/include/asm/nios2-io.h b/nios2/include/asm/nios2-io.h > > new file mode 100644 > > index 0000000..c20885b > > --- /dev/null > > +++ b/nios2/include/asm/nios2-io.h > > @@ -0,0 +1,182 @@ > > +/* > > + * (C) Copyright 2004, Psyent Corporation > > + * Scott McNutt > > + * > > + * 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 > > + */ > > + > > > +/************************************************************************* > > + * Altera Nios2 Standard Peripherals > > + > ************************************************************************/ > > + > > +#ifndef __NIOS2IO_H__ > > +#define __NIOS2IO_H__ > > + > > > +/*------------------------------------------------------------------------ > > + * UART (http://www.altera.com/literature/ds/ds_nios_uart.pdf) > > + > *----------------------------------------------------------------------*/ > > +typedef volatile struct nios_uart_t { > > + 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 */ > > +}nios_uart_t; > > Please do not typedef struct types. Also, the volatile is unnecessary. > > done. > -- > Pengutronix e.K. | | > Industrial Linux Solutions | http://www.pengutronix.de/ | > Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | > Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | > Franck. --000e0cd1e2a04c6e1e049eb07430 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Hi Sascha,

2011/3/16 Sascha Hauer <s.hauer@pengutronix.= de>
Hi Julien,


Well....it's Franck ;) I know that= 's a bit confusing......
=A0
The patch looks mostly ok. Only a few comments inline and some coding
style nitpicks:

- several trailing whitespaces
- return is not a function (should be return 0 instead of return (0)
- there should be no braces between a function and its arguments

I think the included checkpatch script should catch most of them.


> +
> diff --git a/nios2/configs/generic_defconfig b/nios2/configs/generic_d= efconfig
> new file mode 100644
> index 0000000..76b69da
> --- /dev/null
> +++ b/nios2/configs/generic_defconfig

Please generate the config with make savedefconfig

> diff --git a/nios2/include/asm/barebox.h b/nios2/include/asm/barebox.h=
> new file mode 100644
> index 0000000..2fcf31c
> --- /dev/null
> +++ b/nios2/include/asm/barebox.h
> @@ -0,0 +1,47 @@
> +/*
> + * barebox - barebox.h Structure declarations for board specific data=
> + *
> + * Copyright (c) 2005 blackfin.uclinux.org
> + *
> + * (C) Copyright 2000-2004
> + * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
> + *
> + * 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. =A0See the > + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License<= br> > + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +#ifndef _BAREBOX_H_
> +#define _BAREBOX_H_ =A01
> +
> +typedef struct bd_info {
> + =A0 =A0 int bi_baudrate; =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/* serial co= nsole baudrate */
> + =A0 =A0 unsigned long bi_ip_addr; =A0 =A0 =A0 /* IP Address */
> + =A0 =A0 unsigned char bi_enetaddr[6]; =A0 /* Ethernet adress */
> + =A0 =A0 unsigned long bi_arch_number; =A0 /* unique id for this boar= d */
> + =A0 =A0 unsigned long bi_boot_params; =A0 /* where this board expect= s params */
> + =A0 =A0 unsigned long bi_memstart; =A0 =A0 =A0/* start of DRAM memor= y */
> + =A0 =A0 unsigned long bi_memsize; =A0 =A0 =A0 /* size =A0of DRAM mem= ory in bytes */
> + =A0 =A0 unsigned long bi_flashstart; =A0 =A0/* start of FLASH memory= */
> + =A0 =A0 unsigned long bi_flashsize; =A0 =A0 /* size =A0of FLASH memo= ry */
> + =A0 =A0 unsigned long bi_flashoffset; =A0 /* reserved area for start= up monitor */
> +} bd_t;

This isn't used anywhere in this patch. Is it needed for pa= ssing data to
Linux? If yes, ok, otherwise please remove it.

This file is included bu include/common.h
Should I provid= e an empty file ?
=A0

> diff --git a/nios2/include/asm/io.h b/nios2/include/asm/io.h
> new file mode 100644
> index 0000000..121405c
> --- /dev/null
> +++ b/nios2/include/asm/io.h
> @@ -0,0 +1,130 @@
> +/*
> + * (C) Copyright 2004, Psyent Corporation <www.psyent.com>
> + * Scott McNutt <smcnutt@psy= ent.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. =A0See the > + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License<= br> > + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +#ifndef __ASM_NIOS2_IO_H_
> +#define __ASM_NIOS2_IO_H_
> +
> +static inline void sync(void)
> +{
> + =A0 =A0 __asm__ __volatile__ ("sync" : : : "memory&qu= ot;);
> +}
> +
> +/*
> + * Given a physical address and a length, return a virtual address > + * that can be used to access the memory range with the caching
> + * properties specified by "flags".
> + */
> +#define MAP_NOCACHE =A0(0)
> +#define MAP_WRCOMBINE =A0 =A0 =A0 =A0(0)
> +#define MAP_WRBACK =A0 (0)
> +#define MAP_WRTHROUGH =A0 =A0 =A0 =A0(0)
> +
> +static inline void *
> +map_physmem(phys_addr_t paddr, unsigned long len, unsigned long flags= )
> +{
> + =A0 =A0 return (void *)paddr;
> +}
> +
> +/*
> + * Take down a mapping set up by map_physmem().
> + */
> +static inline void unmap_physmem(void *vaddr, unsigned long flags) > +{
> +
> +}
> +
> +static inline phys_addr_t virt_to_phys(void * vaddr)
> +{
> + =A0 =A0 return (phys_addr_t)(vaddr);
> +}
> +
> +extern unsigned char inb (unsigned char *port);
> +extern unsigned short inw (unsigned short *port);
> +extern unsigned inl (unsigned port);
> +
> +#define __raw_writeb(v,a) =A0 =A0 =A0 (*(volatile unsigned char =A0*)= (a) =3D (v))
> +#define __raw_writew(v,a) =A0 =A0 =A0 (*(volatile unsigned short *)(a= ) =3D (v))
> +#define __raw_writel(v,a) =A0 =A0 =A0 (*(volatile unsigned int =A0 *)= (a) =3D (v))
> +
> +#define __raw_readb(a) =A0 =A0 =A0 =A0 =A0(*(volatile unsigned char = =A0*)(a))
> +#define __raw_readw(a) =A0 =A0 =A0 =A0 =A0(*(volatile unsigned short = *)(a))
> +#define __raw_readl(a) =A0 =A0 =A0 =A0 =A0(*(volatile unsigned int = =A0 *)(a))
> +
> +#define readb(addr)\
> + =A0 =A0 ({unsigned char val;\
> + =A0 =A0 =A0asm volatile( "ldbio %0, 0(%1)" :"=3Dr&quo= t;(val) : "r" (addr)); val;})
> +#define readw(addr)\
> + =A0 =A0 ({unsigned short val;\
> + =A0 =A0 =A0asm volatile( "ldhio %0, 0(%1)" :"=3Dr&quo= t;(val) : "r" (addr)); val;})
> +#define readl(addr)\
> + =A0 =A0 ({unsigned long val;\
> + =A0 =A0 =A0asm volatile( "ldwio %0, 0(%1)" :"=3Dr&quo= t;(val) : "r" (addr)); val;})
> +
> +#define writeb(val,addr)\
> + =A0 =A0 asm volatile ("stbio %0, 0(%1)" : : "r" = (val), "r" (addr))
> +#define writew(val,addr)\
> + =A0 =A0 asm volatile ("sthio %0, 0(%1)" : : "r" = (val), "r" (addr))
> +#define writel(val,addr)\
> + =A0 =A0 asm volatile ("stwio %0, 0(%1)" : : "r" = (val), "r" (addr))
> +
> +#define inb(addr) =A0 =A0readb(addr)
> +#define inw(addr) =A0 =A0readw(addr)
> +#define inl(addr) =A0 =A0readl(addr)
> +#define outb(val, addr) =A0 =A0 =A0writeb(val,addr)
> +#define outw(val, addr) =A0 =A0 =A0writew(val,addr)
> +#define outl(val, addr) =A0 =A0 =A0writel(val,addr)

We won't need this in barebox environment. We should just s= tick to
read*/write*

done.
=A0
<= blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px= #ccc solid;padding-left:1ex;">

> diff --git a/nios2/include/asm/nios2-io.h b/nios2/include/asm/nios2-io= .h
> new file mode 100644
> index 0000000..c20885b
> --- /dev/null
> +++ b/nios2/include/asm/nios2-io.h
> @@ -0,0 +1,182 @@
> +/*
> + * (C) Copyright 2004, Psyent Corporation <www.psyent.com>
> + * Scott McNutt <smcnutt@psy= ent.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. =A0See the > + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License<= br> > + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +/********************************************************************= *****
> + * Altera Nios2 Standard Peripherals
> + ********************************************************************= ****/
> +
> +#ifndef __NIOS2IO_H__
> +#define __NIOS2IO_H__
> +
> +/*-------------------------------------------------------------------= -----
> + * UART (http://www.altera.com/literature/ds/ds_nios_uart.pdf= )
> + *-------------------------------------------------------------------= ---*/
> +typedef volatile struct nios_uart_t {
> + =A0 =A0 unsigned =A0 =A0 =A0 =A0rxdata; =A0 =A0 =A0 =A0 /* Rx data r= eg */
> + =A0 =A0 unsigned =A0 =A0 =A0 =A0txdata; =A0 =A0 =A0 =A0 /* Tx data r= eg */
> + =A0 =A0 unsigned =A0 =A0 =A0 =A0status; =A0 =A0 =A0 =A0 /* Status re= g */
> + =A0 =A0 unsigned =A0 =A0 =A0 =A0control; =A0 =A0 =A0 =A0/* Control r= eg */
> + =A0 =A0 unsigned =A0 =A0 =A0 =A0divisor; =A0 =A0 =A0 =A0/* Baud rate= divisor reg */
> + =A0 =A0 unsigned =A0 =A0 =A0 =A0endofpacket; =A0 =A0/* End-of-packet= reg */
> +}nios_uart_t;

Please do not typedef struct types. Also, the volatile is unnec= essary.


done.
=A0
--
Pengutronix e.K. =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 | =A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 |
Industrial Linux Solutions =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 | http://www.pengutronix.de/ = =A0|
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 =A0 = =A0|
Amtsgericht Hildesheim, HRA 2686 =A0 =A0 =A0 =A0 =A0 | Fax: =A0 +49-5121-20= 6917-5555 |

Franck.
<= br>
--000e0cd1e2a04c6e1e049eb07430-- --===============0766741494== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox --===============0766741494==--