Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 620d785b authored by Rafał Miłecki's avatar Rafał Miłecki Committed by John W. Linville
Browse files

b43: add helpers for block R/W ops

parent ac56703e
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -897,6 +897,18 @@ static inline void b43_write32(struct b43_wldev *dev, u16 offset, u32 value)
	ssb_write32(dev->sdev, offset, value);
}

static inline void b43_block_read(struct b43_wldev *dev, void *buffer,
				 size_t count, u16 offset, u8 reg_width)
{
	ssb_block_read(dev->sdev, buffer, count, offset, reg_width);
}

static inline void b43_block_write(struct b43_wldev *dev, const void *buffer,
				   size_t count, u16 offset, u8 reg_width)
{
	ssb_block_write(dev->sdev, buffer, count, offset, reg_width);
}

static inline bool b43_using_pio_transfers(struct b43_wldev *dev)
{
	return dev->__using_pio_transfers;
+10 −10
Original line number Diff line number Diff line
@@ -339,7 +339,7 @@ static u16 tx_write_2byte_queue(struct b43_pio_txqueue *q,
	ctl |= B43_PIO_TXCTL_WRITELO | B43_PIO_TXCTL_WRITEHI;
	b43_piotx_write16(q, B43_PIO_TXCTL, ctl);

	ssb_block_write(dev->sdev, data, (data_len & ~1),
	b43_block_write(dev, data, (data_len & ~1),
			q->mmio_base + B43_PIO_TXDATA,
			sizeof(u16));
	if (data_len & 1) {
@@ -351,7 +351,7 @@ static u16 tx_write_2byte_queue(struct b43_pio_txqueue *q,
		b43_piotx_write16(q, B43_PIO_TXCTL, ctl);
		tail[0] = data[data_len - 1];
		tail[1] = 0;
		ssb_block_write(dev->sdev, tail, 2,
		b43_block_write(dev, tail, 2,
				q->mmio_base + B43_PIO_TXDATA,
				sizeof(u16));
	}
@@ -393,7 +393,7 @@ static u32 tx_write_4byte_queue(struct b43_pio_txqueue *q,
	       B43_PIO8_TXCTL_16_23 | B43_PIO8_TXCTL_24_31;
	b43_piotx_write32(q, B43_PIO8_TXCTL, ctl);

	ssb_block_write(dev->sdev, data, (data_len & ~3),
	b43_block_write(dev, data, (data_len & ~3),
			q->mmio_base + B43_PIO8_TXDATA,
			sizeof(u32));
	if (data_len & 3) {
@@ -421,7 +421,7 @@ static u32 tx_write_4byte_queue(struct b43_pio_txqueue *q,
			break;
		}
		b43_piotx_write32(q, B43_PIO8_TXCTL, ctl);
		ssb_block_write(dev->sdev, tail, 4,
		b43_block_write(dev, tail, 4,
				q->mmio_base + B43_PIO8_TXDATA,
				sizeof(u32));
	}
@@ -657,11 +657,11 @@ static bool pio_rx_frame(struct b43_pio_rxqueue *q)

	/* Get the preamble (RX header) */
	if (q->rev >= 8) {
		ssb_block_read(dev->sdev, rxhdr, sizeof(*rxhdr),
		b43_block_read(dev, rxhdr, sizeof(*rxhdr),
			       q->mmio_base + B43_PIO8_RXDATA,
			       sizeof(u32));
	} else {
		ssb_block_read(dev->sdev, rxhdr, sizeof(*rxhdr),
		b43_block_read(dev, rxhdr, sizeof(*rxhdr),
			       q->mmio_base + B43_PIO_RXDATA,
			       sizeof(u16));
	}
@@ -697,7 +697,7 @@ static bool pio_rx_frame(struct b43_pio_rxqueue *q)
	skb_reserve(skb, 2);
	skb_put(skb, len + padding);
	if (q->rev >= 8) {
		ssb_block_read(dev->sdev, skb->data + padding, (len & ~3),
		b43_block_read(dev, skb->data + padding, (len & ~3),
			       q->mmio_base + B43_PIO8_RXDATA,
			       sizeof(u32));
		if (len & 3) {
@@ -705,7 +705,7 @@ static bool pio_rx_frame(struct b43_pio_rxqueue *q)
			BUILD_BUG_ON(sizeof(wl->pio_tailspace) < 4);

			/* Read the last few bytes. */
			ssb_block_read(dev->sdev, tail, 4,
			b43_block_read(dev, tail, 4,
				       q->mmio_base + B43_PIO8_RXDATA,
				       sizeof(u32));
			switch (len & 3) {
@@ -724,7 +724,7 @@ static bool pio_rx_frame(struct b43_pio_rxqueue *q)
			}
		}
	} else {
		ssb_block_read(dev->sdev, skb->data + padding, (len & ~1),
		b43_block_read(dev, skb->data + padding, (len & ~1),
			       q->mmio_base + B43_PIO_RXDATA,
			       sizeof(u16));
		if (len & 1) {
@@ -732,7 +732,7 @@ static bool pio_rx_frame(struct b43_pio_rxqueue *q)
			BUILD_BUG_ON(sizeof(wl->pio_tailspace) < 2);

			/* Read the last byte. */
			ssb_block_read(dev->sdev, tail, 2,
			b43_block_read(dev, tail, 2,
				       q->mmio_base + B43_PIO_RXDATA,
				       sizeof(u16));
			skb->data[len + padding - 1] = tail[0];