Revision e927bb00 hw/omap2.c
b/hw/omap2.c | ||
---|---|---|
1109 | 1109 |
struct omap_mcspi_ch_s { |
1110 | 1110 |
qemu_irq txdrq; |
1111 | 1111 |
qemu_irq rxdrq; |
1112 |
uint32_t (*txrx)(void *opaque, uint32_t); |
|
1112 |
uint32_t (*txrx)(void *opaque, uint32_t, int);
|
|
1113 | 1113 |
void *opaque; |
1114 | 1114 |
|
1115 | 1115 |
uint32_t tx; |
... | ... | |
1157 | 1157 |
if (!(s->control & 1) || /* SINGLE */ |
1158 | 1158 |
(ch->config & (1 << 20))) { /* FORCE */ |
1159 | 1159 |
if (ch->txrx) |
1160 |
ch->rx = ch->txrx(ch->opaque, ch->tx); |
|
1160 |
ch->rx = ch->txrx(ch->opaque, ch->tx, /* WL */ |
|
1161 |
1 + (0x1f & (ch->config >> 7))); |
|
1161 | 1162 |
} |
1162 | 1163 |
|
1163 | 1164 |
ch->tx = 0; |
... | ... | |
1408 | 1409 |
} |
1409 | 1410 |
|
1410 | 1411 |
void omap_mcspi_attach(struct omap_mcspi_s *s, |
1411 |
uint32_t (*txrx)(void *opaque, uint32_t), void *opaque, |
|
1412 |
uint32_t (*txrx)(void *opaque, uint32_t, int), void *opaque,
|
|
1412 | 1413 |
int chipselect) |
1413 | 1414 |
{ |
1414 | 1415 |
if (chipselect < 0 || chipselect >= s->chnum) |
... | ... | |
1476 | 1477 |
|
1477 | 1478 |
case 0x24: /* STI_ER / STI_DR / XTI_TRACESELECT */ |
1478 | 1479 |
case 0x28: /* STI_RX_DR / XTI_RXDATA */ |
1479 |
break; |
|
1480 |
/* TODO */ |
|
1481 |
return 0; |
|
1480 | 1482 |
|
1481 | 1483 |
case 0x2c: /* STI_CLK_CTRL / XTI_SCLKCRTL */ |
1482 | 1484 |
return s->clkcontrol; |
... | ... | |
1527 | 1529 |
|
1528 | 1530 |
case 0x24: /* STI_ER / STI_DR / XTI_TRACESELECT */ |
1529 | 1531 |
case 0x28: /* STI_RX_DR / XTI_RXDATA */ |
1532 |
/* TODO */ |
|
1533 |
return; |
|
1534 |
|
|
1530 | 1535 |
default: |
1531 | 1536 |
OMAP_BAD_REG(addr); |
1532 | 1537 |
return; |
Also available in: Unified diff