Subject: linuxppc_2_4_devel patch for cpci690

From: "Mark A. Greer" <[email-masked]>
Date: Thu, 22 May 2003 16:30:03 -0700

Patch that:

- Updates arch/ppc/configs/cpci690_defconfig
- Does some clean up and adds kgdb support for the cpci690

Mark
===== arch/ppc/configs/cpci690_defconfig 1.1 vs edited =====
--- 1.1/arch/ppc/configs/cpci690_defconfig	Wed Apr 30 13:34:57 2003
+++ edited/arch/ppc/configs/cpci690_defconfig	Tue May 13 14:46:17 2003
@@ -1,5 +1,5 @@
 #
-# Automatically generated by make menuconfig: don't edit
+# Automatically generated make config: don't edit
 #
 # CONFIG_UID16 is not set
 # CONFIG_RWSEM_GENERIC_SPINLOCK is not set
@@ -37,6 +37,7 @@
 CONFIG_CPCI690=y
 # CONFIG_PCORE is not set
 # CONFIG_POWERPMC250 is not set
+# CONFIG_PPMC260 is not set
 # CONFIG_EV64260 is not set
 # CONFIG_SPRUCE is not set
 # CONFIG_MENF1 is not set
@@ -99,7 +100,7 @@
 # CONFIG_GEN_RTC is not set
 CONFIG_PPC_RTC=y
 CONFIG_CMDLINE_BOOL=y
-CONFIG_CMDLINE="console=ttyS0,9600 ip=on"
+CONFIG_CMDLINE="ip=on"

 #
 # Memory Technology Devices (MTD)
@@ -179,6 +180,10 @@
 # CONFIG_KHTTPD is not set
 # CONFIG_ATM is not set
 # CONFIG_VLAN_8021Q is not set
+
+#
+#
+#
 # CONFIG_IPX is not set
 # CONFIG_ATALK is not set

@@ -412,8 +417,6 @@
 CONFIG_GT64260_MPSC=y
 CONFIG_GT64260_CONSOLE=y
 CONFIG_SERIAL_CONSOLE=y
-CONFIG_GT64260_CONSOLE_0=y
-# CONFIG_GT64260_CONSOLE_1 is not set
 CONFIG_SERIAL_CONSOLE_BAUD=9600
 # CONFIG_GT64260_BCLKIN is not set
 # CONFIG_GT64260_SCLK0 is not set
@@ -453,6 +456,14 @@
 # Joysticks
 #
 # CONFIG_INPUT_GAMEPORT is not set
+
+#
+# Input core support is needed for gameports
+#
+
+#
+# Input core support is needed for joysticks
+#
 # CONFIG_QIC02_TAPE is not set
 # CONFIG_IPMI_HANDLER is not set
 # CONFIG_IPMI_PANIC_EVENT is not set
===== arch/ppc/platforms/cpci690.c 1.1 vs edited =====
--- 1.1/arch/ppc/platforms/cpci690.c	Wed Apr 30 13:34:57 2003
+++ edited/arch/ppc/platforms/cpci690.c	Thu May 22 12:03:43 2003
@@ -50,16 +50,11 @@
 {
 	bd_t	*bip = bi_rec;

-	if (ppc_md.progress)
-		ppc_md.progress("cpci690_extract_board_info: extracting bi_rec",
-				0);

 	if ((size == sizeof(bd_t)) && (bip->bi_magic == CPCI690_BI_MAGIC)) {
 		memcpy(&board_info, bip, sizeof(bd_t));
 	}
 	else {
-		if (ppc_md.progress)
-			ppc_md.progress("Invalid BOARD_INFO bi_rec\n", 0);
 		printk(KERN_NOTICE "Invalid BOARD_INFO bi_rec\n");
 	}

@@ -103,7 +98,7 @@
 			case 0x04:
 				board_size = 1*GB;
 				break;
-				case 0x05:
+			case 0x05:
 				board_size = 1*GB + 512*MB;
 				break;
 			case 0x06:
@@ -134,7 +129,6 @@
 {
 	struct pci_dev *dev;

-	/* Better way of doing this ??? */
 	pci_for_each_dev(dev) {
 		int class = dev->class >> 8;

@@ -222,9 +216,7 @@
 		info.cpu_prot_options[i] = 0;
 		info.cpu_snoop_options[i] = GT64260_CPU_SNOOP_WB;
 		info.pci_0_acc_cntl_options[i] =
-			/* Breaks PCI (especially slot 4)
-			GT64260_PCI_ACC_CNTL_PREFETCHEN |
-			*/
+			/* GT64260_PCI_ACC_CNTL_PREFETCHEN | */
 			GT64260_PCI_ACC_CNTL_DREADEN |
 			GT64260_PCI_ACC_CNTL_RDPREFETCH |
 			GT64260_PCI_ACC_CNTL_RDLINEPREFETCH |
@@ -233,9 +225,7 @@
 			GT64260_PCI_ACC_CNTL_MBURST_4_WORDS;
 		info.pci_0_snoop_options[i] = GT64260_PCI_SNOOP_WB;
 		info.pci_1_acc_cntl_options[i] =
-			/* Breaks PCI (especially slot 4)
-			GT64260_PCI_ACC_CNTL_PREFETCHEN |
-			*/
+			/* GT64260_PCI_ACC_CNTL_PREFETCHEN | */
 			GT64260_PCI_ACC_CNTL_DREADEN |
 			GT64260_PCI_ACC_CNTL_RDPREFETCH |
 			GT64260_PCI_ACC_CNTL_RDLINEPREFETCH |
@@ -380,6 +370,28 @@
 }

 static void __init
+cpci690_early_serial_map(void)
+{
+	static char	first_time = 1;
+
+#ifdef	CONFIG_KGDB
+
+#if defined(CONFIG_KGDB_TTYS0)
+#define KGDB_PORT 0
+#elif defined(CONFIG_KGDB_TTYS1)
+#define KGDB_PORT 1
+#else
+#error "Invalid kgdb_tty port"
+#endif
+
+	if (first_time) {
+		gt_early_mpsc_init(KGDB_PORT, B9600|CS8|CREAD|HUPCL|CLOCAL);
+		first_time = 0;
+	}
+#endif
+}
+
+static void __init
 cpci690_setup_arch(void)
 {
 	uint	val;
@@ -387,8 +399,6 @@
 	if ( ppc_md.progress )
 		ppc_md.progress("cpci690_setup_arch: enter", 0);

-	loops_per_jiffy = cpci690_get_cpu_speed() / HZ;
-
 #ifdef CONFIG_BLK_DEV_INITRD
 	if (initrd_start)
 		ROOT_DEV = MKDEV(RAMDISK_MAJOR, 0);
@@ -565,7 +575,7 @@
 	return;
 }

-#ifdef	CONFIG_SERIAL_TEXT_DEBUG
+#if	defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB)
 static void __init
 cpci690_map_io(void)
 {
@@ -594,7 +604,8 @@
 	ppc_md.board_info = cpci690_extract_board_info;
 	parse_bootinfo(find_bootinfo());

-	cpci690_set_bat();
+	cpci690_set_bat(); /* Need for cpci690_find_end_of_memory & progress */
+	loops_per_jiffy = cpci690_get_cpu_speed() / HZ;

 	isa_mem_base = 0;
 	isa_io_base = GT64260_PCI_0_IO_START_PROC;
@@ -627,8 +638,12 @@

 #ifdef	CONFIG_SERIAL_TEXT_DEBUG
 	ppc_md.setup_io_mappings = cpci690_map_io;
-	ppc_md.progress = gt64260_mpsc_progress; /* embedded UART */
-#endif /* CONFIG_SERIAL_TEXT_DEBUG */
+	ppc_md.progress = gt64260_mpsc_progress;
+#endif	/* CONFIG_SERIAL_TEXT_DEBUG */
+#ifdef	CONFIG_KGDB
+	ppc_md.early_serial_map = cpci690_early_serial_map;
+	ppc_md.setup_io_mappings = cpci690_map_io;
+#endif	/* CONFIG_KGDB */

 #if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
         ppc_ide_md.ide_init_hwif = cpci690_ide_pci_init_hwif_ports;