Each system controller can have a number to identify it. It can then be
accessed using syscon_get_by_driver_data(). Put this in a shared header
file and update the only current user.
Signed-off-by: Simon Glass
Reviewed-by: Bin Meng
---
Changes in v2:
- Enable SYSCON and REGMAP for panther to avoid a build error
arch/x86/cpu/ivybridge/early_me.c | 3 ++-
arch/x86/cpu/ivybridge/sdram.c | 6 +++---
arch/x86/include/asm/cpu.h | 9 +
configs/chromebox_panther_defconfig | 2 ++
4 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/arch/x86/cpu/ivybridge/early_me.c
b/arch/x86/cpu/ivybridge/early_me.c
index 612c910..f0d6899 100644
--- a/arch/x86/cpu/ivybridge/early_me.c
+++ b/arch/x86/cpu/ivybridge/early_me.c
@@ -10,6 +10,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -189,7 +190,7 @@ int intel_early_me_init_done(struct udevice *dev, struct
udevice *me_dev,
}
static const struct udevice_id ivybridge_syscon_ids[] = {
- { .compatible = "intel,me", },
+ { .compatible = "intel,me", .data = X86_SYSCON_ME },
{ }
};
diff --git a/arch/x86/cpu/ivybridge/sdram.c b/arch/x86/cpu/ivybridge/sdram.c
index 3e5be4e..e23c422 100644
--- a/arch/x86/cpu/ivybridge/sdram.c
+++ b/arch/x86/cpu/ivybridge/sdram.c
@@ -18,6 +18,8 @@
#include
#include
#include
+#include
+#include
#include
#include
#include
@@ -739,11 +741,9 @@ int dram_init(void)
return ret;
if (!dev)
return -ENODEV;
- ret = uclass_first_device(UCLASS_SYSCON, _dev);
+ ret = syscon_get_by_driver_data(X86_SYSCON_ME, _dev);
if (ret)
return ret;
- if (!me_dev)
- return -ENODEV;
debug("Boot mode %d\n", gd->arch.pei_boot_mode);
debug("mrc_input %p\n", pei_data.mrc_input);
pei_data.boot_mode = gd->arch.pei_boot_mode;
diff --git a/arch/x86/include/asm/cpu.h b/arch/x86/include/asm/cpu.h
index c70183c..76cdf47 100644
--- a/arch/x86/include/asm/cpu.h
+++ b/arch/x86/include/asm/cpu.h
@@ -45,6 +45,15 @@ enum {
GDT_BASE_HIGH_MASK = 0xf,
};
+/*
+ * System controllers in an x86 system. We mostly need to just find these and
+ * use them on PCI. At some point these might have their own uclass.
+ */
+enum {
+ X86_NONE,
+ X86_SYSCON_ME, /* Intel Management Engine */
+};
+
struct cpuid_result {
uint32_t eax;
uint32_t ebx;
diff --git a/configs/chromebox_panther_defconfig
b/configs/chromebox_panther_defconfig
index 4b78292..bb6c5d4 100644
--- a/configs/chromebox_panther_defconfig
+++ b/configs/chromebox_panther_defconfig
@@ -16,6 +16,8 @@ CONFIG_CMD_BOOTSTAGE=y
CONFIG_CMD_TPM=y
CONFIG_CMD_TPM_TEST=y
CONFIG_OF_CONTROL=y
+CONFIG_REGMAP=y
+CONFIG_SYSCON=y
CONFIG_CMD_CROS_EC=y
CONFIG_CROS_EC=y
CONFIG_CROS_EC_LPC=y
--
2.6.0.rc2.230.g3dd15c0
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot