Annotation of qemu/hw/pxa.h, revision 1.1

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:  *
        !             7:  * This code is licenced under the GNU GPL v2.
        !             8:  */
        !             9: #ifndef PXA_H
        !            10: # define PXA_H                 "pxa.h"
        !            11: 
        !            12: /* Interrupt numbers */
        !            13: # define PXA2XX_PIC_SSP3       0
        !            14: # define PXA2XX_PIC_USBH2      2
        !            15: # define PXA2XX_PIC_USBH1      3
        !            16: # define PXA2XX_PIC_KEYPAD     4
        !            17: # define PXA2XX_PIC_PWRI2C     6
        !            18: # define PXA25X_PIC_HWUART     7
        !            19: # define PXA27X_PIC_OST_4_11   7
        !            20: # define PXA2XX_PIC_GPIO_0     8
        !            21: # define PXA2XX_PIC_GPIO_1     9
        !            22: # define PXA2XX_PIC_GPIO_X     10
        !            23: # define PXA2XX_PIC_I2S        13
        !            24: # define PXA26X_PIC_ASSP       15
        !            25: # define PXA25X_PIC_NSSP       16
        !            26: # define PXA27X_PIC_SSP2       16
        !            27: # define PXA2XX_PIC_LCD                17
        !            28: # define PXA2XX_PIC_I2C                18
        !            29: # define PXA2XX_PIC_ICP                19
        !            30: # define PXA2XX_PIC_STUART     20
        !            31: # define PXA2XX_PIC_BTUART     21
        !            32: # define PXA2XX_PIC_FFUART     22
        !            33: # define PXA2XX_PIC_MMC                23
        !            34: # define PXA2XX_PIC_SSP                24
        !            35: # define PXA2XX_PIC_DMA                25
        !            36: # define PXA2XX_PIC_OST_0      26
        !            37: # define PXA2XX_PIC_RTC1HZ     30
        !            38: # define PXA2XX_PIC_RTCALARM   31
        !            39: 
        !            40: /* DMA requests */
        !            41: # define PXA2XX_RX_RQ_I2S      2
        !            42: # define PXA2XX_TX_RQ_I2S      3
        !            43: # define PXA2XX_RX_RQ_BTUART   4
        !            44: # define PXA2XX_TX_RQ_BTUART   5
        !            45: # define PXA2XX_RX_RQ_FFUART   6
        !            46: # define PXA2XX_TX_RQ_FFUART   7
        !            47: # define PXA2XX_RX_RQ_SSP1     13
        !            48: # define PXA2XX_TX_RQ_SSP1     14
        !            49: # define PXA2XX_RX_RQ_SSP2     15
        !            50: # define PXA2XX_TX_RQ_SSP2     16
        !            51: # define PXA2XX_RX_RQ_ICP      17
        !            52: # define PXA2XX_TX_RQ_ICP      18
        !            53: # define PXA2XX_RX_RQ_STUART   19
        !            54: # define PXA2XX_TX_RQ_STUART   20
        !            55: # define PXA2XX_RX_RQ_MMCI     21
        !            56: # define PXA2XX_TX_RQ_MMCI     22
        !            57: # define PXA2XX_USB_RQ(x)      ((x) + 24)
        !            58: # define PXA2XX_RX_RQ_SSP3     66
        !            59: # define PXA2XX_TX_RQ_SSP3     67
        !            60: 
        !            61: # define PXA2XX_SDRAM_BASE     0xa0000000
        !            62: # define PXA2XX_INTERNAL_BASE  0x5c000000
        !            63: # define PXA2XX_INTERNAL_SIZE  0x40000
        !            64: 
        !            65: /* pxa2xx_pic.c */
        !            66: qemu_irq *pxa2xx_pic_init(target_phys_addr_t base, CPUState *env);
        !            67: 
        !            68: /* pxa2xx_timer.c */
        !            69: void pxa25x_timer_init(target_phys_addr_t base, qemu_irq *irqs);
        !            70: void pxa27x_timer_init(target_phys_addr_t base, qemu_irq *irqs, qemu_irq irq4);
        !            71: 
        !            72: /* pxa2xx_gpio.c */
        !            73: struct pxa2xx_gpio_info_s;
        !            74: struct pxa2xx_gpio_info_s *pxa2xx_gpio_init(target_phys_addr_t base,
        !            75:                 CPUState *env, qemu_irq *pic, int lines);
        !            76: qemu_irq *pxa2xx_gpio_in_get(struct pxa2xx_gpio_info_s *s);
        !            77: void pxa2xx_gpio_out_set(struct pxa2xx_gpio_info_s *s,
        !            78:                 int line, qemu_irq handler);
        !            79: void pxa2xx_gpio_read_notifier(struct pxa2xx_gpio_info_s *s, qemu_irq handler);
        !            80: 
        !            81: /* pxa2xx_dma.c */
        !            82: struct pxa2xx_dma_state_s;
        !            83: struct pxa2xx_dma_state_s *pxa255_dma_init(target_phys_addr_t base,
        !            84:                 qemu_irq irq);
        !            85: struct pxa2xx_dma_state_s *pxa27x_dma_init(target_phys_addr_t base,
        !            86:                 qemu_irq irq);
        !            87: void pxa2xx_dma_request(struct pxa2xx_dma_state_s *s, int req_num, int on);
        !            88: 
        !            89: /* pxa2xx_lcd.c */
        !            90: struct pxa2xx_lcdc_s;
        !            91: struct pxa2xx_lcdc_s *pxa2xx_lcdc_init(target_phys_addr_t base,
        !            92:                 qemu_irq irq, DisplayState *ds);
        !            93: void pxa2xx_lcd_vsync_notifier(struct pxa2xx_lcdc_s *s, qemu_irq handler);
        !            94: void pxa2xx_lcdc_oritentation(void *opaque, int angle);
        !            95: 
        !            96: /* pxa2xx_mmci.c */
        !            97: struct pxa2xx_mmci_s;
        !            98: struct pxa2xx_mmci_s *pxa2xx_mmci_init(target_phys_addr_t base,
        !            99:                 BlockDriverState *bd, qemu_irq irq, void *dma);
        !           100: void pxa2xx_mmci_handlers(struct pxa2xx_mmci_s *s, qemu_irq readonly,
        !           101:                 qemu_irq coverswitch);
        !           102: 
        !           103: /* pxa2xx_pcmcia.c */
        !           104: struct pxa2xx_pcmcia_s;
        !           105: struct pxa2xx_pcmcia_s *pxa2xx_pcmcia_init(target_phys_addr_t base);
        !           106: int pxa2xx_pcmcia_attach(void *opaque, struct pcmcia_card_s *card);
        !           107: int pxa2xx_pcmcia_dettach(void *opaque);
        !           108: void pxa2xx_pcmcia_set_irq_cb(void *opaque, qemu_irq irq, qemu_irq cd_irq);
        !           109: 
        !           110: /* pxa2xx_keypad.c */
        !           111: struct  keymap {
        !           112:     int column;
        !           113:     int row;
        !           114: };
        !           115: struct pxa2xx_keypad_s;
        !           116: struct pxa2xx_keypad_s *pxa27x_keypad_init(target_phys_addr_t base,
        !           117:                 qemu_irq irq);
        !           118: void pxa27x_register_keypad(struct pxa2xx_keypad_s *kp, struct keymap *map,
        !           119:                 int size);
        !           120: 
        !           121: /* pxa2xx.c */
        !           122: struct pxa2xx_ssp_s;
        !           123: void pxa2xx_ssp_attach(struct pxa2xx_ssp_s *port,
        !           124:                 uint32_t (*readfn)(void *opaque),
        !           125:                 void (*writefn)(void *opaque, uint32_t value), void *opaque);
        !           126: 
        !           127: struct pxa2xx_i2c_s;
        !           128: struct pxa2xx_i2c_s *pxa2xx_i2c_init(target_phys_addr_t base,
        !           129:                 qemu_irq irq, uint32_t page_size);
        !           130: i2c_bus *pxa2xx_i2c_bus(struct pxa2xx_i2c_s *s);
        !           131: 
        !           132: struct pxa2xx_i2s_s;
        !           133: struct pxa2xx_fir_s;
        !           134: 
        !           135: struct pxa2xx_state_s {
        !           136:     CPUState *env;
        !           137:     qemu_irq *pic;
        !           138:     qemu_irq reset;
        !           139:     struct pxa2xx_dma_state_s *dma;
        !           140:     struct pxa2xx_gpio_info_s *gpio;
        !           141:     struct pxa2xx_lcdc_s *lcd;
        !           142:     struct pxa2xx_ssp_s **ssp;
        !           143:     struct pxa2xx_i2c_s *i2c[2];
        !           144:     struct pxa2xx_mmci_s *mmc;
        !           145:     struct pxa2xx_pcmcia_s *pcmcia[2];
        !           146:     struct pxa2xx_i2s_s *i2s;
        !           147:     struct pxa2xx_fir_s *fir;
        !           148:     struct pxa2xx_keypad_s *kp;
        !           149: 
        !           150:     /* Power management */
        !           151:     target_phys_addr_t pm_base;
        !           152:     uint32_t pm_regs[0x40];
        !           153: 
        !           154:     /* Clock management */
        !           155:     target_phys_addr_t cm_base;
        !           156:     uint32_t cm_regs[4];
        !           157:     uint32_t clkcfg;
        !           158: 
        !           159:     /* Memory management */
        !           160:     target_phys_addr_t mm_base;
        !           161:     uint32_t mm_regs[0x1a];
        !           162: 
        !           163:     /* Performance monitoring */
        !           164:     uint32_t pmnc;
        !           165: 
        !           166:     /* Real-Time clock */
        !           167:     target_phys_addr_t rtc_base;
        !           168:     uint32_t rttr;
        !           169:     uint32_t rtsr;
        !           170:     uint32_t rtar;
        !           171:     uint32_t rdar1;
        !           172:     uint32_t rdar2;
        !           173:     uint32_t ryar1;
        !           174:     uint32_t ryar2;
        !           175:     uint32_t swar1;
        !           176:     uint32_t swar2;
        !           177:     uint32_t piar;
        !           178:     uint32_t last_rcnr;
        !           179:     uint32_t last_rdcr;
        !           180:     uint32_t last_rycr;
        !           181:     uint32_t last_swcr;
        !           182:     uint32_t last_rtcpicr;
        !           183:     int64_t last_hz;
        !           184:     int64_t last_sw;
        !           185:     int64_t last_pi;
        !           186:     QEMUTimer *rtc_hz;
        !           187:     QEMUTimer *rtc_rdal1;
        !           188:     QEMUTimer *rtc_rdal2;
        !           189:     QEMUTimer *rtc_swal1;
        !           190:     QEMUTimer *rtc_swal2;
        !           191:     QEMUTimer *rtc_pi;
        !           192: };
        !           193: 
        !           194: struct pxa2xx_i2s_s {
        !           195:     target_phys_addr_t base;
        !           196:     qemu_irq irq;
        !           197:     struct pxa2xx_dma_state_s *dma;
        !           198:     void (*data_req)(void *, int, int);
        !           199: 
        !           200:     uint32_t control[2];
        !           201:     uint32_t status;
        !           202:     uint32_t mask;
        !           203:     uint32_t clk;
        !           204: 
        !           205:     int enable;
        !           206:     int rx_len;
        !           207:     int tx_len;
        !           208:     void (*codec_out)(void *, uint32_t);
        !           209:     uint32_t (*codec_in)(void *);
        !           210:     void *opaque;
        !           211: 
        !           212:     int fifo_len;
        !           213:     uint32_t fifo[16];
        !           214: };
        !           215: 
        !           216: # define PA_FMT                        "0x%08lx"
        !           217: # define REG_FMT               "0x" TARGET_FMT_plx
        !           218: 
        !           219: struct pxa2xx_state_s *pxa270_init(unsigned int sdram_size, DisplayState *ds,
        !           220:                 const char *revision);
        !           221: struct pxa2xx_state_s *pxa255_init(unsigned int sdram_size, DisplayState *ds);
        !           222: 
        !           223: /* usb-ohci.c */
        !           224: void usb_ohci_init_pxa(target_phys_addr_t base, int num_ports, int devfn,
        !           225:                        qemu_irq irq);
        !           226: 
        !           227: #endif /* PXA_H */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.