From patchwork Sat May 9 19:00:08 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jernej_=C5=A0krabec?= X-Patchwork-Id: 2177 Return-Path: X-Original-To: noreply@patchwork.local Delivered-To: noreply@patchwork.local Received: from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10]) by mxe881.netcup.net (Postfix) with ESMTPS id E3A2B1C024E for ; Sat, 9 May 2026 21:00:41 +0200 (CEST) Authentication-Results: mxe881; dkim=pass header.d=gmail.com; spf=pass (sender IP is 172.234.253.10) smtp.mailfrom=linux-sunxi+bounces-23208-noreply=patchwork.local@lists.linux.dev smtp.helo=sea.lore.kernel.org Received-SPF: pass (mxe881: domain of lists.linux.dev designates 172.234.253.10 as permitted sender) client-ip=172.234.253.10; envelope-from=linux-sunxi+bounces-23208-noreply=patchwork.local@lists.linux.dev; helo=sea.lore.kernel.org; Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by sea.lore.kernel.org (Postfix) with ESMTP id 13175301572A for ; Sat, 9 May 2026 19:00:26 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 047833C872A; Sat, 9 May 2026 19:00:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="aQ5c4Jdj" X-Original-To: linux-sunxi@lists.linux.dev Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (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 49DBF3446C7 for ; Sat, 9 May 2026 19:00:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353224; cv=none; b=HQQTAt5YT2ALdptmAsMBJp/7t5lJk5x9LFAcNyvjVK2hGPLXoPnfUgQ0vsehDcrlUx/FbtaKaiZfjm/XMi6coBX/YPFn/IC/JS/WMJUbdDQx0lIfWXQQKSZXNtv5nI9u4u01AhDHeSD7KWXsoblLraOfyG3hYF0dUesrx5hJ5Y4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353224; c=relaxed/simple; bh=+SgYs8Hj6grWe0pXXV62TelA6SnR62JorpH+u34niZ0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Uj1zJQ9r5IKJLv1gTkw7+W9QpE0DFCptpUe1CfrZvaCY6g/3iyNZq0eLUVfaHwYHef7wmqS7AVwM4oq6bHOmmhkJG1ibXQUDy6VA5abhBvE8P4Ut7lRaduVn9I7+BswqAPnzX47nV2gTcWOYdz1dCjbzckiO8VGBdZwjQ4mBMaA= 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=aQ5c4Jdj; arc=none smtp.client-ip=209.85.128.41 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 Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-4893940bb5eso18194525e9.3 for ; Sat, 09 May 2026 12:00:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778353222; x=1778958022; darn=lists.linux.dev; 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; bh=F3EJ0517xJNtY9t4icYdcJ6JRwvMjYIpIptqEEIrShg=; b=aQ5c4JdjTX0Gv7idEJmI4jZ2C9IYHRxBTDc7KtVl0aJoiSi7VDQYdKdxQrzP3ECr/G ge0FxJTLQ0kEvM9V5FXZRQmh19XRW/npuHWbysS3RR+QW35OZBz+LGy5qpN/V3Z4ZDnf 0TkukKeCruD92VQHYHZJeYL7m4XzN1Ks3TEBzU4BFIvsHFUBVfRbNIySe04NGYyia9in Y1clqOraLELujY178EzSBXPIJzLpEWnCMnxGr/0J/fvp4znMMG2AvuzBgkngR7nfzH85 bBf+Di45CDMLOXj5Zy78OGMauxQ4aNbro6UF36Ag4ubB5SApIa/7A7Yfgoz6wP7w5pKZ jZ5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778353222; x=1778958022; 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; bh=F3EJ0517xJNtY9t4icYdcJ6JRwvMjYIpIptqEEIrShg=; b=fdegF7otHMHjR84NsgbeqLtbaBYxuUkdHhSIinzIoMhdqp8vmtJCqE5DFsnWEGP9CV qdw+axIH1wr2d+8TMel7lcbGI45vXcDCdp7PpDgfP11HzTRnruYgyPEIsfITZtXslJiy qesYSl1ZcxN12v7qNMLkUEk/oUwRI8muqK0AaHTmvJG2wDg4Y2XTIwZiFutd2l/YcJwH r+8/ATjPZ7DhBdQSQ7DSSuXlCm5k7wjvzPOBOLg6p7tHXBEpi1+na6j38/DB0g5h/YVJ kEBPJFsgTf2F5oA/Qs5aVAVnLfCATynkgH8gswnAi5tD0mU5ySdXcvh34+3FEaI1mgFo SK1Q== X-Forwarded-Encrypted: i=1; AFNElJ9h5i5A3K1q6om9vTqB4dlUUK+nFDmQ+u+Yw3ERwrg7qkWOvhUfDauTQYLJDQCJZJgx7lL6KKHTZzNNhA==@lists.linux.dev X-Gm-Message-State: AOJu0YxneoWRYeupr5tI4+jn/N98jrcLwSr0F5cy8l/lo5PMFpAD18tJ eEXyN9pvoUe8qZmH5Q645AI4ajKgA/PcJ50JewQIXzEpvRBcKli4pkx/avNRBQ== X-Gm-Gg: Acq92OH9WuajGOykBEIkC92Nir/mzZo7Bu9EJEH7pKZmgG2+LwRn6GdBPGNaGJSPAh7 DK89rEIizG+tkkM5kYwGf60P89pUh/Om2fjHWVwTLeb7uiGJl5T+bAa6lAkTFfhgZy2wjPiD9LE QjSUzpifgYc3cGJ4j6gzo+YGHBt+fI8hWof2h95EHG9MHJFASnpxZ1ZMKRoODJYUvV7FMuMU4bn 2IAhl924nDPqLZkC6Y0neyE1wYINmsEcx4YIiSRzd69sF7ykiNBK5c2ZdMoLz0i1gTxkkPAK5Mg cIFnHHAXWS0YGTJY3K7YhM4C/c5x33Hevc4ciDcZkBGyxvailBIZCFFMajuvXkWK4oVpsevNEID 3AeNgcAEjSXyI0Oc+J/LYS0tLIYWsXaP2RhCP+u8AotFNPOTkFvcYv53FfP4e/3DOIEnH5wSJs+ 9DrsKz/ydhD6jgprpj77A7wBV2bZHM4ua3tztSDvVIPm4ItB5Xy4dS8Ea0eJRsXL0emLo= X-Received: by 2002:a05:600c:1e0f:b0:48e:51f5:2764 with SMTP id 5b1f17b1804b1-48e676c0353mr137860975e9.27.1778353221568; Sat, 09 May 2026 12:00:21 -0700 (PDT) Received: from jernej-laptop (46-150-62-216.dynamic.telemach.net. [46.150.62.216]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-454913049ecsm13254407f8f.19.2026.05.09.12.00.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 09 May 2026 12:00:21 -0700 (PDT) From: Jernej Skrabec X-Google-Original-From: Jernej Skrabec To: wens@csie.org, samuel@sholland.org Cc: mripard@kernel.org, maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, mturquette@baylibre.com, sboyd@kernel.org, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, jernej.skrabec@gmail.com Subject: [PATCH v2 1/8] clk: sunxi-ng: de2: Fix Display Engine 3.3 definitions Date: Sat, 9 May 2026 21:00:08 +0200 Message-ID: <20260509190015.79086-2-jernej.skrabec@siol.net> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260509190015.79086-1-jernej.skrabec@siol.net> References: <20260509190015.79086-1-jernej.skrabec@siol.net> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Rspamd-Server: rspamd-worker-8404 X-Spamd-Result: default: False [-0.66 / 15.00]; BAYES_HAM(-5.50)[100.00%]; RBL_SENDERSCORE(2.00)[172.234.253.10:from]; SUSPICIOUS_RECIPS(1.50)[]; DMARC_POLICY_SOFTFAIL(1.00)[gmail.com : SPF not aligned (relaxed), No valid DKIM,none]; R_MISSING_CHARSET(0.50)[]; MAILLIST(-0.15)[generic]; MIME_GOOD(-0.10)[text/plain]; BAD_REP_POLICIES(0.10)[]; HAS_LIST_UNSUB(-0.01)[]; RCPT_COUNT_TWELVE(0.00)[19]; R_SPF_ALLOW(0.00)[+ip4:172.234.253.10]; DBL_BLOCKED_OPENRESOLVER(0.00)[sea.lore.kernel.org:rdns,sea.lore.kernel.org:helo]; FREEMAIL_FROM(0.00)[gmail.com]; FUZZY_BLOCKED(0.00)[rspamd.com]; FORGED_SENDER_MAILLIST(0.00)[]; FREEMAIL_CC(0.00)[kernel.org,linux.intel.com,suse.de,gmail.com,ffwll.ch,baylibre.com,lists.freedesktop.org,vger.kernel.org,lists.infradead.org,lists.linux.dev]; TAGGED_RCPT(0.00)[dt]; PRECEDENCE_BULK(0.00)[]; FROM_HAS_DN(0.00)[]; RCVD_TLS_LAST(0.00)[]; MIME_TRACE(0.00)[0:+]; FORGED_RECIPIENTS_MAILLIST(0.00)[]; TO_DN_NONE(0.00)[]; ASN(0.00)[asn:63949, ipnet:172.234.224.0/19, country:SG]; ARC_ALLOW(0.00)[subspace.kernel.org:s=arc-20240116:i=1]; TAGGED_FROM(0.00)[bounces-23208-noreply=patchwork.local]; RCVD_COUNT_FIVE(0.00)[6]; FROM_NEQ_ENVFROM(0.00)[jernejskrabec@gmail.com,linux-sunxi@lists.linux.dev]; RCVD_VIA_SMTP_AUTH(0.00)[] X-Rspamd-Queue-Id: E3A2B1C024E X-MORS-Enabled: yes X-MORS-DOMAIN: patchwork.local X-MORS-HOSTING: hosting172546 X-MORS-USER: hosting172546 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= From: Jernej Skrabec Positions of clocks and resets changed when version 3.3 was introduced. However, old positions still work, just by luck. Fix Display Engine 3.3 resets and clocks according vendor driver. Fixes: be0e9a372787 ("clk: sunxi-ng: ccu: add Display Engine 3.3 (DE33) support") Signed-off-by: Jernej Skrabec --- Changes from v1: - new patch drivers/clk/sunxi-ng/ccu-sun8i-de2.c | 39 +++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/drivers/clk/sunxi-ng/ccu-sun8i-de2.c b/drivers/clk/sunxi-ng/ccu-sun8i-de2.c index a6cd0f988859..6ec6c0dc4c26 100644 --- a/drivers/clk/sunxi-ng/ccu-sun8i-de2.c +++ b/drivers/clk/sunxi-ng/ccu-sun8i-de2.c @@ -36,6 +36,13 @@ static SUNXI_CCU_GATE(wb_clk, "wb", "wb-div", static SUNXI_CCU_GATE(rot_clk, "rot", "rot-div", 0x00, BIT(3), CLK_SET_RATE_PARENT); +static SUNXI_CCU_GATE(mixer0_h616_clk, "mixer0", "de", + 0x04, BIT(0), CLK_SET_RATE_PARENT); +static SUNXI_CCU_GATE(mixer1_h616_clk, "mixer1", "de", + 0x04, BIT(1), CLK_SET_RATE_PARENT); +static SUNXI_CCU_GATE(wb_h616_clk, "wb", "de", + 0x04, BIT(4), CLK_SET_RATE_PARENT); + static SUNXI_CCU_M(mixer0_div_clk, "mixer0-div", "de", 0x0c, 0, 4, CLK_SET_RATE_PARENT); static SUNXI_CCU_M(mixer1_div_clk, "mixer1-div", "de", 0x0c, 4, 4, @@ -54,6 +61,9 @@ static SUNXI_CCU_M(wb_div_a83_clk, "wb-div", "pll-de", 0x0c, 8, 4, static SUNXI_CCU_M(rot_div_a83_clk, "rot-div", "pll-de", 0x0c, 0x0c, 4, CLK_SET_RATE_PARENT); +static SUNXI_CCU_GATE(bus_mixer0_h616_clk, "bus-mixer0", "bus-de", + 0x08, BIT(0), 0); + static struct ccu_common *sun8i_de2_ccu_clks[] = { &mixer0_clk.common, &mixer1_clk.common, @@ -74,6 +84,12 @@ static struct ccu_common *sun8i_de2_ccu_clks[] = { &mixer1_div_a83_clk.common, &wb_div_a83_clk.common, &rot_div_a83_clk.common, + + &mixer0_h616_clk.common, + &mixer1_h616_clk.common, + &wb_h616_clk.common, + + &bus_mixer0_h616_clk.common }; static struct clk_hw_onecell_data sun8i_a83t_de2_hw_clks = { @@ -147,6 +163,17 @@ static struct clk_hw_onecell_data sun50i_a64_de2_hw_clks = { .num = CLK_NUMBER_WITH_ROT, }; +static struct clk_hw_onecell_data sun50i_h616_de33_hw_clks = { + .hws = { + [CLK_MIXER0] = &mixer0_h616_clk.common.hw, + [CLK_MIXER1] = &mixer1_h616_clk.common.hw, + [CLK_WB] = &wb_h616_clk.common.hw, + + [CLK_BUS_MIXER0] = &bus_mixer0_h616_clk.common.hw, + }, + .num = CLK_NUMBER_WITHOUT_ROT, +}; + static const struct ccu_reset_map sun8i_a83t_de2_resets[] = { [RST_MIXER0] = { 0x08, BIT(0) }, /* @@ -180,6 +207,12 @@ static const struct ccu_reset_map sun50i_h5_de2_resets[] = { [RST_WB] = { 0x08, BIT(2) }, }; +static const struct ccu_reset_map sun50i_h616_de33_resets[] = { + [RST_MIXER0] = { 0x00, BIT(0) }, + [RST_MIXER1] = { 0x00, BIT(1) }, + [RST_WB] = { 0x00, BIT(4) }, +}; + static const struct sunxi_ccu_desc sun8i_a83t_de2_clk_desc = { .ccu_clks = sun8i_de2_ccu_clks, .num_ccu_clks = ARRAY_SIZE(sun8i_de2_ccu_clks), @@ -244,10 +277,10 @@ static const struct sunxi_ccu_desc sun50i_h616_de33_clk_desc = { .ccu_clks = sun8i_de2_ccu_clks, .num_ccu_clks = ARRAY_SIZE(sun8i_de2_ccu_clks), - .hw_clks = &sun8i_h3_de2_hw_clks, + .hw_clks = &sun50i_h616_de33_hw_clks, - .resets = sun50i_h5_de2_resets, - .num_resets = ARRAY_SIZE(sun50i_h5_de2_resets), + .resets = sun50i_h616_de33_resets, + .num_resets = ARRAY_SIZE(sun50i_h616_de33_resets), }; static int sunxi_de2_clk_probe(struct platform_device *pdev) From patchwork Sat May 9 19:00:09 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jernej_=C5=A0krabec?= X-Patchwork-Id: 2178 Return-Path: X-Original-To: noreply@patchwork.local Delivered-To: noreply@patchwork.local Received: from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10]) by mxe881.netcup.net (Postfix) with ESMTPS id B73CB1C024E for ; Sat, 9 May 2026 21:01:07 +0200 (CEST) Authentication-Results: mxe881; dkim=pass header.d=gmail.com; spf=pass (sender IP is 172.234.253.10) smtp.mailfrom=linux-sunxi+bounces-23209-noreply=patchwork.local@lists.linux.dev smtp.helo=sea.lore.kernel.org Received-SPF: pass (mxe881: domain of lists.linux.dev designates 172.234.253.10 as permitted sender) client-ip=172.234.253.10; envelope-from=linux-sunxi+bounces-23209-noreply=patchwork.local@lists.linux.dev; helo=sea.lore.kernel.org; Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by sea.lore.kernel.org (Postfix) with ESMTP id 1A71F301F5E5 for ; Sat, 9 May 2026 19:00:28 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3C69B3C65F4; Sat, 9 May 2026 19:00:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="BnTAtk7D" X-Original-To: linux-sunxi@lists.linux.dev Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (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 8B1F83C73C1 for ; Sat, 9 May 2026 19:00:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353226; cv=none; b=W6RO6g10v9b1E3H9ZWY7jY0s8uiZHpezaKThE3c2AOobnlfZjp1F4N+vmJlwn8W9mMW6aiDqOt0zFqGtujDeQJL2a1xW5l2IAP6Sgbqwo/mxgESj/UU6OlWmghTeQMq11tjUDN054tqd2YioqH3i0eRN4u5nNWTYiqdZNnGxqo0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353226; c=relaxed/simple; bh=KhgjTTp6dPZIBaG0XSoEXqjWGKM14mBydZeI9l5lCjQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aRXul4tCSEnmejRN++tNUCw5Qi7/5fqUo2ArZlSdPdYH2vZQSjWLbF6o9/RyWYoGVY6NXYOjHsh7tX+6rZpwzdB8c7nByyU1SUG/4C6ogDznshZDjfCzQRz5X/bVTztLGlBDz7LRNy646Oie69yzPtThIXdExzWrPFcYMwoRI+U= 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=BnTAtk7D; arc=none smtp.client-ip=209.85.128.42 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 Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-48e6db3ff7eso5449295e9.0 for ; Sat, 09 May 2026 12:00:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778353223; x=1778958023; darn=lists.linux.dev; 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; bh=AdLAbqgwB3cbfBit4ZVDmF5fOX+Cth+Nq8mrAQRYaDE=; b=BnTAtk7DQVqFLhAdmKwApRfeeEfEYR4VIcxIY5ylugn5C+4yokowK13YqzlL2my75r YAd6SxVtu2fRsPzWq4iPkCdItWa7/laBHi+WsGkJGexs7fp+oBc3z2I4+pb6dahKfmj2 zPv9ylZTd6xTxEjfU01YaeEWhsmiSf5Smtm9754siENz5zgvXS5cYvNkTSp0Vigc9j6h VrgsN3yoW/OGixeMdbDpdxlIvg6GK8u1pdHmIHFqpkbTmaOA+1qI1Vw8LIzAoUuwSlWP ewuE9fnxOIgM1kgHnNE3GFkXDe1M1uIyfjSlJp0liNpk7l9aybtCf7BsLH9Pd0Ucq+lT AUcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778353223; x=1778958023; 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; bh=AdLAbqgwB3cbfBit4ZVDmF5fOX+Cth+Nq8mrAQRYaDE=; b=nVOvZE+pg+f7qXzV/XMKWNlsz2oiqEnET6pBSmpAtRXqZpAr8UJZf1A9rfCn44c/0G SjK3f+AaPhMA07k/Za1vk0kl21Up3uenPYra+Ce8oJZIJfr+E3h8hIWNszEI7gcq4KoA /aZ7XdESKgOeWQSxOOA3xS2slGTHKyyR0soV3TgCEU7LQGpdTn8q8Hhvi1n9CyqUyV9e wZdmO9TyWSCt+/SqFwOUycQ6CFR6UzFOXlC3fiteoEmZ7qxYLfbA1o8WlicNKEjD3/PM +Ha+Tn0w0gXnVSvCawsx2zq0oQInq8jlmA9Rd/Ik46fTx+tBqJGz4zTkUnEEZIezEwbE 8ywA== X-Forwarded-Encrypted: i=1; AFNElJ9SEVy9gyFwgmhEWv2ps4+EbgYAA3jMfqWxBYKuytwH1dpU224iDtImx6AwlnXipByLYlKxDygCpxTHXQ==@lists.linux.dev X-Gm-Message-State: AOJu0YwX8cyODhnet6ev4UdJap8vU3qSU1eUxhGFcp0S6vUHpPAcHukg 15iL8E0V0i1z4W4Ljj799lpxhW9FOd+uMrhRJmpn/JI10rBzgyx9+k2K X-Gm-Gg: Acq92OH9WUg7NuwvUm08eNjLnyQBJJ/Pt56TjeAMFyV2FQ/G6JTPk+ohu2Zk/buo+Ru Py/sIbL/M8IAEPBW5xr5897T5fRgMbBDlXY70Ds+advaKUoLqGgEMeSdiv9xhvR0xoA9h5hOmyJ du7jQne+VlaYf0gpWKdq7rScYHktpiE4ZGcAMsPy45YZgvlYI7YP05/L0jzEHDpY6kkUYStQttO NB2gfUi2FVTnGQ1rlSclMZUZrzBbCC2VZ959PmGaLdhPR+V6fjUHlNmFWCi96MWo/6d0zUAmqwm G55LwY3IxrymauRrM2yKgxSM9VTruAPGMMt2mH9i200MH8xxXx1WY4Y5f0feekoX6YAlX9XUWTf 192Zg5SbGuwPMXXc2ylKtPFbi9um0ByINexXFVOmLfd1q9WBI+uk+xbW3+QMt7fR5xrOfoFDEr+ hgoy1mLxnhL4fvlIP8eJOHuYPbTe4tMU+y4UvoTtHav21hP/6olZFkg8wbE4hka6k9KQo= X-Received: by 2002:a5d:5f90:0:b0:451:ccc:a6e5 with SMTP id ffacd0b85a97d-4515d5c68d1mr27318999f8f.30.1778353222950; Sat, 09 May 2026 12:00:22 -0700 (PDT) Received: from jernej-laptop (46-150-62-216.dynamic.telemach.net. [46.150.62.216]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-454913049ecsm13254407f8f.19.2026.05.09.12.00.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 09 May 2026 12:00:22 -0700 (PDT) From: Jernej Skrabec X-Google-Original-From: Jernej Skrabec To: wens@csie.org, samuel@sholland.org Cc: mripard@kernel.org, maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, mturquette@baylibre.com, sboyd@kernel.org, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, jernej.skrabec@gmail.com Subject: [PATCH v2 2/8] clk: sunxi-ng: de2: Export register regmap for DE33 Date: Sat, 9 May 2026 21:00:09 +0200 Message-ID: <20260509190015.79086-3-jernej.skrabec@siol.net> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260509190015.79086-1-jernej.skrabec@siol.net> References: <20260509190015.79086-1-jernej.skrabec@siol.net> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MORS-Enabled: yes X-MORS-DOMAIN: patchwork.local X-MORS-HOSTING: hosting172546 X-MORS-USER: hosting172546 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= From: Jernej Skrabec DE33 clock pre-set plane mapping, which is not something that we want from clock driver. Export registers instead, so DRM driver can set them properly. Signed-off-by: Jernej Skrabec --- Changes from v1: - used access tables instead of functions - used macro for max register - used dev_of_node() instead of open coding drivers/clk/sunxi-ng/ccu-sun8i-de2.c | 48 ++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 3 deletions(-) diff --git a/drivers/clk/sunxi-ng/ccu-sun8i-de2.c b/drivers/clk/sunxi-ng/ccu-sun8i-de2.c index 6ec6c0dc4c26..26d8abd5fac6 100644 --- a/drivers/clk/sunxi-ng/ccu-sun8i-de2.c +++ b/drivers/clk/sunxi-ng/ccu-sun8i-de2.c @@ -6,9 +6,11 @@ #include #include #include +#include #include #include #include +#include #include #include "ccu_common.h" @@ -283,6 +285,36 @@ static const struct sunxi_ccu_desc sun50i_h616_de33_clk_desc = { .num_resets = ARRAY_SIZE(sun50i_h616_de33_resets), }; +/* + * Add a regmap for the DE33 plane driver to access plane + * mapping registers. + * Only these registers are allowed to be written, to prevent + * overriding clock and reset configuration. + */ + +#define SUN50I_DE33_CHN2CORE_REG 0x24 +#define SUN50I_DE33_PORT12CHN_REG 0x2c + +static const struct regmap_range sun8i_de2_ccu_regmap_accessible_ranges[] = { + regmap_reg_range(SUN50I_DE33_CHN2CORE_REG, SUN50I_DE33_PORT12CHN_REG), +}; + +static const struct regmap_access_table sun8i_de2_ccu_regmap_accessible_table = { + .yes_ranges = sun8i_de2_ccu_regmap_accessible_ranges, + .n_yes_ranges = ARRAY_SIZE(sun8i_de2_ccu_regmap_accessible_ranges), +}; + +static const struct regmap_config sun8i_de2_ccu_regmap_config = { + .reg_bits = 32, + .val_bits = 32, + .reg_stride = 4, + .max_register = SUN50I_DE33_PORT12CHN_REG, + + /* other devices have no business accessing other registers */ + .wr_table = &sun8i_de2_ccu_regmap_accessible_table, + .rd_table = &sun8i_de2_ccu_regmap_accessible_table, +}; + static int sunxi_de2_clk_probe(struct platform_device *pdev) { struct clk *bus_clk, *mod_clk; @@ -336,13 +368,23 @@ static int sunxi_de2_clk_probe(struct platform_device *pdev) } /* - * The DE33 requires these additional (unknown) registers set + * The DE33 requires these additional plane mapping registers set * during initialisation. */ if (of_device_is_compatible(pdev->dev.of_node, "allwinner,sun50i-h616-de33-clk")) { - writel(0, reg + 0x24); - writel(0x0000a980, reg + 0x28); + struct regmap *regmap; + + regmap = devm_regmap_init_mmio(&pdev->dev, reg, + &sun8i_de2_ccu_regmap_config); + if (IS_ERR(regmap)) { + ret = PTR_ERR(regmap); + goto err_assert_reset; + } + + ret = of_syscon_register_regmap(dev_of_node(&pdev->dev), regmap); + if (ret) + goto err_assert_reset; } ret = devm_sunxi_ccu_probe(&pdev->dev, reg, ccu_desc); From patchwork Sat May 9 19:00:10 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jernej_=C5=A0krabec?= X-Patchwork-Id: 2179 Return-Path: X-Original-To: noreply@patchwork.local Delivered-To: noreply@patchwork.local Received: from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10]) by mxe881.netcup.net (Postfix) with ESMTPS id 72E3E1C024E for ; Sat, 9 May 2026 21:01:49 +0200 (CEST) Authentication-Results: mxe881; dkim=pass header.d=gmail.com; spf=pass (sender IP is 172.234.253.10) smtp.mailfrom=linux-sunxi+bounces-23210-noreply=patchwork.local@lists.linux.dev smtp.helo=sea.lore.kernel.org Received-SPF: pass (mxe881: domain of lists.linux.dev designates 172.234.253.10 as permitted sender) client-ip=172.234.253.10; envelope-from=linux-sunxi+bounces-23210-noreply=patchwork.local@lists.linux.dev; helo=sea.lore.kernel.org; Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by sea.lore.kernel.org (Postfix) with ESMTP id 3176C302BEA1 for ; Sat, 9 May 2026 19:00:32 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D796E3CBE71; Sat, 9 May 2026 19:00:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="n31SSyO/" X-Original-To: linux-sunxi@lists.linux.dev Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) (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 373993C5DBA for ; Sat, 9 May 2026 19:00:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353228; cv=none; b=KtFmxCF3nWEOtAzcl7f1Hn8W/ZnV+lCszCy73fbqwslZH3zzqpPD99hIfYb3DebexIZ+FZSGcmmBGx4F92vEwL6QR/jeD13uVqS5wxPOXxHBTkyeDW9bFrqU3NpEmRRh0BHevZvawGbZEL9cJzwhUg4kaRMCaJAnV6Ws9ciNfCY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353228; c=relaxed/simple; bh=L6dj0kDI2fqtZ2CWX89EK2nkipCryFY/CsWhogL/8pU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TdkifIT/eFhqpVhZKcfI/jMBGYAE4Q2zKZHSdqhdD3GpjcaKS9bYR6pAIAPjHjb7znJSzk09UTUrqzrnCFYu3c1xbvN+6fHBAArgjvhUKiEKgmpuYiTWYH/vafNgled0F5C8JDJl5SeNiXu6OG02Y1+w0jwNZYhMl4YzKvBuzGw= 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=n31SSyO/; arc=none smtp.client-ip=209.85.221.50 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 Received: by mail-wr1-f50.google.com with SMTP id ffacd0b85a97d-44c4cc7c1cfso2406775f8f.0 for ; Sat, 09 May 2026 12:00:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778353225; x=1778958025; darn=lists.linux.dev; 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; bh=+CrDBvKu/hcgSB1anyD1GXBKe06ZzlWC9+3i2f9q0bQ=; b=n31SSyO/03DFy9UJEiO9u3Ctg8DynOF/vHrbKpC7kMeF1LDCfE5+0siea4W/iQ9KpU vJSi7qClvYDoFPanCb69/n9iMs6Yh5Ws7DPIQUKraqpvN8H1HCh6I642iPhlcJ6vfonr wJq+Cj8aP+t6KN3lUIC7aGdKJIqHqeEnelKK4fOqlLJWvmQAiUuoQ4VGRuIVhTHsBw59 FRGV4ekWLKRJ6Wefw+he4NvqaiXIlTQhGN/J3pMWb1AzYAZ5HNEZYt3ehunKyTwdGjCi 2GcBRCx4VAEhOzWGCl0BYstE6ATBX3hZGR9HjOrX/Z+tlSCiBuA6OaTIoVdrWTwD00oa zQVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778353225; x=1778958025; 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; bh=+CrDBvKu/hcgSB1anyD1GXBKe06ZzlWC9+3i2f9q0bQ=; b=Z5QFbOm2lPjT/ax5CZ3kgH4wcFLga9DepezXqtQPAaOF2bMp3XN1asybAdNxLV8YJd Redifc9mjla8kWFxMp+tDb3EfTdIwEJWHDeiFSlVtTDae6KXlxC1p0usxO4DUJgabk04 RPp8bUnlqkJym5Z7ACrCxXqVwLG2VOT7DT09Qn+YC3YUSO1FIgDvFdMCbTfj/bXrxW82 WE47qz4wWU5xrPjCxo73EassSLb0giHNK+1ZAqD4Vb36CJIAbW55go5I5y5b/qTVrWpy OXDBHKGO0OHoHgyknLw+7pc5YBlfuAv3E4I78at44MZqHBikfyb1fHP5dgzTh7TIkZAB dmog== X-Forwarded-Encrypted: i=1; AFNElJ862yKfbvLtbyqFDfwYE3UFGyWb51rPp9IYTUM6nPlLKaqCPwNxT+PnfNUiasWdb89q2/zMtmKLERY4IQ==@lists.linux.dev X-Gm-Message-State: AOJu0YzFxlbo0/VI4sxRcrqf3d8FcB0F+cM9F+GBus04nGX7b1fKbERL TooAaHNQhx99DJdWADFtmAi4lb5Yc85EKPxFzjgYCYuOrFLNQiTa9WAX X-Gm-Gg: Acq92OGMveGCYcBxGx82JxrTAw31Mgf7Kj3KMi9dRi0lrLE6gYqRqu2ia4PyyjgeNFK tN7lXSfY1IzC/ypNCWw+br1TgR2vxEqDxzYtnRk0drhje2QyUcOzV9ZF9hLvEl6pqblKZ5OaUUP ECLlhhAL60psm91RM7fmI9GVhCeK91C2cdTrIcxJzZ9+Y/e/YUCjLp2U/3has3+/qhRozg7qDIU e585J1xLM5jGXc5sVHVmW+GpXEKGPKIHe/2hzaryzxof2CGG2KSi2OvClHNgwMtdNozM7c+voxi Z5w4m+OVoX1JOKijS7mYIJ5d5V5iboDXZmS/UDeiwUH/MjKhK70bilxRT8wq6zXAG0f1FvdA9hY Sm4XEnKr1EIDGAPGlNPvN2zLdaPWOeQYK1Q4KWm0Djj7YiUhzUZ4iNdpOy4cJURe03HV4sHqscc 5HzN3UK/YbCAgYKptPthW9TkznBJymKpOwg/lcKBtFy0V025s3A+NBoVwK+yU74btREdw= X-Received: by 2002:a05:6000:2910:b0:44d:821:1a0b with SMTP id ffacd0b85a97d-4515d3dc326mr27958440f8f.29.1778353224452; Sat, 09 May 2026 12:00:24 -0700 (PDT) Received: from jernej-laptop (46-150-62-216.dynamic.telemach.net. [46.150.62.216]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-454913049ecsm13254407f8f.19.2026.05.09.12.00.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 09 May 2026 12:00:24 -0700 (PDT) From: Jernej Skrabec X-Google-Original-From: Jernej Skrabec To: wens@csie.org, samuel@sholland.org Cc: mripard@kernel.org, maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, mturquette@baylibre.com, sboyd@kernel.org, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, jernej.skrabec@gmail.com, Chen-Yu Tsai Subject: [PATCH v2 3/8] drm/sun4i: Add support for DE33 CSC Date: Sat, 9 May 2026 21:00:10 +0200 Message-ID: <20260509190015.79086-4-jernej.skrabec@siol.net> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260509190015.79086-1-jernej.skrabec@siol.net> References: <20260509190015.79086-1-jernej.skrabec@siol.net> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MORS-Enabled: yes X-MORS-DOMAIN: patchwork.local X-MORS-HOSTING: hosting172546 X-MORS-USER: hosting172546 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= From: Jernej Skrabec DE33 has channel CSC units (for each plane separately) so pipeline can be configured to output in desired colorspace. Reviewed-by: Chen-Yu Tsai Signed-off-by: Jernej Skrabec --- Changes from v1: - collected tag drivers/gpu/drm/sun4i/sun8i_csc.c | 71 +++++++++++++++++++++++++++++++ drivers/gpu/drm/sun4i/sun8i_csc.h | 5 +++ 2 files changed, 76 insertions(+) diff --git a/drivers/gpu/drm/sun4i/sun8i_csc.c b/drivers/gpu/drm/sun4i/sun8i_csc.c index ce81c12f511d..70fc9b017d17 100644 --- a/drivers/gpu/drm/sun4i/sun8i_csc.c +++ b/drivers/gpu/drm/sun4i/sun8i_csc.c @@ -205,6 +205,72 @@ static void sun8i_de3_ccsc_setup(struct regmap *map, int layer, mask, val); } +/* extract constant from high word and invert sign if necessary */ +static u32 sun8i_de33_ccsc_get_constant(u32 value) +{ + value >>= 16; + + if (value & BIT(15)) + return 0x400 - (value & 0x3ff); + + return value; +} + +static void sun8i_de33_convert_table(const u32 *src, u32 *dst) +{ + dst[0] = sun8i_de33_ccsc_get_constant(src[3]); + dst[1] = sun8i_de33_ccsc_get_constant(src[7]); + dst[2] = sun8i_de33_ccsc_get_constant(src[11]); + memcpy(&dst[3], src, sizeof(u32) * 12); + dst[6] &= 0xffff; + dst[10] &= 0xffff; + dst[14] &= 0xffff; +} + +static void sun8i_de33_ccsc_setup(struct regmap *map, int layer, + enum sun8i_csc_mode mode, + enum drm_color_encoding encoding, + enum drm_color_range range) +{ + u32 addr, val, base, csc[15]; + const u32 *table; + int i; + + table = yuv2rgb_de3[range][encoding]; + base = DE33_CCSC_BASE + layer * DE33_CH_SIZE; + + switch (mode) { + case SUN8I_CSC_MODE_OFF: + val = 0; + break; + case SUN8I_CSC_MODE_YUV2RGB: + val = SUN8I_CSC_CTRL_EN; + sun8i_de33_convert_table(table, csc); + regmap_bulk_write(map, SUN50I_CSC_COEFF(base, 0), csc, 15); + break; + case SUN8I_CSC_MODE_YVU2RGB: + val = SUN8I_CSC_CTRL_EN; + sun8i_de33_convert_table(table, csc); + for (i = 0; i < 15; i++) { + addr = SUN50I_CSC_COEFF(base, i); + if (i > 3) { + if (((i - 3) & 3) == 1) + addr = SUN50I_CSC_COEFF(base, i + 1); + else if (((i - 3) & 3) == 2) + addr = SUN50I_CSC_COEFF(base, i - 1); + } + regmap_write(map, addr, csc[i]); + } + break; + default: + val = 0; + DRM_WARN("Wrong CSC mode specified.\n"); + return; + } + + regmap_write(map, SUN8I_CSC_CTRL(base), val); +} + static u32 sun8i_csc_get_mode(struct drm_plane_state *state) { const struct drm_format_info *format; @@ -238,6 +304,11 @@ void sun8i_csc_config(struct sun8i_layer *layer, mode, state->color_encoding, state->color_range); return; + } else if (layer->cfg->de_type == SUN8I_MIXER_DE33) { + sun8i_de33_ccsc_setup(layer->regs, layer->channel, + mode, state->color_encoding, + state->color_range); + return; } base = ccsc_base[layer->cfg->ccsc][layer->channel]; diff --git a/drivers/gpu/drm/sun4i/sun8i_csc.h b/drivers/gpu/drm/sun4i/sun8i_csc.h index 2a4b79599610..d2ba5f8611aa 100644 --- a/drivers/gpu/drm/sun4i/sun8i_csc.h +++ b/drivers/gpu/drm/sun4i/sun8i_csc.h @@ -18,9 +18,14 @@ struct sun8i_layer; #define CCSC10_OFFSET 0xA0000 #define CCSC11_OFFSET 0xF0000 +#define DE33_CCSC_BASE 0x800 + #define SUN8I_CSC_CTRL(base) ((base) + 0x0) #define SUN8I_CSC_COEFF(base, i) ((base) + 0x10 + 4 * (i)) +#define SUN50I_CSC_COEFF(base, i) ((base) + 0x04 + 4 * (i)) +#define SUN50I_CSC_ALPHA(base) ((base) + 0x40) + #define SUN8I_CSC_CTRL_EN BIT(0) void sun8i_csc_config(struct sun8i_layer *layer, From patchwork Sat May 9 19:00:11 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jernej_=C5=A0krabec?= X-Patchwork-Id: 2180 Return-Path: X-Original-To: noreply@patchwork.local Delivered-To: noreply@patchwork.local Received: from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10]) by mxe881.netcup.net (Postfix) with ESMTPS id 1312A1C024E for ; Sat, 9 May 2026 21:02:08 +0200 (CEST) Authentication-Results: mxe881; dkim=pass header.d=gmail.com; spf=pass (sender IP is 172.234.253.10) smtp.mailfrom=linux-sunxi+bounces-23211-noreply=patchwork.local@lists.linux.dev smtp.helo=sea.lore.kernel.org Received-SPF: pass (mxe881: domain of lists.linux.dev designates 172.234.253.10 as permitted sender) client-ip=172.234.253.10; envelope-from=linux-sunxi+bounces-23211-noreply=patchwork.local@lists.linux.dev; helo=sea.lore.kernel.org; Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by sea.lore.kernel.org (Postfix) with ESMTP id CEEF53031306 for ; Sat, 9 May 2026 19:00:33 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 34FF93CAE80; Sat, 9 May 2026 19:00:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="bUON6Mld" X-Original-To: linux-sunxi@lists.linux.dev Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (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 CD6533C276F for ; Sat, 9 May 2026 19:00:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353230; cv=none; b=h/1cM2queqA7qnEqF2wJz8ZS8PjLKqnkRYirDZ4ZfrPhG2zRGw1IlpZhfkGoBr7CJYFxBkNn57oJllTavpJqm4JMV6dmds7jXoOnN4q3zjJ3ujBfYTgjNP9p31ungkVyXVbCB0t57iL6fZO/uxqKxk39mhake4ABKG7mLICUf0Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353230; c=relaxed/simple; bh=dJZiUI/nXwbVKeTyU5YlTJh5eS1vXANNoICbkU5BWMk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EzZA0pA83JeB3dF1IEnDealZN3n2usXVHyCo/Ro7LZAa81WVpl980Yfb4GWE34Yo/aiGtNJ1uWwjWwTeJfIoaLAknAqtrqRCYYLUGrvFqG9ExrjJlb5VhOq1HwmrrLdlwXxDGRQPW02fgjBh9eCx6kJhQJpFISiydWFzcwFDe3w= 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=bUON6Mld; arc=none smtp.client-ip=209.85.221.46 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 Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-449de065cb3so2793962f8f.2 for ; Sat, 09 May 2026 12:00:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778353226; x=1778958026; darn=lists.linux.dev; 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; bh=OFHSVkKikAqL7V5/tk/bF1gVjwq2bK7i4HjBHfLDqaU=; b=bUON6Mldfv0yMaIb+l1u/SoO2rkgeijKzw7p1WIw1qKY9YbIOYUK56EPIya5k1SHBE 95Of0NZr7DzXIel7XYYi7PVwOxw5Eq1aw6m8eK9nBVzlVPR8aicW+SI57wXfyXKznmK2 8FwQ/yrCMJivU1Hg9zK9Ph7m/vhz1j0yT0U+iCPr9+++d0x3DiUGMg0vPXr1mCQ3PII6 YtQoeMYtKRFjThtU1P270ruGA1axWtfYuIgAzaOx8veVJX9vU4V/lpK8FCeHgoB8TgAX f6KhlRskU2WXd31QjsK0eIRPfEh1xWVCYG4bdn9igNjfimupDjGqxN03z6CXIWsOd3W4 hGjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778353226; x=1778958026; 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; bh=OFHSVkKikAqL7V5/tk/bF1gVjwq2bK7i4HjBHfLDqaU=; b=Oyog5h+pEZPULkYFLnI4SFw6wq7LOzOXAkUvQ3yGilCQUVZjk/GhE18StOm31baX+J 2526zLpeuXY78VPLaIU5kAr22FFbTAaOVxm7E8zbbB4uyeorQ8YIIkhEXIHsRYdG2vEt 8pehQKhEUccEpobk5cO3uWVe7osMaeewu2W1A/94cuHCpBj0emSLza483InUJAHWdHAf P31KggC3Cc6viNqvsu/e2JX5p0YSma5dvI9kTPW837QEclgxLMc0/ATj8BYTwosWtzSm F+EojzyLu7YlHh2MugAvTMXWCkn4Uurn0bR4LA+jP8drFu9tgFHGW/sIU0lFDXKIPoiz 1OXg== X-Forwarded-Encrypted: i=1; AFNElJ8T7Mf1glF9gGA8du5UykCNuumNem6TJ2HNjiM0gUw64/Z/+889x1xg3hKpLpNmuvEciHQreDjqgDHWXA==@lists.linux.dev X-Gm-Message-State: AOJu0Yy1uJkdglyhIdg3wbZiB4BcbLIIo1sYOvfvoW1j6IDMW7gdLn20 hdzGmTFTM6bF7ZbBdQA+txAVjOy9mFFRvM0cj3xuzgumx+tDVWcALe+a X-Gm-Gg: Acq92OHNQIvQFqtPilmGUqx/dTCGPUzaLDgB6C3iVhRQUegzSpd4gZXtZjvXU80RCoR 5UtavkwnOTbYPxUIDwDlXM4UhqCf3Mejh2RAzW2+ZkZc/HYAwt7G6Dv7sxI22Qc83r2Xbb29T5e csnv8HU/xT87iM5Iar+pbhgFEgi0g4vNEBOaabe+Qju5E8RoR4d0xE7BDKsakZJsZUfqOIiDY/v dZ1vJl7OIbzM6r50T8t7E9aK3BUu7Na/3wqyHYSub9yHT/Uyq68vSpvv15XqJ5MoIwl9qyzT0IX 6ezG2n4pEIzUuEv6pAfYzBCrbtbJJ9ggG3YkC094vQPhUor7idPl8+5XuoBS4nr02+2+n2n4TSM 5qC33G6dW/AbiyNdw97LS4fMfCFhomMFDXEIfP7QzduqD2OIaRSPyKAa2pLkNv0zM4wyyFtkhzp p9iUL3e6+YXAhW90Tl2FarbZSaLX4cun7TzRMmAKEiYVHUqjucjq4lTW6gm9jp5EWDnjs= X-Received: by 2002:a05:6000:40dc:b0:43d:309b:9c4f with SMTP id ffacd0b85a97d-4515b056c90mr27920879f8f.6.1778353225999; Sat, 09 May 2026 12:00:25 -0700 (PDT) Received: from jernej-laptop (46-150-62-216.dynamic.telemach.net. [46.150.62.216]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-454913049ecsm13254407f8f.19.2026.05.09.12.00.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 09 May 2026 12:00:25 -0700 (PDT) From: Jernej Skrabec X-Google-Original-From: Jernej Skrabec To: wens@csie.org, samuel@sholland.org Cc: mripard@kernel.org, maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, mturquette@baylibre.com, sboyd@kernel.org, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, jernej.skrabec@gmail.com, Chen-Yu Tsai Subject: [PATCH v2 4/8] drm/sun4i: vi_layer: Limit formats for DE33 Date: Sat, 9 May 2026 21:00:11 +0200 Message-ID: <20260509190015.79086-5-jernej.skrabec@siol.net> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260509190015.79086-1-jernej.skrabec@siol.net> References: <20260509190015.79086-1-jernej.skrabec@siol.net> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MORS-Enabled: yes X-MORS-DOMAIN: patchwork.local X-MORS-HOSTING: hosting172546 X-MORS-USER: hosting172546 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= From: Jernej Skrabec YUV formats need scaler support due to chroma upscaling, but that's not yet supported in the driver. Remove them from supported list until DE33 scaler is properly supported. Reviewed-by: Chen-Yu Tsai Signed-off-by: Jernej Skrabec --- Changes from v1: - collected tag - generalize check to be dependant on scaler feature drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 40 ++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index cd8d6c2da0c7..afbd41a18a0e 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -380,6 +380,33 @@ static const u32 sun8i_vi_layer_de3_formats[] = { DRM_FORMAT_YVU422, }; +static const u32 sun8i_vi_layer_de3_no_yuv_formats[] = { + DRM_FORMAT_ABGR1555, + DRM_FORMAT_ABGR2101010, + DRM_FORMAT_ABGR4444, + DRM_FORMAT_ABGR8888, + DRM_FORMAT_ARGB1555, + DRM_FORMAT_ARGB2101010, + DRM_FORMAT_ARGB4444, + DRM_FORMAT_ARGB8888, + DRM_FORMAT_BGR565, + DRM_FORMAT_BGR888, + DRM_FORMAT_BGRA1010102, + DRM_FORMAT_BGRA5551, + DRM_FORMAT_BGRA4444, + DRM_FORMAT_BGRA8888, + DRM_FORMAT_BGRX8888, + DRM_FORMAT_RGB565, + DRM_FORMAT_RGB888, + DRM_FORMAT_RGBA1010102, + DRM_FORMAT_RGBA4444, + DRM_FORMAT_RGBA5551, + DRM_FORMAT_RGBA8888, + DRM_FORMAT_RGBX8888, + DRM_FORMAT_XBGR8888, + DRM_FORMAT_XRGB8888, +}; + static const uint64_t sun8i_layer_modifiers[] = { DRM_FORMAT_MOD_LINEAR, DRM_FORMAT_MOD_INVALID @@ -410,8 +437,17 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, layer->cfg = cfg; if (layer->cfg->de_type >= SUN8I_MIXER_DE3) { - formats = sun8i_vi_layer_de3_formats; - format_count = ARRAY_SIZE(sun8i_vi_layer_de3_formats); + /* + * TODO: DE33 drivers doesn't support scaling yet, which is a + * requirement for YUV support. + */ + if (layer->cfg->scaler_mask & BIT(phy_index)) { + formats = sun8i_vi_layer_de3_formats; + format_count = ARRAY_SIZE(sun8i_vi_layer_de3_formats); + } else { + formats = sun8i_vi_layer_de3_no_yuv_formats; + format_count = ARRAY_SIZE(sun8i_vi_layer_de3_no_yuv_formats); + } } else { formats = sun8i_vi_layer_formats; format_count = ARRAY_SIZE(sun8i_vi_layer_formats); From patchwork Sat May 9 19:00:12 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jernej_=C5=A0krabec?= X-Patchwork-Id: 2181 Return-Path: X-Original-To: noreply@patchwork.local Delivered-To: noreply@patchwork.local Received: from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10]) by mxe881.netcup.net (Postfix) with ESMTPS id EA1B91C024E for ; Sat, 9 May 2026 21:02:28 +0200 (CEST) Authentication-Results: mxe881; dkim=pass header.d=gmail.com; spf=pass (sender IP is 172.234.253.10) smtp.mailfrom=linux-sunxi+bounces-23212-noreply=patchwork.local@lists.linux.dev smtp.helo=sea.lore.kernel.org Received-SPF: pass (mxe881: domain of lists.linux.dev designates 172.234.253.10 as permitted sender) client-ip=172.234.253.10; envelope-from=linux-sunxi+bounces-23212-noreply=patchwork.local@lists.linux.dev; helo=sea.lore.kernel.org; Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by sea.lore.kernel.org (Postfix) with ESMTP id 591693035D66 for ; Sat, 9 May 2026 19:00:35 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 580C23C9429; Sat, 9 May 2026 19:00:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="NBG8LdWT" X-Original-To: linux-sunxi@lists.linux.dev Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (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 3A2493C9EEE for ; Sat, 9 May 2026 19:00:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353231; cv=none; b=sJDIeqYUu/qhOyMM7hlrSoniIqb7TYWxyIJ+luh98qnTfotd6GSJz27AP5kxX5nvcqdCcfB0Lw8bXyWj8u3coiOmgTCKl8FrwnB0/bVl+JG6Lrg+9F2yL5XEamaOXtw6mZjOsbx5K3Y+/he16DtU3gDqYelenUrn8Qd+9iYffx8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353231; c=relaxed/simple; bh=qJI1RKZ4tm1AtCPX5qv4vqS8PMeax9pf5Xalvtfc+kY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OOlQuzR/3z+OdGz3VwrK5EoyE4ZrHq/JOxjphVVWDKxeE0Yt5s6orEckcXIE68KRzc/6+l1MchVifDiWewD5EuNoCIO5wMH6GrpuhObooyRrqMqr9h6xlM14Oq6hE5evVx5oAhbB39tmXzuQBEMmjvBkiaoLphFFVvUUX5MQFEs= 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=NBG8LdWT; arc=none smtp.client-ip=209.85.221.54 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 Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-44c350a5b87so1841936f8f.3 for ; Sat, 09 May 2026 12:00:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778353227; x=1778958027; darn=lists.linux.dev; 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; bh=zfXcef4xsSF9aS7bEgNrFEzEGtCwPTxISiBE2oLRk0A=; b=NBG8LdWTejNpwLGPsDSzYeSkONyFxFQv6CJ6aFi8JIunfO2Im1p6ExudGwR4ROnYKB UBdDH/Ltn5zr5taIfywQkullPK/Ga7ERB4u7sAyrra4Z4UUJoLdV64Eg+skrgXYHyd3I 8yJeQx8xnRhlL/KjtxAL2AtvV3Kzg0+LyGQ3Z3a71/9USNm4CRZv9g3B2JREi+YSzy5Q PimdpPsiCIOLjxWuUppXdoyuAWYbX3NJJ0gJvyymgqcH8fp9k3ODf9I8zrBJ2U731Jsv OgHtLbBEVWa/xHLaSw16zs2uIlcdBo5epJm6SnssEsSJh/sJJlvikdQlI/0bNBlVQEbc GQCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778353227; x=1778958027; 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; bh=zfXcef4xsSF9aS7bEgNrFEzEGtCwPTxISiBE2oLRk0A=; b=IiA5z60GjEQYLB/PdlqcC5ojfaPwQmVFBhro5SRTYbyg3w+tWxzbEF00Q/xtionDof hRrhNgIeLXVH4IF9lvl66G/wqS2XkeQYvegHKOM2c0V0/plUfkW0gU+Oz2aaCAFRJJgk kbA5JE1/o5b2e3k2kRoyy+oWB3k2qS+w4tWcGThxJrUomGG96zhPSnYwtmNjnP93gaBu vAzKaSUoPH+ekhvAnMCr81IhmGM7f6ja6N52EdlImzi3nfLr6qGrO0CywBtEicsrEcut GK6z7mViu+r6oLCNVcmIFOEitVMgS92i+M8iAnIb7z2OehF2LwaVOzT5VyH4rkrkaxp2 iZqw== X-Forwarded-Encrypted: i=1; AFNElJ8ENMduQtwRmyUycoqyXWRqbxVNA3jehQeHaJavSGmezj4S8exUnTqXfOZjS7KY2YbxVnfSeF0L92UZ6Q==@lists.linux.dev X-Gm-Message-State: AOJu0YwDQFu6rb2QD6UFKQGL6X0i7KjK1aKvgxTwsvoLz4WUhKpUnQKh S4uHEjp5oZKJ6GFg3NRyIrjgD6H33kNxOuyO5TMN6Vlbm1k4K9vt9mTs X-Gm-Gg: Acq92OE49r+r28zZO3FNbFzXCgARXemBRtyNi5hAoEnPTA4eS3OrkGwJa99MebZmTSo /qrQzpSf+qP269GP1/GSNtu4r70IpyndU0oKbyTFOJHQTQmro7Vu9iiU/JDdmMgcbGjIDkvot/A n3tONneoZGbkFXNhH5JIoQ50wPfQbYRcQY9E/sg7TTmgAKY8pIswmDrii5/is+Hq7Rc+Emahvat ZkavEqUt2EFGSphdxHsEpR99mCJy89EWbQ52V/IvgM3a0jCnUyZnIzMFhLsEGX6iJejbz+x4sMp KJ0yKuJmYHXFxmzJqZJ0DIRS3OXn/K8X7odeIJCQhFJ1Af3qWM/qmMV/ZQwF0l0lBpkMkVvDcA5 kp0x/E7C/mqWOaFxklJ+84X1/OTEK1HE7DHaFltHMBVkEjm8DJ2oKmCFFgI1AuT9TyAMQfJyYpP /P790/TBHsu/wvLaJ3tVsRvocpcu0+2rXrX/2HOTY01vLXmGWoOHExJjObrH4Eb+zlrV/sewM++ JHtAw== X-Received: by 2002:a05:6000:2dc6:b0:439:c661:3245 with SMTP id ffacd0b85a97d-4515cc31e43mr28677269f8f.34.1778353227339; Sat, 09 May 2026 12:00:27 -0700 (PDT) Received: from jernej-laptop (46-150-62-216.dynamic.telemach.net. [46.150.62.216]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-454913049ecsm13254407f8f.19.2026.05.09.12.00.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 09 May 2026 12:00:27 -0700 (PDT) From: Jernej Skrabec X-Google-Original-From: Jernej Skrabec To: wens@csie.org, samuel@sholland.org Cc: mripard@kernel.org, maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, mturquette@baylibre.com, sboyd@kernel.org, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, jernej.skrabec@gmail.com Subject: [PATCH v2 5/8] dt-bindings: display: allwinner: Add DE33 planes Date: Sat, 9 May 2026 21:00:12 +0200 Message-ID: <20260509190015.79086-6-jernej.skrabec@siol.net> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260509190015.79086-1-jernej.skrabec@siol.net> References: <20260509190015.79086-1-jernej.skrabec@siol.net> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MORS-Enabled: yes X-MORS-DOMAIN: patchwork.local X-MORS-HOSTING: hosting172546 X-MORS-USER: hosting172546 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= From: Jernej Skrabec Allwinner Display Engine 3.3 contains planes, which are shared resources between all mixers present in SoC. They can be assigned to specific mixer by using registers which reside in display clocks MMIO. Add a binding for them. Signed-off-by: Jernej Skrabec Reviewed-by: Krzysztof Kozlowski --- Changes from v1: - dropped | for description - better description for allwinner,plane-mapping .../allwinner,sun50i-h616-de33-planes.yaml | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml diff --git a/Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml b/Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml new file mode 100644 index 000000000000..0a07cb8a5f79 --- /dev/null +++ b/Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml @@ -0,0 +1,46 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/allwinner,sun50i-h616-de33-planes.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Allwinner H616 Display Engine 3.3 planes + +maintainers: + - Jernej Skrabec + +description: + Display Engine 3.3 planes are independent of mixers, contrary to + previous generations of Display Engine. Planes can be assigned to + mixers independently and even dynamically during runtime. + +properties: + compatible: + enum: + - allwinner,sun50i-h616-de33-planes + + reg: + maxItems: 1 + + allwinner,plane-mapping: + $ref: /schemas/types.yaml#/definitions/phandle + description: + Phandle of the device responsible for assigning (mapping) planes + between mixers. + +required: + - compatible + - reg + - allwinner,plane-mapping + +additionalProperties: false + +examples: + - | + planes: planes@100000 { + compatible = "allwinner,sun50i-h616-de33-planes"; + reg = <0x100000 0x180000>; + allwinner,plane-mapping = <&display_clocks>; + }; + +... From patchwork Sat May 9 19:00:13 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jernej_=C5=A0krabec?= X-Patchwork-Id: 2182 Return-Path: X-Original-To: noreply@patchwork.local Delivered-To: noreply@patchwork.local Received: from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10]) by mxe881.netcup.net (Postfix) with ESMTPS id AAC5C1C024E for ; Sat, 9 May 2026 21:03:15 +0200 (CEST) Authentication-Results: mxe881; dkim=pass header.d=gmail.com; spf=pass (sender IP is 172.234.253.10) smtp.mailfrom=linux-sunxi+bounces-23213-noreply=patchwork.local@lists.linux.dev smtp.helo=sea.lore.kernel.org Received-SPF: pass (mxe881: domain of lists.linux.dev designates 172.234.253.10 as permitted sender) client-ip=172.234.253.10; envelope-from=linux-sunxi+bounces-23213-noreply=patchwork.local@lists.linux.dev; helo=sea.lore.kernel.org; Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by sea.lore.kernel.org (Postfix) with ESMTP id C14A1301465C for ; Sat, 9 May 2026 19:00:38 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3BFE23CF66E; Sat, 9 May 2026 19:00:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="abiz0/Xk" X-Original-To: linux-sunxi@lists.linux.dev Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (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 AFE233C7E0E for ; Sat, 9 May 2026 19:00:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353233; cv=none; b=kUFGKwrP610zjeLymVvDy8rTyx+SWuRH/zWNK1e/kPa6oEcQIVeiBtQk6tCAHlx37eOBXjq00qP1y29zBYdC/a/b6bObm/j4yDTtn4eXWqFAue8XICJ8OJGRteNhlNOkXKvlO2/4+fSNMXWgl0okE+s7cgVjBe3yiExAMPiAWW4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353233; c=relaxed/simple; bh=NcqhNte9ebwQoJIOazZXnhJIHkQIBt16I7n818TPDVM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eUPnQFqorYi6/KyuUca/uH8A1wakPJfPm6vTehv51bTUdgbwTRNJVFh4jLsuEK/hVZHj1l1W/Vuth4RT6FADgkN/O/iYHEMMxZQaKlkVpcj1VtlqzrRTGiagsHFkrU5RWVC9+85D3AI2Vlczbs9eGZatUVy+bSwOVfViukfxhTA= 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=abiz0/Xk; arc=none smtp.client-ip=209.85.128.46 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 Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-488a9033b2cso28572065e9.2 for ; Sat, 09 May 2026 12:00:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778353229; x=1778958029; darn=lists.linux.dev; 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; bh=ZNthY/vc+xApAiW+Ngr8WtzfKJImSMBfZhPBgaVC8u0=; b=abiz0/Xkt4QsxbtbJ4vcCVPaqbN7ly4BwBjjyKaicLqyfgTVdLnBTGsVIW/LqB5XQP gv7yFu5Jw+tVTa0WMGrRCGUXgdX4Pt0MXuFJ8t2Y91GJYktsI8JaXObeKnAQEJXaz8Xs laCxb3guW1DgL6Y3eH2vKE4irw+g9/1q8Sn8kVQhFtJnkdgmwll+W6xOH/RPsu11D0Ca eGNaPByOXwWspgk2w+/xHv2D2++X9JQ1onQhfZIlyLhWyMUbgCkRUzho+Kks0Yg7hOhA oYPcvdx5ga/tFeG6qUvp0NQBewGLlQepdMvAoDYvW9LlwlUTZGoF0mafmdpuE0RtxQyw 1mcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778353229; x=1778958029; 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; bh=ZNthY/vc+xApAiW+Ngr8WtzfKJImSMBfZhPBgaVC8u0=; b=fI/B3AEgHlUC5v5Fr7t7kixiyfyR4uB3775QeyuKKOuvN2mzihL/9x5vduY1Uyal24 14D9zCzhMafvuiQQ1LQFKxHbmEZHF1D5dXuhtxy2j/FXTSTW+4I+vX9B2DmgV8UmmYPY Zh7WAF9wieDdY5pfjHpzgGpsPpuxaZsgFkGKlGjL2Iw2cZu8LRlT1zJahdC+huj9+ydI 7a/z2XSl4Lk/oSQ51zotQQS2j5c4VkA3tDsORsv8Df3rF7O4bozv9h3masud/oAw/aV3 lj2eb30BnuoBmF+sWqaiYry0iRO0qfZb2kjY3oP49/nXXo+7ZQVXYA9LGl09U71baj0K lMrA== X-Forwarded-Encrypted: i=1; AFNElJ8259wLnvgEYfgRkwGXWWICLWFyhMHDvPwEtcI/0s8IL76oEGcXWmHYCCWeT6dSp4XrnhFhqbDtlQGnZw==@lists.linux.dev X-Gm-Message-State: AOJu0Yzw8XuRw9wm3OWuLF3gQWU/VKmrROst3pIluY7DxqvT5r+aFVEn /LvIhFKaIlO4Oly7yQ5cpUOj7w6UvEelmxmasyOKHtkaVv19Z9XKNRix X-Gm-Gg: Acq92OHU7rS0UX5AUXhtv7wfDQ7uWTI29wuWaHoHahaXsp+HEwkthj13l7YfQqI9kMk Tl+JiZJcjOt2GYbhvIAdBkdZhMc6xuySwVEdQWNQazXtlLV/9HuYIt8Q2l86nqEsPb9JCCiVqW/ O4/bNinnxk4uL6WG8y3fd/aDUf3NUWVO7XpX0LQPbULCZ87Uw4+teN7zSsVcxc0toBF4nRr7SgJ /6FmmmrjEXgszjYDxc3uAihVDTKLcY8IIExgRV5/gjDNGkEmVhxvO3Bm4qxAVGT17+4aPsc7lN+ e0QsOyynI0u6aR3GjGVwN/nQntKvr5F+HREYxtY4Fd84F9/VDGsKaFjIEUtF5ULBtpYmdu7dTYk K9svHKebseA6w4wXEIrEMTAYc2fPnG5mKwgwStmLtcqTL/q7O7XFk5hjHfPLcuz66WBE5VOjKke UTw7MxscIK7UITfaUqV59AfZoidFnMMS/+OKXInF883H1g9D5vlIA3keiiG8eOB58OmMc= X-Received: by 2002:a05:600c:b8d:b0:489:1fa5:997f with SMTP id 5b1f17b1804b1-48e70691673mr52380085e9.9.1778353228681; Sat, 09 May 2026 12:00:28 -0700 (PDT) Received: from jernej-laptop (46-150-62-216.dynamic.telemach.net. [46.150.62.216]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-454913049ecsm13254407f8f.19.2026.05.09.12.00.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 09 May 2026 12:00:28 -0700 (PDT) From: Jernej Skrabec X-Google-Original-From: Jernej Skrabec To: wens@csie.org, samuel@sholland.org Cc: mripard@kernel.org, maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, mturquette@baylibre.com, sboyd@kernel.org, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, jernej.skrabec@gmail.com Subject: [PATCH v2 6/8] drm/sun4i: Add planes driver Date: Sat, 9 May 2026 21:00:13 +0200 Message-ID: <20260509190015.79086-7-jernej.skrabec@siol.net> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260509190015.79086-1-jernej.skrabec@siol.net> References: <20260509190015.79086-1-jernej.skrabec@siol.net> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MORS-Enabled: yes X-MORS-DOMAIN: patchwork.local X-MORS-HOSTING: hosting172546 X-MORS-USER: hosting172546 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= From: Jernej Skrabec This driver serves just as planes sharing manager, needed for Display Engine 3.3 and newer. Signed-off-by: Jernej Skrabec --- Changes from v1: - removed CONFIG_DRM_SUN50I_PLANES Kconfig entirely - make sun50i_planes_of_table[] static - folded sun50i_planes_node_is_planes() into sun50i_planes_setup() - sun50i_planes_setup() error returns now ERR_PTR(-EINVAL) instead of NULL at first three checks - quirks and of_device_id table moved on top to avoid forward declaration drivers/gpu/drm/sun4i/Makefile | 3 +- drivers/gpu/drm/sun4i/sun50i_planes.c | 201 ++++++++++++++++++++++++++ drivers/gpu/drm/sun4i/sun50i_planes.h | 41 ++++++ 3 files changed, 244 insertions(+), 1 deletion(-) create mode 100644 drivers/gpu/drm/sun4i/sun50i_planes.c create mode 100644 drivers/gpu/drm/sun4i/sun50i_planes.h diff --git a/drivers/gpu/drm/sun4i/Makefile b/drivers/gpu/drm/sun4i/Makefile index bad7497a0d11..501e3d867918 100644 --- a/drivers/gpu/drm/sun4i/Makefile +++ b/drivers/gpu/drm/sun4i/Makefile @@ -16,7 +16,8 @@ sun8i-drm-hdmi-y += sun8i_hdmi_phy_clk.o sun8i-mixer-y += sun8i_mixer.o sun8i_ui_layer.o \ sun8i_vi_layer.o sun8i_ui_scaler.o \ - sun8i_vi_scaler.o sun8i_csc.o + sun8i_vi_scaler.o sun8i_csc.o \ + sun50i_planes.o sun4i-tcon-y += sun4i_crtc.o sun4i-tcon-y += sun4i_tcon_dclk.o diff --git a/drivers/gpu/drm/sun4i/sun50i_planes.c b/drivers/gpu/drm/sun4i/sun50i_planes.c new file mode 100644 index 000000000000..6469de1baf03 --- /dev/null +++ b/drivers/gpu/drm/sun4i/sun50i_planes.c @@ -0,0 +1,201 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* Copyright (c) 2025 Jernej Skrabec */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "sun50i_planes.h" +#include "sun8i_ui_layer.h" +#include "sun8i_vi_layer.h" + +static const struct sun50i_planes_quirks sun50i_h616_planes_quirks = { + .def_map = { + { + .map = {0, 6, 7}, + .num_ch = 3, + }, + { + .map = {1, 2, 8}, + .num_ch = 3, + }, + }, + .cfg = { + .de_type = SUN8I_MIXER_DE33, + /* + * TODO: All planes support scaling, but driver needs + * improvements to properly support it. + */ + .scaler_mask = 0, + .scanline_yuv = 4096, + }, +}; + +static const struct of_device_id sun50i_planes_of_table[] = { + { + .compatible = "allwinner,sun50i-h616-de33-planes", + .data = &sun50i_h616_planes_quirks + }, + { } +}; +MODULE_DEVICE_TABLE(of, sun50i_planes_of_table); + +struct drm_plane ** +sun50i_planes_setup(struct device *dev, struct drm_device *drm, + unsigned int mixer) +{ + struct sun50i_planes *planes = dev_get_drvdata(dev); + const struct sun50i_planes_quirks *quirks; + struct drm_plane **drm_planes; + const struct default_map *map; + unsigned int i; + + if (!of_match_node(sun50i_planes_of_table, dev->of_node)) { + dev_err(dev, "Device is not planes driver!\n"); + return ERR_PTR(-EINVAL); + } + + if (!planes) { + dev_err(dev, "Planes driver is not loaded yet!\n"); + return ERR_PTR(-EINVAL); + } + + if (mixer > 1) { + dev_err(dev, "Mixer index is too high!\n"); + return ERR_PTR(-EINVAL); + } + + quirks = planes->quirks; + map = &quirks->def_map[mixer]; + + drm_planes = devm_kcalloc(drm->dev, map->num_ch + 1, + sizeof(*drm_planes), GFP_KERNEL); + if (!drm_planes) + return ERR_PTR(-ENOMEM); + + for (i = 0; i < map->num_ch; i++) { + unsigned int phy_ch = map->map[i]; + struct sun8i_layer *layer; + enum drm_plane_type type; + + if ((i == 0 && map->num_ch == 1) || i == 1) + type = DRM_PLANE_TYPE_PRIMARY; + else + type = DRM_PLANE_TYPE_OVERLAY; + + if (phy_ch < UI_PLANE_OFFSET) + layer = sun8i_vi_layer_init_one(drm, type, planes->regs, + i, phy_ch, map->num_ch, + &quirks->cfg); + else + layer = sun8i_ui_layer_init_one(drm, type, planes->regs, + i, phy_ch, map->num_ch, + &quirks->cfg); + + if (IS_ERR(layer)) { + dev_err(drm->dev, + "Couldn't initialize DRM plane\n"); + return ERR_CAST(layer); + } + + drm_planes[i] = &layer->plane; + } + + return drm_planes; +} +EXPORT_SYMBOL(sun50i_planes_setup); + +static void sun50i_planes_init_mapping(struct sun50i_planes *planes) +{ + const struct sun50i_planes_quirks *quirks = planes->quirks; + unsigned int i, j; + u32 mapping; + + mapping = 0; + for (j = 0; j < MAX_DISP; j++) + for (i = 0; i < quirks->def_map[j].num_ch; i++) { + unsigned int ch = quirks->def_map[j].map[i]; + + if (ch < UI_PLANE_OFFSET) + mapping |= j << (ch * 2); + else + mapping |= j << ((ch - UI_PLANE_OFFSET) * 2 + 16); + } + regmap_write(planes->mapping, SUNXI_DE33_DE_CHN2CORE_MUX_REG, mapping); + + for (j = 0; j < MAX_DISP; j++) { + mapping = 0; + for (i = 0; i < quirks->def_map[j].num_ch; i++) { + unsigned int ch = quirks->def_map[j].map[i]; + + if (ch >= UI_PLANE_OFFSET) + ch += 2; + + mapping |= ch << (i * 4); + } + regmap_write(planes->mapping, SUNXI_DE33_DE_PORT02CHN_MUX_REG + j * 4, mapping); + } +} + +static const struct regmap_config sun50i_planes_regmap_config = { + .name = "planes", + .reg_bits = 32, + .val_bits = 32, + .reg_stride = 4, + .max_register = 0x17fffc, +}; + +static int sun50i_planes_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct sun50i_planes *planes; + void __iomem *regs; + + planes = devm_kzalloc(dev, sizeof(*planes), GFP_KERNEL); + if (!planes) + return -ENOMEM; + + planes->quirks = of_device_get_match_data(&pdev->dev); + if (!planes->quirks) + return dev_err_probe(dev, -EINVAL, "Unable to get quirks\n"); + + planes->mapping = syscon_regmap_lookup_by_phandle(dev->of_node, + "allwinner,plane-mapping"); + if (IS_ERR(planes->mapping)) + return dev_err_probe(dev, PTR_ERR(planes->mapping), + "Unable to get mapping\n"); + + regs = devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(regs)) + return PTR_ERR(regs); + + planes->regs = devm_regmap_init_mmio(dev, regs, &sun50i_planes_regmap_config); + if (IS_ERR(planes->regs)) + return PTR_ERR(planes->regs); + + dev_set_drvdata(dev, planes); + + sun50i_planes_init_mapping(planes); + + return 0; +} + +static struct platform_driver sun50i_planes_platform_driver = { + .probe = sun50i_planes_probe, + .driver = { + .name = "sun50i-planes", + .of_match_table = sun50i_planes_of_table, + }, +}; +module_platform_driver(sun50i_planes_platform_driver); + +MODULE_AUTHOR("Jernej Skrabec "); +MODULE_DESCRIPTION("Allwinner DE33 planes driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/sun4i/sun50i_planes.h b/drivers/gpu/drm/sun4i/sun50i_planes.h new file mode 100644 index 000000000000..e5b54ed16178 --- /dev/null +++ b/drivers/gpu/drm/sun4i/sun50i_planes.h @@ -0,0 +1,41 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* Copyright (c) 2025 Jernej Skrabec */ + +#ifndef _SUN50I_PLANES_H_ +#define _SUN50I_PLANES_H_ + +#include "sun8i_mixer.h" + +/* mapping registers, located in clock register space */ +#define SUNXI_DE33_DE_CHN2CORE_MUX_REG 0x24 +#define SUNXI_DE33_DE_PORT02CHN_MUX_REG 0x28 +#define SUNXI_DE33_DE_PORT12CHN_MUX_REG 0x2c + +#define MAX_DISP 2 +#define MAX_CHANNELS 8 +#define UI_PLANE_OFFSET 6 + +struct regmap; +struct drm_device; + +struct default_map { + unsigned int map[MAX_CHANNELS]; + unsigned int num_ch; +}; + +struct sun50i_planes_quirks { + struct default_map def_map[MAX_DISP]; + struct sun8i_layer_cfg cfg; +}; + +struct sun50i_planes { + struct regmap *regs; + struct regmap *mapping; + const struct sun50i_planes_quirks *quirks; +}; + +struct drm_plane ** +sun50i_planes_setup(struct device *dev, struct drm_device *drm, + unsigned int mixer); + +#endif /* _SUN50I_PLANES_H_ */ From patchwork Sat May 9 19:00:14 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jernej_=C5=A0krabec?= X-Patchwork-Id: 2184 Return-Path: X-Original-To: noreply@patchwork.local Delivered-To: noreply@patchwork.local Received: from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10]) by mxe881.netcup.net (Postfix) with ESMTPS id 19EAA1C024E for ; Sat, 9 May 2026 21:04:18 +0200 (CEST) Authentication-Results: mxe881; dkim=pass header.d=gmail.com; spf=pass (sender IP is 172.234.253.10) smtp.mailfrom=linux-sunxi+bounces-23215-noreply=patchwork.local@lists.linux.dev smtp.helo=sea.lore.kernel.org Received-SPF: pass (mxe881: domain of lists.linux.dev designates 172.234.253.10 as permitted sender) client-ip=172.234.253.10; envelope-from=linux-sunxi+bounces-23215-noreply=patchwork.local@lists.linux.dev; helo=sea.lore.kernel.org; Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by sea.lore.kernel.org (Postfix) with ESMTP id 95A0A305541E for ; Sat, 9 May 2026 19:00:43 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C20D71A9B58; Sat, 9 May 2026 19:00:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Th7cNiuC" X-Original-To: linux-sunxi@lists.linux.dev Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (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 B7D3A3C5DBE for ; Sat, 9 May 2026 19:00:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353238; cv=none; b=p0ZvpQ7cMUQOGUFWJf826It/OR1qa5TTcVvDmHJOf4c/NbjoPGGq+lozYEhaB77XXkRUH5gTxk4xz4MfZZPu61Wrnuy06oLWnDzGvFfhV7lGcSmiFs9YMauuHYzaG+0yZnuDsS0ZoEhApAJfX3G7cV0T5KKVm8/MZNnX7bYnNjk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353238; c=relaxed/simple; bh=IOxmh5MhxMGcoJj1bYSLoRwfOsdl2l4K10+pW425y+I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rCIw/qjxWkupoC6QEwBGaguXqFvj0WAHHu2J5ek7H6ICjDpzPrbTCcjnhmtkaNRjpchVNcFeDmRjBROo3wn3GFU7FP8ICFJn38OO2cNG+r91l+AbBSIdIE8YRJKRWvyInngrOnJUZK6x7dRiZwFOqjjk9mLdBHHAE8ZGzvfkIv8= 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=Th7cNiuC; arc=none smtp.client-ip=209.85.128.46 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 Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-4893940bb5eso18195005e9.3 for ; Sat, 09 May 2026 12:00:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778353230; x=1778958030; darn=lists.linux.dev; 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; bh=VPkvMBVXyvicDPmrKpPPSuducOnxVL8vyxeJt4rQ8ag=; b=Th7cNiuCmqkxl13eJvnnng7pDELKradPIZP1599K7xAHvZNSt34IET+7L4iUAOF+ok 1IPHRaYatE8gMZVXyLDtCk/arOyOvg9J5IAZVltbbUsEuq9okpFAuUSsILUj2BYxcJrL oppe1aaUR5sXrNscnAJGghKj1mQsYvXcGcw58thSfPa+fScHgo0A/LirDSaTrYwzoNDN wMnjgp0WRpwJUSQXbXTavKlw2RJ4eJ8JElNL2bxUer67kBlzvpYEvdjRXrd4Rv8fohTy 6fVVEFMrKJS1lEPkU8CP4cEX0XEIHRWzUiy9FH3kKokAzi9NputLXUu+eBzuijMZJP5v vaLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778353230; x=1778958030; 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; bh=VPkvMBVXyvicDPmrKpPPSuducOnxVL8vyxeJt4rQ8ag=; b=dB+8dmCwBZNlOgcSYmxPORlBf0FpgqrSSA7WMg7tQQKcUyGRO2KNxRDb4SSRlQKMTE /dwBKswVQpIvQpa9VVbMTAfWv9By1pQ+36Rsn8E5xApO5pFm9LvfWPpYETeiGPptt6PK G+K9wUQbFjHDrGZ7bH18zd9sMMgaXthAGD0gCqBCVkL7luSuNIihl1ofcj1Ue9z/fGLc t51S9NPHk5lySyZ4nz4QhdCEBFGKMco/96VpX95MFy9sHQl4kpWVC1JJz/HAmK2jpc6j 5TyHzEOUL6WcaEkvqQhJlJd5HETxgVmIxTDPM+Q5U1hdLijPxrKsvoDDcwybmlb/6XGN 4bng== X-Forwarded-Encrypted: i=1; AFNElJ+JE4eHi0N841IPWbzROqFsaX5zH3W1dU/EBJcMcIE0nDJIY5qQz7ayVXbgEZoUxRmUAAQsHQ5USEc+Nw==@lists.linux.dev X-Gm-Message-State: AOJu0YxKNjVnvseIqVsneeGFtU9kSNlxRtTGMSGol7HhfbkyP93kk2zs VIv/sxzCi/+08WliF490yoAY4N4POy/ecZ6JDXhG+JkVCerc1lD8YZ5i X-Gm-Gg: Acq92OGN7rmOJu0kJ4AGefqlbBtV55dLE3krDzVOkjYKS2F07FKVa8A3DxVIW3pouGG UqxUwjsHbjwA/b/WjZS/fqZ1aO0h3pthx34oWMo0bVESL7NO23aPgZ8Mf6CeTIZynSWLe0avZys 3fsByT6g0pmWDs79HYL9d42yGrzqqMrqK/WQJs9fETPn6fys7jhFQVu/Y30BQtKhpj/zUVaQ3nD VDsd+AWNLYdU4S1KGrxtk6UNzBzDHr6PhLR+Wshcp5Se3Dl3UACHg0CblFV58OygLTUaOhFLDKB 9ZBRCppnvy7z9rvAyIM2+/Vnc7NjxDjTB3raHjYQ0coFKU4TycpvBxtu3Nu0NtqEZWC5w7ccnSG TmFLeYJMlWVr8yDdfpboRzGR6FqAIXI9dGhFxOF8W4AvS75pMqvbl5v3bSWzxzrVvmMdkCY525B n2DvRpswdxiXOUuUwViuVCCjP6Yqk2oQTUFmf2QBT2QaJXqQUuTWl9KIvMMx/wDxQ98tQ= X-Received: by 2002:a05:600d:8:b0:48a:58ae:993b with SMTP id 5b1f17b1804b1-48e676a4e03mr117153245e9.16.1778353230046; Sat, 09 May 2026 12:00:30 -0700 (PDT) Received: from jernej-laptop (46-150-62-216.dynamic.telemach.net. [46.150.62.216]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-454913049ecsm13254407f8f.19.2026.05.09.12.00.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 09 May 2026 12:00:29 -0700 (PDT) From: Jernej Skrabec X-Google-Original-From: Jernej Skrabec To: wens@csie.org, samuel@sholland.org Cc: mripard@kernel.org, maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, mturquette@baylibre.com, sboyd@kernel.org, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, jernej.skrabec@gmail.com Subject: [PATCH v2 7/8] dt-bindings: display: allwinner: Split H616 DE33 layer reg space Date: Sat, 9 May 2026 21:00:14 +0200 Message-ID: <20260509190015.79086-8-jernej.skrabec@siol.net> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260509190015.79086-1-jernej.skrabec@siol.net> References: <20260509190015.79086-1-jernej.skrabec@siol.net> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Rspamd-Server: rspamd-worker-8404 X-Spamd-Result: default: False [-0.66 / 15.00]; BAYES_HAM(-5.50)[100.00%]; RBL_SENDERSCORE(2.00)[172.234.253.10:from]; SUSPICIOUS_RECIPS(1.50)[]; DMARC_POLICY_SOFTFAIL(1.00)[gmail.com : SPF not aligned (relaxed), No valid DKIM,none]; R_MISSING_CHARSET(0.50)[]; MAILLIST(-0.15)[generic]; MIME_GOOD(-0.10)[text/plain]; BAD_REP_POLICIES(0.10)[]; HAS_LIST_UNSUB(-0.01)[]; RCPT_COUNT_TWELVE(0.00)[19]; R_SPF_ALLOW(0.00)[+ip4:172.234.253.10]; DBL_BLOCKED_OPENRESOLVER(0.00)[sea.lore.kernel.org:rdns,sea.lore.kernel.org:helo]; FREEMAIL_FROM(0.00)[gmail.com]; FUZZY_BLOCKED(0.00)[rspamd.com]; FORGED_SENDER_MAILLIST(0.00)[]; FREEMAIL_CC(0.00)[kernel.org,linux.intel.com,suse.de,gmail.com,ffwll.ch,baylibre.com,lists.freedesktop.org,vger.kernel.org,lists.infradead.org,lists.linux.dev]; TAGGED_RCPT(0.00)[dt]; PRECEDENCE_BULK(0.00)[]; FROM_HAS_DN(0.00)[]; RCVD_TLS_LAST(0.00)[]; MIME_TRACE(0.00)[0:+]; FORGED_RECIPIENTS_MAILLIST(0.00)[]; TO_DN_NONE(0.00)[]; ASN(0.00)[asn:63949, ipnet:172.234.224.0/19, country:SG]; ARC_ALLOW(0.00)[subspace.kernel.org:s=arc-20240116:i=1]; TAGGED_FROM(0.00)[bounces-23215-noreply=patchwork.local]; RCVD_COUNT_FIVE(0.00)[6]; FROM_NEQ_ENVFROM(0.00)[jernejskrabec@gmail.com,linux-sunxi@lists.linux.dev]; RCVD_VIA_SMTP_AUTH(0.00)[] X-Rspamd-Queue-Id: 19EAA1C024E X-MORS-Enabled: yes X-MORS-DOMAIN: patchwork.local X-MORS-HOSTING: hosting172546 X-MORS-USER: hosting172546 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= From: Jernej Skrabec As it turns out, current H616 DE33 binding was written based on incomplete understanding of DE33 design. Namely, planes are shared resource and not tied to specific mixer, which was the case for previous generations of Display Engine (DE3 and earlier). This means that current DE33 binding doesn't properly reflect HW and using it would mean that second mixer (used for second display output) can't be supported. Remove layer register space, which will be represented with additional node, and replace it with phandle, which will point to that new, shared node. That way, all mixers can share same layers. There is no user of this binding yet, so changes can be made safely, without breaking any backward compatibility. Signed-off-by: Jernej Skrabec --- Changes in v1: - update commit subject - reword commit message .../display/allwinner,sun8i-a83t-de2-mixer.yaml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/Documentation/devicetree/bindings/display/allwinner,sun8i-a83t-de2-mixer.yaml b/Documentation/devicetree/bindings/display/allwinner,sun8i-a83t-de2-mixer.yaml index cbd18fd83e52..064e4ca7e419 100644 --- a/Documentation/devicetree/bindings/display/allwinner,sun8i-a83t-de2-mixer.yaml +++ b/Documentation/devicetree/bindings/display/allwinner,sun8i-a83t-de2-mixer.yaml @@ -46,6 +46,10 @@ properties: resets: maxItems: 1 + allwinner,planes: + $ref: /schemas/types.yaml#/definitions/phandle + description: Phandle of Display Engine 3.3 planes node + ports: $ref: /schemas/graph.yaml#/properties/ports @@ -74,22 +78,22 @@ allOf: properties: reg: description: | - Registers for controlling individual layers of the display - engine (layers), global control (top), and display blending - control (display). Names are from Allwinner BSP kernel. - maxItems: 3 + Registers for display blending control (display) and global + control (top). Names are from Allwinner BSP kernel. + maxItems: 2 reg-names: items: - - const: layers - - const: top - const: display + - const: top required: - reg-names + - allwinner,planes else: properties: reg: maxItems: 1 + allwinner,planes: false required: - compatible From patchwork Sat May 9 19:00:15 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jernej_=C5=A0krabec?= X-Patchwork-Id: 2183 Return-Path: X-Original-To: noreply@patchwork.local Delivered-To: noreply@patchwork.local Received: from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10]) by mxe881.netcup.net (Postfix) with ESMTPS id 2D6A91C024E for ; Sat, 9 May 2026 21:03:45 +0200 (CEST) Authentication-Results: mxe881; dkim=pass header.d=gmail.com; spf=pass (sender IP is 172.234.253.10) smtp.mailfrom=linux-sunxi+bounces-23214-noreply=patchwork.local@lists.linux.dev smtp.helo=sea.lore.kernel.org Received-SPF: pass (mxe881: domain of lists.linux.dev designates 172.234.253.10 as permitted sender) client-ip=172.234.253.10; envelope-from=linux-sunxi+bounces-23214-noreply=patchwork.local@lists.linux.dev; helo=sea.lore.kernel.org; Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by sea.lore.kernel.org (Postfix) with ESMTP id 1B36A301546C for ; Sat, 9 May 2026 19:00:41 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 76DD83CBE8F; Sat, 9 May 2026 19:00:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PE5HWY2N" X-Original-To: linux-sunxi@lists.linux.dev Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (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 3B5733CF662 for ; Sat, 9 May 2026 19:00:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353235; cv=none; b=qKEU/EXNI7YEx3or/uCkx8otnkEqHMBLm7UL1v7yoXCmsBsBlxa5P/1bw1TM0fTx/xsrFGeRvI1khdKLur/evLKiewVe2HBz1rGCEE886Q4d7eMK/8qV8Wwe+f5d/dql/9+r1bCK/kwjhEaR3yJCM/1zsL3kxpYkIFl3aqbmNms= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353235; c=relaxed/simple; bh=u3VpWNk/RWixyJZ3CJNCNMCUuCxshozWAkhJ1uzm9aI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rx0rnDKWhVqiU2fDwm8WDHDm0ycGrwpMIgV6owpj4UAkpS/+F6Rrr+vPHtDh5I11KuNUJVZwuxZGa3N8SYBy3somrJs2vs6zVcf5XJV5KrREnDbil8FH4TQmVS81wSf2QvMuyo9Eu2FxF1Lngc1ArHS3kU9mAEGrbYL0FSLzYj4= 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=PE5HWY2N; arc=none smtp.client-ip=209.85.128.52 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 Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-488b0046078so24539645e9.1 for ; Sat, 09 May 2026 12:00:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778353232; x=1778958032; darn=lists.linux.dev; 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; bh=dRiBGQ2QPdeyt3UQcFiASOhwWyz97F1JtdNHI4C4Guw=; b=PE5HWY2NBQqu8P0X65Rta0uWlB0NpvdARhvrFy8PaE2p+ckuv9BEW+AUbrRqQLcFVR n5NuvxrxyfZ25ZFrKr/wTqo8pQN+yYQaQuk7ifKcvUd+0bhZjngS80Rb9kF1nz3MlW7X 0rAuv+q/pRBcWf1yyPiXwGnM1Tbn+h3soWr9ZYzG/LTNaZrW8fa0jjaIhYrAaYrfQMjN 9bpJEbp07bMkBrTItadxL0tdu+TyMeqwTRUQsqsQZcwYoFLrVGJfnK9y5hgt3a+MmNsF zMZ6jYZeDPGb4jBCxmJkpgiU8+Tf74r3Qhov1EZKJI46DJ/s2eAsPg1oDR4y5r9R+l+R TdZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778353232; x=1778958032; 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; bh=dRiBGQ2QPdeyt3UQcFiASOhwWyz97F1JtdNHI4C4Guw=; b=smKZzKovCW76pKBeX2ZgzYy4Sz87WDtNx261DLvVZgw0LO06pCmflXK2Bt3L4l2NAR wI0pbXDKnllS7SXgQSwdxQ9LRLA0Uw3zWd/FGtTlPuBg/6zu1Q+FnJnqOeZedA8JxLdG Txz0oB8Io9TcfG4CZZl4a0pqav0fE/EN4CYPUzz0rseXr9SisRIMwnF/5XiovKzzO9sM Y6h7NL5KBaNqT4+RwnKVZALhHAk8/rYcWpMyS61tWt6rlHZ+vR4QS09KgosSuqXcrTL7 RtOuNQazVxfx5MkRUkBigVMSR4s30q8v2JzjLR243bwaBzBiRFciyShneS6dT8vExCtU egYw== X-Forwarded-Encrypted: i=1; AFNElJ9yc3L/wm4D7UhvQG8sFStrkGqIXEEDEmgXynRXDTj30xet0r71EOXfSY5DHFVAEA6jURwcS4TITailXw==@lists.linux.dev X-Gm-Message-State: AOJu0YwMg9v13G746SxSle1d/zO0wOfNIc9oUEDxZEaDkg7ZZBsg55iQ DndiWcUkEG/uyihFOFYo16E8xKHCZ7V89ivlMZ7+f/93qhbK8MCVnIeM X-Gm-Gg: Acq92OFjfmIt8vaI7cc1v5x/fQ5rwkdiLtLw70TOsLjNglD8Z2V9brXET/FNoKsQ9JU t6z78zO03qApYDU4p552s8jSDMQO+H9JH2n7/umNhMLPWLoKuwCm9OLrWsnmCFsFF+bRx54bP14 DCe6DdMdlfSp0DnB8tCF8XSk+lf0vrJZ4nh/J+yjqvwZbUF8HLZIOUUu4c/LRLJ5e/kF0+vcWYi W3Lhi5uvfDoUfm/QiMWgdvrVPVlCaK0TdrWtZy7ymKKxApJeBpBTpq9/2YslD31M99i6F4mjXYI Qu4GV86DPaG4LhEWpsimz7551RLY1WkMtGN3zCKNVGPiu+1llzkA2yRgrBxv7MP8ZLRyFCTfFQQ 2/JWtcv0WtNy2n74+veuAn8/FevEXX7fFf704voJNKIFv5xeaOBsyv8nrGDURouHE/VYqn0/xxl cn6Gt5g1BpznCNa6A4of4dkFg8T1JJCv4h8Wi28ogwXEv/tUeBHe8RQShPKYxhvW8K8cU= X-Received: by 2002:a5d:5d85:0:b0:454:86d:b4d2 with SMTP id ffacd0b85a97d-45689baa9b3mr4635330f8f.8.1778353231444; Sat, 09 May 2026 12:00:31 -0700 (PDT) Received: from jernej-laptop (46-150-62-216.dynamic.telemach.net. [46.150.62.216]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-454913049ecsm13254407f8f.19.2026.05.09.12.00.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 09 May 2026 12:00:31 -0700 (PDT) From: Jernej Skrabec X-Google-Original-From: Jernej Skrabec To: wens@csie.org, samuel@sholland.org Cc: mripard@kernel.org, maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, mturquette@baylibre.com, sboyd@kernel.org, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, jernej.skrabec@gmail.com Subject: [PATCH v2 8/8] drm/sun4i: switch DE33 to new bindings Date: Sat, 9 May 2026 21:00:15 +0200 Message-ID: <20260509190015.79086-9-jernej.skrabec@siol.net> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260509190015.79086-1-jernej.skrabec@siol.net> References: <20260509190015.79086-1-jernej.skrabec@siol.net> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MORS-Enabled: yes X-MORS-DOMAIN: patchwork.local X-MORS-HOSTING: hosting172546 X-MORS-USER: hosting172546 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= From: Jernej Skrabec Now that everything is in place, switch DE33 to new bindings. Signed-off-by: Jernej Skrabec --- Changes from v1: - remove CONFIG_DRM_SUN50I_PLANES guard - fix error path drivers/gpu/drm/sun4i/sun8i_mixer.c | 131 +++++++++++++++------------- drivers/gpu/drm/sun4i/sun8i_mixer.h | 10 +-- 2 files changed, 72 insertions(+), 69 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c index 4071ab38b4ae..957db0938455 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -25,6 +26,7 @@ #include #include "sun4i_drv.h" +#include "sun50i_planes.h" #include "sun8i_mixer.h" #include "sun8i_ui_layer.h" #include "sun8i_vi_layer.h" @@ -257,7 +259,6 @@ static void sun8i_mixer_commit(struct sunxi_engine *engine, { struct sun8i_mixer *mixer = engine_to_sun8i_mixer(engine); u32 bld_base = sun8i_blender_base(mixer); - struct regmap *bld_regs = sun8i_blender_regmap(mixer); struct drm_plane_state *plane_state; struct drm_plane *plane; u32 route = 0, pipe_en = 0; @@ -294,16 +295,16 @@ static void sun8i_mixer_commit(struct sunxi_engine *engine, route |= layer->index << SUN8I_MIXER_BLEND_ROUTE_PIPE_SHIFT(zpos); pipe_en |= SUN8I_MIXER_BLEND_PIPE_CTL_EN(zpos); - regmap_write(bld_regs, + regmap_write(engine->regs, SUN8I_MIXER_BLEND_ATTR_COORD(bld_base, zpos), SUN8I_MIXER_COORD(x, y)); - regmap_write(bld_regs, + regmap_write(engine->regs, SUN8I_MIXER_BLEND_ATTR_INSIZE(bld_base, zpos), SUN8I_MIXER_SIZE(w, h)); } - regmap_write(bld_regs, SUN8I_MIXER_BLEND_ROUTE(bld_base), route); - regmap_write(bld_regs, SUN8I_MIXER_BLEND_PIPE_CTL(bld_base), + regmap_write(engine->regs, SUN8I_MIXER_BLEND_ROUTE(bld_base), route); + regmap_write(engine->regs, SUN8I_MIXER_BLEND_PIPE_CTL(bld_base), pipe_en | SUN8I_MIXER_BLEND_PIPE_CTL_FC_EN(0)); if (mixer->cfg->de_type != SUN8I_MIXER_DE33) @@ -318,7 +319,6 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, struct sun8i_mixer *mixer = engine_to_sun8i_mixer(engine); int plane_cnt = mixer->cfg->ui_num + mixer->cfg->vi_num; enum drm_plane_type type; - unsigned int phy_index; int i; planes = devm_kcalloc(drm->dev, plane_cnt + 1, sizeof(*planes), GFP_KERNEL); @@ -333,12 +333,8 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, else type = DRM_PLANE_TYPE_OVERLAY; - phy_index = i; - if (mixer->cfg->de_type == SUN8I_MIXER_DE33) - phy_index = mixer->cfg->map[i]; - layer = sun8i_vi_layer_init_one(drm, type, mixer->engine.regs, - i, phy_index, plane_cnt, + i, i, plane_cnt, &mixer->cfg->lay_cfg); if (IS_ERR(layer)) { dev_err(drm->dev, @@ -358,12 +354,8 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, else type = DRM_PLANE_TYPE_OVERLAY; - phy_index = index; - if (mixer->cfg->de_type == SUN8I_MIXER_DE33) - phy_index = mixer->cfg->map[index]; - layer = sun8i_ui_layer_init_one(drm, type, mixer->engine.regs, - index, phy_index, plane_cnt, + index, index, plane_cnt, &mixer->cfg->lay_cfg); if (IS_ERR(layer)) { dev_err(drm->dev, "Couldn't initialize %s plane\n", @@ -377,16 +369,22 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, return planes; } +static struct drm_plane **sun50i_layers_init(struct drm_device *drm, + struct sunxi_engine *engine) +{ + struct sun8i_mixer *mixer = engine_to_sun8i_mixer(engine); + + return sun50i_planes_setup(mixer->planes_dev, drm, engine->id); +} + static void sun8i_mixer_mode_set(struct sunxi_engine *engine, const struct drm_display_mode *mode) { struct sun8i_mixer *mixer = engine_to_sun8i_mixer(engine); - struct regmap *bld_regs; u32 bld_base, size, val; bool interlaced; bld_base = sun8i_blender_base(mixer); - bld_regs = sun8i_blender_regmap(mixer); interlaced = !!(mode->flags & DRM_MODE_FLAG_INTERLACE); size = SUN8I_MIXER_SIZE(mode->hdisplay, mode->vdisplay); @@ -398,14 +396,14 @@ static void sun8i_mixer_mode_set(struct sunxi_engine *engine, else regmap_write(mixer->engine.regs, SUN8I_MIXER_GLOBAL_SIZE, size); - regmap_write(bld_regs, SUN8I_MIXER_BLEND_OUTSIZE(bld_base), size); + regmap_write(engine->regs, SUN8I_MIXER_BLEND_OUTSIZE(bld_base), size); if (interlaced) val = SUN8I_MIXER_BLEND_OUTCTL_INTERLACED; else val = 0; - regmap_update_bits(bld_regs, SUN8I_MIXER_BLEND_OUTCTL(bld_base), + regmap_update_bits(engine->regs, SUN8I_MIXER_BLEND_OUTCTL(bld_base), SUN8I_MIXER_BLEND_OUTCTL_INTERLACED, val); DRM_DEBUG_DRIVER("Switching display mixer interlaced mode %s\n", @@ -418,8 +416,14 @@ static const struct sunxi_engine_ops sun8i_engine_ops = { .mode_set = sun8i_mixer_mode_set, }; +static const struct sunxi_engine_ops sun50i_engine_ops = { + .commit = sun8i_mixer_commit, + .layers_init = sun50i_layers_init, + .mode_set = sun8i_mixer_mode_set, +}; + static const struct regmap_config sun8i_mixer_regmap_config = { - .name = "layers", + .name = "display", .reg_bits = 32, .val_bits = 32, .reg_stride = 4, @@ -434,14 +438,6 @@ static const struct regmap_config sun8i_top_regmap_config = { .max_register = 0x3c, }; -static const struct regmap_config sun8i_disp_regmap_config = { - .name = "display", - .reg_bits = 32, - .val_bits = 32, - .reg_stride = 4, - .max_register = 0x20000, -}; - static int sun8i_mixer_of_get_id(struct device_node *node) { struct device_node *ep, *remote; @@ -464,17 +460,14 @@ static int sun8i_mixer_of_get_id(struct device_node *node) static void sun8i_mixer_init(struct sun8i_mixer *mixer) { - struct regmap *top_regs, *disp_regs; unsigned int base = sun8i_blender_base(mixer); + struct regmap *top_regs; int plane_cnt, i; - if (mixer->cfg->de_type == SUN8I_MIXER_DE33) { + if (mixer->cfg->de_type == SUN8I_MIXER_DE33) top_regs = mixer->top_regs; - disp_regs = mixer->disp_regs; - } else { + else top_regs = mixer->engine.regs; - disp_regs = mixer->engine.regs; - } /* Enable the mixer */ regmap_write(top_regs, SUN8I_MIXER_GLOBAL_CTL, @@ -484,25 +477,25 @@ static void sun8i_mixer_init(struct sun8i_mixer *mixer) regmap_write(top_regs, SUN50I_MIXER_GLOBAL_CLK, 1); /* Set background color to black */ - regmap_write(disp_regs, SUN8I_MIXER_BLEND_BKCOLOR(base), + regmap_write(mixer->engine.regs, SUN8I_MIXER_BLEND_BKCOLOR(base), SUN8I_MIXER_BLEND_COLOR_BLACK); /* * Set fill color of bottom plane to black. Generally not needed * except when VI plane is at bottom (zpos = 0) and enabled. */ - regmap_write(disp_regs, SUN8I_MIXER_BLEND_PIPE_CTL(base), + regmap_write(mixer->engine.regs, SUN8I_MIXER_BLEND_PIPE_CTL(base), SUN8I_MIXER_BLEND_PIPE_CTL_FC_EN(0)); - regmap_write(disp_regs, SUN8I_MIXER_BLEND_ATTR_FCOLOR(base, 0), + regmap_write(mixer->engine.regs, SUN8I_MIXER_BLEND_ATTR_FCOLOR(base, 0), SUN8I_MIXER_BLEND_COLOR_BLACK); plane_cnt = mixer->cfg->vi_num + mixer->cfg->ui_num; for (i = 0; i < plane_cnt; i++) - regmap_write(disp_regs, + regmap_write(mixer->engine.regs, SUN8I_MIXER_BLEND_MODE(base, i), SUN8I_MIXER_BLEND_MODE_DEF); - regmap_update_bits(disp_regs, SUN8I_MIXER_BLEND_PIPE_CTL(base), + regmap_update_bits(mixer->engine.regs, SUN8I_MIXER_BLEND_PIPE_CTL(base), SUN8I_MIXER_BLEND_PIPE_CTL_EN_MSK, 0); } @@ -533,7 +526,6 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, if (!mixer) return -ENOMEM; dev_set_drvdata(dev, mixer); - mixer->engine.ops = &sun8i_engine_ops; mixer->engine.node = dev->of_node; /* @@ -566,6 +558,11 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, if (!mixer->cfg) return -EINVAL; + if (mixer->cfg->de_type == SUN8I_MIXER_DE33) + mixer->engine.ops = &sun50i_engine_ops; + else + mixer->engine.ops = &sun8i_engine_ops; + regs = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(regs)) return PTR_ERR(regs); @@ -588,17 +585,6 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, dev_err(dev, "Couldn't create the top regmap\n"); return PTR_ERR(mixer->top_regs); } - - regs = devm_platform_ioremap_resource_byname(pdev, "display"); - if (IS_ERR(regs)) - return PTR_ERR(regs); - - mixer->disp_regs = devm_regmap_init_mmio(dev, regs, - &sun8i_disp_regmap_config); - if (IS_ERR(mixer->disp_regs)) { - dev_err(dev, "Couldn't create the disp regmap\n"); - return PTR_ERR(mixer->disp_regs); - } } mixer->reset = devm_reset_control_get(dev, NULL); @@ -638,6 +624,34 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, clk_prepare_enable(mixer->mod_clk); + if (mixer->cfg->de_type == SUN8I_MIXER_DE33) { + struct platform_device *pdev; + struct device_node *np; + void *data; + + np = of_parse_phandle(dev->of_node, "allwinner,planes", 0); + if (!np) { + ret = -ENODEV; + goto err_disable_mod_clk; + } + + pdev = of_find_device_by_node(np); + of_node_put(np); + if (!pdev) { + ret = -EPROBE_DEFER; + goto err_disable_mod_clk; + } + + data = platform_get_drvdata(pdev); + if (!data) { + put_device(&pdev->dev); + ret = -EPROBE_DEFER; + goto err_disable_mod_clk; + } + + mixer->planes_dev = &pdev->dev; + } + list_add_tail(&mixer->engine.list, &drv->engine_list); /* Reset registers and disable unused sub-engines */ @@ -672,6 +686,8 @@ static int sun8i_mixer_bind(struct device *dev, struct device *master, return 0; +err_disable_mod_clk: + clk_disable_unprepare(mixer->mod_clk); err_disable_bus_clk: clk_disable_unprepare(mixer->bus_clk); err_assert_reset: @@ -686,6 +702,9 @@ static void sun8i_mixer_unbind(struct device *dev, struct device *master, list_del(&mixer->engine.list); + if (mixer->cfg->de_type == SUN8I_MIXER_DE33) + put_device(mixer->planes_dev); + clk_disable_unprepare(mixer->mod_clk); clk_disable_unprepare(mixer->bus_clk); reset_control_assert(mixer->reset); @@ -867,16 +886,8 @@ static const struct sun8i_mixer_cfg sun50i_h6_mixer0_cfg = { }; static const struct sun8i_mixer_cfg sun50i_h616_mixer0_cfg = { - .lay_cfg = { - .de_type = SUN8I_MIXER_DE33, - .scaler_mask = 0xf, - .scanline_yuv = 4096, - }, .de_type = SUN8I_MIXER_DE33, .mod_rate = 600000000, - .ui_num = 3, - .vi_num = 1, - .map = {0, 6, 7, 8}, }; static const struct of_device_id sun8i_mixer_of_table[] = { diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.h b/drivers/gpu/drm/sun4i/sun8i_mixer.h index e2f83301aae8..7abc88c898d9 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.h +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.h @@ -202,7 +202,6 @@ struct sun8i_mixer_cfg { int ui_num; unsigned int de_type; unsigned long mod_rate; - unsigned int map[6]; }; struct sun8i_mixer { @@ -216,7 +215,7 @@ struct sun8i_mixer { struct clk *mod_clk; struct regmap *top_regs; - struct regmap *disp_regs; + struct device *planes_dev; }; enum { @@ -252,13 +251,6 @@ sun8i_blender_base(struct sun8i_mixer *mixer) return mixer->cfg->de_type == SUN8I_MIXER_DE3 ? DE3_BLD_BASE : DE2_BLD_BASE; } -static inline struct regmap * -sun8i_blender_regmap(struct sun8i_mixer *mixer) -{ - return mixer->cfg->de_type == SUN8I_MIXER_DE33 ? - mixer->disp_regs : mixer->engine.regs; -} - static inline u32 sun8i_channel_base(struct sun8i_layer *layer) {