rk fb: add support phy address config
[firefly-linux-kernel-4.4.55.git] / drivers / video / rockchip / rk_fb.c
index 46f43534f1e3d566794cadcae43b3cb7417f7eb1..5ae5a4c113a383c550a9c07fc91daa899920d876 100755 (executable)
@@ -99,6 +99,8 @@ int rk_fb_trsm_ops_register(struct rk_fb_trsm_ops *ops, int type)
        case SCREEN_RGB:
        case SCREEN_LVDS:
        case SCREEN_DUAL_LVDS:
+       case SCREEN_LVDS_10BIT:
+       case SCREEN_DUAL_LVDS_10BIT:
                trsm_lvds_ops = ops;
                break;
        case SCREEN_EDP:
@@ -123,6 +125,8 @@ struct rk_fb_trsm_ops *rk_fb_trsm_ops_get(int type)
        case SCREEN_RGB:
        case SCREEN_LVDS:
        case SCREEN_DUAL_LVDS:
+       case SCREEN_LVDS_10BIT:
+       case SCREEN_DUAL_LVDS_10BIT:
                ops = trsm_lvds_ops;
                break;
        case SCREEN_EDP:
@@ -1486,7 +1490,8 @@ void rk_fb_free_dma_buf(struct rk_lcdc_driver *dev_drv,
                index_buf = area_data->index_buf;
 #if defined(CONFIG_ROCKCHIP_IOMMU)
                if (dev_drv->iommu_enabled) {
-                       if (rk_fb->disp_policy != DISPLAY_POLICY_BOX)
+                       if ((rk_fb->disp_policy != DISPLAY_POLICY_BOX) &&
+                            (area_data->ion_handle != NULL))
                                ion_unmap_iommu(dev_drv->dev, rk_fb->ion_client,
                                                area_data->ion_handle);
                        freed_addr[freed_index++] = area_data->smem_start;
@@ -1895,6 +1900,7 @@ static int rk_fb_set_win_buffer(struct fb_info *info,
                reg_win_data->reg_area_data[0].smem_start =
                    win_par->area_par[0].phy_addr;
                reg_win_data->area_num = 1;
+               reg_win_data->area_buf_num++;
                fbi->screen_base = phys_to_virt(win_par->area_par[0].phy_addr);
        }