Author: blueswirl
Date: 2009-01-07 18:54:25 +0100 (Wed, 07 Jan 2009)
New Revision: 371
Modified:
openbios-devel/drivers/cuda.c
openbios-devel/drivers/macio.c
openbios-devel/drivers/pci.c
Log:
Define oldworld property for oldworld hardware (Laurent Vivier)
Modified: openbios-devel/drivers/cuda.c
===================================================================
--- openbios-devel/drivers/cuda.c 2009-01-07 15:58:33 UTC (rev 370)
+++ openbios-devel/drivers/cuda.c 2009-01-07 17:54:25 UTC (rev 371)
@@ -193,10 +193,15 @@
props[1] = __cpu_to_be32(IO_CUDA_SIZE);
set_property(ph, "reg", (char *)&props, sizeof(props));
- set_int_property(ph, "interrupt-parent", pic_handle);
- // HEATHROW
+
set_int_property(ph, "interrupts", 0x12);
+ /* we emulate an oldworld hardware, so we must use
+ * non-standard oldworld property (needed by linux 2.6.18)
+ */
+
+ set_int_property(ph, "AAPL,interrupts", 0x12);
+
bind_func("ppc32-reset-all", ppc32_reset_all);
push_str("' ppc32-reset-all to reset-all");
fword("eval");
Modified: openbios-devel/drivers/macio.c
===================================================================
--- openbios-devel/drivers/macio.c 2009-01-07 15:58:33 UTC (rev 370)
+++ openbios-devel/drivers/macio.c 2009-01-07 17:54:25 UTC (rev 371)
@@ -137,26 +137,6 @@
aliases = find_dev("/aliases");
set_property(aliases, "mac-io", path, strlen(path) + 1);
- snprintf(buf, sizeof(buf), "%s/interrupt-controller", path);
- REGISTER_NAMED_NODE(ob_intctrl_node, buf);
-
- ph = find_dev(buf);
- set_property(ph, "device_type", "interrupt-controller", 21);
- set_property(ph, "compatible", "heathrow\0mac-risc", 18);
- set_int_property(ph, "#interrupt-cells", 1);
- props[0]= 0x00000010;
- props[1]= 0x00000020;
- set_property(ph, "reg", (char *)&props, 2 * sizeof(props));
- set_property(ph, "interrupt-controller", NULL, 0);
-
- chosen = find_dev("/chosen");
- push_str(buf);
- fword("open-dev");
- ph = POP();
- set_int_property(chosen, "interrupt-controller", ph);
-
- pic_handle = ph;
-
cuda_init(path, addr);
macio_nvram_init(path, addr);
}
Modified: openbios-devel/drivers/pci.c
===================================================================
--- openbios-devel/drivers/pci.c 2009-01-07 15:58:33 UTC (rev 370)
+++ openbios-devel/drivers/pci.c 2009-01-07 17:54:25 UTC (rev 371)
@@ -267,52 +267,6 @@
return 0;
}
-static void pci_set_interrupt_map(const pci_config_t *config)
-{
- phandle_t parent, dev;
- cell props[4];
- cell *old_props, *new_props;
- int ncells;
- int retlen;
-
- if (config->irq_line != -1) {
- dev = get_cur_dev();
- activate_device(config->path);
- activate_device("..");
- parent = get_cur_dev();
-
- ncells = 0;
- if (get_property(parent, "interrupt-map-mask", NULL) == 0) {
- props[ncells++] = 0xF800;
- props[ncells++] = 0;
- props[ncells++] = 0;
- props[ncells++] = 0;
- set_property(parent, "interrupt-map-mask",
- (char*)props, ncells * sizeof(cell));
- }
-
- old_props = (cell*)get_property(parent, "interrupt-map", &retlen);
- if (old_props) {
- new_props = malloc(retlen + 6 * 4);
- memcpy(new_props, old_props, retlen);
- } else {
- retlen = 0;
- new_props = malloc(6 * 4);
- }
- ncells = retlen / 4;
- new_props[ncells++] = config->dev & 0xf800; /* devfn */
- new_props[ncells++] = 0;
- new_props[ncells++] = 0;
- new_props[ncells++] = 0;
- new_props[ncells++] = 0;
- new_props[ncells++] = config->irq_line;
- set_property(parent, "interrupt-map",
- (char*)new_props, ncells * sizeof(cell));
- free(new_props);
- activate_dev(dev);
- }
-}
-
static inline void pci_decode_pci_addr(pci_addr addr, int *flags,
int *space_code, uint32_t *mask)
{
@@ -540,7 +494,6 @@
pci_set_reg(config);
pci_set_assigned_addresses(config);
- pci_set_interrupt_map(config);
#ifdef CONFIG_DEBUG_PCI
printk("\n");