105
85
uint32_t component;
107
uint32_t control_h; /* OMAP3 only */
110
struct omap_l4_region_s {
113
int access; /* omap3_l4_region_type_t for OMAP3 */
115
89
struct omap_l4_s *omap_l4_init(MemoryRegion *address_space,
116
hwaddr base, int ta_num,
118
struct omap_target_agent_s *omap2_l4ta_init(
119
struct omap_l4_s *bus,
120
const struct omap_l4_region_s *regions,
121
const struct omap2_l4_agent_info_s *agents,
123
struct omap_target_agent_s *omap3_l4ta_init(
124
struct omap_l4_s *bus,
125
const struct omap_l4_region_s *regions,
126
const struct omap3_l4_agent_info_s *agents,
90
hwaddr base, int ta_num);
92
struct omap_target_agent_s;
93
struct omap_target_agent_s *omap_l4ta_get(
94
struct omap_l4_s *bus,
95
const struct omap_l4_region_s *regions,
96
const struct omap_l4_agent_info_s *agents,
128
98
hwaddr omap_l4_attach(struct omap_target_agent_s *ta,
129
99
int region, MemoryRegion *mr);
455
425
# define OMAP_INT_243X_CARKIT 94
456
426
# define OMAP_INT_34XX_GPTIMER12 95
459
* OMAP-3XXX common IRQ numbers
461
#define OMAP_INT_3XXX_EMUINT 0 /* MPU emulation */
462
#define OMAP_INT_3XXX_COMMTX 1 /* MPU emulation */
463
#define OMAP_INT_3XXX_COMMRX 2 /* MPU emulation */
464
#define OMAP_INT_3XXX_BENCH 3 /* MPU emulation */
465
#define OMAP_INT_3XXX_MCBSP2_ST_IRQ 4 /* Sidetone MCBSP2 overflow */
466
#define OMAP_INT_3XXX_MCBSP3_ST_IRQ 5 /* Sidetone MCBSP3 overflow */
467
#define OMAP_INT_3XXX_SSM_ABORT_IRQ 6
468
#define OMAP_INT_3XXX_SYS_NIRQ 7 /* External source (active low) */
469
#define OMAP_INT_3XXX_D2D_FW_IRQ 8
470
#define OMAP_INT_3XXX_SMX_DBG_IRQ 9 /* L3 interconnect error for debug */
471
#define OMAP_INT_3XXX_SMX_APP_IRQ 10 /* L3 interconnect error for application */
472
#define OMAP_INT_3XXX_PRCM_MPU_IRQ 11 /* PRCM module IRQ */
473
#define OMAP_INT_3XXX_SDMA_IRQ0 12 /* System DMA request 0 */
474
#define OMAP_INT_3XXX_SDMA_IRQ1 13 /* System DMA request 1 */
475
#define OMAP_INT_3XXX_SDMA_IRQ2 14 /* System DMA request 2 */
476
#define OMAP_INT_3XXX_SDMA_IRQ3 15 /* System DMA request 3 */
477
#define OMAP_INT_3XXX_MCBSP1_IRQ 16 /* MCBSP module 1 IRQ */
478
#define OMAP_INT_3XXX_MCBSP2_IRQ 17 /* MCBSP module 2 IRQ */
479
#define OMAP_INT_3XXX_SR1_IRQ 18 /* SmartReflex 1 */
480
#define OMAP_INT_3XXX_SR2_IRQ 19 /* SmartReflex 2 */
481
#define OMAP_INT_3XXX_GPMC_IRQ 20 /* General-purpose memory controller module */
482
#define OMAP_INT_3XXX_SGX_IRQ 21 /* 2D/3D graphics module */
483
#define OMAP_INT_3XXX_MCBSP3_IRQ 22 /* MCBSP module 3 */
484
#define OMAP_INT_3XXX_MCBSP4_IRQ 23 /* MCBSP module 4 */
485
#define OMAP_INT_3XXX_CAM_IRQ0 24 /* Camera interface request 0 */
486
#define OMAP_INT_3XXX_DSS_IRQ 25 /* Display subsystem module */
487
#define OMAP_INT_3XXX_MAIL_U0_MPU 26 /* Mailbox user 0 request */
488
#define OMAP_INT_3XXX_MCBSP5_IRQ 27 /* MCBSP module 5 */
489
#define OMAP_INT_3XXX_IVA2_MMU_IRQ 28 /* IVA2 MMU */
490
#define OMAP_INT_3XXX_GPIO1_MPU_IRQ 29 /* GPIO module 1 */
491
#define OMAP_INT_3XXX_GPIO2_MPU_IRQ 30 /* GPIO module 2 */
492
#define OMAP_INT_3XXX_GPIO3_MPU_IRQ 31 /* GPIO module 3 */
493
#define OMAP_INT_3XXX_GPIO4_MPU_IRQ 32 /* GPIO module 4 */
494
#define OMAP_INT_3XXX_GPIO5_MPU_IRQ 33 /* GPIO module 5 */
495
#define OMAP_INT_3XXX_GPIO6_MPU_IRQ 34 /* GPIO module 6 */
496
#define OMAP_INT_3XXX_USIM_IRQ 35
497
#define OMAP_INT_3XXX_WDT3_IRQ 36 /* Watchdog timer module 3 overflow */
498
#define OMAP_INT_3XXX_GPT1_IRQ 37 /* General-purpose timer module 1 */
499
#define OMAP_INT_3XXX_GPT2_IRQ 38 /* General-purpose timer module 2 */
500
#define OMAP_INT_3XXX_GPT3_IRQ 39 /* General-purpose timer module 3 */
501
#define OMAP_INT_3XXX_GPT4_IRQ 40 /* General-purpose timer module 4 */
502
#define OMAP_INT_3XXX_GPT5_IRQ 41 /* General-purpose timer module 5 */
503
#define OMAP_INT_3XXX_GPT6_IRQ 42 /* General-purpose timer module 6 */
504
#define OMAP_INT_3XXX_GPT7_IRQ 43 /* General-purpose timer module 7 */
505
#define OMAP_INT_3XXX_GPT8_IRQ 44 /* General-purpose timer module 8 */
506
#define OMAP_INT_3XXX_GPT9_IRQ 45 /* General-purpose timer module 9 */
507
#define OMAP_INT_3XXX_GPT10_IRQ 46 /* General-purpose timer module 10 */
508
#define OMAP_INT_3XXX_GPT11_IRQ 47 /* General-purpose timer module 11 */
509
#define OMAP_INT_3XXX_MCSPI4_IRQ 48 /* MCSPI module 4 */
510
#define OMAP_INT_3XXX_SHA1MD52_IRQ 49
511
#define OMAP_INT_3XXX_FPKA_READY 50
512
#define OMAP_INT_3XXX_SHA1MD51_IRQ 51
513
#define OMAP_INT_3XXX_RNG_IRQ 52
514
#define OMAP_INT_3XXX_MG_IRQ 53
515
#define OMAP_INT_3XXX_MCBSP4_IRQ_TX 54 /* MCBSP module 4 transmit */
516
#define OMAP_INT_3XXX_MCBSP4_IRQ_RX 55 /* MCBSP module 4 receive */
517
#define OMAP_INT_3XXX_I2C1_IRQ 56 /* I2C module 1 */
518
#define OMAP_INT_3XXX_I2C2_IRQ 57 /* I2C module 2 */
519
#define OMAP_INT_3XXX_HDQ_IRQ 58 /* HDQ/1-Wire */
520
#define OMAP_INT_3XXX_MCBSP1_IRQ_TX 59 /* MCBSP module 1 transmit */
521
#define OMAP_INT_3XXX_MCBSP1_IRQ_RX 60 /* MCBSP module 1 receive */
522
#define OMAP_INT_3XXX_I2C3_IRQ 61 /* I2C module 3 */
523
#define OMAP_INT_3XXX_MCBSP2_IRQ_TX 62 /* MCBSP module 2 transmit */
524
#define OMAP_INT_3XXX_MCBSP2_IRQ_RX 63 /* MCBSP module 2 receive */
525
#define OMAP_INT_3XXX_FPKA_ERROR 64
526
#define OMAP_INT_3XXX_MCSPI1_IRQ 65 /* MCSPI module 1 */
527
#define OMAP_INT_3XXX_MCSPI2_IRQ 66 /* MCSPI module 2 */
528
/* IRQ67 is reserved */
529
/* IRQ68 is reserved */
530
/* IRQ69 is reserved */
531
/* IRQ70 is reserved */
532
/* IRQ71 is reserved */
533
#define OMAP_INT_3XXX_UART1_IRQ 72 /* UART module 1 */
534
#define OMAP_INT_3XXX_UART2_IRQ 73 /* UART module 2 */
535
#define OMAP_INT_3XXX_UART3_IRQ 74 /* UART module 3 (also infrared)*/
536
#define OMAP_INT_3XXX_PBIAS_IRQ 75 /* Merged interrupt for PBIASlite1 and 2 */
537
#define OMAP_INT_3XXX_OHCI_IRQ 76 /* OHCI controller HSUSB MP Host interrupt */
538
#define OMAP_INT_3XXX_EHCI_IRQ 77 /* EHCI controller HSUSB MP Host interrupt */
539
#define OMAP_INT_3XXX_TLL_IRQ 78 /* HSUSB MP TLL interrupt */
540
/* IRQ79 is reserved */
541
#define OMAP_INT_3XXX_UART4_IRQ 80 /* UART module 4 (OMAP3630 only) */
542
#define OMAP_INT_3XXX_MCBSP5_IRQ_TX 81 /* MCBSP module 5 transmit */
543
#define OMAP_INT_3XXX_MCBSP5_IRQ_RX 82 /* MCBSP module 5 receive */
544
#define OMAP_INT_3XXX_MMC1_IRQ 83 /* MMC/SD module 1 */
545
#define OMAP_INT_3XXX_MS_IRQ 84
546
/* IRQ85 is reserved */
547
#define OMAP_INT_3XXX_MMC2_IRQ 86 /* MMC/SD module 2 */
548
#define OMAP_INT_3XXX_MPU_ICR_IRQ 87 /* MPU ICR */
549
#define OMAP_INT_3XXX_D2DFRINT 88 /* 3G coprocessor */
550
#define OMAP_INT_3XXX_MCBSP3_IRQ_TX 89 /* MCBSP module 3 transmit */
551
#define OMAP_INT_3XXX_MCBSP3_IRQ_RX 90 /* MCBSP module 3 receive */
552
#define OMAP_INT_3XXX_MCSPI3_IRQ 91 /* MCSPI module 3 */
553
#define OMAP_INT_3XXX_HSUSB_MC 92 /* High-Speed USB OTG controller */
554
#define OMAP_INT_3XXX_HSUSB_DMA 93 /* High-Speed USB OTG DMA controller */
555
#define OMAP_INT_3XXX_MMC3_IRQ 94 /* MMC/SD module 3 */
556
#define OMAP_INT_3XXX_GPT12_IRQ 95 /* General-purpose timer module 12 */
559
429
enum omap_dma_model {
780
646
# define OMAP24XX_DMA_MS 63 /* Not in OMAP2420 */
781
647
# define OMAP24XX_DMA_EXT_DMAREQ5 64
784
* DMA request numbers for the OMAP3
785
* Note that the numbers have to match the values that are
786
* written to CCRi SYNCHRO_CONTROL bits, i.e. actual line
787
* number plus one! Zero is a reserved value (defined as
788
* NO_DEVICE here). Other missing values are reserved.
790
#define OMAP3XXX_DMA_NO_DEVICE 0
792
#define OMAP3XXX_DMA_EXT_DMAREQ0 2
793
#define OMAP3XXX_DMA_EXT_DMAREQ1 3
794
#define OMAP3XXX_DMA_GPMC 4
796
#define OMAP3XXX_DMA_DSS_LINETRIGGER 6
797
#define OMAP3XXX_DMA_EXT_DMAREQ2 7
799
#define OMAP3XXX_DMA_SPI3_TX0 15
800
#define OMAP3XXX_DMA_SPI3_RX0 16
801
#define OMAP3XXX_DMA_MCBSP3_TX 17
802
#define OMAP3XXX_DMA_MCBSP3_RX 18
803
#define OMAP3XXX_DMA_MCBSP4_TX 19
804
#define OMAP3XXX_DMA_MCBSP4_RX 20
805
#define OMAP3XXX_DMA_MCBSP5_TX 21
806
#define OMAP3XXX_DMA_MCBSP5_RX 22
807
#define OMAP3XXX_DMA_SPI3_TX1 23
808
#define OMAP3XXX_DMA_SPI3_RX1 24
809
#define OMAP3XXX_DMA_I2C3_TX 25
810
#define OMAP3XXX_DMA_I2C3_RX 26
811
#define OMAP3XXX_DMA_I2C1_TX 27
812
#define OMAP3XXX_DMA_I2C1_RX 28
813
#define OMAP3XXX_DMA_I2C2_TX 29
814
#define OMAP3XXX_DMA_I2C2_RX 30
815
#define OMAP3XXX_DMA_MCBSP1_TX 31
816
#define OMAP3XXX_DMA_MCBSP1_RX 32
817
#define OMAP3XXX_DMA_MCBSP2_TX 33
818
#define OMAP3XXX_DMA_MCBSP2_RX 34
819
#define OMAP3XXX_DMA_SPI1_TX0 35
820
#define OMAP3XXX_DMA_SPI1_RX0 36
821
#define OMAP3XXX_DMA_SPI1_TX1 37
822
#define OMAP3XXX_DMA_SPI1_RX1 38
823
#define OMAP3XXX_DMA_SPI1_TX2 39
824
#define OMAP3XXX_DMA_SPI1_RX2 40
825
#define OMAP3XXX_DMA_SPI1_TX3 41
826
#define OMAP3XXX_DMA_SPI1_RX3 42
827
#define OMAP3XXX_DMA_SPI2_TX0 43
828
#define OMAP3XXX_DMA_SPI2_RX0 44
829
#define OMAP3XXX_DMA_SPI2_TX1 45
830
#define OMAP3XXX_DMA_SPI2_RX1 46
831
#define OMAP3XXX_DMA_MMC2_TX 47
832
#define OMAP3XXX_DMA_MMC2_RX 48
833
#define OMAP3XXX_DMA_UART1_TX 49
834
#define OMAP3XXX_DMA_UART1_RX 50
835
#define OMAP3XXX_DMA_UART2_TX 51
836
#define OMAP3XXX_DMA_UART2_RX 52
837
#define OMAP3XXX_DMA_UART3_TX 53
838
#define OMAP3XXX_DMA_UART3_RX 54
840
#define OMAP3XXX_DMA_MMC1_TX 61
841
#define OMAP3XXX_DMA_MMC1_RX 62
842
#define OMAP3XXX_DMA_MS 63
843
#define OMAP3XXX_DMA_EXT_DMAREQ3 64
844
#define OMAP3XXX_DMA_AES2_TX 65
845
#define OMAP3XXX_DMA_AES2_RX 66
846
#define OMAP3XXX_DMA_DES2_TX 67
847
#define OMAP3XXX_DMA_DES2_RX 68
848
#define OMAP3XXX_DMA_SHA1MD5_RX 69
849
#define OMAP3XXX_DMA_SPI4_TX0 70
850
#define OMAP3XXX_DMA_SPI4_RX0 71
851
#define OMAP3XXX_DMA_DSS0 72
852
#define OMAP3XXX_DMA_DSS1 73
853
#define OMAP3XXX_DMA_DSS2 74
854
#define OMAP3XXX_DMA_DSS3 75
856
#define OMAP3XXX_DMA_MMC3_TX 77
857
#define OMAP3XXX_DMA_MMC3_RX 78
858
#define OMAP3XXX_DMA_USIM_TX 79
859
#define OMAP3XXX_DMA_USIM_RX 80
860
#define OMAP3XXX_DMA_UART4_TX 81
861
#define OMAP3XXX_DMA_UART4_RX 82
863
649
/* omap[123].c */
864
650
/* OMAP2 gp timer */
865
651
struct omap_gp_timer_s;
866
652
struct omap_gp_timer_s *omap_gp_timer_init(struct omap_target_agent_s *ta,
867
653
qemu_irq irq, omap_clk fclk, omap_clk iclk);
868
654
void omap_gp_timer_reset(struct omap_gp_timer_s *s);
869
void omap_gp_timer_change_clk(struct omap_gp_timer_s *timer);
871
656
/* OMAP2 sysctimer */
872
657
struct omap_synctimer_s;
874
659
struct omap_mpu_state_s *mpu, omap_clk fclk, omap_clk iclk);
875
660
void omap_synctimer_reset(struct omap_synctimer_s *s);
877
void omap_uart_attach(DeviceState *qdev, CharDriverState *chr,
663
struct omap_uart_s *omap_uart_init(hwaddr base,
664
qemu_irq irq, omap_clk fclk, omap_clk iclk,
665
qemu_irq txdma, qemu_irq rxdma,
666
const char *label, CharDriverState *chr);
667
struct omap_uart_s *omap2_uart_init(MemoryRegion *sysmem,
668
struct omap_target_agent_s *ta,
669
qemu_irq irq, omap_clk fclk, omap_clk iclk,
670
qemu_irq txdma, qemu_irq rxdma,
671
const char *label, CharDriverState *chr);
672
void omap_uart_reset(struct omap_uart_s *s);
673
void omap_uart_attach(struct omap_uart_s *s, CharDriverState *chr);
880
675
struct omap_mpuio_s;
881
676
qemu_irq *omap_mpuio_in_get(struct omap_mpuio_s *s);
940
741
void (*block)(void *opaque, int dc, void *buf, size_t len, int pitch);
941
742
uint16_t (*read)(void *opaque, int dc);
943
DSIHost *omap_dsi_host(DeviceState *dev);
944
void omap_rfbi_attach(DeviceState *dev, int cs, const struct rfbi_chip_s *chip);
945
void omap_lcd_panel_attach(DeviceState *dev);
946
void omap_digital_panel_attach(DeviceState *dev);
745
void omap_dss_reset(struct omap_dss_s *s);
746
struct omap_dss_s *omap_dss_init(struct omap_target_agent_s *ta,
747
MemoryRegion *sysmem,
749
qemu_irq irq, qemu_irq drq,
750
omap_clk fck1, omap_clk fck2, omap_clk ck54m,
751
omap_clk ick1, omap_clk ick2);
752
void omap_rfbi_attach(struct omap_dss_s *s, int cs, struct rfbi_chip_s *chip);
949
755
struct omap_mmc_s;