Kyösti Mälkki (kyosti.malkki@gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2577
-gerrit
commit 03bea525ad9c9fa3b5b0c8ffb83717d454fd1cbf Author: Kyösti Mälkki kyosti.malkki@gmail.com Date: Sun Mar 3 19:02:29 2013 +0200
Treat PnP devices as fixed IO
Usually these ISA/LPC devices are discussed using fixed I/O addresses so change the log output.
In example below, superio 2e:05 IO base registers for keyboard are programmed with 0x60 and 0x64 and that effectively disables the i8042 filter. We explicitly prevent this pair of addresses from being treated as PnP device.
0028.0029 RH.. [0000:0000] IO,i8042: outb 0064 <= d1 0028.002a RH.. [0000:0000] IO,i8042: inb 0064 => 11 0028.002b .H.. [0000:0000] i8042: A20 enabled 0028.002b RH.. [0000:0000] IO,i8042: outb 0060 <= df 0028.002c RH.. [0000:0000] IO,i8042: inb 0064 => 11 ... 0000.0000 I... [0000:0000] Resource: [0033] IO [0060-0060] = PnP 2e:05 0000.0000 I... [0000:0000] Resource: [0034] IO [0064-0064] = PnP 2e:05 ... 0706.0707 .H.. [0000:0000] PnP 2e:05: [0000] <= d1 0706.0708 .H.. [0000:0000] PnP 2e:05: [0000] => ff 0709.070a .H.. [0000:0000] PnP 2e:05: [0000] <= df 070b.070c .H.. [0000:0000] PnP 2e:05: [0000] => ff
Change-Id: Ibec34fe656dea9efd22ab4530ef9efb99c9c665d Signed-off-by: Kyösti Mälkki kyosti.malkki@gmail.com --- SerialICE/simba/pc80.lua | 1 + SerialICE/simba/superio.lua | 14 ++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/SerialICE/simba/pc80.lua b/SerialICE/simba/pc80.lua index 7ce439c..a9f4f0c 100644 --- a/SerialICE/simba/pc80.lua +++ b/SerialICE/simba/pc80.lua @@ -323,6 +323,7 @@ end
filter_i8042 = { id = -1, + decode = F_FIXED, name = "i8042", pre = i8042_pre, post = i8042_post, diff --git a/SerialICE/simba/superio.lua b/SerialICE/simba/superio.lua index 1248af5..7f6210c 100644 --- a/SerialICE/simba/superio.lua +++ b/SerialICE/simba/superio.lua @@ -62,8 +62,11 @@ function superio_try_enable_io(f, idx) if not ldn.bar0.name then ldn.bar0.name = superio_pnpdev(f) end - ldn.bar0.val = iobase - generic_io_bar(ldn.bar0) + if iobase ~= 0x60 then + ldn.bar0.val = iobase + generic_io_bar(ldn.bar0) + ldn.bar0.f.decode = F_FIXED + end end if idx == 1 and ldn.set[0x62] and ldn.set[0x63] then local iobase = bit32.bor(bit32.lshift(ldn.data[0x62], 8), ldn.data[0x63]) @@ -73,8 +76,11 @@ function superio_try_enable_io(f, idx) if not ldn.bar1.name then ldn.bar1.name = superio_pnpdev(f) end - ldn.bar1.val = iobase - generic_io_bar(ldn.bar1) + if iobase ~= 0x64 then + ldn.bar1.val = iobase + generic_io_bar(ldn.bar1) + ldn.bar1.f.decode = F_FIXED + end end end end