11c8a2388SAndrew Jeffery /* 21c8a2388SAndrew Jeffery * ASPEED System Control Unit 31c8a2388SAndrew Jeffery * 41c8a2388SAndrew Jeffery * Andrew Jeffery <andrew@aj.id.au> 51c8a2388SAndrew Jeffery * 61c8a2388SAndrew Jeffery * Copyright 2016 IBM Corp. 71c8a2388SAndrew Jeffery * 81c8a2388SAndrew Jeffery * This code is licensed under the GPL version 2 or later. See 91c8a2388SAndrew Jeffery * the COPYING file in the top-level directory. 101c8a2388SAndrew Jeffery */ 111c8a2388SAndrew Jeffery #ifndef ASPEED_SCU_H 121c8a2388SAndrew Jeffery #define ASPEED_SCU_H 131c8a2388SAndrew Jeffery 141c8a2388SAndrew Jeffery #include "hw/sysbus.h" 151c8a2388SAndrew Jeffery 161c8a2388SAndrew Jeffery #define TYPE_ASPEED_SCU "aspeed.scu" 171c8a2388SAndrew Jeffery #define ASPEED_SCU(obj) OBJECT_CHECK(AspeedSCUState, (obj), TYPE_ASPEED_SCU) 181c8a2388SAndrew Jeffery 191c8a2388SAndrew Jeffery #define ASPEED_SCU_NR_REGS (0x1A8 >> 2) 201c8a2388SAndrew Jeffery 211c8a2388SAndrew Jeffery typedef struct AspeedSCUState { 221c8a2388SAndrew Jeffery /*< private >*/ 231c8a2388SAndrew Jeffery SysBusDevice parent_obj; 241c8a2388SAndrew Jeffery 251c8a2388SAndrew Jeffery /*< public >*/ 261c8a2388SAndrew Jeffery MemoryRegion iomem; 271c8a2388SAndrew Jeffery 281c8a2388SAndrew Jeffery uint32_t regs[ASPEED_SCU_NR_REGS]; 291c8a2388SAndrew Jeffery uint32_t silicon_rev; 301c8a2388SAndrew Jeffery uint32_t hw_strap1; 311c8a2388SAndrew Jeffery uint32_t hw_strap2; 321c8a2388SAndrew Jeffery } AspeedSCUState; 331c8a2388SAndrew Jeffery 34*79a9f323SCédric Le Goater #define AST2400_A0_SILICON_REV 0x02000303U 35*79a9f323SCédric Le Goater #define AST2500_A0_SILICON_REV 0x04000303U 36*79a9f323SCédric Le Goater 37*79a9f323SCédric Le Goater extern bool is_supported_silicon_rev(uint32_t silicon_rev); 38*79a9f323SCédric Le Goater 391c8a2388SAndrew Jeffery #endif /* ASPEED_SCU_H */ 40