summaryrefslogtreecommitdiff
path: root/util/autoport
diff options
context:
space:
mode:
authorVladimir Serbinenko <phcoder@gmail.com>2015-05-29 23:53:37 +0200
committerVladimir Serbinenko <phcoder@gmail.com>2015-05-30 13:55:38 +0200
commit91195c64371a1dd40a98d6998bc2c2e899ef55c9 (patch)
tree892b7ac9c0fecc84d7a80bfe891ed9d0df0e9f4b /util/autoport
parent239d53e9dc04767a550580210a102610ffafda2b (diff)
downloadcoreboot-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>
Diffstat (limited to 'util/autoport')
-rw-r--r--util/autoport/ec_fixme.go2
-rw-r--r--util/autoport/log_maker.go19
-rw-r--r--util/autoport/log_reader.go16
-rw-r--r--util/autoport/main.go1
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 {