r1108 - in trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian: . patches

Christoph Hellwig hch-guest@haydn.debian.org
Sat, 14 Aug 2004 14:59:06 -0600


Author: hch-guest
Date: 2004-08-14 14:59:03 -0600 (Sat, 14 Aug 2004)
New Revision: 1108

Added:
   trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/powerpc-ibm-240-e30.dpatch
Modified:
   trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/changelog
   trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/00list-1
Log:

 * Add patch from Gustavo Barbier to support IBM RS/6000 7043-240 and -E30



Modified: trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/changelog
===================================================================
--- trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/changelog	2004-08-14 20:45:31 UTC (rev 1107)
+++ trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/changelog	2004-08-14 20:59:03 UTC (rev 1108)
@@ -59,6 +59,9 @@
 
   * Add pty leak fix from Al Viro (Christoph Hellwig).
 
+  * Add patch from Gustavo Barbier to support IBM RS/6000 7043-240 and -E30
+    (Christoph Hellwig).
+
  -- Andres Salomon <dilinger@voxel.net>  Sat, 14 Aug 2004 02:40:50 -0400
 
 kernel-source-2.6.7 (2.6.7-4) unstable; urgency=high

Modified: trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/00list-1
===================================================================
--- trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/00list-1	2004-08-14 20:45:31 UTC (rev 1107)
+++ trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/00list-1	2004-08-14 20:59:03 UTC (rev 1108)
@@ -25,3 +25,4 @@
 SG_IO-cap
 ia64-generic-no-smp
 ptmx-fix
+powerpc-ibm-240-e30

Added: trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/powerpc-ibm-240-e30.dpatch
===================================================================
--- trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/powerpc-ibm-240-e30.dpatch	2004-08-14 20:45:31 UTC (rev 1107)
+++ trunk/kernel/source/kernel-source-2.6.8-2.6.8/debian/patches/powerpc-ibm-240-e30.dpatch	2004-08-14 20:59:03 UTC (rev 1108)
@@ -0,0 +1,251 @@
+#! /bin/sh -e 
+## <PATCHNAME>.dpatch by <PATCH_AUTHOR@EMAI>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Description: Add support for IBM 7043-240/E30
+## DP: Patch author: Gustavo Barbieri <barbieri@gmail.com>
+## DP: Upstream status: minimum impact hack, better patch pending inclusion
+
+. $(dirname $0)/DPATCH
+
+@DPATCH@
+diff -Naur linux-2.6.6-orig/arch/ppc/platforms/prep_pci.c linux-2.6.6/arch/ppc/platforms/prep_pci.c
+--- linux-2.6.6-orig/arch/ppc/platforms/prep_pci.c	2004-05-09 23:33:20.000000000 -0300
++++ linux-2.6.6/arch/ppc/platforms/prep_pci.c	2004-06-01 19:06:41.000000000 -0300
+@@ -42,6 +42,75 @@
+
+ /* Tables for known hardware */
+
++/*
++ * IBM RS/6000 7043-240  -- Leigh Brown
++ * XXX we should get all this from the residual data
++ */
++static char ibm_doral_pci_IRQ_map[23] __prepdata = {
++        0, /* Slot 0  - unused */
++        3, /* Slot 1  - PCI Slot 1 device 0x08 */
++        5, /* Slot 2  - PCI Slot 3 device 0x10 */
++       11, /* Slot 3  - PCI Slot 5 device 0x18 */
++        2, /* Slot 4  - Integrated PCI device 0x20 */
++        1, /* Slot 5  - Integrated PCI device 0x28 */
++        0, /* Slot 6  - Integrated PCI device 0x30 - no IRQ */
++        0, /* Slot 7  - Integrated PCI device 0x38 - no IRQ */
++        0, /* Slot 8  - unused */
++        0, /* Slot 9  - unused */
++        0, /* Slot 10 - unused */
++        0, /* Slot 11 - unused */
++        0, /* Slot 12 - unused */
++        0, /* Slot 13 - unused */
++        0, /* Slot 14 - unused */
++        0, /* Slot 15 - unused */
++        0, /* Slot 16 - unused */
++        0, /* Slot 17 - unused */
++        0, /* Slot 18 - unused */
++        0, /* Slot 19 - unused */
++        0, /* Slot 20 - unused */
++        0, /* Slot 21 - unused */
++        0, /* Slot 22 - unused */
++};
++
++/*
++ * IBM RS/6000 7024-E30  -- Leigh Brown
++ * XXX we should get all this from the residual data
++ */
++static char ibm_7024e30_pci_IRQ_map[23] __prepdata = {
++        0, /* Slot 0  - unused */
++        0, /* Slot 1  - unused */
++        0, /* Slot 2  - unused */
++        0, /* Slot 3  - unused */
++        0, /* Slot 4  - unused */
++        0, /* Slot 5  - unused */
++        0, /* Slot 6  - unused */
++        0, /* Slot 7  - unused */
++        0, /* Slot 8  - unused */
++        0, /* Slot 9  - unused */
++        0, /* Slot 10 - unused */
++        0, /* Slot 11 - Unknown Integrated PCI device - no IRQ */
++        0, /* Slot 12 - Unknown Integrated PCI device - no IRQ */
++        0, /* Slot 13 - Unknown Integrated PCI device - no IRQ */
++        2, /* Slot 14 - PCI Slot 1 INTA and INTC */
++        4, /* Slot 15 - PCI Slot 2 INTA and INTC */
++        0, /* Slot 16 - unused */
++        0, /* Slot 17 - unused */
++        0, /* Slot 18 - unused */
++        0, /* Slot 19 - unused */
++        0, /* Slot 20 - unused */
++        0, /* Slot 21 - unused */
++        0, /* Slot 22 - unused */
++};
++
++static char ibm_7024e30_pci_IRQ_routes[] __prepdata = {
++        0,      /* Line 0 - unused */
++        15,     /* Line 1 */
++        15,     /* Line 2 */
++        15,     /* Line 3 */
++        15,     /* Line 4 */
++};
++
++
+ /* Motorola PowerStackII - Utah */
+ static char Utah_pci_IRQ_map[23] __prepdata =
+ {
+@@ -885,6 +954,50 @@
+ }
+
+ static void __init
++ibm_7024e30_pci_map_non0(struct pci_dev *dev)
++{
++	unsigned char intpin;
++	int irq;
++	static unsigned char bridge_intrs[5][4] = {
++		{ 1, 0, 0, 0 },
++		{ 8, 9, 8, 9 },
++		{ 10, 11, 10, 11 },
++		{ 12, 13, 12, 13 }
++	};
++
++	if (dev == NULL || PCI_SLOT(dev->devfn) > 4)
++		return;
++	pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &intpin);
++	if (intpin < 1 || intpin > 4)
++		return;
++	irq = bridge_intrs[PCI_SLOT(dev->devfn)][intpin - 1];
++	dev->irq = openpic_to_irq(irq);
++	pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq);
++}
++
++void __init
++prep_doral_setup_pci(char *irq_edge_mask_lo, char *irq_edge_mask_hi)
++{
++	Motherboard_map_name = "IBM 7043-240 (Doral)";
++	Motherboard_map = ibm_doral_pci_IRQ_map;
++	Motherboard_routes = NULL;
++	Motherboard_non0 = NULL;
++	*irq_edge_mask_lo = 0x00; /* irq's 0-7 all edge-triggered */
++	*irq_edge_mask_hi = 0xA0; /* irq's 13, 15 level-triggered */
++}
++
++void __init
++prep_7024e30_setup_pci(char *irq_edge_mask_lo, char *irq_edge_mask_hi)
++{
++	Motherboard_map_name = "IBM 7024-E30";
++	Motherboard_map = ibm_7024e30_pci_IRQ_map;
++	Motherboard_routes = ibm_7024e30_pci_IRQ_routes;
++	Motherboard_non0 = ibm_7024e30_pci_map_non0;
++	*irq_edge_mask_lo = 0x00; /* irq's 0-7 all edge-triggered */
++	*irq_edge_mask_hi = 0xA0; /* irq's 13, 15 level-triggered */
++}
++
++static void __init
+ ibm43p_pci_map_non0(struct pci_dev *dev)
+ {
+ 	unsigned char intpin;
+@@ -1021,11 +1134,13 @@
+ 		return;
+ 	}
+
+-	/* Set up mapping from slots */
+-	for (i = 1;  i <= 4;  i++)
+-		ibc_pirq[i-1] = Motherboard_routes[i];
+-	/* Enable PCI interrupts */
+-	*ibc_pcicon |= 0x20;
++ 	if (Motherboard_routes) { /* Doral does not like this code */
++	        /* Set up mapping from slots */
++	        for (i = 1;  i <= 4;  i++)
++		        ibc_pirq[i-1] = Motherboard_routes[i];
++		/* Enable PCI interrupts */
++		*ibc_pcicon |= 0x20;
++	}
+ }
+
+ void __init
+@@ -1269,7 +1384,8 @@
+ 		hostbridge = residual_find_device(PROCESSORDEVICE, NULL,
+ 			BridgeController, PCIBridge, -1, 0);
+ 		if (hostbridge &&
+-			hostbridge->DeviceId.Interface == PCIBridgeIndirect) {
++			((hostbridge->DeviceId.Interface == PCIBridgeIndirect) ||
++			 (hostbridge->DeviceId.Interface == PCIBridgeRS6K))) {
+ 			PnP_TAG_PACKET * pkt;
+ 			pkt = PnP_find_large_vendor_packet(
+ 				res->DevicePnPHeap+hostbridge->AllocatedOffset,
+diff -Naur linux-2.6.6-orig/arch/ppc/platforms/prep_setup.c linux-2.6.6/arch/ppc/platforms/prep_setup.c
+--- linux-2.6.6-orig/arch/ppc/platforms/prep_setup.c	2004-05-09 23:33:13.000000000 -0300
++++ linux-2.6.6/arch/ppc/platforms/prep_setup.c	2004-06-01 19:25:58.000000000 -0300
+@@ -79,6 +79,8 @@
+
+ int _prep_type;
+
++extern void prep_doral_setup_pci(char *irq_edge_mask_lo, char *irq_edge_mask_hi);
++extern void prep_7024e30_setup_pci(char *irq_edge_mask_lo, char *irq_edge_mask_hi);
+ extern void prep_sandalfoot_setup_pci(char *irq_edge_mask_lo, char *irq_edge_mask_hi);
+ extern void prep_thinkpad_setup_pci(char *irq_edge_mask_lo, char *irq_edge_mask_hi);
+ extern void prep_carolina_setup_pci(char *irq_edge_mask_lo, char *irq_edge_mask_hi);
+@@ -127,8 +129,8 @@
+ /* planar ID values: */
+ /* Sandalfoot/Sandalbow (6015/7020) */
+ #define PREP_IBM_SANDALFOOT	0xfc
+-/* Woodfield, Thinkpad 850/860 (6042/7249) */
+-#define PREP_IBM_THINKPAD	0xff /* planar ID unimplemented */
++/* Woodfield, Thinkpad 850/860 (6042/7249), 7043-240 */
++#define PREP_IBM_NO_PLANAR_ID	0xff /* planar ID unimplemented */
+ /* PowerSeries 830/850 (6050/6070) */
+ #define PREP_IBM_CAROLINA_IDE_0	0xf0
+ #define PREP_IBM_CAROLINA_IDE_1	0xf1
+@@ -145,6 +147,12 @@
+ #define PREP_IBM_TIGER1_180		0xd3
+ #define PREP_IBM_TIGER1_xxx		0xd4 /* unknown, but probably exists */
+ #define PREP_IBM_TIGER1_333		0xd5 /* missing from Tiger Tech Spec */
++/* 7024-E30 */
++#define PREP_IBM_7024E30		0x95
++
++/* Residual data model strings */
++#define PREP_IBM_MODEL_TIGER1	"IBM Model 7042/7043 (ED)"
++#define PREP_IBM_MODEL_DORAL	"IBM PPS Model 7043 (ED)"
+
+ /* setup_ibm_pci:
+  * 	set Motherboard_map_name, Motherboard_map, Motherboard_routes.
+@@ -714,11 +722,24 @@
+ 				ppc_md.power_off = prep_sig750_poweroff;
+ 				ppc_md.show_cpuinfo = prep_sandalfoot_cpuinfo;
+ 				break;
+-			case PREP_IBM_THINKPAD:
+-				prep_gen_enable_l2();
+-				setup_ibm_pci = prep_thinkpad_setup_pci;
+-				ppc_md.power_off = prep_carrera_poweroff;
+-				ppc_md.show_cpuinfo = prep_thinkpad_cpuinfo;
++			case PREP_IBM_NO_PLANAR_ID:
++#ifdef CONFIG_PREP_RESIDUAL
++				if (res &&
++				    strcmp(res->VitalProductData.PrintableModel,
++					    PREP_IBM_MODEL_DORAL) == 0) {
++					prep_carolina_enable_l2();
++					setup_ibm_pci = prep_doral_setup_pci;
++					ppc_md.power_off = prep_sig750_poweroff;
++					ppc_md.show_cpuinfo = prep_tiger1_cpuinfo;
++				} else
++#endif /* CONFIG_PREP_RESIDUAL */
++				{
++					/* Assume it is a thinkpad */
++					prep_gen_enable_l2();
++					setup_ibm_pci = prep_thinkpad_setup_pci;
++					ppc_md.power_off = prep_carrera_poweroff;
++					ppc_md.show_cpuinfo = prep_thinkpad_cpuinfo;
++				}
+ 				break;
+ 			default:
+ 				printk(" -- unknown! Assuming Carolina");
+@@ -747,6 +770,12 @@
+ 				ppc_md.show_cpuinfo = prep_tiger1_cpuinfo;
+ 				ppc_md.progress = prep_tiger1_progress;
+ 				break;
++			case PREP_IBM_7024E30:
++				prep_carolina_enable_l2();
++				setup_ibm_pci = prep_7024e30_setup_pci;
++				ppc_md.power_off = prep_sig750_poweroff;
++				ppc_md.show_cpuinfo = prep_carolina_cpuinfo;
++				break;
+ 		}
+ 		printk("\n");
+
+
+** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/