143e3346eSAndrew Jeffery /* 2ff90606fSCédric Le Goater * ASPEED SoC family 343e3346eSAndrew Jeffery * 443e3346eSAndrew Jeffery * Andrew Jeffery <andrew@aj.id.au> 543e3346eSAndrew Jeffery * 643e3346eSAndrew Jeffery * Copyright 2016 IBM Corp. 743e3346eSAndrew Jeffery * 843e3346eSAndrew Jeffery * This code is licensed under the GPL version 2 or later. See 943e3346eSAndrew Jeffery * the COPYING file in the top-level directory. 1043e3346eSAndrew Jeffery */ 1143e3346eSAndrew Jeffery 12ff90606fSCédric Le Goater #ifndef ASPEED_SOC_H 13ff90606fSCédric Le Goater #define ASPEED_SOC_H 1443e3346eSAndrew Jeffery 1543e3346eSAndrew Jeffery #include "hw/intc/aspeed_vic.h" 16334973bbSAndrew Jeffery #include "hw/misc/aspeed_scu.h" 17c2da8a8bSCédric Le Goater #include "hw/misc/aspeed_sdmc.h" 1843e3346eSAndrew Jeffery #include "hw/timer/aspeed_timer.h" 1975fb4577SJoel Stanley #include "hw/timer/aspeed_rtc.h" 2016020011SCédric Le Goater #include "hw/i2c/aspeed_i2c.h" 217c1c69bcSCédric Le Goater #include "hw/ssi/aspeed_smc.h" 22013befe1SCédric Le Goater #include "hw/watchdog/wdt_aspeed.h" 23ea337c65SCédric Le Goater #include "hw/net/ftgmac100.h" 2443e3346eSAndrew Jeffery 25dbcabeebSCédric Le Goater #define ASPEED_SPIS_NUM 2 26f986ee1dSJoel Stanley #define ASPEED_WDTS_NUM 3 27*ece09beeSCédric Le Goater #define ASPEED_CPUS_NUM 2 28dbcabeebSCédric Le Goater 29ff90606fSCédric Le Goater typedef struct AspeedSoCState { 3043e3346eSAndrew Jeffery /*< private >*/ 3143e3346eSAndrew Jeffery DeviceState parent; 3243e3346eSAndrew Jeffery 3343e3346eSAndrew Jeffery /*< public >*/ 34*ece09beeSCédric Le Goater ARMCPU cpu[ASPEED_CPUS_NUM]; 35*ece09beeSCédric Le Goater uint32_t num_cpus; 3674af4eecSCédric Le Goater MemoryRegion sram; 3743e3346eSAndrew Jeffery AspeedVICState vic; 3875fb4577SJoel Stanley AspeedRtcState rtc; 3943e3346eSAndrew Jeffery AspeedTimerCtrlState timerctrl; 4016020011SCédric Le Goater AspeedI2CState i2c; 41334973bbSAndrew Jeffery AspeedSCUState scu; 420e5803dfSCédric Le Goater AspeedSMCState fmc; 43dbcabeebSCédric Le Goater AspeedSMCState spi[ASPEED_SPIS_NUM]; 44c2da8a8bSCédric Le Goater AspeedSDMCState sdmc; 45f986ee1dSJoel Stanley AspeedWDTState wdt[ASPEED_WDTS_NUM]; 46ea337c65SCédric Le Goater FTGMAC100State ftgmac100; 47ff90606fSCédric Le Goater } AspeedSoCState; 4843e3346eSAndrew Jeffery 49ff90606fSCédric Le Goater #define TYPE_ASPEED_SOC "aspeed-soc" 50ff90606fSCédric Le Goater #define ASPEED_SOC(obj) OBJECT_CHECK(AspeedSoCState, (obj), TYPE_ASPEED_SOC) 5143e3346eSAndrew Jeffery 52b033271fSCédric Le Goater typedef struct AspeedSoCInfo { 53b033271fSCédric Le Goater const char *name; 54ba1ba5ccSIgor Mammedov const char *cpu_type; 55b033271fSCédric Le Goater uint32_t silicon_rev; 5674af4eecSCédric Le Goater uint64_t sram_size; 57dbcabeebSCédric Le Goater int spis_num; 586dc52326SCédric Le Goater const char *fmc_typename; 596dc52326SCédric Le Goater const char **spi_typename; 60f986ee1dSJoel Stanley int wdts_num; 61b456b113SCédric Le Goater const int *irqmap; 62d783d1feSCédric Le Goater const hwaddr *memmap; 63*ece09beeSCédric Le Goater uint32_t num_cpus; 64b033271fSCédric Le Goater } AspeedSoCInfo; 65b033271fSCédric Le Goater 66b033271fSCédric Le Goater typedef struct AspeedSoCClass { 67b033271fSCédric Le Goater DeviceClass parent_class; 68b033271fSCédric Le Goater AspeedSoCInfo *info; 69b033271fSCédric Le Goater } AspeedSoCClass; 70b033271fSCédric Le Goater 71b033271fSCédric Le Goater #define ASPEED_SOC_CLASS(klass) \ 72b033271fSCédric Le Goater OBJECT_CLASS_CHECK(AspeedSoCClass, (klass), TYPE_ASPEED_SOC) 73b033271fSCédric Le Goater #define ASPEED_SOC_GET_CLASS(obj) \ 74b033271fSCédric Le Goater OBJECT_GET_CLASS(AspeedSoCClass, (obj), TYPE_ASPEED_SOC) 7543e3346eSAndrew Jeffery 76b456b113SCédric Le Goater enum { 77b456b113SCédric Le Goater ASPEED_IOMEM, 78b456b113SCédric Le Goater ASPEED_UART1, 79b456b113SCédric Le Goater ASPEED_UART2, 80b456b113SCédric Le Goater ASPEED_UART3, 81b456b113SCédric Le Goater ASPEED_UART4, 82b456b113SCédric Le Goater ASPEED_UART5, 83b456b113SCédric Le Goater ASPEED_VUART, 84b456b113SCédric Le Goater ASPEED_FMC, 85b456b113SCédric Le Goater ASPEED_SPI1, 86b456b113SCédric Le Goater ASPEED_SPI2, 87b456b113SCédric Le Goater ASPEED_VIC, 88b456b113SCédric Le Goater ASPEED_SDMC, 89b456b113SCédric Le Goater ASPEED_SCU, 90b456b113SCédric Le Goater ASPEED_ADC, 91b456b113SCédric Le Goater ASPEED_SRAM, 92b456b113SCédric Le Goater ASPEED_GPIO, 93b456b113SCédric Le Goater ASPEED_RTC, 94b456b113SCédric Le Goater ASPEED_TIMER1, 95b456b113SCédric Le Goater ASPEED_TIMER2, 96b456b113SCédric Le Goater ASPEED_TIMER3, 97b456b113SCédric Le Goater ASPEED_TIMER4, 98b456b113SCédric Le Goater ASPEED_TIMER5, 99b456b113SCédric Le Goater ASPEED_TIMER6, 100b456b113SCédric Le Goater ASPEED_TIMER7, 101b456b113SCédric Le Goater ASPEED_TIMER8, 102b456b113SCédric Le Goater ASPEED_WDT, 103b456b113SCédric Le Goater ASPEED_PWM, 104b456b113SCédric Le Goater ASPEED_LPC, 105b456b113SCédric Le Goater ASPEED_IBT, 106b456b113SCédric Le Goater ASPEED_I2C, 107b456b113SCédric Le Goater ASPEED_ETH1, 108b456b113SCédric Le Goater ASPEED_ETH2, 109d783d1feSCédric Le Goater ASPEED_SDRAM, 110b456b113SCédric Le Goater }; 111b456b113SCédric Le Goater 112ff90606fSCédric Le Goater #endif /* ASPEED_SOC_H */ 113