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/