18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/*
28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Intel XScale PXA255/270 processor support.
38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *
48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Copyright (c) 2006 Openedhand Ltd.
58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Written by Andrzej Zaborowski <balrog@zabor.org>
68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project *
78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * This code is licenced under the GNU GPL v2.
88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef PXA_H
108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA_H			"pxa.h"
118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Interrupt numbers */
138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_PIC_SSP3	0
148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_PIC_USBH2	2
158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_PIC_USBH1	3
168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_PIC_KEYPAD	4
178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_PIC_PWRI2C	6
188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA25X_PIC_HWUART	7
198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA27X_PIC_OST_4_11	7
208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_PIC_GPIO_0	8
218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_PIC_GPIO_1	9
228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_PIC_GPIO_X	10
238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_PIC_I2S 	13
248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA26X_PIC_ASSP	15
258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA25X_PIC_NSSP	16
268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA27X_PIC_SSP2	16
278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_PIC_LCD		17
288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_PIC_I2C		18
298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_PIC_ICP		19
308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_PIC_STUART	20
318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_PIC_BTUART	21
328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_PIC_FFUART	22
338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_PIC_MMC		23
348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_PIC_SSP		24
358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_PIC_DMA		25
368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_PIC_OST_0	26
378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_PIC_RTC1HZ	30
388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_PIC_RTCALARM	31
398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* DMA requests */
418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_RX_RQ_I2S	2
428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_TX_RQ_I2S	3
438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_RX_RQ_BTUART	4
448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_TX_RQ_BTUART	5
458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_RX_RQ_FFUART	6
468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_TX_RQ_FFUART	7
478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_RX_RQ_SSP1	13
488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_TX_RQ_SSP1	14
498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_RX_RQ_SSP2	15
508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_TX_RQ_SSP2	16
518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_RX_RQ_ICP	17
528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_TX_RQ_ICP	18
538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_RX_RQ_STUART	19
548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_TX_RQ_STUART	20
558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_RX_RQ_MMCI	21
568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_TX_RQ_MMCI	22
578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_USB_RQ(x)	((x) + 24)
588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_RX_RQ_SSP3	66
598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_TX_RQ_SSP3	67
608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_SDRAM_BASE	0xa0000000
628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_INTERNAL_BASE	0x5c000000
638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PXA2XX_INTERNAL_SIZE	0x40000
648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* pxa2xx_pic.c */
668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectqemu_irq *pxa2xx_pic_init(target_phys_addr_t base, CPUState *env);
678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* pxa2xx_timer.c */
698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid pxa25x_timer_init(target_phys_addr_t base, qemu_irq *irqs);
708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid pxa27x_timer_init(target_phys_addr_t base, qemu_irq *irqs, qemu_irq irq4);
718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* pxa2xx_gpio.c */
735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef struct PXA2xxGPIOInfo PXA2xxGPIOInfo;
745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' TurnerPXA2xxGPIOInfo *pxa2xx_gpio_init(target_phys_addr_t base,
758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                CPUState *env, qemu_irq *pic, int lines);
765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerqemu_irq *pxa2xx_gpio_in_get(PXA2xxGPIOInfo *s);
775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid pxa2xx_gpio_out_set(PXA2xxGPIOInfo *s,
788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                int line, qemu_irq handler);
795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid pxa2xx_gpio_read_notifier(PXA2xxGPIOInfo *s, qemu_irq handler);
808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* pxa2xx_dma.c */
825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef struct PXA2xxDMAState PXA2xxDMAState;
835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' TurnerPXA2xxDMAState *pxa255_dma_init(target_phys_addr_t base,
848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                qemu_irq irq);
855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' TurnerPXA2xxDMAState *pxa27x_dma_init(target_phys_addr_t base,
868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                qemu_irq irq);
875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid pxa2xx_dma_request(PXA2xxDMAState *s, int req_num, int on);
888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* pxa2xx_lcd.c */
905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef struct PXA2xxLCDState PXA2xxLCDState;
915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' TurnerPXA2xxLCDState *pxa2xx_lcdc_init(target_phys_addr_t base,
925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner                qemu_irq irq);
935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid pxa2xx_lcd_vsync_notifier(PXA2xxLCDState *s, qemu_irq handler);
948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid pxa2xx_lcdc_oritentation(void *opaque, int angle);
958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* pxa2xx_mmci.c */
975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef struct PXA2xxMMCIState PXA2xxMMCIState;
985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' TurnerPXA2xxMMCIState *pxa2xx_mmci_init(target_phys_addr_t base,
998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                BlockDriverState *bd, qemu_irq irq, void *dma);
1005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid pxa2xx_mmci_handlers(PXA2xxMMCIState *s, qemu_irq readonly,
1018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                qemu_irq coverswitch);
1028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* pxa2xx_pcmcia.c */
1045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef struct PXA2xxPCMCIAState PXA2xxPCMCIAState;
1055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' TurnerPXA2xxPCMCIAState *pxa2xx_pcmcia_init(target_phys_addr_t base);
1065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint pxa2xx_pcmcia_attach(void *opaque, PCMCIACardState *card);
1078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectint pxa2xx_pcmcia_dettach(void *opaque);
1088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid pxa2xx_pcmcia_set_irq_cb(void *opaque, qemu_irq irq, qemu_irq cd_irq);
1098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* pxa2xx_keypad.c */
1118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstruct  keymap {
1128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int column;
1138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int row;
1148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project};
1155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef struct PXA2xxKeyPadState PXA2xxKeyPadState;
1165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' TurnerPXA2xxKeyPadState *pxa27x_keypad_init(target_phys_addr_t base,
1178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                qemu_irq irq);
1185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid pxa27x_register_keypad(PXA2xxKeyPadState *kp, struct keymap *map,
1198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                int size);
1208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* pxa2xx.c */
1225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef struct PXA2xxI2CState PXA2xxI2CState;
1235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' TurnerPXA2xxI2CState *pxa2xx_i2c_init(target_phys_addr_t base,
1248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                qemu_irq irq, uint32_t page_size);
1255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turneri2c_bus *pxa2xx_i2c_bus(PXA2xxI2CState *s);
1268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef struct PXA2xxI2SState PXA2xxI2SState;
1285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef struct PXA2xxFIrState PXA2xxFIrState;
1298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef struct {
1318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    CPUState *env;
1328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    qemu_irq *pic;
1338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    qemu_irq reset;
1345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    PXA2xxDMAState *dma;
1355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    PXA2xxGPIOInfo *gpio;
1365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    PXA2xxLCDState *lcd;
1375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    SSIBus **ssp;
1385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    PXA2xxI2CState *i2c[2];
1395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    PXA2xxMMCIState *mmc;
1405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    PXA2xxPCMCIAState *pcmcia[2];
1415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    PXA2xxI2SState *i2s;
1425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    PXA2xxFIrState *fir;
1435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    PXA2xxKeyPadState *kp;
1448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    /* Power management */
1468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    target_phys_addr_t pm_base;
1478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t pm_regs[0x40];
1488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    /* Clock management */
1508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    target_phys_addr_t cm_base;
1518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t cm_regs[4];
1528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t clkcfg;
1538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    /* Memory management */
1558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    target_phys_addr_t mm_base;
1568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t mm_regs[0x1a];
1578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    /* Performance monitoring */
1598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t pmnc;
1608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    /* Real-Time clock */
1628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    target_phys_addr_t rtc_base;
1638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t rttr;
1648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t rtsr;
1658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t rtar;
1668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t rdar1;
1678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t rdar2;
1688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t ryar1;
1698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t ryar2;
1708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t swar1;
1718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t swar2;
1728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t piar;
1738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t last_rcnr;
1748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t last_rdcr;
1758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t last_rycr;
1768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t last_swcr;
1778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t last_rtcpicr;
1788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int64_t last_hz;
1798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int64_t last_sw;
1808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int64_t last_pi;
1818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    QEMUTimer *rtc_hz;
1828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    QEMUTimer *rtc_rdal1;
1838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    QEMUTimer *rtc_rdal2;
1848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    QEMUTimer *rtc_swal1;
1858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    QEMUTimer *rtc_swal2;
1868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    QEMUTimer *rtc_pi;
1875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner} PXA2xxState;
1888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstruct PXA2xxI2SState {
1908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    qemu_irq irq;
1915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    PXA2xxDMAState *dma;
1928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    void (*data_req)(void *, int, int);
1938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t control[2];
1958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t status;
1968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t mask;
1978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t clk;
1988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int enable;
2008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int rx_len;
2018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int tx_len;
2028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    void (*codec_out)(void *, uint32_t);
2038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t (*codec_in)(void *);
2048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    void *opaque;
2058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int fifo_len;
2078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    uint32_t fifo[16];
2088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project};
2098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define PA_FMT			"0x%08lx"
2118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project# define REG_FMT		"0x" TARGET_FMT_plx
2128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' TurnerPXA2xxState *pxa270_init(unsigned int sdram_size, const char *revision);
2145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' TurnerPXA2xxState *pxa255_init(unsigned int sdram_size);
2158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* usb-ohci.c */
2178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid usb_ohci_init_pxa(target_phys_addr_t base, int num_ports, int devfn,
2188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project                       qemu_irq irq);
2198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
2208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif	/* PXA_H */
221