Loading drivers/soc/fsl/qe/qe_common.c +33 −33 Original line number Diff line number Diff line Loading @@ -102,6 +102,39 @@ int cpm_muram_init(void) return ret; } /* * cpm_muram_alloc_common - cpm_muram_alloc common code * @size: number of bytes to allocate * @algo: algorithm for alloc. * @data: data for genalloc's algorithm. * * This function returns an offset into the muram area. */ static unsigned long cpm_muram_alloc_common(unsigned long size, genpool_algo_t algo, void *data) { struct muram_block *entry; unsigned long start; start = gen_pool_alloc_algo(muram_pool, size, algo, data); if (!start) goto out2; start = start - GENPOOL_OFFSET; memset_io(cpm_muram_addr(start), 0, size); entry = kmalloc(sizeof(*entry), GFP_KERNEL); if (!entry) goto out1; entry->start = start; entry->size = size; list_add(&entry->head, &muram_block_list); return start; out1: gen_pool_free(muram_pool, start, size); out2: return (unsigned long)-ENOMEM; } /* * cpm_muram_alloc - allocate the requested size worth of multi-user ram * @size: number of bytes to allocate Loading Loading @@ -175,39 +208,6 @@ unsigned long cpm_muram_alloc_fixed(unsigned long offset, unsigned long size) } EXPORT_SYMBOL(cpm_muram_alloc_fixed); /* * cpm_muram_alloc_common - cpm_muram_alloc common code * @size: number of bytes to allocate * @algo: algorithm for alloc. * @data: data for genalloc's algorithm. * * This function returns an offset into the muram area. */ unsigned long cpm_muram_alloc_common(unsigned long size, genpool_algo_t algo, void *data) { struct muram_block *entry; unsigned long start; start = gen_pool_alloc_algo(muram_pool, size, algo, data); if (!start) goto out2; start = start - GENPOOL_OFFSET; memset_io(cpm_muram_addr(start), 0, size); entry = kmalloc(sizeof(*entry), GFP_KERNEL); if (!entry) goto out1; entry->start = start; entry->size = size; list_add(&entry->head, &muram_block_list); return start; out1: gen_pool_free(muram_pool, start, size); out2: return (unsigned long)-ENOMEM; } /** * cpm_muram_addr - turn a muram offset into a virtual address * @offset: muram offset to convert Loading include/soc/fsl/qe/qe.h +0 −2 Original line number Diff line number Diff line Loading @@ -103,8 +103,6 @@ int cpm_muram_init(void); unsigned long cpm_muram_alloc(unsigned long size, unsigned long align); int cpm_muram_free(unsigned long offset); unsigned long cpm_muram_alloc_fixed(unsigned long offset, unsigned long size); unsigned long cpm_muram_alloc_common(unsigned long size, genpool_algo_t algo, void *data); void __iomem *cpm_muram_addr(unsigned long offset); unsigned long cpm_muram_offset(void __iomem *addr); dma_addr_t cpm_muram_dma(void __iomem *addr); Loading Loading
drivers/soc/fsl/qe/qe_common.c +33 −33 Original line number Diff line number Diff line Loading @@ -102,6 +102,39 @@ int cpm_muram_init(void) return ret; } /* * cpm_muram_alloc_common - cpm_muram_alloc common code * @size: number of bytes to allocate * @algo: algorithm for alloc. * @data: data for genalloc's algorithm. * * This function returns an offset into the muram area. */ static unsigned long cpm_muram_alloc_common(unsigned long size, genpool_algo_t algo, void *data) { struct muram_block *entry; unsigned long start; start = gen_pool_alloc_algo(muram_pool, size, algo, data); if (!start) goto out2; start = start - GENPOOL_OFFSET; memset_io(cpm_muram_addr(start), 0, size); entry = kmalloc(sizeof(*entry), GFP_KERNEL); if (!entry) goto out1; entry->start = start; entry->size = size; list_add(&entry->head, &muram_block_list); return start; out1: gen_pool_free(muram_pool, start, size); out2: return (unsigned long)-ENOMEM; } /* * cpm_muram_alloc - allocate the requested size worth of multi-user ram * @size: number of bytes to allocate Loading Loading @@ -175,39 +208,6 @@ unsigned long cpm_muram_alloc_fixed(unsigned long offset, unsigned long size) } EXPORT_SYMBOL(cpm_muram_alloc_fixed); /* * cpm_muram_alloc_common - cpm_muram_alloc common code * @size: number of bytes to allocate * @algo: algorithm for alloc. * @data: data for genalloc's algorithm. * * This function returns an offset into the muram area. */ unsigned long cpm_muram_alloc_common(unsigned long size, genpool_algo_t algo, void *data) { struct muram_block *entry; unsigned long start; start = gen_pool_alloc_algo(muram_pool, size, algo, data); if (!start) goto out2; start = start - GENPOOL_OFFSET; memset_io(cpm_muram_addr(start), 0, size); entry = kmalloc(sizeof(*entry), GFP_KERNEL); if (!entry) goto out1; entry->start = start; entry->size = size; list_add(&entry->head, &muram_block_list); return start; out1: gen_pool_free(muram_pool, start, size); out2: return (unsigned long)-ENOMEM; } /** * cpm_muram_addr - turn a muram offset into a virtual address * @offset: muram offset to convert Loading
include/soc/fsl/qe/qe.h +0 −2 Original line number Diff line number Diff line Loading @@ -103,8 +103,6 @@ int cpm_muram_init(void); unsigned long cpm_muram_alloc(unsigned long size, unsigned long align); int cpm_muram_free(unsigned long offset); unsigned long cpm_muram_alloc_fixed(unsigned long offset, unsigned long size); unsigned long cpm_muram_alloc_common(unsigned long size, genpool_algo_t algo, void *data); void __iomem *cpm_muram_addr(unsigned long offset); unsigned long cpm_muram_offset(void __iomem *addr); dma_addr_t cpm_muram_dma(void __iomem *addr); Loading