[RFC/WIP] drm/rockchip: Support CRTC gamma LUT
Boris Brezillon
boris.brezillon at collabora.com
Fri Jun 14 13:53:20 UTC 2019
On Thu, 13 Jun 2019 16:22:44 -0300
Ezequiel Garcia <ezequiel at collabora.com> wrote:
> +static int vop_gamma_lut_request(struct device *dev,
> + struct resource *res, struct vop *vop)
> +{
> + resource_size_t offset = vop->data->gamma_lut_addr_off;
> + resource_size_t size = VOP_GAMMA_LUT_SIZE * 4;
> +
> + /*
> + * Some SoCs (e.g. RK3288) have the gamma LUT address after
> + * the MMU registers, which means we can't request and ioremap
> + * the entire register set. Other (e.g. RK3399) have gamma LUT
> + * address before MMU.
> + *
> + * Therefore, we need to request and ioremap those that haven't
> + * been already.
> + */
> + if (vop->len >= (offset + size)) {
> + vop->lut_regs = vop->regs + offset;
> + return 0;
> + }
> +
> + if (!devm_request_mem_region(dev, res->start + offset,
> + size, dev_name(dev))) {
> + dev_warn(dev, "can't request gamma lut region\n");
> + return -EBUSY;
> + }
> +
> + vop->lut_regs = devm_ioremap(dev, res->start + offset, size);
> + if (!vop->lut_regs) {
> + dev_err(dev, "can't ioremap gamma lut address\n");
> + devm_release_mem_region(dev, res->start + offset, size);
> + return -ENOMEM;
> + }
Can't we patch the resource just after calling plaform_get_resource()
(and before calling devm_ioremap_resource()) so we don't have to add
these devm_request_mem_region()+devm_ioremap() calls here?
> + return 0;
> +}
More information about the dri-devel
mailing list