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

Commit 235742ae authored by Brett Rudley's avatar Brett Rudley Committed by Greg Kroah-Hartman
Browse files

staging: brcm80211: Remove abstraction of pci_(alloc/free)_consistent



The abstraction for allocating and freeing dma descriptor memory
has been removed and replaced by usage of pci_alloc_consistent and
pci_free_consistent.

Reviewed-by: default avatarRoland Vossen <rvossen@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 9010c46c
Loading
Loading
Loading
Loading
+0 −16
Original line number Diff line number Diff line
@@ -50,22 +50,6 @@ extern uint osl_pci_slot(struct osl_info *osh);

#define BUS_SWAP32(v)		(v)

extern void *osl_dma_alloc_consistent(struct osl_info *osh, uint size,
				      u16 align, uint *tot, unsigned long *pap);

#ifdef BRCM_FULLMAC
#define	DMA_ALLOC_CONSISTENT(osh, size, pap, dmah, alignbits) \
	osl_dma_alloc_consistent((osh), (size), (0), (tot), (pap))
#else
#define	DMA_ALLOC_CONSISTENT(osh, size, align, tot, pap, dmah) \
	osl_dma_alloc_consistent((osh), (size), (align), (tot), (pap))
#endif /* BRCM_FULLMAC */

#define	DMA_FREE_CONSISTENT(osh, va, size, pa, dmah) \
	osl_dma_free_consistent((osh), (void *)(va), (size), (pa))
extern void osl_dma_free_consistent(struct osl_info *osh, void *va,
				    uint size, unsigned long pa);

/* map/unmap direction */
#define	DMA_TX	1		/* TX direction for DMA */
#define	DMA_RX	2		/* RX direction for DMA */
+27 −13
Original line number Diff line number Diff line
@@ -32,6 +32,10 @@
#include <asm/addrspace.h>
#endif

#ifdef BRCM_FULLMAC
#error "hnddma.c shouldn't be needed for FULLMAC"
#endif

/* debug/trace */
#ifdef BCMDBG
#define	DMA_ERROR(args) \
@@ -527,6 +531,18 @@ static bool _dma_alloc(dma_info_t *di, uint direction)
	return dma64_alloc(di, direction);
}

void *dma_alloc_consistent(struct osl_info *osh, uint size, u16 align_bits,
			       uint *alloced, unsigned long *pap)
{
	if (align_bits) {
		u16 align = (1 << align_bits);
		if (!IS_ALIGNED(PAGE_SIZE, align))
			size += align;
		*alloced = size;
	}
	return pci_alloc_consistent(osh->pdev, size, (dma_addr_t *) pap);
}

/* !! may be called with core in reset */
static void _dma_detach(dma_info_t *di)
{
@@ -539,15 +555,13 @@ static void _dma_detach(dma_info_t *di)

	/* free dma descriptor rings */
	if (di->txd64)
		DMA_FREE_CONSISTENT(di->osh,
				    ((s8 *)di->txd64 -
				    di->txdalign), di->txdalloc,
				    (di->txdpaorig), &di->tx_dmah);
		pci_free_consistent(di->osh->pdev, di->txdalloc,
				    ((s8 *)di->txd64 - di->txdalign),
				    (di->txdpaorig));
	if (di->rxd64)
		DMA_FREE_CONSISTENT(di->osh,
				    ((s8 *)di->rxd64 -
				    di->rxdalign), di->rxdalloc,
				    (di->rxdpaorig), &di->rx_dmah);
		pci_free_consistent(di->osh->pdev, di->rxdalloc,
				    ((s8 *)di->rxd64 - di->rxdalign),
				    (di->rxdpaorig));

	/* free packet pointer vectors */
	if (di->txp)
@@ -1080,8 +1094,8 @@ static void *dma_ringalloc(struct osl_info *osh, u32 boundary, uint size,
	u32 desc_strtaddr;
	u32 alignbytes = 1 << *alignbits;

	va = DMA_ALLOC_CONSISTENT(osh, size, *alignbits, alloced, descpa,
		dmah);
	va = dma_alloc_consistent(osh, size, *alignbits, alloced, descpa);

	if (NULL == va)
		return NULL;

@@ -1089,9 +1103,9 @@ static void *dma_ringalloc(struct osl_info *osh, u32 boundary, uint size,
	if (((desc_strtaddr + size - 1) & boundary) != (desc_strtaddr
							& boundary)) {
		*alignbits = dma_align_sizetobits(size);
		DMA_FREE_CONSISTENT(osh, va, size, *descpa, dmah);
		va = DMA_ALLOC_CONSISTENT(osh, size, *alignbits, alloced,
					  descpa, dmah);
		pci_free_consistent(osh->pdev, size, va, *descpa);
		va = dma_alloc_consistent(osh, size, *alignbits,
			alloced, descpa);
	}
	return va;
}
+0 −22
Original line number Diff line number Diff line
@@ -139,28 +139,6 @@ uint osl_pci_slot(struct osl_info *osh)
	return PCI_SLOT(((struct pci_dev *)osh->pdev)->devfn);
}

void *osl_dma_alloc_consistent(struct osl_info *osh, uint size, u16 align_bits,
			       uint *alloced, unsigned long *pap)
{
	ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC)));

	if (align_bits) {
		u16 align = (1 << align_bits);
		if (!IS_ALIGNED(PAGE_SIZE, align))
			size += align;
		*alloced = size;
	}
	return pci_alloc_consistent(osh->pdev, size, (dma_addr_t *) pap);
}

void osl_dma_free_consistent(struct osl_info *osh, void *va, uint size,
			     unsigned long pa)
{
	ASSERT((osh && (osh->magic == OS_HANDLE_MAGIC)));

	pci_free_consistent(osh->pdev, size, va, (dma_addr_t) pa);
}

#if defined(BCMDBG_ASSERT)
void osl_assert(char *exp, char *file, int line)
{