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

[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
...@@ -38,6 +38,7 @@ static struct omap_id omap_ids[] __initdata = { ...@@ -38,6 +38,7 @@ static struct omap_id omap_ids[] __initdata = {
{ .jtag_id = 0xb574, .die_rev = 0x2, .omap_id = 0x03310315, .type = 0x03100000}, { .jtag_id = 0xb574, .die_rev = 0x2, .omap_id = 0x03310315, .type = 0x03100000},
{ .jtag_id = 0x355f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300100}, { .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 = 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 = 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 = 0x0, .omap_id = 0x03320000, .type = 0x16100000},
{ .jtag_id = 0xb576, .die_rev = 0x2, .omap_id = 0x03320100, .type = 0x16110000}, { .jtag_id = 0xb576, .die_rev = 0x2, .omap_id = 0x03320100, .type = 0x16110000},
...@@ -77,7 +78,7 @@ static u16 __init omap_get_jtag_id(void) ...@@ -77,7 +78,7 @@ static u16 __init omap_get_jtag_id(void)
prod_id = omap_readl(OMAP_PRODUCTION_ID_1); prod_id = omap_readl(OMAP_PRODUCTION_ID_1);
omap_id = omap_readl(OMAP32_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)) if (((prod_id >> 20) == 0) || (prod_id == omap_id))
prod_id = 0; prod_id = 0;
else else
...@@ -178,6 +179,7 @@ void __init omap_check_revision(void) ...@@ -178,6 +179,7 @@ void __init omap_check_revision(void)
switch (cpu_type) { switch (cpu_type) {
case 0x07: case 0x07:
case 0x08:
omap_revision |= 0x07; omap_revision |= 0x07;
break; break;
case 0x03: case 0x03:
......
...@@ -56,6 +56,14 @@ unsigned int omap_rev(void); ...@@ -56,6 +56,14 @@ unsigned int omap_rev(void);
# define OMAP_NAME omap730 # define OMAP_NAME omap730
# endif # endif
#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 CONFIG_ARCH_OMAP15XX
# ifdef OMAP_NAME # ifdef OMAP_NAME
# undef MULTI_OMAP1 # undef MULTI_OMAP1
...@@ -105,7 +113,7 @@ unsigned int omap_rev(void); ...@@ -105,7 +113,7 @@ unsigned int omap_rev(void);
/* /*
* Macros to group OMAP into cpu classes. * Macros to group OMAP into cpu classes.
* These can be used in most places. * 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_omap15xx(): True for OMAP1510, OMAP5910 and OMAP310
* cpu_is_omap16xx(): True for OMAP1610, OMAP5912 and OMAP1710 * cpu_is_omap16xx(): True for OMAP1610, OMAP5912 and OMAP1710
* cpu_is_omap24xx(): True for OMAP2420, OMAP2422, OMAP2423, OMAP2430 * cpu_is_omap24xx(): True for OMAP2420, OMAP2422, OMAP2423, OMAP2430
...@@ -153,6 +161,10 @@ IS_OMAP_SUBCLASS(343x, 0x343) ...@@ -153,6 +161,10 @@ IS_OMAP_SUBCLASS(343x, 0x343)
# undef cpu_is_omap7xx # undef cpu_is_omap7xx
# define cpu_is_omap7xx() is_omap7xx() # define cpu_is_omap7xx() is_omap7xx()
# endif # endif
# if defined(CONFIG_ARCH_OMAP850)
# undef cpu_is_omap7xx
# define cpu_is_omap7xx() is_omap7xx()
# endif
# if defined(CONFIG_ARCH_OMAP15XX) # if defined(CONFIG_ARCH_OMAP15XX)
# undef cpu_is_omap15xx # undef cpu_is_omap15xx
# define cpu_is_omap15xx() is_omap15xx() # define cpu_is_omap15xx() is_omap15xx()
...@@ -166,6 +178,10 @@ IS_OMAP_SUBCLASS(343x, 0x343) ...@@ -166,6 +178,10 @@ IS_OMAP_SUBCLASS(343x, 0x343)
# undef cpu_is_omap7xx # undef cpu_is_omap7xx
# define cpu_is_omap7xx() 1 # define cpu_is_omap7xx() 1
# endif # endif
# if defined(CONFIG_ARCH_OMAP850)
# undef cpu_is_omap7xx
# define cpu_is_omap7xx() 1
# endif
# if defined(CONFIG_ARCH_OMAP15XX) # if defined(CONFIG_ARCH_OMAP15XX)
# undef cpu_is_omap15xx # undef cpu_is_omap15xx
# define cpu_is_omap15xx() 1 # define cpu_is_omap15xx() 1
...@@ -219,6 +235,7 @@ IS_OMAP_SUBCLASS(343x, 0x343) ...@@ -219,6 +235,7 @@ IS_OMAP_SUBCLASS(343x, 0x343)
* These are only rarely needed. * These are only rarely needed.
* cpu_is_omap330(): True for OMAP330 * cpu_is_omap330(): True for OMAP330
* cpu_is_omap730(): True for OMAP730 * cpu_is_omap730(): True for OMAP730
* cpu_is_omap850(): True for OMAP850
* cpu_is_omap1510(): True for OMAP1510 * cpu_is_omap1510(): True for OMAP1510
* cpu_is_omap1610(): True for OMAP1610 * cpu_is_omap1610(): True for OMAP1610
* cpu_is_omap1611(): True for OMAP1611 * cpu_is_omap1611(): True for OMAP1611
...@@ -241,6 +258,7 @@ static inline int is_omap ##type (void) \ ...@@ -241,6 +258,7 @@ static inline int is_omap ##type (void) \
IS_OMAP_TYPE(310, 0x0310) IS_OMAP_TYPE(310, 0x0310)
IS_OMAP_TYPE(730, 0x0730) IS_OMAP_TYPE(730, 0x0730)
IS_OMAP_TYPE(850, 0x0850)
IS_OMAP_TYPE(1510, 0x1510) IS_OMAP_TYPE(1510, 0x1510)
IS_OMAP_TYPE(1610, 0x1610) IS_OMAP_TYPE(1610, 0x1610)
IS_OMAP_TYPE(1611, 0x1611) IS_OMAP_TYPE(1611, 0x1611)
...@@ -255,6 +273,7 @@ IS_OMAP_TYPE(3430, 0x3430) ...@@ -255,6 +273,7 @@ IS_OMAP_TYPE(3430, 0x3430)
#define cpu_is_omap310() 0 #define cpu_is_omap310() 0
#define cpu_is_omap730() 0 #define cpu_is_omap730() 0
#define cpu_is_omap850() 0
#define cpu_is_omap1510() 0 #define cpu_is_omap1510() 0
#define cpu_is_omap1610() 0 #define cpu_is_omap1610() 0
#define cpu_is_omap5912() 0 #define cpu_is_omap5912() 0
...@@ -272,12 +291,22 @@ IS_OMAP_TYPE(3430, 0x3430) ...@@ -272,12 +291,22 @@ IS_OMAP_TYPE(3430, 0x3430)
# undef cpu_is_omap730 # undef cpu_is_omap730
# define cpu_is_omap730() is_omap730() # define cpu_is_omap730() is_omap730()
# endif # endif
# if defined(CONFIG_ARCH_OMAP850)
# undef cpu_is_omap850
# define cpu_is_omap850() is_omap850()
# endif
#else #else
# if defined(CONFIG_ARCH_OMAP730) # if defined(CONFIG_ARCH_OMAP730)
# undef cpu_is_omap730 # undef cpu_is_omap730
# define cpu_is_omap730() 1 # define cpu_is_omap730() 1
# endif # endif
#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 * Whether we have MULTI_OMAP1 or not, we still need to distinguish
...@@ -320,7 +349,7 @@ IS_OMAP_TYPE(3430, 0x3430) ...@@ -320,7 +349,7 @@ IS_OMAP_TYPE(3430, 0x3430)
#endif #endif
/* Macros to detect if we have OMAP1 or OMAP2 */ /* 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()) cpu_is_omap16xx())
#define cpu_class_is_omap2() (cpu_is_omap24xx() || cpu_is_omap34xx()) #define cpu_class_is_omap2() (cpu_is_omap24xx() || cpu_is_omap34xx())
...@@ -378,5 +407,3 @@ int omap_type(void); ...@@ -378,5 +407,3 @@ int omap_type(void);
void omap2_check_revision(void); void omap2_check_revision(void);
#endif /* defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) */ #endif /* defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) */
#endif
/* 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 */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment