Received: by 2002:ac0:98c7:0:0:0:0:0 with SMTP id g7-v6csp1275273imd; Thu, 1 Nov 2018 13:02:13 -0700 (PDT) X-Google-Smtp-Source: AJdET5cZdCUZORaeFiUebSBfIQJpRh+8XIBiqYl3bFHKeN05R9uwFyuv/KQ6Eol46999q8LwJPzG X-Received: by 2002:a63:f547:: with SMTP id e7mr8534840pgk.182.1541102533838; Thu, 01 Nov 2018 13:02:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1541102533; cv=none; d=google.com; s=arc-20160816; b=YaaFFotD7O7HxiH+Sielwz0kg6swcptq318QfeBDhZiNyNfg6jU8eDxlNyqlxhw/qo U6uhxOpLj9Uz1WKgupa5fB2PkenLLv5sTbfohFWzt3YWAnQrFb1vOjK5cnwxsWK3pgNu /dSEZ1VlHK8iJRwV8byv1FUlw5vcxCDubA/0d8g2y0La7EETmirR9h+pKr82OtAGNDkd yaWDLOC8KV4w2w3yVsyWTZn9Wn0J6LltvLeqk/EPR69y/3pukzuOUVdb9ZRVoiM8l8+z P+xL0jv1n5DkzN5PsizJjNMxcK4kx5I1JYU4CHxmk1QoOAuOeM+yZ8FJJXIfnOlfakdU XswA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=i7vhh3gRHvBdF7QCbH30oam1iLne9xLOHOxU4tq50gU=; b=NFbwk6tcIeeROtyrxg84OAaSgGZjZNLRt9ONFQ+JktYFbEDAJco22zriwfjTJRqgz/ aMZbDujNHEm6Z9YbSN/qeMZoxPHAGbvPtco+1zVZRZyrFcV4v5o6w1Q2572sAr0yi5CX dD2YKep9r1HqZdKh18nEh7lQFrQfxKYLnyZ0z9DzNKHwo0SX/SGm3lrP8EGImOnvPuBW UKbucK8PdzkWqrefB/CwdyLxGKPOW3DI2FSzxbTKWCDSyHWxKEnzvMWMGL1rnKH97xaa nM6ZU3sfqCPU6xmjs3JnAXp/PK+Y+BwCx8dY+TMXXMYjrEOxX9yhJi5hOCn0KXbunSvk iRZw== 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 e14-v6si30769761pgb.254.2018.11.01.13.01.58; Thu, 01 Nov 2018 13:02:13 -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 S1727819AbeKBFFe (ORCPT + 99 others); Fri, 2 Nov 2018 01:05:34 -0400 Received: from leonov.paulk.fr ([185.233.101.22]:45914 "EHLO leonov.paulk.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726766AbeKBFFd (ORCPT ); Fri, 2 Nov 2018 01:05:33 -0400 Received: from gagarine.paulk.fr (gagarine [192.168.1.127]) by leonov.paulk.fr (Postfix) with ESMTPS id BD4A2BFA47; Thu, 1 Nov 2018 21:01:07 +0100 (CET) Received: by gagarine.paulk.fr (Postfix, from userid 114) id 42D3CC1064; Thu, 1 Nov 2018 21:01:07 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on gagarine.paulk.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=unavailable autolearn_force=no version=3.4.1 Received: from localhost.localdomain (collins [192.168.1.129]) by gagarine.paulk.fr (Postfix) with ESMTP id EEF67C1044; Thu, 1 Nov 2018 21:00:33 +0100 (CET) From: Paul Kocialkowski To: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: Thierry Reding , David Airlie , Rob Herring , Mark Rutland , Maxime Ripard , Chen-Yu Tsai , linux-sunxi@googlegroups.com, Paul Kocialkowski Subject: [PATCH v2 1/7] drm/sun4i: tcon: Pass encoder instead of using panel for RGB setup Date: Thu, 1 Nov 2018 21:00:39 +0100 Message-Id: <20181101200045.6078-2-contact@paulk.fr> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181101200045.6078-1-contact@paulk.fr> References: <20181101200045.6078-1-contact@paulk.fr> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Features such as dithering and pixel data edge configuration currently rely on the panel registered with the TCON driver. However, bridges are also supported in addition panels. Instead of retrieving the connector from the panel, pass the encoder from the calling function, as is done for other interfaces. The connector is then retrieved from the encoder with the dedicated helper. Even in the case of bridges, the connector is registered with the encoder from our driver and is accessible when iterating connectors. Signed-off-by: Paul Kocialkowski --- drivers/gpu/drm/sun4i/sun4i_tcon.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun4i_tcon.c b/drivers/gpu/drm/sun4i/sun4i_tcon.c index f949287d926c..262ffb6b0f82 100644 --- a/drivers/gpu/drm/sun4i/sun4i_tcon.c +++ b/drivers/gpu/drm/sun4i/sun4i_tcon.c @@ -478,8 +478,11 @@ static void sun4i_tcon0_mode_set_lvds(struct sun4i_tcon *tcon, } static void sun4i_tcon0_mode_set_rgb(struct sun4i_tcon *tcon, + const struct drm_encoder *encoder, const struct drm_display_mode *mode) { + struct drm_connector *connector = sun4i_tcon_get_connector(encoder); + struct drm_display_info display_info = connector->display_info; unsigned int bp, hsync, vsync; u8 clk_delay; u32 val = 0; @@ -491,8 +494,7 @@ static void sun4i_tcon0_mode_set_rgb(struct sun4i_tcon *tcon, sun4i_tcon0_mode_set_common(tcon, mode); /* Set dithering if needed */ - if (tcon->panel) - sun4i_tcon0_mode_set_dithering(tcon, tcon->panel->connector); + sun4i_tcon0_mode_set_dithering(tcon, connector); /* Adjust clock delay */ clk_delay = sun4i_tcon_get_clk_delay(mode, 0); @@ -556,17 +558,11 @@ static void sun4i_tcon0_mode_set_rgb(struct sun4i_tcon *tcon, * Following code is a way to avoid quirks all around TCON * and DOTCLOCK drivers. */ - if (tcon->panel) { - struct drm_panel *panel = tcon->panel; - struct drm_connector *connector = panel->connector; - struct drm_display_info display_info = connector->display_info; - - if (display_info.bus_flags & DRM_BUS_FLAG_PIXDATA_POSEDGE) - clk_set_phase(tcon->dclk, 240); + if (display_info.bus_flags & DRM_BUS_FLAG_PIXDATA_POSEDGE) + clk_set_phase(tcon->dclk, 240); - if (display_info.bus_flags & DRM_BUS_FLAG_PIXDATA_NEGEDGE) - clk_set_phase(tcon->dclk, 0); - } + if (display_info.bus_flags & DRM_BUS_FLAG_PIXDATA_NEGEDGE) + clk_set_phase(tcon->dclk, 0); regmap_update_bits(tcon->regs, SUN4I_TCON0_IO_POL_REG, SUN4I_TCON0_IO_POL_HSYNC_POSITIVE | SUN4I_TCON0_IO_POL_VSYNC_POSITIVE, @@ -684,7 +680,7 @@ void sun4i_tcon_mode_set(struct sun4i_tcon *tcon, sun4i_tcon0_mode_set_lvds(tcon, encoder, mode); break; case DRM_MODE_ENCODER_NONE: - sun4i_tcon0_mode_set_rgb(tcon, mode); + sun4i_tcon0_mode_set_rgb(tcon, encoder, mode); sun4i_tcon_set_mux(tcon, 0, encoder); break; case DRM_MODE_ENCODER_TVDAC: -- 2.19.1