Received: by 2002:a25:ca44:0:0:0:0:0 with SMTP id a65csp1311765ybg; Mon, 27 Jul 2020 13:33:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwr6Tc34EEGbWL+ig/+b2uftXS7BNLVMteO1lJMCA7HwTmdSwkkIHXjvRmH/tZZBS7sh03j X-Received: by 2002:a05:6402:204f:: with SMTP id bc15mr21607016edb.70.1595882033218; Mon, 27 Jul 2020 13:33:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595882033; cv=none; d=google.com; s=arc-20160816; b=VNVSG6oRsVPE3M1NRRSxZWUO0b99MrRCdCvm5Gs0GZityMg5G5ho5Ccvfd1aImaXtp 6LOq/6AJGUhnqtFjhWNgZgUgoUGN86PHgUvGSISzhhAyxVVl0nroEPMxGrdedgR0NxGX 60S9IUqkbR/tK/xGnRYpkFmyjcJWZLWgzCsJoKNsiEIlCP6aF2JjApYuL/qNPpqHs7RA /QqKbBJsbt6mPw1qmiPWor1AFyMmu93uzfOzFZxZyavQmKX0pJTAvPZDgBVEWoh0nmSq rRfZps6gig0/B7CxloNwcTcrtDNP7dDXrCjj91BvgP8N6FKBZW94LT5O098ab/eCOA3S ADUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=fYNCBxWuZs9JSChOiXwO57T5kBNR1AT0zzwspdrHiDk=; b=by7YpBBXRj9SurecPfCOJ5U4CxAJ6E9w5egoljFqbYQ0QBuJmw8TX0hnd9/7rmgE6X xkOZk/TncnyMRJEHTACxU+6N2JJPtTUgIPKrtoKIlFzIDRMSwTbnOZeD8EU7JSFxRyrD aQqXhZcWR8lKJKrKNktUGtOCMC65xb09vDFu8a6hxx52EkG6e15dyC70iVTYIKEKNb8r +inqBNgluHZ6tUqY5QNFNANpuo1vyzvvV5mCrRzvjdXdwfap56TaQJhg1XrJ0AkjsGLa aA8Z9ro4uvD9ZGgNwD7xv74nhDRfII/pcLNNw1Q76wZEddLCAKotikc2PUa29fN2seE1 AUUw== 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 x9si6375535edj.121.2020.07.27.13.33.30; Mon, 27 Jul 2020 13:33:53 -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 S1729003AbgG0UcI (ORCPT + 99 others); Mon, 27 Jul 2020 16:32:08 -0400 Received: from asavdk4.altibox.net ([109.247.116.15]:43000 "EHLO asavdk4.altibox.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726196AbgG0UcH (ORCPT ); Mon, 27 Jul 2020 16:32:07 -0400 Received: from ravnborg.org (unknown [188.228.123.71]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by asavdk4.altibox.net (Postfix) with ESMTPS id E258B8048A; Mon, 27 Jul 2020 22:31:59 +0200 (CEST) Date: Mon, 27 Jul 2020 22:31:58 +0200 From: Sam Ravnborg To: Paul Cercueil Cc: Thierry Reding , David Airlie , Daniel Vetter , Rob Herring , Andrzej Hajda , Neil Armstrong , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Noralf =?iso-8859-1?Q?Tr=F8nnes?= , od@zcrc.me, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 3/6] drm/bridge: Add SPI DBI host driver Message-ID: <20200727203158.GA1016751@ravnborg.org> References: <20200727164613.19744-1-paul@crapouillou.net> <20200727164613.19744-4-paul@crapouillou.net> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20200727164613.19744-4-paul@crapouillou.net> X-CMAE-Score: 0 X-CMAE-Analysis: v=2.3 cv=aP3eV41m c=1 sm=1 tr=0 a=S6zTFyMACwkrwXSdXUNehg==:117 a=S6zTFyMACwkrwXSdXUNehg==:17 a=8nJEP1OIZ-IA:10 a=ER_8r6IbAAAA:8 a=7X9hF7tqX14c7ykuo-AA:9 a=wPNLvfGTeEIA:10 a=9LHmKk7ezEChjTCyhBa9:22 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Paul. On Mon, Jul 27, 2020 at 06:46:10PM +0200, Paul Cercueil wrote: > This driver will register a DBI host driver for panels connected over > SPI. So this is actually a MIPI DBI host driver. I personally would love to have added mipi_ in the names - to make it all more explicit. But maybe that just because I get confused on all the acronyms. Some details in the following. Will try to find some more time so I can grasp the full picture. The following was just my low-level notes for now. Sam > > DBI types c1 and c3 are supported. C1 is a SPI protocol with 9 bits per > word, with the data/command information in the 9th (MSB) bit. C3 is a > SPI protocol with 8 bits per word, with the data/command information > carried by a separate GPIO. We did not have any define to distingush between DBI_C1 and DBI_c3: +/* MIPI bus types */ +#define MIPI_DEVICE_TYPE_DSI BIT(0) +#define MIPI_DEVICE_TYPE_DBI_SPI_MODE1 BIT(1) +#define MIPI_DEVICE_TYPE_DBI_SPI_MODE2 BIT(2) +#define MIPI_DEVICE_TYPE_DBI_SPI_MODE3 BIT(3) +#define MIPI_DEVICE_TYPE_DBI_M6800 BIT(4) +#define MIPI_DEVICE_TYPE_DBI_I8080 BIT(5) Is this on purpose? I had assumed the host should tell what it supports and the device should tell what it wanted. So if the host did not support DBI_C3 and device wants it - then we could give up early. > > Signed-off-by: Paul Cercueil > --- > drivers/gpu/drm/bridge/Kconfig | 8 + > drivers/gpu/drm/bridge/Makefile | 1 + > drivers/gpu/drm/bridge/dbi-spi.c | 261 +++++++++++++++++++++++++++++++ This is no bridge driver - so does not belong in the bridge directory. gpu/drm/drm_mipi_dbi_spi.c? > 3 files changed, 270 insertions(+) > create mode 100644 drivers/gpu/drm/bridge/dbi-spi.c > > diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig > index c7f0dacfb57a..ed38366847c1 100644 > --- a/drivers/gpu/drm/bridge/Kconfig > +++ b/drivers/gpu/drm/bridge/Kconfig > @@ -219,6 +219,14 @@ config DRM_TI_TPD12S015 > Texas Instruments TPD12S015 HDMI level shifter and ESD protection > driver. > > +config DRM_MIPI_DBI_SPI > + tristate "SPI host support for MIPI DBI" > + depends on OF && SPI > + select DRM_MIPI_DSI > + select DRM_MIPI_DBI > + help > + Driver to support DBI over SPI. > + > source "drivers/gpu/drm/bridge/analogix/Kconfig" > > source "drivers/gpu/drm/bridge/adv7511/Kconfig" > diff --git a/drivers/gpu/drm/bridge/Makefile b/drivers/gpu/drm/bridge/Makefile > index 7d7c123a95e4..c2c522c2774f 100644 > --- a/drivers/gpu/drm/bridge/Makefile > +++ b/drivers/gpu/drm/bridge/Makefile > @@ -20,6 +20,7 @@ obj-$(CONFIG_DRM_I2C_ADV7511) += adv7511/ > obj-$(CONFIG_DRM_TI_SN65DSI86) += ti-sn65dsi86.o > obj-$(CONFIG_DRM_TI_TFP410) += ti-tfp410.o > obj-$(CONFIG_DRM_TI_TPD12S015) += ti-tpd12s015.o > +obj-$(CONFIG_DRM_MIPI_DBI_SPI) += dbi-spi.o mipi_dbi_spi.o would be nice... > obj-$(CONFIG_DRM_NWL_MIPI_DSI) += nwl-dsi.o > > obj-y += analogix/ > diff --git a/drivers/gpu/drm/bridge/dbi-spi.c b/drivers/gpu/drm/bridge/dbi-spi.c > new file mode 100644 > index 000000000000..1060b8f95fba > --- /dev/null > +++ b/drivers/gpu/drm/bridge/dbi-spi.c > @@ -0,0 +1,261 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later > +/* > + * MIPI Display Bus Interface (DBI) SPI support > + * > + * Copyright 2016 Noralf Tr?nnes > + * Copyright 2020 Paul Cercueil > + */ > + > +#include > +#include > +#include > + > +#include > +#include > + > +#include