From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5842A18A6D4 for ; Sun, 4 Oct 2026 16:31:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791131501; cv=none; b=Dw3gDV3IYxf08urAIdjnzZQ+J09b31tN6uqNRJbcNe9l7s+fpJLyB7FZaZZTPqIBbn1eKS72mCbvvq3n+9/3ezPKZA1uRBVcKYElxMYBaWV9D6GmpTGwHEa7rp02WDo3V2cM4yL9JipUr8fZsGTCpYQWt8h023mwdbE5EyF0wWw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791131501; c=relaxed/simple; bh=hJ0AMOGpkVFh6tes6vr7WU2o0dH32OgRrFS165gUJos=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LVGdipLxs9bZoX0WoA9hL8r9bN6Srux8xlvIEwEkMkaFIkpLwdiUqGzgcPZyr1Cd2xFlJlNQMZR2jY5Io56Az14yJU0W5NGfQZ4S+Tew42bHjMKqS+cGLa9OZz7nwQKyDNcAWKF8+X+W7jC937wg/3nhnZ3L3EYBpaHrQ72oYpk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=cFOiOMhC; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="cFOiOMhC" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-4a1688d7769so7083875e9.0 for ; Sun, 04 Oct 2026 09:31:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1791131495; x=1791736295; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=BRpRmCoE6+LjitLhlbODWGYkYqkKhVTLS9Y1oXVDxFE=; b=cFOiOMhCEulEg4+Db55TnPjxWKNAfVY5yzovp6dyHI0JU663+RcqZqbY2JNBk/dAaL JDVfmZGX7EOv9v+s7fKXhoVy+jRexi58RcMKHuYEx3dBTUDMDPqIl1ydBfKDGmMvAzNW U6ktd3S4QpQO78WZ2P6VirwiSDUGGKaoaQnrKQYOwxuJsDoS0Wp6dwRINrJv6Hxl3ae2 IAgmXZXUAs9VaOhm2bBxqm6Jpj9yPX6/js6mUiZNe1VBLBbF8QF0FfWsFiZSrmWbBqUZ XY6v/RmyLFUpZCckHcYaVWr5A4pyZ7URZnZFVNrinL9PIxl+boCEEYEdfHJ9R3xpnWd+ h72Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791131495; x=1791736295; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=BRpRmCoE6+LjitLhlbODWGYkYqkKhVTLS9Y1oXVDxFE=; b=Iu6VA6pmPlZGuaTvZYi6Ue8Oa1FscskG/jKgARwv+eEYS6HYHXPiAEKIWLvUXocBQ7 pzZz5OLVwF8sjqrwEiwmu039OapW/hXppYpFJwWY8HpW6jRdvfpsJL97b2TfIB9WFSCV BlDnYxHLT2sUWnQ0TvhkTPwQ8Xq7HzMz+RHlUuPRFe6Nx/o0lidDzHyLE0/k/K1LgZ1N js9uytKUnhY8GP/Y7J1TAPEw5EZcHYcE9z/f3m9U6gvSKrqBuUsFvlVcGtTtZwe7sKw/ LHz2sSwrjt27h4c3vXUs47ewNAIw0uQE0uLKJCFsLy3AbMraQh1svDluNuVgFZAvCMZ8 JiAQ== X-Forwarded-Encrypted: i=1; AKwUvBy7bv3MUdHjivfn/7MzKcbY6dOFeThCLOOcUG3Luhy0LJe/SnnBntVSJ47P+KJmV0VYJfx5P4Bsubuy@vger.kernel.org X-Gm-Message-State: AFuF++lYPZp/XubwPZ99GRuF0R+kYnBYEodB4EsqK8n1oY3MuTYJjBkX ZFzMqAwARbk6bANgxmKXwzfGa81cqMJqECu2ZHSe/4GHUTm/AlbmxhSq X-Gm-Gg: AYBFou1LFJnw2nphR95/QxfErRYNdgDz6NvmhkLG1IvUM3m3H0jYN0aGWW1EEQA+63w ULJSllW7w5myUSM1gIZYm0Wbadgyi5f7fImKL6qg/3xx0UZFzP+lAuLqjEqS0/r4yJwyB4fH/ac jhG9xAT3/dsixIArxmJo+xrs38B4GRHuYnfkJmEfXSeutjPnfTlBwmKEi33l0yw8Va2aWbOdLhC zikVUV2hT445kr+stiZRrNdwRqQ3xc0ED+UVP3+m6hq91n4fbBKbls8lEryiwY+3ena/4SmkCVS HwL6D87gslIXEpbmfgCrATUuuzkwZvU3QxqWZVwJf+WY/jCrE3nMknUbP36Tr1SNe0ltgLatD8b aikmOMMZY6W1IKllSnJysG+9OQXIYn8uNjAlyCHcXoG502y5rkMk2byuGAXk1TciA7zaNzPGz5E ANif1rL2WONbVgXYYp7/i511+LsVf0hl3Z6vhuZ8UbotPy6HyZTpTVJa/a0eVTpV3ONj6E1SabY fO1gBuVODyIrOfIPqW7 X-Received: by 2002:a05:600c:3103:b0:4a0:1efa:c746 with SMTP id 5b1f17b1804b1-4a1680f61damr68822115e9.21.1791131494674; Sun, 04 Oct 2026 09:31:34 -0700 (PDT) Received: from xeon ([188.163.112.76]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4a0316b2524sm315365035e9.1.2026.10.04.09.31.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Oct 2026 09:31:34 -0700 (PDT) From: Svyatoslav Ryhel To: Neil Armstrong , Jessica Zhang , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Thierry Reding , Jonathan Hunter , Mikko Perttunen , Svyatoslav Ryhel Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-tegra@vger.kernel.org Subject: [PATCH v2 4/7] drm/tegra: Add support for 8-bit CPU interface Date: Sun, 4 Oct 2026 19:31:11 +0300 Message-ID: <20261004163114.181800-5-clamor95@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20261004163114.181800-1-clamor95@gmail.com> References: <20261004163114.181800-1-clamor95@gmail.com> Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The display controller in Tegra20/30 SoCs features an 8-bit SPI interface that closely resembles the MIPI DBI Type B protocol and is referred to as '8-bit CPU'. Each display controller provides two such interfaces, which can be used to send MIPI DCS commands to initialize and control the panel while image data is transmitted via 16/18/24-line RGB. The '8-bit CPU', although being the DC interface, is modeled using a bridge framework for flexibility and convenience. This implementation does not change the existing codebase besides registering a fragment and can be enabled/disabled without losing other Tegra DRM functionality. Signed-off-by: Svyatoslav Ryhel --- drivers/gpu/drm/tegra/Kconfig | 7 + drivers/gpu/drm/tegra/Makefile | 1 + drivers/gpu/drm/tegra/dbi.c | 416 +++++++++++++++++++++++++++++++++ drivers/gpu/drm/tegra/dc.c | 21 ++ drivers/gpu/drm/tegra/dc.h | 1 + 5 files changed, 446 insertions(+) create mode 100644 drivers/gpu/drm/tegra/dbi.c diff --git a/drivers/gpu/drm/tegra/Kconfig b/drivers/gpu/drm/tegra/Kconfig index 8a3b16aac5d68..3258e077d6666 100644 --- a/drivers/gpu/drm/tegra/Kconfig +++ b/drivers/gpu/drm/tegra/Kconfig @@ -30,6 +30,13 @@ config DRM_TEGRA if DRM_TEGRA +config DRM_TEGRA_DBI + bool "Enable MIPI DBI type B communication protocol for Tegra 20/30" + help + Tegra20 and Tegra30 feature 8 bit CPU driver panel control + protocol (similar to MIPI DBI Type B). This option allows use + it to set up and control compatible panel. + config DRM_TEGRA_DEBUG bool "NVIDIA Tegra DRM debug support" help diff --git a/drivers/gpu/drm/tegra/Makefile b/drivers/gpu/drm/tegra/Makefile index e399b40d64a1d..4850aa1c56ba3 100644 --- a/drivers/gpu/drm/tegra/Makefile +++ b/drivers/gpu/drm/tegra/Makefile @@ -31,5 +31,6 @@ tegra-drm-y := \ tegra-drm-y += trace.o tegra-drm-$(CONFIG_DRM_FBDEV_EMULATION) += fbdev.o +tegra-drm-$(CONFIG_DRM_TEGRA_DBI) += dbi.o obj-$(CONFIG_DRM_TEGRA) += tegra-drm.o diff --git a/drivers/gpu/drm/tegra/dbi.c b/drivers/gpu/drm/tegra/dbi.c new file mode 100644 index 0000000000000..74a1051b86778 --- /dev/null +++ b/drivers/gpu/drm/tegra/dbi.c @@ -0,0 +1,416 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include