~ubuntu-branches/ubuntu/vivid/qemu/vivid

« back to all changes in this revision

Viewing changes to include/hw/arm/omap.h

  • Committer: Package Import Robot
  • Author(s): Serge Hallyn
  • Date: 2014-02-25 22:31:43 UTC
  • mfrom: (1.8.5)
  • Revision ID: package-import@ubuntu.com-20140225223143-odhqxfc60wxrjl15
Tags: 2.0.0~rc1+dfsg-0ubuntu1
* Merge 2.0.0-rc1
* debian/rules: consolidate ppc filter entries.
* Move qemu-system-arch64 into qemu-system-arm
* debian/patches/define-trusty-machine-type.patch: define a trusty machine
  type, currently the same as pc-i440fx-2.0, to put is in a better position
  to enable live migrations from trusty onward.  (LP: #1294823)
* debian/control: build-dep on libfdt >= 1.4.0  (LP: #1295072)
* Merge latest upstream git to commit dc9528f
* Debian/rules:
  - remove -enable-uname-release=2.6.32
  - don't make the aarch64 target Ubuntu-specific.
* Remove patches which are now upstream:
  - fix-smb-security-share.patch
  - slirp-smb-redirect-port-445-too.patch 
  - linux-user-Implement-sendmmsg-syscall.patch (better version is upstream)
  - signal-added-a-wrapper-for-sigprocmask-function.patch
  - ubuntu/signal-sigsegv-protection-on-do_sigprocmask.patch
  - ubuntu/Don-t-block-SIGSEGV-at-more-places.patch
  - ubuntu/ppc-force-cpu-threads-count-to-be-power-of-2.patch
* add link for /usr/share/qemu/bios-256k.bin
* Remove all linaro patches.
* Remove all arm64/ patches.  Many but not all are upstream.
* Remove CVE-2013-4377.patch which is upstream.
* debian/control-in: don't make qemu-system-aarch64 ubuntu-specific

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
# define hw_omap_h              "omap.h"
22
22
#include "hw/irq.h"
23
23
 
24
 
#include "sysemu/sysemu.h"
25
 
#include "hw/dsi.h"
26
 
#include "hw/spi.h"
27
 
 
28
24
# define OMAP_EMIFS_BASE        0x00000000
29
25
# define OMAP2_Q0_BASE          0x00000000
30
26
# define OMAP_CS0_BASE          0x00000000
40
36
# define OMAP2_L3_BASE          0x68000000
41
37
# define OMAP2_Q2_BASE          0x80000000
42
38
# define OMAP2_Q3_BASE          0xc0000000
43
 
# define OMAP3_Q1_BASE      0x40000000
44
 
# define OMAP3_L4_BASE      0x48000000
45
 
# define OMAP3_SRAM_BASE    0x40200000
46
 
# define OMAP3_L3_BASE      0x68000000
47
 
# define OMAP3_Q2_BASE      0x80000000
48
 
# define OMAP3_Q3_BASE      0xc0000000
49
39
# define OMAP_MPUI_BASE         0xe1000000
50
40
 
51
41
# define OMAP730_SRAM_SIZE      0x00032000
54
44
# define OMAP1611_SRAM_SIZE     0x0003e800
55
45
# define OMAP242X_SRAM_SIZE     0x000a0000
56
46
# define OMAP243X_SRAM_SIZE     0x00010000
57
 
# define OMAP3XXX_SRAM_SIZE     0x00010000
58
 
# define OMAP3XXX_BOOTROM_SIZE  0x00008000
59
47
# define OMAP_CS0_SIZE          0x04000000
60
48
# define OMAP_CS1_SIZE          0x04000000
61
49
# define OMAP_CS2_SIZE          0x04000000
77
65
 
78
66
/* OMAP2 l4 Interconnect */
79
67
struct omap_l4_s;
80
 
struct omap_l4_region_s;
81
 
typedef enum {
82
 
    L4TYPE_GENERIC = 0, /* not mapped by default, must be mapped separately */
83
 
    L4TYPE_IA,          /* initiator agent */
84
 
    L4TYPE_TA,          /* target agent */
85
 
    L4TYPE_LA,          /* link register agent */
86
 
    L4TYPE_AP           /* address protection */
87
 
} omap3_l4_region_type_t;
88
 
struct omap2_l4_agent_info_s {
 
68
struct omap_l4_region_s {
 
69
    hwaddr offset;
 
70
    size_t size;
 
71
    int access;
 
72
};
 
73
struct omap_l4_agent_info_s {
89
74
    int ta;
90
75
    int region;
91
76
    int regions;
92
77
    int ta_region;
93
78
};
94
 
struct omap3_l4_agent_info_s {
95
 
    int agent_id;
96
 
    int first_region_id;
97
 
    int region_count;
98
 
};
99
79
struct omap_target_agent_s {
100
80
    MemoryRegion iomem;
101
81
    struct omap_l4_s *bus;
104
84
    hwaddr base;
105
85
    uint32_t component;
106
86
    uint32_t control;
107
 
    uint32_t control_h; /* OMAP3 only */
108
87
    uint32_t status;
109
88
};
110
 
struct omap_l4_region_s {
111
 
    hwaddr offset;
112
 
    size_t size;
113
 
    int access; /* omap3_l4_region_type_t for OMAP3 */
114
 
};
115
89
struct omap_l4_s *omap_l4_init(MemoryRegion *address_space,
116
 
                               hwaddr base, int ta_num,
117
 
                               int region_count);
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,
122
 
    int cs);
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);
 
91
 
 
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,
127
97
    int cs);
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
457
427
 
458
 
/*
459
 
 * OMAP-3XXX common IRQ numbers
460
 
 */
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 */
557
 
 
558
428
/* omap_dma.c */
559
429
enum omap_dma_model {
560
430
    omap_dma_3_0,
572
442
                MemoryRegion *sysmem,
573
443
                struct omap_mpu_state_s *mpu, int fifo,
574
444
                int chans, omap_clk iclk, omap_clk fclk);
575
 
struct soc_dma_s *omap3_dma4_init(struct omap_target_agent_s *ta,
576
 
                                  struct omap_mpu_state_s *mpu,
577
 
                                  qemu_irq *irqs, int chans,
578
 
                                  omap_clk iclk, omap_clk fclk);
579
445
void omap_dma_reset(struct soc_dma_s *s);
580
446
 
581
447
struct dma_irq_map {
780
646
# define OMAP24XX_DMA_MS                63      /* Not in OMAP2420 */
781
647
# define OMAP24XX_DMA_EXT_DMAREQ5       64
782
648
 
783
 
/*
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.
789
 
 */
790
 
#define OMAP3XXX_DMA_NO_DEVICE        0
791
 
 
792
 
#define OMAP3XXX_DMA_EXT_DMAREQ0      2
793
 
#define OMAP3XXX_DMA_EXT_DMAREQ1      3
794
 
#define OMAP3XXX_DMA_GPMC             4
795
 
 
796
 
#define OMAP3XXX_DMA_DSS_LINETRIGGER  6
797
 
#define OMAP3XXX_DMA_EXT_DMAREQ2      7
798
 
 
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
839
 
 
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
855
 
 
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
862
 
 
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);
870
655
 
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);
876
661
 
877
 
void omap_uart_attach(DeviceState *qdev, CharDriverState *chr,
878
 
                      const char *label);
 
662
struct omap_uart_s;
 
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);
879
674
 
880
675
struct omap_mpuio_s;
881
676
qemu_irq *omap_mpuio_in_get(struct omap_mpuio_s *s);
892
687
                uWireSlave *slave, int chipselect);
893
688
 
894
689
/* OMAP2 spi */
895
 
SPIBus *omap_mcspi_bus(DeviceState *omap_mcspi, int bus_number);
 
690
struct omap_mcspi_s;
 
691
struct omap_mcspi_s *omap_mcspi_init(struct omap_target_agent_s *ta, int chnum,
 
692
                qemu_irq irq, qemu_irq *drq, omap_clk fclk, omap_clk iclk);
 
693
void omap_mcspi_attach(struct omap_mcspi_s *s,
 
694
                uint32_t (*txrx)(void *opaque, uint32_t, int), void *opaque,
 
695
                int chipselect);
 
696
void omap_mcspi_reset(struct omap_mcspi_s *s);
896
697
 
897
698
struct I2SCodec {
898
699
    void *opaque;
940
741
    void (*block)(void *opaque, int dc, void *buf, size_t len, int pitch);
941
742
    uint16_t (*read)(void *opaque, int dc);
942
743
};
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);
 
744
struct omap_dss_s;
 
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,
 
748
                hwaddr l3_base,
 
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);
947
753
 
948
754
/* omap_mmc.c */
949
755
struct omap_mmc_s;
958
764
void omap_mmc_handlers(struct omap_mmc_s *s, qemu_irq ro, qemu_irq cover);
959
765
void omap_mmc_enable(struct omap_mmc_s *s, int enable);
960
766
 
961
 
/* omap3_mmc.c */
962
 
void omap3_mmc_attach(DeviceState *dev, BlockDriverState *bs,
963
 
                      int is_spi, int is_mmc);
964
 
 
965
767
/* omap_i2c.c */
966
 
i2c_bus *omap_i2c_bus(DeviceState *omap_i2c);
 
768
I2CBus *omap_i2c_bus(DeviceState *omap_i2c);
967
769
 
968
770
# define cpu_is_omap310(cpu)            (cpu->mpu_model == omap310)
969
771
# define cpu_is_omap1510(cpu)           (cpu->mpu_model == omap1510)
1039
841
    unsigned long sram_size;
1040
842
 
1041
843
    /* MPUI-TIPB peripherals */
1042
 
    DeviceState *uart[4];
 
844
    struct omap_uart_s *uart[3];
1043
845
 
1044
846
    DeviceState *gpio;
1045
847
 
1057
859
 
1058
860
    struct omap_pwl_s *pwl;
1059
861
    struct omap_pwt_s *pwt;
1060
 
    DeviceState *i2c[3];
 
862
    DeviceState *i2c[2];
1061
863
 
1062
864
    struct omap_rtc_s *rtc;
1063
865
 
1124
926
    struct omap_gpmc_s *gpmc;
1125
927
    struct omap_sysctl_s *sysc;
1126
928
 
1127
 
    DeviceState *mcspi;
 
929
    struct omap_mcspi_s *mcspi[2];
1128
930
 
1129
 
    DeviceState *dss;
 
931
    struct omap_dss_s *dss;
1130
932
 
1131
933
    struct omap_eac_s *eac;
1132
 
    MemoryRegion bootrom;
1133
 
    int bootrom_initialized;
1134
 
 
1135
 
    /* OMAP3-only */
1136
 
    struct omap3_prm_s *omap3_prm;
1137
 
    struct omap3_cm_s *omap3_cm;
1138
 
    struct omap3_wdt_s *omap3_mpu_wdt;
1139
 
    struct omap3_l3_s *omap3_l3;
1140
 
    struct omap3_scm_s *omap3_scm;
1141
 
    struct omap3_sms_s *omap3_sms;
1142
 
    DeviceState *omap3_mmc[3];
1143
 
    DeviceState *omap3_usb_otg;
1144
 
    DeviceState *omap3_usb_host;
1145
 
    DeviceState *omap3_usb_ohci;
1146
 
    ram_addr_t bootrom_base;
1147
934
};
1148
935
 
1149
936
/* omap1.c */
1156
943
                unsigned long sdram_size,
1157
944
                const char *core);
1158
945
 
1159
 
/* omap3.c */
1160
 
struct omap_mpu_state_s *omap3_mpu_init(MemoryRegion *sysmem,
1161
 
                                        int model,
1162
 
                                        unsigned long sdram_size,
1163
 
                                        CharDriverState *chr_uart1,
1164
 
                                        CharDriverState *chr_uart2,
1165
 
                                        CharDriverState *chr_uart3,
1166
 
                                        CharDriverState *chr_uart4);
1167
 
 
1168
 
/* omap3_boot.c */
1169
 
void omap3_boot_rom_init(struct omap_mpu_state_s *s);
1170
 
void omap3_boot_rom_emu(struct omap_mpu_state_s *s);
1171
 
 
1172
946
#define OMAP_FMT_plx "%#08" HWADDR_PRIx
1173
947
 
1174
948
uint32_t omap_badwidth_read8(void *opaque, hwaddr addr);