/*
 *
 *    Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>
 *
 *    Module name: ibm4xx.h
 *
 *    Description:
 *	A generic include file which pulls in appropriate include files
 *      for specific board types based on configuration settings.
 *
 */

#ifdef __KERNEL__
#ifndef __ASM_IBM4XX_H__
#define __ASM_IBM4XX_H__

#include <asm/types.h>

#ifdef CONFIG_40x

#if defined(CONFIG_BUBINGA)
#include <platforms/4xx/bubinga.h>
#endif

#if defined(CONFIG_CPCI405)
#include <platforms/4xx/cpci405.h>
#endif

#if defined(CONFIG_EP405)
#include <platforms/4xx/ep405.h>
#endif

#if defined(CONFIG_REDWOOD_5)
#include <platforms/4xx/redwood5.h>
#endif

#if defined(CONFIG_REDWOOD_6)
#include <platforms/4xx/redwood6.h>
#endif

#if defined(CONFIG_SYCAMORE)
#include <platforms/4xx/sycamore.h>
#endif

#if defined(CONFIG_WALNUT)
#include <platforms/4xx/walnut.h>
#endif

#if defined(CONFIG_XILINX_ML300)
#include <platforms/4xx/xilinx_ml300.h>
#endif

#if defined(CONFIG_XILINX_ML403)
#include <platforms/4xx/xilinx_ml403.h>
#endif

#ifndef __ASSEMBLY__

#ifdef CONFIG_40x
/*
 * The "residual" board information structure the boot loader passes
 * into the kernel.
 */
extern bd_t __res;
#endif

void ppc4xx_setup_arch(void);
void ppc4xx_map_io(void);
void ppc4xx_init_IRQ(void);
void ppc4xx_init(unsigned long r3, unsigned long r4, unsigned long r5,
		 unsigned long r6, unsigned long r7);
#endif

#ifndef PPC4xx_MACHINE_NAME
#define PPC4xx_MACHINE_NAME	"Unidentified 4xx class"
#endif


/* IO_BASE is for PCI I/O.
 * ISA not supported, just here to resolve copilation.
 */

#ifndef _IO_BASE
#define _IO_BASE	0xe8000000	/* The PCI address window */
#define _ISA_MEM_BASE	0
#define PCI_DRAM_OFFSET	0
#endif

#elif defined(CONFIG_44x)

#if defined(CONFIG_BAMBOO)
#include <platforms/4xx/bamboo.h>
#endif

#if defined(CONFIG_EBONY)
#include <platforms/4xx/ebony.h>
#endif

#if defined(CONFIG_LUAN)
#include <platforms/4xx/luan.h>
#endif

#if defined(CONFIG_YUCCA)
#include <platforms/4xx/yucca.h>
#endif

#if defined(CONFIG_OCOTEA)
#include <platforms/4xx/ocotea.h>
#endif

#ifndef __ASSEMBLY__
#ifdef CONFIG_40x
/*
 * The "residual" board information structure the boot loader passes
 * into the kernel.
 */
extern bd_t __res;
#endif
#endif
#endif /* CONFIG_40x */

#endif /* __ASM_IBM4XX_H__ */
#endif /* __KERNEL__ */
