Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp414651pxa; Wed, 19 Aug 2020 05:11:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz4KrsGDhgom/nhxJqNyfVdDI98SkGN9fRLV2nFjR1CSfZbi8isJ8S9s4RZUvkiufQX3gM+ X-Received: by 2002:aa7:cb56:: with SMTP id w22mr23809131edt.96.1597839069439; Wed, 19 Aug 2020 05:11:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1597839069; cv=none; d=google.com; s=arc-20160816; b=yhHtHKdrGkBCXw9cs5RoABIVghLEqYi6lPSyINRSBipeD68rsxdR9ZNUrZN77FEwEr hFs9g7hl7RAWpNuUNdK9CNorW6aP2SXBvGkj5tRZ4uMcQr0uM2BL9uNTULsE/bNJ7vBu R2Ps1+rvi33Wn9hhKvGENJ4rlJgWRaxhiojTLDtFqWI+UJ94v7H2ViL00YjfTvy9Nlk8 /jpk9HXax+bhVOGE4fbcbXgZoyYunC9+77EDx23eoiC61JinhxHQ/kpVkR0Ne7s3pKia eXvNA9V1kj62S/nOZTwvRtuYFNghBTqntKV6zGn3EeCs8j8QRG77bRjYj83LT41WY3JD WZVA== 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 :dkim-signature; bh=vf+UOPbdTPW+mymZliR2Mm2Z/HKXCKnqqMVsKsP8mR0=; b=Ns9eIDHwP2AH8/8fCKYmgeISEEer38okm+cp1XqVvyxvMhYyi8/49b4EmAkfA88ayx pYnZZZtAEu47Ofg8FTrcMZKQm+KdE8U48DLVLEzjuKW1TKa9UFh2/x8o1gbFw1rF7Gkz wH8DLLbiZ3pfylfwN4JIrF8H3/LyaY4j/8sEeKJQz8439SMTuHGnLPe1AztmuNyktNEV C0REytalznwk3b5hkcWoIvkiCuCLAc7lyh4A0GFITTssF8rKJ6kJYZCa5+0oc5/3y++Q zp2b/avzpf3g037bcHROyY/M33Y4D+OtjECzDds2JQz7bD327YDSbDdeyxafjqJ9RK/M aRUA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=bATRGdha; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v11si16611557edy.276.2020.08.19.05.10.45; Wed, 19 Aug 2020 05:11:09 -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; dkim=pass header.i=@kernel.org header.s=default header.b=bATRGdha; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728149AbgHSMKH (ORCPT + 99 others); Wed, 19 Aug 2020 08:10:07 -0400 Received: from mail.kernel.org ([198.145.29.99]:48432 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728176AbgHSLrM (ORCPT ); Wed, 19 Aug 2020 07:47:12 -0400 Received: from mail.kernel.org (ip5f5ad5a3.dynamic.kabel-deutschland.de [95.90.213.163]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 5830222CAF; Wed, 19 Aug 2020 11:46:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1597837582; bh=LoNkbNy+NbjfyHcUs4+KMDZxZVHRuvvlVTe95ZNdLs4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bATRGdhaVauZk8Mcvy7xJgUod2GIp+bRJhO7vR0Ectunmwi3GyMGhQ/El7sPn3xL8 hCwVOfXbzxcjqCjF/jr/noSGmSBhQCBqxLjgxEQISKq1ynE0YtjCKBM+a4SgydH7kK FLKIhXij/al6d2WLeHcl4VbsvQk0IO1xBbr4rJY0= Received: from mchehab by mail.kernel.org with local (Exim 4.94) (envelope-from ) id 1k8MXs-00Euau-9x; Wed, 19 Aug 2020 13:46:20 +0200 From: Mauro Carvalho Chehab To: Greg Kroah-Hartman Cc: linuxarm@huawei.com, mauro.chehab@huawei.com, Mauro Carvalho Chehab , John Stultz , Manivannan Sadhasivam , Daniel Vetter , dri-devel , Xiubin Zhang , Liwei Cai , devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org Subject: [PATCH 23/49] staging: hikey9xx/gpu: Change the logic which sets the burst mode Date: Wed, 19 Aug 2020 13:45:51 +0200 Message-Id: <617e29a2482984b2b46e2b41a33b78428fcbc4f9.1597833138.git.mchehab+huawei@kernel.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: References: 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 The logic there is more complex than it needs. It also places the device with a wrong setting if the flags are missed. This currently happens on Kirin970 for HDMI, as there's a bug at the part of the driver which selects between PANEL or OUTPUT at encoder init code. Signed-off-by: Mauro Carvalho Chehab --- .../hikey9xx/gpu/kirin9xx_dw_drm_dsi.c | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/drivers/staging/hikey9xx/gpu/kirin9xx_dw_drm_dsi.c b/drivers/staging/hikey9xx/gpu/kirin9xx_dw_drm_dsi.c index e904943d9f9e..ffc8b8e61062 100644 --- a/drivers/staging/hikey9xx/gpu/kirin9xx_dw_drm_dsi.c +++ b/drivers/staging/hikey9xx/gpu/kirin9xx_dw_drm_dsi.c @@ -902,26 +902,28 @@ static void dw_dsi_set_mode(struct dw_dsi *dsi, enum dsi_work_mode mode) writel(POWERUP, base + PWR_UP); } -static void dsi_set_burst_mode(void __iomem *base, unsigned long flags) +static void dsi_set_burst_mode(void __iomem *base, unsigned long burst_flags) { + unsigned long flags; u32 val; - u32 mode_mask = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | - MIPI_DSI_MODE_VIDEO_SYNC_PULSE; - u32 non_burst_sync_pulse = MIPI_DSI_MODE_VIDEO | - MIPI_DSI_MODE_VIDEO_SYNC_PULSE; - u32 non_burst_sync_event = MIPI_DSI_MODE_VIDEO; - /* - * choose video mode type - */ - if ((flags & mode_mask) == non_burst_sync_pulse) + flags = burst_flags; + flags &= MIPI_DSI_MODE_VIDEO | + MIPI_DSI_MODE_VIDEO_BURST | + MIPI_DSI_MODE_VIDEO_SYNC_PULSE; + + if (!(flags & MIPI_DSI_MODE_VIDEO)) { + DRM_WARN("MIPI_DSI_MODE_VIDEO was not set! Using DSI_NON_BURST_SYNC_PULSES"); val = DSI_NON_BURST_SYNC_PULSES; - else if ((flags & mode_mask) == non_burst_sync_event) - val = DSI_NON_BURST_SYNC_EVENTS; - else + } else if (flags & MIPI_DSI_MODE_VIDEO_BURST) { val = DSI_BURST_SYNC_PULSES_1; + } else if (flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE) { + val = DSI_NON_BURST_SYNC_PULSES; + } else { + val = DSI_NON_BURST_SYNC_EVENTS; + } - DRM_INFO("burst_mode = 0x%x (DSI_NON_BURST_SYNC_PULSES => 0)", val); + DRM_INFO("burst_mode = 0x%x (flags: 0x%04lx)", val, burst_flags); set_reg(base + MIPIDSI_VID_MODE_CFG_OFFSET, val, 2, 0); } @@ -1047,6 +1049,10 @@ static void dsi_mipi_init(struct dw_dsi *dsi, char __iomem *mipi_dsi_base) WARN_ON(!mipi_dsi_base); id = dsi->cur_client; + + DRM_INFO("dsi_mipi_init, id=%d\n", id); + + mipi = &dsi->mipi; if (mipi->max_tx_esc_clk == 0) { -- 2.26.2