[OMAP850] Add base support for omap850 cpu
Add base support for omap850 cpu. Signed-off-by: Zebediah C. McClure <zmc@lurian.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
parent
6b0147cda6
commit
ae302f4006
|
@ -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)
|
||||||
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)
|
||||||
|
|
||||||
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);
|
||||||
# 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);
|
||||||
/*
|
/*
|
||||||
* 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)
|
||||||
# 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)
|
||||||
# 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)
|
||||||
* 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) \
|
||||||
|
|
||||||
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)
|
||||||
|
|
||||||
#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)
|
||||||
# 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)
|
||||||
#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);
|
||||||
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
|
|
||||||
|
|
|
@ -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@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 */
|
||||||
|
|
Loading…
Reference in New Issue