diff options
author | Vladimir Serbinenko <phcoder@gmail.com> | 2015-05-29 23:53:37 +0200 |
---|---|---|
committer | Vladimir Serbinenko <phcoder@gmail.com> | 2015-05-30 13:55:38 +0200 |
commit | 91195c64371a1dd40a98d6998bc2c2e899ef55c9 (patch) | |
tree | 892b7ac9c0fecc84d7a80bfe891ed9d0df0e9f4b | |
parent | 239d53e9dc04767a550580210a102610ffafda2b (diff) | |
download | coreboot-91195c64371a1dd40a98d6998bc2c2e899ef55c9.tar.xz |
autoport: Improve keyboard detection.
Previously I tried to see if Linux think that port 0x60 is in use by keyboard.
Unfortunately it always thinks that it is. Instead just base off real input
busses used.
Change-Id: I4bb744938f623d29f38396165a1694fee78c3d32
Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com>
Reviewed-on: http://review.coreboot.org/10376
Tested-by: build bot (Jenkins)
Reviewed-by: Edward O'Callaghan <edward.ocallaghan@koparo.com>
-rw-r--r-- | util/autoport/ec_fixme.go | 2 | ||||
-rw-r--r-- | util/autoport/log_maker.go | 19 | ||||
-rw-r--r-- | util/autoport/log_reader.go | 16 | ||||
-rw-r--r-- | util/autoport/main.go | 1 |
4 files changed, 37 insertions, 1 deletions
diff --git a/util/autoport/ec_fixme.go b/util/autoport/ec_fixme.go index d7dff52770..850998d5ce 100644 --- a/util/autoport/ec_fixme.go +++ b/util/autoport/ec_fixme.go @@ -6,7 +6,7 @@ func FIXMEEC(ctx Context) { ap := Create(ctx, "acpi/platform.asl") defer ap.Close() - hasKeyboard := IsIOPortUsedBy(ctx, 0x60, "keyboard") + hasKeyboard := ctx.InfoSource.HasPS2() sbGPE := GuessECGPE(ctx) var GPEUnsure bool diff --git a/util/autoport/log_maker.go b/util/autoport/log_maker.go index e2440b4891..dbe5f808c9 100644 --- a/util/autoport/log_maker.go +++ b/util/autoport/log_maker.go @@ -103,4 +103,23 @@ func MakeLogs(outDir string) { defer out.Close() io.Copy(out, in) } + + out, err := os.Create(outDir + "/input_bustypes.log") + if err != nil { + log.Fatal(err) + } + defer out.Close() + + ClassInputDir := "/sys/class/input/" + files, _ = ioutil.ReadDir(ClassInputDir) + for _, f := range files { + if strings.HasPrefix(f.Name(), "input") && !f.Mode().IsRegular() { /* Allow both dirs and symlinks. */ + in, err := os.Open(ClassInputDir + f.Name() + "/id/bustype") + defer in.Close() + if err != nil { + log.Fatal(err) + } + io.Copy(out, in) + } + } } diff --git a/util/autoport/log_reader.go b/util/autoport/log_reader.go index 58f1182ec3..c94d182b49 100644 --- a/util/autoport/log_reader.go +++ b/util/autoport/log_reader.go @@ -359,6 +359,22 @@ func (l *LogDevReader) GetCPUModel() (ret []uint32) { return } +func (l *LogDevReader) HasPS2() bool { + file, err := os.Open(l.InputDirectory + "/input_bustypes.log") + if err != nil { + log.Fatal(err) + } + defer file.Close() + scanner := bufio.NewScanner(file) + for scanner.Scan() { + line := scanner.Text() + if strings.Index(line, "0011") >= 0 { + return true + } + } + return false +} + var FlagLogInput = flag.String("input_log", ".", "Input log directory") var FlagLogMkLogs = flag.Bool("make_logs", false, "Dump logs") diff --git a/util/autoport/main.go b/util/autoport/main.go index 2abb194b14..2eb1588158 100644 --- a/util/autoport/main.go +++ b/util/autoport/main.go @@ -59,6 +59,7 @@ type DevReader interface { GetCPUModel() []uint32 GetEC() []byte GetIOPorts() []IOPorts + HasPS2() bool } type IOPorts struct { |