Clean up the code according to codestyle:

(1) remove some C++ comments.
(2) remove trailing white space.
(3) remove trailing empty line.
(4) Indentation by table.
(5) remove {} in one line condition.
(6) add space before '(' in function call.
Remove some weird printf () output.
Add necessary comments.
Modified Makefile to support building in a separate directory.
This commit is contained in:
roy zang 2006-12-01 11:47:36 +08:00 committed by Zang Tiefei
parent 6bd87c0aee
commit ee311214e0
13 changed files with 1687 additions and 1734 deletions

View File

@ -1722,7 +1722,7 @@ EVB64260_750CX_config: unconfig
@$(MKCONFIG) EVB64260 ppc 74xx_7xx evb64260 @$(MKCONFIG) EVB64260 ppc 74xx_7xx evb64260
mpc7448hpc2_config: unconfig mpc7448hpc2_config: unconfig
@./mkconfig $(@:_config=) ppc 74xx_7xx mpc7448hpc2 @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx mpc7448hpc2
P3G4_config: unconfig P3G4_config: unconfig
@$(MKCONFIG) $(@:_config=) ppc 74xx_7xx evb64260 @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx evb64260

View File

@ -23,26 +23,30 @@
include $(TOPDIR)/config.mk include $(TOPDIR)/config.mk
LIB = lib$(BOARD).a LIB = $(obj)lib$(BOARD).a
OBJS = $(BOARD).o tsi108_init.o COBJS := $(BOARD).o tsi108_init.o
SOBJS := asm_init.o
SOBJS = asm_init.o SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
OBJS := $(addprefix $(obj),$(COBJS))
SOBJS := $(addprefix $(obj),$(SOBJS))
$(LIB): .depend $(OBJS) $(SOBJS) $(LIB): $(obj).depend $(OBJS) $(SOBJS)
$(AR) crv $@ $(OBJS) $(SOBJS) $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
clean: clean:
rm -f $(SOBJS) $(OBJS) rm -f $(SOBJS) $(OBJS)
.PHONY: distclean
distclean: clean distclean: clean
rm -f $(LIB) core *.bak .depend rm -f $(LIB) core *.bak .depend
######################################################################### #########################################################################
.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c) # defines $(obj).depend target
$(CC) -M $(CFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@ include $(SRCTREE)/rules.mk
sinclude .depend sinclude ($obj).depend
######################################################################### #########################################################################

File diff suppressed because it is too large Load Diff

View File

@ -25,7 +25,7 @@
*/ */
/* /*
* board support/init functions for the * board support/init functions for the
* Freescale MPC7448 HPC2 (High-Performance Computing 2 Platform). * Freescale MPC7448 HPC2 (High-Performance Computing 2 Platform).
*/ */
@ -33,39 +33,38 @@
#include <74xx_7xx.h> #include <74xx_7xx.h>
#if defined(CONFIG_OF_FLAT_TREE) #if defined(CONFIG_OF_FLAT_TREE)
#include <ft_build.h> #include <ft_build.h>
extern void ft_cpu_setup(void *blob, bd_t *bd); extern void ft_cpu_setup (void *blob, bd_t *bd);
#endif #endif
#undef DEBUG #undef DEBUG
extern void flush_data_cache(void); extern void flush_data_cache (void);
extern void invalidate_l1_instruction_cache(void); extern void invalidate_l1_instruction_cache (void);
extern void tsi108_init_f(void); extern void tsi108_init_f (void);
int display_mem_map(void); int display_mem_map (void);
void after_reloc(ulong dest_addr) void after_reloc (ulong dest_addr)
{ {
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
/* /*
* Jump to the main U-Boot board init code * Jump to the main U-Boot board init code
*/ */
board_init_r((gd_t *) gd, dest_addr); board_init_r ((gd_t *) gd, dest_addr);
/* NOTREACHED */ /* NOTREACHED */
} }
/* /*
* Check Board Identity: * Check Board Identity:
*
* report board type * report board type
*/ */
int checkboard(void) int checkboard (void)
{ {
int l_type = 0; int l_type = 0;
printf("BOARD: %s\n", CFG_BOARD_NAME); printf ("BOARD: %s\n", CFG_BOARD_NAME);
return (l_type); return (l_type);
} }
@ -75,19 +74,19 @@ int checkboard(void)
* report calling processor number * report calling processor number
*/ */
int read_pid(void) int read_pid (void)
{ {
return 0; /* we are on single CPU platform for a while */ return 0; /* we are on single CPU platform for a while */
} }
long int dram_size(int board_type) long int dram_size (int board_type)
{ {
return 0x20000000; /* 256M bytes */ return 0x20000000; /* 256M bytes */
} }
long int initdram(int board_type) long int initdram (int board_type)
{ {
return dram_size(board_type); return dram_size (board_type);
} }
/* DRAM check routines copied from gw8260 */ /* DRAM check routines copied from gw8260 */
@ -114,11 +113,11 @@ long int initdram(int board_type)
/* May cloober fr0. */ /* May cloober fr0. */
/* */ /* */
/*********************************************************************/ /*********************************************************************/
static void move64(unsigned long long *src, unsigned long long *dest) static void move64 (unsigned long long *src, unsigned long long *dest)
{ {
asm("lfd 0, 0(3)\n\t" /* fpr0 = *scr */ asm ("lfd 0, 0(3)\n\t" /* fpr0 = *scr */
"stfd 0, 0(4)" /* *dest = fpr0 */ "stfd 0, 0(4)" /* *dest = fpr0 */
: : :"fr0"); /* Clobbers fr0 */ : : :"fr0"); /* Clobbers fr0 */
return; return;
} }
@ -183,28 +182,28 @@ unsigned long long pattern[] = {
/* Assumes only one one SDRAM bank */ /* Assumes only one one SDRAM bank */
/* */ /* */
/*********************************************************************/ /*********************************************************************/
int mem_test_data(void) int mem_test_data (void)
{ {
unsigned long long *pmem = (unsigned long long *)CFG_MEMTEST_START; unsigned long long *pmem = (unsigned long long *)CFG_MEMTEST_START;
unsigned long long temp64; unsigned long long temp64;
int num_patterns = sizeof(pattern) / sizeof(pattern[0]); int num_patterns = sizeof (pattern) / sizeof (pattern[0]);
int i; int i;
unsigned int hi, lo; unsigned int hi, lo;
for (i = 0; i < num_patterns; i++) { for (i = 0; i < num_patterns; i++) {
move64(&(pattern[i]), pmem); move64 (&(pattern[i]), pmem);
move64(pmem, &temp64); move64 (pmem, &temp64);
/* hi = (temp64>>32) & 0xffffffff; */ /* hi = (temp64>>32) & 0xffffffff; */
/* lo = temp64 & 0xffffffff; */ /* lo = temp64 & 0xffffffff; */
/* printf("\ntemp64 = 0x%08x%08x", hi, lo); */ /* printf ("\ntemp64 = 0x%08x%08x", hi, lo); */
hi = (pattern[i] >> 32) & 0xffffffff; hi = (pattern[i] >> 32) & 0xffffffff;
lo = pattern[i] & 0xffffffff; lo = pattern[i] & 0xffffffff;
/* printf("\npattern[%d] = 0x%08x%08x", i, hi, lo); */ /* printf ("\npattern[%d] = 0x%08x%08x", i, hi, lo); */
if (temp64 != pattern[i]) { if (temp64 != pattern[i]) {
printf("\n Data Test Failed, pattern 0x%08x%08x", printf ("\n Data Test Failed, pattern 0x%08x%08x",
hi, lo); hi, lo);
return 1; return 1;
} }
@ -236,7 +235,7 @@ int mem_test_data(void)
/* */ /* */
/* */ /* */
/*********************************************************************/ /*********************************************************************/
int mem_test_address(void) int mem_test_address (void)
{ {
volatile unsigned int *pmem = volatile unsigned int *pmem =
(volatile unsigned int *)CFG_MEMTEST_START; (volatile unsigned int *)CFG_MEMTEST_START;
@ -251,13 +250,13 @@ int mem_test_address(void)
/* verify each loaction */ /* verify each loaction */
for (i = 0; i < size; i++) { for (i = 0; i < size; i++) {
if (pmem[i] != i) { if (pmem[i] != i) {
printf("\n Address Test Failed at 0x%x", i); printf ("\n Address Test Failed at 0x%x", i);
return 1; return 1;
} }
} }
return 0; return 0;
} }
#endif /* CFG_DRAM_TEST_ADDRESS */ #endif /* CFG_DRAM_TEST_ADDRESS */
#if defined (CFG_DRAM_TEST_WALK) #if defined (CFG_DRAM_TEST_WALK)
/*********************************************************************/ /*********************************************************************/
@ -287,7 +286,7 @@ int mem_test_address(void)
/* */ /* */
/* */ /* */
/*********************************************************************/ /*********************************************************************/
int mem_march(volatile unsigned long long *base, int mem_march (volatile unsigned long long *base,
unsigned int size, unsigned int size,
unsigned long long rmask, unsigned long long rmask,
unsigned long long wmask, short read, short write) unsigned long long wmask, short read, short write)
@ -299,14 +298,14 @@ int mem_march(volatile unsigned long long *base,
for (i = 0; i < size; i++) { for (i = 0; i < size; i++) {
if (read != 0) { if (read != 0) {
/* temp = base[i]; */ /* temp = base[i]; */
move64((unsigned long long *)&(base[i]), &temp); move64 ((unsigned long long *)&(base[i]), &temp);
if (rmask != temp) { if (rmask != temp) {
hitemp = (temp >> 32) & 0xffffffff; hitemp = (temp >> 32) & 0xffffffff;
lotemp = temp & 0xffffffff; lotemp = temp & 0xffffffff;
himask = (rmask >> 32) & 0xffffffff; himask = (rmask >> 32) & 0xffffffff;
lomask = rmask & 0xffffffff; lomask = rmask & 0xffffffff;
printf("\n Walking one's test failed: \ printf ("\n Walking one's test failed: \
address = 0x%08x," "\n\texpected \ address = 0x%08x," "\n\texpected \
0x%08x%08x, found 0x%08x%08x", i << 3,\ 0x%08x%08x, found 0x%08x%08x", i << 3,\
himask, lomask, hitemp, lotemp); himask, lomask, hitemp, lotemp);
@ -315,12 +314,12 @@ int mem_march(volatile unsigned long long *base,
} }
if (write != 0) { if (write != 0) {
/* base[i] = wmask; */ /* base[i] = wmask; */
move64(&wmask, (unsigned long long *)&(base[i])); move64 (&wmask, (unsigned long long *)&(base[i]));
} }
} }
return 0; return 0;
} }
#endif /* CFG_DRAM_TEST_WALK */ #endif /* CFG_DRAM_TEST_WALK */
/*********************************************************************/ /*********************************************************************/
/* NAME: mem_test_walk() - a simple walking ones test */ /* NAME: mem_test_walk() - a simple walking ones test */
@ -348,7 +347,7 @@ int mem_march(volatile unsigned long long *base,
/* */ /* */
/* */ /* */
/*********************************************************************/ /*********************************************************************/
int mem_test_walk(void) int mem_test_walk (void)
{ {
unsigned long long mask; unsigned long long mask;
volatile unsigned long long *pmem = volatile unsigned long long *pmem =
@ -359,32 +358,31 @@ int mem_test_walk(void)
mask = 0x01; mask = 0x01;
printf("Initial Pass"); printf ("Initial Pass");
mem_march(pmem, size, 0x0, 0x1, 0, 1); mem_march (pmem, size, 0x0, 0x1, 0, 1);
printf("\b\b\b\b\b\b\b\b\b\b\b\b"); printf ("\b\b\b\b\b\b\b\b\b\b\b\b");
printf(" "); printf (" ");
printf(" "); printf (" ");
printf("\b\b\b\b\b\b\b\b\b\b\b\b"); printf ("\b\b\b\b\b\b\b\b\b\b\b\b");
for (i = 0; i < 63; i++) { for (i = 0; i < 63; i++) {
printf("Pass %2d", i + 2); printf ("Pass %2d", i + 2);
if (mem_march(pmem, size, mask, mask << 1, 1, 1) != 0) { if (mem_march(pmem, size, mask, mask << 1, 1, 1) != 0)
/*printf("mask: 0x%x, pass: %d, ", mask, i); */ /*printf ("mask: 0x%x, pass: %d, ", mask, i); */
return 1; return 1;
}
mask = mask << 1; mask = mask << 1;
printf("\b\b\b\b\b\b\b"); printf ("\b\b\b\b\b\b\b");
} }
printf("Last Pass"); printf ("Last Pass");
if (mem_march(pmem, size, 0, mask, 0, 1) != 0) { if (mem_march(pmem, size, 0, mask, 0, 1) != 0) {
/* printf("mask: 0x%x", mask); */ /* printf ("mask: 0x%x", mask); */
return 1; return 1;
} }
printf("\b\b\b\b\b\b\b\b\b"); printf ("\b\b\b\b\b\b\b\b\b");
printf(" "); printf (" ");
printf("\b\b\b\b\b\b\b\b\b"); printf ("\b\b\b\b\b\b\b\b\b");
return 0; return 0;
} }
@ -412,60 +410,58 @@ int mem_test_walk(void)
/* */ /* */
/* */ /* */
/*********************************************************************/ /*********************************************************************/
int testdram(void) int testdram (void)
{ {
char *s; char *s;
int rundata, runaddress, runwalk; int rundata, runaddress, runwalk;
s = getenv("testdramdata"); s = getenv ("testdramdata");
rundata = (s && (*s == 'y')) ? 1 : 0; rundata = (s && (*s == 'y')) ? 1 : 0;
s = getenv("testdramaddress"); s = getenv ("testdramaddress");
runaddress = (s && (*s == 'y')) ? 1 : 0; runaddress = (s && (*s == 'y')) ? 1 : 0;
s = getenv("testdramwalk"); s = getenv ("testdramwalk");
runwalk = (s && (*s == 'y')) ? 1 : 0; runwalk = (s && (*s == 'y')) ? 1 : 0;
/* rundata = 1; */ /* rundata = 1; */
/* runaddress = 0; */ /* runaddress = 0; */
/* runwalk = 0; */ /* runwalk = 0; */
if ((rundata == 1) || (runaddress == 1) || (runwalk == 1)) { if ((rundata == 1) || (runaddress == 1) || (runwalk == 1))
printf("Testing RAM from 0x%08x to 0x%08x ... \ printf ("Testing RAM from 0x%08x to 0x%08x ... \
(don't panic... that will take a moment !!!!)\n", \ (don't panic... that will take a moment !!!!)\n", \
CFG_MEMTEST_START, CFG_MEMTEST_END); CFG_MEMTEST_START, CFG_MEMTEST_END);
}
#ifdef CFG_DRAM_TEST_DATA #ifdef CFG_DRAM_TEST_DATA
if (rundata == 1) { if (rundata == 1) {
printf("Test DATA ... "); printf ("Test DATA ... ");
if (mem_test_data () == 1) { if (mem_test_data () == 1) {
printf("failed \n"); printf ("failed \n");
return 1; return 1;
} else } else
printf("ok \n"); printf ("ok \n");
} }
#endif #endif
#ifdef CFG_DRAM_TEST_ADDRESS #ifdef CFG_DRAM_TEST_ADDRESS
if (runaddress == 1) { if (runaddress == 1) {
printf("Test ADDRESS ... "); printf ("Test ADDRESS ... ");
if (mem_test_address () == 1) { if (mem_test_address () == 1) {
printf("failed \n"); printf ("failed \n");
return 1; return 1;
} else } else
printf("ok \n"); printf ("ok \n");
} }
#endif #endif
#ifdef CFG_DRAM_TEST_WALK #ifdef CFG_DRAM_TEST_WALK
if (runwalk == 1) { if (runwalk == 1) {
printf("Test WALKING ONEs ... "); printf ("Test WALKING ONEs ... ");
if (mem_test_walk() == 1) { if (mem_test_walk () == 1) {
printf("failed \n"); printf ("failed \n");
return 1; return 1;
} else } else
printf("ok \n"); printf ("ok \n");
} }
#endif #endif
if ((rundata == 1) || (runaddress == 1) || (runwalk == 1)) { if ((rundata == 1) || (runaddress == 1) || (runwalk == 1))
printf("passed\n"); printf ("passed\n");
}
return 0; return 0;
} }
@ -473,17 +469,17 @@ int testdram(void)
#if defined(CONFIG_OF_FLAT_TREE) && defined(CONFIG_OF_BOARD_SETUP) #if defined(CONFIG_OF_FLAT_TREE) && defined(CONFIG_OF_BOARD_SETUP)
void void
ft_board_setup(void *blob, bd_t *bd) ft_board_setup (void *blob, bd_t *bd)
{ {
u32 *p; u32 *p;
int len; int len;
ft_cpu_setup(blob, bd); ft_cpu_setup (blob, bd);
p = ft_get_prop(blob, "/memory/reg", &len); p = ft_get_prop (blob, "/memory/reg", &len);
if (p != NULL) { if (p != NULL) {
*p++ = cpu_to_be32(bd->bi_memstart); *p++ = cpu_to_be32 (bd->bi_memstart);
*p = cpu_to_be32(bd->bi_memsize); *p = cpu_to_be32 (bd->bi_memsize);
} }
} }
#endif #endif

View File

@ -1,6 +1,6 @@
/***************************************************************************** /*****************************************************************************
* (C) Copyright 2003; Tundra Semiconductor Corp. * (C) Copyright 2003; Tundra Semiconductor Corp.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as * modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of * published by the Free Software Foundation; either version 2 of
@ -33,7 +33,7 @@
#include <asm/processor.h> #include <asm/processor.h>
#include <tsi108.h> #include <tsi108.h>
extern void mpicInit(int verbose); extern void mpicInit (int verbose);
/* /*
* Configuration Options * Configuration Options
@ -118,11 +118,11 @@ static PLL_CTRL_SET pll0_config[8] = {
static int pb_clk_sel[8] = { 0, 0, 183, 100, 133, 167, 200, 233 }; static int pb_clk_sel[8] = { 0, 0, 183, 100, 133, 167, 200, 233 };
/* /*
* get_board_bus_clk() * get_board_bus_clk ()
* *
* returns the bus clock in Hz. * returns the bus clock in Hz.
*/ */
unsigned long get_board_bus_clk(void) unsigned long get_board_bus_clk (void)
{ {
ulong i; ulong i;
@ -134,37 +134,38 @@ unsigned long get_board_bus_clk(void)
} }
/* /*
* board_early_init_f() * board_early_init_f ()
* *
* board-specific initialization executed from flash * board-specific initialization executed from flash
*/ */
int board_early_init_f(void) int board_early_init_f (void)
{ {
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
ulong i; ulong i;
gd->mem_clk = 0; gd->mem_clk = 0;
i = in32(CFG_TSI108_CSR_BASE + TSI108_CLK_REG_OFFSET + CG_PWRUP_STATUS); i = in32 (CFG_TSI108_CSR_BASE + TSI108_CLK_REG_OFFSET +
i = (i >> 20) & 0x07; CG_PWRUP_STATUS);
i = (i >> 20) & 0x07; /* value of SW4[4:7] */
switch (i) { switch (i) {
case 0: case 0: /* external clock */
printf("Using external clock\n"); printf ("Using external clock\n");
break; break;
case 1: case 1: /* system clock */
gd->mem_clk = gd->bus_clk; gd->mem_clk = gd->bus_clk;
break; break;
case 4: case 4: /* 133 MHz */
case 5: case 5: /* 166 MHz */
case 6: case 6: /* 200 MHz */
gd->mem_clk = pb_clk_sel[i] * 1000000; gd->mem_clk = pb_clk_sel[i] * 1000000;
break; break;
default: default:
printf("Invalid DDR2 clock setting\n"); printf ("Invalid DDR2 clock setting\n");
return -1; return -1;
} }
printf("BUS! %d MHz\n", get_board_bus_clk() / 1000000); printf ("BUS: %d MHz\n", get_board_bus_clk() / 1000000);
printf("MEM! %d MHz\n", gd->mem_clk / 1000000); printf ("MEM: %d MHz\n", gd->mem_clk / 1000000);
return 0; return 0;
} }
@ -173,175 +174,174 @@ int board_early_init_f(void)
* relocation. Contains code that cannot be executed from flash. * relocation. Contains code that cannot be executed from flash.
*/ */
int board_early_init_r(void) int board_early_init_r (void)
{ {
ulong temp, i; ulong temp, i;
ulong reg_val; ulong reg_val;
volatile ulong *reg_ptr; volatile ulong *reg_ptr;
reg_ptr = reg_ptr =
(ulong *) (CFG_TSI108_CSR_BASE + TSI108_PB_REG_OFFSET + 0x900); (ulong *) (CFG_TSI108_CSR_BASE + TSI108_PB_REG_OFFSET + 0x900);
for (i = 0; i < 32; i++) { for (i = 0; i < 32; i++) {
*reg_ptr++ = 0x00000201; /* SWAP ENABLED */ *reg_ptr++ = 0x00000201; /* SWAP ENABLED */
*reg_ptr++ = 0x00; *reg_ptr++ = 0x00;
} }
__asm__ __volatile__("eieio"); __asm__ __volatile__ ("eieio");
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
/* Setup PB_OCN_BAR2: size 256B + ENable @ 0x0_80000000 */ /* Setup PB_OCN_BAR2: size 256B + ENable @ 0x0_80000000 */
out32(CFG_TSI108_CSR_BASE + TSI108_PB_REG_OFFSET + PB_OCN_BAR2, out32 (CFG_TSI108_CSR_BASE + TSI108_PB_REG_OFFSET + PB_OCN_BAR2,
0x80000001); 0x80000001);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
/* Make sure that OCN_BAR2 decoder is set (to allow following immediate /* Make sure that OCN_BAR2 decoder is set (to allow following immediate
* read from SDRAM) * read from SDRAM)
*/ */
temp = in32(CFG_TSI108_CSR_BASE + TSI108_PB_REG_OFFSET + PB_OCN_BAR2); temp = in32(CFG_TSI108_CSR_BASE + TSI108_PB_REG_OFFSET + PB_OCN_BAR2);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
/* /*
* Remap PB_OCN_BAR1 to accomodate PCI-bus aperture and EPROM into the * Remap PB_OCN_BAR1 to accomodate PCI-bus aperture and EPROM into the
* processor bus address space. Immediately after reset LUT and address * processor bus address space. Immediately after reset LUT and address
* translation are disabled for this BAR. Now we have to initialize LUT * translation are disabled for this BAR. Now we have to initialize LUT
* and switch from the BOOT mode to the normal operation mode. * and switch from the BOOT mode to the normal operation mode.
* *
* The aperture defined by PB_OCN_BAR1 startes at address 0xE0000000 * The aperture defined by PB_OCN_BAR1 startes at address 0xE0000000
* and covers 512MB of address space. To allow larger aperture we also * and covers 512MB of address space. To allow larger aperture we also
* have to relocate register window of Tsi108 * have to relocate register window of Tsi108
* *
* Initialize LUT (32-entries) prior switching PB_OCN_BAR1 from BOOT * Initialize LUT (32-entries) prior switching PB_OCN_BAR1 from BOOT
* mode. * mode.
* *
* initialize pointer to LUT associated with PB_OCN_BAR1 * initialize pointer to LUT associated with PB_OCN_BAR1
*/ */
reg_ptr = reg_ptr =
(ulong *) (CFG_TSI108_CSR_BASE + TSI108_PB_REG_OFFSET + 0x800); (ulong *) (CFG_TSI108_CSR_BASE + TSI108_PB_REG_OFFSET + 0x800);
for (i = 0; i < 32; i++) { for (i = 0; i < 32; i++) {
*reg_ptr++ = pb2ocn_lut1[i].lower; *reg_ptr++ = pb2ocn_lut1[i].lower;
*reg_ptr++ = pb2ocn_lut1[i].upper; *reg_ptr++ = pb2ocn_lut1[i].upper;
} }
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
/* Base addresses for Cs0, CS1, CS2, CS3 */ /* Base addresses for Cs0, CS1, CS2, CS3 */
out32(CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B0_ADDR, out32 (CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B0_ADDR,
0x00000000); 0x00000000);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
out32(CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B1_ADDR, out32 (CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B1_ADDR,
0x00100000); 0x00100000);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
out32(CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B2_ADDR, out32 (CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B2_ADDR,
0x00200000); 0x00200000);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
out32(CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B3_ADDR, out32 (CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B3_ADDR,
0x00300000); 0x00300000);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
/* Masks for HLP banks */ /* Masks for HLP banks */
out32(CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B0_MASK, out32 (CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B0_MASK,
0xFFF00000); 0xFFF00000);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
out32(CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B1_MASK, out32 (CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B1_MASK,
0xFFF00000); 0xFFF00000);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
out32(CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B2_MASK, out32 (CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B2_MASK,
0xFFF00000); 0xFFF00000);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
out32(CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B3_MASK, out32 (CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B3_MASK,
0xFFF00000); 0xFFF00000);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
/* Set CTRL0 values for banks */ /* Set CTRL0 values for banks */
out32(CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B0_CTRL0, out32 (CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B0_CTRL0,
0x7FFC44C2); 0x7FFC44C2);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
out32(CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B1_CTRL0, out32 (CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B1_CTRL0,
0x7FFC44C0); 0x7FFC44C0);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
out32(CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B2_CTRL0, out32 (CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B2_CTRL0,
0x7FFC44C0); 0x7FFC44C0);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
out32(CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B3_CTRL0, out32 (CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B3_CTRL0,
0x7FFC44C2); 0x7FFC44C2);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
/* Set banks to latched mode, enabled, and other default settings */ /* Set banks to latched mode, enabled, and other default settings */
out32(CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B0_CTRL1, out32 (CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B0_CTRL1,
0x7C0F2000); 0x7C0F2000);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
out32(CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B1_CTRL1, out32 (CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B1_CTRL1,
0x7C0F2000); 0x7C0F2000);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
out32(CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B2_CTRL1, out32 (CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B2_CTRL1,
0x7C0F2000); 0x7C0F2000);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
out32(CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B3_CTRL1, out32 (CFG_TSI108_CSR_BASE + TSI108_HLP_REG_OFFSET + HLP_B3_CTRL1,
0x7C0F2000); 0x7C0F2000);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
/* /*
* Set new value for PB_OCN_BAR1: switch from BOOT to LUT mode. * Set new value for PB_OCN_BAR1: switch from BOOT to LUT mode.
* value for PB_OCN_BAR1: (BA-0xE000_0000 + size 512MB + ENable) * value for PB_OCN_BAR1: (BA-0xE000_0000 + size 512MB + ENable)
*/ */
out32(CFG_TSI108_CSR_BASE + TSI108_PB_REG_OFFSET + PB_OCN_BAR1, out32 (CFG_TSI108_CSR_BASE + TSI108_PB_REG_OFFSET + PB_OCN_BAR1,
0xE0000011); 0xE0000011);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
/* Make sure that OCN_BAR2 decoder is set (to allow following /* Make sure that OCN_BAR2 decoder is set (to allow following
* immediate read from SDRAM) * immediate read from SDRAM)
*/ */
temp = in32(CFG_TSI108_CSR_BASE + TSI108_PB_REG_OFFSET + PB_OCN_BAR1); temp = in32(CFG_TSI108_CSR_BASE + TSI108_PB_REG_OFFSET + PB_OCN_BAR1);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
/* /*
* SRI: At this point we have enabled the HLP banks. That means we can * SRI: At this point we have enabled the HLP banks. That means we can
* now read from the NVRAM and initialize the environment variables. * now read from the NVRAM and initialize the environment variables.
* We will over-ride the env_init called in board_init_f * We will over-ride the env_init called in board_init_f
* This is really a work-around because, the HLP bank 1 * This is really a work-around because, the HLP bank 1
* where NVRAM resides is not visible during board_init_f * where NVRAM resides is not visible during board_init_f
* (lib_ppc/board.c) * (lib_ppc/board.c)
* Alternatively, we could use the I2C EEPROM at start-up to configure * Alternatively, we could use the I2C EEPROM at start-up to configure
* and enable all HLP banks and not just HLP 0 as is being done for * and enable all HLP banks and not just HLP 0 as is being done for
* Taiga Rev. 2. * Taiga Rev. 2.
*/ */
env_init(); env_init ();
#ifndef DISABLE_PBM #ifndef DISABLE_PBM
/* /*
* For IBM processors we have to set Address-Only commands generated * For IBM processors we have to set Address-Only commands generated
* by PBM that are different from ones set after reset. * by PBM that are different from ones set after reset.
*/ */
temp = get_cpu_type(); temp = get_cpu_type ();
if ((CPU_750FX == temp) || (CPU_750GX == temp)) { if ((CPU_750FX == temp) || (CPU_750GX == temp))
out32(CFG_TSI108_CSR_BASE + TSI108_PB_REG_OFFSET + PB_MCMD, out32 (CFG_TSI108_CSR_BASE + TSI108_PB_REG_OFFSET + PB_MCMD,
0x00009955); 0x00009955);
}
#endif /* DISABLE_PBM */ #endif /* DISABLE_PBM */
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
@ -350,42 +350,42 @@ int board_early_init_r(void)
*/ */
/* Map PCI/X Configuration Space (16MB @ 0x0_FE000000) */ /* Map PCI/X Configuration Space (16MB @ 0x0_FE000000) */
out32(CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_PFAB_BAR0_UPPER, out32 (CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET +
0); PCI_PFAB_BAR0_UPPER, 0);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
out32(CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_PFAB_BAR0, out32 (CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_PFAB_BAR0,
0xFB000001); 0xFB000001);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
/* Set Bus Number for the attached PCI/X bus (we will use 0 for NB) */ /* Set Bus Number for the attached PCI/X bus (we will use 0 for NB) */
temp = temp = in32(CFG_TSI108_CSR_BASE +
in32(CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_PCIX_STAT); TSI108_PCI_REG_OFFSET + PCI_PCIX_STAT);
temp &= ~0xFF00; /* Clear the BUS_NUM field */ temp &= ~0xFF00; /* Clear the BUS_NUM field */
out32(CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_PCIX_STAT, out32 (CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_PCIX_STAT,
temp); temp);
/* Map PCI/X IO Space (64KB @ 0x0_FD000000) takes one 16MB LUT entry */ /* Map PCI/X IO Space (64KB @ 0x0_FD000000) takes one 16MB LUT entry */
out32(CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_PFAB_IO_UPPER, out32 (CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_PFAB_IO_UPPER,
0); 0);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
/* This register is on the PCI side to interpret the address it receives /* This register is on the PCI side to interpret the address it receives
* and maps it as a IO address. * and maps it as a IO address.
*/ */
out32(CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_PFAB_IO, out32 (CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_PFAB_IO,
0xFA000001); 0xFA000001);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
/* /*
* Map PCI/X Memory Space * Map PCI/X Memory Space
* *
* Transactions directed from OCM to PCI Memory Space are directed * Transactions directed from OCM to PCI Memory Space are directed
* from PB to PCI * from PB to PCI
* unchanged (as defined by PB_OCN_BAR1,2 and LUT settings). * unchanged (as defined by PB_OCN_BAR1,2 and LUT settings).
* If address remapping is required the corresponding PCI_PFAB_MEM32 * If address remapping is required the corresponding PCI_PFAB_MEM32
@ -393,7 +393,7 @@ int board_early_init_r(void)
* *
* Map the path from the PCI/X bus into the system memory * Map the path from the PCI/X bus into the system memory
* *
* The memory mapped window assotiated with PCI P2O_BAR2 provides * The memory mapped window assotiated with PCI P2O_BAR2 provides
* access to the system memory without address remapping. * access to the system memory without address remapping.
* All system memory is opened for accesses initiated by PCI/X bus * All system memory is opened for accesses initiated by PCI/X bus
* masters. * masters.
@ -404,13 +404,13 @@ int board_early_init_r(void)
*/ */
reg_ptr = reg_ptr =
(ulong *) (CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + 0x500); (ulong *) (CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + 0x500);
#ifdef DISABLE_PBM #ifdef DISABLE_PBM
/* In case when PBM is disabled (no HW supported cache snoopng on PB) /* In case when PBM is disabled (no HW supported cache snoopng on PB)
* P2O_BAR2 is directly mapped into the system memory without address * P2O_BAR2 is directly mapped into the system memory without address
* translation. * translation.
*/ */
reg_val = 0x00000004; /* SDRAM port + NO Addr_Translation */ reg_val = 0x00000004; /* SDRAM port + NO Addr_Translation */
@ -438,30 +438,30 @@ int board_early_init_r(void)
reg_val = 0x00007100; reg_val = 0x00007100;
#endif #endif
__asm__ __volatile__("eieio"); __asm__ __volatile__ ("eieio");
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
out32(CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_P2O_PAGE_SIZES, out32 (CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_P2O_PAGE_SIZES,
reg_val); reg_val);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
/* Set 64-bit PCI bus address for system memory /* Set 64-bit PCI bus address for system memory
* ( 0 is the best choice for easy mapping) * ( 0 is the best choice for easy mapping)
*/ */
out32(CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_P2O_BAR2, out32 (CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_P2O_BAR2,
0x00000000); 0x00000000);
out32(CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_P2O_BAR2_UPPER, out32 (CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_P2O_BAR2_UPPER,
0x00000000); 0x00000000);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
#ifndef DISABLE_PBM #ifndef DISABLE_PBM
/* /*
* The memory mapped window assotiated with PCI P2O_BAR3 provides * The memory mapped window assotiated with PCI P2O_BAR3 provides
* access to the system memory using SDRAM OCN port and address * access to the system memory using SDRAM OCN port and address
* translation. This is alternative way to access SDRAM from PCI * translation. This is alternative way to access SDRAM from PCI
* required for Tsi108 emulation testing. * required for Tsi108 emulation testing.
* All system memory is opened for accesses initiated by * All system memory is opened for accesses initiated by
* PCI/X bus masters. * PCI/X bus masters.
* *
* Initialize LUT associated with PCI P2O_BAR3 * Initialize LUT associated with PCI P2O_BAR3
@ -469,7 +469,7 @@ int board_early_init_r(void)
* set pointer to LUT associated with PCI P2O_BAR3 * set pointer to LUT associated with PCI P2O_BAR3
*/ */
reg_ptr = reg_ptr =
(ulong *) (CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + 0x600); (ulong *) (CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + 0x600);
reg_val = 0x00000004; /* Destination port = SDC */ reg_val = 0x00000004; /* Destination port = SDC */
@ -483,45 +483,45 @@ int board_early_init_r(void)
reg_val += 0x01000000; reg_val += 0x01000000;
} }
__asm__ __volatile__("eieio"); __asm__ __volatile__ ("eieio");
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
/* Configure PCI P2O_BAR3 (size = 512MB, Enabled) */ /* Configure PCI P2O_BAR3 (size = 512MB, Enabled) */
reg_val = reg_val =
in32(CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + in32(CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET +
PCI_P2O_PAGE_SIZES); PCI_P2O_PAGE_SIZES);
reg_val &= ~0x00FF; reg_val &= ~0x00FF;
reg_val |= 0x0071; reg_val |= 0x0071;
out32(CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_P2O_PAGE_SIZES, out32 (CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_P2O_PAGE_SIZES,
reg_val); reg_val);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
/* Set 64-bit base PCI bus address for window (0x20000000) */ /* Set 64-bit base PCI bus address for window (0x20000000) */
out32(CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_P2O_BAR3_UPPER, out32 (CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_P2O_BAR3_UPPER,
0x00000000); 0x00000000);
out32(CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_P2O_BAR3, out32 (CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_P2O_BAR3,
0x20000000); 0x20000000);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
#endif /* !DISABLE_PBM */ #endif /* !DISABLE_PBM */
#ifdef ENABLE_PCI_CSR_BAR #ifdef ENABLE_PCI_CSR_BAR
/* open if required access to Tsi108 CSRs from the PCI/X bus */ /* open if required access to Tsi108 CSRs from the PCI/X bus */
/* enable BAR0 on the PCI/X bus */ /* enable BAR0 on the PCI/X bus */
reg_val = reg_val = in32(CFG_TSI108_CSR_BASE +
in32(CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_MISC_CSR); TSI108_PCI_REG_OFFSET + PCI_MISC_CSR);
reg_val |= 0x02; reg_val |= 0x02;
out32(CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_MISC_CSR, out32 (CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_MISC_CSR,
reg_val); reg_val);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
out32(CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_P2O_BAR0_UPPER, out32 (CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_P2O_BAR0_UPPER,
0x00000000); 0x00000000);
out32(CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_P2O_BAR0, out32 (CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_P2O_BAR0,
CFG_TSI108_CSR_BASE); CFG_TSI108_CSR_BASE);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
#endif #endif
@ -531,32 +531,32 @@ int board_early_init_r(void)
reg_val = in32(CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_CSR); reg_val = in32(CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_CSR);
reg_val |= 0x06; reg_val |= 0x06;
out32(CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_CSR, reg_val); out32 (CFG_TSI108_CSR_BASE + TSI108_PCI_REG_OFFSET + PCI_CSR, reg_val);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
#endif /* CONFIG_PCI */ #endif /* CONFIG_PCI */
/* /*
* Initialize MPIC outputs (interrupt pins): * Initialize MPIC outputs (interrupt pins):
* Interrupt routing on the Grendel Emul. Board: * Interrupt routing on the Grendel Emul. Board:
* PB_INT[0] -> INT (CPU0) * PB_INT[0] -> INT (CPU0)
* PB_INT[1] -> INT (CPU1) * PB_INT[1] -> INT (CPU1)
* PB_INT[2] -> MCP (CPU0) * PB_INT[2] -> MCP (CPU0)
* PB_INT[3] -> MCP (CPU1) * PB_INT[3] -> MCP (CPU1)
* Set interrupt controller outputs as Level_Sensitive/Active_Low * Set interrupt controller outputs as Level_Sensitive/Active_Low
*/ */
out32(CFG_TSI108_CSR_BASE + TSI108_MPIC_REG_OFFSET + MPIC_CSR(0), 0x02); out32 (CFG_TSI108_CSR_BASE + TSI108_MPIC_REG_OFFSET + MPIC_CSR(0), 0x02);
out32(CFG_TSI108_CSR_BASE + TSI108_MPIC_REG_OFFSET + MPIC_CSR(1), 0x02); out32 (CFG_TSI108_CSR_BASE + TSI108_MPIC_REG_OFFSET + MPIC_CSR(1), 0x02);
out32(CFG_TSI108_CSR_BASE + TSI108_MPIC_REG_OFFSET + MPIC_CSR(2), 0x02); out32 (CFG_TSI108_CSR_BASE + TSI108_MPIC_REG_OFFSET + MPIC_CSR(2), 0x02);
out32(CFG_TSI108_CSR_BASE + TSI108_MPIC_REG_OFFSET + MPIC_CSR(3), 0x02); out32 (CFG_TSI108_CSR_BASE + TSI108_MPIC_REG_OFFSET + MPIC_CSR(3), 0x02);
__asm__ __volatile__("sync"); __asm__ __volatile__ ("sync");
/* /*
* Ensure that Machine Check exception is enabled * Ensure that Machine Check exception is enabled
* We need it to support PCI Bus probing (configuration reads) * We need it to support PCI Bus probing (configuration reads)
*/ */
reg_val = mfmsr(); reg_val = mfmsr ();
mtmsr(reg_val | MSR_ME); mtmsr(reg_val | MSR_ME);
return 0; return 0;
@ -567,7 +567,7 @@ int board_early_init_r(void)
* used in the misc_init_r function * used in the misc_init_r function
*/ */
unsigned long get_l2cr(void) unsigned long get_l2cr (void)
{ {
unsigned long l2controlreg; unsigned long l2controlreg;
asm volatile ("mfspr %0, 1017":"=r" (l2controlreg):); asm volatile ("mfspr %0, 1017":"=r" (l2controlreg):);
@ -581,79 +581,82 @@ unsigned long get_l2cr(void)
* *
*/ */
int misc_init_r(void) int misc_init_r (void)
{ {
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
#ifdef CFG_CLK_SPREAD /* Initialize Spread-Spectrum Clock generation */ #ifdef CFG_CLK_SPREAD /* Initialize Spread-Spectrum Clock generation */
ulong i; ulong i;
/* Ensure that Spread-Spectrum is disabled */ /* Ensure that Spread-Spectrum is disabled */
out32(CFG_TSI108_CSR_BASE + TSI108_CLK_REG_OFFSET + CG_PLL0_CTRL0, 0); out32 (CFG_TSI108_CSR_BASE + TSI108_CLK_REG_OFFSET + CG_PLL0_CTRL0, 0);
out32(CFG_TSI108_CSR_BASE + TSI108_CLK_REG_OFFSET + CG_PLL1_CTRL0, 0); out32 (CFG_TSI108_CSR_BASE + TSI108_CLK_REG_OFFSET + CG_PLL1_CTRL0, 0);
/* Initialize PLL1: CG_PCI_CLK , internal OCN_CLK /* Initialize PLL1: CG_PCI_CLK , internal OCN_CLK
* Uses pre-calculated value for Fout = 800 MHz, Fs = 30 kHz, D = 0.5% * Uses pre-calculated value for Fout = 800 MHz, Fs = 30 kHz, D = 0.5%
*/ */
out32(CFG_TSI108_CSR_BASE + TSI108_CLK_REG_OFFSET + CG_PLL1_CTRL0, 0x002e0044); /* D = 0.25% */ out32 (CFG_TSI108_CSR_BASE + TSI108_CLK_REG_OFFSET + CG_PLL1_CTRL0,
out32(CFG_TSI108_CSR_BASE + TSI108_CLK_REG_OFFSET + CG_PLL1_CTRL1, 0x00000039); /* BWADJ */ 0x002e0044); /* D = 0.25% */
out32 (CFG_TSI108_CSR_BASE + TSI108_CLK_REG_OFFSET + CG_PLL1_CTRL1,
0x00000039); /* BWADJ */
/* Initialize PLL0: CG_PB_CLKO */ /* Initialize PLL0: CG_PB_CLKO */
/* Detect PB clock freq. */ /* Detect PB clock freq. */
i = in32(CFG_TSI108_CSR_BASE + TSI108_CLK_REG_OFFSET + CG_PWRUP_STATUS); i = in32(CFG_TSI108_CSR_BASE + TSI108_CLK_REG_OFFSET + CG_PWRUP_STATUS);
i = (i >> 16) & 0x07; /* Get PB PLL multiplier */ i = (i >> 16) & 0x07; /* Get PB PLL multiplier */
out32(CFG_TSI108_CSR_BASE + out32 (CFG_TSI108_CSR_BASE +
TSI108_CLK_REG_OFFSET + CG_PLL0_CTRL0, pll0_config[i].ctrl0); TSI108_CLK_REG_OFFSET + CG_PLL0_CTRL0, pll0_config[i].ctrl0);
out32(CFG_TSI108_CSR_BASE + out32 (CFG_TSI108_CSR_BASE +
TSI108_CLK_REG_OFFSET + CG_PLL0_CTRL1, pll0_config[i].ctrl1); TSI108_CLK_REG_OFFSET + CG_PLL0_CTRL1, pll0_config[i].ctrl1);
/* Wait and set SSEN for both PLL0 and 1 */ /* Wait and set SSEN for both PLL0 and 1 */
udelay(1000); udelay (1000);
out32(CFG_TSI108_CSR_BASE + TSI108_CLK_REG_OFFSET + CG_PLL1_CTRL0, 0x802e0044); /* D=0.25% */ out32 (CFG_TSI108_CSR_BASE + TSI108_CLK_REG_OFFSET + CG_PLL1_CTRL0,
out32(CFG_TSI108_CSR_BASE + 0x802e0044); /* D=0.25% */
TSI108_CLK_REG_OFFSET + CG_PLL0_CTRL0, out32 (CFG_TSI108_CSR_BASE +
0x80000000 | pll0_config[i].ctrl0); TSI108_CLK_REG_OFFSET + CG_PLL0_CTRL0,
0x80000000 | pll0_config[i].ctrl0);
#endif /* CFG_CLK_SPREAD */ #endif /* CFG_CLK_SPREAD */
#ifdef CFG_L2 #ifdef CFG_L2
l2cache_enable(); l2cache_enable ();
#endif #endif
printf("BUS: %d MHz\n", gd->bus_clk / 1000000); printf ("BUS: %d MHz\n", gd->bus_clk / 1000000);
printf("MEM: %d MHz\n", gd->mem_clk / 1000000); printf ("MEM: %d MHz\n", gd->mem_clk / 1000000);
/* /*
* All the information needed to print the cache details is avaiblable * All the information needed to print the cache details is avaiblable
* at this point i.e. above call to l2cache_enable is the very last * at this point i.e. above call to l2cache_enable is the very last
* thing done with regards to enabling diabling the cache. * thing done with regards to enabling diabling the cache.
* So this seems like a good place to print all this information * So this seems like a good place to print all this information
*/ */
printf("CACHE: "); printf ("CACHE: ");
switch (get_cpu_type()) { switch (get_cpu_type()) {
case CPU_7447A: case CPU_7447A:
printf("L1 Instruction cache - 32KB 8-way"); printf ("L1 Instruction cache - 32KB 8-way");
(get_hid0() & (1 << 15)) ? printf(" ENABLED\n") : (get_hid0 () & (1 << 15)) ? printf (" ENABLED\n") :
printf(" DISABLED\n"); printf (" DISABLED\n");
printf(" L1 Data cache - 32KB 8-way"); printf ("L1 Data cache - 32KB 8-way");
(get_hid0() & (1 << 14)) ? printf(" ENABLED\n") : (get_hid0 () & (1 << 14)) ? printf (" ENABLED\n") :
printf(" DISABLED\n"); printf (" DISABLED\n");
printf(" Unified L2 cache - 512KB 8-way"); printf ("Unified L2 cache - 512KB 8-way");
(get_l2cr() & (1 << 31)) ? printf(" ENABLED\n") : (get_l2cr () & (1 << 31)) ? printf (" ENABLED\n") :
printf(" DISABLED\n"); printf (" DISABLED\n");
printf("\n"); printf ("\n");
break; break;
case CPU_7448: case CPU_7448:
printf("L1 Instruction cache - 32KB 8-way"); printf ("L1 Instruction cache - 32KB 8-way");
(get_hid0() & (1 << 15)) ? printf(" ENABLED\n") : (get_hid0 () & (1 << 15)) ? printf (" ENABLED\n") :
printf(" DISABLED\n"); printf (" DISABLED\n");
printf(" L1 Data cache - 32KB 8-way"); printf ("L1 Data cache - 32KB 8-way");
(get_hid0() & (1 << 14)) ? printf(" ENABLED\n") : (get_hid0 () & (1 << 14)) ? printf (" ENABLED\n") :
printf(" DISABLED\n"); printf (" DISABLED\n");
printf(" Unified L2 cache - 1MB 8-way"); printf ("Unified L2 cache - 1MB 8-way");
(get_l2cr() & (1 << 31)) ? printf(" ENABLED\n") : (get_l2cr () & (1 << 31)) ? printf (" ENABLED\n") :
printf(" DISABLED\n"); printf (" DISABLED\n");
break; break;
default: default:
break; break;

View File

@ -303,7 +303,7 @@ watchdog_reset(void)
#ifdef CONFIG_OF_FLAT_TREE #ifdef CONFIG_OF_FLAT_TREE
void void
ft_cpu_setup(void *blob, bd_t *bd) ft_cpu_setup (void *blob, bd_t *bd)
{ {
u32 *p; u32 *p;
ulong clock; ulong clock;
@ -311,18 +311,18 @@ ft_cpu_setup(void *blob, bd_t *bd)
clock = bd->bi_busfreq; clock = bd->bi_busfreq;
p = ft_get_prop(blob, "/cpus/" OF_CPU "/bus-frequency", &len); p = ft_get_prop (blob, "/cpus/" OF_CPU "/bus-frequency", &len);
if (p != NULL) if (p != NULL)
*p = cpu_to_be32(clock); *p = cpu_to_be32 (clock);
#if defined(CONFIG_TSI108_ETH) #if defined(CONFIG_TSI108_ETH)
p = ft_get_prop(blob, "/" OF_TSI "/ethernet@6200/address", &len); p = ft_get_prop (blob, "/" OF_TSI "/ethernet@6200/address", &len);
memcpy(p, bd->bi_enetaddr, 6); memcpy (p, bd->bi_enetaddr, 6);
#endif #endif
#if defined(CONFIG_HAS_ETH1) #if defined(CONFIG_HAS_ETH1)
p = ft_get_prop(blob, "/" OF_TSI "/ethernet@6600/address", &len); p = ft_get_prop (blob, "/" OF_TSI "/ethernet@6600/address", &len);
memcpy(p, bd->bi_enet1addr, 6); memcpy (p, bd->bi_enet1addr, 6);
#endif #endif
} }
#endif #endif

View File

@ -31,7 +31,7 @@
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
extern unsigned long get_board_bus_clk(void); extern unsigned long get_board_bus_clk (void);
static const int hid1_multipliers_x_10[] = { static const int hid1_multipliers_x_10[] = {
25, /* 0000 - 2.5x */ 25, /* 0000 - 2.5x */
@ -53,38 +53,38 @@ static const int hid1_multipliers_x_10[] = {
}; };
static const int hid1_7447A_multipliers_x_10[] = { static const int hid1_7447A_multipliers_x_10[] = {
115, /* 00000 - 11.5x */ 115, /* 00000 - 11.5x */
170, /* 00001 - 17x */ 170, /* 00001 - 17x */
75, /* 00010 - 7.5x */ 75, /* 00010 - 7.5x */
150, /* 00011 - 15x */ 150, /* 00011 - 15x */
70, /* 00100 - 7x */ 70, /* 00100 - 7x */
180, /* 00101 - 18x */ 180, /* 00101 - 18x */
10, /* 00110 - bypass */ 10, /* 00110 - bypass */
200, /* 00111 - 20x */ 200, /* 00111 - 20x */
20, /* 01000 - 2x */ 20, /* 01000 - 2x */
210, /* 01001 - 21x */ 210, /* 01001 - 21x */
65, /* 01010 - 6.5x */ 65, /* 01010 - 6.5x */
130, /* 01011 - 13x */ 130, /* 01011 - 13x */
85, /* 01100 - 8.5x */ 85, /* 01100 - 8.5x */
240, /* 01101 - 13x */ 240, /* 01101 - 13x */
95, /* 01110 - 9.5x */ 95, /* 01110 - 9.5x */
90, /* 01111 - 9x */ 90, /* 01111 - 9x */
30, /* 10000 - 3x */ 30, /* 10000 - 3x */
105, /* 10001 - 10.5x */ 105, /* 10001 - 10.5x */
55, /* 10010 - 5.5x */ 55, /* 10010 - 5.5x */
110, /* 10011 - 11x */ 110, /* 10011 - 11x */
40, /* 10100 - 4x */ 40, /* 10100 - 4x */
100, /* 10101 - 10x */ 100, /* 10101 - 10x */
50, /* 10110 - 5x */ 50, /* 10110 - 5x */
120, /* 10111 - 12x */ 120, /* 10111 - 12x */
80, /* 11000 - 8x */ 80, /* 11000 - 8x */
140, /* 11001 - 14x */ 140, /* 11001 - 14x */
60, /* 11010 - 6x */ 60, /* 11010 - 6x */
160, /* 11011 - 16x */ 160, /* 11011 - 16x */
135, /* 11100 - 13.5x */ 135, /* 11100 - 13.5x */
280, /* 11101 - 28x */ 280, /* 11101 - 28x */
0, /* 11110 - off */ 0, /* 11110 - off */
125 /* 11111 - 12.5x */ 125 /* 11111 - 12.5x */
}; };
static const int hid1_fx_multipliers_x_10[] = { static const int hid1_fx_multipliers_x_10[] = {
@ -127,16 +127,17 @@ int get_clocks (void)
ulong clock = 0; ulong clock = 0;
#ifdef CFG_CONFIG_BUS_CLK #ifdef CFG_CONFIG_BUS_CLK
gd->bus_clk = get_board_bus_clk(); gd->bus_clk = get_board_bus_clk (); /* bus clock is configurable */
#else #else
gd->bus_clk = CFG_BUS_CLK; gd->bus_clk = CFG_BUS_CLK; /* bus clock is a fixed frequency */
#endif #endif
/* calculate the clock frequency based upon the CPU type */ /* calculate the clock frequency based upon the CPU type */
switch (get_cpu_type()) { switch (get_cpu_type()) {
case CPU_7447A: case CPU_7447A:
case CPU_7448: case CPU_7448:
clock = (gd->bus_clk / 10) * hid1_7447A_multipliers_x_10[(get_hid1 () >> 12) & 0x1F]; clock = (gd->bus_clk / 10) *
hid1_7447A_multipliers_x_10[(get_hid1 () >> 12) & 0x1F];
break; break;
case CPU_7455: case CPU_7455:
@ -146,12 +147,14 @@ int get_clocks (void)
* Make sure division is done before multiplication to prevent 32-bit * Make sure division is done before multiplication to prevent 32-bit
* arithmetic overflows which will cause a negative number * arithmetic overflows which will cause a negative number
*/ */
clock = (gd->bus_clk / 10) * hid1_multipliers_x_10[(get_hid1 () >> 13) & 0xF]; clock = (gd->bus_clk / 10) *
hid1_multipliers_x_10[(get_hid1 () >> 13) & 0xF];
break; break;
case CPU_750GX: case CPU_750GX:
case CPU_750FX: case CPU_750FX:
clock = gd->bus_clk * hid1_fx_multipliers_x_10[get_hid1 () >> 27] / 10; clock = gd->bus_clk *
hid1_fx_multipliers_x_10[get_hid1 () >> 27] / 10;
break; break;
case CPU_7450: case CPU_7450:
@ -168,7 +171,8 @@ int get_clocks (void)
* Make sure division is done before multiplication to prevent 32-bit * Make sure division is done before multiplication to prevent 32-bit
* arithmetic overflows which will cause a negative number * arithmetic overflows which will cause a negative number
*/ */
clock = (gd->bus_clk / 10) * hid1_multipliers_x_10[get_hid1 () >> 28]; clock = (gd->bus_clk / 10) *
hid1_multipliers_x_10[get_hid1 () >> 28];
break; break;
case CPU_UNKNOWN: case CPU_UNKNOWN:

View File

@ -3,23 +3,23 @@ Freescale MPC7448hpc2 (Taiga) board
Created 08/11/2006 Roy Zang Created 08/11/2006 Roy Zang
-------------------------- --------------------------
MPC7448hpc2 (Taiga) board is a high-performance PowerPC server reference MPC7448hpc2 (Taiga) board is a high-performance PowerPC server reference
design, which is optimized for high speed throughput between the processor and design, which is optimized for high speed throughput between the processor and
the memory, disk drive and Ethernet port subsystems. the memory, disk drive and Ethernet port subsystems.
MPC7448hpc2(Taiga) is designed to the micro-ATX chassis, allowing it to be MPC7448hpc2(Taiga) is designed to the micro-ATX chassis, allowing it to be
used in 1U or 2U rack-mount chassis¡¯, as well as in standard ATX/Micro-ATX used in 1U or 2U rack-mount chassis¡¯, as well as in standard ATX/Micro-ATX
chassis. chassis.
Building U-Boot Building U-Boot
------------------ ------------------
The mpc7448hpc2 code base is known to compile using: The mpc7448hpc2 code base is known to compile using:
Binutils 2.15, Gcc 3.4.3, Glibc 2.3.3 Binutils 2.15, Gcc 3.4.3, Glibc 2.3.3
$ make mpc7448hpc2_config $ make mpc7448hpc2_config
Configuring for mpc7448hpc2 board... Configuring for mpc7448hpc2 board...
$ make $ make
Memory Map Memory Map
---------- ----------
@ -28,25 +28,24 @@ The memory map is setup for Linux to operate properly.
The mapping is: The mapping is:
Range Start Range End Definition Size Range Start Range End Definition Size
0x0000_0000 0x7fff_ffff DDR 2G
0xe000_0000 0xe7ff_ffff PCI Memory 128M
0xfa00_0000 0xfaff_ffff PCI IO 16M
0xfb00_0000 0xfbff_ffff PCI Config 16M
0xfc00_0000 0xfc0f_ffff NVRAM/CADMUS 1M
0xfe00_0000 0xfeff_ffff PromJet 16M
0xff00_0000 0xff80_0000 FLASH (boot flash) 8M
0xff80_0000 0xffff_ffff FLASH (second half flash) 8M
0x0000_0000 0x7fff_ffff DDR 2G
0xe000_0000 0xe7ff_ffff PCI Memory 128M
0xfa00_0000 0xfaff_ffff PCI IO 16M
0xfb00_0000 0xfbff_ffff PCI Config 16M
0xfc00_0000 0xfc0f_ffff NVRAM/CADMUS 1M
0xfe00_0000 0xfeff_ffff PromJet 16M
0xff00_0000 0xff80_0000 FLASH (boot flash) 8M
0xff80_0000 0xffff_ffff FLASH (second half flash) 8M
Using Flash Using Flash
----------- -----------
The MPC7448hpc2 board has two "banks" of flash, each 8MB in size The MPC7448hpc2 board has two "banks" of flash, each 8MB in size
(2^23 = 0x00800000). (2^23 = 0x00800000).
Note: the "bank" here refers to half of the flash. In fact, there is only one Note: the "bank" here refers to half of the flash. In fact, there is only one
bank of flash, which is divided into low and high half. Each is controlled by bank of flash, which is divided into low and high half. Each is controlled by
the most significant bit of the address bus. The so called "bank" is only for the most significant bit of the address bus. The so called "bank" is only for
convenience. convenience.
@ -57,137 +56,130 @@ settings for updating flash are given below.
The u-boot commands for copying the boot-bank into the secondary bank are The u-boot commands for copying the boot-bank into the secondary bank are
as follows: as follows:
erase ff800000 ff880000 erase ff800000 ff880000
cp.b ff000000 ff800000 80000 cp.b ff000000 ff800000 80000
U-boot commands for downloading an image via tftp and flashing U-boot commands for downloading an image via tftp and flashing
it into the secondary bank: it into the secondary bank:
tftp 10000 <u-boot.bin.image> tftp 10000 <u-boot.bin.image>
erase ff000000 ff080000 erase ff000000 ff080000
cp.b 10000 ff000000 80000 cp.b 10000 ff000000 80000
After copying the image into the second bank of flash, be sure to toggle After copying the image into the second bank of flash, be sure to toggle
SW3[4] on board before resetting the board in order to set the SW3[4] on board before resetting the board in order to set the
secondary bank as the boot-bank. secondary bank as the boot-bank.
Board Switches Board Switches
---------------------- ----------------------
Most switches on the board should not be changed. The most frequent Most switches on the board should not be changed. The most frequent
user-settable switches on the board are used to configure user-settable switches on the board are used to configure
the flash banks and determining the PCI frequency. the flash banks and determining the PCI frequency.
SW1[1-5]: Processor core voltage SW1[1-5]: Processor core voltage
12345 Core Voltage 12345 Core Voltage
----- -----
SW1=01111 1.000V. SW1=01111 1.000V.
SW1=01101 1.100V. SW1=01101 1.100V.
SW1=01011 1.200V. SW1=01011 1.200V.
SW1=01001 1.300V only for MPC7447A. SW1=01001 1.300V only for MPC7447A.
SW2[1-6]: CPU core frequency SW2[1-6]: CPU core frequency
CPU Core Frequency (MHz) CPU Core Frequency (MHz)
Bus Frequency Bus Frequency
123456 100 133 167 200 Ratio 123456 100 133 167 200 Ratio
------ ------
SW2=101100 500 667 833 1000 5x SW2=101100 500 667 833 1000 5x
SW2=100100 550 733 917 1100 5.5x SW2=100100 550 733 917 1100 5.5x
SW2=110100 600 800 1000 1200 6x SW2=110100 600 800 1000 1200 6x
SW2=010100 650 866 1083 1300 6.5x SW2=010100 650 866 1083 1300 6.5x
SW2=001000 700 930 1167 1400 7x SW2=001000 700 930 1167 1400 7x
SW2=000100 750 1000 1250 1500 7.5x SW2=000100 750 1000 1250 1500 7.5x
SW2=110000 800 1066 1333 1600 8x SW2=110000 800 1066 1333 1600 8x
SW2=011000 850 1333 1417 1700 8.5x only for MPC7447A SW2=011000 850 1333 1417 1700 8.5x only for MPC7447A
SW2=011110 900 1200 1500 1800 9x SW2=011110 900 1200 1500 1800 9x
This table shows only a subset of available frequency options; see the CPU This table shows only a subset of available frequency options; see the CPU
hardware specifications for more information. hardware specifications for more information.
SW2[7-8]: Bus Protocol and CPU Reset Option SW2[7-8]: Bus Protocol and CPU Reset Option
7 7
- -
SW2=0 System bus uses MPX bus protocol SW2=0 System bus uses MPX bus protocol
SW2=1 System bus uses 60x bus protocol SW2=1 System bus uses 60x bus protocol
8
-
SW2=0 TSI108 can cause CPU reset
SW2=1 TSI108 can not cause CPU reset
8
-
SW2=0 TSI108 can cause CPU reset
SW2=1 TSI108 can not cause CPU reset
SW3[1-8] system options SW3[1-8] system options
123 123
--- ---
SW3=xxx Connected to GPIO[0:2] on TSI108 SW3=xxx Connected to GPIO[0:2] on TSI108
4 4
- -
SW3=0 CPU boots from low half of flash SW3=0 CPU boots from low half of flash
SW3=1 CPU boots from high half of flash SW3=1 CPU boots from high half of flash
5 5
- -
SW3=0 SATA and slot2 connected to PCI bus SW3=0 SATA and slot2 connected to PCI bus
SW3=1 Only slot1 connected to PCI bus SW3=1 Only slot1 connected to PCI bus
6 6
- -
SW3=0 USB connected to PCI bus SW3=0 USB connected to PCI bus
SW3=1 USB disconnected from PCI bus SW3=1 USB disconnected from PCI bus
7 7
- -
SW3=0 Flash is write protected SW3=0 Flash is write protected
SW3=1 Flash is NOT write protected SW3=1 Flash is NOT write protected
8 8
- -
SW3=0 CPU will boot from flash SW3=0 CPU will boot from flash
SW3=1 CPU will boot from PromJet SW3=1 CPU will boot from PromJet
SW4[1-3]: System bus frequency SW4[1-3]: System bus frequency
Bus Frequency (MHz) Bus Frequency (MHz)
--- ---
SW4=010 183 SW4=010 183
SW4=011 100 SW4=011 100
SW4=100 133 SW4=100 133
SW4=101 166 only for MPC7447A SW4=101 166 only for MPC7447A
SW4=110 200 only for MPC7448 SW4=110 200 only for MPC7448
others reserved others reserved
SW4[4-6]: DDR2 SDRAM frequency SW4[4-6]: DDR2 SDRAM frequency
Bus Frequency (MHz) Bus Frequency (MHz)
--- ---
SW4=000 external clock SW4=000 external clock
SW4=011 system clock SW4=011 system clock
SW4=100 133 SW4=100 133
SW4=101 166 SW4=101 166
SW4=110 200 SW4=110 200
others reserved others reserved
SW4[7-8]: PCI/PCI-X frequency control SW4[7-8]: PCI/PCI-X frequency control
7 7
- -
SW4=0 PCI/PCI-X bus operates normally SW4=0 PCI/PCI-X bus operates normally
SW4=1 PCI bus forced to PCI-33 mode SW4=1 PCI bus forced to PCI-33 mode
8 8
- -
SW4=0 PCI-X mode at 133 MHz allowed SW4=0 PCI-X mode at 133 MHz allowed
SW4=1 PCI-X mode limited to 100 MHz SW4=1 PCI-X mode limited to 100 MHz

File diff suppressed because it is too large Load Diff

View File

@ -23,19 +23,18 @@
*/ */
#include <config.h> #include <config.h>
#include <common.h>
#ifdef CONFIG_TSI108_I2C #ifdef CONFIG_TSI108_I2C
#include <common.h>
#include <tsi108.h> #include <tsi108.h>
#if (CONFIG_COMMANDS & CFG_CMD_I2C) #if (CONFIG_COMMANDS & CFG_CMD_I2C)
#define I2C_DELAY 100000 #define I2C_DELAY 100000
#undef DEBUG_I2C #undef DEBUG_I2C
#ifdef DEBUG_I2C #ifdef DEBUG_I2C
#define DPRINT(x) printf(x) #define DPRINT(x) printf (x)
#else #else
#define DPRINT(x) #define DPRINT(x)
#endif #endif
@ -43,7 +42,7 @@
/* All functions assume that Tsi108 I2C block is the only master on the bus */ /* All functions assume that Tsi108 I2C block is the only master on the bus */
/* I2C read helper function */ /* I2C read helper function */
static int i2c_read_byte( static int i2c_read_byte (
uint i2c_chan, /* I2C channel number: 0 - main, 1 - SDC SPD */ uint i2c_chan, /* I2C channel number: 0 - main, 1 - SDC SPD */
uchar chip_addr,/* I2C device address on the bus */ uchar chip_addr,/* I2C device address on the bus */
uint byte_addr, /* Byte address within I2C device */ uint byte_addr, /* Byte address within I2C device */
@ -55,19 +54,17 @@ static int i2c_read_byte(
u32 op_status = TSI108_I2C_TIMEOUT_ERR; u32 op_status = TSI108_I2C_TIMEOUT_ERR;
u32 chan_offset = TSI108_I2C_OFFSET; u32 chan_offset = TSI108_I2C_OFFSET;
DPRINT(("I2C read_byte() %d 0x%02x 0x%02x\n", DPRINT (("I2C read_byte() %d 0x%02x 0x%02x\n",
i2c_chan, chip_addr, byte_addr)); i2c_chan, chip_addr, byte_addr));
if (0 != i2c_chan) { if (0 != i2c_chan)
chan_offset = TSI108_I2C_SDRAM_OFFSET; chan_offset = TSI108_I2C_SDRAM_OFFSET;
}
/* Check if I2C operation is in progress */ /* Check if I2C operation is in progress */
temp = *(u32 *) (CFG_TSI108_CSR_BASE + chan_offset + I2C_CNTRL2); temp = *(u32 *) (CFG_TSI108_CSR_BASE + chan_offset + I2C_CNTRL2);
if (0 == (temp & (I2C_CNTRL2_RD_STATUS | I2C_CNTRL2_WR_STATUS | if (0 == (temp & (I2C_CNTRL2_RD_STATUS | I2C_CNTRL2_WR_STATUS |
I2C_CNTRL2_START)) I2C_CNTRL2_START))) {
) {
/* Set device address and operation (read = 0) */ /* Set device address and operation (read = 0) */
temp = (byte_addr << 16) | ((chip_addr & 0x07) << 8) | temp = (byte_addr << 16) | ((chip_addr & 0x07) << 8) |
((chip_addr >> 3) & 0x0F); ((chip_addr >> 3) & 0x0F);
@ -75,7 +72,7 @@ static int i2c_read_byte(
temp; temp;
/* Issue the read command /* Issue the read command
* (at this moment all other parameters are 0 * (at this moment all other parameters are 0
* (size = 1 byte, lane = 0) * (size = 1 byte, lane = 0)
*/ */
@ -108,7 +105,7 @@ static int i2c_read_byte(
/* report HW error */ /* report HW error */
op_status = TSI108_I2C_IF_ERROR; op_status = TSI108_I2C_IF_ERROR;
DPRINT(("I2C HW error reported: 0x%02x\n", temp)); DPRINT (("I2C HW error reported: 0x%02x\n", temp));
} }
break; break;
@ -117,20 +114,20 @@ static int i2c_read_byte(
} else { } else {
op_status = TSI108_I2C_IF_BUSY; op_status = TSI108_I2C_IF_BUSY;
DPRINT(("I2C Transaction start failed: 0x%02x\n", temp)); DPRINT (("I2C Transaction start failed: 0x%02x\n", temp));
} }
DPRINT(("I2C read_byte() status: 0x%02x\n", op_status)); DPRINT (("I2C read_byte() status: 0x%02x\n", op_status));
return op_status; return op_status;
} }
/* /*
* I2C Read interface as defined in "include/i2c.h" : * I2C Read interface as defined in "include/i2c.h" :
* chip_addr: I2C chip address, range 0..127 * chip_addr: I2C chip address, range 0..127
* (to read from SPD channel EEPROM use (0xD0 ... 0xD7) * (to read from SPD channel EEPROM use (0xD0 ... 0xD7)
* NOTE: The bit 7 in the chip_addr serves as a channel select. * NOTE: The bit 7 in the chip_addr serves as a channel select.
* This hack is for enabling "isdram" command on Tsi108 boards * This hack is for enabling "isdram" command on Tsi108 boards
* without changes to common code. Used for I2C reads only. * without changes to common code. Used for I2C reads only.
* byte_addr: Memory or register address within the chip * byte_addr: Memory or register address within the chip
* alen: Number of bytes to use for addr (typically 1, 2 for larger * alen: Number of bytes to use for addr (typically 1, 2 for larger
* memories, 0 for register type devices with only one * memories, 0 for register type devices with only one
@ -141,7 +138,8 @@ static int i2c_read_byte(
* Returns: 0 on success, not 0 on failure * Returns: 0 on success, not 0 on failure
*/ */
int i2c_read(uchar chip_addr, uint byte_addr, int alen, uchar * buffer, int len) int i2c_read (uchar chip_addr, uint byte_addr, int alen,
uchar * buffer, int len)
{ {
u32 op_status = TSI108_I2C_PARAM_ERR; u32 op_status = TSI108_I2C_PARAM_ERR;
u32 i2c_if = 0; u32 i2c_if = 0;
@ -159,20 +157,20 @@ int i2c_read(uchar chip_addr, uint byte_addr, int alen, uchar * buffer, int len)
buffer++); buffer++);
if (TSI108_I2C_SUCCESS != op_status) { if (TSI108_I2C_SUCCESS != op_status) {
DPRINT(("I2C read_byte() failed: 0x%02x (%d left)\n", op_status, len)); DPRINT (("I2C read_byte() failed: 0x%02x (%d left)\n", op_status, len));
break; break;
} }
} }
} }
DPRINT(("I2C read() status: 0x%02x\n", op_status)); DPRINT (("I2C read() status: 0x%02x\n", op_status));
return op_status; return op_status;
} }
/* I2C write helper function */ /* I2C write helper function */
static int i2c_write_byte(uchar chip_addr,/* I2C device address on the bus */ static int i2c_write_byte (uchar chip_addr,/* I2C device address on the bus */
uint byte_addr, /* Byte address within I2C device */ uint byte_addr, /* Byte address within I2C device */
uchar * buffer /* pointer to data buffer */ uchar * buffer /* pointer to data buffer */
) )
@ -210,7 +208,7 @@ static int i2c_write_byte(uchar chip_addr,/* I2C device address on the bus */
/* Wait until operation completed */ /* Wait until operation completed */
do { do {
// Read I2C operation status /* Read I2C operation status */
temp = temp =
*(u32 *) (CFG_TSI108_CSR_BASE + TSI108_I2C_OFFSET + *(u32 *) (CFG_TSI108_CSR_BASE + TSI108_I2C_OFFSET +
I2C_CNTRL2); I2C_CNTRL2);
@ -227,7 +225,7 @@ static int i2c_write_byte(uchar chip_addr,/* I2C device address on the bus */
/* report detected HW error */ /* report detected HW error */
op_status = TSI108_I2C_IF_ERROR; op_status = TSI108_I2C_IF_ERROR;
DPRINT(("I2C HW error reported: 0x%02x\n", temp)); DPRINT (("I2C HW error reported: 0x%02x\n", temp));
} }
break; break;
@ -237,13 +235,13 @@ static int i2c_write_byte(uchar chip_addr,/* I2C device address on the bus */
} else { } else {
op_status = TSI108_I2C_IF_BUSY; op_status = TSI108_I2C_IF_BUSY;
DPRINT(("I2C Transaction start failed: 0x%02x\n", temp)); DPRINT (("I2C Transaction start failed: 0x%02x\n", temp));
} }
return op_status; return op_status;
} }
/* /*
* I2C Write interface as defined in "include/i2c.h" : * I2C Write interface as defined in "include/i2c.h" :
* chip_addr: I2C chip address, range 0..127 * chip_addr: I2C chip address, range 0..127
* byte_addr: Memory or register address within the chip * byte_addr: Memory or register address within the chip
@ -256,7 +254,7 @@ static int i2c_write_byte(uchar chip_addr,/* I2C device address on the bus */
* Returns: 0 on success, not 0 on failure * Returns: 0 on success, not 0 on failure
*/ */
int i2c_write(uchar chip_addr, uint byte_addr, int alen, uchar * buffer, int i2c_write (uchar chip_addr, uint byte_addr, int alen, uchar * buffer,
int len) int len)
{ {
u32 op_status = TSI108_I2C_PARAM_ERR; u32 op_status = TSI108_I2C_PARAM_ERR;
@ -265,10 +263,10 @@ int i2c_write(uchar chip_addr, uint byte_addr, int alen, uchar * buffer,
if (chip_addr <= 0x7F && (byte_addr + len) <= (0x01 << (alen * 8))) { if (chip_addr <= 0x7F && (byte_addr + len) <= (0x01 << (alen * 8))) {
while (len--) { while (len--) {
op_status = op_status =
i2c_write_byte(chip_addr, byte_addr++, buffer++); i2c_write_byte (chip_addr, byte_addr++, buffer++);
if (TSI108_I2C_SUCCESS != op_status) { if (TSI108_I2C_SUCCESS != op_status) {
DPRINT(("I2C write_byte() failed: 0x%02x (%d left)\n", op_status, len)); DPRINT (("I2C write_byte() failed: 0x%02x (%d left)\n", op_status, len));
break; break;
} }
@ -278,13 +276,13 @@ int i2c_write(uchar chip_addr, uint byte_addr, int alen, uchar * buffer,
return op_status; return op_status;
} }
/* /*
* I2C interface function as defined in "include/i2c.h". * I2C interface function as defined in "include/i2c.h".
* Probe the given I2C chip address by reading single byte from offset 0. * Probe the given I2C chip address by reading single byte from offset 0.
* Returns 0 if a chip responded, not 0 on failure. * Returns 0 if a chip responded, not 0 on failure.
*/ */
int i2c_probe(uchar chip) int i2c_probe (uchar chip)
{ {
u32 tmp; u32 tmp;
@ -293,8 +291,8 @@ int i2c_probe(uchar chip)
* The Tsi108 HW doesn't support sending just the chip address * The Tsi108 HW doesn't support sending just the chip address
* and checkong for an <ACK> back. * and checkong for an <ACK> back.
*/ */
return i2c_read(chip, 0, 1, (char *)&tmp, 1); return i2c_read (chip, 0, 1, (char *)&tmp, 1);
} }
#endif /* (CONFIG_COMMANDS & CFG_CMD_I2C) */ #endif /* (CONFIG_COMMANDS & CFG_CMD_I2C) */
#endif /* CONFIG_TSI108_I2C */ #endif /* CONFIG_TSI108_I2C */

View File

@ -36,7 +36,7 @@
struct pci_controller local_hose; struct pci_controller local_hose;
void tsi108_clear_pci_error(void) void tsi108_clear_pci_error (void)
{ {
u32 err_stat, err_addr, pci_stat; u32 err_stat, err_addr, pci_stat;
@ -79,11 +79,11 @@ void tsi108_clear_pci_error(void)
return; return;
} }
unsigned int __get_pci_config_dword(u32 addr) unsigned int __get_pci_config_dword (u32 addr)
{ {
unsigned int retval; unsigned int retval;
__asm__ __volatile__(" lwbrx %0,0,%1\n" __asm__ __volatile__ (" lwbrx %0,0,%1\n"
"1: eieio\n" "1: eieio\n"
"2:\n" "2:\n"
".section .fixup,\"ax\"\n" ".section .fixup,\"ax\"\n"
@ -97,53 +97,53 @@ unsigned int __get_pci_config_dword(u32 addr)
return (retval); return (retval);
} }
static int tsi108_read_config_dword(struct pci_controller *hose, static int tsi108_read_config_dword (struct pci_controller *hose,
pci_dev_t dev, int offset, u32 * value) pci_dev_t dev, int offset, u32 * value)
{ {
dev &= (CFG_PCI_CFG_SIZE - 1); dev &= (CFG_PCI_CFG_SIZE - 1);
dev |= (CFG_PCI_CFG_BASE | (offset & 0xfc)); dev |= (CFG_PCI_CFG_BASE | (offset & 0xfc));
*value = __get_pci_config_dword(dev); *value = __get_pci_config_dword(dev);
if (0xFFFFFFFF == *value) if (0xFFFFFFFF == *value)
tsi108_clear_pci_error(); tsi108_clear_pci_error ();
return 0; return 0;
} }
static int tsi108_write_config_dword(struct pci_controller *hose, static int tsi108_write_config_dword (struct pci_controller *hose,
pci_dev_t dev, int offset, u32 value) pci_dev_t dev, int offset, u32 value)
{ {
dev &= (CFG_PCI_CFG_SIZE - 1); dev &= (CFG_PCI_CFG_SIZE - 1);
dev |= (CFG_PCI_CFG_BASE | (offset & 0xfc)); dev |= (CFG_PCI_CFG_BASE | (offset & 0xfc));
out_le32((volatile unsigned *)dev, value); out_le32 ((volatile unsigned *)dev, value);
return 0; return 0;
} }
void pci_init_board(void) void pci_init_board (void)
{ {
struct pci_controller *hose = (struct pci_controller *)&local_hose; struct pci_controller *hose = (struct pci_controller *)&local_hose;
hose->first_busno = 0; hose->first_busno = 0;
hose->last_busno = 0xff; hose->last_busno = 0xff;
pci_set_region(hose->regions + 0, pci_set_region (hose->regions + 0,
CFG_PCI_MEMORY_BUS, CFG_PCI_MEMORY_BUS,
CFG_PCI_MEMORY_PHYS, CFG_PCI_MEMORY_PHYS,
CFG_PCI_MEMORY_SIZE, PCI_REGION_MEM | PCI_REGION_MEMORY); CFG_PCI_MEMORY_SIZE, PCI_REGION_MEM | PCI_REGION_MEMORY);
/* PCI memory space */ /* PCI memory space */
pci_set_region(hose->regions + 1, pci_set_region (hose->regions + 1,
CFG_PCI_MEM_BUS, CFG_PCI_MEM_BUS,
CFG_PCI_MEM_PHYS, CFG_PCI_MEM_SIZE, PCI_REGION_MEM); CFG_PCI_MEM_PHYS, CFG_PCI_MEM_SIZE, PCI_REGION_MEM);
/* PCI I/O space */ /* PCI I/O space */
pci_set_region(hose->regions + 2, pci_set_region (hose->regions + 2,
CFG_PCI_IO_BUS, CFG_PCI_IO_BUS,
CFG_PCI_IO_PHYS, CFG_PCI_IO_SIZE, PCI_REGION_IO); CFG_PCI_IO_PHYS, CFG_PCI_IO_SIZE, PCI_REGION_IO);
hose->region_count = 3; hose->region_count = 3;
pci_set_ops(hose, pci_set_ops (hose,
pci_hose_read_config_byte_via_dword, pci_hose_read_config_byte_via_dword,
pci_hose_read_config_word_via_dword, pci_hose_read_config_word_via_dword,
tsi108_read_config_dword, tsi108_read_config_dword,
@ -151,22 +151,22 @@ void pci_init_board(void)
pci_hose_write_config_word_via_dword, pci_hose_write_config_word_via_dword,
tsi108_write_config_dword); tsi108_write_config_dword);
pci_register_hose(hose); pci_register_hose (hose);
hose->last_busno = pci_hose_scan(hose); hose->last_busno = pci_hose_scan (hose);
debug("Done PCI initialization\n"); debug ("Done PCI initialization\n");
return; return;
} }
#ifdef CONFIG_OF_FLAT_TREE #ifdef CONFIG_OF_FLAT_TREE
void void
ft_pci_setup(void *blob, bd_t *bd) ft_pci_setup (void *blob, bd_t *bd)
{ {
u32 *p; u32 *p;
int len; int len;
p = (u32 *)ft_get_prop(blob, "/" OF_TSI "/pci@1000/bus-range", &len); p = (u32 *)ft_get_prop (blob, "/" OF_TSI "/pci@1000/bus-range", &len);
if (p != NULL) { if (p != NULL) {
p[0] = local_hose.first_busno; p[0] = local_hose.first_busno;
p[1] = local_hose.last_busno; p[1] = local_hose.last_busno;

View File

@ -24,12 +24,11 @@
* MA 02111-1307 USA * MA 02111-1307 USA
*/ */
/**************************************************************** /*
*
* board specific configuration options for Freescale * board specific configuration options for Freescale
* MPC7448HPC2 (High-Performance Computing II) (Taiga) board * MPC7448HPC2 (High-Performance Computing II) (Taiga) board
* *
****************************************************************/ */
#ifndef __CONFIG_H #ifndef __CONFIG_H
#define __CONFIG_H #define __CONFIG_H
@ -45,11 +44,11 @@
#define CONFIG_750FX /* this option to enable init of extended BATs */ #define CONFIG_750FX /* this option to enable init of extended BATs */
#define CONFIG_ALTIVEC /* undef to disable */ #define CONFIG_ALTIVEC /* undef to disable */
#define CFG_BOARD_NAME "MPC7448 HPC II" #define CFG_BOARD_NAME "MPC7448 HPC II"
#define CONFIG_IDENT_STRING " Freescale MPC7448 HPC II" #define CONFIG_IDENT_STRING " Freescale MPC7448 HPC II"
#define CFG_OCN_CLK 133000000 /* 133 MHz */ #define CFG_OCN_CLK 133000000 /* 133 MHz */
#define CFG_CONFIG_BUS_CLK 133000000 #define CFG_CONFIG_BUS_CLK 133000000
#define CFG_CLK_SPREAD /* Enable Spread-Spectrum Clock generation */ #define CFG_CLK_SPREAD /* Enable Spread-Spectrum Clock generation */
@ -63,10 +62,10 @@
/* Default MAC Addresses for on-chip GIGE Controller */ /* Default MAC Addresses for on-chip GIGE Controller */
#define CONFIG_ETHADDR 00:06:D2:00:00:01 #define CONFIG_ETHADDR 00:06:D2:00:00:01
#define CONFIG_HAS_ETH1 #define CONFIG_HAS_ETH1
#define CONFIG_ETH1ADDR 00:06:D2:00:00:02 #define CONFIG_ETH1ADDR 00:06:D2:00:00:02
#define CONFIG_ENV_OVERWRITE #define CONFIG_ENV_OVERWRITE
@ -75,12 +74,12 @@
* (easy to change) * (easy to change)
*/ */
#define CONFIG_BAUDRATE 115200 /* console baudrate = 115000 */ #define CONFIG_BAUDRATE 115200 /* console baudrate = 115000 */
/*#define CFG_HUSH_PARSER */ /*#define CFG_HUSH_PARSER */
#undef CFG_HUSH_PARSER #undef CFG_HUSH_PARSER
#define CFG_PROMPT_HUSH_PS2 "> " #define CFG_PROMPT_HUSH_PS2 "> "
/* Pass open firmware flat tree */ /* Pass open firmware flat tree */
#define CONFIG_OF_FLAT_TREE 1 #define CONFIG_OF_FLAT_TREE 1
@ -99,29 +98,30 @@
* for your console driver. * for your console driver.
* *
* what to do: * what to do:
* If you have hacked a serial cable onto the second DUART channel, change the CFG_DUART port from 1 * If you have hacked a serial cable onto the second DUART channel,
* to 0 below. * change the CFG_DUART port from 1 to 0 below.
* *
*/ */
#define CONFIG_CONS_INDEX 1 #define CONFIG_CONS_INDEX 1
#define CFG_NS16550 #define CFG_NS16550
#define CFG_NS16550_SERIAL #define CFG_NS16550_SERIAL
#define CFG_NS16550_REG_SIZE 1 #define CFG_NS16550_REG_SIZE 1
#define CFG_NS16550_CLK CFG_OCN_CLK * 8 #define CFG_NS16550_CLK CFG_OCN_CLK * 8
#define CFG_NS16550_COM1 (CFG_TSI108_CSR_RST_BASE+0x7808) #define CFG_NS16550_COM1 (CFG_TSI108_CSR_RST_BASE+0x7808)
#define CFG_NS16550_COM2 (CFG_TSI108_CSR_RST_BASE+0x7C08) #define CFG_NS16550_COM2 (CFG_TSI108_CSR_RST_BASE+0x7C08)
#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 } #define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
#define CONFIG_BOOTDELAY 3 /* autoboot after 3 seconds */ #define CONFIG_BOOTDELAY 3 /* autoboot after 3 seconds */
#define CONFIG_ZERO_BOOTDELAY_CHECK #define CONFIG_ZERO_BOOTDELAY_CHECK
#undef CONFIG_BOOTARGS #undef CONFIG_BOOTARGS
/*#define CONFIG_PREBOOT "echo;echo Type \"run flash_nfs\" to mount root filesystem over NFS;echo" */ /* #define CONFIG_PREBOOT "echo;echo Type \"run flash_nfs\"
* to mount root filesystem over NFS;echo" */
#if (CONFIG_BOOTDELAY >= 0) #if (CONFIG_BOOTDELAY >= 0)
#define CONFIG_BOOTCOMMAND "tftpboot 0x400000 zImage.initrd.elf;\ #define CONFIG_BOOTCOMMAND "tftpboot 0x400000 zImage.initrd.elf;\
setenv bootargs $(bootargs) $(bootargs_root) nfsroot=$(serverip):$(rootpath) \ setenv bootargs $(bootargs) $(bootargs_root) nfsroot=$(serverip):$(rootpath) \
ip=$(ipaddr):$(serverip)$(bootargs_end); bootm 0x400000; " ip=$(ipaddr):$(serverip)$(bootargs_end); bootm 0x400000; "
@ -130,34 +130,34 @@
#undef CONFIG_EXTRA_ENV_SETTINGS #undef CONFIG_EXTRA_ENV_SETTINGS
#define CONFIG_SERIAL "No. 1" #define CONFIG_SERIAL "No. 1"
/* Networking Configuration */ /* Networking Configuration */
#define KSEG1ADDR(a) (a) /* Needed by the rtl8139 driver */ #define KSEG1ADDR(a) (a) /* Needed by the rtl8139 driver */
#define CONFIG_TSI108_ETH #define CONFIG_TSI108_ETH
#define CONFIG_TSI108_ETH_NUM_PORTS 2 #define CONFIG_TSI108_ETH_NUM_PORTS 2
#define CONFIG_NET_MULTI #define CONFIG_NET_MULTI
#define CONFIG_IPADDR 172.27.234.48 #define CONFIG_IPADDR 172.27.234.48
#define CONFIG_SERVERIP 172.27.234.10 #define CONFIG_SERVERIP 172.27.234.10
#define CONFIG_NETMASK 255.255.0.0 #define CONFIG_NETMASK 255.255.0.0
#define CONFIG_GATEWAYIP 172.27.255.254 #define CONFIG_GATEWAYIP 172.27.255.254
#define CONFIG_BOOTFILE zImage.initrd.elf #define CONFIG_BOOTFILE zImage.initrd.elf
#define CONFIG_LOADADDR 0x400000 #define CONFIG_LOADADDR 0x400000
/*-------------------------------------------------------------------------- */ /*-------------------------------------------------------------------------- */
#define CONFIG_LOADS_ECHO 0 /* echo off for serial download */ #define CONFIG_LOADS_ECHO 0 /* echo off for serial download */
#define CFG_LOADS_BAUD_CHANGE /* allow baudrate changes */ #define CFG_LOADS_BAUD_CHANGE /* allow baudrate changes */
#undef CONFIG_WATCHDOG /* watchdog disabled */ #undef CONFIG_WATCHDOG /* watchdog disabled */
#define CONFIG_BOOTP_MASK (CONFIG_BOOTP_DEFAULT | \ #define CONFIG_BOOTP_MASK (CONFIG_BOOTP_DEFAULT | \
CONFIG_BOOTP_BOOTFILESIZE) CONFIG_BOOTP_BOOTFILESIZE)
#define CONFIG_COMMANDS (CONFIG_CMD_DFL \ #define CONFIG_COMMANDS (CONFIG_CMD_DFL \
| CFG_CMD_ASKENV \ | CFG_CMD_ASKENV \
@ -178,59 +178,59 @@
/*set date in u-boot*/ /*set date in u-boot*/
#define CONFIG_RTC_M48T35A #define CONFIG_RTC_M48T35A
#define CFG_NVRAM_BASE_ADDR 0xfc000000 #define CFG_NVRAM_BASE_ADDR 0xfc000000
#define CFG_NVRAM_SIZE 0x8000 #define CFG_NVRAM_SIZE 0x8000
/* /*
* Miscellaneous configurable options * Miscellaneous configurable options
*/ */
#define CONFIG_VERSION_VARIABLE 1 #define CONFIG_VERSION_VARIABLE 1
#define CONFIG_TSI108_I2C #define CONFIG_TSI108_I2C
#define CFG_I2C_EEPROM_ADDR 0x50 /* I2C EEPROM page 1 */ #define CFG_I2C_EEPROM_ADDR 0x50 /* I2C EEPROM page 1 */
#define CFG_I2C_EEPROM_ADDR_LEN 1 /* Bytes of address */ #define CFG_I2C_EEPROM_ADDR_LEN 1 /* Bytes of address */
#define CFG_LONGHELP /* undef to save memory */ #define CFG_LONGHELP /* undef to save memory */
#define CFG_PROMPT "=> " /* Monitor Command Prompt */ #define CFG_PROMPT "=> " /* Monitor Command Prompt */
#if (CONFIG_COMMANDS & CFG_CMD_KGDB) #if (CONFIG_COMMANDS & CFG_CMD_KGDB)
#define CFG_CBSIZE 1024 /* Console I/O Buffer Size */ #define CFG_CBSIZE 1024 /* Console I/O Buffer Size */
#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port at */ #define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port at */
#else #else
#define CFG_CBSIZE 256 /* Console I/O Buffer Size */ #define CFG_CBSIZE 256 /* Console I/O Buffer Size */
#endif #endif
#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ #define CFG_PBSIZE (CFG_CBSIZE + sizeof(CFG_PROMPT) + 16)/* Print Buffer Size */
#define CFG_MAXARGS 16 /* max number of command args */ #define CFG_MAXARGS 16 /* max number of command args */
#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */ #define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
/* /*
#define CFG_DRAM_TEST #define CFG_DRAM_TEST
* DRAM tests * DRAM tests
* CFG_DRAM_TEST - enables the following tests. * CFG_DRAM_TEST - enables the following tests.
* *
* CFG_DRAM_TEST_DATA - Enables test for shorted or open data lines * CFG_DRAM_TEST_DATA - Enables test for shorted or open data lines
* Environment variable 'test_dram_data' must be * Environment variable 'test_dram_data' must be
* set to 'y'. * set to 'y'.
* CFG_DRAM_TEST_ADDRESS - Enables test to verify that each word is uniquely * CFG_DRAM_TEST_ADDRESS - Enables test to verify that each word
* addressable. Environment variable * is uniquely addressable. Environment variable
* 'test_dram_address' must be set to 'y'. * 'test_dram_address' must be set to 'y'.
* CFG_DRAM_TEST_WALK - Enables test a 64-bit walking ones pattern test. * CFG_DRAM_TEST_WALK - Enables test a 64-bit walking ones pattern test.
* This test takes about 6 minutes to test 64 MB. * This test takes about 6 minutes to test 64 MB.
* Environment variable 'test_dram_walk' must be * Environment variable 'test_dram_walk' must be
* set to 'y'. * set to 'y'.
*/ */
#undef CFG_DRAM_TEST #undef CFG_DRAM_TEST
#define CFG_MEMTEST_START 0x00400000 /* memtest works on */ #define CFG_MEMTEST_START 0x00400000 /* memtest works on */
#define CFG_MEMTEST_END 0x07c00000 /* 4 ... 124 MB in DRAM */ #define CFG_MEMTEST_END 0x07c00000 /* 4 ... 124 MB in DRAM */
#if defined(CFG_DRAM_TEST) #if defined(CFG_DRAM_TEST)
#define CFG_DRAM_TEST_DATA #define CFG_DRAM_TEST_DATA
#define CFG_DRAM_TEST_ADDRESS #define CFG_DRAM_TEST_ADDRESS
#define CFG_DRAM_TEST_WALK #define CFG_DRAM_TEST_WALK
#endif /* CFG_DRAM_TEST */ #endif /* CFG_DRAM_TEST */
#define CFG_LOAD_ADDR 0x00400000 /* default load address */ #define CFG_LOAD_ADDR 0x00400000 /* default load address */
#define CFG_HZ 1000 /* decr freq: 1ms ticks */ #define CFG_HZ 1000 /* decr freq: 1ms ticks */
/* /*
* Low Level Configuration Settings * Low Level Configuration Settings
@ -246,12 +246,12 @@
* When locking data in cache you should point the CFG_INIT_RAM_ADDRESS * When locking data in cache you should point the CFG_INIT_RAM_ADDRESS
* To an unused memory region. The stack will remain in cache until RAM * To an unused memory region. The stack will remain in cache until RAM
* is initialized * is initialized
*/ */
#undef CFG_INIT_RAM_LOCK #undef CFG_INIT_RAM_LOCK
#define CFG_INIT_RAM_ADDR 0x07d00000 /* unused memory region */ #define CFG_INIT_RAM_ADDR 0x07d00000 /* unused memory region */
#define CFG_INIT_RAM_END 0x4000 /* larger space - we have SDRAM initialized */ #define CFG_INIT_RAM_END 0x4000/* larger space - we have SDRAM initialized */
#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for init data */ #define CFG_GBL_DATA_SIZE 128/* size in bytes reserved for init data */
#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) #define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
/*----------------------------------------------------------------------- /*-----------------------------------------------------------------------
@ -260,54 +260,54 @@
* Please note that CFG_SDRAM_BASE _must_ start at 0 * Please note that CFG_SDRAM_BASE _must_ start at 0
*/ */
#define CFG_SDRAM_BASE 0x00000000 /* first 256 MB of SDRAM */ #define CFG_SDRAM_BASE 0x00000000 /* first 256 MB of SDRAM */
#define CFG_SDRAM1_BASE 0x10000000 /* next 256MB of SDRAM */ #define CFG_SDRAM1_BASE 0x10000000 /* next 256MB of SDRAM */
#define CFG_SDRAM2_BASE 0x40000000 /* beginning of non-cacheable alias for SDRAM - first 256MB */ #define CFG_SDRAM2_BASE 0x40000000 /* beginning of non-cacheable alias for SDRAM - first 256MB */
#define CFG_SDRAM3_BASE 0x50000000 /* next Non-Cacheable 256MB of SDRAM */ #define CFG_SDRAM3_BASE 0x50000000 /* next Non-Cacheable 256MB of SDRAM */
#define CFG_PCI_PFM_BASE 0x80000000 /* Prefetchable (cacheable) PCI/X PFM and SDRAM OCN (128MB+128MB) */ #define CFG_PCI_PFM_BASE 0x80000000 /* Prefetchable (cacheable) PCI/X PFM and SDRAM OCN (128MB+128MB) */
#define CFG_PCI_MEM32_BASE 0xE0000000 /* Non-Cacheable PCI/X MEM and SDRAM OCN (128MB+128MB) */ #define CFG_PCI_MEM32_BASE 0xE0000000 /* Non-Cacheable PCI/X MEM and SDRAM OCN (128MB+128MB) */
#define CFG_MISC_REGION_BASE 0xf0000000 /* Base Address for (PCI/X + Flash) region */ #define CFG_MISC_REGION_BASE 0xf0000000 /* Base Address for (PCI/X + Flash) region */
#define CFG_FLASH_BASE 0xff000000 /* Base Address of Flash device */ #define CFG_FLASH_BASE 0xff000000 /* Base Address of Flash device */
#define CFG_FLASH_BASE2 0xfe000000 /* Alternate Flash Base Address */ #define CFG_FLASH_BASE2 0xfe000000 /* Alternate Flash Base Address */
#define CONFIG_VERY_BIG_RAM /* we will use up to 256M memory for cause we are short of BATS */ #define CONFIG_VERY_BIG_RAM /* we will use up to 256M memory for cause we are short of BATS */
#define PCI0_IO_BASE_BOOTM 0xfd000000 #define PCI0_IO_BASE_BOOTM 0xfd000000
#define CFG_RESET_ADDRESS 0x3fffff00 #define CFG_RESET_ADDRESS 0x3fffff00
#define CFG_MONITOR_LEN (256 << 10) /* Reserve 256 kB for Monitor */ #define CFG_MONITOR_LEN (256 << 10) /* Reserve 256 kB for Monitor */
#define CFG_MONITOR_BASE TEXT_BASE /* u-boot code base */ #define CFG_MONITOR_BASE TEXT_BASE /* u-boot code base */
#define CFG_MALLOC_LEN (256 << 10) /* Reserve 256 kB for malloc */ #define CFG_MALLOC_LEN (256 << 10) /* Reserve 256 kB for malloc */
/* Peripheral Device section */ /* Peripheral Device section */
/******************************************************* /*
* Resources on the Tsi108 * Resources on the Tsi108
*******************************************************/ */
#define CFG_TSI108_CSR_RST_BASE 0xC0000000 /* Tsi108 CSR base after reset */ #define CFG_TSI108_CSR_RST_BASE 0xC0000000 /* Tsi108 CSR base after reset */
#define CFG_TSI108_CSR_BASE CFG_TSI108_CSR_RST_BASE /* Runtime Tsi108 CSR base */ #define CFG_TSI108_CSR_BASE CFG_TSI108_CSR_RST_BASE /* Runtime Tsi108 CSR base */
#define ENABLE_PCI_CSR_BAR /* enables access to Tsi108 CSRs from the PCI/X bus */ #define ENABLE_PCI_CSR_BAR /* enables access to Tsi108 CSRs from the PCI/X bus */
#undef DISABLE_PBM #undef DISABLE_PBM
/*----------------------------------------------------------------------- /*
* PCI stuff * PCI stuff
*----------------------------------------------------------------------- *
*/ */
#define CONFIG_PCI /* include pci support */ #define CONFIG_PCI /* include pci support */
#define CONFIG_TSI108_PCI /* include tsi108 pci support */ #define CONFIG_TSI108_PCI /* include tsi108 pci support */
#define PCI_HOST_ADAPTER 0 /* configure as pci adapter */ #define PCI_HOST_ADAPTER 0 /* configure as pci adapter */
#define PCI_HOST_FORCE 1 /* configure as pci host */ #define PCI_HOST_FORCE 1 /* configure as pci host */
#define PCI_HOST_AUTO 2 /* detected via arbiter enable */ #define PCI_HOST_AUTO 2 /* detected via arbiter enable */
#define CONFIG_PCI_HOST PCI_HOST_FORCE /* select pci host function */ #define CONFIG_PCI_HOST PCI_HOST_FORCE /* select pci host function */
#define CONFIG_PCI_PNP /* do pci plug-and-play */ #define CONFIG_PCI_PNP /* do pci plug-and-play */
@ -315,20 +315,20 @@
/* PCI MEMORY MAP section */ /* PCI MEMORY MAP section */
/* PCI view of System Memory */ /* PCI view of System Memory */
#define CFG_PCI_MEMORY_BUS 0x00000000 #define CFG_PCI_MEMORY_BUS 0x00000000
#define CFG_PCI_MEMORY_PHYS 0x00000000 #define CFG_PCI_MEMORY_PHYS 0x00000000
#define CFG_PCI_MEMORY_SIZE 0x80000000 #define CFG_PCI_MEMORY_SIZE 0x80000000
/* PCI Memory Space */ /* PCI Memory Space */
#define CFG_PCI_MEM_BUS (CFG_PCI_MEM_PHYS) #define CFG_PCI_MEM_BUS (CFG_PCI_MEM_PHYS)
#define CFG_PCI_MEM_PHYS (CFG_PCI_MEM32_BASE) //CFG_PCI_MEM32_BASE = 0xE0000000 #define CFG_PCI_MEM_PHYS (CFG_PCI_MEM32_BASE) /* 0xE0000000 */
#define CFG_PCI_MEM_SIZE 0x10000000 /* 256 MB space for PCI/X Mem + SDRAM OCN */ #define CFG_PCI_MEM_SIZE 0x10000000 /* 256 MB space for PCI/X Mem + SDRAM OCN */
/* PCI I/O Space */ /* PCI I/O Space */
#define CFG_PCI_IO_BUS 0x00000000 #define CFG_PCI_IO_BUS 0x00000000
#define CFG_PCI_IO_PHYS 0xfa000000 /* Changed from fd000000 */ #define CFG_PCI_IO_PHYS 0xfa000000 /* Changed from fd000000 */
#define CFG_PCI_IO_SIZE 0x01000000 /* 16MB */ #define CFG_PCI_IO_SIZE 0x01000000 /* 16MB */
#define _IO_BASE 0x00000000 /* points to PCI I/O space */ #define _IO_BASE 0x00000000 /* points to PCI I/O space */
@ -336,91 +336,91 @@
#define CFG_PCI_CFG_BASE 0xfb000000 /* Changed from FE000000 */ #define CFG_PCI_CFG_BASE 0xfb000000 /* Changed from FE000000 */
#define CFG_PCI_CFG_SIZE 0x01000000 /* 16MB */ #define CFG_PCI_CFG_SIZE 0x01000000 /* 16MB */
#define CFG_IBAT0U 0xFE0003FF #define CFG_IBAT0U 0xFE0003FF
#define CFG_IBAT0L 0xFE000002 #define CFG_IBAT0L 0xFE000002
#define CFG_IBAT1U 0x00007FFF #define CFG_IBAT1U 0x00007FFF
#define CFG_IBAT1L 0x00000012 #define CFG_IBAT1L 0x00000012
#define CFG_IBAT2U 0x80007FFF #define CFG_IBAT2U 0x80007FFF
#define CFG_IBAT2L 0x80000022 #define CFG_IBAT2L 0x80000022
#define CFG_IBAT3U 0x00000000 #define CFG_IBAT3U 0x00000000
#define CFG_IBAT3L 0x00000000 #define CFG_IBAT3L 0x00000000
#define CFG_IBAT4U 0x00000000 #define CFG_IBAT4U 0x00000000
#define CFG_IBAT4L 0x00000000 #define CFG_IBAT4L 0x00000000
#define CFG_IBAT5U 0x00000000 #define CFG_IBAT5U 0x00000000
#define CFG_IBAT5L 0x00000000 #define CFG_IBAT5L 0x00000000
#define CFG_IBAT6U 0x00000000 #define CFG_IBAT6U 0x00000000
#define CFG_IBAT6L 0x00000000 #define CFG_IBAT6L 0x00000000
#define CFG_IBAT7U 0x00000000 #define CFG_IBAT7U 0x00000000
#define CFG_IBAT7L 0x00000000 #define CFG_IBAT7L 0x00000000
#define CFG_DBAT0U 0xE0003FFF #define CFG_DBAT0U 0xE0003FFF
#define CFG_DBAT0L 0xE000002A #define CFG_DBAT0L 0xE000002A
#define CFG_DBAT1U 0x00007FFF #define CFG_DBAT1U 0x00007FFF
#define CFG_DBAT1L 0x00000012 #define CFG_DBAT1L 0x00000012
#define CFG_DBAT2U 0x00000000 #define CFG_DBAT2U 0x00000000
#define CFG_DBAT2L 0x00000000 #define CFG_DBAT2L 0x00000000
#define CFG_DBAT3U 0xC0000003 #define CFG_DBAT3U 0xC0000003
#define CFG_DBAT3L 0xC000002A #define CFG_DBAT3L 0xC000002A
#define CFG_DBAT4U 0x00000000 #define CFG_DBAT4U 0x00000000
#define CFG_DBAT4L 0x00000000 #define CFG_DBAT4L 0x00000000
#define CFG_DBAT5U 0x00000000 #define CFG_DBAT5U 0x00000000
#define CFG_DBAT5L 0x00000000 #define CFG_DBAT5L 0x00000000
#define CFG_DBAT6U 0x00000000 #define CFG_DBAT6U 0x00000000
#define CFG_DBAT6L 0x00000000 #define CFG_DBAT6L 0x00000000
#define CFG_DBAT7U 0x00000000 #define CFG_DBAT7U 0x00000000
#define CFG_DBAT7L 0x00000000 #define CFG_DBAT7L 0x00000000
/* I2C addresses for the two DIMM SPD chips */ /* I2C addresses for the two DIMM SPD chips */
#define DIMM0_I2C_ADDR 0x51 #define DIMM0_I2C_ADDR 0x51
#define DIMM1_I2C_ADDR 0x52 #define DIMM1_I2C_ADDR 0x52
/* /*
* For booting Linux, the board info and command line data * For booting Linux, the board info and command line data
* have to be in the first 8 MB of memory, since this is * have to be in the first 8 MB of memory, since this is
* the maximum mapped by the Linux kernel during initialization. * the maximum mapped by the Linux kernel during initialization.
*/ */
#define CFG_BOOTMAPSZ (8<<20) /* Initial Memory map for Linux */ #define CFG_BOOTMAPSZ (8<<20) /* Initial Memory map for Linux */
/*----------------------------------------------------------------------- /*-----------------------------------------------------------------------
* FLASH organization * FLASH organization
*/ */
#define CFG_MAX_FLASH_BANKS 1 /* Flash can be at one of two addresses */ #define CFG_MAX_FLASH_BANKS 1/* Flash can be at one of two addresses */
#define FLASH_BANK_SIZE 0x01000000 /* 16 MB Total */ #define FLASH_BANK_SIZE 0x01000000 /* 16 MB Total */
#define CFG_FLASH_BANKS_LIST {CFG_FLASH_BASE, CFG_FLASH_BASE2} #define CFG_FLASH_BANKS_LIST {CFG_FLASH_BASE, CFG_FLASH_BASE2}
#define CFG_FLASH_CFI_DRIVER #define CFG_FLASH_CFI_DRIVER
#define CFG_FLASH_CFI #define CFG_FLASH_CFI
#define CFG_FLASH_CFI_SWAP #define CFG_FLASH_CFI_SWAP
#define PHYS_FLASH_SIZE 0x01000000 #define PHYS_FLASH_SIZE 0x01000000
#define CFG_MAX_FLASH_SECT (128) #define CFG_MAX_FLASH_SECT (128)
#define CFG_ENV_IS_IN_NVRAM #define CFG_ENV_IS_IN_NVRAM
#define CFG_ENV_ADDR 0xFC000000 #define CFG_ENV_ADDR 0xFC000000
#define CFG_ENV_OFFSET 0x00000000 /* Offset of Environment Sector */ #define CFG_ENV_OFFSET 0x00000000 /* Offset of Environment Sector */
#define CFG_ENV_SIZE 0x00000400 /* Total Size of Environment Space */ #define CFG_ENV_SIZE 0x00000400 /* Total Size of Environment Space */
/*----------------------------------------------------------------------- /*-----------------------------------------------------------------------
* Cache Configuration * Cache Configuration
*/ */
#define CFG_CACHELINE_SIZE 32 /* For all MPC74xx CPUs */ #define CFG_CACHELINE_SIZE 32 /* For all MPC74xx CPUs */
#if (CONFIG_COMMANDS & CFG_CMD_KGDB) #if (CONFIG_COMMANDS & CFG_CMD_KGDB)
#define CFG_CACHELINE_SHIFT 5 /* log base 2 of the above value */ #define CFG_CACHELINE_SHIFT 5 /* log base 2 of the above value */
#endif #endif
/*----------------------------------------------------------------------- /*-----------------------------------------------------------------------
@ -429,16 +429,16 @@
*/ */
#undef CFG_L2 #undef CFG_L2
#define L2_INIT 0 #define L2_INIT 0
#define L2_ENABLE (L2_INIT | L2CR_L2E) #define L2_ENABLE (L2_INIT | L2CR_L2E)
/* /*
* Internal Definitions * Internal Definitions
* *
* Boot Flags * Boot Flags
*/ */
#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */ #define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */
#define BOOTFLAG_WARM 0x02 /* Software reboot */ #define BOOTFLAG_WARM 0x02 /* Software reboot */
#define CFG_EXCEPTION_AFTER_RELOCATE #define CFG_EXCEPTION_AFTER_RELOCATE
#define CFG_SERIAL_HANG_IN_EXCEPTION #define CFG_SERIAL_HANG_IN_EXCEPTION
#endif /* __CONFIG_H */ #endif /* __CONFIG_H */

View File

@ -31,191 +31,191 @@
#ifndef _TSI108_H_ #ifndef _TSI108_H_
#define _TSI108_H_ #define _TSI108_H_
#define TSI108_HLP_REG_OFFSET (0x0000) #define TSI108_HLP_REG_OFFSET (0x0000)
#define TSI108_PCI_REG_OFFSET (0x1000) #define TSI108_PCI_REG_OFFSET (0x1000)
#define TSI108_CLK_REG_OFFSET (0x2000) #define TSI108_CLK_REG_OFFSET (0x2000)
#define TSI108_PB_REG_OFFSET (0x3000) #define TSI108_PB_REG_OFFSET (0x3000)
#define TSI108_SD_REG_OFFSET (0x4000) #define TSI108_SD_REG_OFFSET (0x4000)
#define TSI108_MPIC_REG_OFFSET (0x7400) #define TSI108_MPIC_REG_OFFSET (0x7400)
#define PB_ID (0x000) #define PB_ID (0x000)
#define PB_RSR (0x004) #define PB_RSR (0x004)
#define PB_BUS_MS_SELECT (0x008) #define PB_BUS_MS_SELECT (0x008)
#define PB_ISR (0x00C) #define PB_ISR (0x00C)
#define PB_ARB_CTRL (0x018) #define PB_ARB_CTRL (0x018)
#define PB_PVT_CTRL2 (0x034) #define PB_PVT_CTRL2 (0x034)
#define PB_SCR (0x400) #define PB_SCR (0x400)
#define PB_ERRCS (0x404) #define PB_ERRCS (0x404)
#define PB_AERR (0x408) #define PB_AERR (0x408)
#define PB_REG_BAR (0x410) #define PB_REG_BAR (0x410)
#define PB_OCN_BAR1 (0x414) #define PB_OCN_BAR1 (0x414)
#define PB_OCN_BAR2 (0x418) #define PB_OCN_BAR2 (0x418)
#define PB_SDRAM_BAR1 (0x41C) #define PB_SDRAM_BAR1 (0x41C)
#define PB_SDRAM_BAR2 (0x420) #define PB_SDRAM_BAR2 (0x420)
#define PB_MCR (0xC00) #define PB_MCR (0xC00)
#define PB_MCMD (0xC04) #define PB_MCMD (0xC04)
#define HLP_B0_ADDR (0x000) #define HLP_B0_ADDR (0x000)
#define HLP_B1_ADDR (0x010) #define HLP_B1_ADDR (0x010)
#define HLP_B2_ADDR (0x020) #define HLP_B2_ADDR (0x020)
#define HLP_B3_ADDR (0x030) #define HLP_B3_ADDR (0x030)
#define HLP_B0_MASK (0x004) #define HLP_B0_MASK (0x004)
#define HLP_B1_MASK (0x014) #define HLP_B1_MASK (0x014)
#define HLP_B2_MASK (0x024) #define HLP_B2_MASK (0x024)
#define HLP_B3_MASK (0x034) #define HLP_B3_MASK (0x034)
#define HLP_B0_CTRL0 (0x008) #define HLP_B0_CTRL0 (0x008)
#define HLP_B1_CTRL0 (0x018) #define HLP_B1_CTRL0 (0x018)
#define HLP_B2_CTRL0 (0x028) #define HLP_B2_CTRL0 (0x028)
#define HLP_B3_CTRL0 (0x038) #define HLP_B3_CTRL0 (0x038)
#define HLP_B0_CTRL1 (0x00C) #define HLP_B0_CTRL1 (0x00C)
#define HLP_B1_CTRL1 (0x01C) #define HLP_B1_CTRL1 (0x01C)
#define HLP_B2_CTRL1 (0x02C) #define HLP_B2_CTRL1 (0x02C)
#define HLP_B3_CTRL1 (0x03C) #define HLP_B3_CTRL1 (0x03C)
#define PCI_CSR (0x004) #define PCI_CSR (0x004)
#define PCI_P2O_BAR0 (0x010) #define PCI_P2O_BAR0 (0x010)
#define PCI_P2O_BAR0_UPPER (0x014) #define PCI_P2O_BAR0_UPPER (0x014)
#define PCI_P2O_BAR2 (0x018) #define PCI_P2O_BAR2 (0x018)
#define PCI_P2O_BAR2_UPPER (0x01C) #define PCI_P2O_BAR2_UPPER (0x01C)
#define PCI_P2O_BAR3 (0x020) #define PCI_P2O_BAR3 (0x020)
#define PCI_P2O_BAR3_UPPER (0x024) #define PCI_P2O_BAR3_UPPER (0x024)
#define PCI_MISC_CSR (0x040) #define PCI_MISC_CSR (0x040)
#define PCI_P2O_PAGE_SIZES (0x04C) #define PCI_P2O_PAGE_SIZES (0x04C)
#define PCI_PCIX_STAT (0x0F4) #define PCI_PCIX_STAT (0x0F4)
#define PCI_IRP_STAT (0x184) #define PCI_IRP_STAT (0x184)
#define PCI_PFAB_BAR0 (0x204) #define PCI_PFAB_BAR0 (0x204)
#define PCI_PFAB_BAR0_UPPER (0x208) #define PCI_PFAB_BAR0_UPPER (0x208)
#define PCI_PFAB_IO (0x20C) #define PCI_PFAB_IO (0x20C)
#define PCI_PFAB_IO_UPPER (0x210) #define PCI_PFAB_IO_UPPER (0x210)
#define PCI_PFAB_MEM32 (0x214) #define PCI_PFAB_MEM32 (0x214)
#define PCI_PFAB_MEM32_REMAP (0x218) #define PCI_PFAB_MEM32_REMAP (0x218)
#define PCI_PFAB_MEM32_MASK (0x21C) #define PCI_PFAB_MEM32_MASK (0x21C)
#define CG_PLL0_CTRL0 (0x210) #define CG_PLL0_CTRL0 (0x210)
#define CG_PLL0_CTRL1 (0x214) #define CG_PLL0_CTRL1 (0x214)
#define CG_PLL1_CTRL0 (0x220) #define CG_PLL1_CTRL0 (0x220)
#define CG_PLL1_CTRL1 (0x224) #define CG_PLL1_CTRL1 (0x224)
#define CG_PWRUP_STATUS (0x234) #define CG_PWRUP_STATUS (0x234)
#define MPIC_CSR(n) (0x30C + (n * 0x40)) #define MPIC_CSR(n) (0x30C + (n * 0x40))
#define SD_CTRL (0x000) #define SD_CTRL (0x000)
#define SD_STATUS (0x004) #define SD_STATUS (0x004)
#define SD_TIMING (0x008) #define SD_TIMING (0x008)
#define SD_REFRESH (0x00C) #define SD_REFRESH (0x00C)
#define SD_INT_STATUS (0x010) #define SD_INT_STATUS (0x010)
#define SD_INT_ENABLE (0x014) #define SD_INT_ENABLE (0x014)
#define SD_INT_SET (0x018) #define SD_INT_SET (0x018)
#define SD_D0_CTRL (0x020) #define SD_D0_CTRL (0x020)
#define SD_D1_CTRL (0x024) #define SD_D1_CTRL (0x024)
#define SD_D0_BAR (0x028) #define SD_D0_BAR (0x028)
#define SD_D1_BAR (0x02C) #define SD_D1_BAR (0x02C)
#define SD_ECC_CTRL (0x040) #define SD_ECC_CTRL (0x040)
#define SD_DLL_STATUS (0x250) #define SD_DLL_STATUS (0x250)
#define TS_SD_CTRL_ENABLE (1 << 31) #define TS_SD_CTRL_ENABLE (1 << 31)
#define PB_ERRCS_ES (1 << 1) #define PB_ERRCS_ES (1 << 1)
#define PB_ISR_PBS_RD_ERR (1 << 8) #define PB_ISR_PBS_RD_ERR (1 << 8)
#define PCI_IRP_STAT_P_CSR (1 << 23) #define PCI_IRP_STAT_P_CSR (1 << 23)
/* /*
* I2C : Register address offset definitions * I2C : Register address offset definitions
*/ */
#define I2C_CNTRL1 (0x00000000) #define I2C_CNTRL1 (0x00000000)
#define I2C_CNTRL2 (0x00000004) #define I2C_CNTRL2 (0x00000004)
#define I2C_RD_DATA (0x00000008) #define I2C_RD_DATA (0x00000008)
#define I2C_TX_DATA (0x0000000c) #define I2C_TX_DATA (0x0000000c)
/* /*
* I2C : Register Bit Masks and Reset Values * I2C : Register Bit Masks and Reset Values
* definitions for every register * definitions for every register
*/ */
/* I2C_CNTRL1 : Reset Value */ /* I2C_CNTRL1 : Reset Value */
#define I2C_CNTRL1_RESET_VALUE (0x0000000a) #define I2C_CNTRL1_RESET_VALUE (0x0000000a)
/* I2C_CNTRL1 : Register Bits Masks Definitions */ /* I2C_CNTRL1 : Register Bits Masks Definitions */
#define I2C_CNTRL1_DEVCODE (0x0000000f) #define I2C_CNTRL1_DEVCODE (0x0000000f)
#define I2C_CNTRL1_PAGE (0x00000700) #define I2C_CNTRL1_PAGE (0x00000700)
#define I2C_CNTRL1_BYTADDR (0x00ff0000) #define I2C_CNTRL1_BYTADDR (0x00ff0000)
#define I2C_CNTRL1_I2CWRITE (0x01000000) #define I2C_CNTRL1_I2CWRITE (0x01000000)
/* I2C_CNTRL1 : Read/Write Bit Mask Definition */ /* I2C_CNTRL1 : Read/Write Bit Mask Definition */
#define I2C_CNTRL1_RWMASK (0x01ff070f) #define I2C_CNTRL1_RWMASK (0x01ff070f)
/* I2C_CNTRL1 : Unused/Reserved bits Definition */ /* I2C_CNTRL1 : Unused/Reserved bits Definition */
#define I2C_CNTRL1_RESERVED (0xfe00f8f0) #define I2C_CNTRL1_RESERVED (0xfe00f8f0)
/* I2C_CNTRL2 : Reset Value */ /* I2C_CNTRL2 : Reset Value */
#define I2C_CNTRL2_RESET_VALUE (0x00000000) #define I2C_CNTRL2_RESET_VALUE (0x00000000)
/* I2C_CNTRL2 : Register Bits Masks Definitions */ /* I2C_CNTRL2 : Register Bits Masks Definitions */
#define I2C_CNTRL2_SIZE (0x00000003) #define I2C_CNTRL2_SIZE (0x00000003)
#define I2C_CNTRL2_LANE (0x0000000c) #define I2C_CNTRL2_LANE (0x0000000c)
#define I2C_CNTRL2_MULTIBYTE (0x00000010) #define I2C_CNTRL2_MULTIBYTE (0x00000010)
#define I2C_CNTRL2_START (0x00000100) #define I2C_CNTRL2_START (0x00000100)
#define I2C_CNTRL2_WR_STATUS (0x00010000) #define I2C_CNTRL2_WR_STATUS (0x00010000)
#define I2C_CNTRL2_RD_STATUS (0x00020000) #define I2C_CNTRL2_RD_STATUS (0x00020000)
#define I2C_CNTRL2_I2C_TO_ERR (0x04000000) #define I2C_CNTRL2_I2C_TO_ERR (0x04000000)
#define I2C_CNTRL2_I2C_CFGERR (0x08000000) #define I2C_CNTRL2_I2C_CFGERR (0x08000000)
#define I2C_CNTRL2_I2C_CMPLT (0x10000000) #define I2C_CNTRL2_I2C_CMPLT (0x10000000)
/* I2C_CNTRL2 : Read/Write Bit Mask Definition */ /* I2C_CNTRL2 : Read/Write Bit Mask Definition */
#define I2C_CNTRL2_RWMASK (0x0000011f) #define I2C_CNTRL2_RWMASK (0x0000011f)
/* I2C_CNTRL2 : Unused/Reserved bits Definition */ /* I2C_CNTRL2 : Unused/Reserved bits Definition */
#define I2C_CNTRL2_RESERVED (0xe3fcfee0) #define I2C_CNTRL2_RESERVED (0xe3fcfee0)
/* I2C_RD_DATA : Reset Value */ /* I2C_RD_DATA : Reset Value */
#define I2C_RD_DATA_RESET_VALUE (0x00000000) #define I2C_RD_DATA_RESET_VALUE (0x00000000)
/* I2C_RD_DATA : Register Bits Masks Definitions */ /* I2C_RD_DATA : Register Bits Masks Definitions */
#define I2C_RD_DATA_RBYTE0 (0x000000ff) #define I2C_RD_DATA_RBYTE0 (0x000000ff)
#define I2C_RD_DATA_RBYTE1 (0x0000ff00) #define I2C_RD_DATA_RBYTE1 (0x0000ff00)
#define I2C_RD_DATA_RBYTE2 (0x00ff0000) #define I2C_RD_DATA_RBYTE2 (0x00ff0000)
#define I2C_RD_DATA_RBYTE3 (0xff000000) #define I2C_RD_DATA_RBYTE3 (0xff000000)
/* I2C_RD_DATA : Read/Write Bit Mask Definition */ /* I2C_RD_DATA : Read/Write Bit Mask Definition */
#define I2C_RD_DATA_RWMASK (0x00000000) #define I2C_RD_DATA_RWMASK (0x00000000)
/* I2C_RD_DATA : Unused/Reserved bits Definition */ /* I2C_RD_DATA : Unused/Reserved bits Definition */
#define I2C_RD_DATA_RESERVED (0x00000000) #define I2C_RD_DATA_RESERVED (0x00000000)
/* I2C_TX_DATA : Reset Value */ /* I2C_TX_DATA : Reset Value */
#define I2C_TX_DATA_RESET_VALUE (0x00000000) #define I2C_TX_DATA_RESET_VALUE (0x00000000)
/* I2C_TX_DATA : Register Bits Masks Definitions */ /* I2C_TX_DATA : Register Bits Masks Definitions */
#define I2C_TX_DATA_TBYTE0 (0x000000ff) #define I2C_TX_DATA_TBYTE0 (0x000000ff)
#define I2C_TX_DATA_TBYTE1 (0x0000ff00) #define I2C_TX_DATA_TBYTE1 (0x0000ff00)
#define I2C_TX_DATA_TBYTE2 (0x00ff0000) #define I2C_TX_DATA_TBYTE2 (0x00ff0000)
#define I2C_TX_DATA_TBYTE3 (0xff000000) #define I2C_TX_DATA_TBYTE3 (0xff000000)
/* I2C_TX_DATA : Read/Write Bit Mask Definition */ /* I2C_TX_DATA : Read/Write Bit Mask Definition */
#define I2C_TX_DATA_RWMASK (0xffffffff) #define I2C_TX_DATA_RWMASK (0xffffffff)
/* I2C_TX_DATA : Unused/Reserved bits Definition */ /* I2C_TX_DATA : Unused/Reserved bits Definition */
#define I2C_TX_DATA_RESERVED (0x00000000) #define I2C_TX_DATA_RESERVED (0x00000000)
#define TSI108_I2C_OFFSET 0x7000 /* register block offset for general use I2C channel */ #define TSI108_I2C_OFFSET 0x7000 /* offset for general use I2C channel */
#define TSI108_I2C_SDRAM_OFFSET 0x4400 /* register block offset for SPD I2C channel */ #define TSI108_I2C_SDRAM_OFFSET 0x4400 /* offset for SPD I2C channel */
#define I2C_EEPROM_DEVCODE 0xA /* standard I2C EEPROM device code */ #define I2C_EEPROM_DEVCODE 0xA /* standard I2C EEPROM device code */
/* I2C status codes */ /* I2C status codes */
#define TSI108_I2C_SUCCESS 0 #define TSI108_I2C_SUCCESS 0
#define TSI108_I2C_PARAM_ERR 1 #define TSI108_I2C_PARAM_ERR 1
#define TSI108_I2C_TIMEOUT_ERR 2 #define TSI108_I2C_TIMEOUT_ERR 2
#define TSI108_I2C_IF_BUSY 3 #define TSI108_I2C_IF_BUSY 3
#define TSI108_I2C_IF_ERROR 4 #define TSI108_I2C_IF_ERROR 4
#endif /* _TSI108_H_ */ #endif /* _TSI108_H_ */