[coreboot-gerrit] Patch set updated for coreboot: 1e5cde6 lenovo/x60: Enable Infrared port.
Vladimir Serbinenko (phcoder@gmail.com)
gerrit at coreboot.org
Sun Feb 16 01:05:45 CET 2014
Vladimir Serbinenko (phcoder at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/5242
-gerrit
commit 1e5cde6b5c46455b46e68ec69a9eaa5e78b163d8
Author: Vladimir Serbinenko <phcoder at gmail.com>
Date: Sat Feb 15 19:13:00 2014 +0100
lenovo/x60: Enable Infrared port.
Change-Id: I8ce0195bc85a983627826b31eb9879c3dbc80dd9
Signed-off-by: Vladimir Serbinenko <phcoder at gmail.com>
---
src/mainboard/lenovo/x201/acpi_tables.c | 2 +-
src/mainboard/lenovo/x60/acpi_tables.c | 2 +-
src/mainboard/lenovo/x60/devicetree.cb | 4 +++
src/mainboard/lenovo/x60/romstage.c | 2 +-
src/odm_oem/lenovo/lenovo.h | 3 ++-
src/odm_oem/lenovo/wacom.c | 44 ++++++++++++++++++++++++++++++++-
6 files changed, 52 insertions(+), 5 deletions(-)
diff --git a/src/mainboard/lenovo/x201/acpi_tables.c b/src/mainboard/lenovo/x201/acpi_tables.c
index 981c52e..26c8f02 100644
--- a/src/mainboard/lenovo/x201/acpi_tables.c
+++ b/src/mainboard/lenovo/x201/acpi_tables.c
@@ -94,7 +94,7 @@ unsigned long acpi_fill_ssdt_generator(unsigned long current,
const char *oem_table_id)
{
generate_cpu_entries();
- drivers_lenovo_serial_ports_ssdt_generate("\\_SB.PCI0.LPCB", 0);
+ drivers_lenovo_serial_ports_ssdt_generate("\\_SB.PCI0.LPCB", 0, 0);
return (unsigned long)(acpigen_get_current());
}
diff --git a/src/mainboard/lenovo/x60/acpi_tables.c b/src/mainboard/lenovo/x60/acpi_tables.c
index d6ce4ba..c7c0a1a 100644
--- a/src/mainboard/lenovo/x60/acpi_tables.c
+++ b/src/mainboard/lenovo/x60/acpi_tables.c
@@ -87,7 +87,7 @@ unsigned long acpi_fill_madt(unsigned long current)
unsigned long acpi_fill_ssdt_generator(unsigned long current, const char *oem_table_id)
{
generate_cpu_entries();
- drivers_lenovo_serial_ports_ssdt_generate("\\_SB.PCI0.LPCB", 1);
+ drivers_lenovo_serial_ports_ssdt_generate("\\_SB.PCI0.LPCB", 1, 1);
return (unsigned long) (acpigen_get_current());
}
diff --git a/src/mainboard/lenovo/x60/devicetree.cb b/src/mainboard/lenovo/x60/devicetree.cb
index 5b4e37f..acd5af3 100644
--- a/src/mainboard/lenovo/x60/devicetree.cb
+++ b/src/mainboard/lenovo/x60/devicetree.cb
@@ -125,6 +125,10 @@ chip northbridge/intel/i945
chip superio/nsc/pc87382
device pnp 164e.2 on # IR
io 0x60 = 0x2f8
+ irq 0x29 = 0xb0
+ irq 0x70 = 0x3
+ drq 0x74 = 0x1
+ irq 0xf0 = 0x82
end
device pnp 164e.3 on # Digitizer
diff --git a/src/mainboard/lenovo/x60/romstage.c b/src/mainboard/lenovo/x60/romstage.c
index 1198fb2..8eca464 100644
--- a/src/mainboard/lenovo/x60/romstage.c
+++ b/src/mainboard/lenovo/x60/romstage.c
@@ -86,7 +86,7 @@ static void ich7_enable_lpc(void)
// decode range
pci_write_config16(PCI_DEV(0, 0x1f, 0), 0x80, 0x0210);
// decode range
- pci_write_config16(PCI_DEV(0, 0x1f, 0), 0x82, 0x1f0d);
+ pci_write_config16(PCI_DEV(0, 0x1f, 0), 0x82, 0x1f0f);
/* range 0x1600 - 0x167f */
pci_write_config16(PCI_DEV(0, 0x1f, 0), 0x84, 0x1601);
diff --git a/src/odm_oem/lenovo/lenovo.h b/src/odm_oem/lenovo/lenovo.h
index 25074bc..9abda4b 100644
--- a/src/odm_oem/lenovo/lenovo.h
+++ b/src/odm_oem/lenovo/lenovo.h
@@ -1,4 +1,5 @@
const char *lenovo_mainboard_partnumber(void);
int drivers_lenovo_is_wacom_present(void);
void drivers_lenovo_serial_ports_ssdt_generate(const char *scope,
- int have_dock_serial);
+ int have_dock_serial,
+ int have_infrared);
diff --git a/src/odm_oem/lenovo/wacom.c b/src/odm_oem/lenovo/wacom.c
index 5b97ec2..085de64 100644
--- a/src/odm_oem/lenovo/wacom.c
+++ b/src/odm_oem/lenovo/wacom.c
@@ -89,7 +89,8 @@ drivers_lenovo_is_wacom_present(void)
void
drivers_lenovo_serial_ports_ssdt_generate(const char *scope,
- int have_dock_serial)
+ int have_dock_serial,
+ int have_infrared)
{
int scopelen, devicelen, reslen, methodlen;
@@ -131,6 +132,47 @@ drivers_lenovo_serial_ports_ssdt_generate(const char *scope,
scopelen += devicelen;
}
+ if (have_infrared) {
+ /* Device op. */
+ scopelen += acpigen_emit_byte(0x5b);
+ scopelen += acpigen_emit_byte(0x82);
+ devicelen = acpigen_write_len_f();
+ devicelen += acpigen_emit_namestring("FIR");
+
+ devicelen += acpigen_write_name("_HID");
+ devicelen += acpigen_emit_eisaid("IBM0071");
+ devicelen += acpigen_write_name("_CID");
+ devicelen += acpigen_emit_eisaid("PNP0511");
+ devicelen += acpigen_write_name("_UID");
+
+ /* One */
+ devicelen += acpigen_write_byte(0x1);
+ devicelen += acpigen_write_name("_CRS");
+
+ reslen = acpigen_write_resourcetemplate_header();
+ reslen += acpigen_write_io16(0x2f8, 0x2f8, 1, 8, 1);
+ reslen += acpigen_write_irq(0x80);
+
+ devicelen += reslen;
+ devicelen += acpigen_write_resourcetemplate_footer(reslen);
+
+ /* method op */
+ devicelen += acpigen_emit_byte(0x14);
+ methodlen = acpigen_write_len_f();
+ methodlen += acpigen_emit_namestring("_STA");
+ /* no fnarg */
+ methodlen += acpigen_emit_byte(0x00);
+ /* return */
+ methodlen += acpigen_emit_byte(0xa4);
+ methodlen += acpigen_write_byte(0xf);
+ acpigen_patch_len(methodlen - 1);
+
+ devicelen += methodlen;
+
+ acpigen_patch_len(devicelen - 1);
+ scopelen += devicelen;
+ }
+
if (have_dock_serial) {
/* Device op. */
scopelen += acpigen_emit_byte(0x5b);
More information about the coreboot-gerrit
mailing list