All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 070/126] x86: power: Add a PMC uclass
Date: Wed, 25 Sep 2019 08:56:54 -0600	[thread overview]
Message-ID: <20190925145750.200592-71-sjg@chromium.org> (raw)
In-Reply-To: <20190925145750.200592-1-sjg@chromium.org>

Intel x86 SoCs have a power manager/controller which handles several
power-related aspects of the platform. Add a uclass for this, with a few
useful operations.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 drivers/power/Kconfig                      |   2 +
 drivers/power/power_mgr/Kconfig            |  25 +++
 drivers/power/power_mgr/Makefile           |   6 +
 drivers/power/power_mgr/power-mgr-uclass.c | 191 +++++++++++++++++++++
 include/dm/uclass-id.h                     |   1 +
 include/power/power_mgr.h                  | 177 +++++++++++++++++++
 6 files changed, 402 insertions(+)
 create mode 100644 drivers/power/power_mgr/Kconfig
 create mode 100644 drivers/power/power_mgr/Makefile
 create mode 100644 drivers/power/power_mgr/power-mgr-uclass.c
 create mode 100644 include/power/power_mgr.h

diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
index 9495dca33b9..1cb3f6d5e25 100644
--- a/drivers/power/Kconfig
+++ b/drivers/power/Kconfig
@@ -4,6 +4,8 @@ source "drivers/power/domain/Kconfig"
 
 source "drivers/power/pmic/Kconfig"
 
+source "drivers/power/power_mgr/Kconfig"
+
 source "drivers/power/regulator/Kconfig"
 
 choice
diff --git a/drivers/power/power_mgr/Kconfig b/drivers/power/power_mgr/Kconfig
new file mode 100644
index 00000000000..2731518462f
--- /dev/null
+++ b/drivers/power/power_mgr/Kconfig
@@ -0,0 +1,25 @@
+config POWER_MGR
+	bool "Power Manager (x86 PMC) support"
+	help
+	  Enable support for an x86-style power-management controller which
+	  provides features including checking whether the system started from
+	  resume, powering off the system and enabling/disabling the reset
+	  mechanism.
+
+config SPL_POWER_MGR
+	bool "Power Manager (x86 PMC) support in SPL"
+	default y if POWER_MGR
+	help
+	  Enable support for an x86-style power-management controller which
+	  provides features including checking whether the system started from
+	  resume, powering off the system and enabling/disabling the reset
+	  mechanism.
+
+config TPL_POWER_MGR
+	bool "Power Manager (x86 PMC) support in TPL"
+	default y if POWER_MGR
+	help
+	  Enable support for an x86-style power-management controller which
+	  provides features including checking whether the system started from
+	  resume, powering off the system and enabling/disabling the reset
+	  mechanism.
diff --git a/drivers/power/power_mgr/Makefile b/drivers/power/power_mgr/Makefile
new file mode 100644
index 00000000000..87542f5248a
--- /dev/null
+++ b/drivers/power/power_mgr/Makefile
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Copyright 2019 Google LLC
+
+obj-$(CONFIG_$(SPL_TPL_)POWER_MGR) += power-mgr-uclass.o
+
diff --git a/drivers/power/power_mgr/power-mgr-uclass.c b/drivers/power/power_mgr/power-mgr-uclass.c
new file mode 100644
index 00000000000..0d73caf8cf6
--- /dev/null
+++ b/drivers/power/power_mgr/power-mgr-uclass.c
@@ -0,0 +1,191 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2019 Google LLC
+ */
+
+#define LOG_CATEGORY UCLASS_POWER_MGR
+
+#include <common.h>
+#include <acpi_s3.h>
+#include <dm.h>
+#include <log.h>
+#include <asm/io.h>
+#ifdef CONFIG_CREATE_ARCH_SYMLINK
+#include <asm/arch/gpio.h>
+#endif
+#include <power/power_mgr.h>
+
+enum {
+	PM1_STS		= 0x00,
+	PM1_EN		= 0x02,
+	PM1_CNT		= 0x04,
+
+	GPE0_STS	= 0x20,
+	GPE0_EN		= 0x30,
+};
+
+struct tco_regs {
+	u32 tco_rld;
+	u32 tco_sts;
+	u32 tco1_cnt;
+	u32 tco_tmr;
+};
+
+enum {
+	TCO_STS_TIMEOUT			= 1 << 3,
+	TCO_STS_SECOND_TO_STS		= 1 << 17,
+	TCO1_CNT_HLT			= 1 << 11,
+};
+
+static void pmc_fill_pm_reg_info(struct udevice *dev)
+{
+	struct power_mgr_upriv *upriv = dev_get_uclass_priv(dev);
+	int i;
+
+	upriv->pm1_sts = inw(upriv->acpi_base + PM1_STS);
+	upriv->pm1_en = inw(upriv->acpi_base + PM1_EN);
+	upriv->pm1_cnt = inw(upriv->acpi_base + PM1_CNT);
+
+	log_debug("pm1_sts: %04x pm1_en: %04x pm1_cnt: %08x\n",
+		  upriv->pm1_sts, upriv->pm1_en, upriv->pm1_cnt);
+
+	for (i = 0; i < GPE0_REG_MAX; i++) {
+		upriv->gpe0_sts[i] = inl(upriv->acpi_base + GPE0_STS + i * 4);
+		upriv->gpe0_en[i] = inl(upriv->acpi_base + GPE0_EN + i * 4);
+		log_debug("gpe0_sts[%d]: %08x gpe0_en[%d]: %08x\n", i,
+			  upriv->gpe0_sts[i], i, upriv->gpe0_en[i]);
+	}
+}
+
+int pmc_disable_tco_base(ulong tco_base)
+{
+	struct tco_regs *regs = (struct tco_regs *)tco_base;
+
+	debug("tco_base %lx = %x\n", (ulong)&regs->tco1_cnt, TCO1_CNT_HLT);
+	setio_32(&regs->tco1_cnt, TCO1_CNT_HLT);
+
+	return 0;
+}
+
+int pmc_init(struct udevice *dev)
+{
+	const struct power_mgr_ops *ops = power_mgr_get_ops(dev);
+	int ret;
+
+	pmc_fill_pm_reg_info(dev);
+	if (!ops->init)
+		return -ENOSYS;
+
+	ret = ops->init(dev);
+	if (ret)
+		return log_msg_ret("Failed to init pmc", ret);
+
+#ifdef DEBUG
+	pmc_dump_info(dev);
+#endif
+
+	return 0;
+}
+
+int pmc_prev_sleep_state(struct udevice *dev)
+{
+	struct power_mgr_upriv *upriv = dev_get_uclass_priv(dev);
+	const struct power_mgr_ops *ops = power_mgr_get_ops(dev);
+	int prev_sleep_state = ACPI_S0;	/* Default to S0 */
+
+	if (upriv->pm1_sts & WAK_STS) {
+		switch (acpi_sleep_from_pm1(upriv->pm1_cnt)) {
+		case ACPI_S3:
+			if (IS_ENABLED(HAVE_ACPI_RESUME))
+				prev_sleep_state = ACPI_S3;
+			break;
+		case ACPI_S5:
+			prev_sleep_state = ACPI_S5;
+			break;
+		default:
+			break;
+		}
+
+		/* Clear SLP_TYP */
+		outl(upriv->pm1_cnt & ~SLP_TYP, upriv->acpi_base + PM1_CNT);
+	}
+
+	if (!ops->prev_sleep_state)
+		return prev_sleep_state;
+
+	return ops->prev_sleep_state(dev, prev_sleep_state);
+}
+
+int pmc_disable_tco(struct udevice *dev)
+{
+	const struct power_mgr_ops *ops = power_mgr_get_ops(dev);
+
+	pmc_fill_pm_reg_info(dev);
+	if (!ops->disable_tco)
+		return -ENOSYS;
+
+	return ops->disable_tco(dev);
+}
+
+int pmc_global_reset_set_enable(struct udevice *dev, bool enable)
+{
+	const struct power_mgr_ops *ops = power_mgr_get_ops(dev);
+
+	if (!ops->global_reset_set_enable)
+		return -ENOSYS;
+
+	return ops->global_reset_set_enable(dev, enable);
+}
+
+void pmc_dump_info(struct udevice *dev)
+{
+	struct power_mgr_upriv *upriv = dev_get_uclass_priv(dev);
+	int i;
+
+	printf("Device: %s\n", dev->name);
+	printf("ACPI base %x, pmc_bar0 %p, pmc_bar2 %p, gpe_cfg %p\n",
+	       upriv->acpi_base, upriv->pmc_bar0, upriv->pmc_bar2,
+	       upriv->gpe_cfg);
+	printf("pm1_sts: %04x pm1_en: %04x pm1_cnt: %08x\n",
+	       upriv->pm1_sts, upriv->pm1_en, upriv->pm1_cnt);
+
+	for (i = 0; i < GPE0_REG_MAX; i++) {
+		printf("gpe0_sts[%d]: %08x gpe0_en[%d]: %08x\n", i,
+		       upriv->gpe0_sts[i], i, upriv->gpe0_en[i]);
+	}
+
+	printf("prsts: %08x\n", upriv->prsts);
+	printf("tco_sts:   %04x %04x\n", upriv->tco1_sts, upriv->tco2_sts);
+	printf("gen_pmcon1: %08x gen_pmcon2: %08x gen_pmcon3: %08x\n",
+	       upriv->gen_pmcon1, upriv->gen_pmcon2, upriv->gen_pmcon3);
+}
+
+int pmc_ofdata_to_uc_platdata(struct udevice *dev)
+{
+	struct power_mgr_upriv *upriv = dev_get_uclass_priv(dev);
+	int ret;
+
+	ret = dev_read_u32(dev, "gpe0-dwx-mask", &upriv->gpe0_dwx_mask);
+	if (ret)
+		return log_msg_ret("no gpe0-dwx-mask", ret);
+	ret = dev_read_u32(dev, "gpe0-dwx-shift-base",
+			   &upriv->gpe0_dwx_shift_base);
+	if (ret)
+		return log_msg_ret("no gpe0-dwx-shift-base", ret);
+	ret = dev_read_u32(dev, "gpe0-sts", &upriv->gpe0_sts_reg);
+	if (ret)
+		return log_msg_ret("no gpe0-sts", ret);
+	upriv->gpe0_sts_reg += upriv->acpi_base;
+	ret = dev_read_u32(dev, "gpe0-en", &upriv->gpe0_en_reg);
+	if (ret)
+		return log_msg_ret("no gpe0-en", ret);
+	upriv->gpe0_en_reg += upriv->acpi_base;
+
+	return 0;
+}
+
+UCLASS_DRIVER(power_mgr) = {
+	.id		= UCLASS_POWER_MGR,
+	.name		= "power-mgr",
+	.per_device_auto_alloc_size	= sizeof(struct power_mgr_upriv),
+};
diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h
index f431f3bf294..907fe257ad1 100644
--- a/include/dm/uclass-id.h
+++ b/include/dm/uclass-id.h
@@ -79,6 +79,7 @@ enum uclass_id {
 	UCLASS_PINCTRL,		/* Pinctrl (pin muxing/configuration) device */
 	UCLASS_PMIC,		/* PMIC I/O device */
 	UCLASS_POWER_DOMAIN,	/* (SoC) Power domains */
+	UCLASS_POWER_MGR,	/* (x86) Power managerment controller (PMC) */
 	UCLASS_PWM,		/* Pulse-width modulator */
 	UCLASS_PWRSEQ,		/* Power sequence device */
 	UCLASS_RAM,		/* RAM controller */
diff --git a/include/power/power_mgr.h b/include/power/power_mgr.h
new file mode 100644
index 00000000000..7f6cdc5cd62
--- /dev/null
+++ b/include/power/power_mgr.h
@@ -0,0 +1,177 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright 2019 Google LLC
+ */
+
+#ifndef __POWER_MGR_H
+#define __POWER_MGR_H
+
+enum {
+	GPE0_REG_MAX	= 4,
+};
+
+/**
+ * struct power_mgr_upriv - holds common data for the x86 PMC
+ *
+ * @pmc_bar0: Base address 0 of PMC
+ * @pmc_bar1: Base address 2 of PMC
+ * @acpi_base: Base address of ACPI block
+ * @pm1_sts: PM1 status
+ * @pm1_en: PM1 enable
+ * @pm1_cnt: PM1 control
+ * @gpe_cfg: Address of GPE_CFG register
+ * @gpe0_dwx_mask: Mask to use for each GPE0 (typically 7 or 0xf)
+ * @gpe0_dwx_shift_base: Base shift value to use for GPE0 (0 or 4)
+ * @gpe0_sts_req: GPE0 status register offset
+ * @gpe0_en_req: GPE0 enable register offset
+ * @gpe0_sts: GPE0 status values
+ * @gpe0_en: GPE0 enable values
+ * @gpe0_dw: GPE0 DW values
+ * @gpe0_count: Number of GPE0 registers
+ * @tco1_sts: TCO1 status
+ * @tco2_sts: TCO2 status
+ * @prsts: Power and reset status
+ * @gen_pmcon1: General power mgmt configuration 1
+ * @gen_pmcon2: General power mgmt configuration 2
+ * @gen_pmcon3: General power mgmt configuration 3
+ */
+struct power_mgr_upriv {
+	void *pmc_bar0;
+	void *pmc_bar2;
+	u32 acpi_base;
+	u16 pm1_sts;
+	u16 pm1_en;
+	u32 pm1_cnt;
+	u32 *gpe_cfg;
+	u32 gpe0_dwx_mask;
+	u32 gpe0_dwx_shift_base;
+	u32 gpe0_sts_reg;
+	u32 gpe0_en_reg;
+	u32 gpe0_sts[GPE0_REG_MAX];
+	u32 gpe0_en[GPE0_REG_MAX];
+	u32 gpe0_dw[GPE0_REG_MAX];
+	int gpe0_count;
+	u16 tco1_sts;
+	u16 tco2_sts;
+	u32 prsts;
+	u32 gen_pmcon1;
+	u32 gen_pmcon2;
+	u32 gen_pmcon3;
+};
+
+struct power_mgr_ops {
+	/**
+	 * init() - Set up the PMC for use
+	 *
+	 * This reads the current state of the PMC. Most of the state is read
+	 * automatically by the uclass since it is common.
+	 *
+	 * @dev: PMC device to use
+	 * @return 0 if OK, -ve on error
+	 */
+	int (*init)(struct udevice *dev);
+
+	/**
+	 * prev_sleep_state() - Get the previous sleep state (optional)
+	 *
+	 * This reads various state registers and returns the sleep state from
+	 * which the system woke. If this method is not provided, the uclass
+	 * will return a calculated value.
+	 *
+	 * @dev: PMC device to use
+	 * @prev_sleep_state: Previous sleep state as calculated by the uclass.
+	 *	The method can use this as the return value or calculate its
+	 *	own.
+	 *
+	 * @return enum acpi_sleep_state indicating the previous sleep state
+	 *	(ACPI_S0, ACPI_S3 or ACPI_S5), or -ve on error
+	 */
+	int (*prev_sleep_state)(struct udevice *dev, int prev_sleep_state);
+
+	/**
+	 * disable_tco() - Disable the timer/counter
+	 *
+	 * Disables the timer/counter in the PMC
+	 *
+	 * @dev: PMC device to use
+	 * @return 0
+	 */
+	int (*disable_tco)(struct udevice *dev);
+
+	/**
+	 * global_reset_set_enable() - Enable/Disable global reset
+	 *
+	 * Enable or disable global reset. If global reset is enabled, both hard
+	 * reset and soft reset will trigger global reset, where both host and
+	 * TXE are reset. This is cleared on cold boot, hard reset, soft reset
+	 * and Sx.
+	 *
+	 * @dev: PMC device to use
+	 * @enable: true to enable global reset, false to disable
+	 * @return 0
+	 */
+	int (*global_reset_set_enable)(struct udevice *dev, bool enable);
+};
+
+#define power_mgr_get_ops(dev)	((struct power_mgr_ops *)(dev)->driver->ops)
+
+/**
+ * init() - Set up the PMC for use
+ *
+ * This reads the current state of the PMC. This reads in the common registers,
+ * then calls the device's init() method to read the SoC-specific registers.
+ *
+ * @return 0 if OK, -ve on error
+ */
+int pmc_init(struct udevice *dev);
+
+/**
+ * pmc_prev_sleep_state() - Get the previous sleep state
+ *
+ * This reads various state registers and returns the sleep state from
+ * which the system woke.
+ *
+ * @return enum acpi_sleep_state indicating the previous sleep state
+ *	(ACPI_S0, ACPI_S3 or ACPI_S5), or -ve on error
+ */
+int pmc_prev_sleep_state(struct udevice *dev);
+
+/**
+ * pmc_disable_tco() - Disable the timer/counter
+ *
+ * Disables the timer/counter in the PMC
+ *
+ * @dev: PMC device to use
+ * @return 0
+ */
+int pmc_disable_tco(struct udevice *dev);
+
+/**
+ * pmc_global_reset_set_enable() - Enable/Disable global reset
+ *
+ * Enable or disable global reset. If global reset is enabled, both hard
+ * reset and soft reset will trigger global reset, where both host and
+ * TXE are reset. This is cleared on cold boot, hard reset, soft reset
+ * and Sx.
+ *
+ * @dev: PMC device to use
+ * @enable: true to enable global reset, false to disable
+ * @return 0
+ */
+int pmc_global_reset_set_enable(struct udevice *dev, bool enable);
+
+int pmc_ofdata_to_uc_platdata(struct udevice *dev);
+
+int pmc_disable_tco_base(ulong tco_base);
+
+void pmc_dump_info(struct udevice *dev);
+
+/**
+ * pmc_gpe_init() - Set up general-purpose events
+ *
+ * @dev: PMC device
+ * @return 0 if OK, -ve on error
+ */
+int pmc_gpe_init(struct udevice *dev);
+
+#endif
-- 
2.23.0.444.g18eeb5a265-goog

  parent reply	other threads:[~2019-09-25 14:56 UTC|newest]

Thread overview: 311+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-25 14:55 [U-Boot] [PATCH 000/126] x86: Add initial support for apollolake Simon Glass
2019-09-25 14:55 ` [U-Boot] [PATCH 001/126] dm: core: Use U-Boot logging instead of pr_debug() Simon Glass
2019-10-03 12:47   ` Bin Meng
2019-10-06  9:15     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 002/126] dm: core: Correct low cell in ofnode_read_pci_addr() Simon Glass
2019-09-25 16:12   ` Stephen Warren
2019-10-03 12:47   ` Bin Meng
2019-10-03 13:13     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 003/126] dm: core: Drop a few early returns Simon Glass
2019-10-03 12:47   ` Bin Meng
2019-10-06  9:15     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 004/126] dm: core: Add documentation on how to debug driver model Simon Glass
2019-10-03 12:47   ` Bin Meng
2019-10-06  9:15     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 005/126] dm: core: Don't include ofnode functions with of-platdata Simon Glass
2019-10-03 12:48   ` Bin Meng
2019-10-06  9:15     ` Bin Meng
2019-10-07  1:40       ` Bin Meng
2019-10-13 18:24         ` Simon Glass
2019-09-25 14:55 ` [U-Boot] [PATCH 006/126] dm: core: Correct bad cast in ofnode_get_addr_size_index() Simon Glass
2019-10-03 12:48   ` Bin Meng
2019-10-03 13:14     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 007/126] dm: test: Fix running of multiple test from command line Simon Glass
2019-10-04  9:44   ` Bin Meng
2019-10-06  9:15     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 008/126] dm: test: Don't fail when tests are skipped due to build Simon Glass
2019-10-04  9:44   ` Bin Meng
2019-10-06  9:15     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 009/126] dm: core: Call ofdata_to_platdata() with of-platdata Simon Glass
2019-10-04  9:44   ` Bin Meng
2019-10-06  9:15     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 010/126] dm: doc: Correct of-platdata CONFIG_IS_ENABLED() condition Simon Glass
2019-10-04  9:44   ` Bin Meng
2019-10-13 15:03     ` Simon Glass
2019-09-25 14:55 ` [U-Boot] [PATCH 011/126] dm: core: Correct the return value for uclass_find_first_device() Simon Glass
2019-10-04  9:44   ` Bin Meng
2019-10-06  9:27     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 012/126] dm: core: Add device_foreach_child() Simon Glass
2019-10-04  9:44   ` Bin Meng
2019-10-06  9:27     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 013/126] dm: test: Correct a stray backslash in dm_test_destroy() Simon Glass
2019-10-04  9:44   ` Bin Meng
2019-10-06  9:27     ` Bin Meng
2019-09-25 14:55 ` [U-Boot] [PATCH 014/126] fdt: Show the preprocessed .dts file on error Simon Glass
2019-10-04  9:44   ` Bin Meng
2019-10-13 15:03     ` Simon Glass
2019-09-25 14:55 ` [U-Boot] [PATCH 015/126] sandbox: spmi: Add ranges property for address translation Simon Glass
2019-10-05  1:58   ` Bin Meng
2019-10-06  9:27     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 016/126] sandbox: mmc: Fix up MMC emulator for valgrind Simon Glass
2019-10-05  1:58   ` Bin Meng
2019-10-06  9:27     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 017/126] sandbox: Rename PCI ID for swap_case to be more specific Simon Glass
2019-10-05  1:58   ` Bin Meng
2019-10-06  9:27     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 018/126] sandbox: Add support for clrsetio_32() and friends Simon Glass
2019-10-05  2:01   ` Bin Meng
2019-10-06  9:27     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 019/126] sandbox: swap_case: Use statics where possible Simon Glass
2019-10-05  2:01   ` Bin Meng
2019-10-06  9:28     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 020/126] sandbox: pci: Drop the get_devfn() method Simon Glass
2019-10-05  2:01   ` Bin Meng
2019-10-06  9:28     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 021/126] sandbox: net: Suppress the MAC-address warnings Simon Glass
2019-10-05  2:10   ` Bin Meng
2019-10-05  2:16   ` Bin Meng
2019-10-05  2:26     ` Bin Meng
2019-10-06  1:05       ` Joe Hershberger
2019-10-06  2:12         ` Bin Meng
2019-10-06  2:41           ` Joe Hershberger
2019-10-14 20:02             ` Simon Glass
2019-09-25 14:56 ` [U-Boot] [PATCH 022/126] sandbox: pci: Move pci_offset_to_barnum() to pci.h Simon Glass
2019-10-05  2:17   ` Bin Meng
2019-10-06 10:03     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 023/126] sandbox: Add a -T flag to use the test device tree Simon Glass
2019-10-05  3:13   ` Bin Meng
2019-10-06 10:04     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 024/126] sandbox: pci: Increase the memory space Simon Glass
2019-10-05  3:14   ` Bin Meng
2019-10-06 10:04     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 025/126] sandbox: Allow use of real I/O with readl(), etc Simon Glass
2019-10-05  3:30   ` Bin Meng
2019-10-06 10:04     ` Bin Meng
2019-10-07  1:40       ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 026/126] pci: sandbox: Move the emulators into their own node Simon Glass
2019-10-05  5:03   ` Bin Meng
2019-10-06 10:04     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 027/126] pci: sandbox: Probe PCI emulation devices when used Simon Glass
2019-10-05  5:03   ` Bin Meng
2019-10-06 10:04     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 028/126] pci: Show the result of binding a device Simon Glass
2019-10-05  5:03   ` Bin Meng
2019-10-06 10:04     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 029/126] pci: Disable autoconfig in SPL Simon Glass
2019-10-05  5:03   ` Bin Meng
2019-10-06 10:04     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 030/126] pci: Correct 'specifified' and 'Plese' typos Simon Glass
2019-10-05  5:03   ` Bin Meng
2019-10-06 10:04     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 031/126] pci: Add more debug detail when resources are exhausted Simon Glass
2019-10-05 13:12   ` Bin Meng
2019-10-06 11:19     ` Bin Meng
2019-10-07  1:40       ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 032/126] pci: Show a message if PCI autoconfig fails Simon Glass
2019-10-05 13:12   ` Bin Meng
2019-10-06 11:19     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 033/126] dm: pci: Add a function to read a PCI BAR Simon Glass
2019-10-05 13:12   ` Bin Meng
2019-10-06 11:19     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 034/126] serial: ns16550: Add a PCI device/function field Simon Glass
2019-10-05 13:12   ` Bin Meng
2019-10-06 11:19     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 035/126] binman: Allow verbose output with all commands Simon Glass
2019-10-05 13:12   ` Bin Meng
2019-10-06 11:19     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 036/126] binman: Add a base implementation of Entry.ReadChildData() Simon Glass
2019-10-05 14:41   ` Bin Meng
2019-10-06 11:20     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 037/126] binman: Handle reading data for end-at-4gb sections Simon Glass
2019-10-05 14:42   ` Bin Meng
2019-10-06 11:20     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 038/126] binman: Take account of skip-at-start with image-header Simon Glass
2019-10-05 14:42   ` Bin Meng
2019-10-06 11:20     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 039/126] log: Add log_nop() to avoid unused-variable warnings Simon Glass
2019-10-05 14:42   ` Bin Meng
2019-10-06 11:20     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 040/126] cros_ec: Add MEC_EMI_BASE and size to the header file Simon Glass
2019-10-05 14:42   ` Bin Meng
2019-10-06 11:20     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 041/126] iod: Enhance to support display of multiple values Simon Glass
2019-10-05 15:18   ` Bin Meng
2019-10-07  1:00     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 042/126] arm: mxs: Correct CONFIG_SPL_NO_CPU_SUPPORT option Simon Glass
2019-10-05 15:18   ` Bin Meng
2019-10-07  1:00     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 043/126] spl: Allow tiny printf() to be controlled in SPL and TPL Simon Glass
2019-10-05 15:18   ` Bin Meng
2019-10-07  1:00     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 044/126] spl: Convert CONFIG_SPL_LIMIT to hex Simon Glass
2019-09-26 12:26   ` Simon Goldschmidt
2019-10-05 15:18   ` Bin Meng
2019-10-07  1:00     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 045/126] spl: Add a size check for TPL Simon Glass
2019-09-26 12:22   ` Simon Goldschmidt
2019-10-11 23:47     ` Simon Glass
2019-09-25 14:56 ` [U-Boot] [PATCH 046/126] spl: Allow distinguishing between two phases in U-Boot Simon Glass
2019-10-05 15:30   ` Bin Meng
2019-10-07  1:55     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 047/126] spl: Allow SPL/TPL to use of-platdata without libfdt Simon Glass
2019-10-05 15:30   ` Bin Meng
2019-10-07  1:55     ` Bin Meng
2019-10-08  5:46       ` Bin Meng
2019-10-13 18:30         ` Simon Glass
2019-09-25 14:56 ` [U-Boot] [PATCH 048/126] x86: Move acpi_s3.h to a common location Simon Glass
2019-10-05 15:33   ` Bin Meng
2019-10-07  1:55     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 049/126] x86: pci: Drop the first parameter in pci_x86_r/w_config() Simon Glass
2019-10-07 12:24   ` Bin Meng
2019-10-07 12:26     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 050/126] x86: timer: Reduce timer code size in TPL on Intel CPUs Simon Glass
2019-10-05 15:36   ` Bin Meng
2019-10-10 17:06     ` Simon Glass
2019-10-11 13:19       ` Bin Meng
2019-10-12  3:37         ` Simon Glass
2019-10-12  5:18           ` Bin Meng
2019-10-12 17:55             ` Simon Glass
2019-10-14  2:00               ` Bin Meng
2019-10-16  3:40                 ` Simon Glass
2019-09-25 14:56 ` [U-Boot] [PATCH 051/126] x86: Use a common definition of MSR_IA32_PERF_CTL Simon Glass
2019-10-06 16:08   ` Bin Meng
2019-10-07 12:52     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 052/126] x86: Add a common function to set CPU thermal target Simon Glass
2019-10-06 16:08   ` Bin Meng
2019-10-07 12:52     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 053/126] x86: Use a common bus clock for Intel CPUs Simon Glass
2019-10-06 16:09   ` Bin Meng
2019-10-07 12:52     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 054/126] x86: Add common functions for TDP and perf control Simon Glass
2019-10-06 16:09   ` Bin Meng
2019-10-06 16:15     ` Bin Meng
2019-10-07 12:52       ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 055/126] x86: Tidy up some duplicate MSR defines Simon Glass
2019-10-06 16:09   ` Bin Meng
2019-10-07 12:53     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 056/126] x86: Add new common CPU functions for turbo/burst mode Simon Glass
2019-10-07  0:32   ` Bin Meng
2019-10-07 12:53     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 057/126] dm: core: Drop fdtdec_get_pci_addr() Simon Glass
2019-10-07  0:32   ` Bin Meng
2019-10-07 12:53     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 058/126] sandbox: pci: Create a new sandbox_pci_read_bar() function Simon Glass
2019-10-07  0:32   ` Bin Meng
2019-10-07 12:53     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 059/126] x86: Allow the PCH and LPC uclasses to work with of-platdata Simon Glass
2019-10-07  0:32   ` Bin Meng
2019-10-07 12:53     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 060/126] x86: timer: Set up the timer in timer_early_get_count() Simon Glass
2019-10-07  0:32   ` Bin Meng
2019-10-12  3:37     ` Simon Glass
2019-09-25 14:56 ` [U-Boot] [PATCH 061/126] x86: Refactor mtrr_commit() to allow for shared code Simon Glass
2019-10-07 13:53   ` Bin Meng
2019-10-07 14:08     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 062/126] x86: Add a function to set variable MTRRs Simon Glass
2019-10-07 13:53   ` Bin Meng
2019-10-07 14:09     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 063/126] x86: pci: Add a function to decode a PCI BDF Simon Glass
2019-10-07 13:53   ` Bin Meng
2019-10-13 15:03     ` Simon Glass
2019-10-14  1:53       ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 064/126] x86: cpu: Don't include the cpu driver in TPL Simon Glass
2019-10-07 13:53   ` Bin Meng
2019-10-07 14:09     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 065/126] x86: Use mtrr_commit() with FSP2 Simon Glass
2019-10-07 13:53   ` Bin Meng
2019-10-07 14:09     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 066/126] x86: spl: Support init of a PUNIT Simon Glass
2019-10-09 14:01   ` Bin Meng
2019-10-14 20:02     ` Simon Glass
2019-09-25 14:56 ` [U-Boot] [PATCH 067/126] x86: Panic when SPL or TPL fail Simon Glass
2019-10-09 14:02   ` Bin Meng
2019-10-11  3:33     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 068/126] x86: tpl: Add a fake PCI bus Simon Glass
2019-10-09 14:20   ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 069/126] sandbox: pci: Remember the device being emulated Simon Glass
2019-10-09 14:27   ` Bin Meng
2019-10-11  8:26     ` Bin Meng
2019-09-25 14:56 ` Simon Glass [this message]
2019-10-10  3:10   ` [U-Boot] [PATCH 070/126] x86: power: Add a PMC uclass Bin Meng
2019-10-12  3:37     ` Simon Glass
2019-09-25 14:56 ` [U-Boot] [PATCH 071/126] x86: sandbox: Add a PMC emulator and test Simon Glass
2019-09-25 14:56 ` [U-Boot] [PATCH 072/126] x86: power: Add a 'pmc' command Simon Glass
2019-09-25 14:56 ` [U-Boot] [PATCH 073/126] trace: Remove the const from write functions Simon Glass
2019-10-10  3:20   ` Bin Meng
2019-10-11  8:27     ` Bin Meng
2019-09-25 14:56 ` [U-Boot] [PATCH 074/126] pci: Add support for p2sb uclass Simon Glass
2019-10-10  4:57   ` Bin Meng
2019-10-12  3:37     ` Simon Glass
2019-10-12 20:57       ` Simon Glass
2019-09-25 14:56 ` [U-Boot] [PATCH 075/126] sandbox: Add PCI driver and test for p2sb Simon Glass
2019-09-25 14:57 ` [U-Boot] [PATCH 076/126] x86: Add a uclass for ITSS Simon Glass
2019-10-10  2:27   ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 077/126] sandbox: Add a test " Simon Glass
2019-09-25 14:57 ` [U-Boot] [PATCH 078/126] x86: Define the SPL image start Simon Glass
2019-10-10  7:09   ` Bin Meng
2019-10-10 17:06     ` Simon Glass
2019-09-25 14:57 ` [U-Boot] [PATCH 079/126] x86: Reduce mrccache record alignment size Simon Glass
2019-10-10  5:09   ` Bin Meng
2019-10-10 17:06     ` Simon Glass
2019-09-25 14:57 ` [U-Boot] [PATCH 080/126] x86: Add a function to find the size of an mrccache record Simon Glass
2019-10-10  5:09   ` Bin Meng
2019-10-11  8:28     ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 081/126] x86: Correct mrccache find_next_mrc_cache() calculation Simon Glass
2019-10-10  6:23   ` Bin Meng
2019-10-12  3:37     ` Simon Glass
2019-10-12  4:44       ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 082/126] x86: Adjust mrccache_get_region() to use livetree Simon Glass
2019-10-10  6:45   ` Bin Meng
2019-10-16  3:40     ` Simon Glass
2019-09-25 14:57 ` [U-Boot] [PATCH 083/126] x86: Add a new global_data member for the cache record Simon Glass
2019-10-10  7:00   ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 084/126] x86: Tidy up error handling in mrccache_save() Simon Glass
2019-10-10  7:07   ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 085/126] x86: Update mrccache to support multiple caches Simon Glass
2019-10-10  7:39   ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 086/126] x86: Add mrccache support for a 'variable' cache Simon Glass
2019-10-10  7:40   ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 087/126] x86: Move fsp_prepare_mrc_cache() to fsp1 directory Simon Glass
2019-10-10  7:43   ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 088/126] x86: Set the DRAM banks to reflect real location Simon Glass
2019-10-10  9:03   ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 089/126] x86: Set up the MTRR for SDRAM Simon Glass
2019-10-10  9:18   ` Bin Meng
2019-10-12  3:37     ` Simon Glass
2019-09-25 14:57 ` [U-Boot] [PATCH 090/126] x86: Update Kconfig options for FSP1 Simon Glass
2019-10-10  9:19   ` Bin Meng
2019-10-11  8:34     ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 091/126] x86: Don't imply TPL_OF_LIBFDT Simon Glass
2019-10-10  9:23   ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 092/126] x86: Allow removal of standard PCH drivers Simon Glass
2019-10-10  9:25   ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 093/126] x86: Allow interrupt to happen once Simon Glass
2019-10-10  9:26   ` Bin Meng
2019-10-11  8:35     ` Bin Meng
2019-10-11  9:06       ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 094/126] x86: Add FSP2 base support Simon Glass
2019-09-25 14:57 ` [U-Boot] [PATCH 095/126] x86: Don't include the BIOS emulator in TPL Simon Glass
2019-10-10  9:36   ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 096/126] x86: Add an option to include a FIT Simon Glass
2019-10-10  9:39   ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 097/126] x86: Add support for newer CAR schemes Simon Glass
2019-10-10  9:50   ` Bin Meng
2019-10-12  3:37     ` Simon Glass
2019-10-12  4:47       ` Bin Meng
2019-10-12 17:53         ` Simon Glass
2019-10-14  1:58           ` Bin Meng
2019-10-14 20:51             ` Simon Glass
2019-09-25 14:57 ` [U-Boot] [PATCH 098/126] x86: Drop RESET_BASE Simon Glass
2019-10-10  9:56   ` Bin Meng
2019-10-11  8:36     ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 099/126] x86: Drop RESET_SEG_SIZE Simon Glass
2019-10-10  9:57   ` Bin Meng
2019-10-11  8:37     ` Bin Meng
2019-09-25 14:57 ` [U-Boot] [PATCH 100/126] x86: Disable microcode section for FSP2 Simon Glass
2019-10-10  9:59   ` Bin Meng
2019-10-02  2:15 ` [U-Boot] [PATCH 000/126] x86: Add initial support for apollolake Simon Glass
2019-10-02 12:34   ` Bin Meng
2019-10-07 14:30     ` Bin Meng
2019-10-10 17:06       ` Simon Glass
2019-10-16  3:43         ` Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190925145750.200592-71-sjg@chromium.org \
    --to=sjg@chromium.org \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.