summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Rudolph <patrick.rudolph@9elements.com>2023-10-29 19:59:56 +0100
committerLean Sheng Tan <sheng.tan@9elements.com>2024-01-15 09:34:11 +0000
commitd323d844f743e2876e404cf13ddd32a1bd050715 (patch)
treed5f3e8184409276cdb86e0f9239a551198f57f4c
parentc943d6f6a4c6b632084984b9aeeb7e5cc6dc357e (diff)
util/autoport: Improve USB code
Currently autoport fills in USB current '0' if the detected setting isn't one of the known settings. This works as 0 is a valid setting from C point of view, but it's not supported on desktop PCs and on mobile platform results in the lowest possible USB PHY gain. Thus this might cause instabilities as the original firmware had stronger USB drive currents and gain settings. Add more known USB current fields to the map and generate a FIXME as comment when the detected current isn't one of the known entries instead of defaulting to 0. Change-Id: I48f4d636ce3401ba188f5519b5ff45fccf13f080 Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/78828 Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
-rw-r--r--util/autoport/bd82x6x.go16
1 files changed, 13 insertions, 3 deletions
diff --git a/util/autoport/bd82x6x.go b/util/autoport/bd82x6x.go
index 6ce15a2ced..76411e72a1 100644
--- a/util/autoport/bd82x6x.go
+++ b/util/autoport/bd82x6x.go
@@ -309,6 +309,10 @@ func (b bd82x6x) Scan(ctx Context, addr PCIDevData) {
0x2000055b: 2,
0x20000f51: 3,
0x2000094a: 4,
+ 0x2000035f: 5,
+ 0x20000f53: 6,
+ 0x20000357: 7,
+ 0x20000353: 8,
}
for port := uint(0); port < 14; port++ {
@@ -327,10 +331,16 @@ func (b bd82x6x) Scan(ctx Context, addr PCIDevData) {
}
}
}
- fmt.Fprintf(sb, "\t{ %d, %d, %d },\n",
+ current, ok := currentMap[inteltool.RCBA[uint16(0x3500+4*port)]]
+ comment := ""
+ if !ok {
+ comment = fmt.Sprintf("// FIXME: Unknown current: RCBA(0x%x)=0x%x", 0x3500+4*port, uint16(0x3500+4*port))
+ }
+ fmt.Fprintf(sb, "\t{ %d, %d, %d }, %s\n",
((inteltool.RCBA[0x359c]>>port)&1)^1,
- currentMap[inteltool.RCBA[uint16(0x3500+4*port)]],
- OCPin)
+ current,
+ OCPin,
+ comment)
}
sb.WriteString("};\n")