Re: [PATCH] [OMAP850] Base support for omap850 cpu.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



* zmc@xxxxxxxxxx <zmc@xxxxxxxxxx> [090308 11:12]:
> On Wed, Mar 04, 2009 at 10:05:32AM -0800, Tony Lindgren wrote:
> > * zmc@xxxxxxxxxx <zmc@xxxxxxxxxx> [090127 16:25]:
> > > On Mon, Jan 26, 2009 at 08:48:38AM -0800, Tony Lindgren wrote:
> > > > Hi,
> > > > 
> > > > * Zebediah C. McClure <zmc@xxxxxxxxxx> [090124 11:27]:
> > > > > ---
> > > > >  arch/arm/mach-omap1/id.c                   |    4 +-
> > > > >  arch/arm/plat-omap/include/mach/cpu.h      |   35 +++++++++-
> > > > >  arch/arm/plat-omap/include/mach/hardware.h |    1 +
> > > > >  arch/arm/plat-omap/include/mach/omap850.h  |  102 ++++++++++++++++++++++++++++
> > > > >  4 files changed, 137 insertions(+), 5 deletions(-)
> > > > >  create mode 100644 arch/arm/plat-omap/include/mach/omap850.h
> > > > > 
> > > > 
> > > > <snip>
> > > > 
> > > > > diff --git a/arch/arm/plat-omap/include/mach/hardware.h b/arch/arm/plat-omap/include/mach/hardware.h
> > > > > index 6589ddb..8cffc07 100644
> > > > > --- a/arch/arm/plat-omap/include/mach/hardware.h
> > > > > +++ b/arch/arm/plat-omap/include/mach/hardware.h
> > > > > @@ -281,6 +281,7 @@
> > > > >   */
> > > > >  
> > > > >  #include "omap730.h"
> > > > > +#include "omap850.h"
> > > > >  #include "omap1510.h"
> > > > >  #include "omap16xx.h"
> > > > >  #include "omap24xx.h"
> > > > 
> > > > The patch looks good in general. However, can you please leave out the
> > > > include "omap850.h" above, and include omap850.h directly where needed?
> > > > 
> > > > I'm working on a set of patches to remove the inclusion of the
> > > > processor headers in hardware.h. These include will unecessarily 
> > > > force recompile of everything when changing processor type as noted by
> > > > Russell.
> > 
> > Zebediah, could you please repost the following patches one more time
> > with proper Signed-off-by?
> > 
> > [PATCH] [OMAP850] Base support for omap850 cpu
> > [PATCH] [OMAP850] Changes to base IO subsystems
> > [PATCH] [OMAP850] Changes to memory subsystems
> > [PATCH] [OMAP850] IRQ related changes
> > 
> > Then I'll add these to my for-next branch to be merged. We still need
> > to wait on the clock and PM changes, but at least that shrinks down your
> > patchset quite a bit.
> > 
> > Regards,
> > 
> > Tony
> > 
> 
> Here they are. I also have them available in git if you prefer.

Thanks. I've added them to my for-next branch except for the clock
patch [1]. So no git branch needed right now.

Note that I've made some cosmetic changes and fixed few whitespace
typos. Also changed the gpio.c void __iomem * casts into to use
IO_ADDRESS(). 

I suggest you refresh your clock patch once all the other pending
clock patches go into the mainline during the next merge window,
and then repost that here with linux-omap@xxxxxxxxxxxxxxx Cc'd.

Then if everything looks good, hopefully we'll have enough time
to get that one in too during the merge window.

Regards,

Tony

[1] http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=shortlog;h=for-next
 
> Thanks again,
> 
> Zeb
>   
> > > > Regards,
> > > > 
> > > > Tony
> > > 
> > > Thanks,
> > > 
> > > 	Removed include.
> > > 
> > > zmc
> > 
> > > From 434fd1dafe3bdcd28d524f14cc107a29c3332700 Mon Sep 17 00:00:00 2001
> > > From: Zebediah C. McClure <zmc@xxxxxxxxxx>
> > > Date: Tue, 27 Jan 2009 20:16:26 -0400
> > > Subject: [PATCH] [OMAP850] Base support for omap850 cpu.
> > > 
> > > ---
> > >  arch/arm/mach-omap1/id.c                  |    4 +-
> > >  arch/arm/plat-omap/include/mach/cpu.h     |   35 +++++++++-
> > >  arch/arm/plat-omap/include/mach/omap850.h |  102 +++++++++++++++++++++++++++++
> > >  3 files changed, 136 insertions(+), 5 deletions(-)
> > >  create mode 100644 arch/arm/plat-omap/include/mach/omap850.h
> > > 
> > > diff --git a/arch/arm/mach-omap1/id.c b/arch/arm/mach-omap1/id.c
> > > index 89bb875..4ef26fa 100644
> > > --- a/arch/arm/mach-omap1/id.c
> > > +++ b/arch/arm/mach-omap1/id.c
> > > @@ -38,6 +38,7 @@ static struct omap_id omap_ids[] __initdata = {
> > >  	{ .jtag_id = 0xb574, .die_rev = 0x2, .omap_id = 0x03310315, .type = 0x03100000},
> > >  	{ .jtag_id = 0x355f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300100},
> > >  	{ .jtag_id = 0xb55f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300300},
> > > +	{ .jtag_id = 0xb55f, .die_rev = 0x0, .omap_id = 0x03320500, .type = 0x08500000},
> > >  	{ .jtag_id = 0xb470, .die_rev = 0x0, .omap_id = 0x03310100, .type = 0x15100000},
> > >  	{ .jtag_id = 0xb576, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x16100000},
> > >  	{ .jtag_id = 0xb576, .die_rev = 0x2, .omap_id = 0x03320100, .type = 0x16110000},
> > > @@ -77,7 +78,7 @@ static u16 __init omap_get_jtag_id(void)
> > >  	prod_id = omap_readl(OMAP_PRODUCTION_ID_1);
> > >  	omap_id = omap_readl(OMAP32_ID_1);
> > >  
> > > -	/* Check for unusable OMAP_PRODUCTION_ID_1 on 1611B/5912 and 730 */
> > > +	/* Check for unusable OMAP_PRODUCTION_ID_1 on 1611B/5912 and 730/850 */
> > >  	if (((prod_id >> 20) == 0) || (prod_id == omap_id))
> > >  		prod_id = 0;
> > >  	else
> > > @@ -178,6 +179,7 @@ void __init omap_check_revision(void)
> > >  
> > >  	switch (cpu_type) {
> > >  	case 0x07:
> > > +	case 0x08:
> > >  		omap_revision |= 0x07;
> > >  		break;
> > >  	case 0x03:
> > > diff --git a/arch/arm/plat-omap/include/mach/cpu.h b/arch/arm/plat-omap/include/mach/cpu.h
> > > index b2062f1..ef399f4 100644
> > > --- a/arch/arm/plat-omap/include/mach/cpu.h
> > > +++ b/arch/arm/plat-omap/include/mach/cpu.h
> > > @@ -56,6 +56,14 @@ unsigned int omap_rev(void);
> > >  #  define OMAP_NAME omap730
> > >  # endif
> > >  #endif
> > > +#ifdef CONFIG_ARCH_OMAP850
> > > +# ifdef OMAP_NAME
> > > +#  undef  MULTI_OMAP1
> > > +#  define MULTI_OMAP1
> > > +# else
> > > +#  define OMAP_NAME omap850
> > > +# endif
> > > +#endif
> > >  #ifdef CONFIG_ARCH_OMAP15XX
> > >  # ifdef OMAP_NAME
> > >  #  undef  MULTI_OMAP1
> > > @@ -105,7 +113,7 @@ unsigned int omap_rev(void);
> > >  /*
> > >   * Macros to group OMAP into cpu classes.
> > >   * These can be used in most places.
> > > - * cpu_is_omap7xx():	True for OMAP730
> > > + * cpu_is_omap7xx():	True for OMAP730, OMAP850
> > >   * cpu_is_omap15xx():	True for OMAP1510, OMAP5910 and OMAP310
> > >   * cpu_is_omap16xx():	True for OMAP1610, OMAP5912 and OMAP1710
> > >   * cpu_is_omap24xx():	True for OMAP2420, OMAP2422, OMAP2423, OMAP2430
> > > @@ -153,6 +161,10 @@ IS_OMAP_SUBCLASS(343x, 0x343)
> > >  #  undef  cpu_is_omap7xx
> > >  #  define cpu_is_omap7xx()		is_omap7xx()
> > >  # endif
> > > +# if defined(CONFIG_ARCH_OMAP850)
> > > +#  undef  cpu_is_omap7xx
> > > +#  define cpu_is_omap7xx()		is_omap7xx()
> > > +# endif
> > >  # if defined(CONFIG_ARCH_OMAP15XX)
> > >  #  undef  cpu_is_omap15xx
> > >  #  define cpu_is_omap15xx()		is_omap15xx()
> > > @@ -166,6 +178,10 @@ IS_OMAP_SUBCLASS(343x, 0x343)
> > >  #  undef  cpu_is_omap7xx
> > >  #  define cpu_is_omap7xx()		1
> > >  # endif
> > > +# if defined(CONFIG_ARCH_OMAP850)
> > > +#  undef  cpu_is_omap7xx
> > > +#  define cpu_is_omap7xx()		1
> > > +# endif
> > >  # if defined(CONFIG_ARCH_OMAP15XX)
> > >  #  undef  cpu_is_omap15xx
> > >  #  define cpu_is_omap15xx()		1
> > > @@ -219,6 +235,7 @@ IS_OMAP_SUBCLASS(343x, 0x343)
> > >   * These are only rarely needed.
> > >   * cpu_is_omap330():	True for OMAP330
> > >   * cpu_is_omap730():	True for OMAP730
> > > + * cpu_is_omap850():	True for OMAP850
> > >   * cpu_is_omap1510():	True for OMAP1510
> > >   * cpu_is_omap1610():	True for OMAP1610
> > >   * cpu_is_omap1611():	True for OMAP1611
> > > @@ -241,6 +258,7 @@ static inline int is_omap ##type (void)			\
> > >  
> > >  IS_OMAP_TYPE(310, 0x0310)
> > >  IS_OMAP_TYPE(730, 0x0730)
> > > +IS_OMAP_TYPE(850, 0x0850)
> > >  IS_OMAP_TYPE(1510, 0x1510)
> > >  IS_OMAP_TYPE(1610, 0x1610)
> > >  IS_OMAP_TYPE(1611, 0x1611)
> > > @@ -255,6 +273,7 @@ IS_OMAP_TYPE(3430, 0x3430)
> > >  
> > >  #define cpu_is_omap310()		0
> > >  #define cpu_is_omap730()		0
> > > +#define cpu_is_omap850()		0
> > >  #define cpu_is_omap1510()		0
> > >  #define cpu_is_omap1610()		0
> > >  #define cpu_is_omap5912()		0
> > > @@ -272,12 +291,22 @@ IS_OMAP_TYPE(3430, 0x3430)
> > >  #  undef  cpu_is_omap730
> > >  #  define cpu_is_omap730()		is_omap730()
> > >  # endif
> > > +# if defined(CONFIG_ARCH_OMAP850)
> > > +#  undef  cpu_is_omap850
> > > +#  define cpu_is_omap850()		is_omap850()
> > > +# endif
> > >  #else
> > >  # if defined(CONFIG_ARCH_OMAP730)
> > >  #  undef  cpu_is_omap730
> > >  #  define cpu_is_omap730()		1
> > >  # endif
> > >  #endif
> > > +#else
> > > +# if defined(CONFIG_ARCH_OMAP850)
> > > +#  undef  cpu_is_omap850
> > > +#  define cpu_is_omap850()		1
> > > +# endif
> > > +#endif
> > >  
> > >  /*
> > >   * Whether we have MULTI_OMAP1 or not, we still need to distinguish
> > > @@ -320,7 +349,7 @@ IS_OMAP_TYPE(3430, 0x3430)
> > >  #endif
> > >  
> > >  /* Macros to detect if we have OMAP1 or OMAP2 */
> > > -#define cpu_class_is_omap1()	(cpu_is_omap730() || cpu_is_omap15xx() || \
> > > +#define cpu_class_is_omap1()	(cpu_is_omap7xx() || cpu_is_omap15xx() || \
> > >  				cpu_is_omap16xx())
> > >  #define cpu_class_is_omap2()	(cpu_is_omap24xx() || cpu_is_omap34xx())
> > >  
> > > @@ -377,5 +406,3 @@ int omap_type(void);
> > >  void omap2_check_revision(void);
> > >  
> > >  #endif    /* defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) */
> > > -
> > > -#endif
> > > diff --git a/arch/arm/plat-omap/include/mach/omap850.h b/arch/arm/plat-omap/include/mach/omap850.h
> > > new file mode 100644
> > > index 0000000..c33f679
> > > --- /dev/null
> > > +++ b/arch/arm/plat-omap/include/mach/omap850.h
> > > @@ -0,0 +1,102 @@
> > > +/* arch/arm/plat-omap/include/mach/omap850.h
> > > + *
> > > + * Hardware definitions for TI OMAP850 processor.
> > > + *
> > > + * Derived from omap730.h by Zebediah C. McClure <zmc@xxxxxxxxxx>
> > > + *
> > > + * 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 SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
> > > + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
> > > + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
> > > + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
> > > + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
> > > + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
> > > + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
> > > + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> > > + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
> > > + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> > > + *
> > > + * 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.,
> > > + * 675 Mass Ave, Cambridge, MA 02139, USA.
> > > + */
> > > +
> > > +#ifndef __ASM_ARCH_OMAP850_H
> > > +#define __ASM_ARCH_OMAP850_H
> > > +
> > > +/*
> > > + * ----------------------------------------------------------------------------
> > > + * Base addresses
> > > + * ----------------------------------------------------------------------------
> > > + */
> > > +
> > > +/* Syntax: XX_BASE = Virtual base address, XX_START = Physical base address */
> > > +
> > > +#define OMAP850_DSP_BASE	0xE0000000
> > > +#define OMAP850_DSP_SIZE	0x50000
> > > +#define OMAP850_DSP_START	0xE0000000
> > > +
> > > +#define OMAP850_DSPREG_BASE	0xE1000000
> > > +#define OMAP850_DSPREG_SIZE	SZ_128K
> > > +#define OMAP850_DSPREG_START	0xE1000000
> > > +
> > > +/*
> > > + * ----------------------------------------------------------------------------
> > > + * OMAP850 specific configuration registers
> > > + * ----------------------------------------------------------------------------
> > > + */
> > > +#define OMAP850_CONFIG_BASE	0xfffe1000
> > > +#define OMAP850_IO_CONF_0	0xfffe1070
> > > +#define OMAP850_IO_CONF_1	0xfffe1074
> > > +#define OMAP850_IO_CONF_2	0xfffe1078
> > > +#define OMAP850_IO_CONF_3	0xfffe107c
> > > +#define OMAP850_IO_CONF_4	0xfffe1080
> > > +#define OMAP850_IO_CONF_5	0xfffe1084
> > > +#define OMAP850_IO_CONF_6	0xfffe1088
> > > +#define OMAP850_IO_CONF_7	0xfffe108c
> > > +#define OMAP850_IO_CONF_8	0xfffe1090
> > > +#define OMAP850_IO_CONF_9	0xfffe1094
> > > +#define OMAP850_IO_CONF_10	0xfffe1098
> > > +#define OMAP850_IO_CONF_11	0xfffe109c
> > > +#define OMAP850_IO_CONF_12	0xfffe10a0
> > > +#define OMAP850_IO_CONF_13	0xfffe10a4
> > > +
> > > +#define OMAP850_MODE_1		0xfffe1010
> > > +#define OMAP850_MODE_2		0xfffe1014
> > > +
> > > +/* CSMI specials: in terms of base + offset */
> > > +#define OMAP850_MODE2_OFFSET	0x14
> > > +
> > > +/*
> > > + * ----------------------------------------------------------------------------
> > > + * OMAP850 traffic controller configuration registers
> > > + * ----------------------------------------------------------------------------
> > > + */
> > > +#define OMAP850_FLASH_CFG_0	0xfffecc10
> > > +#define OMAP850_FLASH_ACFG_0	0xfffecc50
> > > +#define OMAP850_FLASH_CFG_1	0xfffecc14
> > > +#define OMAP850_FLASH_ACFG_1	0xfffecc54
> > > +
> > > +/*
> > > + * ----------------------------------------------------------------------------
> > > + * OMAP850 DSP control registers
> > > + * ----------------------------------------------------------------------------
> > > + */
> > > +#define OMAP850_ICR_BASE	0xfffbb800
> > > +#define OMAP850_DSP_M_CTL	0xfffbb804
> > > +#define OMAP850_DSP_MMU_BASE	0xfffed200
> > > +
> > > +/*
> > > + * ----------------------------------------------------------------------------
> > > + * OMAP850 PCC_UPLD configuration registers
> > > + * ----------------------------------------------------------------------------
> > > + */
> > > +#define OMAP850_PCC_UPLD_CTRL_BASE	(0xfffe0900)
> > > +#define OMAP850_PCC_UPLD_CTRL		(OMAP850_PCC_UPLD_CTRL_BASE + 0x00)
> > > +
> > > +#endif /*  __ASM_ARCH_OMAP850_H */
> > > +
> > > -- 
> > > 1.6.0.6
> > > 
> > 
> > 

> From 58cb409cee3d727e3c1768775af3664c7d3c8ca0 Mon Sep 17 00:00:00 2001
> From: Zebediah C. McClure <zmc@xxxxxxxxxx>
> Date: Tue, 27 Jan 2009 20:16:26 -0400
> Subject: [PATCH] [OMAP850] Base support for omap850 cpu.
> 
> 
> Signed-off-by: Zebediah C. McClure <zmc@xxxxxxxxxx>
> ---
>  arch/arm/mach-omap1/id.c                  |    4 +-
>  arch/arm/plat-omap/include/mach/cpu.h     |   35 +++++++++-
>  arch/arm/plat-omap/include/mach/omap850.h |  102 +++++++++++++++++++++++++++++
>  3 files changed, 136 insertions(+), 5 deletions(-)
>  create mode 100644 arch/arm/plat-omap/include/mach/omap850.h
> 
> diff --git a/arch/arm/mach-omap1/id.c b/arch/arm/mach-omap1/id.c
> index 89bb875..4ef26fa 100644
> --- a/arch/arm/mach-omap1/id.c
> +++ b/arch/arm/mach-omap1/id.c
> @@ -38,6 +38,7 @@ static struct omap_id omap_ids[] __initdata = {
>  	{ .jtag_id = 0xb574, .die_rev = 0x2, .omap_id = 0x03310315, .type = 0x03100000},
>  	{ .jtag_id = 0x355f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300100},
>  	{ .jtag_id = 0xb55f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300300},
> +	{ .jtag_id = 0xb55f, .die_rev = 0x0, .omap_id = 0x03320500, .type = 0x08500000},
>  	{ .jtag_id = 0xb470, .die_rev = 0x0, .omap_id = 0x03310100, .type = 0x15100000},
>  	{ .jtag_id = 0xb576, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x16100000},
>  	{ .jtag_id = 0xb576, .die_rev = 0x2, .omap_id = 0x03320100, .type = 0x16110000},
> @@ -77,7 +78,7 @@ static u16 __init omap_get_jtag_id(void)
>  	prod_id = omap_readl(OMAP_PRODUCTION_ID_1);
>  	omap_id = omap_readl(OMAP32_ID_1);
>  
> -	/* Check for unusable OMAP_PRODUCTION_ID_1 on 1611B/5912 and 730 */
> +	/* Check for unusable OMAP_PRODUCTION_ID_1 on 1611B/5912 and 730/850 */
>  	if (((prod_id >> 20) == 0) || (prod_id == omap_id))
>  		prod_id = 0;
>  	else
> @@ -178,6 +179,7 @@ void __init omap_check_revision(void)
>  
>  	switch (cpu_type) {
>  	case 0x07:
> +	case 0x08:
>  		omap_revision |= 0x07;
>  		break;
>  	case 0x03:
> diff --git a/arch/arm/plat-omap/include/mach/cpu.h b/arch/arm/plat-omap/include/mach/cpu.h
> index a8e1178..366f829 100644
> --- a/arch/arm/plat-omap/include/mach/cpu.h
> +++ b/arch/arm/plat-omap/include/mach/cpu.h
> @@ -56,6 +56,14 @@ unsigned int omap_rev(void);
>  #  define OMAP_NAME omap730
>  # endif
>  #endif
> +#ifdef CONFIG_ARCH_OMAP850
> +# ifdef OMAP_NAME
> +#  undef  MULTI_OMAP1
> +#  define MULTI_OMAP1
> +# else
> +#  define OMAP_NAME omap850
> +# endif
> +#endif
>  #ifdef CONFIG_ARCH_OMAP15XX
>  # ifdef OMAP_NAME
>  #  undef  MULTI_OMAP1
> @@ -105,7 +113,7 @@ unsigned int omap_rev(void);
>  /*
>   * Macros to group OMAP into cpu classes.
>   * These can be used in most places.
> - * cpu_is_omap7xx():	True for OMAP730
> + * cpu_is_omap7xx():	True for OMAP730, OMAP850
>   * cpu_is_omap15xx():	True for OMAP1510, OMAP5910 and OMAP310
>   * cpu_is_omap16xx():	True for OMAP1610, OMAP5912 and OMAP1710
>   * cpu_is_omap24xx():	True for OMAP2420, OMAP2422, OMAP2423, OMAP2430
> @@ -153,6 +161,10 @@ IS_OMAP_SUBCLASS(343x, 0x343)
>  #  undef  cpu_is_omap7xx
>  #  define cpu_is_omap7xx()		is_omap7xx()
>  # endif
> +# if defined(CONFIG_ARCH_OMAP850)
> +#  undef  cpu_is_omap7xx
> +#  define cpu_is_omap7xx()		is_omap7xx()
> +# endif
>  # if defined(CONFIG_ARCH_OMAP15XX)
>  #  undef  cpu_is_omap15xx
>  #  define cpu_is_omap15xx()		is_omap15xx()
> @@ -166,6 +178,10 @@ IS_OMAP_SUBCLASS(343x, 0x343)
>  #  undef  cpu_is_omap7xx
>  #  define cpu_is_omap7xx()		1
>  # endif
> +# if defined(CONFIG_ARCH_OMAP850)
> +#  undef  cpu_is_omap7xx
> +#  define cpu_is_omap7xx()		1
> +# endif
>  # if defined(CONFIG_ARCH_OMAP15XX)
>  #  undef  cpu_is_omap15xx
>  #  define cpu_is_omap15xx()		1
> @@ -219,6 +235,7 @@ IS_OMAP_SUBCLASS(343x, 0x343)
>   * These are only rarely needed.
>   * cpu_is_omap330():	True for OMAP330
>   * cpu_is_omap730():	True for OMAP730
> + * cpu_is_omap850():	True for OMAP850
>   * cpu_is_omap1510():	True for OMAP1510
>   * cpu_is_omap1610():	True for OMAP1610
>   * cpu_is_omap1611():	True for OMAP1611
> @@ -241,6 +258,7 @@ static inline int is_omap ##type (void)			\
>  
>  IS_OMAP_TYPE(310, 0x0310)
>  IS_OMAP_TYPE(730, 0x0730)
> +IS_OMAP_TYPE(850, 0x0850)
>  IS_OMAP_TYPE(1510, 0x1510)
>  IS_OMAP_TYPE(1610, 0x1610)
>  IS_OMAP_TYPE(1611, 0x1611)
> @@ -255,6 +273,7 @@ IS_OMAP_TYPE(3430, 0x3430)
>  
>  #define cpu_is_omap310()		0
>  #define cpu_is_omap730()		0
> +#define cpu_is_omap850()		0
>  #define cpu_is_omap1510()		0
>  #define cpu_is_omap1610()		0
>  #define cpu_is_omap5912()		0
> @@ -272,12 +291,22 @@ IS_OMAP_TYPE(3430, 0x3430)
>  #  undef  cpu_is_omap730
>  #  define cpu_is_omap730()		is_omap730()
>  # endif
> +# if defined(CONFIG_ARCH_OMAP850)
> +#  undef  cpu_is_omap850
> +#  define cpu_is_omap850()		is_omap850()
> +# endif
>  #else
>  # if defined(CONFIG_ARCH_OMAP730)
>  #  undef  cpu_is_omap730
>  #  define cpu_is_omap730()		1
>  # endif
>  #endif
> +#else
> +# if defined(CONFIG_ARCH_OMAP850)
> +#  undef  cpu_is_omap850
> +#  define cpu_is_omap850()		1
> +# endif
> +#endif
>  
>  /*
>   * Whether we have MULTI_OMAP1 or not, we still need to distinguish
> @@ -320,7 +349,7 @@ IS_OMAP_TYPE(3430, 0x3430)
>  #endif
>  
>  /* Macros to detect if we have OMAP1 or OMAP2 */
> -#define cpu_class_is_omap1()	(cpu_is_omap730() || cpu_is_omap15xx() || \
> +#define cpu_class_is_omap1()	(cpu_is_omap7xx() || cpu_is_omap15xx() || \
>  				cpu_is_omap16xx())
>  #define cpu_class_is_omap2()	(cpu_is_omap24xx() || cpu_is_omap34xx())
>  
> @@ -378,5 +407,3 @@ int omap_type(void);
>  void omap2_check_revision(void);
>  
>  #endif    /* defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) */
> -
> -#endif
> diff --git a/arch/arm/plat-omap/include/mach/omap850.h b/arch/arm/plat-omap/include/mach/omap850.h
> new file mode 100644
> index 0000000..c33f679
> --- /dev/null
> +++ b/arch/arm/plat-omap/include/mach/omap850.h
> @@ -0,0 +1,102 @@
> +/* arch/arm/plat-omap/include/mach/omap850.h
> + *
> + * Hardware definitions for TI OMAP850 processor.
> + *
> + * Derived from omap730.h by Zebediah C. McClure <zmc@xxxxxxxxxx>
> + *
> + * 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 SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
> + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
> + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
> + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
> + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
> + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
> + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
> + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
> + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + *
> + * 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.,
> + * 675 Mass Ave, Cambridge, MA 02139, USA.
> + */
> +
> +#ifndef __ASM_ARCH_OMAP850_H
> +#define __ASM_ARCH_OMAP850_H
> +
> +/*
> + * ----------------------------------------------------------------------------
> + * Base addresses
> + * ----------------------------------------------------------------------------
> + */
> +
> +/* Syntax: XX_BASE = Virtual base address, XX_START = Physical base address */
> +
> +#define OMAP850_DSP_BASE	0xE0000000
> +#define OMAP850_DSP_SIZE	0x50000
> +#define OMAP850_DSP_START	0xE0000000
> +
> +#define OMAP850_DSPREG_BASE	0xE1000000
> +#define OMAP850_DSPREG_SIZE	SZ_128K
> +#define OMAP850_DSPREG_START	0xE1000000
> +
> +/*
> + * ----------------------------------------------------------------------------
> + * OMAP850 specific configuration registers
> + * ----------------------------------------------------------------------------
> + */
> +#define OMAP850_CONFIG_BASE	0xfffe1000
> +#define OMAP850_IO_CONF_0	0xfffe1070
> +#define OMAP850_IO_CONF_1	0xfffe1074
> +#define OMAP850_IO_CONF_2	0xfffe1078
> +#define OMAP850_IO_CONF_3	0xfffe107c
> +#define OMAP850_IO_CONF_4	0xfffe1080
> +#define OMAP850_IO_CONF_5	0xfffe1084
> +#define OMAP850_IO_CONF_6	0xfffe1088
> +#define OMAP850_IO_CONF_7	0xfffe108c
> +#define OMAP850_IO_CONF_8	0xfffe1090
> +#define OMAP850_IO_CONF_9	0xfffe1094
> +#define OMAP850_IO_CONF_10	0xfffe1098
> +#define OMAP850_IO_CONF_11	0xfffe109c
> +#define OMAP850_IO_CONF_12	0xfffe10a0
> +#define OMAP850_IO_CONF_13	0xfffe10a4
> +
> +#define OMAP850_MODE_1		0xfffe1010
> +#define OMAP850_MODE_2		0xfffe1014
> +
> +/* CSMI specials: in terms of base + offset */
> +#define OMAP850_MODE2_OFFSET	0x14
> +
> +/*
> + * ----------------------------------------------------------------------------
> + * OMAP850 traffic controller configuration registers
> + * ----------------------------------------------------------------------------
> + */
> +#define OMAP850_FLASH_CFG_0	0xfffecc10
> +#define OMAP850_FLASH_ACFG_0	0xfffecc50
> +#define OMAP850_FLASH_CFG_1	0xfffecc14
> +#define OMAP850_FLASH_ACFG_1	0xfffecc54
> +
> +/*
> + * ----------------------------------------------------------------------------
> + * OMAP850 DSP control registers
> + * ----------------------------------------------------------------------------
> + */
> +#define OMAP850_ICR_BASE	0xfffbb800
> +#define OMAP850_DSP_M_CTL	0xfffbb804
> +#define OMAP850_DSP_MMU_BASE	0xfffed200
> +
> +/*
> + * ----------------------------------------------------------------------------
> + * OMAP850 PCC_UPLD configuration registers
> + * ----------------------------------------------------------------------------
> + */
> +#define OMAP850_PCC_UPLD_CTRL_BASE	(0xfffe0900)
> +#define OMAP850_PCC_UPLD_CTRL		(OMAP850_PCC_UPLD_CTRL_BASE + 0x00)
> +
> +#endif /*  __ASM_ARCH_OMAP850_H */
> +
> -- 
> 1.6.0.6
> 

> From 431adabb83526da0d3e3e8e7a9ddf8a59209851b Mon Sep 17 00:00:00 2001
> From: Zebediah C. McClure <zmc@xxxxxxxxxx>
> Date: Sat, 24 Jan 2009 14:25:11 -0400
> Subject: [PATCH] [OMAP850] Changes to clock framework.
> 
> 
> Signed-off-by: Zebediah C. McClure <zmc@xxxxxxxxxx>
> ---
>  arch/arm/mach-omap1/clock.c             |   17 +++++++++++------
>  arch/arm/mach-omap1/clock.h             |   18 +++++++++++-------
>  arch/arm/plat-omap/common.c             |    2 +-
>  arch/arm/plat-omap/include/mach/clock.h |    1 +
>  4 files changed, 24 insertions(+), 14 deletions(-)
> 
> diff --git a/arch/arm/mach-omap1/clock.c b/arch/arm/mach-omap1/clock.c
> index 5fba207..f2e1ee5 100644
> --- a/arch/arm/mach-omap1/clock.c
> +++ b/arch/arm/mach-omap1/clock.c
> @@ -281,9 +281,9 @@ static int omap1_select_table_rate(struct clk * clk, unsigned long rate)
>  	/*
>  	 * In most cases we should not need to reprogram DPLL.
>  	 * Reprogramming the DPLL is tricky, it must be done from SRAM.
> -	 * (on 730, bit 13 must always be 1)
> +	 * (on 730 and 850, bit 13 must always be 1)
>  	 */
> -	if (cpu_is_omap730())
> +	if (cpu_is_omap7xx())
>  		omap_sram_reprogram_clock(ptr->dpllctl_val, ptr->ckctl_val | 0x2000);
>  	else
>  		omap_sram_reprogram_clock(ptr->dpllctl_val, ptr->ckctl_val);
> @@ -716,6 +716,11 @@ int __init omap1_clk_init(void)
>  			continue;
>  		}
>  
> +		if (((*clkp)->flags &CLOCK_IN_OMAP850) && cpu_is_omap850()) {
> +			clk_register(*clkp);
> +			continue;
> +		}
> +
>  		if (((*clkp)->flags &CLOCK_IN_OMAP310) && cpu_is_omap310()) {
>  			clk_register(*clkp);
>  			continue;
> @@ -728,7 +733,7 @@ int __init omap1_clk_init(void)
>  			crystal_type = info->system_clock_type;
>  	}
>  
> -#if defined(CONFIG_ARCH_OMAP730)
> +#if (defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850))
>  	ck_ref.rate = 13000000;
>  #elif defined(CONFIG_ARCH_OMAP16XX)
>  	if (crystal_type == 2)
> @@ -776,7 +781,7 @@ int __init omap1_clk_init(void)
>  		printk(KERN_ERR "System frequencies not set. Check your config.\n");
>  		/* Guess sane values (60MHz) */
>  		omap_writew(0x2290, DPLL_CTL);
> -		omap_writew(cpu_is_omap730() ? 0x3005 : 0x1005, ARM_CKCTL);
> +		omap_writew((cpu_is_omap7xx()) ? 0x3005 : 0x1005, ARM_CKCTL);
>  		ck_dpll1.rate = 60000000;
>  		propagate_rate(&ck_dpll1);
>  	}
> @@ -801,8 +806,8 @@ int __init omap1_clk_init(void)
>  				ULPD_CLOCK_CTRL);
>  
>  	/* Turn off DSP and ARM_TIMXO. Make sure ARM_INTHCK is not divided */
> -	/* (on 730, bit 13 must not be cleared) */
> -	if (cpu_is_omap730())
> +	/* (on 730/850, bit 13 must not be cleared) */
> +	if (cpu_is_omap7xx())
>  		omap_writew(omap_readw(ARM_CKCTL) & 0x2fff, ARM_CKCTL);
>  	else
>  		omap_writew(omap_readw(ARM_CKCTL) & 0x0fff, ARM_CKCTL);
> diff --git a/arch/arm/mach-omap1/clock.h b/arch/arm/mach-omap1/clock.h
> index c1dcdf1..4da9b8e 100644
> --- a/arch/arm/mach-omap1/clock.h
> +++ b/arch/arm/mach-omap1/clock.h
> @@ -154,7 +154,7 @@ static struct clk ck_ref = {
>  	.name		= "ck_ref",
>  	.rate		= 12000000,
>  	.flags		= CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
> -			  CLOCK_IN_OMAP310 | ALWAYS_ENABLED,
> +			  CLOCK_IN_OMAP310 | CLOCK_IN_OMAP850 | ALWAYS_ENABLED,
>  	.enable		= &omap1_clk_enable_generic,
>  	.disable	= &omap1_clk_disable_generic,
>  };
> @@ -241,7 +241,8 @@ static struct arm_idlect1_clk armxor_ck = {
>  		.name		= "armxor_ck",
>  		.parent		= &ck_ref,
>  		.flags		= CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
> -				  CLOCK_IN_OMAP310 | CLOCK_IDLE_CONTROL,
> +				  CLOCK_IN_OMAP310 | CLOCK_IN_OMAP850 |
> +				  CLOCK_IDLE_CONTROL,
>  		.enable_reg	= (void __iomem *)ARM_IDLECT2,
>  		.enable_bit	= EN_XORPCK,
>  		.recalc		= &followparent_recalc,
> @@ -363,9 +364,10 @@ static struct arm_idlect1_clk tc_ck = {
>  		.name		= "tc_ck",
>  		.parent		= &ck_dpll1,
>  		.flags		= CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
> -				  CLOCK_IN_OMAP730 | CLOCK_IN_OMAP310 |
> -				  RATE_CKCTL | RATE_PROPAGATES |
> -				  ALWAYS_ENABLED | CLOCK_IDLE_CONTROL,
> +				  CLOCK_IN_OMAP730 | CLOCK_IN_OMAP850 |
> +				  CLOCK_IN_OMAP310 | RATE_CKCTL |
> +				  RATE_PROPAGATES | ALWAYS_ENABLED |
> +				  CLOCK_IDLE_CONTROL,
>  		.rate_offset	= CKCTL_TCDIV_OFFSET,
>  		.recalc		= &omap1_ckctl_recalc,
>  		.enable		= &omap1_clk_enable_generic,
> @@ -504,7 +506,8 @@ static struct clk rhea2_ck = {
>  static struct clk lcd_ck_16xx = {
>  	.name		= "lcd_ck",
>  	.parent		= &ck_dpll1,
> -	.flags		= CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP730 | RATE_CKCTL,
> +	.flags		= CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP730 |
> +			  CLOCK_IN_OMAP850 | RATE_CKCTL,
>  	.enable_reg	= (void __iomem *)ARM_IDLECT2,
>  	.enable_bit	= EN_LCDCK,
>  	.rate_offset	= CKCTL_LCDDIV_OFFSET,
> @@ -734,7 +737,8 @@ static struct clk mmc2_ck = {
>  static struct clk virtual_ck_mpu = {
>  	.name		= "mpu",
>  	.flags		= CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
> -			  CLOCK_IN_OMAP310 | VIRTUAL_CLOCK | ALWAYS_ENABLED,
> +			  CLOCK_IN_OMAP850 | CLOCK_IN_OMAP310 |
> +			  VIRTUAL_CLOCK | ALWAYS_ENABLED,
>  	.parent		= &arm_ck, /* Is smarter alias for */
>  	.recalc		= &followparent_recalc,
>  	.set_rate	= &omap1_select_table_rate,
> diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c
> index 0843b88..39921d2 100644
> --- a/arch/arm/plat-omap/common.c
> +++ b/arch/arm/plat-omap/common.c
> @@ -170,7 +170,7 @@ console_initcall(omap_add_serial_console);
>  
>  /*
>   * 32KHz clocksource ... always available, on pretty most chips except
> - * OMAP 730 and 1510.  Other timers could be used as clocksources, with
> + * OMAP 730, 850 and 1510.  Other timers could be used as clocksources, with
>   * higher resolution in free-running counter modes (e.g. 12 MHz xtal),
>   * but systems won't necessarily want to spend resources that way.
>   */
> diff --git a/arch/arm/plat-omap/include/mach/clock.h b/arch/arm/plat-omap/include/mach/clock.h
> index 7192985..4fde485 100644
> --- a/arch/arm/plat-omap/include/mach/clock.h
> +++ b/arch/arm/plat-omap/include/mach/clock.h
> @@ -138,6 +138,7 @@ extern void clk_enable_init_clocks(void);
>  /* bits 13-20 are currently free */
>  #define CLOCK_IN_OMAP310	(1 << 21)
>  #define CLOCK_IN_OMAP730	(1 << 22)
> +#define CLOCK_IN_OMAP850	(1 << 22)
>  #define CLOCK_IN_OMAP1510	(1 << 23)
>  #define CLOCK_IN_OMAP16XX	(1 << 24)
>  #define CLOCK_IN_OMAP242X	(1 << 25)
> -- 
> 1.6.0.6
> 

> From a56a3f605e35d05f139be1940f6d22ecc46765e6 Mon Sep 17 00:00:00 2001
> From: Zebediah C. McClure <zmc@xxxxxxxxxx>
> Date: Sat, 24 Jan 2009 14:26:01 -0400
> Subject: [PATCH] [OMAP850] Changes to base IO subsystems.
> 
> 
> Signed-off-by: Zebediah C. McClure <zmc@xxxxxxxxxx>
> ---
>  arch/arm/mach-omap1/io.c               |   23 +++++++
>  arch/arm/mach-omap1/mux.c              |   24 +++++++
>  arch/arm/mach-omap1/serial.c           |    7 ++
>  arch/arm/plat-omap/gpio.c              |  109 ++++++++++++++++++++++++++++++--
>  arch/arm/plat-omap/include/mach/gpio.h |    3 +-
>  arch/arm/plat-omap/include/mach/mux.h  |   52 +++++++++++++++-
>  6 files changed, 211 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/arm/mach-omap1/io.c b/arch/arm/mach-omap1/io.c
> index 4c3e582..3afe540 100644
> --- a/arch/arm/mach-omap1/io.c
> +++ b/arch/arm/mach-omap1/io.c
> @@ -52,6 +52,22 @@ static struct map_desc omap730_io_desc[] __initdata = {
>  };
>  #endif
>  
> +#ifdef CONFIG_ARCH_OMAP850
> +static struct map_desc omap850_io_desc[] __initdata = {
> +	{
> +		.virtual	= OMAP850_DSP_BASE,
> +		.pfn		= __phys_to_pfn(OMAP850_DSP_START),
> +		.length		= OMAP850_DSP_SIZE,
> +		.type		= MT_DEVICE
> +	}, {
> +		.virtual	= OMAP850_DSPREG_BASE,
> +		.pfn		= __phys_to_pfn(OMAP850_DSPREG_START),
> +		.length		= OMAP850_DSPREG_SIZE,
> +		.type		= MT_DEVICE
> +	}
> +};
> +#endif
> +
>  #ifdef CONFIG_ARCH_OMAP15XX
>  static struct map_desc omap1510_io_desc[] __initdata = {
>  	{
> @@ -109,6 +125,13 @@ void __init omap1_map_common_io(void)
>  		iotable_init(omap730_io_desc, ARRAY_SIZE(omap730_io_desc));
>  	}
>  #endif
> +
> +#ifdef CONFIG_ARCH_OMAP850
> +	if (cpu_is_omap850()) {
> +		iotable_init(omap850_io_desc, ARRAY_SIZE(omap850_io_desc));
> +	}
> +#endif
> +
>  #ifdef CONFIG_ARCH_OMAP15XX
>  	if (cpu_is_omap15xx()) {
>  		iotable_init(omap1510_io_desc, ARRAY_SIZE(omap1510_io_desc));
> diff --git a/arch/arm/mach-omap1/mux.c b/arch/arm/mach-omap1/mux.c
> index 062c905..721e0d9 100644
> --- a/arch/arm/mach-omap1/mux.c
> +++ b/arch/arm/mach-omap1/mux.c
> @@ -58,6 +58,25 @@ MUX_CFG_730("W17_730_USB_VBUSI",   2,   29,    0,   28,   0, 0)
>  #define OMAP730_PINS_SZ		0
>  #endif	/* CONFIG_ARCH_OMAP730 */
>  
> +#ifdef CONFIG_ARCH_OMAP850
> +struct pin_config __initdata_or_module omap850_pins[] = {
> +MUX_CFG_850("E2_850_KBR0",        12,   21,    0,   20,   1, 0)
> +MUX_CFG_850("J7_850_KBR1",        12,   25,    0,   24,   1, 0)
> +MUX_CFG_850("E1_850_KBR2",        12,   29,    0,   28,   1, 0)
> +MUX_CFG_850("F3_850_KBR3",        13,    1,    0,    0,   1, 0)
> +MUX_CFG_850("D2_850_KBR4",        13,    5,    0,    4,   1, 0)
> +MUX_CFG_850("C2_850_KBC0",        13,    9,    0,    8,   1, 0)
> +MUX_CFG_850("D3_850_KBC1",        13,   13,    0,   12,   1, 0)
> +MUX_CFG_850("E4_850_KBC2",        13,   17,    0,   16,   1, 0)
> +MUX_CFG_850("F4_850_KBC3",        13,   21,    0,   20,   1, 0)
> +MUX_CFG_850("E3_850_KBC4",        13,   25,    0,   24,   1, 0)
> +
> +MUX_CFG_850("AA17_850_USB_DM",     2,   21,    0,   20,   0, 0)
> +MUX_CFG_850("W16_850_USB_PU_EN",   2,   25,    0,   24,   0, 0)
> +MUX_CFG_850("W17_850_USB_VBUSI",   2,   29,    0,   28,   0, 0)
> +};
> +#endif
> +
>  #if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX)
>  static struct pin_config __initdata_or_module omap1xxx_pins[] = {
>  /*
> @@ -419,6 +438,11 @@ int __init_or_module omap1_cfg_reg(const struct pin_config *cfg)
>  			printk("      %s (0x%08x) = 0x%08x -> 0x%08x\n",
>  			       cfg->pull_name, cfg->pull_reg, pull_orig, pull);
>  	}
> +
> +#ifdef CONFIG_ARCH_OMAP850
> +	omap_mux_register(omap850_pins, ARRAY_SIZE(omap850_pins));
> +#endif
> +
>  #endif
>  
>  #ifdef CONFIG_OMAP_MUX_ERRORS
> diff --git a/arch/arm/mach-omap1/serial.c b/arch/arm/mach-omap1/serial.c
> index 0002084..842090b 100644
> --- a/arch/arm/mach-omap1/serial.c
> +++ b/arch/arm/mach-omap1/serial.c
> @@ -121,6 +121,13 @@ void __init omap_serial_init(void)
>  		serial_platform_data[1].irq = INT_730_UART_MODEM_IRDA_2;
>  	}
>  
> +	if (cpu_is_omap850()) {
> +		serial_platform_data[0].regshift = 0;
> +		serial_platform_data[1].regshift = 0;
> +		serial_platform_data[0].irq = INT_850_UART_MODEM_1;
> +		serial_platform_data[1].irq = INT_850_UART_MODEM_IRDA_2;
> +	}
> +
>  	if (cpu_is_omap15xx()) {
>  		serial_platform_data[0].uartclk = OMAP1510_BASE_BAUD * 16;
>  		serial_platform_data[1].uartclk = OMAP1510_BASE_BAUD * 16;
> diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c
> index f856a90..8bb9c8d 100644
> --- a/arch/arm/plat-omap/gpio.c
> +++ b/arch/arm/plat-omap/gpio.c
> @@ -81,6 +81,22 @@
>  #define OMAP730_GPIO_INT_STATUS		0x14
>  
>  /*
> + * OMAP850 specific GPIO registers
> + */
> +#define OMAP850_GPIO1_BASE		(void __iomem *)0xfffbc000
> +#define OMAP850_GPIO2_BASE		(void __iomem *)0xfffbc800
> +#define OMAP850_GPIO3_BASE		(void __iomem *)0xfffbd000
> +#define OMAP850_GPIO4_BASE		(void __iomem *)0xfffbd800
> +#define OMAP850_GPIO5_BASE		(void __iomem *)0xfffbe000
> +#define OMAP850_GPIO6_BASE		(void __iomem *)0xfffbe800
> +#define OMAP850_GPIO_DATA_INPUT		0x00
> +#define OMAP850_GPIO_DATA_OUTPUT	0x04
> +#define OMAP850_GPIO_DIR_CONTROL	0x08
> +#define OMAP850_GPIO_INT_CONTROL	0x0c
> +#define OMAP850_GPIO_INT_MASK		0x10
> +#define OMAP850_GPIO_INT_STATUS		0x14
> +
> +/*
>   * omap24xx specific GPIO registers
>   */
>  #define OMAP242X_GPIO1_BASE		IO_ADDRESS(0x48018000)
> @@ -159,6 +175,7 @@ struct gpio_bank {
>  #define METHOD_GPIO_1510	1
>  #define METHOD_GPIO_1610	2
>  #define METHOD_GPIO_730		3
> +#define METHOD_GPIO_850		3
>  #define METHOD_GPIO_24XX	4
>  
>  #ifdef CONFIG_ARCH_OMAP16XX
> @@ -190,6 +207,19 @@ static struct gpio_bank gpio_bank_730[7] = {
>  };
>  #endif
>  
> +#ifdef CONFIG_ARCH_OMAP850
> +static struct gpio_bank gpio_bank_850[7] = {
> +	{ OMAP_MPUIO_BASE,     INT_850_MPUIO,	    IH_MPUIO_BASE,	METHOD_MPUIO },
> +	{ OMAP850_GPIO1_BASE,  INT_850_GPIO_BANK1,  IH_GPIO_BASE,	METHOD_GPIO_850 },
> +	{ OMAP850_GPIO2_BASE,  INT_850_GPIO_BANK2,  IH_GPIO_BASE + 32,	METHOD_GPIO_850 },
> +	{ OMAP850_GPIO3_BASE,  INT_850_GPIO_BANK3,  IH_GPIO_BASE + 64,	METHOD_GPIO_850 },
> +	{ OMAP850_GPIO4_BASE,  INT_850_GPIO_BANK4,  IH_GPIO_BASE + 96,	METHOD_GPIO_850 },
> +	{ OMAP850_GPIO5_BASE,  INT_850_GPIO_BANK5,  IH_GPIO_BASE + 128, METHOD_GPIO_850 },
> +	{ OMAP850_GPIO6_BASE,  INT_850_GPIO_BANK6,  IH_GPIO_BASE + 160, METHOD_GPIO_850 },
> +};
> +#endif
> +
> +
>  #ifdef CONFIG_ARCH_OMAP24XX
>  
>  static struct gpio_bank gpio_bank_242x[4] = {
> @@ -236,7 +266,7 @@ static inline struct gpio_bank *get_gpio_bank(int gpio)
>  			return &gpio_bank[0];
>  		return &gpio_bank[1 + (gpio >> 4)];
>  	}
> -	if (cpu_is_omap730()) {
> +	if (cpu_is_omap7xx()) {
>  		if (OMAP_GPIO_IS_MPUIO(gpio))
>  			return &gpio_bank[0];
>  		return &gpio_bank[1 + (gpio >> 5)];
> @@ -251,7 +281,7 @@ static inline struct gpio_bank *get_gpio_bank(int gpio)
>  
>  static inline int get_gpio_index(int gpio)
>  {
> -	if (cpu_is_omap730())
> +	if (cpu_is_omap7xx())
>  		return gpio & 0x1f;
>  	if (cpu_is_omap24xx())
>  		return gpio & 0x1f;
> @@ -273,7 +303,7 @@ static inline int gpio_valid(int gpio)
>  		return 0;
>  	if ((cpu_is_omap16xx()) && gpio < 64)
>  		return 0;
> -	if (cpu_is_omap730() && gpio < 192)
> +	if (cpu_is_omap7xx() && gpio < 192)
>  		return 0;
>  	if (cpu_is_omap24xx() && gpio < 128)
>  		return 0;
> @@ -318,6 +348,11 @@ static void _set_gpio_direction(struct gpio_bank *bank, int gpio, int is_input)
>  		reg += OMAP730_GPIO_DIR_CONTROL;
>  		break;
>  #endif
> +#ifdef CONFIG_ARCH_OMAP850
> +	case METHOD_GPIO_850:
> +		reg += OMAP850_GPIO_DIR_CONTROL;
> +		break;
> +#endif
>  #if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
>  	case METHOD_GPIO_24XX:
>  		reg += OMAP24XX_GPIO_OE;
> @@ -380,6 +415,16 @@ static void _set_gpio_dataout(struct gpio_bank *bank, int gpio, int enable)
>  			l &= ~(1 << gpio);
>  		break;
>  #endif
> +#ifdef CONFIG_ARCH_OMAP850
> +	case METHOD_GPIO_850:
> +		reg += OMAP850_GPIO_DATA_OUTPUT;
> +		l = __raw_readl(reg);
> +		if (enable)
> +			l |= 1 << gpio;
> +		else
> +			l &= ~(1 << gpio);
> +		break;
> +#endif
>  #if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
>  	case METHOD_GPIO_24XX:
>  		if (enable)
> @@ -426,6 +471,11 @@ static int __omap_get_gpio_datain(int gpio)
>  		reg += OMAP730_GPIO_DATA_INPUT;
>  		break;
>  #endif
> +#ifdef CONFIG_ARCH_OMAP850
> +	case METHOD_GPIO_850:
> +		reg += OMAP850_GPIO_DATA_INPUT;
> +		break;
> +#endif
>  #if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
>  	case METHOD_GPIO_24XX:
>  		reg += OMAP24XX_GPIO_DATAIN;
> @@ -598,6 +648,18 @@ static int _set_gpio_triggering(struct gpio_bank *bank, int gpio, int trigger)
>  			goto bad;
>  		break;
>  #endif
> +#ifdef CONFIG_ARCH_OMAP850
> +	case METHOD_GPIO_850:
> +		reg += OMAP850_GPIO_INT_CONTROL;
> +		l = __raw_readl(reg);
> +		if (trigger & IRQ_TYPE_EDGE_RISING)
> +			l |= 1 << gpio;
> +		else if (trigger & IRQ_TYPE_EDGE_FALLING)
> +			l &= ~(1 << gpio);
> +		else
> +			goto bad;
> +		break;
> +#endif
>  #if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
>  	case METHOD_GPIO_24XX:
>  		set_24xx_gpio_triggering(bank, gpio, trigger);
> @@ -678,6 +740,11 @@ static void _clear_gpio_irqbank(struct gpio_bank *bank, int gpio_mask)
>  		reg += OMAP730_GPIO_INT_STATUS;
>  		break;
>  #endif
> +#ifdef CONFIG_ARCH_OMAP850
> +	case METHOD_GPIO_850:
> +		reg += OMAP850_GPIO_INT_STATUS;
> +		break;
> +#endif
>  #if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
>  	case METHOD_GPIO_24XX:
>  		reg += OMAP24XX_GPIO_IRQSTATUS1;
> @@ -736,6 +803,13 @@ static u32 _get_gpio_irqbank_mask(struct gpio_bank *bank)
>  		inv = 1;
>  		break;
>  #endif
> +#ifdef CONFIG_ARCH_OMAP850
> +	case METHOD_GPIO_850:
> +		reg += OMAP850_GPIO_INT_MASK;
> +		mask = 0xffffffff;
> +		inv = 1;
> +		break;
> +#endif
>  #if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
>  	case METHOD_GPIO_24XX:
>  		reg += OMAP24XX_GPIO_IRQENABLE1;
> @@ -799,6 +873,16 @@ static void _enable_gpio_irqbank(struct gpio_bank *bank, int gpio_mask, int enab
>  			l |= gpio_mask;
>  		break;
>  #endif
> +#ifdef CONFIG_ARCH_OMAP850
> +	case METHOD_GPIO_850:
> +		reg += OMAP850_GPIO_INT_MASK;
> +		l = __raw_readl(reg);
> +		if (enable)
> +			l &= ~(gpio_mask);
> +		else
> +			l |= gpio_mask;
> +		break;
> +#endif
>  #if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
>  	case METHOD_GPIO_24XX:
>  		if (enable)
> @@ -983,6 +1067,10 @@ static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
>  	if (bank->method == METHOD_GPIO_730)
>  		isr_reg = bank->base + OMAP730_GPIO_INT_STATUS;
>  #endif
> +#ifdef CONFIG_ARCH_OMAP850
> +	if (bank->method == METHOD_GPIO_850)
> +		isr_reg = bank->base + OMAP850_GPIO_INT_STATUS;
> +#endif
>  #if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
>  	if (bank->method == METHOD_GPIO_24XX)
>  		isr_reg = bank->base + OMAP24XX_GPIO_IRQSTATUS1;
> @@ -1372,6 +1460,13 @@ static int __init _omap_gpio_init(void)
>  		gpio_bank = gpio_bank_730;
>  	}
>  #endif
> +#ifdef CONFIG_ARCH_OMAP850
> +	if (cpu_is_omap850()) {
> +		printk(KERN_INFO "OMAP850 GPIO hardware\n");
> +		gpio_bank_count = 7;
> +		gpio_bank = gpio_bank_850;
> +	}
> +#endif
>  
>  #ifdef CONFIG_ARCH_OMAP24XX
>  	if (cpu_is_omap242x()) {
> @@ -1420,7 +1515,7 @@ static int __init _omap_gpio_init(void)
>  			__raw_writew(0xffff, bank->base + OMAP1610_GPIO_IRQSTATUS1);
>  			__raw_writew(0x0014, bank->base + OMAP1610_GPIO_SYSCONFIG);
>  		}
> -		if (cpu_is_omap730() && bank->method == METHOD_GPIO_730) {
> +		if (cpu_is_omap7xx() && bank->method == METHOD_GPIO_730) {
>  			__raw_writel(0xffffffff, bank->base + OMAP730_GPIO_INT_MASK);
>  			__raw_writel(0x00000000, bank->base + OMAP730_GPIO_INT_STATUS);
>  
> @@ -1743,6 +1838,9 @@ static int gpio_is_input(struct gpio_bank *bank, int mask)
>  	case METHOD_GPIO_730:
>  		reg += OMAP730_GPIO_DIR_CONTROL;
>  		break;
> +	case METHOD_GPIO_850:
> +		reg += OMAP850_GPIO_DIR_CONTROL;
> +		break;
>  	case METHOD_GPIO_24XX:
>  		reg += OMAP24XX_GPIO_OE;
>  		break;
> @@ -1762,7 +1860,8 @@ static int dbg_gpio_show(struct seq_file *s, void *unused)
>  
>  		if (bank_is_mpuio(bank))
>  			gpio = OMAP_MPUIO(0);
> -		else if (cpu_class_is_omap2() || cpu_is_omap730())
> +		else if (cpu_class_is_omap2() || cpu_is_omap730() ||\
> +			 cpu_is_omap850 ())
>  			bankwidth = 32;
>  
>  		for (j = 0; j < bankwidth; j++, gpio++, mask <<= 1) {
> diff --git a/arch/arm/plat-omap/include/mach/gpio.h b/arch/arm/plat-omap/include/mach/gpio.h
> index 8d9dfe3..2b22a87 100644
> --- a/arch/arm/plat-omap/include/mach/gpio.h
> +++ b/arch/arm/plat-omap/include/mach/gpio.h
> @@ -31,7 +31,8 @@
>  
>  #define OMAP_MPUIO_BASE			0xfffb5000
>  
> -#ifdef CONFIG_ARCH_OMAP730
> +#if (defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850))
> +
>  #define OMAP_MPUIO_INPUT_LATCH		0x00
>  #define OMAP_MPUIO_OUTPUT		0x02
>  #define OMAP_MPUIO_IO_CNTL		0x04
> diff --git a/arch/arm/plat-omap/include/mach/mux.h b/arch/arm/plat-omap/include/mach/mux.h
> index f4362b8..6a02f8f 100644
> --- a/arch/arm/plat-omap/include/mach/mux.h
> +++ b/arch/arm/plat-omap/include/mach/mux.h
> @@ -61,6 +61,16 @@
>  					.pull_bit = bit, \
>  					.pull_val = status,
>  
> +#define MUX_REG_850(reg, mode_offset, mode) .mux_reg_name = "OMAP850_IO_CONF_"#reg, \
> +					.mux_reg = OMAP850_IO_CONF_##reg, \
> +					.mask_offset = mode_offset, \
> +					.mask = mode,
> +
> +#define PULL_REG_850(reg, bit, status)	.pull_name = "OMAP850_IO_CONF_"#reg, \
> +					.pull_reg = OMAP850_IO_CONF_##reg, \
> +					.pull_bit = bit, \
> +					.pull_val = status,
> +
>  #else
>  
>  #define MUX_REG(reg, mode_offset, mode) .mux_reg = FUNC_MUX_CTRL_##reg, \
> @@ -83,6 +93,15 @@
>  					.pull_bit = bit, \
>  					.pull_val = status,
>  
> +#define MUX_REG_850(reg, mode_offset, mode) \
> +					.mux_reg = OMAP850_IO_CONF_##reg, \
> +					.mask_offset = mode_offset, \
> +					.mask = mode,
> +
> +#define PULL_REG_850(reg, bit, status)	.pull_reg = OMAP850_IO_CONF_##reg, \
> +					.pull_bit = bit, \
> +					.pull_val = status,
> +
>  #endif /* CONFIG_OMAP_MUX_DEBUG */
>  
>  #define MUX_CFG(desc, mux_reg, mode_offset, mode,	\
> @@ -98,7 +117,7 @@
>  
>  
>  /*
> - * OMAP730 has a slightly different config for the pin mux.
> + * OMAP730/850 has a slightly different config for the pin mux.
>   * - config regs are the OMAP730_IO_CONF_x regs (see omap730.h) regs and
>   *   not the FUNC_MUX_CTRL_x regs from hardware.h
>   * - for pull-up/down, only has one enable bit which is is in the same register
> @@ -114,6 +133,17 @@
>  	PU_PD_REG(NA, 0)		\
>  },
>  
> +#define MUX_CFG_850(desc, mux_reg, mode_offset, mode,	\
> +		   pull_bit, pull_status, debug_status)\
> +{							\
> +	.name =	 desc,					\
> +	.debug = debug_status,				\
> +	MUX_REG_850(mux_reg, mode_offset, mode)		\
> +	PULL_REG_850(mux_reg, pull_bit, pull_status)	\
> +	PU_PD_REG(NA, 0)		\
> +},
> +
> +
>  #define MUX_CFG_24XX(desc, reg_offset, mode,			\
>  				pull_en, pull_mode, dbg)	\
>  {								\
> @@ -221,6 +251,26 @@ enum omap730_index {
>  	W17_730_USB_VBUSI,
>  };
>  
> +enum omap850_index {
> +	/* OMAP 850 keyboard */
> +	E2_850_KBR0,
> +	J7_850_KBR1,
> +	E1_850_KBR2,
> +	F3_850_KBR3,
> +	D2_850_KBR4,
> +	C2_850_KBC0,
> +	D3_850_KBC1,
> +	E4_850_KBC2,
> +	F4_850_KBC3,
> +	E3_850_KBC4,
> +
> +	/* USB */
> +	AA17_850_USB_DM,
> +	W16_850_USB_PU_EN,
> +	W17_850_USB_VBUSI,
> +};
> +
> +
>  enum omap1xxx_index {
>  	/* UART1 (BT_UART_GATING)*/
>  	UART1_TX = 0,
> -- 
> 1.6.0.6
> 

> From 6b60e815d887367d47c66d9e31ed92fbaf007833 Mon Sep 17 00:00:00 2001
> From: Zebediah C. McClure <zmc@xxxxxxxxxx>
> Date: Sat, 24 Jan 2009 14:27:33 -0400
> Subject: [PATCH] [OMAP850] Changes to memory subsystems.
> 
> 
> Signed-off-by: Zebediah C. McClure <zmc@xxxxxxxxxx>
> ---
>  arch/arm/plat-omap/dma.c  |    4 ++--
>  arch/arm/plat-omap/sram.c |    2 +-
>  2 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c
> index 47ec77a..dcc9e83 100644
> --- a/arch/arm/plat-omap/dma.c
> +++ b/arch/arm/plat-omap/dma.c
> @@ -737,7 +737,7 @@ int omap_request_dma(int dev_id, const char *dev_name,
>  		 * id.
>  		 */
>  		dma_write(dev_id | (1 << 10), CCR(free_ch));
> -	} else if (cpu_is_omap730() || cpu_is_omap15xx()) {
> +	} else if (cpu_is_omap7xx() || cpu_is_omap15xx()) {
>  		dma_write(dev_id, CCR(free_ch));
>  	}
>  
> @@ -2339,7 +2339,7 @@ static int __init omap_init_dma(void)
>  		printk(KERN_INFO "DMA support for OMAP15xx initialized\n");
>  		dma_chan_count = 9;
>  		enable_1510_mode = 1;
> -	} else if (cpu_is_omap16xx() || cpu_is_omap730()) {
> +	} else if (cpu_is_omap16xx() || cpu_is_omap7xx()) {
>  		printk(KERN_INFO "OMAP DMA hardware version %d\n",
>  		       dma_read(HW_ID));
>  		printk(KERN_INFO "DMA capabilities: %08x:%08x:%04x:%04x:%04x\n",
> diff --git a/arch/arm/plat-omap/sram.c b/arch/arm/plat-omap/sram.c
> index be7bcaf..fa5297d 100644
> --- a/arch/arm/plat-omap/sram.c
> +++ b/arch/arm/plat-omap/sram.c
> @@ -148,7 +148,7 @@ void __init omap_detect_sram(void)
>  		omap_sram_base = OMAP1_SRAM_VA;
>  		omap_sram_start = OMAP1_SRAM_PA;
>  
> -		if (cpu_is_omap730())
> +		if (cpu_is_omap7xx())
>  			omap_sram_size = 0x32000;	/* 200K */
>  		else if (cpu_is_omap15xx())
>  			omap_sram_size = 0x30000;	/* 192K */
> -- 
> 1.6.0.6
> 

> From 990b098dde0e3fbd0df5acacb3f4859f602f72ba Mon Sep 17 00:00:00 2001
> From: Zebediah C. McClure <zmc@xxxxxxxxxx>
> Date: Sat, 24 Jan 2009 14:28:53 -0400
> Subject: [PATCH] [OMAP850] IRQ related changes.
> 
> 
> Signed-off-by: Zebediah C. McClure <zmc@xxxxxxxxxx>
> ---
>  arch/arm/mach-omap1/irq.c              |   18 +++++++-
>  arch/arm/plat-omap/include/mach/irqs.h |   83 +++++++++++++++++++++++++++++++-
>  2 files changed, 99 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/mach-omap1/irq.c b/arch/arm/mach-omap1/irq.c
> index 9ad5197..b21e186 100644
> --- a/arch/arm/mach-omap1/irq.c
> +++ b/arch/arm/mach-omap1/irq.c
> @@ -145,6 +145,14 @@ static struct omap_irq_bank omap730_irq_banks[] = {
>  };
>  #endif
>  
> +#ifdef CONFIG_ARCH_OMAP850
> +static struct omap_irq_bank omap850_irq_banks[] = {
> +	{ .base_reg = OMAP_IH1_BASE,		.trigger_map = 0xb3f8e22f },
> +	{ .base_reg = OMAP_IH2_BASE,		.trigger_map = 0xfdb9c1f2 },
> +	{ .base_reg = OMAP_IH2_BASE + 0x100,	.trigger_map = 0x800040f3 },
> +};
> +#endif
> +
>  #ifdef CONFIG_ARCH_OMAP15XX
>  static struct omap_irq_bank omap1510_irq_banks[] = {
>  	{ .base_reg = OMAP_IH1_BASE,		.trigger_map = 0xb3febfff },
> @@ -184,6 +192,12 @@ void __init omap_init_irq(void)
>  		irq_bank_count = ARRAY_SIZE(omap730_irq_banks);
>  	}
>  #endif
> +#ifdef CONFIG_ARCH_OMAP850
> +	if (cpu_is_omap850()) {
> +		irq_banks = omap850_irq_banks;
> +		irq_bank_count = ARRAY_SIZE(omap850_irq_banks);
> +	}
> +#endif
>  #ifdef CONFIG_ARCH_OMAP15XX
>  	if (cpu_is_omap1510()) {
>  		irq_banks = omap1510_irq_banks;
> @@ -214,7 +228,7 @@ void __init omap_init_irq(void)
>  	irq_bank_writel(0x03, 1, IRQ_CONTROL_REG_OFFSET);
>  
>  	/* Enable interrupts in global mask */
> -	if (cpu_is_omap730()) {
> +	if (cpu_is_omap7xx()) {
>  		irq_bank_writel(0x0, 0, IRQ_GMR_REG_OFFSET);
>  	}
>  
> @@ -236,6 +250,8 @@ void __init omap_init_irq(void)
>  
>  	if (cpu_is_omap730())
>  		omap_unmask_irq(INT_730_IH2_IRQ);
> +	else if (cpu_is_omap850())
> +		omap_unmask_irq(INT_850_IH2_IRQ);
>  	else if (cpu_is_omap15xx())
>  		omap_unmask_irq(INT_1510_IH2_IRQ);
>  	else if (cpu_is_omap16xx())
> diff --git a/arch/arm/plat-omap/include/mach/irqs.h b/arch/arm/plat-omap/include/mach/irqs.h
> index bed5274..7f57ee6 100644
> --- a/arch/arm/plat-omap/include/mach/irqs.h
> +++ b/arch/arm/plat-omap/include/mach/irqs.h
> @@ -105,6 +105,29 @@
>  #define INT_730_SPGIO_WR	29
>  
>  /*
> + * OMAP-850 specific IRQ numbers for interrupt handler 1
> + */
> +#define INT_850_IH2_FIQ		0
> +#define INT_850_IH2_IRQ		1
> +#define INT_850_USB_NON_ISO	2
> +#define INT_850_USB_ISO		3
> +#define INT_850_ICR		4
> +#define INT_850_EAC		5
> +#define INT_850_GPIO_BANK1	6
> +#define INT_850_GPIO_BANK2	7
> +#define INT_850_GPIO_BANK3	8
> +#define INT_850_McBSP2TX	10
> +#define INT_850_McBSP2RX	11
> +#define INT_850_McBSP2RX_OVF	12
> +#define INT_850_LCD_LINE	14
> +#define INT_850_GSM_PROTECT	15
> +#define INT_850_TIMER3		16
> +#define INT_850_GPIO_BANK5	17
> +#define INT_850_GPIO_BANK6	18
> +#define INT_850_SPGIO_WR	29
> +
> +
> +/*
>   * IRQ numbers for interrupt handler 2
>   *
>   * NOTE: See also the OMAP-1510 and 1610 specific IRQ numbers below
> @@ -237,6 +260,64 @@
>  #define INT_730_DMA_CH15	(62 + IH2_BASE)
>  #define INT_730_NAND		(63 + IH2_BASE)
>  
> +/*
> + * OMAP-850 specific IRQ numbers for interrupt handler 2
> + */
> +#define INT_850_HW_ERRORS	(0 + IH2_BASE)
> +#define INT_850_NFIQ_PWR_FAIL	(1 + IH2_BASE)
> +#define INT_850_CFCD		(2 + IH2_BASE)
> +#define INT_850_CFIREQ		(3 + IH2_BASE)
> +#define INT_850_I2C		(4 + IH2_BASE)
> +#define INT_850_PCC		(5 + IH2_BASE)
> +#define INT_850_MPU_EXT_NIRQ	(6 + IH2_BASE)
> +#define INT_850_SPI_100K_1	(7 + IH2_BASE)
> +#define INT_850_SYREN_SPI	(8 + IH2_BASE)
> +#define INT_850_VLYNQ		(9 + IH2_BASE)
> +#define INT_850_GPIO_BANK4	(10 + IH2_BASE)
> +#define INT_850_McBSP1TX	(11 + IH2_BASE)
> +#define INT_850_McBSP1RX	(12 + IH2_BASE)
> +#define INT_850_McBSP1RX_OF	(13 + IH2_BASE)
> +#define INT_850_UART_MODEM_IRDA_2 (14 + IH2_BASE)
> +#define INT_850_UART_MODEM_1	(15 + IH2_BASE)
> +#define INT_850_MCSI		(16 + IH2_BASE)
> +#define INT_850_uWireTX		(17 + IH2_BASE)
> +#define INT_850_uWireRX		(18 + IH2_BASE)
> +#define INT_850_SMC_CD		(19 + IH2_BASE)
> +#define INT_850_SMC_IREQ	(20 + IH2_BASE)
> +#define INT_850_HDQ_1WIRE	(21 + IH2_BASE)
> +#define INT_850_TIMER32K	(22 + IH2_BASE)
> +#define INT_850_MMC_SDIO	(23 + IH2_BASE)
> +#define INT_850_UPLD		(24 + IH2_BASE)
> +#define INT_850_USB_HHC_1	(27 + IH2_BASE)
> +#define INT_850_USB_HHC_2	(28 + IH2_BASE)
> +#define INT_850_USB_GENI	(29 + IH2_BASE)
> +#define INT_850_USB_OTG		(30 + IH2_BASE)
> +#define INT_850_CAMERA_IF	(31 + IH2_BASE)
> +#define INT_850_RNG		(32 + IH2_BASE)
> +#define INT_850_DUAL_MODE_TIMER (33 + IH2_BASE)
> +#define INT_850_DBB_RF_EN	(34 + IH2_BASE)
> +#define INT_850_MPUIO_KEYPAD	(35 + IH2_BASE)
> +#define INT_850_SHA1_MD5	(36 + IH2_BASE)
> +#define INT_850_SPI_100K_2	(37 + IH2_BASE)
> +#define INT_850_RNG_IDLE	(38 + IH2_BASE)
> +#define INT_850_MPUIO		(39 + IH2_BASE)
> +#define INT_850_LLPC_LCD_CTRL_CAN_BE_OFF	(40 + IH2_BASE)
> +#define INT_850_LLPC_OE_FALLING (41 + IH2_BASE)
> +#define INT_850_LLPC_OE_RISING	(42 + IH2_BASE)
> +#define INT_850_LLPC_VSYNC	(43 + IH2_BASE)
> +#define INT_850_WAKE_UP_REQ	(46 + IH2_BASE)
> +#define INT_850_DMA_CH6		(53 + IH2_BASE)
> +#define INT_850_DMA_CH7		(54 + IH2_BASE)
> +#define INT_850_DMA_CH8		(55 + IH2_BASE)
> +#define INT_850_DMA_CH9		(56 + IH2_BASE)
> +#define INT_850_DMA_CH10	(57 + IH2_BASE)
> +#define INT_850_DMA_CH11	(58 + IH2_BASE)
> +#define INT_850_DMA_CH12	(59 + IH2_BASE)
> +#define INT_850_DMA_CH13	(60 + IH2_BASE)
> +#define INT_850_DMA_CH14	(61 + IH2_BASE)
> +#define INT_850_DMA_CH15	(62 + IH2_BASE)
> +#define INT_850_NAND		(63 + IH2_BASE)
> +
>  #define INT_24XX_SYS_NIRQ	7
>  #define INT_24XX_SDMA_IRQ0	12
>  #define INT_24XX_SDMA_IRQ1	13
> @@ -341,7 +422,7 @@
>  
>  #define	INT_34XX_BENCH_MPU_EMUL	3
>  
> -/* Max. 128 level 2 IRQs (OMAP1610), 192 GPIOs (OMAP730) and
> +/* Max. 128 level 2 IRQs (OMAP1610), 192 GPIOs (OMAP730/850) and
>   * 16 MPUIO lines */
>  #define OMAP_MAX_GPIO_LINES	192
>  #define IH_GPIO_BASE		(128 + IH2_BASE)
> -- 
> 1.6.0.6
> 

> From 846a949b0ac9153e9b03e4b7c2513ee98f2ab3f5 Mon Sep 17 00:00:00 2001
> From: Zebediah C. McClure <zmc@xxxxxxxxxx>
> Date: Sat, 24 Jan 2009 16:59:43 -0400
> Subject: [PATCH] [OMAP850] Build system changes.
> 
> 
> Signed-off-by: Zebediah C. McClure <zmc@xxxxxxxxxx>
> ---
>  arch/arm/mach-omap1/Kconfig |   23 +++++++++++++++++------
>  1 files changed, 17 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/arm/mach-omap1/Kconfig b/arch/arm/mach-omap1/Kconfig
> index 10a301e..4842a3a 100644
> --- a/arch/arm/mach-omap1/Kconfig
> +++ b/arch/arm/mach-omap1/Kconfig
> @@ -7,6 +7,11 @@ config ARCH_OMAP730
>  	select CPU_ARM926T
>  	select ARCH_OMAP_OTG
>  
> +config ARCH_OMAP850
> +	depends on ARCH_OMAP1
> +	bool "OMAP850 Based System"
> +	select CPU_ARM926T
> +
>  config ARCH_OMAP15XX
>  	depends on ARCH_OMAP1
>  	default y
> @@ -46,6 +51,12 @@ config MACH_OMAP_H3
>  	  TI OMAP 1710 H3 board support. Say Y here if you have such
>  	  a board.
>  
> +config MACH_OMAP_HTCWIZARD
> +	bool "HTC Wizard"
> +	depends on ARCH_OMAP850
> +	help
> +	  HTC Wizard smartphone support (AKA QTEK 9100, ...)	
> +          
>  config MACH_OMAP_OSK
>  	bool "TI OSK Support"
>  	depends on ARCH_OMAP1 && ARCH_OMAP16XX
> @@ -163,7 +174,7 @@ config OMAP_ARM_216MHZ
>  
>  config OMAP_ARM_195MHZ
>  	bool "OMAP ARM 195 MHz CPU"
> -	depends on ARCH_OMAP1 && ARCH_OMAP730
> +	depends on ARCH_OMAP1 && (ARCH_OMAP730 || ARCH_OMAP850)
>  	help
>            Enable 195MHz clock for OMAP CPU. If unsure, say N.
>  
> @@ -175,13 +186,13 @@ config OMAP_ARM_192MHZ
>  
>  config OMAP_ARM_182MHZ
>  	bool "OMAP ARM 182 MHz CPU"
> -	depends on ARCH_OMAP1 && ARCH_OMAP730
> +	depends on ARCH_OMAP1 && (ARCH_OMAP730 || ARCH_OMAP850)
>  	help
>            Enable 182MHz clock for OMAP CPU. If unsure, say N.
>  
>  config OMAP_ARM_168MHZ
>  	bool "OMAP ARM 168 MHz CPU"
> -	depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730)
> +	depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730 || ARCH_OMAP850)
>  	help
>            Enable 168MHz clock for OMAP CPU. If unsure, say N.
>  
> @@ -193,20 +204,20 @@ config OMAP_ARM_150MHZ
>  
>  config OMAP_ARM_120MHZ
>  	bool "OMAP ARM 120 MHz CPU"
> -	depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730)
> +	depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730 || ARCH_OMAP850)
>  	help
>            Enable 120MHz clock for OMAP CPU. If unsure, say N.
>  
>  config OMAP_ARM_60MHZ
>  	bool "OMAP ARM 60 MHz CPU"
> -	depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730)
> +	depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730 || ARCH_OMAP850)
>          default y
>  	help
>            Enable 60MHz clock for OMAP CPU. If unsure, say Y.
>  
>  config OMAP_ARM_30MHZ
>  	bool "OMAP ARM 30 MHz CPU"
> -	depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730)
> +	depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730 || ARCH_OMAP850)
>  	help
>            Enable 30MHz clock for OMAP CPU. If unsure, say N.
>  
> -- 
> 1.6.0.6
> 



--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux