/** * fman_muram_init * @base: Pointer to base of memory mapped FM-MURAM. * @size: Size of the FM-MURAM partition. * * Creates partition in the MURAM. * The routine returns a pointer to the MURAM partition. * This pointer must be passed as to all other FM-MURAM function calls. * No actual initialization or configuration of FM_MURAM hardware is done by * this routine. * * Return: pointer to FM-MURAM object, or NULL for Failure.
*/ struct muram_info *fman_muram_init(phys_addr_t base, size_t size)
{ struct muram_info *muram; void __iomem *vaddr; int ret;
muram = kzalloc(sizeof(*muram), GFP_KERNEL); if (!muram) return NULL;
muram->pool = gen_pool_create(ilog2(64), -1); if (!muram->pool) {
pr_err("%s(): MURAM pool create failed\n", __func__); goto muram_free;
}
/** * fman_muram_offset_to_vbase * @muram: FM-MURAM module pointer. * @offset: the offset of the memory block * * Gives the address of the memory region from specific offset * * Return: The address of the memory block
*/ unsignedlong fman_muram_offset_to_vbase(struct muram_info *muram, unsignedlong offset)
{ return offset + (unsignedlong)muram->vbase;
}
/** * fman_muram_alloc * @muram: FM-MURAM module pointer. * @size: Size of the memory to be allocated. * * Allocate some memory from FM-MURAM partition. * * Return: address of the allocated memory; NULL otherwise.
*/ unsignedlong fman_muram_alloc(struct muram_info *muram, size_t size)
{ unsignedlong vaddr;
vaddr = gen_pool_alloc(muram->pool, size); if (!vaddr) return -ENOMEM;
/** * fman_muram_free_mem * @muram: FM-MURAM module pointer. * @offset: offset of the memory region to be freed. * @size: size of the memory to be freed. * * Free an allocated memory from FM-MURAM partition.
*/ void fman_muram_free_mem(struct muram_info *muram, unsignedlong offset,
size_t size)
{ unsignedlong addr = fman_muram_offset_to_vbase(muram, offset);
gen_pool_free(muram->pool, addr, size);
}
Messung V0.5
¤ Dauer der Verarbeitung: 0.22 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.