Received: by 2002:a25:824b:0:0:0:0:0 with SMTP id d11csp1797102ybn; Thu, 26 Sep 2019 02:19:39 -0700 (PDT) X-Google-Smtp-Source: APXvYqx0ZWkcD08Z8HEPh9lako5SoyfuYtJJEjNNKXhzMfbopcuvlIhH4Mlx5jG2Uh7WR/snG7lu X-Received: by 2002:a50:ea8c:: with SMTP id d12mr2417750edo.87.1569489579070; Thu, 26 Sep 2019 02:19:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1569489579; cv=none; d=google.com; s=arc-20160816; b=KHV/BDnK+ldc/mPR1IvGy7LEVyAkg85Yopd+IN2SNJQOSl1J+sPVh+6s/Sk6RYbmVU TevXolS4IARBQ+i9Myc1MY9Fo3DBmqHiKIhH9sxadwX8PXEajYeAt0FumD6r6icdihKY IbkBS0Xa/bfh0wxRL60qxI3LXhFahx4S+BW+xc2F7wmPtwFWU5u8sM9OUJ+8Msrw4xS/ 8j6ty/0UI4yU4yJhv7SUaqzzTeD0rZp03gL5QOIT0nqgJu/poUqbQaARhhjpWcQKVBsI V18jaN+ArvKEIdeTkOmNxfXJyJc58pMFqHXL+Av6RvtTbOrViZmlJ2ejLRlb/AukZWt7 QLlg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=fkWCRgfDKJKLIE7btOJL0tMYvcouuPPf8oXMZV0wMks=; b=eb/KIUulUHWtjoPV/b0cWF7lQXLJUbuLRm4FvG4TI5UDLM+MZP7fAXRmjSMpgHJFRE ZzX6SPPyRICqEbS9xMPYGu2wD2cJESVzPZ2/JY9Ja5zIURIea+frTYBXQoksOWwaRUhf YpEyOslreLRJN6wlOeVGjj+KWoVfbV+lXYUFAkoEFkJgBOsUGzy0mGyZLZ9TjeKrWVJ3 4wm4BMqqGYf0zInffIQKrC633LfEgRa0bDMx26ptOXtWbwgVzuYRmsUV5j9/8dfvS0bx wa/o7QYwHYz08vm9Sq0Si0pMctwuQqCtazoXIPV/9PIe1Xa3lrp5MnucFcuHbeZrXKmK MOow== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id ch10si666265ejb.89.2019.09.26.02.19.15; Thu, 26 Sep 2019 02:19:39 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2437347AbfIYIHT (ORCPT + 99 others); Wed, 25 Sep 2019 04:07:19 -0400 Received: from regular1.263xmail.com ([211.150.70.203]:44356 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2405820AbfIYIHS (ORCPT ); Wed, 25 Sep 2019 04:07:18 -0400 Received: from hjc?rock-chips.com (unknown [192.168.167.42]) by regular1.263xmail.com (Postfix) with ESMTP id 832DC43D; Wed, 25 Sep 2019 16:07:12 +0800 (CST) X-263anti-spam: KSV:0;BIG:0; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ADDR-CHECKED4: 1 X-ABS-CHECKED: 1 X-SKE-CHECKED: 1 X-ANTISPAM-LEVEL: 2 Received: from localhost.localdomain (unknown [58.22.7.114]) by smtp.263.net (postfix) whith ESMTP id P2645T139744972404480S1569398812082049_; Wed, 25 Sep 2019 16:07:12 +0800 (CST) X-IP-DOMAINF: 1 X-UNIQUE-TAG: <5d8ea79ab9f3f7b7a98cad262bf6bc0b> X-RL-SENDER: hjc@rock-chips.com X-SENDER: hjc@rock-chips.com X-LOGIN-NAME: hjc@rock-chips.com X-FST-TO: dri-devel@lists.freedesktop.org X-SENDER-IP: 58.22.7.114 X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 From: Sandy Huang To: dri-devel@lists.freedesktop.org, Sandy Huang , =?UTF-8?q?Heiko=20St=C3=BCbner?= , David Airlie , Daniel Vetter Cc: Ayan.Halder@arm.com, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/3] drm/rockchip: Add support 10bit yuv format Date: Wed, 25 Sep 2019 16:06:40 +0800 Message-Id: <1569398801-92201-4-git-send-email-hjc@rock-chips.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1569398801-92201-1-git-send-email-hjc@rock-chips.com> References: <1569398801-92201-1-git-send-email-hjc@rock-chips.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add support 10bit yuv format display for rockchip some socs, include: RK3288/RK3228/RK3328/RK3368/RK3399 Signed-off-by: Sandy Huang --- drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 16 ++++++++++++++++ drivers/gpu/drm/rockchip/rockchip_drm_vop.h | 1 + drivers/gpu/drm/rockchip/rockchip_vop_reg.c | 2 ++ 3 files changed, 19 insertions(+) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c index ce5b45d..9cb9fff 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c @@ -249,6 +249,21 @@ static bool has_rb_swapped(uint32_t format) } } +static bool is_yuv_10bit(uint32_t format) +{ + switch (format) { + case DRM_FORMAT_NV12_10: + case DRM_FORMAT_NV21_10: + case DRM_FORMAT_NV16_10: + case DRM_FORMAT_NV61_10: + case DRM_FORMAT_NV24_10: + case DRM_FORMAT_NV42_10: + return true; + default: + return false; + } +} + static int vop_format_get_bpp(u32 format, u8 plane) { const struct drm_format_info *info; @@ -890,6 +905,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane, dma_addr = rk_uv_obj->dma_addr + offset + fb->offsets[1]; VOP_WIN_SET(vop, win, uv_vir, DIV_ROUND_UP(fb->pitches[1], 4)); VOP_WIN_SET(vop, win, uv_mst, dma_addr); + VOP_WIN_SET(vop, win, fmt_10, is_yuv_10bit(fb->format->format)); for (i = 0; i < NUM_YUV2YUV_COEFFICIENTS; i++) { VOP_WIN_YUV2YUV_COEFFICIENT_SET(vop, diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h index 2149a889..adc2b0b5 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h @@ -133,6 +133,7 @@ struct vop_win_phy { struct vop_reg gate; struct vop_reg format; struct vop_reg rb_swap; + struct vop_reg fmt_10; struct vop_reg act_info; struct vop_reg dsp_info; struct vop_reg dsp_st; diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c index d1494be..732e535 100644 --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c @@ -544,6 +544,7 @@ static const struct vop_win_phy rk3288_win01_data = { .nformats = ARRAY_SIZE(formats_win_full), .enable = VOP_REG(RK3288_WIN0_CTRL0, 0x1, 0), .format = VOP_REG(RK3288_WIN0_CTRL0, 0x7, 1), + .fmt_10 = VOP_REG(RK3288_WIN0_CTRL0, 0x1, 4), .rb_swap = VOP_REG(RK3288_WIN0_CTRL0, 0x1, 12), .act_info = VOP_REG(RK3288_WIN0_ACT_INFO, 0x1fff1fff, 0), .dsp_info = VOP_REG(RK3288_WIN0_DSP_INFO, 0x0fff0fff, 0), @@ -674,6 +675,7 @@ static const struct vop_win_phy rk3368_win01_data = { .nformats = ARRAY_SIZE(formats_win_full), .enable = VOP_REG(RK3368_WIN0_CTRL0, 0x1, 0), .format = VOP_REG(RK3368_WIN0_CTRL0, 0x7, 1), + .fmt_10 = VOP_REG(RK3368_WIN0_CTRL0, 0x1, 4), .rb_swap = VOP_REG(RK3368_WIN0_CTRL0, 0x1, 12), .x_mir_en = VOP_REG(RK3368_WIN0_CTRL0, 0x1, 21), .y_mir_en = VOP_REG(RK3368_WIN0_CTRL0, 0x1, 22), -- 2.7.4