Rizwan Qureshi (rizwan.qureshi(a)intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/18312
-gerrit
commit b4ac82a3f962e7fce73a01ed597608f63c37fc22
Author: Rizwan Qureshi <rizwan.qureshi(a)intel.com>
Date: Thu Feb 9 15:57:45 2017 +0530
soc/intel/skylake: Add config option for Kabylake
Currently there is no distinction between mainboards using
Skylake or Kabylake SoC, Add a config option for Kabylake
SoC to allow mainboards to explicitly select if they are
using it.
Change-Id: Ie7960bd81f88a223894afe3115ddc0bc637e4be4
Signed-off-by: Rizwan Qureshi <rizwan.qureshi(a)intel.com>
---
src/soc/intel/skylake/Kconfig | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/soc/intel/skylake/Kconfig b/src/soc/intel/skylake/Kconfig
index 24c2e30..11953a6 100644
--- a/src/soc/intel/skylake/Kconfig
+++ b/src/soc/intel/skylake/Kconfig
@@ -3,6 +3,13 @@ config SOC_INTEL_SKYLAKE
help
Intel Skylake support
+config SOC_INTEL_KABYLAKE
+ bool
+ default n
+ select SOC_INTEL_SKYLAKE
+ help
+ Intel Kabylake support
+
if SOC_INTEL_SKYLAKE
config CPU_SPECIFIC_OPTIONS
Rizwan Qureshi (rizwan.qureshi(a)intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/18211
-gerrit
commit 0350b1930fc00ed722ef2bb2e7ee6cf030b59b19
Author: Rizwan Qureshi <rizwan.qureshi(a)intel.com>
Date: Fri Jan 13 22:17:01 2017 +0530
driver/i2c/max98927: add i2c driver for Maxim 98927 codec
Maxim 98927 kernel driver requires entries in the ACPI SSDT table,
add a SSDT generator as part of this driver.
BUG=None
BRANCH=None
TEST=After boot, dump and verify that the generated SSDT ACPI table has the
required entries.
Change-Id: Ic2d4d8449288bc00d085852220b2e1e7a208e9ef
Signed-off-by: Naresh G Solanki <naresh.solanki(a)intel.com>
Signed-off-by: Rizwan Qureshi <rizwan.qureshi(a)intel.com>
Signed-off-by: M Naveen <naveen.m(a)intel.com>
Signed-off-by: Dylan Reid <dgreid(a)chromium.org>
---
src/drivers/i2c/max98927/Kconfig | 2 +
src/drivers/i2c/max98927/Makefile.inc | 1 +
src/drivers/i2c/max98927/chip.h | 30 ++++++++++
src/drivers/i2c/max98927/max98927.c | 108 ++++++++++++++++++++++++++++++++++
4 files changed, 141 insertions(+)
diff --git a/src/drivers/i2c/max98927/Kconfig b/src/drivers/i2c/max98927/Kconfig
new file mode 100644
index 0000000..1007442
--- /dev/null
+++ b/src/drivers/i2c/max98927/Kconfig
@@ -0,0 +1,2 @@
+config DRIVERS_I2C_MAX98927
+ bool
diff --git a/src/drivers/i2c/max98927/Makefile.inc b/src/drivers/i2c/max98927/Makefile.inc
new file mode 100644
index 0000000..3bafee1
--- /dev/null
+++ b/src/drivers/i2c/max98927/Makefile.inc
@@ -0,0 +1 @@
+ramstage-$(CONFIG_DRIVERS_I2C_MAX98927) += max98927.c
diff --git a/src/drivers/i2c/max98927/chip.h b/src/drivers/i2c/max98927/chip.h
new file mode 100644
index 0000000..d63244f
--- /dev/null
+++ b/src/drivers/i2c/max98927/chip.h
@@ -0,0 +1,30 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright 2017 Intel Corp.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+/*
+ * Maxim MAX98927 audio codec devicetree bindings
+ */
+struct drivers_i2c_max98927_config {
+ /* I2C Bus Frequency in Hertz (default 400kHz) */
+ unsigned int bus_speed;
+ /* Set ‘1’ if I2S channel size is not 32bit. */
+ unsigned int interleave_mode;
+ /*Identifier for chips*/
+ unsigned int uid;
+ /* Device Description */
+ const char *desc;
+ /* ACPI Device Name */
+ const char *name;
+};
diff --git a/src/drivers/i2c/max98927/max98927.c b/src/drivers/i2c/max98927/max98927.c
new file mode 100644
index 0000000..1f5fabf
--- /dev/null
+++ b/src/drivers/i2c/max98927/max98927.c
@@ -0,0 +1,108 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright 2017 Intel Corporation.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include <arch/acpi.h>
+#include <arch/acpi_device.h>
+#include <arch/acpigen.h>
+#include <console/console.h>
+#include <device/i2c.h>
+#include <device/device.h>
+#include <device/path.h>
+#include <stdint.h>
+#include <string.h>
+#include "chip.h"
+
+#if IS_ENABLED(CONFIG_HAVE_ACPI_TABLES)
+
+#define MAX98927_ACPI_NAME "MAXI"
+#define MAX98927_ACPI_HID "MX98927"
+
+#define MAX98927_DP_INT(key, val) \
+ acpi_dp_add_integer(dp, "maxim," key, (val))
+
+static void max98927_fill_ssdt(struct device *dev)
+{
+ struct drivers_i2c_max98927_config *config = dev->chip_info;
+ const char *scope = acpi_device_scope(dev);
+ struct acpi_i2c i2c = {
+ .address = dev->path.i2c.device,
+ .mode_10bit = dev->path.i2c.mode_10bit,
+ .speed = config->bus_speed ? : I2C_SPEED_FAST,
+ .resource = scope,
+ };
+ struct acpi_dp *dp = NULL;
+
+ if (!dev->enabled || !scope)
+ return;
+
+ /* Device */
+ acpigen_write_scope(scope);
+ acpigen_write_device(acpi_device_name(dev));
+ acpigen_write_name_string("_HID", MAX98927_ACPI_HID);
+ acpigen_write_name_integer("_UID", config->uid);
+ acpigen_write_name_string("_DDN", config->desc);
+ acpigen_write_STA(ACPI_STATUS_DEVICE_ALL_ON);
+
+ /* Resources */
+ acpigen_write_name("_CRS");
+ acpigen_write_resourcetemplate_header();
+ acpi_device_write_i2c(&i2c);
+ acpigen_write_resourcetemplate_footer();
+
+ /* Device Properties */
+ dp = acpi_dp_new_table("_DSD");
+
+ acpi_dp_add_integer(dp, "interleave_mode", config->interleave_mode);
+
+ acpi_dp_write(dp);
+
+ acpigen_pop_len(); /* Device */
+ acpigen_pop_len(); /* Scope */
+
+ printk(BIOS_INFO, "%s: %s address 0%xh\n",
+ acpi_device_path(dev), dev->chip_ops->name,
+ dev->path.i2c.device);
+}
+
+static const char *max98927_acpi_name(struct device *dev)
+{
+ struct drivers_i2c_max98927_config *config = dev->chip_info;
+
+ if (config->name)
+ return config->name;
+
+ return MAX98927_ACPI_NAME;
+}
+#endif
+
+static struct device_operations max98927_ops = {
+ .read_resources = DEVICE_NOOP,
+ .set_resources = DEVICE_NOOP,
+ .enable_resources = DEVICE_NOOP,
+#if IS_ENABLED(CONFIG_HAVE_ACPI_TABLES)
+ .acpi_name = &max98927_acpi_name,
+ .acpi_fill_ssdt_generator = &max98927_fill_ssdt,
+#endif
+};
+
+static void max98927_enable(struct device *dev)
+{
+ dev->ops = &max98927_ops;
+}
+
+struct chip_operations drivers_i2c_max98927_ops = {
+ CHIP_NAME("Maxim MAX98927 Codec")
+ .enable_dev = &max98927_enable
+};
Jenny Tc (jenny.tc(a)intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/18307
-gerrit
commit d0a3c18e858625084a1a1f75881816639c87d2dd
Author: Jenny TC <jenny.tc(a)intel.com>
Date: Thu Feb 9 16:01:59 2017 +0530
intel/skylake: Disable FADT.8042 if NO_FADT_8042 is set
Kernel relies on FADT 8042 flag to enable/disable
8042 interface. If FADT reports 8042 capability and
8042 (/PS2) capability is actually disabled by coreboot,
kernel would assume the presence of 8042 based on the
FADT flag. This results in undesired system power off when
kernel tries to access the 8042 memory region. To address
this, CONFIG_NO_FADT_8042 was added to selectively
disable 8042 on FADT.
BUG=chrome-os-partner:61858
TEST=Boot OS and verify FADT 8042 flag
Change-Id: Ic80b3835cb5cccdde1203e24a58e28746b0196fc
Signed-off-by: Jenny TC <jenny.tc(a)intel.com>
---
src/soc/intel/skylake/Kconfig | 6 ++++++
src/soc/intel/skylake/acpi.c | 4 +++-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/soc/intel/skylake/Kconfig b/src/soc/intel/skylake/Kconfig
index 24c2e30..090fa2a 100644
--- a/src/soc/intel/skylake/Kconfig
+++ b/src/soc/intel/skylake/Kconfig
@@ -242,4 +242,10 @@ config MAX_ROOT_PORTS
default 24 if PLATFORM_USES_FSP2_0
default 20 if PLATFORM_USES_FSP1_1
+config NO_FADT_8042
+ bool
+ default n
+ help
+ Choose this option if you want to disable 8042 Keyboard
+
endif
diff --git a/src/soc/intel/skylake/acpi.c b/src/soc/intel/skylake/acpi.c
index 54468d2..2f8cf51 100644
--- a/src/soc/intel/skylake/acpi.c
+++ b/src/soc/intel/skylake/acpi.c
@@ -268,7 +268,9 @@ void acpi_fill_fadt(acpi_fadt_t *fadt)
fadt->day_alrm = 0xd;
fadt->mon_alrm = 0x00;
fadt->century = 0x00;
- fadt->iapc_boot_arch = ACPI_FADT_LEGACY_DEVICES | ACPI_FADT_8042;
+ fadt->iapc_boot_arch = ACPI_FADT_LEGACY_DEVICES;
+ if (!IS_ENABLED(CONFIG_NO_FADT_8042))
+ fadt->iapc_boot_arch |= ACPI_FADT_8042;
fadt->flags = ACPI_FADT_WBINVD | ACPI_FADT_C1_SUPPORTED |
ACPI_FADT_C2_MP_SUPPORTED | ACPI_FADT_SLEEP_BUTTON |