Subject: Ooops...

From: "Bruno R. Barreyra" <[email-masked]>
Date: Mon, 12 Mar 2001 09:14:17 -0800

Ooops, I forgot to attach the patches... :)

--
[]'s Bruno Renato Barreyra
[email-masked]
[email-masked]

diff -urN linuxppc_2_4.orig/arch/ppc/8xx_io/commproc.h linuxppc_2_4/arch/ppc/8xx_io/commproc.h
--- linuxppc_2_4.orig/arch/ppc/8xx_io/commproc.h	Thu Mar  8 05:00:16 2001
+++ linuxppc_2_4/arch/ppc/8xx_io/commproc.h	Fri Mar  9 15:16:17 2001
@@ -584,6 +584,45 @@
 #define SICR_ENET_CLKRT	((uint)0x00260000)
 #endif	/* CONFIG_SM850 */

+/***  FADS  **********************************************************/
+
+#ifdef CONFIG_FADS
+
+#ifdef CONFIG_SCC1_ENET
+/* Bits in parallel I/O port registers that have to be set/cleared
+ * to configure the pins for SCC1 use.
+ * TCLK - CLK1, RCLK - CLK2.
+ */
+#define PA_ENET_RXD	((ushort)0x0001)
+#define PA_ENET_TXD	((ushort)0x0002)
+#define PA_ENET_TCLK	((ushort)0x0100)
+#define PA_ENET_RCLK	((ushort)0x0200)
+#define PB_ENET_TENA	((uint)0x00001000)
+#define PC_ENET_CLSN	((ushort)0x0010)
+#define PC_ENET_RENA	((ushort)0x0020)
+
+/* Control bits in the SICR to route TCLK (CLK1) and RCLK (CLK2) to
+ * SCC1.  Also, make sure GR1 (bit 24) and SC1 (bit 25) are zero.
+ */
+#define SICR_ENET_MASK	((uint)0x000000ff)
+#define SICR_ENET_CLKRT	((uint)0x0000002c)
+#endif /* CONFIG_SCC1_ENET */
+
+#ifdef CONFIG_SCC2_ENET
+#define PA_ENET_RXD	((ushort)0x0004)
+#define PA_ENET_TXD	((ushort)0x0008)
+#define PA_ENET_TCLK	((ushort)0x0400)
+#define PA_ENET_RCLK	((ushort)0x0200)
+#define PB_ENET_TENA	((uint)0x00002000)
+#define PC_ENET_CLSN	((ushort)0x0040)
+#define PC_ENET_RENA	((ushort)0x0080)
+
+#define SICR_ENET_MASK	((uint)0x0000ff00)
+#define SICR_ENET_CLKRT	((uint)0x00002e00)
+#endif /* CONFIG_SCC2_ENET */
+
+#endif /* CONFIG_FADS */
+
 /*********************************************************************/

 /* SCC Event register as used by Ethernet.
diff -urN linuxppc_2_4.orig/arch/ppc/config.in linuxppc_2_4/arch/ppc/config.in
--- linuxppc_2_4.orig/arch/ppc/config.in	Thu Mar  8 05:00:12 2001
+++ linuxppc_2_4/arch/ppc/config.in	Fri Mar  9 15:16:17 2001
@@ -67,7 +67,8 @@
  	 IVMS8		CONFIG_IVMS8		\
  	 SM850		CONFIG_SM850		\
 	 MBX		CONFIG_MBX		\
-	 WinCept	CONFIG_WINCEPT"		RPX-Lite
+	 WinCept	CONFIG_WINCEPT		\
+	 FADS		CONFIG_FADS"		RPX-Lite

   if [ "$CONFIG_TQM823L" = "y" -o \
        "$CONFIG_TQM850L" = "y" -o \
diff -urN linuxppc_2_4.orig/include/asm-ppc/fads.h linuxppc_2_4/include/asm-ppc/fads.h
--- linuxppc_2_4.orig/include/asm-ppc/fads.h	Thu Mar  8 05:00:15 2001
+++ linuxppc_2_4/include/asm-ppc/fads.h	Fri Mar  9 15:18:57 2001
@@ -16,6 +16,8 @@
 	unsigned int	bi_memsize;	/* Memory (end) size in bytes */
 	unsigned int	bi_intfreq;	/* Internal Freq, in Hz */
 	unsigned int	bi_busfreq;	/* Bus Freq, in Hz */
+	unsigned char	bi_enetaddr[6];
+	unsigned int	bi_baudrate;
 } bd_t;

 extern bd_t m8xx_board_info;
@@ -24,16 +26,38 @@
  * I tried to follow the FADS manual, although the startup PROM
  * dictates this.
  */
-#define BCSR_ADDR		((uint)0x02100000)
+#define BCSR_ADDR		((uint)0xff010000)
 #define BCSR_SIZE		((uint)(64 * 1024))
-#define	BCSR0			((uint)0x02100000)
-#define	BCSR1			((uint)0x02100004)
-#define	BCSR2			((uint)0x02100008)
-#define	BCSR3			((uint)0x0210000c)
-#define	BCSR4			((uint)0x02100010)
-#define IMAP_ADDR		((uint)0x02200000)
+#define	BCSR0			((uint)0xff010000)
+#define	BCSR1			((uint)0xff010004)
+#define	BCSR2			((uint)0xff010008)
+#define	BCSR3			((uint)0xff01000c)
+#define	BCSR4			((uint)0xff010010)
+#define IMAP_ADDR		((uint)0xff000000)
 #define IMAP_SIZE		((uint)(64 * 1024))
-#define PCMCIA_MEM_ADDR		((uint)0x04000000)
+#define PCMCIA_MEM_ADDR		((uint)0xe0000000)
 #define PCMCIA_MEM_SIZE		((uint)(64 * 1024))
+
+/* Bits of interest in the BCSRs.
+*/
+#define BCSR1_ETHEN		((uint)0x20000000)
+#define BCSR1_RS232EN_1		((uint)0x01000000)
+#define BCSR4_ETHLOOP		((uint)0x80000000)	/* EEST Loopback */
+#define BCSR4_EEFDX		((uint)0x40000000)	/* EEST FDX enable */
+#define BCSR4_FETH_EN		((uint)0x08000000)	/* PHY enable */
+#define BCSR4_FETHCFG0		((uint)0x04000000)	/* PHY autoneg mode */
+#define BCSR4_FETHFDE		((uint)0x02000000)	/* PHY FDX advertise */
+
+/* Interrupt level assignments.
+*/
+#define FEC_INTERRUPT	SIU_LEVEL1	/* FEC interrupt */
+
+/* We don't use the 8259.
+*/
+#define NR_8259_INTS	0
+
+/* Machine type
+*/
+#define _MACH_8xx (_MACH_fads)

 #endif
diff -urN linuxppc_2_4.orig/arch/ppc/config.in linuxppc_2_4/arch/ppc/config.in
--- linuxppc_2_4.orig/arch/ppc/config.in	Fri Mar  9 16:50:00 2001
+++ linuxppc_2_4/arch/ppc/config.in	Fri Mar  9 16:28:18 2001
@@ -86,6 +86,12 @@
 	 APUS		CONFIG_APUS"		PowerMac/PReP/MTX/CHRP
 fi

+if [ "$CONFIG_6xx" = "y" -o \
+     "$CONFIG_4xx" = "y" -o \
+     "$CONFIG_8xx" = "y" ]; then
+  bool 'PPCBoot support' CONFIG_PPCBOOT
+fi
+
 if [ "$CONFIG_PPC64BRIDGE" != "y" ]; then
   bool 'Workarounds for PPC601 bugs' CONFIG_PPC601_SYNC_FIX
 fi
Binary files linuxppc_2_4.orig/image.fads823 and linuxppc_2_4/image.fads823 differ
diff -urN linuxppc_2_4.orig/include/asm-ppc/bseip.h linuxppc_2_4/include/asm-ppc/bseip.h
--- linuxppc_2_4.orig/include/asm-ppc/bseip.h	Thu Mar  8 05:00:19 2001
+++ linuxppc_2_4/include/asm-ppc/bseip.h	Fri Mar  9 16:38:54 2001
@@ -8,6 +8,9 @@
 #ifndef __MACH_BSEIP_DEFS
 #define __MACH_BSEIP_DEFS

+#ifdef CONFIG_PPCBOOT
+#include <asm/ppcboot.h>
+#else
 /* A Board Information structure that is given to a program when
  * prom starts it up.
  */
@@ -19,6 +22,7 @@
 	unsigned char	bi_enetaddr[6];
 	unsigned int	bi_baudrate;
 } bd_t;
+#endif /* CONFIG_PPCBOOT */

 extern bd_t m8xx_board_info;

diff -urN linuxppc_2_4.orig/include/asm-ppc/est8260.h linuxppc_2_4/include/asm-ppc/est8260.h
--- linuxppc_2_4.orig/include/asm-ppc/est8260.h	Thu Mar  8 05:00:11 2001
+++ linuxppc_2_4/include/asm-ppc/est8260.h	Fri Mar  9 16:39:20 2001
@@ -7,7 +7,9 @@

 #define IMAP_ADDR	((uint)0xf0000000)

-
+#ifdef CONFIG_PPCBOOT
+#include <asm/ppcboot.h>
+#else
 /* A Board Information structure that is given to a program when
  * prom starts it up.
  */
@@ -23,6 +25,7 @@
 	unsigned int	bi_immr;	/* IMMR when called from boot rom */
 	unsigned char	bi_enetaddr[6];
 } bd_t;
+#endif /* CONFIG_PPCBOOT */

 extern bd_t m8xx_board_info;

diff -urN linuxppc_2_4.orig/include/asm-ppc/fads.h linuxppc_2_4/include/asm-ppc/fads.h
--- linuxppc_2_4.orig/include/asm-ppc/fads.h	Fri Mar  9 16:50:00 2001
+++ linuxppc_2_4/include/asm-ppc/fads.h	Fri Mar  9 16:41:53 2001
@@ -8,6 +8,9 @@
 #ifndef __MACH_FADS_DEFS
 #define __MACH_FADS_DEFS

+#ifdef CONFIG_PPCBOOT
+#include <asm/ppcboot.h>
+#else
 /* A Board Information structure that is given to a program when
  * prom starts it up.
  */
@@ -19,6 +22,7 @@
 	unsigned char	bi_enetaddr[6];
 	unsigned int	bi_baudrate;
 } bd_t;
+#endif /* CONFIG_PPCBOOT */

 extern bd_t m8xx_board_info;

diff -urN linuxppc_2_4.orig/include/asm-ppc/ivms8.h linuxppc_2_4/include/asm-ppc/ivms8.h
--- linuxppc_2_4.orig/include/asm-ppc/ivms8.h	Thu Mar  8 05:00:18 2001
+++ linuxppc_2_4/include/asm-ppc/ivms8.h	Fri Mar  9 16:42:01 2001
@@ -9,6 +9,9 @@

 #ifndef __ASSEMBLY__

+#ifdef CONFIG_PPCBOOT
+#include <asm/ppcboot.h>
+#else
 typedef	void (interrupt_handler_t)(void *);

 typedef struct serial_io {
@@ -46,6 +49,7 @@
 	 serial_io_t	bi_serial_io;	/* Addr of monitor fnc for Console I/O	*/
 	 intr_util_t	bi_interrupt;	/* Addr of monitor fnc for Interrupts	*/
 } bd_t;
+#endif /* CONFIG_PPCBOOT */

 #endif /* __ASSEMBLY__ */

diff -urN linuxppc_2_4.orig/include/asm-ppc/mbx.h linuxppc_2_4/include/asm-ppc/mbx.h
--- linuxppc_2_4.orig/include/asm-ppc/mbx.h	Thu Mar  8 05:00:12 2001
+++ linuxppc_2_4/include/asm-ppc/mbx.h	Fri Mar  9 16:42:16 2001
@@ -11,6 +11,9 @@
 #ifndef __MACH_MBX_DEFS
 #define __MACH_MBX_DEFS

+#ifdef CONFIG_PPCBOOT
+#include <asm/ppcboot.h>
+#else
 /* A Board Information structure that is given to a program when
  * EPPC-Bug starts it up.
  */
@@ -27,6 +30,7 @@
 	unsigned int	bi_dlun;	/* Boot device logical dev */
 	unsigned int	bi_baudrate;	/* ...to be like everyone else */
 } bd_t;
+#endif /* CONFIG_PPCBOOT */

 /* Memory map for the MBX as configured by EPPC-Bug.  We could reprogram
  * The SIU and PCI bridge, and try to use larger MMU pages, but the
diff -urN linuxppc_2_4.orig/include/asm-ppc/ppcboot.h linuxppc_2_4/include/asm-ppc/ppcboot.h
--- linuxppc_2_4.orig/include/asm-ppc/ppcboot.h	Wed Dec 31 16:00:00 1969
+++ linuxppc_2_4/include/asm-ppc/ppcboot.h	Fri Mar  9 15:59:58 2001
@@ -0,0 +1,82 @@
+/*
+ * (C) Copyright 2000
+ * Wolfgang Denk, DENX Software Engineering, [email-masked].
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef _PPCBOOT_H_
+#define _PPCBOOT_H_	1
+
+typedef	void (interrupt_handler_t)(void *);
+
+typedef struct monitor_functions {
+	int	(*getc)(void);
+	int	(*tstc)(void);
+	void	(*putc)(const char c);
+	void	(*puts)(const char *s);
+	void	(*printf)(const char *fmt, ...);
+	void	(*install_hdlr)(int, interrupt_handler_t *, void *);
+	void	(*free_hdlr)(int);
+	void	*(*malloc)(size_t);
+	void	(*free)(void *);
+} mon_fnc_t;
+
+/* A Board Information structure that is given to a program when
+ * ppcboot starts it up.
+ */
+typedef struct bd_info {
+	unsigned long	bi_memstart;	/* start of  DRAM memory		*/
+	unsigned long	bi_memsize;	/* size	 of  DRAM memory in bytes	*/
+	unsigned long	bi_flashstart;	/* start of FLASH memory		*/
+	unsigned long	bi_flashsize;	/* size	 of FLASH memory		*/
+	unsigned long	bi_flashoffset; /* reserved area for startup monitor	*/
+	unsigned long	bi_sramstart;	/* start of  SRAM memory		*/
+	unsigned long	bi_sramsize;	/* size	 of  SRAM memory		*/
+#if defined(CONFIG_8xx) || defined(CONFIG_8260)
+	unsigned long	bi_immr_base;	/* base of IMMR register		*/
+#endif
+	unsigned long	bi_bootflags;	/* boot / reboot flag (for LynxOS)	*/
+	unsigned long	bi_ip_addr;	/* IP Address				*/
+	unsigned char	bi_enetaddr[6]; /* Ethernet adress			*/
+	unsigned short	bi_ethspeed;	/* Ethernet speed in Mbps		*/
+	unsigned long	bi_intfreq;	/* Internal Freq, in MHz		*/
+	unsigned long	bi_busfreq;	/* Bus Freq, in MHz			*/
+#if defined(CONFIG_8260)
+	unsigned long	bi_cpmfreq;	/* CPM_CLK Freq, in MHz */
+	unsigned long	bi_brgfreq;	/* BRG_CLK Freq, in MHz */
+	unsigned long	bi_sccfreq;	/* SCC_CLK Freq, in MHz */
+	unsigned long	bi_vco;		/* VCO Out from PLL, in MHz */
+#endif
+	unsigned long	bi_baudrate;	/* Console Baudrate			*/
+#if defined(CONFIG_PPC405)
+	unsigned char	bi_s_version[4];  /* Version of this structure		*/
+	unsigned char	bi_r_version[32]; /* Version of the ROM (IBM)		*/
+	unsigned int	bi_procfreq;	/* CPU (Internal) Freq, in Hz		*/
+	unsigned int	bi_plb_busfreq;	/* PLB Bus speed, in Hz */
+	unsigned int	bi_pci_busfreq;	/* PCI Bus speed, in Hz */
+	unsigned char	bi_pci_enetaddr[6];	/* PCI Ethernet MAC address     */
+#endif
+#if defined(CONFIG_HYMOD)
+	hymod_conf_t	bi_hymod_conf;	/* hymod configuration information	*/
+#endif
+	mon_fnc_t	*bi_mon_fnc;	/* Pointer to monitor functions		*/
+} bd_t;
+
+#endif	/* _PPCBOOT_H_ */
diff -urN linuxppc_2_4.orig/include/asm-ppc/rpxclassic.h linuxppc_2_4/include/asm-ppc/rpxclassic.h
--- linuxppc_2_4.orig/include/asm-ppc/rpxclassic.h	Thu Mar  8 05:00:35 2001
+++ linuxppc_2_4/include/asm-ppc/rpxclassic.h	Fri Mar  9 16:42:30 2001
@@ -11,6 +11,9 @@

 #include <linux/config.h>

+#ifdef CONFIG_PPCBOOT
+#include <asm/ppcboot.h>
+#else
 /* A Board Information structure that is given to a program when
  * prom starts it up.
  */
@@ -22,6 +25,7 @@
 	unsigned char	bi_enetaddr[6];
 	unsigned int	bi_baudrate;
 } bd_t;
+#endif /* CONFIG_PPCBOOT */

 extern bd_t m8xx_board_info;

diff -urN linuxppc_2_4.orig/include/asm-ppc/rpxlite.h linuxppc_2_4/include/asm-ppc/rpxlite.h
--- linuxppc_2_4.orig/include/asm-ppc/rpxlite.h	Thu Mar  8 05:00:20 2001
+++ linuxppc_2_4/include/asm-ppc/rpxlite.h	Fri Mar  9 16:42:49 2001
@@ -9,6 +9,9 @@
 #ifndef __MACH_RPX_DEFS
 #define __MACH_RPX_DEFS

+#ifdef CONFIG_PPCBOOT
+#include <asm/ppcboot.h>
+#else
 /* A Board Information structure that is given to a program when
  * prom starts it up.
  */
@@ -20,6 +23,7 @@
 	unsigned char	bi_enetaddr[6];
 	unsigned int	bi_baudrate;
 } bd_t;
+#endif /* CONFIG_PPCBOOT */

 extern bd_t m8xx_board_info;

diff -urN linuxppc_2_4.orig/include/asm-ppc/spd8xx.h linuxppc_2_4/include/asm-ppc/spd8xx.h
--- linuxppc_2_4.orig/include/asm-ppc/spd8xx.h	Thu Mar  8 05:00:13 2001
+++ linuxppc_2_4/include/asm-ppc/spd8xx.h	Fri Mar  9 16:43:11 2001
@@ -9,6 +9,9 @@

 #ifndef __ASSEMBLY__

+#ifdef CONFIG_PPCBOOT
+#include <asm/ppcboot.h>
+#else
 typedef	void (interrupt_handler_t)(void *);

 typedef struct serial_io {
@@ -46,6 +49,7 @@
 	 serial_io_t	bi_serial_io;	/* Addr of monitor fnc for Console I/O	*/
 	 intr_util_t	bi_interrupt;	/* Addr of monitor fnc for Interrupts	*/
 } bd_t;
+#endif /* CONFIG_PPCBOOT */

 #endif /* __ASSEMBLY__ */

diff -urN linuxppc_2_4.orig/include/asm-ppc/tqm8xx.h linuxppc_2_4/include/asm-ppc/tqm8xx.h
--- linuxppc_2_4.orig/include/asm-ppc/tqm8xx.h	Thu Mar  8 05:00:20 2001
+++ linuxppc_2_4/include/asm-ppc/tqm8xx.h	Fri Mar  9 16:43:41 2001
@@ -14,6 +14,9 @@

 #ifndef __ASSEMBLY__

+#ifdef CONFIG_PPCBOOT
+#include <asm/ppcboot.h>
+#else
 typedef	void (interrupt_handler_t)(void *);

 typedef struct serial_io {
@@ -51,6 +54,7 @@
 	 serial_io_t	bi_serial_io;	/* Addr of monitor fnc for Console I/O	*/
 	 intr_util_t	bi_interrupt;	/* Addr of monitor fnc for Interrupts	*/
 } bd_t;
+#endif /* CONFIG_PPCBOOT */

 #endif /* __ASSEMBLY__ */