This patch adds minimum support for OMAP4. Code which can be shared between OMAP3 and OMAP4 is placed in arch/arm/cpu/armv7/omap-common Signed-off-by: Aneesh V <aneesh@ti.com> Signed-off-by: Steve Sakoman <steve@sakoman.com> Signed-off-by: Sandeep Paulraj <s-paulraj@ti.com>master
parent
f56348af5d
commit
d34efc767d
@ -0,0 +1,46 @@ |
||||
#
|
||||
# (C) Copyright 2000-2003
|
||||
# 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
|
||||
#
|
||||
|
||||
include $(TOPDIR)/config.mk |
||||
|
||||
LIB = $(obj)libomap-common.a
|
||||
|
||||
SOBJS := reset.o
|
||||
COBJS := timer.o
|
||||
|
||||
SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
|
||||
OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
|
||||
|
||||
all: $(obj).depend $(LIB) |
||||
|
||||
$(LIB): $(OBJS) |
||||
$(AR) $(ARFLAGS) $@ $(OBJS)
|
||||
|
||||
#########################################################################
|
||||
|
||||
# defines $(obj).depend target
|
||||
include $(SRCTREE)/rules.mk |
||||
|
||||
sinclude $(obj).depend |
||||
|
||||
#########################################################################
|
@ -0,0 +1,33 @@ |
||||
#
|
||||
# (C) Copyright 2002
|
||||
# Gary Jennejohn, DENX Software Engineering, <garyj@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
|
||||
#
|
||||
PLATFORM_RELFLAGS += -fno-common -ffixed-r8 -msoft-float
|
||||
|
||||
# Make ARMv5 to allow more compilers to work, even though its v7a.
|
||||
PLATFORM_CPPFLAGS += -march=armv5
|
||||
# =========================================================================
|
||||
#
|
||||
# Supply options according to compiler version
|
||||
#
|
||||
# =========================================================================
|
||||
PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,\
|
||||
$(call cc-option,-malignment-traps,))
|
@ -0,0 +1,48 @@ |
||||
#
|
||||
# (C) Copyright 2000-2010
|
||||
# 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
|
||||
#
|
||||
|
||||
include $(TOPDIR)/config.mk |
||||
|
||||
LIB = $(obj)lib$(SOC).a
|
||||
|
||||
SOBJS += lowlevel_init.o
|
||||
|
||||
COBJS += board.o
|
||||
COBJS += sys_info.o
|
||||
|
||||
SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
|
||||
OBJS := $(addprefix $(obj),$(COBJS) $(SOBJS))
|
||||
|
||||
all: $(obj).depend $(LIB) |
||||
|
||||
$(LIB): $(OBJS) |
||||
$(AR) $(ARFLAGS) $@ $(OBJS)
|
||||
|
||||
#########################################################################
|
||||
|
||||
# defines $(obj).depend target
|
||||
include $(SRCTREE)/rules.mk |
||||
|
||||
sinclude $(obj).depend |
||||
|
||||
#########################################################################
|
@ -0,0 +1,90 @@ |
||||
/*
|
||||
* |
||||
* Common functions for OMAP4 based boards |
||||
* |
||||
* (C) Copyright 2010 |
||||
* Texas Instruments, <www.ti.com> |
||||
* |
||||
* Author : |
||||
* Aneesh V <aneesh@ti.com> |
||||
* Steve Sakoman <steve@sakoman.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. 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 |
||||
*/ |
||||
#include <common.h> |
||||
#include <asm/arch/cpu.h> |
||||
#include <asm/arch/sys_proto.h> |
||||
|
||||
/*
|
||||
* Routine: s_init |
||||
* Description: Does early system init of muxing and clocks. |
||||
* - Called path is with SRAM stack. |
||||
*/ |
||||
void s_init(void) |
||||
{ |
||||
watchdog_init(); |
||||
} |
||||
|
||||
/*
|
||||
* Routine: wait_for_command_complete |
||||
* Description: Wait for posting to finish on watchdog |
||||
*/ |
||||
void wait_for_command_complete(struct watchdog *wd_base) |
||||
{ |
||||
int pending = 1; |
||||
do { |
||||
pending = readl(&wd_base->wwps); |
||||
} while (pending); |
||||
} |
||||
|
||||
/*
|
||||
* Routine: watchdog_init |
||||
* Description: Shut down watch dogs |
||||
*/ |
||||
void watchdog_init(void) |
||||
{ |
||||
struct watchdog *wd2_base = (struct watchdog *)WDT2_BASE; |
||||
|
||||
writel(WD_UNLOCK1, &wd2_base->wspr); |
||||
wait_for_command_complete(wd2_base); |
||||
writel(WD_UNLOCK2, &wd2_base->wspr); |
||||
} |
||||
|
||||
/*
|
||||
* Routine: dram_init |
||||
* Description: sets uboots idea of sdram size |
||||
*/ |
||||
int dram_init(void) |
||||
{ |
||||
DECLARE_GLOBAL_DATA_PTR; |
||||
|
||||
gd->bd->bi_dram[0].start = 0x80000000; |
||||
gd->bd->bi_dram[0].size = 512 << 20; |
||||
return 0; |
||||
} |
||||
|
||||
/*
|
||||
* Print board information |
||||
*/ |
||||
int checkboard(void) |
||||
{ |
||||
puts(sysinfo.board_string); |
||||
return 0; |
||||
} |
||||
|
@ -0,0 +1,48 @@ |
||||
/* |
||||
* Board specific setup info |
||||
* |
||||
* (C) Copyright 2010 |
||||
* Texas Instruments, <www.ti.com> |
||||
* |
||||
* Author : |
||||
* Aneesh V <aneesh@ti.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. 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 |
||||
*/ |
||||
|
||||
#include <asm/arch/omap4.h> |
||||
|
||||
.globl lowlevel_init
|
||||
lowlevel_init: |
||||
/* |
||||
* Setup a temporary stack |
||||
*/ |
||||
ldr sp, =LOW_LEVEL_SRAM_STACK |
||||
|
||||
/* |
||||
* Save the old lr(passed in ip) and the current lr to stack |
||||
*/ |
||||
push {ip, lr} |
||||
|
||||
/* |
||||
* go setup pll, mux, memory |
||||
*/ |
||||
bl s_init |
||||
pop {ip, pc} |
||||
|
@ -0,0 +1,54 @@ |
||||
/*
|
||||
* (C) Copyright 2010 |
||||
* Texas Instruments, <www.ti.com> |
||||
* |
||||
* Author : |
||||
* Aneesh V <aneesh@ti.com> |
||||
* Steve Sakoman <steve@sakoman.com> |
||||
* |
||||
* 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 |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <asm/arch/sys_proto.h> |
||||
|
||||
/*
|
||||
* get_device_type(): tell if GP/HS/EMU/TST |
||||
*/ |
||||
u32 get_device_type(void) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
/*
|
||||
* get_board_rev() - get board revision |
||||
*/ |
||||
u32 get_board_rev(void) |
||||
{ |
||||
return 0x20; |
||||
} |
||||
|
||||
/*
|
||||
* Print CPU information |
||||
*/ |
||||
int print_cpuinfo(void) |
||||
{ |
||||
|
||||
puts("CPU : OMAP4430\n"); |
||||
|
||||
return 0; |
||||
} |
||||
|
@ -0,0 +1,94 @@ |
||||
/*
|
||||
* (C) Copyright 2006-2010 |
||||
* Texas Instruments, <www.ti.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. 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 _CPU_H |
||||
#define _CPU_H |
||||
|
||||
#if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__)) |
||||
#include <asm/types.h> |
||||
#endif /* !(__KERNEL_STRICT_NAMES || __ASSEMBLY__) */ |
||||
|
||||
#ifndef __KERNEL_STRICT_NAMES |
||||
#ifndef __ASSEMBLY__ |
||||
struct gptimer { |
||||
u32 tidr; /* 0x00 r */ |
||||
u8 res[0xc]; |
||||
u32 tiocp_cfg; /* 0x10 rw */ |
||||
u32 tistat; /* 0x14 r */ |
||||
u32 tisr; /* 0x18 rw */ |
||||
u32 tier; /* 0x1c rw */ |
||||
u32 twer; /* 0x20 rw */ |
||||
u32 tclr; /* 0x24 rw */ |
||||
u32 tcrr; /* 0x28 rw */ |
||||
u32 tldr; /* 0x2c rw */ |
||||
u32 ttgr; /* 0x30 rw */ |
||||
u32 twpc; /* 0x34 r */ |
||||
u32 tmar; /* 0x38 rw */ |
||||
u32 tcar1; /* 0x3c r */ |
||||
u32 tcicr; /* 0x40 rw */ |
||||
u32 tcar2; /* 0x44 r */ |
||||
}; |
||||
#endif /* __ASSEMBLY__ */ |
||||
#endif /* __KERNEL_STRICT_NAMES */ |
||||
|
||||
/* enable sys_clk NO-prescale /1 */ |
||||
#define GPT_EN ((0x0 << 2) | (0x1 << 1) | (0x1 << 0)) |
||||
|
||||
/* Watchdog */ |
||||
#ifndef __KERNEL_STRICT_NAMES |
||||
#ifndef __ASSEMBLY__ |
||||
struct watchdog { |
||||
u8 res1[0x34]; |
||||
u32 wwps; /* 0x34 r */ |
||||
u8 res2[0x10]; |
||||
u32 wspr; /* 0x48 rw */ |
||||
}; |
||||
#endif /* __ASSEMBLY__ */ |
||||
#endif /* __KERNEL_STRICT_NAMES */ |
||||
|
||||
#define WD_UNLOCK1 0xAAAA |
||||
#define WD_UNLOCK2 0x5555 |
||||
|
||||
#define SYSCLKDIV_1 (0x1 << 6) |
||||
#define SYSCLKDIV_2 (0x1 << 7) |
||||
|
||||
#define CLKSEL_GPT1 (0x1 << 0) |
||||
|
||||
#define EN_GPT1 (0x1 << 0) |
||||
#define EN_32KSYNC (0x1 << 2) |
||||
|
||||
#define ST_WDT2 (0x1 << 5) |
||||
|
||||
#define RESETDONE (0x1 << 0) |
||||
|
||||
#define TCLR_ST (0x1 << 0) |
||||
#define TCLR_AR (0x1 << 1) |
||||
#define TCLR_PRE (0x1 << 5) |
||||
|
||||
/* I2C base */ |
||||
#define I2C_BASE1 (OMAP44XX_L4_PER_BASE + 0x70000) |
||||
#define I2C_BASE2 (OMAP44XX_L4_PER_BASE + 0x72000) |
||||
#define I2C_BASE3 (OMAP44XX_L4_PER_BASE + 0x60000) |
||||
|
||||
#endif /* _CPU_H */ |
@ -0,0 +1,118 @@ |
||||
/*
|
||||
* (C) Copyright 2010 |
||||
* Texas Instruments, <www.ti.com> |
||||
* |
||||
* Authors: |
||||
* Aneesh V <aneesh@ti.com> |
||||
* |
||||
* Derived from OMAP3 work by |
||||
* Richard Woodruff <r-woodruff2@ti.com> |
||||
* Syed Mohammed Khasim <x0khasim@ti.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. 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 _OMAP4_H_ |
||||
#define _OMAP4_H_ |
||||
|
||||
#if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__)) |
||||
#include <asm/types.h> |
||||
#endif /* !(__KERNEL_STRICT_NAMES || __ASSEMBLY__) */ |
||||
|
||||
/*
|
||||
* L4 Peripherals - L4 Wakeup and L4 Core now |
||||
*/ |
||||
#define OMAP44XX_L4_CORE_BASE 0x4A000000 |
||||
#define OMAP44XX_L4_WKUP_BASE 0x4A300000 |
||||
#define OMAP44XX_L4_PER_BASE 0x48000000 |
||||
|
||||
/* CONTROL */ |
||||
#define CTRL_BASE (OMAP44XX_L4_CORE_BASE + 0x2000) |
||||
|
||||
/* UART */ |
||||
#define UART1_BASE (OMAP44XX_L4_PER_BASE + 0x6a000) |
||||
#define UART2_BASE (OMAP44XX_L4_PER_BASE + 0x6c000) |
||||
#define UART3_BASE (OMAP44XX_L4_PER_BASE + 0x20000) |
||||
|
||||
/* General Purpose Timers */ |
||||
#define GPT1_BASE (OMAP44XX_L4_WKUP_BASE + 0x18000) |
||||
#define GPT2_BASE (OMAP44XX_L4_PER_BASE + 0x32000) |
||||
#define GPT3_BASE (OMAP44XX_L4_PER_BASE + 0x34000) |
||||
|
||||
/* Watchdog Timer2 - MPU watchdog */ |
||||
#define WDT2_BASE (OMAP44XX_L4_WKUP_BASE + 0x14000) |
||||
|
||||
/* 32KTIMER */ |
||||
#define SYNC_32KTIMER_BASE (OMAP44XX_L4_WKUP_BASE + 0x4000) |
||||
|
||||
/* GPMC */ |
||||
#define GPMC_BASE 0x50000000 |
||||
|
||||
/*
|
||||
* Hardware Register Details |
||||
*/ |
||||
|
||||
/* Watchdog Timer */ |
||||
#define WD_UNLOCK1 0xAAAA |
||||
#define WD_UNLOCK2 0x5555 |
||||
|
||||
/* GP Timer */ |
||||
#define TCLR_ST (0x1 << 0) |
||||
#define TCLR_AR (0x1 << 1) |
||||
#define TCLR_PRE (0x1 << 5) |
||||
|
||||
/*
|
||||
* PRCM |
||||
*/ |
||||
|
||||
/* PRM */ |
||||
#define PRM_BASE 0x4A306000 |
||||
#define PRM_DEVICE_BASE (PRM_BASE + 0x1B00) |
||||
|
||||
#define PRM_RSTCTRL PRM_DEVICE_BASE |
||||
|
||||
#ifndef __ASSEMBLY__ |
||||
|
||||
struct s32ktimer { |
||||
unsigned char res[0x10]; |
||||
unsigned int s32k_cr; /* 0x10 */ |
||||
}; |
||||
|
||||
#endif /* __ASSEMBLY__ */ |
||||
|
||||
/*
|
||||
* Non-secure SRAM Addresses |
||||
* Non-secure RAM starts at 0x40300000 for GP devices. But we keep SRAM_BASE |
||||
* at 0x40304000(EMU base) so that our code works for both EMU and GP |
||||
*/ |
||||
#define NON_SECURE_SRAM_START 0x40304000 |
||||
#define NON_SECURE_SRAM_END 0x4030E000 /* Not inclusive */ |
||||
/* base address for indirect vectors (internal boot mode) */ |
||||
#define SRAM_ROM_VECT_BASE 0x4030D000 |
||||
/* Temporary SRAM stack used while low level init is done */ |
||||
#define LOW_LEVEL_SRAM_STACK NON_SECURE_SRAM_END |
||||
|
||||
/*
|
||||
* OMAP4 real hardware: |
||||
* TODO: Change this to the IDCODE in the hw regsiter |
||||
*/ |
||||
#define CPU_OMAP4430_ES10 1 |
||||
#define CPU_OMAP4430_ES20 2 |
||||
|
||||
#endif |
@ -0,0 +1,37 @@ |
||||
/*
|
||||
* (C) Copyright 2010 |
||||
* Texas Instruments, <www.ti.com> |
||||
* |
||||
* 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 _SYS_PROTO_H_ |
||||
#define _SYS_PROTO_H_ |
||||
|
||||
#include <asm/arch/omap4.h> |
||||
#include <asm/io.h> |
||||
|
||||
struct omap_sysinfo { |
||||
char *board_string; |
||||
}; |
||||
|
||||
void watchdog_init(void); |
||||
u32 get_device_type(void); |
||||
void invalidate_dcache(u32); |
||||
|
||||
extern const struct omap_sysinfo sysinfo; |
||||
|
||||
#endif |
Loading…
Reference in new issue