mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-07-11 05:52:36 +02:00
util: Import autoport with Haswell patches
This is a copy of coreboot's autoport utility, with a patch applied to support Haswell/Lynx Point platforms. That patch is currently in review on coreboot's Gerrit. https://review.coreboot.org/c/coreboot/+/30890 Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
import "os"
|
||||
|
||||
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)
|
||||
}
|
||||
if SouthBridge == nil {
|
||||
fmt.Println("Could not detect southbridge. Aborting!")
|
||||
os.Exit(1)
|
||||
}
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user