Signed-off-by: TsiChungLiew <Tsi-Chung.Liew@freescale.com>master
parent
8ae158cd87
commit
4a442d3186
@ -0,0 +1,44 @@ |
||||
#
|
||||
# (C) Copyright 2000-2003
|
||||
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
#
|
||||
# See file CREDITS for list of people who contributed to this
|
||||
# project.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
# MA 02111-1307 USA
|
||||
#
|
||||
|
||||
include $(TOPDIR)/config.mk |
||||
|
||||
LIB = $(obj)lib$(BOARD).a
|
||||
|
||||
COBJS = $(BOARD).o mii.o
|
||||
|
||||
SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
|
||||
OBJS := $(addprefix $(obj),$(COBJS))
|
||||
SOBJS := $(addprefix $(obj),$(SOBJS))
|
||||
|
||||
$(LIB): $(obj).depend $(OBJS) |
||||
$(AR) $(ARFLAGS) $@ $(OBJS)
|
||||
|
||||
#########################################################################
|
||||
|
||||
# defines $(obj).depend target
|
||||
include $(SRCTREE)/rules.mk |
||||
|
||||
sinclude $(obj).depend |
||||
|
||||
#########################################################################
|
@ -0,0 +1,28 @@ |
||||
#
|
||||
# (C) Copyright 2000-2003
|
||||
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
# Coldfire contribution by Bernhard Kuhn <bkuhn@metrowerks.com>
|
||||
#
|
||||
# See file CREDITS for list of people who contributed to this
|
||||
# project.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
# MA 02111-1307 USA
|
||||
#
|
||||
|
||||
/*TEXT_BASE = 0xFFC00000*/
|
||||
sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp |
||||
|
||||
PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
|
@ -0,0 +1,117 @@ |
||||
/*
|
||||
* (C) Copyright 2000-2003 |
||||
* Wolfgang Denk, DENX Software Engineering, wd@denx.de. |
||||
* |
||||
* Copyright (C) 2004-2007 Freescale Semiconductor, Inc. |
||||
* TsiChung Liew (Tsi-Chung.Liew@freescale.com) |
||||
* |
||||
* See file CREDITS for list of people who contributed to this |
||||
* project. |
||||
* |
||||
* This program is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU General Public License as |
||||
* published by the Free Software Foundation; either version 2 of |
||||
* the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software |
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
||||
* MA 02111-1307 USA |
||||
*/ |
||||
|
||||
#include <config.h> |
||||
#include <common.h> |
||||
#include <asm/immap.h> |
||||
|
||||
DECLARE_GLOBAL_DATA_PTR; |
||||
|
||||
int checkboard(void) |
||||
{ |
||||
puts("Board: "); |
||||
puts("Freescale M5235 EVB\n"); |
||||
return 0; |
||||
}; |
||||
|
||||
long int initdram(int board_type) |
||||
{ |
||||
volatile sdram_t *sdram = (volatile sdram_t *)(MMAP_SDRAM); |
||||
volatile gpio_t *gpio = (volatile gpio_t *)(MMAP_GPIO); |
||||
u32 dramsize, i, dramclk; |
||||
|
||||
/*
|
||||
* When booting from external Flash, the port-size is less than |
||||
* the port-size of SDRAM. In this case it is necessary to enable |
||||
* Data[15:0] on Port Address/Data. |
||||
*/ |
||||
gpio->par_ad = |
||||
GPIO_PAR_AD_ADDR23 | GPIO_PAR_AD_ADDR22 | GPIO_PAR_AD_ADDR21 | |
||||
GPIO_PAR_AD_DATAL; |
||||
|
||||
/* Initialize PAR to enable SDRAM signals */ |
||||
gpio->par_sdram = |
||||
GPIO_PAR_SDRAM_SDWE | GPIO_PAR_SDRAM_SCAS | GPIO_PAR_SDRAM_SRAS | |
||||
GPIO_PAR_SDRAM_SCKE | GPIO_PAR_SDRAM_SDCS(3); |
||||
|
||||
dramsize = CFG_SDRAM_SIZE * 0x100000; |
||||
for (i = 0x13; i < 0x20; i++) { |
||||
if (dramsize == (1 << i)) |
||||
break; |
||||
} |
||||
i--; |
||||
|
||||
if (!(sdram->dacr0 & SDRAMC_DARCn_RE)) { |
||||
dramclk = gd->bus_clk / (CFG_HZ * CFG_HZ); |
||||
|
||||
/* Initialize DRAM Control Register: DCR */ |
||||
sdram->dcr = SDRAMC_DCR_RTIM_9CLKS | |
||||
SDRAMC_DCR_RTIM_6CLKS | SDRAMC_DCR_RC((15 * dramclk) >> 4); |
||||
|
||||
/* Initialize DACR0 */ |
||||
sdram->dacr0 = |
||||
SDRAMC_DARCn_BA(CFG_SDRAM_BASE) | SDRAMC_DARCn_CASL_C1 | |
||||
SDRAMC_DARCn_CBM_CMD20 | SDRAMC_DARCn_PS_32; |
||||
|
||||
/* Initialize DMR0 */ |
||||
sdram->dmr0 = ((dramsize - 1) & 0xFFFC0000) | SDRAMC_DMRn_V; |
||||
|
||||
/* Set IP (bit 3) in DACR */ |
||||
sdram->dacr0 |= SDRAMC_DARCn_IP; |
||||
|
||||
/* Wait 30ns to allow banks to precharge */ |
||||
for (i = 0; i < 5; i++) { |
||||
asm("nop"); |
||||
} |
||||
|
||||
/* Write to this block to initiate precharge */ |
||||
*(u32 *) (CFG_SDRAM_BASE) = 0xA5A59696; |
||||
|
||||
/* Set RE (bit 15) in DACR */ |
||||
sdram->dacr0 |= SDRAMC_DARCn_RE; |
||||
|
||||
/* Wait for at least 8 auto refresh cycles to occur */ |
||||
for (i = 0; i < 0x2000; i++) { |
||||
asm("nop"); |
||||
} |
||||
|
||||
/* Finish the configuration by issuing the MRS. */ |
||||
sdram->dacr0 |= SDRAMC_DARCn_IMRS; |
||||
|
||||
/* Write to the SDRAM Mode Register */ |
||||
*(u32 *) (CFG_SDRAM_BASE + 0x400) = 0xA5A59696; |
||||
} |
||||
|
||||
return dramsize; |
||||
}; |
||||
|
||||
int testdram(void) |
||||
{ |
||||
/* TODO: XXX XXX XXX */ |
||||
printf("DRAM test not implemented!\n"); |
||||
|
||||
return (0); |
||||
} |
@ -0,0 +1,307 @@ |
||||
/*
|
||||
* Copyright (C) 2004-2007 Freescale Semiconductor, Inc. |
||||
* TsiChung Liew (Tsi-Chung.Liew@freescale.com) |
||||
* |
||||
* See file CREDITS for list of people who contributed to this |
||||
* project. |
||||
* |
||||
* This program is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU General Public License as |
||||
* published by the Free Software Foundation; either version 2 of |
||||
* the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software |
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
||||
* MA 02111-1307 USA |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <asm/fec.h> |
||||
#include <asm/immap.h> |
||||
|
||||
#include <config.h> |
||||
#include <net.h> |
||||
|
||||
DECLARE_GLOBAL_DATA_PTR; |
||||
|
||||
#if defined(CONFIG_CMD_NET) && defined(CONFIG_NET_MULTI) |
||||
#undef MII_DEBUG |
||||
#undef ET_DEBUG |
||||
|
||||
int fecpin_setclear(struct eth_device *dev, int setclear) |
||||
{ |
||||
volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO; |
||||
|
||||
if (setclear) { |
||||
gpio->par_feci2c |= |
||||
(GPIO_PAR_FECI2C_EMDC_FECEMDC | GPIO_PAR_FECI2C_EMDIO_FECEMDIO); |
||||
} else { |
||||
gpio->par_feci2c &= |
||||
~(GPIO_PAR_FECI2C_EMDC_MASK | GPIO_PAR_FECI2C_EMDIO_MASK); |
||||
} |
||||
|
||||
return 0; |
||||
} |
||||
|
||||
#if defined(CFG_DISCOVER_PHY) || defined(CONFIG_MII) |
||||
#include <miiphy.h> |
||||
|
||||
/* Make MII read/write commands for the FEC. */ |
||||
#define mk_mii_read(ADDR, REG) (0x60020000 | ((ADDR << 23) | (REG & 0x1f) << 18)) |
||||
|
||||
#define mk_mii_write(ADDR, REG, VAL) (0x50020000 | ((ADDR << 23) | (REG & 0x1f) << 18) | (VAL & 0xffff)) |
||||
|
||||
/* PHY identification */ |
||||
#define PHY_ID_LXT970 0x78100000 /* LXT970 */ |
||||
#define PHY_ID_LXT971 0x001378e0 /* LXT971 and 972 */ |
||||
#define PHY_ID_82555 0x02a80150 /* Intel 82555 */ |
||||
#define PHY_ID_QS6612 0x01814400 /* QS6612 */ |
||||
#define PHY_ID_AMD79C784 0x00225610 /* AMD 79C784 */ |
||||
#define PHY_ID_LSI80225 0x0016f870 /* LSI 80225 */ |
||||
#define PHY_ID_LSI80225B 0x0016f880 /* LSI 80225/B */ |
||||
#define PHY_ID_DP83848VV 0x20005C90 /* National 83848 */ |
||||
#define PHY_ID_DP83849 0x20005CA2 /* National 82849 */ |
||||
#define PHY_ID_KS8721BL 0x00221619 /* Micrel KS8721BL/SL */ |
||||
|
||||
#define STR_ID_LXT970 "LXT970" |
||||
#define STR_ID_LXT971 "LXT971" |
||||
#define STR_ID_82555 "Intel82555" |
||||
#define STR_ID_QS6612 "QS6612" |
||||
#define STR_ID_AMD79C784 "AMD79C784" |
||||
#define STR_ID_LSI80225 "LSI80225" |
||||
#define STR_ID_LSI80225B "LSI80225/B" |
||||
#define STR_ID_DP83848VV "N83848" |
||||
#define STR_ID_DP83849 "N83849" |
||||
#define STR_ID_KS8721BL "KS8721BL" |
||||
|
||||
/****************************************************************************
|
||||
* mii_init -- Initialize the MII for MII command without ethernet |
||||
* This function is a subset of eth_init |
||||
**************************************************************************** |
||||
*/ |
||||
void mii_reset(struct fec_info_s *info) |
||||
{ |
||||
volatile fec_t *fecp = (fec_t *) (info->miibase); |
||||
int i; |
||||
|
||||
fecp->ecr = FEC_ECR_RESET; |
||||
for (i = 0; (fecp->ecr & FEC_ECR_RESET) && (i < FEC_RESET_DELAY); ++i) { |
||||
udelay(1); |
||||
} |
||||
if (i == FEC_RESET_DELAY) { |
||||
printf("FEC_RESET_DELAY timeout\n"); |
||||
} |
||||
} |
||||
|
||||
/* send command to phy using mii, wait for result */ |
||||
uint mii_send(uint mii_cmd) |
||||
{ |
||||
struct fec_info_s *info; |
||||
struct eth_device *dev; |
||||
volatile fec_t *ep; |
||||
uint mii_reply; |
||||
int j = 0; |
||||
|
||||
/* retrieve from register structure */ |
||||
dev = eth_get_dev(); |
||||
info = dev->priv; |
||||
|
||||
ep = (fec_t *) info->miibase; |
||||
|
||||
ep->mmfr = mii_cmd; /* command to phy */ |
||||
|
||||
/* wait for mii complete */ |
||||
while (!(ep->eir & FEC_EIR_MII) && (j < MCFFEC_TOUT_LOOP)) { |
||||
udelay(1); |
||||
j++; |
||||
} |
||||
if (j >= MCFFEC_TOUT_LOOP) { |
||||
printf("MII not complete\n"); |
||||
return -1; |
||||
} |
||||
|
||||
mii_reply = ep->mmfr; /* result from phy */ |
||||
ep->eir = FEC_EIR_MII; /* clear MII complete */ |
||||
#ifdef ET_DEBUG |
||||
printf("%s[%d] %s: sent=0x%8.8x, reply=0x%8.8x\n", |
||||
__FILE__, __LINE__, __FUNCTION__, mii_cmd, mii_reply); |
||||
#endif |
||||
|
||||
return (mii_reply & 0xffff); /* data read from phy */ |
||||
} |
||||
#endif /* CFG_DISCOVER_PHY || (CONFIG_MII) */ |
||||
|
||||
#if defined(CFG_DISCOVER_PHY) |
||||
int mii_discover_phy(struct eth_device *dev) |
||||
{ |
||||
#define MAX_PHY_PASSES 11 |
||||
struct fec_info_s *info = dev->priv; |
||||
int phyaddr, pass; |
||||
uint phyno, phytype; |
||||
|
||||
if (info->phyname_init) |
||||
return info->phy_addr; |
||||
|
||||
phyaddr = -1; /* didn't find a PHY yet */ |
||||
for (pass = 1; pass <= MAX_PHY_PASSES && phyaddr < 0; ++pass) { |
||||
if (pass > 1) { |
||||
/* PHY may need more time to recover from reset.
|
||||
* The LXT970 needs 50ms typical, no maximum is |
||||
* specified, so wait 10ms before try again. |
||||
* With 11 passes this gives it 100ms to wake up. |
||||
*/ |
||||
udelay(10000); /* wait 10ms */ |
||||
} |
||||
|
||||
for (phyno = 0; phyno < 32 && phyaddr < 0; ++phyno) { |
||||
|
||||
phytype = mii_send(mk_mii_read(phyno, PHY_PHYIDR1)); |
||||
#ifdef ET_DEBUG |
||||
printf("PHY type 0x%x pass %d type\n", phytype, pass); |
||||
#endif |
||||
if (phytype != 0xffff) { |
||||
phyaddr = phyno; |
||||
phytype <<= 16; |
||||
phytype |= |
||||
mii_send(mk_mii_read(phyno, PHY_PHYIDR2)); |
||||
|
||||
switch (phytype & 0xffffffff) { |
||||
case PHY_ID_KS8721BL: |
||||
strcpy(info->phy_name, |
||||
STR_ID_KS8721BL); |
||||
info->phyname_init = 1; |
||||
break; |
||||
default: |
||||
strcpy(info->phy_name, "unknown"); |
||||
info->phyname_init = 1; |
||||
break; |
||||
} |
||||
|
||||
#ifdef ET_DEBUG |
||||
printf("PHY @ 0x%x pass %d type ", phyno, pass); |
||||
switch (phytype & 0xffffffff) { |
||||
case PHY_ID_KS8721BL: |
||||
printf(STR_ID_KS8721BL); |
||||
break; |
||||
default: |
||||
printf("0x%08x\n", phytype); |
||||
break; |
||||
} |
||||
#endif |
||||
} |
||||
} |
||||
} |
||||
if (phyaddr < 0) |
||||
printf("No PHY device found.\n"); |
||||
|
||||
return phyaddr; |
||||
} |
||||
#endif /* CFG_DISCOVER_PHY */ |
||||
|
||||
int mii_init(void) __attribute__((weak,alias("__mii_init"))); |
||||
|
||||
void __mii_init(void) |
||||
{ |
||||
volatile fec_t *fecp; |
||||
struct fec_info_s *info; |
||||
struct eth_device *dev; |
||||
int miispd = 0, i = 0; |
||||
u16 autoneg = 0; |
||||
|
||||
/* retrieve from register structure */ |
||||
dev = eth_get_dev(); |
||||
info = dev->priv; |
||||
|
||||
fecp = (fec_t *) info->miibase; |
||||
|
||||
fecpin_setclear(dev, 1); |
||||
|
||||
mii_reset(info); |
||||
|
||||
/* We use strictly polling mode only */ |
||||
fecp->eimr = 0; |
||||
|
||||
/* Clear any pending interrupt */ |
||||
fecp->eir = 0xffffffff; |
||||
|
||||
/* Set MII speed */ |
||||
miispd = (gd->bus_clk / 1000000) / 5; |
||||
fecp->mscr = miispd << 1; |
||||
|
||||
info->phy_addr = mii_discover_phy(dev); |
||||
|
||||
#define AUTONEGLINK (PHY_BMSR_AUTN_COMP | PHY_BMSR_LS) |
||||
while (i < MCFFEC_TOUT_LOOP) { |
||||
autoneg = 0; |
||||
miiphy_read(dev->name, info->phy_addr, PHY_BMSR, &autoneg); |
||||
i++; |
||||
|
||||
if ((autoneg & AUTONEGLINK) == AUTONEGLINK) |
||||
break; |
||||
|
||||
udelay(500); |
||||
} |
||||
if (i >= MCFFEC_TOUT_LOOP) { |
||||
printf("Auto Negotiation not complete\n"); |
||||
} |
||||
|
||||
/* adapt to the half/full speed settings */ |
||||
info->dup_spd = miiphy_duplex(dev->name, info->phy_addr) << 16; |
||||
info->dup_spd |= miiphy_speed(dev->name, info->phy_addr); |
||||
} |
||||
|
||||
/*****************************************************************************
|
||||
* Read and write a MII PHY register, routines used by MII Utilities |
||||
* |
||||
* FIXME: These routines are expected to return 0 on success, but mii_send |
||||
* does _not_ return an error code. Maybe 0xFFFF means error, i.e. |
||||
* no PHY connected... |
||||
* For now always return 0. |
||||
* FIXME: These routines only work after calling eth_init() at least once! |
||||
* Otherwise they hang in mii_send() !!! Sorry! |
||||
*****************************************************************************/ |
||||
|
||||
int mcffec_miiphy_read(char *devname, unsigned char addr, unsigned char reg, |
||||
unsigned short *value) |
||||
{ |
||||
short rdreg; /* register working value */ |
||||
|
||||
#ifdef MII_DEBUG |
||||
printf("miiphy_read(0x%x) @ 0x%x = ", reg, addr); |
||||
#endif |
||||
rdreg = mii_send(mk_mii_read(addr, reg)); |
||||
|
||||
*value = rdreg; |
||||
|
||||
#ifdef MII_DEBUG |
||||
printf("0x%04x\n", *value); |
||||
#endif |
||||
|
||||
return 0; |
||||
} |
||||
|
||||
int mcffec_miiphy_write(char *devname, unsigned char addr, unsigned char reg, |
||||
unsigned short value) |
||||
{ |
||||
short rdreg; /* register working value */ |
||||
|
||||
#ifdef MII_DEBUG |
||||
printf("miiphy_write(0x%x) @ 0x%x = ", reg, addr); |
||||
#endif |
||||
|
||||
rdreg = mii_send(mk_mii_write(addr, reg, value)); |
||||
|
||||
#ifdef MII_DEBUG |
||||
printf("0x%04x\n", value); |
||||
#endif |
||||
|
||||
return 0; |
||||
} |
||||
|
||||
#endif /* CONFIG_CMD_NET, FEC_ENET & NET_MULTI */ |
@ -0,0 +1,145 @@ |
||||
/* |
||||
* (C) Copyright 2000 |
||||
* Wolfgang Denk, DENX Software Engineering, wd@denx.de. |
||||
* |
||||
* See file CREDITS for list of people who contributed to this |
||||
* project. |
||||
* |
||||
* This program is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU General Public License as |
||||
* published by the Free Software Foundation; either version 2 of |
||||
* the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software |
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
||||
* MA 02111-1307 USA |
||||
*/ |
||||
|
||||
OUTPUT_ARCH(m68k) |
||||
SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); |
||||
/* Do we need any of these for elf? |
||||
__DYNAMIC = 0; */ |
||||
SECTIONS |
||||
{ |
||||
/* Read-only sections, merged into text segment: */ |
||||
. = + SIZEOF_HEADERS; |
||||
.interp : { *(.interp) } |
||||
.hash : { *(.hash) } |
||||
.dynsym : { *(.dynsym) } |
||||
.dynstr : { *(.dynstr) } |
||||
.rel.text : { *(.rel.text) } |
||||
.rela.text : { *(.rela.text) } |
||||
.rel.data : { *(.rel.data) } |
||||
.rela.data : { *(.rela.data) } |
||||
.rel.rodata : { *(.rel.rodata) } |
||||
.rela.rodata : { *(.rela.rodata) } |
||||
.rel.got : { *(.rel.got) } |
||||
.rela.got : { *(.rela.got) } |
||||
.rel.ctors : { *(.rel.ctors) } |
||||
.rela.ctors : { *(.rela.ctors) } |
||||
.rel.dtors : { *(.rel.dtors) } |
||||
.rela.dtors : { *(.rela.dtors) } |
||||
.rel.bss : { *(.rel.bss) } |
||||
.rela.bss : { *(.rela.bss) } |
||||
.rel.plt : { *(.rel.plt) } |
||||
.rela.plt : { *(.rela.plt) } |
||||
.init : { *(.init) } |
||||
.plt : { *(.plt) } |
||||
.text : |
||||
{ |
||||
/* WARNING - the following is hand-optimized to fit within */ |
||||
/* the sector layout of our flash chips! XXX FIXME XXX */ |
||||
|
||||
cpu/mcf523x/start.o (.text) |
||||
cpu/mcf523x/cpu_init.o (.text) |
||||
lib_m68k/traps.o (.text) |
||||
lib_m68k/interrupts.o (.text) |
||||
common/dlmalloc.o (.text) |
||||
lib_generic/zlib.o (.text) |
||||
|
||||
. = DEFINED(env_offset) ? env_offset : .; |
||||
common/environment.o (.text) |
||||
|
||||
*(.text) |
||||
*(.fixup) |
||||
*(.got1) |
||||
} |
||||
_etext = .; |
||||
PROVIDE (etext = .); |
||||
.rodata : |
||||
{ |
||||
*(.rodata) |
||||
*(.rodata1) |
||||
} |
||||
.fini : { *(.fini) } =0 |
||||
.ctors : { *(.ctors) } |
||||
.dtors : { *(.dtors) } |
||||
|
||||
/* Read-write section, merged into data segment: */ |
||||
. = (. + 0x00FF) & 0xFFFFFF00; |
||||
_erotext = .; |
||||
PROVIDE (erotext = .); |
||||
|
||||
.reloc : |
||||
{ |
||||
__got_start = .; |
||||
*(.got) |
||||
__got_end = .; |
||||
_GOT2_TABLE_ = .; |
||||
*(.got2) |
||||
_FIXUP_TABLE_ = .; |
||||
*(.fixup) |
||||
} |
||||
__got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2; |
||||
__fixup_entries = (. - _FIXUP_TABLE_)>>2; |
||||
|
||||
.data : |
||||
{ |
||||
*(.data) |
||||
*(.data1) |
||||
*(.sdata) |
||||
*(.sdata2) |
||||
*(.dynamic) |
||||
CONSTRUCTORS |
||||
} |
||||
_edata = .; |
||||
PROVIDE (edata = .); |
||||
|
||||
. = .; |
||||
__u_boot_cmd_start = .; |
||||
.u_boot_cmd : { *(.u_boot_cmd) } |
||||
__u_boot_cmd_end = .; |
||||
|
||||
|
||||
. = .; |
||||
__start___ex_table = .; |
||||
__ex_table : { *(__ex_table) } |
||||
__stop___ex_table = .; |
||||
|
||||
. = ALIGN(256); |
||||
__init_begin = .; |
||||
.text.init : { *(.text.init) } |
||||
.data.init : { *(.data.init) } |
||||
. = ALIGN(256); |
||||
__init_end = .; |
||||
|
||||
__bss_start = .; |
||||
.bss : |
||||
{ |
||||
_sbss = .; |
||||
*(.sbss) *(.scommon) |
||||
*(.dynbss) |
||||
*(.bss) |
||||
*(COMMON) |
||||
. = ALIGN(4); |
||||
_ebss = .; |
||||
} |
||||
_end = . ; |
||||
PROVIDE (end = .); |
||||
} |
@ -0,0 +1,153 @@ |
||||
/* |
||||
* (C) Copyright 2000 |
||||
* Wolfgang Denk, DENX Software Engineering, wd@denx.de. |
||||
* |
||||
* See file CREDITS for list of people who contributed to this |
||||
* project. |
||||
* |
||||
* This program is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU General Public License as |
||||
* published by the Free Software Foundation; either version 2 of |
||||
* the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software |
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
||||
* MA 02111-1307 USA |
||||
*/ |
||||
|
||||
OUTPUT_ARCH(m68k) |
||||
SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); |
||||
/* Do we need any of these for elf? |
||||
__DYNAMIC = 0; */ |
||||
SECTIONS |
||||
{ |
||||
/* Read-only sections, merged into text segment: */ |
||||
. = + SIZEOF_HEADERS; |
||||
.interp : { *(.interp) } |
||||
.hash : { *(.hash) } |
||||
.dynsym : { *(.dynsym) } |
||||
.dynstr : { *(.dynstr) } |
||||
.rel.text : { *(.rel.text) } |
||||
.rela.text : { *(.rela.text) } |
||||
.rel.data : { *(.rel.data) } |
||||
.rela.data : { *(.rela.data) } |
||||
.rel.rodata : { *(.rel.rodata) } |
||||
.rela.rodata : { *(.rela.rodata) } |
||||
.rel.got : { *(.rel.got) } |
||||
.rela.got : { *(.rela.got) } |
||||
.rel.ctors : { *(.rel.ctors) } |
||||
.rela.ctors : { *(.rela.ctors) } |
||||
.rel.dtors : { *(.rel.dtors) } |
||||
.rela.dtors : { *(.rela.dtors) } |
||||
.rel.bss : { *(.rel.bss) } |
||||
.rela.bss : { *(.rela.bss) } |
||||
.rel.plt : { *(.rel.plt) } |
||||
.rela.plt : { *(.rela.plt) } |
||||
.init : { *(.init) } |
||||
.plt : { *(.plt) } |
||||
.text : |
||||
{ |
||||
/* WARNING - the following is hand-optimized to fit within */ |
||||
/* the sector layout of our flash chips! XXX FIXME XXX */ |
||||
|
||||
cpu/mcf523x/start.o (.text) |
||||
cpu/mcf523x/cpu.o (.text) |
||||
cpu/mcf523x/cpu_init.o (.text) |
||||
cpu/mcf523x/interrupts.o (.text) |
||||
cpu/mcf523x/speed.o (.text) |
||||
lib_m68k/libm68k.a (.text) |
||||
common/dlmalloc.o (.text) |
||||
common/cmd_bootm.o (.text) |
||||
common/cmd_flash.o (.text) |
||||
common/cmd_elf.o (.text) |
||||
common/cmd_mem.o (.text) |
||||
common/console.o (.text) |
||||
common/main.o (.text) |
||||
lib_generic/libgeneric.a (.text) |
||||
|
||||
. = DEFINED(env_offset) ? env_offset : .; |
||||
common/environment.o (.text) |
||||
|
||||
*(.text) |
||||
*(.fixup) |
||||
*(.got1) |
||||
} |
||||
_etext = .; |
||||
PROVIDE (etext = .); |
||||
.rodata : |
||||
{ |
||||
*(.rodata) |
||||
*(.rodata1) |
||||
} |
||||
.fini : { *(.fini) } =0 |
||||
.ctors : { *(.ctors) } |
||||
.dtors : { *(.dtors) } |
||||
|
||||
/* Read-write section, merged into data segment: */ |
||||
. = (. + 0x00FF) & 0xFFFFFF00; |
||||
_erotext = .; |
||||
PROVIDE (erotext = .); |
||||
|
||||
.reloc : |
||||
{ |
||||
__got_start = .; |
||||
*(.got) |
||||
__got_end = .; |
||||
_GOT2_TABLE_ = .; |
||||
*(.got2) |
||||
_FIXUP_TABLE_ = .; |
||||
*(.fixup) |
||||
} |
||||
__got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2; |
||||
__fixup_entries = (. - _FIXUP_TABLE_)>>2; |
||||
|
||||
.data : |
||||
{ |
||||
*(.data) |
||||
*(.data1) |
||||
*(.sdata) |
||||
*(.sdata2) |
||||
*(.dynamic) |
||||
CONSTRUCTORS |
||||
} |
||||
_edata = .; |
||||
PROVIDE (edata = .); |
||||
|
||||
. = .; |
||||
__u_boot_cmd_start = .; |
||||
.u_boot_cmd : { *(.u_boot_cmd) } |
||||
__u_boot_cmd_end = .; |
||||
|
||||
|
||||
. = .; |
||||
__start___ex_table = .; |
||||
__ex_table : { *(__ex_table) } |
||||
__stop___ex_table = .; |
||||
|
||||
. = ALIGN(256); |
||||
__init_begin = .; |
||||
.text.init : { *(.text.init) } |
||||
.data.init : { *(.data.init) } |
||||
. = ALIGN(256); |
||||
__init_end = .; |
||||
|
||||
__bss_start = .; |
||||
.bss : |
||||
{ |
||||
_sbss = .; |
||||
*(.sbss) *(.scommon) |
||||
*(.dynbss) |
||||
*(.bss) |
||||
*(COMMON) |
||||
. = ALIGN(4); |
||||
_ebss = .; |
||||
} |
||||
_end = . ; |
||||
PROVIDE (end = .); |
||||
} |
@ -0,0 +1,145 @@ |
||||
/* |
||||
* (C) Copyright 2000 |
||||
* Wolfgang Denk, DENX Software Engineering, wd@denx.de. |
||||
* |
||||
* See file CREDITS for list of people who contributed to this |
||||
* project. |
||||
* |
||||
* This program is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU General Public License as |
||||
* published by the Free Software Foundation; either version 2 of |
||||
* the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software |
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
||||
* MA 02111-1307 USA |
||||
*/ |
||||
|
||||
OUTPUT_ARCH(m68k) |
||||
SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); |
||||
/* Do we need any of these for elf? |
||||
__DYNAMIC = 0; */ |
||||
SECTIONS |
||||
{ |
||||
/* Read-only sections, merged into text segment: */ |
||||
. = + SIZEOF_HEADERS; |
||||
.interp : { *(.interp) } |
||||
.hash : { *(.hash) } |
||||
.dynsym : { *(.dynsym) } |
||||
.dynstr : { *(.dynstr) } |
||||
.rel.text : { *(.rel.text) } |
||||
.rela.text : { *(.rela.text) } |
||||
.rel.data : { *(.rel.data) } |
||||
.rela.data : { *(.rela.data) } |
||||
.rel.rodata : { *(.rel.rodata) } |
||||
.rela.rodata : { *(.rela.rodata) } |
||||
.rel.got : { *(.rel.got) } |
||||
.rela.got : { *(.rela.got) } |
||||
.rel.ctors : { *(.rel.ctors) } |
||||
.rela.ctors : { *(.rela.ctors) } |
||||
.rel.dtors : { *(.rel.dtors) } |
||||
.rela.dtors : { *(.rela.dtors) } |
||||
.rel.bss : { *(.rel.bss) } |
||||
.rela.bss : { *(.rela.bss) } |
||||
.rel.plt : { *(.rel.plt) } |
||||
.rela.plt : { *(.rela.plt) } |
||||
.init : { *(.init) } |
||||
.plt : { *(.plt) } |
||||
.text : |
||||
{ |
||||
/* WARNING - the following is hand-optimized to fit within */ |
||||
/* the sector layout of our flash chips! XXX FIXME XXX */ |
||||
|
||||
cpu/mcf523x/start.o (.text) |
||||
cpu/mcf523x/cpu_init.o (.text) |
||||
lib_m68k/traps.o (.text) |
||||
lib_m68k/interrupts.o (.text) |
||||
common/dlmalloc.o (.text) |
||||
lib_generic/zlib.o (.text) |
||||
|
||||
. = DEFINED(env_offset) ? env_offset : .; |
||||
common/environment.o (.text) |
||||
|
||||
*(.text) |
||||
*(.fixup) |
||||
*(.got1) |
||||
} |
||||
_etext = .; |
||||
PROVIDE (etext = .); |
||||
.rodata : |
||||
{ |
||||
*(.rodata) |
||||
*(.rodata1) |
||||
} |
||||
.fini : { *(.fini) } =0 |
||||
.ctors : { *(.ctors) } |
||||
.dtors : { *(.dtors) } |
||||
|
||||
/* Read-write section, merged into data segment: */ |
||||
. = (. + 0x00FF) & 0xFFFFFF00; |
||||
_erotext = .; |
||||
PROVIDE (erotext = .); |
||||
|
||||
.reloc : |
||||
{ |
||||
__got_start = .; |
||||
*(.got) |
||||
__got_end = .; |
||||
_GOT2_TABLE_ = .; |
||||
*(.got2) |
||||
_FIXUP_TABLE_ = .; |
||||
*(.fixup) |
||||
} |
||||
__got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2; |
||||
__fixup_entries = (. - _FIXUP_TABLE_)>>2; |
||||
|
||||
.data : |
||||
{ |
||||
*(.data) |
||||
*(.data1) |
||||
*(.sdata) |
||||
*(.sdata2) |
||||
*(.dynamic) |
||||
CONSTRUCTORS |
||||
} |
||||
_edata = .; |
||||
PROVIDE (edata = .); |
||||
|
||||
. = .; |
||||
__u_boot_cmd_start = .; |
||||
.u_boot_cmd : { *(.u_boot_cmd) } |
||||
__u_boot_cmd_end = .; |
||||
|
||||
|
||||
. = .; |
||||
__start___ex_table = .; |
||||
__ex_table : { *(__ex_table) } |
||||
__stop___ex_table = .; |
||||
|
||||
. = ALIGN(256); |
||||
__init_begin = .; |
||||
.text.init : { *(.text.init) } |
||||
.data.init : { *(.data.init) } |
||||
. = ALIGN(256); |
||||
__init_end = .; |
||||
|
||||
__bss_start = .; |
||||
.bss : |
||||
{ |
||||
_sbss = .; |
||||
*(.sbss) *(.scommon) |
||||
*(.dynbss) |
||||
*(.bss) |
||||
*(COMMON) |
||||
. = ALIGN(4); |
||||
_ebss = .; |
||||
} |
||||
_end = . ; |
||||
PROVIDE (end = .); |
||||
} |
@ -0,0 +1,48 @@ |
||||
#
|
||||
# (C) Copyright 2000-2004
|
||||
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
#
|
||||
# See file CREDITS for list of people who contributed to this
|
||||
# project.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
# MA 02111-1307 USA
|
||||
#
|
||||
|
||||
include $(TOPDIR)/config.mk |
||||
|
||||
# CFLAGS += -DET_DEBUG
|
||||
|
||||
LIB = lib$(CPU).a
|
||||
|
||||
START = start.o
|
||||
COBJS = cpu.o speed.o cpu_init.o interrupts.o
|
||||
|
||||
SRCS := $(START:.o=.S) $(SOBJS:.o=.S) $(COBJS:.o=.c)
|
||||
OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
|
||||
START := $(addprefix $(obj),$(START))
|
||||
|
||||
all: $(obj).depend $(START) $(LIB) |
||||
|
||||
$(LIB): $(OBJS) |
||||
$(AR) $(ARFLAGS) $@ $(OBJS)
|
||||
|
||||
#########################################################################
|
||||
|
||||
include $(SRCTREE)/rules.mk |
||||
|
||||
sinclude $(obj).depend |
||||
|
||||
#########################################################################
|
@ -0,0 +1,27 @@ |
||||
#
|
||||
# (C) Copyright 2003 Josef Baumgartner <josef.baumgartner@telex.de>
|
||||
#
|
||||
# (C) Copyright 2000-2004
|
||||
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
#
|
||||
# See file CREDITS for list of people who contributed to this
|
||||
# project.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
# MA 02111-1307 USA
|
||||
#
|
||||
|
||||
PLATFORM_RELFLAGS += -ffixed-d7 -msep-data
|
||||
PLATFORM_CPPFLAGS += -m5307 -fPIC
|
@ -0,0 +1,109 @@ |
||||
/*
|
||||
* |
||||
* (C) Copyright 2000-2003 |
||||
* Wolfgang Denk, DENX Software Engineering, wd@denx.de. |
||||
* |
||||
* Copyright (C) 2004-2007 Freescale Semiconductor, Inc. |
||||
* TsiChung Liew (Tsi-Chung.Liew@freescale.com) |
||||
* |
||||
* See file CREDITS for list of people who contributed to this |
||||
* project. |
||||
* |
||||
* This program is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU General Public License as |
||||
* published by the Free Software Foundation; either version 2 of |
||||
* the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software |
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
||||
* MA 02111-1307 USA |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <watchdog.h> |
||||
#include <command.h> |
||||
|
||||
#include <asm/immap.h> |
||||
|
||||
DECLARE_GLOBAL_DATA_PTR; |
||||
|
||||
int do_reset(cmd_tbl_t * cmdtp, bd_t * bd, int flag, int argc, char *argv[]) |
||||
{ |
||||
volatile ccm_t *ccm = (ccm_t *) MMAP_CCM; |
||||
|
||||
ccm->rcr = CCM_RCR_SOFTRST; |
||||
/* we don't return! */ |
||||
return 0; |
||||
}; |
||||
|
||||
int checkcpu(void) |
||||
{ |
||||
volatile ccm_t *ccm = (ccm_t *) MMAP_CCM; |
||||
u16 msk; |
||||
u16 id = 0; |
||||
u8 ver; |
||||
|
||||
puts("CPU: "); |
||||
msk = (ccm->cir >> 6); |
||||
ver = (ccm->cir & 0x003f); |
||||
switch (msk) { |
||||
case 0x31: |
||||
id = 5235; |
||||
break; |
||||
} |
||||
|
||||
if (id) { |
||||
printf("Freescale MCF%d (Mask:%01x Version:%x)\n", id, msk, |
||||
ver); |
||||
printf(" CPU CLK %d Mhz BUS CLK %d Mhz\n", |
||||
(int)(gd->cpu_clk / 1000000), |
||||
(int)(gd->bus_clk / 1000000)); |
||||
} |
||||
|
||||
return 0; |
||||
}; |
||||
|
||||
#if defined(CONFIG_WATCHDOG) |
||||
/* Called by macro WATCHDOG_RESET */ |
||||
void watchdog_reset(void) |
||||
{ |
||||
volatile wdog_t *wdp = (wdog_t *) (MMAP_WDOG); |
||||
|
||||
wdp->sr = 0x5555; /* Count register */ |
||||
asm("nop"); |
||||
wdp->sr = 0xAAAA; /* Count register */ |
||||
} |
||||
|
||||
int watchdog_disable(void) |
||||
{ |
||||
volatile wdog_t *wdp = (wdog_t *) (MMAP_WDOG); |
||||
|
||||
/* UserManual, once the wdog is disabled, wdog cannot be re-enabled */ |
||||
wdp->cr |= WTM_WCR_HALTED; /* halted watchdog timer */ |
||||
|
||||
puts("WATCHDOG:disabled\n"); |
||||
return (0); |
||||
} |
||||
|
||||
int watchdog_init(void) |
||||
{ |
||||
volatile wdog_t *wdp = (wdog_t *) (MMAP_WDOG); |
||||
u32 wdog_module = 0; |
||||
|
||||
/* set timeout and enable watchdog */ |
||||
wdog_module = ((CFG_CLK / CFG_HZ) * CONFIG_WATCHDOG_TIMEOUT); |
||||
wdog_module |= (wdog_module / 8192); |
||||
wdp->mr = wdog_module; |
||||
|
||||
wdp->cr = WTM_WCR_EN; |
||||
puts("WATCHDOG:enabled\n"); |
||||
|
||||
return (0); |
||||
} |
||||
#endif /* CONFIG_WATCHDOG */ |
@ -0,0 +1,145 @@ |
||||
/*
|
||||
* |
||||
* (C) Copyright 2000-2003 |
||||
* Wolfgang Denk, DENX Software Engineering, wd@denx.de. |
||||
* |
||||
* (C) Copyright 2007 Freescale Semiconductor, Inc. |
||||
* TsiChung Liew (Tsi-Chung.Liew@freescale.com) |
||||
* |
||||
* See file CREDITS for list of people who contributed to this |
||||
* project. |
||||
* |
||||
* This program is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU General Public License as |
||||
* published by the Free Software Foundation; either version 2 of |
||||
* the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software |
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
||||
* MA 02111-1307 USA |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <watchdog.h> |
||||
|
||||
#include <asm/immap.h> |
||||
|
||||
/*
|
||||
* Breath some life into the CPU... |
||||
* |
||||
* Set up the memory map, |
||||
* initialize a bunch of registers, |
||||
* initialize the UPM's |
||||
*/ |
||||
void cpu_init_f(void) |
||||
{ |
||||
volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO; |
||||
volatile fbcs_t *fbcs = (fbcs_t *) MMAP_FBCS; |
||||
volatile wdog_t *wdog = (wdog_t *) MMAP_WDOG; |
||||
volatile scm_t *scm = (scm_t *) MMAP_SCM; |
||||
|
||||
/* watchdog is enabled by default - disable the watchdog */ |
||||
#ifndef CONFIG_WATCHDOG |
||||
wdog->cr = 0; |
||||
#endif |
||||
|
||||
scm->rambar = (CFG_INIT_RAM_ADDR | SCM_RAMBAR_BDE); |
||||
|
||||
/* Port configuration */ |
||||
gpio->par_cs = 0; |
||||
|
||||
#if (defined(CFG_CS0_BASE) && defined(CFG_CS0_MASK) && defined(CFG_CS0_CTRL)) |
||||
fbcs->csar0 = CFG_CS0_BASE; |
||||
fbcs->cscr0 = CFG_CS0_CTRL; |
||||
fbcs->csmr0 = CFG_CS0_MASK; |
||||
#endif |
||||
|
||||
#if (defined(CFG_CS1_BASE) && defined(CFG_CS1_MASK) && defined(CFG_CS1_CTRL)) |
||||
gpio->par_cs |= GPIO_PAR_CS_CS1; |
||||
fbcs->csar1 = CFG_CS1_BASE; |
||||
fbcs->cscr1 = CFG_CS1_CTRL; |
||||
fbcs->csmr1 = CFG_CS1_MASK; |
||||
#endif |
||||
|
||||
#if (defined(CFG_CS2_BASE) && defined(CFG_CS2_MASK) && defined(CFG_CS2_CTRL)) |
||||
gpio->par_cs |= GPIO_PAR_CS_CS2; |
||||
fbcs->csar2 = CFG_CS2_BASE; |
||||
fbcs->cscr2 = CFG_CS2_CTRL; |
||||
fbcs->csmr2 = CFG_CS2_MASK; |
||||
#endif |
||||
|
||||
#if (defined(CFG_CS3_BASE) && defined(CFG_CS3_MASK) && defined(CFG_CS3_CTRL)) |
||||
gpio->par_cs |= GPIO_PAR_CS_CS3; |
||||
fbcs->csar3 = CFG_CS3_BASE; |
||||
fbcs->cscr3 = CFG_CS3_CTRL; |
||||
fbcs->csmr3 = CFG_CS3_MASK; |
||||
#endif |
||||
|
||||
#if (defined(CFG_CS4_BASE) && defined(CFG_CS4_MASK) && defined(CFG_CS4_CTRL)) |
||||
gpio->par_cs |= GPIO_PAR_CS_CS4; |
||||
fbcs->csar4 = CFG_CS4_BASE; |
||||
fbcs->cscr4 = CFG_CS4_CTRL; |
||||
fbcs->csmr4 = CFG_CS4_MASK; |
||||
#endif |
||||
|
||||
#if (defined(CFG_CS5_BASE) && defined(CFG_CS5_MASK) && defined(CFG_CS5_CTRL)) |
||||
gpio->par_cs |= GPIO_PAR_CS_CS5; |
||||
fbcs->csar5 = CFG_CS5_BASE; |
||||
fbcs->cscr5 = CFG_CS5_CTRL; |
||||
fbcs->csmr5 = CFG_CS5_MASK; |
||||
#endif |
||||
|
||||
#if (defined(CFG_CS6_BASE) && defined(CFG_CS6_MASK) && defined(CFG_CS6_CTRL)) |
||||
gpio->par_cs |= GPIO_PAR_CS_CS6; |
||||
fbcs->csar6 = CFG_CS6_BASE; |
||||
fbcs->cscr6 = CFG_CS6_CTRL; |
||||
fbcs->csmr6 = CFG_CS6_MASK; |
||||
#endif |
||||
|
||||
#if (defined(CFG_CS7_BASE) && defined(CFG_CS7_MASK) && defined(CFG_CS7_CTRL)) |
||||
gpio->par_cs |= GPIO_PAR_CS_CS7; |
||||
fbcs->csar7 = CFG_CS7_BASE; |
||||
fbcs->cscr7 = CFG_CS7_CTRL; |
||||
fbcs->csmr7 = CFG_CS7_MASK; |
||||
#endif |
||||
|
||||
#ifdef CONFIG_FSL_I2C |
||||
gpio->par_feci2c &= ~(GPIO_PAR_FECI2C_SCL_MASK | GPIO_PAR_FECI2C_SDA_MASK); |
||||
gpio->par_feci2c |= (GPIO_PAR_FECI2C_SCL_I2CSCL | GPIO_PAR_FECI2C_SDA_I2CSDA); |
||||
#endif |
||||
|
||||
icache_enable(); |
||||
} |
||||
|
||||
/*
|
||||
* initialize higher level parts of CPU like timers |
||||
*/ |
||||
int cpu_init_r(void) |
||||
{ |
||||
return (0); |
||||
} |
||||
|
||||
void uart_port_conf(void) |
||||
{ |
||||
volatile gpio_t *gpio = (gpio_t *) MMAP_GPIO; |
||||
|
||||
/* Setup Ports: */ |
||||
switch (CFG_UART_PORT) { |
||||
case 0: |
||||
gpio->par_uart = (GPIO_PAR_UART_U0RXD | GPIO_PAR_UART_U0TXD); |
||||
break; |
||||
case 1: |
||||
gpio->par_uart = |
||||
(GPIO_PAR_UART_U1RXD_U1RXD | GPIO_PAR_UART_U1TXD_U1TXD); |
||||
break; |
||||
case 2: |
||||
gpio->par_timer = (GPIO_PAR_UART_U2RXD | GPIO_PAR_UART_U2TXD); |
||||
break; |
||||
} |
||||
} |
@ -0,0 +1,49 @@ |
||||
/*
|
||||
* |
||||
* Copyright (C) 2004-2007 Freescale Semiconductor, Inc. |
||||
* TsiChung Liew (Tsi-Chung.Liew@freescale.com) |
||||
* |
||||
* See file CREDITS for list of people who contributed to this |
||||
* project. |
||||
* |
||||
* This program is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU General Public License as |
||||
* published by the Free Software Foundation; either version 2 of |
||||
* the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software |
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
||||
* MA 02111-1307 USA |
||||
*/ |
||||
|
||||
/* CPU specific interrupt routine */ |
||||
#include <common.h> |
||||
#include <asm/immap.h> |
||||
|
||||
int interrupt_init(void) |
||||
{ |
||||
volatile int0_t *intp = (int0_t *) (CFG_INTR_BASE); |
||||
|
||||
/* Make sure all interrupts are disabled */ |
||||
intp->imrl0 |= 0x1; |
||||
|
||||
enable_interrupts(); |
||||
return 0; |
||||
} |
||||
|
||||
#if defined(CONFIG_MCFTMR) |
||||
void dtimer_intr_setup(void) |
||||
{ |
||||
volatile int0_t *intp = (int0_t *) (CFG_INTR_BASE); |
||||
|
||||
intp->icr0[CFG_TMRINTR_NO] = CFG_TMRINTR_PRI; |
||||
intp->imrl0 &= ~INTC_IPRL_INT0; |
||||
intp->imrl0 &= ~CFG_TMRINTR_MASK; |
||||
} |
||||
#endif |
@ -0,0 +1,48 @@ |
||||
/*
|
||||
* |
||||
* (C) Copyright 2000-2003 |
||||
* Wolfgang Denk, DENX Software Engineering, wd@denx.de. |
||||
* |
||||
* Copyright (C) 2004-2007 Freescale Semiconductor, Inc. |
||||
* TsiChung Liew (Tsi-Chung.Liew@freescale.com) |
||||
* |
||||
* See file CREDITS for list of people who contributed to this |
||||
* project. |
||||
* |
||||
* This program is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU General Public License as |
||||
* published by the Free Software Foundation; either version 2 of |
||||
* the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software |
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
||||
* MA 02111-1307 USA |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <asm/processor.h> |
||||
|
||||
#include <asm/immap.h> |
||||
|
||||
DECLARE_GLOBAL_DATA_PTR; |
||||
/*
|
||||
* get_clocks() fills in gd->cpu_clock and gd->bus_clk |
||||
*/ |
||||
int get_clocks(void) |
||||
{ |
||||
volatile pll_t *pll = (volatile pll_t *)(MMAP_PLL); |
||||
|
||||
pll->syncr = PLL_SYNCR_MFD(1); |
||||
|
||||
while (!(pll->synsr & PLL_SYNSR_LOCK)); |
||||
|
||||
gd->bus_clk = CFG_CLK; |
||||
gd->cpu_clk = (gd->bus_clk * 2); |
||||
return (0); |
||||
} |
@ -0,0 +1,340 @@ |
||||
/* |
||||
* Copyright (C) 2003 Josef Baumgartner <josef.baumgartner@telex.de>
|
||||
* Based on code from Bernhard Kuhn <bkuhn@metrowerks.com>
|
||||
* |
||||
* See file CREDITS for list of people who contributed to this |
||||
* project. |
||||
* |
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as |
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
||||
* MA 02111-1307 USA |
||||
*/ |
||||
|
||||
#include <config.h> |
||||
#include "version.h" |
||||
|
||||
#ifndef CONFIG_IDENT_STRING |
||||
#define CONFIG_IDENT_STRING "" |
||||
#endif |
||||
|
||||
#define _START _start |
||||
#define _FAULT _fault |
||||
|
||||
#define SAVE_ALL \ |
||||
move.w #0x2700,%sr; /* disable intrs */ \
|
||||
subl #60,%sp; /* space for 15 regs */ \
|
||||
moveml %d0-%d7/%a0-%a6,%sp@;
|
||||
|
||||
#define RESTORE_ALL \ |
||||
moveml %sp@,%d0-%d7/%a0-%a6; \
|
||||
addl #60,%sp; /* space for 15 regs */ \
|
||||
rte;
|
||||
|
||||
.text |
||||
/* |
||||
* Vector table. This is used for initial platform startup. |
||||
* These vectors are to catch any un-intended traps. |
||||
*/ |
||||
_vectors: |
||||
|
||||
INITSP: .long 0x00000000 /* Initial SP */ |
||||
INITPC: .long _START /* Initial PC */ |
||||
vector02: .long _FAULT /* Access Error */ |
||||
vector03: .long _FAULT /* Address Error */ |
||||
vector04: .long _FAULT /* Illegal Instruction */ |
||||
vector05: .long _FAULT /* Reserved */ |
||||
vector06: .long _FAULT /* Reserved */ |
||||
vector07: .long _FAULT /* Reserved */ |
||||
vector08: .long _FAULT /* Privilege Violation */ |
||||
vector09: .long _FAULT /* Trace */ |
||||
vector0A: .long _FAULT /* Unimplemented A-Line */ |
||||
vector0B: .long _FAULT /* Unimplemented F-Line */ |
||||
vector0C: .long _FAULT /* Debug Interrupt */ |
||||
vector0D: .long _FAULT /* Reserved */ |
||||
vector0E: .long _FAULT /* Format Error */ |
||||
vector0F: .long _FAULT /* Unitialized Int. */ |
||||
|
||||
/* Reserved */ |
||||
vector10_17: |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
|
||||
vector18: .long _FAULT /* Spurious Interrupt */ |
||||
vector19: .long _FAULT /* Autovector Level 1 */ |
||||
vector1A: .long _FAULT /* Autovector Level 2 */ |
||||
vector1B: .long _FAULT /* Autovector Level 3 */ |
||||
vector1C: .long _FAULT /* Autovector Level 4 */ |
||||
vector1D: .long _FAULT /* Autovector Level 5 */ |
||||
vector1E: .long _FAULT /* Autovector Level 6 */ |
||||
vector1F: .long _FAULT /* Autovector Level 7 */ |
||||
|
||||
/* TRAP #0 - #15 */ |
||||
vector20_2F: |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
|
||||
/* Reserved */ |
||||
vector30_3F: |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
|
||||
vector64_127: |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
|
||||
vector128_191: |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
|
||||
vector192_255: |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
.long _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT, _FAULT |
||||
|
||||
.text |
||||
|
||||
.globl _start
|
||||
_start: |
||||
nop |
||||
nop |
||||
move.w #0x2700,%sr /* Mask off Interrupt */ |
||||
|
||||
/* Set vector base register at the beginning of the Flash */ |
||||
move.l #CFG_FLASH_BASE, %d0 |
||||
movec %d0, %VBR |
||||
|
||||
move.l #(CFG_INIT_RAM_ADDR + CFG_INIT_RAM_CTRL), %d0 |
||||
movec %d0, %RAMBAR1 |
||||
|
||||
/* invalidate and disable cache */ |
||||
move.l #0x01000000, %d0 /* Invalidate cache cmd */ |
||||
movec %d0, %CACR /* Invalidate cache */ |
||||
nop |
||||
move.l #0, %d0 |
||||
movec %d0, %ACR0 |
||||
movec %d0, %ACR1 |
||||
|
||||
/* initialize general use internal ram */ |
||||
move.l #0, %d0 |
||||
move.l #(CFG_INIT_RAM_ADDR+CFG_INIT_RAM_END-8), %a1 |
||||
move.l #(CFG_INIT_RAM_ADDR+CFG_INIT_RAM_END-4), %a2 |
||||
move.l %d0, (%a1) |
||||
move.l %d0, (%a2) |
||||
|
||||
/* set stackpointer to end of internal ram to get some stackspace for the |
||||
first c-code */ |
||||
move.l #(CFG_INIT_RAM_ADDR + CFG_INIT_SP_OFFSET), %sp |
||||
clr.l %sp@-
|
||||
|
||||
move.l #__got_start, %a5 /* put relocation table address to a5 */ |
||||
|
||||
bsr cpu_init_f /* run low-level CPU init code (from flash) */ |
||||
bsr board_init_f /* run low-level board init code (from flash) */ |
||||
|
||||
/* board_init_f() does not return */ |
||||
|
||||
/*------------------------------------------------------------------------------*/ |
||||
|
||||
/* |
||||
* void relocate_code (addr_sp, gd, addr_moni) |
||||
* |
||||
* This "function" does not return, instead it continues in RAM |
||||
* after relocating the monitor code. |
||||
* |
||||
* r3 = dest |
||||
* r4 = src |
||||
* r5 = length in bytes |
||||
* r6 = cachelinesize |
||||
*/ |
||||
.globl relocate_code
|
||||
relocate_code: |
||||
link.w %a6,#0 |
||||
move.l 8(%a6), %sp /* set new stack pointer */ |
||||
|
||||
move.l 12(%a6), %d0 /* Save copy of Global Data pointer */ |
||||
move.l 16(%a6), %a0 /* Save copy of Destination Address */ |
||||
|
||||
move.l #CFG_MONITOR_BASE, %a1 |
||||
move.l #__init_end, %a2 |
||||
move.l %a0, %a3 |
||||
|
||||
/* copy the code to RAM */ |
||||
1: |
||||
move.l (%a1)+, (%a3)+ |
||||
cmp.l %a1,%a2 |
||||
bgt.s 1b |
||||
|
||||
/* |
||||
* We are done. Do not return, instead branch to second part of board |
||||
* initialization, now running from RAM. |
||||
*/ |
||||
move.l %a0, %a1 |
||||
add.l #(in_ram - CFG_MONITOR_BASE), %a1 |
||||
jmp (%a1) |
||||
|
||||
in_ram: |
||||
|
||||
clear_bss: |
||||
/* |
||||
* Now clear BSS segment |
||||
*/ |
||||
move.l %a0, %a1 |
||||
add.l #(_sbss - CFG_MONITOR_BASE),%a1 |
||||
move.l %a0, %d1 |
||||
add.l #(_ebss - CFG_MONITOR_BASE),%d1 |
||||
6: |
||||
clr.l (%a1)+ |
||||
cmp.l %a1,%d1 |
||||
bgt.s 6b |
||||
|
||||
/* |
||||
* fix got table in RAM |
||||
*/ |
||||
move.l %a0, %a1 |
||||
add.l #(__got_start - CFG_MONITOR_BASE),%a1 |
||||
move.l %a1,%a5 /* * fix got pointer register a5 */ |
||||
|
||||
move.l %a0, %a2 |
||||
add.l #(__got_end - CFG_MONITOR_BASE),%a2 |
||||
|
||||
7: |
||||
move.l (%a1),%d1 |
||||
sub.l #_start,%d1 |
||||
add.l %a0,%d1 |
||||
move.l %d1,(%a1)+ |
||||
cmp.l %a2, %a1 |
||||
bne 7b |
||||
|
||||
/* calculate relative jump to board_init_r in ram */ |
||||
move.l %a0, %a1 |
||||
add.l #(board_init_r - CFG_MONITOR_BASE), %a1 |
||||
|
||||
/* set parameters for board_init_r */ |
||||
move.l %a0,-(%sp) /* dest_addr */ |
||||
move.l %d0,-(%sp) /* gd */ |
||||
jsr (%a1) |
||||
|
||||
/*------------------------------------------------------------------------------*/ |
||||
/* exception code */ |
||||
.globl _fault
|
||||
_fault: |
||||
jmp _fault |
||||
.globl _exc_handler
|
||||
|
||||
_exc_handler: |
||||
SAVE_ALL |
||||
movel %sp,%sp@-
|
||||
bsr exc_handler |
||||
addql #4,%sp |
||||
RESTORE_ALL |
||||
|
||||
.globl _int_handler
|
||||
_int_handler: |
||||
SAVE_ALL |
||||
movel %sp,%sp@-
|
||||
bsr int_handler |
||||
addql #4,%sp |
||||
RESTORE_ALL |
||||
|
||||
/*------------------------------------------------------------------------------*/ |
||||
/* cache functions */ |
||||
.globl icache_enable
|
||||
icache_enable: |
||||
move.l #0x01000000, %d0 /* Invalidate cache cmd */ |
||||
movec %d0, %CACR /* Invalidate cache */ |
||||
nop |
||||
move.l #(CFG_SDRAM_BASE + 0xc000), %d0 /* Setup cache mask */ |
||||
movec %d0, %ACR0 /* Enable cache */ |
||||
move.l #(CFG_FLASH_BASE + 0xc000), %d0 /* Setup cache mask */ |
||||
movec %d0, %ACR1 /* Enable cache */ |
||||
|
||||
move.l #0x80400100, %d0 /* Setup cache mask */ |
||||
movec %d0, %CACR /* Enable cache */ |
||||
nop |
||||
|
||||
move.l #(CFG_INIT_RAM_ADDR+CFG_INIT_RAM_END-8), %a1 |
||||
moveq #1, %d0 |
||||
move.l %d0, (%a1) |
||||
rts |
||||
|
||||
.globl icache_disable
|
||||
icache_disable: |
||||
move.l #0x00000100, %d0 /* Setup cache mask */ |
||||
movec %d0, %CACR /* Disable cache */ |
||||
clr.l %d0 /* Setup cache mask */ |
||||
movec %d0, %ACR0 |
||||
movec %d0, %ACR1 |
||||
|
||||
move.l #(CFG_INIT_RAM_ADDR+CFG_INIT_RAM_END-8), %a1 |
||||
moveq #0, %d0 |
||||
move.l %d0, (%a1) |
||||
rts |
||||
|
||||
.globl icache_status
|
||||
icache_status: |
||||
move.l #(CFG_INIT_RAM_ADDR+CFG_INIT_RAM_END-8), %a1 |
||||
move.l (%a1), %d0 |
||||
rts |
||||
|
||||
.globl icache_invalid
|
||||
icache_invalid: |
||||
move.l #0x80600100, %d0 /* Setup cache mask */ |
||||
movec %d0, %CACR /* Enable cache */ |
||||
nop |
||||
rts |
||||
|
||||
.globl dcache_enable
|
||||
dcache_enable: |
||||
move.l #(CFG_INIT_RAM_ADDR+CFG_INIT_RAM_END-4), %a1 |
||||
moveq #1, %d0 |
||||
move.l %d0, (%a1) |
||||
rts |
||||
|
||||
/* No dcache, just a dummy function */ |
||||
.globl dcache_disable
|
||||
dcache_disable: |
||||
move.l #(CFG_INIT_RAM_ADDR+CFG_INIT_RAM_END-4), %a1 |
||||
moveq #0, %d0 |
||||
move.l %d0, (%a1) |
||||
rts |
||||
|
||||
.globl dcache_status
|
||||
dcache_status: |
||||
move.l #(CFG_INIT_RAM_ADDR+CFG_INIT_RAM_END-4), %a1 |
||||
move.l (%a1), %d0 |
||||
rts |
||||
|
||||
/*------------------------------------------------------------------------------*/ |
||||
|
||||
.globl version_string
|
||||
version_string: |
||||
.ascii U_BOOT_VERSION
|
||||
.ascii " (", __DATE__, " - ", __TIME__, ")" |
||||
.ascii CONFIG_IDENT_STRING, "\0" |
@ -0,0 +1,378 @@ |
||||
/*
|
||||
* MCF5329 Internal Memory Map |
||||
* |
||||
* Copyright (C) 2004-2007 Freescale Semiconductor, Inc. |
||||
* TsiChung Liew (Tsi-Chung.Liew@freescale.com) |
||||
* |
||||
* See file CREDITS for list of people who contributed to this |
||||
* project. |
||||
* |
||||
* This program is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU General Public License as |
||||
* published by the Free Software Foundation; either version 2 of |
||||
* the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software |
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
||||
* MA 02111-1307 USA |
||||
*/ |
||||
|
||||
#ifndef __IMMAP_5235__ |
||||
#define __IMMAP_5235__ |
||||
|
||||
#define MMAP_SCM (CFG_MBAR + 0x00000000) |
||||
#define MMAP_SDRAM (CFG_MBAR + 0x00000040) |
||||
#define MMAP_FBCS (CFG_MBAR + 0x00000080) |
||||
#define MMAP_DMA0 (CFG_MBAR + 0x00000100) |
||||
#define MMAP_DMA1 (CFG_MBAR + 0x00000110) |
||||
#define MMAP_DMA2 (CFG_MBAR + 0x00000120) |
||||
#define MMAP_DMA3 (CFG_MBAR + 0x00000130) |
||||
#define MMAP_UART0 (CFG_MBAR + 0x00000200) |
||||
#define MMAP_UART1 (CFG_MBAR + 0x00000240) |
||||
#define MMAP_UART2 (CFG_MBAR + 0x00000280) |
||||
#define MMAP_I2C (CFG_MBAR + 0x00000300) |
||||
#define MMAP_QSPI (CFG_MBAR + 0x00000340) |
||||
#define MMAP_DTMR0 (CFG_MBAR + 0x00000400) |
||||
#define MMAP_DTMR1 (CFG_MBAR + 0x00000440) |
||||
#define MMAP_DTMR2 (CFG_MBAR + 0x00000480) |
||||
#define MMAP_DTMR3 (CFG_MBAR + 0x000004C0) |
||||
#define MMAP_INTC0 (CFG_MBAR + 0x00000C00) |
||||
#define MMAP_INTC1 (CFG_MBAR + 0x00000D00) |
||||
#define MMAP_INTCACK (CFG_MBAR + 0x00000F00) |
||||
#define MMAP_FEC (CFG_MBAR + 0x00001000) |
||||
#define MMAP_FECFIFO (CFG_MBAR + 0x00001400) |
||||
#define MMAP_GPIO (CFG_MBAR + 0x00100000) |
||||
#define MMAP_CCM (CFG_MBAR + 0x00110000) |
||||
#define MMAP_PLL (CFG_MBAR + 0x00120000) |
||||
#define MMAP_EPORT (CFG_MBAR + 0x00130000) |
||||
#define MMAP_WDOG (CFG_MBAR + 0x00140000) |
||||
#define MMAP_PIT0 (CFG_MBAR + 0x00150000) |
||||
#define MMAP_PIT1 (CFG_MBAR + 0x00160000) |
||||
#define MMAP_PIT2 (CFG_MBAR + 0x00170000) |
||||
#define MMAP_PIT3 (CFG_MBAR + 0x00180000) |
||||
#define MMAP_MDHA (CFG_MBAR + 0x00190000) |
||||
#define MMAP_RNG (CFG_MBAR + 0x001A0000) |
||||
#define MMAP_SKHA (CFG_MBAR + 0x001B0000) |
||||
#define MMAP_CAN1 (CFG_MBAR + 0x001C0000) |
||||
#define MMAP_ETPU (CFG_MBAR + 0x001D0000) |
||||
#define MMAP_CAN2 (CFG_MBAR + 0x001F0000) |
||||
|
||||
/* System Control Module register */ |
||||
typedef struct scm_ctrl { |
||||
u32 ipsbar; /* 0x00 - MBAR */ |
||||
u32 res1; /* 0x04 */ |
||||
u32 rambar; /* 0x08 - RAMBAR */ |
||||
u32 res2; /* 0x0C */ |
||||
u8 crsr; /* 0x10 Core Reset Status Register */ |
||||
u8 cwcr; /* 0x11 Core Watchdog Control Register */ |
||||
u8 lpicr; /* 0x12 Low-Power Interrupt Control Register */ |
||||
u8 cwsr; /* 0x13 Core Watchdog Service Register */ |
||||
u32 dmareqc; /* 0x14 */ |
||||
u32 res3; /* 0x18 */ |
||||
u32 mpark; /* 0x1C */ |
||||
u8 mpr; /* 0x20 */ |
||||
u8 res4[3]; /* 0x21 - 0x23 */ |
||||
u8 pacr0; /* 0x24 */ |
||||
u8 pacr1; /* 0x25 */ |
||||
u8 pacr2; /* 0x26 */ |
||||
u8 pacr3; /* 0x27 */ |
||||
u8 pacr4; /* 0x28 */ |
||||
u32 res5; /* 0x29 */ |
||||
u8 pacr5; /* 0x2a */ |
||||
u8 pacr6; /* 0x2b */ |
||||
u8 pacr7; /* 0x2c */ |
||||
u32 res6; /* 0x2d */ |
||||
u8 pacr8; /* 0x2e */ |
||||
u32 res7; /* 0x2f */ |
||||
u8 gpacr; /* 0x30 */ |
||||
u8 res8[3]; /* 0x31 - 0x33 */ |
||||
} scm_t; |
||||
|
||||
/* SDRAM controller registers */ |
||||
typedef struct sdram_ctrl { |
||||
u16 dcr; /* 0x00 Control register */ |
||||
u16 res1[3]; /* 0x02 - 0x07 */ |
||||
u32 dacr0; /* 0x08 address and control register 0 */ |
||||
u32 dmr0; /* 0x0C mask register block 0 */ |
||||
u32 dacr1; /* 0x10 address and control register 1 */ |
||||
u32 dmr1; /* 0x14 mask register block 1 */ |
||||
} sdram_t; |
||||
|
||||
/* Flexbus module Chip select registers */ |
||||
typedef struct fbcs_ctrl { |
||||
u16 csar0; /* 0x00 Chip-Select Address Register 0 */ |
||||
u16 res0; |
||||
u32 csmr0; /* 0x04 Chip-Select Mask Register 0 */ |
||||
u16 res1; /* 0x08 */ |
||||
u16 cscr0; /* 0x0A Chip-Select Control Register 0 */ |
||||
|
||||
u16 csar1; /* 0x0C Chip-Select Address Register 1 */ |
||||
u16 res2; |
||||
u32 csmr1; /* 0x10 Chip-Select Mask Register 1 */ |
||||
u16 res3; /* 0x14 */ |
||||
u16 cscr1; /* 0x16 Chip-Select Control Register 1 */ |
||||
|
||||
u16 csar2; /* 0x18 Chip-Select Address Register 2 */ |
||||
u16 res4; |
||||
u32 csmr2; /* 0x1C Chip-Select Mask Register 2 */ |
||||
u16 res5; /* 0x20 */ |
||||
u16 cscr2; /* 0x22 Chip-Select Control Register 2 */ |
||||
|
||||
u16 csar3; /* 0x24 Chip-Select Address Register 3 */ |
||||
u16 res6; |
||||
u32 csmr3; /* 0x28 Chip-Select Mask Register 3 */ |
||||
u16 res7; /* 0x2C */ |
||||
u16 cscr3; /* 0x2E Chip-Select Control Register 3 */ |
||||
|
||||
u16 csar4; /* 0x30 Chip-Select Address Register 4 */ |
||||
u16 res8; |
||||
u32 csmr4; /* 0x34 Chip-Select Mask Register 4 */ |
||||
u16 res9; /* 0x38 */ |
||||
u16 cscr4; /* 0x3A Chip-Select Control Register 4 */ |
||||
|
||||
u16 csar5; /* 0x3C Chip-Select Address Register 5 */ |
||||
u16 res10; |
||||
u32 csmr5; /* 0x40 Chip-Select Mask Register 5 */ |
||||
u16 res11; /* 0x44 */ |
||||
u16 cscr5; /* 0x46 Chip-Select Control Register 5 */ |
||||
|
||||
u16 csar6; /* 0x48 Chip-Select Address Register 5 */ |
||||
u16 res12; |
||||
u32 csmr6; /* 0x4C Chip-Select Mask Register 5 */ |
||||
u16 res13; /* 0x50 */ |
||||
u16 cscr6; /* 0x52 Chip-Select Control Register 5 */ |
||||
|
||||
u16 csar7; /* 0x54 Chip-Select Address Register 5 */ |
||||
u16 res14; |
||||
u32 csmr7; /* 0x58 Chip-Select Mask Register 5 */ |
||||
u16 res15; /* 0x5C */ |
||||
u16 cscr7; /* 0x5E Chip-Select Control Register 5 */ |
||||
} fbcs_t; |
||||
|
||||
/* QSPI module registers */ |
||||
typedef struct qspi_ctrl { |
||||
u16 qmr; /* Mode register */ |
||||
u16 res1; |
||||
u16 qdlyr; /* Delay register */ |
||||
u16 res2; |
||||
u16 qwr; /* Wrap register */ |
||||
u16 res3; |
||||
u16 qir; /* Interrupt register */ |
||||
u16 res4; |
||||
u16 qar; /* Address register */ |
||||
u16 res5; |
||||
u16 qdr; /* Data register */ |
||||
u16 res6; |
||||
} qspi_t; |
||||
|
||||
/* Interrupt module registers */ |
||||
typedef struct int0_ctrl { |
||||
/* Interrupt Controller 0 */ |
||||
u32 iprh0; /* 0x00 Pending Register High */ |
||||
u32 iprl0; /* 0x04 Pending Register Low */ |
||||
u32 imrh0; /* 0x08 Mask Register High */ |
||||
u32 imrl0; /* 0x0C Mask Register Low */ |
||||
u32 frch0; /* 0x10 Force Register High */ |
||||
u32 frcl0; /* 0x14 Force Register Low */ |
||||
u8 irlr; /* 0x18 */ |
||||
u8 iacklpr; /* 0x19 */ |
||||
u16 res1[19]; /* 0x1a - 0x3c */ |
||||
u8 icr0[64]; /* 0x40 - 0x7F Control registers */ |
||||
u32 res3[24]; /* 0x80 - 0xDF */ |
||||
u8 swiack0; /* 0xE0 Software Interrupt Acknowledge */ |
||||
u8 res4[3]; /* 0xE1 - 0xE3 */ |
||||
u8 Lniack0_1; /* 0xE4 Level n interrupt acknowledge resister */ |
||||
u8 res5[3]; /* 0xE5 - 0xE7 */ |
||||
u8 Lniack0_2; /* 0xE8 Level n interrupt acknowledge resister */ |
||||
u8 res6[3]; /* 0xE9 - 0xEB */ |
||||
u8 Lniack0_3; /* 0xEC Level n interrupt acknowledge resister */ |
||||
u8 res7[3]; /* 0xED - 0xEF */ |
||||
u8 Lniack0_4; /* 0xF0 Level n interrupt acknowledge resister */ |
||||
u8 res8[3]; /* 0xF1 - 0xF3 */ |
||||
u8 Lniack0_5; /* 0xF4 Level n interrupt acknowledge resister */ |
||||
u8 res9[3]; /* 0xF5 - 0xF7 */ |
||||
u8 Lniack0_6; /* 0xF8 Level n interrupt acknowledge resister */ |
||||
u8 resa[3]; /* 0xF9 - 0xFB */ |
||||
u8 Lniack0_7; /* 0xFC Level n interrupt acknowledge resister */ |
||||
u8 resb[3]; /* 0xFD - 0xFF */ |
||||
} int0_t; |
||||
|
||||
typedef struct int1_ctrl { |
||||
/* Interrupt Controller 1 */ |
||||
u32 iprh1; /* 0x00 Pending Register High */ |
||||
u32 iprl1; /* 0x04 Pending Register Low */ |
||||
u32 imrh1; /* 0x08 Mask Register High */ |
||||
u32 imrl1; /* 0x0C Mask Register Low */ |
||||
u32 frch1; /* 0x10 Force Register High */ |
||||
u32 frcl1; /* 0x14 Force Register Low */ |
||||
u8 irlr; /* 0x18 */ |
||||
u8 iacklpr; /* 0x19 */ |
||||
u16 res1[19]; /* 0x1a - 0x3c */ |
||||
u8 icr1[64]; /* 0x40 - 0x7F */ |
||||
u32 res4[24]; /* 0x80 - 0xDF */ |
||||
u8 swiack1; /* 0xE0 Software Interrupt Acknowledge */ |
||||
u8 res5[3]; /* 0xE1 - 0xE3 */ |
||||
u8 Lniack1_1; /* 0xE4 Level n interrupt acknowledge resister */ |
||||
u8 res6[3]; /* 0xE5 - 0xE7 */ |
||||
u8 Lniack1_2; /* 0xE8 Level n interrupt acknowledge resister */ |
||||
u8 res7[3]; /* 0xE9 - 0xEB */ |
||||
u8 Lniack1_3; /* 0xEC Level n interrupt acknowledge resister */ |
||||
u8 res8[3]; /* 0xED - 0xEF */ |
||||
u8 Lniack1_4; /* 0xF0 Level n interrupt acknowledge resister */ |
||||
u8 res9[3]; /* 0xF1 - 0xF3 */ |
||||
u8 Lniack1_5; /* 0xF4 Level n interrupt acknowledge resister */ |
||||
u8 resa[3]; /* 0xF5 - 0xF7 */ |
||||
u8 Lniack1_6; /* 0xF8 Level n interrupt acknowledge resister */ |
||||
u8 resb[3]; /* 0xF9 - 0xFB */ |
||||
u8 Lniack1_7; /* 0xFC Level n interrupt acknowledge resister */ |
||||
u8 resc[3]; /* 0xFD - 0xFF */ |
||||
} int1_t; |
||||
|
||||
typedef struct intgack_ctrl1 { |
||||
/* Global IACK Registers */ |
||||
u8 swiack; /* 0xE0 Global Software Interrupt Acknowledge */ |
||||
u8 Lniack[7]; /* 0xE1 - 0xE7 Global Level 0 Interrupt Acknowledge */ |
||||
} intgack_t; |
||||
|
||||
/* GPIO port registers */ |
||||
typedef struct gpio_ctrl { |
||||
/* Port Output Data Registers */ |
||||
u8 podr_addr; /* 0x00 */ |
||||
u8 podr_datah; /* 0x01 */ |
||||
u8 podr_datal; /* 0x02 */ |
||||
u8 podr_busctl; /* 0x03 */ |
||||
u8 podr_bs; /* 0x04 */ |
||||
u8 podr_cs; /* 0x05 */ |
||||
u8 podr_sdram; /* 0x06 */ |
||||
u8 podr_feci2c; /* 0x07 */ |
||||
u8 podr_uarth; /* 0x08 */ |
||||
u8 podr_uartl; /* 0x09 */ |
||||
u8 podr_qspi; /* 0x0A */ |
||||
u8 podr_timer; /* 0x0B */ |
||||
u8 podr_etpu; /* 0x0C */ |
||||
u8 res1[3]; /* 0x0D - 0x0F */ |
||||
|
||||
/* Port Data Direction Registers */ |
||||
u8 pddr_addr; /* 0x10 */ |
||||
u8 pddr_datah; /* 0x11 */ |
||||
u8 pddr_datal; /* 0x12 */ |
||||
u8 pddr_busctl; /* 0x13 */ |
||||
u8 pddr_bs; /* 0x14 */ |
||||
u8 pddr_cs; /* 0x15 */ |
||||
u8 pddr_sdram; /* 0x16 */ |
||||
u8 pddr_feci2c; /* 0x17 */ |
||||
u8 pddr_uarth; /* 0x18 */ |
||||
u8 pddr_uartl; /* 0x19 */ |
||||
u8 pddr_qspi; /* 0x1A */ |
||||
u8 pddr_timer; /* 0x1B */ |
||||
u8 pddr_etpu; /* 0x1C */ |
||||
u8 res2[3]; /* 0x1D - 0x1F */ |
||||
|
||||
/* Port Data Direction Registers */ |
||||
u8 ppdsdr_addr; /* 0x20 */ |
||||
u8 ppdsdr_datah; /* 0x21 */ |
||||
u8 ppdsdr_datal; /* 0x22 */ |
||||
u8 ppdsdr_busctl; /* 0x23 */ |
||||
u8 ppdsdr_bs; /* 0x24 */ |
||||
u8 ppdsdr_cs; /* 0x25 */ |
||||
u8 ppdsdr_sdram; /* 0x26 */ |
||||
u8 ppdsdr_feci2c; /* 0x27 */ |
||||
u8 ppdsdr_uarth; /* 0x28 */ |
||||
u8 ppdsdr_uartl; /* 0x29 */ |
||||
u8 ppdsdr_qspi; /* 0x2A */ |
||||
u8 ppdsdr_timer; /* 0x2B */ |
||||
u8 ppdsdr_etpu; /* 0x2C */ |
||||
u8 res3[3]; /* 0x2D - 0x2F */ |
||||
|
||||
/* Port Clear Output Data Registers */ |
||||
u8 pclrr_addr; /* 0x30 */ |
||||
u8 pclrr_datah; /* 0x31 */ |
||||
u8 pclrr_datal; /* 0x32 */ |
||||
u8 pclrr_busctl; /* 0x33 */ |
||||
u8 pclrr_bs; /* 0x34 */ |
||||
u8 pclrr_cs; /* 0x35 */ |
||||
u8 pclrr_sdram; /* 0x36 */ |
||||
u8 pclrr_feci2c; /* 0x37 */ |
||||
u8 pclrr_uarth; /* 0x38 */ |
||||
u8 pclrr_uartl; /* 0x39 */ |
||||
u8 pclrr_qspi; /* 0x3A */ |
||||
u8 pclrr_timer; /* 0x3B */ |
||||
u8 pclrr_etpu; /* 0x3C */ |
||||
u8 res4[3]; /* 0x3D - 0x3F */ |
||||
|
||||
/* Pin Assignment Registers */ |
||||
u8 par_ad; /* 0x40 */ |
||||
u8 res5; /* 0x41 */ |
||||
u16 par_busctl; /* 0x42 */ |
||||
u8 par_bs; /* 0x44 */ |
||||
u8 par_cs; /* 0x45 */ |
||||
u8 par_sdram; /* 0x46 */ |
||||
u8 par_feci2c; /* 0x47 */ |
||||
u16 par_uart; /* 0x48 */ |
||||
u8 par_qspi; /* 0x4A */ |
||||
u8 res6; /* 0x4B */ |
||||
u16 par_timer; /* 0x4C */ |
||||
u8 par_etpu; /* 0x4E */ |
||||
u8 res7; /* 0x4F */ |
||||
|
||||
/* Drive Strength Control Registers */ |
||||
u8 dscr_eim; /* 0x50 */ |
||||
u8 dscr_etpu; /* 0x51 */ |
||||
u8 dscr_feci2c; /* 0x52 */ |
||||
u8 dscr_uart; /* 0x53 */ |
||||
u8 dscr_qspi; /* 0x54 */ |
||||
u8 dscr_timer; /* 0x55 */ |
||||
u16 res8; /* 0x56 */ |
||||
} gpio_t; |
||||
|
||||
/*Chip configuration module registers */ |
||||
typedef struct ccm_ctrl { |
||||
u8 rcr; /* 0x01 */ |
||||
u8 rsr; /* 0x02 */ |
||||
u16 res1; /* 0x03 */ |
||||
u16 ccr; /* 0x04 Chip configuration register */ |
||||
u16 lpcr; /* 0x06 Low-power Control register */ |
||||
u16 rcon; /* 0x08 Rreset configuration register */ |
||||
u16 cir; /* 0x0a Chip identification register */ |
||||
} ccm_t; |
||||
|
||||
/* Clock Module registers */ |
||||
typedef struct pll_ctrl { |
||||
u32 syncr; /* 0x00 synthesizer control register */ |
||||
u32 synsr; /* 0x04 synthesizer status register */ |
||||
} pll_t; |
||||
|
||||
/* Watchdog registers */ |
||||
typedef struct wdog_ctrl { |
||||
u16 cr; /* 0x00 Control register */ |
||||
u16 mr; /* 0x02 Modulus register */ |
||||
u16 cntr; /* 0x04 Count register */ |
||||
u16 sr; /* 0x06 Service register */ |
||||
} wdog_t; |
||||
|
||||
/* FlexCan module registers */ |
||||
typedef struct can_ctrl { |
||||
u32 mcr; /* 0x00 Module Configuration register */ |
||||
u32 ctrl; /* 0x04 Control register */ |
||||
u32 timer; /* 0x08 Free Running Timer */ |
||||
u32 res1; /* 0x0C */ |
||||
u32 rxgmask; /* 0x10 Rx Global Mask */ |
||||
u32 rx14mask; /* 0x14 RxBuffer 14 Mask */ |
||||
u32 rx15mask; /* 0x18 RxBuffer 15 Mask */ |
||||
u32 errcnt; /* 0x1C Error Counter Register */ |
||||
u32 errstat; /* 0x20 Error and status Register */ |
||||
u32 res2; /* 0x24 */ |
||||
u32 imask; /* 0x28 Interrupt Mask Register */ |
||||
u32 res3; /* 0x2C */ |
||||
u32 iflag; /* 0x30 Interrupt Flag Register */ |
||||
u32 res4[19]; /* 0x34 - 0x7F */ |
||||
u32 MB0_15[2048]; /* 0x80 Message Buffer 0-15 */ |
||||
} can_t; |
||||
|
||||
#endif /* __IMMAP_5235__ */ |
@ -0,0 +1,905 @@ |
||||
/*
|
||||
* mcf5329.h -- Definitions for Freescale Coldfire 5329 |
||||
* |
||||
* Copyright (C) 2004-2007 Freescale Semiconductor, Inc. |
||||
* TsiChung Liew (Tsi-Chung.Liew@freescale.com) |
||||
* |
||||
* See file CREDITS for list of people who contributed to this |
||||
* project. |
||||
* |
||||
* This program is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU General Public License as |
||||
* published by the Free Software Foundation; either version 2 of |
||||
* the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software |
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
||||
* MA 02111-1307 USA |
||||
*/ |
||||
|
||||
#ifndef mcf5235_h |
||||
#define mcf5235_h |
||||
/****************************************************************************/ |
||||
|
||||
/*********************************************************************
|
||||
* System Control Module (SCM) |
||||
*********************************************************************/ |
||||
|
||||
/* Bit definition and macros for SCM_IPSBAR */ |
||||
#define SCM_IPSBAR_BA(x) (((x)&0x03)<<30) |
||||
#define SCM_IPSBAR_V (0x00000001) |
||||
|
||||
/* Bit definition and macros for SCM_RAMBAR */ |
||||
#define SCM_RAMBAR_BA(x) (((x)&0xFFFF)<<16) |
||||
#define SCM_RAMBAR_BDE (0x00000200) |
||||
|
||||
/* Bit definition and macros for SCM_CRSR */ |
||||
#define SCM_CRSR_EXT (0x80) |
||||
|
||||
/* Bit definitions and macros for SCM_CWCR */ |
||||
#define SCM_CWCR_CWE (0x80) |
||||
#define SCM_CWCR_CWRI (0x40) |
||||
#define SCM_CWCR_CWT(x) (((x)&0x07)<<3) |
||||
#define SCM_CWCR_CWTA (0x04) |
||||
#define SCM_CWCR_CWTAVAL (0x02) |
||||
#define SCM_CWCR_CWTIC (0x01) |
||||
|
||||
/* Bit definitions and macros for SCM_LPICR */ |
||||
#define SCM_LPICR_ENBSTOP (0x80) |
||||
#define SCM_LPICR_XLPM_IPL(x) (((x)&0x07)<<4) |
||||
#define SCM_LPICR_XLPM_IPL_ANY (0x00) |
||||
#define SCM_LPICR_XLPM_IPL_L2_7 (0x10) |
||||
#define SCM_LPICR_XLPM_IPL_L3_7 (0x20) |
||||
#define SCM_LPICR_XLPM_IPL_L4_7 (0x30) |
||||
#define SCM_LPICR_XLPM_IPL_L5_7 (0x40) |
||||
#define SCM_LPICR_XLPM_IPL_L6_7 (0x50) |
||||
#define SCM_LPICR_XLPM_IPL_L7 (0x70) |
||||
|
||||
/* Bit definitions and macros for SCM_DMAREQC */ |
||||
#define SCM_DMAREQC_EXT(x) (((x)&0x0F)<<16) |
||||
#define SCM_DMAREQC_EXT_ETPU (0x00080000) |
||||
#define SCM_DMAREQC_EXT_EXTDREQ2 (0x00040000) |
||||
#define SCM_DMAREQC_EXT_EXTDREQ1 (0x00020000) |
||||
#define SCM_DMAREQC_EXT_EXTDREQ0 (0x00010000) |
||||
#define SCM_DMAREQC_DMAC3(x) (((x)&0x0F)<<12) |
||||
#define SCM_DMAREQC_DMAC2(x) (((x)&0x0F)<<8) |
||||
#define SCM_DMAREQC_DMAC1(x) (((x)&0x0F)<<4) |
||||
#define SCM_DMAREQC_DMAC0(x) (((x)&0x0F)) |
||||
#define SCM_DMAREQC_DMACn_DTMR0 (0x04) |
||||
#define SCM_DMAREQC_DMACn_DTMR1 (0x05) |
||||
#define SCM_DMAREQC_DMACn_DTMR2 (0x06) |
||||
#define SCM_DMAREQC_DMACn_DTMR3 (0x07) |
||||
#define SCM_DMAREQC_DMACn_UART0RX (0x08) |
||||
#define SCM_DMAREQC_DMACn_UART1RX (0x09) |
||||
#define SCM_DMAREQC_DMACn_UART2RX (0x0A) |
||||
#define SCM_DMAREQC_DMACn_UART0TX (0x0C) |
||||
#define SCM_DMAREQC_DMACn_UART1TX (0x0D) |
||||
#define SCM_DMAREQC_DMACn_UART3TX (0x0E) |
||||
|
||||
/* Bit definitions and macros for SCM_MPARK */ |
||||
#define SCM_MPARK_M2_P_EN (0x02000000) |
||||
#define SCM_MPARK_M3_PRTY_MSK (0x00C00000) |
||||
#define SCM_MPARK_M3_PRTY_4TH (0x00000000) |
||||
#define SCM_MPARK_M3_PRTY_3RD (0x00400000) |
||||
#define SCM_MPARK_M3_PRTY_2ND (0x00800000) |
||||
#define SCM_MPARK_M3_PRTY_1ST (0x00C00000) |
||||
#define SCM_MPARK_M2_PRTY_MSK (0x00300000) |
||||
#define SCM_MPARK_M2_PRTY_4TH (0x00000000) |
||||
#define SCM_MPARK_M2_PRTY_3RD (0x00100000) |
||||
#define SCM_MPARK_M2_PRTY_2ND (0x00200000) |
||||
#define SCM_MPARK_M2_PRTY_1ST (0x00300000) |
||||
#define SCM_MPARK_M0_PRTY_MSK (0x000C0000) |
||||
#define SCM_MPARK_M0_PRTY_4TH (0x00000000) |
||||
#define SCM_MPARK_M0_PRTY_3RD (0x00040000) |
||||
#define SCM_MPARK_M0_PRTY_2ND (0x00080000) |
||||
#define SCM_MPARK_M0_PRTY_1ST (0x000C0000) |
||||
#define SCM_MPARK_FIXED (0x00004000) |
||||
#define SCM_MPARK_TIMEOUT (0x00002000) |
||||
#define SCM_MPARK_PRKLAST (0x00001000) |
||||
#define SCM_MPARK_LCKOUT_TIME(x) (((x)&0x0F)<<8) |
||||
|
||||
/* Bit definitions and macros for SCM_MPR */ |
||||
#define SCM_MPR_MPR3 (0x08) |
||||
#define SCM_MPR_MPR2 (0x04) |
||||
#define SCM_MPR_MPR1 (0x02) |
||||
#define SCM_MPR_MPR0 (0x01) |
||||
|
||||
/* Bit definitions and macros for SCM_PACRn */ |
||||
#define SCM_PACRn_LOCK1 (0x80) |
||||
#define SCM_PACRn_ACCESSCTRL1(x) (((x)&0x07)<<4) |
||||
#define SCM_PACRn_LOCK0 (0x08) |
||||
#define SCM_PACRn_ACCESSCTRL0(x) (((x)&0x07)) |
||||
|
||||
/* Bit definitions and macros for SCM_GPACR */ |
||||
#define SCM_PACRn_LOCK (0x80) |
||||
#define SCM_PACRn_ACCESSCTRL0(x) (((x)&0x07)) |
||||
|
||||
/*********************************************************************
|
||||
* SDRAM Controller (SDRAMC) |
||||
*********************************************************************/ |
||||
/* Bit definitions and macros for SDRAMC_DCR */ |
||||
#define SDRAMC_DCR_NAM (0x2000) |
||||
#define SDRAMC_DCR_COC (0x1000) |
||||
#define SDRAMC_DCR_IS (0x0800) |
||||
#define SDRAMC_DCR_RTIM_MASK (0x0C00) |
||||
#define SDRAMC_DCR_RTIM_3CLKS (0x0000) |
||||
#define SDRAMC_DCR_RTIM_6CLKS (0x0200) |
||||
#define SDRAMC_DCR_RTIM_9CLKS (0x0400) |
||||
#define SDRAMC_DCR_RC(x) (((x)&0xFF)<<8) |
||||
|
||||
/* Bit definitions and macros for SDRAMC_DARCn */ |
||||
#define SDRAMC_DARCn_BA(x) (((x)&0xFFFC)<<18) |
||||
#define SDRAMC_DARCn_RE (0x00008000) |
||||
#define SDRAMC_DARCn_CASL_MASK (0x00003000) |
||||
#define SDRAMC_DARCn_CASL_C0 (0x00000000) |
||||
#define SDRAMC_DARCn_CASL_C1 (0x00001000) |
||||
#define SDRAMC_DARCn_CASL_C2 (0x00002000) |
||||
#define SDRAMC_DARCn_CASL_C3 (0x00003000) |
||||
#define SDRAMC_DARCn_CBM_MASK (0x00000700) |
||||
#define SDRAMC_DARCn_CBM_CMD17 (0x00000000) |
||||
#define SDRAMC_DARCn_CBM_CMD18 (0x00000100) |
||||
#define SDRAMC_DARCn_CBM_CMD19 (0x00000200) |
||||
#define SDRAMC_DARCn_CBM_CMD20 (0x00000300) |
||||
#define SDRAMC_DARCn_CBM_CMD21 (0x00000400) |
||||
#define SDRAMC_DARCn_CBM_CMD22 (0x00000500) |
||||
#define SDRAMC_DARCn_CBM_CMD23 (0x00000600) |
||||
#define SDRAMC_DARCn_CBM_CMD24 (0x00000700) |
||||
#define SDRAMC_DARCn_IMRS (0x00000040) |
||||
#define SDRAMC_DARCn_PS_MASK (0x00000030) |
||||
#define SDRAMC_DARCn_PS_32 (0x00000000) |
||||
#define SDRAMC_DARCn_PS_16 (0x00000010) |
||||
#define SDRAMC_DARCn_PS_8 (0x00000020) |
||||
#define SDRAMC_DARCn_IP (0x00000008) |
||||
|
||||
/* Bit definitions and macros for SDRAMC_DMRn */ |
||||
#define SDRAMC_DMRn_BAM(x) (((x)&0x3FFF)<<18) |
||||
#define SDRAMC_DMRn_WP (0x00000100) |
||||
#define SDRAMC_DMRn_V (0x00000001) |
||||
|
||||
/*********************************************************************
|
||||
* FlexBus Chip Selects (FBCS) |
||||
*********************************************************************/ |
||||
/* Bit definitions and macros for FBCS_CSMR */ |
||||
#define FBCS_CSMR_BAM(x) (((x)&0xFFFF)<<16) |
||||
#define FBCS_CSMR_BAM_4G (0xFFFF0000) |
||||
#define FBCS_CSMR_BAM_2G (0x7FFF0000) |
||||
#define FBCS_CSMR_BAM_1G (0x3FFF0000) |
||||
#define FBCS_CSMR_BAM_1024M (0x3FFF0000) |
||||
#define FBCS_CSMR_BAM_512M (0x1FFF0000) |
||||
#define FBCS_CSMR_BAM_256M (0x0FFF0000) |
||||
#define FBCS_CSMR_BAM_128M (0x07FF0000) |
||||
#define FBCS_CSMR_BAM_64M (0x03FF0000) |
||||
#define FBCS_CSMR_BAM_32M (0x01FF0000) |
||||
#define FBCS_CSMR_BAM_16M (0x00FF0000) |
||||
#define FBCS_CSMR_BAM_8M (0x007F0000) |
||||
#define FBCS_CSMR_BAM_4M (0x003F0000) |
||||
#define FBCS_CSMR_BAM_2M (0x001F0000) |
||||
#define FBCS_CSMR_BAM_1M (0x000F0000) |
||||
#define FBCS_CSMR_BAM_1024K (0x000F0000) |
||||
#define FBCS_CSMR_BAM_512K (0x00070000) |
||||
#define FBCS_CSMR_BAM_256K (0x00030000) |
||||
#define FBCS_CSMR_BAM_128K (0x00010000) |
||||
#define FBCS_CSMR_BAM_64K (0x00000000) |
||||
#define FBCS_CSMR_WP (0x00000100) |
||||
#define FBCS_CSMR_V (0x00000001) |
||||
|
||||
/* Bit definitions and macros for FBCS_CSCR */ |
||||
#define FBCS_CSCR_SRWS(x) (((x)&0x03)<<14) |
||||
#define FBCS_CSCR_IWS(x) (((x)&0x0F)<<10) |
||||
#define FBCS_CSCR_AA (0x0100) |
||||
#define FBCS_CSCR_PS_MASK (0x00C0) |
||||
#define FBCS_CSCR_PS_32 (0x0000) |
||||
#define FBCS_CSCR_PS_16 (0x0080) |
||||
#define FBCS_CSCR_PS_8 (0x0040) |
||||
#define FBCS_CSCR_BEM (0x0020) |
||||
#define FBCS_CSCR_BSTR (0x0010) |
||||
#define FBCS_CSCR_BSTW (0x0008) |
||||
#define FBCS_CSCR_SWWS(x) ((x)&0x07) |
||||
|
||||
/*********************************************************************
|
||||
* Queued Serial Peripheral Interface (QSPI) |
||||
*********************************************************************/ |
||||
/* Bit definitions and macros for QSPI_QMR */ |
||||
#define QSPI_QMR_MSTR (0x8000) |
||||
#define QSPI_QMR_DOHIE (0x4000) |
||||
#define QSPI_QMR_BITS(x) (((x)&0x000F)<<10) |
||||
#define QSPI_QMR_CPOL (0x0200) |
||||
#define QSPI_QMR_CPHA (0x0100) |
||||
#define QSPI_QMR_BAUD(x) ((x)&0x00FF) |
||||
|
||||
/* Bit definitions and macros for QSPI_QDLYR */ |
||||
#define QSPI_QDLYR_SPE (0x8000) |
||||
#define QSPI_QDLYR_QCD(x) (((x)&0x007F)<<8) |
||||
#define QSPI_QDLYR_DTL(x) ((x)&0x00FF) |
||||
|
||||
/* Bit definitions and macros for QSPI_QWR */ |
||||
#define QSPI_QWR_HALT (0x8000) |
||||
#define QSPI_QWR_WREN (0x4000) |
||||
#define QSPI_QWR_WRTO (0x2000) |
||||
#define QSPI_QWR_CSIV (0x1000) |
||||
#define QSPI_QWR_ENDQP(x) (((x)&0x000F)<<8) |
||||
#define QSPI_QWR_NEWQP(x) ((x)&0x000F) |
||||
|
||||
/* Bit definitions and macros for QSPI_QIR */ |
||||
#define QSPI_QIR_WCEFB (0x8000) |
||||
#define QSPI_QIR_ABRTB (0x4000) |
||||
#define QSPI_QIR_ABRTL (0x1000) |
||||
#define QSPI_QIR_WCEFE (0x0800) |
||||
#define QSPI_QIR_ABRTE (0x0400) |
||||
#define QSPI_QIR_SPIFE (0x0100) |
||||
#define QSPI_QIR_WCEF (0x0008) |
||||
#define QSPI_QIR_ABRT (0x0004) |
||||
#define QSPI_QIR_SPIF (0x0001) |
||||
|
||||
/* Bit definitions and macros for QSPI_QAR */ |
||||
#define QSPI_QAR_ADDR(x) ((x)&0x003F) |
||||
|
||||
/* Bit definitions and macros for QSPI_QDR */ |
||||
#define QSPI_QDR_CONT (0x8000) |
||||
#define QSPI_QDR_BITSE (0x4000) |
||||
#define QSPI_QDR_DT (0x2000) |
||||
#define QSPI_QDR_DSCK (0x1000) |
||||
#define QSPI_QDR_QSPI_CS3 (0x0800) |
||||
#define QSPI_QDR_QSPI_CS2 (0x0400) |
||||
#define QSPI_QDR_QSPI_CS1 (0x0200) |
||||
#define QSPI_QDR_QSPI_CS0 (0x0100) |
||||
|
||||
/*********************************************************************
|
||||
* Interrupt Controller (INTC) |
||||
*********************************************************************/ |
||||
#define INT0_LO_RSVD0 (0) |
||||
#define INT0_LO_EPORT1 (1) |
||||
#define INT0_LO_EPORT2 (2) |
||||
#define INT0_LO_EPORT3 (3) |
||||
#define INT0_LO_EPORT4 (4) |
||||
#define INT0_LO_EPORT5 (5) |
||||
#define INT0_LO_EPORT6 (6) |
||||
#define INT0_LO_EPORT7 (7) |
||||
#define INT0_LO_SCM (8) |
||||
#define INT0_LO_DMA0 (9) |
||||
#define INT0_LO_DMA1 (10) |
||||
#define INT0_LO_DMA2 (11) |
||||
#define INT0_LO_DMA3 (12) |
||||
#define INT0_LO_UART0 (13) |
||||
#define INT0_LO_UART1 (14) |
||||
#define INT0_LO_UART2 (15) |
||||
#define INT0_LO_RSVD1 (16) |
||||
#define INT0_LO_I2C (17) |
||||
#define INT0_LO_QSPI (18) |
||||
#define INT0_LO_DTMR0 (19) |
||||
#define INT0_LO_DTMR1 (20) |
||||
#define INT0_LO_DTMR2 (21) |
||||
#define INT0_LO_DTMR3 (22) |
||||
#define INT0_LO_FEC_TXF (23) |
||||
#define INT0_LO_FEC_TXB (24) |
||||
#define INT0_LO_FEC_UN (25) |
||||
#define INT0_LO_FEC_RL (26) |
||||
#define INT0_LO_FEC_RXF (27) |
||||
#define INT0_LO_FEC_RXB (28) |
||||
#define INT0_LO_FEC_MII (29) |
||||
#define INT0_LO_FEC_LC (30) |
||||
#define INT0_LO_FEC_HBERR (31) |
||||
#define INT0_HI_FEC_GRA (32) |
||||
#define INT0_HI_FEC_EBERR (33) |
||||
#define INT0_HI_FEC_BABT (34) |
||||
#define INT0_HI_FEC_BABR (35) |
||||
#define INT0_HI_PIT0 (36) |
||||
#define INT0_HI_PIT1 (37) |
||||
#define INT0_HI_PIT2 (38) |
||||
#define INT0_HI_PIT3 (39) |
||||
#define INT0_HI_RNG (40) |
||||
#define INT0_HI_SKHA (41) |
||||
#define INT0_HI_MDHA (42) |
||||
#define INT0_HI_CAN1_BUF0I (43) |
||||
#define INT0_HI_CAN1_BUF1I (44) |
||||
#define INT0_HI_CAN1_BUF2I (45) |
||||
#define INT0_HI_CAN1_BUF3I (46) |
||||
#define INT0_HI_CAN1_BUF4I (47) |
||||
#define INT0_HI_CAN1_BUF5I (48) |
||||
#define INT0_HI_CAN1_BUF6I (49) |
||||
#define INT0_HI_CAN1_BUF7I (50) |
||||
#define INT0_HI_CAN1_BUF8I (51) |
||||
#define INT0_HI_CAN1_BUF9I (52) |
||||
#define INT0_HI_CAN1_BUF10I (53) |
||||
#define INT0_HI_CAN1_BUF11I (54) |
||||
#define INT0_HI_CAN1_BUF12I (55) |
||||
#define INT0_HI_CAN1_BUF13I (56) |
||||
#define INT0_HI_CAN1_BUF14I (57) |
||||
#define INT0_HI_CAN1_BUF15I (58) |
||||
#define INT0_HI_CAN1_ERRINT (59) |
||||
#define INT0_HI_CAN1_BOFFINT (60) |
||||
/* 60-63 Reserved */ |
||||
|
||||
/* 0 - 7 Reserved */ |
||||
#define INT1_LO_CAN1_BUF0I (8) |
||||
#define INT1_LO_CAN1_BUF1I (9) |
||||
#define INT1_LO_CAN1_BUF2I (10) |
||||
#define INT1_LO_CAN1_BUF3I (11) |
||||
#define INT1_LO_CAN1_BUF4I (12) |
||||
#define INT1_LO_CAN1_BUF5I (13) |
||||
#define INT1_LO_CAN1_BUF6I (14) |
||||
#define INT1_LO_CAN1_BUF7I (15) |
||||
#define INT1_LO_CAN1_BUF8I (16) |
||||
#define INT1_LO_CAN1_BUF9I (17) |
||||
#define INT1_LO_CAN1_BUF10I (18) |
||||
#define INT1_LO_CAN1_BUF11I (19) |
||||
#define INT1_LO_CAN1_BUF12I (20) |
||||
#define INT1_LO_CAN1_BUF13I (21) |
||||
#define INT1_LO_CAN1_BUF14I (22) |
||||
#define INT1_LO_CAN1_BUF15I (23) |
||||
#define INT1_LO_CAN1_ERRINT (24) |
||||
#define INT1_LO_CAN1_BOFFINT (25) |
||||
/* 26 Reserved */ |
||||
#define INT1_LO_ETPU_TC0F (27) |
||||
#define INT1_LO_ETPU_TC1F (28) |
||||
#define INT1_LO_ETPU_TC2F (29) |
||||
#define INT1_LO_ETPU_TC3F (30) |
||||
#define INT1_LO_ETPU_TC4F (31) |
||||
#define INT1_HI_ETPU_TC5F (32) |
||||
#define INT1_HI_ETPU_TC6F (33) |
||||
#define INT1_HI_ETPU_TC7F (34) |
||||
#define INT1_HI_ETPU_TC8F (35) |
||||
#define INT1_HI_ETPU_TC9F (36) |
||||
#define INT1_HI_ETPU_TC10F (37) |
||||
#define INT1_HI_ETPU_TC11F (38) |
||||
#define INT1_HI_ETPU_TC12F (39) |
||||
#define INT1_HI_ETPU_TC13F (40) |
||||
#define INT1_HI_ETPU_TC14F (41) |
||||
#define INT1_HI_ETPU_TC15F (42) |
||||
#define INT1_HI_ETPU_TC16F (43) |
||||
#define INT1_HI_ETPU_TC17F (44) |
||||
#define INT1_HI_ETPU_TC18F (45) |
||||
#define INT1_HI_ETPU_TC19F (46) |
||||
#define INT1_HI_ETPU_TC20F (47) |
||||
#define INT1_HI_ETPU_TC21F (48) |
||||
#define INT1_HI_ETPU_TC22F (49) |
||||
#define INT1_HI_ETPU_TC23F (50) |
||||
#define INT1_HI_ETPU_TC24F (51) |
||||
#define INT1_HI_ETPU_TC25F (52) |
||||
#define INT1_HI_ETPU_TC26F (53) |
||||
#define INT1_HI_ETPU_TC27F (54) |
||||
#define INT1_HI_ETPU_TC28F (55) |
||||
#define INT1_HI_ETPU_TC29F (56) |
||||
#define INT1_HI_ETPU_TC30F (57) |
||||
#define INT1_HI_ETPU_TC31F (58) |
||||
#define INT1_HI_ETPU_TGIF (59) |
||||
|
||||
/* Bit definitions and macros for INTC_IPRH */ |
||||
#define INTC_IPRH_INT63 (0x80000000) |
||||
#define INTC_IPRH_INT62 (0x40000000) |
||||
#define INTC_IPRH_INT61 (0x20000000) |
||||
#define INTC_IPRH_INT60 (0x10000000) |
||||
#define INTC_IPRH_INT59 (0x08000000) |
||||
#define INTC_IPRH_INT58 (0x04000000) |
||||
#define INTC_IPRH_INT57 (0x02000000) |
||||
#define INTC_IPRH_INT56 (0x01000000) |
||||
#define INTC_IPRH_INT55 (0x00800000) |
||||
#define INTC_IPRH_INT54 (0x00400000) |
||||
#define INTC_IPRH_INT53 (0x00200000) |
||||
#define INTC_IPRH_INT52 (0x00100000) |
||||
#define INTC_IPRH_INT51 (0x00080000) |
||||
#define INTC_IPRH_INT50 (0x00040000) |
||||
#define INTC_IPRH_INT49 (0x00020000) |
||||
#define INTC_IPRH_INT48 (0x00010000) |
||||
#define INTC_IPRH_INT47 (0x00008000) |
||||
#define INTC_IPRH_INT46 (0x00004000) |
||||
#define INTC_IPRH_INT45 (0x00002000) |
||||
#define INTC_IPRH_INT44 (0x00001000) |
||||
#define INTC_IPRH_INT43 (0x00000800) |
||||
#define INTC_IPRH_INT42 (0x00000400) |
||||
#define INTC_IPRH_INT41 (0x00000200) |
||||
#define INTC_IPRH_INT40 (0x00000100) |
||||
#define INTC_IPRH_INT39 (0x00000080) |
||||
#define INTC_IPRH_INT38 (0x00000040) |
||||
#define INTC_IPRH_INT37 (0x00000020) |
||||
#define INTC_IPRH_INT36 (0x00000010) |
||||
#define INTC_IPRH_INT35 (0x00000008) |
||||
#define INTC_IPRH_INT34 (0x00000004) |
||||
#define INTC_IPRH_INT33 (0x00000002) |
||||
#define INTC_IPRH_INT32 (0x00000001) |
||||
|
||||
/* Bit definitions and macros for INTC_IPRL */ |
||||
#define INTC_IPRL_INT31 (0x80000000) |
||||
#define INTC_IPRL_INT30 (0x40000000) |
||||
#define INTC_IPRL_INT29 (0x20000000) |
||||
#define INTC_IPRL_INT28 (0x10000000) |
||||
#define INTC_IPRL_INT27 (0x08000000) |
||||
#define INTC_IPRL_INT26 (0x04000000) |
||||
#define INTC_IPRL_INT25 (0x02000000) |
||||
#define INTC_IPRL_INT24 (0x01000000) |
||||
#define INTC_IPRL_INT23 (0x00800000) |
||||
#define INTC_IPRL_INT22 (0x00400000) |
||||
#define INTC_IPRL_INT21 (0x00200000) |
||||
#define INTC_IPRL_INT20 (0x00100000) |
||||
#define INTC_IPRL_INT19 (0x00080000) |
||||
#define INTC_IPRL_INT18 (0x00040000) |
||||
#define INTC_IPRL_INT17 (0x00020000) |
||||
#define INTC_IPRL_INT16 (0x00010000) |
||||
#define INTC_IPRL_INT15 (0x00008000) |
||||
#define INTC_IPRL_INT14 (0x00004000) |
||||
#define INTC_IPRL_INT13 (0x00002000) |
||||
#define INTC_IPRL_INT12 (0x00001000) |
||||
#define INTC_IPRL_INT11 (0x00000800) |
||||
#define INTC_IPRL_INT10 (0x00000400) |
||||
#define INTC_IPRL_INT9 (0x00000200) |
||||
#define INTC_IPRL_INT8 (0x00000100) |
||||
#define INTC_IPRL_INT7 (0x00000080) |
||||
#define INTC_IPRL_INT6 (0x00000040) |
||||
#define INTC_IPRL_INT5 (0x00000020) |
||||
#define INTC_IPRL_INT4 (0x00000010) |
||||
#define INTC_IPRL_INT3 (0x00000008) |
||||
#define INTC_IPRL_INT2 (0x00000004) |
||||
#define INTC_IPRL_INT1 (0x00000002) |
||||
#define INTC_IPRL_INT0 (0x00000001) |
||||
|
||||
/* Bit definitions and macros for INTC_IRLR */ |
||||
#define INTC_IRLRn(x) (((x)&0x7F)<<1) |
||||
|
||||
/* Bit definitions and macros for INTC_IACKLPRn */ |
||||
#define INTC_IACKLPRn_LEVEL(x) (((x)&0x07)<<4) |
||||
#define INTC_IACKLPRn_PRI(x) ((x)&0x0F) |
||||
|
||||
/* Bit definitions and macros for INTC_ICRnx */ |
||||
#define INTC_ICRnx_IL(x) (((x)&0x07)<<3) |
||||
#define INTC_ICRnx_IP(x) ((x)&0x07) |
||||
|
||||
/*********************************************************************
|
||||
* General Purpose I/O (GPIO) |
||||
*********************************************************************/ |
||||
/* Bit definitions and macros for GPIO_PODR */ |
||||
#define GPIO_PODR_ADDR(x) (((x)&0x07)<<5) |
||||
#define GPIO_PODR_ADDR_MASK (0xE0) |
||||
#define GPIO_PODR_BS(x) ((x)&0x0F) |
||||
#define GPIO_PODR_BS_MASK (0x0F) |
||||
#define GPIO_PODR_CS(x) (((x)&0x7F)<<1) |
||||
#define GPIO_PODR_CS_MASK (0xFE) |
||||
#define GPIO_PODR_SDRAM(X) ((x)&0x3F) |
||||
#define GPIO_PODR_SDRAM_MASK (0x3F) |
||||
#define GPIO_PODR_FECI2C(x) GPIO_PODR_BS(x) |
||||
#define GPIO_PODR_FECI2C_MASK GPIO_PODR_BS_MASK |
||||
#define GPIO_PODR_UARTH(x) ((x)&0x03) |
||||
#define GPIO_PODR_UARTH_MASK (0x03) |
||||
#define GPIO_PODR_QSPI(x) ((x)&0x1F) |
||||
#define GPIO_PODR_QSPI_MASK (0x1F) |
||||
#define GPIO_PODR_ETPU(x) ((x)&0x07) |
||||
#define GPIO_PODR_ETPU_MASK (0x07) |
||||
|
||||
/* Bit definitions and macros for GPIO_PDDR */ |
||||
#define GPIO_PDDR_ADDR(x) GPIO_PODR_ADDR(x) |
||||
#define GPIO_PDDR_ADDR_MASK GPIO_PODR_ADDR_MASK |
||||
#define GPIO_PDDR_BS(x) GPIO_PODR_BS(x) |
||||
#define GPIO_PDDR_BS_MASK GPIO_PODR_BS_MASK |
||||
#define GPIO_PDDR_CS(x) GPIO_PODR_CS(x) |
||||
#define GPIO_PDDR_CS_MASK GPIO_PODR_CS_MASK |
||||
#define GPIO_PDDR_SDRAM(X) GPIO_PODR_SDRAM(X) |
||||
#define GPIO_PDDR_SDRAM_MASK GPIO_PODR_SDRAM_MASK |
||||
#define GPIO_PDDR_FECI2C(x) GPIO_PDDR_BS(x) |
||||
#define GPIO_PDDR_FECI2C_MASK GPIO_PDDR_BS_MASK |
||||
#define GPIO_PDDR_UARTH(x) GPIO_PODR_UARTH(x) |
||||
#define GPIO_PDDR_UARTH_MASK GPIO_PODR_UARTH_MASK |
||||
#define GPIO_PDDR_QSPI(x) GPIO_PODR_QSPI(x) |
||||
#define GPIO_PDDR_QSPI_MASK GPIO_PODR_QSPI_MASK |
||||
#define GPIO_PDDR_ETPU(x) GPIO_PODR_ETPU(x) |
||||
#define GPIO_PDDR_ETPU_MASK GPIO_PODR_ETPU_MASK |
||||
|
||||
/* Bit definitions and macros for GPIO_PPDSDR */ |
||||
#define GPIO_PPDSDR_ADDR(x) GPIO_PODR_ADDR(x) |
||||
#define GPIO_PPDSDR_ADDR_MASK GPIO_PODR_ADDR_MASK |
||||
#define GPIO_PPDSDR_BS(x) GPIO_PODR_BS(x) |
||||
#define GPIO_PPDSDR_BS_MASK GPIO_PODR_BS_MASK |
||||
#define GPIO_PPDSDR_CS(x) GPIO_PODR_CS(x) |
||||
#define GPIO_PPDSDR_CS_MASK GPIO_PODR_CS_MASK |
||||
#define GPIO_PPDSDR_SDRAM(X) GPIO_PODR_SDRAM(X) |
||||
#define GPIO_PPDSDR_SDRAM_MASK GPIO_PODR_SDRAM_MASK |
||||
#define GPIO_PPDSDR_FECI2C(x) GPIO_PPDSDR_BS(x) |
||||
#define GPIO_PPDSDR_FECI2C_MASK GPIO_PPDSDR_BS_MASK |
||||
#define GPIO_PPDSDR_UARTH(x) GPIO_PODR_UARTH(x) |
||||
#define GPIO_PPDSDR_UARTH_MASK GPIO_PODR_UARTH_MASK |
||||
#define GPIO_PPDSDR_QSPI(x) GPIO_PODR_QSPI(x) |
||||
#define GPIO_PPDSDR_QSPI_MASK GPIO_PODR_QSPI_MASK |
||||
#define GPIO_PPDSDR_ETPU(x) GPIO_PODR_ETPU(x) |
||||
#define GPIO_PPDSDR_ETPU_MASK GPIO_PODR_ETPU_MASK |
||||
|
||||
/* Bit definitions and macros for GPIO_PCLRR */ |
||||
#define GPIO_PCLRR_ADDR(x) GPIO_PODR_ADDR(x) |
||||
#define GPIO_PCLRR_ADDR_MASK GPIO_PODR_ADDR_MASK |
||||
#define GPIO_PCLRR_BS(x) GPIO_PODR_BS(x) |
||||
#define GPIO_PCLRR_BS_MASK GPIO_PODR_BS_MASK |
||||
#define GPIO_PCLRR_CS(x) GPIO_PODR_CS(x) |
||||
#define GPIO_PCLRR_CS_MASK GPIO_PODR_CS_MASK |
||||
#define GPIO_PCLRR_SDRAM(X) GPIO_PODR_SDRAM(X) |
||||
#define GPIO_PCLRR_SDRAM_MASK GPIO_PODR_SDRAM_MASK |
||||
#define GPIO_PCLRR_FECI2C(x) GPIO_PCLRR_BS(x) |
||||
#define GPIO_PCLRR_FECI2C_MASK GPIO_PCLRR_BS_MASK |
||||
#define GPIO_PCLRR_UARTH(x) GPIO_PODR_UARTH(x) |
||||
#define GPIO_PCLRR_UARTH_MASK GPIO_PODR_UARTH_MASK |
||||
#define GPIO_PCLRR_QSPI(x) GPIO_PODR_QSPI(x) |
||||
#define GPIO_PCLRR_QSPI_MASK GPIO_PODR_QSPI_MASK |
||||
#define GPIO_PCLRR_ETPU(x) GPIO_PODR_ETPU(x) |
||||
#define GPIO_PCLRR_ETPU_MASK GPIO_PODR_ETPU_MASK |
||||
|
||||
/* Bit definitions and macros for GPIO_PAR */ |
||||
#define GPIO_PAR_AD_ADDR23 (0x80) |
||||
#define GPIO_PAR_AD_ADDR22 (0x40) |
||||
#define GPIO_PAR_AD_ADDR21 (0x20) |
||||
#define GPIO_PAR_AD_DATAL (0x01) |
||||
#define GPIO_PAR_BUSCTL_OE (0x4000) |
||||
#define GPIO_PAR_BUSCTL_TA (0x1000) |
||||
#define GPIO_PAR_BUSCTL_TEA(x) (((x)&0x03)<<10) |
||||
#define GPIO_PAR_BUSCTL_TEA_MASK (0x0C00) |
||||
#define GPIO_PAR_BUSCTL_TEA_GPIO (0x0400) |
||||
#define GPIO_PAR_BUSCTL_TEA_DREQ1 (0x0800) |
||||
#define GPIO_PAR_BUSCTL_TEA_EXTBUS (0x0C00) |
||||
#define GPIO_PAR_BUSCTL_RWB (0x0100) |
||||
#define GPIO_PAR_BUSCTL_TSIZ1 (0x0040) |
||||
#define GPIO_PAR_BUSCTL_TSIZ0 (0x0010) |
||||
#define GPIO_PAR_BUSCTL_TS(x) (((x)&0x03)<<2) |
||||
#define GPIO_PAR_BUSCTL_TS_MASK (0x0C) |
||||
#define GPIO_PAR_BUSCTL_TS_GPIO (0x04) |
||||
#define GPIO_PAR_BUSCTL_TS_DACK2 (0x08) |
||||
#define GPIO_PAR_BUSCTL_TS_EXTBUS (0x0C) |
||||
#define GPIO_PAR_BUSCTL_TIP(x) ((x)&0x03) |
||||
#define GPIO_PAR_BUSCTL_TIP_MASK (0x03) |
||||
#define GPIO_PAR_BUSCTL_TIP_GPIO (0x01) |
||||
#define GPIO_PAR_BUSCTL_TIP_DREQ0 (0x02) |
||||
#define GPIO_PAR_BUSCTL_TIP_EXTBUS (0x03) |
||||
#define GPIO_PAR_BS(x) ((x)&0x0F) |
||||
#define GPIO_PAR_BS_MASK (0x0F) |
||||
#define GPIO_PAR_CS(x) (((x)&0x7F)<<1) |
||||
#define GPIO_PAR_CS_MASK (0xFE) |
||||
#define GPIO_PAR_CS_CS7 (0x80) |
||||
#define GPIO_PAR_CS_CS6 (0x40) |
||||
#define GPIO_PAR_CS_CS5 (0x20) |
||||
#define GPIO_PAR_CS_CS4 (0x10) |
||||
#define GPIO_PAR_CS_CS3 (0x08) |
||||
#define GPIO_PAR_CS_CS2 (0x04) |
||||
#define GPIO_PAR_CS_CS1 (0x02) |
||||
#define GPIO_PAR_CS_SD3 GPIO_PAR_CS_CS3 |
||||
#define GPIO_PAR_CS_SD2 GPIO_PAR_CS_CS2 |
||||
#define GPIO_PAR_SDRAM_CSSDCS(x) (((x)&0x03)<<6) |
||||
#define GPIO_PAR_SDRAM_CSSDCS_MASK (0xC0) |
||||
#define GPIO_PAR_SDRAM_SDWE (0x20) |
||||
#define GPIO_PAR_SDRAM_SCAS (0x10) |
||||
#define GPIO_PAR_SDRAM_SRAS (0x08) |
||||
#define GPIO_PAR_SDRAM_SCKE (0x04) |
||||
#define GPIO_PAR_SDRAM_SDCS(x) ((x)&0x03) |
||||
#define GPIO_PAR_SDRAM_SDCS_MASK (0x03) |
||||
#define GPIO_PAR_FECI2C_EMDC(x) (((x)&0x03)<<6) |
||||
#define GPIO_PAR_FECI2C_EMDC_MASK (0xC0) |
||||
#define GPIO_PAR_FECI2C_EMDC_U2TXD (0x40) |
||||
#define GPIO_PAR_FECI2C_EMDC_I2CSCL (0x80) |
||||
#define GPIO_PAR_FECI2C_EMDC_FECEMDC (0xC0) |
||||
#define GPIO_PAR_FECI2C_EMDIO(x) (((x)&0x03)<<4) |
||||
#define GPIO_PAR_FECI2C_EMDIO_MASK (0x30) |
||||
#define GPIO_PAR_FECI2C_EMDIO_U2RXD (0x10) |
||||
#define GPIO_PAR_FECI2C_EMDIO_I2CSDA (0x20) |
||||
#define GPIO_PAR_FECI2C_EMDIO_FECEMDIO (0x30) |
||||
#define GPIO_PAR_FECI2C_SCL(x) (((x)&0x03)<<2) |
||||
#define GPIO_PAR_FECI2C_SCL_MASK (0x0C) |
||||
#define GPIO_PAR_FECI2C_SCL_CAN0RX (0x08) |
||||
#define GPIO_PAR_FECI2C_SCL_I2CSCL (0x0C) |
||||
#define GPIO_PAR_FECI2C_SDA(x) ((x)&0x03) |
||||
#define GPIO_PAR_FECI2C_SDA_MASK (0x03) |
||||
#define GPIO_PAR_FECI2C_SDA_CAN0TX (0x02) |
||||
#define GPIO_PAR_FECI2C_SDA_I2CSDA (0x03) |
||||
#define GPIO_PAR_UART_DREQ2 (0x8000) |
||||
#define GPIO_PAR_UART_CAN1EN (0x4000) |
||||
#define GPIO_PAR_UART_U2RXD (0x2000) |
||||
#define GPIO_PAR_UART_U2TXD (0x1000) |
||||
#define GPIO_PAR_UART_U1RXD(x) (((x)&0x03)<<10) |
||||
#define GPIO_PAR_UART_U1RXD_MASK (0x0C00) |
||||
#define GPIO_PAR_UART_U1RXD_CAN0RX (0x0800) |
||||
#define GPIO_PAR_UART_U1RXD_U1RXD (0x0C00) |
||||
#define GPIO_PAR_UART_U1TXD(x) (((x)&0x03)<<8) |
||||
#define GPIO_PAR_UART_U1TXD_MASK (0x0300) |
||||
#define GPIO_PAR_UART_U1TXD_CAN0TX (0x0200) |
||||
#define GPIO_PAR_UART_U1TXD_U1TXD (0x0300) |
||||
#define GPIO_PAR_UART_U1CTS(x) (((x)&0x03)<<6) |
||||
#define GPIO_PAR_UART_U1CTS_MASK (0x00C0) |
||||
#define GPIO_PAR_UART_U1CTS_U2CTS (0x0080) |
||||
#define GPIO_PAR_UART_U1CTS_U1CTS (0x00C0) |
||||
#define GPIO_PAR_UART_U1RTS(x) (((x)&0x03)<<4) |
||||
#define GPIO_PAR_UART_U1RTS_MASK (0x0030) |
||||
#define GPIO_PAR_UART_U1RTS_U2RTS (0x0020) |
||||
#define GPIO_PAR_UART_U1RTS_U1RTS (0x0030) |
||||
#define GPIO_PAR_UART_U0RXD (0x0008) |
||||
#define GPIO_PAR_UART_U0TXD (0x0004) |
||||
#define GPIO_PAR_UART_U0CTS (0x0002) |
||||
#define GPIO_PAR_UART_U0RTS (0x0001) |
||||
#define GPIO_PAR_QSPI_CS1(x) (((x)&0x03)<<6) |
||||
#define GPIO_PAR_QSPI_CS1_MASK (0xC0) |
||||
#define GPIO_PAR_QSPI_CS1_SDRAMSCKE (0x80) |
||||
#define GPIO_PAR_QSPI_CS1_QSPICS1 (0xC0) |
||||
#define GPIO_PAR_QSPI_CS0 (0x20) |
||||
#define GPIO_PAR_QSPI_DIN(x) (((x)&0x03)<<3) |
||||
#define GPIO_PAR_QSPI_DIN_MASK (0x18) |
||||
#define GPIO_PAR_QSPI_DIN_I2CSDA (0x10) |
||||
#define GPIO_PAR_QSPI_DIN_QSPIDIN (0x18) |
||||
#define GPIO_PAR_QSPI_DOUT (0x04) |
||||
#define GPIO_PAR_QSPI_SCK(x) ((x)&0x03) |
||||
#define GPIO_PAR_QSPI_SCK_MASK (0x03) |
||||
#define GPIO_PAR_QSPI_SCK_I2CSCL (0x02) |
||||
#define GPIO_PAR_QSPI_SCK_QSPISCK (0x03) |
||||
#define GPIO_PAR_DT3IN(x) (((x)&0x03)<<14) |
||||
#define GPIO_PAR_DT3IN_MASK (0xC000) |
||||
#define GPIO_PAR_DT3IN_QSPICS2 (0x4000) |
||||
#define GPIO_PAR_DT3IN_U2CTS (0x8000) |
||||
#define GPIO_PAR_DT3IN_DT3IN (0xC000) |
||||
#define GPIO_PAR_DT2IN(x) (((x)&0x03)<<12) |
||||
#define GPIO_PAR_DT2IN_MASK (0x3000) |
||||
#define GPIO_PAR_DT2IN_DT2OUT (0x1000) |
||||
#define GPIO_PAR_DT2IN_DREQ2 (0x2000) |
||||
#define GPIO_PAR_DT2IN_DT2IN (0x3000) |
||||
#define GPIO_PAR_DT1IN(x) (((x)&0x03)<<10) |
||||
#define GPIO_PAR_DT1IN_MASK (0x0C00) |
||||
#define GPIO_PAR_DT1IN_DT1OUT (0x0400) |
||||
#define GPIO_PAR_DT1IN_DREQ1 (0x0800) |
||||
#define GPIO_PAR_DT1IN_DT1IN (0x0C00) |
||||
#define GPIO_PAR_DT0IN(x) (((x)&0x03)<<8) |
||||
#define GPIO_PAR_DT0IN_MASK (0x0300) |
||||
#define GPIO_PAR_DT0IN_DREQ0 (0x0200) |
||||
#define GPIO_PAR_DT0IN_DT0IN (0x0300) |
||||
#define GPIO_PAR_DT3OUT(x) (((x)&0x03)<<6) |
||||
#define GPIO_PAR_DT3OUT_MASK (0x00C0) |
||||
#define GPIO_PAR_DT3OUT_QSPICS3 (0x0040) |
||||
#define GPIO_PAR_DT3OUT_U2RTS (0x0080) |
||||
#define GPIO_PAR_DT3OUT_DT3OUT (0x00C0) |
||||
#define GPIO_PAR_DT2OUT(x) (((x)&0x03)<<4) |
||||
#define GPIO_PAR_DT2OUT_MASK (0x0030) |
||||
#define GPIO_PAR_DT2OUT_DACK2 (0x0020) |
||||
#define GPIO_PAR_DT2OUT_DT2OUT (0x0030) |
||||
#define GPIO_PAR_DT1OUT(x) (((x)&0x03)<<2) |
||||
#define GPIO_PAR_DT1OUT_MASK (0x000C) |
||||
#define GPIO_PAR_DT1OUT_DACK1 (0x0008) |
||||
#define GPIO_PAR_DT1OUT_DT1OUT (0x000C) |
||||
#define GPIO_PAR_DT0OUT(x) ((x)&0x03) |
||||
#define GPIO_PAR_DT0OUT_MASK (0x0003) |
||||
#define GPIO_PAR_DT0OUT_DACK0 (0x0002) |
||||
#define GPIO_PAR_DT0OUT_DT0OUT (0x0003) |
||||
#define GPIO_PAR_ETPU_TCRCLK (0x04) |
||||
#define GPIO_PAR_ETPU_UTPU_ODIS (0x02) |
||||
#define GPIO_PAR_ETPU_LTPU_ODIS (0x01) |
||||
|
||||
/* Bit definitions and macros for GPIO_DSCR */ |
||||
#define GPIO_DSCR_EIM_EIM1 (0x10) |
||||
#define GPIO_DSCR_EIM_EIM0 (0x01) |
||||
#define GPIO_DSCR_ETPU_ETPU31_24 (0x40) |
||||
#define GPIO_DSCR_ETPU_ETPU23_16 (0x10) |
||||
#define GPIO_DSCR_ETPU_ETPU15_8 (0x04) |
||||
#define GPIO_DSCR_ETPU_ETPU7_0 (0x01) |
||||
#define GPIO_DSCR_FECI2C_FEC (0x10) |
||||
#define GPIO_DSCR_FECI2C_I2C (0x01) |
||||
#define GPIO_DSCR_UART_IRQ (0x40) |
||||
#define GPIO_DSCR_UART_UART2 (0x10) |
||||
#define GPIO_DSCR_UART_UART1 (0x04) |
||||
#define GPIO_DSCR_UART_UART0 (0x01) |
||||
#define GPIO_DSCR_QSPI_QSPI (0x01) |
||||
#define GPIO_DSCR_TIMER (0x01) |
||||
|
||||
/*********************************************************************
|
||||
* Chip Configuration Module (CCM) |
||||
*********************************************************************/ |
||||
/* Bit definitions and macros for CCM_RCR */ |
||||
#define CCM_RCR_SOFTRST (0x80) |
||||
#define CCM_RCR_FRCRSTOUT (0x40) |
||||
|
||||
/* Bit definitions and macros for CCM_RSR */ |
||||
#define CCM_RSR_SOFT (0x20) |
||||
#define CCM_RSR_WDR (0x10) |
||||
#define CCM_RSR_POR (0x08) |
||||
#define CCM_RSR_EXT (0x04) |
||||
#define CCM_RSR_LOC (0x02) |
||||
#define CCM_RSR_LOL (0x01) |
||||
|
||||
/* Bit definitions and macros for CCM_CCR */ |
||||
#define CCM_CCR_LOAD (0x8000) |
||||
#define CCM_CCR_SZEN (0x0040) |
||||
#define CCM_CCR_PSTEN (0x0020) |
||||
#define CCM_CCR_BME (0x0008) |
||||
#define CCM_CCR_BMT(x) ((x)&0x07) |
||||
#define CCM_CCR_BMT_MASK (0x0007) |
||||
#define CCM_CCR_BMT_64K (0x0000) |
||||
#define CCM_CCR_BMT_32K (0x0001) |
||||
#define CCM_CCR_BMT_16K (0x0002) |
||||
#define CCM_CCR_BMT_8K (0x0003) |
||||
#define CCM_CCR_BMT_4K (0x0004) |
||||
#define CCM_CCR_BMT_2K (0x0005) |
||||
#define CCM_CCR_BMT_1K (0x0006) |
||||
#define CCM_CCR_BMT_512 (0x0007) |
||||
|
||||
/* Bit definitions and macros for CCM_RCON */ |
||||
#define CCM_RCON_RCSC(x) (((x)&0x0003)<<8) |
||||
#define CCM_RCON_RLOAD (0x0020) |
||||
#define CCM_RCON_BOOTPS(x) (((x)&0x0003)<<3) |
||||
#define CCM_RCON_BOOTPS_MASK (0x0018) |
||||
#define CCM_RCON_BOOTPS_32 (0x0018) |
||||
#define CCM_RCON_BOOTPS_16 (0x0008) |
||||
#define CCM_RCON_BOOTPS_8 (0x0010) |
||||
#define CCM_RCON_MODE (0x0001) |
||||
|
||||
/* Bit definitions and macros for CCM_CIR */ |
||||
#define CCM_CIR_PIN(x) (((x)&0x03FF)<<6) |
||||
#define CCM_CIR_PRN(x) ((x)&0x003F) |
||||
|
||||
/*********************************************************************
|
||||
* PLL Clock Module |
||||
*********************************************************************/ |
||||
/* Bit definitions and macros for PLL_SYNCR */ |
||||
#define PLL_SYNCR_MFD(x) (((x)&0x07)<<24) |
||||
#define PLL_SYNCR_MFD_MASK (0x07000000) |
||||
#define PLL_SYNCR_RFC(x) (((x)&0x07)<<19) |
||||
#define PLL_SYNCR_RFC_MASK (0x00380000) |
||||
#define PLL_SYNCR_LOCEN (0x00040000) |
||||
#define PLL_SYNCR_LOLRE (0x00020000) |
||||
#define PLL_SYNCR_LOCRE (0x00010000) |
||||
#define PLL_SYNCR_DISCLK (0x00008000) |
||||
#define PLL_SYNCR_LOLIRQ (0x00004000) |
||||
#define PLL_SYNCR_LOCIRQ (0x00002000) |
||||
#define PLL_SYNCR_RATE (0x00001000) |
||||
#define PLL_SYNCR_DEPTH(x) (((x)&0x03)<<10) |
||||
#define PLL_SYNCR_EXP(x) ((x)&0x03FF) |
||||
|
||||
/* Bit definitions and macros for PLL_SYNSR */ |
||||
#define PLL_SYNSR_LOLF (0x00000200) |
||||
#define PLL_SYNSR_LOC (0x00000100) |
||||
#define PLL_SYNSR_MODE (0x00000080) |
||||
#define PLL_SYNSR_PLLSEL (0x00000040) |
||||
#define PLL_SYNSR_PLLREF (0x00000020) |
||||
#define PLL_SYNSR_LOCKS (0x00000010) |
||||
#define PLL_SYNSR_LOCK (0x00000008) |
||||
#define PLL_SYNSR_LOCF (0x00000004) |
||||
#define PLL_SYNSR_CALDONE (0x00000002) |
||||
#define PLL_SYNSR_CALPASS (0x00000001) |
||||
|
||||
/*********************************************************************
|
||||
* Edge Port |
||||
*********************************************************************/ |
||||
#define EPORT_EPPAR_EPPA7(x) (((x)&0x03)<<14) |
||||
#define EPORT_EPPAR_EPPA6(x) (((x)&0x03)<<12) |
||||
#define EPORT_EPPAR_EPPA5(x) (((x)&0x03)<<10) |
||||
#define EPORT_EPPAR_EPPA4(x) (((x)&0x03)<<8) |
||||
#define EPORT_EPPAR_EPPA3(x) (((x)&0x03)<<6) |
||||
#define EPORT_EPPAR_EPPA2(x) (((x)&0x03)<<4) |
||||
#define EPORT_EPPAR_EPPA1(x) (((x)&0x03)<<2) |
||||
|
||||
#define EPORT_EPDDR_EPDD7(x) EPORT_EPPAR_EPPA7(x) |
||||
#define EPORT_EPDDR_EPDD6(x) EPORT_EPPAR_EPPA6(x) |
||||
#define EPORT_EPDDR_EPDD5(x) EPORT_EPPAR_EPPA5(x) |
||||
#define EPORT_EPDDR_EPDD4(x) EPORT_EPPAR_EPPA4(x) |
||||
#define EPORT_EPDDR_EPDD3(x) EPORT_EPPAR_EPPA3(x) |
||||
#define EPORT_EPDDR_EPDD2(x) EPORT_EPPAR_EPPA2(x) |
||||
#define EPORT_EPDDR_EPDD1(x) EPORT_EPPAR_EPPA1(x) |
||||
|
||||
#define EPORT_EPIER_EPIE7 (0x80) |
||||
#define EPORT_EPIER_EPIE6 (0x40) |
||||
#define EPORT_EPIER_EPIE5 (0x20) |
||||
#define EPORT_EPIER_EPIE4 (0x10) |
||||
#define EPORT_EPIER_EPIE3 (0x08) |
||||
#define EPORT_EPIER_EPIE2 (0x04) |
||||
#define EPORT_EPIER_EPIE1 (0x02) |
||||
|
||||
#define EPORT_EPDR_EPDR7 EPORT_EPIER_EPIE7 |
||||
#define EPORT_EPDR_EPDR6 EPORT_EPIER_EPIE6 |
||||
#define EPORT_EPDR_EPDR5 EPORT_EPIER_EPIE5 |
||||
#define EPORT_EPDR_EPDR4 EPORT_EPIER_EPIE4 |
||||
#define EPORT_EPDR_EPDR3 EPORT_EPIER_EPIE3 |
||||
#define EPORT_EPDR_EPDR2 EPORT_EPIER_EPIE2 |
||||
#define EPORT_EPDR_EPDR1 EPORT_EPIER_EPIE1 |
||||
|
||||
#define EPORT_EPPDR_EPPDR7 EPORT_EPIER_EPIE7 |
||||
#define EPORT_EPPDR_EPPDR6 EPORT_EPIER_EPIE6 |
||||
#define EPORT_EPPDR_EPPDR5 EPORT_EPIER_EPIE5 |
||||
#define EPORT_EPPDR_EPPDR4 EPORT_EPIER_EPIE4 |
||||
#define EPORT_EPPDR_EPPDR3 EPORT_EPIER_EPIE3 |
||||
#define EPORT_EPPDR_EPPDR2 EPORT_EPIER_EPIE2 |
||||
#define EPORT_EPPDR_EPPDR1 EPORT_EPIER_EPIE1 |
||||
|
||||
/*********************************************************************
|
||||
* Watchdog Timer Modules (WTM) |
||||
*********************************************************************/ |
||||
/* Bit definitions and macros for WTM_WCR */ |
||||
#define WTM_WCR_WAIT (0x0008) |
||||
#define WTM_WCR_DOZE (0x0004) |
||||
#define WTM_WCR_HALTED (0x0002) |
||||
#define WTM_WCR_EN (0x0001) |
||||
|
||||
/*********************************************************************
|
||||
* FlexCAN Module (CAN) |
||||
*********************************************************************/ |
||||
/* Bit definitions and macros for CAN_CANMCR */ |
||||
#define CANMCR_MDIS (0x80000000) |
||||
#define CANMCR_FRZ (0x40000000) |
||||
#define CANMCR_HALT (0x10000000) |
||||
#define CANMCR_NORDY (0x08000000) |
||||
#define CANMCR_SOFTRST (0x02000000) |
||||
#define CANMCR_FRZACK (0x01000000) |
||||
#define CANMCR_SUPV (0x00800000) |
||||
#define CANMCR_LPMACK (0x00100000) |
||||
#define CANMCR_MAXMB(x) (((x)&0x0F)) |
||||
|
||||
/* Bit definitions and macros for CAN_CANCTRL */ |
||||
#define CANCTRL_PRESDIV(x) (((x)&0xFF)<<24) |
||||
#define CANCTRL_RJW(x) (((x)&0x03)<<22) |
||||
#define CANCTRL_PSEG1(x) (((x)&0x07)<<19) |
||||
#define CANCTRL_PSEG2(x) (((x)&0x07)<<16) |
||||
#define CANCTRL_BOFFMSK (0x00008000) |
||||
#define CANCTRL_ERRMSK (0x00004000) |
||||
#define CANCTRL_CLKSRC (0x00002000) |
||||
#define CANCTRL_LPB (0x00001000) |
||||
#define CANCTRL_SMP (0x00000080) |
||||
#define CANCTRL_BOFFREC (0x00000040) |
||||
#define CANCTRL_TSYNC (0x00000020) |
||||
#define CANCTRL_LBUF (0x00000010) |
||||
#define CANCTRL_LOM (0x00000008) |
||||
#define CANCTRL_PROPSEG(x) (((x)&0x07)) |
||||
|
||||
/* Bit definitions and macros for CAN_TIMER */ |
||||
#define TIMER_TIMER(x) ((x)&0xFFFF) |
||||
|
||||
/* Bit definitions and macros for CAN_RXGMASK */ |
||||
#define RXGMASK_MI(x) ((x)&0x1FFFFFFF) |
||||
|
||||
/* Bit definitions and macros for CAN_ERRCNT */ |
||||
#define ERRCNT_TXECTR(x) (((x)&0xFF)) |
||||
#define ERRCNT_RXECTR(x) (((x)&0xFF)<<8) |
||||
|
||||
/* Bit definitions and macros for CAN_ERRSTAT */ |
||||
#define ERRSTAT_BITERR1 (0x00008000) |
||||
#define ERRSTAT_BITERR0 (0x00004000) |
||||
#define ERRSTAT_ACKERR (0x00002000) |
||||
#define ERRSTAT_CRCERR (0x00001000) |
||||
#define ERRSTAT_FRMERR (0x00000800) |
||||
#define ERRSTAT_STFERR (0x00000400) |
||||
#define ERRSTAT_TXWRN (0x00000200) |
||||
#define ERRSTAT_RXWRN (0x00000100) |
||||
#define ERRSTAT_IDLE (0x00000080) |
||||
#define ERRSTAT_TXRX (0x00000040) |
||||
#define ERRSTAT_FLT_BUSOFF (0x00000020) |
||||
#define ERRSTAT_FLT_PASSIVE (0x00000010) |
||||
#define ERRSTAT_FLT_ACTIVE (0x00000000) |
||||
#define ERRSTAT_BOFFINT (0x00000004) |
||||
#define ERRSTAT_ERRINT (0x00000002) |
||||
|
||||
/* Bit definitions and macros for CAN_IMASK */ |
||||
#define IMASK_BUF15M (0x00008000) |
||||
#define IMASK_BUF14M (0x00004000) |
||||
#define IMASK_BUF13M (0x00002000) |
||||
#define IMASK_BUF12M (0x00001000) |
||||
#define IMASK_BUF11M (0x00000800) |
||||
#define IMASK_BUF10M (0x00000400) |
||||
#define IMASK_BUF9M (0x00000200) |
||||
#define IMASK_BUF8M (0x00000100) |
||||
#define IMASK_BUF7M (0x00000080) |
||||
#define IMASK_BUF6M (0x00000040) |
||||
#define IMASK_BUF5M (0x00000020) |
||||
#define IMASK_BUF4M (0x00000010) |
||||
#define IMASK_BUF3M (0x00000008) |
||||
#define IMASK_BUF2M (0x00000004) |
||||
#define IMASK_BUF1M (0x00000002) |
||||
#define IMASK_BUF0M (0x00000001) |
||||
|
||||
/* Bit definitions and macros for CAN_IFLAG */ |
||||
#define IFLAG_BUF15I (0x00008000) |
||||
#define IFLAG_BUF14I (0x00004000) |
||||
#define IFLAG_BUF13I (0x00002000) |
||||
#define IFLAG_BUF12I (0x00001000) |
||||
#define IFLAG_BUF11I (0x00000800) |
||||
#define IFLAG_BUF10I (0x00000400) |
||||
#define IFLAG_BUF9I (0x00000200) |
||||
#define IFLAG_BUF8I (0x00000100) |
||||
#define IFLAG_BUF7I (0x00000080) |
||||
#define IFLAG_BUF6I (0x00000040) |
||||
#define IFLAG_BUF5I (0x00000020) |
||||
#define IFLAG_BUF4I (0x00000010) |
||||
#define IFLAG_BUF3I (0x00000008) |
||||
#define IFLAG_BUF2I (0x00000004) |
||||
#define IFLAG_BUF1I (0x00000002) |
||||
#define IFLAG_BUF0I (0x00000001) |
||||
|
||||
#endif /* mcf5235_h */ |
@ -0,0 +1,261 @@ |
||||
/*
|
||||
* Configuation settings for the Freescale MCF5329 FireEngine board. |
||||
* |
||||
* Copyright (C) 2004-2007 Freescale Semiconductor, Inc. |
||||
* TsiChung Liew (Tsi-Chung.Liew@freescale.com) |
||||
* |
||||
* See file CREDITS for list of people who contributed to this |
||||
* project. |
||||
* |
||||
* This program is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU General Public License as |
||||
* published by the Free Software Foundation; either version 2 of |
||||
* the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software |
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
||||
* MA 02111-1307 USA |
||||
*/ |
||||
|
||||
/*
|
||||
* board/config.h - configuration options, board specific |
||||
*/ |
||||
|
||||
#ifndef _M5235EVB_H |
||||
#define _M5235EVB_H |
||||
|
||||
/*
|
||||
* High Level Configuration Options |
||||
* (easy to change) |
||||
*/ |
||||
#define CONFIG_MCF523x /* define processor family */ |
||||
#define CONFIG_M5235 /* define processor type */ |
||||
|
||||
#undef DEBUG |
||||
|
||||
#define CONFIG_MCFUART |
||||
#define CFG_UART_PORT (0) |
||||
#define CONFIG_BAUDRATE 115200 |
||||
#define CFG_BAUDRATE_TABLE { 9600 , 19200 , 38400 , 57600, 115200 } |
||||
|
||||
#undef CONFIG_WATCHDOG |
||||
#define CONFIG_WATCHDOG_TIMEOUT 5000 /* timeout in milliseconds, max timeout is 6.71sec */ |
||||
|
||||
/*
|
||||
* BOOTP options |
||||
*/ |
||||
#define CONFIG_BOOTP_BOOTFILESIZE |
||||
#define CONFIG_BOOTP_BOOTPATH |
||||
#define CONFIG_BOOTP_GATEWAY |
||||
#define CONFIG_BOOTP_HOSTNAME |
||||
|
||||
/* Command line configuration */ |
||||
#include <config_cmd_default.h> |
||||
|
||||
#define CONFIG_CMD_BOOTD |
||||
#define CONFIG_CMD_CACHE |
||||
#define CONFIG_CMD_DHCP |
||||
#define CONFIG_CMD_ELF |
||||
#define CONFIG_CMD_FLASH |
||||
#define CONFIG_CMD_I2C |
||||
#define CONFIG_CMD_MEMORY |
||||
#define CONFIG_CMD_MISC |
||||
#define CONFIG_CMD_MII |
||||
#define CONFIG_CMD_NET |
||||
#define CONFIG_CMD_PCI |
||||
#define CONFIG_CMD_PING |
||||
#define CONFIG_CMD_REGINFO |
||||
|
||||
#undef CONFIG_CMD_LOADB |
||||
#undef CONFIG_CMD_LOADS |
||||
|
||||
#define CONFIG_MCFFEC |
||||
#ifdef CONFIG_MCFFEC |
||||
# define CONFIG_NET_MULTI 1 |
||||
# define CONFIG_MII 1 |
||||
# define CFG_DISCOVER_PHY |
||||
# define CFG_RX_ETH_BUFFER 8 |
||||
# define CFG_FAULT_ECHO_LINK_DOWN |
||||
|
||||
# define CFG_FEC0_PINMUX 0 |
||||
# define CFG_FEC0_MIIBASE CFG_FEC0_IOBASE |
||||
# define MCFFEC_TOUT_LOOP 50000 |
||||
/* If CFG_DISCOVER_PHY is not defined - hardcoded */ |
||||
# ifndef CFG_DISCOVER_PHY |
||||
# define FECDUPLEX FULL |
||||
# define FECSPEED _100BASET |
||||
# else |
||||
# ifndef CFG_FAULT_ECHO_LINK_DOWN |
||||
# define CFG_FAULT_ECHO_LINK_DOWN |
||||
# endif |
||||
# endif /* CFG_DISCOVER_PHY */ |
||||
#endif |
||||
|
||||
/* Timer */ |
||||
#define CONFIG_MCFTMR |
||||
#undef CONFIG_MCFPIT |
||||
|
||||
/* I2C */ |
||||
#define CONFIG_FSL_I2C |
||||
#define CONFIG_HARD_I2C /* I2C with hw support */ |
||||
#undef CONFIG_SOFT_I2C /* I2C bit-banged */ |
||||
#define CFG_I2C_SPEED 80000 |
||||
#define CFG_I2C_SLAVE 0x7F |
||||
#define CFG_I2C_OFFSET 0x00000300 |
||||
#define CFG_IMMR CFG_MBAR |
||||
|
||||
/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ |
||||
#define CONFIG_BOOTDELAY 1 /* autoboot after 5 seconds */ |
||||
#define CONFIG_BOOTFILE "u-boot.bin" |
||||
#ifdef CONFIG_MCFFEC |
||||
# define CONFIG_ETHADDR 00:e0:0c:bc:e5:60 |
||||
# define CONFIG_IPADDR 192.162.1.2 |
||||
# define CONFIG_NETMASK 255.255.255.0 |
||||
# define CONFIG_SERVERIP 192.162.1.1 |
||||
# define CONFIG_GATEWAYIP 192.162.1.1 |
||||
# define CONFIG_OVERWRITE_ETHADDR_ONCE |
||||
#endif /* FEC_ENET */ |
||||
|
||||
#define CONFIG_HOSTNAME M5235EVB |
||||
#define CONFIG_EXTRA_ENV_SETTINGS \ |
||||
"netdev=eth0\0" \
|
||||
"loadaddr=10000\0" \
|
||||
"u-boot=u-boot.bin\0" \
|
||||
"load=tftp ${loadaddr) ${u-boot}\0" \
|
||||
"upd=run load; run prog\0" \
|
||||
"prog=prot off ffe00000 ffe3ffff;" \
|
||||
"era ffe00000 ffe3ffff;" \
|
||||
"cp.b ${loadaddr} ffe00000 ${filesize};"\
|
||||
"save\0" \
|
||||
"" |
||||
|
||||
#define CONFIG_PRAM 512 /* 512 KB */ |
||||
#define CFG_PROMPT "-> " |
||||
#define CFG_LONGHELP /* undef to save memory */ |
||||
|
||||
#if defined(CONFIG_KGDB) |
||||
# define CFG_CBSIZE 1024 /* Console I/O Buffer Size */ |
||||
#else |
||||
# define CFG_CBSIZE 256 /* Console I/O Buffer Size */ |
||||
#endif |
||||
|
||||
#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ |
||||
#define CFG_MAXARGS 16 /* max number of command args */ |
||||
#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */ |
||||
#define CFG_LOAD_ADDR (CFG_SDRAM_BASE+0x20000) |
||||
|
||||
#define CFG_HZ 1000 |
||||
#define CFG_CLK 75000000 |
||||
#define CFG_CPU_CLK CFG_CLK * 2 |
||||
|
||||
#define CFG_MBAR 0x40000000 |
||||
|
||||
/*
|
||||
* Low Level Configuration Settings |
||||
* (address mappings, register initial values, etc.) |
||||
* You should know what you are doing if you make changes here. |
||||
*/ |
||||
/*-----------------------------------------------------------------------
|
||||
* Definitions for initial stack pointer and data area (in DPRAM) |
||||
*/ |
||||
#define CFG_INIT_RAM_ADDR 0x20000000 |
||||
#define CFG_INIT_RAM_END 0x10000 /* End of used area in internal SRAM */ |
||||
#define CFG_INIT_RAM_CTRL 0x21 |
||||
#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */ |
||||
#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE - 0x10) |
||||
#define CFG_INIT_SP_OFFSET CFG_GBL_DATA_OFFSET |
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* Start addresses for the final memory configuration |
||||
* (Set up by the startup code) |
||||
* Please note that CFG_SDRAM_BASE _must_ start at 0 |
||||
*/ |
||||
#define CFG_SDRAM_BASE 0x00000000 |
||||
#define CFG_SDRAM_SIZE 16 /* SDRAM size in MB */ |
||||
|
||||
#define CFG_MEMTEST_START CFG_SDRAM_BASE + 0x400 |
||||
#define CFG_MEMTEST_END ((CFG_SDRAM_SIZE - 3) << 20) |
||||
|
||||
#define CFG_MONITOR_BASE (CFG_FLASH_BASE + 0x400) |
||||
#define CFG_MONITOR_LEN (256 << 10) /* Reserve 256 kB for Monitor */ |
||||
|
||||
#define CFG_BOOTPARAMS_LEN 64*1024 |
||||
#define CFG_MALLOC_LEN (128 << 10) /* Reserve 128 kB for malloc() */ |
||||
|
||||
/*
|
||||
* For booting Linux, the board info and command line data |
||||
* have to be in the first 8 MB of memory, since this is |
||||
* the maximum mapped by the Linux kernel during initialization ?? |
||||
*/ |
||||
/* Initial Memory map for Linux */ |
||||
#define CFG_BOOTMAPSZ (CFG_SDRAM_BASE + (CFG_SDRAM_SIZE << 20)) |
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* FLASH organization |
||||
*/ |
||||
#define CFG_FLASH_CFI |
||||
#ifdef CFG_FLASH_CFI |
||||
# define CFG_FLASH_CFI_DRIVER 1 |
||||
# define CFG_FLASH_SIZE 0x800000 /* Max size that the board might have */ |
||||
#ifdef NORFLASH_PS32BIT |
||||
# define CFG_FLASH_CFI_WIDTH FLASH_CFI_32BIT |
||||
#else |
||||
# define CFG_FLASH_CFI_WIDTH FLASH_CFI_16BIT |
||||
#endif |
||||
# define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */ |
||||
# define CFG_MAX_FLASH_SECT 137 /* max number of sectors on one chip */ |
||||
# define CFG_FLASH_PROTECTION /* "Real" (hardware) sectors protection */ |
||||
#endif |
||||
|
||||
#define CFG_FLASH_BASE (CFG_CS0_BASE << 16) |
||||
|
||||
/* Configuration for environment
|
||||
* Environment is embedded in u-boot in the second sector of the flash |
||||
*/ |
||||
#define CFG_ENV_IS_IN_FLASH 1 |
||||
#define CFG_ENV_IS_EMBEDDED 1 |
||||
#ifdef NORFLASH_PS32BIT |
||||
# define CFG_ENV_OFFSET (0x8000) |
||||
# define CFG_ENV_SIZE 0x4000 |
||||
# define CFG_ENV_SECT_SIZE 0x4000 |
||||
#else |
||||
# define CFG_ENV_OFFSET (0x4000) |
||||
# define CFG_ENV_SIZE 0x2000 |
||||
# define CFG_ENV_SECT_SIZE 0x2000 |
||||
#endif |
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* Cache Configuration |
||||
*/ |
||||
#define CFG_CACHELINE_SIZE 16 |
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* Chipselect bank definitions |
||||
*/ |
||||
/*
|
||||
* CS0 - NOR Flash 1, 2, 4, or 8MB |
||||
* CS1 - Available |
||||
* CS2 - Available |
||||
* CS3 - Available |
||||
* CS4 - Available |
||||
* CS5 - Available |
||||
* CS6 - Available |
||||
* CS7 - Available |
||||
*/ |
||||
#ifdef NORFLASH_PS32BIT |
||||
# define CFG_CS0_BASE 0xFFC0 |
||||
# define CFG_CS0_MASK 0x003f0001 |
||||
# define CFG_CS0_CTRL 0x1D00 |
||||
#else |
||||
# define CFG_CS0_BASE 0xFFE0 |
||||
# define CFG_CS0_MASK 0x001f0001 |
||||
# define CFG_CS0_CTRL 0x1D80 |
||||
#endif |
||||
|
||||
#endif /* _M5329EVB_H */ |
Loading…
Reference in new issue