drm/rockchip: vop: support get register by name
authorMark Yao <mark.yao@rock-chips.com>
Tue, 27 Jun 2017 02:52:25 +0000 (10:52 +0800)
committerHuang, Tao <huangtao@rock-chips.com>
Wed, 12 Jul 2017 08:04:28 +0000 (16:04 +0800)
When get vop base register byname failed, retry first entry.

Change-Id: I60f4ebd901d353966c94734dd796dc702ae06f3f
Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
drivers/gpu/drm/rockchip/rockchip_drm_vop.c

index 4ef23ac55eb114201740d4ba65a56320b4234c47..a0333b8e594c45877aa516ac64cf642b58deb1f4 100644 (file)
@@ -2788,17 +2788,21 @@ static int vop_bind(struct device *dev, struct device *master, void *data)
        if (ret)
                return ret;
 
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       vop->len = resource_size(res);
+       res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs");
+       if (!res) {
+               dev_warn(vop->dev, "failed to get vop register byname\n");
+               res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       }
        vop->regs = devm_ioremap_resource(dev, res);
        if (IS_ERR(vop->regs))
                return PTR_ERR(vop->regs);
+       vop->len = resource_size(res);
 
        vop->regsbak = devm_kzalloc(dev, vop->len, GFP_KERNEL);
        if (!vop->regsbak)
                return -ENOMEM;
 
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
+       res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "gamma_lut");
        vop->lut_regs = devm_ioremap_resource(dev, res);
        if (IS_ERR(vop->lut_regs)) {
                dev_warn(vop->dev, "failed to get vop lut registers\n");