From nobody Sat Jun 13 06:05:27 2026 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 4C14B3BF684 for ; Sat, 9 May 2026 19:00:23 +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=1778353224; cv=none; b=pJGVRCikQkZ+FNcltTxdFG0nCag16qet8I4FLVE6lgHTIu50EKm17vXzpMdTWJl50N03c9bgJeBO7zBzzEp0rZukzs4NLFIXZYupUN7GRZVD7NwbmJEQq1xmFjhrS0gnHmy5jyC8MXYzh3jFLk0DaojN9fUwcCKdgPJPGeVwypQ= 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=s4/naHhz; 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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="s4/naHhz" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-48d102471a4so29910355e9.2 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=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; bh=F3EJ0517xJNtY9t4icYdcJ6JRwvMjYIpIptqEEIrShg=; b=s4/naHhz00t359VQkDNR1RWSQl8jNXCe54zfgFk3viAOAQzvB3WE+k9pp7c39Ek+Wg HNj2YDYI0CzHWFE31bJU9J8deW5i3GbWp1/eqot0vm5Vpgo5JlvgvIPTdw+1BAqC7OoH AFdckF0HreuUIy+E5VjarzQY0KKjb8ZlQAGAZwRF/jPiyOoUgU/W0SzW3Xw0CWkcdPWW WEUYrh5hzO4h5y+5HFdGWog3qLkpoQClkt5K/5ZR6GcnVVKOjnzMGL/Kx/znHZ1Ldqk2 INhx6Dlvjf35+yL9VyI6oNJwgUQoWIs31E5+xqTB7kQT6u5wYxuDBdKCJazy8iyXDU+0 xFpQ== 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=klT6gcEY2+yjnokO8CJcLiVR6JFpO7JcmqQU2McEMY8azeJsJFkTHsuFMgiWLuIVym AnaBj8BCo+5SrMHfqsTZ22y62ZrUtGVzmZu45FdqhYCtn+GadfLq5Oh7fMzs7UjIMts/ zFogh8b7zL+kj5ffOTv4EYQgE/3r8ly9/WcquY02z6m5tWGkDzUatiXAyDqWjOK18Tcg my2/jb55uGeOcCCacWcHcK4TvSUbUgkXWWjGin65AlkNfhP9p3bRZTDhUYQeICGgmwvX Jm/CyhKxJ2MNJ6G2Nu1W0Lf01pXVlupjgM1lQdOnH3bGW9QcSbq1OyVGLfqDoDYGsHOy a5dQ== X-Forwarded-Encrypted: i=1; AFNElJ/DXFRuMczSVU+kkI5w0D8diTWiagbXakvmEP7vBpct9z1+KDHJLC+dq421+kt7MtbAesBNqQJoZZzqj0M=@vger.kernel.org X-Gm-Message-State: AOJu0YzBs0u/0UDMF4R3kpx8Kz5vYHVkfFCQEl4X4R0mILo2yCVn+TL/ 6AHDEpRm9KZyOcmGintm9Zs3Xvs5w9fVBjCDUuYCrVVqQfaf73aFbWxk X-Gm-Gg: Acq92OF3cQKkdJ8QDcuHjGK8nfSed1FU4KUXjAQ7eBPtCeqb9hsjMypnipPHdL+9O6h ODeyWnW8R4hx28DCBzSS1+Jm/0dJST6lJWY7eOY/4AkGMgkYpr820UTo54JDMqzRpcDjckg+Fih re2WZhv/ybph+ChMk3RqaCa8xH8eKacV12ZG1DR3NE3DriAM2FtxJ7un9F5YJtoV6h1OhvUrHq6 +uJcAzzWUGFZcUYCxFft+kAh52KpEE0Ry5+cWwrqqs3FgpEJVftN5MIIaFjZgPMAevgvudDI3sz yeQ8MMp+SFgn1GhAjBzlOhprD1+PSXom1Ms6yGGT+S7AdeBhKemGd3O488AOUNh4yxtNPkqaiXv NrjvMHe9gVF7s9A+BFEEE4ses2neVSBkwLp7aNaE7DlWyTbbzGNNCT5PjbFFbXFrxjQtEDiXaYY DbjwaFMCsxU/HucAxlnF14cBkMAOrgzbvdaygp0zpdm2ga3Az/qjkdJnTpJkgzBmK7eW0= 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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) sup= port") 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/cc= u-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); =20 +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", 0x= 0c, 8, 4, static SUNXI_CCU_M(rot_div_a83_clk, "rot-div", "pll-de", 0x0c, 0x0c, 4, CLK_SET_RATE_PARENT); =20 +static SUNXI_CCU_GATE(bus_mixer0_h616_clk, "bus-mixer0", "bus-de", + 0x08, BIT(0), 0); + static struct ccu_common *sun8i_de2_ccu_clks[] =3D { &mixer0_clk.common, &mixer1_clk.common, @@ -74,6 +84,12 @@ static struct ccu_common *sun8i_de2_ccu_clks[] =3D { &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 }; =20 static struct clk_hw_onecell_data sun8i_a83t_de2_hw_clks =3D { @@ -147,6 +163,17 @@ static struct clk_hw_onecell_data sun50i_a64_de2_hw_cl= ks =3D { .num =3D CLK_NUMBER_WITH_ROT, }; =20 +static struct clk_hw_onecell_data sun50i_h616_de33_hw_clks =3D { + .hws =3D { + [CLK_MIXER0] =3D &mixer0_h616_clk.common.hw, + [CLK_MIXER1] =3D &mixer1_h616_clk.common.hw, + [CLK_WB] =3D &wb_h616_clk.common.hw, + + [CLK_BUS_MIXER0] =3D &bus_mixer0_h616_clk.common.hw, + }, + .num =3D CLK_NUMBER_WITHOUT_ROT, +}; + static const struct ccu_reset_map sun8i_a83t_de2_resets[] =3D { [RST_MIXER0] =3D { 0x08, BIT(0) }, /* @@ -180,6 +207,12 @@ static const struct ccu_reset_map sun50i_h5_de2_resets= [] =3D { [RST_WB] =3D { 0x08, BIT(2) }, }; =20 +static const struct ccu_reset_map sun50i_h616_de33_resets[] =3D { + [RST_MIXER0] =3D { 0x00, BIT(0) }, + [RST_MIXER1] =3D { 0x00, BIT(1) }, + [RST_WB] =3D { 0x00, BIT(4) }, +}; + static const struct sunxi_ccu_desc sun8i_a83t_de2_clk_desc =3D { .ccu_clks =3D sun8i_de2_ccu_clks, .num_ccu_clks =3D ARRAY_SIZE(sun8i_de2_ccu_clks), @@ -244,10 +277,10 @@ static const struct sunxi_ccu_desc sun50i_h616_de33_c= lk_desc =3D { .ccu_clks =3D sun8i_de2_ccu_clks, .num_ccu_clks =3D ARRAY_SIZE(sun8i_de2_ccu_clks), =20 - .hw_clks =3D &sun8i_h3_de2_hw_clks, + .hw_clks =3D &sun50i_h616_de33_hw_clks, =20 - .resets =3D sun50i_h5_de2_resets, - .num_resets =3D ARRAY_SIZE(sun50i_h5_de2_resets), + .resets =3D sun50i_h616_de33_resets, + .num_resets =3D ARRAY_SIZE(sun50i_h616_de33_resets), }; =20 static int sunxi_de2_clk_probe(struct platform_device *pdev) --=20 2.54.0 From nobody Sat Jun 13 06:05:27 2026 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (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 998353C7DF0 for ; Sat, 9 May 2026 19:00:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353226; cv=none; b=SIZuR5D6Xo0KBu22+AM/ZQGa3UO3fgSW4mAFmLuPZLSjUBlYFlZGK2N0DhvPPoHocpufMkfABgZ2Gbc7HoyIj6ZQMWbHD+MCVpewz3D0hBK83aI7Ufr7TwCsAptrJLM2dx15KWeTD9mim8ijQDmgQzJg9LwwvCQ3cBlFAqmnlvA= 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=SJYGZg5O; arc=none smtp.client-ip=209.85.128.44 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="SJYGZg5O" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-4852b81c73aso27931685e9.3 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=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; bh=AdLAbqgwB3cbfBit4ZVDmF5fOX+Cth+Nq8mrAQRYaDE=; b=SJYGZg5O+LZcoCfsa8suNdh80X0a9dFi+AUUlAIzJ8RoHjXUs+sS7U12flW9XtQXSE LypxF2Vuf1UhTpbrSzMR9NLpk6xwmW2CAICJFjAGaQBcswpFiggk2CavBp8mmEFZWk59 ADjk20AHdHbiNzsgm6cKjdgYrgRItXJuVuiL0COJjhVMUI/T2TGlhLrK3xBudo6Iklv+ Q1VMUgVmtd84arN+tCEQy2YTJXeey4/fIJo54Esdkw4PWbhFnVaRPtnPk25Sre86aJJd 7eM5zpltWXrHprKNZemKA/itjiQjkJg8W+iDqx6G3vkSszMebnunj1BvEhJq/aoT/qit 4a+w== 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=iwZeBEbpu16VD3CA3dlp7IKIPyRR5kEZce6eEVnm0lFEXfk7uZ7/56KTWN69+rgOWL eKeJrfP+kpBj3wh0ugZbmEi+qPTlvRnkmPAXZO20/p9/+nlX6MAoed/yMftV8Z5Ge2zE KDt2qEOtfJyS/MlxeJDOBlxGQ9YGBVdiflihIHGM+9j4mj7SYPbWAOvQ4qs7KXerjlcW Ic4NfXYYKS9ZxSiRCkckzlavN/8r8IkPs61ci/NXw7wnedvNFHi4YzzslZYrLVhll3gV 19rEorjSYPKrW8Hu7bYQLbwcbqIG007+PIepPVMw4NsmyWhB2cHp0qb5XlO4M+CTj3vt 1xUg== X-Forwarded-Encrypted: i=1; AFNElJ+d5Ur9V1mvi4fYsWlGIXgGHqMW0dY4kT0hksd7V8PrIChC+etcVJmyCMY8CkdDlmuYUNllbeglM8Y0aM0=@vger.kernel.org X-Gm-Message-State: AOJu0Yzdy/Mgf7NXZEvIvCiLTNpzwWmwTsSLZDan1CP81cM6mdPtk+4a dukYPREWZ29cSpGuXDJGnrUOJ2exscaQfjCb2Xle9qm1kTHWZh6d0NGR X-Gm-Gg: Acq92OEHUxkO9+J+Ad75iXcrhBzyXIgPYMT2dZ9MAvuJgzbj14baWffXMtjE2zxRKjP UqRLVy5T/1QsujriJ3HO1hG9DTk4Lly1ITB36tTwFLHC0EPv2koR43qVzJTjYJFzvVts8L7k+Nw /ZEKkCLTV/rX9UFU79qMiyqc5/TENfmOvk8bOU/RDJ81+w5pmM6dm+V/tiVzjizpzCRtrNq1EXi Mp6MYlrbqbJEFtaVridQ2QOiKGpLepvzd4ZdL0xNnMGiiy3BKfrRe93vCUAGcc/prpibAVKBxP9 A46PxdNwMLCukXrnz9nc5TjMfqx5JmaVsUa3d4oHQNQ9vfQ730Sq4AS6bp0sukseWJv3fNSLHPI upgfQMHZ/ROo/sVGEADpHMycNFtvamXqGX7dL1BHtP+jg85NtyX1jgHOzttKmhsAVNIhsxMnPfZ qDTCrIEWrI4FvSpobO1bqzzpXKrGPDrvVEcuLKisyXGxmLNe8j/px38Jz+VPUUcqdbiMk= 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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/cc= u-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 =20 #include "ccu_common.h" @@ -283,6 +285,36 @@ static const struct sunxi_ccu_desc sun50i_h616_de33_cl= k_desc =3D { .num_resets =3D ARRAY_SIZE(sun50i_h616_de33_resets), }; =20 +/* + * 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[] = =3D { + regmap_reg_range(SUN50I_DE33_CHN2CORE_REG, SUN50I_DE33_PORT12CHN_REG), +}; + +static const struct regmap_access_table sun8i_de2_ccu_regmap_accessible_ta= ble =3D { + .yes_ranges =3D sun8i_de2_ccu_regmap_accessible_ranges, + .n_yes_ranges =3D ARRAY_SIZE(sun8i_de2_ccu_regmap_accessible_ranges), +}; + +static const struct regmap_config sun8i_de2_ccu_regmap_config =3D { + .reg_bits =3D 32, + .val_bits =3D 32, + .reg_stride =3D 4, + .max_register =3D SUN50I_DE33_PORT12CHN_REG, + + /* other devices have no business accessing other registers */ + .wr_table =3D &sun8i_de2_ccu_regmap_accessible_table, + .rd_table =3D &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) } =20 /* - * 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 =3D devm_regmap_init_mmio(&pdev->dev, reg, + &sun8i_de2_ccu_regmap_config); + if (IS_ERR(regmap)) { + ret =3D PTR_ERR(regmap); + goto err_assert_reset; + } + + ret =3D of_syscon_register_regmap(dev_of_node(&pdev->dev), regmap); + if (ret) + goto err_assert_reset; } =20 ret =3D devm_sunxi_ccu_probe(&pdev->dev, reg, ccu_desc); --=20 2.54.0 From nobody Sat Jun 13 06:05:27 2026 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (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 43DE93C9EC2 for ; Sat, 9 May 2026 19:00:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353228; cv=none; b=k1kIjJIWpa05K5nukXd7rwjZR53HV8xCU5aroqd91yWo3LQx48y4+x3s49tGyXGp8BwBPsuhgZsgrGpIY9gYEohL/6Bu2cBTAVW0Pn6Yko0cl+NBx5So/9Uyh2akmBpQcZN7mFvyBy3do2Vhp8VO2Pn7MRmbrURgRMx3Afmi7EU= 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=CHpZooOm; arc=none smtp.client-ip=209.85.221.49 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="CHpZooOm" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-44c4cc7c1cfso2406773f8f.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=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; bh=+CrDBvKu/hcgSB1anyD1GXBKe06ZzlWC9+3i2f9q0bQ=; b=CHpZooOm4kN5IESlar1OK3ijgaGACVSaHzUKLXj2JKgbvVdPQdU4nNyZfedRnYip/8 iiO+6D+7bfVAZeWgQlMjpeeA79zkbH8kyysCISs0gVcT+foi5+LvA2zvTv9f/fMn3wsc Bx+F9dEvT7E2wBc4xypncMJGnnoP1XnjICd2xyGcOBLvR7FNr5THGNi7m74YYxrYOAc2 mb8Cr9RXyTQcUPBQsE8xAGPI5JKQPfm4nsFkAzuMk4JdQcT3WCvJ//WrEVQIq6/87cIu z3EvFY3SII0IVkHV9ggXbbp+jeHqDM0gvscQG1bWX4QAMkxWvx8/sD6fGDVgq8uNDeuo 8I+Q== 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=s1c10S37Ebe32LqreVaivtFoQJJuQjyr5WNG39nAUJFqhBqAIo57uUP0hUnTGEqp8L IShR/DmPuKQuLLTV6TsILCfDPFcsHI93gNZRdfBhQed40H4KYLdS7/tKzAYNQCEmHA+7 VvkzjwVFkNnOlZFZfM+JyDatZwpkDk5IvWr7eLbCjnt6F/CTDr4WrIYg3Nsm41nmdTOR BwY/T+xkacNsZ/3IyxSmWicNMgjJnEBJyy4My7fyGSnZaccc70vQ9aHjnEFE6J1q1/7J H9Oob+ShWjqlJpSd/mKbDsMPS92Z+ooJdSr4HtDcPaEwb3eCViD3ppvn3kbrTrrBRGY7 2JJA== X-Forwarded-Encrypted: i=1; AFNElJ9hE6Okfb0KORcawM2x0/vopJimE2mDiFSKbpSh/nDejDvkF/6W2gRUN4Nb4WsPrMJN2ejgkgXhNbOkpMA=@vger.kernel.org X-Gm-Message-State: AOJu0Yxq3YQW5R6ZQ3U5bdkzoAhNKZrBDtjJ7nr+VJQDz638Zv6qn4vp iTFJGlAnQJKeGjb9T/+aTLYoaVjhn4hvqEkx/a1RKMrwRyf9iIJrhzD6mnZTbg== X-Gm-Gg: Acq92OG/d1Q2aF/TtNSmUjCrOrAQFn+XpvBA8btEJN7EoFTY2GQli1e1HFzPgJUfdq4 N/77HYNHjwWhaV3FOeJfNRjglDxOXtCbP0Az2lwARnAEhuDjy+8p38cOVwCzmkeAloM6PMCTxKo BQ71KWNiaa7t4W5KDUrnq49gqvfNkVjAf+oZ87q36RJpoqtKzyo4qEGofgao5GSvujNx61qNEHp Obd5BKmzKoZlVov9C9tnM4kd20BqwuXfdwunqIyU5PTjEs4Y6gJ7WNp0Eu1hQ1kPIR2ztLL2zdN gusuwCCkoawfOW3MTpCBpBtjgdlIgkVWosG/hawFuBxc8pu56KyFWNbMUPsD6UmWtqEXAEQAcZw J+cYzyUjXQhSLYCTXQNoQVizewYPl4JM4VhfNkAyuExpLHqFpVUUdhbje9FZHhLYmtsNQa45aAN T1cWK7e8wp+Kam21JU9bCn1W6z6S6cf7hq9OSOfRUU/C07mUiG/8yJ9pl0uum6lyMZYsU= 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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/sun8= i_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, i= nt layer, mask, val); } =20 +/* extract constant from high word and invert sign if necessary */ +static u32 sun8i_de33_ccsc_get_constant(u32 value) +{ + value >>=3D 16; + + if (value & BIT(15)) + return 0x400 - (value & 0x3ff); + + return value; +} + +static void sun8i_de33_convert_table(const u32 *src, u32 *dst) +{ + dst[0] =3D sun8i_de33_ccsc_get_constant(src[3]); + dst[1] =3D sun8i_de33_ccsc_get_constant(src[7]); + dst[2] =3D sun8i_de33_ccsc_get_constant(src[11]); + memcpy(&dst[3], src, sizeof(u32) * 12); + dst[6] &=3D 0xffff; + dst[10] &=3D 0xffff; + dst[14] &=3D 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 =3D yuv2rgb_de3[range][encoding]; + base =3D DE33_CCSC_BASE + layer * DE33_CH_SIZE; + + switch (mode) { + case SUN8I_CSC_MODE_OFF: + val =3D 0; + break; + case SUN8I_CSC_MODE_YUV2RGB: + val =3D 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 =3D SUN8I_CSC_CTRL_EN; + sun8i_de33_convert_table(table, csc); + for (i =3D 0; i < 15; i++) { + addr =3D SUN50I_CSC_COEFF(base, i); + if (i > 3) { + if (((i - 3) & 3) =3D=3D 1) + addr =3D SUN50I_CSC_COEFF(base, i + 1); + else if (((i - 3) & 3) =3D=3D 2) + addr =3D SUN50I_CSC_COEFF(base, i - 1); + } + regmap_write(map, addr, csc[i]); + } + break; + default: + val =3D 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 =3D=3D SUN8I_MIXER_DE33) { + sun8i_de33_ccsc_setup(layer->regs, layer->channel, + mode, state->color_encoding, + state->color_range); + return; } =20 base =3D ccsc_base[layer->cfg->ccsc][layer->channel]; diff --git a/drivers/gpu/drm/sun4i/sun8i_csc.h b/drivers/gpu/drm/sun4i/sun8= i_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 =20 +#define DE33_CCSC_BASE 0x800 + #define SUN8I_CSC_CTRL(base) ((base) + 0x0) #define SUN8I_CSC_COEFF(base, i) ((base) + 0x10 + 4 * (i)) =20 +#define SUN50I_CSC_COEFF(base, i) ((base) + 0x04 + 4 * (i)) +#define SUN50I_CSC_ALPHA(base) ((base) + 0x40) + #define SUN8I_CSC_CTRL_EN BIT(0) =20 void sun8i_csc_config(struct sun8i_layer *layer, --=20 2.54.0 From nobody Sat Jun 13 06:05:27 2026 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.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 C59033CAE76 for ; Sat, 9 May 2026 19:00:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353230; cv=none; b=DwCBRdL5F9QhpLpwrOYqytoQgkFY4frQ2uElTu/Bya8oeyk1/0D3in41FtU5YrR8tu1cPkp/aslhU8xTtqx1jRIP6XEgQYeQY1Nw+JGfcc6WXPmcqb870GHUTxiS/An9zGkitBiC3Zkmg1v+mGloAQRoeFTM64JIG+xqEprmqLM= 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=mAfn7DsJ; arc=none smtp.client-ip=209.85.221.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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mAfn7DsJ" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-44a044cb827so2348038f8f.0 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=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; bh=OFHSVkKikAqL7V5/tk/bF1gVjwq2bK7i4HjBHfLDqaU=; b=mAfn7DsJuE1lS8lGbqvF+gtkWlU/TsGy/CqufQjfeEA9W/jXxKCaHkQwFdKa67ESso yj1jhLqg2Xgx3+90wT8ohnK5GLjEheXlbHh1btbLJqgIM+sVSQINZLkiayiB6Z+YPUT9 lnW1xrkJKFvRuS3YZRPpY5BdvNrDWvrw/SZDfWbu2AEY0y1hXaqCvUm9DiGK4XbdxE5g XKGK2jVbvY4rh7T2v/M017k2ae+6fwB8LrcY8nIgMGzaObAGeojriFlR1+DfOhb2VdTa /6v5VDBfaGk0ydDFHLkaT+rRaH9JinlZfZYgwdw02ITpNbZsn2J8QwZwTQpj7V+UG5xj onnA== 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=eK3/FqaardvatyE0rBPWhAQ4zTbBLcY13mIQwcY+I6mFKgYu3qYWbbhs/mihf7uxoG LIhMrKCegIJNklrWJPiGd2PUVGmjiTmncWfiUHqF89tkiS+hKZpAr1HB6Umkbl9ZSJE/ KETCAQjO4pyenTWCUNW/JBQX5oMdhRmf0FWlIbVwNAqi+QkZAuNGNjCtwY0/NwH0/zUb yk65lbTh/EQsGgu4xnoI7QQRv7ADTVy+Vu6QQoCX9wgmMwO8k9ddpq5lwtzTOfYs7vQ1 AcqPCKHvml6kkVKGXmTwmSspM7wiqIxxJBJvMD60eSHk/xgrbcMg3WTd9H6vuV4lFrcZ Hwrw== X-Forwarded-Encrypted: i=1; AFNElJ+MD4+gNLXJohwgJRsk1+30ZCtKF+eBKiVa8e858To/IIjMqIFxH2RIZ/KkKt9sCshGw6tZYG1B0Tg7kAQ=@vger.kernel.org X-Gm-Message-State: AOJu0YziXLAvukWQgVnUlUNBk44ai94IDU3t7fIOuIvR5QzBmfg4Bk0S lEZ58xGl+gKMTLMnPZbPBZpwUNZKgq9xreaqD1KutkE7te46ScG9gB6N X-Gm-Gg: Acq92OE6QpWfZqexlKO9H0Qccvr53Ux5E4QtmXUSdHUcF68v2pvE/Zy/XFmsHMYrII4 XUq3uJMUOniBMFMicQu62eyz5NPjuhpIvrt9XSupIeUjL7dBi2KYCTNtRveLi5XTnvRSf9fqWr0 Jow04gPw6cb4aFMWi3fivExhvhWSUDvNcQC12jMZocevTWgZDO73D7/HBUt+MelTWQW2sWmndH0 qOgLY7YeX8mZeHuXCQPwSMRuL+18tttExL39lpRdVPRBfLoMCf076lI6/WzD67bAPno9gdINN+r AAFvcniN7lQLZE737fkM8jkf/BpUnbY+Vc9VIfvAirH4uTBiUTywkN0c+fy7lj3U3IoUeos0Ni5 NjJBPP9L5L0zWnitrCcJlbGUNE70h1yPimRX7NY/5Io7YYeUrsV1k+mftsV5xniciaulRIk5ggd jJqFjeFD5GpptyuLvpwiQM4GoprHmWHIDNW5qSMQ68b3Rwz7p/Yd/5C+H+mhHa+wEj4t4= 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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[] =3D { DRM_FORMAT_YVU422, }; =20 +static const u32 sun8i_vi_layer_de3_no_yuv_formats[] =3D { + 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[] =3D { 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 =3D cfg; =20 if (layer->cfg->de_type >=3D SUN8I_MIXER_DE3) { - formats =3D sun8i_vi_layer_de3_formats; - format_count =3D 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 =3D sun8i_vi_layer_de3_formats; + format_count =3D ARRAY_SIZE(sun8i_vi_layer_de3_formats); + } else { + formats =3D sun8i_vi_layer_de3_no_yuv_formats; + format_count =3D ARRAY_SIZE(sun8i_vi_layer_de3_no_yuv_formats); + } } else { formats =3D sun8i_vi_layer_formats; format_count =3D ARRAY_SIZE(sun8i_vi_layer_formats); --=20 2.54.0 From nobody Sat Jun 13 06:05:27 2026 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) (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 49B843CA491 for ; Sat, 9 May 2026 19:00:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353231; cv=none; b=Y203fQwGUCN/ObpnZd/zl1++0GkQkz/TEX5xOHXeF9ipb6Ox4VvvbUDY5IJVwlfDJD8G55uc+MysYIvEdU/MT42GX5kYQ1NLxJ+RzbM3iT2xuNflNMC3boiIeBS7JueOCGwRrpGbc07F9AkfPOANkXRkeyvcuLiX8d0Z4RCEkj4= 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=p62lJF0l; arc=none smtp.client-ip=209.85.221.47 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="p62lJF0l" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-43fe3e22e33so1778469f8f.0 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=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; bh=zfXcef4xsSF9aS7bEgNrFEzEGtCwPTxISiBE2oLRk0A=; b=p62lJF0lL7y+rQErKPx7zvIF6c3yF+rcmWQUK1thqj+q2NH74QCHJHDEm5AMCEQnEx j785sxjQWaxBhWENcASScHuY+PqfDgvcldoLa6wMyGsOuRWlh8kxI5PCM6AUiNUdzlSZ mFsr94jBLOFhmMJEaFIA+7lRsm3k19RgANMh7burq6psnS0hiV3robl284S6Af8Vi44K GC13HkmZlJSTV2UdIpzW4Om6DJbCm0sd58CoOi+K4Wn1OQJJEb0YkKx1hnPptdm3aGAs Y38Xx43+bPdYbeKxSMW5mUkzVcXQSTVC6dkhS7fxVUCNvhXHnRRKRf1j9V8CqI8UAtHj 1PNg== 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=NF5Jcf/o3kZsPkqKGVSXcnLhov5fXbrXntLNMvIxX3B+3L4J614DUn4ltv2/hMw+Vk su2EQzSCO/Ve+mLWWlgjaGeV9Lwidc9wm7d4tvHWhHNtAeNFwy1vshfuZ67J+1Kkht/M icKJ0voSXSdb73rw61wHiSklcWh/EF2mRgEAFAqbPElzmei057hetk+zGT5pCQ4LmAXp OVIBhFmh4hETYUDsB+DO0+NH+Q6wN11Gy7vOD+45X+NISeuefYxwaPR7vyYGWStLVu0V mBwI9tCMoca3HC+zzzRBBa7IKqkssQ3+miu9P3mM0vIpsZzAiu+1hPQ/7DyrniHD/smj 8KvQ== X-Forwarded-Encrypted: i=1; AFNElJ9m6s0s3g8rPNz2tDg54bhusZCB7gx6oFwrKhAMzVjKJJK8+3ORb2xLqGgZBDrwOTT2JlXMQQOIAl8U13c=@vger.kernel.org X-Gm-Message-State: AOJu0Yx14gFWtB7JUmXcxp/19tWw+4SmoNphvJj4YzYgycRiZnKnIMLp aItTzu5e10goFyTuwMHzuym/nfrzZA8/Mwy/pkq+mlwWdzGkFdwsagdE X-Gm-Gg: Acq92OENozcgFKGSuB/bqoP2IttRe8Br34wA6ujMMdAnNE3KfMrFGxKqhXKcUYL6xaY 6RoTMojKt8BsZGyn3s8zbVFuaRQv9OYn5fXZWMFk9c7H+BNxM/KpL1oIHoU9ozahnc7ct4GM176 0EB0lOr5zFAWB6uCY3lerbr5E4tmlAVZWFRA0oV53qPHywyQb2TWuj0z/f2mfA77C56a78fOkOx MYdsfMtRmukwRPRTtdk5vlD0Oukoxayncui6dEfQosmkNCbgyLHqHFWBSKUIsaC5RVfioHU3vbm KW5LWX8bvORN442PE2Ich9eIczAvtuyER4V1RLUPe3gcbdryYLFbei+cAWJdsphQx8AgyTjZapd IjrEw6+EWboaWlIRiBjh3v29dTOB0viTPKeKpg+MVK1pN114y5ZAh6m9AYF4Qmlo6ix4taeg+SF ZDtwsr8ZBZLaInvhB3JkkHWSyPWfZtbd1ttPHmEyCB/HAdZ9RJYE2L7iCxmbht2KDdhFYiaUoo3 hfnkg== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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,sun= 50i-h616-de33-planes.yaml diff --git a/Documentation/devicetree/bindings/display/allwinner,sun50i-h61= 6-de33-planes.yaml b/Documentation/devicetree/bindings/display/allwinner,su= n50i-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-plan= es.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 =3D "allwinner,sun50i-h616-de33-planes"; + reg =3D <0x100000 0x180000>; + allwinner,plane-mapping =3D <&display_clocks>; + }; + +... --=20 2.54.0 From nobody Sat Jun 13 06:05:27 2026 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (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 A96213CAE9B for ; Sat, 9 May 2026 19:00:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353233; cv=none; b=lqYJNLuLe8f2W/KVLgi218A7em1/lCujKiB95QN4Fm/u8ZZDyrYqtahF54TQ8OQh/cIQeN6Yr7z+dIy09OgLFDQIHS3yGAzFP9QOPnj2joZDU+iF5pGHXw35rLnMb3PO8SOlyVB5nTN9mdRmJUJo1+sYnS6Y5jAtntXV/FXq4ag= 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=WjZryJO7; arc=none smtp.client-ip=209.85.128.45 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="WjZryJO7" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-488a9033b2cso28572055e9.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=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; bh=ZNthY/vc+xApAiW+Ngr8WtzfKJImSMBfZhPBgaVC8u0=; b=WjZryJO76H271WxmuLCE6FWCeKEBmJ3Z0ONyxsTi/vc2wusLaktW/6fNx0NIbdNqno UCcOV6XgCPqLpUfgJARyl96kOzif9Tp4XMqrI3vy3Fjxpnrgox8cyQimAO1NAQc45eTM fJTLxGcSiaX8EDQ/1YutpCqbTTCb658GN9JXB+D56WM5r77uutFQeAjbhWn+BHhBAnoR E03pd8+VOS96kvTaAF5I0bTic1KrjYyqXN23s48AV51VVSLUkJCmxTOfOjKj/MuKi1kZ VkB5JVJ0sfB1f0SL3G0fBSPOdWblOGadzaFA5A7uFydaRoTgvviPKnD7hA0HEigFG1E3 0BMQ== 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=nybfHcM+P+tGwWVNna1t2SwcK0xKjaFfqVnBXpAshX0godXnePBIpBKhaUsrNQw8Dy ayOJ/PJnih9iEihSHGvEqJb6amlRI2RtYKzEVTQWCUHewioeTXuj9bkQGHyFOkmTBNLC 3Y2QJovbSbcmv68X7ytYVqdI+DZplJamBW/12lpcqtW0oDV6jfHMWtHNTZMjGECpPLV3 mbyoJpar/Eaj8+ISVkSJgeHqrGamxzrcURPAtfmeip/P/U2lZ0Yo6IYixNhTwjrePOvA GMPeoFp+bYasNGtVLuC9xA/EJz0hKkWlIGIz+IciaB5Gli9eFnPSO161Nl7hCBBvSOoR +xlQ== X-Forwarded-Encrypted: i=1; AFNElJ/NT7IdcliPrBVHgW6KqZZVE1oa3PMb4SkrT+WAKSQecwAEtS3KIcD3+7QZhRPjAf6pOyVeRXaf3b4kRvc=@vger.kernel.org X-Gm-Message-State: AOJu0Ywz9bEJFyZ0dXx6fXv2Afh28R2y8VwMjKbKAGvoMffmmo8y9emg v3SlQVoxQAWOxXTVVq+mCOWRvMMcsYcbF9biCBPa2c2n0as6r771/Ezw X-Gm-Gg: Acq92OHqHTjFGfwiRCQekKTZFAouqHYS3dloiOmvhDw4LhbkjHysjVHvafUGPi/cJxA 45A9i2dmnCDE41gez19h5OM9rfwc1rAGBxIBKguxyW9GadWKrPr/gTziFg0jkTAHTqerVxzJ1mw aBX9KR/6194yRNwEKZhORF/DOeb30SNiXhDZaTufSpdTrWsvl5wWzHnvKH3V8WTS7Zuq9BvKwZ2 pfgyIBht0DN5zFbVutrdwcd0JCWAdlyvIIFt9ujTiMNzPFVp4UlOm8S0knIm++NKXZHQOojSVZc m5xwflGDWMELGlb0vwiDFQ24muzeoegr2YAgdk4YSgtKWH+ozG9kwkXtTGZ8fFXzmKW7Z1RaaN7 1K1NqR8QeEedftMYVcD85QUs02zImGg30hoKdVo/+CzwEOSzIiUEgFLDoFcFT4jusousRGjynt0 MVGBYAAPzwGWgsL+TTe1XvkqeUnaHPn199a1+OtOvmxwyt0cFMuxf/1O14vbr8PPRwtlU= 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 +=3D sun8i_hdmi_phy_clk.o =20 sun8i-mixer-y +=3D 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 =20 sun4i-tcon-y +=3D sun4i_crtc.o sun4i-tcon-y +=3D 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 =3D { + .def_map =3D { + { + .map =3D {0, 6, 7}, + .num_ch =3D 3, + }, + { + .map =3D {1, 2, 8}, + .num_ch =3D 3, + }, + }, + .cfg =3D { + .de_type =3D SUN8I_MIXER_DE33, + /* + * TODO: All planes support scaling, but driver needs + * improvements to properly support it. + */ + .scaler_mask =3D 0, + .scanline_yuv =3D 4096, + }, +}; + +static const struct of_device_id sun50i_planes_of_table[] =3D { + { + .compatible =3D "allwinner,sun50i-h616-de33-planes", + .data =3D &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 =3D 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 =3D planes->quirks; + map =3D &quirks->def_map[mixer]; + + drm_planes =3D devm_kcalloc(drm->dev, map->num_ch + 1, + sizeof(*drm_planes), GFP_KERNEL); + if (!drm_planes) + return ERR_PTR(-ENOMEM); + + for (i =3D 0; i < map->num_ch; i++) { + unsigned int phy_ch =3D map->map[i]; + struct sun8i_layer *layer; + enum drm_plane_type type; + + if ((i =3D=3D 0 && map->num_ch =3D=3D 1) || i =3D=3D 1) + type =3D DRM_PLANE_TYPE_PRIMARY; + else + type =3D DRM_PLANE_TYPE_OVERLAY; + + if (phy_ch < UI_PLANE_OFFSET) + layer =3D sun8i_vi_layer_init_one(drm, type, planes->regs, + i, phy_ch, map->num_ch, + &quirks->cfg); + else + layer =3D 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] =3D &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 =3D planes->quirks; + unsigned int i, j; + u32 mapping; + + mapping =3D 0; + for (j =3D 0; j < MAX_DISP; j++) + for (i =3D 0; i < quirks->def_map[j].num_ch; i++) { + unsigned int ch =3D quirks->def_map[j].map[i]; + + if (ch < UI_PLANE_OFFSET) + mapping |=3D j << (ch * 2); + else + mapping |=3D j << ((ch - UI_PLANE_OFFSET) * 2 + 16); + } + regmap_write(planes->mapping, SUNXI_DE33_DE_CHN2CORE_MUX_REG, mapping); + + for (j =3D 0; j < MAX_DISP; j++) { + mapping =3D 0; + for (i =3D 0; i < quirks->def_map[j].num_ch; i++) { + unsigned int ch =3D quirks->def_map[j].map[i]; + + if (ch >=3D UI_PLANE_OFFSET) + ch +=3D 2; + + mapping |=3D ch << (i * 4); + } + regmap_write(planes->mapping, SUNXI_DE33_DE_PORT02CHN_MUX_REG + j * 4, m= apping); + } +} + +static const struct regmap_config sun50i_planes_regmap_config =3D { + .name =3D "planes", + .reg_bits =3D 32, + .val_bits =3D 32, + .reg_stride =3D 4, + .max_register =3D 0x17fffc, +}; + +static int sun50i_planes_probe(struct platform_device *pdev) +{ + struct device *dev =3D &pdev->dev; + struct sun50i_planes *planes; + void __iomem *regs; + + planes =3D devm_kzalloc(dev, sizeof(*planes), GFP_KERNEL); + if (!planes) + return -ENOMEM; + + planes->quirks =3D of_device_get_match_data(&pdev->dev); + if (!planes->quirks) + return dev_err_probe(dev, -EINVAL, "Unable to get quirks\n"); + + planes->mapping =3D 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 =3D devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(regs)) + return PTR_ERR(regs); + + planes->regs =3D devm_regmap_init_mmio(dev, regs, &sun50i_planes_regmap_c= onfig); + 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 =3D { + .probe =3D sun50i_planes_probe, + .driver =3D { + .name =3D "sun50i-planes", + .of_match_table =3D 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_ */ --=20 2.54.0 From nobody Sat Jun 13 06:05:27 2026 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (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 989423C2781 for ; Sat, 9 May 2026 19:00:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353239; cv=none; b=hRv2cQM7bLlEs6Km+5P6d4yCm38zikPcQ+P6VIOY0K58qwMzFgAXfiXnJyD6I5UXuG+Qg/aBptpIcP8E9tMMzFmC2CxmpnwwoX0X7hbb2Mw4y6LTaMlQQNkJ+/nFcSxv5ynIOgvLdjD9+khV3LtG7UC0BZBnHVxxlbpSqBP93ao= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353239; c=relaxed/simple; bh=IOxmh5MhxMGcoJj1bYSLoRwfOsdl2l4K10+pW425y+I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=M9Ge/C2ipeRcTepSNafDXHxa1/BcJICkor81B3UxwMIX4PahZIOGWv1c85xQFVe32bjfNnvv8IeeBVoPHRCBoocCiSdKiyaF0JGZ3CgA0CjcUwzSwfCCXZnUd+MtH4SbRRsDic80BHLi935fQHS+B/BEjdAaeNUvZrTumRFFEv4= 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=UPG5F7LE; arc=none smtp.client-ip=209.85.128.47 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="UPG5F7LE" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-4891c0620bcso21166255e9.1 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=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; bh=VPkvMBVXyvicDPmrKpPPSuducOnxVL8vyxeJt4rQ8ag=; b=UPG5F7LEbJ8V3oJp0yCFtKSDYymeHs2TzGhx596rLKEdKNFdOOOyI5km6OrZk5sRPh A7ZKyjU3Z9+63/AqI9Kfnl8mVbVwpN/oC1KGOII3Kl95cgkKZNeBa19CiDMpHp2jEVMB YIFKjlOT84VpVwhmiqOTlIXAa8dQbVSgyTjd1JGYMdNYTO2Gb6R50FKOBtB7JnP8+Atu 5tA3glJyFiLQr5gUisT1eYFKjguQM+TQ72coMJiR6MvTndHHxjYBqwdSqyfYMcyF1f3o T4+6MvTWLCcjhtOe1CaijpWdurvudA1OKr6YnU21dcEOTpCfp2Q0Qz628aPwMaSVq8sl OFzg== 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=pQbuWYfOfDUYH6o9m8Azyqjyveo/nY/Pa3f51TP/Gy9j0vNoEEyzROjSd7PvKr67oJ SdJwvABlX9GWIU6e8P6TL+AmlAqQqifjqI5LZbukAM1nK/rWf7JJwb5FN90yA3ukSdCq eMCzorE6rd4vdP+FJWw5TyqRT2K8t8DB4MoDGbGDTkeIns17nKnLsbmnkd+tNilKml7I X4p6ecH2pvk+1+x+PfurpxKU1a82W/KvWiDmWSZH9IKLMvItcaaZAh0OnRicM4mBNhnO 0F+Qr1aMwoZikatJWZD/1Ezt4RyGTs0ki5RKSGLs/Awm4h22dmn+6JsTKY6t2ApRibfc IoPQ== X-Forwarded-Encrypted: i=1; AFNElJ8395SGx2JfmY8Wu5nR0yhm1Qcvkhk35jMbZm9iKDGbljGek+Sv2IiYD8b+pEwsEtyBaLywXpjtViJmIqE=@vger.kernel.org X-Gm-Message-State: AOJu0Yyh8wwRUa4A+YWDzc9QfeawJ8rCCDfqk1B+piiZ09eybgpvpk34 BNM6vZ8VWbsq0bdIoNmPSQFF8j8cycw9lGB6gaPSYDYQQDdmUoXrFC3F X-Gm-Gg: Acq92OEK9Y336d0vQbogJutsZSbW+0AzhDsu0SVpmjP8upVxH2FtH4P7J/NU4cvDiEx BwwWcL5LQG1BstPYO8FM31sHaxBfd+0Zc4WOtxv/U1EnOaI4MgKyBDshGwdbPkLX5Xdhv7kq/Yj ewbiMcwNQp0mMhMeZZpi9Y0zYyNiS3rgxo/7wybiZSHs9va//8gJpmFCSrnBsCNi6shRQSd4L9R k6ehxjPysgcdiFrM8zXxZFppq+rdHyr3fudfkjKSaWUIeU9uxznknf0BFCr0TlxgVO6HsHWsjwn Z1BCT7PlRYqziNMEROGxd4YCAOnPSDr5uo9CZD4uNk4OeDvgOD+AijP6GeozdJ2oXuvqEdfLCON isBkyy3BnPdvGBi8BoNQGDGV0EMhfb//cXnGJN7PiW1yKRaiy/9lqeyYC4rVImurX2wAhY5MBgE PhUcbTQ93h8HC2avpSsgzxvuFLPzIaIh8Yf2UjAiOXIcPW7UrFvfzcxejQD73hbZRxSzk= 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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-mi= xer.yaml +++ b/Documentation/devicetree/bindings/display/allwinner,sun8i-a83t-de2-mi= xer.yaml @@ -46,6 +46,10 @@ properties: resets: maxItems: 1 =20 + allwinner,planes: + $ref: /schemas/types.yaml#/definitions/phandle + description: Phandle of Display Engine 3.3 planes node + ports: $ref: /schemas/graph.yaml#/properties/ports =20 @@ -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 =20 else: properties: reg: maxItems: 1 + allwinner,planes: false =20 required: - compatible --=20 2.54.0 From nobody Sat Jun 13 06:05:27 2026 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.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 27DCA3BF684 for ; Sat, 9 May 2026 19:00:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778353235; cv=none; b=TxBphn8Ez7AU8xbTDzuq9/Z9fRypJjhw8Q+WfGgin0yvSEJG/+PANDVr+JeypFvXrA9G/9Wr2jNFbnZZrO2s4goCmr1zFzfCX5tgQBNcmuFDkRd1JLoKLRyobm1PAy22PM3jOYirZH64mYAWVkE2VfiyWtGTBUi0Ga01+kbO2aM= 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=G4A1djO9; arc=none smtp.client-ip=209.85.221.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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="G4A1djO9" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-43d7e23defbso1726983f8f.0 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=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; bh=dRiBGQ2QPdeyt3UQcFiASOhwWyz97F1JtdNHI4C4Guw=; b=G4A1djO9kr/rAUKiQrDtuyePTJXN2HamNNfDjbhNbGb9nSpxsWmZ4+i5lOyWbVtvux NQZTIhuszxy199AXPsQMJ09F4Dc1m331kt6HAPqusaXzDd3/Khl9S2/YFkI2cfp0TBga PelDdUgwnYmS1TL2qGu1uovSlTv6peWOs39Lv71eiXj3itvfiPPcGGRncXgccT07vbTR iDsMLLa8u2IRakkQJl6UbBIo34l3l6rOAAf/EdM/J/DmooEVWkSFXpwCMvcKNmHPn7Hz 1B49Dwt01XzlLHWf6KtlVWqDdNdte9h8CdgGH2neDmR0wz/jPmqDK+NxZ0tR+xK1FIp/ 5dPw== 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=jPqA6ybbcfD87cRhLzOY1K+f8RsvBpinJdrLvhuvegyyVGSUNe6U/LaR0O4fP7hEuA B8ex1586tzTaeXDau+cZPrG7taH9HbxQdgbmiF/w/MUu7oPOWuU/o5AvPBos54ffGLjQ jesTmOU9/2b1tp49TkTvgpb9m9vMrREV0PWyuuIb9CdwjHy+c7N71dFOFaX+gfFCH+Np D8p9J8/M3YgJ1SJs93qUC27/l7/8Qx9snFF7F0huLqQ5GkIleFg/jWosJfHT9tKJ4oeI xwM/vX+RKIZkjrLZTdwaNLEwcXKT+iWNis46ien3WdoVUKUnUApoddoIKecxGNfnQUoB 5WJA== X-Forwarded-Encrypted: i=1; AFNElJ/wrPRdSwvJ+ALuz+UJRX+dxkS+v9WwItK3DSmj9xmY88BLEPNeaiFf8QFJRtnyBQw96O+P/xZiF9nbGV0=@vger.kernel.org X-Gm-Message-State: AOJu0YxshMnXv+wlU3HxXq5RFfbD56m7Uznrqfa+py4vebGKZqC7LOcD uEeojLczLdmvSxaUPTMdVmj6Hw6d4awhl/ZHyHZKNOuyKk1vEW4yFvB0 X-Gm-Gg: Acq92OEjcaPveFpr+aZno25p7gVGQK8E2Z7PRVefiTfjW/DLdhuS1+oCVcg47J44AIW d6Cslccp7yHC7GNzfqjZutdMBNVMs5QBnokqF+OsisFdVV84V5oD2PSAxXCcQZ5SdmEwBOnzCvb Iwp1D3+2QPV07OPnRuqjxa2u2GPvyltQH5bwo+SCrb6iNyLQZ+APXRe16P3Ler26Ydz+57COPk3 s1W+ppMhmMfvlnXWCnWCbY2TFrbcORoLtvtUc2J7gShf8m63vBlmjhohYkmcX3sR6trxBS7lVFr s/k1SFWMphB+oWoEa04z2VE6Aakkeu7gWnvrdCsYKVopT7PlOUc5C1xBEPcEM95y7iaBwkz3tOA dPOYDOlbROOidpE327PGXATzRRZt1IuW/Rb5vGuSCqbnxO9osxbAvz9Xr7BuaTleTkisu9S5Fy/ ErpAHUM8BPIyiO/74sb9z9K3kQVv4pd7cm4xN2BtJzucjSYayqub7nTj3JtQcMat2hl0s= 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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/su= n8i_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 =20 @@ -25,6 +26,7 @@ #include =20 #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 *eng= ine, { struct sun8i_mixer *mixer =3D engine_to_sun8i_mixer(engine); u32 bld_base =3D sun8i_blender_base(mixer); - struct regmap *bld_regs =3D sun8i_blender_regmap(mixer); struct drm_plane_state *plane_state; struct drm_plane *plane; u32 route =3D 0, pipe_en =3D 0; @@ -294,16 +295,16 @@ static void sun8i_mixer_commit(struct sunxi_engine *e= ngine, route |=3D layer->index << SUN8I_MIXER_BLEND_ROUTE_PIPE_SHIFT(zpos); pipe_en |=3D SUN8I_MIXER_BLEND_PIPE_CTL_EN(zpos); =20 - 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)); } =20 - 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)); =20 if (mixer->cfg->de_type !=3D SUN8I_MIXER_DE33) @@ -318,7 +319,6 @@ static struct drm_plane **sun8i_layers_init(struct drm_= device *drm, struct sun8i_mixer *mixer =3D engine_to_sun8i_mixer(engine); int plane_cnt =3D mixer->cfg->ui_num + mixer->cfg->vi_num; enum drm_plane_type type; - unsigned int phy_index; int i; =20 planes =3D devm_kcalloc(drm->dev, plane_cnt + 1, sizeof(*planes), GFP_KER= NEL); @@ -333,12 +333,8 @@ static struct drm_plane **sun8i_layers_init(struct drm= _device *drm, else type =3D DRM_PLANE_TYPE_OVERLAY; =20 - phy_index =3D i; - if (mixer->cfg->de_type =3D=3D SUN8I_MIXER_DE33) - phy_index =3D mixer->cfg->map[i]; - layer =3D 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 =3D DRM_PLANE_TYPE_OVERLAY; =20 - phy_index =3D index; - if (mixer->cfg->de_type =3D=3D SUN8I_MIXER_DE33) - phy_index =3D mixer->cfg->map[index]; - layer =3D 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 dr= m_device *drm, return planes; } =20 +static struct drm_plane **sun50i_layers_init(struct drm_device *drm, + struct sunxi_engine *engine) +{ + struct sun8i_mixer *mixer =3D 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 =3D engine_to_sun8i_mixer(engine); - struct regmap *bld_regs; u32 bld_base, size, val; bool interlaced; =20 bld_base =3D sun8i_blender_base(mixer); - bld_regs =3D sun8i_blender_regmap(mixer); interlaced =3D !!(mode->flags & DRM_MODE_FLAG_INTERLACE); size =3D SUN8I_MIXER_SIZE(mode->hdisplay, mode->vdisplay); =20 @@ -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); =20 - regmap_write(bld_regs, SUN8I_MIXER_BLEND_OUTSIZE(bld_base), size); + regmap_write(engine->regs, SUN8I_MIXER_BLEND_OUTSIZE(bld_base), size); =20 if (interlaced) val =3D SUN8I_MIXER_BLEND_OUTCTL_INTERLACED; else val =3D 0; =20 - 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); =20 DRM_DEBUG_DRIVER("Switching display mixer interlaced mode %s\n", @@ -418,8 +416,14 @@ static const struct sunxi_engine_ops sun8i_engine_ops = =3D { .mode_set =3D sun8i_mixer_mode_set, }; =20 +static const struct sunxi_engine_ops sun50i_engine_ops =3D { + .commit =3D sun8i_mixer_commit, + .layers_init =3D sun50i_layers_init, + .mode_set =3D sun8i_mixer_mode_set, +}; + static const struct regmap_config sun8i_mixer_regmap_config =3D { - .name =3D "layers", + .name =3D "display", .reg_bits =3D 32, .val_bits =3D 32, .reg_stride =3D 4, @@ -434,14 +438,6 @@ static const struct regmap_config sun8i_top_regmap_con= fig =3D { .max_register =3D 0x3c, }; =20 -static const struct regmap_config sun8i_disp_regmap_config =3D { - .name =3D "display", - .reg_bits =3D 32, - .val_bits =3D 32, - .reg_stride =3D 4, - .max_register =3D 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) =20 static void sun8i_mixer_init(struct sun8i_mixer *mixer) { - struct regmap *top_regs, *disp_regs; unsigned int base =3D sun8i_blender_base(mixer); + struct regmap *top_regs; int plane_cnt, i; =20 - if (mixer->cfg->de_type =3D=3D SUN8I_MIXER_DE33) { + if (mixer->cfg->de_type =3D=3D SUN8I_MIXER_DE33) top_regs =3D mixer->top_regs; - disp_regs =3D mixer->disp_regs; - } else { + else top_regs =3D mixer->engine.regs; - disp_regs =3D mixer->engine.regs; - } =20 /* Enable the mixer */ regmap_write(top_regs, SUN8I_MIXER_GLOBAL_CTL, @@ -484,25 +477,25 @@ static void sun8i_mixer_init(struct sun8i_mixer *mixe= r) regmap_write(top_regs, SUN50I_MIXER_GLOBAL_CLK, 1); =20 /* 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); =20 /* * Set fill color of bottom plane to black. Generally not needed * except when VI plane is at bottom (zpos =3D 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); =20 plane_cnt =3D mixer->cfg->vi_num + mixer->cfg->ui_num; for (i =3D 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); =20 - 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); } =20 @@ -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 =3D &sun8i_engine_ops; mixer->engine.node =3D dev->of_node; =20 /* @@ -566,6 +558,11 @@ static int sun8i_mixer_bind(struct device *dev, struct= device *master, if (!mixer->cfg) return -EINVAL; =20 + if (mixer->cfg->de_type =3D=3D SUN8I_MIXER_DE33) + mixer->engine.ops =3D &sun50i_engine_ops; + else + mixer->engine.ops =3D &sun8i_engine_ops; + regs =3D 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 =3D devm_platform_ioremap_resource_byname(pdev, "display"); - if (IS_ERR(regs)) - return PTR_ERR(regs); - - mixer->disp_regs =3D 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); - } } =20 mixer->reset =3D devm_reset_control_get(dev, NULL); @@ -638,6 +624,34 @@ static int sun8i_mixer_bind(struct device *dev, struct= device *master, =20 clk_prepare_enable(mixer->mod_clk); =20 + if (mixer->cfg->de_type =3D=3D SUN8I_MIXER_DE33) { + struct platform_device *pdev; + struct device_node *np; + void *data; + + np =3D of_parse_phandle(dev->of_node, "allwinner,planes", 0); + if (!np) { + ret =3D -ENODEV; + goto err_disable_mod_clk; + } + + pdev =3D of_find_device_by_node(np); + of_node_put(np); + if (!pdev) { + ret =3D -EPROBE_DEFER; + goto err_disable_mod_clk; + } + + data =3D platform_get_drvdata(pdev); + if (!data) { + put_device(&pdev->dev); + ret =3D -EPROBE_DEFER; + goto err_disable_mod_clk; + } + + mixer->planes_dev =3D &pdev->dev; + } + list_add_tail(&mixer->engine.list, &drv->engine_list); =20 /* Reset registers and disable unused sub-engines */ @@ -672,6 +686,8 @@ static int sun8i_mixer_bind(struct device *dev, struct = device *master, =20 return 0; =20 +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, stru= ct device *master, =20 list_del(&mixer->engine.list); =20 + if (mixer->cfg->de_type =3D=3D 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_c= fg =3D { }; =20 static const struct sun8i_mixer_cfg sun50i_h616_mixer0_cfg =3D { - .lay_cfg =3D { - .de_type =3D SUN8I_MIXER_DE33, - .scaler_mask =3D 0xf, - .scanline_yuv =3D 4096, - }, .de_type =3D SUN8I_MIXER_DE33, .mod_rate =3D 600000000, - .ui_num =3D 3, - .vi_num =3D 1, - .map =3D {0, 6, 7, 8}, }; =20 static const struct of_device_id sun8i_mixer_of_table[] =3D { diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.h b/drivers/gpu/drm/sun4i/su= n8i_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]; }; =20 struct sun8i_mixer { @@ -216,7 +215,7 @@ struct sun8i_mixer { struct clk *mod_clk; =20 struct regmap *top_regs; - struct regmap *disp_regs; + struct device *planes_dev; }; =20 enum { @@ -252,13 +251,6 @@ sun8i_blender_base(struct sun8i_mixer *mixer) return mixer->cfg->de_type =3D=3D SUN8I_MIXER_DE3 ? DE3_BLD_BASE : DE2_BL= D_BASE; } =20 -static inline struct regmap * -sun8i_blender_regmap(struct sun8i_mixer *mixer) -{ - return mixer->cfg->de_type =3D=3D SUN8I_MIXER_DE33 ? - mixer->disp_regs : mixer->engine.regs; -} - static inline u32 sun8i_channel_base(struct sun8i_layer *layer) { --=20 2.54.0