# define OMAP3_Q3_BASE 0xc0000000
# define OMAP_MPUI_BASE 0xe1000000
-# define OMAP730_SRAM_SIZE 0x00032000
-# define OMAP15XX_SRAM_SIZE 0x00030000
-# define OMAP16XX_SRAM_SIZE 0x00004000
-# define OMAP1611_SRAM_SIZE 0x0003e800
-# define OMAP242X_SRAM_SIZE 0x000a0000
-# define OMAP243X_SRAM_SIZE 0x00010000
-# define OMAP3530_SRAM_SIZE 0x00010000
-# define OMAP_CS0_SIZE 0x04000000
-# define OMAP_CS1_SIZE 0x04000000
-# define OMAP_CS2_SIZE 0x04000000
-# define OMAP_CS3_SIZE 0x04000000
+# define OMAP730_SRAM_SIZE 0x00032000
+# define OMAP15XX_SRAM_SIZE 0x00030000
+# define OMAP16XX_SRAM_SIZE 0x00004000
+# define OMAP1611_SRAM_SIZE 0x0003e800
+# define OMAP242X_SRAM_SIZE 0x000a0000
+# define OMAP243X_SRAM_SIZE 0x00010000
+# define OMAP3XXX_SRAM_SIZE 0x00010000
+# define OMAP3XXX_BOOTROM_SIZE 0x00008000
+# define OMAP_CS0_SIZE 0x04000000
+# define OMAP_CS1_SIZE 0x04000000
+# define OMAP_CS2_SIZE 0x04000000
+# define OMAP_CS3_SIZE 0x04000000
/* omap_clk.c */
struct omap_mpu_state_s;
struct omap_l4_s *omap_l4_init(target_phys_addr_t base, int ta_num);
struct omap_target_agent_s;
-struct omap_target_agent_s *omap_l4ta_get(struct omap_l4_s *bus, int cs);
target_phys_addr_t omap_l4_attach(struct omap_target_agent_s *ta, int region,
int iotype);
+target_phys_addr_t omap_l4_base(struct omap_target_agent_s *ta, int region);
+uint32_t omap_l4_size(struct omap_target_agent_s *ta, int region);
# define l4_register_io_memory cpu_register_io_memory
struct omap_intr_handler_s;
qemu_irq mpu_int, qemu_irq dsp_int, qemu_irq iva_int,
struct omap_mpu_state_s *mpu);
-struct omap3_prm_s;
-struct omap3_prm_s *omap3_prm_init(struct omap_target_agent_s *ta,
- qemu_irq mpu_int, qemu_irq iva_int,
- struct omap_mpu_state_s *mpu);
-
-struct omap3_cm_s;
-struct omap3_cm_s *omap3_cm_init(struct omap_target_agent_s *ta,
- qemu_irq mpu_int, qemu_irq dsp_int, qemu_irq iva_int,
- struct omap_mpu_state_s *mpu);
-
struct omap_sysctl_s;
struct omap_sysctl_s *omap_sysctl_init(struct omap_target_agent_s *ta,
omap_clk iclk, struct omap_mpu_state_s *mpu);
void omap_sdrc_write_mcfg(struct omap_sdrc_s *s, uint32_t value, uint32_t cs);
struct omap_gpmc_s;
+struct nand_flash_s;
struct omap_gpmc_s *omap_gpmc_init(struct omap_mpu_state_s *mpu,
target_phys_addr_t base, qemu_irq irq);
void omap_gpmc_attach(struct omap_gpmc_s *s, int cs, int iomemtype,
void (*base_upd)(void *opaque, target_phys_addr_t new),
- void (*unmap)(void *opaque), void *opaque,
- CPUReadMemoryFunc **nand_readfn,
- CPUWriteMemoryFunc **nand_writefn);
+ void (*unmap)(void *opaque), void *opaque, int devicetype);
/*
* Common IRQ numbers for level 1 interrupt handler
# define OMAP_INT_34XX_GPTIMER12 95
/*
- * OMAP-35XX common IRQ numbers
+ * OMAP-3XXX common IRQ numbers
*/
-# define OMAP_INT_35XX_SYS_NIRQ 7
-# define OMAP_INT_35XX_PRCM_MPU_IRQ 11
-# define OMAP_INT_35XX_SDMA_IRQ0 12
-# define OMAP_INT_35XX_SDMA_IRQ1 13
-# define OMAP_INT_35XX_SDMA_IRQ2 14
-# define OMAP_INT_35XX_SDMA_IRQ3 15
-# define OMAP_INT_35XX_MCBSP1_IRQ 16
-# define OMAP_INT_35XX_MCBSP2_IRQ 17
-# define OMAP_INT_35XX_GPMC_IRQ 20
-# define OMAP_INT_35XX_MCBSP3_IRQ 22
-# define OMAP_INT_35XX_MCBSP4_IRQ 23
-# define OMAP_INT_35XX_CAM_IRQ 24
-# define OMAP_INT_35XX_DSS_IRQ 25
-# define OMAP_INT_35XX_MAIL_U0_MPU 26
-# define OMAP_INT_35XX_MCBSP5_IRQ 27
-# define OMAP_INT_35XX_DSP_MMU 28
-# define OMAP_INT_35XX_GPIO_BANK1 29
-# define OMAP_INT_35XX_GPIO_BANK2 30
-# define OMAP_INT_35XX_GPIO_BANK3 31
-# define OMAP_INT_35XX_GPIO_BANK4 32
-# define OMAP_INT_35XX_GPIO_BANK5 33
-# define OMAP_INT_35XX_GPIO_BANK6 34
-# define OMAP_INT_35XX_WDT3 36
-# define OMAP_INT_35XX_GPTIMER1 37
-# define OMAP_INT_35XX_GPTIMER2 38
-# define OMAP_INT_35XX_GPTIMER3 39
-# define OMAP_INT_35XX_GPTIMER4 40
-# define OMAP_INT_35XX_GPTIMER5 41
-# define OMAP_INT_35XX_GPTIMER6 42
-# define OMAP_INT_35XX_GPTIMER7 43
-# define OMAP_INT_35XX_GPTIMER8 44
-# define OMAP_INT_35XX_GPTIMER9 45
-# define OMAP_INT_35XX_GPTIMER10 46
-# define OMAP_INT_35XX_GPTIMER11 47
-# define OMAP_INT_35XX_MG_IRQ 53
-# define OMAP_INT_35XX_MCBSP4_IRQ_TX 54
-# define OMAP_INT_35XX_MCBSP4_IRQ_RX 55
-# define OMAP_INT_35XX_I2C1_IRQ 56
-# define OMAP_INT_35XX_I2C2_IRQ 57
-# define OMAP_INT_35XX_MCBSP1_IRQ_TX 59
-# define OMAP_INT_35XX_MCBSP1_IRQ_RX 60
-# define OMAP_INT_35XX_I2C3_IRQ 61
-# define OMAP_INT_35XX_MCBSP2_IRQ_TX 62
-# define OMAP_INT_35XX_MCBSP2_IRQ_RX 63
-# define OMAP_INT_35XX_MCSPI1_IRQ 65
-# define OMAP_INT_35XX_MCSPI2_IRQ 66
-# define OMAP_INT_35XX_UART1_IRQ 72
-# define OMAP_INT_35XX_UART2_IRQ 73
-# define OMAP_INT_35XX_UART3_IRQ 74
-# define OMAP_INT_35XX_MCBSP5_IRQ_TX 81
-# define OMAP_INT_35XX_MCBSP5_IRQ_RX 82
-# define OMAP_INT_35XX_MMC1_IRQ 83
-# define OMAP_INT_35XX_MS_IRQ 84
-# define OMAP_INT_35XX_MMC2_IRQ 86
-# define OMAP_INT_35XX_MCBSP3_IRQ_TX 89
-# define OMAP_INT_35XX_MCBSP3_IRQ_RX 90
-# define OMAP_INT_35XX_MCSPI3_IRQ 91
-# define OMAP_INT_35XX_HS_USB_MC 92
-# define OMAP_INT_35XX_HS_USB_DMA 93
-# define OMAP_INT_35XX_MMC3_IRQ 94
-# define OMAP_INT_35XX_GPTIMER12 95
+#define OMAP_INT_3XXX_EMUINT 0 /* MPU emulation */
+#define OMAP_INT_3XXX_COMMTX 1 /* MPU emulation */
+#define OMAP_INT_3XXX_COMMRX 2 /* MPU emulation */
+#define OMAP_INT_3XXX_BENCH 3 /* MPU emulation */
+#define OMAP_INT_3XXX_MCBSP2_ST_IRQ 4 /* Sidetone MCBSP2 overflow */
+#define OMAP_INT_3XXX_MCBSP3_ST_IRQ 5 /* Sidetone MCBSP3 overflow */
+#define OMAP_INT_3XXX_SSM_ABORT_IRQ 6
+#define OMAP_INT_3XXX_SYS_NIRQ 7 /* External source (active low) */
+#define OMAP_INT_3XXX_D2D_FW_IRQ 8
+#define OMAP_INT_3XXX_SMX_DBG_IRQ 9 /* L3 interconnect error for debug */
+#define OMAP_INT_3XXX_SMX_APP_IRQ 10 /* L3 interconnect error for application */
+#define OMAP_INT_3XXX_PRCM_MPU_IRQ 11 /* PRCM module IRQ */
+#define OMAP_INT_3XXX_SDMA_IRQ0 12 /* System DMA request 0 */
+#define OMAP_INT_3XXX_SDMA_IRQ1 13 /* System DMA request 1 */
+#define OMAP_INT_3XXX_SDMA_IRQ2 14 /* System DMA request 2 */
+#define OMAP_INT_3XXX_SDMA_IRQ3 15 /* System DMA request 3 */
+#define OMAP_INT_3XXX_MCBSP1_IRQ 16 /* MCBSP module 1 IRQ */
+#define OMAP_INT_3XXX_MCBSP2_IRQ 17 /* MCBSP module 2 IRQ */
+/* IRQ18 is reserved */
+/* IRQ19 is reserved */
+#define OMAP_INT_3XXX_GPMC_IRQ 20 /* General-purpose memory controller module */
+#define OMAP_INT_3XXX_SGX_IRQ 21 /* 2D/3D graphics module */
+#define OMAP_INT_3XXX_MCBSP3_IRQ 22 /* MCBSP module 3 */
+#define OMAP_INT_3XXX_MCBSP4_IRQ 23 /* MCBSP module 4 */
+#define OMAP_INT_3XXX_CAM_IRQ0 24 /* Camera interface request 0 */
+#define OMAP_INT_3XXX_DSS_IRQ 25 /* Display subsystem module */
+#define OMAP_INT_3XXX_MAIL_U0_MPU 26 /* Mailbox user 0 request */
+#define OMAP_INT_3XXX_MCBSP5_IRQ 27 /* MCBSP module 5 */
+#define OMAP_INT_3XXX_IVA2_MMU_IRQ 28 /* IVA2 MMU */
+#define OMAP_INT_3XXX_GPIO1_MPU_IRQ 29 /* GPIO module 1 */
+#define OMAP_INT_3XXX_GPIO2_MPU_IRQ 30 /* GPIO module 2 */
+#define OMAP_INT_3XXX_GPIO3_MPU_IRQ 31 /* GPIO module 3 */
+#define OMAP_INT_3XXX_GPIO4_MPU_IRQ 32 /* GPIO module 4 */
+#define OMAP_INT_3XXX_GPIO5_MPU_IRQ 33 /* GPIO module 5 */
+#define OMAP_INT_3XXX_GPIO6_MPU_IRQ 34 /* GPIO module 6 */
+#define OMAP_INT_3XXX_USIM_IRQ 35
+#define OMAP_INT_3XXX_WDT3_IRQ 36 /* Watchdog timer module 3 overflow */
+#define OMAP_INT_3XXX_GPT1_IRQ 37 /* General-purpose timer module 1 */
+#define OMAP_INT_3XXX_GPT2_IRQ 38 /* General-purpose timer module 2 */
+#define OMAP_INT_3XXX_GPT3_IRQ 39 /* General-purpose timer module 3 */
+#define OMAP_INT_3XXX_GPT4_IRQ 40 /* General-purpose timer module 4 */
+#define OMAP_INT_3XXX_GPT5_IRQ 41 /* General-purpose timer module 5 */
+#define OMAP_INT_3XXX_GPT6_IRQ 42 /* General-purpose timer module 6 */
+#define OMAP_INT_3XXX_GPT7_IRQ 43 /* General-purpose timer module 7 */
+#define OMAP_INT_3XXX_GPT8_IRQ 44 /* General-purpose timer module 8 */
+#define OMAP_INT_3XXX_GPT9_IRQ 45 /* General-purpose timer module 9 */
+#define OMAP_INT_3XXX_GPT10_IRQ 46 /* General-purpose timer module 10 */
+#define OMAP_INT_3XXX_GPT11_IRQ 47 /* General-purpose timer module 11 */
+#define OMAP_INT_3XXX_MCSPI4_IRQ 48 /* MCSPI module 4 */
+#define OMAP_INT_3XXX_SHA1MD52_IRQ 49
+#define OMAP_INT_3XXX_FPKA_READY 50
+#define OMAP_INT_3XXX_SHA1MD51_IRQ 51
+#define OMAP_INT_3XXX_RNG_IRQ 52
+#define OMAP_INT_3XXX_MG_IRQ 53
+#define OMAP_INT_3XXX_MCBSP4_IRQ_TX 54 /* MCBSP module 4 transmit */
+#define OMAP_INT_3XXX_MCBSP4_IRQ_RX 55 /* MCBSP module 4 receive */
+#define OMAP_INT_3XXX_I2C1_IRQ 56 /* I2C module 1 */
+#define OMAP_INT_3XXX_I2C2_IRQ 57 /* I2C module 2 */
+#define OMAP_INT_3XXX_HDQ_IRQ 58 /* HDQ/1-Wire */
+#define OMAP_INT_3XXX_MCBSP1_IRQ_TX 59 /* MCBSP module 1 transmit */
+#define OMAP_INT_3XXX_MCBSP1_IRQ_RX 60 /* MCBSP module 1 receive */
+#define OMAP_INT_3XXX_I2C3_IRQ 61 /* I2C module 3 */
+#define OMAP_INT_3XXX_MCBSP2_IRQ_TX 62 /* MCBSP module 2 transmit */
+#define OMAP_INT_3XXX_MCBSP2_IRQ_RX 63 /* MCBSP module 2 receive */
+#define OMAP_INT_3XXX_FPKA_ERROR 64
+#define OMAP_INT_3XXX_MCSPI1_IRQ 65 /* MCSPI module 1 */
+#define OMAP_INT_3XXX_MCSPI2_IRQ 66 /* MCSPI module 2 */
+/* IRQ67 is reserved */
+/* IRQ68 is reserved */
+/* IRQ69 is reserved */
+/* IRQ70 is reserved */
+/* IRQ71 is reserved */
+#define OMAP_INT_3XXX_UART1_IRQ 72 /* UART module 1 */
+#define OMAP_INT_3XXX_UART2_IRQ 73 /* UART module 2 */
+#define OMAP_INT_3XXX_UART3_IRQ 74 /* UART module 3 (also infrared)*/
+#define OMAP_INT_3XXX_PBIAS_IRQ 75 /* Merged interrupt for PBIASlite1 and 2 */
+#define OMAP_INT_3XXX_OHCI_IRQ 76 /* OHCI controller HSUSB MP Host interrupt */
+#define OMAP_INT_3XXX_EHCI_IRQ 77 /* EHCI controller HSUSB MP Host interrupt */
+#define OMAP_INT_3XXX_TLL_IRQ 78 /* HSUSB MP TLL interrupt */
+/* IRQ79 is reserved */
+/* IRQ80 is reserved */
+#define OMAP_INT_3XXX_MCBSP5_IRQ_TX 81 /* MCBSP module 5 transmit */
+#define OMAP_INT_3XXX_MCBSP5_IRQ_RX 82 /* MCBSP module 5 receive */
+#define OMAP_INT_3XXX_MMC1_IRQ 83 /* MMC/SD module 1 */
+#define OMAP_INT_3XXX_MS_IRQ 84
+/* IRQ85 is reserved */
+#define OMAP_INT_3XXX_MMC2_IRQ 86 /* MMC/SD module 2 */
+#define OMAP_INT_3XXX_MPU_ICR_IRQ 87 /* MPU ICR */
+#define OMAP_INT_3XXX_D2DFRINT 88 /* 3G coprocessor */
+#define OMAP_INT_3XXX_MCBSP3_IRQ_TX 89 /* MCBSP module 3 transmit */
+#define OMAP_INT_3XXX_MCBSP3_IRQ_RX 90 /* MCBSP module 3 receive */
+#define OMAP_INT_3XXX_MCSPI3_IRQ 91 /* MCSPI module 3 */
+#define OMAP_INT_3XXX_HSUSB_MC 92 /* High-Speed USB OTG controller */
+#define OMAP_INT_3XXX_HSUSB_DMA 93 /* High-Speed USB OTG DMA controller */
+#define OMAP_INT_3XXX_MMC3_IRQ 94 /* MMC/SD module 3 */
+#define OMAP_INT_3XXX_GPT12_IRQ 95 /* General-purpose timer module 12 */
/* omap_dma.c */
enum omap_dma_model {
struct soc_dma_s *omap_dma4_init(target_phys_addr_t base, qemu_irq *irqs,
struct omap_mpu_state_s *mpu, int fifo,
int chans, omap_clk iclk, omap_clk fclk);
+struct soc_dma_s *omap3_dma4_init(struct omap_target_agent_s *ta,
+ struct omap_mpu_state_s *mpu,
+ qemu_irq *irqs, int chans,
+ omap_clk iclk, omap_clk fclk);
void omap_dma_reset(struct soc_dma_s *s);
struct dma_irq_map {
int dual;
int current_frame;
- ram_addr_t phys_framebuffer[2];
+ target_phys_addr_t phys_framebuffer[2];
qemu_irq irq;
struct omap_mpu_state_s *mpu;
} *omap_dma_get_lcdch(struct soc_dma_s *s);
* number plus one! Zero is a reserved value (defined as
* NO_DEVICE here). Other missing values are reserved.
*/
-#define OMAP35XX_DMA_NO_DEVICE 0
-
-#define OMAP35XX_DMA_EXT_DMAREQ0 2
-#define OMAP35XX_DMA_EXT_DMAREQ1 3
-#define OMAP35XX_DMA_GPMC 4
-
-#define OMAP35XX_DMA_DSS_LINETRIGGER 6
-#define OMAP35XX_DMA_EXT_DMAREQ2 7
-
-#define OMAP35XX_DMA_SPI3_TX0 15
-#define OMAP35XX_DMA_SPI3_RX0 16
-#define OMAP35XX_DMA_MCBSP3_TX 17
-#define OMAP35XX_DMA_MCBSP3_RX 18
-#define OMAP35XX_DMA_MCBSP4_TX 19
-#define OMAP35XX_DMA_MCBSP4_RX 20
-#define OMAP35XX_DMA_MCBSP5_TX 21
-#define OMAP35XX_DMA_MCBSP5_RX 22
-#define OMAP35XX_DMA_SPI3_TX1 23
-#define OMAP35XX_DMA_SPI3_RX1 24
-#define OMAP35XX_DMA_I2C3_TX 25
-#define OMAP35XX_DMA_I2C3_RX 26
-#define OMAP35XX_DMA_I2C1_TX 27
-#define OMAP35XX_DMA_I2C1_RX 28
-#define OMAP35XX_DMA_I2C2_TX 29
-#define OMAP35XX_DMA_I2C2_RX 30
-#define OMAP35XX_DMA_MCBSP1_TX 31
-#define OMAP35XX_DMA_MCBSP1_RX 32
-#define OMAP35XX_DMA_MCBSP2_TX 33
-#define OMAP35XX_DMA_MCBSP2_RX 34
-#define OMAP35XX_DMA_SPI1_TX0 35
-#define OMAP35XX_DMA_SPI1_RX0 36
-#define OMAP35XX_DMA_SPI1_TX1 37
-#define OMAP35XX_DMA_SPI1_RX1 38
-#define OMAP35XX_DMA_SPI1_TX2 39
-#define OMAP35XX_DMA_SPI1_RX2 40
-#define OMAP35XX_DMA_SPI1_TX3 41
-#define OMAP35XX_DMA_SPI1_RX4 42
-#define OMAP35XX_DMA_SPI2_TX0 43
-#define OMAP35XX_DMA_SPI2_RX0 44
-#define OMAP35XX_DMA_SPI2_TX1 45
-#define OMAP35XX_DMA_SPI2_RX1 46
-#define OMAP35XX_DMA_MMC2_TX 47
-#define OMAP35XX_DMA_MMC2_RX 48
-#define OMAP35XX_DMA_UART1_TX 49
-#define OMAP35XX_DMA_UART1_RX 50
-#define OMAP35XX_DMA_UART2_TX 51
-#define OMAP35XX_DMA_UART2_RX 52
-#define OMAP35XX_DMA_UART3_TX 53
-#define OMAP35XX_DMA_UART3_RX 54
-
-#define OMAP35XX_DMA_MMC1_TX 61
-#define OMAP35XX_DMA_MMC1_RX 62
-#define OMAP35XX_DMA_MS 63
-#define OMAP35XX_DMA_EXT_DMAREQ3 64
-
-#define OMAP35XX_DMA_SPI4_TX0 70
-#define OMAP35XX_DMA_SPI4_RX0 71
-#define OMAP35XX_DMA_DSS0 72
-#define OMAP35XX_DMA_DSS1 73
-#define OMAP35XX_DMA_DSS2 74
-#define OMAP35XX_DMA_DSS3 75
-
-#define OMAP35XX_DMA_MMC3_TX 77
-#define OMAP35XX_DMA_MMC3_RX 78
+#define OMAP3XXX_DMA_NO_DEVICE 0
+
+#define OMAP3XXX_DMA_EXT_DMAREQ0 2
+#define OMAP3XXX_DMA_EXT_DMAREQ1 3
+#define OMAP3XXX_DMA_GPMC 4
+
+#define OMAP3XXX_DMA_DSS_LINETRIGGER 6
+#define OMAP3XXX_DMA_EXT_DMAREQ2 7
+
+#define OMAP3XXX_DMA_SPI3_TX0 15
+#define OMAP3XXX_DMA_SPI3_RX0 16
+#define OMAP3XXX_DMA_MCBSP3_TX 17
+#define OMAP3XXX_DMA_MCBSP3_RX 18
+#define OMAP3XXX_DMA_MCBSP4_TX 19
+#define OMAP3XXX_DMA_MCBSP4_RX 20
+#define OMAP3XXX_DMA_MCBSP5_TX 21
+#define OMAP3XXX_DMA_MCBSP5_RX 22
+#define OMAP3XXX_DMA_SPI3_TX1 23
+#define OMAP3XXX_DMA_SPI3_RX1 24
+#define OMAP3XXX_DMA_I2C3_TX 25
+#define OMAP3XXX_DMA_I2C3_RX 26
+#define OMAP3XXX_DMA_I2C1_TX 27
+#define OMAP3XXX_DMA_I2C1_RX 28
+#define OMAP3XXX_DMA_I2C2_TX 29
+#define OMAP3XXX_DMA_I2C2_RX 30
+#define OMAP3XXX_DMA_MCBSP1_TX 31
+#define OMAP3XXX_DMA_MCBSP1_RX 32
+#define OMAP3XXX_DMA_MCBSP2_TX 33
+#define OMAP3XXX_DMA_MCBSP2_RX 34
+#define OMAP3XXX_DMA_SPI1_TX0 35
+#define OMAP3XXX_DMA_SPI1_RX0 36
+#define OMAP3XXX_DMA_SPI1_TX1 37
+#define OMAP3XXX_DMA_SPI1_RX1 38
+#define OMAP3XXX_DMA_SPI1_TX2 39
+#define OMAP3XXX_DMA_SPI1_RX2 40
+#define OMAP3XXX_DMA_SPI1_TX3 41
+#define OMAP3XXX_DMA_SPI1_RX3 42
+#define OMAP3XXX_DMA_SPI2_TX0 43
+#define OMAP3XXX_DMA_SPI2_RX0 44
+#define OMAP3XXX_DMA_SPI2_TX1 45
+#define OMAP3XXX_DMA_SPI2_RX1 46
+#define OMAP3XXX_DMA_MMC2_TX 47
+#define OMAP3XXX_DMA_MMC2_RX 48
+#define OMAP3XXX_DMA_UART1_TX 49
+#define OMAP3XXX_DMA_UART1_RX 50
+#define OMAP3XXX_DMA_UART2_TX 51
+#define OMAP3XXX_DMA_UART2_RX 52
+#define OMAP3XXX_DMA_UART3_TX 53
+#define OMAP3XXX_DMA_UART3_RX 54
+
+#define OMAP3XXX_DMA_MMC1_TX 61
+#define OMAP3XXX_DMA_MMC1_RX 62
+#define OMAP3XXX_DMA_MS 63
+#define OMAP3XXX_DMA_EXT_DMAREQ3 64
+#define OMAP3XXX_DMA_AES2_TX 65
+#define OMAP3XXX_DMA_AES2_RX 66
+#define OMAP3XXX_DMA_DES2_TX 67
+#define OMAP3XXX_DMA_DES2_RX 68
+#define OMAP3XXX_DMA_SHA1MD5_RX 69
+#define OMAP3XXX_DMA_SPI4_TX0 70
+#define OMAP3XXX_DMA_SPI4_RX0 71
+#define OMAP3XXX_DMA_DSS0 72
+#define OMAP3XXX_DMA_DSS1 73
+#define OMAP3XXX_DMA_DSS2 74
+#define OMAP3XXX_DMA_DSS3 75
+
+#define OMAP3XXX_DMA_MMC3_TX 77
+#define OMAP3XXX_DMA_MMC3_RX 78
+#define OMAP3XXX_DMA_USIM_TX 79
+#define OMAP3XXX_DMA_USIM_RX 80
/* omap[123].c */
struct omap_gpif_s *omap3_gpif_init(void);
void omap3_gpio_init(struct omap_mpu_state_s *mpu,
struct omap_gpif_s *s, struct omap_target_agent_s *ta,
- qemu_irq *irq, omap_clk *fclk, omap_clk iclk, int module_index);
+ qemu_irq irq, omap_clk *fclk, omap_clk iclk, int module_index);
qemu_irq *omap2_gpio_in_get(struct omap_gpif_s *s, int start);
void omap2_gpio_out_set(struct omap_gpif_s *s, int line, qemu_irq handler);
void omap_uwire_attach(struct omap_uwire_s *s,
struct uwire_slave_s *slave, int chipselect);
-struct omap_mcspi_s;
-struct omap_mcspi_s *omap_mcspi_init(struct omap_target_agent_s *ta, int chnum,
- qemu_irq irq, qemu_irq *drq, omap_clk fclk, omap_clk iclk);
-void omap_mcspi_attach(struct omap_mcspi_s *s,
- uint32_t (*txrx)(void *opaque, uint32_t, int), void *opaque,
- int chipselect);
-
struct omap_rtc_s;
struct omap_rtc_s *omap_rtc_init(target_phys_addr_t base,
qemu_irq *irq, omap_clk clk);
/* omap3_mmc.c */
struct omap3_mmc_s;
struct omap3_mmc_s *omap3_mmc_init(struct omap_target_agent_s *ta,
- BlockDriverState *bd, qemu_irq irq, qemu_irq dma[],
- omap_clk fclk, omap_clk iclk);
+ qemu_irq irq, qemu_irq dma[],
+ omap_clk fclk, omap_clk iclk);
+void omap3_mmc_attach(struct omap3_mmc_s *s,
+ BlockDriverState *bd);
/* omap_i2c.c */
struct omap_i2c_s;
void omap_i2c_reset(struct omap_i2c_s *s);
i2c_bus *omap_i2c_bus(struct omap_i2c_s *s);
+/* omap_spi.c */
+struct omap_mcspi_s;
+struct omap_mcspi_s *omap_mcspi_init(struct omap_target_agent_s *ta,
+ struct omap_mpu_state_s *mpu,
+ int chnum, qemu_irq irq, qemu_irq *drq,
+ omap_clk fclk, omap_clk iclk);
+void omap_mcspi_attach(struct omap_mcspi_s *s,
+ uint32_t (*txrx)(void *opaque, uint32_t, int),
+ void *opaque, int chipselect);
+void omap_mcspi_reset(struct omap_mcspi_s *s);
+
+/* omap3_usb.c */
+struct omap3_hsusb_s;
+struct omap3_hsusb_s *omap3_hsusb_init(struct omap_target_agent_s *otg_ta,
+ struct omap_target_agent_s *host_ta,
+ struct omap_target_agent_s *tll_ta,
+ qemu_irq mc_irq,
+ qemu_irq dma_irq,
+ qemu_irq ohci_irq,
+ qemu_irq ehci_irq,
+ qemu_irq tll_irq);
+
+/* usb-ohci.c */
+int usb_ohci_init_omap(target_phys_addr_t base, uint32_t region_size,
+ int num_ports, qemu_irq irq);
+
# define cpu_is_omap310(cpu) (cpu->mpu_model == omap310)
# define cpu_is_omap1510(cpu) (cpu->mpu_model == omap1510)
struct omap_gpif_s *gpif;
- struct omap_mcspi_s *mcspi[2];
+ struct omap_mcspi_s *mcspi[4];
struct omap_dss_s *dss;
struct omap3_scm_s *omap3_scm;
struct omap3_sms_s *omap3_sms;
struct omap3_mmc_s *omap3_mmc[3];
+ struct omap3_hsusb_s *omap3_usb;
};
struct omap_target_agent_s {
/* omap3.c */
struct omap_mpu_state_s *omap3530_mpu_init(unsigned long sdram_size,
- const char *core);
+ CharDriverState *chr_uart1,
+ CharDriverState *chr_uart2,
+ CharDriverState *chr_uart3);
void omap3_set_mem_type(struct omap_mpu_state_s *s, int bootfrom);
-void omap3_set_device_type(struct omap_mpu_state_s *s, int device_type);
-int omap3_mmc_boot(struct omap_mpu_state_s *s);
+
+/* omap3_boot.c */
+void omap3_boot_rom_emu(struct omap_mpu_state_s *s);
# if TARGET_PHYS_ADDR_BITS == 32
# define OMAP_FMT_plx "0x%08x"
fprintf(stderr, "%s: Bad register " OMAP_FMT_plx "\n", \
__FUNCTION__, paddr)
# define OMAP_BAD_REGV(paddr, value) \
- fprintf(stderr, "%s: Bad register " OMAP_FMT_plx " (value " OMAP_FMT_plx ")\n", \
+ fprintf(stderr, "%s: Bad register " OMAP_FMT_plx " (value 0x%08x)\n", \
__FUNCTION__, paddr, value)
# define OMAP_RO_REG(paddr) \
fprintf(stderr, "%s: Read-only register " OMAP_FMT_plx "\n", \
__FUNCTION__, paddr)
# define OMAP_RO_REGV(paddr, value) \
- fprintf(stderr, "%s: Read-only register " OMAP_FMT_plx " (value " OMAP_FMT_plx ")\n", \
+ fprintf(stderr, "%s: Read-only register " OMAP_FMT_plx " (value 0x%08x)\n", \
__FUNCTION__, paddr, value)
/* OMAP-specific Linux bootloader tags for the ATAG_BOARD area