diff options
Diffstat (limited to 'src/mainboard/olpc')
-rw-r--r-- | src/mainboard/olpc/rev_a/mainboard.c | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/src/mainboard/olpc/rev_a/mainboard.c b/src/mainboard/olpc/rev_a/mainboard.c index 0d5170d871..b4e7eba93f 100644 --- a/src/mainboard/olpc/rev_a/mainboard.c +++ b/src/mainboard/olpc/rev_a/mainboard.c @@ -6,7 +6,38 @@ #include <arch/io.h> #include "chip.h" + + +static void init(struct device *dev) { + unsigned bus = 0; + unsigned devfn = PCI_DEVFN(0xf, 4); + device_t usb = NULL; + unsigned char usbirq = 0xa; + + printk_debug("OLPC REVA ENTER %s\n", __FUNCTION__); + + /* I can't think of any reason NOT to just set this. If it turns out we want this to be + * conditional we can make it a config variable later. + */ + + printk_debug("%s (%x,%x)SET USB PCI interrupt line to %d\n", + __FUNCTION__, bus, devfn, usbirq); + usb = dev_find_slot(bus, devfn); + if (! usb){ + printk_err("Could not find USB\n"); + } else { + pci_write_config8(usb, PCI_INTERRUPT_LINE, usbirq); + } + printk_debug("OLPC REVA EXIT %s\n", __FUNCTION__); +} + +static void enable_dev(struct device *dev) +{ + dev->ops->init = init; +} + struct chip_operations mainboard_olpc_rev_a_ops = { CHIP_NAME("olpc rev_a mainboard ") -}; + .enable_dev = enable_dev, +}; |