1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
From 2ad1d60c39a2a9a08bcd29188362efba4e92e546 Mon Sep 17 00:00:00 2001
From: "Jason M. Bills" <jason.m.bills@linux.intel.com>
Date: Tue, 9 Apr 2019 16:18:07 -0700
Subject: [PATCH] hw/arm/aspeed: Add an intel-ast2500 machine type
Include the HW strap setting and some I2C temperature sensors.
Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
Signed-off-by: James Feist <james.feist@linux.intel.com>
---
hw/arm/aspeed.c | 42 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
index 6f4d707..5a9d58b 100644
--- a/hw/arm/aspeed.c
+++ b/hw/arm/aspeed.c
@@ -64,6 +64,21 @@ struct AspeedBoardState {
SCU_HW_STRAP_MAC0_RGMII) & \
~SCU_HW_STRAP_2ND_BOOT_WDT)
+/* intel ast2500 hardware value: 0xF3CCC286 */
+#define INTEL_AST2500_BMC_HW_STRAP1 (( \
+ AST2500_HW_STRAP1_DEFAULTS | \
+ SCU_AST2500_HW_STRAP_SPI_AUTOFETCH_ENABLE | \
+ SCU_AST2500_HW_STRAP_GPIO_STRAP_ENABLE | \
+ SCU_AST2500_HW_STRAP_UART_DEBUG | \
+ SCU_AST2500_HW_STRAP_ESPI_ENABLE | \
+ SCU_AST2500_HW_STRAP_DDR4_ENABLE | \
+ SCU_HW_STRAP_GPIOE_PT_EN | \
+ SCU_AST2400_HW_STRAP_ACPI_DIS | \
+ SCU_HW_STRAP_CLK_48M_IN | \
+ SCU_HW_STRAP_VGA_CLASS_CODE | \
+ SCU_HW_STRAP_MAC1_RGMII) & \
+ ~SCU_HW_STRAP_2ND_BOOT_WDT)
+
/* Romulus hardware value: 0xF10AD206 */
#define ROMULUS_BMC_HW_STRAP1 ( \
AST2500_HW_STRAP1_DEFAULTS | \
@@ -396,6 +411,24 @@ static void ast2600_evb_i2c_init(AspeedBoardState *bmc)
ast2500_evb_i2c_init(bmc);
}
+static void intel_ast2500_i2c_init(AspeedBoardState *bmc)
+{
+ AspeedSoCState *soc = &bmc->soc;
+ DeviceState *dev;
+
+ dev = i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 6), "tmp421", 0x4d);
+ object_property_set_int(OBJECT(dev), 50000, "temperature0", &error_abort);
+ /* The s2600wf expects a TMP75 but a TMP105 is compatible */
+ dev = i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 6), "tmp105", 0x48);
+ object_property_set_int(OBJECT(dev), 50000, "temperature", &error_abort);
+ dev = i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 6), "tmp105", 0x49);
+ object_property_set_int(OBJECT(dev), 50000, "temperature", &error_abort);
+ dev = i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 6), "tmp105", 0x4a);
+ object_property_set_int(OBJECT(dev), 50000, "temperature", &error_abort);
+ dev = i2c_create_slave(aspeed_i2c_get_bus(DEVICE(&soc->i2c), 6), "tmp105", 0x4b);
+ object_property_set_int(OBJECT(dev), 50000, "temperature", &error_abort);
+}
+
static void romulus_bmc_i2c_init(AspeedBoardState *bmc)
{
AspeedSoCState *soc = &bmc->soc;
@@ -537,6 +570,21 @@ static void aspeed_machine_ast2500_evb_class_init(ObjectClass *oc, void *data)
mc->default_ram_size = 512 * MiB;
};
+static void aspeed_machine_intel_ast2500_class_init(ObjectClass *oc, void *data)
+{
+ MachineClass *mc = MACHINE_CLASS(oc);
+ AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);
+
+ mc->desc = "Intel AST2500 BMC (ARM1176)";
+ amc->soc_name = "ast2500-a1";
+ amc->hw_strap1 = INTEL_AST2500_BMC_HW_STRAP1;
+ amc->fmc_model = "n25q512a";
+ amc->spi_model = "n25q512a";
+ amc->num_cs = 1;
+ amc->i2c_init = intel_ast2500_i2c_init;
+ mc->default_ram_size = 512 * MiB;
+};
+
static void aspeed_machine_romulus_class_init(ObjectClass *oc, void *data)
{
MachineClass *mc = MACHINE_CLASS(oc);
@@ -624,6 +672,10 @@ static const TypeInfo aspeed_machine_types[] = {
.parent = TYPE_ASPEED_MACHINE,
.class_init = aspeed_machine_ast2500_evb_class_init,
}, {
+ .name = MACHINE_TYPE_NAME("intel-ast2500"),
+ .parent = TYPE_ASPEED_MACHINE,
+ .class_init = aspeed_machine_intel_ast2500_class_init,
+ }, {
.name = MACHINE_TYPE_NAME("romulus-bmc"),
.parent = TYPE_ASPEED_MACHINE,
.class_init = aspeed_machine_romulus_class_init,
--
2.17.1
|