| .. | .. |
|---|
| 38 | 38 | { |
|---|
| 39 | 39 | struct drm_device *drm = rk_obj->base.dev; |
|---|
| 40 | 40 | struct rockchip_drm_private *private = drm->dev_private; |
|---|
| 41 | | - int prot = IOMMU_READ | IOMMU_WRITE | IOMMU_TLB_SHOT_ENTIRE; |
|---|
| 41 | + int prot = IOMMU_READ | IOMMU_WRITE; |
|---|
| 42 | 42 | ssize_t ret; |
|---|
| 43 | 43 | |
|---|
| 44 | 44 | mutex_lock(&private->mm_lock); |
|---|
| .. | .. |
|---|
| 62 | 62 | ret = -ENOMEM; |
|---|
| 63 | 63 | goto err_remove_node; |
|---|
| 64 | 64 | } |
|---|
| 65 | + |
|---|
| 66 | +#ifdef CONFIG_IOMMU_API |
|---|
| 67 | + if (private->domain->ops->flush_iotlb_all) |
|---|
| 68 | + private->domain->ops->flush_iotlb_all(private->domain); |
|---|
| 69 | +#endif |
|---|
| 65 | 70 | |
|---|
| 66 | 71 | rk_obj->size = ret; |
|---|
| 67 | 72 | |
|---|
| .. | .. |
|---|
| 459 | 464 | rk_obj->base.size); |
|---|
| 460 | 465 | } |
|---|
| 461 | 466 | |
|---|
| 467 | +static inline bool is_vop_enabled(void) |
|---|
| 468 | +{ |
|---|
| 469 | + return (IS_ENABLED(CONFIG_ROCKCHIP_VOP) || IS_ENABLED(CONFIG_ROCKCHIP_VOP2)); |
|---|
| 470 | +} |
|---|
| 471 | + |
|---|
| 462 | 472 | static int rockchip_gem_alloc_buf(struct rockchip_gem_object *rk_obj, |
|---|
| 463 | 473 | bool alloc_kmap) |
|---|
| 464 | 474 | { |
|---|
| .. | .. |
|---|
| 467 | 477 | struct rockchip_drm_private *private = drm->dev_private; |
|---|
| 468 | 478 | int ret = 0; |
|---|
| 469 | 479 | |
|---|
| 470 | | - if (!private->domain) |
|---|
| 480 | + if (!private->domain && is_vop_enabled()) |
|---|
| 471 | 481 | rk_obj->flags |= ROCKCHIP_BO_CONTIG; |
|---|
| 472 | 482 | |
|---|
| 473 | 483 | if (rk_obj->flags & ROCKCHIP_BO_SECURE) { |
|---|
| .. | .. |
|---|
| 507 | 517 | ret = rockchip_gem_iommu_map(rk_obj); |
|---|
| 508 | 518 | if (ret < 0) |
|---|
| 509 | 519 | goto err_free; |
|---|
| 510 | | - } else { |
|---|
| 520 | + } else if (is_vop_enabled()) { |
|---|
| 511 | 521 | WARN_ON(!rk_obj->dma_handle); |
|---|
| 512 | 522 | rk_obj->dma_addr = rk_obj->dma_handle; |
|---|
| 513 | 523 | } |
|---|
| .. | .. |
|---|
| 819 | 829 | struct drm_mode_create_dumb *args) |
|---|
| 820 | 830 | { |
|---|
| 821 | 831 | struct rockchip_gem_object *rk_obj; |
|---|
| 822 | | - int min_pitch = DIV_ROUND_UP(args->width * args->bpp, 8); |
|---|
| 832 | + u32 min_pitch = args->width * DIV_ROUND_UP(args->bpp, 8); |
|---|
| 823 | 833 | |
|---|
| 824 | 834 | /* |
|---|
| 825 | 835 | * align to 64 bytes since Mali requires it. |
|---|