12a6a4076SMarkus Armbruster #ifndef STRONGARM_H 22a6a4076SMarkus Armbruster #define STRONGARM_H 35bc95aa2SDmitry Eremin-Solenikov 4*8be545baSRichard Henderson #include "system/memory.h" 5fcf5ef2aSThomas Huth #include "target/arm/cpu-qom.h" 6eb2fefbcSAvi Kivity 75bc95aa2SDmitry Eremin-Solenikov #define SA_CS0 0x00000000 85bc95aa2SDmitry Eremin-Solenikov #define SA_CS1 0x08000000 95bc95aa2SDmitry Eremin-Solenikov #define SA_CS2 0x10000000 105bc95aa2SDmitry Eremin-Solenikov #define SA_CS3 0x18000000 115bc95aa2SDmitry Eremin-Solenikov #define SA_PCMCIA_CS0 0x20000000 125bc95aa2SDmitry Eremin-Solenikov #define SA_PCMCIA_CS1 0x30000000 135bc95aa2SDmitry Eremin-Solenikov #define SA_CS4 0x40000000 145bc95aa2SDmitry Eremin-Solenikov #define SA_CS5 0x48000000 155bc95aa2SDmitry Eremin-Solenikov /* system registers here */ 165bc95aa2SDmitry Eremin-Solenikov #define SA_SDCS0 0xc0000000 175bc95aa2SDmitry Eremin-Solenikov #define SA_SDCS1 0xc8000000 185bc95aa2SDmitry Eremin-Solenikov #define SA_SDCS2 0xd0000000 195bc95aa2SDmitry Eremin-Solenikov #define SA_SDCS3 0xd8000000 205bc95aa2SDmitry Eremin-Solenikov 215bc95aa2SDmitry Eremin-Solenikov enum { 225bc95aa2SDmitry Eremin-Solenikov SA_PIC_GPIO0_EDGE = 0, 235bc95aa2SDmitry Eremin-Solenikov SA_PIC_GPIO1_EDGE, 245bc95aa2SDmitry Eremin-Solenikov SA_PIC_GPIO2_EDGE, 255bc95aa2SDmitry Eremin-Solenikov SA_PIC_GPIO3_EDGE, 265bc95aa2SDmitry Eremin-Solenikov SA_PIC_GPIO4_EDGE, 275bc95aa2SDmitry Eremin-Solenikov SA_PIC_GPIO5_EDGE, 285bc95aa2SDmitry Eremin-Solenikov SA_PIC_GPIO6_EDGE, 295bc95aa2SDmitry Eremin-Solenikov SA_PIC_GPIO7_EDGE, 305bc95aa2SDmitry Eremin-Solenikov SA_PIC_GPIO8_EDGE, 315bc95aa2SDmitry Eremin-Solenikov SA_PIC_GPIO9_EDGE, 325bc95aa2SDmitry Eremin-Solenikov SA_PIC_GPIO10_EDGE, 335bc95aa2SDmitry Eremin-Solenikov SA_PIC_GPIOX_EDGE, 345bc95aa2SDmitry Eremin-Solenikov SA_PIC_LCD, 355bc95aa2SDmitry Eremin-Solenikov SA_PIC_UDC, 365bc95aa2SDmitry Eremin-Solenikov SA_PIC_RSVD1, 375bc95aa2SDmitry Eremin-Solenikov SA_PIC_UART1, 385bc95aa2SDmitry Eremin-Solenikov SA_PIC_UART2, 395bc95aa2SDmitry Eremin-Solenikov SA_PIC_UART3, 405bc95aa2SDmitry Eremin-Solenikov SA_PIC_MCP, 415bc95aa2SDmitry Eremin-Solenikov SA_PIC_SSP, 425bc95aa2SDmitry Eremin-Solenikov SA_PIC_DMA_CH0, 435bc95aa2SDmitry Eremin-Solenikov SA_PIC_DMA_CH1, 445bc95aa2SDmitry Eremin-Solenikov SA_PIC_DMA_CH2, 455bc95aa2SDmitry Eremin-Solenikov SA_PIC_DMA_CH3, 465bc95aa2SDmitry Eremin-Solenikov SA_PIC_DMA_CH4, 475bc95aa2SDmitry Eremin-Solenikov SA_PIC_DMA_CH5, 485bc95aa2SDmitry Eremin-Solenikov SA_PIC_OSTC0, 495bc95aa2SDmitry Eremin-Solenikov SA_PIC_OSTC1, 505bc95aa2SDmitry Eremin-Solenikov SA_PIC_OSTC2, 515bc95aa2SDmitry Eremin-Solenikov SA_PIC_OSTC3, 525bc95aa2SDmitry Eremin-Solenikov SA_PIC_RTC_HZ, 535bc95aa2SDmitry Eremin-Solenikov SA_PIC_RTC_ALARM, 545bc95aa2SDmitry Eremin-Solenikov }; 555bc95aa2SDmitry Eremin-Solenikov 565bc95aa2SDmitry Eremin-Solenikov typedef struct { 578bf502e2SAndreas Färber ARMCPU *cpu; 585bc95aa2SDmitry Eremin-Solenikov DeviceState *pic; 595bc95aa2SDmitry Eremin-Solenikov DeviceState *gpio; 605bc95aa2SDmitry Eremin-Solenikov DeviceState *ppc; 615bc95aa2SDmitry Eremin-Solenikov DeviceState *ssp; 625bc95aa2SDmitry Eremin-Solenikov SSIBus *ssp_bus; 635bc95aa2SDmitry Eremin-Solenikov } StrongARMState; 645bc95aa2SDmitry Eremin-Solenikov 653cd892daSPhilippe Mathieu-Daudé StrongARMState *sa1110_init(const char *cpu_type); 665bc95aa2SDmitry Eremin-Solenikov 675bc95aa2SDmitry Eremin-Solenikov #endif 68