|
|
1.1 root 1: /*
2: * Intel XScale PXA255/270 processor support.
3: *
4: * Copyright (c) 2006 Openedhand Ltd.
5: * Written by Andrzej Zaborowski <[email protected]>
6: *
1.1.1.6 root 7: * This code is licensed under the GNU GPL v2.
1.1 root 8: */
9: #ifndef PXA_H
10: # define PXA_H "pxa.h"
11:
1.1.1.7 ! root 12: #include "memory.h"
! 13:
1.1 root 14: /* Interrupt numbers */
15: # define PXA2XX_PIC_SSP3 0
16: # define PXA2XX_PIC_USBH2 2
17: # define PXA2XX_PIC_USBH1 3
18: # define PXA2XX_PIC_KEYPAD 4
19: # define PXA2XX_PIC_PWRI2C 6
20: # define PXA25X_PIC_HWUART 7
21: # define PXA27X_PIC_OST_4_11 7
22: # define PXA2XX_PIC_GPIO_0 8
23: # define PXA2XX_PIC_GPIO_1 9
24: # define PXA2XX_PIC_GPIO_X 10
25: # define PXA2XX_PIC_I2S 13
26: # define PXA26X_PIC_ASSP 15
27: # define PXA25X_PIC_NSSP 16
28: # define PXA27X_PIC_SSP2 16
29: # define PXA2XX_PIC_LCD 17
30: # define PXA2XX_PIC_I2C 18
31: # define PXA2XX_PIC_ICP 19
32: # define PXA2XX_PIC_STUART 20
33: # define PXA2XX_PIC_BTUART 21
34: # define PXA2XX_PIC_FFUART 22
35: # define PXA2XX_PIC_MMC 23
36: # define PXA2XX_PIC_SSP 24
37: # define PXA2XX_PIC_DMA 25
38: # define PXA2XX_PIC_OST_0 26
39: # define PXA2XX_PIC_RTC1HZ 30
40: # define PXA2XX_PIC_RTCALARM 31
41:
42: /* DMA requests */
43: # define PXA2XX_RX_RQ_I2S 2
44: # define PXA2XX_TX_RQ_I2S 3
45: # define PXA2XX_RX_RQ_BTUART 4
46: # define PXA2XX_TX_RQ_BTUART 5
47: # define PXA2XX_RX_RQ_FFUART 6
48: # define PXA2XX_TX_RQ_FFUART 7
49: # define PXA2XX_RX_RQ_SSP1 13
50: # define PXA2XX_TX_RQ_SSP1 14
51: # define PXA2XX_RX_RQ_SSP2 15
52: # define PXA2XX_TX_RQ_SSP2 16
53: # define PXA2XX_RX_RQ_ICP 17
54: # define PXA2XX_TX_RQ_ICP 18
55: # define PXA2XX_RX_RQ_STUART 19
56: # define PXA2XX_TX_RQ_STUART 20
57: # define PXA2XX_RX_RQ_MMCI 21
58: # define PXA2XX_TX_RQ_MMCI 22
59: # define PXA2XX_USB_RQ(x) ((x) + 24)
60: # define PXA2XX_RX_RQ_SSP3 66
61: # define PXA2XX_TX_RQ_SSP3 67
62:
63: # define PXA2XX_SDRAM_BASE 0xa0000000
64: # define PXA2XX_INTERNAL_BASE 0x5c000000
65: # define PXA2XX_INTERNAL_SIZE 0x40000
66:
67: /* pxa2xx_pic.c */
1.1.1.6 root 68: DeviceState *pxa2xx_pic_init(target_phys_addr_t base, CPUState *env);
1.1 root 69:
70: /* pxa2xx_gpio.c */
1.1.1.5 root 71: DeviceState *pxa2xx_gpio_init(target_phys_addr_t base,
1.1.1.6 root 72: CPUState *env, DeviceState *pic, int lines);
1.1.1.5 root 73: void pxa2xx_gpio_read_notifier(DeviceState *dev, qemu_irq handler);
1.1 root 74:
75: /* pxa2xx_dma.c */
1.1.1.6 root 76: DeviceState *pxa255_dma_init(target_phys_addr_t base, qemu_irq irq);
77: DeviceState *pxa27x_dma_init(target_phys_addr_t base, qemu_irq irq);
1.1 root 78:
79: /* pxa2xx_lcd.c */
1.1.1.3 root 80: typedef struct PXA2xxLCDState PXA2xxLCDState;
81: PXA2xxLCDState *pxa2xx_lcdc_init(target_phys_addr_t base,
1.1.1.2 root 82: qemu_irq irq);
1.1.1.3 root 83: void pxa2xx_lcd_vsync_notifier(PXA2xxLCDState *s, qemu_irq handler);
1.1 root 84: void pxa2xx_lcdc_oritentation(void *opaque, int angle);
85:
86: /* pxa2xx_mmci.c */
1.1.1.3 root 87: typedef struct PXA2xxMMCIState PXA2xxMMCIState;
88: PXA2xxMMCIState *pxa2xx_mmci_init(target_phys_addr_t base,
1.1.1.6 root 89: BlockDriverState *bd, qemu_irq irq,
90: qemu_irq rx_dma, qemu_irq tx_dma);
1.1.1.3 root 91: void pxa2xx_mmci_handlers(PXA2xxMMCIState *s, qemu_irq readonly,
1.1 root 92: qemu_irq coverswitch);
93:
94: /* pxa2xx_pcmcia.c */
1.1.1.3 root 95: typedef struct PXA2xxPCMCIAState PXA2xxPCMCIAState;
96: PXA2xxPCMCIAState *pxa2xx_pcmcia_init(target_phys_addr_t base);
97: int pxa2xx_pcmcia_attach(void *opaque, PCMCIACardState *card);
1.1 root 98: int pxa2xx_pcmcia_dettach(void *opaque);
99: void pxa2xx_pcmcia_set_irq_cb(void *opaque, qemu_irq irq, qemu_irq cd_irq);
100:
101: /* pxa2xx_keypad.c */
102: struct keymap {
103: int column;
104: int row;
105: };
1.1.1.3 root 106: typedef struct PXA2xxKeyPadState PXA2xxKeyPadState;
107: PXA2xxKeyPadState *pxa27x_keypad_init(target_phys_addr_t base,
1.1 root 108: qemu_irq irq);
1.1.1.3 root 109: void pxa27x_register_keypad(PXA2xxKeyPadState *kp, struct keymap *map,
1.1 root 110: int size);
111:
112: /* pxa2xx.c */
1.1.1.3 root 113: typedef struct PXA2xxI2CState PXA2xxI2CState;
114: PXA2xxI2CState *pxa2xx_i2c_init(target_phys_addr_t base,
1.1 root 115: qemu_irq irq, uint32_t page_size);
1.1.1.3 root 116: i2c_bus *pxa2xx_i2c_bus(PXA2xxI2CState *s);
1.1 root 117:
1.1.1.3 root 118: typedef struct PXA2xxI2SState PXA2xxI2SState;
119: typedef struct PXA2xxFIrState PXA2xxFIrState;
1.1 root 120:
1.1.1.3 root 121: typedef struct {
1.1 root 122: CPUState *env;
1.1.1.6 root 123: DeviceState *pic;
1.1 root 124: qemu_irq reset;
1.1.1.7 ! root 125: MemoryRegion sdram;
! 126: MemoryRegion internal;
! 127: MemoryRegion cm_iomem;
! 128: MemoryRegion mm_iomem;
! 129: MemoryRegion pm_iomem;
1.1.1.6 root 130: DeviceState *dma;
1.1.1.5 root 131: DeviceState *gpio;
1.1.1.3 root 132: PXA2xxLCDState *lcd;
133: SSIBus **ssp;
134: PXA2xxI2CState *i2c[2];
135: PXA2xxMMCIState *mmc;
136: PXA2xxPCMCIAState *pcmcia[2];
137: PXA2xxI2SState *i2s;
138: PXA2xxFIrState *fir;
139: PXA2xxKeyPadState *kp;
1.1 root 140:
141: /* Power management */
142: target_phys_addr_t pm_base;
143: uint32_t pm_regs[0x40];
144:
145: /* Clock management */
146: target_phys_addr_t cm_base;
147: uint32_t cm_regs[4];
148: uint32_t clkcfg;
149:
150: /* Memory management */
151: target_phys_addr_t mm_base;
152: uint32_t mm_regs[0x1a];
153:
154: /* Performance monitoring */
155: uint32_t pmnc;
1.1.1.3 root 156: } PXA2xxState;
1.1 root 157:
1.1.1.3 root 158: struct PXA2xxI2SState {
1.1.1.7 ! root 159: MemoryRegion iomem;
1.1 root 160: qemu_irq irq;
1.1.1.6 root 161: qemu_irq rx_dma;
162: qemu_irq tx_dma;
1.1 root 163: void (*data_req)(void *, int, int);
164:
165: uint32_t control[2];
166: uint32_t status;
167: uint32_t mask;
168: uint32_t clk;
169:
170: int enable;
171: int rx_len;
172: int tx_len;
173: void (*codec_out)(void *, uint32_t);
174: uint32_t (*codec_in)(void *);
175: void *opaque;
176:
177: int fifo_len;
178: uint32_t fifo[16];
179: };
180:
181: # define PA_FMT "0x%08lx"
182: # define REG_FMT "0x" TARGET_FMT_plx
183:
1.1.1.7 ! root 184: PXA2xxState *pxa270_init(MemoryRegion *address_space, unsigned int sdram_size,
! 185: const char *revision);
! 186: PXA2xxState *pxa255_init(MemoryRegion *address_space, unsigned int sdram_size);
1.1 root 187:
188: #endif /* PXA_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.