Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp164490ybt; Thu, 18 Jun 2020 21:49:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxaR5NujwldJDhVfVyhNIVovQRdRoQBGnrDEjK8/leKLaOd3U3+DFT17RDFu6ztv4e7OujC X-Received: by 2002:a50:fc04:: with SMTP id i4mr1448255edr.117.1592542169587; Thu, 18 Jun 2020 21:49:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592542169; cv=none; d=google.com; s=arc-20160816; b=PKMpJ4mj/7hrHA9ytfOfGqK5+J3ARVjp2niwLUziyQJy8A9/iFguLdPSmdE/0xk0Gv gP0H/zpq1znZ9VA2m2JybaxxgFc4nR3gkDF5DGEB9lTZX0Wy6bacjlZtlq2m2r+wAytA BdvlkbJE/vO2cw6nxo4HG5B569LT14xgCER9chIoE5ER3MdNBHpida4xiSuZFVhDbZnD xCYnDg4IUC4OTG6Uw8R57wuvG8Ef04mVYj+nPUwnkF0nNbFgoMUcITOI93y9RNYkakzx tZmmJ9xZeRfawNE+DOY9SH5SSfgoUDBFmbRtXcBB80U2AoX2a/MjG1JFQSSLJ2DsvTRI hiNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=KMkDKGCxPWUjsl3OYAuJE+oY+z09b86XKFuiC564KgA=; b=gYlK4H1hyoW/yhMmrT6pIAfjwTD8J0SekToevHc/swpUgoDIDc9zLGfxW4rPOMDDjP ETFBmlIebKAg44Lf35Y7nV/skSyc+y83jiUkjQCp4N8ku5lqgEIW0QzDqnDCe+RL0eUg 21+FQWEUwh3DgWGkcuyIuzJvUYodnX0heYCjkZ0jS4162I72kPZO7tRK3P2nTHafP+zr dzKhPH5CwgrVID49B0Ic/oNuyqj1uM5va8gXHbO4qWPEtfNDmJWb5DXk8NEoYqzqStVi llSldYnXrOEIhjQmS6Fkcq0vYBEjLUnV0cP0duEHxag5Es+8hTMW0oEcClOMza5WhOuh QWYg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i17si3587972ejo.179.2020.06.18.21.49.07; Thu, 18 Jun 2020 21:49:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728181AbgFSCUE (ORCPT + 99 others); Thu, 18 Jun 2020 22:20:04 -0400 Received: from lucky1.263xmail.com ([211.157.147.131]:59630 "EHLO lucky1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726517AbgFSCUC (ORCPT ); Thu, 18 Jun 2020 22:20:02 -0400 X-Greylist: delayed 423 seconds by postgrey-1.27 at vger.kernel.org; Thu, 18 Jun 2020 22:20:01 EDT Received: from localhost (unknown [192.168.167.69]) by lucky1.263xmail.com (Postfix) with ESMTP id 21911B01AE; Fri, 19 Jun 2020 10:12:58 +0800 (CST) X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-ADDR-CHECKED4: 1 X-ANTISPAM-LEVEL: 2 X-ABS-CHECKED: 0 Received: from localhost.localdomain (unknown [58.22.7.114]) by smtp.263.net (postfix) whith ESMTP id P15428T140189174576896S1592532776016090_; Fri, 19 Jun 2020 10:12:57 +0800 (CST) X-IP-DOMAINF: 1 X-UNIQUE-TAG: <47f99c70dacf3540e239705ea51efd83> X-RL-SENDER: hjc@rock-chips.com X-SENDER: hjc@rock-chips.com X-LOGIN-NAME: hjc@rock-chips.com X-FST-TO: hjc@rock-chips.com X-SENDER-IP: 58.22.7.114 X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 X-System-Flag: 0 From: Sandy Huang To: Sandy Huang , =?UTF-8?q?Heiko=20St=C3=BCbner?= , David Airlie , Daniel Vetter Cc: andy.yan@rock-chips.com, huangtao@rock-chips.com, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] drm/rockchip: vop: fix vop full rgb24 r/b color error Date: Fri, 19 Jun 2020 10:12:51 +0800 Message-Id: <20200619021251.22991-1-hjc@rock-chips.com> X-Mailer: git-send-email 2.17.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org RGB888 format msb is red component and the lsb is blue component, at vop full platform this is swapped, and this is different from vop lite and vop next, so add this patch to fix it. Signed-off-by: Sandy Huang --- drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c index c80f7d9fd13f..1c17048ad737 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c @@ -132,6 +132,7 @@ struct vop_win { struct rockchip_rgb; struct vop { + uint32_t version; struct drm_crtc crtc; struct device *dev; struct drm_device *drm_dev; @@ -989,6 +990,12 @@ static void vop_plane_atomic_update(struct drm_plane *plane, VOP_WIN_SET(vop, win, dsp_st, dsp_st); rb_swap = has_rb_swapped(fb->format->format); + /* + * VOP full need to do rb swap to show rgb888/bgr888 format color correctly + */ + if ((fb->format->format == DRM_FORMAT_RGB888 || fb->format->format == DRM_FORMAT_BGR888) && + VOP_MAJOR(vop->version) == 3) + rb_swap = !rb_swap; VOP_WIN_SET(vop, win, rb_swap, rb_swap); /* @@ -2091,6 +2098,7 @@ static int vop_bind(struct device *dev, struct device *master, void *data) vop->dev = dev; vop->data = vop_data; vop->drm_dev = drm_dev; + vop->version = vop_data->version; dev_set_drvdata(dev, vop); vop_win_init(vop); -- 2.17.1