Merge branch 'u-boot-ti/master' into 'u-boot-arm/master'
This commit is contained in:
commit
b6379e15a7
@ -833,6 +833,10 @@ Stelian Pop <stelian@popies.net>
|
||||
at91sam9263ek ARM926EJS (AT91SAM9263 SoC)
|
||||
at91sam9rlek ARM926EJS (AT91SAM9RL SoC)
|
||||
|
||||
Matt Porter <mporter@ti.com>
|
||||
|
||||
ti814x_evm ARM ARMV7 (TI814x Soc)
|
||||
|
||||
Dave Purdy <david.c.purdy@gmail.com>
|
||||
|
||||
pogo_e02 ARM926EJS (Kirkwood SoC)
|
||||
|
2
Makefile
2
Makefile
@ -331,7 +331,7 @@ LIBS-y += api/libapi.o
|
||||
LIBS-y += post/libpost.o
|
||||
LIBS-y += test/libtest.o
|
||||
|
||||
ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP34XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX),)
|
||||
ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP34XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TI814X),)
|
||||
LIBS-y += $(CPUDIR)/omap-common/libomap-common.o
|
||||
endif
|
||||
|
||||
|
4
README
4
README
@ -3879,6 +3879,10 @@ Low Level (hardware related) configuration options:
|
||||
If defined, the x86 reset vector code is included. This is not
|
||||
needed when U-Boot is running from Coreboot.
|
||||
|
||||
- CONFIG_SYS_MPUCLK
|
||||
Defines the MPU clock speed (in MHz).
|
||||
|
||||
NOTE : currently only supported on AM335x platforms.
|
||||
|
||||
Freescale QE/FMAN Firmware Support:
|
||||
-----------------------------------
|
||||
|
@ -24,7 +24,7 @@
|
||||
CROSS_COMPILE ?= arm-linux-
|
||||
|
||||
ifndef CONFIG_STANDALONE_LOAD_ADDR
|
||||
ifeq ($(SOC),omap3)
|
||||
ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP34XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TI814X),)
|
||||
CONFIG_STANDALONE_LOAD_ADDR = 0x80300000
|
||||
else
|
||||
CONFIG_STANDALONE_LOAD_ADDR = 0xc100000
|
||||
|
@ -32,7 +32,7 @@ COBJS += cache_v7.o
|
||||
COBJS += cpu.o
|
||||
COBJS += syslib.o
|
||||
|
||||
ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TEGRA)$(CONFIG_MX6),)
|
||||
ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TEGRA)$(CONFIG_MX6)$(CONFIG_TI814X),)
|
||||
SOBJS += lowlevel_init.o
|
||||
endif
|
||||
|
||||
|
@ -16,7 +16,8 @@ include $(TOPDIR)/config.mk
|
||||
|
||||
LIB = $(obj)lib$(SOC).o
|
||||
|
||||
COBJS += clock.o
|
||||
COBJS-$(CONFIG_AM33XX) += clock_am33xx.o
|
||||
COBJS-$(CONFIG_TI814X) += clock_ti814x.o
|
||||
COBJS += sys_info.o
|
||||
COBJS += mem.o
|
||||
COBJS += ddr.o
|
||||
|
@ -141,11 +141,11 @@ int arch_misc_init(void)
|
||||
{
|
||||
#ifdef CONFIG_AM335X_USB0
|
||||
musb_register(&otg0_plat, &otg0_board_data,
|
||||
(void *)AM335X_USB0_OTG_BASE);
|
||||
(void *)USB0_OTG_BASE);
|
||||
#endif
|
||||
#ifdef CONFIG_AM335X_USB1
|
||||
musb_register(&otg1_plat, &otg1_board_data,
|
||||
(void *)AM335X_USB1_OTG_BASE);
|
||||
(void *)USB1_OTG_BASE);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
/*
|
||||
* clock.c
|
||||
* clock_am33xx.c
|
||||
*
|
||||
* clocks for AM33XX based boards
|
||||
*
|
||||
* Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
|
||||
* Copyright (C) 2013, Texas Instruments, Incorporated - http://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
|
||||
@ -42,6 +42,35 @@
|
||||
#define CPGMAC0_IDLE 0x30000
|
||||
#define DPLL_CLKDCOLDO_GATE_CTRL 0x300
|
||||
|
||||
#define OSC (V_OSCK/1000000)
|
||||
|
||||
#define MPUPLL_M CONFIG_SYS_MPUCLK
|
||||
#define MPUPLL_N (OSC-1)
|
||||
#define MPUPLL_M2 1
|
||||
|
||||
/* Core PLL Fdll = 1 GHZ, */
|
||||
#define COREPLL_M 1000
|
||||
#define COREPLL_N (OSC-1)
|
||||
|
||||
#define COREPLL_M4 10 /* CORE_CLKOUTM4 = 200 MHZ */
|
||||
#define COREPLL_M5 8 /* CORE_CLKOUTM5 = 250 MHZ */
|
||||
#define COREPLL_M6 4 /* CORE_CLKOUTM6 = 500 MHZ */
|
||||
|
||||
/*
|
||||
* USB PHY clock is 960 MHZ. Since, this comes directly from Fdll, Fdll
|
||||
* frequency needs to be set to 960 MHZ. Hence,
|
||||
* For clkout = 192 MHZ, Fdll = 960 MHZ, divider values are given below
|
||||
*/
|
||||
#define PERPLL_M 960
|
||||
#define PERPLL_N (OSC-1)
|
||||
#define PERPLL_M2 5
|
||||
|
||||
/* DDR Freq is 266 MHZ for now */
|
||||
/* Set Fdll = 400 MHZ , Fdll = M * 2 * CLKINP/ N + 1; clkout = Fdll /(2 * M2) */
|
||||
#define DDRPLL_M 266
|
||||
#define DDRPLL_N (OSC-1)
|
||||
#define DDRPLL_M2 1
|
||||
|
||||
const struct cm_perpll *cmper = (struct cm_perpll *)CM_PER;
|
||||
const struct cm_wkuppll *cmwkup = (struct cm_wkuppll *)CM_WKUP;
|
||||
const struct cm_dpll *cmdpll = (struct cm_dpll *)CM_DPLL;
|
406
arch/arm/cpu/armv7/am33xx/clock_ti814x.c
Normal file
406
arch/arm/cpu/armv7/am33xx/clock_ti814x.c
Normal file
@ -0,0 +1,406 @@
|
||||
/*
|
||||
* clock_ti814x.c
|
||||
*
|
||||
* Clocks for TI814X based boards
|
||||
*
|
||||
* Copyright (C) 2013, Texas Instruments, Incorporated
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <asm/arch/cpu.h>
|
||||
#include <asm/arch/clock.h>
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
/* PRCM */
|
||||
#define PRCM_MOD_EN 0x2
|
||||
|
||||
/* CLK_SRC */
|
||||
#define OSC_SRC0 0
|
||||
#define OSC_SRC1 1
|
||||
|
||||
#define L3_OSC_SRC OSC_SRC0
|
||||
|
||||
#define OSC_0_FREQ 20
|
||||
|
||||
#define DCO_HS2_MIN 500
|
||||
#define DCO_HS2_MAX 1000
|
||||
#define DCO_HS1_MIN 1000
|
||||
#define DCO_HS1_MAX 2000
|
||||
|
||||
#define SELFREQDCO_HS2 0x00000801
|
||||
#define SELFREQDCO_HS1 0x00001001
|
||||
|
||||
#define MPU_N 0x1
|
||||
#define MPU_M 0x3C
|
||||
#define MPU_M2 1
|
||||
#define MPU_CLKCTRL 0x1
|
||||
|
||||
#define L3_N 19
|
||||
#define L3_M 880
|
||||
#define L3_M2 4
|
||||
#define L3_CLKCTRL 0x801
|
||||
|
||||
#define DDR_N 19
|
||||
#define DDR_M 666
|
||||
#define DDR_M2 2
|
||||
#define DDR_CLKCTRL 0x801
|
||||
|
||||
/* ADPLLJ register values */
|
||||
#define ADPLLJ_CLKCTRL_HS2 0x00000801 /* HS2 mode, TINT2 = 1 */
|
||||
#define ADPLLJ_CLKCTRL_HS1 0x00001001 /* HS1 mode, TINT2 = 1 */
|
||||
#define ADPLLJ_CLKCTRL_CLKDCOLDOEN (1 << 29)
|
||||
#define ADPLLJ_CLKCTRL_IDLE (1 << 23)
|
||||
#define ADPLLJ_CLKCTRL_CLKOUTEN (1 << 20)
|
||||
#define ADPLLJ_CLKCTRL_CLKOUTLDOEN (1 << 19)
|
||||
#define ADPLLJ_CLKCTRL_CLKDCOLDOPWDNZ (1 << 17)
|
||||
#define ADPLLJ_CLKCTRL_LPMODE (1 << 12)
|
||||
#define ADPLLJ_CLKCTRL_DRIFTGUARDIAN (1 << 11)
|
||||
#define ADPLLJ_CLKCTRL_REGM4XEN (1 << 10)
|
||||
#define ADPLLJ_CLKCTRL_TINITZ (1 << 0)
|
||||
#define ADPLLJ_CLKCTRL_CLKDCO (ADPLLJ_CLKCTRL_CLKDCOLDOEN | \
|
||||
ADPLLJ_CLKCTRL_CLKOUTEN | \
|
||||
ADPLLJ_CLKCTRL_CLKOUTLDOEN | \
|
||||
ADPLLJ_CLKCTRL_CLKDCOLDOPWDNZ)
|
||||
|
||||
#define ADPLLJ_STATUS_PHASELOCK (1 << 10)
|
||||
#define ADPLLJ_STATUS_FREQLOCK (1 << 9)
|
||||
#define ADPLLJ_STATUS_PHSFRQLOCK (ADPLLJ_STATUS_PHASELOCK | \
|
||||
ADPLLJ_STATUS_FREQLOCK)
|
||||
#define ADPLLJ_STATUS_BYPASSACK (1 << 8)
|
||||
#define ADPLLJ_STATUS_BYPASS (1 << 0)
|
||||
#define ADPLLJ_STATUS_BYPASSANDACK (ADPLLJ_STATUS_BYPASSACK | \
|
||||
ADPLLJ_STATUS_BYPASS)
|
||||
|
||||
#define ADPLLJ_TENABLE_ENB (1 << 0)
|
||||
#define ADPLLJ_TENABLEDIV_ENB (1 << 0)
|
||||
|
||||
#define ADPLLJ_M2NDIV_M2SHIFT 16
|
||||
|
||||
#define MPU_PLL_BASE (PLL_SUBSYS_BASE + 0x048)
|
||||
#define L3_PLL_BASE (PLL_SUBSYS_BASE + 0x110)
|
||||
#define DDR_PLL_BASE (PLL_SUBSYS_BASE + 0x290)
|
||||
|
||||
struct ad_pll {
|
||||
unsigned int pwrctrl;
|
||||
unsigned int clkctrl;
|
||||
unsigned int tenable;
|
||||
unsigned int tenablediv;
|
||||
unsigned int m2ndiv;
|
||||
unsigned int mn2div;
|
||||
unsigned int fracdiv;
|
||||
unsigned int bwctrl;
|
||||
unsigned int fracctrl;
|
||||
unsigned int status;
|
||||
unsigned int m3div;
|
||||
unsigned int rampctrl;
|
||||
};
|
||||
|
||||
#define OSC_SRC_CTRL (PLL_SUBSYS_BASE + 0x2C0)
|
||||
|
||||
/* PRCM */
|
||||
#define CM_DEFAULT_BASE (PRCM_BASE + 0x0500)
|
||||
|
||||
struct cm_def {
|
||||
unsigned int resv0[2];
|
||||
unsigned int l3fastclkstctrl;
|
||||
unsigned int resv1[1];
|
||||
unsigned int pciclkstctrl;
|
||||
unsigned int resv2[1];
|
||||
unsigned int ducaticlkstctrl;
|
||||
unsigned int resv3[1];
|
||||
unsigned int emif0clkctrl;
|
||||
unsigned int emif1clkctrl;
|
||||
unsigned int dmmclkctrl;
|
||||
unsigned int fwclkctrl;
|
||||
unsigned int resv4[10];
|
||||
unsigned int usbclkctrl;
|
||||
unsigned int resv5[1];
|
||||
unsigned int sataclkctrl;
|
||||
unsigned int resv6[4];
|
||||
unsigned int ducaticlkctrl;
|
||||
unsigned int pciclkctrl;
|
||||
};
|
||||
|
||||
#define CM_ALWON_BASE (PRCM_BASE + 0x1400)
|
||||
|
||||
struct cm_alwon {
|
||||
unsigned int l3slowclkstctrl;
|
||||
unsigned int ethclkstctrl;
|
||||
unsigned int l3medclkstctrl;
|
||||
unsigned int mmu_clkstctrl;
|
||||
unsigned int mmucfg_clkstctrl;
|
||||
unsigned int ocmc0clkstctrl;
|
||||
unsigned int vcpclkstctrl;
|
||||
unsigned int mpuclkstctrl;
|
||||
unsigned int sysclk4clkstctrl;
|
||||
unsigned int sysclk5clkstctrl;
|
||||
unsigned int sysclk6clkstctrl;
|
||||
unsigned int rtcclkstctrl;
|
||||
unsigned int l3fastclkstctrl;
|
||||
unsigned int resv0[67];
|
||||
unsigned int mcasp0clkctrl;
|
||||
unsigned int mcasp1clkctrl;
|
||||
unsigned int mcasp2clkctrl;
|
||||
unsigned int mcbspclkctrl;
|
||||
unsigned int uart0clkctrl;
|
||||
unsigned int uart1clkctrl;
|
||||
unsigned int uart2clkctrl;
|
||||
unsigned int gpio0clkctrl;
|
||||
unsigned int gpio1clkctrl;
|
||||
unsigned int i2c0clkctrl;
|
||||
unsigned int i2c1clkctrl;
|
||||
unsigned int mcasp345clkctrl;
|
||||
unsigned int atlclkctrl;
|
||||
unsigned int mlbclkctrl;
|
||||
unsigned int pataclkctrl;
|
||||
unsigned int resv1[1];
|
||||
unsigned int uart3clkctrl;
|
||||
unsigned int uart4clkctrl;
|
||||
unsigned int uart5clkctrl;
|
||||
unsigned int wdtimerclkctrl;
|
||||
unsigned int spiclkctrl;
|
||||
unsigned int mailboxclkctrl;
|
||||
unsigned int spinboxclkctrl;
|
||||
unsigned int mmudataclkctrl;
|
||||
unsigned int resv2[2];
|
||||
unsigned int mmucfgclkctrl;
|
||||
unsigned int resv3[2];
|
||||
unsigned int ocmc0clkctrl;
|
||||
unsigned int vcpclkctrl;
|
||||
unsigned int resv4[2];
|
||||
unsigned int controlclkctrl;
|
||||
unsigned int resv5[2];
|
||||
unsigned int gpmcclkctrl;
|
||||
unsigned int ethernet0clkctrl;
|
||||
unsigned int resv6[1];
|
||||
unsigned int mpuclkctrl;
|
||||
unsigned int debugssclkctrl;
|
||||
unsigned int l3clkctrl;
|
||||
unsigned int l4hsclkctrl;
|
||||
unsigned int l4lsclkctrl;
|
||||
unsigned int rtcclkctrl;
|
||||
unsigned int tpccclkctrl;
|
||||
unsigned int tptc0clkctrl;
|
||||
unsigned int tptc1clkctrl;
|
||||
unsigned int tptc2clkctrl;
|
||||
unsigned int tptc3clkctrl;
|
||||
unsigned int resv7[4];
|
||||
unsigned int dcan01clkctrl;
|
||||
unsigned int mmchs0clkctrl;
|
||||
unsigned int mmchs1clkctrl;
|
||||
unsigned int mmchs2clkctrl;
|
||||
unsigned int custefuseclkctrl;
|
||||
};
|
||||
|
||||
|
||||
const struct cm_alwon *cmalwon = (struct cm_alwon *)CM_ALWON_BASE;
|
||||
const struct cm_def *cmdef = (struct cm_def *)CM_DEFAULT_BASE;
|
||||
|
||||
/*
|
||||
* Enable the peripheral clock for required peripherals
|
||||
*/
|
||||
static void enable_per_clocks(void)
|
||||
{
|
||||
/* UART0 */
|
||||
writel(PRCM_MOD_EN, &cmalwon->uart0clkctrl);
|
||||
while (readl(&cmalwon->uart0clkctrl) != PRCM_MOD_EN)
|
||||
;
|
||||
|
||||
/* HSMMC1 */
|
||||
writel(PRCM_MOD_EN, &cmalwon->mmchs1clkctrl);
|
||||
while (readl(&cmalwon->mmchs1clkctrl) != PRCM_MOD_EN)
|
||||
;
|
||||
}
|
||||
|
||||
/*
|
||||
* select the HS1 or HS2 for DCO Freq
|
||||
* return : CLKCTRL
|
||||
*/
|
||||
static u32 pll_dco_freq_sel(u32 clkout_dco)
|
||||
{
|
||||
if (clkout_dco >= DCO_HS2_MIN && clkout_dco < DCO_HS2_MAX)
|
||||
return SELFREQDCO_HS2;
|
||||
else if (clkout_dco >= DCO_HS1_MIN && clkout_dco < DCO_HS1_MAX)
|
||||
return SELFREQDCO_HS1;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* select the sigma delta config
|
||||
* return: sigma delta val
|
||||
*/
|
||||
static u32 pll_sigma_delta_val(u32 clkout_dco)
|
||||
{
|
||||
u32 sig_val = 0;
|
||||
float frac_div;
|
||||
|
||||
frac_div = (float) clkout_dco / 250;
|
||||
frac_div = frac_div + 0.90;
|
||||
sig_val = (int)frac_div;
|
||||
sig_val = sig_val << 24;
|
||||
|
||||
return sig_val;
|
||||
}
|
||||
|
||||
/*
|
||||
* configure individual ADPLLJ
|
||||
*/
|
||||
static void pll_config(u32 base, u32 n, u32 m, u32 m2,
|
||||
u32 clkctrl_val, int adpllj)
|
||||
{
|
||||
const struct ad_pll *adpll = (struct ad_pll *)base;
|
||||
u32 m2nval, mn2val, read_clkctrl = 0, clkout_dco = 0;
|
||||
u32 sig_val = 0, hs_mod = 0;
|
||||
|
||||
m2nval = (m2 << ADPLLJ_M2NDIV_M2SHIFT) | n;
|
||||
mn2val = m;
|
||||
|
||||
/* calculate clkout_dco */
|
||||
clkout_dco = ((OSC_0_FREQ / (n+1)) * m);
|
||||
|
||||
/* sigma delta & Hs mode selection skip for ADPLLS*/
|
||||
if (adpllj) {
|
||||
sig_val = pll_sigma_delta_val(clkout_dco);
|
||||
hs_mod = pll_dco_freq_sel(clkout_dco);
|
||||
}
|
||||
|
||||
/* by-pass pll */
|
||||
read_clkctrl = readl(&adpll->clkctrl);
|
||||
writel((read_clkctrl | ADPLLJ_CLKCTRL_IDLE), &adpll->clkctrl);
|
||||
while ((readl(&adpll->status) & ADPLLJ_STATUS_BYPASSANDACK)
|
||||
!= ADPLLJ_STATUS_BYPASSANDACK)
|
||||
;
|
||||
|
||||
/* clear TINITZ */
|
||||
read_clkctrl = readl(&adpll->clkctrl);
|
||||
writel((read_clkctrl & ~ADPLLJ_CLKCTRL_TINITZ), &adpll->clkctrl);
|
||||
|
||||
/*
|
||||
* ref_clk = 20/(n + 1);
|
||||
* clkout_dco = ref_clk * m;
|
||||
* clk_out = clkout_dco/m2;
|
||||
*/
|
||||
read_clkctrl = readl(&adpll->clkctrl) &
|
||||
~(ADPLLJ_CLKCTRL_LPMODE |
|
||||
ADPLLJ_CLKCTRL_DRIFTGUARDIAN |
|
||||
ADPLLJ_CLKCTRL_REGM4XEN);
|
||||
writel(m2nval, &adpll->m2ndiv);
|
||||
writel(mn2val, &adpll->mn2div);
|
||||
|
||||
/* Skip for modena(ADPLLS) */
|
||||
if (adpllj) {
|
||||
writel(sig_val, &adpll->fracdiv);
|
||||
writel((read_clkctrl | hs_mod), &adpll->clkctrl);
|
||||
}
|
||||
|
||||
/* Load M2, N2 dividers of ADPLL */
|
||||
writel(ADPLLJ_TENABLEDIV_ENB, &adpll->tenablediv);
|
||||
writel(~ADPLLJ_TENABLEDIV_ENB, &adpll->tenablediv);
|
||||
|
||||
/* Load M, N dividers of ADPLL */
|
||||
writel(ADPLLJ_TENABLE_ENB, &adpll->tenable);
|
||||
writel(~ADPLLJ_TENABLE_ENB, &adpll->tenable);
|
||||
|
||||
/* Configure CLKDCOLDOEN,CLKOUTLDOEN,CLKOUT Enable BITS */
|
||||
read_clkctrl = readl(&adpll->clkctrl) & ~ADPLLJ_CLKCTRL_CLKDCO;
|
||||
if (adpllj)
|
||||
writel((read_clkctrl | ADPLLJ_CLKCTRL_CLKDCO),
|
||||
&adpll->clkctrl);
|
||||
|
||||
/* Enable TINTZ and disable IDLE(PLL in Active & Locked Mode */
|
||||
read_clkctrl = readl(&adpll->clkctrl) & ~ADPLLJ_CLKCTRL_IDLE;
|
||||
writel((read_clkctrl | ADPLLJ_CLKCTRL_TINITZ), &adpll->clkctrl);
|
||||
|
||||
/* Wait for phase and freq lock */
|
||||
while ((readl(&adpll->status) & ADPLLJ_STATUS_PHSFRQLOCK) !=
|
||||
ADPLLJ_STATUS_PHSFRQLOCK)
|
||||
;
|
||||
}
|
||||
|
||||
static void unlock_pll_control_mmr(void)
|
||||
{
|
||||
/* TRM 2.10.1.4 and 3.2.7-3.2.11 */
|
||||
writel(0x1EDA4C3D, 0x481C5040);
|
||||
writel(0x2FF1AC2B, 0x48140060);
|
||||
writel(0xF757FDC0, 0x48140064);
|
||||
writel(0xE2BC3A6D, 0x48140068);
|
||||
writel(0x1EBF131D, 0x4814006c);
|
||||
writel(0x6F361E05, 0x48140070);
|
||||
}
|
||||
|
||||
static void mpu_pll_config(void)
|
||||
{
|
||||
pll_config(MPU_PLL_BASE, MPU_N, MPU_M, MPU_M2, MPU_CLKCTRL, 0);
|
||||
}
|
||||
|
||||
static void l3_pll_config(void)
|
||||
{
|
||||
u32 l3_osc_src, rd_osc_src = 0;
|
||||
|
||||
l3_osc_src = L3_OSC_SRC;
|
||||
rd_osc_src = readl(OSC_SRC_CTRL);
|
||||
|
||||
if (OSC_SRC0 == l3_osc_src)
|
||||
writel((rd_osc_src & 0xfffffffe)|0x0, OSC_SRC_CTRL);
|
||||
else
|
||||
writel((rd_osc_src & 0xfffffffe)|0x1, OSC_SRC_CTRL);
|
||||
|
||||
pll_config(L3_PLL_BASE, L3_N, L3_M, L3_M2, L3_CLKCTRL, 1);
|
||||
}
|
||||
|
||||
void ddr_pll_config(unsigned int ddrpll_m)
|
||||
{
|
||||
pll_config(DDR_PLL_BASE, DDR_N, DDR_M, DDR_M2, DDR_CLKCTRL, 1);
|
||||
}
|
||||
|
||||
void enable_emif_clocks(void) {};
|
||||
|
||||
void enable_dmm_clocks(void)
|
||||
{
|
||||
writel(PRCM_MOD_EN, &cmdef->fwclkctrl);
|
||||
writel(PRCM_MOD_EN, &cmdef->l3fastclkstctrl);
|
||||
writel(PRCM_MOD_EN, &cmdef->emif0clkctrl);
|
||||
while ((readl(&cmdef->emif0clkctrl)) != PRCM_MOD_EN)
|
||||
;
|
||||
writel(PRCM_MOD_EN, &cmdef->emif1clkctrl);
|
||||
while ((readl(&cmdef->emif1clkctrl)) != PRCM_MOD_EN)
|
||||
;
|
||||
while ((readl(&cmdef->l3fastclkstctrl) & 0x300) != 0x300)
|
||||
;
|
||||
writel(PRCM_MOD_EN, &cmdef->dmmclkctrl);
|
||||
while ((readl(&cmdef->dmmclkctrl)) != PRCM_MOD_EN)
|
||||
;
|
||||
writel(PRCM_MOD_EN, &cmalwon->l3slowclkstctrl);
|
||||
while ((readl(&cmalwon->l3slowclkstctrl) & 0x2100) != 0x2100)
|
||||
;
|
||||
}
|
||||
|
||||
/*
|
||||
* Configure the PLL/PRCM for necessary peripherals
|
||||
*/
|
||||
void pll_init()
|
||||
{
|
||||
unlock_pll_control_mmr();
|
||||
|
||||
/* Enable the control module */
|
||||
writel(PRCM_MOD_EN, &cmalwon->controlclkctrl);
|
||||
|
||||
mpu_pll_config();
|
||||
|
||||
l3_pll_config();
|
||||
|
||||
/* Enable the required peripherals */
|
||||
enable_per_clocks();
|
||||
}
|
@ -24,15 +24,20 @@ http://www.ti.com/
|
||||
/**
|
||||
* Base address for EMIF instances
|
||||
*/
|
||||
static struct emif_reg_struct *emif_reg = {
|
||||
(struct emif_reg_struct *)EMIF4_0_CFG_BASE};
|
||||
static struct emif_reg_struct *emif_reg[2] = {
|
||||
(struct emif_reg_struct *)EMIF4_0_CFG_BASE,
|
||||
(struct emif_reg_struct *)EMIF4_1_CFG_BASE};
|
||||
|
||||
/**
|
||||
* Base address for DDR instance
|
||||
* Base addresses for DDR PHY cmd/data regs
|
||||
*/
|
||||
static struct ddr_regs *ddr_reg[2] = {
|
||||
(struct ddr_regs *)DDR_PHY_BASE_ADDR,
|
||||
(struct ddr_regs *)DDR_PHY_BASE_ADDR2};
|
||||
static struct ddr_cmd_regs *ddr_cmd_reg[2] = {
|
||||
(struct ddr_cmd_regs *)DDR_PHY_CMD_ADDR,
|
||||
(struct ddr_cmd_regs *)DDR_PHY_CMD_ADDR2};
|
||||
|
||||
static struct ddr_data_regs *ddr_data_reg[2] = {
|
||||
(struct ddr_data_regs *)DDR_PHY_DATA_ADDR,
|
||||
(struct ddr_data_regs *)DDR_PHY_DATA_ADDR2};
|
||||
|
||||
/**
|
||||
* Base address for ddr io control instances
|
||||
@ -43,7 +48,7 @@ static struct ddr_cmdtctrl *ioctrl_reg = {
|
||||
/**
|
||||
* Configure SDRAM
|
||||
*/
|
||||
void config_sdram(const struct emif_regs *regs)
|
||||
void config_sdram(const struct emif_regs *regs, int nr)
|
||||
{
|
||||
if (regs->zq_config) {
|
||||
/*
|
||||
@ -51,68 +56,85 @@ void config_sdram(const struct emif_regs *regs)
|
||||
* about 570us for a delay, which will be long enough
|
||||
* to configure things.
|
||||
*/
|
||||
writel(0x2800, &emif_reg->emif_sdram_ref_ctrl);
|
||||
writel(regs->zq_config, &emif_reg->emif_zq_config);
|
||||
writel(0x2800, &emif_reg[nr]->emif_sdram_ref_ctrl);
|
||||
writel(regs->zq_config, &emif_reg[nr]->emif_zq_config);
|
||||
writel(regs->sdram_config, &cstat->secure_emif_sdram_config);
|
||||
writel(regs->sdram_config, &emif_reg[nr]->emif_sdram_config);
|
||||
writel(regs->ref_ctrl, &emif_reg[nr]->emif_sdram_ref_ctrl);
|
||||
writel(regs->ref_ctrl, &emif_reg[nr]->emif_sdram_ref_ctrl_shdw);
|
||||
}
|
||||
writel(regs->sdram_config, &emif_reg->emif_sdram_config);
|
||||
writel(regs->ref_ctrl, &emif_reg->emif_sdram_ref_ctrl);
|
||||
writel(regs->ref_ctrl, &emif_reg->emif_sdram_ref_ctrl_shdw);
|
||||
writel(regs->ref_ctrl, &emif_reg[nr]->emif_sdram_ref_ctrl);
|
||||
writel(regs->ref_ctrl, &emif_reg[nr]->emif_sdram_ref_ctrl_shdw);
|
||||
writel(regs->sdram_config, &emif_reg[nr]->emif_sdram_config);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set SDRAM timings
|
||||
*/
|
||||
void set_sdram_timings(const struct emif_regs *regs)
|
||||
void set_sdram_timings(const struct emif_regs *regs, int nr)
|
||||
{
|
||||
writel(regs->sdram_tim1, &emif_reg->emif_sdram_tim_1);
|
||||
writel(regs->sdram_tim1, &emif_reg->emif_sdram_tim_1_shdw);
|
||||
writel(regs->sdram_tim2, &emif_reg->emif_sdram_tim_2);
|
||||
writel(regs->sdram_tim2, &emif_reg->emif_sdram_tim_2_shdw);
|
||||
writel(regs->sdram_tim3, &emif_reg->emif_sdram_tim_3);
|
||||
writel(regs->sdram_tim3, &emif_reg->emif_sdram_tim_3_shdw);
|
||||
writel(regs->sdram_tim1, &emif_reg[nr]->emif_sdram_tim_1);
|
||||
writel(regs->sdram_tim1, &emif_reg[nr]->emif_sdram_tim_1_shdw);
|
||||
writel(regs->sdram_tim2, &emif_reg[nr]->emif_sdram_tim_2);
|
||||
writel(regs->sdram_tim2, &emif_reg[nr]->emif_sdram_tim_2_shdw);
|
||||
writel(regs->sdram_tim3, &emif_reg[nr]->emif_sdram_tim_3);
|
||||
writel(regs->sdram_tim3, &emif_reg[nr]->emif_sdram_tim_3_shdw);
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure DDR PHY
|
||||
*/
|
||||
void config_ddr_phy(const struct emif_regs *regs)
|
||||
void config_ddr_phy(const struct emif_regs *regs, int nr)
|
||||
{
|
||||
writel(regs->emif_ddr_phy_ctlr_1, &emif_reg->emif_ddr_phy_ctrl_1);
|
||||
writel(regs->emif_ddr_phy_ctlr_1, &emif_reg->emif_ddr_phy_ctrl_1_shdw);
|
||||
writel(regs->emif_ddr_phy_ctlr_1,
|
||||
&emif_reg[nr]->emif_ddr_phy_ctrl_1);
|
||||
writel(regs->emif_ddr_phy_ctlr_1,
|
||||
&emif_reg[nr]->emif_ddr_phy_ctrl_1_shdw);
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure DDR CMD control registers
|
||||
*/
|
||||
void config_cmd_ctrl(const struct cmd_control *cmd)
|
||||
void config_cmd_ctrl(const struct cmd_control *cmd, int nr)
|
||||
{
|
||||
writel(cmd->cmd0csratio, &ddr_reg[0]->cm0csratio);
|
||||
writel(cmd->cmd0dldiff, &ddr_reg[0]->cm0dldiff);
|
||||
writel(cmd->cmd0iclkout, &ddr_reg[0]->cm0iclkout);
|
||||
writel(cmd->cmd0csratio, &ddr_cmd_reg[nr]->cm0csratio);
|
||||
writel(cmd->cmd0dldiff, &ddr_cmd_reg[nr]->cm0dldiff);
|
||||
writel(cmd->cmd0iclkout, &ddr_cmd_reg[nr]->cm0iclkout);
|
||||
|
||||
writel(cmd->cmd1csratio, &ddr_reg[0]->cm1csratio);
|
||||
writel(cmd->cmd1dldiff, &ddr_reg[0]->cm1dldiff);
|
||||
writel(cmd->cmd1iclkout, &ddr_reg[0]->cm1iclkout);
|
||||
writel(cmd->cmd1csratio, &ddr_cmd_reg[nr]->cm1csratio);
|
||||
writel(cmd->cmd1dldiff, &ddr_cmd_reg[nr]->cm1dldiff);
|
||||
writel(cmd->cmd1iclkout, &ddr_cmd_reg[nr]->cm1iclkout);
|
||||
|
||||
writel(cmd->cmd2csratio, &ddr_reg[0]->cm2csratio);
|
||||
writel(cmd->cmd2dldiff, &ddr_reg[0]->cm2dldiff);
|
||||
writel(cmd->cmd2iclkout, &ddr_reg[0]->cm2iclkout);
|
||||
writel(cmd->cmd2csratio, &ddr_cmd_reg[nr]->cm2csratio);
|
||||
writel(cmd->cmd2dldiff, &ddr_cmd_reg[nr]->cm2dldiff);
|
||||
writel(cmd->cmd2iclkout, &ddr_cmd_reg[nr]->cm2iclkout);
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure DDR DATA registers
|
||||
*/
|
||||
void config_ddr_data(int macrono, const struct ddr_data *data)
|
||||
void config_ddr_data(const struct ddr_data *data, int nr)
|
||||
{
|
||||
writel(data->datardsratio0, &ddr_reg[macrono]->dt0rdsratio0);
|
||||
writel(data->datawdsratio0, &ddr_reg[macrono]->dt0wdsratio0);
|
||||
writel(data->datawiratio0, &ddr_reg[macrono]->dt0wiratio0);
|
||||
writel(data->datagiratio0, &ddr_reg[macrono]->dt0giratio0);
|
||||
writel(data->datafwsratio0, &ddr_reg[macrono]->dt0fwsratio0);
|
||||
writel(data->datawrsratio0, &ddr_reg[macrono]->dt0wrsratio0);
|
||||
writel(data->datauserank0delay, &ddr_reg[macrono]->dt0rdelays0);
|
||||
writel(data->datadldiff0, &ddr_reg[macrono]->dt0dldiff0);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < DDR_DATA_REGS_NR; i++) {
|
||||
writel(data->datardsratio0,
|
||||
&(ddr_data_reg[nr]+i)->dt0rdsratio0);
|
||||
writel(data->datawdsratio0,
|
||||
&(ddr_data_reg[nr]+i)->dt0wdsratio0);
|
||||
writel(data->datawiratio0,
|
||||
&(ddr_data_reg[nr]+i)->dt0wiratio0);
|
||||
writel(data->datagiratio0,
|
||||
&(ddr_data_reg[nr]+i)->dt0giratio0);
|
||||
writel(data->datafwsratio0,
|
||||
&(ddr_data_reg[nr]+i)->dt0fwsratio0);
|
||||
writel(data->datawrsratio0,
|
||||
&(ddr_data_reg[nr]+i)->dt0wrsratio0);
|
||||
writel(data->datauserank0delay,
|
||||
&(ddr_data_reg[nr]+i)->dt0rdelays0);
|
||||
writel(data->datadldiff0,
|
||||
&(ddr_data_reg[nr]+i)->dt0dldiff0);
|
||||
}
|
||||
}
|
||||
|
||||
void config_io_ctrl(unsigned long val)
|
||||
|
@ -44,44 +44,65 @@ void dram_init_banksize(void)
|
||||
|
||||
|
||||
#ifdef CONFIG_SPL_BUILD
|
||||
static struct vtp_reg *vtpreg = (struct vtp_reg *)VTP0_CTRL_ADDR;
|
||||
static struct dmm_lisa_map_regs *hw_lisa_map_regs =
|
||||
(struct dmm_lisa_map_regs *)DMM_BASE;
|
||||
static struct vtp_reg *vtpreg[2] = {
|
||||
(struct vtp_reg *)VTP0_CTRL_ADDR,
|
||||
(struct vtp_reg *)VTP1_CTRL_ADDR};
|
||||
#ifdef CONFIG_AM33XX
|
||||
static struct ddr_ctrl *ddrctrl = (struct ddr_ctrl *)DDR_CTRL_ADDR;
|
||||
#endif
|
||||
|
||||
static void config_vtp(void)
|
||||
void config_dmm(const struct dmm_lisa_map_regs *regs)
|
||||
{
|
||||
writel(readl(&vtpreg->vtp0ctrlreg) | VTP_CTRL_ENABLE,
|
||||
&vtpreg->vtp0ctrlreg);
|
||||
writel(readl(&vtpreg->vtp0ctrlreg) & (~VTP_CTRL_START_EN),
|
||||
&vtpreg->vtp0ctrlreg);
|
||||
writel(readl(&vtpreg->vtp0ctrlreg) | VTP_CTRL_START_EN,
|
||||
&vtpreg->vtp0ctrlreg);
|
||||
enable_dmm_clocks();
|
||||
|
||||
writel(0, &hw_lisa_map_regs->dmm_lisa_map_3);
|
||||
writel(0, &hw_lisa_map_regs->dmm_lisa_map_2);
|
||||
writel(0, &hw_lisa_map_regs->dmm_lisa_map_1);
|
||||
writel(0, &hw_lisa_map_regs->dmm_lisa_map_0);
|
||||
|
||||
writel(regs->dmm_lisa_map_3, &hw_lisa_map_regs->dmm_lisa_map_3);
|
||||
writel(regs->dmm_lisa_map_2, &hw_lisa_map_regs->dmm_lisa_map_2);
|
||||
writel(regs->dmm_lisa_map_1, &hw_lisa_map_regs->dmm_lisa_map_1);
|
||||
writel(regs->dmm_lisa_map_0, &hw_lisa_map_regs->dmm_lisa_map_0);
|
||||
}
|
||||
|
||||
static void config_vtp(int nr)
|
||||
{
|
||||
writel(readl(&vtpreg[nr]->vtp0ctrlreg) | VTP_CTRL_ENABLE,
|
||||
&vtpreg[nr]->vtp0ctrlreg);
|
||||
writel(readl(&vtpreg[nr]->vtp0ctrlreg) & (~VTP_CTRL_START_EN),
|
||||
&vtpreg[nr]->vtp0ctrlreg);
|
||||
writel(readl(&vtpreg[nr]->vtp0ctrlreg) | VTP_CTRL_START_EN,
|
||||
&vtpreg[nr]->vtp0ctrlreg);
|
||||
|
||||
/* Poll for READY */
|
||||
while ((readl(&vtpreg->vtp0ctrlreg) & VTP_CTRL_READY) !=
|
||||
while ((readl(&vtpreg[nr]->vtp0ctrlreg) & VTP_CTRL_READY) !=
|
||||
VTP_CTRL_READY)
|
||||
;
|
||||
}
|
||||
|
||||
void config_ddr(unsigned int pll, unsigned int ioctrl,
|
||||
const struct ddr_data *data, const struct cmd_control *ctrl,
|
||||
const struct emif_regs *regs)
|
||||
const struct emif_regs *regs, int nr)
|
||||
{
|
||||
enable_emif_clocks();
|
||||
ddr_pll_config(pll);
|
||||
config_vtp();
|
||||
config_cmd_ctrl(ctrl);
|
||||
|
||||
config_ddr_data(0, data);
|
||||
config_ddr_data(1, data);
|
||||
config_vtp(nr);
|
||||
config_cmd_ctrl(ctrl, nr);
|
||||
|
||||
config_ddr_data(data, nr);
|
||||
#ifdef CONFIG_AM33XX
|
||||
config_io_ctrl(ioctrl);
|
||||
|
||||
/* Set CKE to be controlled by EMIF/DDR PHY */
|
||||
writel(DDR_CKE_CTRL_NORMAL, &ddrctrl->ddrckectrl);
|
||||
#endif
|
||||
|
||||
/* Program EMIF instance */
|
||||
config_ddr_phy(regs);
|
||||
set_sdram_timings(regs);
|
||||
config_sdram(regs);
|
||||
config_ddr_phy(regs, nr);
|
||||
set_sdram_timings(regs, nr);
|
||||
config_sdram(regs, nr);
|
||||
}
|
||||
#endif
|
||||
|
@ -83,7 +83,7 @@ void gpmc_init(void)
|
||||
/* global settings */
|
||||
writel(0x00000008, &gpmc_cfg->sysconfig);
|
||||
writel(0x00000100, &gpmc_cfg->irqstatus);
|
||||
writel(0x00000200, &gpmc_cfg->irqenable);
|
||||
writel(0x00000100, &gpmc_cfg->irqenable);
|
||||
writel(0x00000012, &gpmc_cfg->config);
|
||||
/*
|
||||
* Disable the GPMC0 config set by ROM code
|
||||
|
@ -98,6 +98,9 @@ int print_cpuinfo(void)
|
||||
case AM335X:
|
||||
cpu_s = "AM335X";
|
||||
break;
|
||||
case TI81XX:
|
||||
cpu_s = "TI81XX";
|
||||
break;
|
||||
default:
|
||||
cpu_s = "Unknown cpu type";
|
||||
break;
|
||||
@ -120,7 +123,7 @@ int print_cpuinfo(void)
|
||||
sec_s = "?";
|
||||
}
|
||||
|
||||
printf("AM%s-%s rev %d\n",
|
||||
printf("%s-%s rev %d\n",
|
||||
cpu_s, sec_s, get_cpu_rev());
|
||||
|
||||
/* TODO: Print ARM and DDR frequencies */
|
||||
|
@ -36,7 +36,7 @@ COBJS += emif-common.o
|
||||
COBJS += vc.o
|
||||
endif
|
||||
|
||||
ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX),)
|
||||
ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TI814X),)
|
||||
COBJS += boot-common.o
|
||||
SOBJS += lowlevel_init.o
|
||||
endif
|
||||
|
@ -26,6 +26,7 @@
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <asm/arch/omap.h>
|
||||
#include <asm/arch/spl.h>
|
||||
#include <linux/linkage.h>
|
||||
|
@ -34,6 +34,7 @@
|
||||
|
||||
#include <common.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/arch/cpu.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* clock header
|
||||
*
|
||||
* Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
|
||||
* Copyright (C) 2011, Texas Instruments Incorporated - http://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
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* AM33xx clock define
|
||||
*
|
||||
* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
|
||||
* Copyright (C) 2013 Texas Instruments Incorporated - http://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
|
||||
@ -19,37 +19,13 @@
|
||||
#ifndef _CLOCKS_AM33XX_H_
|
||||
#define _CLOCKS_AM33XX_H_
|
||||
|
||||
#define OSC (V_OSCK/1000000)
|
||||
|
||||
/* MAIN PLL Fdll = 550 MHZ, */
|
||||
#define MPUPLL_M 550
|
||||
#define MPUPLL_N (OSC-1)
|
||||
#define MPUPLL_M2 1
|
||||
|
||||
/* Core PLL Fdll = 1 GHZ, */
|
||||
#define COREPLL_M 1000
|
||||
#define COREPLL_N (OSC-1)
|
||||
|
||||
#define COREPLL_M4 10 /* CORE_CLKOUTM4 = 200 MHZ */
|
||||
#define COREPLL_M5 8 /* CORE_CLKOUTM5 = 250 MHZ */
|
||||
#define COREPLL_M6 4 /* CORE_CLKOUTM6 = 500 MHZ */
|
||||
|
||||
/*
|
||||
* USB PHY clock is 960 MHZ. Since, this comes directly from Fdll, Fdll
|
||||
* frequency needs to be set to 960 MHZ. Hence,
|
||||
* For clkout = 192 MHZ, Fdll = 960 MHZ, divider values are given below
|
||||
*/
|
||||
#define PERPLL_M 960
|
||||
#define PERPLL_N (OSC-1)
|
||||
#define PERPLL_M2 5
|
||||
|
||||
/* DDR Freq is 266 MHZ for now */
|
||||
/* Set Fdll = 400 MHZ , Fdll = M * 2 * CLKINP/ N + 1; clkout = Fdll /(2 * M2) */
|
||||
#define DDRPLL_M 266
|
||||
#define DDRPLL_N (OSC-1)
|
||||
#define DDRPLL_M2 1
|
||||
/* MAIN PLL Fdll = 550 MHz, by default */
|
||||
#ifndef CONFIG_SYS_MPUCLK
|
||||
#define CONFIG_SYS_MPUCLK 550
|
||||
#endif
|
||||
|
||||
extern void pll_init(void);
|
||||
extern void enable_emif_clocks(void);
|
||||
extern void enable_dmm_clocks(void);
|
||||
|
||||
#endif /* endif _CLOCKS_AM33XX_H_ */
|
||||
|
@ -42,9 +42,10 @@
|
||||
#define HS_DEVICE 0x2
|
||||
#define GP_DEVICE 0x3
|
||||
|
||||
/* cpu-id for AM33XX family */
|
||||
/* cpu-id for AM33XX and TI81XX family */
|
||||
#define AM335X 0xB944
|
||||
#define DEVICE_ID 0x44E10600
|
||||
#define TI81XX 0xB81E
|
||||
#define DEVICE_ID (CTRL_BASE + 0x0600)
|
||||
|
||||
/* This gives the status of the boot mode pins on the evm */
|
||||
#define SYSBOOT_MASK (BIT(0) | BIT(1) | BIT(2)\
|
||||
@ -52,9 +53,11 @@
|
||||
|
||||
/* Reset control */
|
||||
#ifdef CONFIG_AM33XX
|
||||
#define PRM_RSTCTRL 0x44E00F00
|
||||
#define PRM_RSTST 0x44E00F08
|
||||
#define PRM_RSTCTRL (PRCM_BASE + 0x0F00)
|
||||
#elif defined(CONFIG_TI814X)
|
||||
#define PRM_RSTCTRL (PRCM_BASE + 0x00A0)
|
||||
#endif
|
||||
#define PRM_RSTST (PRM_RSTCTRL + 8)
|
||||
#define PRM_RSTCTRL_RESET 0x01
|
||||
#define PRM_RSTST_WARM_RESET_MASK 0x232
|
||||
|
||||
|
@ -28,6 +28,7 @@
|
||||
#define VTP_CTRL_START_EN (0x1)
|
||||
#define PHY_DLL_LOCK_DIFF 0x0
|
||||
#define DDR_CKE_CTRL_NORMAL 0x1
|
||||
#define PHY_EN_DYN_PWRDN (0x1 << 20)
|
||||
|
||||
/* Micron MT47H128M16RT-25E */
|
||||
#define MT47H128M16RT25E_EMIF_READ_LATENCY 0x100005
|
||||
@ -82,6 +83,23 @@
|
||||
#define MT41J256M8HX15E_PHY_FIFO_WE 0x100
|
||||
#define MT41J256M8HX15E_IOCTRL_VALUE 0x18B
|
||||
|
||||
/* Micron MT41K256M16HA-125E */
|
||||
#define MT41K256M16HA125E_EMIF_READ_LATENCY 0x100006
|
||||
#define MT41K256M16HA125E_EMIF_TIM1 0x0888A39B
|
||||
#define MT41K256M16HA125E_EMIF_TIM2 0x26517FDA
|
||||
#define MT41K256M16HA125E_EMIF_TIM3 0x501F84EF
|
||||
#define MT41K256M16HA125E_EMIF_SDCFG 0x61C04BB2
|
||||
#define MT41K256M16HA125E_EMIF_SDREF 0x0000093B
|
||||
#define MT41K256M16HA125E_ZQ_CFG 0x50074BE4
|
||||
#define MT41K256M16HA125E_DLL_LOCK_DIFF 0x1
|
||||
#define MT41K256M16HA125E_RATIO 0x40
|
||||
#define MT41K256M16HA125E_INVERT_CLKOUT 0x0
|
||||
#define MT41K256M16HA125E_RD_DQS 0x3C
|
||||
#define MT41K256M16HA125E_WR_DQS 0x45
|
||||
#define MT41K256M16HA125E_PHY_WR_DATA 0x7F
|
||||
#define MT41K256M16HA125E_PHY_FIFO_WE 0x9B
|
||||
#define MT41K256M16HA125E_IOCTRL_VALUE 0x18B
|
||||
|
||||
/* Micron MT41J512M8RH-125 on EVM v1.5 */
|
||||
#define MT41J512M8RH125_EMIF_READ_LATENCY 0x06
|
||||
#define MT41J512M8RH125_EMIF_TIM1 0x0888A39B
|
||||
@ -99,20 +117,65 @@
|
||||
#define MT41J512M8RH125_PHY_WR_DATA 0x74
|
||||
#define MT41J512M8RH125_IOCTRL_VALUE 0x18B
|
||||
|
||||
/**
|
||||
* Configure DMM
|
||||
*/
|
||||
void config_dmm(const struct dmm_lisa_map_regs *regs);
|
||||
|
||||
/**
|
||||
* Configure SDRAM
|
||||
*/
|
||||
void config_sdram(const struct emif_regs *regs);
|
||||
void config_sdram(const struct emif_regs *regs, int nr);
|
||||
|
||||
/**
|
||||
* Set SDRAM timings
|
||||
*/
|
||||
void set_sdram_timings(const struct emif_regs *regs);
|
||||
void set_sdram_timings(const struct emif_regs *regs, int nr);
|
||||
|
||||
/**
|
||||
* Configure DDR PHY
|
||||
*/
|
||||
void config_ddr_phy(const struct emif_regs *regs);
|
||||
void config_ddr_phy(const struct emif_regs *regs, int nr);
|
||||
|
||||
struct ddr_cmd_regs {
|
||||
unsigned int resv0[7];
|
||||
unsigned int cm0csratio; /* offset 0x01C */
|
||||
unsigned int resv1[2];
|
||||
unsigned int cm0dldiff; /* offset 0x028 */
|
||||
unsigned int cm0iclkout; /* offset 0x02C */
|
||||
unsigned int resv2[8];
|
||||
unsigned int cm1csratio; /* offset 0x050 */
|
||||
unsigned int resv3[2];
|
||||
unsigned int cm1dldiff; /* offset 0x05C */
|
||||
unsigned int cm1iclkout; /* offset 0x060 */
|
||||
unsigned int resv4[8];
|
||||
unsigned int cm2csratio; /* offset 0x084 */
|
||||
unsigned int resv5[2];
|
||||
unsigned int cm2dldiff; /* offset 0x090 */
|
||||
unsigned int cm2iclkout; /* offset 0x094 */
|
||||
unsigned int resv6[3];
|
||||
};
|
||||
|
||||
struct ddr_data_regs {
|
||||
unsigned int dt0rdsratio0; /* offset 0x0C8 */
|
||||
unsigned int resv1[4];
|
||||
unsigned int dt0wdsratio0; /* offset 0x0DC */
|
||||
unsigned int resv2[4];
|
||||
unsigned int dt0wiratio0; /* offset 0x0F0 */
|
||||
unsigned int resv3;
|
||||
unsigned int dt0wimode0; /* offset 0x0F8 */
|
||||
unsigned int dt0giratio0; /* offset 0x0FC */
|
||||
unsigned int resv4;
|
||||
unsigned int dt0gimode0; /* offset 0x104 */
|
||||
unsigned int dt0fwsratio0; /* offset 0x108 */
|
||||
unsigned int resv5[4];
|
||||
unsigned int dt0dqoffset; /* offset 0x11C */
|
||||
unsigned int dt0wrsratio0; /* offset 0x120 */
|
||||
unsigned int resv6[4];
|
||||
unsigned int dt0rdelays0; /* offset 0x134 */
|
||||
unsigned int dt0dldiff0; /* offset 0x138 */
|
||||
unsigned int resv7[12];
|
||||
};
|
||||
|
||||
/**
|
||||
* This structure represents the DDR registers on AM33XX devices.
|
||||
@ -193,12 +256,12 @@ struct ddr_data {
|
||||
/**
|
||||
* Configure DDR CMD control registers
|
||||
*/
|
||||
void config_cmd_ctrl(const struct cmd_control *cmd);
|
||||
void config_cmd_ctrl(const struct cmd_control *cmd, int nr);
|
||||
|
||||
/**
|
||||
* Configure DDR DATA registers
|
||||
*/
|
||||
void config_ddr_data(int data_macrono, const struct ddr_data *data);
|
||||
void config_ddr_data(const struct ddr_data *data, int nr);
|
||||
|
||||
/**
|
||||
* This structure represents the DDR io control on AM33XX devices.
|
||||
@ -226,6 +289,6 @@ struct ddr_ctrl {
|
||||
|
||||
void config_ddr(unsigned int pll, unsigned int ioctrl,
|
||||
const struct ddr_data *data, const struct cmd_control *ctrl,
|
||||
const struct emif_regs *regs);
|
||||
const struct emif_regs *regs, int nr);
|
||||
|
||||
#endif /* _DDR_DEFS_H */
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* hardware specific header
|
||||
*
|
||||
* Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
|
||||
* Copyright (C) 2013, Texas Instruments, Incorporated - http://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
|
||||
@ -19,10 +19,17 @@
|
||||
#ifndef __AM33XX_HARDWARE_H
|
||||
#define __AM33XX_HARDWARE_H
|
||||
|
||||
#include <config.h>
|
||||
#include <asm/arch/omap.h>
|
||||
#ifdef CONFIG_AM33XX
|
||||
#include <asm/arch/hardware_am33xx.h>
|
||||
#elif defined(CONFIG_TI814X)
|
||||
#include <asm/arch/hardware_ti814x.h>
|
||||
#endif
|
||||
|
||||
/* Module base addresses */
|
||||
#define UART0_BASE 0x44E09000
|
||||
/*
|
||||
* Common hardware definitions
|
||||
*/
|
||||
|
||||
/* DM Timer base addresses */
|
||||
#define DM_TIMER0_BASE 0x4802C000
|
||||
@ -37,21 +44,10 @@
|
||||
/* GPIO Base address */
|
||||
#define GPIO0_BASE 0x48032000
|
||||
#define GPIO1_BASE 0x4804C000
|
||||
#define GPIO2_BASE 0x481AC000
|
||||
|
||||
/* BCH Error Location Module */
|
||||
#define ELM_BASE 0x48080000
|
||||
|
||||
/* Watchdog Timer */
|
||||
#define WDT_BASE 0x44E35000
|
||||
|
||||
/* Control Module Base Address */
|
||||
#define CTRL_BASE 0x44E10000
|
||||
#define CTRL_DEVICE_BASE 0x44E10600
|
||||
|
||||
/* PRCM Base Address */
|
||||
#define PRCM_BASE 0x44E00000
|
||||
|
||||
/* EMIF Base address */
|
||||
#define EMIF4_0_CFG_BASE 0x4C000000
|
||||
#define EMIF4_1_CFG_BASE 0x4D000000
|
||||
@ -66,13 +62,13 @@
|
||||
#define PRM_DEVICE 0x44E00F00
|
||||
|
||||
/* VTP Base address */
|
||||
#define VTP0_CTRL_ADDR 0x44E10E0C
|
||||
#define VTP1_CTRL_ADDR 0x48140E10
|
||||
|
||||
/* DDR Base address */
|
||||
#define DDR_CTRL_ADDR 0x44E10E04
|
||||
#define DDR_CONTROL_BASE_ADDR 0x44E11404
|
||||
#define DDR_PHY_BASE_ADDR 0x44E12000
|
||||
#define DDR_PHY_BASE_ADDR2 0x44E120A4
|
||||
#define DDR_PHY_CMD_ADDR2 0x47C0C800
|
||||
#define DDR_PHY_DATA_ADDR2 0x47C0C8C8
|
||||
|
||||
/* UART */
|
||||
#define DEFAULT_UART_BASE UART0_BASE
|
||||
@ -84,14 +80,10 @@
|
||||
#define GPMC_BASE 0x50000000
|
||||
|
||||
/* CPSW Config space */
|
||||
#define AM335X_CPSW_BASE 0x4A100000
|
||||
#define AM335X_CPSW_MDIO_BASE 0x4A101000
|
||||
|
||||
/* RTC base address */
|
||||
#define AM335X_RTC_BASE 0x44E3E000
|
||||
#define CPSW_BASE 0x4A100000
|
||||
|
||||
/* OTG */
|
||||
#define AM335X_USB0_OTG_BASE 0x47401000
|
||||
#define AM335X_USB1_OTG_BASE 0x47401800
|
||||
#define USB0_OTG_BASE 0x47401000
|
||||
#define USB1_OTG_BASE 0x47401800
|
||||
|
||||
#endif /* __AM33XX_HARDWARE_H */
|
||||
|
54
arch/arm/include/asm/arch-am33xx/hardware_am33xx.h
Normal file
54
arch/arm/include/asm/arch-am33xx/hardware_am33xx.h
Normal file
@ -0,0 +1,54 @@
|
||||
/*
|
||||
* hardware_am33xx.h
|
||||
*
|
||||
* AM33xx hardware specific header
|
||||
*
|
||||
* Copyright (C) 2013, Texas Instruments, Incorporated - http://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.
|
||||
*/
|
||||
|
||||
#ifndef __AM33XX_HARDWARE_AM33XX_H
|
||||
#define __AM33XX_HARDWARE_AM33XX_H
|
||||
|
||||
/* Module base addresses */
|
||||
|
||||
/* UART Base Address */
|
||||
#define UART0_BASE 0x44E09000
|
||||
|
||||
/* GPIO Base address */
|
||||
#define GPIO2_BASE 0x481AC000
|
||||
|
||||
/* Watchdog Timer */
|
||||
#define WDT_BASE 0x44E35000
|
||||
|
||||
/* Control Module Base Address */
|
||||
#define CTRL_BASE 0x44E10000
|
||||
#define CTRL_DEVICE_BASE 0x44E10600
|
||||
|
||||
/* PRCM Base Address */
|
||||
#define PRCM_BASE 0x44E00000
|
||||
|
||||
/* VTP Base address */
|
||||
#define VTP0_CTRL_ADDR 0x44E10E0C
|
||||
|
||||
/* DDR Base address */
|
||||
#define DDR_PHY_CMD_ADDR 0x44E12000
|
||||
#define DDR_PHY_DATA_ADDR 0x44E120C8
|
||||
#define DDR_DATA_REGS_NR 2
|
||||
|
||||
/* CPSW Config space */
|
||||
#define CPSW_MDIO_BASE 0x4A101000
|
||||
|
||||
/* RTC base address */
|
||||
#define RTC_BASE 0x44E3E000
|
||||
|
||||
#endif /* __AM33XX_HARDWARE_AM33XX_H */
|
53
arch/arm/include/asm/arch-am33xx/hardware_ti814x.h
Normal file
53
arch/arm/include/asm/arch-am33xx/hardware_ti814x.h
Normal file
@ -0,0 +1,53 @@
|
||||
/*
|
||||
* hardware_ti814x.h
|
||||
*
|
||||
* TI814x hardware specific header
|
||||
*
|
||||
* Copyright (C) 2013, Texas Instruments, Incorporated - http://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.
|
||||
*/
|
||||
|
||||
#ifndef __AM33XX_HARDWARE_TI814X_H
|
||||
#define __AM33XX_HARDWARE_TI814X_H
|
||||
|
||||
/* Module base addresses */
|
||||
|
||||
/* UART Base Address */
|
||||
#define UART0_BASE 0x48020000
|
||||
|
||||
/* Watchdog Timer */
|
||||
#define WDT_BASE 0x481C7000
|
||||
|
||||
/* Control Module Base Address */
|
||||
#define CTRL_BASE 0x48140000
|
||||
|
||||
/* PRCM Base Address */
|
||||
#define PRCM_BASE 0x48180000
|
||||
|
||||
/* PLL Subsystem Base Address */
|
||||
#define PLL_SUBSYS_BASE 0x481C5000
|
||||
|
||||
/* VTP Base address */
|
||||
#define VTP0_CTRL_ADDR 0x48140E0C
|
||||
|
||||
/* DDR Base address */
|
||||
#define DDR_PHY_CMD_ADDR 0x47C0C400
|
||||
#define DDR_PHY_DATA_ADDR 0x47C0C4C8
|
||||
#define DDR_DATA_REGS_NR 4
|
||||
|
||||
/* CPSW Config space */
|
||||
#define CPSW_MDIO_BASE 0x4A100800
|
||||
|
||||
/* RTC base address */
|
||||
#define RTC_BASE 0x480C0000
|
||||
|
||||
#endif /* __AM33XX_HARDWARE_TI814X_H */
|
@ -24,4 +24,9 @@
|
||||
#define OMAP_HSMMC1_BASE 0x48060100
|
||||
#define OMAP_HSMMC2_BASE 0x481D8100
|
||||
|
||||
#if defined(CONFIG_TI814X)
|
||||
#undef MMC_CLOCK_REFERENCE
|
||||
#define MMC_CLOCK_REFERENCE 192 /* MHz */
|
||||
#endif
|
||||
|
||||
#endif /* MMC_HOST_DEF_H */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* mux.h
|
||||
*
|
||||
* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
|
||||
* Copyright (C) 2013 Texas Instruments Incorporated - http://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
|
||||
@ -19,234 +19,15 @@
|
||||
#include <common.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
#define MUX_CFG(value, offset) \
|
||||
__raw_writel(value, (CTRL_BASE + offset));
|
||||
|
||||
/* PAD Control Fields */
|
||||
#define SLEWCTRL (0x1 << 6)
|
||||
#define RXACTIVE (0x1 << 5)
|
||||
#define PULLDOWN_EN (0x0 << 4) /* Pull Down Selection */
|
||||
#define PULLUP_EN (0x1 << 4) /* Pull Up Selection */
|
||||
#define PULLUDEN (0x0 << 3) /* Pull up enabled */
|
||||
#define PULLUDDIS (0x1 << 3) /* Pull up disabled */
|
||||
#define MODE(val) val /* used for Readability */
|
||||
|
||||
/*
|
||||
* PAD CONTROL OFFSETS
|
||||
* Field names corresponds to the pad signal name
|
||||
*/
|
||||
struct pad_signals {
|
||||
int gpmc_ad0;
|
||||
int gpmc_ad1;
|
||||
int gpmc_ad2;
|
||||
int gpmc_ad3;
|
||||
int gpmc_ad4;
|
||||
int gpmc_ad5;
|
||||
int gpmc_ad6;
|
||||
int gpmc_ad7;
|
||||
int gpmc_ad8;
|
||||
int gpmc_ad9;
|
||||
int gpmc_ad10;
|
||||
int gpmc_ad11;
|
||||
int gpmc_ad12;
|
||||
int gpmc_ad13;
|
||||
int gpmc_ad14;
|
||||
int gpmc_ad15;
|
||||
int gpmc_a0;
|
||||
int gpmc_a1;
|
||||
int gpmc_a2;
|
||||
int gpmc_a3;
|
||||
int gpmc_a4;
|
||||
int gpmc_a5;
|
||||
int gpmc_a6;
|
||||
int gpmc_a7;
|
||||
int gpmc_a8;
|
||||
int gpmc_a9;
|
||||
int gpmc_a10;
|
||||
int gpmc_a11;
|
||||
int gpmc_wait0;
|
||||
int gpmc_wpn;
|
||||
int gpmc_be1n;
|
||||
int gpmc_csn0;
|
||||
int gpmc_csn1;
|
||||
int gpmc_csn2;
|
||||
int gpmc_csn3;
|
||||
int gpmc_clk;
|
||||
int gpmc_advn_ale;
|
||||
int gpmc_oen_ren;
|
||||
int gpmc_wen;
|
||||
int gpmc_be0n_cle;
|
||||
int lcd_data0;
|
||||
int lcd_data1;
|
||||
int lcd_data2;
|
||||
int lcd_data3;
|
||||
int lcd_data4;
|
||||
int lcd_data5;
|
||||
int lcd_data6;
|
||||
int lcd_data7;
|
||||
int lcd_data8;
|
||||
int lcd_data9;
|
||||
int lcd_data10;
|
||||
int lcd_data11;
|
||||
int lcd_data12;
|
||||
int lcd_data13;
|
||||
int lcd_data14;
|
||||
int lcd_data15;
|
||||
int lcd_vsync;
|
||||
int lcd_hsync;
|
||||
int lcd_pclk;
|
||||
int lcd_ac_bias_en;
|
||||
int mmc0_dat3;
|
||||
int mmc0_dat2;
|
||||
int mmc0_dat1;
|
||||
int mmc0_dat0;
|
||||
int mmc0_clk;
|
||||
int mmc0_cmd;
|
||||
int mii1_col;
|
||||
int mii1_crs;
|
||||
int mii1_rxerr;
|
||||
int mii1_txen;
|
||||
int mii1_rxdv;
|
||||
int mii1_txd3;
|
||||
int mii1_txd2;
|
||||
int mii1_txd1;
|
||||
int mii1_txd0;
|
||||
int mii1_txclk;
|
||||
int mii1_rxclk;
|
||||
int mii1_rxd3;
|
||||
int mii1_rxd2;
|
||||
int mii1_rxd1;
|
||||
int mii1_rxd0;
|
||||
int rmii1_refclk;
|
||||
int mdio_data;
|
||||
int mdio_clk;
|
||||
int spi0_sclk;
|
||||
int spi0_d0;
|
||||
int spi0_d1;
|
||||
int spi0_cs0;
|
||||
int spi0_cs1;
|
||||
int ecap0_in_pwm0_out;
|
||||
int uart0_ctsn;
|
||||
int uart0_rtsn;
|
||||
int uart0_rxd;
|
||||
int uart0_txd;
|
||||
int uart1_ctsn;
|
||||
int uart1_rtsn;
|
||||
int uart1_rxd;
|
||||
int uart1_txd;
|
||||
int i2c0_sda;
|
||||
int i2c0_scl;
|
||||
int mcasp0_aclkx;
|
||||
int mcasp0_fsx;
|
||||
int mcasp0_axr0;
|
||||
int mcasp0_ahclkr;
|
||||
int mcasp0_aclkr;
|
||||
int mcasp0_fsr;
|
||||
int mcasp0_axr1;
|
||||
int mcasp0_ahclkx;
|
||||
int xdma_event_intr0;
|
||||
int xdma_event_intr1;
|
||||
int nresetin_out;
|
||||
int porz;
|
||||
int nnmi;
|
||||
int osc0_in;
|
||||
int osc0_out;
|
||||
int rsvd1;
|
||||
int tms;
|
||||
int tdi;
|
||||
int tdo;
|
||||
int tck;
|
||||
int ntrst;
|
||||
int emu0;
|
||||
int emu1;
|
||||
int osc1_in;
|
||||
int osc1_out;
|
||||
int pmic_power_en;
|
||||
int rtc_porz;
|
||||
int rsvd2;
|
||||
int ext_wakeup;
|
||||
int enz_kaldo_1p8v;
|
||||
int usb0_dm;
|
||||
int usb0_dp;
|
||||
int usb0_ce;
|
||||
int usb0_id;
|
||||
int usb0_vbus;
|
||||
int usb0_drvvbus;
|
||||
int usb1_dm;
|
||||
int usb1_dp;
|
||||
int usb1_ce;
|
||||
int usb1_id;
|
||||
int usb1_vbus;
|
||||
int usb1_drvvbus;
|
||||
int ddr_resetn;
|
||||
int ddr_csn0;
|
||||
int ddr_cke;
|
||||
int ddr_ck;
|
||||
int ddr_nck;
|
||||
int ddr_casn;
|
||||
int ddr_rasn;
|
||||
int ddr_wen;
|
||||
int ddr_ba0;
|
||||
int ddr_ba1;
|
||||
int ddr_ba2;
|
||||
int ddr_a0;
|
||||
int ddr_a1;
|
||||
int ddr_a2;
|
||||
int ddr_a3;
|
||||
int ddr_a4;
|
||||
int ddr_a5;
|
||||
int ddr_a6;
|
||||
int ddr_a7;
|
||||
int ddr_a8;
|
||||
int ddr_a9;
|
||||
int ddr_a10;
|
||||
int ddr_a11;
|
||||
int ddr_a12;
|
||||
int ddr_a13;
|
||||
int ddr_a14;
|
||||
int ddr_a15;
|
||||
int ddr_odt;
|
||||
int ddr_d0;
|
||||
int ddr_d1;
|
||||
int ddr_d2;
|
||||
int ddr_d3;
|
||||
int ddr_d4;
|
||||
int ddr_d5;
|
||||
int ddr_d6;
|
||||
int ddr_d7;
|
||||
int ddr_d8;
|
||||
int ddr_d9;
|
||||
int ddr_d10;
|
||||
int ddr_d11;
|
||||
int ddr_d12;
|
||||
int ddr_d13;
|
||||
int ddr_d14;
|
||||
int ddr_d15;
|
||||
int ddr_dqm0;
|
||||
int ddr_dqm1;
|
||||
int ddr_dqs0;
|
||||
int ddr_dqsn0;
|
||||
int ddr_dqs1;
|
||||
int ddr_dqsn1;
|
||||
int ddr_vref;
|
||||
int ddr_vtp;
|
||||
int ddr_strben0;
|
||||
int ddr_strben1;
|
||||
int ain7;
|
||||
int ain6;
|
||||
int ain5;
|
||||
int ain4;
|
||||
int ain3;
|
||||
int ain2;
|
||||
int ain1;
|
||||
int ain0;
|
||||
int vrefp;
|
||||
int vrefn;
|
||||
};
|
||||
#ifdef CONFIG_AM33XX
|
||||
#include <asm/arch/mux_am33xx.h>
|
||||
#elif defined(CONFIG_TI814X)
|
||||
#include <asm/arch/mux_ti814x.h>
|
||||
#endif
|
||||
|
||||
struct module_pin_mux {
|
||||
short reg_offset;
|
||||
unsigned char val;
|
||||
unsigned int val;
|
||||
};
|
||||
|
||||
/* Pad control register offset */
|
||||
@ -259,4 +40,4 @@ struct module_pin_mux {
|
||||
*/
|
||||
void configure_module_pin_mux(struct module_pin_mux *mod_pin_mux);
|
||||
|
||||
#endif
|
||||
#endif /* endif _MUX_H */
|
||||
|
247
arch/arm/include/asm/arch-am33xx/mux_am33xx.h
Normal file
247
arch/arm/include/asm/arch-am33xx/mux_am33xx.h
Normal file
@ -0,0 +1,247 @@
|
||||
/*
|
||||
* mux_am33xx.h
|
||||
*
|
||||
* Copyright (C) 2013 Texas Instruments Incorporated - http://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 version 2.
|
||||
*
|
||||
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
|
||||
* kind, whether express or implied; without even the implied warranty
|
||||
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#ifndef _MUX_AM33XX_H_
|
||||
#define _MUX_AM33XX_H_
|
||||
|
||||
#include <common.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
#define MUX_CFG(value, offset) \
|
||||
__raw_writel(value, (CTRL_BASE + offset));
|
||||
|
||||
/* PAD Control Fields */
|
||||
#define SLEWCTRL (0x1 << 6)
|
||||
#define RXACTIVE (0x1 << 5)
|
||||
#define PULLDOWN_EN (0x0 << 4) /* Pull Down Selection */
|
||||
#define PULLUP_EN (0x1 << 4) /* Pull Up Selection */
|
||||
#define PULLUDEN (0x0 << 3) /* Pull up enabled */
|
||||
#define PULLUDDIS (0x1 << 3) /* Pull up disabled */
|
||||
#define MODE(val) val /* used for Readability */
|
||||
|
||||
/*
|
||||
* PAD CONTROL OFFSETS
|
||||
* Field names corresponds to the pad signal name
|
||||
*/
|
||||
struct pad_signals {
|
||||
int gpmc_ad0;
|
||||
int gpmc_ad1;
|
||||
int gpmc_ad2;
|
||||
int gpmc_ad3;
|
||||
int gpmc_ad4;
|
||||
int gpmc_ad5;
|
||||
int gpmc_ad6;
|
||||
int gpmc_ad7;
|
||||
int gpmc_ad8;
|
||||
int gpmc_ad9;
|
||||
int gpmc_ad10;
|
||||
int gpmc_ad11;
|
||||
int gpmc_ad12;
|
||||
int gpmc_ad13;
|
||||
int gpmc_ad14;
|
||||
int gpmc_ad15;
|
||||
int gpmc_a0;
|
||||
int gpmc_a1;
|
||||
int gpmc_a2;
|
||||
int gpmc_a3;
|
||||
int gpmc_a4;
|
||||
int gpmc_a5;
|
||||
int gpmc_a6;
|
||||
int gpmc_a7;
|
||||
int gpmc_a8;
|
||||
int gpmc_a9;
|
||||
int gpmc_a10;
|
||||
int gpmc_a11;
|
||||
int gpmc_wait0;
|
||||
int gpmc_wpn;
|
||||
int gpmc_be1n;
|
||||
int gpmc_csn0;
|
||||
int gpmc_csn1;
|
||||
int gpmc_csn2;
|
||||
int gpmc_csn3;
|
||||
int gpmc_clk;
|
||||
int gpmc_advn_ale;
|
||||
int gpmc_oen_ren;
|
||||
int gpmc_wen;
|
||||
int gpmc_be0n_cle;
|
||||
int lcd_data0;
|
||||
int lcd_data1;
|
||||
int lcd_data2;
|
||||
int lcd_data3;
|
||||
int lcd_data4;
|
||||
int lcd_data5;
|
||||
int lcd_data6;
|
||||
int lcd_data7;
|
||||
int lcd_data8;
|
||||
int lcd_data9;
|
||||
int lcd_data10;
|
||||
int lcd_data11;
|
||||
int lcd_data12;
|
||||
int lcd_data13;
|
||||
int lcd_data14;
|
||||
int lcd_data15;
|
||||
int lcd_vsync;
|
||||
int lcd_hsync;
|
||||
int lcd_pclk;
|
||||
int lcd_ac_bias_en;
|
||||
int mmc0_dat3;
|
||||
int mmc0_dat2;
|
||||
int mmc0_dat1;
|
||||
int mmc0_dat0;
|
||||
int mmc0_clk;
|
||||
int mmc0_cmd;
|
||||
int mii1_col;
|
||||
int mii1_crs;
|
||||
int mii1_rxerr;
|
||||
int mii1_txen;
|
||||
int mii1_rxdv;
|
||||
int mii1_txd3;
|
||||
int mii1_txd2;
|
||||
int mii1_txd1;
|
||||
int mii1_txd0;
|
||||
int mii1_txclk;
|
||||
int mii1_rxclk;
|
||||
int mii1_rxd3;
|
||||
int mii1_rxd2;
|
||||
int mii1_rxd1;
|
||||
int mii1_rxd0;
|
||||
int rmii1_refclk;
|
||||
int mdio_data;
|
||||
int mdio_clk;
|
||||
int spi0_sclk;
|
||||
int spi0_d0;
|
||||
int spi0_d1;
|
||||
int spi0_cs0;
|
||||
int spi0_cs1;
|
||||
int ecap0_in_pwm0_out;
|
||||
int uart0_ctsn;
|
||||
int uart0_rtsn;
|
||||
int uart0_rxd;
|
||||
int uart0_txd;
|
||||
int uart1_ctsn;
|
||||
int uart1_rtsn;
|
||||
int uart1_rxd;
|
||||
int uart1_txd;
|
||||
int i2c0_sda;
|
||||
int i2c0_scl;
|
||||
int mcasp0_aclkx;
|
||||
int mcasp0_fsx;
|
||||
int mcasp0_axr0;
|
||||
int mcasp0_ahclkr;
|
||||
int mcasp0_aclkr;
|
||||
int mcasp0_fsr;
|
||||
int mcasp0_axr1;
|
||||
int mcasp0_ahclkx;
|
||||
int xdma_event_intr0;
|
||||
int xdma_event_intr1;
|
||||
int nresetin_out;
|
||||
int porz;
|
||||
int nnmi;
|
||||
int osc0_in;
|
||||
int osc0_out;
|
||||
int rsvd1;
|
||||
int tms;
|
||||
int tdi;
|
||||
int tdo;
|
||||
int tck;
|
||||
int ntrst;
|
||||
int emu0;
|
||||
int emu1;
|
||||
int osc1_in;
|
||||
int osc1_out;
|
||||
int pmic_power_en;
|
||||
int rtc_porz;
|
||||
int rsvd2;
|
||||
int ext_wakeup;
|
||||
int enz_kaldo_1p8v;
|
||||
int usb0_dm;
|
||||
int usb0_dp;
|
||||
int usb0_ce;
|
||||
int usb0_id;
|
||||
int usb0_vbus;
|
||||
int usb0_drvvbus;
|
||||
int usb1_dm;
|
||||
int usb1_dp;
|
||||
int usb1_ce;
|
||||
int usb1_id;
|
||||
int usb1_vbus;
|
||||
int usb1_drvvbus;
|
||||
int ddr_resetn;
|
||||
int ddr_csn0;
|
||||
int ddr_cke;
|
||||
int ddr_ck;
|
||||
int ddr_nck;
|
||||
int ddr_casn;
|
||||
int ddr_rasn;
|
||||
int ddr_wen;
|
||||
int ddr_ba0;
|
||||
int ddr_ba1;
|
||||
int ddr_ba2;
|
||||
int ddr_a0;
|
||||
int ddr_a1;
|
||||
int ddr_a2;
|
||||
int ddr_a3;
|
||||
int ddr_a4;
|
||||
int ddr_a5;
|
||||
int ddr_a6;
|
||||
int ddr_a7;
|
||||
int ddr_a8;
|
||||
int ddr_a9;
|
||||
int ddr_a10;
|
||||
int ddr_a11;
|
||||
int ddr_a12;
|
||||
int ddr_a13;
|
||||
int ddr_a14;
|
||||
int ddr_a15;
|
||||
int ddr_odt;
|
||||
int ddr_d0;
|
||||
int ddr_d1;
|
||||
int ddr_d2;
|
||||
int ddr_d3;
|
||||
int ddr_d4;
|
||||
int ddr_d5;
|
||||
int ddr_d6;
|
||||
int ddr_d7;
|
||||
int ddr_d8;
|
||||
int ddr_d9;
|
||||
int ddr_d10;
|
||||
int ddr_d11;
|
||||
int ddr_d12;
|
||||
int ddr_d13;
|
||||
int ddr_d14;
|
||||
int ddr_d15;
|
||||
int ddr_dqm0;
|
||||
int ddr_dqm1;
|
||||
int ddr_dqs0;
|
||||
int ddr_dqsn0;
|
||||
int ddr_dqs1;
|
||||
int ddr_dqsn1;
|
||||
int ddr_vref;
|
||||
int ddr_vtp;
|
||||
int ddr_strben0;
|
||||
int ddr_strben1;
|
||||
int ain7;
|
||||
int ain6;
|
||||
int ain5;
|
||||
int ain4;
|
||||
int ain3;
|
||||
int ain2;
|
||||
int ain1;
|
||||
int ain0;
|
||||
int vrefp;
|
||||
int vrefn;
|
||||
};
|
||||
|
||||
#endif /* endif _MUX_AM33XX_H_ */
|
311
arch/arm/include/asm/arch-am33xx/mux_ti814x.h
Normal file
311
arch/arm/include/asm/arch-am33xx/mux_ti814x.h
Normal file
@ -0,0 +1,311 @@
|
||||
/*
|
||||
* mux_ti814x.h
|
||||
*
|
||||
* Copyright (C) 2013 Texas Instruments Incorporated - http://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 version 2.
|
||||
*
|
||||
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
|
||||
* kind, whether express or implied; without even the implied warranty
|
||||
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#ifndef _MUX_TI814X_H_
|
||||
#define _MUX_TI814X_H_
|
||||
|
||||
/* PAD Control Fields */
|
||||
#define PINCNTL_RSV_MSK (0x3 << 18) /* Reserved bitmask */
|
||||
#define PULLUP_EN (0x1 << 17) /* Pull UP Selection */
|
||||
#define PULLUDEN (0x0 << 16) /* Pull up enabled */
|
||||
#define PULLUDDIS (0x1 << 16) /* Pull up disabled */
|
||||
#define MODE(val) val /* used for Readability */
|
||||
|
||||
#define MUX_CFG(value, offset) \
|
||||
{ \
|
||||
int tmp; \
|
||||
tmp = __raw_readl(CTRL_BASE + offset); \
|
||||
tmp &= PINCNTL_RSV_MSK; \
|
||||
__raw_writel(tmp | value, (CTRL_BASE + offset));\
|
||||
}
|
||||
|
||||
/*
|
||||
* PAD CONTROL OFFSETS
|
||||
* Field names corresponds to the pad signal name
|
||||
*/
|
||||
struct pad_signals {
|
||||
int pincntl1;
|
||||
int pincntl2;
|
||||
int pincntl3;
|
||||
int pincntl4;
|
||||
int pincntl5;
|
||||
int pincntl6;
|
||||
int pincntl7;
|
||||
int pincntl8;
|
||||
int pincntl9;
|
||||
int pincntl10;
|
||||
int pincntl11;
|
||||
int pincntl12;
|
||||
int pincntl13;
|
||||
int pincntl14;
|
||||
int pincntl15;
|
||||
int pincntl16;
|
||||
int pincntl17;
|
||||
int pincntl18;
|
||||
int pincntl19;
|
||||
int pincntl20;
|
||||
int pincntl21;
|
||||
int pincntl22;
|
||||
int pincntl23;
|
||||
int pincntl24;
|
||||
int pincntl25;
|
||||
int pincntl26;
|
||||
int pincntl27;
|
||||
int pincntl28;
|
||||
int pincntl29;
|
||||
int pincntl30;
|
||||
int pincntl31;
|
||||
int pincntl32;
|
||||
int pincntl33;
|
||||
int pincntl34;
|
||||
int pincntl35;
|
||||
int pincntl36;
|
||||
int pincntl37;
|
||||
int pincntl38;
|
||||
int pincntl39;
|
||||
int pincntl40;
|
||||
int pincntl41;
|
||||
int pincntl42;
|
||||
int pincntl43;
|
||||
int pincntl44;
|
||||
int pincntl45;
|
||||
int pincntl46;
|
||||
int pincntl47;
|
||||
int pincntl48;
|
||||
int pincntl49;
|
||||
int pincntl50;
|
||||
int pincntl51;
|
||||
int pincntl52;
|
||||
int pincntl53;
|
||||
int pincntl54;
|
||||
int pincntl55;
|
||||
int pincntl56;
|
||||
int pincntl57;
|
||||
int pincntl58;
|
||||
int pincntl59;
|
||||
int pincntl60;
|
||||
int pincntl61;
|
||||
int pincntl62;
|
||||
int pincntl63;
|
||||
int pincntl64;
|
||||
int pincntl65;
|
||||
int pincntl66;
|
||||
int pincntl67;
|
||||
int pincntl68;
|
||||
int pincntl69;
|
||||
int pincntl70;
|
||||
int pincntl71;
|
||||
int pincntl72;
|
||||
int pincntl73;
|
||||
int pincntl74;
|
||||
int pincntl75;
|
||||
int pincntl76;
|
||||
int pincntl77;
|
||||
int pincntl78;
|
||||
int pincntl79;
|
||||
int pincntl80;
|
||||
int pincntl81;
|
||||
int pincntl82;
|
||||
int pincntl83;
|
||||
int pincntl84;
|
||||
int pincntl85;
|
||||
int pincntl86;
|
||||
int pincntl87;
|
||||
int pincntl88;
|
||||
int pincntl89;
|
||||
int pincntl90;
|
||||
int pincntl91;
|
||||
int pincntl92;
|
||||
int pincntl93;
|
||||
int pincntl94;
|
||||
int pincntl95;
|
||||
int pincntl96;
|
||||
int pincntl97;
|
||||
int pincntl98;
|
||||
int pincntl99;
|
||||
int pincntl100;
|
||||
int pincntl101;
|
||||
int pincntl102;
|
||||
int pincntl103;
|
||||
int pincntl104;
|
||||
int pincntl105;
|
||||
int pincntl106;
|
||||
int pincntl107;
|
||||
int pincntl108;
|
||||
int pincntl109;
|
||||
int pincntl110;
|
||||
int pincntl111;
|
||||
int pincntl112;
|
||||
int pincntl113;
|
||||
int pincntl114;
|
||||
int pincntl115;
|
||||
int pincntl116;
|
||||
int pincntl117;
|
||||
int pincntl118;
|
||||
int pincntl119;
|
||||
int pincntl120;
|
||||
int pincntl121;
|
||||
int pincntl122;
|
||||
int pincntl123;
|
||||
int pincntl124;
|
||||
int pincntl125;
|
||||
int pincntl126;
|
||||
int pincntl127;
|
||||
int pincntl128;
|
||||
int pincntl129;
|
||||
int pincntl130;
|
||||
int pincntl131;
|
||||
int pincntl132;
|
||||
int pincntl133;
|
||||
int pincntl134;
|
||||
int pincntl135;
|
||||
int pincntl136;
|
||||
int pincntl137;
|
||||
int pincntl138;
|
||||
int pincntl139;
|
||||
int pincntl140;
|
||||
int pincntl141;
|
||||
int pincntl142;
|
||||
int pincntl143;
|
||||
int pincntl144;
|
||||
int pincntl145;
|
||||
int pincntl146;
|
||||
int pincntl147;
|
||||
int pincntl148;
|
||||
int pincntl149;
|
||||
int pincntl150;
|
||||
int pincntl151;
|
||||
int pincntl152;
|
||||
int pincntl153;
|
||||
int pincntl154;
|
||||
int pincntl155;
|
||||
int pincntl156;
|
||||
int pincntl157;
|
||||
int pincntl158;
|
||||
int pincntl159;
|
||||
int pincntl160;
|
||||
int pincntl161;
|
||||
int pincntl162;
|
||||
int pincntl163;
|
||||
int pincntl164;
|
||||
int pincntl165;
|
||||
int pincntl166;
|
||||
int pincntl167;
|
||||
int pincntl168;
|
||||
int pincntl169;
|
||||
int pincntl170;
|
||||
int pincntl171;
|
||||
int pincntl172;
|
||||
int pincntl173;
|
||||
int pincntl174;
|
||||
int pincntl175;
|
||||
int pincntl176;
|
||||
int pincntl177;
|
||||
int pincntl178;
|
||||
int pincntl179;
|
||||
int pincntl180;
|
||||
int pincntl181;
|
||||
int pincntl182;
|
||||
int pincntl183;
|
||||
int pincntl184;
|
||||
int pincntl185;
|
||||
int pincntl186;
|
||||
int pincntl187;
|
||||
int pincntl188;
|
||||
int pincntl189;
|
||||
int pincntl190;
|
||||
int pincntl191;
|
||||
int pincntl192;
|
||||
int pincntl193;
|
||||
int pincntl194;
|
||||
int pincntl195;
|
||||
int pincntl196;
|
||||
int pincntl197;
|
||||
int pincntl198;
|
||||
int pincntl199;
|
||||
int pincntl200;
|
||||
int pincntl201;
|
||||
int pincntl202;
|
||||
int pincntl203;
|
||||
int pincntl204;
|
||||
int pincntl205;
|
||||
int pincntl206;
|
||||
int pincntl207;
|
||||
int pincntl208;
|
||||
int pincntl209;
|
||||
int pincntl210;
|
||||
int pincntl211;
|
||||
int pincntl212;
|
||||
int pincntl213;
|
||||
int pincntl214;
|
||||
int pincntl215;
|
||||
int pincntl216;
|
||||
int pincntl217;
|
||||
int pincntl218;
|
||||
int pincntl219;
|
||||
int pincntl220;
|
||||
int pincntl221;
|
||||
int pincntl222;
|
||||
int pincntl223;
|
||||
int pincntl224;
|
||||
int pincntl225;
|
||||
int pincntl226;
|
||||
int pincntl227;
|
||||
int pincntl228;
|
||||
int pincntl229;
|
||||
int pincntl230;
|
||||
int pincntl231;
|
||||
int pincntl232;
|
||||
int pincntl233;
|
||||
int pincntl234;
|
||||
int pincntl235;
|
||||
int pincntl236;
|
||||
int pincntl237;
|
||||
int pincntl238;
|
||||
int pincntl239;
|
||||
int pincntl240;
|
||||
int pincntl241;
|
||||
int pincntl242;
|
||||
int pincntl243;
|
||||
int pincntl244;
|
||||
int pincntl245;
|
||||
int pincntl246;
|
||||
int pincntl247;
|
||||
int pincntl248;
|
||||
int pincntl249;
|
||||
int pincntl250;
|
||||
int pincntl251;
|
||||
int pincntl252;
|
||||
int pincntl253;
|
||||
int pincntl254;
|
||||
int pincntl255;
|
||||
int pincntl256;
|
||||
int pincntl257;
|
||||
int pincntl258;
|
||||
int pincntl259;
|
||||
int pincntl260;
|
||||
int pincntl261;
|
||||
int pincntl262;
|
||||
int pincntl263;
|
||||
int pincntl264;
|
||||
int pincntl265;
|
||||
int pincntl266;
|
||||
int pincntl267;
|
||||
int pincntl268;
|
||||
int pincntl269;
|
||||
int pincntl270;
|
||||
};
|
||||
|
||||
#endif /* endif _MUX_TI814X_H_ */
|
@ -28,8 +28,13 @@
|
||||
* 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
|
||||
*/
|
||||
#ifdef CONFIG_AM33XX
|
||||
#define NON_SECURE_SRAM_START 0x40304000
|
||||
#define NON_SECURE_SRAM_END 0x4030E000
|
||||
#elif defined(CONFIG_TI814X)
|
||||
#define NON_SECURE_SRAM_START 0x40300000
|
||||
#define NON_SECURE_SRAM_END 0x40320000
|
||||
#endif
|
||||
|
||||
/* ROM code defines */
|
||||
/* Boot device */
|
||||
|
@ -25,8 +25,13 @@
|
||||
|
||||
#define BOOT_DEVICE_XIP 2
|
||||
#define BOOT_DEVICE_NAND 5
|
||||
#ifdef CONFIG_AM33XX
|
||||
#define BOOT_DEVICE_MMC1 8
|
||||
#define BOOT_DEVICE_MMC2 9 /* eMMC or daughter card */
|
||||
#elif defined(CONFIG_TI814X)
|
||||
#define BOOT_DEVICE_MMC1 9
|
||||
#define BOOT_DEVICE_MMC2 8 /* ROM only supports 2nd instance */
|
||||
#endif
|
||||
#define BOOT_DEVICE_SPI 11
|
||||
#define BOOT_DEVICE_UART 65
|
||||
#define BOOT_DEVICE_USBETH 68
|
||||
|
@ -34,6 +34,8 @@ void setup_clocks_for_console(void);
|
||||
void ddr_pll_config(unsigned int ddrpll_M);
|
||||
|
||||
void sdelay(unsigned long);
|
||||
|
||||
struct gpmc_cs;
|
||||
void gpmc_init(void);
|
||||
void enable_gpmc_cs_config(const u32 *gpmc_config, struct gpmc_cs *cs, u32 base,
|
||||
u32 size);
|
||||
|
@ -34,7 +34,9 @@
|
||||
#include <i2c.h>
|
||||
#include <usb.h>
|
||||
#include <mmc.h>
|
||||
#include <nand.h>
|
||||
#include <twl4030.h>
|
||||
#include <bmp_layout.h>
|
||||
#include <linux/compiler.h>
|
||||
|
||||
#include <asm/io.h>
|
||||
@ -76,6 +78,65 @@ static u32 gpmc_nand_config[GPMC_MAX_REG] = {
|
||||
0,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_LCD
|
||||
#ifdef CONFIG_CMD_NAND
|
||||
static int splash_load_from_nand(u32 bmp_load_addr)
|
||||
{
|
||||
struct bmp_header *bmp_hdr;
|
||||
int res, splash_screen_nand_offset = 0x100000;
|
||||
size_t bmp_size, bmp_header_size = sizeof(struct bmp_header);
|
||||
|
||||
if (bmp_load_addr + bmp_header_size >= gd->start_addr_sp)
|
||||
goto splash_address_too_high;
|
||||
|
||||
res = nand_read_skip_bad(&nand_info[nand_curr_device],
|
||||
splash_screen_nand_offset, &bmp_header_size,
|
||||
(u_char *)bmp_load_addr);
|
||||
if (res < 0)
|
||||
return res;
|
||||
|
||||
bmp_hdr = (struct bmp_header *)bmp_load_addr;
|
||||
bmp_size = le32_to_cpu(bmp_hdr->file_size);
|
||||
|
||||
if (bmp_load_addr + bmp_size >= gd->start_addr_sp)
|
||||
goto splash_address_too_high;
|
||||
|
||||
return nand_read_skip_bad(&nand_info[nand_curr_device],
|
||||
splash_screen_nand_offset, &bmp_size,
|
||||
(u_char *)bmp_load_addr);
|
||||
|
||||
splash_address_too_high:
|
||||
printf("Error: splashimage address too high. Data overwrites U-Boot "
|
||||
"and/or placed beyond DRAM boundaries.\n");
|
||||
|
||||
return -1;
|
||||
}
|
||||
#else
|
||||
static inline int splash_load_from_nand(void)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
#endif /* CONFIG_CMD_NAND */
|
||||
|
||||
int board_splash_screen_prepare(void)
|
||||
{
|
||||
char *env_splashimage_value;
|
||||
u32 bmp_load_addr;
|
||||
|
||||
env_splashimage_value = getenv("splashimage");
|
||||
if (env_splashimage_value == NULL)
|
||||
return -1;
|
||||
|
||||
bmp_load_addr = simple_strtoul(env_splashimage_value, 0, 16);
|
||||
if (bmp_load_addr == 0) {
|
||||
printf("Error: bad splashimage address specified\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return splash_load_from_nand(bmp_load_addr);
|
||||
}
|
||||
#endif /* CONFIG_LCD */
|
||||
|
||||
/*
|
||||
* Routine: board_init
|
||||
* Description: hardware init.
|
||||
|
@ -61,7 +61,7 @@ static struct ctrl_dev *cdev = (struct ctrl_dev *)CTRL_DEVICE_BASE;
|
||||
|
||||
static void rtc32k_enable(void)
|
||||
{
|
||||
struct rtc_regs *rtc = (struct rtc_regs *)AM335X_RTC_BASE;
|
||||
struct rtc_regs *rtc = (struct rtc_regs *)RTC_BASE;
|
||||
|
||||
/*
|
||||
* Unlock the RTC's registers. For more details please see the
|
||||
@ -159,7 +159,7 @@ void s_init(void)
|
||||
enable_board_pin_mux();
|
||||
|
||||
config_ddr(DDR_CLK_MHZ, MT41J256M8HX15E_IOCTRL_VALUE, &ddr3_data,
|
||||
&ddr3_cmd_ctrl_data, &ddr3_emif_reg_data);
|
||||
&ddr3_cmd_ctrl_data, &ddr3_emif_reg_data, 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -199,8 +199,8 @@ static struct cpsw_slave_data cpsw_slaves[] = {
|
||||
};
|
||||
|
||||
static struct cpsw_platform_data cpsw_data = {
|
||||
.mdio_base = AM335X_CPSW_MDIO_BASE,
|
||||
.cpsw_base = AM335X_CPSW_BASE,
|
||||
.mdio_base = CPSW_MDIO_BASE,
|
||||
.cpsw_base = CPSW_BASE,
|
||||
.mdio_div = 0xff,
|
||||
.channels = 8,
|
||||
.cpdma_reg_ofs = 0x800,
|
||||
|
@ -134,7 +134,7 @@ static int read_eeprom(void)
|
||||
|
||||
static void rtc32k_enable(void)
|
||||
{
|
||||
struct rtc_regs *rtc = (struct rtc_regs *)AM335X_RTC_BASE;
|
||||
struct rtc_regs *rtc = (struct rtc_regs *)RTC_BASE;
|
||||
|
||||
/*
|
||||
* Unlock the RTC's registers. For more details please see the
|
||||
@ -208,6 +208,14 @@ static const struct ddr_data ddr3_data = {
|
||||
.datadldiff0 = PHY_DLL_LOCK_DIFF,
|
||||
};
|
||||
|
||||
static const struct ddr_data ddr3_beagleblack_data = {
|
||||
.datardsratio0 = MT41K256M16HA125E_RD_DQS,
|
||||
.datawdsratio0 = MT41K256M16HA125E_WR_DQS,
|
||||
.datafwsratio0 = MT41K256M16HA125E_PHY_FIFO_WE,
|
||||
.datawrsratio0 = MT41K256M16HA125E_PHY_WR_DATA,
|
||||
.datadldiff0 = PHY_DLL_LOCK_DIFF,
|
||||
};
|
||||
|
||||
static const struct ddr_data ddr3_evm_data = {
|
||||
.datardsratio0 = MT41J512M8RH125_RD_DQS,
|
||||
.datawdsratio0 = MT41J512M8RH125_WR_DQS,
|
||||
@ -230,6 +238,20 @@ static const struct cmd_control ddr3_cmd_ctrl_data = {
|
||||
.cmd2iclkout = MT41J128MJT125_INVERT_CLKOUT,
|
||||
};
|
||||
|
||||
static const struct cmd_control ddr3_beagleblack_cmd_ctrl_data = {
|
||||
.cmd0csratio = MT41K256M16HA125E_RATIO,
|
||||
.cmd0dldiff = MT41K256M16HA125E_DLL_LOCK_DIFF,
|
||||
.cmd0iclkout = MT41K256M16HA125E_INVERT_CLKOUT,
|
||||
|
||||
.cmd1csratio = MT41K256M16HA125E_RATIO,
|
||||
.cmd1dldiff = MT41K256M16HA125E_DLL_LOCK_DIFF,
|
||||
.cmd1iclkout = MT41K256M16HA125E_INVERT_CLKOUT,
|
||||
|
||||
.cmd2csratio = MT41K256M16HA125E_RATIO,
|
||||
.cmd2dldiff = MT41K256M16HA125E_DLL_LOCK_DIFF,
|
||||
.cmd2iclkout = MT41K256M16HA125E_INVERT_CLKOUT,
|
||||
};
|
||||
|
||||
static const struct cmd_control ddr3_evm_cmd_ctrl_data = {
|
||||
.cmd0csratio = MT41J512M8RH125_RATIO,
|
||||
.cmd0dldiff = MT41J512M8RH125_DLL_LOCK_DIFF,
|
||||
@ -251,7 +273,18 @@ static struct emif_regs ddr3_emif_reg_data = {
|
||||
.sdram_tim2 = MT41J128MJT125_EMIF_TIM2,
|
||||
.sdram_tim3 = MT41J128MJT125_EMIF_TIM3,
|
||||
.zq_config = MT41J128MJT125_ZQ_CFG,
|
||||
.emif_ddr_phy_ctlr_1 = MT41J128MJT125_EMIF_READ_LATENCY,
|
||||
.emif_ddr_phy_ctlr_1 = MT41J128MJT125_EMIF_READ_LATENCY |
|
||||
PHY_EN_DYN_PWRDN,
|
||||
};
|
||||
|
||||
static struct emif_regs ddr3_beagleblack_emif_reg_data = {
|
||||
.sdram_config = MT41K256M16HA125E_EMIF_SDCFG,
|
||||
.ref_ctrl = MT41K256M16HA125E_EMIF_SDREF,
|
||||
.sdram_tim1 = MT41K256M16HA125E_EMIF_TIM1,
|
||||
.sdram_tim2 = MT41K256M16HA125E_EMIF_TIM2,
|
||||
.sdram_tim3 = MT41K256M16HA125E_EMIF_TIM3,
|
||||
.zq_config = MT41K256M16HA125E_ZQ_CFG,
|
||||
.emif_ddr_phy_ctlr_1 = MT41K256M16HA125E_EMIF_READ_LATENCY,
|
||||
};
|
||||
|
||||
static struct emif_regs ddr3_evm_emif_reg_data = {
|
||||
@ -261,7 +294,8 @@ static struct emif_regs ddr3_evm_emif_reg_data = {
|
||||
.sdram_tim2 = MT41J512M8RH125_EMIF_TIM2,
|
||||
.sdram_tim3 = MT41J512M8RH125_EMIF_TIM3,
|
||||
.zq_config = MT41J512M8RH125_ZQ_CFG,
|
||||
.emif_ddr_phy_ctlr_1 = MT41J512M8RH125_EMIF_READ_LATENCY,
|
||||
.emif_ddr_phy_ctlr_1 = MT41J512M8RH125_EMIF_READ_LATENCY |
|
||||
PHY_EN_DYN_PWRDN,
|
||||
};
|
||||
#endif
|
||||
|
||||
@ -341,15 +375,20 @@ void s_init(void)
|
||||
gpio_direction_output(GPIO_DDR_VTT_EN, 1);
|
||||
}
|
||||
|
||||
if (board_is_evm_sk() || board_is_bone_lt())
|
||||
if (board_is_evm_sk())
|
||||
config_ddr(303, MT41J128MJT125_IOCTRL_VALUE, &ddr3_data,
|
||||
&ddr3_cmd_ctrl_data, &ddr3_emif_reg_data);
|
||||
&ddr3_cmd_ctrl_data, &ddr3_emif_reg_data, 0);
|
||||
else if (board_is_bone_lt())
|
||||
config_ddr(303, MT41K256M16HA125E_IOCTRL_VALUE,
|
||||
&ddr3_beagleblack_data,
|
||||
&ddr3_beagleblack_cmd_ctrl_data,
|
||||
&ddr3_beagleblack_emif_reg_data, 0);
|
||||
else if (board_is_evm_15_or_later())
|
||||
config_ddr(303, MT41J512M8RH125_IOCTRL_VALUE, &ddr3_evm_data,
|
||||
&ddr3_evm_cmd_ctrl_data, &ddr3_evm_emif_reg_data);
|
||||
&ddr3_evm_cmd_ctrl_data, &ddr3_evm_emif_reg_data, 0);
|
||||
else
|
||||
config_ddr(266, MT47H128M16RT25E_IOCTRL_VALUE, &ddr2_data,
|
||||
&ddr2_cmd_ctrl_data, &ddr2_emif_reg_data);
|
||||
&ddr2_cmd_ctrl_data, &ddr2_emif_reg_data, 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -412,8 +451,8 @@ static struct cpsw_slave_data cpsw_slaves[] = {
|
||||
};
|
||||
|
||||
static struct cpsw_platform_data cpsw_data = {
|
||||
.mdio_base = AM335X_CPSW_MDIO_BASE,
|
||||
.cpsw_base = AM335X_CPSW_BASE,
|
||||
.mdio_base = CPSW_MDIO_BASE,
|
||||
.cpsw_base = CPSW_BASE,
|
||||
.mdio_div = 0xff,
|
||||
.channels = 8,
|
||||
.cpdma_reg_ofs = 0x800,
|
||||
|
46
board/ti/ti814x/Makefile
Normal file
46
board/ti/ti814x/Makefile
Normal file
@ -0,0 +1,46 @@
|
||||
#
|
||||
# Makefile
|
||||
#
|
||||
# Copyright (C) 2013 Texas Instruments Incorporated - http://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 "as is" WITHOUT ANY WARRANTY of any
|
||||
# kind, whether express or implied; without even the implied warranty
|
||||
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/config.mk
|
||||
|
||||
LIB = $(obj)lib$(BOARD).o
|
||||
|
||||
ifdef CONFIG_SPL_BUILD
|
||||
COBJS := mux.o
|
||||
endif
|
||||
|
||||
COBJS += evm.o
|
||||
SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
|
||||
OBJS := $(addprefix $(obj),$(COBJS))
|
||||
SOBJS := $(addprefix $(obj),$(SOBJS))
|
||||
|
||||
$(LIB): $(obj).depend $(OBJS) $(SOBJS)
|
||||
$(call cmd_link_o_target, $(OBJS) $(SOBJS))
|
||||
|
||||
clean:
|
||||
rm -f $(SOBJS) $(OBJS)
|
||||
|
||||
distclean: clean
|
||||
rm -f $(LIB) core *.bak $(obj).depend
|
||||
|
||||
#########################################################################
|
||||
|
||||
# defines $(obj).depend target
|
||||
include $(SRCTREE)/rules.mk
|
||||
|
||||
sinclude $(obj).depend
|
||||
|
||||
#########################################################################
|
198
board/ti/ti814x/evm.c
Normal file
198
board/ti/ti814x/evm.c
Normal file
@ -0,0 +1,198 @@
|
||||
/*
|
||||
* evm.c
|
||||
*
|
||||
* Board functions for TI814x EVM
|
||||
*
|
||||
* Copyright (C) 2011, Texas Instruments, Incorporated - http://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.
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <errno.h>
|
||||
#include <spl.h>
|
||||
#include <asm/arch/cpu.h>
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/arch/omap.h>
|
||||
#include <asm/arch/ddr_defs.h>
|
||||
#include <asm/arch/clock.h>
|
||||
#include <asm/arch/gpio.h>
|
||||
#include <asm/arch/mmc_host_def.h>
|
||||
#include <asm/arch/sys_proto.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/emif.h>
|
||||
#include <asm/gpio.h>
|
||||
#include "evm.h"
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
#ifdef CONFIG_SPL_BUILD
|
||||
static struct wd_timer *wdtimer = (struct wd_timer *)WDT_BASE;
|
||||
static struct uart_sys *uart_base = (struct uart_sys *)DEFAULT_UART_BASE;
|
||||
#endif
|
||||
|
||||
/* UART Defines */
|
||||
#ifdef CONFIG_SPL_BUILD
|
||||
#define UART_RESET (0x1 << 1)
|
||||
#define UART_CLK_RUNNING_MASK 0x1
|
||||
#define UART_SMART_IDLE_EN (0x1 << 0x3)
|
||||
|
||||
static void rtc32k_enable(void)
|
||||
{
|
||||
struct rtc_regs *rtc = (struct rtc_regs *)RTC_BASE;
|
||||
|
||||
/*
|
||||
* Unlock the RTC's registers. For more details please see the
|
||||
* RTC_SS section of the TRM. In order to unlock we need to
|
||||
* write these specific values (keys) in this order.
|
||||
*/
|
||||
writel(0x83e70b13, &rtc->kick0r);
|
||||
writel(0x95a4f1e0, &rtc->kick1r);
|
||||
|
||||
/* Enable the RTC 32K OSC by setting bits 3 and 6. */
|
||||
writel((1 << 3) | (1 << 6), &rtc->osc);
|
||||
}
|
||||
|
||||
static void uart_enable(void)
|
||||
{
|
||||
u32 regVal;
|
||||
|
||||
/* UART softreset */
|
||||
regVal = readl(&uart_base->uartsyscfg);
|
||||
regVal |= UART_RESET;
|
||||
writel(regVal, &uart_base->uartsyscfg);
|
||||
while ((readl(&uart_base->uartsyssts) &
|
||||
UART_CLK_RUNNING_MASK) != UART_CLK_RUNNING_MASK)
|
||||
;
|
||||
|
||||
/* Disable smart idle */
|
||||
regVal = readl(&uart_base->uartsyscfg);
|
||||
regVal |= UART_SMART_IDLE_EN;
|
||||
writel(regVal, &uart_base->uartsyscfg);
|
||||
}
|
||||
|
||||
static void wdt_disable(void)
|
||||
{
|
||||
writel(0xAAAA, &wdtimer->wdtwspr);
|
||||
while (readl(&wdtimer->wdtwwps) != 0x0)
|
||||
;
|
||||
writel(0x5555, &wdtimer->wdtwspr);
|
||||
while (readl(&wdtimer->wdtwwps) != 0x0)
|
||||
;
|
||||
}
|
||||
|
||||
static const struct cmd_control evm_ddr2_cctrl_data = {
|
||||
.cmd0csratio = 0x80,
|
||||
.cmd0dldiff = 0x04,
|
||||
.cmd0iclkout = 0x00,
|
||||
|
||||
.cmd1csratio = 0x80,
|
||||
.cmd1dldiff = 0x04,
|
||||
.cmd1iclkout = 0x00,
|
||||
|
||||
.cmd2csratio = 0x80,
|
||||
.cmd2dldiff = 0x04,
|
||||
.cmd2iclkout = 0x00,
|
||||
};
|
||||
|
||||
static const struct emif_regs evm_ddr2_emif0_regs = {
|
||||
.sdram_config = 0x40801ab2,
|
||||
.ref_ctrl = 0x10000c30,
|
||||
.sdram_tim1 = 0x0aaaf552,
|
||||
.sdram_tim2 = 0x043631d2,
|
||||
.sdram_tim3 = 0x00000327,
|
||||
.emif_ddr_phy_ctlr_1 = 0x00000007
|
||||
};
|
||||
|
||||
static const struct emif_regs evm_ddr2_emif1_regs = {
|
||||
.sdram_config = 0x40801ab2,
|
||||
.ref_ctrl = 0x10000c30,
|
||||
.sdram_tim1 = 0x0aaaf552,
|
||||
.sdram_tim2 = 0x043631d2,
|
||||
.sdram_tim3 = 0x00000327,
|
||||
.emif_ddr_phy_ctlr_1 = 0x00000007
|
||||
};
|
||||
|
||||
const struct dmm_lisa_map_regs evm_lisa_map_regs = {
|
||||
.dmm_lisa_map_0 = 0x00000000,
|
||||
.dmm_lisa_map_1 = 0x00000000,
|
||||
.dmm_lisa_map_2 = 0x806c0300,
|
||||
.dmm_lisa_map_3 = 0x806c0300,
|
||||
};
|
||||
|
||||
static const struct ddr_data evm_ddr2_data = {
|
||||
.datardsratio0 = ((0x35<<10) | (0x35<<0)),
|
||||
.datawdsratio0 = ((0x20<<10) | (0x20<<0)),
|
||||
.datawiratio0 = ((0<<10) | (0<<0)),
|
||||
.datagiratio0 = ((0<<10) | (0<<0)),
|
||||
.datafwsratio0 = ((0x90<<10) | (0x90<<0)),
|
||||
.datawrsratio0 = ((0x50<<10) | (0x50<<0)),
|
||||
.datauserank0delay = 1,
|
||||
.datadldiff0 = 0x4,
|
||||
};
|
||||
#endif
|
||||
|
||||
/*
|
||||
* early system init of muxing and clocks.
|
||||
*/
|
||||
void s_init(void)
|
||||
{
|
||||
#ifdef CONFIG_SPL_BUILD
|
||||
/* WDT1 is already running when the bootloader gets control
|
||||
* Disable it to avoid "random" resets
|
||||
*/
|
||||
wdt_disable();
|
||||
|
||||
/* Setup the PLLs and the clocks for the peripherals */
|
||||
pll_init();
|
||||
|
||||
/* Enable RTC32K clock */
|
||||
rtc32k_enable();
|
||||
|
||||
/* Set UART pins */
|
||||
enable_uart0_pin_mux();
|
||||
|
||||
/* Set MMC pins */
|
||||
enable_mmc1_pin_mux();
|
||||
|
||||
/* Enable UART */
|
||||
uart_enable();
|
||||
|
||||
gd = &gdata;
|
||||
|
||||
preloader_console_init();
|
||||
|
||||
config_dmm(&evm_lisa_map_regs);
|
||||
|
||||
config_ddr(0, 0, &evm_ddr2_data, &evm_ddr2_cctrl_data,
|
||||
&evm_ddr2_emif0_regs, 0);
|
||||
config_ddr(0, 0, &evm_ddr2_data, &evm_ddr2_cctrl_data,
|
||||
&evm_ddr2_emif1_regs, 1);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* Basic board specific setup. Pinmux has been handled already.
|
||||
*/
|
||||
int board_init(void)
|
||||
{
|
||||
gd->bd->bi_boot_params = PHYS_DRAM_1 + 0x100;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_GENERIC_MMC)
|
||||
int board_mmc_init(bd_t *bis)
|
||||
{
|
||||
omap_mmc_init(1, 0, 0, -1, -1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
7
board/ti/ti814x/evm.h
Normal file
7
board/ti/ti814x/evm.h
Normal file
@ -0,0 +1,7 @@
|
||||
#ifndef _EVM_H
|
||||
#define _EVM_H
|
||||
|
||||
void enable_uart0_pin_mux(void);
|
||||
void enable_mmc1_pin_mux(void);
|
||||
|
||||
#endif /* _EVM_H */
|
51
board/ti/ti814x/mux.c
Normal file
51
board/ti/ti814x/mux.c
Normal file
@ -0,0 +1,51 @@
|
||||
/*
|
||||
* mux.c
|
||||
*
|
||||
* Copyright (C) 2011 Texas Instruments Incorporated - http://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 version 2.
|
||||
*
|
||||
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
|
||||
* kind, whether express or implied; without even the implied warranty
|
||||
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <asm/arch/sys_proto.h>
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/arch/mux.h>
|
||||
#include <asm/io.h>
|
||||
#include <i2c.h>
|
||||
#include "evm.h"
|
||||
|
||||
static struct module_pin_mux uart0_pin_mux[] = {
|
||||
{OFFSET(pincntl70), PULLUP_EN | MODE(0x01)}, /* UART0_RXD */
|
||||
{OFFSET(pincntl71), PULLUP_EN | MODE(0x01)}, /* UART0_TXD */
|
||||
{-1},
|
||||
};
|
||||
|
||||
static struct module_pin_mux mmc1_pin_mux[] = {
|
||||
{OFFSET(pincntl1), PULLUP_EN | MODE(0x01)}, /* SD1_CLK */
|
||||
{OFFSET(pincntl2), PULLUP_EN | MODE(0x01)}, /* SD1_CMD */
|
||||
{OFFSET(pincntl3), PULLUP_EN | MODE(0x01)}, /* SD1_DAT[0] */
|
||||
{OFFSET(pincntl4), PULLUP_EN | MODE(0x01)}, /* SD1_DAT[1] */
|
||||
{OFFSET(pincntl5), PULLUP_EN | MODE(0x01)}, /* SD1_DAT[2] */
|
||||
{OFFSET(pincntl6), PULLUP_EN | MODE(0x01)}, /* SD1_DAT[3] */
|
||||
{OFFSET(pincntl74), PULLUP_EN | MODE(0x40)}, /* SD1_POW */
|
||||
{OFFSET(pincntl75), MODE(0x40)}, /* SD1_SDWP */
|
||||
{OFFSET(pincntl80), PULLUP_EN | MODE(0x02)}, /* SD1_SDCD */
|
||||
{-1},
|
||||
};
|
||||
|
||||
void enable_uart0_pin_mux(void)
|
||||
{
|
||||
configure_module_pin_mux(uart0_pin_mux);
|
||||
}
|
||||
|
||||
void enable_mmc1_pin_mux(void)
|
||||
{
|
||||
configure_module_pin_mux(mmc1_pin_mux);
|
||||
}
|
@ -241,6 +241,7 @@ am335x_evm_uart3 arm armv7 am335x ti
|
||||
am335x_evm_uart4 arm armv7 am335x ti am33xx am335x_evm:SERIAL5,CONS_INDEX=5
|
||||
am335x_evm_uart5 arm armv7 am335x ti am33xx am335x_evm:SERIAL6,CONS_INDEX=6
|
||||
am335x_evm_usbspl arm armv7 am335x ti am33xx am335x_evm:SERIAL1,CONS_INDEX=1,SPL_USBETH_SUPPORT
|
||||
ti814x_evm arm armv7 ti814x ti am33xx
|
||||
pcm051 arm armv7 pcm051 phytec am33xx pcm051
|
||||
highbank arm armv7 highbank - highbank
|
||||
mx51_efikamx arm armv7 mx51_efikamx genesi mx5 mx51_efikamx:MACH_TYPE=MACH_TYPE_MX51_EFIKAMX,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_mx.cfg
|
||||
|
@ -51,8 +51,12 @@ int mmc_getwp(struct mmc *mmc)
|
||||
|
||||
wp = board_mmc_getwp(mmc);
|
||||
|
||||
if ((wp < 0) && mmc->getwp)
|
||||
wp = mmc->getwp(mmc);
|
||||
if (wp < 0) {
|
||||
if (mmc->getwp)
|
||||
wp = mmc->getwp(mmc);
|
||||
else
|
||||
wp = 0;
|
||||
}
|
||||
|
||||
return wp;
|
||||
}
|
||||
@ -692,8 +696,12 @@ int mmc_getcd(struct mmc *mmc)
|
||||
|
||||
cd = board_mmc_getcd(mmc);
|
||||
|
||||
if ((cd < 0) && mmc->getcd)
|
||||
cd = mmc->getcd(mmc);
|
||||
if (cd < 0) {
|
||||
if (mmc->getcd)
|
||||
cd = mmc->getcd(mmc);
|
||||
else
|
||||
cd = 1;
|
||||
}
|
||||
|
||||
return cd;
|
||||
}
|
||||
|
@ -593,8 +593,6 @@ int omap_mmc_init(int dev_index, uint host_caps_mask, uint f_max, int cd_gpio,
|
||||
mmc->send_cmd = mmc_send_cmd;
|
||||
mmc->set_ios = mmc_set_ios;
|
||||
mmc->init = mmc_init_setup;
|
||||
mmc->getcd = omap_mmc_getcd;
|
||||
mmc->getwp = omap_mmc_getwp;
|
||||
mmc->priv = priv_data;
|
||||
|
||||
switch (dev_index) {
|
||||
@ -616,7 +614,13 @@ int omap_mmc_init(int dev_index, uint host_caps_mask, uint f_max, int cd_gpio,
|
||||
return 1;
|
||||
}
|
||||
priv_data->cd_gpio = omap_mmc_setup_gpio_in(cd_gpio, "mmc_cd");
|
||||
if (priv_data->cd_gpio != -1)
|
||||
mmc->getcd = omap_mmc_getcd;
|
||||
|
||||
priv_data->wp_gpio = omap_mmc_setup_gpio_in(wp_gpio, "mmc_wp");
|
||||
if (priv_data->wp_gpio != -1)
|
||||
mmc->getwp = omap_mmc_getwp;
|
||||
|
||||
mmc->voltages = MMC_VDD_32_33 | MMC_VDD_33_34 | MMC_VDD_165_195;
|
||||
mmc->host_caps = (MMC_MODE_4BIT | MMC_MODE_HS_52MHz | MMC_MODE_HS |
|
||||
MMC_MODE_HC) & ~host_caps_mask;
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include <asm/io.h>
|
||||
#include <asm/errno.h>
|
||||
#include <asm/arch/mem.h>
|
||||
#include <asm/arch/cpu.h>
|
||||
#include <asm/arch/omap_gpmc.h>
|
||||
#include <linux/mtd/nand_ecc.h>
|
||||
#include <linux/compiler.h>
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include <asm/errno.h>
|
||||
#include <asm/io.h>
|
||||
#include <phy.h>
|
||||
#include <asm/arch/cpu.h>
|
||||
|
||||
#define BITMASK(bits) (BIT(bits) - 1)
|
||||
#define PHY_REG_MASK 0x1f
|
||||
|
@ -43,7 +43,7 @@ void NS16550_init(NS16550_t com_port, int baud_divisor)
|
||||
|
||||
serial_out(CONFIG_SYS_NS16550_IER, &com_port->ier);
|
||||
#if (defined(CONFIG_OMAP) && !defined(CONFIG_OMAP3_ZOOM2)) || \
|
||||
defined(CONFIG_AM33XX)
|
||||
defined(CONFIG_AM33XX) || defined(CONFIG_TI814X)
|
||||
serial_out(0x7, &com_port->mdr1); /* mode select reset TL16C750*/
|
||||
#endif
|
||||
serial_out(UART_LCR_BKSE | UART_LCRVAL, &com_port->lcr);
|
||||
@ -57,7 +57,8 @@ void NS16550_init(NS16550_t com_port, int baud_divisor)
|
||||
serial_out((baud_divisor >> 8) & 0xff, &com_port->dlm);
|
||||
serial_out(UART_LCRVAL, &com_port->lcr);
|
||||
#if (defined(CONFIG_OMAP) && !defined(CONFIG_OMAP3_ZOOM2)) || \
|
||||
defined(CONFIG_AM33XX) || defined(CONFIG_SOC_DA8XX)
|
||||
defined(CONFIG_AM33XX) || defined(CONFIG_SOC_DA8XX) || \
|
||||
defined(CONFIG_TI814X)
|
||||
|
||||
#if defined(CONFIG_APTIX)
|
||||
/* /13 mode so Aptix 6MHz can hit 115200 */
|
||||
|
@ -18,8 +18,7 @@
|
||||
|
||||
#define CONFIG_AM33XX
|
||||
|
||||
#include <asm/arch/cpu.h>
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/arch/omap.h>
|
||||
|
||||
#define CONFIG_DMA_COHERENT
|
||||
#define CONFIG_DMA_COHERENT_SIZE (1 << 20)
|
||||
@ -56,13 +55,15 @@
|
||||
"fdtaddr=0x80F80000\0" \
|
||||
"fdt_high=0xffffffff\0" \
|
||||
"rdaddr=0x81000000\0" \
|
||||
"bootfile=/boot/uImage\0" \
|
||||
"bootdir=/boot\0" \
|
||||
"bootfile=uImage\0" \
|
||||
"fdtfile=\0" \
|
||||
"console=ttyO0,115200n8\0" \
|
||||
"optargs=\0" \
|
||||
"mmcdev=0\0" \
|
||||
"mmcroot=/dev/mmcblk0p2 ro\0" \
|
||||
"mmcrootfstype=ext4 rootwait\0" \
|
||||
"bootpart=0:2\0" \
|
||||
"nandroot=ubi0:rootfs rw ubi.mtd=7,2048\0" \
|
||||
"nandrootfstype=ubifs rootwait=1\0" \
|
||||
"nandsrcaddr=0x280000\0" \
|
||||
@ -96,19 +97,19 @@
|
||||
"nfsroot=${serverip}:${rootpath},${nfsopts} rw " \
|
||||
"ip=dhcp\0" \
|
||||
"bootenv=uEnv.txt\0" \
|
||||
"loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenv}\0" \
|
||||
"loadbootenv=load mmc ${mmcdev} ${loadaddr} ${bootenv}\0" \
|
||||
"importbootenv=echo Importing environment from mmc ...; " \
|
||||
"env import -t $loadaddr $filesize\0" \
|
||||
"ramargs=setenv bootargs console=${console} " \
|
||||
"${optargs} " \
|
||||
"root=${ramroot} " \
|
||||
"rootfstype=${ramrootfstype}\0" \
|
||||
"loadramdisk=fatload mmc ${mmcdev} ${rdaddr} ramdisk.gz\0" \
|
||||
"loaduimagefat=fatload mmc ${mmcdev} ${loadaddr} ${bootfile}\0" \
|
||||
"loaduimage=ext2load mmc ${mmcdev}:2 ${loadaddr} ${bootfile}\0" \
|
||||
"loadramdisk=load mmc ${mmcdev} ${rdaddr} ramdisk.gz\0" \
|
||||
"loaduimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
|
||||
"loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \
|
||||
"mmcboot=echo Booting from mmc ...; " \
|
||||
"run mmcargs; " \
|
||||
"bootm ${loadaddr}\0" \
|
||||
"bootm ${loadaddr} - ${fdtaddr}\0" \
|
||||
"nandboot=echo Booting from nand ...; " \
|
||||
"run nandargs; " \
|
||||
"nand read ${loadaddr} ${nandsrcaddr} ${nandimgsize}; " \
|
||||
@ -122,14 +123,17 @@
|
||||
"setenv autoload no; " \
|
||||
"dhcp; " \
|
||||
"tftp ${loadaddr} ${bootfile}; " \
|
||||
"tftp ${fdtaddr} ${fdtfile}; " \
|
||||
"run netargs; " \
|
||||
"bootm ${loadaddr}\0" \
|
||||
"bootm ${loadaddr} - ${fdtaddr}\0" \
|
||||
"ramboot=echo Booting from ramdisk ...; " \
|
||||
"run ramargs; " \
|
||||
"bootm ${loadaddr}\0" \
|
||||
"bootm ${loadaddr} ${rdaddr} ${fdtaddr}\0" \
|
||||
"findfdt="\
|
||||
"if test $board_name = A335BONE; then " \
|
||||
"setenv fdtfile am335x-bone.dtb; fi; " \
|
||||
"if test $board_name = A335BNLT; then " \
|
||||
"setenv fdtfile am335x-boneblack.dtb; fi; " \
|
||||
"if test $board_name = A33515BB; then " \
|
||||
"setenv fdtfile am335x-evm.dtb; fi; " \
|
||||
"if test $board_name = A335X_SK; then " \
|
||||
@ -138,6 +142,7 @@
|
||||
#endif
|
||||
|
||||
#define CONFIG_BOOTCOMMAND \
|
||||
"run findfdt; " \
|
||||
"mmc dev ${mmcdev}; if mmc rescan; then " \
|
||||
"echo SD/MMC found on device ${mmcdev};" \
|
||||
"if run loadbootenv; then " \
|
||||
@ -149,6 +154,7 @@
|
||||
"run uenvcmd;" \
|
||||
"fi;" \
|
||||
"if run loaduimage; then " \
|
||||
"run loadfdt;" \
|
||||
"run mmcboot;" \
|
||||
"fi;" \
|
||||
"else " \
|
||||
@ -192,6 +198,8 @@
|
||||
#define CONFIG_DOS_PARTITION
|
||||
#define CONFIG_CMD_FAT
|
||||
#define CONFIG_CMD_EXT2
|
||||
#define CONFIG_CMD_EXT4
|
||||
#define CONFIG_CMD_FS_GENERIC
|
||||
|
||||
#define CONFIG_SPI
|
||||
#define CONFIG_OMAP3_SPI
|
||||
|
@ -344,5 +344,9 @@
|
||||
#define LCD_BPP LCD_COLOR16
|
||||
|
||||
#define CONFIG_LCD
|
||||
#define CONFIG_SPLASH_SCREEN
|
||||
#define CONFIG_CMD_BMP
|
||||
#define CONFIG_BMP_16BPP
|
||||
#define CONFIG_SPLASH_SCREEN_PREPARE
|
||||
|
||||
#endif /* __CONFIG_H */
|
||||
|
@ -55,7 +55,8 @@
|
||||
#define CONFIG_INITRD_TAG 1
|
||||
#define CONFIG_REVISION_TAG 1
|
||||
|
||||
#define CONFIG_OF_LIBFDT 1
|
||||
#define CONFIG_OF_LIBFDT
|
||||
#define CONFIG_CMD_BOOTZ
|
||||
|
||||
/*
|
||||
* NS16550 Configuration
|
||||
|
@ -21,8 +21,7 @@
|
||||
|
||||
#define CONFIG_AM33XX
|
||||
|
||||
#include <asm/arch/cpu.h>
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/arch/omap.h>
|
||||
|
||||
#define CONFIG_DMA_COHERENT
|
||||
#define CONFIG_DMA_COHERENT_SIZE (1 << 20)
|
||||
|
221
include/configs/ti814x_evm.h
Normal file
221
include/configs/ti814x_evm.h
Normal file
@ -0,0 +1,221 @@
|
||||
/*
|
||||
* ti814x_evm.h
|
||||
*
|
||||
* Copyright (C) 2013 Texas Instruments Incorporated - http://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 version 2.
|
||||
*
|
||||
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
|
||||
* kind, whether express or implied; without even the implied warranty
|
||||
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#ifndef __CONFIG_TI814X_EVM_H
|
||||
#define __CONFIG_TI814X_EVM_H
|
||||
|
||||
#define CONFIG_TI81XX
|
||||
#define CONFIG_TI814X
|
||||
#define CONFIG_SYS_NO_FLASH
|
||||
|
||||
#include <asm/arch/omap.h>
|
||||
|
||||
#define CONFIG_DMA_COHERENT
|
||||
#define CONFIG_DMA_COHERENT_SIZE (1 << 20)
|
||||
|
||||
#define CONFIG_ENV_SIZE (128 << 10) /* 128 KiB */
|
||||
#define CONFIG_SYS_MALLOC_LEN (1024 << 10)
|
||||
#define CONFIG_SYS_LONGHELP /* undef to save memory */
|
||||
#define CONFIG_SYS_HUSH_PARSER /* Use HUSH for command parsing */
|
||||
#define CONFIG_SYS_PROMPT "U-Boot# "
|
||||
#define CONFIG_SYS_NO_FLASH
|
||||
#define CONFIG_MACH_TYPE MACH_TYPE_TI8148EVM
|
||||
|
||||
#define CONFIG_OF_LIBFDT
|
||||
#define CONFIG_CMDLINE_TAG /* enable passing of ATAGs */
|
||||
#define CONFIG_SETUP_MEMORY_TAGS
|
||||
#define CONFIG_INITRD_TAG /* for ramdisk support */
|
||||
|
||||
/* commands to include */
|
||||
# include <config_cmd_default.h>
|
||||
|
||||
#define CONFIG_CMD_ASKENV
|
||||
#define CONFIG_VERSION_VARIABLE
|
||||
|
||||
#define CONFIG_BOOTDELAY 1 /* negative for no autoboot */
|
||||
#define CONFIG_ENV_VARS_UBOOT_CONFIG
|
||||
#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"loadaddr=0x80200000\0" \
|
||||
"fdtaddr=0x80F80000\0" \
|
||||
"rdaddr=0x81000000\0" \
|
||||
"bootfile=/boot/uImage\0" \
|
||||
"fdtfile=\0" \
|
||||
"console=ttyO0,115200n8\0" \
|
||||
"optargs=\0" \
|
||||
"mmcdev=0\0" \
|
||||
"mmcroot=/dev/mmcblk0p2 ro\0" \
|
||||
"mmcrootfstype=ext4 rootwait\0" \
|
||||
"ramroot=/dev/ram0 rw ramdisk_size=65536 initrd=${rdaddr},64M\0" \
|
||||
"ramrootfstype=ext2\0" \
|
||||
"mmcargs=setenv bootargs console=${console} " \
|
||||
"${optargs} " \
|
||||
"root=${mmcroot} " \
|
||||
"rootfstype=${mmcrootfstype}\0" \
|
||||
"bootenv=uEnv.txt\0" \
|
||||
"loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenv}\0" \
|
||||
"importbootenv=echo Importing environment from mmc ...; " \
|
||||
"env import -t $loadaddr $filesize\0" \
|
||||
"ramargs=setenv bootargs console=${console} " \
|
||||
"${optargs} " \
|
||||
"root=${ramroot} " \
|
||||
"rootfstype=${ramrootfstype}\0" \
|
||||
"loadramdisk=fatload mmc ${mmcdev} ${rdaddr} ramdisk.gz\0" \
|
||||
"loaduimagefat=fatload mmc ${mmcdev} ${loadaddr} ${bootfile}\0" \
|
||||
"loaduimage=ext2load mmc ${mmcdev}:2 ${loadaddr} ${bootfile}\0" \
|
||||
"mmcboot=echo Booting from mmc ...; " \
|
||||
"run mmcargs; " \
|
||||
"bootm ${loadaddr}\0" \
|
||||
"ramboot=echo Booting from ramdisk ...; " \
|
||||
"run ramargs; " \
|
||||
"bootm ${loadaddr}\0" \
|
||||
"fdtfile=ti814x-evm.dtb\0" \
|
||||
|
||||
#define CONFIG_BOOTCOMMAND \
|
||||
"mmc dev ${mmcdev}; if mmc rescan; then " \
|
||||
"echo SD/MMC found on device ${mmcdev};" \
|
||||
"if run loadbootenv; then " \
|
||||
"echo Loaded environment from ${bootenv};" \
|
||||
"run importbootenv;" \
|
||||
"fi;" \
|
||||
"if test -n $uenvcmd; then " \
|
||||
"echo Running uenvcmd ...;" \
|
||||
"run uenvcmd;" \
|
||||
"fi;" \
|
||||
"if run loaduimage; then " \
|
||||
"run mmcboot;" \
|
||||
"fi;" \
|
||||
"fi;" \
|
||||
|
||||
/* Clock Defines */
|
||||
#define V_OSCK 24000000 /* Clock output from T2 */
|
||||
#define V_SCLK (V_OSCK >> 1)
|
||||
|
||||
#define CONFIG_CMD_ECHO
|
||||
|
||||
/* max number of command args */
|
||||
#define CONFIG_SYS_MAXARGS 16
|
||||
|
||||
/* Console I/O Buffer Size */
|
||||
#define CONFIG_SYS_CBSIZE 512
|
||||
|
||||
/* Print Buffer Size */
|
||||
#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE \
|
||||
+ sizeof(CONFIG_SYS_PROMPT) + 16)
|
||||
|
||||
/* Boot Argument Buffer Size */
|
||||
#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
|
||||
|
||||
#define CONFIG_SYS_MEMTEST_START PHYS_DRAM_1
|
||||
#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START \
|
||||
+ PHYS_DRAM_1_SIZE - (8 << 12))
|
||||
|
||||
#define CONFIG_SYS_LOAD_ADDR 0x81000000 /* Default */
|
||||
#define CONFIG_SYS_HZ 1000 /* 1ms clock */
|
||||
|
||||
#define CONFIG_OMAP_GPIO
|
||||
#define CONFIG_MMC
|
||||
#define CONFIG_GENERIC_MMC
|
||||
#define CONFIG_OMAP_HSMMC
|
||||
#define CONFIG_CMD_MMC
|
||||
#define CONFIG_DOS_PARTITION
|
||||
#define CONFIG_CMD_FAT
|
||||
#define CONFIG_CMD_EXT2
|
||||
|
||||
/**
|
||||
* Physical Memory Map
|
||||
*/
|
||||
#define CONFIG_NR_DRAM_BANKS 1 /* 1 banks of DRAM */
|
||||
#define PHYS_DRAM_1 0x80000000 /* DRAM Bank #1 */
|
||||
#define PHYS_DRAM_1_SIZE 0x20000000 /* 512MB */
|
||||
#define CONFIG_MAX_RAM_BANK_SIZE (1024 << 20) /* 1024MB */
|
||||
|
||||
#define CONFIG_SYS_SDRAM_BASE PHYS_DRAM_1
|
||||
#define CONFIG_SYS_INIT_SP_ADDR (NON_SECURE_SRAM_END - \
|
||||
GENERATED_GBL_DATA_SIZE)
|
||||
|
||||
/**
|
||||
* Platform/Board specific defs
|
||||
*/
|
||||
#define CONFIG_SYS_TIMERBASE 0x4802E000
|
||||
#define CONFIG_SYS_PTV 2 /* Divisor: 2^(PTV+1) => 8 */
|
||||
#define CONFIG_SYS_HZ 1000
|
||||
|
||||
/* NS16550 Configuration */
|
||||
#define CONFIG_SYS_NS16550
|
||||
#define CONFIG_SYS_NS16550_SERIAL
|
||||
#define CONFIG_SYS_NS16550_REG_SIZE (-4)
|
||||
#define CONFIG_SYS_NS16550_CLK (48000000)
|
||||
#define CONFIG_SYS_NS16550_COM1 0x48020000 /* Base EVM has UART0 */
|
||||
|
||||
#define CONFIG_BAUDRATE 115200
|
||||
|
||||
#define CONFIG_ENV_OVERWRITE
|
||||
#define CONFIG_CONS_INDEX 1
|
||||
#define CONFIG_SYS_CONSOLE_INFO_QUIET
|
||||
|
||||
#define CONFIG_ENV_IS_NOWHERE
|
||||
|
||||
/* Defines for SPL */
|
||||
#define CONFIG_SPL
|
||||
#define CONFIG_SPL_FRAMEWORK
|
||||
#define CONFIG_SPL_TEXT_BASE 0x40300000
|
||||
#define CONFIG_SPL_MAX_SIZE ((128 - 18) * 1024)
|
||||
#define CONFIG_SPL_STACK CONFIG_SYS_INIT_SP_ADDR
|
||||
|
||||
#define CONFIG_SPL_BSS_START_ADDR 0x80000000
|
||||
#define CONFIG_SPL_BSS_MAX_SIZE 0x80000 /* 512 KB */
|
||||
|
||||
#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300 /* address 0x60000 */
|
||||
#define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS 0x200 /* 256 KB */
|
||||
#define CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION 1
|
||||
#define CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME "u-boot.img"
|
||||
#define CONFIG_SPL_MMC_SUPPORT
|
||||
#define CONFIG_SPL_FAT_SUPPORT
|
||||
|
||||
#define CONFIG_SPL_LIBCOMMON_SUPPORT
|
||||
#define CONFIG_SPL_LIBDISK_SUPPORT
|
||||
#define CONFIG_SPL_LIBGENERIC_SUPPORT
|
||||
#define CONFIG_SPL_SERIAL_SUPPORT
|
||||
#define CONFIG_SPL_GPIO_SUPPORT
|
||||
#define CONFIG_SPL_YMODEM_SUPPORT
|
||||
#define CONFIG_SYS_SPI_U_BOOT_OFFS 0x20000
|
||||
#define CONFIG_SYS_SPI_U_BOOT_SIZE 0x40000
|
||||
#define CONFIG_SPL_LDSCRIPT "$(CPUDIR)/omap-common/u-boot-spl.lds"
|
||||
|
||||
#define CONFIG_SPL_BOARD_INIT
|
||||
|
||||
/*
|
||||
* 1MB into the SDRAM to allow for SPL's bss at the beginning of SDRAM
|
||||
* 64 bytes before this address should be set aside for u-boot.img's
|
||||
* header. That is 0x800FFFC0--0x80800000 should not be used for any
|
||||
* other needs.
|
||||
*/
|
||||
#define CONFIG_SYS_TEXT_BASE 0x80800000
|
||||
#define CONFIG_SYS_SPL_MALLOC_START 0x80208000
|
||||
#define CONFIG_SYS_SPL_MALLOC_SIZE 0x100000
|
||||
|
||||
/*
|
||||
* Since SPL did pll and ddr initialization for us,
|
||||
* we don't need to do it twice.
|
||||
*/
|
||||
#ifndef CONFIG_SPL_BUILD
|
||||
#define CONFIG_SKIP_LOWLEVEL_INIT
|
||||
#endif
|
||||
|
||||
/* Unsupported features */
|
||||
#undef CONFIG_USE_IRQ
|
||||
|
||||
#endif /* ! __CONFIG_TI814X_EVM_H */
|
@ -84,7 +84,7 @@ LIBS-$(CONFIG_SPL_ETH_SUPPORT) += drivers/net/phy/libphy.o
|
||||
LIBS-$(CONFIG_SPL_MUSB_NEW_SUPPORT) += drivers/usb/musb-new/libusb_musb-new.o
|
||||
LIBS-$(CONFIG_SPL_USBETH_SUPPORT) += drivers/usb/gadget/libusb_gadget.o
|
||||
|
||||
ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP34XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX),)
|
||||
ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP34XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TI814X),)
|
||||
LIBS-y += $(CPUDIR)/omap-common/libomap-common.o
|
||||
endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user