aboutsummaryrefslogtreecommitdiff
path: root/hw/strongarm.h
blob: d30dd6ac5e44991e0f6fe9f85c9c869da8ad6d21 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#ifndef _STRONGARM_H
#define _STRONGARM_H

#include "memory.h"

#define SA_CS0          0x00000000
#define SA_CS1          0x08000000
#define SA_CS2          0x10000000
#define SA_CS3          0x18000000
#define SA_PCMCIA_CS0   0x20000000
#define SA_PCMCIA_CS1   0x30000000
#define SA_CS4          0x40000000
#define SA_CS5          0x48000000
/* system registers here */
#define SA_SDCS0        0xc0000000
#define SA_SDCS1        0xc8000000
#define SA_SDCS2        0xd0000000
#define SA_SDCS3        0xd8000000

enum {
    SA_PIC_GPIO0_EDGE = 0,
    SA_PIC_GPIO1_EDGE,
    SA_PIC_GPIO2_EDGE,
    SA_PIC_GPIO3_EDGE,
    SA_PIC_GPIO4_EDGE,
    SA_PIC_GPIO5_EDGE,
    SA_PIC_GPIO6_EDGE,
    SA_PIC_GPIO7_EDGE,
    SA_PIC_GPIO8_EDGE,
    SA_PIC_GPIO9_EDGE,
    SA_PIC_GPIO10_EDGE,
    SA_PIC_GPIOX_EDGE,
    SA_PIC_LCD,
    SA_PIC_UDC,
    SA_PIC_RSVD1,
    SA_PIC_UART1,
    SA_PIC_UART2,
    SA_PIC_UART3,
    SA_PIC_MCP,
    SA_PIC_SSP,
    SA_PIC_DMA_CH0,
    SA_PIC_DMA_CH1,
    SA_PIC_DMA_CH2,
    SA_PIC_DMA_CH3,
    SA_PIC_DMA_CH4,
    SA_PIC_DMA_CH5,
    SA_PIC_OSTC0,
    SA_PIC_OSTC1,
    SA_PIC_OSTC2,
    SA_PIC_OSTC3,
    SA_PIC_RTC_HZ,
    SA_PIC_RTC_ALARM,
};

typedef struct {
    ARMCPU *cpu;
    MemoryRegion sdram;
    DeviceState *pic;
    DeviceState *gpio;
    DeviceState *ppc;
    DeviceState *ssp;
    SSIBus *ssp_bus;
} StrongARMState;

StrongARMState *sa1110_init(MemoryRegion *sysmem,
                            unsigned int sdram_size, const char *rev);

#endif