Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae302f40 authored by Zebediah C. McClure's avatar Zebediah C. McClure Committed by Tony Lindgren
Browse files

[OMAP850] Add base support for omap850 cpu



Add base support for omap850 cpu.

Signed-off-by: default avatarZebediah C. McClure <zmc@lurian.net>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent 6b0147cd
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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:
+31 −4
Original line number Diff line number Diff line
@@ -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
+102 −0
Original line number Diff line number Diff line
/* arch/arm/plat-omap/include/mach/omap850.h
 *
 * Hardware definitions for TI OMAP850 processor.
 *
 * Derived from omap730.h by Zebediah C. McClure <zmc@lurian.net>
 *
 * 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 */