xref: /qemu/include/hw/misc/aspeed_scu.h (revision 79a9f323a80b802ca98895d1c2d4aaf23cff815a)
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