summaryrefslogtreecommitdiff
path: root/src/drivers/usb/pci_ehci.c
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2014-02-09 19:21:30 +0200
committerKyösti Mälkki <kyosti.malkki@gmail.com>2014-02-16 20:10:54 +0100
commit6f6a249a75927476ba5e06bb2b0a0138e0cf63ea (patch)
tree81c789db2e93396738929c9bb3b26b84771135b6 /src/drivers/usb/pci_ehci.c
parent6e56de3d202c2175a13c91ab2c1bc1eb0d7f652a (diff)
downloadcoreboot-6f6a249a75927476ba5e06bb2b0a0138e0cf63ea.tar.xz
usbdebug: Remove EHCI_DEBUG_OFFSET
Read this variable from PCI configuration capabilities list instead. Change-Id: I0cfe981833873397c32cd3aa2af307f35f01784b Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: http://review.coreboot.org/5176 Tested-by: build bot (Jenkins) Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Diffstat (limited to 'src/drivers/usb/pci_ehci.c')
-rw-r--r--src/drivers/usb/pci_ehci.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/drivers/usb/pci_ehci.c b/src/drivers/usb/pci_ehci.c
index 7c715f67bd..c7e8afb06f 100644
--- a/src/drivers/usb/pci_ehci.c
+++ b/src/drivers/usb/pci_ehci.c
@@ -34,12 +34,30 @@ static struct device_operations *ehci_drv_ops;
static struct device_operations ehci_dbg_ops;
#endif
-void ehci_debug_hw_enable(void)
+int ehci_debug_hw_enable(unsigned int *base, unsigned int *dbg_offset)
{
-#if defined(__PRE_RAM__) || !CONFIG_USBDEBUG_IN_ROMSTAGE
pci_devfn_t dbg_dev = pci_ehci_dbg_dev(CONFIG_USBDEBUG_HCD_INDEX);
pci_ehci_dbg_enable(dbg_dev, CONFIG_EHCI_BAR);
+#ifdef __SIMPLE_DEVICE__
+ pci_devfn_t dev = dbg_dev;
+#else
+ device_t dev = dev_find_slot(PCI_DEV2SEGBUS(dbg_dev), PCI_DEV2DEVFN(dbg_dev));
#endif
+
+ u8 pos = pci_find_capability(dev, PCI_CAP_ID_EHCI_DEBUG);
+ if (!pos)
+ return -1;
+
+ u32 cap = pci_read_config32(dev, pos);
+
+ /* FIXME: We should remove static EHCI_BAR_INDEX. */
+ u8 dbg_bar = 0x10 + 4 * ((cap >> 29) - 1);
+ if (dbg_bar != EHCI_BAR_INDEX)
+ return -1;
+
+ *base = CONFIG_EHCI_BAR;
+ *dbg_offset = (cap>>16) & 0x1ffc;
+ return 0;
}
void ehci_debug_select_port(unsigned int port)