|
|
|
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
|
|
/*
|
|
|
|
* Ugly header containing required header files. This could be adjusted
|
|
|
|
* so that including asm/arch/hardware includes the correct file.
|
|
|
|
*
|
|
|
|
* (C) Copyright 2000-2009
|
|
|
|
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __ASM_PPC_H
|
|
|
|
#define __ASM_PPC_H
|
|
|
|
|
|
|
|
#ifndef __ASSEMBLY__
|
|
|
|
|
|
|
|
#if defined(CONFIG_MPC8xx)
|
|
|
|
#include <asm/immap_8xx.h>
|
powerpc: Partialy restore core of mpc8xx
CS Systemes d'Information (CSSI) manufactures 8xx boards for
critical communication systems. Those boards have been
running U-Boot since 2010 and will have to be maintained
until at least 2027.
commit 5b8e76c35ec312a3f73126bd1a2d2c0965b98a9f
("powerpc, 8xx: remove support for 8xx") orphaned those boards
by removing support for the mpc8xx CPU.
This commit partially restores support for the 8xx, with the
following limitations:
- Restores support for MPC866 and MPC885 only
- Does not restore IDE, PCMCIA, I2C, USB
- Does not restore examples
- Does not restore POST
- Does not restore Ethernet on SCC
- Does not restore console on SCC
- Does not restore bedbug and kgdb support
As the 866 and 885 do not support the following features,
they are not restored either:
- VIDEO / LCD
- RTC clock
The CPM uCODE patch is not restored either, because:
- 866 and 885 already have support for I2C and SPI relocation
without a uCODE patch
- relocation of SMC, I2C or SPI is only needed for using SCCs
for Ethernet or QMC
The dynamic setup/calculation of clocks is removed, we
expect the target being use with the clock and PLPRCR register
defined in the configuration.
All the clock settings for 8xx prior to 866 is removed as
well as we now only support 866 and 885.
This code is mature and addresses mature boards. Therefore
all code enclosed in '#if 0/#endif' and '#if XX_DEBUG/#endif'
is unneeded.
The following files are not restored by this patch:
- arch/powerpc/cpu/mpc8xx/bedbug_860.c
- arch/powerpc/cpu/mpc8xx/fec.h
- arch/powerpc/cpu/mpc8xx/kgdb.S
- arch/powerpc/cpu/mpc8xx/plprcr_write.S
- arch/powerpc/cpu/mpc8xx/scc.c
- arch/powerpc/cpu/mpc8xx/upatch.c
- arch/powerpc/cpu/mpc8xx/video.c
- arch/powerpc/include/asm/status_led.h
- arch/powerpc/lib/ide.c
- arch/powerpc/lib/ide.h
- doc/README.MPC866
- drivers/pcmcia/mpc8xx_pcmcia.c
- drivers/rtc/mpc8xx.c
- drivers/usb/gadget/mpc8xx_udc.c
- drivers/video/mpc8xx_lcd.c
- examples/standalone/test_burst.c
- examples/standalone/test_burst.h
- examples/standalone/test_burst_lib.S
- examples/standalone/timer.c
- include/mpc823_lcd.h
- include/usb/mpc8xx_udc.h
- post/cpu/mpc8xx/Makefile
- post/cpu/mpc8xx/cache.c
- post/cpu/mpc8xx/cache_8xx.S
- post/cpu/mpc8xx/ether.c
- post/cpu/mpc8xx/spr.c
- post/cpu/mpc8xx/uart.c
- post/cpu/mpc8xx/usb.c
- post/cpu/mpc8xx/watchdog.c
Some of the restored files are not located in a proper location.
In order to keep traceability of the changes, they will be
moved to their correct location and moved to Kconfig in a
followup patch.
This patch also declares CSSI as point of contact for the update
of the 8xx platform, as those boards are the only ones still
being maintained on the 8xx area. A later patch will add
those boards to the tree.
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
8 years ago
|
|
|
#endif
|
|
|
|
#ifdef CONFIG_MPC86xx
|
|
|
|
#include <mpc86xx.h>
|
|
|
|
#include <asm/immap_86xx.h>
|
|
|
|
#endif
|
|
|
|
#ifdef CONFIG_MPC85xx
|
|
|
|
#include <mpc85xx.h>
|
|
|
|
#include <asm/immap_85xx.h>
|
|
|
|
#endif
|
|
|
|
#ifdef CONFIG_MPC83xx
|
|
|
|
#include <mpc83xx.h>
|
|
|
|
#include <asm/immap_83xx.h>
|
|
|
|
#endif
|
|
|
|
#ifdef CONFIG_SOC_DA8XX
|
|
|
|
#include <asm/arch/hardware.h>
|
|
|
|
#endif
|
|
|
|
#ifdef CONFIG_FSL_LSCH3
|
|
|
|
#include <asm/arch/immap_lsch3.h>
|
|
|
|
#endif
|
|
|
|
#ifdef CONFIG_FSL_LSCH2
|
|
|
|
#include <asm/arch/immap_lsch2.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <asm/processor.h>
|
|
|
|
|
|
|
|
static inline uint get_immr(void)
|
|
|
|
{
|
|
|
|
return mfspr(SPRN_IMMR);
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline uint get_pvr(void)
|
|
|
|
{
|
|
|
|
return mfspr(PVR);
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline uint get_svr(void)
|
|
|
|
{
|
|
|
|
return mfspr(SVR);
|
|
|
|
}
|
|
|
|
|
|
|
|
#if defined(CONFIG_MPC85xx) || \
|
|
|
|
defined(CONFIG_MPC86xx) || \
|
|
|
|
defined(CONFIG_MPC83xx)
|
|
|
|
unsigned char in8(unsigned int);
|
|
|
|
void out8(unsigned int, unsigned char);
|
|
|
|
unsigned short in16(unsigned int);
|
|
|
|
unsigned short in16r(unsigned int);
|
|
|
|
void out16(unsigned int, unsigned short value);
|
|
|
|
void out16r(unsigned int, unsigned short value);
|
|
|
|
unsigned long in32(unsigned int);
|
|
|
|
unsigned long in32r(unsigned int);
|
|
|
|
void out32(unsigned int, unsigned long value);
|
|
|
|
void out32r(unsigned int, unsigned long value);
|
|
|
|
void ppcDcbf(unsigned long value);
|
|
|
|
void ppcDcbi(unsigned long value);
|
|
|
|
void ppcSync(void);
|
|
|
|
void ppcDcbz(unsigned long value);
|
|
|
|
#endif
|
|
|
|
#if defined(CONFIG_MPC83xx)
|
|
|
|
void ppcDWload(unsigned int *addr, unsigned int *ret);
|
|
|
|
void ppcDWstore(unsigned int *addr, unsigned int *value);
|
|
|
|
void disable_addr_trans(void);
|
|
|
|
void enable_addr_trans(void);
|
|
|
|
#if defined(CONFIG_DDR_ECC) && !defined(CONFIG_ECC_INIT_VIA_DDRCONTROLLER)
|
|
|
|
void ddr_enable_ecc(unsigned int dram_size);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(CONFIG_MPC85xx)
|
|
|
|
typedef MPC85xx_SYS_INFO sys_info_t;
|
|
|
|
void get_sys_info(sys_info_t *);
|
|
|
|
void ft_fixup_cpu(void *, u64);
|
|
|
|
void ft_fixup_num_cores(void *);
|
|
|
|
#endif
|
|
|
|
#if defined(CONFIG_MPC86xx)
|
|
|
|
ulong get_bus_freq(ulong);
|
|
|
|
typedef MPC86xx_SYS_INFO sys_info_t;
|
|
|
|
void get_sys_info(sys_info_t *);
|
|
|
|
static inline ulong get_ddr_freq(ulong dummy)
|
|
|
|
{
|
|
|
|
return get_bus_freq(dummy);
|
|
|
|
}
|
|
|
|
#else
|
|
|
|
ulong get_ddr_freq(ulong);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
static inline unsigned long get_msr(void)
|
|
|
|
{
|
|
|
|
unsigned long msr;
|
|
|
|
|
|
|
|
asm volatile ("mfmsr %0" : "=r" (msr) : );
|
|
|
|
|
|
|
|
return msr;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline void set_msr(unsigned long msr)
|
|
|
|
{
|
|
|
|
asm volatile ("mtmsr %0" : : "r" (msr));
|
|
|
|
}
|
|
|
|
|
|
|
|
#ifdef CONFIG_CMD_REGINFO
|
|
|
|
void print_reginfo(void);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
void interrupt_init_cpu(unsigned *);
|
|
|
|
void timer_interrupt_cpu(struct pt_regs *);
|
|
|
|
unsigned long search_exception_table(unsigned long addr);
|
|
|
|
|
|
|
|
#endif /* !__ASSEMBLY__ */
|
|
|
|
|
|
|
|
#ifdef CONFIG_PPC
|
|
|
|
/*
|
|
|
|
* Has to be included outside of the #ifndef __ASSEMBLY__ section.
|
|
|
|
* Otherwise might lead to compilation errors in assembler files.
|
|
|
|
*/
|
|
|
|
#include <asm/cache.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif
|