Commit 9531f13a authored by Stefan Richter's avatar Stefan Richter

ieee1394: ohci1394: more obvious endianess handling

Rename ohci1394's packet_swab to header_le32_to_cpu to better reflect
what it actually does.  Also, define a constant array as 'const' and
check the array index properly.
Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
parent cf82703d
...@@ -181,36 +181,35 @@ static int alloc_dma_trm_ctx(struct ti_ohci *ohci, struct dma_trm_ctx *d, ...@@ -181,36 +181,35 @@ static int alloc_dma_trm_ctx(struct ti_ohci *ohci, struct dma_trm_ctx *d,
static void ohci1394_pci_remove(struct pci_dev *pdev); static void ohci1394_pci_remove(struct pci_dev *pdev);
#ifndef __LITTLE_ENDIAN #ifndef __LITTLE_ENDIAN
static unsigned hdr_sizes[] = const static size_t hdr_sizes[] = {
{
3, /* TCODE_WRITEQ */ 3, /* TCODE_WRITEQ */
4, /* TCODE_WRITEB */ 4, /* TCODE_WRITEB */
3, /* TCODE_WRITE_RESPONSE */ 3, /* TCODE_WRITE_RESPONSE */
0, /* ??? */ 0, /* reserved */
3, /* TCODE_READQ */ 3, /* TCODE_READQ */
4, /* TCODE_READB */ 4, /* TCODE_READB */
3, /* TCODE_READQ_RESPONSE */ 3, /* TCODE_READQ_RESPONSE */
4, /* TCODE_READB_RESPONSE */ 4, /* TCODE_READB_RESPONSE */
1, /* TCODE_CYCLE_START (???) */ 1, /* TCODE_CYCLE_START */
4, /* TCODE_LOCK_REQUEST */ 4, /* TCODE_LOCK_REQUEST */
2, /* TCODE_ISO_DATA */ 2, /* TCODE_ISO_DATA */
4, /* TCODE_LOCK_RESPONSE */ 4, /* TCODE_LOCK_RESPONSE */
/* rest is reserved or link-internal */
}; };
/* Swap headers */ static inline void header_le32_to_cpu(quadlet_t *data, unsigned char tcode)
static inline void packet_swab(quadlet_t *data, int tcode)
{ {
size_t size = hdr_sizes[tcode]; size_t size;
if (tcode > TCODE_LOCK_RESPONSE || hdr_sizes[tcode] == 0) if (unlikely(tcode >= ARRAY_SIZE(hdr_sizes)))
return; return;
size = hdr_sizes[tcode];
while (size--) while (size--)
data[size] = swab32(data[size]); data[size] = le32_to_cpu(data[size]);
} }
#else #else
/* Don't waste cycles on same sex byte swaps */ #define header_le32_to_cpu(w,x) do {} while (0)
#define packet_swab(w,x) do {} while (0)
#endif /* !LITTLE_ENDIAN */ #endif /* !LITTLE_ENDIAN */
/*********************************** /***********************************
...@@ -701,7 +700,7 @@ static void insert_packet(struct ti_ohci *ohci, ...@@ -701,7 +700,7 @@ static void insert_packet(struct ti_ohci *ohci,
d->prg_cpu[idx]->data[2] = packet->header[2]; d->prg_cpu[idx]->data[2] = packet->header[2];
d->prg_cpu[idx]->data[3] = packet->header[3]; d->prg_cpu[idx]->data[3] = packet->header[3];
} }
packet_swab(d->prg_cpu[idx]->data, packet->tcode); header_le32_to_cpu(d->prg_cpu[idx]->data, packet->tcode);
} }
if (packet->data_size) { /* block transmit */ if (packet->data_size) { /* block transmit */
...@@ -777,7 +776,7 @@ static void insert_packet(struct ti_ohci *ohci, ...@@ -777,7 +776,7 @@ static void insert_packet(struct ti_ohci *ohci,
d->prg_cpu[idx]->data[0] = packet->speed_code<<16 | d->prg_cpu[idx]->data[0] = packet->speed_code<<16 |
(packet->header[0] & 0xFFFF); (packet->header[0] & 0xFFFF);
d->prg_cpu[idx]->data[1] = packet->header[0] & 0xFFFF0000; d->prg_cpu[idx]->data[1] = packet->header[0] & 0xFFFF0000;
packet_swab(d->prg_cpu[idx]->data, packet->tcode); header_le32_to_cpu(d->prg_cpu[idx]->data, packet->tcode);
d->prg_cpu[idx]->begin.control = d->prg_cpu[idx]->begin.control =
cpu_to_le32(DMA_CTL_OUTPUT_MORE | cpu_to_le32(DMA_CTL_OUTPUT_MORE |
...@@ -2731,7 +2730,7 @@ static void dma_rcv_tasklet (unsigned long data) ...@@ -2731,7 +2730,7 @@ static void dma_rcv_tasklet (unsigned long data)
* bus reset. We always ignore it. */ * bus reset. We always ignore it. */
if (tcode != OHCI1394_TCODE_PHY) { if (tcode != OHCI1394_TCODE_PHY) {
if (!ohci->no_swap_incoming) if (!ohci->no_swap_incoming)
packet_swab(d->spb, tcode); header_le32_to_cpu(d->spb, tcode);
DBGMSG("Packet received from node" DBGMSG("Packet received from node"
" %d ack=0x%02X spd=%d tcode=0x%X" " %d ack=0x%02X spd=%d tcode=0x%X"
" length=%d ctx=%d tlabel=%d", " length=%d ctx=%d tlabel=%d",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment