hw/arm: Replace TABs for spaces in OMAP board and device code

In hw/arm and include/hw/arm, some source files for the OMAP SoC
and the sx1 boards that are our only remaining OMAP boards still
have hard-coded tabs (almost entirely used for the indent on
inline comments, not for actual code indent).

Replace the tabs with spaces using vim :retab. I used 4 spaces
except in some defines and comments where I tried to put
everything aligned in the same column for better readability.

This commit is a purely whitespace-only change.

Signed-off-by: Santiago Monserrat Campanello <santimonserr@gmail.com>
Message-id: 20250505131130.82206-1-santimonserr@gmail.com
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/373
[PMM: expanded commit message]
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Santiago Monserrat Campanello 2025-05-14 14:29:47 +01:00 committed by Peter Maydell
parent 6414b7709d
commit edf838289b
11 changed files with 1399 additions and 1399 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
/* omap_sx1.c Support for the Siemens SX1 smartphone emulation. /* omap_sx1.c Support for the Siemens SX1 smartphone emulation.
* *
* Copyright (C) 2008 * Copyright (C) 2008
* Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> * Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
* Copyright (C) 2007 Vladimir Ananiev <vovan888@gmail.com> * Copyright (C) 2007 Vladimir Ananiev <vovan888@gmail.com>
* *
* based on PalmOne's (TM) PDAs support (palm.c) * based on PalmOne's (TM) PDAs support (palm.c)

View File

@ -131,9 +131,9 @@ struct omap_dma_s {
#define LAST_FRAME_INTR (1 << 4) #define LAST_FRAME_INTR (1 << 4)
#define END_BLOCK_INTR (1 << 5) #define END_BLOCK_INTR (1 << 5)
#define SYNC (1 << 6) #define SYNC (1 << 6)
#define END_PKT_INTR (1 << 7) #define END_PKT_INTR (1 << 7)
#define TRANS_ERR_INTR (1 << 8) #define TRANS_ERR_INTR (1 << 8)
#define MISALIGN_INTR (1 << 11) #define MISALIGN_INTR (1 << 11)
static inline void omap_dma_interrupts_update(struct omap_dma_s *s) static inline void omap_dma_interrupts_update(struct omap_dma_s *s)
{ {
@ -526,12 +526,12 @@ static void omap_dma_transfer_setup(struct soc_dma_ch_s *dma)
/* Check all the conditions that terminate the transfer starting /* Check all the conditions that terminate the transfer starting
* with those that can occur the soonest. */ * with those that can occur the soonest. */
#define INTR_CHECK(cond, id, nelements) \ #define INTR_CHECK(cond, id, nelements) \
if (cond) { \ if (cond) { \
elements[id] = nelements; \ elements[id] = nelements; \
if (elements[id] < min_elems) \ if (elements[id] < min_elems) \
min_elems = elements[id]; \ min_elems = elements[id]; \
} else \ } else \
elements[id] = INT_MAX; elements[id] = INT_MAX;
/* Elements */ /* Elements */
@ -740,7 +740,7 @@ static int omap_dma_ch_reg_read(struct omap_dma_s *s,
struct omap_dma_channel_s *ch, int reg, uint16_t *value) struct omap_dma_channel_s *ch, int reg, uint16_t *value)
{ {
switch (reg) { switch (reg) {
case 0x00: /* SYS_DMA_CSDP_CH0 */ case 0x00: /* SYS_DMA_CSDP_CH0 */
*value = (ch->burst[1] << 14) | *value = (ch->burst[1] << 14) |
(ch->pack[1] << 13) | (ch->pack[1] << 13) |
(ch->port[1] << 9) | (ch->port[1] << 9) |
@ -750,9 +750,9 @@ static int omap_dma_ch_reg_read(struct omap_dma_s *s,
(ch->data_type >> 1); (ch->data_type >> 1);
break; break;
case 0x02: /* SYS_DMA_CCR_CH0 */ case 0x02: /* SYS_DMA_CCR_CH0 */
if (s->model <= omap_dma_3_1) if (s->model <= omap_dma_3_1)
*value = 0 << 10; /* FIFO_FLUSH reads as 0 */ *value = 0 << 10; /* FIFO_FLUSH reads as 0 */
else else
*value = ch->omap_3_1_compatible_disable << 10; *value = ch->omap_3_1_compatible_disable << 10;
*value |= (ch->mode[1] << 14) | *value |= (ch->mode[1] << 14) |
@ -765,11 +765,11 @@ static int omap_dma_ch_reg_read(struct omap_dma_s *s,
(ch->fs << 5) | ch->sync; (ch->fs << 5) | ch->sync;
break; break;
case 0x04: /* SYS_DMA_CICR_CH0 */ case 0x04: /* SYS_DMA_CICR_CH0 */
*value = ch->interrupts; *value = ch->interrupts;
break; break;
case 0x06: /* SYS_DMA_CSR_CH0 */ case 0x06: /* SYS_DMA_CSR_CH0 */
*value = ch->status; *value = ch->status;
ch->status &= SYNC; ch->status &= SYNC;
if (!ch->omap_3_1_compatible_disable && ch->sibling) { if (!ch->omap_3_1_compatible_disable && ch->sibling) {
@ -779,77 +779,77 @@ static int omap_dma_ch_reg_read(struct omap_dma_s *s,
qemu_irq_lower(ch->irq); qemu_irq_lower(ch->irq);
break; break;
case 0x08: /* SYS_DMA_CSSA_L_CH0 */ case 0x08: /* SYS_DMA_CSSA_L_CH0 */
*value = ch->addr[0] & 0x0000ffff; *value = ch->addr[0] & 0x0000ffff;
break; break;
case 0x0a: /* SYS_DMA_CSSA_U_CH0 */ case 0x0a: /* SYS_DMA_CSSA_U_CH0 */
*value = ch->addr[0] >> 16; *value = ch->addr[0] >> 16;
break; break;
case 0x0c: /* SYS_DMA_CDSA_L_CH0 */ case 0x0c: /* SYS_DMA_CDSA_L_CH0 */
*value = ch->addr[1] & 0x0000ffff; *value = ch->addr[1] & 0x0000ffff;
break; break;
case 0x0e: /* SYS_DMA_CDSA_U_CH0 */ case 0x0e: /* SYS_DMA_CDSA_U_CH0 */
*value = ch->addr[1] >> 16; *value = ch->addr[1] >> 16;
break; break;
case 0x10: /* SYS_DMA_CEN_CH0 */ case 0x10: /* SYS_DMA_CEN_CH0 */
*value = ch->elements; *value = ch->elements;
break; break;
case 0x12: /* SYS_DMA_CFN_CH0 */ case 0x12: /* SYS_DMA_CFN_CH0 */
*value = ch->frames; *value = ch->frames;
break; break;
case 0x14: /* SYS_DMA_CFI_CH0 */ case 0x14: /* SYS_DMA_CFI_CH0 */
*value = ch->frame_index[0]; *value = ch->frame_index[0];
break; break;
case 0x16: /* SYS_DMA_CEI_CH0 */ case 0x16: /* SYS_DMA_CEI_CH0 */
*value = ch->element_index[0]; *value = ch->element_index[0];
break; break;
case 0x18: /* SYS_DMA_CPC_CH0 or DMA_CSAC */ case 0x18: /* SYS_DMA_CPC_CH0 or DMA_CSAC */
if (ch->omap_3_1_compatible_disable) if (ch->omap_3_1_compatible_disable)
*value = ch->active_set.src & 0xffff; /* CSAC */ *value = ch->active_set.src & 0xffff; /* CSAC */
else else
*value = ch->cpc; *value = ch->cpc;
break; break;
case 0x1a: /* DMA_CDAC */ case 0x1a: /* DMA_CDAC */
*value = ch->active_set.dest & 0xffff; /* CDAC */ *value = ch->active_set.dest & 0xffff; /* CDAC */
break; break;
case 0x1c: /* DMA_CDEI */ case 0x1c: /* DMA_CDEI */
*value = ch->element_index[1]; *value = ch->element_index[1];
break; break;
case 0x1e: /* DMA_CDFI */ case 0x1e: /* DMA_CDFI */
*value = ch->frame_index[1]; *value = ch->frame_index[1];
break; break;
case 0x20: /* DMA_COLOR_L */ case 0x20: /* DMA_COLOR_L */
*value = ch->color & 0xffff; *value = ch->color & 0xffff;
break; break;
case 0x22: /* DMA_COLOR_U */ case 0x22: /* DMA_COLOR_U */
*value = ch->color >> 16; *value = ch->color >> 16;
break; break;
case 0x24: /* DMA_CCR2 */ case 0x24: /* DMA_CCR2 */
*value = (ch->bs << 2) | *value = (ch->bs << 2) |
(ch->transparent_copy << 1) | (ch->transparent_copy << 1) |
ch->constant_fill; ch->constant_fill;
break; break;
case 0x28: /* DMA_CLNK_CTRL */ case 0x28: /* DMA_CLNK_CTRL */
*value = (ch->link_enabled << 15) | *value = (ch->link_enabled << 15) |
(ch->link_next_ch & 0xf); (ch->link_next_ch & 0xf);
break; break;
case 0x2a: /* DMA_LCH_CTRL */ case 0x2a: /* DMA_LCH_CTRL */
*value = (ch->interleave_disabled << 15) | *value = (ch->interleave_disabled << 15) |
ch->type; ch->type;
break; break;
@ -864,7 +864,7 @@ static int omap_dma_ch_reg_write(struct omap_dma_s *s,
struct omap_dma_channel_s *ch, int reg, uint16_t value) struct omap_dma_channel_s *ch, int reg, uint16_t value)
{ {
switch (reg) { switch (reg) {
case 0x00: /* SYS_DMA_CSDP_CH0 */ case 0x00: /* SYS_DMA_CSDP_CH0 */
ch->burst[1] = (value & 0xc000) >> 14; ch->burst[1] = (value & 0xc000) >> 14;
ch->pack[1] = (value & 0x2000) >> 13; ch->pack[1] = (value & 0x2000) >> 13;
ch->port[1] = (enum omap_dma_port) ((value & 0x1e00) >> 9); ch->port[1] = (enum omap_dma_port) ((value & 0x1e00) >> 9);
@ -887,7 +887,7 @@ static int omap_dma_ch_reg_write(struct omap_dma_s *s,
} }
break; break;
case 0x02: /* SYS_DMA_CCR_CH0 */ case 0x02: /* SYS_DMA_CCR_CH0 */
ch->mode[1] = (omap_dma_addressing_t) ((value & 0xc000) >> 14); ch->mode[1] = (omap_dma_addressing_t) ((value & 0xc000) >> 14);
ch->mode[0] = (omap_dma_addressing_t) ((value & 0x3000) >> 12); ch->mode[0] = (omap_dma_addressing_t) ((value & 0x3000) >> 12);
ch->end_prog = (value & 0x0800) >> 11; ch->end_prog = (value & 0x0800) >> 11;
@ -909,88 +909,88 @@ static int omap_dma_ch_reg_write(struct omap_dma_s *s,
break; break;
case 0x04: /* SYS_DMA_CICR_CH0 */ case 0x04: /* SYS_DMA_CICR_CH0 */
ch->interrupts = value & 0x3f; ch->interrupts = value & 0x3f;
break; break;
case 0x06: /* SYS_DMA_CSR_CH0 */ case 0x06: /* SYS_DMA_CSR_CH0 */
OMAP_RO_REG((hwaddr) reg); OMAP_RO_REG((hwaddr) reg);
break; break;
case 0x08: /* SYS_DMA_CSSA_L_CH0 */ case 0x08: /* SYS_DMA_CSSA_L_CH0 */
ch->addr[0] &= 0xffff0000; ch->addr[0] &= 0xffff0000;
ch->addr[0] |= value; ch->addr[0] |= value;
break; break;
case 0x0a: /* SYS_DMA_CSSA_U_CH0 */ case 0x0a: /* SYS_DMA_CSSA_U_CH0 */
ch->addr[0] &= 0x0000ffff; ch->addr[0] &= 0x0000ffff;
ch->addr[0] |= (uint32_t) value << 16; ch->addr[0] |= (uint32_t) value << 16;
break; break;
case 0x0c: /* SYS_DMA_CDSA_L_CH0 */ case 0x0c: /* SYS_DMA_CDSA_L_CH0 */
ch->addr[1] &= 0xffff0000; ch->addr[1] &= 0xffff0000;
ch->addr[1] |= value; ch->addr[1] |= value;
break; break;
case 0x0e: /* SYS_DMA_CDSA_U_CH0 */ case 0x0e: /* SYS_DMA_CDSA_U_CH0 */
ch->addr[1] &= 0x0000ffff; ch->addr[1] &= 0x0000ffff;
ch->addr[1] |= (uint32_t) value << 16; ch->addr[1] |= (uint32_t) value << 16;
break; break;
case 0x10: /* SYS_DMA_CEN_CH0 */ case 0x10: /* SYS_DMA_CEN_CH0 */
ch->elements = value; ch->elements = value;
break; break;
case 0x12: /* SYS_DMA_CFN_CH0 */ case 0x12: /* SYS_DMA_CFN_CH0 */
ch->frames = value; ch->frames = value;
break; break;
case 0x14: /* SYS_DMA_CFI_CH0 */ case 0x14: /* SYS_DMA_CFI_CH0 */
ch->frame_index[0] = (int16_t) value; ch->frame_index[0] = (int16_t) value;
break; break;
case 0x16: /* SYS_DMA_CEI_CH0 */ case 0x16: /* SYS_DMA_CEI_CH0 */
ch->element_index[0] = (int16_t) value; ch->element_index[0] = (int16_t) value;
break; break;
case 0x18: /* SYS_DMA_CPC_CH0 or DMA_CSAC */ case 0x18: /* SYS_DMA_CPC_CH0 or DMA_CSAC */
OMAP_RO_REG((hwaddr) reg); OMAP_RO_REG((hwaddr) reg);
break; break;
case 0x1c: /* DMA_CDEI */ case 0x1c: /* DMA_CDEI */
ch->element_index[1] = (int16_t) value; ch->element_index[1] = (int16_t) value;
break; break;
case 0x1e: /* DMA_CDFI */ case 0x1e: /* DMA_CDFI */
ch->frame_index[1] = (int16_t) value; ch->frame_index[1] = (int16_t) value;
break; break;
case 0x20: /* DMA_COLOR_L */ case 0x20: /* DMA_COLOR_L */
ch->color &= 0xffff0000; ch->color &= 0xffff0000;
ch->color |= value; ch->color |= value;
break; break;
case 0x22: /* DMA_COLOR_U */ case 0x22: /* DMA_COLOR_U */
ch->color &= 0xffff; ch->color &= 0xffff;
ch->color |= (uint32_t)value << 16; ch->color |= (uint32_t)value << 16;
break; break;
case 0x24: /* DMA_CCR2 */ case 0x24: /* DMA_CCR2 */
ch->bs = (value >> 2) & 0x1; ch->bs = (value >> 2) & 0x1;
ch->transparent_copy = (value >> 1) & 0x1; ch->transparent_copy = (value >> 1) & 0x1;
ch->constant_fill = value & 0x1; ch->constant_fill = value & 0x1;
break; break;
case 0x28: /* DMA_CLNK_CTRL */ case 0x28: /* DMA_CLNK_CTRL */
ch->link_enabled = (value >> 15) & 0x1; ch->link_enabled = (value >> 15) & 0x1;
if (value & (1 << 14)) { /* Stop_Lnk */ if (value & (1 << 14)) { /* Stop_Lnk */
ch->link_enabled = 0; ch->link_enabled = 0;
omap_dma_disable_channel(s, ch); omap_dma_disable_channel(s, ch);
} }
ch->link_next_ch = value & 0x1f; ch->link_next_ch = value & 0x1f;
break; break;
case 0x2a: /* DMA_LCH_CTRL */ case 0x2a: /* DMA_LCH_CTRL */
ch->interleave_disabled = (value >> 15) & 0x1; ch->interleave_disabled = (value >> 15) & 0x1;
ch->type = value & 0xf; ch->type = value & 0xf;
break; break;
@ -1005,7 +1005,7 @@ static int omap_dma_3_2_lcd_write(struct omap_dma_lcd_channel_s *s, int offset,
uint16_t value) uint16_t value)
{ {
switch (offset) { switch (offset) {
case 0xbc0: /* DMA_LCD_CSDP */ case 0xbc0: /* DMA_LCD_CSDP */
s->brust_f2 = (value >> 14) & 0x3; s->brust_f2 = (value >> 14) & 0x3;
s->pack_f2 = (value >> 13) & 0x1; s->pack_f2 = (value >> 13) & 0x1;
s->data_type_f2 = (1 << ((value >> 11) & 0x3)); s->data_type_f2 = (1 << ((value >> 11) & 0x3));
@ -1014,7 +1014,7 @@ static int omap_dma_3_2_lcd_write(struct omap_dma_lcd_channel_s *s, int offset,
s->data_type_f1 = (1 << ((value >> 0) & 0x3)); s->data_type_f1 = (1 << ((value >> 0) & 0x3));
break; break;
case 0xbc2: /* DMA_LCD_CCR */ case 0xbc2: /* DMA_LCD_CCR */
s->mode_f2 = (value >> 14) & 0x3; s->mode_f2 = (value >> 14) & 0x3;
s->mode_f1 = (value >> 12) & 0x3; s->mode_f1 = (value >> 12) & 0x3;
s->end_prog = (value >> 11) & 0x1; s->end_prog = (value >> 11) & 0x1;
@ -1026,7 +1026,7 @@ static int omap_dma_3_2_lcd_write(struct omap_dma_lcd_channel_s *s, int offset,
s->bs = (value >> 4) & 0x1; s->bs = (value >> 4) & 0x1;
break; break;
case 0xbc4: /* DMA_LCD_CTRL */ case 0xbc4: /* DMA_LCD_CTRL */
s->dst = (value >> 8) & 0x1; s->dst = (value >> 8) & 0x1;
s->src = ((value >> 6) & 0x3) << 1; s->src = ((value >> 6) & 0x3) << 1;
s->condition = 0; s->condition = 0;
@ -1035,91 +1035,91 @@ static int omap_dma_3_2_lcd_write(struct omap_dma_lcd_channel_s *s, int offset,
s->dual = value & 1; s->dual = value & 1;
break; break;
case 0xbc8: /* TOP_B1_L */ case 0xbc8: /* TOP_B1_L */
s->src_f1_top &= 0xffff0000; s->src_f1_top &= 0xffff0000;
s->src_f1_top |= 0x0000ffff & value; s->src_f1_top |= 0x0000ffff & value;
break; break;
case 0xbca: /* TOP_B1_U */ case 0xbca: /* TOP_B1_U */
s->src_f1_top &= 0x0000ffff; s->src_f1_top &= 0x0000ffff;
s->src_f1_top |= (uint32_t)value << 16; s->src_f1_top |= (uint32_t)value << 16;
break; break;
case 0xbcc: /* BOT_B1_L */ case 0xbcc: /* BOT_B1_L */
s->src_f1_bottom &= 0xffff0000; s->src_f1_bottom &= 0xffff0000;
s->src_f1_bottom |= 0x0000ffff & value; s->src_f1_bottom |= 0x0000ffff & value;
break; break;
case 0xbce: /* BOT_B1_U */ case 0xbce: /* BOT_B1_U */
s->src_f1_bottom &= 0x0000ffff; s->src_f1_bottom &= 0x0000ffff;
s->src_f1_bottom |= (uint32_t) value << 16; s->src_f1_bottom |= (uint32_t) value << 16;
break; break;
case 0xbd0: /* TOP_B2_L */ case 0xbd0: /* TOP_B2_L */
s->src_f2_top &= 0xffff0000; s->src_f2_top &= 0xffff0000;
s->src_f2_top |= 0x0000ffff & value; s->src_f2_top |= 0x0000ffff & value;
break; break;
case 0xbd2: /* TOP_B2_U */ case 0xbd2: /* TOP_B2_U */
s->src_f2_top &= 0x0000ffff; s->src_f2_top &= 0x0000ffff;
s->src_f2_top |= (uint32_t) value << 16; s->src_f2_top |= (uint32_t) value << 16;
break; break;
case 0xbd4: /* BOT_B2_L */ case 0xbd4: /* BOT_B2_L */
s->src_f2_bottom &= 0xffff0000; s->src_f2_bottom &= 0xffff0000;
s->src_f2_bottom |= 0x0000ffff & value; s->src_f2_bottom |= 0x0000ffff & value;
break; break;
case 0xbd6: /* BOT_B2_U */ case 0xbd6: /* BOT_B2_U */
s->src_f2_bottom &= 0x0000ffff; s->src_f2_bottom &= 0x0000ffff;
s->src_f2_bottom |= (uint32_t) value << 16; s->src_f2_bottom |= (uint32_t) value << 16;
break; break;
case 0xbd8: /* DMA_LCD_SRC_EI_B1 */ case 0xbd8: /* DMA_LCD_SRC_EI_B1 */
s->element_index_f1 = value; s->element_index_f1 = value;
break; break;
case 0xbda: /* DMA_LCD_SRC_FI_B1_L */ case 0xbda: /* DMA_LCD_SRC_FI_B1_L */
s->frame_index_f1 &= 0xffff0000; s->frame_index_f1 &= 0xffff0000;
s->frame_index_f1 |= 0x0000ffff & value; s->frame_index_f1 |= 0x0000ffff & value;
break; break;
case 0xbf4: /* DMA_LCD_SRC_FI_B1_U */ case 0xbf4: /* DMA_LCD_SRC_FI_B1_U */
s->frame_index_f1 &= 0x0000ffff; s->frame_index_f1 &= 0x0000ffff;
s->frame_index_f1 |= (uint32_t) value << 16; s->frame_index_f1 |= (uint32_t) value << 16;
break; break;
case 0xbdc: /* DMA_LCD_SRC_EI_B2 */ case 0xbdc: /* DMA_LCD_SRC_EI_B2 */
s->element_index_f2 = value; s->element_index_f2 = value;
break; break;
case 0xbde: /* DMA_LCD_SRC_FI_B2_L */ case 0xbde: /* DMA_LCD_SRC_FI_B2_L */
s->frame_index_f2 &= 0xffff0000; s->frame_index_f2 &= 0xffff0000;
s->frame_index_f2 |= 0x0000ffff & value; s->frame_index_f2 |= 0x0000ffff & value;
break; break;
case 0xbf6: /* DMA_LCD_SRC_FI_B2_U */ case 0xbf6: /* DMA_LCD_SRC_FI_B2_U */
s->frame_index_f2 &= 0x0000ffff; s->frame_index_f2 &= 0x0000ffff;
s->frame_index_f2 |= (uint32_t) value << 16; s->frame_index_f2 |= (uint32_t) value << 16;
break; break;
case 0xbe0: /* DMA_LCD_SRC_EN_B1 */ case 0xbe0: /* DMA_LCD_SRC_EN_B1 */
s->elements_f1 = value; s->elements_f1 = value;
break; break;
case 0xbe4: /* DMA_LCD_SRC_FN_B1 */ case 0xbe4: /* DMA_LCD_SRC_FN_B1 */
s->frames_f1 = value; s->frames_f1 = value;
break; break;
case 0xbe2: /* DMA_LCD_SRC_EN_B2 */ case 0xbe2: /* DMA_LCD_SRC_EN_B2 */
s->elements_f2 = value; s->elements_f2 = value;
break; break;
case 0xbe6: /* DMA_LCD_SRC_FN_B2 */ case 0xbe6: /* DMA_LCD_SRC_FN_B2 */
s->frames_f2 = value; s->frames_f2 = value;
break; break;
case 0xbea: /* DMA_LCD_LCH_CTRL */ case 0xbea: /* DMA_LCD_LCH_CTRL */
s->lch_type = value & 0xf; s->lch_type = value & 0xf;
break; break;
@ -1133,7 +1133,7 @@ static int omap_dma_3_2_lcd_read(struct omap_dma_lcd_channel_s *s, int offset,
uint16_t *ret) uint16_t *ret)
{ {
switch (offset) { switch (offset) {
case 0xbc0: /* DMA_LCD_CSDP */ case 0xbc0: /* DMA_LCD_CSDP */
*ret = (s->brust_f2 << 14) | *ret = (s->brust_f2 << 14) |
(s->pack_f2 << 13) | (s->pack_f2 << 13) |
((s->data_type_f2 >> 1) << 11) | ((s->data_type_f2 >> 1) << 11) |
@ -1142,7 +1142,7 @@ static int omap_dma_3_2_lcd_read(struct omap_dma_lcd_channel_s *s, int offset,
((s->data_type_f1 >> 1) << 0); ((s->data_type_f1 >> 1) << 0);
break; break;
case 0xbc2: /* DMA_LCD_CCR */ case 0xbc2: /* DMA_LCD_CCR */
*ret = (s->mode_f2 << 14) | *ret = (s->mode_f2 << 14) |
(s->mode_f1 << 12) | (s->mode_f1 << 12) |
(s->end_prog << 11) | (s->end_prog << 11) |
@ -1154,7 +1154,7 @@ static int omap_dma_3_2_lcd_read(struct omap_dma_lcd_channel_s *s, int offset,
(s->bs << 4); (s->bs << 4);
break; break;
case 0xbc4: /* DMA_LCD_CTRL */ case 0xbc4: /* DMA_LCD_CTRL */
qemu_irq_lower(s->irq); qemu_irq_lower(s->irq);
*ret = (s->dst << 8) | *ret = (s->dst << 8) |
((s->src & 0x6) << 5) | ((s->src & 0x6) << 5) |
@ -1163,79 +1163,79 @@ static int omap_dma_3_2_lcd_read(struct omap_dma_lcd_channel_s *s, int offset,
s->dual; s->dual;
break; break;
case 0xbc8: /* TOP_B1_L */ case 0xbc8: /* TOP_B1_L */
*ret = s->src_f1_top & 0xffff; *ret = s->src_f1_top & 0xffff;
break; break;
case 0xbca: /* TOP_B1_U */ case 0xbca: /* TOP_B1_U */
*ret = s->src_f1_top >> 16; *ret = s->src_f1_top >> 16;
break; break;
case 0xbcc: /* BOT_B1_L */ case 0xbcc: /* BOT_B1_L */
*ret = s->src_f1_bottom & 0xffff; *ret = s->src_f1_bottom & 0xffff;
break; break;
case 0xbce: /* BOT_B1_U */ case 0xbce: /* BOT_B1_U */
*ret = s->src_f1_bottom >> 16; *ret = s->src_f1_bottom >> 16;
break; break;
case 0xbd0: /* TOP_B2_L */ case 0xbd0: /* TOP_B2_L */
*ret = s->src_f2_top & 0xffff; *ret = s->src_f2_top & 0xffff;
break; break;
case 0xbd2: /* TOP_B2_U */ case 0xbd2: /* TOP_B2_U */
*ret = s->src_f2_top >> 16; *ret = s->src_f2_top >> 16;
break; break;
case 0xbd4: /* BOT_B2_L */ case 0xbd4: /* BOT_B2_L */
*ret = s->src_f2_bottom & 0xffff; *ret = s->src_f2_bottom & 0xffff;
break; break;
case 0xbd6: /* BOT_B2_U */ case 0xbd6: /* BOT_B2_U */
*ret = s->src_f2_bottom >> 16; *ret = s->src_f2_bottom >> 16;
break; break;
case 0xbd8: /* DMA_LCD_SRC_EI_B1 */ case 0xbd8: /* DMA_LCD_SRC_EI_B1 */
*ret = s->element_index_f1; *ret = s->element_index_f1;
break; break;
case 0xbda: /* DMA_LCD_SRC_FI_B1_L */ case 0xbda: /* DMA_LCD_SRC_FI_B1_L */
*ret = s->frame_index_f1 & 0xffff; *ret = s->frame_index_f1 & 0xffff;
break; break;
case 0xbf4: /* DMA_LCD_SRC_FI_B1_U */ case 0xbf4: /* DMA_LCD_SRC_FI_B1_U */
*ret = s->frame_index_f1 >> 16; *ret = s->frame_index_f1 >> 16;
break; break;
case 0xbdc: /* DMA_LCD_SRC_EI_B2 */ case 0xbdc: /* DMA_LCD_SRC_EI_B2 */
*ret = s->element_index_f2; *ret = s->element_index_f2;
break; break;
case 0xbde: /* DMA_LCD_SRC_FI_B2_L */ case 0xbde: /* DMA_LCD_SRC_FI_B2_L */
*ret = s->frame_index_f2 & 0xffff; *ret = s->frame_index_f2 & 0xffff;
break; break;
case 0xbf6: /* DMA_LCD_SRC_FI_B2_U */ case 0xbf6: /* DMA_LCD_SRC_FI_B2_U */
*ret = s->frame_index_f2 >> 16; *ret = s->frame_index_f2 >> 16;
break; break;
case 0xbe0: /* DMA_LCD_SRC_EN_B1 */ case 0xbe0: /* DMA_LCD_SRC_EN_B1 */
*ret = s->elements_f1; *ret = s->elements_f1;
break; break;
case 0xbe4: /* DMA_LCD_SRC_FN_B1 */ case 0xbe4: /* DMA_LCD_SRC_FN_B1 */
*ret = s->frames_f1; *ret = s->frames_f1;
break; break;
case 0xbe2: /* DMA_LCD_SRC_EN_B2 */ case 0xbe2: /* DMA_LCD_SRC_EN_B2 */
*ret = s->elements_f2; *ret = s->elements_f2;
break; break;
case 0xbe6: /* DMA_LCD_SRC_FN_B2 */ case 0xbe6: /* DMA_LCD_SRC_FN_B2 */
*ret = s->frames_f2; *ret = s->frames_f2;
break; break;
case 0xbea: /* DMA_LCD_LCH_CTRL */ case 0xbea: /* DMA_LCD_LCH_CTRL */
*ret = s->lch_type; *ret = s->lch_type;
break; break;
@ -1249,7 +1249,7 @@ static int omap_dma_3_1_lcd_write(struct omap_dma_lcd_channel_s *s, int offset,
uint16_t value) uint16_t value)
{ {
switch (offset) { switch (offset) {
case 0x300: /* SYS_DMA_LCD_CTRL */ case 0x300: /* SYS_DMA_LCD_CTRL */
s->src = (value & 0x40) ? imif : emiff; s->src = (value & 0x40) ? imif : emiff;
s->condition = 0; s->condition = 0;
/* Assume no bus errors and thus no BUS_ERROR irq bits. */ /* Assume no bus errors and thus no BUS_ERROR irq bits. */
@ -1257,42 +1257,42 @@ static int omap_dma_3_1_lcd_write(struct omap_dma_lcd_channel_s *s, int offset,
s->dual = value & 1; s->dual = value & 1;
break; break;
case 0x302: /* SYS_DMA_LCD_TOP_F1_L */ case 0x302: /* SYS_DMA_LCD_TOP_F1_L */
s->src_f1_top &= 0xffff0000; s->src_f1_top &= 0xffff0000;
s->src_f1_top |= 0x0000ffff & value; s->src_f1_top |= 0x0000ffff & value;
break; break;
case 0x304: /* SYS_DMA_LCD_TOP_F1_U */ case 0x304: /* SYS_DMA_LCD_TOP_F1_U */
s->src_f1_top &= 0x0000ffff; s->src_f1_top &= 0x0000ffff;
s->src_f1_top |= (uint32_t)value << 16; s->src_f1_top |= (uint32_t)value << 16;
break; break;
case 0x306: /* SYS_DMA_LCD_BOT_F1_L */ case 0x306: /* SYS_DMA_LCD_BOT_F1_L */
s->src_f1_bottom &= 0xffff0000; s->src_f1_bottom &= 0xffff0000;
s->src_f1_bottom |= 0x0000ffff & value; s->src_f1_bottom |= 0x0000ffff & value;
break; break;
case 0x308: /* SYS_DMA_LCD_BOT_F1_U */ case 0x308: /* SYS_DMA_LCD_BOT_F1_U */
s->src_f1_bottom &= 0x0000ffff; s->src_f1_bottom &= 0x0000ffff;
s->src_f1_bottom |= (uint32_t)value << 16; s->src_f1_bottom |= (uint32_t)value << 16;
break; break;
case 0x30a: /* SYS_DMA_LCD_TOP_F2_L */ case 0x30a: /* SYS_DMA_LCD_TOP_F2_L */
s->src_f2_top &= 0xffff0000; s->src_f2_top &= 0xffff0000;
s->src_f2_top |= 0x0000ffff & value; s->src_f2_top |= 0x0000ffff & value;
break; break;
case 0x30c: /* SYS_DMA_LCD_TOP_F2_U */ case 0x30c: /* SYS_DMA_LCD_TOP_F2_U */
s->src_f2_top &= 0x0000ffff; s->src_f2_top &= 0x0000ffff;
s->src_f2_top |= (uint32_t)value << 16; s->src_f2_top |= (uint32_t)value << 16;
break; break;
case 0x30e: /* SYS_DMA_LCD_BOT_F2_L */ case 0x30e: /* SYS_DMA_LCD_BOT_F2_L */
s->src_f2_bottom &= 0xffff0000; s->src_f2_bottom &= 0xffff0000;
s->src_f2_bottom |= 0x0000ffff & value; s->src_f2_bottom |= 0x0000ffff & value;
break; break;
case 0x310: /* SYS_DMA_LCD_BOT_F2_U */ case 0x310: /* SYS_DMA_LCD_BOT_F2_U */
s->src_f2_bottom &= 0x0000ffff; s->src_f2_bottom &= 0x0000ffff;
s->src_f2_bottom |= (uint32_t)value << 16; s->src_f2_bottom |= (uint32_t)value << 16;
break; break;
@ -1309,7 +1309,7 @@ static int omap_dma_3_1_lcd_read(struct omap_dma_lcd_channel_s *s, int offset,
int i; int i;
switch (offset) { switch (offset) {
case 0x300: /* SYS_DMA_LCD_CTRL */ case 0x300: /* SYS_DMA_LCD_CTRL */
i = s->condition; i = s->condition;
s->condition = 0; s->condition = 0;
qemu_irq_lower(s->irq); qemu_irq_lower(s->irq);
@ -1317,35 +1317,35 @@ static int omap_dma_3_1_lcd_read(struct omap_dma_lcd_channel_s *s, int offset,
(s->interrupts << 1) | s->dual; (s->interrupts << 1) | s->dual;
break; break;
case 0x302: /* SYS_DMA_LCD_TOP_F1_L */ case 0x302: /* SYS_DMA_LCD_TOP_F1_L */
*ret = s->src_f1_top & 0xffff; *ret = s->src_f1_top & 0xffff;
break; break;
case 0x304: /* SYS_DMA_LCD_TOP_F1_U */ case 0x304: /* SYS_DMA_LCD_TOP_F1_U */
*ret = s->src_f1_top >> 16; *ret = s->src_f1_top >> 16;
break; break;
case 0x306: /* SYS_DMA_LCD_BOT_F1_L */ case 0x306: /* SYS_DMA_LCD_BOT_F1_L */
*ret = s->src_f1_bottom & 0xffff; *ret = s->src_f1_bottom & 0xffff;
break; break;
case 0x308: /* SYS_DMA_LCD_BOT_F1_U */ case 0x308: /* SYS_DMA_LCD_BOT_F1_U */
*ret = s->src_f1_bottom >> 16; *ret = s->src_f1_bottom >> 16;
break; break;
case 0x30a: /* SYS_DMA_LCD_TOP_F2_L */ case 0x30a: /* SYS_DMA_LCD_TOP_F2_L */
*ret = s->src_f2_top & 0xffff; *ret = s->src_f2_top & 0xffff;
break; break;
case 0x30c: /* SYS_DMA_LCD_TOP_F2_U */ case 0x30c: /* SYS_DMA_LCD_TOP_F2_U */
*ret = s->src_f2_top >> 16; *ret = s->src_f2_top >> 16;
break; break;
case 0x30e: /* SYS_DMA_LCD_BOT_F2_L */ case 0x30e: /* SYS_DMA_LCD_BOT_F2_L */
*ret = s->src_f2_bottom & 0xffff; *ret = s->src_f2_bottom & 0xffff;
break; break;
case 0x310: /* SYS_DMA_LCD_BOT_F2_U */ case 0x310: /* SYS_DMA_LCD_BOT_F2_U */
*ret = s->src_f2_bottom >> 16; *ret = s->src_f2_bottom >> 16;
break; break;
@ -1358,18 +1358,18 @@ static int omap_dma_3_1_lcd_read(struct omap_dma_lcd_channel_s *s, int offset,
static int omap_dma_sys_write(struct omap_dma_s *s, int offset, uint16_t value) static int omap_dma_sys_write(struct omap_dma_s *s, int offset, uint16_t value)
{ {
switch (offset) { switch (offset) {
case 0x400: /* SYS_DMA_GCR */ case 0x400: /* SYS_DMA_GCR */
s->gcr = value; s->gcr = value;
break; break;
case 0x404: /* DMA_GSCR */ case 0x404: /* DMA_GSCR */
if (value & 0x8) if (value & 0x8)
omap_dma_disable_3_1_mapping(s); omap_dma_disable_3_1_mapping(s);
else else
omap_dma_enable_3_1_mapping(s); omap_dma_enable_3_1_mapping(s);
break; break;
case 0x408: /* DMA_GRST */ case 0x408: /* DMA_GRST */
if (value & 0x1) if (value & 0x1)
omap_dma_reset(s->dma); omap_dma_reset(s->dma);
break; break;
@ -1384,57 +1384,57 @@ static int omap_dma_sys_read(struct omap_dma_s *s, int offset,
uint16_t *ret) uint16_t *ret)
{ {
switch (offset) { switch (offset) {
case 0x400: /* SYS_DMA_GCR */ case 0x400: /* SYS_DMA_GCR */
*ret = s->gcr; *ret = s->gcr;
break; break;
case 0x404: /* DMA_GSCR */ case 0x404: /* DMA_GSCR */
*ret = s->omap_3_1_mapping_disabled << 3; *ret = s->omap_3_1_mapping_disabled << 3;
break; break;
case 0x408: /* DMA_GRST */ case 0x408: /* DMA_GRST */
*ret = 0; *ret = 0;
break; break;
case 0x442: /* DMA_HW_ID */ case 0x442: /* DMA_HW_ID */
case 0x444: /* DMA_PCh2_ID */ case 0x444: /* DMA_PCh2_ID */
case 0x446: /* DMA_PCh0_ID */ case 0x446: /* DMA_PCh0_ID */
case 0x448: /* DMA_PCh1_ID */ case 0x448: /* DMA_PCh1_ID */
case 0x44a: /* DMA_PChG_ID */ case 0x44a: /* DMA_PChG_ID */
case 0x44c: /* DMA_PChD_ID */ case 0x44c: /* DMA_PChD_ID */
*ret = 1; *ret = 1;
break; break;
case 0x44e: /* DMA_CAPS_0_U */ case 0x44e: /* DMA_CAPS_0_U */
*ret = (s->caps[0] >> 16) & 0xffff; *ret = (s->caps[0] >> 16) & 0xffff;
break; break;
case 0x450: /* DMA_CAPS_0_L */ case 0x450: /* DMA_CAPS_0_L */
*ret = (s->caps[0] >> 0) & 0xffff; *ret = (s->caps[0] >> 0) & 0xffff;
break; break;
case 0x452: /* DMA_CAPS_1_U */ case 0x452: /* DMA_CAPS_1_U */
*ret = (s->caps[1] >> 16) & 0xffff; *ret = (s->caps[1] >> 16) & 0xffff;
break; break;
case 0x454: /* DMA_CAPS_1_L */ case 0x454: /* DMA_CAPS_1_L */
*ret = (s->caps[1] >> 0) & 0xffff; *ret = (s->caps[1] >> 0) & 0xffff;
break; break;
case 0x456: /* DMA_CAPS_2 */ case 0x456: /* DMA_CAPS_2 */
*ret = s->caps[2]; *ret = s->caps[2];
break; break;
case 0x458: /* DMA_CAPS_3 */ case 0x458: /* DMA_CAPS_3 */
*ret = s->caps[3]; *ret = s->caps[3];
break; break;
case 0x45a: /* DMA_CAPS_4 */ case 0x45a: /* DMA_CAPS_4 */
*ret = s->caps[4]; *ret = s->caps[4];
break; break;
case 0x460: /* DMA_PCh2_SR */ case 0x460: /* DMA_PCh2_SR */
case 0x480: /* DMA_PCh0_SR */ case 0x480: /* DMA_PCh0_SR */
case 0x482: /* DMA_PCh1_SR */ case 0x482: /* DMA_PCh1_SR */
case 0x4c0: /* DMA_PChD_SR_0 */ case 0x4c0: /* DMA_PChD_SR_0 */
qemu_log_mask(LOG_UNIMP, qemu_log_mask(LOG_UNIMP,
"%s: Physical Channel Status Registers not implemented\n", "%s: Physical Channel Status Registers not implemented\n",
__func__); __func__);
@ -1582,38 +1582,38 @@ static void omap_dma_setcaps(struct omap_dma_s *s)
case omap_dma_3_2: case omap_dma_3_2:
/* XXX Only available for sDMA */ /* XXX Only available for sDMA */
s->caps[0] = s->caps[0] =
(1 << 19) | /* Constant Fill Capability */ (1 << 19) | /* Constant Fill Capability */
(1 << 18); /* Transparent BLT Capability */ (1 << 18); /* Transparent BLT Capability */
s->caps[1] = s->caps[1] =
(1 << 1); /* 1-bit palettized capability (DMA 3.2 only) */ (1 << 1); /* 1-bit palettized capability (DMA 3.2 only) */
s->caps[2] = s->caps[2] =
(1 << 8) | /* SEPARATE_SRC_AND_DST_INDEX_CPBLTY */ (1 << 8) | /* SEPARATE_SRC_AND_DST_INDEX_CPBLTY */
(1 << 7) | /* DST_DOUBLE_INDEX_ADRS_CPBLTY */ (1 << 7) | /* DST_DOUBLE_INDEX_ADRS_CPBLTY */
(1 << 6) | /* DST_SINGLE_INDEX_ADRS_CPBLTY */ (1 << 6) | /* DST_SINGLE_INDEX_ADRS_CPBLTY */
(1 << 5) | /* DST_POST_INCRMNT_ADRS_CPBLTY */ (1 << 5) | /* DST_POST_INCRMNT_ADRS_CPBLTY */
(1 << 4) | /* DST_CONST_ADRS_CPBLTY */ (1 << 4) | /* DST_CONST_ADRS_CPBLTY */
(1 << 3) | /* SRC_DOUBLE_INDEX_ADRS_CPBLTY */ (1 << 3) | /* SRC_DOUBLE_INDEX_ADRS_CPBLTY */
(1 << 2) | /* SRC_SINGLE_INDEX_ADRS_CPBLTY */ (1 << 2) | /* SRC_SINGLE_INDEX_ADRS_CPBLTY */
(1 << 1) | /* SRC_POST_INCRMNT_ADRS_CPBLTY */ (1 << 1) | /* SRC_POST_INCRMNT_ADRS_CPBLTY */
(1 << 0); /* SRC_CONST_ADRS_CPBLTY */ (1 << 0); /* SRC_CONST_ADRS_CPBLTY */
s->caps[3] = s->caps[3] =
(1 << 6) | /* BLOCK_SYNCHR_CPBLTY (DMA 4 only) */ (1 << 6) | /* BLOCK_SYNCHR_CPBLTY (DMA 4 only) */
(1 << 7) | /* PKT_SYNCHR_CPBLTY (DMA 4 only) */ (1 << 7) | /* PKT_SYNCHR_CPBLTY (DMA 4 only) */
(1 << 5) | /* CHANNEL_CHAINING_CPBLTY */ (1 << 5) | /* CHANNEL_CHAINING_CPBLTY */
(1 << 4) | /* LCh_INTERLEAVE_CPBLTY */ (1 << 4) | /* LCh_INTERLEAVE_CPBLTY */
(1 << 3) | /* AUTOINIT_REPEAT_CPBLTY (DMA 3.2 only) */ (1 << 3) | /* AUTOINIT_REPEAT_CPBLTY (DMA 3.2 only) */
(1 << 2) | /* AUTOINIT_ENDPROG_CPBLTY (DMA 3.2 only) */ (1 << 2) | /* AUTOINIT_ENDPROG_CPBLTY (DMA 3.2 only) */
(1 << 1) | /* FRAME_SYNCHR_CPBLTY */ (1 << 1) | /* FRAME_SYNCHR_CPBLTY */
(1 << 0); /* ELMNT_SYNCHR_CPBLTY */ (1 << 0); /* ELMNT_SYNCHR_CPBLTY */
s->caps[4] = s->caps[4] =
(1 << 7) | /* PKT_INTERRUPT_CPBLTY (DMA 4 only) */ (1 << 7) | /* PKT_INTERRUPT_CPBLTY (DMA 4 only) */
(1 << 6) | /* SYNC_STATUS_CPBLTY */ (1 << 6) | /* SYNC_STATUS_CPBLTY */
(1 << 5) | /* BLOCK_INTERRUPT_CPBLTY */ (1 << 5) | /* BLOCK_INTERRUPT_CPBLTY */
(1 << 4) | /* LAST_FRAME_INTERRUPT_CPBLTY */ (1 << 4) | /* LAST_FRAME_INTERRUPT_CPBLTY */
(1 << 3) | /* FRAME_INTERRUPT_CPBLTY */ (1 << 3) | /* FRAME_INTERRUPT_CPBLTY */
(1 << 2) | /* HALF_FRAME_INTERRUPT_CPBLTY */ (1 << 2) | /* HALF_FRAME_INTERRUPT_CPBLTY */
(1 << 1) | /* EVENT_DROP_INTERRUPT_CPBLTY */ (1 << 1) | /* EVENT_DROP_INTERRUPT_CPBLTY */
(1 << 0); /* TIMEOUT_INTERRUPT_CPBLTY (DMA 3.2 only) */ (1 << 0); /* TIMEOUT_INTERRUPT_CPBLTY (DMA 3.2 only) */
break; break;
} }
} }

View File

@ -80,25 +80,25 @@ static uint64_t omap_gpio_read(void *opaque, hwaddr addr,
} }
switch (offset) { switch (offset) {
case 0x00: /* DATA_INPUT */ case 0x00: /* DATA_INPUT */
return s->inputs & s->pins; return s->inputs & s->pins;
case 0x04: /* DATA_OUTPUT */ case 0x04: /* DATA_OUTPUT */
return s->outputs; return s->outputs;
case 0x08: /* DIRECTION_CONTROL */ case 0x08: /* DIRECTION_CONTROL */
return s->dir; return s->dir;
case 0x0c: /* INTERRUPT_CONTROL */ case 0x0c: /* INTERRUPT_CONTROL */
return s->edge; return s->edge;
case 0x10: /* INTERRUPT_MASK */ case 0x10: /* INTERRUPT_MASK */
return s->mask; return s->mask;
case 0x14: /* INTERRUPT_STATUS */ case 0x14: /* INTERRUPT_STATUS */
return s->ints; return s->ints;
case 0x18: /* PIN_CONTROL (not in OMAP310) */ case 0x18: /* PIN_CONTROL (not in OMAP310) */
OMAP_BAD_REG(addr); OMAP_BAD_REG(addr);
return s->pins; return s->pins;
} }
@ -121,11 +121,11 @@ static void omap_gpio_write(void *opaque, hwaddr addr,
} }
switch (offset) { switch (offset) {
case 0x00: /* DATA_INPUT */ case 0x00: /* DATA_INPUT */
OMAP_RO_REG(addr); OMAP_RO_REG(addr);
return; return;
case 0x04: /* DATA_OUTPUT */ case 0x04: /* DATA_OUTPUT */
diff = (s->outputs ^ value) & ~s->dir; diff = (s->outputs ^ value) & ~s->dir;
s->outputs = value; s->outputs = value;
while ((ln = ctz32(diff)) != 32) { while ((ln = ctz32(diff)) != 32) {
@ -135,7 +135,7 @@ static void omap_gpio_write(void *opaque, hwaddr addr,
} }
break; break;
case 0x08: /* DIRECTION_CONTROL */ case 0x08: /* DIRECTION_CONTROL */
diff = s->outputs & (s->dir ^ value); diff = s->outputs & (s->dir ^ value);
s->dir = value; s->dir = value;
@ -147,21 +147,21 @@ static void omap_gpio_write(void *opaque, hwaddr addr,
} }
break; break;
case 0x0c: /* INTERRUPT_CONTROL */ case 0x0c: /* INTERRUPT_CONTROL */
s->edge = value; s->edge = value;
break; break;
case 0x10: /* INTERRUPT_MASK */ case 0x10: /* INTERRUPT_MASK */
s->mask = value; s->mask = value;
break; break;
case 0x14: /* INTERRUPT_STATUS */ case 0x14: /* INTERRUPT_STATUS */
s->ints &= ~value; s->ints &= ~value;
if (!s->ints) if (!s->ints)
qemu_irq_lower(s->irq); qemu_irq_lower(s->irq);
break; break;
case 0x18: /* PIN_CONTROL (not in OMAP310 TRM) */ case 0x18: /* PIN_CONTROL (not in OMAP310 TRM) */
OMAP_BAD_REG(addr); OMAP_BAD_REG(addr);
s->pins = value; s->pins = value;
break; break;

View File

@ -55,16 +55,16 @@ struct OMAPI2CState {
uint16_t test; uint16_t test;
}; };
#define OMAP2_INTR_REV 0x34 #define OMAP2_INTR_REV 0x34
#define OMAP2_GC_REV 0x34 #define OMAP2_GC_REV 0x34
static void omap_i2c_interrupts_update(OMAPI2CState *s) static void omap_i2c_interrupts_update(OMAPI2CState *s)
{ {
qemu_set_irq(s->irq, s->stat & s->mask); qemu_set_irq(s->irq, s->stat & s->mask);
if ((s->dma >> 15) & 1) /* RDMA_EN */ if ((s->dma >> 15) & 1) /* RDMA_EN */
qemu_set_irq(s->drq[0], (s->stat >> 3) & 1); /* RRDY */ qemu_set_irq(s->drq[0], (s->stat >> 3) & 1); /* RRDY */
if ((s->dma >> 7) & 1) /* XDMA_EN */ if ((s->dma >> 7) & 1) /* XDMA_EN */
qemu_set_irq(s->drq[1], (s->stat >> 4) & 1); /* XRDY */ qemu_set_irq(s->drq[1], (s->stat >> 4) & 1); /* XRDY */
} }
static void omap_i2c_fifo_run(OMAPI2CState *s) static void omap_i2c_fifo_run(OMAPI2CState *s)
@ -74,25 +74,25 @@ static void omap_i2c_fifo_run(OMAPI2CState *s)
if (!i2c_bus_busy(s->bus)) if (!i2c_bus_busy(s->bus))
return; return;
if ((s->control >> 2) & 1) { /* RM */ if ((s->control >> 2) & 1) { /* RM */
if ((s->control >> 1) & 1) { /* STP */ if ((s->control >> 1) & 1) { /* STP */
i2c_end_transfer(s->bus); i2c_end_transfer(s->bus);
s->control &= ~(1 << 1); /* STP */ s->control &= ~(1 << 1); /* STP */
s->count_cur = s->count; s->count_cur = s->count;
s->txlen = 0; s->txlen = 0;
} else if ((s->control >> 9) & 1) { /* TRX */ } else if ((s->control >> 9) & 1) { /* TRX */
while (ack && s->txlen) while (ack && s->txlen)
ack = (i2c_send(s->bus, ack = (i2c_send(s->bus,
(s->fifo >> ((-- s->txlen) << 3)) & (s->fifo >> ((-- s->txlen) << 3)) &
0xff) >= 0); 0xff) >= 0);
s->stat |= 1 << 4; /* XRDY */ s->stat |= 1 << 4; /* XRDY */
} else { } else {
while (s->rxlen < 4) while (s->rxlen < 4)
s->fifo |= i2c_recv(s->bus) << ((s->rxlen ++) << 3); s->fifo |= i2c_recv(s->bus) << ((s->rxlen ++) << 3);
s->stat |= 1 << 3; /* RRDY */ s->stat |= 1 << 3; /* RRDY */
} }
} else { } else {
if ((s->control >> 9) & 1) { /* TRX */ if ((s->control >> 9) & 1) { /* TRX */
while (ack && s->count_cur && s->txlen) { while (ack && s->count_cur && s->txlen) {
ack = (i2c_send(s->bus, ack = (i2c_send(s->bus,
(s->fifo >> ((-- s->txlen) << 3)) & (s->fifo >> ((-- s->txlen) << 3)) &
@ -100,12 +100,12 @@ static void omap_i2c_fifo_run(OMAPI2CState *s)
s->count_cur --; s->count_cur --;
} }
if (ack && s->count_cur) if (ack && s->count_cur)
s->stat |= 1 << 4; /* XRDY */ s->stat |= 1 << 4; /* XRDY */
else else
s->stat &= ~(1 << 4); /* XRDY */ s->stat &= ~(1 << 4); /* XRDY */
if (!s->count_cur) { if (!s->count_cur) {
s->stat |= 1 << 2; /* ARDY */ s->stat |= 1 << 2; /* ARDY */
s->control &= ~(1 << 10); /* MST */ s->control &= ~(1 << 10); /* MST */
} }
} else { } else {
while (s->count_cur && s->rxlen < 4) { while (s->count_cur && s->rxlen < 4) {
@ -113,26 +113,26 @@ static void omap_i2c_fifo_run(OMAPI2CState *s)
s->count_cur --; s->count_cur --;
} }
if (s->rxlen) if (s->rxlen)
s->stat |= 1 << 3; /* RRDY */ s->stat |= 1 << 3; /* RRDY */
else else
s->stat &= ~(1 << 3); /* RRDY */ s->stat &= ~(1 << 3); /* RRDY */
} }
if (!s->count_cur) { if (!s->count_cur) {
if ((s->control >> 1) & 1) { /* STP */ if ((s->control >> 1) & 1) { /* STP */
i2c_end_transfer(s->bus); i2c_end_transfer(s->bus);
s->control &= ~(1 << 1); /* STP */ s->control &= ~(1 << 1); /* STP */
s->count_cur = s->count; s->count_cur = s->count;
s->txlen = 0; s->txlen = 0;
} else { } else {
s->stat |= 1 << 2; /* ARDY */ s->stat |= 1 << 2; /* ARDY */
s->control &= ~(1 << 10); /* MST */ s->control &= ~(1 << 10); /* MST */
} }
} }
} }
s->stat |= (!ack) << 1; /* NACK */ s->stat |= (!ack) << 1; /* NACK */
if (!ack) if (!ack)
s->control &= ~(1 << 1); /* STP */ s->control &= ~(1 << 1); /* STP */
} }
static void omap_i2c_reset(DeviceState *dev) static void omap_i2c_reset(DeviceState *dev)
@ -163,16 +163,16 @@ static uint32_t omap_i2c_read(void *opaque, hwaddr addr)
uint16_t ret; uint16_t ret;
switch (offset) { switch (offset) {
case 0x00: /* I2C_REV */ case 0x00: /* I2C_REV */
return s->revision; /* REV */ return s->revision; /* REV */
case 0x04: /* I2C_IE */ case 0x04: /* I2C_IE */
return s->mask; return s->mask;
case 0x08: /* I2C_STAT */ case 0x08: /* I2C_STAT */
return s->stat | (i2c_bus_busy(s->bus) << 12); return s->stat | (i2c_bus_busy(s->bus) << 12);
case 0x0c: /* I2C_IV */ case 0x0c: /* I2C_IV */
if (s->revision >= OMAP2_INTR_REV) if (s->revision >= OMAP2_INTR_REV)
break; break;
ret = ctz32(s->stat & s->mask); ret = ctz32(s->stat & s->mask);
@ -185,18 +185,18 @@ static uint32_t omap_i2c_read(void *opaque, hwaddr addr)
omap_i2c_interrupts_update(s); omap_i2c_interrupts_update(s);
return ret; return ret;
case 0x10: /* I2C_SYSS */ case 0x10: /* I2C_SYSS */
return (s->control >> 15) & 1; /* I2C_EN */ return (s->control >> 15) & 1; /* I2C_EN */
case 0x14: /* I2C_BUF */ case 0x14: /* I2C_BUF */
return s->dma; return s->dma;
case 0x18: /* I2C_CNT */ case 0x18: /* I2C_CNT */
return s->count_cur; /* DCOUNT */ return s->count_cur; /* DCOUNT */
case 0x1c: /* I2C_DATA */ case 0x1c: /* I2C_DATA */
ret = 0; ret = 0;
if (s->control & (1 << 14)) { /* BE */ if (s->control & (1 << 14)) { /* BE */
ret |= ((s->fifo >> 0) & 0xff) << 8; ret |= ((s->fifo >> 0) & 0xff) << 8;
ret |= ((s->fifo >> 8) & 0xff) << 0; ret |= ((s->fifo >> 8) & 0xff) << 0;
} else { } else {
@ -204,7 +204,7 @@ static uint32_t omap_i2c_read(void *opaque, hwaddr addr)
ret |= ((s->fifo >> 0) & 0xff) << 0; ret |= ((s->fifo >> 0) & 0xff) << 0;
} }
if (s->rxlen == 1) { if (s->rxlen == 1) {
s->stat |= 1 << 15; /* SBD */ s->stat |= 1 << 15; /* SBD */
s->rxlen = 0; s->rxlen = 0;
} else if (s->rxlen > 1) { } else if (s->rxlen > 1) {
if (s->rxlen > 2) if (s->rxlen > 2)
@ -214,41 +214,41 @@ static uint32_t omap_i2c_read(void *opaque, hwaddr addr)
/* XXX: remote access (qualifier) error - what's that? */ /* XXX: remote access (qualifier) error - what's that? */
} }
if (!s->rxlen) { if (!s->rxlen) {
s->stat &= ~(1 << 3); /* RRDY */ s->stat &= ~(1 << 3); /* RRDY */
if (((s->control >> 10) & 1) && /* MST */ if (((s->control >> 10) & 1) && /* MST */
((~s->control >> 9) & 1)) { /* TRX */ ((~s->control >> 9) & 1)) { /* TRX */
s->stat |= 1 << 2; /* ARDY */ s->stat |= 1 << 2; /* ARDY */
s->control &= ~(1 << 10); /* MST */ s->control &= ~(1 << 10); /* MST */
} }
} }
s->stat &= ~(1 << 11); /* ROVR */ s->stat &= ~(1 << 11); /* ROVR */
omap_i2c_fifo_run(s); omap_i2c_fifo_run(s);
omap_i2c_interrupts_update(s); omap_i2c_interrupts_update(s);
return ret; return ret;
case 0x20: /* I2C_SYSC */ case 0x20: /* I2C_SYSC */
return 0; return 0;
case 0x24: /* I2C_CON */ case 0x24: /* I2C_CON */
return s->control; return s->control;
case 0x28: /* I2C_OA */ case 0x28: /* I2C_OA */
return s->addr[0]; return s->addr[0];
case 0x2c: /* I2C_SA */ case 0x2c: /* I2C_SA */
return s->addr[1]; return s->addr[1];
case 0x30: /* I2C_PSC */ case 0x30: /* I2C_PSC */
return s->divider; return s->divider;
case 0x34: /* I2C_SCLL */ case 0x34: /* I2C_SCLL */
return s->times[0]; return s->times[0];
case 0x38: /* I2C_SCLH */ case 0x38: /* I2C_SCLH */
return s->times[1]; return s->times[1];
case 0x3c: /* I2C_SYSTEST */ case 0x3c: /* I2C_SYSTEST */
if (s->test & (1 << 15)) { /* ST_EN */ if (s->test & (1 << 15)) { /* ST_EN */
s->test ^= 0xa; s->test ^= 0xa;
return s->test; return s->test;
} else } else
@ -267,17 +267,17 @@ static void omap_i2c_write(void *opaque, hwaddr addr,
int nack; int nack;
switch (offset) { switch (offset) {
case 0x00: /* I2C_REV */ case 0x00: /* I2C_REV */
case 0x0c: /* I2C_IV */ case 0x0c: /* I2C_IV */
case 0x10: /* I2C_SYSS */ case 0x10: /* I2C_SYSS */
OMAP_RO_REG(addr); OMAP_RO_REG(addr);
return; return;
case 0x04: /* I2C_IE */ case 0x04: /* I2C_IE */
s->mask = value & (s->revision < OMAP2_GC_REV ? 0x1f : 0x3f); s->mask = value & (s->revision < OMAP2_GC_REV ? 0x1f : 0x3f);
break; break;
case 0x08: /* I2C_STAT */ case 0x08: /* I2C_STAT */
if (s->revision < OMAP2_INTR_REV) { if (s->revision < OMAP2_INTR_REV) {
OMAP_RO_REG(addr); OMAP_RO_REG(addr);
return; return;
@ -288,40 +288,40 @@ static void omap_i2c_write(void *opaque, hwaddr addr,
omap_i2c_interrupts_update(s); omap_i2c_interrupts_update(s);
break; break;
case 0x14: /* I2C_BUF */ case 0x14: /* I2C_BUF */
s->dma = value & 0x8080; s->dma = value & 0x8080;
if (value & (1 << 15)) /* RDMA_EN */ if (value & (1 << 15)) /* RDMA_EN */
s->mask &= ~(1 << 3); /* RRDY_IE */ s->mask &= ~(1 << 3); /* RRDY_IE */
if (value & (1 << 7)) /* XDMA_EN */ if (value & (1 << 7)) /* XDMA_EN */
s->mask &= ~(1 << 4); /* XRDY_IE */ s->mask &= ~(1 << 4); /* XRDY_IE */
break; break;
case 0x18: /* I2C_CNT */ case 0x18: /* I2C_CNT */
s->count = value; /* DCOUNT */ s->count = value; /* DCOUNT */
break; break;
case 0x1c: /* I2C_DATA */ case 0x1c: /* I2C_DATA */
if (s->txlen > 2) { if (s->txlen > 2) {
/* XXX: remote access (qualifier) error - what's that? */ /* XXX: remote access (qualifier) error - what's that? */
break; break;
} }
s->fifo <<= 16; s->fifo <<= 16;
s->txlen += 2; s->txlen += 2;
if (s->control & (1 << 14)) { /* BE */ if (s->control & (1 << 14)) { /* BE */
s->fifo |= ((value >> 8) & 0xff) << 8; s->fifo |= ((value >> 8) & 0xff) << 8;
s->fifo |= ((value >> 0) & 0xff) << 0; s->fifo |= ((value >> 0) & 0xff) << 0;
} else { } else {
s->fifo |= ((value >> 0) & 0xff) << 8; s->fifo |= ((value >> 0) & 0xff) << 8;
s->fifo |= ((value >> 8) & 0xff) << 0; s->fifo |= ((value >> 8) & 0xff) << 0;
} }
s->stat &= ~(1 << 10); /* XUDF */ s->stat &= ~(1 << 10); /* XUDF */
if (s->txlen > 2) if (s->txlen > 2)
s->stat &= ~(1 << 4); /* XRDY */ s->stat &= ~(1 << 4); /* XRDY */
omap_i2c_fifo_run(s); omap_i2c_fifo_run(s);
omap_i2c_interrupts_update(s); omap_i2c_interrupts_update(s);
break; break;
case 0x20: /* I2C_SYSC */ case 0x20: /* I2C_SYSC */
if (s->revision < OMAP2_INTR_REV) { if (s->revision < OMAP2_INTR_REV) {
OMAP_BAD_REG(addr); OMAP_BAD_REG(addr);
return; return;
@ -332,9 +332,9 @@ static void omap_i2c_write(void *opaque, hwaddr addr,
} }
break; break;
case 0x24: /* I2C_CON */ case 0x24: /* I2C_CON */
s->control = value & 0xcf87; s->control = value & 0xcf87;
if (~value & (1 << 15)) { /* I2C_EN */ if (~value & (1 << 15)) { /* I2C_EN */
if (s->revision < OMAP2_INTR_REV) { if (s->revision < OMAP2_INTR_REV) {
omap_i2c_reset(DEVICE(s)); omap_i2c_reset(DEVICE(s));
} }
@ -351,14 +351,14 @@ static void omap_i2c_write(void *opaque, hwaddr addr,
__func__); __func__);
break; break;
} }
if ((value & (1 << 15)) && value & (1 << 0)) { /* STT */ if ((value & (1 << 15)) && value & (1 << 0)) { /* STT */
nack = !!i2c_start_transfer(s->bus, s->addr[1], /* SA */ nack = !!i2c_start_transfer(s->bus, s->addr[1], /* SA */
(~value >> 9) & 1); /* TRX */ (~value >> 9) & 1); /* TRX */
s->stat |= nack << 1; /* NACK */ s->stat |= nack << 1; /* NACK */
s->control &= ~(1 << 0); /* STT */ s->control &= ~(1 << 0); /* STT */
s->fifo = 0; s->fifo = 0;
if (nack) if (nack)
s->control &= ~(1 << 1); /* STP */ s->control &= ~(1 << 1); /* STP */
else { else {
s->count_cur = s->count; s->count_cur = s->count;
omap_i2c_fifo_run(s); omap_i2c_fifo_run(s);
@ -367,34 +367,34 @@ static void omap_i2c_write(void *opaque, hwaddr addr,
} }
break; break;
case 0x28: /* I2C_OA */ case 0x28: /* I2C_OA */
s->addr[0] = value & 0x3ff; s->addr[0] = value & 0x3ff;
break; break;
case 0x2c: /* I2C_SA */ case 0x2c: /* I2C_SA */
s->addr[1] = value & 0x3ff; s->addr[1] = value & 0x3ff;
break; break;
case 0x30: /* I2C_PSC */ case 0x30: /* I2C_PSC */
s->divider = value; s->divider = value;
break; break;
case 0x34: /* I2C_SCLL */ case 0x34: /* I2C_SCLL */
s->times[0] = value; s->times[0] = value;
break; break;
case 0x38: /* I2C_SCLH */ case 0x38: /* I2C_SCLH */
s->times[1] = value; s->times[1] = value;
break; break;
case 0x3c: /* I2C_SYSTEST */ case 0x3c: /* I2C_SYSTEST */
s->test = value & 0xf80f; s->test = value & 0xf80f;
if (value & (1 << 11)) /* SBB */ if (value & (1 << 11)) /* SBB */
if (s->revision >= OMAP2_INTR_REV) { if (s->revision >= OMAP2_INTR_REV) {
s->stat |= 0x3f; s->stat |= 0x3f;
omap_i2c_interrupts_update(s); omap_i2c_interrupts_update(s);
} }
if (value & (1 << 15)) { /* ST_EN */ if (value & (1 << 15)) { /* ST_EN */
qemu_log_mask(LOG_UNIMP, qemu_log_mask(LOG_UNIMP,
"%s: System Test not supported\n", __func__); "%s: System Test not supported\n", __func__);
} }
@ -413,7 +413,7 @@ static void omap_i2c_writeb(void *opaque, hwaddr addr,
int offset = addr & OMAP_MPUI_REG_MASK; int offset = addr & OMAP_MPUI_REG_MASK;
switch (offset) { switch (offset) {
case 0x1c: /* I2C_DATA */ case 0x1c: /* I2C_DATA */
if (s->txlen > 2) { if (s->txlen > 2) {
/* XXX: remote access (qualifier) error - what's that? */ /* XXX: remote access (qualifier) error - what's that? */
break; break;
@ -421,9 +421,9 @@ static void omap_i2c_writeb(void *opaque, hwaddr addr,
s->fifo <<= 8; s->fifo <<= 8;
s->txlen += 1; s->txlen += 1;
s->fifo |= value & 0xff; s->fifo |= value & 0xff;
s->stat &= ~(1 << 10); /* XUDF */ s->stat &= ~(1 << 10); /* XUDF */
if (s->txlen > 2) if (s->txlen > 2)
s->stat &= ~(1 << 4); /* XRDY */ s->stat &= ~(1 << 4); /* XRDY */
omap_i2c_fifo_run(s); omap_i2c_fifo_run(s);
omap_i2c_interrupts_update(s); omap_i2c_interrupts_update(s);
break; break;

View File

@ -102,8 +102,8 @@ static inline void omap_inth_update(OMAPIntcState *s, int is_fiq)
} }
} }
#define INT_FALLING_EDGE 0 #define INT_FALLING_EDGE 0
#define INT_LOW_LEVEL 1 #define INT_LOW_LEVEL 1
static void omap_set_intr(void *opaque, int irq, int req) static void omap_set_intr(void *opaque, int irq, int req)
{ {
@ -142,13 +142,13 @@ static uint64_t omap_inth_read(void *opaque, hwaddr addr,
offset &= 0xff; offset &= 0xff;
switch (offset) { switch (offset) {
case 0x00: /* ITR */ case 0x00: /* ITR */
return bank->irqs; return bank->irqs;
case 0x04: /* MIR */ case 0x04: /* MIR */
return bank->mask; return bank->mask;
case 0x10: /* SIR_IRQ_CODE */ case 0x10: /* SIR_IRQ_CODE */
case 0x14: /* SIR_FIQ_CODE */ case 0x14: /* SIR_FIQ_CODE */
if (bank_no != 0) if (bank_no != 0)
break; break;
@ -159,49 +159,49 @@ static uint64_t omap_inth_read(void *opaque, hwaddr addr,
bank->irqs &= ~(1 << i); bank->irqs &= ~(1 << i);
return line_no; return line_no;
case 0x18: /* CONTROL_REG */ case 0x18: /* CONTROL_REG */
if (bank_no != 0) if (bank_no != 0)
break; break;
return 0; return 0;
case 0x1c: /* ILR0 */ case 0x1c: /* ILR0 */
case 0x20: /* ILR1 */ case 0x20: /* ILR1 */
case 0x24: /* ILR2 */ case 0x24: /* ILR2 */
case 0x28: /* ILR3 */ case 0x28: /* ILR3 */
case 0x2c: /* ILR4 */ case 0x2c: /* ILR4 */
case 0x30: /* ILR5 */ case 0x30: /* ILR5 */
case 0x34: /* ILR6 */ case 0x34: /* ILR6 */
case 0x38: /* ILR7 */ case 0x38: /* ILR7 */
case 0x3c: /* ILR8 */ case 0x3c: /* ILR8 */
case 0x40: /* ILR9 */ case 0x40: /* ILR9 */
case 0x44: /* ILR10 */ case 0x44: /* ILR10 */
case 0x48: /* ILR11 */ case 0x48: /* ILR11 */
case 0x4c: /* ILR12 */ case 0x4c: /* ILR12 */
case 0x50: /* ILR13 */ case 0x50: /* ILR13 */
case 0x54: /* ILR14 */ case 0x54: /* ILR14 */
case 0x58: /* ILR15 */ case 0x58: /* ILR15 */
case 0x5c: /* ILR16 */ case 0x5c: /* ILR16 */
case 0x60: /* ILR17 */ case 0x60: /* ILR17 */
case 0x64: /* ILR18 */ case 0x64: /* ILR18 */
case 0x68: /* ILR19 */ case 0x68: /* ILR19 */
case 0x6c: /* ILR20 */ case 0x6c: /* ILR20 */
case 0x70: /* ILR21 */ case 0x70: /* ILR21 */
case 0x74: /* ILR22 */ case 0x74: /* ILR22 */
case 0x78: /* ILR23 */ case 0x78: /* ILR23 */
case 0x7c: /* ILR24 */ case 0x7c: /* ILR24 */
case 0x80: /* ILR25 */ case 0x80: /* ILR25 */
case 0x84: /* ILR26 */ case 0x84: /* ILR26 */
case 0x88: /* ILR27 */ case 0x88: /* ILR27 */
case 0x8c: /* ILR28 */ case 0x8c: /* ILR28 */
case 0x90: /* ILR29 */ case 0x90: /* ILR29 */
case 0x94: /* ILR30 */ case 0x94: /* ILR30 */
case 0x98: /* ILR31 */ case 0x98: /* ILR31 */
i = (offset - 0x1c) >> 2; i = (offset - 0x1c) >> 2;
return (bank->priority[i] << 2) | return (bank->priority[i] << 2) |
(((bank->sens_edge >> i) & 1) << 1) | (((bank->sens_edge >> i) & 1) << 1) |
((bank->fiq >> i) & 1); ((bank->fiq >> i) & 1);
case 0x9c: /* ISR */ case 0x9c: /* ISR */
return 0x00000000; return 0x00000000;
} }
@ -219,24 +219,24 @@ static void omap_inth_write(void *opaque, hwaddr addr,
offset &= 0xff; offset &= 0xff;
switch (offset) { switch (offset) {
case 0x00: /* ITR */ case 0x00: /* ITR */
/* Important: ignore the clearing if the IRQ is level-triggered and /* Important: ignore the clearing if the IRQ is level-triggered and
the input bit is 1 */ the input bit is 1 */
bank->irqs &= value | (bank->inputs & bank->sens_edge); bank->irqs &= value | (bank->inputs & bank->sens_edge);
return; return;
case 0x04: /* MIR */ case 0x04: /* MIR */
bank->mask = value; bank->mask = value;
omap_inth_update(s, 0); omap_inth_update(s, 0);
omap_inth_update(s, 1); omap_inth_update(s, 1);
return; return;
case 0x10: /* SIR_IRQ_CODE */ case 0x10: /* SIR_IRQ_CODE */
case 0x14: /* SIR_FIQ_CODE */ case 0x14: /* SIR_FIQ_CODE */
OMAP_RO_REG(addr); OMAP_RO_REG(addr);
break; break;
case 0x18: /* CONTROL_REG */ case 0x18: /* CONTROL_REG */
if (bank_no != 0) if (bank_no != 0)
break; break;
if (value & 2) { if (value & 2) {
@ -251,38 +251,38 @@ static void omap_inth_write(void *opaque, hwaddr addr,
} }
return; return;
case 0x1c: /* ILR0 */ case 0x1c: /* ILR0 */
case 0x20: /* ILR1 */ case 0x20: /* ILR1 */
case 0x24: /* ILR2 */ case 0x24: /* ILR2 */
case 0x28: /* ILR3 */ case 0x28: /* ILR3 */
case 0x2c: /* ILR4 */ case 0x2c: /* ILR4 */
case 0x30: /* ILR5 */ case 0x30: /* ILR5 */
case 0x34: /* ILR6 */ case 0x34: /* ILR6 */
case 0x38: /* ILR7 */ case 0x38: /* ILR7 */
case 0x3c: /* ILR8 */ case 0x3c: /* ILR8 */
case 0x40: /* ILR9 */ case 0x40: /* ILR9 */
case 0x44: /* ILR10 */ case 0x44: /* ILR10 */
case 0x48: /* ILR11 */ case 0x48: /* ILR11 */
case 0x4c: /* ILR12 */ case 0x4c: /* ILR12 */
case 0x50: /* ILR13 */ case 0x50: /* ILR13 */
case 0x54: /* ILR14 */ case 0x54: /* ILR14 */
case 0x58: /* ILR15 */ case 0x58: /* ILR15 */
case 0x5c: /* ILR16 */ case 0x5c: /* ILR16 */
case 0x60: /* ILR17 */ case 0x60: /* ILR17 */
case 0x64: /* ILR18 */ case 0x64: /* ILR18 */
case 0x68: /* ILR19 */ case 0x68: /* ILR19 */
case 0x6c: /* ILR20 */ case 0x6c: /* ILR20 */
case 0x70: /* ILR21 */ case 0x70: /* ILR21 */
case 0x74: /* ILR22 */ case 0x74: /* ILR22 */
case 0x78: /* ILR23 */ case 0x78: /* ILR23 */
case 0x7c: /* ILR24 */ case 0x7c: /* ILR24 */
case 0x80: /* ILR25 */ case 0x80: /* ILR25 */
case 0x84: /* ILR26 */ case 0x84: /* ILR26 */
case 0x88: /* ILR27 */ case 0x88: /* ILR27 */
case 0x8c: /* ILR28 */ case 0x8c: /* ILR28 */
case 0x90: /* ILR29 */ case 0x90: /* ILR29 */
case 0x94: /* ILR30 */ case 0x94: /* ILR30 */
case 0x98: /* ILR31 */ case 0x98: /* ILR31 */
i = (offset - 0x1c) >> 2; i = (offset - 0x1c) >> 2;
bank->priority[i] = (value >> 2) & 0x1f; bank->priority[i] = (value >> 2) & 0x1f;
bank->sens_edge &= ~(1 << i); bank->sens_edge &= ~(1 << i);
@ -291,7 +291,7 @@ static void omap_inth_write(void *opaque, hwaddr addr,
bank->fiq |= (value & 1) << i; bank->fiq |= (value & 1) << i;
return; return;
case 0x9c: /* ISR */ case 0x9c: /* ISR */
for (i = 0; i < 32; i ++) for (i = 0; i < 32; i ++)
if (value & (1 << i)) { if (value & (1 << i)) {
omap_set_intr(s, 32 * bank_no + i, 1); omap_set_intr(s, 32 * bank_no + i, 1);

View File

@ -30,170 +30,170 @@ struct clk {
struct clk *parent; struct clk *parent;
struct clk *child1; struct clk *child1;
struct clk *sibling; struct clk *sibling;
#define ALWAYS_ENABLED (1 << 0) #define ALWAYS_ENABLED (1 << 0)
#define CLOCK_IN_OMAP310 (1 << 10) #define CLOCK_IN_OMAP310 (1 << 10)
#define CLOCK_IN_OMAP730 (1 << 11) #define CLOCK_IN_OMAP730 (1 << 11)
#define CLOCK_IN_OMAP1510 (1 << 12) #define CLOCK_IN_OMAP1510 (1 << 12)
#define CLOCK_IN_OMAP16XX (1 << 13) #define CLOCK_IN_OMAP16XX (1 << 13)
uint32_t flags; uint32_t flags;
int id; int id;
int running; /* Is currently ticking */ int running; /* Is currently ticking */
int enabled; /* Is enabled, regardless of its input clk */ int enabled; /* Is enabled, regardless of its input clk */
unsigned long rate; /* Current rate (if .running) */ unsigned long rate; /* Current rate (if .running) */
unsigned int divisor; /* Rate relative to input (if .enabled) */ unsigned int divisor; /* Rate relative to input (if .enabled) */
unsigned int multiplier; /* Rate relative to input (if .enabled) */ unsigned int multiplier; /* Rate relative to input (if .enabled) */
qemu_irq users[16]; /* Who to notify on change */ qemu_irq users[16]; /* Who to notify on change */
int usecount; /* Automatically idle when unused */ int usecount; /* Automatically idle when unused */
}; };
static struct clk xtal_osc12m = { static struct clk xtal_osc12m = {
.name = "xtal_osc_12m", .name = "xtal_osc_12m",
.rate = 12000000, .rate = 12000000,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310, .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,
}; };
static struct clk xtal_osc32k = { static struct clk xtal_osc32k = {
.name = "xtal_osc_32k", .name = "xtal_osc_32k",
.rate = 32768, .rate = 32768,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310, .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,
}; };
static struct clk ck_ref = { static struct clk ck_ref = {
.name = "ck_ref", .name = "ck_ref",
.alias = "clkin", .alias = "clkin",
.parent = &xtal_osc12m, .parent = &xtal_osc12m,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 | .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 |
ALWAYS_ENABLED, ALWAYS_ENABLED,
}; };
/* If a dpll is disabled it becomes a bypass, child clocks don't stop */ /* If a dpll is disabled it becomes a bypass, child clocks don't stop */
static struct clk dpll1 = { static struct clk dpll1 = {
.name = "dpll1", .name = "dpll1",
.parent = &ck_ref, .parent = &ck_ref,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 | .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 |
ALWAYS_ENABLED, ALWAYS_ENABLED,
}; };
static struct clk dpll2 = { static struct clk dpll2 = {
.name = "dpll2", .name = "dpll2",
.parent = &ck_ref, .parent = &ck_ref,
.flags = CLOCK_IN_OMAP310 | ALWAYS_ENABLED, .flags = CLOCK_IN_OMAP310 | ALWAYS_ENABLED,
}; };
static struct clk dpll3 = { static struct clk dpll3 = {
.name = "dpll3", .name = "dpll3",
.parent = &ck_ref, .parent = &ck_ref,
.flags = CLOCK_IN_OMAP310 | ALWAYS_ENABLED, .flags = CLOCK_IN_OMAP310 | ALWAYS_ENABLED,
}; };
static struct clk dpll4 = { static struct clk dpll4 = {
.name = "dpll4", .name = "dpll4",
.parent = &ck_ref, .parent = &ck_ref,
.multiplier = 4, .multiplier = 4,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310, .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,
}; };
static struct clk apll = { static struct clk apll = {
.name = "apll", .name = "apll",
.parent = &ck_ref, .parent = &ck_ref,
.multiplier = 48, .multiplier = 48,
.divisor = 12, .divisor = 12,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310, .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,
}; };
static struct clk ck_48m = { static struct clk ck_48m = {
.name = "ck_48m", .name = "ck_48m",
.parent = &dpll4, /* either dpll4 or apll */ .parent = &dpll4, /* either dpll4 or apll */
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310, .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,
}; };
static struct clk ck_dpll1out = { static struct clk ck_dpll1out = {
.name = "ck_dpll1out", .name = "ck_dpll1out",
.parent = &dpll1, .parent = &dpll1,
.flags = CLOCK_IN_OMAP16XX, .flags = CLOCK_IN_OMAP16XX,
}; };
static struct clk sossi_ck = { static struct clk sossi_ck = {
.name = "ck_sossi", .name = "ck_sossi",
.parent = &ck_dpll1out, .parent = &ck_dpll1out,
.flags = CLOCK_IN_OMAP16XX, .flags = CLOCK_IN_OMAP16XX,
}; };
static struct clk clkm1 = { static struct clk clkm1 = {
.name = "clkm1", .name = "clkm1",
.alias = "ck_gen1", .alias = "ck_gen1",
.parent = &dpll1, .parent = &dpll1,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 | .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 |
ALWAYS_ENABLED, ALWAYS_ENABLED,
}; };
static struct clk clkm2 = { static struct clk clkm2 = {
.name = "clkm2", .name = "clkm2",
.alias = "ck_gen2", .alias = "ck_gen2",
.parent = &dpll1, .parent = &dpll1,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 | .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 |
ALWAYS_ENABLED, ALWAYS_ENABLED,
}; };
static struct clk clkm3 = { static struct clk clkm3 = {
.name = "clkm3", .name = "clkm3",
.alias = "ck_gen3", .alias = "ck_gen3",
.parent = &dpll1, /* either dpll1 or ck_ref */ .parent = &dpll1, /* either dpll1 or ck_ref */
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 | .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 |
ALWAYS_ENABLED, ALWAYS_ENABLED,
}; };
static struct clk arm_ck = { static struct clk arm_ck = {
.name = "arm_ck", .name = "arm_ck",
.alias = "mpu_ck", .alias = "mpu_ck",
.parent = &clkm1, .parent = &clkm1,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 | .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 |
ALWAYS_ENABLED, ALWAYS_ENABLED,
}; };
static struct clk armper_ck = { static struct clk armper_ck = {
.name = "armper_ck", .name = "armper_ck",
.alias = "mpuper_ck", .alias = "mpuper_ck",
.parent = &clkm1, .parent = &clkm1,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310, .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,
}; };
static struct clk arm_gpio_ck = { static struct clk arm_gpio_ck = {
.name = "arm_gpio_ck", .name = "arm_gpio_ck",
.alias = "mpu_gpio_ck", .alias = "mpu_gpio_ck",
.parent = &clkm1, .parent = &clkm1,
.divisor = 1, .divisor = 1,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310, .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310,
}; };
static struct clk armxor_ck = { static struct clk armxor_ck = {
.name = "armxor_ck", .name = "armxor_ck",
.alias = "mpuxor_ck", .alias = "mpuxor_ck",
.parent = &ck_ref, .parent = &ck_ref,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310, .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,
}; };
static struct clk armtim_ck = { static struct clk armtim_ck = {
.name = "armtim_ck", .name = "armtim_ck",
.alias = "mputim_ck", .alias = "mputim_ck",
.parent = &ck_ref, /* either CLKIN or DPLL1 */ .parent = &ck_ref, /* either CLKIN or DPLL1 */
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310, .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,
}; };
static struct clk armwdt_ck = { static struct clk armwdt_ck = {
.name = "armwdt_ck", .name = "armwdt_ck",
.alias = "mpuwd_ck", .alias = "mpuwd_ck",
.parent = &clkm1, .parent = &clkm1,
.divisor = 14, .divisor = 14,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 | .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 |
ALWAYS_ENABLED, ALWAYS_ENABLED,
}; };
static struct clk arminth_ck16xx = { static struct clk arminth_ck16xx = {
.name = "arminth_ck", .name = "arminth_ck",
.parent = &arm_ck, .parent = &arm_ck,
.flags = CLOCK_IN_OMAP16XX | ALWAYS_ENABLED, .flags = CLOCK_IN_OMAP16XX | ALWAYS_ENABLED,
/* Note: On 16xx the frequency can be divided by 2 by programming /* Note: On 16xx the frequency can be divided by 2 by programming
* ARM_CKCTL:ARM_INTHCK_SEL(14) to 1 * ARM_CKCTL:ARM_INTHCK_SEL(14) to 1
* *
@ -202,48 +202,48 @@ static struct clk arminth_ck16xx = {
}; };
static struct clk dsp_ck = { static struct clk dsp_ck = {
.name = "dsp_ck", .name = "dsp_ck",
.parent = &clkm2, .parent = &clkm2,
.flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX, .flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX,
}; };
static struct clk dspmmu_ck = { static struct clk dspmmu_ck = {
.name = "dspmmu_ck", .name = "dspmmu_ck",
.parent = &clkm2, .parent = &clkm2,
.flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | .flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
ALWAYS_ENABLED, ALWAYS_ENABLED,
}; };
static struct clk dspper_ck = { static struct clk dspper_ck = {
.name = "dspper_ck", .name = "dspper_ck",
.parent = &clkm2, .parent = &clkm2,
.flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX, .flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX,
}; };
static struct clk dspxor_ck = { static struct clk dspxor_ck = {
.name = "dspxor_ck", .name = "dspxor_ck",
.parent = &ck_ref, .parent = &ck_ref,
.flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX, .flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX,
}; };
static struct clk dsptim_ck = { static struct clk dsptim_ck = {
.name = "dsptim_ck", .name = "dsptim_ck",
.parent = &ck_ref, .parent = &ck_ref,
.flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX, .flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX,
}; };
static struct clk tc_ck = { static struct clk tc_ck = {
.name = "tc_ck", .name = "tc_ck",
.parent = &clkm3, .parent = &clkm3,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
CLOCK_IN_OMAP730 | CLOCK_IN_OMAP310 | CLOCK_IN_OMAP730 | CLOCK_IN_OMAP310 |
ALWAYS_ENABLED, ALWAYS_ENABLED,
}; };
static struct clk arminth_ck15xx = { static struct clk arminth_ck15xx = {
.name = "arminth_ck", .name = "arminth_ck",
.parent = &tc_ck, .parent = &tc_ck,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310 | ALWAYS_ENABLED, .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310 | ALWAYS_ENABLED,
/* Note: On 1510 the frequency follows TC_CK /* Note: On 1510 the frequency follows TC_CK
* *
* 16xx version is in MPU clocks. * 16xx version is in MPU clocks.
@ -252,259 +252,259 @@ static struct clk arminth_ck15xx = {
static struct clk tipb_ck = { static struct clk tipb_ck = {
/* No-idle controlled by "tc_ck" */ /* No-idle controlled by "tc_ck" */
.name = "tipb_ck", .name = "tipb_ck",
.parent = &tc_ck, .parent = &tc_ck,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310 | ALWAYS_ENABLED, .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310 | ALWAYS_ENABLED,
}; };
static struct clk l3_ocpi_ck = { static struct clk l3_ocpi_ck = {
/* No-idle controlled by "tc_ck" */ /* No-idle controlled by "tc_ck" */
.name = "l3_ocpi_ck", .name = "l3_ocpi_ck",
.parent = &tc_ck, .parent = &tc_ck,
.flags = CLOCK_IN_OMAP16XX, .flags = CLOCK_IN_OMAP16XX,
}; };
static struct clk tc1_ck = { static struct clk tc1_ck = {
.name = "tc1_ck", .name = "tc1_ck",
.parent = &tc_ck, .parent = &tc_ck,
.flags = CLOCK_IN_OMAP16XX, .flags = CLOCK_IN_OMAP16XX,
}; };
static struct clk tc2_ck = { static struct clk tc2_ck = {
.name = "tc2_ck", .name = "tc2_ck",
.parent = &tc_ck, .parent = &tc_ck,
.flags = CLOCK_IN_OMAP16XX, .flags = CLOCK_IN_OMAP16XX,
}; };
static struct clk dma_ck = { static struct clk dma_ck = {
/* No-idle controlled by "tc_ck" */ /* No-idle controlled by "tc_ck" */
.name = "dma_ck", .name = "dma_ck",
.parent = &tc_ck, .parent = &tc_ck,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 | .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 |
ALWAYS_ENABLED, ALWAYS_ENABLED,
}; };
static struct clk dma_lcdfree_ck = { static struct clk dma_lcdfree_ck = {
.name = "dma_lcdfree_ck", .name = "dma_lcdfree_ck",
.parent = &tc_ck, .parent = &tc_ck,
.flags = CLOCK_IN_OMAP16XX | ALWAYS_ENABLED, .flags = CLOCK_IN_OMAP16XX | ALWAYS_ENABLED,
}; };
static struct clk api_ck = { static struct clk api_ck = {
.name = "api_ck", .name = "api_ck",
.alias = "mpui_ck", .alias = "mpui_ck",
.parent = &tc_ck, .parent = &tc_ck,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310, .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,
}; };
static struct clk lb_ck = { static struct clk lb_ck = {
.name = "lb_ck", .name = "lb_ck",
.parent = &tc_ck, .parent = &tc_ck,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310, .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310,
}; };
static struct clk lbfree_ck = { static struct clk lbfree_ck = {
.name = "lbfree_ck", .name = "lbfree_ck",
.parent = &tc_ck, .parent = &tc_ck,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310, .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310,
}; };
static struct clk hsab_ck = { static struct clk hsab_ck = {
.name = "hsab_ck", .name = "hsab_ck",
.parent = &tc_ck, .parent = &tc_ck,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310, .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310,
}; };
static struct clk rhea1_ck = { static struct clk rhea1_ck = {
.name = "rhea1_ck", .name = "rhea1_ck",
.parent = &tc_ck, .parent = &tc_ck,
.flags = CLOCK_IN_OMAP16XX | ALWAYS_ENABLED, .flags = CLOCK_IN_OMAP16XX | ALWAYS_ENABLED,
}; };
static struct clk rhea2_ck = { static struct clk rhea2_ck = {
.name = "rhea2_ck", .name = "rhea2_ck",
.parent = &tc_ck, .parent = &tc_ck,
.flags = CLOCK_IN_OMAP16XX | ALWAYS_ENABLED, .flags = CLOCK_IN_OMAP16XX | ALWAYS_ENABLED,
}; };
static struct clk lcd_ck_16xx = { static struct clk lcd_ck_16xx = {
.name = "lcd_ck", .name = "lcd_ck",
.parent = &clkm3, .parent = &clkm3,
.flags = CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP730, .flags = CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP730,
}; };
static struct clk lcd_ck_1510 = { static struct clk lcd_ck_1510 = {
.name = "lcd_ck", .name = "lcd_ck",
.parent = &clkm3, .parent = &clkm3,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310, .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310,
}; };
static struct clk uart1_1510 = { static struct clk uart1_1510 = {
.name = "uart1_ck", .name = "uart1_ck",
/* Direct from ULPD, no real parent */ /* Direct from ULPD, no real parent */
.parent = &armper_ck, /* either armper_ck or dpll4 */ .parent = &armper_ck, /* either armper_ck or dpll4 */
.rate = 12000000, .rate = 12000000,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310 | ALWAYS_ENABLED, .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310 | ALWAYS_ENABLED,
}; };
static struct clk uart1_16xx = { static struct clk uart1_16xx = {
.name = "uart1_ck", .name = "uart1_ck",
/* Direct from ULPD, no real parent */ /* Direct from ULPD, no real parent */
.parent = &armper_ck, .parent = &armper_ck,
.rate = 48000000, .rate = 48000000,
.flags = CLOCK_IN_OMAP16XX, .flags = CLOCK_IN_OMAP16XX,
}; };
static struct clk uart2_ck = { static struct clk uart2_ck = {
.name = "uart2_ck", .name = "uart2_ck",
/* Direct from ULPD, no real parent */ /* Direct from ULPD, no real parent */
.parent = &armper_ck, /* either armper_ck or dpll4 */ .parent = &armper_ck, /* either armper_ck or dpll4 */
.rate = 12000000, .rate = 12000000,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 | .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310 |
ALWAYS_ENABLED, ALWAYS_ENABLED,
}; };
static struct clk uart3_1510 = { static struct clk uart3_1510 = {
.name = "uart3_ck", .name = "uart3_ck",
/* Direct from ULPD, no real parent */ /* Direct from ULPD, no real parent */
.parent = &armper_ck, /* either armper_ck or dpll4 */ .parent = &armper_ck, /* either armper_ck or dpll4 */
.rate = 12000000, .rate = 12000000,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310 | ALWAYS_ENABLED, .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310 | ALWAYS_ENABLED,
}; };
static struct clk uart3_16xx = { static struct clk uart3_16xx = {
.name = "uart3_ck", .name = "uart3_ck",
/* Direct from ULPD, no real parent */ /* Direct from ULPD, no real parent */
.parent = &armper_ck, .parent = &armper_ck,
.rate = 48000000, .rate = 48000000,
.flags = CLOCK_IN_OMAP16XX, .flags = CLOCK_IN_OMAP16XX,
}; };
static struct clk usb_clk0 = { /* 6 MHz output on W4_USB_CLK0 */ static struct clk usb_clk0 = { /* 6 MHz output on W4_USB_CLK0 */
.name = "usb_clk0", .name = "usb_clk0",
.alias = "usb.clko", .alias = "usb.clko",
/* Direct from ULPD, no parent */ /* Direct from ULPD, no parent */
.rate = 6000000, .rate = 6000000,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310, .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,
}; };
static struct clk usb_hhc_ck1510 = { static struct clk usb_hhc_ck1510 = {
.name = "usb_hhc_ck", .name = "usb_hhc_ck",
/* Direct from ULPD, no parent */ /* Direct from ULPD, no parent */
.rate = 48000000, /* Actually 2 clocks, 12MHz and 48MHz */ .rate = 48000000, /* Actually 2 clocks, 12MHz and 48MHz */
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310, .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP310,
}; };
static struct clk usb_hhc_ck16xx = { static struct clk usb_hhc_ck16xx = {
.name = "usb_hhc_ck", .name = "usb_hhc_ck",
/* Direct from ULPD, no parent */ /* Direct from ULPD, no parent */
.rate = 48000000, .rate = 48000000,
/* OTG_SYSCON_2.OTG_PADEN == 0 (not 1510-compatible) */ /* OTG_SYSCON_2.OTG_PADEN == 0 (not 1510-compatible) */
.flags = CLOCK_IN_OMAP16XX, .flags = CLOCK_IN_OMAP16XX,
}; };
static struct clk usb_w2fc_mclk = { static struct clk usb_w2fc_mclk = {
.name = "usb_w2fc_mclk", .name = "usb_w2fc_mclk",
.alias = "usb_w2fc_ck", .alias = "usb_w2fc_ck",
.parent = &ck_48m, .parent = &ck_48m,
.rate = 48000000, .rate = 48000000,
.flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX, .flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX,
}; };
static struct clk mclk_1510 = { static struct clk mclk_1510 = {
.name = "mclk", .name = "mclk",
/* Direct from ULPD, no parent. May be enabled by ext hardware. */ /* Direct from ULPD, no parent. May be enabled by ext hardware. */
.rate = 12000000, .rate = 12000000,
.flags = CLOCK_IN_OMAP1510, .flags = CLOCK_IN_OMAP1510,
}; };
static struct clk bclk_310 = { static struct clk bclk_310 = {
.name = "bt_mclk_out", /* Alias midi_mclk_out? */ .name = "bt_mclk_out", /* Alias midi_mclk_out? */
.parent = &armper_ck, .parent = &armper_ck,
.flags = CLOCK_IN_OMAP310, .flags = CLOCK_IN_OMAP310,
}; };
static struct clk mclk_310 = { static struct clk mclk_310 = {
.name = "com_mclk_out", .name = "com_mclk_out",
.parent = &armper_ck, .parent = &armper_ck,
.flags = CLOCK_IN_OMAP310, .flags = CLOCK_IN_OMAP310,
}; };
static struct clk mclk_16xx = { static struct clk mclk_16xx = {
.name = "mclk", .name = "mclk",
/* Direct from ULPD, no parent. May be enabled by ext hardware. */ /* Direct from ULPD, no parent. May be enabled by ext hardware. */
.flags = CLOCK_IN_OMAP16XX, .flags = CLOCK_IN_OMAP16XX,
}; };
static struct clk bclk_1510 = { static struct clk bclk_1510 = {
.name = "bclk", .name = "bclk",
/* Direct from ULPD, no parent. May be enabled by ext hardware. */ /* Direct from ULPD, no parent. May be enabled by ext hardware. */
.rate = 12000000, .rate = 12000000,
.flags = CLOCK_IN_OMAP1510, .flags = CLOCK_IN_OMAP1510,
}; };
static struct clk bclk_16xx = { static struct clk bclk_16xx = {
.name = "bclk", .name = "bclk",
/* Direct from ULPD, no parent. May be enabled by ext hardware. */ /* Direct from ULPD, no parent. May be enabled by ext hardware. */
.flags = CLOCK_IN_OMAP16XX, .flags = CLOCK_IN_OMAP16XX,
}; };
static struct clk mmc1_ck = { static struct clk mmc1_ck = {
.name = "mmc_ck", .name = "mmc_ck",
.id = 1, .id = 1,
/* Functional clock is direct from ULPD, interface clock is ARMPER */ /* Functional clock is direct from ULPD, interface clock is ARMPER */
.parent = &armper_ck, /* either armper_ck or dpll4 */ .parent = &armper_ck, /* either armper_ck or dpll4 */
.rate = 48000000, .rate = 48000000,
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310, .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP310,
}; };
static struct clk mmc2_ck = { static struct clk mmc2_ck = {
.name = "mmc_ck", .name = "mmc_ck",
.id = 2, .id = 2,
/* Functional clock is direct from ULPD, interface clock is ARMPER */ /* Functional clock is direct from ULPD, interface clock is ARMPER */
.parent = &armper_ck, .parent = &armper_ck,
.rate = 48000000, .rate = 48000000,
.flags = CLOCK_IN_OMAP16XX, .flags = CLOCK_IN_OMAP16XX,
}; };
static struct clk cam_mclk = { static struct clk cam_mclk = {
.name = "cam.mclk", .name = "cam.mclk",
.flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX, .flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX,
.rate = 12000000, .rate = 12000000,
}; };
static struct clk cam_exclk = { static struct clk cam_exclk = {
.name = "cam.exclk", .name = "cam.exclk",
.flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX, .flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX,
/* Either 12M from cam.mclk or 48M from dpll4 */ /* Either 12M from cam.mclk or 48M from dpll4 */
.parent = &cam_mclk, .parent = &cam_mclk,
}; };
static struct clk cam_lclk = { static struct clk cam_lclk = {
.name = "cam.lclk", .name = "cam.lclk",
.flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX, .flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX,
}; };
static struct clk i2c_fck = { static struct clk i2c_fck = {
.name = "i2c_fck", .name = "i2c_fck",
.id = 1, .id = 1,
.flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | .flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
ALWAYS_ENABLED, ALWAYS_ENABLED,
.parent = &armxor_ck, .parent = &armxor_ck,
}; };
static struct clk i2c_ick = { static struct clk i2c_ick = {
.name = "i2c_ick", .name = "i2c_ick",
.id = 1, .id = 1,
.flags = CLOCK_IN_OMAP16XX | ALWAYS_ENABLED, .flags = CLOCK_IN_OMAP16XX | ALWAYS_ENABLED,
.parent = &armper_ck, .parent = &armper_ck,
}; };
static struct clk clk32k = { static struct clk clk32k = {
.name = "clk32-kHz", .name = "clk32-kHz",
.flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | .flags = CLOCK_IN_OMAP310 | CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
ALWAYS_ENABLED, ALWAYS_ENABLED,
.parent = &xtal_osc32k, .parent = &xtal_osc32k,
}; };
static struct clk *onchip_clks[] = { static struct clk *onchip_clks[] = {

View File

@ -19,41 +19,41 @@
#include "qom/object.h" #include "qom/object.h"
#include "system/watchdog.h" #include "system/watchdog.h"
#define OSMR0 0x00 #define OSMR0 0x00
#define OSMR1 0x04 #define OSMR1 0x04
#define OSMR2 0x08 #define OSMR2 0x08
#define OSMR3 0x0c #define OSMR3 0x0c
#define OSMR4 0x80 #define OSMR4 0x80
#define OSMR5 0x84 #define OSMR5 0x84
#define OSMR6 0x88 #define OSMR6 0x88
#define OSMR7 0x8c #define OSMR7 0x8c
#define OSMR8 0x90 #define OSMR8 0x90
#define OSMR9 0x94 #define OSMR9 0x94
#define OSMR10 0x98 #define OSMR10 0x98
#define OSMR11 0x9c #define OSMR11 0x9c
#define OSCR 0x10 /* OS Timer Count */ #define OSCR 0x10 /* OS Timer Count */
#define OSCR4 0x40 #define OSCR4 0x40
#define OSCR5 0x44 #define OSCR5 0x44
#define OSCR6 0x48 #define OSCR6 0x48
#define OSCR7 0x4c #define OSCR7 0x4c
#define OSCR8 0x50 #define OSCR8 0x50
#define OSCR9 0x54 #define OSCR9 0x54
#define OSCR10 0x58 #define OSCR10 0x58
#define OSCR11 0x5c #define OSCR11 0x5c
#define OSSR 0x14 /* Timer status register */ #define OSSR 0x14 /* Timer status register */
#define OWER 0x18 #define OWER 0x18
#define OIER 0x1c /* Interrupt enable register 3-0 to E3-E0 */ #define OIER 0x1c /* Interrupt enable register 3-0 to E3-E0 */
#define OMCR4 0xc0 /* OS Match Control registers */ #define OMCR4 0xc0 /* OS Match Control registers */
#define OMCR5 0xc4 #define OMCR5 0xc4
#define OMCR6 0xc8 #define OMCR6 0xc8
#define OMCR7 0xcc #define OMCR7 0xcc
#define OMCR8 0xd0 #define OMCR8 0xd0
#define OMCR9 0xd4 #define OMCR9 0xd4
#define OMCR10 0xd8 #define OMCR10 0xd8
#define OMCR11 0xdc #define OMCR11 0xdc
#define OSNR 0x20 #define OSNR 0x20
#define PXA25X_FREQ 3686400 /* 3.6864 MHz */ #define PXA25X_FREQ 3686400 /* 3.6864 MHz */
static int pxa2xx_timer4_freq[8] = { static int pxa2xx_timer4_freq[8] = {
[0] = 0, [0] = 0,
@ -106,7 +106,7 @@ struct PXA2xxTimerInfo {
PXA2xxTimer4 tm4[8]; PXA2xxTimer4 tm4[8];
}; };
#define PXA2XX_TIMER_HAVE_TM4 0 #define PXA2XX_TIMER_HAVE_TM4 0
static inline int pxa2xx_timer_has_tm4(PXA2xxTimerInfo *s) static inline int pxa2xx_timer_has_tm4(PXA2xxTimerInfo *s)
{ {
@ -230,7 +230,7 @@ static uint64_t pxa2xx_timer_read(void *opaque, hwaddr offset,
NANOSECONDS_PER_SECOND); NANOSECONDS_PER_SECOND);
case OIER: case OIER:
return s->irq_enabled; return s->irq_enabled;
case OSSR: /* Status register */ case OSSR: /* Status register */
return s->events; return s->events;
case OWER: case OWER:
return s->reset3; return s->reset3;
@ -336,7 +336,7 @@ static void pxa2xx_timer_write(void *opaque, hwaddr offset,
case OIER: case OIER:
s->irq_enabled = value & 0xfff; s->irq_enabled = value & 0xfff;
break; break;
case OSSR: /* Status register */ case OSSR: /* Status register */
value &= s->events; value &= s->events;
s->events &= ~value; s->events &= ~value;
for (i = 0; i < 4; i ++, value >>= 1) for (i = 0; i < 4; i ++, value >>= 1)
@ -345,7 +345,7 @@ static void pxa2xx_timer_write(void *opaque, hwaddr offset,
if (pxa2xx_timer_has_tm4(s) && !(s->events & 0xff0) && value) if (pxa2xx_timer_has_tm4(s) && !(s->events & 0xff0) && value)
qemu_irq_lower(s->irq4); qemu_irq_lower(s->irq4);
break; break;
case OWER: /* XXX: Reset on OSMR3 match? */ case OWER: /* XXX: Reset on OSMR3 match? */
s->reset3 = value; s->reset3 = value;
break; break;
case OMCR7: tm ++; case OMCR7: tm ++;

View File

@ -25,24 +25,24 @@
#include "qemu/log.h" #include "qemu/log.h"
#include "qom/object.h" #include "qom/object.h"
# define OMAP_EMIFS_BASE 0x00000000 #define OMAP_EMIFS_BASE 0x00000000
# define OMAP_CS0_BASE 0x00000000 #define OMAP_CS0_BASE 0x00000000
# define OMAP_CS1_BASE 0x04000000 #define OMAP_CS1_BASE 0x04000000
# define OMAP_CS2_BASE 0x08000000 #define OMAP_CS2_BASE 0x08000000
# define OMAP_CS3_BASE 0x0c000000 #define OMAP_CS3_BASE 0x0c000000
# define OMAP_EMIFF_BASE 0x10000000 #define OMAP_EMIFF_BASE 0x10000000
# define OMAP_IMIF_BASE 0x20000000 #define OMAP_IMIF_BASE 0x20000000
# define OMAP_LOCALBUS_BASE 0x30000000 #define OMAP_LOCALBUS_BASE 0x30000000
# define OMAP_MPUI_BASE 0xe1000000 #define OMAP_MPUI_BASE 0xe1000000
# define OMAP730_SRAM_SIZE 0x00032000 #define OMAP730_SRAM_SIZE 0x00032000
# define OMAP15XX_SRAM_SIZE 0x00030000 #define OMAP15XX_SRAM_SIZE 0x00030000
# define OMAP16XX_SRAM_SIZE 0x00004000 #define OMAP16XX_SRAM_SIZE 0x00004000
# define OMAP1611_SRAM_SIZE 0x0003e800 #define OMAP1611_SRAM_SIZE 0x0003e800
# define OMAP_CS0_SIZE 0x04000000 #define OMAP_CS0_SIZE 0x04000000
# define OMAP_CS1_SIZE 0x04000000 #define OMAP_CS1_SIZE 0x04000000
# define OMAP_CS2_SIZE 0x04000000 #define OMAP_CS2_SIZE 0x04000000
# define OMAP_CS3_SIZE 0x04000000 #define OMAP_CS3_SIZE 0x04000000
/* omap_clk.c */ /* omap_clk.c */
struct omap_mpu_state_s; struct omap_mpu_state_s;
@ -103,228 +103,228 @@ void omap_gpio_set_clk(Omap1GpioState *gpio, omap_clk clk);
* Common IRQ numbers for level 1 interrupt handler * Common IRQ numbers for level 1 interrupt handler
* See /usr/include/asm-arm/arch-omap/irqs.h in Linux. * See /usr/include/asm-arm/arch-omap/irqs.h in Linux.
*/ */
# define OMAP_INT_CAMERA 1 #define OMAP_INT_CAMERA 1
# define OMAP_INT_FIQ 3 #define OMAP_INT_FIQ 3
# define OMAP_INT_RTDX 6 #define OMAP_INT_RTDX 6
# define OMAP_INT_DSP_MMU_ABORT 7 #define OMAP_INT_DSP_MMU_ABORT 7
# define OMAP_INT_HOST 8 #define OMAP_INT_HOST 8
# define OMAP_INT_ABORT 9 #define OMAP_INT_ABORT 9
# define OMAP_INT_BRIDGE_PRIV 13 #define OMAP_INT_BRIDGE_PRIV 13
# define OMAP_INT_GPIO_BANK1 14 #define OMAP_INT_GPIO_BANK1 14
# define OMAP_INT_UART3 15 #define OMAP_INT_UART3 15
# define OMAP_INT_TIMER3 16 #define OMAP_INT_TIMER3 16
# define OMAP_INT_DMA_CH0_6 19 #define OMAP_INT_DMA_CH0_6 19
# define OMAP_INT_DMA_CH1_7 20 #define OMAP_INT_DMA_CH1_7 20
# define OMAP_INT_DMA_CH2_8 21 #define OMAP_INT_DMA_CH2_8 21
# define OMAP_INT_DMA_CH3 22 #define OMAP_INT_DMA_CH3 22
# define OMAP_INT_DMA_CH4 23 #define OMAP_INT_DMA_CH4 23
# define OMAP_INT_DMA_CH5 24 #define OMAP_INT_DMA_CH5 24
# define OMAP_INT_DMA_LCD 25 #define OMAP_INT_DMA_LCD 25
# define OMAP_INT_TIMER1 26 #define OMAP_INT_TIMER1 26
# define OMAP_INT_WD_TIMER 27 #define OMAP_INT_WD_TIMER 27
# define OMAP_INT_BRIDGE_PUB 28 #define OMAP_INT_BRIDGE_PUB 28
# define OMAP_INT_TIMER2 30 #define OMAP_INT_TIMER2 30
# define OMAP_INT_LCD_CTRL 31 #define OMAP_INT_LCD_CTRL 31
/* /*
* Common OMAP-15xx IRQ numbers for level 1 interrupt handler * Common OMAP-15xx IRQ numbers for level 1 interrupt handler
*/ */
# define OMAP_INT_15XX_IH2_IRQ 0 #define OMAP_INT_15XX_IH2_IRQ 0
# define OMAP_INT_15XX_LB_MMU 17 #define OMAP_INT_15XX_LB_MMU 17
# define OMAP_INT_15XX_LOCAL_BUS 29 #define OMAP_INT_15XX_LOCAL_BUS 29
/* /*
* OMAP-1510 specific IRQ numbers for level 1 interrupt handler * OMAP-1510 specific IRQ numbers for level 1 interrupt handler
*/ */
# define OMAP_INT_1510_SPI_TX 4 #define OMAP_INT_1510_SPI_TX 4
# define OMAP_INT_1510_SPI_RX 5 #define OMAP_INT_1510_SPI_RX 5
# define OMAP_INT_1510_DSP_MAILBOX1 10 #define OMAP_INT_1510_DSP_MAILBOX1 10
# define OMAP_INT_1510_DSP_MAILBOX2 11 #define OMAP_INT_1510_DSP_MAILBOX2 11
/* /*
* OMAP-310 specific IRQ numbers for level 1 interrupt handler * OMAP-310 specific IRQ numbers for level 1 interrupt handler
*/ */
# define OMAP_INT_310_McBSP2_TX 4 #define OMAP_INT_310_McBSP2_TX 4
# define OMAP_INT_310_McBSP2_RX 5 #define OMAP_INT_310_McBSP2_RX 5
# define OMAP_INT_310_HSB_MAILBOX1 12 #define OMAP_INT_310_HSB_MAILBOX1 12
# define OMAP_INT_310_HSAB_MMU 18 #define OMAP_INT_310_HSAB_MMU 18
/* /*
* OMAP-1610 specific IRQ numbers for level 1 interrupt handler * OMAP-1610 specific IRQ numbers for level 1 interrupt handler
*/ */
# define OMAP_INT_1610_IH2_IRQ 0 #define OMAP_INT_1610_IH2_IRQ 0
# define OMAP_INT_1610_IH2_FIQ 2 #define OMAP_INT_1610_IH2_FIQ 2
# define OMAP_INT_1610_McBSP2_TX 4 #define OMAP_INT_1610_McBSP2_TX 4
# define OMAP_INT_1610_McBSP2_RX 5 #define OMAP_INT_1610_McBSP2_RX 5
# define OMAP_INT_1610_DSP_MAILBOX1 10 #define OMAP_INT_1610_DSP_MAILBOX1 10
# define OMAP_INT_1610_DSP_MAILBOX2 11 #define OMAP_INT_1610_DSP_MAILBOX2 11
# define OMAP_INT_1610_LCD_LINE 12 #define OMAP_INT_1610_LCD_LINE 12
# define OMAP_INT_1610_GPTIMER1 17 #define OMAP_INT_1610_GPTIMER1 17
# define OMAP_INT_1610_GPTIMER2 18 #define OMAP_INT_1610_GPTIMER2 18
# define OMAP_INT_1610_SSR_FIFO_0 29 #define OMAP_INT_1610_SSR_FIFO_0 29
/* /*
* OMAP-730 specific IRQ numbers for level 1 interrupt handler * OMAP-730 specific IRQ numbers for level 1 interrupt handler
*/ */
# define OMAP_INT_730_IH2_FIQ 0 #define OMAP_INT_730_IH2_FIQ 0
# define OMAP_INT_730_IH2_IRQ 1 #define OMAP_INT_730_IH2_IRQ 1
# define OMAP_INT_730_USB_NON_ISO 2 #define OMAP_INT_730_USB_NON_ISO 2
# define OMAP_INT_730_USB_ISO 3 #define OMAP_INT_730_USB_ISO 3
# define OMAP_INT_730_ICR 4 #define OMAP_INT_730_ICR 4
# define OMAP_INT_730_EAC 5 #define OMAP_INT_730_EAC 5
# define OMAP_INT_730_GPIO_BANK1 6 #define OMAP_INT_730_GPIO_BANK1 6
# define OMAP_INT_730_GPIO_BANK2 7 #define OMAP_INT_730_GPIO_BANK2 7
# define OMAP_INT_730_GPIO_BANK3 8 #define OMAP_INT_730_GPIO_BANK3 8
# define OMAP_INT_730_McBSP2TX 10 #define OMAP_INT_730_McBSP2TX 10
# define OMAP_INT_730_McBSP2RX 11 #define OMAP_INT_730_McBSP2RX 11
# define OMAP_INT_730_McBSP2RX_OVF 12 #define OMAP_INT_730_McBSP2RX_OVF 12
# define OMAP_INT_730_LCD_LINE 14 #define OMAP_INT_730_LCD_LINE 14
# define OMAP_INT_730_GSM_PROTECT 15 #define OMAP_INT_730_GSM_PROTECT 15
# define OMAP_INT_730_TIMER3 16 #define OMAP_INT_730_TIMER3 16
# define OMAP_INT_730_GPIO_BANK5 17 #define OMAP_INT_730_GPIO_BANK5 17
# define OMAP_INT_730_GPIO_BANK6 18 #define OMAP_INT_730_GPIO_BANK6 18
# define OMAP_INT_730_SPGIO_WR 29 #define OMAP_INT_730_SPGIO_WR 29
/* /*
* Common IRQ numbers for level 2 interrupt handler * Common IRQ numbers for level 2 interrupt handler
*/ */
# define OMAP_INT_KEYBOARD 1 #define OMAP_INT_KEYBOARD 1
# define OMAP_INT_uWireTX 2 #define OMAP_INT_uWireTX 2
# define OMAP_INT_uWireRX 3 #define OMAP_INT_uWireRX 3
# define OMAP_INT_I2C 4 #define OMAP_INT_I2C 4
# define OMAP_INT_MPUIO 5 #define OMAP_INT_MPUIO 5
# define OMAP_INT_USB_HHC_1 6 #define OMAP_INT_USB_HHC_1 6
# define OMAP_INT_McBSP3TX 10 #define OMAP_INT_McBSP3TX 10
# define OMAP_INT_McBSP3RX 11 #define OMAP_INT_McBSP3RX 11
# define OMAP_INT_McBSP1TX 12 #define OMAP_INT_McBSP1TX 12
# define OMAP_INT_McBSP1RX 13 #define OMAP_INT_McBSP1RX 13
# define OMAP_INT_UART1 14 #define OMAP_INT_UART1 14
# define OMAP_INT_UART2 15 #define OMAP_INT_UART2 15
# define OMAP_INT_USB_W2FC 20 #define OMAP_INT_USB_W2FC 20
# define OMAP_INT_1WIRE 21 #define OMAP_INT_1WIRE 21
# define OMAP_INT_OS_TIMER 22 #define OMAP_INT_OS_TIMER 22
# define OMAP_INT_OQN 23 #define OMAP_INT_OQN 23
# define OMAP_INT_GAUGE_32K 24 #define OMAP_INT_GAUGE_32K 24
# define OMAP_INT_RTC_TIMER 25 #define OMAP_INT_RTC_TIMER 25
# define OMAP_INT_RTC_ALARM 26 #define OMAP_INT_RTC_ALARM 26
# define OMAP_INT_DSP_MMU 28 #define OMAP_INT_DSP_MMU 28
/* /*
* OMAP-1510 specific IRQ numbers for level 2 interrupt handler * OMAP-1510 specific IRQ numbers for level 2 interrupt handler
*/ */
# define OMAP_INT_1510_BT_MCSI1TX 16 #define OMAP_INT_1510_BT_MCSI1TX 16
# define OMAP_INT_1510_BT_MCSI1RX 17 #define OMAP_INT_1510_BT_MCSI1RX 17
# define OMAP_INT_1510_SoSSI_MATCH 19 #define OMAP_INT_1510_SoSSI_MATCH 19
# define OMAP_INT_1510_MEM_STICK 27 #define OMAP_INT_1510_MEM_STICK 27
# define OMAP_INT_1510_COM_SPI_RO 31 #define OMAP_INT_1510_COM_SPI_RO 31
/* /*
* OMAP-310 specific IRQ numbers for level 2 interrupt handler * OMAP-310 specific IRQ numbers for level 2 interrupt handler
*/ */
# define OMAP_INT_310_FAC 0 #define OMAP_INT_310_FAC 0
# define OMAP_INT_310_USB_HHC_2 7 #define OMAP_INT_310_USB_HHC_2 7
# define OMAP_INT_310_MCSI1_FE 16 #define OMAP_INT_310_MCSI1_FE 16
# define OMAP_INT_310_MCSI2_FE 17 #define OMAP_INT_310_MCSI2_FE 17
# define OMAP_INT_310_USB_W2FC_ISO 29 #define OMAP_INT_310_USB_W2FC_ISO 29
# define OMAP_INT_310_USB_W2FC_NON_ISO 30 #define OMAP_INT_310_USB_W2FC_NON_ISO 30
# define OMAP_INT_310_McBSP2RX_OF 31 #define OMAP_INT_310_McBSP2RX_OF 31
/* /*
* OMAP-1610 specific IRQ numbers for level 2 interrupt handler * OMAP-1610 specific IRQ numbers for level 2 interrupt handler
*/ */
# define OMAP_INT_1610_FAC 0 #define OMAP_INT_1610_FAC 0
# define OMAP_INT_1610_USB_HHC_2 7 #define OMAP_INT_1610_USB_HHC_2 7
# define OMAP_INT_1610_USB_OTG 8 #define OMAP_INT_1610_USB_OTG 8
# define OMAP_INT_1610_SoSSI 9 #define OMAP_INT_1610_SoSSI 9
# define OMAP_INT_1610_BT_MCSI1TX 16 #define OMAP_INT_1610_BT_MCSI1TX 16
# define OMAP_INT_1610_BT_MCSI1RX 17 #define OMAP_INT_1610_BT_MCSI1RX 17
# define OMAP_INT_1610_SoSSI_MATCH 19 #define OMAP_INT_1610_SoSSI_MATCH 19
# define OMAP_INT_1610_MEM_STICK 27 #define OMAP_INT_1610_MEM_STICK 27
# define OMAP_INT_1610_McBSP2RX_OF 31 #define OMAP_INT_1610_McBSP2RX_OF 31
# define OMAP_INT_1610_STI 32 #define OMAP_INT_1610_STI 32
# define OMAP_INT_1610_STI_WAKEUP 33 #define OMAP_INT_1610_STI_WAKEUP 33
# define OMAP_INT_1610_GPTIMER3 34 #define OMAP_INT_1610_GPTIMER3 34
# define OMAP_INT_1610_GPTIMER4 35 #define OMAP_INT_1610_GPTIMER4 35
# define OMAP_INT_1610_GPTIMER5 36 #define OMAP_INT_1610_GPTIMER5 36
# define OMAP_INT_1610_GPTIMER6 37 #define OMAP_INT_1610_GPTIMER6 37
# define OMAP_INT_1610_GPTIMER7 38 #define OMAP_INT_1610_GPTIMER7 38
# define OMAP_INT_1610_GPTIMER8 39 #define OMAP_INT_1610_GPTIMER8 39
# define OMAP_INT_1610_GPIO_BANK2 40 #define OMAP_INT_1610_GPIO_BANK2 40
# define OMAP_INT_1610_GPIO_BANK3 41 #define OMAP_INT_1610_GPIO_BANK3 41
# define OMAP_INT_1610_MMC2 42 #define OMAP_INT_1610_MMC2 42
# define OMAP_INT_1610_CF 43 #define OMAP_INT_1610_CF 43
# define OMAP_INT_1610_WAKE_UP_REQ 46 #define OMAP_INT_1610_WAKE_UP_REQ 46
# define OMAP_INT_1610_GPIO_BANK4 48 #define OMAP_INT_1610_GPIO_BANK4 48
# define OMAP_INT_1610_SPI 49 #define OMAP_INT_1610_SPI 49
# define OMAP_INT_1610_DMA_CH6 53 #define OMAP_INT_1610_DMA_CH6 53
# define OMAP_INT_1610_DMA_CH7 54 #define OMAP_INT_1610_DMA_CH7 54
# define OMAP_INT_1610_DMA_CH8 55 #define OMAP_INT_1610_DMA_CH8 55
# define OMAP_INT_1610_DMA_CH9 56 #define OMAP_INT_1610_DMA_CH9 56
# define OMAP_INT_1610_DMA_CH10 57 #define OMAP_INT_1610_DMA_CH10 57
# define OMAP_INT_1610_DMA_CH11 58 #define OMAP_INT_1610_DMA_CH11 58
# define OMAP_INT_1610_DMA_CH12 59 #define OMAP_INT_1610_DMA_CH12 59
# define OMAP_INT_1610_DMA_CH13 60 #define OMAP_INT_1610_DMA_CH13 60
# define OMAP_INT_1610_DMA_CH14 61 #define OMAP_INT_1610_DMA_CH14 61
# define OMAP_INT_1610_DMA_CH15 62 #define OMAP_INT_1610_DMA_CH15 62
# define OMAP_INT_1610_NAND 63 #define OMAP_INT_1610_NAND 63
/* /*
* OMAP-730 specific IRQ numbers for level 2 interrupt handler * OMAP-730 specific IRQ numbers for level 2 interrupt handler
*/ */
# define OMAP_INT_730_HW_ERRORS 0 #define OMAP_INT_730_HW_ERRORS 0
# define OMAP_INT_730_NFIQ_PWR_FAIL 1 #define OMAP_INT_730_NFIQ_PWR_FAIL 1
# define OMAP_INT_730_CFCD 2 #define OMAP_INT_730_CFCD 2
# define OMAP_INT_730_CFIREQ 3 #define OMAP_INT_730_CFIREQ 3
# define OMAP_INT_730_I2C 4 #define OMAP_INT_730_I2C 4
# define OMAP_INT_730_PCC 5 #define OMAP_INT_730_PCC 5
# define OMAP_INT_730_MPU_EXT_NIRQ 6 #define OMAP_INT_730_MPU_EXT_NIRQ 6
# define OMAP_INT_730_SPI_100K_1 7 #define OMAP_INT_730_SPI_100K_1 7
# define OMAP_INT_730_SYREN_SPI 8 #define OMAP_INT_730_SYREN_SPI 8
# define OMAP_INT_730_VLYNQ 9 #define OMAP_INT_730_VLYNQ 9
# define OMAP_INT_730_GPIO_BANK4 10 #define OMAP_INT_730_GPIO_BANK4 10
# define OMAP_INT_730_McBSP1TX 11 #define OMAP_INT_730_McBSP1TX 11
# define OMAP_INT_730_McBSP1RX 12 #define OMAP_INT_730_McBSP1RX 12
# define OMAP_INT_730_McBSP1RX_OF 13 #define OMAP_INT_730_McBSP1RX_OF 13
# define OMAP_INT_730_UART_MODEM_IRDA_2 14 #define OMAP_INT_730_UART_MODEM_IRDA_2 14
# define OMAP_INT_730_UART_MODEM_1 15 #define OMAP_INT_730_UART_MODEM_1 15
# define OMAP_INT_730_MCSI 16 #define OMAP_INT_730_MCSI 16
# define OMAP_INT_730_uWireTX 17 #define OMAP_INT_730_uWireTX 17
# define OMAP_INT_730_uWireRX 18 #define OMAP_INT_730_uWireRX 18
# define OMAP_INT_730_SMC_CD 19 #define OMAP_INT_730_SMC_CD 19
# define OMAP_INT_730_SMC_IREQ 20 #define OMAP_INT_730_SMC_IREQ 20
# define OMAP_INT_730_HDQ_1WIRE 21 #define OMAP_INT_730_HDQ_1WIRE 21
# define OMAP_INT_730_TIMER32K 22 #define OMAP_INT_730_TIMER32K 22
# define OMAP_INT_730_MMC_SDIO 23 #define OMAP_INT_730_MMC_SDIO 23
# define OMAP_INT_730_UPLD 24 #define OMAP_INT_730_UPLD 24
# define OMAP_INT_730_USB_HHC_1 27 #define OMAP_INT_730_USB_HHC_1 27
# define OMAP_INT_730_USB_HHC_2 28 #define OMAP_INT_730_USB_HHC_2 28
# define OMAP_INT_730_USB_GENI 29 #define OMAP_INT_730_USB_GENI 29
# define OMAP_INT_730_USB_OTG 30 #define OMAP_INT_730_USB_OTG 30
# define OMAP_INT_730_CAMERA_IF 31 #define OMAP_INT_730_CAMERA_IF 31
# define OMAP_INT_730_RNG 32 #define OMAP_INT_730_RNG 32
# define OMAP_INT_730_DUAL_MODE_TIMER 33 #define OMAP_INT_730_DUAL_MODE_TIMER 33
# define OMAP_INT_730_DBB_RF_EN 34 #define OMAP_INT_730_DBB_RF_EN 34
# define OMAP_INT_730_MPUIO_KEYPAD 35 #define OMAP_INT_730_MPUIO_KEYPAD 35
# define OMAP_INT_730_SHA1_MD5 36 #define OMAP_INT_730_SHA1_MD5 36
# define OMAP_INT_730_SPI_100K_2 37 #define OMAP_INT_730_SPI_100K_2 37
# define OMAP_INT_730_RNG_IDLE 38 #define OMAP_INT_730_RNG_IDLE 38
# define OMAP_INT_730_MPUIO 39 #define OMAP_INT_730_MPUIO 39
# define OMAP_INT_730_LLPC_LCD_CTRL_OFF 40 #define OMAP_INT_730_LLPC_LCD_CTRL_OFF 40
# define OMAP_INT_730_LLPC_OE_FALLING 41 #define OMAP_INT_730_LLPC_OE_FALLING 41
# define OMAP_INT_730_LLPC_OE_RISING 42 #define OMAP_INT_730_LLPC_OE_RISING 42
# define OMAP_INT_730_LLPC_VSYNC 43 #define OMAP_INT_730_LLPC_VSYNC 43
# define OMAP_INT_730_WAKE_UP_REQ 46 #define OMAP_INT_730_WAKE_UP_REQ 46
# define OMAP_INT_730_DMA_CH6 53 #define OMAP_INT_730_DMA_CH6 53
# define OMAP_INT_730_DMA_CH7 54 #define OMAP_INT_730_DMA_CH7 54
# define OMAP_INT_730_DMA_CH8 55 #define OMAP_INT_730_DMA_CH8 55
# define OMAP_INT_730_DMA_CH9 56 #define OMAP_INT_730_DMA_CH9 56
# define OMAP_INT_730_DMA_CH10 57 #define OMAP_INT_730_DMA_CH10 57
# define OMAP_INT_730_DMA_CH11 58 #define OMAP_INT_730_DMA_CH11 58
# define OMAP_INT_730_DMA_CH12 59 #define OMAP_INT_730_DMA_CH12 59
# define OMAP_INT_730_DMA_CH13 60 #define OMAP_INT_730_DMA_CH13 60
# define OMAP_INT_730_DMA_CH14 61 #define OMAP_INT_730_DMA_CH14 61
# define OMAP_INT_730_DMA_CH15 62 #define OMAP_INT_730_DMA_CH15 62
# define OMAP_INT_730_NAND 63 #define OMAP_INT_730_NAND 63
/* omap_dma.c */ /* omap_dma.c */
enum omap_dma_model { enum omap_dma_model {
@ -353,9 +353,9 @@ struct dma_irq_map {
enum omap_dma_port { enum omap_dma_port {
emiff = 0, emiff = 0,
emifs, emifs,
imif, /* omap16xx: ocp_t1 */ imif, /* omap16xx: ocp_t1 */
tipb, tipb,
local, /* omap16xx: ocp_t2 */ local, /* omap16xx: ocp_t2 */
tipb_mpui, tipb_mpui,
__omap_dma_port_last, __omap_dma_port_last,
}; };
@ -418,65 +418,65 @@ struct omap_dma_lcd_channel_s {
* DMA request numbers for OMAP1 * DMA request numbers for OMAP1
* See /usr/include/asm-arm/arch-omap/dma.h in Linux. * See /usr/include/asm-arm/arch-omap/dma.h in Linux.
*/ */
# define OMAP_DMA_NO_DEVICE 0 #define OMAP_DMA_NO_DEVICE 0
# define OMAP_DMA_MCSI1_TX 1 #define OMAP_DMA_MCSI1_TX 1
# define OMAP_DMA_MCSI1_RX 2 #define OMAP_DMA_MCSI1_RX 2
# define OMAP_DMA_I2C_RX 3 #define OMAP_DMA_I2C_RX 3
# define OMAP_DMA_I2C_TX 4 #define OMAP_DMA_I2C_TX 4
# define OMAP_DMA_EXT_NDMA_REQ0 5 #define OMAP_DMA_EXT_NDMA_REQ0 5
# define OMAP_DMA_EXT_NDMA_REQ1 6 #define OMAP_DMA_EXT_NDMA_REQ1 6
# define OMAP_DMA_UWIRE_TX 7 #define OMAP_DMA_UWIRE_TX 7
# define OMAP_DMA_MCBSP1_TX 8 #define OMAP_DMA_MCBSP1_TX 8
# define OMAP_DMA_MCBSP1_RX 9 #define OMAP_DMA_MCBSP1_RX 9
# define OMAP_DMA_MCBSP3_TX 10 #define OMAP_DMA_MCBSP3_TX 10
# define OMAP_DMA_MCBSP3_RX 11 #define OMAP_DMA_MCBSP3_RX 11
# define OMAP_DMA_UART1_TX 12 #define OMAP_DMA_UART1_TX 12
# define OMAP_DMA_UART1_RX 13 #define OMAP_DMA_UART1_RX 13
# define OMAP_DMA_UART2_TX 14 #define OMAP_DMA_UART2_TX 14
# define OMAP_DMA_UART2_RX 15 #define OMAP_DMA_UART2_RX 15
# define OMAP_DMA_MCBSP2_TX 16 #define OMAP_DMA_MCBSP2_TX 16
# define OMAP_DMA_MCBSP2_RX 17 #define OMAP_DMA_MCBSP2_RX 17
# define OMAP_DMA_UART3_TX 18 #define OMAP_DMA_UART3_TX 18
# define OMAP_DMA_UART3_RX 19 #define OMAP_DMA_UART3_RX 19
# define OMAP_DMA_CAMERA_IF_RX 20 #define OMAP_DMA_CAMERA_IF_RX 20
# define OMAP_DMA_MMC_TX 21 #define OMAP_DMA_MMC_TX 21
# define OMAP_DMA_MMC_RX 22 #define OMAP_DMA_MMC_RX 22
# define OMAP_DMA_NAND 23 /* Not in OMAP310 */ #define OMAP_DMA_NAND 23 /* Not in OMAP310 */
# define OMAP_DMA_IRQ_LCD_LINE 24 /* Not in OMAP310 */ #define OMAP_DMA_IRQ_LCD_LINE 24 /* Not in OMAP310 */
# define OMAP_DMA_MEMORY_STICK 25 /* Not in OMAP310 */ #define OMAP_DMA_MEMORY_STICK 25 /* Not in OMAP310 */
# define OMAP_DMA_USB_W2FC_RX0 26 #define OMAP_DMA_USB_W2FC_RX0 26
# define OMAP_DMA_USB_W2FC_RX1 27 #define OMAP_DMA_USB_W2FC_RX1 27
# define OMAP_DMA_USB_W2FC_RX2 28 #define OMAP_DMA_USB_W2FC_RX2 28
# define OMAP_DMA_USB_W2FC_TX0 29 #define OMAP_DMA_USB_W2FC_TX0 29
# define OMAP_DMA_USB_W2FC_TX1 30 #define OMAP_DMA_USB_W2FC_TX1 30
# define OMAP_DMA_USB_W2FC_TX2 31 #define OMAP_DMA_USB_W2FC_TX2 31
/* These are only for 1610 */ /* These are only for 1610 */
# define OMAP_DMA_CRYPTO_DES_IN 32 #define OMAP_DMA_CRYPTO_DES_IN 32
# define OMAP_DMA_SPI_TX 33 #define OMAP_DMA_SPI_TX 33
# define OMAP_DMA_SPI_RX 34 #define OMAP_DMA_SPI_RX 34
# define OMAP_DMA_CRYPTO_HASH 35 #define OMAP_DMA_CRYPTO_HASH 35
# define OMAP_DMA_CCP_ATTN 36 #define OMAP_DMA_CCP_ATTN 36
# define OMAP_DMA_CCP_FIFO_NOT_EMPTY 37 #define OMAP_DMA_CCP_FIFO_NOT_EMPTY 37
# define OMAP_DMA_CMT_APE_TX_CHAN_0 38 #define OMAP_DMA_CMT_APE_TX_CHAN_0 38
# define OMAP_DMA_CMT_APE_RV_CHAN_0 39 #define OMAP_DMA_CMT_APE_RV_CHAN_0 39
# define OMAP_DMA_CMT_APE_TX_CHAN_1 40 #define OMAP_DMA_CMT_APE_TX_CHAN_1 40
# define OMAP_DMA_CMT_APE_RV_CHAN_1 41 #define OMAP_DMA_CMT_APE_RV_CHAN_1 41
# define OMAP_DMA_CMT_APE_TX_CHAN_2 42 #define OMAP_DMA_CMT_APE_TX_CHAN_2 42
# define OMAP_DMA_CMT_APE_RV_CHAN_2 43 #define OMAP_DMA_CMT_APE_RV_CHAN_2 43
# define OMAP_DMA_CMT_APE_TX_CHAN_3 44 #define OMAP_DMA_CMT_APE_TX_CHAN_3 44
# define OMAP_DMA_CMT_APE_RV_CHAN_3 45 #define OMAP_DMA_CMT_APE_RV_CHAN_3 45
# define OMAP_DMA_CMT_APE_TX_CHAN_4 46 #define OMAP_DMA_CMT_APE_TX_CHAN_4 46
# define OMAP_DMA_CMT_APE_RV_CHAN_4 47 #define OMAP_DMA_CMT_APE_RV_CHAN_4 47
# define OMAP_DMA_CMT_APE_TX_CHAN_5 48 #define OMAP_DMA_CMT_APE_TX_CHAN_5 48
# define OMAP_DMA_CMT_APE_RV_CHAN_5 49 #define OMAP_DMA_CMT_APE_RV_CHAN_5 49
# define OMAP_DMA_CMT_APE_TX_CHAN_6 50 #define OMAP_DMA_CMT_APE_TX_CHAN_6 50
# define OMAP_DMA_CMT_APE_RV_CHAN_6 51 #define OMAP_DMA_CMT_APE_RV_CHAN_6 51
# define OMAP_DMA_CMT_APE_TX_CHAN_7 52 #define OMAP_DMA_CMT_APE_TX_CHAN_7 52
# define OMAP_DMA_CMT_APE_RV_CHAN_7 53 #define OMAP_DMA_CMT_APE_RV_CHAN_7 53
# define OMAP_DMA_MMC2_TX 54 #define OMAP_DMA_MMC2_TX 54
# define OMAP_DMA_MMC2_RX 55 #define OMAP_DMA_MMC2_RX 55
# define OMAP_DMA_CRYPTO_DES_OUT 56 #define OMAP_DMA_CRYPTO_DES_OUT 56
struct omap_uart_s; struct omap_uart_s;
struct omap_uart_s *omap_uart_init(hwaddr base, struct omap_uart_s *omap_uart_init(hwaddr base,
@ -542,14 +542,14 @@ void omap_mmc_set_clk(DeviceState *dev, omap_clk clk);
/* omap_i2c.c */ /* omap_i2c.c */
I2CBus *omap_i2c_bus(DeviceState *omap_i2c); I2CBus *omap_i2c_bus(DeviceState *omap_i2c);
# define cpu_is_omap310(cpu) (cpu->mpu_model == omap310) #define cpu_is_omap310(cpu) (cpu->mpu_model == omap310)
# define cpu_is_omap1510(cpu) (cpu->mpu_model == omap1510) #define cpu_is_omap1510(cpu) (cpu->mpu_model == omap1510)
# define cpu_is_omap1610(cpu) (cpu->mpu_model == omap1610) #define cpu_is_omap1610(cpu) (cpu->mpu_model == omap1610)
# define cpu_is_omap1710(cpu) (cpu->mpu_model == omap1710) #define cpu_is_omap1710(cpu) (cpu->mpu_model == omap1710)
# define cpu_is_omap15xx(cpu) \ #define cpu_is_omap15xx(cpu) \
(cpu_is_omap310(cpu) || cpu_is_omap1510(cpu)) (cpu_is_omap310(cpu) || cpu_is_omap1510(cpu))
# define cpu_is_omap16xx(cpu) \ #define cpu_is_omap16xx(cpu) \
(cpu_is_omap1610(cpu) || cpu_is_omap1710(cpu)) (cpu_is_omap1610(cpu) || cpu_is_omap1710(cpu))
struct omap_mpu_state_s { struct omap_mpu_state_s {
@ -685,14 +685,14 @@ void omap_badwidth_write32(void *opaque, hwaddr addr,
void omap_mpu_wakeup(void *opaque, int irq, int req); void omap_mpu_wakeup(void *opaque, int irq, int req);
# define OMAP_BAD_REG(paddr) \ #define OMAP_BAD_REG(paddr) \
qemu_log_mask(LOG_GUEST_ERROR, "%s: Bad register %#08"HWADDR_PRIx"\n", \ qemu_log_mask(LOG_GUEST_ERROR, "%s: Bad register %#08"HWADDR_PRIx"\n", \
__func__, paddr) __func__, paddr)
# define OMAP_RO_REG(paddr) \ #define OMAP_RO_REG(paddr) \
qemu_log_mask(LOG_GUEST_ERROR, "%s: Read-only register %#08" \ qemu_log_mask(LOG_GUEST_ERROR, "%s: Read-only register %#08" \
HWADDR_PRIx "\n", \ HWADDR_PRIx "\n", \
__func__, paddr) __func__, paddr)
# define OMAP_MPUI_REG_MASK 0x000007ff #define OMAP_MPUI_REG_MASK 0x000007ff
#endif #endif

View File

@ -11,7 +11,7 @@
/* zaurus.c */ /* zaurus.c */
#define SL_PXA_PARAM_BASE 0xa0000a00 #define SL_PXA_PARAM_BASE 0xa0000a00
void sl_bootparam_write(hwaddr ptr); void sl_bootparam_write(hwaddr ptr);
#endif #endif

View File

@ -54,7 +54,7 @@ struct soc_dma_ch_s {
int bytes; int bytes;
/* Initialised by the DMA module, call soc_dma_ch_update after writing. */ /* Initialised by the DMA module, call soc_dma_ch_update after writing. */
enum soc_dma_access_type type[2]; enum soc_dma_access_type type[2];
hwaddr vaddr[2]; /* Updated by .transfer_fn(). */ hwaddr vaddr[2]; /* Updated by .transfer_fn(). */
/* Private */ /* Private */
void *paddr[2]; void *paddr[2];
soc_dma_io_t io_fn[2]; soc_dma_io_t io_fn[2];
@ -70,7 +70,7 @@ struct soc_dma_ch_s {
struct soc_dma_s { struct soc_dma_s {
/* Following fields are set by the SoC DMA module and can be used /* Following fields are set by the SoC DMA module and can be used
* by anybody. */ * by anybody. */
uint64_t drqbmp; /* Is zeroed by soc_dma_reset() */ uint64_t drqbmp; /* Is zeroed by soc_dma_reset() */
qemu_irq *drq; qemu_irq *drq;
void *opaque; void *opaque;
int64_t freq; int64_t freq;