From patchwork Sun Oct 12 19:23:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 819 Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.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 E6B7F272E6E for ; Sun, 12 Oct 2025 19:23:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297024; cv=none; b=bfGHHUWf00WOYdriAaDs8xoaNqH34ML+in/ENbCWFw9EhatYoj31pK8lKe1nQlCG3rCNvAEt4UbTXPeA2uPGq15N7nRHa3tNCVrhrzRhMQytqzBwQR680zWw8v1tSh1tu7pg4iLGgko+PKwhcANN1gxiOsMmbWvJ1fYKlo/kymE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297024; c=relaxed/simple; bh=QfNARh4pPe+cdZZuy3yeIiaQzdxv6g6o5G8d6KVVAlE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NxmrPvuPrZgOnQJCFmIl6ul+hbXXHiajztNtAqbOAiOU1c3ZNRn4DNthErgg7yqmfUr/66G6Pa4q+UV2GTx5f2wyxt2qnFic0TJU0gOR60rZ82ZxuMTUUhgnAzSRqzcdeU/vXsWfHjwZWaZXxtTfg+AKbWjFnJp1dPjG/U97BZ4= 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=fOc7FSiq; arc=none smtp.client-ip=209.85.208.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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fOc7FSiq" Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-639e34ffa69so5473770a12.3 for ; Sun, 12 Oct 2025 12:23:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297021; x=1760901821; 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=ftu6zu8GSme2+XDOtZSOO4FVxV/p+JAxG+4qy5/uDJg=; b=fOc7FSiqe3AsDdawvjLMddslE7sh4DRK5hKRvaoiSYsIo0OlueB3ooB5pKpIe2X63k hXTtNwF1+JFg5AZ6M4sDfRNOQ1/ym4Un0lWt2bEHJY8u5vEG9rSUtUOoD+FkRFEU//Yn pNeP+etDH4JiNlnZ0xf9WRrBnLUi+PToY81bUSuW/gWeX2dpktWKBu4mH1dtQcwIuIER tj1ApoXkUqMEgQt8h2qJxSA4CTX6xeXANU2pPutH/rEOoCCabljBnApVapssD+4oPk6J Y+5i146jUrtLjF/3cQPbEGG91/CSpIFrXT5koRXqcyQTAEVol5zGOFXnA/GxJzZ81mZ4 n7uQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297021; x=1760901821; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ftu6zu8GSme2+XDOtZSOO4FVxV/p+JAxG+4qy5/uDJg=; b=vzODqBJxiaErPzplCJSd8dbFzsYhP03zvNwcUEcTYsdh3JdNsehT6cQUrKln7prBky 2Yy5udC89HT3KEKc5nnDP+Spmn7H3Fx/YWivz9Y1T+eTOhAAMg7lOvTvq8ItWPWCcCRR x3JkhufP8KcgtjwleL8O+MX06lIg1a+mp34pGZOJXFiSr5chDcwfJTy8W5knOJvKZ6za 2qMMh0xzZuaEGzkhyWa/NNy3ZXpv3zUl54m/tYovP7jTt9zR3gCKYzjn3+OV69sWY1GV R//0PlHnSXKhuCDcI5tuPybPhP6fk1SaQOOfNWP0TbDa4/7ziK0b01S3j1yVyTJJPu55 qj8Q== X-Forwarded-Encrypted: i=1; AJvYcCUcNs/VU4Ohw1B/6mXN/pZakyRB0oiRhsaB41NGypasNUdNUBoWtyUxM7Y6xxE972f6lmmjyR3++eGmwg==@lists.linux.dev X-Gm-Message-State: AOJu0YxGn4hFPtLT6JPXx/WaI5QvxXOint7B5g79VuIZA2UQ3bjJ/Jsf 4DufZsmb9dwZ0QADkoS+OnE+H3YIdQlyUuCt3U08eyHYjQ+XgFkZAdzX X-Gm-Gg: ASbGncsi2xonPnMF/NzFd0QkYqKLshbE0yoj0n+2C6u9t0/ZdxqsXESTTt5qvkiVj2G YCFp9H7F+KITPSzFMYCyNF0beVUtfXKRDzLypWAHT0KOXZlPlCMQlj6xs+RwckKz0+1hR2fNvjB pHG+gjv1SzYI8teCtyeNj2A8te83PPJ0giys5mNVlJJghGdPwEstRy4dsXu4CPuInH0wIMzukvq 6uUKiy3unnFhA4OdxIAsY27ERe0B9yiZphhq+kxo/z2wKrsPwE2bDQp+LwW63V5muwMUMrFO9pG Pn4zSroSPQXbrIZ7Tudj6TpQgDUkCZhOWHp0W3tZ0rv/+Sbh8AFtPT7hi/6WjXjKDuPPvt+lVht X+dnMNDJfN9DRCJXgE5FIpQ7Js8IQAXu7AD+nYjfhO4OI3QAmiXEOcRspilKLYre5edXhut+WtG UHe6FpAM8MD7cyTGBJzF1fffyn20BQy4Q= X-Google-Smtp-Source: AGHT+IG0sfEJIgIhhCJn3/nqxzgHPFNNqWX+VjerNb/aGPJmXt/GeMNgqqdE+ygKI0NpsjQeQpcZAA== X-Received: by 2002:a17:907:2d22:b0:b49:3ee4:d4a6 with SMTP id a640c23a62f3a-b50aab9d96bmr2151162666b.18.1760297020857; Sun, 12 Oct 2025 12:23:40 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.23.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:23:40 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 01/30] drm/sun4i: mixer: Fix up DE33 channel macros Date: Sun, 12 Oct 2025 21:23:01 +0200 Message-ID: <20251012192330.6903-2-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O Properly define macros. Till now raw numbers and inappropriate macro was used. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_mixer.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.h b/drivers/gpu/drm/sun4i/sun8i_mixer.h index a1c1cbccc654..b5badfa2c997 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.h +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.h @@ -39,6 +39,9 @@ #define DE3_CH_BASE 0x1000 #define DE3_CH_SIZE 0x0800 +#define DE33_CH_BASE 0x1000 +#define DE33_CH_SIZE 0x20000 + #define SUN8I_MIXER_BLEND_PIPE_CTL(base) ((base) + 0) #define SUN8I_MIXER_BLEND_ATTR_FCOLOR(base, x) ((base) + 0x4 + 0x10 * (x)) #define SUN8I_MIXER_BLEND_ATTR_INSIZE(base, x) ((base) + 0x8 + 0x10 * (x)) @@ -242,7 +245,7 @@ static inline u32 sun8i_channel_base(struct sun8i_mixer *mixer, int channel) { if (mixer->cfg->de_type == SUN8I_MIXER_DE33) - return mixer->cfg->map[channel] * 0x20000 + DE2_CH_SIZE; + return DE33_CH_BASE + mixer->cfg->map[channel] * DE33_CH_SIZE; else if (mixer->cfg->de_type == SUN8I_MIXER_DE3) return DE3_CH_BASE + channel * DE3_CH_SIZE; else From patchwork Sun Oct 12 19:23:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 818 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.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 BDC511E3DDB for ; Sun, 12 Oct 2025 19:23:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297025; cv=none; b=qGAMwHFKFNL12IioIV3vHFMdL69AYRocqqqIOA3+8fswaFguiX+RSICVMm4Yd1IujKYa7E6uvn+HcK0Vf0m/b8vUNf2Q+5H+2rN58ZJDe8MtpD56faiMsXEReXiH5Q6NmeMhELWMDOEwAC3LXGhG3ftoWsoC5+pEWTww9m3JvQE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297025; c=relaxed/simple; bh=NgcvXnqcgYXjrcWR7jLLpOQ3cQB6p2pkTov3MyQ+eCE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lsfey/Uv4gS+bJrZV1tfn1966+VPJ7BZMdw/6eMIqRsR/JWjyzx6gtAgPxnZbjjKCzwXjP9OnrwqJ7M+nA2QeRZtqf1q0HDlqYhOGJ/RnTQ5WKC3MoUFHy3WJX0k3aqHHdpBS0hcBBYtqxQmisrfTw6aYLPwbjSfiENbR108d48= 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=nhrKSx8A; arc=none smtp.client-ip=209.85.218.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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nhrKSx8A" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-b50206773adso841304166b.0 for ; Sun, 12 Oct 2025 12:23:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297022; x=1760901822; 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=O9pllFFRdLbfJa3CzMw9MDenjUagmZAUwkBtCn+ZhPI=; b=nhrKSx8AjIzYf2wmc9YrwoZhy6d6g8MD9ivotnlNSdXoox/nO3kqz8zvZeTunGa45x 3CUITKk8q2pG4xpkDLsXqqacoVgkZd7tbZzqwjjXdDSiHRtmWhrmOpQsY5Nbfl+tFOLr mUg9o8Z4S5z2cQpfRg5Cn8NfBs1QDWhVuwIxe3UlcYjRlGX1xnAKx+1avKKZEFwx9lcd PRUK60kiSqtedHigHHWIKH0Hb+S6VBD9QTMdHlAbwYMV/QRdepPQcamgoSkwsJdd+JCs ye0gSf4Bam/UhkRPUrIDE/gCIJxwpuRsYTfrmYfPIp6a/gyn1umf4cTIKMK8EF1e2RD1 8a1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297022; x=1760901822; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=O9pllFFRdLbfJa3CzMw9MDenjUagmZAUwkBtCn+ZhPI=; b=n31hKk48h2rgHNg1AqxqryPEpWj0Dk0faO+L38w+9yiXugX2TJpSGS0oMvovPX0zT5 jnf1kduRaQBQrpZiZ5acyVPpaQVuZ7CkDVh5MdID4jpTG6tjw0vwzooI5YdVgHoJc30R zsaNDZ+pZh01CcnHFP+sqNyzulK99gXTEdZ0snpf92wrYZ1fan1jI3RxZw80SWGlpiQ9 hhdfWW1mDeLk1kc8GFZoJcci5ecT9tmC+rOhjqq3+QT1X6ALdpqABvfIUjImylERPcAf bqRsFOHnqCRc0owdgETipDixiG9JEeliFfMXiwcroq2tnfVQ+LOpTeLI3l2Hd2yt+Yes FORg== X-Forwarded-Encrypted: i=1; AJvYcCW/F/VXTf3X0nCC3Qn4NERyIWfD2nzdtXGFSccvGg9P9BpNEOFJoIjI/NCUg3FIRBKPdRWvJNjHkvx/4g==@lists.linux.dev X-Gm-Message-State: AOJu0YwNF6JIDdhgFq7wBvZ7nBtDHNlgNfeoc4rJg1BoCM93++acFwNM zTiXRhieQ+7TmB5j7lhmWuxgDkn7cWUxgqvijC7Xzaa0Oc7zFX0eEufi X-Gm-Gg: ASbGnctrY8W5I1MDTuNX3rpHWuCrC+9Qidu8UjbMWWAunLFEGTfyzWlAOJ8ZDiDUPj7 VHY68jtXkeNAW2HXdCsv40IivSuN28anOhqCA8pc3DXrz0iTLPKJyd13GTf78zw+kHs+9vKnQ7B ex6wFxipM4m/+Zx3wD/6hfrZUyN5tRkWExwbLieBhjN3/N0UIAj7axHmvvqem6zCGwIU8Lfe+6Z odOsCNNKBfZcBwGEpJ468o8Ga87R7VVTry5rTnxT/gLdjcxup7eZpEdPLk4Ox9NrWID8obcVhyM PPhG/ZMqQ4xrDN87RwrnSg8ZfKUJqrD2fW/RJVQ+2lKUg4noXeE5XXb5KL9/+7V4ElAHpr7/cJ6 cPgp9LhX4LFgE3PSdNvRRBtoiA7+iRK54rCwqzp3Gxr00c9AE8VHwz7iRH+8Wmsw/r9cvm1yyt0 e+xA9uurdnjDw4J60nNBMo X-Google-Smtp-Source: AGHT+IHSovbe/H5UYTgSA1JPDJbOFUPVXMxcZWI/chJwYDsAxjOuahQb+OA171YuZ238MSsvaekD/g== X-Received: by 2002:a17:906:6a16:b0:b23:20e7:b480 with SMTP id a640c23a62f3a-b50bedbf4f1mr2357634066b.18.1760297021975; Sun, 12 Oct 2025 12:23:41 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.23.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:23:41 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 02/30] drm/sun4i: mixer: Remove ccsc cfg for >= DE3 Date: Sun, 12 Oct 2025 21:23:02 +0200 Message-ID: <20251012192330.6903-3-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O Those engine versions don't need ccsc argument, since CSC units are located on different position and for each layer. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_mixer.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c index 31a8409b98f4..f7f210a925f8 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -790,7 +790,6 @@ static const struct sun8i_mixer_cfg sun50i_a64_mixer1_cfg = { }; static const struct sun8i_mixer_cfg sun50i_h6_mixer0_cfg = { - .ccsc = CCSC_MIXER0_LAYOUT, .de_type = SUN8I_MIXER_DE3, .mod_rate = 600000000, .scaler_mask = 0xf, @@ -800,7 +799,6 @@ static const struct sun8i_mixer_cfg sun50i_h6_mixer0_cfg = { }; static const struct sun8i_mixer_cfg sun50i_h616_mixer0_cfg = { - .ccsc = CCSC_MIXER0_LAYOUT, .de_type = SUN8I_MIXER_DE33, .mod_rate = 600000000, .scaler_mask = 0xf, From patchwork Sun Oct 12 19:23:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 817 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.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 1C7E92F1FDF for ; Sun, 12 Oct 2025 19:23:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297026; cv=none; b=UBRB/I9AoMqKmaqk59AlSVPttU3ZEcDNXDptSFtrUpPFFw2CgFcvlaqMRMrIeuWv/vpV7thslLRaFU3pZJqpangndnEVw6mUoMWats2UwM7EwhY7q9lrJotMZIYgULvActIFzpFQre5/1/Kh1WL9aOiJUzgyr4IWBeMlTYh6dfQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297026; c=relaxed/simple; bh=tT1h4I4+dPWk/KoNyiQ6dHE5u1ti8FQV1X36C3i1/1w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CTUbHE7UZem1yPZzjOGcylSZpL/j/kZJ4g9QausYSSQBLTJOGOB9I3JKhjPVKidA1AzN6eIHCUqWftHm7jeZIQkj/4ZlUrmFfGVdSiN5zgQlJJjQfoV0VHNVCU3UDxSDSAp8A4cZZcd522SXligE7g/f9Iy7f/f87oM8xVd1zqc= 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=gNvw7V8p; arc=none smtp.client-ip=209.85.218.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="gNvw7V8p" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-b3b27b50090so653277666b.0 for ; Sun, 12 Oct 2025 12:23:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297023; x=1760901823; 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=b/RwR7PkAt08sGqCqdeSYXHmOvdiEO3Sen57EH3VrWU=; b=gNvw7V8pyMhskcgWumUCOTZeTaHH9ZvcwTNat9rbmSG6H2ftrHVLBRBFXHJL8jPBpo iJHXS064u7SZ9xXD0UMTMjrnS790+s8k1v5ysvk9wONaR3JFcjQjjSXC6IArIbf3UTIc 9yhSuuiy2Nlf8mb5msB0xhghMwgm063moWxRchL1SCOKByjP1ykviJysrRT77GSt2Xbl SKOV1QIUJavFTpKTGGVjFuh09LjLzlqjnOIdRLCKLJqrFWfl42zeZIofGsLKV2ZnXPiu 4DEeZDKp7y15BjsZSywY18LsUWXNpU7js6erWx7ne20xFZig1xD3tLT3ajKZekrEUyaO FYgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297023; x=1760901823; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=b/RwR7PkAt08sGqCqdeSYXHmOvdiEO3Sen57EH3VrWU=; b=ZghUgOjGA1BqsC021TYsOpj+/JAX43IFtJ0OiPVnvPPrODTzrAFG7o9VEN83qlGhuO w21qBYRN6JU4NzWzNfpM7EMWRE0vgG8JTv6NpZ0WTIlWIZVUpcb007pvDXP5V4WkJ0y2 e2ZmnwkylzjueRlmBKk6gO7UCJDaJkLAL79ObAql4LrvikTui23HXjJOO+9Jzg71yjd2 yyKX1wXhEdXHIpimDbJ7rEbBqZ4au4nb1ciQIHU7VLpS/E34PemBDQO3S4fWuWfqGXiI bBOHyrLIF4PcSsWuptXrZ2s2r6WayedegQoKDTZwUGMbQABivNrqA3TP0uPiX376aIFs KxPQ== X-Forwarded-Encrypted: i=1; AJvYcCX/BYlT4LLQFs4s3/ReuvLghmKv0i+VJRHS2JmVoNDJGsj/p7ah/6n1cuXnSvplqteY7loAujt8L7ANMQ==@lists.linux.dev X-Gm-Message-State: AOJu0Yws9gFNvoSllEd3NbyCKsiqzVi6fTI39lHbFnflJ20cGsY+EabZ Kcta2V05i2I506lyUy4WaVctspJnxChK3toDD/rn779q4tWvJq7Nd8vB X-Gm-Gg: ASbGnctN25OtGDgtnFuJUp94H5G11fum6pkmuzlsv6EHtskmEIoJX/6KsVX79Zh41zm 5ZdcUbh5G6UFmlNAV6lpOWCTRQaD4w/Mg3Th84QCv7FdVhIjVe9/FmkYX2gK4Ccs9CWGF7po6KZ s5SR492HF7lH6Svwcbk+N0T+F+VacnAz+XZMQX9dwnxR/LUX7KY3UXhvUnM1wUw24TOX1VDYi51 MhXmg7dwmO0xf4YmETma0v+mqKPQONQj8s6hWxUTa435bMyvJ56bwVbUqpD5BmJwJ29i4BwIUJ0 3A0/LrRoJV7IFiEE+Gp/CQAFCyOPwGUPq4BMLTN+W+QeuAkdwtFPC4KgBlVbcreFr1Td+1RpAdL PCCotb13pKlV1OA6XSs5xzqzzsghRcTWIuRjeav7thUaRHQFm1/qe/CCHlvTRbME+7WrrGZy6TB yZkcNnm1hf2XuJJ4bEHhgLvahrV3DkX7k= X-Google-Smtp-Source: AGHT+IFr7DIU5+0XZbE3hR+c44DsyFKY1NvkxnYeQndJ+rW32FEQNP/zDp5N5Glq490y6QrN3W54Mw== X-Received: by 2002:a17:907:c09:b0:b2b:63a9:223b with SMTP id a640c23a62f3a-b50ac1c5db0mr1978491866b.31.1760297023111; Sun, 12 Oct 2025 12:23:43 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.23.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:23:42 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 03/30] drm/sun4i: de2: Initialize layer fields earlier Date: Sun, 12 Oct 2025 21:23:03 +0200 Message-ID: <20251012192330.6903-4-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O drm_universal_plane_init() can already call some callbacks, like format_mod_supported, during initialization. Because of that, fields should be initialized beforehand. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 9 +++++---- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c index f97be0040aab..9b786e5c7f3c 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -304,6 +304,11 @@ struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, if (!layer) return ERR_PTR(-ENOMEM); + layer->mixer = mixer; + layer->type = SUN8I_LAYER_TYPE_UI; + layer->channel = channel; + layer->overlay = 0; + if (index == 0) type = DRM_PLANE_TYPE_PRIMARY; @@ -334,10 +339,6 @@ struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, } drm_plane_helper_add(&layer->plane, &sun8i_ui_layer_helper_funcs); - layer->mixer = mixer; - layer->type = SUN8I_LAYER_TYPE_UI; - layer->channel = channel; - layer->overlay = 0; return layer; } diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index a09ee4097537..bd6c7915bbc4 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -485,6 +485,11 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, if (!layer) return ERR_PTR(-ENOMEM); + layer->mixer = mixer; + layer->type = SUN8I_LAYER_TYPE_VI; + layer->channel = index; + layer->overlay = 0; + if (mixer->cfg->de_type >= SUN8I_MIXER_DE3) { formats = sun8i_vi_layer_de3_formats; format_count = ARRAY_SIZE(sun8i_vi_layer_de3_formats); @@ -543,10 +548,6 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, } drm_plane_helper_add(&layer->plane, &sun8i_vi_layer_helper_funcs); - layer->mixer = mixer; - layer->type = SUN8I_LAYER_TYPE_VI; - layer->channel = index; - layer->overlay = 0; return layer; } From patchwork Sun Oct 12 19:23:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 816 Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) (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 D9D702F25EF for ; Sun, 12 Oct 2025 19:23:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297027; cv=none; b=JC5mk8QBqWPKtkIHoFtsOo5pNxw8zE8X/iVqubEIB21nqXUq6MMkKeLegegERNiQ5pD5SKd3n4FzXfMjHjrAUxeykXo6gzgA/1fDNqrMVKzK6DfJWB1zIbynBGQGbw/ZqYfM2MJSHXyrQera/Yq8OvuQzvIhpoH0CkAHXYFyjeE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297027; c=relaxed/simple; bh=u4zJwCXU32S2DxFOU42pX3PwMRTkMmLg20q8/nGcEqc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PwcUN0DIdQ32YwZap2cgxbibtv0SFF3PVfBdK9elxJbZy6Ym7MYqr+iVLKj3rLblami1G0N3HaIk+r2YBtvZ5JwkdkwVzT4QbKig1p4RWoqg9rkcjMwFsKvCX2QWN84iNfBxTR/G+ljL7qyQq6+j+2OuHbXWo95NxSuWfimhO98= 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=mAi1uCxv; arc=none smtp.client-ip=209.85.218.53 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="mAi1uCxv" Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-b3da3b34950so600168666b.3 for ; Sun, 12 Oct 2025 12:23:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297024; x=1760901824; 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=fXCSCCah2zJTGYn4GhhYKHAkgqZ3YCUPfwGM8ymVWuc=; b=mAi1uCxvWt9tu3D/DnHJC5p3ttisiXKQdQKc4Jl+QmHlXyfGv/TrMixsgd1lMIgxA4 11IE7+NzI50jk8K7q2nYAYwI6R/W7J1aMg0y3Vf5drspfXPmVJLxHRnpxhCSHwWd9VIH /PCnx85RtT+liy8pRWEvnK8oIXoo7KQ6X7ANbupfa1mJdF5HgU0HdG0ODPeTPKr6S+Hx 8Z5U0inFp+uO67oKwmGhGPPuv0MzbYKJLbZ51EPfvfyb83EEGDj1yY6EUixmt2hUs83a zqNHT96DrPCw1VboZDi90tgaf2YEYr4cGCz1IviOg1okJjMIUmpSASk3Qs6lPuXxPAR5 6s6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297024; x=1760901824; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fXCSCCah2zJTGYn4GhhYKHAkgqZ3YCUPfwGM8ymVWuc=; b=X/5CqnC4XBapE2OUjSAPfmu63+MvsLaLV1BmI5FQrOt/dhw+WtbMgVYbIOhaYGnaX+ Rw5LmHXFbi0vRuMDjCUy9m9LQ3w8RM0cCz2cuBQaXzgvkLQTRV/1jGDtpZ4WMakb/0Dn NofAfkaKGRomOXAf+iy0w0E4kd+W9rPhLJRap2c9fSMaVhSRwwukm4knGnBwA5FmCkJX 96IYjYl19bfRofIQxqOpbj99iM8iyNlkuX37ElzdYYD4+MeFVFZA0TTdOAn2S8HaZ4I7 eSHJZQPxpLTNde0jIBiVtCSDJiSo+yUcpJqaLYmEOQb7CVAZKfmFJZGgbPG1G+LFwiEP kZjQ== X-Forwarded-Encrypted: i=1; AJvYcCVST0dpzJiLNOBffbVXRuWfWdnFfJIqe1RwaVgFkbZaeWwpr8Ev+QgkHrRbm04r2eAiaPbSXQ3UeCTaRA==@lists.linux.dev X-Gm-Message-State: AOJu0YwmSMwaHbgXOcXtNo8F9ucOjfHUp0ft09C54VIeWRetgl52i6F7 4zF5p/zCqmz31ZXUhqtTEjBDjxXwFpzZ80qNoxh5QG30Pc83gzHLkjfR X-Gm-Gg: ASbGnctah3zhOlPoYMsY89cMhj/4yfN/nmoUwQBe0kdw2heFhw5auKkjM2AaZ7GRZDa z/oyLLP70PzGGftiHpY3pOm+HNuqgE8f5PH0IEAg7tVe7wiT3Es67dHBUcj+MuX6IgRes0psSza VZCDHli45+R+OfV8oO8OFiHJ6xQQqHIix2Sfkxu7mmdSslCvUr+N9kIBGYr+GClbEQ7RrazMXkx XYo12vWSrmuSEuV3TGNrawJ7oEHoC27AwUKxqZ7PLc+GfDeNGrMxrpuzEtomnLjEFyTZHonfEbU Znsyn0GHhZG2vY82PYBzcxSnZ6sxV8BoBBaMwjzdA2j/MA0Pk139Kl7AngK/zsX/A2mnr8l/kas ZCyZACRlk017j4A86aUE2L8ap/jJ/oiUdDEnH/dkVR4B8pvWWeV+UteMOkj50qKSGHN0FNC9seY aS5gwAIkLWt0g7Oj2bwn0mghdhm2YA6tEs0urAwPaNvg== X-Google-Smtp-Source: AGHT+IEiNoS/+6UzRTSzo2B8Y29/AU5s+BLBdQ9yTmKb3fJBI9Fgd7dqesLSL2/Rv8CrMfvApRR4kg== X-Received: by 2002:a17:906:f584:b0:b43:b7ec:b8a1 with SMTP id a640c23a62f3a-b50aa38724bmr1988751866b.24.1760297024252; Sun, 12 Oct 2025 12:23:44 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.23.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:23:43 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 04/30] drm/sun4i: ui_layer: Move check from update to check callback Date: Sun, 12 Oct 2025 21:23:04 +0200 Message-ID: <20251012192330.6903-5-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O DRM requires that all checks are done in atomic_check callback. Move one check from atomic_commit to atomic_update callback. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c index 9b786e5c7f3c..fce7b265c5d8 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -134,16 +134,11 @@ static int sun8i_ui_layer_update_formats(struct sun8i_mixer *mixer, int channel, struct drm_plane_state *state = plane->state; const struct drm_format_info *fmt; u32 val, ch_base, hw_fmt; - int ret; ch_base = sun8i_channel_base(mixer, channel); fmt = state->fb->format; - ret = sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); - if (ret || fmt->is_yuv) { - DRM_DEBUG_DRIVER("Invalid format\n"); - return -EINVAL; - } + sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); val = hw_fmt << SUN8I_MIXER_CHAN_UI_LAYER_ATTR_FBFMT_OFFSET; regmap_update_bits(mixer->engine.regs, @@ -201,7 +196,9 @@ static int sun8i_ui_layer_atomic_check(struct drm_plane *plane, struct sun8i_layer *layer = plane_to_sun8i_layer(plane); struct drm_crtc *crtc = new_plane_state->crtc; struct drm_crtc_state *crtc_state; - int min_scale, max_scale; + const struct drm_format_info *fmt; + int min_scale, max_scale, ret; + u32 hw_fmt; if (!crtc) return 0; @@ -211,6 +208,13 @@ static int sun8i_ui_layer_atomic_check(struct drm_plane *plane, if (WARN_ON(!crtc_state)) return -EINVAL; + fmt = new_plane_state->fb->format; + ret = sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); + if (ret || fmt->is_yuv) { + DRM_DEBUG_DRIVER("Invalid plane format\n"); + return -EINVAL; + } + min_scale = DRM_PLANE_NO_SCALING; max_scale = DRM_PLANE_NO_SCALING; From patchwork Sun Oct 12 19:23:05 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 815 Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.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 2B5E72F39BF for ; Sun, 12 Oct 2025 19:23:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297029; cv=none; b=f3ndU/Eacz/Z7jZ+bWn4WJmwmAxtjorj6ZpT0kIW+Ypw4a4BOvQVoZNAj3OEVJV+ZAHN+yfJgl58efJltQxtGEJumkmnKnuy4FDvLpdnfyhSjbNnkbhSyjRnwlwby3RGtR/ush6Fzwn/0YlduDI7DaECyi+rVuc0va+jPSJ+sB0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297029; c=relaxed/simple; bh=NerHgxbZbmjyVYRLnhATBgZKX10HzgN5zpQm6t10Mcw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=t05dBV4vXLhfs0Sqh6CJHaOddxanulXo/koAwrOVV2d+ukTViLEwaPYE64vdsUKmKPhpnOqQWtg1G4VKMm8cIrk81HfKPWkdggyjZLmD4PRMgBGyqthhjBdB/wmmisYXzOfEx2wBw5o4zMgJjXCjx4CUeG8I6Q2KLbCx4+bZG2o= 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=CFp+HdZ+; arc=none smtp.client-ip=209.85.218.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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="CFp+HdZ+" Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-b4aed12cea3so575816566b.1 for ; Sun, 12 Oct 2025 12:23:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297025; x=1760901825; 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=hnlOJ2n+kaG3xIG2KBBQJX6KsaJhFDRkiLuLt3jD0qw=; b=CFp+HdZ+Kp+eOsYm76UMeMpuPqJFrniLDTPrlnEK8adQyutCZofZbosUawDAo35axa V+yBrGG14wZcNZUay72RenDtFw/E5tdznlKaGu8v/1EvZLheb70oihzVvQmR6S4ep479 ssx8Swg159VoHbDuTu1mjd6sODZFVInbqAsNrGOFOPH8ohtwYg7y2JAa8G5rfvKK2BnQ dyo/E/mQz0kyJKgfW+JCxJei88ADap4TO4K8YNlzlOfJ82elJ6VLLO7aGbTTZQ5VvN89 l592pyR/ic0wTe6QWOJmtoOaZ+KqLZs8FkftGAfocSsflA8r1/vjl0wgcESB9tw+sfJl zeNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297025; x=1760901825; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hnlOJ2n+kaG3xIG2KBBQJX6KsaJhFDRkiLuLt3jD0qw=; b=dxkYrR9fxYrhL7WHgp0ORDTFEo3ZoVj8RCYg1PuzGakMq/kxjNgimlm75cG8Tm227J Zuo07FqrSkXSrf1TCcoaEx7r3NRkxra2KRe7ovC8ju6mgj+71EvjOXtoAoA6xE5slU3D mHg1/IRcdk2MgQLo/QglNW4CW48f+rARktWVXs9XDF6dIAUJT/cUFWFUxxR0fLv1AiCh 1K+azntiG6znhs2Rv25j3L15tR+JrKmMWUa/BLTEvfvrsNAXoSxW5eAagtg6dIrzpxv6 bzA7mVuRsERIbBPidEhisK4dHpHayMaPBgdrsDWKt2lBJ/p7/N43ajDHZagfdHlM9Eas VvYg== X-Forwarded-Encrypted: i=1; AJvYcCU5FMzuxyulAF82+AdzEpZjWesplY8oMBwoggEw3lCMvneinZNfmcPJ/0H+4LiSuQ3GBEdpEjj43whTWw==@lists.linux.dev X-Gm-Message-State: AOJu0Ywjguv1a55/CRW/JWdHDoVHWT73CYOoApwMJNBebauYP5c7KTHz Ak5q257KMUxLdWWdkxxwz1vpyav9O3IN7wQahfnDhz/VFsBZ5cmAeet4 X-Gm-Gg: ASbGnct4cDvlOgxUQUvYY3WkSMNBfeXSsz6eGExwnnyXkTeNLdt4+/3XJ12eo1y+CWz iEBNrpKUcCiMNsXDOJA3sLmxxK5yyWSM7KW3k5YJwd5AF/5TereSS2SLbQb47cM+KoMOTyD3D3+ xSFe8GuC/meHbIYtDR95Up/vGiF9yMi+GMY8jfrvcNZ4q33Q9HFgkE27byz9iAH69rsQI+cuv/d Augqu+5JR9jhwan8kvt/P7jQ3Ud4QovVTy/xhdcqdVHsq4wr2A9AHngyia/rV2t9mfYo0K07ykX fXcnll1uIHJlGN3NcoJpfQTAT9hJeps4S8NCu/SpvM2xZIno89uPfXn3iWtEob39udYz4P1ANxb D5FBhe++gnHK/o+7BFSsnOqliF1jw5nS+ZI/FhovDE11zeU2I1sz8Fd4oZPP+W6bjWJedXhaTwn UpY757bvV7IeKFfFbGNzKy X-Google-Smtp-Source: AGHT+IFJXFSppj2HoIPfT0DNF82Abv4mtxDvrxkAHw6b76kGPg7cFa3ESgHvRApJqFhlZJceziWZkw== X-Received: by 2002:a17:906:c149:b0:b45:60ad:daf1 with SMTP id a640c23a62f3a-b50aa8a92e3mr1797895266b.22.1760297025416; Sun, 12 Oct 2025 12:23:45 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.23.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:23:45 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 05/30] drm/sun4i: vi_layer: Move check from update to check callback Date: Sun, 12 Oct 2025 21:23:05 +0200 Message-ID: <20251012192330.6903-6-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O DRM requires that all check are done in atomic_check callback. Move one check from atomic_commit to atomic_update callback. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index bd6c7915bbc4..c80bdece5ffc 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -217,16 +217,11 @@ static int sun8i_vi_layer_update_formats(struct sun8i_mixer *mixer, int channel, struct drm_plane_state *state = plane->state; u32 val, ch_base, csc_mode, hw_fmt; const struct drm_format_info *fmt; - int ret; ch_base = sun8i_channel_base(mixer, channel); fmt = state->fb->format; - ret = sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); - if (ret) { - DRM_DEBUG_DRIVER("Invalid format\n"); - return ret; - } + sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); val = hw_fmt << SUN8I_MIXER_CHAN_VI_LAYER_ATTR_FBFMT_OFFSET; regmap_update_bits(mixer->engine.regs, @@ -322,7 +317,9 @@ static int sun8i_vi_layer_atomic_check(struct drm_plane *plane, struct sun8i_layer *layer = plane_to_sun8i_layer(plane); struct drm_crtc *crtc = new_plane_state->crtc; struct drm_crtc_state *crtc_state; - int min_scale, max_scale; + const struct drm_format_info *fmt; + int min_scale, max_scale, ret; + u32 hw_fmt; if (!crtc) return 0; @@ -332,6 +329,13 @@ static int sun8i_vi_layer_atomic_check(struct drm_plane *plane, if (WARN_ON(!crtc_state)) return -EINVAL; + fmt = new_plane_state->fb->format; + ret = sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); + if (ret) { + DRM_DEBUG_DRIVER("Invalid plane format\n"); + return ret; + } + min_scale = DRM_PLANE_NO_SCALING; max_scale = DRM_PLANE_NO_SCALING; From patchwork Sun Oct 12 19:23:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 814 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) (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 3B7C12F39C6 for ; Sun, 12 Oct 2025 19:23:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297030; cv=none; b=jelAOKUtXaAbzAfwA+AwHBDYJgUOEYSM2qNb2bXdBISyfAT8nR82qpPY9SQAa3CAgN7RHk31G8b5zp3vUN1jddFZch9LQgKqaXPjDBauHsZeL4Qa4NYJT/5VcF3JO1MyOKZQgCfMb6WKzEiURNpy4Pgu+OjLlmvxwpWsbIN+MZU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297030; c=relaxed/simple; bh=fYfxHjveYeIdJwIqKXkDSJoPX/pUtAR0Msi7yyPkYBs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KtbXwVwDNSRkXU0n2cE44LP5erX8ikf9Yc24owAkEffrUscVA+2lbo5W9zAHUF9ye8NJmWqT5dJLZLqRKp6zreFvd1ZMddi7vXZP3OuH0Uf/TckW4NG4FSutvb7bti+J1EdUxSLdDj5YDdRZzP3a6L6uMN1VaPctTs9wrY5c4xs= 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=OJySS5ab; arc=none smtp.client-ip=209.85.208.51 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="OJySS5ab" Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-62fa062a1abso6536545a12.2 for ; Sun, 12 Oct 2025 12:23:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297027; x=1760901827; 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=QhSOMeyyVEb/JHhqKdNE9M8XBPkXN/GvjKAdeA1KvOU=; b=OJySS5ab3c88RZh8Xow+W4JSEZAlY7FmAo+nBfZYGutw+cH7rGDJyuvQy6oRGEWkzX 4itvYGjTZ5nMbf8dE/0/mRr2qMZ2n/fvQ4DKqXOD7Qndykd2tFbGF1ae6tPF/l4AEI6v F0skGhUIja+rKK5OKplJTbc50S17tJBVfEUuZiYPi0AqDBXEpozAeQDolNyDAnt7NL+v Wu6XpngWDDQjQL/3L3I4UUWFgYHU3Ac+VGWQFcEZ+ip4Eu/h+jY+bUeQYw94mk5OhHAX 0iRaJwWAEsg7jP0ZL7I6Ytj15JWwWwGNbsbM8HodKxqB6SsLVaPK1aV2ZRSIU5MGpZjV 1vcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297027; x=1760901827; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QhSOMeyyVEb/JHhqKdNE9M8XBPkXN/GvjKAdeA1KvOU=; b=vNIKeJXorHTpyVlo+lqbpK/BcV0We4kexiP0gmEj7s3chUb5zi+vPECIGMVSDqNcdh r4Bhtw8W2sj2YBeith9eQmp+7b0F9UKiHoqBlbWZS3rip8xbQH20n7IR1I1FNV1jj0zw m/x56UvFUee4Foi6jEM1eLl7IuL5ldEHJ6m4iKqKCD9NV0GYo1bwaz5KNzriYl4Dp09q B6LIdzio/RtrszT8+Sy6uZ+9YVkEaTGcfrJoHqr+RGirrwphp/u6CvAHiW09Z01i8ZoJ zGmBDBtm2IdLVLoLAdokvwhL/cpU5sn9/XQ+cnFnkshiXuw/AYaVnkswLwa/yNRWmY2p jiKg== X-Forwarded-Encrypted: i=1; AJvYcCX88t+LsK5UkaA+gEGk7GSoQoVqxyuAF6zBWDmFEXqBdZTVXt/0pMd27yNo0P3+e1PmA3x2RauQv1fkVA==@lists.linux.dev X-Gm-Message-State: AOJu0YzpmENkNT+hQqj0uFCWO1kFnpfS2rfebk7Urh/YhiTIvcA2wvq6 Ey5kgLej9b6WSA2yv3EuHJb0YYWLe0sctRgqEzLnVw1HpG9LRm6YNaHM X-Gm-Gg: ASbGnctMeFjKASqVryQgDB/TexXlNRJBEmKq9x2gUjvQ3RcmvnnIT9+KqH3+J0SmXVl SB2KdI7rLHvja5WBAWKK0m3+/XNBu6OV/+cvW67V3eWojR8JAwr2kDuqjRqFDu5FTHz7D/LpFpX UjcyK6P0wmrkPdgcwvzljAyOGClI/sB9B3Pv4OaJaGTTyudjYJAIYOGy1by6RmjL3BGpful0F9M J6ahdb+v4/pF7val8cWt5xD2RHT7uBIkBoxH41o4OGJzGiQRoGFHfzXoOzYjC7qmW/W2gLjb9Dd IXt6eq+r4kXwSNq7FARNIMIGXGwuLGhAItTB0bOOEAn3SCtAzZOvubnBfMhhdlb0tCRN/aCLsTC umSwiOfwme9FfYq/4IKFp+6Ee1Hr6fmxeslU0SR5FaN4yO4tSkIUnHU5unvAW0WkFMmK7gaI+kl iTaykJURYyT9+BPYiQHjuX X-Google-Smtp-Source: AGHT+IFUbJ+FjAjKKsg6YJWZVxyDF8HU9W9iTbhFx8UICuTNacj1eC7uib49tuv2zK9lGVgNU785TQ== X-Received: by 2002:a17:907:72cf:b0:b04:61aa:6adc with SMTP id a640c23a62f3a-b50aa69e311mr1981823466b.7.1760297026601; Sun, 12 Oct 2025 12:23:46 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.23.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:23:46 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 06/30] drm/sun4i: layers: Make atomic commit functions void Date: Sun, 12 Oct 2025 21:23:06 +0200 Message-ID: <20251012192330.6903-7-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O Functions called by atomic_commit callback should not fail. None of them actually returns error, so make them void. No functional change. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 20 +++++++------------- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 20 +++++++------------- 2 files changed, 14 insertions(+), 26 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c index fce7b265c5d8..8baa1d0b53bd 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -46,9 +46,9 @@ static void sun8i_ui_layer_update_alpha(struct sun8i_mixer *mixer, int channel, mask, val); } -static int sun8i_ui_layer_update_coord(struct sun8i_mixer *mixer, int channel, - int overlay, struct drm_plane *plane, - unsigned int zpos) +static void sun8i_ui_layer_update_coord(struct sun8i_mixer *mixer, int channel, + int overlay, struct drm_plane *plane, + unsigned int zpos) { struct drm_plane_state *state = plane->state; u32 src_w, src_h, dst_w, dst_h; @@ -124,12 +124,10 @@ static int sun8i_ui_layer_update_coord(struct sun8i_mixer *mixer, int channel, regmap_write(bld_regs, SUN8I_MIXER_BLEND_ATTR_INSIZE(bld_base, zpos), outsize); - - return 0; } -static int sun8i_ui_layer_update_formats(struct sun8i_mixer *mixer, int channel, - int overlay, struct drm_plane *plane) +static void sun8i_ui_layer_update_formats(struct sun8i_mixer *mixer, int channel, + int overlay, struct drm_plane *plane) { struct drm_plane_state *state = plane->state; const struct drm_format_info *fmt; @@ -144,12 +142,10 @@ static int sun8i_ui_layer_update_formats(struct sun8i_mixer *mixer, int channel, regmap_update_bits(mixer->engine.regs, SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, overlay), SUN8I_MIXER_CHAN_UI_LAYER_ATTR_FBFMT_MASK, val); - - return 0; } -static int sun8i_ui_layer_update_buffer(struct sun8i_mixer *mixer, int channel, - int overlay, struct drm_plane *plane) +static void sun8i_ui_layer_update_buffer(struct sun8i_mixer *mixer, int channel, + int overlay, struct drm_plane *plane) { struct drm_plane_state *state = plane->state; struct drm_framebuffer *fb = state->fb; @@ -184,8 +180,6 @@ static int sun8i_ui_layer_update_buffer(struct sun8i_mixer *mixer, int channel, regmap_write(mixer->engine.regs, SUN8I_MIXER_CHAN_UI_LAYER_TOP_LADDR(ch_base, overlay), lower_32_bits(dma_addr)); - - return 0; } static int sun8i_ui_layer_atomic_check(struct drm_plane *plane, diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index c80bdece5ffc..dae6f83cea6e 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -48,9 +48,9 @@ static void sun8i_vi_layer_update_alpha(struct sun8i_mixer *mixer, int channel, } } -static int sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int channel, - int overlay, struct drm_plane *plane, - unsigned int zpos) +static void sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int channel, + int overlay, struct drm_plane *plane, + unsigned int zpos) { struct drm_plane_state *state = plane->state; const struct drm_format_info *format = state->fb->format; @@ -191,8 +191,6 @@ static int sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int channel, regmap_write(bld_regs, SUN8I_MIXER_BLEND_ATTR_INSIZE(bld_base, zpos), outsize); - - return 0; } static u32 sun8i_vi_layer_get_csc_mode(const struct drm_format_info *format) @@ -211,8 +209,8 @@ static u32 sun8i_vi_layer_get_csc_mode(const struct drm_format_info *format) } } -static int sun8i_vi_layer_update_formats(struct sun8i_mixer *mixer, int channel, - int overlay, struct drm_plane *plane) +static void sun8i_vi_layer_update_formats(struct sun8i_mixer *mixer, int channel, + int overlay, struct drm_plane *plane) { struct drm_plane_state *state = plane->state; u32 val, ch_base, csc_mode, hw_fmt; @@ -246,12 +244,10 @@ static int sun8i_vi_layer_update_formats(struct sun8i_mixer *mixer, int channel, regmap_update_bits(mixer->engine.regs, SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, overlay), SUN8I_MIXER_CHAN_VI_LAYER_ATTR_RGB_MODE, val); - - return 0; } -static int sun8i_vi_layer_update_buffer(struct sun8i_mixer *mixer, int channel, - int overlay, struct drm_plane *plane) +static void sun8i_vi_layer_update_buffer(struct sun8i_mixer *mixer, int channel, + int overlay, struct drm_plane *plane) { struct drm_plane_state *state = plane->state; struct drm_framebuffer *fb = state->fb; @@ -305,8 +301,6 @@ static int sun8i_vi_layer_update_buffer(struct sun8i_mixer *mixer, int channel, overlay, i), lower_32_bits(dma_addr)); } - - return 0; } static int sun8i_vi_layer_atomic_check(struct drm_plane *plane, From patchwork Sun Oct 12 19:23:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 813 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.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 707D82F49EC for ; Sun, 12 Oct 2025 19:23:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297031; cv=none; b=Y2iqD6XqsrOYJaMz/8HF2DBPEtlDRHgjQcl/6D0ccqPZQ2/Aw1pJ4e4+cU7Daseb73e2AXATlOwkmq0oIg764UakuYjOoTjvaAn8kuqDTKPspjpuNAGYnS+E4o2jgp+9+zR+hFIvqObCu/1oEMl25yXHM86nzbXHxj11FtGc6OQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297031; c=relaxed/simple; bh=MnVQaYVRpCuxuwcIoP09CCaM1HauxqazhwD06u6VpFY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=i7iunlhlsO7IDECKROPXKSpoBO7dxsyVje3iw2uWDC8PBUtAb26Bq0RHwLhaSgo2JB46PYYpYG+mCTBQoC0BxYwRVjyTSCaA5IguaVSZqoqfJJWpc88wARvJ6qpP4TZL/erEq2m7V5H56oKnyygQHklzm77IkOiaJ+271EyyGQw= 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=OkHjQ45I; arc=none smtp.client-ip=209.85.218.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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OkHjQ45I" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-b41870fef44so36669266b.3 for ; Sun, 12 Oct 2025 12:23:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297028; x=1760901828; 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=zG8bmd+ZBK/ghOVMNjmCpTsnMqAGeyE2Wx03CRuhE1M=; b=OkHjQ45IwhrW5b8hd7QeuijngO6QcKeUY/asTIwzY90WnSsAO/SkBbWOF57RxIq0Ql ccJj692/7QDUaP6Sk2piI54e/diiPcsPvtiR1ddqkaQNXTTPVpNzlVWq/C87aN+FMGzg SeDCzzB/UCBXCvH8+7JHu/smIu3UxdEfDJQpN2MdO7tnKFPQAdxo33/5DXBIwQZ+RP/K Xuu7wHW+FiVq01zC3882JbyYr22CzDePqeykAbk8hqYXbQnQw/yfA2j7bzt6MpCh9B+f u362+50aD0+wabLFNJXAMjpmXTIske319voFGIAZEp92BLwh5vKKzdGM9MjjX3UN6zlf Ll6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297028; x=1760901828; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zG8bmd+ZBK/ghOVMNjmCpTsnMqAGeyE2Wx03CRuhE1M=; b=Nd5tqzL4HkcF15vhZZBuTqxfMkDkVTTfdKk6FbmsmnkwloLU5deQCiovuEad7gVu1G RVL52uc5AEGfZ6D2y3OZ0sFRVCGnsETA4UmfLau0DbrKDYWC0IolX8Ifv4QM6+Sc8KYY 11BGMY8QwjhgSorYudkXDHcKViKAEraqYSdk+OSohY8hrxaKb8Qnxgs5zazfdppXW9fE LgVuRvCohhpvUuYE/KztRaFb5frnIxaaC3vtdzncVl5Z6KCsgzhWRDkMh4fpVyEFOsrT Evirkzo2i6CQ/nKqteBNV64MJwjiQl84PgjKhjITgD778qEXs0aUsHDoQCvTOdPJzXdj Jrvg== X-Forwarded-Encrypted: i=1; AJvYcCUtWFZ2+58VO8NkHwWAdsGaivgDu5lZK9pZc6a2vJ9yIpdyyca1rzA/dB/zE1y+P9w+3LjmtO6ipLubkA==@lists.linux.dev X-Gm-Message-State: AOJu0Yw8ItXqcY52YCZrc85QppreJWvA+2UYyCb1a38WVjkcEkQIbHgp +Q/UEm5Fg7yPEhRO1dcnVdeYx61fidiAfmt8lwEY+BqY0sVlbK8NChwc X-Gm-Gg: ASbGncsaD/C3w/6Zbp59xTRi75PD4YPR0H5oi4higlzodIEeFQiOSZuq7k06M2riaUS 2gTAMt1qO0sdWDOSmYrMzi63f3QxuoDUCOP22gytsBKebLSMDGm7Vs8g+KcFhRQpkUq/F/5Pd28 s/K4A1ym0bJ3GhzU9OwbqIx1NtkOtUkPWOkl+6/Qq9/WoU71HpvugzOoo+BBPQ0Mdb5yik9tadF HDxilOos5w03UGMm3piKfpX2YbbmNKJqw6wXKtL6eu2eGoSkgmExnqcO8+5zcbyGknwTNNYuKE1 SEPfrSSW6Zy/JGKT9B4TWO1gQpqjMLB02avWDCMJbikMScX8gnqsnxoYcIe/Pd3extD/w6qPUmp f4KBbn9C2wukEBs3hVytJNnOdMvmJUfwu5R59sabVRUJKhPxPxvQLdNr3W0IY/I7JtXb47CKO5+ 4r8V+xQgNt/ytFMpmmDw6J1QEZFKdxCxQ= X-Google-Smtp-Source: AGHT+IEDIL5NJwC44TfJ1I5nI96VrWmynMGreSQjJO21/d5ma6GdYAfY8ReIx6RrzS2f3OpOdrWl4g== X-Received: by 2002:a17:906:ef04:b0:b3c:8b25:ab74 with SMTP id a640c23a62f3a-b50aa393c32mr2123217066b.10.1760297027731; Sun, 12 Oct 2025 12:23:47 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.23.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:23:47 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 07/30] drm/sun4i: Move blender config from layers to mixer Date: Sun, 12 Oct 2025 21:23:07 +0200 Message-ID: <20251012192330.6903-8-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O With upcoming DE33 support, layer management must be decoupled from other operations like blender configuration. There are two reasons: - DE33 will have separate driver for planes and thus it will be harder to manage different register spaces - Architecturaly it's better to split access by modules. Blender is now exclusively managed by mixer. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_mixer.c | 17 ++++++++++++++--- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 22 +++------------------- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 22 +++------------------- 3 files changed, 20 insertions(+), 41 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c index f7f210a925f8..a3194b71dc6d 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -283,8 +283,8 @@ static void sun8i_mixer_commit(struct sunxi_engine *engine, drm_for_each_plane(plane, state->dev) { struct sun8i_layer *layer = plane_to_sun8i_layer(plane); + int w, h, x, y, zpos; bool enable; - int zpos; if (!(plane->possible_crtcs & drm_crtc_mask(crtc)) || layer->mixer != mixer) continue; @@ -295,10 +295,14 @@ static void sun8i_mixer_commit(struct sunxi_engine *engine, enable = plane_state->crtc && plane_state->visible; zpos = plane_state->normalized_zpos; + x = plane_state->dst.x1; + y = plane_state->dst.y1; + w = drm_rect_width(&plane_state->dst); + h = drm_rect_height(&plane_state->dst); - DRM_DEBUG_DRIVER(" plane %d: chan=%d ovl=%d en=%d zpos=%d\n", + DRM_DEBUG_DRIVER(" plane %d: chan=%d ovl=%d en=%d zpos=%d x=%d y=%d w=%d h=%d\n", plane->base.id, layer->channel, layer->overlay, - enable, zpos); + enable, zpos, x, y, w, h); /* * We always update the layer enable bit, because it can clear @@ -312,6 +316,13 @@ static void sun8i_mixer_commit(struct sunxi_engine *engine, /* Route layer to pipe based on zpos */ route |= layer->channel << SUN8I_MIXER_BLEND_ROUTE_PIPE_SHIFT(zpos); pipe_en |= SUN8I_MIXER_BLEND_PIPE_CTL_EN(zpos); + + regmap_write(bld_regs, + SUN8I_MIXER_BLEND_ATTR_COORD(bld_base, zpos), + SUN8I_MIXER_COORD(x, y)); + regmap_write(bld_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); diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c index 8baa1d0b53bd..12c83c54f9bc 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -47,21 +47,17 @@ static void sun8i_ui_layer_update_alpha(struct sun8i_mixer *mixer, int channel, } static void sun8i_ui_layer_update_coord(struct sun8i_mixer *mixer, int channel, - int overlay, struct drm_plane *plane, - unsigned int zpos) + int overlay, struct drm_plane *plane) { struct drm_plane_state *state = plane->state; u32 src_w, src_h, dst_w, dst_h; - struct regmap *bld_regs; - u32 bld_base, ch_base; u32 outsize, insize; u32 hphase, vphase; + u32 ch_base; DRM_DEBUG_DRIVER("Updating UI channel %d overlay %d\n", channel, overlay); - bld_base = sun8i_blender_base(mixer); - bld_regs = sun8i_blender_regmap(mixer); ch_base = sun8i_channel_base(mixer, channel); src_w = drm_rect_width(&state->src) >> 16; @@ -113,17 +109,6 @@ static void sun8i_ui_layer_update_coord(struct sun8i_mixer *mixer, int channel, else sun8i_ui_scaler_enable(mixer, channel, false); } - - /* Set base coordinates */ - DRM_DEBUG_DRIVER("Layer destination coordinates X: %d Y: %d\n", - state->dst.x1, state->dst.y1); - DRM_DEBUG_DRIVER("Layer destination size W: %d H: %d\n", dst_w, dst_h); - regmap_write(bld_regs, - SUN8I_MIXER_BLEND_ATTR_COORD(bld_base, zpos), - SUN8I_MIXER_COORD(state->dst.x1, state->dst.y1)); - regmap_write(bld_regs, - SUN8I_MIXER_BLEND_ATTR_INSIZE(bld_base, zpos), - outsize); } static void sun8i_ui_layer_update_formats(struct sun8i_mixer *mixer, int channel, @@ -230,14 +215,13 @@ static void sun8i_ui_layer_atomic_update(struct drm_plane *plane, struct drm_plane_state *new_state = drm_atomic_get_new_plane_state(state, plane); struct sun8i_layer *layer = plane_to_sun8i_layer(plane); - unsigned int zpos = new_state->normalized_zpos; struct sun8i_mixer *mixer = layer->mixer; if (!new_state->crtc || !new_state->visible) return; sun8i_ui_layer_update_coord(mixer, layer->channel, - layer->overlay, plane, zpos); + layer->overlay, plane); sun8i_ui_layer_update_alpha(mixer, layer->channel, layer->overlay, plane); sun8i_ui_layer_update_formats(mixer, layer->channel, diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index dae6f83cea6e..1f4fa63ef153 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -49,25 +49,21 @@ static void sun8i_vi_layer_update_alpha(struct sun8i_mixer *mixer, int channel, } static void sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int channel, - int overlay, struct drm_plane *plane, - unsigned int zpos) + int overlay, struct drm_plane *plane) { struct drm_plane_state *state = plane->state; const struct drm_format_info *format = state->fb->format; u32 src_w, src_h, dst_w, dst_h; - struct regmap *bld_regs; - u32 bld_base, ch_base; u32 outsize, insize; u32 hphase, vphase; u32 hn = 0, hm = 0; u32 vn = 0, vm = 0; bool subsampled; + u32 ch_base; DRM_DEBUG_DRIVER("Updating VI channel %d overlay %d\n", channel, overlay); - bld_base = sun8i_blender_base(mixer); - bld_regs = sun8i_blender_regmap(mixer); ch_base = sun8i_channel_base(mixer, channel); src_w = drm_rect_width(&state->src) >> 16; @@ -180,17 +176,6 @@ static void sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int channel, SUN8I_MIXER_CHAN_VI_VDS_UV(ch_base), SUN8I_MIXER_CHAN_VI_DS_N(vn) | SUN8I_MIXER_CHAN_VI_DS_M(vm)); - - /* Set base coordinates */ - DRM_DEBUG_DRIVER("Layer destination coordinates X: %d Y: %d\n", - state->dst.x1, state->dst.y1); - DRM_DEBUG_DRIVER("Layer destination size W: %d H: %d\n", dst_w, dst_h); - regmap_write(bld_regs, - SUN8I_MIXER_BLEND_ATTR_COORD(bld_base, zpos), - SUN8I_MIXER_COORD(state->dst.x1, state->dst.y1)); - regmap_write(bld_regs, - SUN8I_MIXER_BLEND_ATTR_INSIZE(bld_base, zpos), - outsize); } static u32 sun8i_vi_layer_get_csc_mode(const struct drm_format_info *format) @@ -350,14 +335,13 @@ static void sun8i_vi_layer_atomic_update(struct drm_plane *plane, struct drm_plane_state *new_state = drm_atomic_get_new_plane_state(state, plane); struct sun8i_layer *layer = plane_to_sun8i_layer(plane); - unsigned int zpos = new_state->normalized_zpos; struct sun8i_mixer *mixer = layer->mixer; if (!new_state->crtc || !new_state->visible) return; sun8i_vi_layer_update_coord(mixer, layer->channel, - layer->overlay, plane, zpos); + layer->overlay, plane); sun8i_vi_layer_update_alpha(mixer, layer->channel, layer->overlay, plane); sun8i_vi_layer_update_formats(mixer, layer->channel, From patchwork Sun Oct 12 19:23:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 812 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.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 00DE22F5A09 for ; Sun, 12 Oct 2025 19:23:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297032; cv=none; b=OKqC/2sWGJbR+23REP9GVQ+Zb/B9b4PebKiw4orQB+n8Po85wwV69u2aJ2POs8GaOSFd3g8q2Wtz8YLB0PtApiICfdoZ3r3AekdGTAOKk4TqWzKPvvi2OYNeOfYomkZuU5nn09aTjYXoJgMVnLndS2VfW0r9tny8AtWZ/NHaRXc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297032; c=relaxed/simple; bh=5DSQADF6PYceeHGtb5MtZGmBEcXfqbbawxpIMOZcwi4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jm0EaNbxCTdOFkCi+LDy9nmP02pRMMD6PsXNGYtTgcTYU1Ztvj5n5wf2ZJPz77xmx7fyFjBFwjnfjPVpxRT1v6dSE2OUYrPd80Y0FGRYEzjDF4qvRXGpLGDj0t6fACu9LgWp9JBAR7JA71mmJlBF1Msi7bdNQz0DLo5KFXS2AEQ= 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=HGmj8plR; arc=none smtp.client-ip=209.85.218.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="HGmj8plR" Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-b40f11a1027so636765866b.2 for ; Sun, 12 Oct 2025 12:23:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297029; x=1760901829; 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=S9SmCp0RhICJrtT3B0EVlMoJ5KkuRntCLc/b84MPeMA=; b=HGmj8plRcO6fI9ENEhsIW2myJ2LB1CNzif8YhPiMNVAbSyw7tKr82yDqJ1r6+qax2g VNHS0GvXWqopC11fY6dPVeMSMK2wCBMMrV/dOHA/Yw2DsNPBYXKnvj7uoWaJp+BeCVl/ Zg8Umwke7OnfBTMxiieVM++Be3VDTrIhTx3c/pOOc1wVPvO3ujPtAD8z9fwxb8J9E2Nd UToS0u7aV0VVeNW9jbyuXLKZkOmkGn9nCGdKS7/qfVziRee84aJs2urDACd9MaYqrO/8 H/SFARSVPja9GPK/kyAFQv8M4h8PfDLjVb5hXlExe/ta7+4uJPwrqxfMCJjGodr7Ggxg 4Vcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297029; x=1760901829; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=S9SmCp0RhICJrtT3B0EVlMoJ5KkuRntCLc/b84MPeMA=; b=OgghsbaIpcnqlAYbfUDvLB03jhFYmFshdqh+0vxS03VBB39DyLjR/rwTxp262ZkN3N 6QO8h67GBY6bGnX1S/olB3tqgVzxSCjABXjW7tWcDu+BxiLW94P4bzXLwnM9VQa7ztcY OdmefNtC+DmMx7zGxVsR0wabtDcrewCV9ixVstz+W0OiK9eQt71vxR5mcYKfxOxPHJaY zI3y5TRCqexYgeLfPnYiM+6lSdccfN65oCk3FbKGPAXuMS7BRIBLWwcmjNv3C4sVIDO5 smuNJXdjjpUSbQasaiNsdOrxeLFGCbfAtV+zBdk4JuiQs/2DbDPWb52KnngzEjAd49NX bRRw== X-Forwarded-Encrypted: i=1; AJvYcCUkMhmp2u1LYQPzI90nK/ZZnL5yPbudfiUDohLVMPTFYoTCjGAqc+sb360j8dRE6JnE0A48vw84J4rGAw==@lists.linux.dev X-Gm-Message-State: AOJu0YxgTQrDvFw9F8htho5QL+c567cIJs2friTbwVzNSJHcac+ZU1UD gEvfcb3z/xPeOlG6UA2h3eIPmx+aTkrOYEFIfXzCSz29idwde90Ejy1Q X-Gm-Gg: ASbGncu9KF41DgiE/3pnLzO/+OxJyGUKxls3f1W3gVJYeSm3p7BOx+hSYHt5T2whiyU BGtwT6sKo0hsDEr5CFy8i9JQ7hWvkfm3IiorbrXmgdheEUyuz0OA1f2TNC8T4zBDGHcji39eL3l leVtSnYeN58z1bnKvjEFPJMm52L1xuVAG4zap+ojPg6SreC5RNUlNmE49764zk9Hi8qiR3sSnfA +NypurCWktHTy9f1uzZgSNapM/9UkbC7bdN9x9gK+K+XVOEdjt4JTPIrhGJ2nKnIg1iI6vOai78 ++QWIMEIg2sFA8/mBLff6Li4NhiU/qxFywSnZTrKUDd6HgsZp1RLmgdwzUzAuMqdPFSqrw8Ye70 W9BDY6JFU51rKWYN0SfsigaK2TrzhMCJsMPjH/mlK1HBpKAfAhjdM9gv8oUlPOwGfFFxyZhU8WB bn9CLZejdx9o+hYTSPbLraI+zz4IdE0KNuoG5ZBXqWpA== X-Google-Smtp-Source: AGHT+IF7Qq6jQqzYZdDrJkaw6UlpFKkxTue0qnLTmhRFyadA1ihDqW2+FAH2PNlrJyvCEAGwchJGLg== X-Received: by 2002:a17:907:980f:b0:b3e:c99b:c78a with SMTP id a640c23a62f3a-b50ac5d07e0mr2126585466b.54.1760297029128; Sun, 12 Oct 2025 12:23:49 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.23.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:23:48 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 08/30] drm/sun4i: ui layer: Write attributes in one go Date: Sun, 12 Oct 2025 21:23:08 +0200 Message-ID: <20251012192330.6903-9-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O It turns out that none of the UI channel registers were meant to be read. Mostly it works fine but sometimes it returns incorrect values. Rework UI layer code to write all registers in one go to avoid reads. This rework will also allow proper code separation. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 50 +++++++++----------------- 1 file changed, 16 insertions(+), 34 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c index 12c83c54f9bc..8634d2ee613a 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -25,25 +25,27 @@ #include "sun8i_ui_scaler.h" #include "sun8i_vi_scaler.h" -static void sun8i_ui_layer_update_alpha(struct sun8i_mixer *mixer, int channel, - int overlay, struct drm_plane *plane) +static void sun8i_ui_layer_update_attributes(struct sun8i_mixer *mixer, + int channel, int overlay, + struct drm_plane *plane) { - u32 mask, val, ch_base; + struct drm_plane_state *state = plane->state; + const struct drm_format_info *fmt; + u32 val, ch_base, hw_fmt; ch_base = sun8i_channel_base(mixer, channel); + fmt = state->fb->format; + sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); - mask = SUN8I_MIXER_CHAN_UI_LAYER_ATTR_ALPHA_MODE_MASK | - SUN8I_MIXER_CHAN_UI_LAYER_ATTR_ALPHA_MASK; - - val = SUN8I_MIXER_CHAN_UI_LAYER_ATTR_ALPHA(plane->state->alpha >> 8); - - val |= (plane->state->alpha == DRM_BLEND_ALPHA_OPAQUE) ? + val = SUN8I_MIXER_CHAN_UI_LAYER_ATTR_ALPHA(state->alpha >> 8); + val |= (state->alpha == DRM_BLEND_ALPHA_OPAQUE) ? SUN8I_MIXER_CHAN_UI_LAYER_ATTR_ALPHA_MODE_PIXEL : SUN8I_MIXER_CHAN_UI_LAYER_ATTR_ALPHA_MODE_COMBINED; + val |= hw_fmt << SUN8I_MIXER_CHAN_UI_LAYER_ATTR_FBFMT_OFFSET; + val |= SUN8I_MIXER_CHAN_UI_LAYER_ATTR_EN; - regmap_update_bits(mixer->engine.regs, - SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, overlay), - mask, val); + regmap_write(mixer->engine.regs, + SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, overlay), val); } static void sun8i_ui_layer_update_coord(struct sun8i_mixer *mixer, int channel, @@ -111,24 +113,6 @@ static void sun8i_ui_layer_update_coord(struct sun8i_mixer *mixer, int channel, } } -static void sun8i_ui_layer_update_formats(struct sun8i_mixer *mixer, int channel, - int overlay, struct drm_plane *plane) -{ - struct drm_plane_state *state = plane->state; - const struct drm_format_info *fmt; - u32 val, ch_base, hw_fmt; - - ch_base = sun8i_channel_base(mixer, channel); - - fmt = state->fb->format; - sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); - - val = hw_fmt << SUN8I_MIXER_CHAN_UI_LAYER_ATTR_FBFMT_OFFSET; - regmap_update_bits(mixer->engine.regs, - SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, overlay), - SUN8I_MIXER_CHAN_UI_LAYER_ATTR_FBFMT_MASK, val); -} - static void sun8i_ui_layer_update_buffer(struct sun8i_mixer *mixer, int channel, int overlay, struct drm_plane *plane) { @@ -220,12 +204,10 @@ static void sun8i_ui_layer_atomic_update(struct drm_plane *plane, if (!new_state->crtc || !new_state->visible) return; + sun8i_ui_layer_update_attributes(mixer, layer->channel, + layer->overlay, plane); sun8i_ui_layer_update_coord(mixer, layer->channel, layer->overlay, plane); - sun8i_ui_layer_update_alpha(mixer, layer->channel, - layer->overlay, plane); - sun8i_ui_layer_update_formats(mixer, layer->channel, - layer->overlay, plane); sun8i_ui_layer_update_buffer(mixer, layer->channel, layer->overlay, plane); } From patchwork Sun Oct 12 19:23:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 811 Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.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 7FA272F5A3C for ; Sun, 12 Oct 2025 19:23:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297034; cv=none; b=AWAta9rtilNTs1PCyX9sX8vPNSS4dfoc4rUjjdmf9EGCwMCaAP4i0awlC3PHAsVooZciZxSB0YDLeMB+W8sHeTBYDOW1Dq2JGlefJZ/Jo/l4qDUiiolXBGbQoJe3juccSU2fG8qO15PGtDGLQfUX9v9M7y93BPSEW4t/JNgwS5o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297034; c=relaxed/simple; bh=aUmmA0K5M3pKV/DONNVTH0LdjYjNZicMZg+Z8mCeaio=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lj+t+3rUYgDuFtMlXDMh9Wsx265vVb1ymQMOk6fYShZ3BtBANQ6gUOjBlhMlB4gO87wJVcvY6MGVW43HA7m2Y8dHjdmihvcsg77BO3NS5K0O1J06++dSOZ/khaHqahvMHbrUvfHAHFRt0JsTT1QM5qTvUnFl5udiDxsRiEA2oRk= 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=cmYFuYCz; arc=none smtp.client-ip=209.85.218.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="cmYFuYCz" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-b54f55a290cso469279266b.2 for ; Sun, 12 Oct 2025 12:23:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297031; x=1760901831; 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=4j2gKZWvQ3G/p6x29ljxN7hGavAjse3Wea8WQURA1i4=; b=cmYFuYCz8QrX1NiFR0l+3PHbJFO2Ijs5hiI7ZTr7av1Scp8iZwpLfIiSkfTVC8jSWT qXOPe4NiMhpd4vEMx/fohandAYVNpEJcAtHdIibnnLVCE93U70f+B3yWdD130BYj0UhH qogmziHY0dAp10Mo76WmdWNs+kfrWueSyXWP3ls1ejjvvhts1kKf6DkOHqbLEvVSXfm/ mw+Y7Owhp3XHoeU05woSFLzemtbdNBt1/iZAfTlm3rk7RmmJJI2nQFZ2mh79lZOJBJTE pw9qwv0CEUpSDq3lEj7x1QIlVX67PgNrULCSIV8dM9VmGAOt0ciakDWxdnv6J4cCaUEX WdfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297031; x=1760901831; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4j2gKZWvQ3G/p6x29ljxN7hGavAjse3Wea8WQURA1i4=; b=DpUEcBHh09sFe20Xw+Cjc82p9RPpj3IdYP2EOiNxVY56ozxML7aMJ46ajBrJEQ0Vtu U3lu8Gb0qayWbB0peS1fyebWo4cTog4mF+FgfBgDzOOjp2bcMS13DPutk9OxwmWwGNRX ryRiha6U2aW9ATCDjzfC0UCwZvsC8Xo7uGswSGbLsycNso44AZGsfR+2itNWnqJHMCJ1 QUPAxtr3D7qtEkqu7rV5b3G8pdsoagyBaNGP2L6YAwCfZswz3kvau0zyUlAvmgaTEAWb fub8JknmK1WqTJ6nCqof8M41xvGc0Yw/g2rdaf9hHrLQlZioKhAnYsZSfE1zK+WD6wRC ppJQ== X-Forwarded-Encrypted: i=1; AJvYcCXjJa7ljiQjtChr32x8Wb4ba9Vd82vfq6oc+45cqX8Erp+AH+yJJDPFlJjOlHGPxzNfthAZE5cdHipR0w==@lists.linux.dev X-Gm-Message-State: AOJu0Yw+AFFy7hx3afYpr5elo4C844u/2HzTovn3Y7bWkK1j5KW0XLkv 7oHOSm0uOXSfbwdWlSMKPx8mKGsk3GD6N0DuN8mH+7BzYkDEkV7cPVHC X-Gm-Gg: ASbGnctpMA3MYuu7o6O7G1+tcbpCeqUwmACNA+Pl2pcDDLPUJt1g0WELmSXC2YNFxFP fiOPbPKO2w0SiYBOhhna5cUIhGrmQdqzz1WOm+4Q3GZ//xdJpgURMRyYpvduv9DWPZtP/bBV0sG PuvvbGYNItmPiGTu1AGAAAx+CCdXT/Zyt0E9HeXM9S9EaNMgNGhsnxcHjZGdMn4UeqbaQxkWFGm lIGlJQqeFd8ssG0C5nzQr3kYs7OSRwpQeziNodNcySSw9LYY4eXvwm/rt0sC0vwrTXqDCHgDFp0 gUU+PIjm7zfS1rhlLdqng/QvCr93/VKYB2a436CVmyuaXgga5e1P10x5a4U7h1Eu/XjKdnhf5dt tBtgSSjcEfTx/txoswNyJRAAXzmUObmn7uMN8hOIpBRP6R3lYYS/n5f4PIRUW5t9LViYl6wzTjr Tuin6vGVeXWE1DRtJcaDM31AEdhAlsJ2sVP/8Gn/mugQ== X-Google-Smtp-Source: AGHT+IEs/WFctDa89+D/WqWhY5uZ3WvAavRVXRQFM/TxuoPg9kA4sKepU26nxFXJKsHh5KgVUQFpfg== X-Received: by 2002:a17:907:724a:b0:b04:5b0a:5850 with SMTP id a640c23a62f3a-b50ac1c3f18mr2033310866b.40.1760297030814; Sun, 12 Oct 2025 12:23:50 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.23.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:23:50 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 09/30] drm/sun4i: vi layer: Write attributes in one go Date: Sun, 12 Oct 2025 21:23:09 +0200 Message-ID: <20251012192330.6903-10-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O It turns out that none of the VI channel registers were meant to be read. Mostly it works fine but sometimes it returns incorrect values. Rework VI layer code to write all registers in one go to avoid reads. This rework will also allow proper code separation. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 71 ++++++++++---------------- 1 file changed, 27 insertions(+), 44 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index 1f4fa63ef153..dcc4429368d6 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -18,34 +18,35 @@ #include "sun8i_vi_layer.h" #include "sun8i_vi_scaler.h" -static void sun8i_vi_layer_update_alpha(struct sun8i_mixer *mixer, int channel, - int overlay, struct drm_plane *plane) +static void sun8i_vi_layer_update_attributes(struct sun8i_mixer *mixer, + int channel, int overlay, + struct drm_plane *plane) { - u32 mask, val, ch_base; + struct drm_plane_state *state = plane->state; + const struct drm_format_info *fmt; + u32 val, ch_base, hw_fmt; ch_base = sun8i_channel_base(mixer, channel); + fmt = state->fb->format; + sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); + val = hw_fmt << SUN8I_MIXER_CHAN_VI_LAYER_ATTR_FBFMT_OFFSET; + if (!fmt->is_yuv) + val |= SUN8I_MIXER_CHAN_VI_LAYER_ATTR_RGB_MODE; + val |= SUN8I_MIXER_CHAN_VI_LAYER_ATTR_EN; if (mixer->cfg->de_type >= SUN8I_MIXER_DE3) { - mask = SUN50I_MIXER_CHAN_VI_LAYER_ATTR_ALPHA_MASK | - SUN50I_MIXER_CHAN_VI_LAYER_ATTR_ALPHA_MODE_MASK; - val = SUN50I_MIXER_CHAN_VI_LAYER_ATTR_ALPHA - (plane->state->alpha >> 8); - - val |= (plane->state->alpha == DRM_BLEND_ALPHA_OPAQUE) ? + val |= SUN50I_MIXER_CHAN_VI_LAYER_ATTR_ALPHA(state->alpha >> 8); + val |= (state->alpha == DRM_BLEND_ALPHA_OPAQUE) ? SUN50I_MIXER_CHAN_VI_LAYER_ATTR_ALPHA_MODE_PIXEL : SUN50I_MIXER_CHAN_VI_LAYER_ATTR_ALPHA_MODE_COMBINED; - - regmap_update_bits(mixer->engine.regs, - SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, - overlay), - mask, val); } else if (mixer->cfg->vi_num == 1) { - regmap_update_bits(mixer->engine.regs, - SUN8I_MIXER_FCC_GLOBAL_ALPHA_REG, - SUN8I_MIXER_FCC_GLOBAL_ALPHA_MASK, - SUN8I_MIXER_FCC_GLOBAL_ALPHA - (plane->state->alpha >> 8)); + regmap_write(mixer->engine.regs, + SUN8I_MIXER_FCC_GLOBAL_ALPHA_REG, + SUN8I_MIXER_FCC_GLOBAL_ALPHA(state->alpha >> 8)); } + + regmap_write(mixer->engine.regs, + SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, overlay), val); } static void sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int channel, @@ -194,23 +195,14 @@ static u32 sun8i_vi_layer_get_csc_mode(const struct drm_format_info *format) } } -static void sun8i_vi_layer_update_formats(struct sun8i_mixer *mixer, int channel, - int overlay, struct drm_plane *plane) +static void sun8i_vi_layer_update_colors(struct sun8i_mixer *mixer, int channel, + int overlay, struct drm_plane *plane) { struct drm_plane_state *state = plane->state; - u32 val, ch_base, csc_mode, hw_fmt; const struct drm_format_info *fmt; - - ch_base = sun8i_channel_base(mixer, channel); + u32 csc_mode; fmt = state->fb->format; - sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); - - val = hw_fmt << SUN8I_MIXER_CHAN_VI_LAYER_ATTR_FBFMT_OFFSET; - regmap_update_bits(mixer->engine.regs, - SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, overlay), - SUN8I_MIXER_CHAN_VI_LAYER_ATTR_FBFMT_MASK, val); - csc_mode = sun8i_vi_layer_get_csc_mode(fmt); if (csc_mode != SUN8I_CSC_MODE_OFF) { sun8i_csc_set_ccsc_coefficients(mixer, channel, csc_mode, @@ -220,15 +212,6 @@ static void sun8i_vi_layer_update_formats(struct sun8i_mixer *mixer, int channel } else { sun8i_csc_enable_ccsc(mixer, channel, false); } - - if (!fmt->is_yuv) - val = SUN8I_MIXER_CHAN_VI_LAYER_ATTR_RGB_MODE; - else - val = 0; - - regmap_update_bits(mixer->engine.regs, - SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, overlay), - SUN8I_MIXER_CHAN_VI_LAYER_ATTR_RGB_MODE, val); } static void sun8i_vi_layer_update_buffer(struct sun8i_mixer *mixer, int channel, @@ -340,12 +323,12 @@ static void sun8i_vi_layer_atomic_update(struct drm_plane *plane, if (!new_state->crtc || !new_state->visible) return; + sun8i_vi_layer_update_attributes(mixer, layer->channel, + layer->overlay, plane); sun8i_vi_layer_update_coord(mixer, layer->channel, layer->overlay, plane); - sun8i_vi_layer_update_alpha(mixer, layer->channel, - layer->overlay, plane); - sun8i_vi_layer_update_formats(mixer, layer->channel, - layer->overlay, plane); + sun8i_vi_layer_update_colors(mixer, layer->channel, + layer->overlay, plane); sun8i_vi_layer_update_buffer(mixer, layer->channel, layer->overlay, plane); } From patchwork Sun Oct 12 19:23:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 810 Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.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 471522F657E for ; Sun, 12 Oct 2025 19:23:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297036; cv=none; b=Q+JSUy8DT7tziG1UG1jmqKDiLnz9lnUZC2fExUC+amkay3JgGx+TBThu3rbvHiMRv21gEvoYqyvq07tXtgdZegprHxWsCp9ws06oWNDq0ptRK1q3wTJb4xK7EbFDMKRj/xxQyX+Wx3zGMzQ4zJ8zyoAAHL11beixPRQBOymPupI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297036; c=relaxed/simple; bh=SaVD3AEZ10Hpq8T4pFkv4DgWHHFAOjNyqWufbjTCFFI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CuAkkCtGZ4006j8vnUFRPZPEs84p3BeikIhha3Mdnvl+K+mV5oOBUFUOiqoP6n8lvTit/s7HepTqPWiQzynW1qJdsXwSEo+iBgwWLG4RrBF7B7drIcCgRVcywI38kveUDttlFWu9toaNxDUSYB5+5M4gBUh+bR1odmbhfggkpXk= 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=RU57Wnib; arc=none smtp.client-ip=209.85.218.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="RU57Wnib" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-b48d8deafaeso791274266b.1 for ; Sun, 12 Oct 2025 12:23:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297032; x=1760901832; 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=9r6Ut7kV6R9HZszR3tkt2ETSQ6gt6SVQ7s+jJ4oPNx0=; b=RU57WnibjqlE9cjxM+u2phcKNc0OdB7aEpgB5iNj3QsR7wIG34mvS7+xyzJNXVqusy oeXh+XfViL4VHDE18bTjhNLpnt70ZOV933Cf+F4Gex47zodmQ74rVvApXb6R9R0pfm3B Qh5yEPHlBuHhS4r5gUoOwaGiishPu2b5K4Itt9p8N3+y3Hdygcp3INbs3PuOR06DYkzH jiqGzp2jLNfiTGSz+sjNfsl8x/TAPeQj7cAEMPVsfdfRqkBL9zkFPEyu1OEaNCP6W7FN lyKrZxvOAxTcexPfP6ODVzZSJuA4JgfjAlZ38xpRVQxZlpm7iShZycYbaWXpPb0rArnG OhKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297032; x=1760901832; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9r6Ut7kV6R9HZszR3tkt2ETSQ6gt6SVQ7s+jJ4oPNx0=; b=RoipSRVe/M/8x6IqXI9FHeySZ+HY+hxiRPw9fA7WKDW1vLHx/TKwg31ddEZrR7HhOe oRnRkqsal3kNtBWlPoOyn6d8L7Lg2+oDiI60MKcETMv/PkFm5kDqVvhnXPxqA0FtQTa8 I7ujJmYPxs5RnBMp1dxZx7x6mgo6+Ed8zGf55yErl1PxpfD7mNmrOYfVaivJxz0W/Phf +3preaekc4EelAsABQ3Z8YAFAwG6hq3/22L4AQkRmP+LHxVM5oyaTByjBfA4LhiBTdyS TZbRxNceRRj6ADZNAF3E2f9Oz5+sZm5Imr7oy4rzx5kzbFjlq/KQdT1EgL3G/Ig+TK2H 9Wbg== X-Forwarded-Encrypted: i=1; AJvYcCUjlkcbzua4faJXZQLayO8+Ixuw9ZBOdwmUbh6eZfA/mtPD9v9sw6KX+EsRWbNybCCi6TP9QKHI34W2ww==@lists.linux.dev X-Gm-Message-State: AOJu0Yw08a4xLpXMm6Bmd5By2ctAHsd0l2tt4RqgfJNp5fp1Oor0BXmg BiX8IU7D8bINPZ4i41S3O6OJWJan/KooMLT19Pa2H0VPmuzLAbZQIGzr X-Gm-Gg: ASbGncvocQRxiv5OtPOCpY77O0DuQyPyaXEYhKej8NvApRy9m6MkS6zZmMYYmg223Oz Vi5byq/aRguW6ENBi7TwYqpgCPvyF8Ufn6imfeQOtKGyfLaH05m9arwCK9nUaxydbGHmcvI8gau mpoU7r/6PtkoZTU/D3zVbJbNWeggizIcNJFogmEmIw/2/6csVjD+tVDFTgY7XCyizsQbhheR6Tb TC83uIueYVXZGw1NNzvSY5vcFO8/BZe71x2zLB7rHCQ7qN6pKJ08cdKDHO+sxjts9O7Adws33KM iT3rWaTV3JYw6U8pnSextoR1MPUyKndnaZczuayxaWR5+9T/IGnIdfHSx35zAaMCKVe8EV11aQz JTXuRTKYc/UZslhM2ohSQeNRPqcQBT6iBdtFdCc5qF59qBBxKh/CerLvj9cNrUVQfz4MgeianxW CdGSdzoNQecoMgFW/+KaGI X-Google-Smtp-Source: AGHT+IGoU1lxXeWRIACneUv9HL1g56vOt419IJ1ZpZA1Fk2BOr5WzpZW402UoRq7f5Pp8L61Pkb+Rg== X-Received: by 2002:a17:906:ef05:b0:b50:a389:7ab0 with SMTP id a640c23a62f3a-b50aa48d2d7mr2059077466b.4.1760297032494; Sun, 12 Oct 2025 12:23:52 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.23.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:23:52 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 10/30] drm/sun4i: mixer: Remove setting layer enable bit Date: Sun, 12 Oct 2025 21:23:10 +0200 Message-ID: <20251012192330.6903-11-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O This task is now done by plane atomic update callback. There is no fear that bit would be set incorrectly, as all register reads are eliminated. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_mixer.c | 24 ------------------------ drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 13 ++++++++++++- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 13 ++++++++++++- 3 files changed, 24 insertions(+), 26 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c index a3194b71dc6d..1fca05a760b8 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -250,24 +250,6 @@ int sun8i_mixer_drm_format_to_hw(u32 format, u32 *hw_format) return -EINVAL; } -static void sun8i_layer_enable(struct sun8i_layer *layer, bool enable) -{ - u32 ch_base = sun8i_channel_base(layer->mixer, layer->channel); - u32 val, reg, mask; - - if (layer->type == SUN8I_LAYER_TYPE_UI) { - val = enable ? SUN8I_MIXER_CHAN_UI_LAYER_ATTR_EN : 0; - mask = SUN8I_MIXER_CHAN_UI_LAYER_ATTR_EN; - reg = SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, layer->overlay); - } else { - val = enable ? SUN8I_MIXER_CHAN_VI_LAYER_ATTR_EN : 0; - mask = SUN8I_MIXER_CHAN_VI_LAYER_ATTR_EN; - reg = SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, layer->overlay); - } - - regmap_update_bits(layer->mixer->engine.regs, reg, mask, val); -} - static void sun8i_mixer_commit(struct sunxi_engine *engine, struct drm_crtc *crtc, struct drm_atomic_state *state) @@ -304,12 +286,6 @@ static void sun8i_mixer_commit(struct sunxi_engine *engine, plane->base.id, layer->channel, layer->overlay, enable, zpos, x, y, w, h); - /* - * We always update the layer enable bit, because it can clear - * spontaneously for unknown reasons. - */ - sun8i_layer_enable(layer, enable); - if (!enable) continue; diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c index 8634d2ee613a..9d5d5e0b7e63 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -25,6 +25,15 @@ #include "sun8i_ui_scaler.h" #include "sun8i_vi_scaler.h" +static void sun8i_ui_layer_disable(struct sun8i_mixer *mixer, + int channel, int overlay) +{ + u32 ch_base = sun8i_channel_base(mixer, channel); + + regmap_write(mixer->engine.regs, + SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, overlay), 0); +} + static void sun8i_ui_layer_update_attributes(struct sun8i_mixer *mixer, int channel, int overlay, struct drm_plane *plane) @@ -201,8 +210,10 @@ static void sun8i_ui_layer_atomic_update(struct drm_plane *plane, struct sun8i_layer *layer = plane_to_sun8i_layer(plane); struct sun8i_mixer *mixer = layer->mixer; - if (!new_state->crtc || !new_state->visible) + if (!new_state->crtc || !new_state->visible) { + sun8i_ui_layer_disable(mixer, layer->channel, layer->overlay); return; + } sun8i_ui_layer_update_attributes(mixer, layer->channel, layer->overlay, plane); diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index dcc4429368d6..727117658c6c 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -18,6 +18,15 @@ #include "sun8i_vi_layer.h" #include "sun8i_vi_scaler.h" +static void sun8i_vi_layer_disable(struct sun8i_mixer *mixer, + int channel, int overlay) +{ + u32 ch_base = sun8i_channel_base(mixer, channel); + + regmap_write(mixer->engine.regs, + SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, overlay), 0); +} + static void sun8i_vi_layer_update_attributes(struct sun8i_mixer *mixer, int channel, int overlay, struct drm_plane *plane) @@ -320,8 +329,10 @@ static void sun8i_vi_layer_atomic_update(struct drm_plane *plane, struct sun8i_layer *layer = plane_to_sun8i_layer(plane); struct sun8i_mixer *mixer = layer->mixer; - if (!new_state->crtc || !new_state->visible) + if (!new_state->crtc || !new_state->visible) { + sun8i_vi_layer_disable(mixer, layer->channel, layer->overlay); return; + } sun8i_vi_layer_update_attributes(mixer, layer->channel, layer->overlay, plane); From patchwork Sun Oct 12 19:23:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 809 Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.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 64CD32F7469 for ; Sun, 12 Oct 2025 19:23:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297037; cv=none; b=fmZbDDxqtJMrTuyOCEtpXNzeg/c9QnRs5jc/qRPWbsbQqObuatae+G+PRLUWS1tPE27IH3u8eIoi+e0YtIz/K430lS6nMMz9YM2zsOG71d/1SXNjRMqLei+v/YWWIO1KmumECy9ww/NcJ53SZLOqC9FMnpC2Jg8DCYLWQWCd9bI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297037; c=relaxed/simple; bh=vS1oceHL9gJHejBT3+qUlJVs/cal4N3Fex9YsMuGCJE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qF0mwVyKiJ1MQyAmy4HS/TW+Lj6YxjXz+7pRIcgxNvBDAu0UC0IgxDXrw15i0gy7EN/xLzZ7gskBr2zl0N35oBn1/EPd/2igWRqgn42ntagOfvwNl9BH7fBeAXopTNXvrxKdwhH8DLE0FieDh3/5p4mkeJx8lrsTev0A/LJrMN4= 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=gD3H8nYe; arc=none smtp.client-ip=209.85.218.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="gD3H8nYe" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-b3d196b7eeeso558558266b.0 for ; Sun, 12 Oct 2025 12:23:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297034; x=1760901834; 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=ljTiHpH/7wCq4Sb80OipRX+gpuymv7x8m1cTbrMD8nQ=; b=gD3H8nYeYpmwAjgeUa+3gHlBeMp3C3cNmpS4QQQeiB7c5RVid47YlGFTeFsPcJYXt7 f/acpL4VcMy84YDocCPrLLbBWcR85ToqkDNrVTpd3RZWanvHG+czSDGQ0XlJNWKVp7FE iH4i+biJ4N5i2as2fjG87T7C9kNRWNLGOAOU0Q0skYA5dlXCabHv8Bo3B0kE3p1WYDhB ATDM5q1nEpxa1ky0aQgkw+vT7FhFK05l1s49PHOFmZ2frZPzrR5UqlVGjUj2lYdh472l cRS6cy+Jx+y5XeHf4ejmf2/S7o660OTsy5hxtellxiWd2yz9+L4/ARUcmlwPZoe9wlY6 XFtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297034; x=1760901834; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ljTiHpH/7wCq4Sb80OipRX+gpuymv7x8m1cTbrMD8nQ=; b=gf4RP8LYTPiEN5/M+1m236JbyYU71Fme7crPOqzHaw72UB2QzOpVedLZ5Djdt72aMc HyegWtdvvCzG85brQ8/mbHPwKuARvBTlwUlmKtO2nVJdvfjhUu4GQ9CO2XXzK0wi82d7 TDtAZe7VjEvtlcMvXmwlORwV0Aicy6PpYfp9VV8xzDvvMkXarQ1FXdXv9xT6xmf0Yncl 4Ol4NurQBiC97PcaThL6KhzuA/f0ts58BXgHPsEdnUbZVvnPX6u8hHTbx5l9NxyC7Bw3 KijQO6uC2fUm91zuy3OsIEprXUuKXTOjDhuevJq6wsf3bCjCa5jnrhYcJ/1JhhkhqrD5 gzlw== X-Forwarded-Encrypted: i=1; AJvYcCX3FfFVMTa/yajTTFwMYsiEbS4Ogg9yI5t2oiplCHPmnNpST6eb+GxpMJWOibhB3IvBJW18pU+MbaMzMA==@lists.linux.dev X-Gm-Message-State: AOJu0YxWNr0jAjfMm39olQgjwNr1GnOz/vEhEBRKxX57HsbqopfU89hO VPKBCX4Dmc3S38eXqyNFoOWv4ORWg5qcZ0xWI3FzxJRk0eWGUsnvtM0l X-Gm-Gg: ASbGncsc71oPApduyQTCzhTjMWea1b8OSMryNm6ntSjvyD06o4QguPpNkUMGg0t+zKs 6YBvNCEirmLcfSkkTEchNuIXwCexUKkZrSRbIulaI5QqWUG5Rr860d7uYWkOyG0spyCZXj01u6Q vPERBtPlnvYyyURn10TlSVso43f9bEe/U7FAcU7y5abPsFhTwCFnXeZfQ6FlznC8AGxL9cVVCx6 4baK+UbyUtMNw4dQsRIv4oJDUNjVYIryCbEF2tP7ChZNCiCqc0xNAieJq7yzoIHTuTHtHT4HjZi x2j2akwjY8YZawkwy5aTP5wv3R7qSO2Csl5R7ZfY3/LZU4r0xLNEGV1Ct89O+C2reEeO9vnmC6x /6WG/vkS0hpJdv3kU1J527qJRDlAW5aZo9yW18wSEzEl1fPLQjP0hOYHnsqaB4aaVF9adGBAQko CqRexfFFeiO6GfZ+cBs0bh X-Google-Smtp-Source: AGHT+IH2UBZhZnnANHj8S5Ub3yMR8kafMnVt2A0h1CRlogccMK2B7fLAfojkqBw32F0r0liwzWP3zA== X-Received: by 2002:a17:907:da1:b0:b3a:e4b3:eeb9 with SMTP id a640c23a62f3a-b50abfcd075mr2031796166b.55.1760297033577; Sun, 12 Oct 2025 12:23:53 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.23.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:23:53 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 11/30] drm/sun4i: de2/de3: Simplify CSC config interface Date: Sun, 12 Oct 2025 21:23:11 +0200 Message-ID: <20251012192330.6903-12-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O Merging both function into one lets this one decide on it's own if CSC should be enabled or not. Currently heuristics for that is pretty simple - enable it for YUV formats and disable for RGB. DE3 and newer allows YUV pipeline, which will be easier to implement these way. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_csc.c | 89 ++++++++++---------------- drivers/gpu/drm/sun4i/sun8i_csc.h | 9 ++- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 11 +--- 3 files changed, 40 insertions(+), 69 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_csc.c b/drivers/gpu/drm/sun4i/sun8i_csc.c index c100d29b1a89..cf0c5121661b 100644 --- a/drivers/gpu/drm/sun4i/sun8i_csc.c +++ b/drivers/gpu/drm/sun4i/sun8i_csc.c @@ -107,23 +107,28 @@ static const u32 yuv2rgb_de3[2][3][12] = { }, }; -static void sun8i_csc_set_coefficients(struct regmap *map, u32 base, - enum sun8i_csc_mode mode, - enum drm_color_encoding encoding, - enum drm_color_range range) +static void sun8i_csc_setup(struct regmap *map, u32 base, + enum sun8i_csc_mode mode, + enum drm_color_encoding encoding, + enum drm_color_range range) { + u32 base_reg, val; const u32 *table; - u32 base_reg; int i; table = yuv2rgb[range][encoding]; switch (mode) { + case SUN8I_CSC_MODE_OFF: + val = 0; + break; case SUN8I_CSC_MODE_YUV2RGB: + val = SUN8I_CSC_CTRL_EN; base_reg = SUN8I_CSC_COEFF(base, 0); regmap_bulk_write(map, base_reg, table, 12); break; case SUN8I_CSC_MODE_YVU2RGB: + val = SUN8I_CSC_CTRL_EN; for (i = 0; i < 12; i++) { if ((i & 3) == 1) base_reg = SUN8I_CSC_COEFF(base, i + 1); @@ -135,28 +140,37 @@ static void sun8i_csc_set_coefficients(struct regmap *map, u32 base, } break; default: + val = 0; DRM_WARN("Wrong CSC mode specified.\n"); return; } + + regmap_write(map, SUN8I_CSC_CTRL(base), val); } -static void sun8i_de3_ccsc_set_coefficients(struct regmap *map, int layer, - enum sun8i_csc_mode mode, - enum drm_color_encoding encoding, - enum drm_color_range range) +static void sun8i_de3_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, mask; const u32 *table; - u32 addr; int i; + mask = SUN50I_MIXER_BLEND_CSC_CTL_EN(layer); table = yuv2rgb_de3[range][encoding]; switch (mode) { + case SUN8I_CSC_MODE_OFF: + val = 0; + break; case SUN8I_CSC_MODE_YUV2RGB: + val = mask; addr = SUN50I_MIXER_BLEND_CSC_COEFF(DE3_BLD_BASE, layer, 0); regmap_bulk_write(map, addr, table, 12); break; case SUN8I_CSC_MODE_YVU2RGB: + val = mask; for (i = 0; i < 12; i++) { if ((i & 3) == 1) addr = SUN50I_MIXER_BLEND_CSC_COEFF(DE3_BLD_BASE, @@ -173,67 +187,30 @@ static void sun8i_de3_ccsc_set_coefficients(struct regmap *map, int layer, } break; default: + val = 0; DRM_WARN("Wrong CSC mode specified.\n"); return; } -} - -static void sun8i_csc_enable(struct regmap *map, u32 base, bool enable) -{ - u32 val; - - if (enable) - val = SUN8I_CSC_CTRL_EN; - else - val = 0; - - regmap_update_bits(map, SUN8I_CSC_CTRL(base), SUN8I_CSC_CTRL_EN, val); -} - -static void sun8i_de3_ccsc_enable(struct regmap *map, int layer, bool enable) -{ - u32 val, mask; - - mask = SUN50I_MIXER_BLEND_CSC_CTL_EN(layer); - - if (enable) - val = mask; - else - val = 0; regmap_update_bits(map, SUN50I_MIXER_BLEND_CSC_CTL(DE3_BLD_BASE), mask, val); } -void sun8i_csc_set_ccsc_coefficients(struct sun8i_mixer *mixer, int layer, - enum sun8i_csc_mode mode, - enum drm_color_encoding encoding, - enum drm_color_range range) +void sun8i_csc_config(struct sun8i_mixer *mixer, int layer, + enum sun8i_csc_mode mode, + enum drm_color_encoding encoding, + enum drm_color_range range) { u32 base; if (mixer->cfg->de_type == SUN8I_MIXER_DE3) { - sun8i_de3_ccsc_set_coefficients(mixer->engine.regs, layer, - mode, encoding, range); + sun8i_de3_ccsc_setup(mixer->engine.regs, layer, + mode, encoding, range); return; } base = ccsc_base[mixer->cfg->ccsc][layer]; - sun8i_csc_set_coefficients(mixer->engine.regs, base, - mode, encoding, range); -} - -void sun8i_csc_enable_ccsc(struct sun8i_mixer *mixer, int layer, bool enable) -{ - u32 base; - - if (mixer->cfg->de_type == SUN8I_MIXER_DE3) { - sun8i_de3_ccsc_enable(mixer->engine.regs, layer, enable); - return; - } - - base = ccsc_base[mixer->cfg->ccsc][layer]; - - sun8i_csc_enable(mixer->engine.regs, base, enable); + sun8i_csc_setup(mixer->engine.regs, base, + mode, encoding, range); } diff --git a/drivers/gpu/drm/sun4i/sun8i_csc.h b/drivers/gpu/drm/sun4i/sun8i_csc.h index 828b86fd0cab..27b6807fc786 100644 --- a/drivers/gpu/drm/sun4i/sun8i_csc.h +++ b/drivers/gpu/drm/sun4i/sun8i_csc.h @@ -28,10 +28,9 @@ enum sun8i_csc_mode { SUN8I_CSC_MODE_YVU2RGB, }; -void sun8i_csc_set_ccsc_coefficients(struct sun8i_mixer *mixer, int layer, - enum sun8i_csc_mode mode, - enum drm_color_encoding encoding, - enum drm_color_range range); -void sun8i_csc_enable_ccsc(struct sun8i_mixer *mixer, int layer, bool enable); +void sun8i_csc_config(struct sun8i_mixer *mixer, int layer, + enum sun8i_csc_mode mode, + enum drm_color_encoding encoding, + enum drm_color_range range); #endif diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index 727117658c6c..adcd05acba1b 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -213,14 +213,9 @@ static void sun8i_vi_layer_update_colors(struct sun8i_mixer *mixer, int channel, fmt = state->fb->format; csc_mode = sun8i_vi_layer_get_csc_mode(fmt); - if (csc_mode != SUN8I_CSC_MODE_OFF) { - sun8i_csc_set_ccsc_coefficients(mixer, channel, csc_mode, - state->color_encoding, - state->color_range); - sun8i_csc_enable_ccsc(mixer, channel, true); - } else { - sun8i_csc_enable_ccsc(mixer, channel, false); - } + sun8i_csc_config(mixer, channel, csc_mode, + state->color_encoding, + state->color_range); } static void sun8i_vi_layer_update_buffer(struct sun8i_mixer *mixer, int channel, From patchwork Sun Oct 12 19:23:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 808 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.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 72D222F7AC1 for ; Sun, 12 Oct 2025 19:23:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297038; cv=none; b=OwzfWbulAA6+NlkBW2VJWobYilbiHiUM1obWeSN0sGv+VfKylHEI6lo5KsELUg3FGeh8Ib41PD6RdpjocMC2Pl4ijHptdT1NWXDEKFqduoGjPz25ffbKTut1paU2EVZ/4yCmyX+Q8lMQl9bPd6Gl3Nve4UYc4UmjXxlVD5zMrKQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297038; c=relaxed/simple; bh=cQ3BDWz3+BQP/wtA4CRUpOhEhzqT72tIcXggJtG7sus=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NAaxZ9v6YI41jtFWlggCpScgaKq9/kl8vjUmE6IVssSo/1Xv50+i99RZKjh6BZGnuM7Mn5QJQjbYKQ2DvanPdMZqo2mzoKJSWn8FH83T/JJLMNDm51OWfZJBwSMXLUslFC+XdiajlYFXHl+EJiRLWtxSlWu02FqQqh6CwoiUxFc= 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=gbFFdr3u; arc=none smtp.client-ip=209.85.218.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="gbFFdr3u" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-b54f55a290cso469283566b.2 for ; Sun, 12 Oct 2025 12:23:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297035; x=1760901835; 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=qN9JZUnTMzqv0Kva4/oSm7+m7qLCjBjh91j5rj1nu0o=; b=gbFFdr3uNnOqPSVXMoK1luzgnhYLEurFbCHIXMC32TEzxOD2+atjOJ0dk1j7HdeYb4 V9Jz9A9s08i9lExbc4nwm+ncWKpVBDL6FrfkcO4sHYWcnD4o+dvATI9TJN/1JlwmCaWW I+42+SaZiB25Bnm06i2cG1ZS2tbuc6FlDUjH87ohOC5I11wasnO4Ex1a4kdh27+zBZ0y DYusn2grC1Uvw6NYLIOMFiTQrLQzD4zgaviDOapjKwTjg+v2E8Lu4fRz3w9JpJ44K/IY rAPNIm+SteqmsS51kLDMWCuTHC2Z+vevF1E0UlwwSnBstCiCWMaMQew3uqRW4r7mrDlr SeuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297035; x=1760901835; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qN9JZUnTMzqv0Kva4/oSm7+m7qLCjBjh91j5rj1nu0o=; b=feibyoZunRPUZkZ94O3bx3Ff6TMBszbLddlo5gpdYqjTynEYPUv/uChVzPDtN0Eipy jEDdevW7swb7SlXGDU4CvvWPXhqiMjuUOmKzqsfJEidzdFW2SlmC4Jpv07F4Z5zAKVb+ GdjsPyxUiCbBwn63HeFXqvYsHKj//6PWrur7GaB4aXo411UnrVyd40PfiZFvWxuT1ikA EtX6odkKDXYHSmYdSVgt8tI2rOcTwiin3ZokmpqkM1yZ+BrawZAIGLucEAW9tkaU5PXz NtLwNXbcBgz/nARK6VKZc89dR6oTf0tkyOULS2lrGuHTUKcVyNejp/+XIn5rZZf/JF6w 9QlA== X-Forwarded-Encrypted: i=1; AJvYcCVv2uaqlsuKMhWv8MDzQsVI9EUgMPgXvcWTE6YiObeF4bqjZpVogFoEUhLFeKShFxJT8/hUK1qgLrCdDA==@lists.linux.dev X-Gm-Message-State: AOJu0YxfvOmaiWadeNxb6OIvijRsmv0JfyixkNOAWIXzGjS9xFOBkw3T ofD2zb4UH4GCfWuOYXTl6kJIWMkiHaZ/JkdsVGCt0/ayNMgLxRPQH9kO X-Gm-Gg: ASbGnctpmYQnDfIPkewHaTz0H7E0v2excHtqFp1IvfUweLYBViMW9C/XUcP6LlD77UH A1fIbI6YAzagskBElFIyeR+tqioGvlHI7efUizmFSkVPaJBtZmQ4Ef4fsY12xBdG3ef2+/xdyVA 73ej9t6jhaboGb9egOSx1QWCT2Td/XpvlPPRSzyF7lw7Oc9ByFxlH5aFlyE8rLYE+AGA7mKrd4y w6zrrFWncdwapw7V231jifq/p1ydq+/u66oWfvHuq/R1KnMHFv+Uy748JwYMhA3kc/96jIjeOlt E/572kNsqIKTERPLFPpMt+50r5zP0zvIlPamqpwu8Z1JUp0wSgNTJP0Vd5KHGFoYJKKunxJORJJ Ffi6Y3WzskSsYvIYE+eZS30jKIAVcA0dL5ZE45E1Kmj4X5uqCTfodCSSxCGtoD5W5ge4aGJHNng GnpekDg2HDTH9muJ3bmGvK X-Google-Smtp-Source: AGHT+IEtEdBabmTMqnIubXcrSPakmD6rKWlEr2K1/L9cKjSZtJR06uujVWalB21YsUjTI/XrkX/8/g== X-Received: by 2002:a17:906:dc8d:b0:b4e:b7ee:deea with SMTP id a640c23a62f3a-b50aae98206mr2123778566b.27.1760297034667; Sun, 12 Oct 2025 12:23:54 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.23.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:23:54 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 12/30] drm/sun4i: csc: Simplify arguments with taking plane state Date: Sun, 12 Oct 2025 21:23:12 +0200 Message-ID: <20251012192330.6903-13-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O Taking plane state directly reduces number of arguments, avoids copying values and allows making additional decisions. For example, when plane is disabled, CSC should be turned off. This is also cleanup for later patches which will move call to another place. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_csc.c | 42 +++++++++++++++++++++++--- drivers/gpu/drm/sun4i/sun8i_csc.h | 11 ++----- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 33 +------------------- 3 files changed, 40 insertions(+), 46 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_csc.c b/drivers/gpu/drm/sun4i/sun8i_csc.c index cf0c5121661b..ac7b62adc7df 100644 --- a/drivers/gpu/drm/sun4i/sun8i_csc.c +++ b/drivers/gpu/drm/sun4i/sun8i_csc.c @@ -3,11 +3,20 @@ * Copyright (C) Jernej Skrabec */ +#include +#include +#include #include #include "sun8i_csc.h" #include "sun8i_mixer.h" +enum sun8i_csc_mode { + SUN8I_CSC_MODE_OFF, + SUN8I_CSC_MODE_YUV2RGB, + SUN8I_CSC_MODE_YVU2RGB, +}; + static const u32 ccsc_base[][2] = { [CCSC_MIXER0_LAYOUT] = {CCSC00_OFFSET, CCSC01_OFFSET}, [CCSC_MIXER1_LAYOUT] = {CCSC10_OFFSET, CCSC11_OFFSET}, @@ -196,21 +205,44 @@ static void sun8i_de3_ccsc_setup(struct regmap *map, int layer, mask, val); } +static u32 sun8i_csc_get_mode(struct drm_plane_state *state) +{ + const struct drm_format_info *format; + + if (!state->crtc || !state->visible) + return SUN8I_CSC_MODE_OFF; + + format = state->fb->format; + if (!format->is_yuv) + return SUN8I_CSC_MODE_OFF; + + switch (format->format) { + case DRM_FORMAT_YVU411: + case DRM_FORMAT_YVU420: + case DRM_FORMAT_YVU422: + case DRM_FORMAT_YVU444: + return SUN8I_CSC_MODE_YVU2RGB; + default: + return SUN8I_CSC_MODE_YUV2RGB; + } +} + void sun8i_csc_config(struct sun8i_mixer *mixer, int layer, - enum sun8i_csc_mode mode, - enum drm_color_encoding encoding, - enum drm_color_range range) + struct drm_plane_state *state) { + u32 mode = sun8i_csc_get_mode(state); u32 base; if (mixer->cfg->de_type == SUN8I_MIXER_DE3) { sun8i_de3_ccsc_setup(mixer->engine.regs, layer, - mode, encoding, range); + mode, state->color_encoding, + state->color_range); return; } base = ccsc_base[mixer->cfg->ccsc][layer]; sun8i_csc_setup(mixer->engine.regs, base, - mode, encoding, range); + mode, state->color_encoding, + state->color_range); } diff --git a/drivers/gpu/drm/sun4i/sun8i_csc.h b/drivers/gpu/drm/sun4i/sun8i_csc.h index 27b6807fc786..ce921521aaca 100644 --- a/drivers/gpu/drm/sun4i/sun8i_csc.h +++ b/drivers/gpu/drm/sun4i/sun8i_csc.h @@ -8,6 +8,7 @@ #include +struct drm_plane_state; struct sun8i_mixer; /* VI channel CSC units offsets */ @@ -22,15 +23,7 @@ struct sun8i_mixer; #define SUN8I_CSC_CTRL_EN BIT(0) -enum sun8i_csc_mode { - SUN8I_CSC_MODE_OFF, - SUN8I_CSC_MODE_YUV2RGB, - SUN8I_CSC_MODE_YVU2RGB, -}; - void sun8i_csc_config(struct sun8i_mixer *mixer, int layer, - enum sun8i_csc_mode mode, - enum drm_color_encoding encoding, - enum drm_color_range range); + struct drm_plane_state *state); #endif diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index adcd05acba1b..cf83f7ce6c78 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -188,36 +188,6 @@ static void sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int channel, SUN8I_MIXER_CHAN_VI_DS_M(vm)); } -static u32 sun8i_vi_layer_get_csc_mode(const struct drm_format_info *format) -{ - if (!format->is_yuv) - return SUN8I_CSC_MODE_OFF; - - switch (format->format) { - case DRM_FORMAT_YVU411: - case DRM_FORMAT_YVU420: - case DRM_FORMAT_YVU422: - case DRM_FORMAT_YVU444: - return SUN8I_CSC_MODE_YVU2RGB; - default: - return SUN8I_CSC_MODE_YUV2RGB; - } -} - -static void sun8i_vi_layer_update_colors(struct sun8i_mixer *mixer, int channel, - int overlay, struct drm_plane *plane) -{ - struct drm_plane_state *state = plane->state; - const struct drm_format_info *fmt; - u32 csc_mode; - - fmt = state->fb->format; - csc_mode = sun8i_vi_layer_get_csc_mode(fmt); - sun8i_csc_config(mixer, channel, csc_mode, - state->color_encoding, - state->color_range); -} - static void sun8i_vi_layer_update_buffer(struct sun8i_mixer *mixer, int channel, int overlay, struct drm_plane *plane) { @@ -333,8 +303,7 @@ static void sun8i_vi_layer_atomic_update(struct drm_plane *plane, layer->overlay, plane); sun8i_vi_layer_update_coord(mixer, layer->channel, layer->overlay, plane); - sun8i_vi_layer_update_colors(mixer, layer->channel, - layer->overlay, plane); + sun8i_csc_config(mixer, layer->channel, new_state); sun8i_vi_layer_update_buffer(mixer, layer->channel, layer->overlay, plane); } From patchwork Sun Oct 12 19:23:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 807 Received: from mail-ej1-f45.google.com (mail-ej1-f45.google.com [209.85.218.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 AFBF72F83C2 for ; Sun, 12 Oct 2025 19:23:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297039; cv=none; b=Fl4+lhaP+7zAOZYq3LCx/2tphCFSQarMGG0Hi/xT4GMznmzm8n8A/kAYCMGBoc2qqyk82Bwm4Pnb8TOQ7mYDk1QmRiLofKSY2lztAX5utbtkele3mBDMEzSHVMFcgcRaUKbOdHom/NUj5tn24SNMOjbtKqVsKtySl0S3fcnLg2c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297039; c=relaxed/simple; bh=pQyLYLt8MK5Nc3WPWpve6V5LNVyLoCfjLR7JWOrVrEQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TnqAlUBmkeoVxkM5TjGLzUKaJEfiQS3hbXskGU8AgOKhgWEUhkB9RKB/MgvbvFUvnO/AFU0KHazDMZua9+Hh1bs84uK/cqP0V0pQCdSQNbsaUNLWAWlej1yxyt93mas9xeIap4ZDmcWkHPxwocdI4+l21fuvh4VbyE0S0fKQhMA= 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=LVze4+cW; arc=none smtp.client-ip=209.85.218.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="LVze4+cW" Received: by mail-ej1-f45.google.com with SMTP id a640c23a62f3a-b463f986f80so805956566b.2 for ; Sun, 12 Oct 2025 12:23:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297036; x=1760901836; 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=UQIOjRIdDsBl/wnqSd50NloWouLj/f2wu4NfISu0ViQ=; b=LVze4+cW/+YveoXL2qjPN3/m7fS0ho3IE6dSqVDHDbBG7yV0M5qUE8hYazc8EH/waa tx3jGWocNNnX+oBYZMR2iwwXw2TWY0EoxAx26EudA/wgrRISf5qny8nykeZB66Ix7UYL RTbuFpi1XqqlJy2oWeU8MXzxC0mMzoNFgotA0bzClM2GU4C19EEuiRylVgZRrvAD4e1V yUYRNppQDoH/vCPR0ALtK9Rmns2FcP3d1Y31Df+MXHIJdSwKwsUo5Ckt4mtbhjWLKhCM aqmNSPVsYtLXOf3588nBJEMjw9QpwrqsWY7hUllm8/7894rMDujBbbGlGU6TlcOZDu4B uYJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297036; x=1760901836; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UQIOjRIdDsBl/wnqSd50NloWouLj/f2wu4NfISu0ViQ=; b=gjvq5YqKeM8qZJFo5Q94S2J6RoAzqZYpe8UaroBk9IxcrH2t5Yk4Hq99dZBD8Ukbap uk3aZ2CU5CJyMihZy3q2BZaDUS15Qge8n0hFC56uycLgrtBnpfsro2j1FHPjRUkvSQ8r isXKdJAMbf1QYgPP+kjaYzSU0M8/+rdhNc1JeoNj5kpCWOG+JZBg01l18pRT2CCkCT0H twIqV0dK6HoAu0+xnUJHtU0SHjYE6P+XoQ8tZuYVHMYhuJTxBswzFO3Lxt6WYRuflgVF JMxfq/m80+ljq9H5pkLPg0+8RV+SE0+7g/jdR0Oc5IU7hwpVWPXSPjOjrdXoBbf7kBmb 54YA== X-Forwarded-Encrypted: i=1; AJvYcCWcY5ja9aAeqBdGwaR2yoPsR6ULA84swQkyxXnoeD7VVHcVGbRi68w5l9x6Yl+fD+zHkzb6NJ8IPo/leQ==@lists.linux.dev X-Gm-Message-State: AOJu0YzovGV8eLTgQwT2lObcGW/Kcam8rz7YO0ugCsCwOJ5X0jQkkMS1 f37jij0XbmPlVO8DQIrKuzaqHOHXp1VqofZPk66D6LkIlOPqzsvPRMhd X-Gm-Gg: ASbGncunEzgYECCfOwwDXPRmqgXtfg2M8yOL2j2tivvnHS1d6yIAorXA7ebajBGMHZz T/SP7sGro+pY+BGV3aN9dy2ZosPoA492nZZaC08eNPlIXZZlp8qWlc5LsK7Cram8plBqEkO0mhI 9EsV3fjtvvB9sSxkbj63HUvMxnfII9CPUgebGsSHYBTEVmzBO/aavARLlF7uJS1avu4N00pufAy /rG9oEBx3bGVgJNJwCSgHW8TKgYrMYwaGxobT7TeFNg2bGC1EY46zZA2+wwzDYpcqHYS3m1ZktX zZk1umBqNFmvJ9Kr0pVt7l86UJgRLfytH3TWcZgFyq/q75d6jpbc7SRvFW7Vlm1oSXsEYGeWBGg qN09UNUd5wBq1h00nKLg++Y83B0H8LQrfaUBy+UQDhsnLFt8eh82075FuE0q/n2eDMoy7IzWlRp cvGpzPZ+aw9ptt/ifUOMT+hzRXBMP/xL4= X-Google-Smtp-Source: AGHT+IEo0mmA5QLs7FFLs9zM7BuOIhHX0fkAtfXbVZQzrSvZ8WwfBQOC4GT4ec3HCn2JTDhgwgWT7g== X-Received: by 2002:a17:906:f589:b0:b41:abc9:6154 with SMTP id a640c23a62f3a-b50abaa45a1mr2062111266b.30.1760297035817; Sun, 12 Oct 2025 12:23:55 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.23.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:23:55 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 13/30] drm/sun4i: de2/de3: Move plane type determination to mixer Date: Sun, 12 Oct 2025 21:23:13 +0200 Message-ID: <20251012192330.6903-14-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O Plane type determination logic inside layer init functions doesn't allow index register to be repurposed to plane sequence, which it almost is. So move out the logic to mixer, which allows furter rework for DE33 support. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_mixer.c | 15 +++++++++++++-- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 5 +---- drivers/gpu/drm/sun4i/sun8i_ui_layer.h | 1 + drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 5 +---- drivers/gpu/drm/sun4i/sun8i_vi_layer.h | 1 + 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c index 1fca05a760b8..e7a66d9b622a 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -315,6 +315,7 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, { struct drm_plane **planes; struct sun8i_mixer *mixer = engine_to_sun8i_mixer(engine); + enum drm_plane_type type; int i; planes = devm_kcalloc(drm->dev, @@ -326,7 +327,12 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, for (i = 0; i < mixer->cfg->vi_num; i++) { struct sun8i_layer *layer; - layer = sun8i_vi_layer_init_one(drm, mixer, i); + if (i == 0 && !mixer->cfg->ui_num) + type = DRM_PLANE_TYPE_PRIMARY; + else + type = DRM_PLANE_TYPE_OVERLAY; + + layer = sun8i_vi_layer_init_one(drm, mixer, type, i); if (IS_ERR(layer)) { dev_err(drm->dev, "Couldn't initialize overlay plane\n"); @@ -339,7 +345,12 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, for (i = 0; i < mixer->cfg->ui_num; i++) { struct sun8i_layer *layer; - layer = sun8i_ui_layer_init_one(drm, mixer, i); + if (i == 0) + type = DRM_PLANE_TYPE_PRIMARY; + else + type = DRM_PLANE_TYPE_OVERLAY; + + layer = sun8i_ui_layer_init_one(drm, mixer, type, i); if (IS_ERR(layer)) { dev_err(drm->dev, "Couldn't initialize %s plane\n", i ? "overlay" : "primary"); diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c index 9d5d5e0b7e63..8d74eddaa294 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -267,9 +267,9 @@ static const uint64_t sun8i_layer_modifiers[] = { struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, struct sun8i_mixer *mixer, + enum drm_plane_type type, int index) { - enum drm_plane_type type = DRM_PLANE_TYPE_OVERLAY; int channel = mixer->cfg->vi_num + index; struct sun8i_layer *layer; unsigned int plane_cnt; @@ -284,9 +284,6 @@ struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, layer->channel = channel; layer->overlay = 0; - if (index == 0) - type = DRM_PLANE_TYPE_PRIMARY; - /* possible crtcs are set later */ ret = drm_universal_plane_init(drm, &layer->plane, 0, &sun8i_ui_layer_funcs, diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.h b/drivers/gpu/drm/sun4i/sun8i_ui_layer.h index 83892f6ff211..7745aec32d76 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.h +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.h @@ -51,5 +51,6 @@ struct sun8i_layer; struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, struct sun8i_mixer *mixer, + enum drm_plane_type type, int index); #endif /* _SUN8I_UI_LAYER_H_ */ diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index cf83f7ce6c78..1192b17726d1 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -412,9 +412,9 @@ static const uint64_t sun8i_layer_modifiers[] = { struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, struct sun8i_mixer *mixer, + enum drm_plane_type type, int index) { - enum drm_plane_type type = DRM_PLANE_TYPE_OVERLAY; u32 supported_encodings, supported_ranges; unsigned int plane_cnt, format_count; struct sun8i_layer *layer; @@ -438,9 +438,6 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, format_count = ARRAY_SIZE(sun8i_vi_layer_formats); } - if (!mixer->cfg->ui_num && index == 0) - type = DRM_PLANE_TYPE_PRIMARY; - /* possible crtcs are set later */ ret = drm_universal_plane_init(drm, &layer->plane, 0, &sun8i_vi_layer_funcs, diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.h b/drivers/gpu/drm/sun4i/sun8i_vi_layer.h index 655440cdc78f..fc22b9a6bd8d 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.h +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.h @@ -56,5 +56,6 @@ struct sun8i_layer; struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, struct sun8i_mixer *mixer, + enum drm_plane_type type, int index); #endif /* _SUN8I_VI_LAYER_H_ */ From patchwork Sun Oct 12 19:23:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 806 Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.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 B83C32F8BF4 for ; Sun, 12 Oct 2025 19:23:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297040; cv=none; b=ZISjmwZuICT3MSxcg5hFx+6NUA3xJlWO/1e9h6PjQRr2DXn189fyFrdl7qlByHsHxqzkilmzRoAprucJkqYfTau885zHRCdn7HgTR7NY3vrEOyuyoH3BwrIHWD0ifW/L0eRpm7ZhtOrO9+9msDfIaOr1Dk/91i2gf8kf+kL87Sw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297040; c=relaxed/simple; bh=ZomKanEsSZDy+AK6wHEspIETpM6s5dDvAJVsDJCPg+s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XbRWB/AxOt1kP+JMhdb15mS9/b7JpVuHCUolUsUEnoZ8wusdk7+FF0hGUZ1kI2jSCYipTciTYkY4XVrbi1JAZm5QffbCSJiCVhWLTwVHT0Mgjt1t9tCKu/3kvuWGO+O6hHXcX6M6A2L2/HbYRBtCfjACA3g+H3R3AuT3PLT0O4k= 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=M1gVlY1M; arc=none smtp.client-ip=209.85.218.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="M1gVlY1M" Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-b3dbf11fa9eso592131566b.0 for ; Sun, 12 Oct 2025 12:23:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297037; x=1760901837; 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=4rXnVYjWRna1Dp2XBUdGu2XgFBNqeWg8iiIcPP8l+VE=; b=M1gVlY1M8ykPFejnGLW724fpuFjBi5bZ/VLxkUKIPVAecg5pjMir568Be2CgjJ8JDn JDU9wIH75oXyCUnlUlCFx1VzGJBKZaCqDSZf1WOkvgoSa/yoJKLMbMBpzcx4QGsVigut G4wEV0IrPKmzEtxMrgk4Qxcccho8CnHOF1HGwpRAek6eU2hTymIpYzv+QGWqIW3kWoac vJYiILOQS6dy0G4QL2+PX5+Kxdc8Y5rmWM6hJvC37G1bhC40BdbMZBamerChnf5fvqIy 80voBJa82tIUjzqcpMFKqYN8zUsjOY+GZCu6CqW8I8S5EK1g4hlwKlZUM4RojsurNRgg kC6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297037; x=1760901837; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4rXnVYjWRna1Dp2XBUdGu2XgFBNqeWg8iiIcPP8l+VE=; b=g2TKkubTM1oRXqC+0esoXvyJ83AiAUziW2/Fotrc7wQJ5gBFivXToYXbG31rcaS4rj 4VGWvNjsk72e74hd9yKyYaV6xJmub8w03z1JJ1aRYncZPjfFnIjHc1YYs5J2sbRN9BuP 2IHyd466yeI9rwcLReZqmb1PTpOhHjpnhStEWMArxtEcp01k+qfdDw2MzB+C2z0+/Jok FZdA0HavxSTJTCFh9wiAWv8SX34gmSI3qwJF8FMMHf+9C9KUIvkneJ0M4jBFmk+STIEC SfBARf5MchXlBPUqRQDCP3qxskOcimVT/2ukQHyTZmyr93BJbkEGqE7ltUdGeQDsoMMV Qr6g== X-Forwarded-Encrypted: i=1; AJvYcCWWI/DS9u9lJFX/WDb/AzAbs670+fG/bKqJ7VqzwdkkKDEUXaG5dewsTn2Ij3DQiX7asqP03fc73PuhPQ==@lists.linux.dev X-Gm-Message-State: AOJu0YzvbRfMQ7zR3/B+LE7WCIPvvQU6pqA81tAnSACcHQy17Xh/03Kj InIWEY/hNnMLl5lSI/EHXWMMUbH51q3c4KOYoF3L+jdz9wrVlc6eySCm X-Gm-Gg: ASbGncucUM2utHgPuFEUoDZwrhTgkfOQ3W8FYs9uaB2wisTgwDfrfrIWGiP1MHd89ad DEj/9FJsf1b7H8bT4hZhCTEl1mIX13efzZsV2O6xV/ajQsv9dvIJx9WfCoUidm2bJZ8hn2v2qSB Zca49zjrFq2NtKy1iSIr2lTBTJriOBEoNwq/c0tOdl1MHZZ0gkdrstVPYZhO+eVs8BTwgIPLgIL m+pTAua+0j3g3PgjyJdqeWfCkqfvHwiojNBfNeodcNCXX7RgVSA5wDsFAaMXRQMTUtBmumGq0LI ww1VrSREyutZhwdBq/I02lRMfq6nexf10+4wxy90x71UdgkHt4VO0Vfo4qq/7xy1x4rAe1SvKRq GYTq5XSOeiZvkKgy1s2oIIUwoizuB3EIuk+srWDG1MbK82hT59yzaHQxH8hJfDAhjGXoPZFU/ib fOSScnJrrZuWfzm1QhaelG X-Google-Smtp-Source: AGHT+IG0I+CtyMQ9AS5dyUihgRwKpeygER1fugmzO1P668vrEqp3088Kprh13QnASf90ghU3NNQmHg== X-Received: by 2002:a17:907:2d07:b0:b04:708e:7348 with SMTP id a640c23a62f3a-b50ac2cf4cfmr2032278666b.30.1760297037018; Sun, 12 Oct 2025 12:23:57 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.23.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:23:56 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 14/30] drm/sun4i: ui_layer: Change index meaning Date: Sun, 12 Oct 2025 21:23:14 +0200 Message-ID: <20251012192330.6903-15-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O In the pursuit of making UI/VI layer code independent of DE version, change meaning of UI index to index of the plane within mixer. DE33 can split amount of VI and UI planes between multiple mixer in whatever way it deems acceptable, so simple calculation VI num + UI index won't be meaningful anymore. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_mixer.c | 5 +++-- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 5 ++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c index e7a66d9b622a..17c0ab5860b5 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -343,6 +343,7 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, } for (i = 0; i < mixer->cfg->ui_num; i++) { + unsigned int index = mixer->cfg->vi_num + i; struct sun8i_layer *layer; if (i == 0) @@ -350,14 +351,14 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, else type = DRM_PLANE_TYPE_OVERLAY; - layer = sun8i_ui_layer_init_one(drm, mixer, type, i); + layer = sun8i_ui_layer_init_one(drm, mixer, type, index); if (IS_ERR(layer)) { dev_err(drm->dev, "Couldn't initialize %s plane\n", i ? "overlay" : "primary"); return ERR_CAST(layer); } - planes[mixer->cfg->vi_num + i] = &layer->plane; + planes[index] = &layer->plane; } return planes; diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c index 8d74eddaa294..4f6c8b0acba6 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -270,7 +270,6 @@ struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, enum drm_plane_type type, int index) { - int channel = mixer->cfg->vi_num + index; struct sun8i_layer *layer; unsigned int plane_cnt; int ret; @@ -281,7 +280,7 @@ struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, layer->mixer = mixer; layer->type = SUN8I_LAYER_TYPE_UI; - layer->channel = channel; + layer->channel = index; layer->overlay = 0; /* possible crtcs are set later */ @@ -303,7 +302,7 @@ struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, return ERR_PTR(ret); } - ret = drm_plane_create_zpos_property(&layer->plane, channel, + ret = drm_plane_create_zpos_property(&layer->plane, index, 0, plane_cnt - 1); if (ret) { dev_err(drm->dev, "Couldn't add zpos property\n"); From patchwork Sun Oct 12 19:23:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 805 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) (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 4D7D82F99A8 for ; Sun, 12 Oct 2025 19:24:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297042; cv=none; b=EWJuOnl2EOPZ1kNSBuFfvnFLknYBzJBXN+eY09PDX4CvNOdsutBhd9FwvJDy7+Fno6OAUdaRKp5rTOkV3o9/JCe8QntZlwzp7VPJ6JM1WRroWjfP7rai8ZjR5lQZtZ8/Qg6mCtEoHz+RXUv0GdAk0C7Ldb4CM+uQpBEyEP32Ec8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297042; c=relaxed/simple; bh=zj1rOPUM5oZeeTycyM+Ty1Sv9Bs/6lqDALJplKv3ek4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TZcqi19SV32k/HjN3Ul7GGGVZil68waOtmsgKqxqIhZTyPfLrz9oQA6IugzwEnWlL9fwXAFIbIj3dodtxbAHmRi32AEFSQY4qF+ZuGEq9/ueVhwOrLICBguqfZ8roZ4Er9ocLK+zXKioNA07tRJw2gQNzqg67uS9FT/2XId7GE4= 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=EaMtr+9O; arc=none smtp.client-ip=209.85.218.51 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="EaMtr+9O" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-b40f11a1027so636779166b.2 for ; Sun, 12 Oct 2025 12:23:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297038; x=1760901838; 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=v7B5z/6FvG3I54OQ4ZNRVyTMbTdgGg3l1ZfyjU4MqtQ=; b=EaMtr+9OnrrAD3TpIyWnKLgKOW3CYJ/HvWyIPLPeKNdic1/liXyOfjlWR8JeQfcETd 0PMUZ/H4QgcyQR+DmOjCxdPT3q20Pz6DVA+aX5TgjYlwEmxv1QLmeh/UBhuwMKJjv94G Jp32bYvI0n/PGyCMAYqS7xiQcqALWQzdILPMJ+9JBG7XYFhb1pfb5LlVvSccKjL7DZb9 S0MqWXGfehoyiROUTdu2z2ZzF6SbohPf4FNfabIWfTNTEsHnz8yo5dvhy8R5dxJCbiWD zwub2U0Pc58H7vd7yO1JzgFgmHVul8tekMXQ0gIUGteQaR3T93oaSkOZxUhLNPeGG7T7 q+yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297038; x=1760901838; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=v7B5z/6FvG3I54OQ4ZNRVyTMbTdgGg3l1ZfyjU4MqtQ=; b=tKshhHv+WrHhGvEBanE81OqOla2k1rFA8ptQW7eKUN2VuCQULwtFSZ6wLhunoAQ6s2 q0B8eTv4rE58CxD41ayUJ+Xd01/a5VjcTYHlZ2KxnAeZM5RVnfRG60Nch+R4VIyFXFCc vilBNpR7pR10L9UanGEaZX9EgPSpi0GF9fcbH4n6fR6VIdlH5MJmhGob4ADSVrSog9Nc 0MLIeS+qfd/DOU/EXWjBOhVp3cAmcIWGIZtcqQLXRWOiNsIu8DM6D2JnhTwTbU7llRd5 z9GtZCyfYNPs+N3xbKfdZKhl8upZb0+dC8xPB95icqVGnkl6vUS7hmrUiRreOHFZvh1N /7aw== X-Forwarded-Encrypted: i=1; AJvYcCWHWn9clsWR8KIl4QJNKlMhE3TQqrCzQ1R0GWX2E9qx5hLpwvnV1cRzPhqJottA3fjJDTvrTj3MfRqJAA==@lists.linux.dev X-Gm-Message-State: AOJu0Yxy0rjvbY2weRFV3Univz7k5qHseONrruMVgEMsLFZe+YlR6Sir u9/RbmslOyuI9ZIy3R1JemFnt+GWRUwAzGQHDScsWVi1S7IlGZP3/mRo X-Gm-Gg: ASbGnctNG9C1Po7vgYUGLDc1W8P1c7jymYXoqhFQgOedFQpDrf3n28xgt2AiW/FvfU9 PB9WRRcTy8XSc7aJUjJg88jdrlJufCIEKeRCwbpVOdOIAYLszaNvbN0Ehu4j4cOS9ZP2S+dYGNe pu7mVyzpBnNkWF/eL5tO7u3mn+girEOQqk8+Wu+oh13cioyq1LpC3URoQLy71zlGPrDGJlgKAW+ RA0Z8gpH3h5xHyWTeexo8/b8ZzY7B71Kpj1E6Lp8BooSSXG895bYYVLBIEKDaSxkxWiH4P23sO7 m/QtsmHyl2eFfE065d8ayK5SmQquEJ4eXoZG9S1TRGNHndWL8YXyBoU78ajje1U+eAC3eWbxrpK eMx1jliZK7xr8AdXaGMM/D0LyErP+YD+D468FzzTcicAHKCBNyjHDkfTOVdLy+V/xrGswvNuCKn vmULiFO7JZL7j1BvnmXq0tLqaHk6EmM0s= X-Google-Smtp-Source: AGHT+IEht1RvYv+GrJVSKlpD0bZZHYXhupsubyTU9aRKjX6qUxe0ggNfr/uDwTEge6IoB2ejpquang== X-Received: by 2002:a17:907:da2:b0:b3c:de0e:7091 with SMTP id a640c23a62f3a-b50aa28f291mr1959386666b.8.1760297038157; Sun, 12 Oct 2025 12:23:58 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.23.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:23:57 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 15/30] drm/sun4i: layer: move num of planes calc out of layer code Date: Sun, 12 Oct 2025 21:23:15 +0200 Message-ID: <20251012192330.6903-16-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O With DE33, number of planes no longer depends on mixer because layers are shared between all mixers. Get this value via parameter, so DE specific code can fill in proper value. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_mixer.c | 10 +++++----- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 6 ++---- drivers/gpu/drm/sun4i/sun8i_ui_layer.h | 3 ++- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 7 +++---- drivers/gpu/drm/sun4i/sun8i_vi_layer.h | 3 ++- 5 files changed, 14 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c index 17c0ab5860b5..18dd998364ae 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -315,12 +315,11 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, { struct drm_plane **planes; 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; int i; - planes = devm_kcalloc(drm->dev, - mixer->cfg->vi_num + mixer->cfg->ui_num + 1, - sizeof(*planes), GFP_KERNEL); + planes = devm_kcalloc(drm->dev, plane_cnt, sizeof(*planes), GFP_KERNEL); if (!planes) return ERR_PTR(-ENOMEM); @@ -332,7 +331,7 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, else type = DRM_PLANE_TYPE_OVERLAY; - layer = sun8i_vi_layer_init_one(drm, mixer, type, i); + layer = sun8i_vi_layer_init_one(drm, mixer, type, i, plane_cnt); if (IS_ERR(layer)) { dev_err(drm->dev, "Couldn't initialize overlay plane\n"); @@ -351,7 +350,8 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, else type = DRM_PLANE_TYPE_OVERLAY; - layer = sun8i_ui_layer_init_one(drm, mixer, type, index); + layer = sun8i_ui_layer_init_one(drm, mixer, type, index, + plane_cnt); if (IS_ERR(layer)) { dev_err(drm->dev, "Couldn't initialize %s plane\n", i ? "overlay" : "primary"); diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c index 4f6c8b0acba6..8f6fcdfcf52a 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -268,10 +268,10 @@ static const uint64_t sun8i_layer_modifiers[] = { struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, struct sun8i_mixer *mixer, enum drm_plane_type type, - int index) + int index, + int plane_cnt) { struct sun8i_layer *layer; - unsigned int plane_cnt; int ret; layer = devm_kzalloc(drm->dev, sizeof(*layer), GFP_KERNEL); @@ -294,8 +294,6 @@ struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, return ERR_PTR(ret); } - plane_cnt = mixer->cfg->ui_num + mixer->cfg->vi_num; - ret = drm_plane_create_alpha_property(&layer->plane); if (ret) { dev_err(drm->dev, "Couldn't add alpha property\n"); diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.h b/drivers/gpu/drm/sun4i/sun8i_ui_layer.h index 7745aec32d76..0613b34d36e0 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.h +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.h @@ -52,5 +52,6 @@ struct sun8i_layer; struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, struct sun8i_mixer *mixer, enum drm_plane_type type, - int index); + int index, + int plane_cnt); #endif /* _SUN8I_UI_LAYER_H_ */ diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index 1192b17726d1..805db4ea714b 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -413,10 +413,11 @@ static const uint64_t sun8i_layer_modifiers[] = { struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, struct sun8i_mixer *mixer, enum drm_plane_type type, - int index) + int index, + int plane_cnt) { u32 supported_encodings, supported_ranges; - unsigned int plane_cnt, format_count; + unsigned int format_count; struct sun8i_layer *layer; const u32 *formats; int ret; @@ -449,8 +450,6 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, return ERR_PTR(ret); } - plane_cnt = mixer->cfg->ui_num + mixer->cfg->vi_num; - if (mixer->cfg->vi_num == 1 || mixer->cfg->de_type >= SUN8I_MIXER_DE3) { ret = drm_plane_create_alpha_property(&layer->plane); if (ret) { diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.h b/drivers/gpu/drm/sun4i/sun8i_vi_layer.h index fc22b9a6bd8d..a568e1db1e19 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.h +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.h @@ -57,5 +57,6 @@ struct sun8i_layer; struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, struct sun8i_mixer *mixer, enum drm_plane_type type, - int index); + int index, + int plane_cnt); #endif /* _SUN8I_VI_LAYER_H_ */ From patchwork Sun Oct 12 19:23:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 803 Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.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 0A7B72F9DB2 for ; Sun, 12 Oct 2025 19:24:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297045; cv=none; b=m4kk6nC/Gmsn6lpLJ8zdvDyMS5Td+uY64rykgBX0HQgVWenmJAfF9KEczFwABZutqREJXx0/JEUy7B2mUTrJjNmlucqSMljpTfjIuCKPY71sb/lRYELQ61EPpDOZxFgR9rvTx+pUQMNUe4cHHyfTh+2V2pr02r/V2GRZugJKK4M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297045; c=relaxed/simple; bh=k6sfFLRDZy5wK4Z9n6cVxPJtWPapLDCxQAuqb+LuH0k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CteUwqMtr74+vBX3M9L4tP5xCfhonqAf2U+4uyQP/sPK64qB+Siuk43ay9K053yzJ9xEecFXrdILdAEPw+QiwvKfIF5RwRIB1Dr5chytPkk7mV4Eas0QVsBiFPQK9IbMBT8qD9LSkJfbtPKFsX5kt6MD6O+ZvQvrVf81ncj0MCA= 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=dvrBR0K3; arc=none smtp.client-ip=209.85.218.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="dvrBR0K3" Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-b00a9989633so650774966b.0 for ; Sun, 12 Oct 2025 12:24:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297039; x=1760901839; 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=OE7z3Ym6vzsdMqeurGEJ9WmMXX0dMfNPsEVDzikE/Uo=; b=dvrBR0K3jycAkzs0/FMRgPk6UYmZktYY9RxJJMeEoTEVlea+fb06872ftui3FmQOac dKUSsz59TKy1svUPceJpieG3lkaZggoN+FVuCYkqR/3/pdvDf53/5+4s/kFNAOMEtEcd m5oJCzbv5ZM+/ycx0lynpVdW+5WGftPyxGmg7fgjpqSOP/1Z59tl1yimAua6UR9mExTT MJLjmM7WOg3tLKqR8J1DFLq5VEFTQ7CIlg1OtJ1Y6IL49tZrQPiPKZu3F5eRvi5waUW5 MhwIPuNgEBOn/3joweIvHM8y7be5KpcxNShW1M+HGLHnsi56g4XGAADgJipAfq/N/mLK bQAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297039; x=1760901839; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OE7z3Ym6vzsdMqeurGEJ9WmMXX0dMfNPsEVDzikE/Uo=; b=C2nBN5JgkvhlWIyDJKalrbJB/yAmMfGPxoq5FecOA+p3QUwV9a9tl8qoG5eDlXcqBr aF7d4RMNALSI6MAjR3XaM1LqxB9nj0e+PYPrJE2/4x1rchE9rJ+HngsQRlSIJoeT9Icx iipfZBK1yt81NuhdQdUp4IHt7WlucT3HaplM/V/AefiouALiqmmMynWPyk0T9lo51zhm 5ObRi8tNCi+ZC0EIVbybUQacl4WLCS25rkSVxFL6an2h2LnH9gBtv2Z3EFVPKBUP7NuZ 7ulZ0mMhbwJzY1ZdD29BSQxnX5xxQOCVaxOkA8642CwOTv6CbOj4Sg+njAqo1sBVpGPU zwwQ== X-Forwarded-Encrypted: i=1; AJvYcCVqU9ISCu6LlTXOVz8Lf3J28oqSi2q1/GaSmDiGl5bP8p6cUU+RsXWj/Z+rUJQrMF7CNOQhhpZ6+Q32EA==@lists.linux.dev X-Gm-Message-State: AOJu0YxogxmPN/6sz5vrN7Z+4OD16Fb8PZBl3A4lq9Enigct1xrJa8PT KF1D7dRMcJioVp2ivsq4MSQ53SYXtEZ7DCroRIiwZeSDFFf5I6VYRloF X-Gm-Gg: ASbGncusnxRGOE0Ou3qA4rkF0ZGDFY+m5i7yYe8gVRWPIpuVve+hjARqXT+17RL7+We gK/q4VpFwEIv28LawdCsoSo1p8osE0qzKmS3y6OsanYVsg8/xJBxdogCJxTOx4TA1WF6cQ/Fqso ArLxbQm75kSChEXboArQnYcnEtcWSopmzg3u/7MZBteuPiBc3ui//b5R6zdpkx+0JFPFSTpg9DG UZbp521t3oVG2b/EoINIXHsRpzueMvqB15lFzmHYjoijU0rPV4QPt19V+Zl3M9erVZKlocw78XJ fasfU8/UPhuEj4HJM5m5ldO+65K9WsAiBpDlvhJbEsdIdWxMkdK6Vs3UyealFMQekO2b/pGhG7w Qxl76i0r3tCJbQkwRqkfNcOVshJG277cTtzkM0MU4DqGaGDW3lds4TsAVb7euiqnXbssFFzyTVa OKpl73qQ7XQpWLBZAn0GgO X-Google-Smtp-Source: AGHT+IF1xOKgWuyI+oCZN9C/Rgac5TfDhPy4n+lEBLcOmhbH8TpPGj6H1LBb8Yf8EpbwReOe4/+GPA== X-Received: by 2002:a17:907:d48d:b0:b4d:71e9:1662 with SMTP id a640c23a62f3a-b4f43730a39mr2759401266b.30.1760297039238; Sun, 12 Oct 2025 12:23:59 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.23.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:23:58 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 16/30] drm/sun4i: ui_layer: use layer struct instead of multiple args Date: Sun, 12 Oct 2025 21:23:16 +0200 Message-ID: <20251012192330.6903-17-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O This change is equally a cleanup (less arguments) and preparation for DE33 separate plane driver. It will introduce additional register space. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 62 +++++++++++++------------- 1 file changed, 30 insertions(+), 32 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c index 8f6fcdfcf52a..d5b7241acdea 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -25,24 +25,24 @@ #include "sun8i_ui_scaler.h" #include "sun8i_vi_scaler.h" -static void sun8i_ui_layer_disable(struct sun8i_mixer *mixer, - int channel, int overlay) +static void sun8i_ui_layer_disable(struct sun8i_layer *layer) { - u32 ch_base = sun8i_channel_base(mixer, channel); + struct sun8i_mixer *mixer = layer->mixer; + u32 ch_base = sun8i_channel_base(mixer, layer->channel); regmap_write(mixer->engine.regs, - SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, overlay), 0); + SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, layer->overlay), 0); } -static void sun8i_ui_layer_update_attributes(struct sun8i_mixer *mixer, - int channel, int overlay, +static void sun8i_ui_layer_update_attributes(struct sun8i_layer *layer, struct drm_plane *plane) { struct drm_plane_state *state = plane->state; + struct sun8i_mixer *mixer = layer->mixer; const struct drm_format_info *fmt; u32 val, ch_base, hw_fmt; - ch_base = sun8i_channel_base(mixer, channel); + ch_base = sun8i_channel_base(mixer, layer->channel); fmt = state->fb->format; sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); @@ -54,22 +54,23 @@ static void sun8i_ui_layer_update_attributes(struct sun8i_mixer *mixer, val |= SUN8I_MIXER_CHAN_UI_LAYER_ATTR_EN; regmap_write(mixer->engine.regs, - SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, overlay), val); + SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, layer->overlay), val); } -static void sun8i_ui_layer_update_coord(struct sun8i_mixer *mixer, int channel, - int overlay, struct drm_plane *plane) +static void sun8i_ui_layer_update_coord(struct sun8i_layer *layer, + struct drm_plane *plane) { struct drm_plane_state *state = plane->state; + struct sun8i_mixer *mixer = layer->mixer; u32 src_w, src_h, dst_w, dst_h; u32 outsize, insize; u32 hphase, vphase; u32 ch_base; DRM_DEBUG_DRIVER("Updating UI channel %d overlay %d\n", - channel, overlay); + layer->channel, layer->overlay); - ch_base = sun8i_channel_base(mixer, channel); + ch_base = sun8i_channel_base(mixer, layer->channel); src_w = drm_rect_width(&state->src) >> 16; src_h = drm_rect_height(&state->src) >> 16; @@ -87,7 +88,7 @@ static void sun8i_ui_layer_update_coord(struct sun8i_mixer *mixer, int channel, state->src.x1 >> 16, state->src.y1 >> 16); DRM_DEBUG_DRIVER("Layer source size W: %d H: %d\n", src_w, src_h); regmap_write(mixer->engine.regs, - SUN8I_MIXER_CHAN_UI_LAYER_SIZE(ch_base, overlay), + SUN8I_MIXER_CHAN_UI_LAYER_SIZE(ch_base, layer->overlay), insize); regmap_write(mixer->engine.regs, SUN8I_MIXER_CHAN_UI_OVL_SIZE(ch_base), @@ -102,37 +103,38 @@ static void sun8i_ui_layer_update_coord(struct sun8i_mixer *mixer, int channel, vscale = state->src_h / state->crtc_h; if (mixer->cfg->de_type == SUN8I_MIXER_DE33) { - sun8i_vi_scaler_setup(mixer, channel, src_w, src_h, + sun8i_vi_scaler_setup(mixer, layer->channel, src_w, src_h, dst_w, dst_h, hscale, vscale, hphase, vphase, state->fb->format); - sun8i_vi_scaler_enable(mixer, channel, true); + sun8i_vi_scaler_enable(mixer, layer->channel, true); } else { - sun8i_ui_scaler_setup(mixer, channel, src_w, src_h, + sun8i_ui_scaler_setup(mixer, layer->channel, src_w, src_h, dst_w, dst_h, hscale, vscale, hphase, vphase); - sun8i_ui_scaler_enable(mixer, channel, true); + sun8i_ui_scaler_enable(mixer, layer->channel, true); } } else { DRM_DEBUG_DRIVER("HW scaling is not needed\n"); if (mixer->cfg->de_type == SUN8I_MIXER_DE33) - sun8i_vi_scaler_enable(mixer, channel, false); + sun8i_vi_scaler_enable(mixer, layer->channel, false); else - sun8i_ui_scaler_enable(mixer, channel, false); + sun8i_ui_scaler_enable(mixer, layer->channel, false); } } -static void sun8i_ui_layer_update_buffer(struct sun8i_mixer *mixer, int channel, - int overlay, struct drm_plane *plane) +static void sun8i_ui_layer_update_buffer(struct sun8i_layer *layer, + struct drm_plane *plane) { struct drm_plane_state *state = plane->state; + struct sun8i_mixer *mixer = layer->mixer; struct drm_framebuffer *fb = state->fb; struct drm_gem_dma_object *gem; dma_addr_t dma_addr; u32 ch_base; int bpp; - ch_base = sun8i_channel_base(mixer, channel); + ch_base = sun8i_channel_base(mixer, layer->channel); /* Get the physical address of the buffer in memory */ gem = drm_fb_dma_get_gem_obj(fb, 0); @@ -150,13 +152,13 @@ static void sun8i_ui_layer_update_buffer(struct sun8i_mixer *mixer, int channel, /* Set the line width */ DRM_DEBUG_DRIVER("Layer line width: %d bytes\n", fb->pitches[0]); regmap_write(mixer->engine.regs, - SUN8I_MIXER_CHAN_UI_LAYER_PITCH(ch_base, overlay), + SUN8I_MIXER_CHAN_UI_LAYER_PITCH(ch_base, layer->overlay), fb->pitches[0]); DRM_DEBUG_DRIVER("Setting buffer address to %pad\n", &dma_addr); regmap_write(mixer->engine.regs, - SUN8I_MIXER_CHAN_UI_LAYER_TOP_LADDR(ch_base, overlay), + SUN8I_MIXER_CHAN_UI_LAYER_TOP_LADDR(ch_base, layer->overlay), lower_32_bits(dma_addr)); } @@ -208,19 +210,15 @@ static void sun8i_ui_layer_atomic_update(struct drm_plane *plane, struct drm_plane_state *new_state = drm_atomic_get_new_plane_state(state, plane); struct sun8i_layer *layer = plane_to_sun8i_layer(plane); - struct sun8i_mixer *mixer = layer->mixer; if (!new_state->crtc || !new_state->visible) { - sun8i_ui_layer_disable(mixer, layer->channel, layer->overlay); + sun8i_ui_layer_disable(layer); return; } - sun8i_ui_layer_update_attributes(mixer, layer->channel, - layer->overlay, plane); - sun8i_ui_layer_update_coord(mixer, layer->channel, - layer->overlay, plane); - sun8i_ui_layer_update_buffer(mixer, layer->channel, - layer->overlay, plane); + sun8i_ui_layer_update_attributes(layer, plane); + sun8i_ui_layer_update_coord(layer, plane); + sun8i_ui_layer_update_buffer(layer, plane); } static const struct drm_plane_helper_funcs sun8i_ui_layer_helper_funcs = { From patchwork Sun Oct 12 19:23:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 804 Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.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 6FF9D2F9DBD for ; Sun, 12 Oct 2025 19:24:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297044; cv=none; b=rHeCcdH7Dqt2Ys/KPp4hC9aQ2bAFsgP5zMGmkeIOZomlC/UZ8r9dXfsFUDthhfSvnIrHkT6JVHcM9J7cWzsmf7ClD7k4W5zyMLh9Pbvt4q06ospactA1whsh3bDSJ4xDzrp5bV6CzZMIvpaE+dh3Qk/9shHd/K2sT6mQARggLpQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297044; c=relaxed/simple; bh=VMGFXyUFgbi3kCmM6PTUqzyMycpO6B+C8ZN7eSBLhS0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NL5WCHRQ3pWmyMe2acBQ7OjcgnwvbX2fnmHR2dMieRl+tJ1hXLXGkSZxPBkyRpsdAB8Jex4bvE39YP3dJqLfdgTTSkb+P2yQYXPfcsUm8g7Mb/xZLDcrFm3lg/4hcFEg6TYicxmj9xwPCyvpSsHTL3JiaO+g9aNnSb4JlxinjNs= 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=UNGz0T1P; arc=none smtp.client-ip=209.85.208.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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="UNGz0T1P" Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-634a3327ff7so7299664a12.1 for ; Sun, 12 Oct 2025 12:24:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297041; x=1760901841; 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=eL2EBWUDT3u08ZkUVEOOStqc7WgxRVhnqkwZQdEEL5M=; b=UNGz0T1PxLLa9Ck6yPGX458Rcdy+WYjTy3nDKvf05R+Y87oR26/wrdoPgzYHaScvFp RVcikgt54+xzfvaCL90iP8J82dezhh+x82Q1c/Uk/ZxhuDqZtk/1Dq9OeDUqTTE42lSZ w5tCIBYNIfgkZQVPRtrAqDX8iGBIJN16sIQARmEWu9AhD9L/97zDfpSDIdI4X5ddBp4T DiZDwDKFWd2oNLR4Os0wRNYVreiZwp/g2E1wKER4sv73GQ6WnLFCEe7FOU/vqSJNDjKe jV5kcBEFRMSbG/UR2RMzM10hK8GZnklLZ5WLJE7ikKXg3/cBvzsc0x9xX4HE7gdQL20v pZyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297041; x=1760901841; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eL2EBWUDT3u08ZkUVEOOStqc7WgxRVhnqkwZQdEEL5M=; b=Ncaq3YilnkvLTmR5NE6XolFyGZy2irxpHZmRfMDUtLKIy4rX4ItCXZGF+JzTPUeXoq M+1wdNCu/6OoL4h/pvEtdTtm9Hnin9BZuJHyfzcn+rXEF67e/hI3/Dvkfe1cmsb2xpru J+VeS63ur9Sd8e40sthWlNgbBVsCp37rYO2Jvq/6vM0mwUZ4B8WP3z48G9uevQPdLXUU v/GYXxP/0Ok6AERrNLT9p+/MURpBYYARze9Jskbd4GmV484C/lXt5s6oS66WYUztQ2P/ /uBFTVElOeAMI9EOdNgEgUGPp0V5Zcp0/FtFlXnbm1jrnlznBwxuzRLpB02EFqzO2Kzt HlJg== X-Forwarded-Encrypted: i=1; AJvYcCVCUIo2VDfuTc78218vguNoYQJl8O4bs8+r6/8zpF2X7UXnlCqtu0gmHFORqMJS+PCSlgjEiWniM3EDww==@lists.linux.dev X-Gm-Message-State: AOJu0Yw7MTldsnta5bHO+jVA6+B4xdu6yq+Nbf19V8NbOoWA87ay2MrQ qlQSJfyIbFSk9GUIGp0j/jHBVp3JYEE74vdo7lesRtSZVPYL3hHqb5Z8 X-Gm-Gg: ASbGncuMAmKLikpOaDNPwdN4UKD936PJ0rlB+ko+Zo2gKWF4tifv56f7j5ebe2r5ekT TD1QDfHVqb4JJhH0fR69RXjUP94pDghOmzvluA4eMq7PzNsQuQsNx1BMvabTT6G8OhMxRIXcK5u XZZsXscRktTHqNM0krVBt8w6H0o6ib2QsHKvoMCIxmIDjakVXY7FqxAvNPZHNEZzM2vbFuCxm88 LQoMZM3Uytcsh18cmpPZ6cOeuig8n6eeoJejk96xxcFXx8t/HU2Zk3KYVUcstaBLzh9A+jvG1CY JRp8T9q47D6KefoWxxtwXbyEQBINpadl7MIfkG1tKmLiTC0CzSZciU786Q9h8Suw9vXB1RU3zhR u6rEJOhSxQh8xJQmWAcI80qqQM4vW4fFvkOPcxDp8sZ71DFWu1/gOfLOdtNQr9YRuwQrzsev3d/ mnbUv75labKzON2wpidf2WuWfW6jiAswDNoJ46YGOgmQ== X-Google-Smtp-Source: AGHT+IGPkp7VdpjnXUyPQLeT83O0qdM4azwPi4L4aE39Db/9aQTPTuI9Yl565PGYAFHx9WevGbF8Hg== X-Received: by 2002:a17:907:3e21:b0:b41:e675:95e5 with SMTP id a640c23a62f3a-b50aaa98160mr1845501866b.23.1760297040342; Sun, 12 Oct 2025 12:24:00 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.23.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:24:00 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 17/30] drm/sun4i: vi_layer: use layer struct instead of multiple args Date: Sun, 12 Oct 2025 21:23:17 +0200 Message-ID: <20251012192330.6903-18-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O This change is equally a cleanup (less arguments) and preparation for DE33 separate plane driver. It will introduce additional register space. No functional changes. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 58 +++++++++++++------------- 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index 805db4ea714b..ba9c03f04f03 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -18,24 +18,24 @@ #include "sun8i_vi_layer.h" #include "sun8i_vi_scaler.h" -static void sun8i_vi_layer_disable(struct sun8i_mixer *mixer, - int channel, int overlay) +static void sun8i_vi_layer_disable(struct sun8i_layer *layer) { - u32 ch_base = sun8i_channel_base(mixer, channel); + struct sun8i_mixer *mixer = layer->mixer; + u32 ch_base = sun8i_channel_base(mixer, layer->channel); regmap_write(mixer->engine.regs, - SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, overlay), 0); + SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, layer->overlay), 0); } -static void sun8i_vi_layer_update_attributes(struct sun8i_mixer *mixer, - int channel, int overlay, +static void sun8i_vi_layer_update_attributes(struct sun8i_layer *layer, struct drm_plane *plane) { struct drm_plane_state *state = plane->state; + struct sun8i_mixer *mixer = layer->mixer; const struct drm_format_info *fmt; u32 val, ch_base, hw_fmt; - ch_base = sun8i_channel_base(mixer, channel); + ch_base = sun8i_channel_base(mixer, layer->channel); fmt = state->fb->format; sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); @@ -55,14 +55,15 @@ static void sun8i_vi_layer_update_attributes(struct sun8i_mixer *mixer, } regmap_write(mixer->engine.regs, - SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, overlay), val); + SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, layer->overlay), val); } -static void sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int channel, - int overlay, struct drm_plane *plane) +static void sun8i_vi_layer_update_coord(struct sun8i_layer *layer, + struct drm_plane *plane) { struct drm_plane_state *state = plane->state; const struct drm_format_info *format = state->fb->format; + struct sun8i_mixer *mixer = layer->mixer; u32 src_w, src_h, dst_w, dst_h; u32 outsize, insize; u32 hphase, vphase; @@ -72,9 +73,9 @@ static void sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int channel, u32 ch_base; DRM_DEBUG_DRIVER("Updating VI channel %d overlay %d\n", - channel, overlay); + layer->channel, layer->overlay); - ch_base = sun8i_channel_base(mixer, channel); + ch_base = sun8i_channel_base(mixer, layer->channel); src_w = drm_rect_width(&state->src) >> 16; src_h = drm_rect_height(&state->src) >> 16; @@ -112,7 +113,7 @@ static void sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int channel, (state->src.y1 >> 16) & ~(format->vsub - 1)); DRM_DEBUG_DRIVER("Layer source size W: %d H: %d\n", src_w, src_h); regmap_write(mixer->engine.regs, - SUN8I_MIXER_CHAN_VI_LAYER_SIZE(ch_base, overlay), + SUN8I_MIXER_CHAN_VI_LAYER_SIZE(ch_base, layer->overlay), insize); regmap_write(mixer->engine.regs, SUN8I_MIXER_CHAN_VI_OVL_SIZE(ch_base), @@ -161,13 +162,13 @@ static void sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int channel, hscale = (src_w << 16) / dst_w; vscale = (src_h << 16) / dst_h; - sun8i_vi_scaler_setup(mixer, channel, src_w, src_h, dst_w, + sun8i_vi_scaler_setup(mixer, layer->channel, src_w, src_h, dst_w, dst_h, hscale, vscale, hphase, vphase, format); - sun8i_vi_scaler_enable(mixer, channel, true); + sun8i_vi_scaler_enable(mixer, layer->channel, true); } else { DRM_DEBUG_DRIVER("HW scaling is not needed\n"); - sun8i_vi_scaler_enable(mixer, channel, false); + sun8i_vi_scaler_enable(mixer, layer->channel, false); } regmap_write(mixer->engine.regs, @@ -188,10 +189,11 @@ static void sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int channel, SUN8I_MIXER_CHAN_VI_DS_M(vm)); } -static void sun8i_vi_layer_update_buffer(struct sun8i_mixer *mixer, int channel, - int overlay, struct drm_plane *plane) +static void sun8i_vi_layer_update_buffer(struct sun8i_layer *layer, + struct drm_plane *plane) { struct drm_plane_state *state = plane->state; + struct sun8i_mixer *mixer = layer->mixer; struct drm_framebuffer *fb = state->fb; const struct drm_format_info *format = fb->format; struct drm_gem_dma_object *gem; @@ -200,7 +202,7 @@ static void sun8i_vi_layer_update_buffer(struct sun8i_mixer *mixer, int channel, u32 ch_base; int i; - ch_base = sun8i_channel_base(mixer, channel); + ch_base = sun8i_channel_base(mixer, layer->channel); /* Adjust x and y to be dividable by subsampling factor */ src_x = (state->src.x1 >> 16) & ~(format->hsub - 1); @@ -232,7 +234,7 @@ static void sun8i_vi_layer_update_buffer(struct sun8i_mixer *mixer, int channel, i + 1, fb->pitches[i]); regmap_write(mixer->engine.regs, SUN8I_MIXER_CHAN_VI_LAYER_PITCH(ch_base, - overlay, i), + layer->overlay, i), fb->pitches[i]); DRM_DEBUG_DRIVER("Setting %d. buffer address to %pad\n", @@ -240,7 +242,7 @@ static void sun8i_vi_layer_update_buffer(struct sun8i_mixer *mixer, int channel, regmap_write(mixer->engine.regs, SUN8I_MIXER_CHAN_VI_LAYER_TOP_LADDR(ch_base, - overlay, i), + layer->overlay, i), lower_32_bits(dma_addr)); } } @@ -292,20 +294,16 @@ static void sun8i_vi_layer_atomic_update(struct drm_plane *plane, struct drm_plane_state *new_state = drm_atomic_get_new_plane_state(state, plane); struct sun8i_layer *layer = plane_to_sun8i_layer(plane); - struct sun8i_mixer *mixer = layer->mixer; if (!new_state->crtc || !new_state->visible) { - sun8i_vi_layer_disable(mixer, layer->channel, layer->overlay); + sun8i_vi_layer_disable(layer); return; } - sun8i_vi_layer_update_attributes(mixer, layer->channel, - layer->overlay, plane); - sun8i_vi_layer_update_coord(mixer, layer->channel, - layer->overlay, plane); - sun8i_csc_config(mixer, layer->channel, new_state); - sun8i_vi_layer_update_buffer(mixer, layer->channel, - layer->overlay, plane); + sun8i_vi_layer_update_attributes(layer, plane); + sun8i_vi_layer_update_coord(layer, plane); + sun8i_csc_config(layer->mixer, layer->channel, new_state); + sun8i_vi_layer_update_buffer(layer, plane); } static const struct drm_plane_helper_funcs sun8i_vi_layer_helper_funcs = { From patchwork Sun Oct 12 19:23:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 802 Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) (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 4C7A12FA0F6 for ; Sun, 12 Oct 2025 19:24:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297045; cv=none; b=Zol5xarvBdIRfIjFLF/MnPx0Tc2B8FUgEPLQWoEP7tAiGT/HTV6rO0pMjfU1nR8qnQOPAmSa7H/Xx7xRezV0S9Uz+guMx++8uORuXkSbaHeTL5MyRkIEYjNymd5fVPq5U4QAFzPVhBDJcGr0Z7lTrLy9iJz+e+Bl6EM5RPSHvR4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297045; c=relaxed/simple; bh=104h35l/DchpohDTQvOcPAlK0/ZZNw6ykSs+tKAkpg0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cbmr5aWGRZDGNXA1uMhurCtmR2jjdGlULiElSjRsNwNtCAsMYZ6cG0BYAKznDb/O6WK9Ot1tGafDgWzSnSaJGEjo4fey0ZgPatwSB7QAvqqNxxJKuyyPyhLLYdbvQA4jW3EE8iOnvSjC8tnO+qlrsUW8WByiSWmvu19Kc68BDm4= 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=hpmA91Yk; arc=none smtp.client-ip=209.85.218.53 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="hpmA91Yk" Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-b457d93c155so572104866b.1 for ; Sun, 12 Oct 2025 12:24:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297041; x=1760901841; 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=FWJm6Ru2WyONf5Yro6jfwB0WobfTQWEzjnSYauNm30E=; b=hpmA91YkdjV/WTpX1EeWtbliPn2QIyKS6H4ZtOWiQXhTrhg45QzUiTlzaW3/g9hWUd 4fLJYcqvrFnwj3b/7IquT5ec6KaSSAG9ndbNzO9xhsDA/CVg92kyFsI351N6UWjRcCYK kyMSEAbVc5/4HtmNQEBX2WVpsT2Z+ret8mseZXzDRRT5Huo7j3UZ+Gjah80Xt0uNiZmI UtUZAOrHkTF6y+zDPtjeh6aoZO3IJN5b7si3LKJTYLnhTiU9RUWqS0RLeiZJ6SijeEd0 rutdsMNo/+ijmQZoZNqDPa/vmdkIpnz93p0Hq+dFVNZ+avdB3ThWqFnWBAkgfFlCU+dC 6pwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297041; x=1760901841; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FWJm6Ru2WyONf5Yro6jfwB0WobfTQWEzjnSYauNm30E=; b=Xpxhgha2em8q7i4izz5lcVFASVx1m0je2TrXoSKbJSElTLerS7yQROaIWOQL5qD0VK dPkpgQEgByeENSGCv6htxhgZhU6q/uX/8A4VBvj0U5rriA4a55VnSS56++Hv4Xe/TjcL n1FfalFZIB+eAIqAGEcw6BqWH78IDc8XoicUSWIBU169h8ustKveYKUKHrBuKsEqpyHt XanX1hvYM4B1lEZQrRsubD0t377rBO04coZazkI9zzh6n7yNAAVIxR4IyLr8up/XRmrO xcydXvo0QGmMixh31hNvyWs33hnPRIKMdt8GMgw+5pL7/5vw6LvNwOvdsKxf1mPY1+HL 03lA== X-Forwarded-Encrypted: i=1; AJvYcCXQCBLJS2iSHabybdkQ+A4JbvKjhOq951cg09hTtfKBBZPHogo4JwLS8eQt66/rnleQxIALdNbM3n+KVQ==@lists.linux.dev X-Gm-Message-State: AOJu0YxM0ziRZI2/XAmTNtkGkrqXAIAJgt1WocktKE0X4q/eZeZLoyAN ORY0y/nJQviTk6vs5f+Blfkpo9QHqaCSxuGRX+B4w3o66ZMLJz3EFOZE X-Gm-Gg: ASbGnctTW4Ys48cUqDTV5427rnEKmNMhFhz+KcBCMe8CGRfCxvcM951vcTfWvq92BzG YgmhGFaW01bcYT+kUnyXrUPOMd23HYCp0BZhW9H8Pxq/3GETSCuaId0iPeqI6Iqle6xUPzK8tyZ FVWodkL2g7Nb6OIt7rn5El8Vp1MfbnDlt6N1WI2EaJVkPislZL7AosI3utprA3vIRDiwl9wRGAd EeN0lTaIsBLC9xuilwPIpF15sYwHdogF/Sj3rFSPCenmrZ59bltOiNTf8GC6KUImzB69Vgl8KV0 HF6H+7ZSW/Dpr1MJ81dSAx/uAGCa8dqgSrTCHJpTfvCPfM4OYmSY+Xko97276CAM1hO9K+N95Vp qsR3CgUaKKxQxSWZud7mjdTrfCbaEBSQpXgcP6YTv+47z8EYRGqpcrZBdAnKfZUBskLBkrFukTB /pSC0rI0m1j/6wxFgWsh7l X-Google-Smtp-Source: AGHT+IFB2WPpLvhhyF6jFh1SDHHRriNhPzMUznraEeE598jcJE65TAjpsOVtaGxdtE1HPt1fjYbNLA== X-Received: by 2002:a17:906:7312:b0:b57:78fa:db40 with SMTP id a640c23a62f3a-b5778fae354mr614837566b.46.1760297041514; Sun, 12 Oct 2025 12:24:01 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.24.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:24:01 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 18/30] drm/sun4i: ui_scaler: use layer instead of mixer for args Date: Sun, 12 Oct 2025 21:23:18 +0200 Message-ID: <20251012192330.6903-19-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O Layer related peripherals should take layer struct as a input. This looks cleaner and also necessary for proper DE33 support later. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 9 ++++----- drivers/gpu/drm/sun4i/sun8i_ui_scaler.c | 14 ++++++++------ drivers/gpu/drm/sun4i/sun8i_ui_scaler.h | 4 ++-- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c index d5b7241acdea..9b938e3dae9c 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -109,17 +109,16 @@ static void sun8i_ui_layer_update_coord(struct sun8i_layer *layer, state->fb->format); sun8i_vi_scaler_enable(mixer, layer->channel, true); } else { - sun8i_ui_scaler_setup(mixer, layer->channel, src_w, src_h, - dst_w, dst_h, hscale, vscale, - hphase, vphase); - sun8i_ui_scaler_enable(mixer, layer->channel, true); + sun8i_ui_scaler_setup(layer, src_w, src_h, dst_w, dst_h, + hscale, vscale, hphase, vphase); + sun8i_ui_scaler_enable(layer, true); } } else { DRM_DEBUG_DRIVER("HW scaling is not needed\n"); if (mixer->cfg->de_type == SUN8I_MIXER_DE33) sun8i_vi_scaler_enable(mixer, layer->channel, false); else - sun8i_ui_scaler_enable(mixer, layer->channel, false); + sun8i_ui_scaler_enable(layer, false); } } diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c b/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c index 8b7a58e27517..fcd72c4fd49a 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c @@ -127,14 +127,15 @@ static int sun8i_ui_scaler_coef_index(unsigned int step) } } -void sun8i_ui_scaler_enable(struct sun8i_mixer *mixer, int layer, bool enable) +void sun8i_ui_scaler_enable(struct sun8i_layer *layer, bool enable) { + struct sun8i_mixer *mixer = layer->mixer; u32 val, base; - if (WARN_ON(layer < mixer->cfg->vi_num)) + if (WARN_ON(layer->channel < mixer->cfg->vi_num)) return; - base = sun8i_ui_scaler_base(mixer, layer); + base = sun8i_ui_scaler_base(mixer, layer->channel); if (enable) val = SUN8I_SCALER_GSU_CTRL_EN | @@ -145,18 +146,19 @@ void sun8i_ui_scaler_enable(struct sun8i_mixer *mixer, int layer, bool enable) regmap_write(mixer->engine.regs, SUN8I_SCALER_GSU_CTRL(base), val); } -void sun8i_ui_scaler_setup(struct sun8i_mixer *mixer, int layer, +void sun8i_ui_scaler_setup(struct sun8i_layer *layer, u32 src_w, u32 src_h, u32 dst_w, u32 dst_h, u32 hscale, u32 vscale, u32 hphase, u32 vphase) { + struct sun8i_mixer *mixer = layer->mixer; u32 insize, outsize; int i, offset; u32 base; - if (WARN_ON(layer < mixer->cfg->vi_num)) + if (WARN_ON(layer->channel < mixer->cfg->vi_num)) return; - base = sun8i_ui_scaler_base(mixer, layer); + base = sun8i_ui_scaler_base(mixer, layer->channel); hphase <<= SUN8I_UI_SCALER_PHASE_FRAC - 16; vphase <<= SUN8I_UI_SCALER_PHASE_FRAC - 16; diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_scaler.h b/drivers/gpu/drm/sun4i/sun8i_ui_scaler.h index 1ef4bd6f2718..872d88a58e7e 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_scaler.h +++ b/drivers/gpu/drm/sun4i/sun8i_ui_scaler.h @@ -35,8 +35,8 @@ #define SUN8I_SCALER_GSU_CTRL_EN BIT(0) #define SUN8I_SCALER_GSU_CTRL_COEFF_RDY BIT(4) -void sun8i_ui_scaler_enable(struct sun8i_mixer *mixer, int layer, bool enable); -void sun8i_ui_scaler_setup(struct sun8i_mixer *mixer, int layer, +void sun8i_ui_scaler_enable(struct sun8i_layer *layer, bool enable); +void sun8i_ui_scaler_setup(struct sun8i_layer *layer, u32 src_w, u32 src_h, u32 dst_w, u32 dst_h, u32 hscale, u32 vscale, u32 hphase, u32 vphase); From patchwork Sun Oct 12 19:23:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 801 Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.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 844E12FABFF for ; Sun, 12 Oct 2025 19:24:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297047; cv=none; b=Xcy2qGcCmAs2c7+Ip+7cEDHRZmLg7Umoly2ckvQ8+AH53SiDxhNZweNVdYyOWbVCN0LC+s8jjIJw0l91dYkVBHuoKt194iE9+H06H330Do/fGeG21D/MW6qmvW8LnZjy6svvJg4H7nEJ//CGFJzvEE9gXF9pAC//4Rv+CdX88Us= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297047; c=relaxed/simple; bh=zbt5I065g6BO3drjKwx+RPXT/JavcO/tn3lo2YFsv8c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cBBD+uWzB5UQcW0AMs7nvVeTb7xZXeC210U9iMN7eBuaa07/vWxESET00xj8rFAMTFy1CJO3Oh3leG7BgXwLuNH1fpS23JxuQCXUexGetXiBLDOhVUqRvusK/NoQRItNHMFdfaFVJbrk06le455eq5iqsRJ2SaoBIBiWOsZy+wE= 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=I9VqO1YD; arc=none smtp.client-ip=209.85.218.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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="I9VqO1YD" Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-b3ee18913c0so549777066b.3 for ; Sun, 12 Oct 2025 12:24:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297043; x=1760901843; 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=QPg7C4Ufc4hWFOGmxU8Q0n2wES7W0TyH0ijKt94tsok=; b=I9VqO1YD46UOECxXanggXmrlBuhVOZSa41fqoNgAdar0jsRxg4uovvwThlPWEWqw1f kk+8AmHmChQVD5E0SDN5RRhJKPJSENoPpk1pkcLSYBlcuPklmWqZoYxTeb92bmNnIzCT YfvFG3PvJBoBCMJeOVFxLR2l2++3SqEQU8ytMccKWSgNTCuEkayjhUmgIgiJMW2hd7tg 3cBR0IhOrLpYNu0pznpQOCmLGPG/K3mmGw2ifp2fZIXZuoH+VPF6VDuhIq64RfEipKb5 vldVRZVAmXCH0jP83cpC+FZUg7g8vd6zcNgfyM8YHysw+aOconTs/ZRmXMbzoIBKNWxB 6Abw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297043; x=1760901843; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QPg7C4Ufc4hWFOGmxU8Q0n2wES7W0TyH0ijKt94tsok=; b=rD/PsXNvqmAKwKNE53GQXHtUOWtAS0cMC6+ZZwiKst1396ESy08OyCC6RDLablW2dH 4qTvcqAYGjM+KyaHwu+h7o2+g8iFc+RmD+LaVoWUJHkKGrSrqEQgL6nhtgVDbMBW8Mpc twOkl6qhBBVOac6k0EhQPccTMkIGBOLpyPh22JnbtDcY7JFIZTRbVFOcKDe6e/XUi98D 42GyiCCEifiy2OQB7O6P1/7pBI8b1imxKmkEz7iyiTVDq/rSjHpkFd0eXnQhE30snZmv Q9g5zGyHyT43f45WSXT3ev4gvO7O3lWsSmoQH6UApn5OiCvbv0BJZP7EEeAth/xxIjap XYNA== X-Forwarded-Encrypted: i=1; AJvYcCW7BPQjyAlFPvqvKpvjGKWJ8267WkEJ5GDx1JO9lXLVHi6aGp9XqMwL4wsX2eZfEmkLG71llAp20qSPaA==@lists.linux.dev X-Gm-Message-State: AOJu0YyAkGteHhZAT0MsBx68WleTPWLyxY/vTzxrk5Kg7SyLCkwwATnr /hHQ/ggdJVoYOs5vZManAkWuyiB1FrjRmqRtDX0p7aS+1MXFzdCV6Pds X-Gm-Gg: ASbGncug6sM+lJmf8neiyYl50OmBZiI7YOZagSVNgPSwIe7CLPL0cPrjxKqvlGpSu0f xRSGKg3Hw+X8hwJHaA0DZkLn+DXd1MrjdVhRR+T3GhF5OzR0oTLq9PL5E44RdLIm5jsbt6aYSiF JjIPo0qFLTPOZKEN48iFf6xFd3HgZz4xvUpWjCSMXjOaghJjiUszD8gaUor0aSrJxJttklTBGe+ Ln9/J5i6egkfFNnLgia6WWbJxohVLU07A691c1fw1BJkPfms2FTnlBQckcaeDHjaQ3I5tM9rbLC jclz25M2/FA89HNutqfEldZjHCWK8s/rRNHzDxKU6rlxCSPPd3jLlB+hsfbzv7XTquOqq0CmEAk HvRfmCI/k0S6gR68vGuYMr2JUkWNpxoDfzyVDRBqze24ZYq9xHT+5AGxszf/OahERB7wggNGuyt P/DYP8LbUFw/rfiiFWnCXzA30QhCa61pVghXGbKILBrg== X-Google-Smtp-Source: AGHT+IFPlXF14w6080DzNThJvuRd4CnTuWjkOojD58VBx0OnrlrRgYOo8wgfu/qp0NZs9oaJy8dhYg== X-Received: by 2002:a17:907:72cf:b0:b42:1324:7986 with SMTP id a640c23a62f3a-b50a9b61f8emr1913954466b.6.1760297042759; Sun, 12 Oct 2025 12:24:02 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.24.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:24:02 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 19/30] drm/sun4i: vi_scaler: use layer instead of mixer for args Date: Sun, 12 Oct 2025 21:23:19 +0200 Message-ID: <20251012192330.6903-20-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O Layer related peripherals should take layer struct as a input. This looks cleaner and also necessary for proper DE33 support later. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 9 ++++----- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 9 ++++----- drivers/gpu/drm/sun4i/sun8i_vi_scaler.c | 10 ++++++---- drivers/gpu/drm/sun4i/sun8i_vi_scaler.h | 4 ++-- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c index 9b938e3dae9c..5167c9d7b9c0 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -103,11 +103,10 @@ static void sun8i_ui_layer_update_coord(struct sun8i_layer *layer, vscale = state->src_h / state->crtc_h; if (mixer->cfg->de_type == SUN8I_MIXER_DE33) { - sun8i_vi_scaler_setup(mixer, layer->channel, src_w, src_h, - dst_w, dst_h, hscale, vscale, - hphase, vphase, + sun8i_vi_scaler_setup(layer, src_w, src_h, dst_w, dst_h, + hscale, vscale, hphase, vphase, state->fb->format); - sun8i_vi_scaler_enable(mixer, layer->channel, true); + sun8i_vi_scaler_enable(layer, true); } else { sun8i_ui_scaler_setup(layer, src_w, src_h, dst_w, dst_h, hscale, vscale, hphase, vphase); @@ -116,7 +115,7 @@ static void sun8i_ui_layer_update_coord(struct sun8i_layer *layer, } else { DRM_DEBUG_DRIVER("HW scaling is not needed\n"); if (mixer->cfg->de_type == SUN8I_MIXER_DE33) - sun8i_vi_scaler_enable(mixer, layer->channel, false); + sun8i_vi_scaler_enable(layer, false); else sun8i_ui_scaler_enable(layer, false); } diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index ba9c03f04f03..ce71625fa06f 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -162,13 +162,12 @@ static void sun8i_vi_layer_update_coord(struct sun8i_layer *layer, hscale = (src_w << 16) / dst_w; vscale = (src_h << 16) / dst_h; - sun8i_vi_scaler_setup(mixer, layer->channel, src_w, src_h, dst_w, - dst_h, hscale, vscale, hphase, vphase, - format); - sun8i_vi_scaler_enable(mixer, layer->channel, true); + sun8i_vi_scaler_setup(layer, src_w, src_h, dst_w, dst_h, + hscale, vscale, hphase, vphase, format); + sun8i_vi_scaler_enable(layer, true); } else { DRM_DEBUG_DRIVER("HW scaling is not needed\n"); - sun8i_vi_scaler_enable(mixer, layer->channel, false); + sun8i_vi_scaler_enable(layer, false); } regmap_write(mixer->engine.regs, diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_scaler.c b/drivers/gpu/drm/sun4i/sun8i_vi_scaler.c index 82df6244af88..a76677a1649f 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_scaler.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_scaler.c @@ -909,11 +909,12 @@ static void sun8i_vi_scaler_set_coeff(struct regmap *map, u32 base, } } -void sun8i_vi_scaler_enable(struct sun8i_mixer *mixer, int layer, bool enable) +void sun8i_vi_scaler_enable(struct sun8i_layer *layer, bool enable) { + struct sun8i_mixer *mixer = layer->mixer; u32 val, base; - base = sun8i_vi_scaler_base(mixer, layer); + base = sun8i_vi_scaler_base(mixer, layer->channel); if (enable) val = SUN8I_SCALER_VSU_CTRL_EN | @@ -925,16 +926,17 @@ void sun8i_vi_scaler_enable(struct sun8i_mixer *mixer, int layer, bool enable) SUN8I_SCALER_VSU_CTRL(base), val); } -void sun8i_vi_scaler_setup(struct sun8i_mixer *mixer, int layer, +void sun8i_vi_scaler_setup(struct sun8i_layer *layer, u32 src_w, u32 src_h, u32 dst_w, u32 dst_h, u32 hscale, u32 vscale, u32 hphase, u32 vphase, const struct drm_format_info *format) { + struct sun8i_mixer *mixer = layer->mixer; u32 chphase, cvphase; u32 insize, outsize; u32 base; - base = sun8i_vi_scaler_base(mixer, layer); + base = sun8i_vi_scaler_base(mixer, layer->channel); hphase <<= SUN8I_VI_SCALER_PHASE_FRAC - 16; vphase <<= SUN8I_VI_SCALER_PHASE_FRAC - 16; diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_scaler.h b/drivers/gpu/drm/sun4i/sun8i_vi_scaler.h index 68f6593b369a..73eecc4d1b1d 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_scaler.h +++ b/drivers/gpu/drm/sun4i/sun8i_vi_scaler.h @@ -69,8 +69,8 @@ #define SUN50I_SCALER_VSU_ANGLE_SHIFT(x) (((x) << 16) & 0xF) #define SUN50I_SCALER_VSU_ANGLE_OFFSET(x) ((x) & 0xFF) -void sun8i_vi_scaler_enable(struct sun8i_mixer *mixer, int layer, bool enable); -void sun8i_vi_scaler_setup(struct sun8i_mixer *mixer, int layer, +void sun8i_vi_scaler_enable(struct sun8i_layer *layer, bool enable); +void sun8i_vi_scaler_setup(struct sun8i_layer *layer, u32 src_w, u32 src_h, u32 dst_w, u32 dst_h, u32 hscale, u32 vscale, u32 hphase, u32 vphase, const struct drm_format_info *format); From patchwork Sun Oct 12 19:23:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 798 Received: from mail-ej1-f43.google.com (mail-ej1-f43.google.com [209.85.218.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1001F2FB61B for ; Sun, 12 Oct 2025 19:24:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297050; cv=none; b=mJySeCEDz+SuRrXOEFx4yRrR+zForrSFKRiYJy0EaHhKAypl4Jpj7SDrW1oCMs3jstL6PpfIuUH2Crxm/xjKKjq+Davt6zwLPg5xx/eHRViwrdUT4zxmj/+vlv+i4sKT2oMi1RoEFWUKX8mgzJTHvVIxZ0WmFsXK/+DqWvJZZoo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297050; c=relaxed/simple; bh=Ehh2XCdHpQvY/7YPtG6yogz1Wzyl7YtVdL/DWzi9Nzo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=M29cFG/Svz7Kwd6Y6Uqc7P/m7KtfMD2mHFsIKtRXzIwI3FjIjJMTcK6oL2xj4HU1aPtfZKM4K0edxRK3f2FoKipcD+DerDci7xjokFqPqGVKNXaZXwQaESiuwBtkXdlU9XiMxnTlex3FNPlHRyz1dg7cajQH1d2oyIkzhMz+s64= 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=G/9SX01I; arc=none smtp.client-ip=209.85.218.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="G/9SX01I" Received: by mail-ej1-f43.google.com with SMTP id a640c23a62f3a-afcb7ae6ed0so596638666b.3 for ; Sun, 12 Oct 2025 12:24:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297044; x=1760901844; 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=aDedyHXZRi05h+yiSLUF3HPKeqGWy/zcBT6LVM4ULn4=; b=G/9SX01ItSZHCxPfkRw/j6+GQXowA5HXUfL5cJGqQtIeouXfvcQF5hlaHsRzQmof0H jYW+98dNgwJXwVofflioMB/Ky9mOvUDquyyzFjneSw2PFOzeiOrOD/n6w+lG3G6zikwx Un8KETFWXHA8qL/YuPyUjdbcnn1jf+SNAFz1WYJgnl0ToaNmH01TRq6+v9Fy+Vtk9RXU rNUEwMzBWos0QSUgUzV/yjP/qLnPkrvVc5qMeFAgjR5dt9osTjXYDGXNPRL/Evorzqf2 KXRZKGFm6DXdMhlcwubCx6pJNAdLdwdf6zIwyQwxscRbJSbYPQqvBquQ+XiFL4Sy+T8W w/tQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297044; x=1760901844; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=aDedyHXZRi05h+yiSLUF3HPKeqGWy/zcBT6LVM4ULn4=; b=Yw61F5UKaDuTUv4MrXzNA0ydRN8jOg5i5ScepRuEuZtim5HmaWE997cmo1DKFZmsWr ffhMzuHMCiDzeEfcVHcLzt+C1pjpCIxs+beRRdDw/7yX5RlF5Xjd9H8m7RuUBCuiOoOH Eaidj9NOCkE3f+yAiUc9AlJYXC5dSI6utp/mdRnseuY3kCE9y3UvayUjBxJAJFxhR/wU P0hlu0CdZikXXvw5Z8KXONSjXX2r91X5rg8f5HPsgE2dLvoMvcIWf8uM2fbAGzIihFUz HHzWzzvioB7CJ0rXX/2Vj+pvxgXNMJSq+rhj6mDoljTN4EJ/eKTdaBgRHABregGgK4hH tLOw== X-Forwarded-Encrypted: i=1; AJvYcCUr0zFDh5rthbqgUQT3uuQSco4IzaxmO+vtof0u9m6fPtYmgNqJsKzqEeZPGMHaZsgRIFn/kTfLISa5WA==@lists.linux.dev X-Gm-Message-State: AOJu0Yw3HF9s4axLRlWOeOCkg7B+JclJSJN+xrf6uIRmFpfjBDHRkdnN IQmNypZW6EcYsojSaBU/CGYJmZAGvlPy+9AC32Gdi9eAG+JCewqc0VRt X-Gm-Gg: ASbGncvKRq+11YtmUC031xcRLDQxO0RvE8Ypg5ju3mKa9xq56rDRnH6g2bY2KNEsLvz M17pD3ghKHSIBz20RsM6vGLH1EBMfu+eZGhvslmYXIlRkUTIqDC4dHuJSQDeuWUXtMgwkMjN779 n1AuAKN8WY2H7vPgrjv1fO3nDt4IeJuruFgTr4B9ncSvCXojRutN2e7bWsE/kxMYzdtLe5YILQm XzxO+PmStnZ2t35N1FY4UK64EfCeEu93bRqz9t9k6JcryqsRfVdDYR7mWIY/M6M4OpRlSbBD0CJ eOujKXAWoR74+E/86EHySYOSmArKVgPS5mSqcfVGMFmQ874lMmAkDyuket6jl3zglwJD1iebI3u RXDuUYpcSG3qJvOpgSikruM2L6VzTIv/3KQ0kJzstPBd4Jx2hv471fNUB41mFyDuALmmjslbgUC ac1D96YjcWSjKnkFI2XbH4cJq2qHdKBH4= X-Google-Smtp-Source: AGHT+IExRv+GMaQElZOiBYi8D06q1t4JtHvZ0OQ67C2+WOBYzOxOgvcGPMSugeMHawmkzgGhW4vqWA== X-Received: by 2002:a17:907:3e16:b0:b04:67f3:890f with SMTP id a640c23a62f3a-b50ac1d014dmr2008689366b.33.1760297043846; Sun, 12 Oct 2025 12:24:03 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.24.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:24:03 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 20/30] drm/sun4i: layers: Make regmap for layers configurable Date: Sun, 12 Oct 2025 21:23:20 +0200 Message-ID: <20251012192330.6903-21-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O Till DE33, there were no reason to decouple registers from mixer. However, with future new plane driver, this will be necessary. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_mixer.c | 7 ++++-- drivers/gpu/drm/sun4i/sun8i_mixer.h | 1 + drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 12 ++++++---- drivers/gpu/drm/sun4i/sun8i_ui_layer.h | 1 + drivers/gpu/drm/sun4i/sun8i_ui_scaler.c | 16 ++++++------- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 22 ++++++++++-------- drivers/gpu/drm/sun4i/sun8i_vi_layer.h | 1 + drivers/gpu/drm/sun4i/sun8i_vi_scaler.c | 31 ++++++++++++------------- 8 files changed, 50 insertions(+), 41 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c index 18dd998364ae..d2b7fc552a76 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -331,7 +331,9 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, else type = DRM_PLANE_TYPE_OVERLAY; - layer = sun8i_vi_layer_init_one(drm, mixer, type, i, plane_cnt); + layer = sun8i_vi_layer_init_one(drm, mixer, type, + mixer->engine.regs, i, + plane_cnt); if (IS_ERR(layer)) { dev_err(drm->dev, "Couldn't initialize overlay plane\n"); @@ -350,7 +352,8 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, else type = DRM_PLANE_TYPE_OVERLAY; - layer = sun8i_ui_layer_init_one(drm, mixer, type, index, + layer = sun8i_ui_layer_init_one(drm, mixer, type, + mixer->engine.regs, index, plane_cnt); if (IS_ERR(layer)) { dev_err(drm->dev, "Couldn't initialize %s plane\n", diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.h b/drivers/gpu/drm/sun4i/sun8i_mixer.h index b5badfa2c997..2e3689008b50 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.h +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.h @@ -214,6 +214,7 @@ struct sun8i_layer { int type; int channel; int overlay; + struct regmap *regs; }; static inline struct sun8i_layer * diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c index 5167c9d7b9c0..dd6cb09c2c01 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -53,7 +53,7 @@ static void sun8i_ui_layer_update_attributes(struct sun8i_layer *layer, val |= hw_fmt << SUN8I_MIXER_CHAN_UI_LAYER_ATTR_FBFMT_OFFSET; val |= SUN8I_MIXER_CHAN_UI_LAYER_ATTR_EN; - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, layer->overlay), val); } @@ -87,10 +87,10 @@ static void sun8i_ui_layer_update_coord(struct sun8i_layer *layer, DRM_DEBUG_DRIVER("Layer source offset X: %d Y: %d\n", state->src.x1 >> 16, state->src.y1 >> 16); DRM_DEBUG_DRIVER("Layer source size W: %d H: %d\n", src_w, src_h); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_CHAN_UI_LAYER_SIZE(ch_base, layer->overlay), insize); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_CHAN_UI_OVL_SIZE(ch_base), insize); @@ -149,13 +149,13 @@ static void sun8i_ui_layer_update_buffer(struct sun8i_layer *layer, /* Set the line width */ DRM_DEBUG_DRIVER("Layer line width: %d bytes\n", fb->pitches[0]); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_CHAN_UI_LAYER_PITCH(ch_base, layer->overlay), fb->pitches[0]); DRM_DEBUG_DRIVER("Setting buffer address to %pad\n", &dma_addr); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_CHAN_UI_LAYER_TOP_LADDR(ch_base, layer->overlay), lower_32_bits(dma_addr)); } @@ -264,6 +264,7 @@ static const uint64_t sun8i_layer_modifiers[] = { struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, struct sun8i_mixer *mixer, enum drm_plane_type type, + struct regmap *regs, int index, int plane_cnt) { @@ -278,6 +279,7 @@ struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, layer->type = SUN8I_LAYER_TYPE_UI; layer->channel = index; layer->overlay = 0; + layer->regs = regs; /* possible crtcs are set later */ ret = drm_universal_plane_init(drm, &layer->plane, 0, diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.h b/drivers/gpu/drm/sun4i/sun8i_ui_layer.h index 0613b34d36e0..e0b2cfa02749 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.h +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.h @@ -52,6 +52,7 @@ struct sun8i_layer; struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, struct sun8i_mixer *mixer, enum drm_plane_type type, + struct regmap *regs, int index, int plane_cnt); #endif /* _SUN8I_UI_LAYER_H_ */ diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c b/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c index fcd72c4fd49a..2fc54dc20307 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c @@ -143,7 +143,7 @@ void sun8i_ui_scaler_enable(struct sun8i_layer *layer, bool enable) else val = 0; - regmap_write(mixer->engine.regs, SUN8I_SCALER_GSU_CTRL(base), val); + regmap_write(layer->regs, SUN8I_SCALER_GSU_CTRL(base), val); } void sun8i_ui_scaler_setup(struct sun8i_layer *layer, @@ -168,22 +168,22 @@ void sun8i_ui_scaler_setup(struct sun8i_layer *layer, insize = SUN8I_UI_SCALER_SIZE(src_w, src_h); outsize = SUN8I_UI_SCALER_SIZE(dst_w, dst_h); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_SCALER_GSU_OUTSIZE(base), outsize); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_SCALER_GSU_INSIZE(base), insize); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_SCALER_GSU_HSTEP(base), hscale); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_SCALER_GSU_VSTEP(base), vscale); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_SCALER_GSU_HPHASE(base), hphase); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_SCALER_GSU_VPHASE(base), vphase); offset = sun8i_ui_scaler_coef_index(hscale) * SUN8I_UI_SCALER_COEFF_COUNT; for (i = 0; i < SUN8I_UI_SCALER_COEFF_COUNT; i++) - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_SCALER_GSU_HCOEFF(base, i), lan2coefftab16[offset + i]); } diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index ce71625fa06f..2290c983e177 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -49,12 +49,12 @@ static void sun8i_vi_layer_update_attributes(struct sun8i_layer *layer, SUN50I_MIXER_CHAN_VI_LAYER_ATTR_ALPHA_MODE_PIXEL : SUN50I_MIXER_CHAN_VI_LAYER_ATTR_ALPHA_MODE_COMBINED; } else if (mixer->cfg->vi_num == 1) { - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_FCC_GLOBAL_ALPHA_REG, SUN8I_MIXER_FCC_GLOBAL_ALPHA(state->alpha >> 8)); } - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, layer->overlay), val); } @@ -112,10 +112,10 @@ static void sun8i_vi_layer_update_coord(struct sun8i_layer *layer, (state->src.x1 >> 16) & ~(format->hsub - 1), (state->src.y1 >> 16) & ~(format->vsub - 1)); DRM_DEBUG_DRIVER("Layer source size W: %d H: %d\n", src_w, src_h); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_CHAN_VI_LAYER_SIZE(ch_base, layer->overlay), insize); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_CHAN_VI_OVL_SIZE(ch_base), insize); @@ -170,19 +170,19 @@ static void sun8i_vi_layer_update_coord(struct sun8i_layer *layer, sun8i_vi_scaler_enable(layer, false); } - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_CHAN_VI_HDS_Y(ch_base), SUN8I_MIXER_CHAN_VI_DS_N(hn) | SUN8I_MIXER_CHAN_VI_DS_M(hm)); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_CHAN_VI_HDS_UV(ch_base), SUN8I_MIXER_CHAN_VI_DS_N(hn) | SUN8I_MIXER_CHAN_VI_DS_M(hm)); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_CHAN_VI_VDS_Y(ch_base), SUN8I_MIXER_CHAN_VI_DS_N(vn) | SUN8I_MIXER_CHAN_VI_DS_M(vm)); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_CHAN_VI_VDS_UV(ch_base), SUN8I_MIXER_CHAN_VI_DS_N(vn) | SUN8I_MIXER_CHAN_VI_DS_M(vm)); @@ -231,7 +231,7 @@ static void sun8i_vi_layer_update_buffer(struct sun8i_layer *layer, /* Set the line width */ DRM_DEBUG_DRIVER("Layer %d. line width: %d bytes\n", i + 1, fb->pitches[i]); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_CHAN_VI_LAYER_PITCH(ch_base, layer->overlay, i), fb->pitches[i]); @@ -239,7 +239,7 @@ static void sun8i_vi_layer_update_buffer(struct sun8i_layer *layer, DRM_DEBUG_DRIVER("Setting %d. buffer address to %pad\n", i + 1, &dma_addr); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_CHAN_VI_LAYER_TOP_LADDR(ch_base, layer->overlay, i), lower_32_bits(dma_addr)); @@ -410,6 +410,7 @@ static const uint64_t sun8i_layer_modifiers[] = { struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, struct sun8i_mixer *mixer, enum drm_plane_type type, + struct regmap *regs, int index, int plane_cnt) { @@ -427,6 +428,7 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, layer->type = SUN8I_LAYER_TYPE_VI; layer->channel = index; layer->overlay = 0; + layer->regs = regs; if (mixer->cfg->de_type >= SUN8I_MIXER_DE3) { formats = sun8i_vi_layer_de3_formats; diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.h b/drivers/gpu/drm/sun4i/sun8i_vi_layer.h index a568e1db1e19..70766d752fa6 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.h +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.h @@ -57,6 +57,7 @@ struct sun8i_layer; struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, struct sun8i_mixer *mixer, enum drm_plane_type type, + struct regmap *regs, int index, int plane_cnt); #endif /* _SUN8I_VI_LAYER_H_ */ diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_scaler.c b/drivers/gpu/drm/sun4i/sun8i_vi_scaler.c index a76677a1649f..0e308feb492a 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_scaler.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_scaler.c @@ -911,10 +911,9 @@ static void sun8i_vi_scaler_set_coeff(struct regmap *map, u32 base, void sun8i_vi_scaler_enable(struct sun8i_layer *layer, bool enable) { - struct sun8i_mixer *mixer = layer->mixer; u32 val, base; - base = sun8i_vi_scaler_base(mixer, layer->channel); + base = sun8i_vi_scaler_base(layer->mixer, layer->channel); if (enable) val = SUN8I_SCALER_VSU_CTRL_EN | @@ -922,7 +921,7 @@ void sun8i_vi_scaler_enable(struct sun8i_layer *layer, bool enable) else val = 0; - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_SCALER_VSU_CTRL(base), val); } @@ -968,36 +967,36 @@ void sun8i_vi_scaler_setup(struct sun8i_layer *layer, else val = SUN50I_SCALER_VSU_SCALE_MODE_NORMAL; - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN50I_SCALER_VSU_SCALE_MODE(base), val); } - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_SCALER_VSU_OUTSIZE(base), outsize); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_SCALER_VSU_YINSIZE(base), insize); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_SCALER_VSU_YHSTEP(base), hscale); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_SCALER_VSU_YVSTEP(base), vscale); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_SCALER_VSU_YHPHASE(base), hphase); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_SCALER_VSU_YVPHASE(base), vphase); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_SCALER_VSU_CINSIZE(base), SUN8I_VI_SCALER_SIZE(src_w / format->hsub, src_h / format->vsub)); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_SCALER_VSU_CHSTEP(base), hscale / format->hsub); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_SCALER_VSU_CVSTEP(base), vscale / format->vsub); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_SCALER_VSU_CHPHASE(base), chphase); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_SCALER_VSU_CVPHASE(base), cvphase); - sun8i_vi_scaler_set_coeff(mixer->engine.regs, base, + sun8i_vi_scaler_set_coeff(layer->regs, base, hscale, vscale, format); } From patchwork Sun Oct 12 19:23:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 800 Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.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 D72522FB60A for ; Sun, 12 Oct 2025 19:24:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297049; cv=none; b=UvkA3wU+2eGBGFGxYu6ZpJjd0wRpG2UTGco2YPlm0eshCF5TjkcD+4DVmnq44C4pqNdU5ASCsDpYtr07+6aEIugXalfRZh35d32MeSPXF+qBN06rpX4OwKqHrG+5W3p5maUIW1heFKdvlIWNuHmbiLmvg7oaWbmgEw/8UA+3DAA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297049; c=relaxed/simple; bh=2rEgqEZ2KuPdRGMl0QKQlefkIl3FEYhRSxtjPD2zq0g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=T9DN+aOJH271+njiw5BfYGojqZEPvJRUA9YFcy0JI18g1/JvCAAsD8F2d1q6M4Cw1K21hvBhdU0LZNCppR9iFqWDl6G9pgWh8aICma09sFTSxZhXg27djHgpxOoNV3TBmS+BIr4N+zlkWhkFqBsc31Egy7AF54xdh/PLUsPOTwc= 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=il7ZI8uZ; arc=none smtp.client-ip=209.85.218.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="il7ZI8uZ" Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-b463f986f80so805967466b.2 for ; Sun, 12 Oct 2025 12:24:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297045; x=1760901845; 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=08VhihKvGZOzCvy6uNWRiLafS0nfxwn+0WLCtxZhCew=; b=il7ZI8uZe8vqZixug1Q5G8zAYAL/7AowBxLjr+bKyJ72+qUWiyeG0GHzXVfeeAr/Xu DfS/krDfYYCseX8WyfoOoeCUhSBXboNh8ZN+D/SXlVyorgs0AQ3d2s289/bUTF8OqY+D bvLTi/acL/bzR7DTZXVS0rAu05W/JsuDlno9PjNjJe+HtDDk8fPUjsewP6asskuVqnru PZMBUAJ1SO+m8mcS3PxIOtYkMB+cRN7BpXW1YyR5Wepx0vqBC2NwBwj2EEPa57kB0+Zf WHiBl5m5vbFaOBF/ZFYCO87kB6S6kb3h7xn/ifDnCWDwgdYYWh0MkU7sx7QmdGT0KyOj qfqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297045; x=1760901845; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=08VhihKvGZOzCvy6uNWRiLafS0nfxwn+0WLCtxZhCew=; b=ZMexebWq17yR/ON2Lzko9Yo1CGeh7HqiFRgpNMS21nSqo3puVkQzdaH6tvjJV/m4ot AGCkft1ePPgxILF3Gt9/IXzFYRmad/OqHLUdcnTXOx0MZCzsWCsW84IrKp1SRMS/16FX +hprdHWXfosF3j8VCpNC5PzIBJvAM3olAxVBGISr7QLKFGqJoc7dea5BwZEYuHTM9noC TGKLEJFHydJvggcIIjUDkd+EDp+IYTeC/qPJEyamWWQo5B/8444zkfPHo5pH9MvFx4vB Bigav1bqrigf5pkbX6kX0F5VQOrapmMMBk16cup3UNHMCYHEHj8bUrw1RQe/O2gaSarL e/vQ== X-Forwarded-Encrypted: i=1; AJvYcCV+ajPYvD+xiSSA6e9Vj+N5FhxJkoEXpPkKA68znGEKUgkG3EGnzUXgPMnjUC8TWoiaFKC5ieco8+BEgw==@lists.linux.dev X-Gm-Message-State: AOJu0YzZnMnYIDEMQA11TX8HL0e4aywyGV3VT6qV4jhkQKTq8wyiTsB2 8VJjkRAr8BSa6niqJyXDbT9WHhCFVwMfmTN6SUydmAfgnTNAK+CX99VE X-Gm-Gg: ASbGncvWeHcBzG76at0Yi9Re2g5VE+MjbXEcr3/Mlk0G+vZrazUAzFJ7AdvKJ2t8lMr 0djrOO8+hzBWiLUSH00x9s7QXCRk66R6kiZhyjSbdbFJmtns5Swl+mZ9vigTaPZaqM8+upCkM/o gIwlMebOgX+FjM0yXweZoPHLLf7eAXB3MI3RmDdmJjXCUeu85gE+FfyDdaKROP44DXniHOQiFZ2 u29Pw7cmvV6Iw8viHkafE5orLXclxWuaZZx2J/w4h600c/rYYJQsIyWOKq0JGEkpANIQKus0/UH txxmi3l9W4Sn86F62HLEtEDpVd5V1/lV9yOsWPyMKveDlacZAe8S+MyvqTc6y3/mzGa2XcnoOT9 fzuS2mTc0EGGw/EzOBwW6fqRwqpK2gmkYwiOeq2H5nuWzYp+A26gzRq9nNg+ZrFqS/rq596fQJo k5zUNnbgv7bvm1RojlhqEOerZbFCQFIko= X-Google-Smtp-Source: AGHT+IHvhXW73NXWnN/w1+a157WT7XVAMC9an0CwaQWq1dgdtB3ecG7lOa+m5GizVxeaSFFM+lpHgA== X-Received: by 2002:a17:906:dc90:b0:b41:873d:e21f with SMTP id a640c23a62f3a-b50aa292f1bmr2074832566b.18.1760297045043; Sun, 12 Oct 2025 12:24:05 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.24.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:24:04 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 21/30] drm/sun4i: csc: use layer arg instead of mixer Date: Sun, 12 Oct 2025 21:23:21 +0200 Message-ID: <20251012192330.6903-22-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O Layer will be more universal, due to DE33 support. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_csc.c | 10 +++++----- drivers/gpu/drm/sun4i/sun8i_csc.h | 4 ++-- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_csc.c b/drivers/gpu/drm/sun4i/sun8i_csc.c index ac7b62adc7df..c371e94b95bd 100644 --- a/drivers/gpu/drm/sun4i/sun8i_csc.c +++ b/drivers/gpu/drm/sun4i/sun8i_csc.c @@ -227,22 +227,22 @@ static u32 sun8i_csc_get_mode(struct drm_plane_state *state) } } -void sun8i_csc_config(struct sun8i_mixer *mixer, int layer, +void sun8i_csc_config(struct sun8i_layer *layer, struct drm_plane_state *state) { u32 mode = sun8i_csc_get_mode(state); u32 base; - if (mixer->cfg->de_type == SUN8I_MIXER_DE3) { - sun8i_de3_ccsc_setup(mixer->engine.regs, layer, + if (layer->mixer->cfg->de_type == SUN8I_MIXER_DE3) { + sun8i_de3_ccsc_setup(layer->regs, layer->channel, mode, state->color_encoding, state->color_range); return; } - base = ccsc_base[mixer->cfg->ccsc][layer]; + base = ccsc_base[layer->mixer->cfg->ccsc][layer->channel]; - sun8i_csc_setup(mixer->engine.regs, base, + sun8i_csc_setup(layer->regs, base, mode, state->color_encoding, state->color_range); } diff --git a/drivers/gpu/drm/sun4i/sun8i_csc.h b/drivers/gpu/drm/sun4i/sun8i_csc.h index ce921521aaca..2a4b79599610 100644 --- a/drivers/gpu/drm/sun4i/sun8i_csc.h +++ b/drivers/gpu/drm/sun4i/sun8i_csc.h @@ -9,7 +9,7 @@ #include struct drm_plane_state; -struct sun8i_mixer; +struct sun8i_layer; /* VI channel CSC units offsets */ #define CCSC00_OFFSET 0xAA050 @@ -23,7 +23,7 @@ struct sun8i_mixer; #define SUN8I_CSC_CTRL_EN BIT(0) -void sun8i_csc_config(struct sun8i_mixer *mixer, int layer, +void sun8i_csc_config(struct sun8i_layer *layer, struct drm_plane_state *state); #endif diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index 2290c983e177..4f0c929faf36 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -301,7 +301,7 @@ static void sun8i_vi_layer_atomic_update(struct drm_plane *plane, sun8i_vi_layer_update_attributes(layer, plane); sun8i_vi_layer_update_coord(layer, plane); - sun8i_csc_config(layer->mixer, layer->channel, new_state); + sun8i_csc_config(layer, new_state); sun8i_vi_layer_update_buffer(layer, plane); } From patchwork Sun Oct 12 19:23:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 799 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.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 E34382FB612 for ; Sun, 12 Oct 2025 19:24:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297050; cv=none; b=nUFoC18cWbis0FBBpgXyTLPe84/BJxeOxnFYF3st5O3y9KrQx15ChUlClV6eLz0YshqNP4eZW5wjSWmEC9ULLdER5Fi7+NpBJQ1vUVh2+Zu8dQaCYbPX5ccGuURrxYY8F1PkojHnou6klxWVT5e2ndoQ0kwrtQ58wy4lae/Ol20= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297050; c=relaxed/simple; bh=iZauC4bq3j0IteUuEC4xJ1yNrvVQr9i4sppPKzvfY2I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=if2MYV0MubLiGlo+2y/nRXH0FwJm8HY1NIqWuc0nhT0Qi9XIo6/PsLIePju54R6ZQ+9MqlzJpU+MQX+zQkcDLhetYiBI1/M0UsohRZQgJrAcYfoyQBm3k9JUrirKeRfGadhufZsf1DGx4vrDZKiHXFX45dPXkt0AuEkCxWx9Pq8= 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=l6cxVB/5; arc=none smtp.client-ip=209.85.218.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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="l6cxVB/5" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-b3d80891c6cso703919966b.1 for ; Sun, 12 Oct 2025 12:24:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297046; x=1760901846; 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=hQOv5yUZt16sUnKDbEIh6jBa6S1wacoD7LiibO9kAbE=; b=l6cxVB/5iQH35FIjbKM8XgBg47pWQeWfbJz5jX2EWiHnP1QEKrZM0DEfm3yjkSAwGa nml4GelLomSDKIUUHJ3qjg7zJ3SFesBktW42idaI6Rg2kkaSdEUtklmtTLYVJebGofO6 1afLA93+uM/8MEcVC8kSSt7LcdTFeQIpbRGW/OHglf4CcK6/b4wxcV4H2sjI1mOdphGi Wxe3GL4dMzB/hq4d9E9ja9zKc6uSKouRWWqFVAETDr827HeOTqyREPjVqgZpsgBl6fnr aIzrYSNM8UOSuls0/R/hlYGh83wqGUDPuzEVP+5yb0tesMTiQgfUV+IVX7G8rfoe5dEb AuAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297046; x=1760901846; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hQOv5yUZt16sUnKDbEIh6jBa6S1wacoD7LiibO9kAbE=; b=RM+qe/gFt8Gxb5pRsA2CUUz6WI0V6HXecNalzq4qYphvNgh1mC0n2gDNoDB59sOpsd AvQbNvpMaHgjYwTTUvmmRYBztFubcnublhcpx1dIkAUVNKnloQngxa4xxNpOJe6VtuvV PaY27DFDH23r5LBDK/fZPxiC4EDr7hvq9r+BVpzJybw/FwK3Fu1b66i4Fz8wlnaM2576 RDwCiHL57kFLFbqmyorLPSRo9ryiBU9OVuTe39U0ThawHGNBPiEykiKvgFMI/CzPwcLa eH/K0oAN5L6yEQUODK0dBE5zge1rOHA+2cuoD5XBX8lCxrqgjM5UhyuHsZYL3sflUpAA uAhA== X-Forwarded-Encrypted: i=1; AJvYcCXopAJNygerLsxaSdMfC/pWUjSDL4fSRihoZYmva1CxxIRE44CicdR3W4yt36u06twiq9hsJjLdYH87Qg==@lists.linux.dev X-Gm-Message-State: AOJu0YyUXD9+hcFj+IPSL8cuiDIl7UVPyRNjushe2msxlL2N/TcWP5h7 RhoNKrWIXKDRf8n6zldoxJeGrI8CCpGxgHyZEa/TDyEWUo7tLpzZDEJT X-Gm-Gg: ASbGncu42P8r8zozerO7Lr5WjGDY9XOwAHOOa7iJzUvwhGtvW6i+X5L0Y9SHiE0De+V MCiFbELxhdIuOx4mXxZJIbRNqEAZBzcoT2qoZVqUSyuq+N4jlU5Ym+PKQHS1n19UMxKWoDlUZ3p ZY05y9XjE6QR+N0x/E7r8hN/EUV0mrXCUGIPEpQKk6LSQWSVkcq7JtXPfWhE9pxfkklX4nrvEVl tnPl8D263rimAdqmLVYKGxopUQXwK0GBuqUJ4J/k6W/Q58FY5RyG1BUaljaM4E7z3moCnk25x1T yAbEErxMm8q1zuY2iDuL+u9gVFoM4kwHXCvXvFAlb2nYqK7j7X5tSqPNkp8CzPR84tS0e/twLzY ppaNmsQjDa7BOQmBF+PMzEzAdT1hM/+aNtoJ59ReE8tVx5emQqILjmkl/f1rl4EP0blapnD/Yx/ BZ/h7uP1Zao1zSHCbE2eRq X-Google-Smtp-Source: AGHT+IFHVFCcqMPLSnre0bX8uQT71SYCPAmz7n1qrIGlKmWTvSTA93x89NSp8O+T0B6bETl+ErANjg== X-Received: by 2002:a17:907:c717:b0:b3d:e757:8c36 with SMTP id a640c23a62f3a-b4f40789b30mr2665949966b.3.1760297046143; Sun, 12 Oct 2025 12:24:06 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.24.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:24:05 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 22/30] drm/sun4i: layers: add physical index arg Date: Sun, 12 Oct 2025 21:23:22 +0200 Message-ID: <20251012192330.6903-23-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O This avoids plane mapping in layers code, which allows future refactoring, when layer code will move away from accessing mixer structure. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_mixer.c | 17 +++++++++++++---- drivers/gpu/drm/sun4i/sun8i_mixer.h | 3 ++- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 5 +++-- drivers/gpu/drm/sun4i/sun8i_ui_layer.h | 2 +- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 5 +++-- drivers/gpu/drm/sun4i/sun8i_vi_layer.h | 2 +- 6 files changed, 23 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c index d2b7fc552a76..267a6f75feb2 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -283,14 +283,14 @@ static void sun8i_mixer_commit(struct sunxi_engine *engine, h = drm_rect_height(&plane_state->dst); DRM_DEBUG_DRIVER(" plane %d: chan=%d ovl=%d en=%d zpos=%d x=%d y=%d w=%d h=%d\n", - plane->base.id, layer->channel, layer->overlay, + plane->base.id, layer->index, layer->overlay, enable, zpos, x, y, w, h); if (!enable) continue; /* Route layer to pipe based on zpos */ - route |= layer->channel << SUN8I_MIXER_BLEND_ROUTE_PIPE_SHIFT(zpos); + route |= layer->index << SUN8I_MIXER_BLEND_ROUTE_PIPE_SHIFT(zpos); pipe_en |= SUN8I_MIXER_BLEND_PIPE_CTL_EN(zpos); regmap_write(bld_regs, @@ -317,6 +317,7 @@ 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, sizeof(*planes), GFP_KERNEL); @@ -331,9 +332,13 @@ 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, mixer, type, mixer->engine.regs, i, - plane_cnt); + phy_index, plane_cnt); if (IS_ERR(layer)) { dev_err(drm->dev, "Couldn't initialize overlay plane\n"); @@ -352,9 +357,13 @@ 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, mixer, type, mixer->engine.regs, index, - plane_cnt); + phy_index, plane_cnt); if (IS_ERR(layer)) { dev_err(drm->dev, "Couldn't initialize %s plane\n", i ? "overlay" : "primary"); diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.h b/drivers/gpu/drm/sun4i/sun8i_mixer.h index 2e3689008b50..d14188cdfab3 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.h +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.h @@ -212,6 +212,7 @@ struct sun8i_layer { struct drm_plane plane; struct sun8i_mixer *mixer; int type; + int index; int channel; int overlay; struct regmap *regs; @@ -246,7 +247,7 @@ static inline u32 sun8i_channel_base(struct sun8i_mixer *mixer, int channel) { if (mixer->cfg->de_type == SUN8I_MIXER_DE33) - return DE33_CH_BASE + mixer->cfg->map[channel] * DE33_CH_SIZE; + return DE33_CH_BASE + channel * DE33_CH_SIZE; else if (mixer->cfg->de_type == SUN8I_MIXER_DE3) return DE3_CH_BASE + channel * DE3_CH_SIZE; else diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c index dd6cb09c2c01..e65dc313c87d 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -265,7 +265,7 @@ struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, struct sun8i_mixer *mixer, enum drm_plane_type type, struct regmap *regs, - int index, + int index, int phy_index, int plane_cnt) { struct sun8i_layer *layer; @@ -277,7 +277,8 @@ struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, layer->mixer = mixer; layer->type = SUN8I_LAYER_TYPE_UI; - layer->channel = index; + layer->index = index; + layer->channel = phy_index; layer->overlay = 0; layer->regs = regs; diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.h b/drivers/gpu/drm/sun4i/sun8i_ui_layer.h index e0b2cfa02749..9383c3364df3 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.h +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.h @@ -53,6 +53,6 @@ struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, struct sun8i_mixer *mixer, enum drm_plane_type type, struct regmap *regs, - int index, + int index, int phy_index, int plane_cnt); #endif /* _SUN8I_UI_LAYER_H_ */ diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index 4f0c929faf36..44e699910b70 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -411,7 +411,7 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, struct sun8i_mixer *mixer, enum drm_plane_type type, struct regmap *regs, - int index, + int index, int phy_index, int plane_cnt) { u32 supported_encodings, supported_ranges; @@ -426,7 +426,8 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, layer->mixer = mixer; layer->type = SUN8I_LAYER_TYPE_VI; - layer->channel = index; + layer->index = index; + layer->channel = phy_index; layer->overlay = 0; layer->regs = regs; diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.h b/drivers/gpu/drm/sun4i/sun8i_vi_layer.h index 70766d752fa6..89d0c32e63cf 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.h +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.h @@ -58,6 +58,6 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, struct sun8i_mixer *mixer, enum drm_plane_type type, struct regmap *regs, - int index, + int index, int phy_index, int plane_cnt); #endif /* _SUN8I_VI_LAYER_H_ */ From patchwork Sun Oct 12 19:23:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 797 Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.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 5C1FF2FB610 for ; Sun, 12 Oct 2025 19:24:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297052; cv=none; b=NFvBp4u72Ro2/MkGOWTPvIJOyfEUAnha785zwppJa5TdyxOg5bx/sS34mtjFmVdC2/5uEDEqBWQyDPLqJ5diSB3Grm+UD7XWAy8//PLEpfnB49xjJHDcPCcY/o6g42uiBt4hF7lnhC1mAURcIgtm86oEsU0XL6rWgq8riv1Q+hw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297052; c=relaxed/simple; bh=JE+9t2uTRyVmHQwjLdQehz8MHh5AG1h3FeCTYbIFTxM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rJ+Bs68aXZRzU3D//tiUqi8n7BGN0CFbVYZnnNVmZ2LSN/+iY9DHz66ZyIDf88xo78bRYsKUhJpcF9StWvaxmTKg2qYJGS195gM5++Mp+rH7DwByxn7FH8lX5vmL89t/WZS4Ibsp37I+4WclbQ/WHiwG8OHTaAa8LtAWZXK1nbw= 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=j+UMqYoF; arc=none smtp.client-ip=209.85.218.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="j+UMqYoF" Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-b4f323cf89bso619456866b.2 for ; Sun, 12 Oct 2025 12:24:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297047; x=1760901847; 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=Lx6RwmSdgU4IIQBCfnjkaHIgGiO5u++wyA5NWC/K61U=; b=j+UMqYoFJkZyLucfkkbAcrydJxGS4zSy+899uaM3bHj6k5vOO9o4xT5VznxntQNgEi k6sL3F98X3/q/jVv6dsj3AENEDXj7PewXEJwj50hf9JpPGD6eniis0JKp4L0lX6UfPZO X4NMD6S/Krl/RRvKaAIKazis0bnWN/2jAFbEMsabnXevq03b1jMjlYyAEQW7gU4y/vqM LisgC90MMGaawKJ9LUxLdSIVUjaGdAP/YXJFFu+3fGdZliTYmQTxnW8alVBcmqYs6IhC NX8hbhwGuRHZoT6CzUVphqf6CFQd3CIQu8ipc0omclnxtjK+k3+XrP3IcDw5gHKcvjPq Dnxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297047; x=1760901847; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Lx6RwmSdgU4IIQBCfnjkaHIgGiO5u++wyA5NWC/K61U=; b=GaadCFjh+XKKNltvXXfWIyevWxSxW/uHNvSky+miNhyUchsM+BwXWQMBOshvJRFbmh y9IR9HSDGHZHmBvRO7sGjTUi+VouqIE+Y/VdqJZaGyX8W66EKwI2IoKetxAPyd+XjERH nITbYwQ0w2tGXW8cu2KGMDDQjGfO4dmHC4d8aKqw2GJ5+Up4CLLq/SUeNZCHyoyJrqfb rh6/EUJBn/0ibv/OVFEx5eky3w5M4rNwyHd+jzMcb4UgGI/j1sCrc2O+D+g6/zIDPbZf oszIC4KrroRgkcLPXdNX4rJsL8JFny4dOYDRjgpNuNmYAlt0LpVhdpnYuavSmySxdfV2 Mj5g== X-Forwarded-Encrypted: i=1; AJvYcCXbVC+oAGPzb9+p93MYeEDRNOEK0t3FMwh6FsTKN7XE8Vup3zMzO1+zBZYowPFgPgkDqoRjFBo4c8wA2Q==@lists.linux.dev X-Gm-Message-State: AOJu0YzRemhHheK4QE6LyfMBBZHN/wGeFMlEcTtP/kr6W+/Hx2E+ufol /SapR/BISQM8cwewN2bus7jRfaePg1iyIDzzrUGg5bLQY4oOi94QREBu X-Gm-Gg: ASbGnctr8y+DHBz3bNpt8p5pOexKwH+BLwggxRP5Ba83R4iGEYZMJq+QNZnFJHsP8+l D8oDE6JGj1mBaty8iRJCyUbKuJYzolkzmnfa+8BxXgdlkfdmHJuBeN6kjJnTpTHH6LjInHDX7LZ 1B1Wfig6LteVpg/fP1ScVEzwP6sf6uT2j/pJcX7uBQcMLedFFr0UiuIKOGOBxlQh/P5jdiqLxKD hlZaTGl8JmxuKlUwoDTAqpaxCWEdrQzeGRiY0H7jsoRnC1vEXApnh/bxiU2OCHKhbJ7w2QZFPRA K+De7RMyPpCIk94gEyX8uBt53ywIdWvLrN7/EJvWHjI2R4CVZViuHmiqJpkuuIoEZJiq9bt6jHR 0rKeqoiSQYR1TB4YsUnFKTAJRtVOPQIqPGgOhpVFq2uQhcKhAV6XPVDknHD1m/gNzABAhewVkD7 9jtWn8+4/QMWGoGvT5dHjY49nfsp05wjo= X-Google-Smtp-Source: AGHT+IGH9C/CoLClf1Jkf0CjCgobVw/ZwbzYhFdY1bLk6LH3leZZDbDIp409NxGuCUrOaIqSIPGpIg== X-Received: by 2002:a17:907:3f97:b0:b3c:8940:6239 with SMTP id a640c23a62f3a-b50ac3cbd52mr2018365366b.52.1760297047252; Sun, 12 Oct 2025 12:24:07 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.24.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:24:07 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 23/30] drm/sun4i: vi_scaler: Update DE33 base calculation Date: Sun, 12 Oct 2025 21:23:23 +0200 Message-ID: <20251012192330.6903-24-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O Now that channel base calculation is straightforward, let's update VI scaler base calculation to be simpler. At the same time, also introduce macro to avoid magic numbers. Note, reason why current magic value and new macro value isn't the same is because sun8i_channel_base() already introduces offset to channel registers. Previous value is just the difference to VI scaler registers. However, new code calculates scaler base from channel base. This is also easier to understand when looking into BSP driver. Macro value can be easily found whereas old diff value was not. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_vi_scaler.c | 3 ++- drivers/gpu/drm/sun4i/sun8i_vi_scaler.h | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_scaler.c b/drivers/gpu/drm/sun4i/sun8i_vi_scaler.c index 0e308feb492a..fe0bb1de6f08 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_scaler.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_scaler.c @@ -836,7 +836,8 @@ static const u32 bicubic4coefftab32[480] = { static u32 sun8i_vi_scaler_base(struct sun8i_mixer *mixer, int channel) { if (mixer->cfg->de_type == SUN8I_MIXER_DE33) - return sun8i_channel_base(mixer, channel) + 0x3000; + return DE33_VI_SCALER_UNIT_BASE + + DE33_CH_SIZE * channel; else if (mixer->cfg->de_type == SUN8I_MIXER_DE3) return DE3_VI_SCALER_UNIT_BASE + DE3_VI_SCALER_UNIT_SIZE * channel; diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_scaler.h b/drivers/gpu/drm/sun4i/sun8i_vi_scaler.h index 73eecc4d1b1d..245fe2f431c3 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_scaler.h +++ b/drivers/gpu/drm/sun4i/sun8i_vi_scaler.h @@ -18,6 +18,8 @@ #define DE3_VI_SCALER_UNIT_BASE 0x20000 #define DE3_VI_SCALER_UNIT_SIZE 0x08000 +#define DE33_VI_SCALER_UNIT_BASE 0x4000 + /* this two macros assumes 16 fractional bits which is standard in DRM */ #define SUN8I_VI_SCALER_SCALE_MIN 1 #define SUN8I_VI_SCALER_SCALE_MAX ((1UL << 20) - 1) From patchwork Sun Oct 12 19:23:24 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 796 Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.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 5C1322FB60A for ; Sun, 12 Oct 2025 19:24:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297052; cv=none; b=Ao0sR6Q43L+qYzAJnbWQ65Wp+O6x6liTR7WQwqbf2yi+/cKB29vUR01KiQDMr+0qZdZwcrYEYlSNzX3hz2mukGFNdhgwYnEZ5r3xjXHXL39wsMUM3L92+CNf9KhselgmpE+a0JTICkjOSTMg94IdYyTV1YhyThDyV6bKD+mBgx4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297052; c=relaxed/simple; bh=Q1zvYB3flC6Y+FU4UXXFlPiLBwxnmOrVYL/JdQWlsDk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=B8/RizNfUUgS3guEYkElN0fxjXwKTCHlaFMZ7+u+heyC/fUuzs9qRSRn09JBvHbYJynnVxYhbiEtkv8rcOomYeTrIbSadK+/KQ1OCbrP9n4hEdSIxgbsk3WHz0iTaLRlJ2V7UkR394uu8PVQgsUL5vqBUC0UcIDp1li//ESQltM= 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=JisEPZoJ; arc=none smtp.client-ip=209.85.218.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="JisEPZoJ" Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-b3d80891c6cso703922666b.1 for ; Sun, 12 Oct 2025 12:24:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297048; x=1760901848; 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=0DrFRmdaEbeeGFVkadVtzvz8t+dwN3rT/7iEQHdomrY=; b=JisEPZoJmoARCg0IlFMQBhGQzPnB2Q5W6Ruc5QsCd1iCbMkZqt1cBJ07vT/CcJ5n/T afXohsCML/4ldiYhQKB9xCb2V9egFKkzK+dlshkKUE1sKJGG8cHiyOsk4qxREJr+hp2V e2NFq5J/HAWM8d8O0bsIrzsn1yimfWfVHwmVSHJ9sGi1XKhPcgDrx6cdeU4dSyvkWHXb mCaGrIlah1FDfi+U1rYoGfAuRT1p/aKqvvtvIAXZWQTV6p02f8aOl2BbsWqvoLTB1kaR 4JwjYYRqwMBJwGMCWg9ol+TL8rwj/wkoHmnOi+8rABeKoQvyY3tMrFYTKZsEeZYaSZwb ivXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297048; x=1760901848; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0DrFRmdaEbeeGFVkadVtzvz8t+dwN3rT/7iEQHdomrY=; b=s1VCk638U8uwDUoi4nID5AH8nS7gHjLy+zx2wso8jA8PvoXHTSRgNBbEFsLLUVVl18 odcmgdDbxLYrM6Pup0Hq7U7iZ2+NOpzX0sFssvdBpYNQSAtaQX6VMjK1H/KsvrxJknEf XzkbMWH8CKb0IZV0cf2ImvrF9Z/pX0PB+FfLdgC0Ijynvh5+1cV6MD36usLy/ImJQ2d5 KGjM27cEMMOpYWt2JaXZBeAbVtp65FQMKtBlvW/YGY9VJWNz5RHR4b+f2DpDyasLfC0i b4dSdR4BRZ07yPZtk8ytLVOUQ/Y8XRl9xxDRxy3eo+AWdUGLS9t3aqnI3IOe07olLXE+ z8FQ== X-Forwarded-Encrypted: i=1; AJvYcCU7cCCOZFXFob2yoF2OIKT2Ss3BoSyEbjk1QYPYMZLfDC4fPFaqk5jp7WabiJOh43pmB2Tf2nfjYolRuw==@lists.linux.dev X-Gm-Message-State: AOJu0YwqIecU8Ab7KQgm3rJ3BXkkXD8ARqusVZjRXct7nHft4QbDqL0h yyEETy0+runzclYIOamiiLE74ES7LulqMYFp5UBVFsRu0q3zsChTULwj X-Gm-Gg: ASbGncubVxzuaJI1qEEsAe0bgWeIlr/lptRP2TTKhcxhQc7X7EsLxZH8sbHYquefh5H jxd3xUyzOtorvJEpjEe1XCspCOvg10sdxk11/mpTEr1xDG1FccnKdpJ8UGKMdT6kWvHBU/rNNoC lX6Xx6rr9RB8227SSO8IDREgzFCrIbuvHE6XHMHikHc2y1jVyVCIpdEgY8bsVawtKKcC/oFWPBe tlWKmiziAmi+P47cxnJNPGFSU441pxUTM0foDREHKYWwxoVpkv4x7CUrNPSiytglnggRjQ1VJx9 7/c1ksHtpEKhOkqoptdOlpQ3zCQhOe57SLPZY0CxtkBy0mSj41+XWh6V4tZnfjtErrVl7f69J3g 5uxaM++ancpBIF3JQOCmQ5oqwd+RPqD5wdX1kKBNiDXgQKTg5guVQddhS9t7P34ZHem7756WEa3 bMSjHVSA2WWn95RxiqX5KP7D+fDE8GFiY= X-Google-Smtp-Source: AGHT+IER01mRpg7q1Zer+a2Fi+tE48PQj5/njKDNX56YMkXj51QtTvzlx/6vPlXBx59MZeSRaZhVJA== X-Received: by 2002:a17:906:ee87:b0:afa:1d2c:bbd1 with SMTP id a640c23a62f3a-b50bf7eb3cfmr2100938966b.30.1760297048395; Sun, 12 Oct 2025 12:24:08 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.24.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:24:08 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 24/30] drm/sun4i: mixer: Convert heuristics to quirk Date: Sun, 12 Oct 2025 21:23:24 +0200 Message-ID: <20251012192330.6903-25-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O Determination if FCC unit can be used for VI layer alpha depends on number of VI channels. This info won't be available anymore in future to VI layer driver because of DE33 way of allocating planes from same pool to different mixers. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_mixer.c | 9 +++++++++ drivers/gpu/drm/sun4i/sun8i_mixer.h | 3 +++ drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 12 +++++++----- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c index 267a6f75feb2..78bbfbe62833 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -707,6 +707,7 @@ static const struct sun8i_mixer_cfg sun8i_a83t_mixer0_cfg = { .de_type = SUN8I_MIXER_DE2, .scaler_mask = 0xf, .scanline_yuv = 2048, + .de2_fcc_alpha = 1, .ui_num = 3, .vi_num = 1, }; @@ -716,6 +717,7 @@ static const struct sun8i_mixer_cfg sun8i_a83t_mixer1_cfg = { .de_type = SUN8I_MIXER_DE2, .scaler_mask = 0x3, .scanline_yuv = 2048, + .de2_fcc_alpha = 1, .ui_num = 1, .vi_num = 1, }; @@ -726,6 +728,7 @@ static const struct sun8i_mixer_cfg sun8i_h3_mixer0_cfg = { .mod_rate = 432000000, .scaler_mask = 0xf, .scanline_yuv = 2048, + .de2_fcc_alpha = 1, .ui_num = 3, .vi_num = 1, }; @@ -736,6 +739,7 @@ static const struct sun8i_mixer_cfg sun8i_r40_mixer0_cfg = { .mod_rate = 297000000, .scaler_mask = 0xf, .scanline_yuv = 2048, + .de2_fcc_alpha = 1, .ui_num = 3, .vi_num = 1, }; @@ -746,6 +750,7 @@ static const struct sun8i_mixer_cfg sun8i_r40_mixer1_cfg = { .mod_rate = 297000000, .scaler_mask = 0x3, .scanline_yuv = 2048, + .de2_fcc_alpha = 1, .ui_num = 1, .vi_num = 1, }; @@ -766,6 +771,7 @@ static const struct sun8i_mixer_cfg sun20i_d1_mixer0_cfg = { .mod_rate = 297000000, .scaler_mask = 0x3, .scanline_yuv = 2048, + .de2_fcc_alpha = 1, .ui_num = 1, .vi_num = 1, }; @@ -776,6 +782,7 @@ static const struct sun8i_mixer_cfg sun20i_d1_mixer1_cfg = { .mod_rate = 297000000, .scaler_mask = 0x1, .scanline_yuv = 1024, + .de2_fcc_alpha = 1, .ui_num = 0, .vi_num = 1, }; @@ -786,6 +793,7 @@ static const struct sun8i_mixer_cfg sun50i_a64_mixer0_cfg = { .mod_rate = 297000000, .scaler_mask = 0xf, .scanline_yuv = 4096, + .de2_fcc_alpha = 1, .ui_num = 3, .vi_num = 1, }; @@ -796,6 +804,7 @@ static const struct sun8i_mixer_cfg sun50i_a64_mixer1_cfg = { .mod_rate = 297000000, .scaler_mask = 0x3, .scanline_yuv = 2048, + .de2_fcc_alpha = 1, .ui_num = 1, .vi_num = 1, }; diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.h b/drivers/gpu/drm/sun4i/sun8i_mixer.h index d14188cdfab3..def07afd37e1 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.h +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.h @@ -176,6 +176,8 @@ enum sun8i_mixer_type { * a functional block. * @de_type: sun8i_mixer_type enum representing the display engine generation. * @scaline_yuv: size of a scanline for VI scaler for YUV formats. + * @de2_fcc_alpha: use FCC for missing DE2 VI alpha capability + * Most DE2 cores has FCC. If number of VI planes is one, enable this. * @map: channel map for DE variants processing YUV separately (DE33) */ struct sun8i_mixer_cfg { @@ -186,6 +188,7 @@ struct sun8i_mixer_cfg { unsigned long mod_rate; unsigned int de_type; unsigned int scanline_yuv; + unsigned int de2_fcc_alpha : 1; unsigned int map[6]; }; diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index 44e699910b70..8eb3f167e664 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -48,14 +48,16 @@ static void sun8i_vi_layer_update_attributes(struct sun8i_layer *layer, val |= (state->alpha == DRM_BLEND_ALPHA_OPAQUE) ? SUN50I_MIXER_CHAN_VI_LAYER_ATTR_ALPHA_MODE_PIXEL : SUN50I_MIXER_CHAN_VI_LAYER_ATTR_ALPHA_MODE_COMBINED; - } else if (mixer->cfg->vi_num == 1) { + } + + regmap_write(layer->regs, + SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, layer->overlay), val); + + if (mixer->cfg->de2_fcc_alpha) { regmap_write(layer->regs, SUN8I_MIXER_FCC_GLOBAL_ALPHA_REG, SUN8I_MIXER_FCC_GLOBAL_ALPHA(state->alpha >> 8)); } - - regmap_write(layer->regs, - SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, layer->overlay), val); } static void sun8i_vi_layer_update_coord(struct sun8i_layer *layer, @@ -450,7 +452,7 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, return ERR_PTR(ret); } - if (mixer->cfg->vi_num == 1 || mixer->cfg->de_type >= SUN8I_MIXER_DE3) { + if (mixer->cfg->de2_fcc_alpha || mixer->cfg->de_type >= SUN8I_MIXER_DE3) { ret = drm_plane_create_alpha_property(&layer->plane); if (ret) { dev_err(drm->dev, "Couldn't add alpha property\n"); From patchwork Sun Oct 12 19:23:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 795 Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) (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 795042F28F8 for ; Sun, 12 Oct 2025 19:24:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297055; cv=none; b=SqGAxJYcBS5SOh0rLsTxeeGxjX3sZDrvi6wWcUYlnxbm/quDsr5CYe5EbudNQ3Rj0uoPf9+j5DiRXKpHFsEOPbyBRpk72R7aY6QGPBABFVayMlF5SdxOOAlzlMj4mh26PalTMA9VNzr3zKisJvA1HIuO+wJ5LDzeu+9Y8eKqBP4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297055; c=relaxed/simple; bh=7Vpg5pdcwhpe6j3H4rCvIT3PXPexXBscDV/N0+A/BKQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bY0IrxsZf7ak33Teid/0YKiv05X4K8TtEN7ElOHJ+4N/kxXw6Cr1SbL4CJ6d4aa1nfBDeoLWvPMZHSStAI7uJYZxJLKuUZeB6JoBZc6M6Mn1dMFoB/u/wtS0qmva+v6F8wYYSDuS/MWaUQkUPGTD333itExWxuy+xj420oamf98= 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=EmSiBcVW; arc=none smtp.client-ip=209.85.218.53 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="EmSiBcVW" Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-b3ee18913c0so549782566b.3 for ; Sun, 12 Oct 2025 12:24:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297049; x=1760901849; 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=WhJ4Mx5N84YekwfwtgsaM13tMkuKqezRguQA+ougb2A=; b=EmSiBcVWg9lG+8PL+sBw4jyDd7xnh5K83rmf6+ix+bQalmfEv7kT+NQhpOp6wyQcPX jqIkNxD0u4k+UXot5546OG6xyrkuNvaIXKFKjCnnLvLvNWKs+qz1IGDiTewpUiG+Xx1q 5eA4occLwcbK4XYFZPXLXxOCMdPAwhaxXrq2t+A10JWyuXOzXi7Rx7biMWIbeMnLbtxz N6HPtx9RCi1sYSb4o0bNKOVK9Dd6kyC7Q5gpRQCzxeHz7w4cBGJi5xGT7/CtDA5D1kOj 9dErtB+8SBNWutk7VsvEQ0bp2lRVbTwGD1/uVTsf7ZMk2FShFPmWqaJwd35UjdFyrgPi BAHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297049; x=1760901849; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=WhJ4Mx5N84YekwfwtgsaM13tMkuKqezRguQA+ougb2A=; b=lJi8UoUa9nCFFv/mNA56n7fq0uhKXMOfQfJTNNy7bDz70yDPL8Dv0f3rjjAacGuGhD bQj/LZZvCYGHu2Olrby7V9ZqavCMlChl1DmGp9sOgLHw7XQ6CG/KZHtzO7ytIYNoO20q 75SjM6zei1VIXWbBpEWkpYcu3mxK6OQWYMaRwAKPZtLc0BMyHpeoZZf0HIs6JJ40tZz9 sPtYBMfOT+qHvrZgS+E/NmXd9hTCK1+AuOxR+Uv24ZMMxIIDKJEwhKy8XvJCXVCAnMSe GULWgJztdp/jeLv6FrOC5T5VdCgL2UmMIr/R+kS2rc2JnRQxtwCm+oZTlC1LNtAJKhCq 0a8A== X-Forwarded-Encrypted: i=1; AJvYcCUdIfeg+hzDMxgruy1TMcjafJcCO0TEAHP+mjmJZ7mete7ptaRjK9k8+woepoo6lNWnYl5IIS5HQqLlYA==@lists.linux.dev X-Gm-Message-State: AOJu0YwWUPQ7shhTqWH/vQsPSde3Is28FpLptu59d99Pq/ABgMh/lFgk ROaHJ5rI3LjmcDge/JOUaeyDaHE4tbZbqRp+ILRxC/1a3ObqO1lnWi1z X-Gm-Gg: ASbGncs5L4pU/MA4hS5OOy09b1P7hVmXZ53S5v2d4JQIFjPgHMQctUdhchhv/iBYhP7 nWwZk76LArBmLZI5K9rb9u2PdP0M+5rbY/Pl3qtY3QIItpalbLdG8ynyb22feX0ppMeFAJtJOnq H7ky79MS7qx8IBKiKt6QpgN/psI4ADXRbkzgsPl2pjbePOGhMJ810CkC9GXYTfhqsZ0SekhS9CX 3E9BMwtNV7p8TVJELYzComJE+uZkcky5fVuxgUpNZ8TEmutyWnvlZNc+XGRMDuEp+DAc55eQnA8 0RAdQ4nHMvjUhS7EtywVVKE7q8s33eypPARcUnT6s/F60D2qcX+WtlvIbYh+rXpSv5x6HHSS9S+ C36kDt+gVeNb9nbM+/yhWGvlTKh5OnpbCMOkoYuD9uwTSkBxpUHU7r/gtbGwGtyaTVIjDtZe5G6 09qSpQzK/i5Vz5V/GO7PsHWGrgSHfDZKU= X-Google-Smtp-Source: AGHT+IFR0pZ/YrbCaB4kbdDAW62+ktVARq4KWPwTuGdcL/MYc6Uu9RhwoTSIe+WpqZdntWjE7guIfQ== X-Received: by 2002:a17:906:1b47:b0:b4f:3c7d:ff5d with SMTP id a640c23a62f3a-b50abfcc8f1mr1504360166b.51.1760297049525; Sun, 12 Oct 2025 12:24:09 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.24.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:24:09 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 25/30] drm/sun4i: ui_scaler: drop sanity checks Date: Sun, 12 Oct 2025 21:23:25 +0200 Message-ID: <20251012192330.6903-26-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O They can't be triggered if mixer configuration is properly specified in quirks. Additionally, number of VI channels won't be available in future due to rework for DE33 support. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_ui_scaler.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c b/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c index 2fc54dc20307..c0947ccf675b 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c @@ -132,9 +132,6 @@ void sun8i_ui_scaler_enable(struct sun8i_layer *layer, bool enable) struct sun8i_mixer *mixer = layer->mixer; u32 val, base; - if (WARN_ON(layer->channel < mixer->cfg->vi_num)) - return; - base = sun8i_ui_scaler_base(mixer, layer->channel); if (enable) @@ -155,9 +152,6 @@ void sun8i_ui_scaler_setup(struct sun8i_layer *layer, int i, offset; u32 base; - if (WARN_ON(layer->channel < mixer->cfg->vi_num)) - return; - base = sun8i_ui_scaler_base(mixer, layer->channel); hphase <<= SUN8I_UI_SCALER_PHASE_FRAC - 16; From patchwork Sun Oct 12 19:23:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 794 Received: from mail-ed1-f42.google.com (mail-ed1-f42.google.com [209.85.208.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 895DB2FC01F for ; Sun, 12 Oct 2025 19:24:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297056; cv=none; b=AniPWV5ZMiz+1vjCJWTPq/cDQdhDs+bhhWmX79qRiV8O42lvfZydYL2fBKgvdsV+A9xtXo3lD7ovmrGF0RfFBooLG3OqTc/dKZHhVmmieewKh4g38hsP2EISpfsKcXa1epbkiAdcib+nyOSJW/1FhLRYIC7945njDTSt5qxMm8g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297056; c=relaxed/simple; bh=8tfH0Ct8eBgAlzgTHkf8CSVQ9Upjl7jIzKw/OuBxCZ8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WttUQmgjzEQ3kasguoZxb0w/t/AeurXDTfObljHahVrs7nvxhDXqSuPKVnsmDwQWsEkEEStK7zRQd2Bxqr72Ysm8luoZGoaVk8VRHklAMJv+EFvFlTqDxWchkL4m+i+8rTB2skVT7oJMnaSGpFqEaQrNxT8uU6Aa7OMVT3y3jz4= 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=Q1wRUcFQ; arc=none smtp.client-ip=209.85.208.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="Q1wRUcFQ" Received: by mail-ed1-f42.google.com with SMTP id 4fb4d7f45d1cf-62fa062a1abso6536884a12.2 for ; Sun, 12 Oct 2025 12:24:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297051; x=1760901851; 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=XtfZqtpuShLv1nU1aubYkk3yFU+GUfrCfqGs419v49U=; b=Q1wRUcFQZRiChul/D8pDHFOQihKOG4CdXBLM99GI4PwTU5tLmetWOexW/lRjVQZoOi aAbqpgkm5QbMNVH2wnJwV5abQ1VGQKIryzU96bGgbtqPghBOqO3fL6hX6J1FhJYkogCB Hd4cyMt5q9pG/2MAfTphSP/WphtLLaDRNSSuxf6ktI2iu2reJD3raq3w5Zc2cUa3MeTU 7mVJQQmz691JQxJusiRSlz04siiYseFx1JSScJVj3P186GcasNXzTTeYs7BzkoUlsWni Kp5lduit3pt18Ya/5oWyo0e46Ls2g+TIUnHpOdWCcBjX66fUwBMXrGtTt7DpJtj4kKKD QPHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297051; x=1760901851; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XtfZqtpuShLv1nU1aubYkk3yFU+GUfrCfqGs419v49U=; b=kjl5m2eciQAyzwziV8x2MHvsy1jQt+z0JaivUVvWDpFEd6j+DfVDY4K3kTciw4eqay hgSg8uN2auXEiLsYQ5X4jSk3BsoExf4czsrVDjtIi53k15l5mGV0/FTV9Wawy/xY4l3o jVQ0ACehoMyM6CsxaqVDoKNcxbQznx4+OQeGc4XD675XtVe1IQ+nVPmym+rALpdQKEMB COmpDic2D+jX2Ux2eOLn9L6tU5/z+vRlNb1JglJZTXlolclIplAUv1yq0CTatYYobqLG HO3jv+5R3K+xEqzauaV1lXfHr86ITY1jPg5Ty3hNe5WOjXGgxvaBalnmdrDYjovhFJsL zzXA== X-Forwarded-Encrypted: i=1; AJvYcCX0ehXQY/nAwiaCSL2yjn49aoCuY3HRnXxZwFxGGb/xrwXrB6AkSnmsiqzIPosWk9IEMxh1VOzCRDRvzQ==@lists.linux.dev X-Gm-Message-State: AOJu0YwpW4eUWSC/dZc+AnXUy1329LJ5Da37mQpqylAOnPtZg8rSM462 aLqoZV0geSqpBEi+HShECsTbN4Y9+uCz4KYqAhpoPUVLIkYg1UquVbHq X-Gm-Gg: ASbGncujicSyGyCo/vo52gT0Nw8RFBivZdDz4E6o7UGPNIXNMY58LbbTSs378iMd9bh 30QfekG8e6jhYcP1exJ4Eg1dGonFN+dgg7QYn0tZMK62q4Ecud9sdUCw1HnNcwmpu9ygUSk1iBC Ca3i39bt1qLe8mj8fc99XZXoh5m8V7AwhkaFcGaVEKnsSQEChkXQ4iHxT7X3HzDcK1JwYadyszv 2r67OUlYt+45ts9UpDD5t621z1PNUDfUJbekraDcnJ+AcDMLYR9pjviejXsKY4mkllIUag9/APr ahM78cOi5E4CwxUVjsby0/Js067QJ2YttRCdB7GFxmY8K8/rdpXgNcrxFwLj1RY4o8stmGIpE5a 9FWOCSknLVO425zM747uOj4J9pifmLdbsrAObz3rU499tixlWGzifK/4JU72EM2W5/psbeeB1dY XUSjbA8EKyf9YO28J6A9l9tc0HuzYWNZA= X-Google-Smtp-Source: AGHT+IHB34QQqDlmEWSULWlkvhSNkqtePImbxaBbIAD1Quq/9BnRqWHi2Xd84ZFnczeko4HHUeU2JA== X-Received: by 2002:a17:907:2689:b0:b3e:bb87:772c with SMTP id a640c23a62f3a-b50aab9c912mr2070025566b.17.1760297050626; Sun, 12 Oct 2025 12:24:10 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.24.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:24:10 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 26/30] drm/sun4i: mixer: Add quirk for number of VI scalers Date: Sun, 12 Oct 2025 21:23:26 +0200 Message-ID: <20251012192330.6903-27-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O On DE2 and DE3, UI scalers are located right after VI scalers. So in order to calculate proper UI scaler base address, number of VI scalers must be known. In practice, it is same as number of VI channels, but it doesn't need to be. Let's make a quirk for this number. Code for configuring channels and associated functions won't have access to vi_num quirk anymore after rework for independent planes. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_mixer.c | 11 +++++++++++ drivers/gpu/drm/sun4i/sun8i_mixer.h | 2 ++ drivers/gpu/drm/sun4i/sun8i_ui_scaler.c | 10 +++++----- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c index 78bbfbe62833..f9131396f22f 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -708,6 +708,7 @@ static const struct sun8i_mixer_cfg sun8i_a83t_mixer0_cfg = { .scaler_mask = 0xf, .scanline_yuv = 2048, .de2_fcc_alpha = 1, + .vi_scaler_num = 1, .ui_num = 3, .vi_num = 1, }; @@ -718,6 +719,7 @@ static const struct sun8i_mixer_cfg sun8i_a83t_mixer1_cfg = { .scaler_mask = 0x3, .scanline_yuv = 2048, .de2_fcc_alpha = 1, + .vi_scaler_num = 1, .ui_num = 1, .vi_num = 1, }; @@ -729,6 +731,7 @@ static const struct sun8i_mixer_cfg sun8i_h3_mixer0_cfg = { .scaler_mask = 0xf, .scanline_yuv = 2048, .de2_fcc_alpha = 1, + .vi_scaler_num = 1, .ui_num = 3, .vi_num = 1, }; @@ -740,6 +743,7 @@ static const struct sun8i_mixer_cfg sun8i_r40_mixer0_cfg = { .scaler_mask = 0xf, .scanline_yuv = 2048, .de2_fcc_alpha = 1, + .vi_scaler_num = 1, .ui_num = 3, .vi_num = 1, }; @@ -751,6 +755,7 @@ static const struct sun8i_mixer_cfg sun8i_r40_mixer1_cfg = { .scaler_mask = 0x3, .scanline_yuv = 2048, .de2_fcc_alpha = 1, + .vi_scaler_num = 1, .ui_num = 1, .vi_num = 1, }; @@ -761,6 +766,7 @@ static const struct sun8i_mixer_cfg sun8i_v3s_mixer_cfg = { .ui_num = 1, .scaler_mask = 0x3, .scanline_yuv = 2048, + .vi_scaler_num = 2, .ccsc = CCSC_MIXER0_LAYOUT, .mod_rate = 150000000, }; @@ -772,6 +778,7 @@ static const struct sun8i_mixer_cfg sun20i_d1_mixer0_cfg = { .scaler_mask = 0x3, .scanline_yuv = 2048, .de2_fcc_alpha = 1, + .vi_scaler_num = 1, .ui_num = 1, .vi_num = 1, }; @@ -783,6 +790,7 @@ static const struct sun8i_mixer_cfg sun20i_d1_mixer1_cfg = { .scaler_mask = 0x1, .scanline_yuv = 1024, .de2_fcc_alpha = 1, + .vi_scaler_num = 1, .ui_num = 0, .vi_num = 1, }; @@ -794,6 +802,7 @@ static const struct sun8i_mixer_cfg sun50i_a64_mixer0_cfg = { .scaler_mask = 0xf, .scanline_yuv = 4096, .de2_fcc_alpha = 1, + .vi_scaler_num = 1, .ui_num = 3, .vi_num = 1, }; @@ -805,6 +814,7 @@ static const struct sun8i_mixer_cfg sun50i_a64_mixer1_cfg = { .scaler_mask = 0x3, .scanline_yuv = 2048, .de2_fcc_alpha = 1, + .vi_scaler_num = 1, .ui_num = 1, .vi_num = 1, }; @@ -814,6 +824,7 @@ static const struct sun8i_mixer_cfg sun50i_h6_mixer0_cfg = { .mod_rate = 600000000, .scaler_mask = 0xf, .scanline_yuv = 4096, + .vi_scaler_num = 1, .ui_num = 3, .vi_num = 1, }; diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.h b/drivers/gpu/drm/sun4i/sun8i_mixer.h index def07afd37e1..40b800022237 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.h +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.h @@ -178,6 +178,7 @@ enum sun8i_mixer_type { * @scaline_yuv: size of a scanline for VI scaler for YUV formats. * @de2_fcc_alpha: use FCC for missing DE2 VI alpha capability * Most DE2 cores has FCC. If number of VI planes is one, enable this. + * @vi_scaler_num: Number of VI scalers. Used on DE2 and DE3. * @map: channel map for DE variants processing YUV separately (DE33) */ struct sun8i_mixer_cfg { @@ -189,6 +190,7 @@ struct sun8i_mixer_cfg { unsigned int de_type; unsigned int scanline_yuv; unsigned int de2_fcc_alpha : 1; + unsigned int vi_scaler_num; unsigned int map[6]; }; diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c b/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c index c0947ccf675b..0ba1482688d7 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c @@ -91,16 +91,16 @@ static const u32 lan2coefftab16[240] = { static u32 sun8i_ui_scaler_base(struct sun8i_mixer *mixer, int channel) { - int vi_num = mixer->cfg->vi_num; + int offset = mixer->cfg->vi_scaler_num; if (mixer->cfg->de_type == SUN8I_MIXER_DE3) return DE3_VI_SCALER_UNIT_BASE + - DE3_VI_SCALER_UNIT_SIZE * vi_num + - DE3_UI_SCALER_UNIT_SIZE * (channel - vi_num); + DE3_VI_SCALER_UNIT_SIZE * offset + + DE3_UI_SCALER_UNIT_SIZE * (channel - offset); else return DE2_VI_SCALER_UNIT_BASE + - DE2_VI_SCALER_UNIT_SIZE * vi_num + - DE2_UI_SCALER_UNIT_SIZE * (channel - vi_num); + DE2_VI_SCALER_UNIT_SIZE * offset + + DE2_UI_SCALER_UNIT_SIZE * (channel - offset); } static int sun8i_ui_scaler_coef_index(unsigned int step) From patchwork Sun Oct 12 19:23:27 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 793 Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.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 7BCC12FC01D for ; Sun, 12 Oct 2025 19:24:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297056; cv=none; b=E2vwRdmHMSTLMtk8J0nHyCQTUMJ+1TM7ifJtufhAu8uLslKkU0ffEMXCDm/xkb4Nc0xZUSWdWOlvHGCRFzfsmxd7Hs/2oQwxfGwRypUPTB3qdPkqIp+daW78uizdGqsptOpdaz+AWhrmYWzrGNJTx8bOKJsHXjiJHL+siCcxg/M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297056; c=relaxed/simple; bh=tujLjutgBntT+dXd3d7n3u+p14RLIvtn3qv3lUiYySI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CJ4CBpOxDMqd+wMNT3FaT+vqJrKlTMLv+yXXk7HcAhMcml1+//DCN2HMGsi8+e0gXSD2i+teHStSSNZemPwMLgCELbDyLlAuS0iOtLXO6A/0VK4wvNG5PykexyBE1vL2GXK5sDUBgU4bXFVcmN5RqEsNPMQ3fK2+80tFhB0Lr3k= 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=SULUfLMe; arc=none smtp.client-ip=209.85.218.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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="SULUfLMe" Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-b3b27b50090so653305366b.0 for ; Sun, 12 Oct 2025 12:24:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297052; x=1760901852; 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=kaJPE4L65CXDkqyIuBABLqdOxJoCd3GcyPIY1yQyHic=; b=SULUfLMe/yv1egVGH7lk5I0HvHOsJvusI6RpM5SuSMcziQTO0LcJI3emharClxLdkj Ehubho2gOVcPWcs6VJzosDd98cNP4rW8RvAstUm3mx6+O+l9CZ/UsdMgWSYu+Zp8o3Rn Xk0r2ROkAywzSTJwzkDVHmtvJ74rFSmh8LWd4FqJRSBwzzo6uz4j7uYBRkmOwhzj/i2I GEL9/2fEubsdrKVlwwFfCt0yh0h9WzTaSUrWaa/c1z9XB9lz277xDgIFNOVguyN/dR9E wWdMSEGUH8BWJodYmsNMEqvNH0bCBuzihz1MtxB/1jGWIQTuuuJU/lfPasd/IV8ghr0z 4wPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297052; x=1760901852; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kaJPE4L65CXDkqyIuBABLqdOxJoCd3GcyPIY1yQyHic=; b=CRT10pqJnUktFiswjwwCIZV0n4+fvf2Vhkqp1FNviDInQMYqK1/kumqJCcS+0EOX4I sdA0wVd0cd+XTPw+BnrWibIS1Dt2NntQhrc2NKJNh4uXjqs1AGXyMutn8RugmfLR3b5q Fx9+E8kll7+LvBTBNAlnqsWiyyz7PEbNamTLjKVVb99jWNP8dNelcEiSfvKCLiiFOe8a b9qnTS7MG0Qa7uTTLCSldPsohUU7nnPP9NXaOp7A8mkJdCWZwgiI1e0PcAi4ydfbYrX2 LB6SMIIhyCzsrk04y0oWJkdVR7qE1kvPmwHsoAVR/u+H0LbMQ98Fu/jZ5FsfS1T531dk 5X9A== X-Forwarded-Encrypted: i=1; AJvYcCWzr7pJURS2LUv2UTbryPwlqaRkzzNNSYcyqTNiUOlPCmfQ9vzz6Ot3QrAwuLigwC4peOUPhcLXX4TIUA==@lists.linux.dev X-Gm-Message-State: AOJu0Yx2kQVunQek4yi34Xy9fLSzuGFfz7W/wEytJpB1lkrp0rcNL77W kJrAsKkhbu77XiGqYTJoQg+ScqIGVEOIjUZlSZs0CISpyCrOnXuEhaPA X-Gm-Gg: ASbGncvDrYa40MUqfeG7smBqQLINVw1linPTiJd/nMyJ4t3yMRXPKiS5Ny6WBfVklN7 RV8IXyfAEt/K+GjIrsfeDXwrl7N3JCGh4KF4rggngWn7tPKD3NBUBUCMB05dUIyUJ7FrL5U6ISq hK84yJSQ/ONdSrAfwo3WLpKsv7moO0dZf5bHH4Y6mIHcksClaK00bV2ZA3vtVj2p2atiisMVtLz YImI+6HDd42ZnyjQNeQjFyYzHATClBIYLvCybfvtX7JZH0+T1NMNcAYeSEhoGskIo/ZAYuKVogn z9GO1llAp0wAUJEg09BL6PbQtMad0voDTXZDfPxD3F3cFwverUfqhFHpQfTQqxodPUmX4ENTZ1t adSVTGW0y06505+mVPrZEEcB9JhDvtcMDhsRTnxUSs4y4Ayeznh+1+ijXdzA5nMlTYzOOBNyA3C M1jBCQYVCCyYo5blR0bPSFVY8+x2C6m7w= X-Google-Smtp-Source: AGHT+IFQEmoHaQY1HSeHivRc7zOWRD2roSYeAHB1g5htc57RrShWiGIm59M++o32pnXdabZt6E9p4w== X-Received: by 2002:a17:907:94ca:b0:b46:1db9:cb7c with SMTP id a640c23a62f3a-b50ac1c6951mr1943566866b.33.1760297051775; Sun, 12 Oct 2025 12:24:11 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.24.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:24:11 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 27/30] drm/sun4i: mixer: split out layer config Date: Sun, 12 Oct 2025 21:23:27 +0200 Message-ID: <20251012192330.6903-28-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O Later special plane only driver for DE33 will provide separate configuration. This change will also help layer driver migrate away from mixer structure. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_csc.c | 2 +- drivers/gpu/drm/sun4i/sun8i_mixer.c | 152 +++++++++++++++--------- drivers/gpu/drm/sun4i/sun8i_mixer.h | 32 +++-- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 2 +- drivers/gpu/drm/sun4i/sun8i_ui_scaler.c | 2 +- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 8 +- 6 files changed, 122 insertions(+), 76 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_csc.c b/drivers/gpu/drm/sun4i/sun8i_csc.c index c371e94b95bd..30779db2f9b2 100644 --- a/drivers/gpu/drm/sun4i/sun8i_csc.c +++ b/drivers/gpu/drm/sun4i/sun8i_csc.c @@ -240,7 +240,7 @@ void sun8i_csc_config(struct sun8i_layer *layer, return; } - base = ccsc_base[layer->mixer->cfg->ccsc][layer->channel]; + base = ccsc_base[layer->mixer->cfg->lay_cfg.ccsc][layer->channel]; sun8i_csc_setup(layer->regs, base, mode, state->color_encoding, diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c index f9131396f22f..a01eccfca3a9 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -703,137 +703,173 @@ static void sun8i_mixer_remove(struct platform_device *pdev) } static const struct sun8i_mixer_cfg sun8i_a83t_mixer0_cfg = { - .ccsc = CCSC_MIXER0_LAYOUT, + .lay_cfg = { + .ccsc = CCSC_MIXER0_LAYOUT, + .de_type = SUN8I_MIXER_DE2, + .scaler_mask = 0xf, + .scanline_yuv = 2048, + .de2_fcc_alpha = 1, + .vi_scaler_num = 1, + }, .de_type = SUN8I_MIXER_DE2, - .scaler_mask = 0xf, - .scanline_yuv = 2048, - .de2_fcc_alpha = 1, - .vi_scaler_num = 1, .ui_num = 3, .vi_num = 1, }; static const struct sun8i_mixer_cfg sun8i_a83t_mixer1_cfg = { - .ccsc = CCSC_MIXER1_LAYOUT, + .lay_cfg = { + .ccsc = CCSC_MIXER1_LAYOUT, + .de_type = SUN8I_MIXER_DE2, + .scaler_mask = 0x3, + .scanline_yuv = 2048, + .de2_fcc_alpha = 1, + .vi_scaler_num = 1, + }, .de_type = SUN8I_MIXER_DE2, - .scaler_mask = 0x3, - .scanline_yuv = 2048, - .de2_fcc_alpha = 1, - .vi_scaler_num = 1, .ui_num = 1, .vi_num = 1, }; static const struct sun8i_mixer_cfg sun8i_h3_mixer0_cfg = { - .ccsc = CCSC_MIXER0_LAYOUT, + .lay_cfg = { + .ccsc = CCSC_MIXER0_LAYOUT, + .de_type = SUN8I_MIXER_DE2, + .scaler_mask = 0xf, + .scanline_yuv = 2048, + .de2_fcc_alpha = 1, + .vi_scaler_num = 1, + }, .de_type = SUN8I_MIXER_DE2, .mod_rate = 432000000, - .scaler_mask = 0xf, - .scanline_yuv = 2048, - .de2_fcc_alpha = 1, - .vi_scaler_num = 1, .ui_num = 3, .vi_num = 1, }; static const struct sun8i_mixer_cfg sun8i_r40_mixer0_cfg = { - .ccsc = CCSC_MIXER0_LAYOUT, + .lay_cfg = { + .ccsc = CCSC_MIXER0_LAYOUT, + .de_type = SUN8I_MIXER_DE2, + .scaler_mask = 0xf, + .scanline_yuv = 2048, + .de2_fcc_alpha = 1, + .vi_scaler_num = 1, + }, .de_type = SUN8I_MIXER_DE2, .mod_rate = 297000000, - .scaler_mask = 0xf, - .scanline_yuv = 2048, - .de2_fcc_alpha = 1, - .vi_scaler_num = 1, .ui_num = 3, .vi_num = 1, }; static const struct sun8i_mixer_cfg sun8i_r40_mixer1_cfg = { - .ccsc = CCSC_MIXER1_LAYOUT, + .lay_cfg = { + .ccsc = CCSC_MIXER1_LAYOUT, + .de_type = SUN8I_MIXER_DE2, + .scaler_mask = 0x3, + .scanline_yuv = 2048, + .de2_fcc_alpha = 1, + .vi_scaler_num = 1, + }, .de_type = SUN8I_MIXER_DE2, .mod_rate = 297000000, - .scaler_mask = 0x3, - .scanline_yuv = 2048, - .de2_fcc_alpha = 1, - .vi_scaler_num = 1, .ui_num = 1, .vi_num = 1, }; static const struct sun8i_mixer_cfg sun8i_v3s_mixer_cfg = { - .de_type = SUN8I_MIXER_DE2, - .vi_num = 2, - .ui_num = 1, - .scaler_mask = 0x3, - .scanline_yuv = 2048, - .vi_scaler_num = 2, - .ccsc = CCSC_MIXER0_LAYOUT, - .mod_rate = 150000000, + .lay_cfg = { + .ccsc = CCSC_MIXER0_LAYOUT, + .de_type = SUN8I_MIXER_DE2, + .scaler_mask = 0x3, + .scanline_yuv = 2048, + .vi_scaler_num = 2, + }, + .de_type = SUN8I_MIXER_DE2, + .mod_rate = 150000000, + .vi_num = 2, + .ui_num = 1, }; static const struct sun8i_mixer_cfg sun20i_d1_mixer0_cfg = { - .ccsc = CCSC_D1_MIXER0_LAYOUT, + .lay_cfg = { + .ccsc = CCSC_D1_MIXER0_LAYOUT, + .de_type = SUN8I_MIXER_DE2, + .scaler_mask = 0x3, + .scanline_yuv = 2048, + .de2_fcc_alpha = 1, + .vi_scaler_num = 1, + }, .de_type = SUN8I_MIXER_DE2, .mod_rate = 297000000, - .scaler_mask = 0x3, - .scanline_yuv = 2048, - .de2_fcc_alpha = 1, - .vi_scaler_num = 1, .ui_num = 1, .vi_num = 1, }; static const struct sun8i_mixer_cfg sun20i_d1_mixer1_cfg = { - .ccsc = CCSC_MIXER1_LAYOUT, + .lay_cfg = { + .ccsc = CCSC_MIXER1_LAYOUT, + .de_type = SUN8I_MIXER_DE2, + .scaler_mask = 0x1, + .scanline_yuv = 1024, + .de2_fcc_alpha = 1, + .vi_scaler_num = 1, + }, .de_type = SUN8I_MIXER_DE2, .mod_rate = 297000000, - .scaler_mask = 0x1, - .scanline_yuv = 1024, - .de2_fcc_alpha = 1, - .vi_scaler_num = 1, .ui_num = 0, .vi_num = 1, }; static const struct sun8i_mixer_cfg sun50i_a64_mixer0_cfg = { - .ccsc = CCSC_MIXER0_LAYOUT, + .lay_cfg = { + .ccsc = CCSC_MIXER0_LAYOUT, + .de_type = SUN8I_MIXER_DE2, + .scaler_mask = 0xf, + .scanline_yuv = 4096, + .de2_fcc_alpha = 1, + .vi_scaler_num = 1, + }, .de_type = SUN8I_MIXER_DE2, .mod_rate = 297000000, - .scaler_mask = 0xf, - .scanline_yuv = 4096, - .de2_fcc_alpha = 1, - .vi_scaler_num = 1, .ui_num = 3, .vi_num = 1, }; static const struct sun8i_mixer_cfg sun50i_a64_mixer1_cfg = { - .ccsc = CCSC_MIXER1_LAYOUT, + .lay_cfg = { + .ccsc = CCSC_MIXER1_LAYOUT, + .de_type = SUN8I_MIXER_DE2, + .scaler_mask = 0x3, + .scanline_yuv = 2048, + .de2_fcc_alpha = 1, + .vi_scaler_num = 1, + }, .de_type = SUN8I_MIXER_DE2, .mod_rate = 297000000, - .scaler_mask = 0x3, - .scanline_yuv = 2048, - .de2_fcc_alpha = 1, - .vi_scaler_num = 1, .ui_num = 1, .vi_num = 1, }; static const struct sun8i_mixer_cfg sun50i_h6_mixer0_cfg = { + .lay_cfg = { + .de_type = SUN8I_MIXER_DE3, + .scaler_mask = 0xf, + .scanline_yuv = 4096, + .vi_scaler_num = 1, + }, .de_type = SUN8I_MIXER_DE3, .mod_rate = 600000000, - .scaler_mask = 0xf, - .scanline_yuv = 4096, - .vi_scaler_num = 1, .ui_num = 3, .vi_num = 1, }; 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, - .scaler_mask = 0xf, - .scanline_yuv = 4096, .ui_num = 3, .vi_num = 1, .map = {0, 6, 7, 8}, diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.h b/drivers/gpu/drm/sun4i/sun8i_mixer.h index 40b800022237..8629e21f9cf6 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.h +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.h @@ -164,34 +164,44 @@ enum sun8i_mixer_type { }; /** - * struct sun8i_mixer_cfg - mixer HW configuration - * @vi_num: number of VI channels - * @ui_num: number of UI channels + * struct sun8i_layer_cfg - layer configuration * @scaler_mask: bitmask which tells which channel supports scaling * First, scaler supports for VI channels is defined and after that, scaler * support for UI channels. For example, if mixer has 2 VI channels without * scaler and 2 UI channels with scaler, bitmask would be 0xC. * @ccsc: select set of CCSC base addresses from the enumeration above. - * @mod_rate: module clock rate that needs to be set in order to have - * a functional block. * @de_type: sun8i_mixer_type enum representing the display engine generation. * @scaline_yuv: size of a scanline for VI scaler for YUV formats. * @de2_fcc_alpha: use FCC for missing DE2 VI alpha capability * Most DE2 cores has FCC. If number of VI planes is one, enable this. * @vi_scaler_num: Number of VI scalers. Used on DE2 and DE3. - * @map: channel map for DE variants processing YUV separately (DE33) */ -struct sun8i_mixer_cfg { - int vi_num; - int ui_num; +struct sun8i_layer_cfg { int scaler_mask; int ccsc; - unsigned long mod_rate; unsigned int de_type; unsigned int scanline_yuv; unsigned int de2_fcc_alpha : 1; unsigned int vi_scaler_num; - unsigned int map[6]; +}; + +/** + * struct sun8i_mixer_cfg - mixer HW configuration + * @lay_cfg: layer configuration + * @vi_num: number of VI channels + * @ui_num: number of UI channels + * @mod_rate: module clock rate that needs to be set in order to have + * a functional block. + * @map: channel map for DE variants processing YUV separately (DE33) + */ + +struct sun8i_mixer_cfg { + struct sun8i_layer_cfg lay_cfg; + int vi_num; + int ui_num; + unsigned int de_type; + unsigned long mod_rate; + unsigned int map[6]; }; struct sun8i_mixer { diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c index e65dc313c87d..f71f5a8d0427 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -190,7 +190,7 @@ static int sun8i_ui_layer_atomic_check(struct drm_plane *plane, min_scale = DRM_PLANE_NO_SCALING; max_scale = DRM_PLANE_NO_SCALING; - if (layer->mixer->cfg->scaler_mask & BIT(layer->channel)) { + if (layer->mixer->cfg->lay_cfg.scaler_mask & BIT(layer->channel)) { min_scale = SUN8I_UI_SCALER_SCALE_MIN; max_scale = SUN8I_UI_SCALER_SCALE_MAX; } diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c b/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c index 0ba1482688d7..4d06c366de7f 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c @@ -91,7 +91,7 @@ static const u32 lan2coefftab16[240] = { static u32 sun8i_ui_scaler_base(struct sun8i_mixer *mixer, int channel) { - int offset = mixer->cfg->vi_scaler_num; + int offset = mixer->cfg->lay_cfg.vi_scaler_num; if (mixer->cfg->de_type == SUN8I_MIXER_DE3) return DE3_VI_SCALER_UNIT_BASE + diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index 8eb3f167e664..0286e7322612 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -53,7 +53,7 @@ static void sun8i_vi_layer_update_attributes(struct sun8i_layer *layer, regmap_write(layer->regs, SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, layer->overlay), val); - if (mixer->cfg->de2_fcc_alpha) { + if (mixer->cfg->lay_cfg.de2_fcc_alpha) { regmap_write(layer->regs, SUN8I_MIXER_FCC_GLOBAL_ALPHA_REG, SUN8I_MIXER_FCC_GLOBAL_ALPHA(state->alpha >> 8)); @@ -152,7 +152,7 @@ static void sun8i_vi_layer_update_coord(struct sun8i_layer *layer, } /* it seems that every RGB scaler has buffer for 2048 pixels */ - scanline = subsampled ? mixer->cfg->scanline_yuv : 2048; + scanline = subsampled ? mixer->cfg->lay_cfg.scanline_yuv : 2048; if (src_w > scanline) { DRM_DEBUG_DRIVER("Using horizontal coarse scaling\n"); @@ -278,7 +278,7 @@ static int sun8i_vi_layer_atomic_check(struct drm_plane *plane, min_scale = DRM_PLANE_NO_SCALING; max_scale = DRM_PLANE_NO_SCALING; - if (layer->mixer->cfg->scaler_mask & BIT(layer->channel)) { + if (layer->mixer->cfg->lay_cfg.scaler_mask & BIT(layer->channel)) { min_scale = SUN8I_VI_SCALER_SCALE_MIN; max_scale = SUN8I_VI_SCALER_SCALE_MAX; } @@ -452,7 +452,7 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, return ERR_PTR(ret); } - if (mixer->cfg->de2_fcc_alpha || mixer->cfg->de_type >= SUN8I_MIXER_DE3) { + if (mixer->cfg->lay_cfg.de2_fcc_alpha || mixer->cfg->de_type >= SUN8I_MIXER_DE3) { ret = drm_plane_create_alpha_property(&layer->plane); if (ret) { dev_err(drm->dev, "Couldn't add alpha property\n"); From patchwork Sun Oct 12 19:23:28 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 791 Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.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 360982FCC06 for ; Sun, 12 Oct 2025 19:24:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297058; cv=none; b=hpbBOOdXbdeg9vLRTh5xu1u5OEZfNM+kkKeY8v40ouUmOhcN0VTOy7a/EDArB5KQ25xmQZcImqe5N3HNXs9ifMdSn46+C8H5vX0xyy9MDa1ITa2hWfPItUwRaaqQQlYU41cU+gWhaktOs5WYFjUm3kMW6yw6n28N9HXRC7gueYo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297058; c=relaxed/simple; bh=G50jGW8Sxy81Au3k+s1LEHbuHdK1qcThLty+Vc2Rw+Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Pag73I87hzZdxE8B08hgpmiix5aHyJbOjSBbSo3iuvDq5/DjiPQ28vgr9122giNMhtdYQFFsedhd8mvq9sMl+CRnlL0rEIERrsa28XqrUQk6k+6UbWtkXe9Cf9diQu8/YxjJKSZy7j5mZGCNKATDnGzPsuCS5c3i/wlbbE7XAgY= 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=C8/oU+Ku; arc=none smtp.client-ip=209.85.218.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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="C8/oU+Ku" Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-b3ee18913c0so549786266b.3 for ; Sun, 12 Oct 2025 12:24:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297053; x=1760901853; 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=HEur3eg0WxHhimUwBT77oBMDrloZhIqqu554ATZTSIU=; b=C8/oU+KupqHtQi0jgnn//HyG4ZyIXuKPci3mm67/z+32ocSn7/ofgbbVVkrfhLpLaE yme67FrIoXl1QD9qRhV94vULUBAPZCjVa0xJzBVg2ilPj47nFdIpnguQt2IDlFzuV3gO TVQiEm+zV+guGVCQ6CecNUGxvSj89GeCnRukl/ERx4rNwB6jgVKYgfpfJW+LXmNyKaP7 Q9Njb2BiPUGsQ390ieMRWgQ+9lusgKRj5S0IwBBzZJn/zzZ0dQbSA1kEkR22RU1NMh0o 05P/eOdKFZEJ1s0glMcjOtcixQpmciQWR2KA5YPEYgeDfFgN7fxXfRhGrPWtuttCrzY7 aPoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297053; x=1760901853; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HEur3eg0WxHhimUwBT77oBMDrloZhIqqu554ATZTSIU=; b=w0tqYhPpGCkNiLDqyG4N6SNuF7ZcGxvUQSw8ucXMuJI+rw9labAP5rPZe/JXausKRo zLS+0a/dH6BIJ73iOFiUblGAau0L7kCfX8TNoUqVwgftdl3R/vXeDP0OGZHw5yY0dWDJ PqafgWPo6b4c995vJwNEe116wWh3V+anj4DrvR92kfzq/yVsc+NdyvF1Z0925dqFn42T G5TS8e8fjNaP+LyRa2FlehKyl8Xo7HZL7Xx38KrlnDAHkuFdYGClID4jJi4Wdy/sr7o0 Fe7nHy5M1zcpaag2GYbC7Ecpu6Kz8LnSDycKc7DqmMJ7PmHbWAMe4DO5X2S9GG5aGqFj iQeQ== X-Forwarded-Encrypted: i=1; AJvYcCVF5z8lmlHPD6mH5UEOHC2W7QlSxEByMlBLjWI9GDVIEKE8wp8wbqHLeKAkviYyTSrEYPe0N70HplD94g==@lists.linux.dev X-Gm-Message-State: AOJu0YyVBQppDkslLhUrs/XmXv+E6G1oARSi5L9qQRWCla6ryfkQmJm0 NGd3pYi2WeprVvi6N4isDBd7puaHSZkMtXFvYryT9vIwBaDYpiKToh0v X-Gm-Gg: ASbGncvHr1qc9YAtCiqdXB8Wba/KcWSE7TebX6kQo4b86XW6oljGkh8GbGYcSkYKCVZ u9cGrA4RgvDfFHMM1byPrTyHqDB/I12byY+JxErvtnHBWlxaXh1YYr3ES9Hdx92lt51+KOyMS4Z BJ83cEIM9VRh7VE49e8kYmdQiGd406Rf9D2KHpDz3BCgJ703txcNW+YOOLKXTWytLRMMMwHwuW2 4Chkx9MVnOAoXBJRLUCLwtFDYkJdgXhH8NJIQkzVNr7gUXI/Bb/vTgdxegeGbWNlngf7oKQLWzJ OgbJM0ndqHoSn4ydj1L+krFcjh9BXxXHB4hbrTQfm0n3BTixlfY1AGtkAIBdhG9nJGq6bM5PH87 qehOvdHINAZiSpAmTm1gwA+L6/6IK2FwT4RHftY08YpAnIpqjj1qcz8vOT2u+j5Wvzs1EtMsPCz w8NKrFn3/kVg2v9x0Mnzow X-Google-Smtp-Source: AGHT+IHHuFPEO5bRJtmX+wIbazQ9iUtA2JClYO8n4N9bsYlSgFBEHJB1cpM0BM4TFWJSTf5vGjjwxg== X-Received: by 2002:a17:907:7251:b0:b3d:d6be:4ca5 with SMTP id a640c23a62f3a-b50a9a6cb5amr1846998566b.1.1760297052910; Sun, 12 Oct 2025 12:24:12 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.24.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:24:12 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 28/30] drm/sun4i: layer: replace mixer with layer struct Date: Sun, 12 Oct 2025 21:23:28 +0200 Message-ID: <20251012192330.6903-29-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O This allows to almost completely decouple layer code from mixer. This is important for DE33. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_csc.c | 4 ++-- drivers/gpu/drm/sun4i/sun8i_mixer.c | 6 +++-- drivers/gpu/drm/sun4i/sun8i_mixer.h | 27 ++++++++++----------- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 24 +++++++++---------- drivers/gpu/drm/sun4i/sun8i_ui_layer.h | 3 ++- drivers/gpu/drm/sun4i/sun8i_ui_scaler.c | 16 ++++++------- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 31 ++++++++++++------------- drivers/gpu/drm/sun4i/sun8i_vi_layer.h | 3 ++- drivers/gpu/drm/sun4i/sun8i_vi_scaler.c | 19 +++++++-------- 9 files changed, 66 insertions(+), 67 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_csc.c b/drivers/gpu/drm/sun4i/sun8i_csc.c index 30779db2f9b2..ce81c12f511d 100644 --- a/drivers/gpu/drm/sun4i/sun8i_csc.c +++ b/drivers/gpu/drm/sun4i/sun8i_csc.c @@ -233,14 +233,14 @@ void sun8i_csc_config(struct sun8i_layer *layer, u32 mode = sun8i_csc_get_mode(state); u32 base; - if (layer->mixer->cfg->de_type == SUN8I_MIXER_DE3) { + if (layer->cfg->de_type == SUN8I_MIXER_DE3) { sun8i_de3_ccsc_setup(layer->regs, layer->channel, mode, state->color_encoding, state->color_range); return; } - base = ccsc_base[layer->mixer->cfg->lay_cfg.ccsc][layer->channel]; + base = ccsc_base[layer->cfg->ccsc][layer->channel]; sun8i_csc_setup(layer->regs, base, mode, state->color_encoding, diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c index a01eccfca3a9..10e40ec9a67a 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -338,7 +338,8 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, layer = sun8i_vi_layer_init_one(drm, mixer, type, mixer->engine.regs, i, - phy_index, plane_cnt); + phy_index, plane_cnt, + &mixer->cfg->lay_cfg); if (IS_ERR(layer)) { dev_err(drm->dev, "Couldn't initialize overlay plane\n"); @@ -363,7 +364,8 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, layer = sun8i_ui_layer_init_one(drm, mixer, type, mixer->engine.regs, index, - phy_index, plane_cnt); + phy_index, plane_cnt, + &mixer->cfg->lay_cfg); if (IS_ERR(layer)) { dev_err(drm->dev, "Couldn't initialize %s plane\n", i ? "overlay" : "primary"); diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.h b/drivers/gpu/drm/sun4i/sun8i_mixer.h index 8629e21f9cf6..52d1b40ab71e 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.h +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.h @@ -224,13 +224,14 @@ enum { }; struct sun8i_layer { - struct drm_plane plane; - struct sun8i_mixer *mixer; - int type; - int index; - int channel; - int overlay; - struct regmap *regs; + struct drm_plane plane; + struct sun8i_mixer *mixer; + int type; + int index; + int channel; + int overlay; + struct regmap *regs; + const struct sun8i_layer_cfg *cfg; }; static inline struct sun8i_layer * @@ -259,14 +260,14 @@ sun8i_blender_regmap(struct sun8i_mixer *mixer) } static inline u32 -sun8i_channel_base(struct sun8i_mixer *mixer, int channel) +sun8i_channel_base(struct sun8i_layer *layer) { - if (mixer->cfg->de_type == SUN8I_MIXER_DE33) - return DE33_CH_BASE + channel * DE33_CH_SIZE; - else if (mixer->cfg->de_type == SUN8I_MIXER_DE3) - return DE3_CH_BASE + channel * DE3_CH_SIZE; + if (layer->cfg->de_type == SUN8I_MIXER_DE33) + return DE33_CH_BASE + layer->channel * DE33_CH_SIZE; + else if (layer->cfg->de_type == SUN8I_MIXER_DE3) + return DE3_CH_BASE + layer->channel * DE3_CH_SIZE; else - return DE2_CH_BASE + channel * DE2_CH_SIZE; + return DE2_CH_BASE + layer->channel * DE2_CH_SIZE; } int sun8i_mixer_drm_format_to_hw(u32 format, u32 *hw_format); diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c index f71f5a8d0427..dc4298590024 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -27,10 +27,9 @@ static void sun8i_ui_layer_disable(struct sun8i_layer *layer) { - struct sun8i_mixer *mixer = layer->mixer; - u32 ch_base = sun8i_channel_base(mixer, layer->channel); + u32 ch_base = sun8i_channel_base(layer); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, layer->overlay), 0); } @@ -38,11 +37,10 @@ static void sun8i_ui_layer_update_attributes(struct sun8i_layer *layer, struct drm_plane *plane) { struct drm_plane_state *state = plane->state; - struct sun8i_mixer *mixer = layer->mixer; const struct drm_format_info *fmt; u32 val, ch_base, hw_fmt; - ch_base = sun8i_channel_base(mixer, layer->channel); + ch_base = sun8i_channel_base(layer); fmt = state->fb->format; sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); @@ -61,7 +59,6 @@ static void sun8i_ui_layer_update_coord(struct sun8i_layer *layer, struct drm_plane *plane) { struct drm_plane_state *state = plane->state; - struct sun8i_mixer *mixer = layer->mixer; u32 src_w, src_h, dst_w, dst_h; u32 outsize, insize; u32 hphase, vphase; @@ -70,7 +67,7 @@ static void sun8i_ui_layer_update_coord(struct sun8i_layer *layer, DRM_DEBUG_DRIVER("Updating UI channel %d overlay %d\n", layer->channel, layer->overlay); - ch_base = sun8i_channel_base(mixer, layer->channel); + ch_base = sun8i_channel_base(layer); src_w = drm_rect_width(&state->src) >> 16; src_h = drm_rect_height(&state->src) >> 16; @@ -102,7 +99,7 @@ static void sun8i_ui_layer_update_coord(struct sun8i_layer *layer, hscale = state->src_w / state->crtc_w; vscale = state->src_h / state->crtc_h; - if (mixer->cfg->de_type == SUN8I_MIXER_DE33) { + if (layer->cfg->de_type == SUN8I_MIXER_DE33) { sun8i_vi_scaler_setup(layer, src_w, src_h, dst_w, dst_h, hscale, vscale, hphase, vphase, state->fb->format); @@ -114,7 +111,7 @@ static void sun8i_ui_layer_update_coord(struct sun8i_layer *layer, } } else { DRM_DEBUG_DRIVER("HW scaling is not needed\n"); - if (mixer->cfg->de_type == SUN8I_MIXER_DE33) + if (layer->cfg->de_type == SUN8I_MIXER_DE33) sun8i_vi_scaler_enable(layer, false); else sun8i_ui_scaler_enable(layer, false); @@ -125,14 +122,13 @@ static void sun8i_ui_layer_update_buffer(struct sun8i_layer *layer, struct drm_plane *plane) { struct drm_plane_state *state = plane->state; - struct sun8i_mixer *mixer = layer->mixer; struct drm_framebuffer *fb = state->fb; struct drm_gem_dma_object *gem; dma_addr_t dma_addr; u32 ch_base; int bpp; - ch_base = sun8i_channel_base(mixer, layer->channel); + ch_base = sun8i_channel_base(layer); /* Get the physical address of the buffer in memory */ gem = drm_fb_dma_get_gem_obj(fb, 0); @@ -190,7 +186,7 @@ static int sun8i_ui_layer_atomic_check(struct drm_plane *plane, min_scale = DRM_PLANE_NO_SCALING; max_scale = DRM_PLANE_NO_SCALING; - if (layer->mixer->cfg->lay_cfg.scaler_mask & BIT(layer->channel)) { + if (layer->cfg->scaler_mask & BIT(layer->channel)) { min_scale = SUN8I_UI_SCALER_SCALE_MIN; max_scale = SUN8I_UI_SCALER_SCALE_MAX; } @@ -266,7 +262,8 @@ struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, enum drm_plane_type type, struct regmap *regs, int index, int phy_index, - int plane_cnt) + int plane_cnt, + const struct sun8i_layer_cfg *cfg) { struct sun8i_layer *layer; int ret; @@ -281,6 +278,7 @@ struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, layer->channel = phy_index; layer->overlay = 0; layer->regs = regs; + layer->cfg = cfg; /* possible crtcs are set later */ ret = drm_universal_plane_init(drm, &layer->plane, 0, diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.h b/drivers/gpu/drm/sun4i/sun8i_ui_layer.h index 9383c3364df3..c357b39999ff 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.h +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.h @@ -54,5 +54,6 @@ struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, enum drm_plane_type type, struct regmap *regs, int index, int phy_index, - int plane_cnt); + int plane_cnt, + const struct sun8i_layer_cfg *cfg); #endif /* _SUN8I_UI_LAYER_H_ */ diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c b/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c index 4d06c366de7f..a178da8f532a 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c @@ -89,18 +89,18 @@ static const u32 lan2coefftab16[240] = { 0x0b1c1603, 0x0d1c1502, 0x0e1d1401, 0x0f1d1301, }; -static u32 sun8i_ui_scaler_base(struct sun8i_mixer *mixer, int channel) +static u32 sun8i_ui_scaler_base(struct sun8i_layer *layer) { - int offset = mixer->cfg->lay_cfg.vi_scaler_num; + int offset = layer->cfg->vi_scaler_num; - if (mixer->cfg->de_type == SUN8I_MIXER_DE3) + if (layer->cfg->de_type == SUN8I_MIXER_DE3) return DE3_VI_SCALER_UNIT_BASE + DE3_VI_SCALER_UNIT_SIZE * offset + - DE3_UI_SCALER_UNIT_SIZE * (channel - offset); + DE3_UI_SCALER_UNIT_SIZE * (layer->channel - offset); else return DE2_VI_SCALER_UNIT_BASE + DE2_VI_SCALER_UNIT_SIZE * offset + - DE2_UI_SCALER_UNIT_SIZE * (channel - offset); + DE2_UI_SCALER_UNIT_SIZE * (layer->channel - offset); } static int sun8i_ui_scaler_coef_index(unsigned int step) @@ -129,10 +129,9 @@ static int sun8i_ui_scaler_coef_index(unsigned int step) void sun8i_ui_scaler_enable(struct sun8i_layer *layer, bool enable) { - struct sun8i_mixer *mixer = layer->mixer; u32 val, base; - base = sun8i_ui_scaler_base(mixer, layer->channel); + base = sun8i_ui_scaler_base(layer); if (enable) val = SUN8I_SCALER_GSU_CTRL_EN | @@ -147,12 +146,11 @@ void sun8i_ui_scaler_setup(struct sun8i_layer *layer, u32 src_w, u32 src_h, u32 dst_w, u32 dst_h, u32 hscale, u32 vscale, u32 hphase, u32 vphase) { - struct sun8i_mixer *mixer = layer->mixer; u32 insize, outsize; int i, offset; u32 base; - base = sun8i_ui_scaler_base(mixer, layer->channel); + base = sun8i_ui_scaler_base(layer); hphase <<= SUN8I_UI_SCALER_PHASE_FRAC - 16; vphase <<= SUN8I_UI_SCALER_PHASE_FRAC - 16; diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index 0286e7322612..afe38ea03beb 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -20,10 +20,9 @@ static void sun8i_vi_layer_disable(struct sun8i_layer *layer) { - struct sun8i_mixer *mixer = layer->mixer; - u32 ch_base = sun8i_channel_base(mixer, layer->channel); + u32 ch_base = sun8i_channel_base(layer); - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, layer->overlay), 0); } @@ -31,11 +30,10 @@ static void sun8i_vi_layer_update_attributes(struct sun8i_layer *layer, struct drm_plane *plane) { struct drm_plane_state *state = plane->state; - struct sun8i_mixer *mixer = layer->mixer; const struct drm_format_info *fmt; u32 val, ch_base, hw_fmt; - ch_base = sun8i_channel_base(mixer, layer->channel); + ch_base = sun8i_channel_base(layer); fmt = state->fb->format; sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); @@ -43,7 +41,7 @@ static void sun8i_vi_layer_update_attributes(struct sun8i_layer *layer, if (!fmt->is_yuv) val |= SUN8I_MIXER_CHAN_VI_LAYER_ATTR_RGB_MODE; val |= SUN8I_MIXER_CHAN_VI_LAYER_ATTR_EN; - if (mixer->cfg->de_type >= SUN8I_MIXER_DE3) { + if (layer->cfg->de_type >= SUN8I_MIXER_DE3) { val |= SUN50I_MIXER_CHAN_VI_LAYER_ATTR_ALPHA(state->alpha >> 8); val |= (state->alpha == DRM_BLEND_ALPHA_OPAQUE) ? SUN50I_MIXER_CHAN_VI_LAYER_ATTR_ALPHA_MODE_PIXEL : @@ -53,7 +51,7 @@ static void sun8i_vi_layer_update_attributes(struct sun8i_layer *layer, regmap_write(layer->regs, SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, layer->overlay), val); - if (mixer->cfg->lay_cfg.de2_fcc_alpha) { + if (layer->cfg->de2_fcc_alpha) { regmap_write(layer->regs, SUN8I_MIXER_FCC_GLOBAL_ALPHA_REG, SUN8I_MIXER_FCC_GLOBAL_ALPHA(state->alpha >> 8)); @@ -77,7 +75,7 @@ static void sun8i_vi_layer_update_coord(struct sun8i_layer *layer, DRM_DEBUG_DRIVER("Updating VI channel %d overlay %d\n", layer->channel, layer->overlay); - ch_base = sun8i_channel_base(mixer, layer->channel); + ch_base = sun8i_channel_base(layer); src_w = drm_rect_width(&state->src) >> 16; src_h = drm_rect_height(&state->src) >> 16; @@ -152,7 +150,7 @@ static void sun8i_vi_layer_update_coord(struct sun8i_layer *layer, } /* it seems that every RGB scaler has buffer for 2048 pixels */ - scanline = subsampled ? mixer->cfg->lay_cfg.scanline_yuv : 2048; + scanline = subsampled ? layer->cfg->scanline_yuv : 2048; if (src_w > scanline) { DRM_DEBUG_DRIVER("Using horizontal coarse scaling\n"); @@ -194,7 +192,6 @@ static void sun8i_vi_layer_update_buffer(struct sun8i_layer *layer, struct drm_plane *plane) { struct drm_plane_state *state = plane->state; - struct sun8i_mixer *mixer = layer->mixer; struct drm_framebuffer *fb = state->fb; const struct drm_format_info *format = fb->format; struct drm_gem_dma_object *gem; @@ -203,7 +200,7 @@ static void sun8i_vi_layer_update_buffer(struct sun8i_layer *layer, u32 ch_base; int i; - ch_base = sun8i_channel_base(mixer, layer->channel); + ch_base = sun8i_channel_base(layer); /* Adjust x and y to be dividable by subsampling factor */ src_x = (state->src.x1 >> 16) & ~(format->hsub - 1); @@ -278,7 +275,7 @@ static int sun8i_vi_layer_atomic_check(struct drm_plane *plane, min_scale = DRM_PLANE_NO_SCALING; max_scale = DRM_PLANE_NO_SCALING; - if (layer->mixer->cfg->lay_cfg.scaler_mask & BIT(layer->channel)) { + if (layer->cfg->scaler_mask & BIT(layer->channel)) { min_scale = SUN8I_VI_SCALER_SCALE_MIN; max_scale = SUN8I_VI_SCALER_SCALE_MAX; } @@ -414,7 +411,8 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, enum drm_plane_type type, struct regmap *regs, int index, int phy_index, - int plane_cnt) + int plane_cnt, + const struct sun8i_layer_cfg *cfg) { u32 supported_encodings, supported_ranges; unsigned int format_count; @@ -432,8 +430,9 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, layer->channel = phy_index; layer->overlay = 0; layer->regs = regs; + layer->cfg = cfg; - if (mixer->cfg->de_type >= SUN8I_MIXER_DE3) { + if (layer->cfg->de_type >= SUN8I_MIXER_DE3) { formats = sun8i_vi_layer_de3_formats; format_count = ARRAY_SIZE(sun8i_vi_layer_de3_formats); } else { @@ -452,7 +451,7 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, return ERR_PTR(ret); } - if (mixer->cfg->lay_cfg.de2_fcc_alpha || mixer->cfg->de_type >= SUN8I_MIXER_DE3) { + if (layer->cfg->de2_fcc_alpha || layer->cfg->de_type >= SUN8I_MIXER_DE3) { ret = drm_plane_create_alpha_property(&layer->plane); if (ret) { dev_err(drm->dev, "Couldn't add alpha property\n"); @@ -469,7 +468,7 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, supported_encodings = BIT(DRM_COLOR_YCBCR_BT601) | BIT(DRM_COLOR_YCBCR_BT709); - if (mixer->cfg->de_type >= SUN8I_MIXER_DE3) + if (layer->cfg->de_type >= SUN8I_MIXER_DE3) supported_encodings |= BIT(DRM_COLOR_YCBCR_BT2020); supported_ranges = BIT(DRM_COLOR_YCBCR_LIMITED_RANGE) | diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.h b/drivers/gpu/drm/sun4i/sun8i_vi_layer.h index 89d0c32e63cf..6ec68baa2409 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.h +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.h @@ -59,5 +59,6 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, enum drm_plane_type type, struct regmap *regs, int index, int phy_index, - int plane_cnt); + int plane_cnt, + const struct sun8i_layer_cfg *cfg); #endif /* _SUN8I_VI_LAYER_H_ */ diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_scaler.c b/drivers/gpu/drm/sun4i/sun8i_vi_scaler.c index fe0bb1de6f08..3dec4eeb1ba2 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_scaler.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_scaler.c @@ -833,17 +833,17 @@ static const u32 bicubic4coefftab32[480] = { 0x1012110d, 0x1012110d, 0x1013110c, 0x1013110c, }; -static u32 sun8i_vi_scaler_base(struct sun8i_mixer *mixer, int channel) +static u32 sun8i_vi_scaler_base(struct sun8i_layer *layer) { - if (mixer->cfg->de_type == SUN8I_MIXER_DE33) + if (layer->cfg->de_type == SUN8I_MIXER_DE33) return DE33_VI_SCALER_UNIT_BASE + - DE33_CH_SIZE * channel; - else if (mixer->cfg->de_type == SUN8I_MIXER_DE3) + DE33_CH_SIZE * layer->channel; + else if (layer->cfg->de_type == SUN8I_MIXER_DE3) return DE3_VI_SCALER_UNIT_BASE + - DE3_VI_SCALER_UNIT_SIZE * channel; + DE3_VI_SCALER_UNIT_SIZE * layer->channel; else return DE2_VI_SCALER_UNIT_BASE + - DE2_VI_SCALER_UNIT_SIZE * channel; + DE2_VI_SCALER_UNIT_SIZE * layer->channel; } static int sun8i_vi_scaler_coef_index(unsigned int step) @@ -914,7 +914,7 @@ void sun8i_vi_scaler_enable(struct sun8i_layer *layer, bool enable) { u32 val, base; - base = sun8i_vi_scaler_base(layer->mixer, layer->channel); + base = sun8i_vi_scaler_base(layer); if (enable) val = SUN8I_SCALER_VSU_CTRL_EN | @@ -931,12 +931,11 @@ void sun8i_vi_scaler_setup(struct sun8i_layer *layer, u32 hscale, u32 vscale, u32 hphase, u32 vphase, const struct drm_format_info *format) { - struct sun8i_mixer *mixer = layer->mixer; u32 chphase, cvphase; u32 insize, outsize; u32 base; - base = sun8i_vi_scaler_base(mixer, layer->channel); + base = sun8i_vi_scaler_base(layer); hphase <<= SUN8I_VI_SCALER_PHASE_FRAC - 16; vphase <<= SUN8I_VI_SCALER_PHASE_FRAC - 16; @@ -960,7 +959,7 @@ void sun8i_vi_scaler_setup(struct sun8i_layer *layer, cvphase = vphase; } - if (mixer->cfg->de_type >= SUN8I_MIXER_DE3) { + if (layer->cfg->de_type >= SUN8I_MIXER_DE3) { u32 val; if (format->hsub == 1 && format->vsub == 1) From patchwork Sun Oct 12 19:23:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 792 Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.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 0A62B2FD1B3 for ; Sun, 12 Oct 2025 19:24:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297058; cv=none; b=F5QSGBigw7ZUnDEiUPpEJ+kwi+RQCwh9smZ4eYTfnhS3fGMbFsNsja8DSKc6qQLAnDhAo6bA4neLlqcK+jA9LGD0xhDLaJDimxkU4RY1dU81qsEwtLqM6Wweq4uWb9Nwc0bWW+GCwe2TX3GZgGzmYtvkZAxzIYKfOZvQ94d7frQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297058; c=relaxed/simple; bh=AKEPEVp/D5bLHzuCgLd8B8iJEurynArxX4T5wTeN/QM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Fxga/iskpCGDrd0P4mjfPZ6xHrHT2AFNkuG6UnPRbuxm0cX08w7NXWb6ggyL4YdIDWqvoNdcs6vip9gVXtB/Yg44VDEP+psLn3Ev5krGgIMp7EMagtjY9jQJ1PppHBmeQ1D8h0z6xXk9JVzQ3UcdNEti8Z0SzVVT4V6KY9xPqnk= 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=F9Hz1Swl; arc=none smtp.client-ip=209.85.218.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="F9Hz1Swl" Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-b3b3a6f4dd4so642038466b.0 for ; Sun, 12 Oct 2025 12:24:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297054; x=1760901854; 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=GN8no7TuZPEE4ZrIoWOSDqFeNHwdwABVG2L9ibzW5CM=; b=F9Hz1SwlxDUc+7+m88u95bWcGNyQ9w4/8T3eTTF6LQjpIJyq/Y7VB9EOceYOe1Kpmr 9J3Zbhl8BUQQK0NGuNos+amj7eXSBbfAmwvQTtDpSJIbm3SyWd+k55sBPCFH2PJkftrP QdWK8KjHfeb9W0vJbJrLHEyWsmTnISZwQo0Q/OolsvnNacqTr+n7Nb9yhGSLrHzrFpn7 /o+1XTlOlfHDrX10n2B6XP40rfNEZkt9cS73CdjYRQrrtFNDRLDiT8DBnmYhWN6PL2ut Vnj71Ak8mcFmzOGj3mOv1pTbvlYGAigtFWKWJdqz9W3f48CxBW/YusnMfYQ2yjLF1FZa cuaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297054; x=1760901854; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GN8no7TuZPEE4ZrIoWOSDqFeNHwdwABVG2L9ibzW5CM=; b=wrNJ7tnCLH1jgxqNQxB3UiyQQ5TY5ZmPN1rWeBOx7TULjgiONk8z2Db1sHQkogxAN0 X7uKqWM73tYOg61L3XCQCj9NI4a5wRiOUbReTuXzuiyB9tQqbIo+M3BCGheKY2s3G11S I1tOvwBuOkv7neffQeE/GFlYKWaTkWEpVI3cXYUh5sOuLqJSVnqNlGDrbBxt3bUiAvwD q6gDnG2YD78q63P+46L6KSWdwtqF+EPQF2RGXJyriFnT3AzZ7zmKaCc9zYlKudxLRGI0 E1Ph922Zpxz5Vh/taEfoGvI5amHKiiDgzu5TH026qG8pT9ORobaXi4lwP4XV84nr932Y EUvQ== X-Forwarded-Encrypted: i=1; AJvYcCUBqFi7yc7lrPkrnb425PxlwsDO0Ot0vCTpc5RV/GcTtpPFp2dExy94jj203g/h6732qgEVJFI9AxW+MQ==@lists.linux.dev X-Gm-Message-State: AOJu0Yw/OST00Y5NBCjHG102e0PeA8yol43zY29E6o5Iy4OcRcVsD9We zfQqtwchNTA6TazKIMSZd3jgM3TjaHuaGyF9eDVpVBEI3oXb8AYeMuGS X-Gm-Gg: ASbGncsjg6oRGEIKo+OOt1QgEPfEIqbSbx6pOP6iXpAx4+vD6ArMFyD1NcSHRy0BHJp 3a7ECLVKytETZxd0akKmOdS3vQBSjREqvEElrZKb/N4LxOPNSaM/dec2aHw7IwgTUm2hlqV2go9 U6DUGWWS/695zQxNE7+kaVnghCWFSl7fidFWr5QQNzeH2fBQ22u7djrw8Ux35HG7JGyk6rFdJGT v+Li+2jBdlMvXOvSSUHtC51p8NYC+uCIBbU8bvqLcwmuGsoZu4MwehEe71MJl8Vbbnuduhea65k sRVHMMHO8u0WPn2iJGRzpKNTVSBEbYfCgYZJ9vSRVfrm6Cp6mfAWqbljMDHQs0R2B7S9qlHXmC9 AskbtwgV5U12zLbt73UZUGEi7+1AYd9fwDcxT0hoKXTkEbWyAnjLHkwVWWUcE3gEHMdnMvX8R86 JCbxG2DAm8caD9tC5OC1LL X-Google-Smtp-Source: AGHT+IGliGTnpTGRawNal6hhCfPRYBSBq/r1s8fnX2W1RihxLmu9ewXMj4AGe/8If5EcaR6rduNrqg== X-Received: by 2002:a17:907:94d2:b0:afe:7b8c:a583 with SMTP id a640c23a62f3a-b50aa48cbb6mr1956645266b.13.1760297054099; Sun, 12 Oct 2025 12:24:14 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.24.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:24:13 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 29/30] drm/sun4i: vi_scaler: Find mixer from crtc Date: Sun, 12 Oct 2025 21:23:29 +0200 Message-ID: <20251012192330.6903-30-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O With "floating" planes in DE33, mixer can't be stored in layer structure anymore. Find mixer using currently bound crtc. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index afe38ea03beb..4534998af825 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -13,6 +13,7 @@ #include #include +#include "sun4i_crtc.h" #include "sun8i_csc.h" #include "sun8i_mixer.h" #include "sun8i_vi_layer.h" @@ -62,8 +63,9 @@ static void sun8i_vi_layer_update_coord(struct sun8i_layer *layer, struct drm_plane *plane) { struct drm_plane_state *state = plane->state; + struct sun4i_crtc *scrtc = drm_crtc_to_sun4i_crtc(state->crtc); + struct sun8i_mixer *mixer = engine_to_sun8i_mixer(scrtc->engine); const struct drm_format_info *format = state->fb->format; - struct sun8i_mixer *mixer = layer->mixer; u32 src_w, src_h, dst_w, dst_h; u32 outsize, insize; u32 hphase, vphase; From patchwork Sun Oct 12 19:23:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jernej Skrabec X-Patchwork-Id: 790 Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.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 66E8C2FD1DA for ; Sun, 12 Oct 2025 19:24:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297059; cv=none; b=NQFpj2VWp9ptg3xEpF8eZl5IYUvD5SdaiQ0kNWL1kz4Bj+0skn9FDoliAkliTvPrlzcTYJWPcxvrdV7rSVPpXC/C23h2iLtwVCTdF5o2JZZmH47ko4Qu+RJgmGPbqfNBN7gc6Rh0z+UIaJ0n+VemmhYlPpG9rfPTkCKRY4m3psI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297059; c=relaxed/simple; bh=ErqsMLJpxzUTMtTz2Dz7Gq5FTD1dwcKP3WwZLtDrtzE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lMK7hkbNFb2hUMdIBza35q2WjKrbZO4bRanChK4u5gTpzub0qaTkWJ3D6B6Ea2iqnhFp28Vi4LTLVXKqPW7sjat7rIWU+ugXSMX6OGYpImTIAmnqj2L95fz4n0Bz4hMmxNrdm9TgUMLzSNbVWvJyq2jqrSB2i+pVDxyEXDf2Lkk= 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=Rd6iavuX; arc=none smtp.client-ip=209.85.218.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 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Rd6iavuX" Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-b3e44f22f15so514488166b.2 for ; Sun, 12 Oct 2025 12:24:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297055; x=1760901855; 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=NRrJwhH9ddhv+15LnO8TBX702Sbu4XiFGKBFd7hqCR4=; b=Rd6iavuXwov95tlVhGVpXhSldENT/Y7uabEPfnk1+QqaNXN8Lb3kF9m8p5fY4meMm+ hGYXpHdNbCxv7FQhk7dNEaD8csHL/oAo2v8SqSHebfA9vmKoTrlovgnmQ76lrRGfIIJ0 zza5WeKST5Nu7pdUNSt4Cm6JNUpq8sUsFvadcL/b7yg7kZ3kF0wThNmcbnqPbh8hm1K6 5S1avJA/RhuWc8MfGz+6GS4PVSF9fP0WhvKp8lRn3oS8FHxdyUmkUjOH/q227xeBXnPB 0rZlvFOjbhyRwcwjA1d0CVVufu1M6NPXvmYqiDqqOGHbQhIkpYQw6n+7HRrHo0CpgHpl nU+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297055; x=1760901855; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NRrJwhH9ddhv+15LnO8TBX702Sbu4XiFGKBFd7hqCR4=; b=q/fQBgebimUvIuJ9f93RZpS3Fdv/xbBHP7TngVgQNlb9TqwipSjRxI+yO1/MYGlplC 78QwOFvexf6TSk05BVXB/b991oX+GLSoT5VdTe24QZ/NnH2bBCTYS03qTvs6whIdx0zu MjESR9zb4RELteoIePLx63Qx+9lNjIehbzn5H/xM99idcMo61XHLCoHRxsgKlSxA/CkE 0Et56q/TQlquWNuuWRGjr0/PU9XHwbr/am+eiMpt4G/citgymvfmabX4kQCLs9NAc/3D P2sIoADFJPmMezAIIp5xAwCft7eb0SQApCECi140+k/CeDf2n4jXEByilFWZSydQcgDZ jSKg== X-Forwarded-Encrypted: i=1; AJvYcCVAbPWDwvYLqPhhLZIozfftsUw+rbeeoCRgt8Acv9poHouh/henE/IPDTPbJkR2qna3Ev3y3PiNSl+BCg==@lists.linux.dev X-Gm-Message-State: AOJu0YwSewhRU4zn7YwVpxurFM+tzzz6rLhqBHwLsnTV5mb3m2KlPtIE aCmVsC6ffVAo2Xuob2odgVyYMOsIdVm+88W80R984XCtIc6UMMgzOH+N X-Gm-Gg: ASbGncsbSNno989JnZVWFx2Cfbr+tTT1a3py4xAHHnPYxt3L0C9+9rRverLrz7NPVOK YDmXi2fpByKeEpUUiDdE+rPgLJhUuKC1F7h/9Vn/Y87af8AK3LwuFQRBGuWLIMQ9OQzevlcsTkB cyqTVkik968wFy0SeXOfdr4m7ev0/lxbMyJQaWvtqQUKgeOpfP9s2/nSxsbZ3jw0/s5hp0s3+mV VOC3UX30WoMH+XAsxHj7X8tGMs7+E09Q4G+Cz3fRO0tfzHE8gkTDbxZHv2Hv6DczBB3SqP4FV59 fWRIrjzv+cksncKFpZ6CleOWAVWeEEJSadcRBGrdGoWtYnKsTksONLHSCQR/JSxpxFSUusFKODQ WAG0CauwLoyDS3DvuYjw0JBZnLL3v4kAtXlOJhGXUQPOt574qf8HaTqi04G0UNz7LUycvUyMkAv Nb5cn/rK7Gfvpwe+MTBxhV X-Google-Smtp-Source: AGHT+IHJQrrQMxeS8oZx8uyeW6QR9xFsch3rBeFPh8aSvtGAg80UGkiRC2h+N6V1nwsHDzVkAOCO0g== X-Received: by 2002:a17:906:c113:b0:b29:e717:f0b0 with SMTP id a640c23a62f3a-b50ac4d3497mr2029519966b.59.1760297055250; Sun, 12 Oct 2025 12:24:15 -0700 (PDT) Received: from jernej-laptop (178-79-73-218.dynamic.telemach.net. [178.79.73.218]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b55d67d8283sm760176466b.38.2025.10.12.12.24.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Oct 2025 12:24:14 -0700 (PDT) From: Jernej Skrabec To: mripard@kernel.org, wens@csie.org Cc: maarten.lankhorst@linux.intel.com, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, samuel@sholland.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 30/30] drm/sun4i: Nuke mixer pointer from layer code Date: Sun, 12 Oct 2025 21:23:30 +0200 Message-ID: <20251012192330.6903-31-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251012192330.6903-1-jernej.skrabec@gmail.com> References: <20251012192330.6903-1-jernej.skrabec@gmail.com> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Status: O It's not used anymore, so remove it. This allows trully independent layer state from mixer. Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_mixer.c | 12 +++++------- drivers/gpu/drm/sun4i/sun8i_mixer.h | 1 - drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 2 -- drivers/gpu/drm/sun4i/sun8i_ui_layer.h | 1 - drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 2 -- drivers/gpu/drm/sun4i/sun8i_vi_layer.h | 1 - 6 files changed, 5 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c index 10e40ec9a67a..5de68cbb6060 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -268,7 +268,7 @@ static void sun8i_mixer_commit(struct sunxi_engine *engine, int w, h, x, y, zpos; bool enable; - if (!(plane->possible_crtcs & drm_crtc_mask(crtc)) || layer->mixer != mixer) + if (!(plane->possible_crtcs & drm_crtc_mask(crtc))) continue; plane_state = drm_atomic_get_new_plane_state(state, plane); @@ -336,9 +336,8 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, if (mixer->cfg->de_type == SUN8I_MIXER_DE33) phy_index = mixer->cfg->map[i]; - layer = sun8i_vi_layer_init_one(drm, mixer, type, - mixer->engine.regs, i, - phy_index, plane_cnt, + layer = sun8i_vi_layer_init_one(drm, type, mixer->engine.regs, + i, phy_index, plane_cnt, &mixer->cfg->lay_cfg); if (IS_ERR(layer)) { dev_err(drm->dev, @@ -362,9 +361,8 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, if (mixer->cfg->de_type == SUN8I_MIXER_DE33) phy_index = mixer->cfg->map[index]; - layer = sun8i_ui_layer_init_one(drm, mixer, type, - mixer->engine.regs, index, - phy_index, plane_cnt, + layer = sun8i_ui_layer_init_one(drm, type, mixer->engine.regs, + index, phy_index, plane_cnt, &mixer->cfg->lay_cfg); if (IS_ERR(layer)) { dev_err(drm->dev, "Couldn't initialize %s plane\n", diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.h b/drivers/gpu/drm/sun4i/sun8i_mixer.h index 52d1b40ab71e..6b59c52ba4d5 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.h +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.h @@ -225,7 +225,6 @@ enum { struct sun8i_layer { struct drm_plane plane; - struct sun8i_mixer *mixer; int type; int index; int channel; diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c index dc4298590024..185e4ae8a11a 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -258,7 +258,6 @@ static const uint64_t sun8i_layer_modifiers[] = { }; struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, - struct sun8i_mixer *mixer, enum drm_plane_type type, struct regmap *regs, int index, int phy_index, @@ -272,7 +271,6 @@ struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, if (!layer) return ERR_PTR(-ENOMEM); - layer->mixer = mixer; layer->type = SUN8I_LAYER_TYPE_UI; layer->index = index; layer->channel = phy_index; diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.h b/drivers/gpu/drm/sun4i/sun8i_ui_layer.h index c357b39999ff..1581ffc6d4e5 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.h +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.h @@ -50,7 +50,6 @@ struct sun8i_mixer; struct sun8i_layer; struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm, - struct sun8i_mixer *mixer, enum drm_plane_type type, struct regmap *regs, int index, int phy_index, diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index 4534998af825..40008c38003d 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -409,7 +409,6 @@ static const uint64_t sun8i_layer_modifiers[] = { }; struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, - struct sun8i_mixer *mixer, enum drm_plane_type type, struct regmap *regs, int index, int phy_index, @@ -426,7 +425,6 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, if (!layer) return ERR_PTR(-ENOMEM); - layer->mixer = mixer; layer->type = SUN8I_LAYER_TYPE_VI; layer->index = index; layer->channel = phy_index; diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.h b/drivers/gpu/drm/sun4i/sun8i_vi_layer.h index 6ec68baa2409..29cc5573691f 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.h +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.h @@ -55,7 +55,6 @@ struct sun8i_mixer; struct sun8i_layer; struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm, - struct sun8i_mixer *mixer, enum drm_plane_type type, struct regmap *regs, int index, int phy_index,