master
c 86 lines 3.12 KB
Raw
1 /*
2 * Quanta Q71l
3 *
4 * Copyright 2016 IBM Corp.
5 *
6 * SPDX-License-Identifier: GPL-2.0-or-later
7 */
8
9 #include "qemu/osdep.h"
10 #include "qapi/error.h"
11 #include "hw/arm/machines-qom.h"
12 #include "hw/arm/aspeed.h"
13 #include "hw/arm/aspeed_soc.h"
14
15 /* Quanta-Q71l hardware value */
16 #define QUANTA_Q71L_BMC_HW_STRAP1 ( \
17 SCU_AST2400_HW_STRAP_DRAM_SIZE(DRAM_SIZE_128MB) | \
18 SCU_AST2400_HW_STRAP_DRAM_CONFIG(2/* DDR3 with CL=6, CWL=5 */) | \
19 SCU_AST2400_HW_STRAP_ACPI_DIS | \
20 SCU_AST2400_HW_STRAP_SET_CLK_SOURCE(AST2400_CLK_24M_IN) | \
21 SCU_HW_STRAP_VGA_CLASS_CODE | \
22 SCU_HW_STRAP_SPI_MODE(SCU_HW_STRAP_SPI_PASS_THROUGH) | \
23 SCU_AST2400_HW_STRAP_SET_CPU_AHB_RATIO(AST2400_CPU_AHB_RATIO_2_1) | \
24 SCU_HW_STRAP_SPI_WIDTH | \
25 SCU_HW_STRAP_VGA_SIZE_SET(VGA_8M_DRAM) | \
26 SCU_AST2400_HW_STRAP_BOOT_MODE(AST2400_SPI_BOOT))
27
28 static void quanta_q71l_bmc_i2c_init(AspeedMachineState *bmc)
29 {
30 AspeedSoCState *soc = bmc->soc;
31
32 /*
33 * The quanta-q71l platform expects tmp75s which are compatible with
34 * tmp105s.
35 */
36 i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp105", 0x4c);
37 i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp105", 0x4e);
38 i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 1), "tmp105", 0x4f);
39
40 /* TODO: i2c-1: Add baseboard FRU eeprom@54 24c64 */
41 /* TODO: i2c-1: Add Frontpanel FRU eeprom@57 24c64 */
42 /* TODO: Add Memory Riser i2c mux and eeproms. */
43
44 i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 2), "pca9546", 0x74);
45 i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 2), "pca9548", 0x77);
46
47 /* TODO: i2c-3: Add BIOS FRU eeprom@56 24c64 */
48
49 /* i2c-7 */
50 i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 7), "pca9546", 0x70);
51 /* - i2c@0: pmbus@59 */
52 /* - i2c@1: pmbus@58 */
53 /* - i2c@2: pmbus@58 */
54 /* - i2c@3: pmbus@59 */
55
56 /* TODO: i2c-7: Add PDB FRU eeprom@52 */
57 /* TODO: i2c-8: Add BMC FRU eeprom@50 */
58 }
59
60 static void aspeed_machine_quanta_q71l_class_init(ObjectClass *oc,
61 const void *data)
62 {
63 MachineClass *mc = MACHINE_CLASS(oc);
64 AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);
65
66 mc->desc = "Quanta-Q71l BMC (ARM926EJ-S)";
67 amc->soc_name = "ast2400-a1";
68 amc->hw_strap1 = QUANTA_Q71L_BMC_HW_STRAP1;
69 amc->fmc_model = "n25q256a";
70 amc->spi_model = "mx25l25635e";
71 amc->num_cs = 1;
72 amc->i2c_init = quanta_q71l_bmc_i2c_init;
73 mc->default_ram_size = 128 * MiB;
74 aspeed_machine_class_init_cpus_defaults(mc);
75 }
76
77 static const TypeInfo aspeed_ast2400_quanta_q71l_types[] = {
78 {
79 .name = MACHINE_TYPE_NAME("quanta-q71l-bmc"),
80 .parent = TYPE_ASPEED_MACHINE,
81 .class_init = aspeed_machine_quanta_q71l_class_init,
82 .interfaces = arm_machine_interfaces,
83 }
84 };
85
86 DEFINE_TYPES(aspeed_ast2400_quanta_q71l_types)