2006-04-26 22:58:56 +00:00
|
|
|
/*
|
2006-04-27 15:15:16 +00:00
|
|
|
* Copyright 2006 Freescale Semiconductor.
|
2006-08-22 23:26:08 +00:00
|
|
|
* Jeffrey Brown
|
2006-04-26 22:58:56 +00:00
|
|
|
* Srikanth Srinivasan (srikanth.srinivasan@freescale.com)
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __MPC86xx_H__
|
|
|
|
#define __MPC86xx_H__
|
|
|
|
|
2008-05-28 14:20:15 +00:00
|
|
|
#include <asm/fsl_lbc.h>
|
|
|
|
|
2006-04-26 22:58:56 +00:00
|
|
|
#define EXC_OFF_SYS_RESET 0x0100 /* System reset offset */
|
2007-06-22 12:58:04 +00:00
|
|
|
#define _START_OFFSET EXC_OFF_SYS_RESET
|
2007-02-07 21:28:04 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* platform register addresses
|
|
|
|
*/
|
|
|
|
|
2008-10-16 13:01:15 +00:00
|
|
|
#define GUTS_SVR (CONFIG_SYS_CCSRBAR + 0xE00A4)
|
|
|
|
#define MCM_ABCR (CONFIG_SYS_CCSRBAR + 0x01000)
|
|
|
|
#define MCM_DBCR (CONFIG_SYS_CCSRBAR + 0x01008)
|
2007-02-07 21:28:04 +00:00
|
|
|
|
2006-04-27 15:15:16 +00:00
|
|
|
/*
|
2006-04-26 22:58:56 +00:00
|
|
|
* l2cr values. Look in config_<BOARD>.h for the actual setup
|
|
|
|
*/
|
|
|
|
#define l2cr 1017
|
|
|
|
|
|
|
|
#define L2CR_L2E 0x80000000 /* bit 0 - enable */
|
|
|
|
#define L2CR_L2PE 0x40000000 /* bit 1 - data parity */
|
|
|
|
#define L2CR_L2I 0x00200000 /* bit 10 - global invalidate bit */
|
|
|
|
#define L2CR_L2CTL 0x00100000 /* bit 11 - l2 ram control */
|
|
|
|
#define L2CR_L2DO 0x00010000 /* bit 15 - data-only mode */
|
|
|
|
#define L2CR_REP 0x00001000 /* bit 19 - l2 replacement alg */
|
|
|
|
#define L2CR_HWF 0x00000800 /* bit 20 - hardware flush */
|
|
|
|
#define L2CR_L2IP 0x00000001 /* global invalidate in progress */
|
|
|
|
|
|
|
|
#define HID0_XBSEN 0x00000100
|
|
|
|
#define HID0_HIGH_BAT_EN 0x00800000
|
|
|
|
#define HID0_XAEN 0x00020000
|
|
|
|
|
|
|
|
#ifndef __ASSEMBLY__
|
|
|
|
|
2006-08-22 23:26:08 +00:00
|
|
|
typedef struct {
|
|
|
|
unsigned long freqProcessor;
|
|
|
|
unsigned long freqSystemBus;
|
mpc8[56]xx: Put localbus clock in sysinfo and gd
Currently MPC85xx and MPC86xx boards just calculate the localbus frequency
and print it out, but don't save it.
This changes where its calculated and stored to be more consistent with the
CPU, CCB, TB, and DDR frequencies and the MPC83xx localbus clock.
The localbus frequency is added to sysinfo and calculated when sysinfo is
set up, in cpu/mpc8[56]xx/speed.c, the same as the other frequencies are.
get_clocks() copies the frequency into the global data, as the other
frequencies are, into a new field that is only enabled for MPC85xx and
MPC86xx.
checkcpu() in cpu/mpc8[56]xx/cpu.c will print out the local bus frequency
from sysinfo, like the other frequencies, instead of calculating it on the
spot.
Signed-off-by: Trent Piepho <tpiepho@freescale.com>
Acked-by: Kumar Gala <galak@kernel.crashing.org>
Acked-by: Jon Loeliger <jdl@freescale.com>
2008-12-03 23:16:37 +00:00
|
|
|
unsigned long freqLocalBus;
|
2006-04-26 22:58:56 +00:00
|
|
|
} MPC86xx_SYS_INFO;
|
|
|
|
|
|
|
|
#define l1icache_enable icache_enable
|
|
|
|
|
|
|
|
void l2cache_enable(void);
|
|
|
|
void l1dcache_enable(void);
|
|
|
|
|
|
|
|
static __inline__ unsigned long get_hid0 (void)
|
|
|
|
{
|
|
|
|
unsigned long hid0;
|
|
|
|
asm volatile("mfspr %0, 1008" : "=r" (hid0) :);
|
|
|
|
return hid0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static __inline__ unsigned long get_hid1 (void)
|
|
|
|
{
|
|
|
|
unsigned long hid1;
|
|
|
|
asm volatile("mfspr %0, 1009" : "=r" (hid1) :);
|
|
|
|
return hid1;
|
|
|
|
}
|
|
|
|
|
|
|
|
static __inline__ void set_hid0 (unsigned long hid0)
|
|
|
|
{
|
|
|
|
asm volatile("mtspr 1008, %0" : : "r" (hid0));
|
|
|
|
}
|
|
|
|
|
|
|
|
static __inline__ void set_hid1 (unsigned long hid1)
|
|
|
|
{
|
|
|
|
asm volatile("mtspr 1009, %0" : : "r" (hid1));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static __inline__ unsigned long get_l2cr (void)
|
|
|
|
{
|
|
|
|
unsigned long l2cr_val;
|
|
|
|
asm volatile("mfspr %0, 1017" : "=r" (l2cr_val) :);
|
|
|
|
return l2cr_val;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif /* _ASMLANGUAGE */
|
|
|
|
#endif /* __MPC86xx_H__ */
|