On Thu, May 16, 2019 at 02:47:20PM +0300, [email protected] wrote:
> +     hcd->localmem_pool = devm_gen_pool_create(dev, PAGE_SHIFT,
> +                                               dev_to_node(dev),
> +                                               "ohci-sm501");
> +     if (IS_ERR(hcd->localmem_pool)) {
> +             retval = PTR_ERR(hcd->localmem_pool);
> +             goto err5;
> +     }
> +
> +     local_mem = devm_ioremap(dev, mem->start, resource_size(mem));
> +     if (!local_mem) {
> +             retval = -ENOMEM;
> +             goto err5;
> +     }
> +
> +     retval = gen_pool_add_virt(hcd->localmem_pool,
> +                                (unsigned long)local_mem,
> +                                mem->start - mem->parent->start,
> +                                resource_size(mem),
> +                                dev_to_node(dev));

I wonder if having a helper for these operations would be useful,
explaining what we do here.  That is create a pool for a resource,
where the virtual address is the ioremap of said resource.  We
could also make that a managed API so that you can get rid of the
cleanup path.

Reply via email to