@@ -138,6 +138,19 @@ struct AspeedMachineState {
138138/* Witherspoon hardware value: 0xF10AD216 (but use romulus definition) */
139139#define WITHERSPOON_BMC_HW_STRAP1 ROMULUS_BMC_HW_STRAP1
140140
141+ /* Quanta-Q71l hardware value */
142+ #define QUANTA_Q71L_BMC_HW_STRAP1 ( \
143+ SCU_AST2400_HW_STRAP_DRAM_SIZE(DRAM_SIZE_128MB) | \
144+ SCU_AST2400_HW_STRAP_DRAM_CONFIG(2/* DDR3 with CL=6, CWL=5 */ ) | \
145+ SCU_AST2400_HW_STRAP_ACPI_DIS | \
146+ SCU_AST2400_HW_STRAP_SET_CLK_SOURCE(AST2400_CLK_24M_IN) | \
147+ SCU_HW_STRAP_VGA_CLASS_CODE | \
148+ SCU_HW_STRAP_SPI_MODE(SCU_HW_STRAP_SPI_PASS_THROUGH) | \
149+ SCU_AST2400_HW_STRAP_SET_CPU_AHB_RATIO(AST2400_CPU_AHB_RATIO_2_1) | \
150+ SCU_HW_STRAP_SPI_WIDTH | \
151+ SCU_HW_STRAP_VGA_SIZE_SET(VGA_8M_DRAM) | \
152+ SCU_AST2400_HW_STRAP_BOOT_MODE(AST2400_SPI_BOOT))
153+
141154/* AST2600 evb hardware value */
142155#define AST2600_EVB_HW_STRAP1 0x000000C0
143156#define AST2600_EVB_HW_STRAP2 0x00000003
@@ -146,6 +159,10 @@ struct AspeedMachineState {
146159#define TACOMA_BMC_HW_STRAP1 0x00000000
147160#define TACOMA_BMC_HW_STRAP2 0x00000040
148161
162+ /* Rainier hardware value: (QEMU prototype) */
163+ #define RAINIER_BMC_HW_STRAP1 0x00000000
164+ #define RAINIER_BMC_HW_STRAP2 0x00000000
165+
149166/*
150167 * The max ram region is for firmwares that scan the address space
151168 * with load/store to guess how much RAM the SoC has.
@@ -327,7 +344,7 @@ static void aspeed_machine_init(MachineState *machine)
327344 object_property_set_int (OBJECT (& bmc -> soc ), "num-cs" , amc -> num_cs ,
328345 & error_abort );
329346 object_property_set_link (OBJECT (& bmc -> soc ), "dram" ,
330- OBJECT (& bmc -> ram_container ), & error_abort );
347+ OBJECT (machine -> ram ), & error_abort );
331348 if (machine -> kernel_filename ) {
332349 /*
333350 * When booting with a -kernel command line there is no u-boot
@@ -433,6 +450,34 @@ static void palmetto_bmc_i2c_init(AspeedMachineState *bmc)
433450 object_property_set_int (OBJECT (dev ), "temperature3" , 110000 , & error_abort );
434451}
435452
453+ static void quanta_q71l_bmc_i2c_init (AspeedMachineState * bmc )
454+ {
455+ AspeedSoCState * soc = & bmc -> soc ;
456+
457+ /*
458+ * The quanta-q71l platform expects tmp75s which are compatible with
459+ * tmp105s.
460+ */
461+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 1 ), "tmp105" , 0x4c );
462+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 1 ), "tmp105" , 0x4e );
463+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 1 ), "tmp105" , 0x4f );
464+
465+ /* TODO: i2c-1: Add baseboard FRU eeprom@54 24c64 */
466+ /* TODO: i2c-1: Add Frontpanel FRU eeprom@57 24c64 */
467+ /* TODO: Add Memory Riser i2c mux and eeproms. */
468+
469+ /* TODO: i2c-2: pca9546@74 */
470+ /* TODO: i2c-2: pca9548@77 */
471+ /* TODO: i2c-3: Add BIOS FRU eeprom@56 24c64 */
472+ /* TODO: i2c-7: Add pca9546@70 */
473+ /* - i2c@0: pmbus@59 */
474+ /* - i2c@1: pmbus@58 */
475+ /* - i2c@2: pmbus@58 */
476+ /* - i2c@3: pmbus@59 */
477+ /* TODO: i2c-7: Add PDB FRU eeprom@52 */
478+ /* TODO: i2c-8: Add BMC FRU eeprom@50 */
479+ }
480+
436481static void ast2500_evb_i2c_init (AspeedMachineState * bmc )
437482{
438483 AspeedSoCState * soc = & bmc -> soc ;
@@ -629,6 +674,58 @@ static void g220a_bmc_i2c_init(AspeedMachineState *bmc)
629674 eeprom_buf );
630675}
631676
677+ static void rainier_bmc_i2c_init (AspeedMachineState * bmc )
678+ {
679+ AspeedSoCState * soc = & bmc -> soc ;
680+
681+ /* The rainier expects a TMP275 but a TMP105 is compatible */
682+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 4 ), TYPE_TMP105 ,
683+ 0x48 );
684+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 4 ), TYPE_TMP105 ,
685+ 0x49 );
686+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 4 ), TYPE_TMP105 ,
687+ 0x4a );
688+
689+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 5 ), TYPE_TMP105 ,
690+ 0x48 );
691+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 5 ), TYPE_TMP105 ,
692+ 0x49 );
693+
694+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 6 ), TYPE_TMP105 ,
695+ 0x48 );
696+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 6 ), TYPE_TMP105 ,
697+ 0x4a );
698+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 6 ), TYPE_TMP105 ,
699+ 0x4b );
700+
701+ /* Bus 7: TODO dps310@76 */
702+ /* Bus 7: TODO max31785@52 */
703+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 7 ), "pca9552" , 0x61 );
704+ /* Bus 7: TODO si7021-a20@20 */
705+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 7 ), TYPE_TMP105 ,
706+ 0x48 );
707+
708+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 8 ), TYPE_TMP105 ,
709+ 0x48 );
710+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 8 ), TYPE_TMP105 ,
711+ 0x4a );
712+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 8 ), "pca9552" , 0x61 );
713+ /* Bus 8: ucd90320@11 */
714+ /* Bus 8: ucd90320@b */
715+ /* Bus 8: ucd90320@c */
716+
717+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 9 ), "tmp423" , 0x4c );
718+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 9 ), "tmp423" , 0x4d );
719+
720+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 10 ), "tmp423" , 0x4c );
721+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 10 ), "tmp423" , 0x4d );
722+
723+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 11 ), TYPE_TMP105 ,
724+ 0x48 );
725+ i2c_slave_create_simple (aspeed_i2c_get_bus (& soc -> i2c , 11 ), TYPE_TMP105 ,
726+ 0x49 );
727+ }
728+
632729static bool aspeed_get_mmio_exec (Object * obj , Error * * errp )
633730{
634731 return ASPEED_MACHINE (obj )-> mmio_exec ;
@@ -728,6 +825,23 @@ static void aspeed_machine_palmetto_class_init(ObjectClass *oc, void *data)
728825 aspeed_soc_num_cpus (amc -> soc_name );
729826};
730827
828+ static void aspeed_machine_quanta_q71l_class_init (ObjectClass * oc , void * data )
829+ {
830+ MachineClass * mc = MACHINE_CLASS (oc );
831+ AspeedMachineClass * amc = ASPEED_MACHINE_CLASS (oc );
832+
833+ mc -> desc = "Quanta-Q71l BMC (ARM926EJ-S)" ;
834+ amc -> soc_name = "ast2400-a1" ;
835+ amc -> hw_strap1 = QUANTA_Q71L_BMC_HW_STRAP1 ;
836+ amc -> fmc_model = "n25q256a" ;
837+ amc -> spi_model = "mx25l25635e" ;
838+ amc -> num_cs = 1 ;
839+ amc -> i2c_init = quanta_q71l_bmc_i2c_init ;
840+ mc -> default_ram_size = 128 * MiB ;
841+ mc -> default_cpus = mc -> min_cpus = mc -> max_cpus =
842+ aspeed_soc_num_cpus (amc -> soc_name );
843+ }
844+
731845static void aspeed_machine_supermicrox11_bmc_class_init (ObjectClass * oc ,
732846 void * data )
733847{
@@ -811,6 +925,9 @@ static void aspeed_machine_swift_class_init(ObjectClass *oc, void *data)
811925 mc -> default_ram_size = 512 * MiB ;
812926 mc -> default_cpus = mc -> min_cpus = mc -> max_cpus =
813927 aspeed_soc_num_cpus (amc -> soc_name );
928+
929+ mc -> deprecation_reason = "redundant system. Please use a similar "
930+ "OpenPOWER BMC, Witherspoon or Romulus." ;
814931};
815932
816933static void aspeed_machine_witherspoon_class_init (ObjectClass * oc , void * data )
@@ -886,6 +1003,25 @@ static void aspeed_machine_g220a_class_init(ObjectClass *oc, void *data)
8861003 aspeed_soc_num_cpus (amc -> soc_name );
8871004};
8881005
1006+ static void aspeed_machine_rainier_class_init (ObjectClass * oc , void * data )
1007+ {
1008+ MachineClass * mc = MACHINE_CLASS (oc );
1009+ AspeedMachineClass * amc = ASPEED_MACHINE_CLASS (oc );
1010+
1011+ mc -> desc = "IBM Rainier BMC (Cortex A7)" ;
1012+ amc -> soc_name = "ast2600-a1" ;
1013+ amc -> hw_strap1 = RAINIER_BMC_HW_STRAP1 ;
1014+ amc -> hw_strap2 = RAINIER_BMC_HW_STRAP2 ;
1015+ amc -> fmc_model = "mx66l1g45g" ;
1016+ amc -> spi_model = "mx66l1g45g" ;
1017+ amc -> num_cs = 2 ;
1018+ amc -> macs_mask = ASPEED_MAC2_ON | ASPEED_MAC3_ON ;
1019+ amc -> i2c_init = rainier_bmc_i2c_init ;
1020+ mc -> default_ram_size = 1 * GiB ;
1021+ mc -> default_cpus = mc -> min_cpus = mc -> max_cpus =
1022+ aspeed_soc_num_cpus (amc -> soc_name );
1023+ };
1024+
8891025static const TypeInfo aspeed_machine_types [] = {
8901026 {
8911027 .name = MACHINE_TYPE_NAME ("palmetto-bmc" ),
@@ -927,6 +1063,14 @@ static const TypeInfo aspeed_machine_types[] = {
9271063 .name = MACHINE_TYPE_NAME ("g220a-bmc" ),
9281064 .parent = TYPE_ASPEED_MACHINE ,
9291065 .class_init = aspeed_machine_g220a_class_init ,
1066+ }, {
1067+ .name = MACHINE_TYPE_NAME ("quanta-q71l-bmc" ),
1068+ .parent = TYPE_ASPEED_MACHINE ,
1069+ .class_init = aspeed_machine_quanta_q71l_class_init ,
1070+ }, {
1071+ .name = MACHINE_TYPE_NAME ("rainier-bmc" ),
1072+ .parent = TYPE_ASPEED_MACHINE ,
1073+ .class_init = aspeed_machine_rainier_class_init ,
9301074 }, {
9311075 .name = TYPE_ASPEED_MACHINE ,
9321076 .parent = TYPE_MACHINE ,
0 commit comments