summaryrefslogtreecommitdiff
path: root/util/autoport/root.go
diff options
context:
space:
mode:
authorVladimir Serbinenko <phcoder@gmail.com>2014-10-15 21:51:47 +0200
committerVladimir Serbinenko <phcoder@gmail.com>2015-05-29 11:26:29 +0200
commit3129f792f77e310ea246503f8b68b76fc269cfd2 (patch)
tree9f7538131d0cbb87e39f19be9c9d0c56fbf80107 /util/autoport/root.go
parentb06a249c3b766531ca247bb1278d34875f0d86e4 (diff)
downloadcoreboot-3129f792f77e310ea246503f8b68b76fc269cfd2.tar.xz
autoport: Write autoport together with porting guide for sandy/ivybridge.
This should be able to generate bootable ports for sandy/ivy, possible with minor fixes. Howto is in readme.md Change-Id: Ia126cf0939ef2dc2cdbb7ea100d2b63ea6b02f28 Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com> Reviewed-on: http://review.coreboot.org/7131 Tested-by: build bot (Jenkins) Reviewed-by: Edward O'Callaghan <edward.ocallaghan@koparo.com>
Diffstat (limited to 'util/autoport/root.go')
-rw-r--r--util/autoport/root.go42
1 files changed, 42 insertions, 0 deletions
diff --git a/util/autoport/root.go b/util/autoport/root.go
new file mode 100644
index 0000000000..ca75d4b385
--- /dev/null
+++ b/util/autoport/root.go
@@ -0,0 +1,42 @@
+package main
+
+import "fmt"
+
+var supportedPCIDevices map[uint32]PCIDevice = map[uint32]PCIDevice{}
+var PCIMap map[PCIAddr]PCIDevData = map[PCIAddr]PCIDevData{}
+
+func ScanRoot(ctx Context) {
+ for _, pciDev := range ctx.InfoSource.GetPCIList() {
+ PCIMap[pciDev.PCIAddr] = pciDev
+ }
+ for _, pciDev := range ctx.InfoSource.GetPCIList() {
+ vendevid := (uint32(pciDev.PCIDevID) << 16) | uint32(pciDev.PCIVenID)
+
+ dev, ok := supportedPCIDevices[vendevid]
+ if !ok {
+ if pciDev.PCIAddr.Bus != 0 {
+ fmt.Printf("Unknown PCI device %04x:%04x, assuming removable\n",
+ pciDev.PCIVenID, pciDev.PCIDevID)
+ continue
+ }
+ fmt.Printf("Unsupported PCI device %04x:%04x\n",
+ pciDev.PCIVenID, pciDev.PCIDevID)
+ dev = GenericPCI{Comment: fmt.Sprintf("Unsupported PCI device %04x:%04x",
+ pciDev.PCIVenID, pciDev.PCIDevID)}
+ }
+ dev.Scan(ctx, pciDev)
+ }
+ dmi := ctx.InfoSource.GetDMI()
+ if !dmi.IsLaptop {
+ NoEC(ctx)
+ } else if dmi.Vendor == "LENOVO" {
+ LenovoEC(ctx)
+ } else {
+ FIXMEEC(ctx)
+ }
+}
+
+func RegisterPCI(VenID uint16, DevID uint16, dev PCIDevice) {
+ vendevid := (uint32(DevID) << 16) | uint32(VenID)
+ supportedPCIDevices[vendevid] = dev
+}