From nobody Fri Dec 19 13:49:44 2025 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 EE9D42EBBA3 for ; Sun, 12 Oct 2025 19:23:42 +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=1760297024; cv=none; b=OsD/Irp6y41EmFdkJ3KxHrhIZMN9UoS2bPKwF+dwuAOQxwvcP1eyD0Nl58zfm3qTiCBqbZhO1r67uO5bTOqarfsKpW8kgAS4uR6KmwHbbMBVlRHqA3tbpv9pfxcV00yJzuqwZ/3VOEs7/5IvP3XOQYdOzaJrbXvL6foeyrXY5Ro= 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=PumKXp3Q; 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="PumKXp3Q" Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-b3dbf11fa9eso592121266b.0 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ftu6zu8GSme2+XDOtZSOO4FVxV/p+JAxG+4qy5/uDJg=; b=PumKXp3QOB/s/qZk7Myq7LW5C/77iBD6xovqq7vW3yD1odgHyO2n/EBjd8UevZoyj2 q/xBJPY6oKrSH/2+To1uUegqPo/jElit8EZ2s7mChfbtBUaSfl/YeXSbTDSTCKU08K2h UbuEHCOiIaRqNMU2VZkh7cienZHBPJzaJu8HORNc/ceE5viwMe9y9tpBWkz47WbekoLN dbC6Rxya4FqQcNFWNBuBXImBUok5+CyO/1gA+G5x+exMGLV1Sc2lhp6nevjXoT9hCUrQ lWhEVz2TeqUTYoVdBOFXPmR+oxw6QPAUDPpyFe98foowJd5odJ99CJSCNaGk0XuxSzb6 zZ8w== 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=pxooDhK1j7Cr9sUrZR/ygECmVeOCvYIHBgjUk7lYLKNRe78OnWVPwQBscElnhLDZ3M Pvm5nvXZx1SJQzZBnQk/T2AOuELic6L73a+JgrMLjh/bAqTt8MIlGzYNz0xImvLgr27t hG8pxdi8o+r5Hsph9Oo6cTCawrFZI6ZCAFUyuckvUfHRsMaBoZg069gKZ2lFCGQ6Hx0q O1l7WsRkckaK0yn+HUbhzps1iU9SAC1NjVwaGf4YfMF9yNkeY77vgbQ/jDAQbmf5cq7f MqA+cYtmGDBwzaGla/OuPBq4jK1Dtf4fAAxLYUE/7kogHeeBxSNCimd++BqoWyV40sjp 4/mg== X-Forwarded-Encrypted: i=1; AJvYcCWeZOHTUMHKZk1Ara+0K5V0ltQFReyG2tEExb/OGI7bJVhlD0mvjWbxoDFLg4bEQuq8Scz2Cc2zou9Zr6A=@vger.kernel.org X-Gm-Message-State: AOJu0Yx+UlV+06xcAolu4YxHGl/4JhE1ErWqDhVaB7XYgS0nN/ufK1DE /Mjh3TEyxB8PruqUSHcQhkmhrqBfUliGN0anAL+KZO/sr0xxLMLTLQq0 X-Gm-Gg: ASbGncsEqpSQ46ldl/bOSAqHTKF3pFYlrMIAPKw6q+tiac07Pje5PicLGvZXUysa4D+ pkG6eyCi2hHPmuhIKOOFfjvK2sX23q3buifZKb47SKgZqiVb74aOioxyUQlds05SODCp52JjJgD ar55frLOsrQ41DlheokH4Igizpfs8zg22n0uOJwjLGBu+9b1yU+olBucggiuF8k40F0cUezeR7O Y/kqC/16mJB5nvz1HQiAp4uNCT7ZlgXeI8YeqbojCexMPu6yqqPeGfR2Fj7pDifwoh5y8QkjgcK SepRbt1dR2fQSXEP7cn/Lm6+Bs41ccJImp2xKStPok1SIGu6WZvlXeNf7ySus/algsIbFWMI4ee GwPIM7/LCK3q66anjloiqrYP1N0yhFoD+G/mZW119+Qgb7uPqTJ4PcOg5ic1WLQrqrjgE3hN0Wc TUwV+W4lAoOnS0pl7NTWmtOW9psqNvhvo= 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Properly define macros. Till now raw numbers and inappropriate macro was used. Signed-off-by: Jernej Skrabec Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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/su= n8i_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 =20 +#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 =3D=3D 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 =3D=3D SUN8I_MIXER_DE3) return DE3_CH_BASE + channel * DE3_CH_SIZE; else --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 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 ADA9B2EF667 for ; Sun, 12 Oct 2025 19:23:43 +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=1760297025; cv=none; b=n1Xj83Yt+3FpqRXZ0KH8Il4C5Ilz8561dTSsugKDiHX1W/mNiSezMeJ1N50r6Jb38uNQfupqqU25S/1XYdl4kn/0B2gxIhQg5SaT6XbpJp0FgQLHwvUs/FrRLeu2DbpvjWFJWSt97kVjg2W7YBNHhO6+5RyOQMR+fqSTbZRUPW4= 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=bVHmPDsE; 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="bVHmPDsE" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-b3d80891c6cso703896566b.1 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=O9pllFFRdLbfJa3CzMw9MDenjUagmZAUwkBtCn+ZhPI=; b=bVHmPDsEaBlSVU5vTwAsbDT/X7nROLvzvm/iiLSMIqxApLp+Lg09cAZwdvdoXl0ui4 heKA/XHGnX8EelIRbK6ioH/5k23kw6jgIGZXXuP/ZUS9F3Xn4QTT6dr4yeGG/h8kQA3s mNnos8lHCg5xUc2vPxzwOgrUhKS6LpPSD58g2llsYAYzaUPuS6z7HNqJq0C4tDZ67CCp OWw0LXV+jeb6nIakfxItYgu1xtO1DfmeOdrO+PtYzd8FrXPV7C+MtzKf8pL6tXKB90El Yn2rqLlyfCQqb+fpScIZZbucVeWJm/Hn9HqMehyXU3Rom8xQWAbTAaVrB/29ZZoQsR/3 aLKQ== 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=B7FQYu+FzllkmS1zD31Q36gdLNRfqtCbaqPajmxW2cwlJRuK6ZJzs9kMWrLgjRggea 8STCJS0qI0dVjQUPgFT1Laqrj3A8lIw1GZAWKrdKrhDotKDP73Obz/6hGzKsPUEXV3qy MvhOPCxZYzYy71khbzO/927gR0qd3WGuvHpJAV7ieGDercXaLzU10YBQsjMv7bQPTGIl B9w5YCFbk3AeIx7E8ZKsDxmMyqqQJrH9d4RdQjQawWwOvdQg2B5Akg2hd10YNyawQp/d ZGdFI54nZfRJg9mm6Ixu5zzUuZbCDvzBeFrUdrt+k5MsCFcOV6b9y9W+YIDDkwyinvmh agfQ== X-Forwarded-Encrypted: i=1; AJvYcCWXychhccxbZNgTLQahr80N4/zRe2gYmLpGb4wN/CWjzry5/3/tIql9IQvlEc+Pm67IP+G58pFbsqhsARE=@vger.kernel.org X-Gm-Message-State: AOJu0YxAks4vkPLp4nd1ir2iT7tq7kF7ab1bq3/10Qi6/cTKkeyhHIlu wdjEwlIUiJX1QQG2qpj/ZcxUw53qimHRkyln7mKNMNQp6qO/uJ9w3oK0 X-Gm-Gg: ASbGnctJmoNOQd5lNZru9iWAQ7SwIcHxbhjAJd4WLMFOaMsAJSORF8NYY1TwzY5mbCX i9HEXZTE7iopxLvzrvyJp3MW67ExCBj44/DC9xT40wtSldOgw6RkII6vXAHj9S4M2jubNeVIn5L NKwvA0awNNFLuzFptK+6DSy5+vtMB+xgMLVfuZ6BNk5xjxEzfUi/GG7HK5f4aC7HnP4AVDTJPjv +Iw3zY7bQM1zDqNh0ZcRaLxVGc02PwwzbawxPXcWw2Xuiq7WmARakj6IIbN+Z2recTE8AhA5aky rNoAFNatTznn4YAtNHhtW5p42zwois3QAo4kIF9fwThB+6kI4AWa/WnX7qgEGRwFig1izak50P1 THdsB7APAI8Ct9xrcUqLCBPhj3Js8h+FsOM3/1JYc9g2QouL5wFXV4sI9ErwXDZ+Rcqk57JNLgc +Mel19lkuT346PZfnchvRL 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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/su= n8i_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_c= fg =3D { }; =20 static const struct sun8i_mixer_cfg sun50i_h6_mixer0_cfg =3D { - .ccsc =3D CCSC_MIXER0_LAYOUT, .de_type =3D SUN8I_MIXER_DE3, .mod_rate =3D 600000000, .scaler_mask =3D 0xf, @@ -800,7 +799,6 @@ static const struct sun8i_mixer_cfg sun50i_h6_mixer0_cf= g =3D { }; =20 static const struct sun8i_mixer_cfg sun50i_h616_mixer0_cfg =3D { - .ccsc =3D CCSC_MIXER0_LAYOUT, .de_type =3D SUN8I_MIXER_DE33, .mod_rate =3D 600000000, .scaler_mask =3D 0xf, --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 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 1A8CF2F1FDE 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=MLrtrJgAI/d7yImDwch5kWswatBHCwoMtLhZ9BNL4xfSVDpr/79qfJXs1jD7aOrQJcy4HNiUD4gQPya1imUcDuvdH45Zz5wT6MNS1QzQ1yAvG6Bbp8F7mP1d2bR8B/T0RCqff6SFDY95GvDS5tRMOPASGRlrPXbW+0LvEmAXulI= 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=UnuvXYvo; 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="UnuvXYvo" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-b54f55a290cso469274266b.2 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=b/RwR7PkAt08sGqCqdeSYXHmOvdiEO3Sen57EH3VrWU=; b=UnuvXYvom0pJjdqxwvZHen/BkFZs9m9bfn3juK/L4R7sucVPPb8fMkgvbTUYXqcB+U LR13s2h6j9LBKSodjs/KvRE69EJqrxToz5o8Xdgsyv4kw4+82Az9hYHu4E0dlPG4Encf X8QaSeb5PYJpVrfUN/jCobZJh61FBHA+wGSVnQ1HYBQc37hCqt40hqnuL74MmCxyuhK3 drtPOqAgg59KU0F441InNhs3vOeIhAZuw2BZathsD+fI6HCi/wPVbM+UzZudReyE5TkW jGlhTMgjMwpBvAh0Qgvyga3Cwmrm90JoLDL/LWpOPLUaaZNK+VWAU7yVRLYncSwjm7sL gZww== 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=KA+8fXxnQqp4dDZOG0mcHSy7FaDRfYiwxGqf9e/aCjo9pYwBtDf06O6UnhIJ0GICQW 6Jx/XSEtrOVBK1otLLSLDExZsatf0KFhd0HQllnSCWw/kLSk7cbz0Z+9bx1tQtPsahEF k+9atv/eBlcfU3QfUDIANpXRJU0G8NH89/p2jyJKNwNHjRbs/XBQDGtMkkzrVJU4GjbI l+edZ/eaiww+1B2gvTmMu6JsYaPve4sPcztAF65ECqT78tBzrK5Zq2a2BI3r/U1lOJ+h gS8QlFviOvf/52RT7GZxK3Aj8XCIcF/+tu8ggn1wft7nLTgpS4TK6PDESbuuqd+IsO5P JE4A== X-Forwarded-Encrypted: i=1; AJvYcCWwYSCN8lXFfHoz8yWFr8G8LFYW3WLqWRQt6QA2F+DutPQy5bICfNvhMpI09Ta7+vCIz8HOjTn96VgZxVI=@vger.kernel.org X-Gm-Message-State: AOJu0YxqbYEs6d5YY2Ak/2VkG4JsqN/DznSk8T3UNqOH8GUZoXOAlIHz 7OlFvl57X5QOTeezMN4vNltOqKSQPjg0NB6JMtOGneVKdWP6UPlts50g X-Gm-Gg: ASbGncul7AGIQPrD2iujAUN8heTohyw2Y0ReoyJPIrzupJuLwk8qAVceh8r9EQECC6e j0vxYTHBrLe7XByeMxqw21BKAxel4AI7+AgtltkYz5Qtka8zl12iFl3hCcoey0oZ/Tl88k55S/5 vYxIPPXV1JCOe/HovdKpTvmpcGeRGsZF3ZqBaSAIf78YBqKkbt0MvRuPPbo7BmIi0CBsIkXZxg+ 54KwC4wEElcflWIs8yT4oWokY0MKJcNvKKFCs9EV1AncAln5hQFYwZouxgJPFHt9Kz6JQq+GJ12 9/QN0X+6bhhkOuvFLeQPEbWR/uZw5DQFufWWWWuVXxrUxS8Cycz6Xe7mCFGpbgARIfDR0fkHVSR 8FKTZbykElhbXbhAwG4fo8oQ2wJq/7KdfW+x479xBdzVlKToYhAMaeyLOj0Gay0JfXQa6QQRCIS 6jORSgy5Qi1NqEAIWMFmG/PxJEWiVb5FI= 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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); =20 + layer->mixer =3D mixer; + layer->type =3D SUN8I_LAYER_TYPE_UI; + layer->channel =3D channel; + layer->overlay =3D 0; + if (index =3D=3D 0) type =3D DRM_PLANE_TYPE_PRIMARY; =20 @@ -334,10 +339,6 @@ struct sun8i_layer *sun8i_ui_layer_init_one(struct drm= _device *drm, } =20 drm_plane_helper_add(&layer->plane, &sun8i_ui_layer_helper_funcs); - layer->mixer =3D mixer; - layer->type =3D SUN8I_LAYER_TYPE_UI; - layer->channel =3D channel; - layer->overlay =3D 0; =20 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); =20 + layer->mixer =3D mixer; + layer->type =3D SUN8I_LAYER_TYPE_VI; + layer->channel =3D index; + layer->overlay =3D 0; + if (mixer->cfg->de_type >=3D SUN8I_MIXER_DE3) { formats =3D sun8i_vi_layer_de3_formats; format_count =3D ARRAY_SIZE(sun8i_vi_layer_de3_formats); @@ -543,10 +548,6 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm= _device *drm, } =20 drm_plane_helper_add(&layer->plane, &sun8i_vi_layer_helper_funcs); - layer->mixer =3D mixer; - layer->type =3D SUN8I_LAYER_TYPE_VI; - layer->channel =3D index; - layer->overlay =3D 0; =20 return layer; } --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (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 E50FD2F25FB for ; Sun, 12 Oct 2025 19:23:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297027; cv=none; b=i+5jYe4RYdx+QnPr3mIvMjcxAEZKg605OjT/ZFZj3bwhjxu6WiqrBCVfzczAzRTCD0NLFRxNptOskKEaCbPyrMOdYsBNxDoYIiozEW9S7flMJgk7Z1UAmD0B7cnj3uG/cdBGTnpDuZZPzFpRzDkq8KB/hl+oh/oVutaS0QH7vVE= 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=mzg2CY/A; arc=none smtp.client-ip=209.85.218.48 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="mzg2CY/A" Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-b4539dddd99so728691866b.1 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fXCSCCah2zJTGYn4GhhYKHAkgqZ3YCUPfwGM8ymVWuc=; b=mzg2CY/AcUnqlPKiQTqTfXo1LlwpatB3Hq5OfEYIfZIwuMuh8Qsz1Of4opSpPiHLNr WLPbcg09PyWkt7PK4BXJFB1kvI3moykcSrC3NOWgJdtPBkA2GA9KxETvGz95PUfh2Xco QIZDflhHNRLpaUXEw5GTd1TwbkplNSUeKF9XjyKN6xqPungsU8USm0ZJANdQJheSW8Ay ymAmJil69aqaDK6He+Qa8gBdTQgjB3E+tBmA/dIcO4faul0h+GCvCf6QEe1YANCA1wgQ nftUnrOnpJq8YU7WU7YMj0bUEfxqcULBPW7an/VwqvoYnZZQTEwlui7lKMLv0VWAjpyz +uKQ== 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=YC2P3tYEZMnSgZpnfH35/Yv/EWU/frARJg4WVNm7W8VaOtXF68dXlnNK04frZTfXJc 2AaFqaGUqTUX9jdrlcoOyZqlgeuCxiVGxUcUQQNMe3RhBePDlRE7mOnzlgsYBIC4Pv/A RyXT5tZEl0FbD0q/kd+cb1SlXVKITLZN85fh159MyOfl3qPfVg9uuZExwglWfv/KK+Zw f0TxeZoASM33Day5uo7Wgz+fZuH6R9ZjpWn7B67v6uUBjk8BL0AsAg4Aaa0OtFyQ6fdH UvOON2znLI4t2hJ4107xx6iG6viD3XVC+UVcVyu2BT/0iCOp30/V/ciJN9o+E3UM8fCT cWNg== X-Forwarded-Encrypted: i=1; AJvYcCW7AemfEwQj7dYiDMuy1l16iYittabEyU5Fs/1YTwLlYit9yeay7AtuDMyz6DY7HAufw2DBCCxX/6jx8dE=@vger.kernel.org X-Gm-Message-State: AOJu0YyfSZQGzAZs4G0YR+QNmeUK8+rnFpH3mv10qQFIpKOk31i9Je31 HggJHLaW9urtPBMD/DJp9VbFsW7h7fzVEAOSttpqZFSIfQ+dF0nYMve/ X-Gm-Gg: ASbGncv82Fbt2RQcpYSlbCSRFDzkP2hp4p6NWRx+oRcRgrzFL8CwBSVaKqu5MT0luFd RqWmkp6g1OxT3+R5qulebbXps57FbhFuwxhBPso0AKa9AXzc/uAcdW8KCixSOOzMsnk15EXo7zH L+Xjia+BYz+iinstV+nieeSj4a62iaI29+t3Wy/dVYLbK2BdcYNiVRb0MbuskDIr7Ir/wYD4Hze qAdyN5/3pn78Dn7pOw59kBRXkX0IKKLNfSqhmg/2jpkt4vKIrZLNcnTIXe1KvjZ6ZOK8NXJSxNJ InOwEgQCGRg+EHB+th0Nystq9PjNKsL0vCKc/cXnOVSFCVCLKnzXWTHyY+tcT01od0WCZxLHI8f XfIqhU/N5KmFLDTwn1Z7ptXm6mZS8cV18xTVEIBuMj6aj5flgs8X1ChLdQTyWN5PjcNCqmaznYG rZQD9VpOvYhEpvh+h8E6+zJZ68+yMerLl6G6zOBFlZXQ== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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 =3D plane->state; const struct drm_format_info *fmt; u32 val, ch_base, hw_fmt; - int ret; =20 ch_base =3D sun8i_channel_base(mixer, channel); =20 fmt =3D state->fb->format; - ret =3D 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); =20 val =3D 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 =3D plane_to_sun8i_layer(plane); struct drm_crtc *crtc =3D 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; =20 if (!crtc) return 0; @@ -211,6 +208,13 @@ static int sun8i_ui_layer_atomic_check(struct drm_plan= e *plane, if (WARN_ON(!crtc_state)) return -EINVAL; =20 + fmt =3D new_plane_state->fb->format; + ret =3D 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 =3D DRM_PLANE_NO_SCALING; max_scale =3D DRM_PLANE_NO_SCALING; =20 --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 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 379832F2900 for ; Sun, 12 Oct 2025 19:23:47 +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=1760297028; cv=none; b=AwxdoFpcsVyxg65w4dHaRUSpvsos4yfqOqsSxqHl8WWQDTt2zqmGIMhOKzzvYvJ75E1mccJyrrD41utLNzXg0daWoiJYsbf+hhBOwmTwlpjZ+k8R3M/0l0WjTFrIBSgyPfExlQiJCjnQrbxirWfYECabvLONzCvWD1CZfIHbzfE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297028; c=relaxed/simple; bh=NerHgxbZbmjyVYRLnhATBgZKX10HzgN5zpQm6t10Mcw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Q5pa4kXPRSsONI/sBGyKNimvF1Me304j6je30YCHe6lB9gRa5gKbXo2eWhTV8Fxu/m591euDVb7cOAtr078iUxXga9UmNJsd8nXS/0ehPHw4oM4BUpbf/GcFhKVx3j8X0z7IEP1zMKOgpu+eEAVofGcVxPRPvxWowneFK3VcMvw= 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=QQ8Bi3yj; 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="QQ8Bi3yj" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-b4aed12cea3so575816766b.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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hnlOJ2n+kaG3xIG2KBBQJX6KsaJhFDRkiLuLt3jD0qw=; b=QQ8Bi3yjWAVcHU9hQS4MQ80BbFQ3s/ET8BZJM6q0GtC/ovZrHp03MsmKg5i+SbrrS1 R6HRxOX5UW0anT2t2CyIpUY01pH9NfBPG22WksdCPf5mu0NYSKOGqXVHuTo6PxFI1XpC H5tscDHAunUxVxxZ681E73SI9Ovv0Rpw+jwVjsMlPXer0N/+6xuz4tuQGdakqmEvviCQ cRqjOoC/vji2VjlyBPuPL0zqR6KTDikjY/r6JcPKayBQ1N1ZzNUKGriXpo7921hgcizs 7omf7sz/zvaLTbnmAMLg16lEfKCBMQUAHKICmSGU0PzYBPpvAqf4zHiojcfoDm42dz7c kW7w== 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=qXGPV2MiSwGWJUTAY/cQw8vnEq5qxLk+kIjKkPQsmFZVMUdsQldGlHL2PN2vieudM4 MOljqeNKqgy4suH2xYxJpSpitblRWUJS2ZU0rJO0I01pulCCnvEXIfMZnlTKOZmZWg1u /H3fLTZ2UVUuVAzLD/LzIyMhuA6oIOZKGrbDZjqGyEqby35W3vGEtKunn85G4jyb31x0 cvFdK69KiEJZ341S14YSueob+lSXHcqv3JsJkzNjg+1dTPJz+QxxxRAIShw3/8uKv1/k iW5cSPXzYBQzrBwEaOm0FkxsvD+/vPO3zJ/5475u9SbFZNwJVyWaCD1aVjyfNkTlAC3U D9pg== X-Forwarded-Encrypted: i=1; AJvYcCV2HYSNVZ2wORBN9yDkly0j+nhNBP5VQ31lcXwg2Tn1vi1IeX7aysH9w4IpGYBXi/eEKCdKoraW/6NBLPc=@vger.kernel.org X-Gm-Message-State: AOJu0Yw+C0B5sa5zexbWhnV3+t341ASdiL7w5fZuMXjTd3O/QCetSdTN QhPPcnWoA8SX125R90gXbpeZDQQFouRQgjt9dM3JUSfXdLpDKYrX0D1R X-Gm-Gg: ASbGnct0IotV0ilP2Ns1mI76fov45uwrnSGAV5IWv+4rRk5oGtFV6AbrY49kDYZjWjI nsat5KZRXcOF/Z/HRbNN10EJ0TEHoISwDUrkIBJa9maJXxezuq4eSOY6iajKnRYb6w6tZfp0Vgg 547ZKuuVt5CFXlOWFXqcDzZItCnnseOXTJOGWrqtHNPHfLk78srN3e2EilBUYaY33z2KbqZ/7Jr mS1V7YyfcsP7bRjJuWVHL0GkUR4ffhm4fxEJ/5nAwOmUtv+9A0H1tWYvccVaoFPYixNx0+4gR7i PzSEB1E0Dkp/1fupeZPG9kRXS8BKnhPkAPlsxbPcyprK9Dr/K4dqXXlBmo5nPa/eGq/K3ZRx+Ee /7ShZVikMGMLxg0tAn265sEl9cnlZRVuv7yDl9QZLJLjR6a2RJNN0hR/5PgF1b9SsS4ImgtIOuz 42b5NpyzWhVZN9g1cgkdfi 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Tested-by: Ryan Walklin --- 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 =3D plane->state; u32 val, ch_base, csc_mode, hw_fmt; const struct drm_format_info *fmt; - int ret; =20 ch_base =3D sun8i_channel_base(mixer, channel); =20 fmt =3D state->fb->format; - ret =3D 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); =20 val =3D 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 =3D plane_to_sun8i_layer(plane); struct drm_crtc *crtc =3D 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; =20 if (!crtc) return 0; @@ -332,6 +329,13 @@ static int sun8i_vi_layer_atomic_check(struct drm_plan= e *plane, if (WARN_ON(!crtc_state)) return -EINVAL; =20 + fmt =3D new_plane_state->fb->format; + ret =3D sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); + if (ret) { + DRM_DEBUG_DRIVER("Invalid plane format\n"); + return ret; + } + min_scale =3D DRM_PLANE_NO_SCALING; max_scale =3D DRM_PLANE_NO_SCALING; =20 --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.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 528182ED16C for ; Sun, 12 Oct 2025 19:23:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297030; cv=none; b=hT6Z2FXODebXpQQ37Zujzp+xQHdGQpd9qw/SWHGrw7u6aShtjmdqQeePjD4b5b28Z9qaorBVQnIo1TBaoM/Xnc6LW7KULt8jmy+Sc6yMfLPMklqdstB7ZyU0fGG3HqaliqKloa9kDa3ErQvmRc08AnMLueRTzxJ3ZCI7HvpmaMM= 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=GHO4k0aG; arc=none smtp.client-ip=209.85.208.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="GHO4k0aG" Received: by mail-ed1-f49.google.com with SMTP id 4fb4d7f45d1cf-62ecd3c21d3so5668998a12.0 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=QhSOMeyyVEb/JHhqKdNE9M8XBPkXN/GvjKAdeA1KvOU=; b=GHO4k0aG5nkzItHEM3+ypmrqIkS7GMv18SNZ/Ar9eTkNMGpyMFGBNybQCZ52pPMbOY SZIZFQCpxX4Cget5PgXb86rt/tFcsPxetwdF+IguBE02RTK3QKsrBxUEIqiwOox88O+L Sa0aFgqV15ahbbEEiOK3pCKz6dUNXpD0dqK6uIugm7eFuPUAoPdOXlDtJ1z78LNHSmU2 U/MCmnEHFgSHvZrbUa2b70FTiGTlBVhdw255ucSmOZ7ljmLnSqY9zQ3b5RTJaGqjnQ54 SM5szO4nuaiWoioT96CIGKGm5vLnY/cArjp8Sikq+PP4NhR+HE3vJVtl3IHO7JE5cnVS 7wSA== 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=uaygFxNi8gAm+ixH6AexY/SHw031I+c3rcF8QwIvcz2NE3SwV04EcA4lzoBdln7doW kWzv0BxGZl6IaCLavWvvwTBdYYpe3/OwjA0fsqJMe27dBAXSf4em7/VyypXoyTpRCsh6 XjZSnT+Xs2BpT1p25Oss0iYIr0vAJ5Hs8ATQRtWLFmZATlTA4Zp/zsvfwFGIFYz2sbCZ uyUNI/ai3t/CFkeKSzxDkAR8fBSknv7Wvl/IMc1s4di3AhBTtQtyPixzOHnIk6xv0qMZ ijKntpXdskkKUD51AhQOLCx14eNPIFJPvwuCrXKaJgjhcdwNj8/HaiQ3w9Z0vnw0vwgM XYnA== X-Forwarded-Encrypted: i=1; AJvYcCVizrzzpm3BlQI4/MSs55e2dShqNvWokVasYHRK2qCuNQ9NyXh0g1crT8/9OaIFl/aeREqhTES1Gj5Q5a8=@vger.kernel.org X-Gm-Message-State: AOJu0YzSFr/h30areIl/KYWIT2b6O++pXUvr1jiRzpCPTY2/uJBdNzKE NAMk7TD3L/1CJ89ggnzvZolUw/G2CrPvoraBHUq4nusmvFTLbURmwtGe X-Gm-Gg: ASbGncvegl1vJ+/cHCAhdUoTV+eFTfaZ1IzVv0Lk+iLyRCU3+ykCu+c+TWFMG6KbhCI qMh60xuqXT20S/F/W7uMHprZTxEIYc3+MFcrsAaOcYeOxOmcWYhE+UWJrSJm1hprw0CwQGECFq+ nQ4REpL+g+J66+jWSYyvFdJmqNxHNCK2yux9VE5xyKi65XxfREyNKXXO9XiXx3fXQ2kp5OuVySf DXjB94g4KARs1farsajlq2fFDlNj8cjICeRHKOHsLWWwzA31s1NCmqHb09efaHMS7tOKjSa1/K9 subDMkdUX+euiUwjL+gzHFf1sH2LY7yskSJ4J0YDdDPY7zdUnmvIrrwQcCU1EXUu1uVT4AsFJKV JhIYZOlmLh7TEfw53nRGocBlo7zYIRXLLWA84I2m34ws6tci4W70yZiCHWnUFGu/iv3kb++ijnZ R3DmfXZZTVHHuRWxC29m18 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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_mixe= r *mixer, int channel, mask, val); } =20 -static int sun8i_ui_layer_update_coord(struct sun8i_mixer *mixer, int chan= nel, - int overlay, struct drm_plane *plane, - unsigned int zpos) +static void sun8i_ui_layer_update_coord(struct sun8i_mixer *mixer, int cha= nnel, + int overlay, struct drm_plane *plane, + unsigned int zpos) { struct drm_plane_state *state =3D plane->state; u32 src_w, src_h, dst_w, dst_h; @@ -124,12 +124,10 @@ static int sun8i_ui_layer_update_coord(struct sun8i_m= ixer *mixer, int channel, regmap_write(bld_regs, SUN8I_MIXER_BLEND_ATTR_INSIZE(bld_base, zpos), outsize); - - return 0; } =20 -static int sun8i_ui_layer_update_formats(struct sun8i_mixer *mixer, int ch= annel, - int overlay, struct drm_plane *plane) +static void sun8i_ui_layer_update_formats(struct sun8i_mixer *mixer, int c= hannel, + int overlay, struct drm_plane *plane) { struct drm_plane_state *state =3D 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; } =20 -static int sun8i_ui_layer_update_buffer(struct sun8i_mixer *mixer, int cha= nnel, - int overlay, struct drm_plane *plane) +static void sun8i_ui_layer_update_buffer(struct sun8i_mixer *mixer, int ch= annel, + int overlay, struct drm_plane *plane) { struct drm_plane_state *state =3D plane->state; struct drm_framebuffer *fb =3D state->fb; @@ -184,8 +180,6 @@ static int sun8i_ui_layer_update_buffer(struct sun8i_mi= xer *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; } =20 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_mixe= r *mixer, int channel, } } =20 -static int sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int chan= nel, - int overlay, struct drm_plane *plane, - unsigned int zpos) +static void sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int cha= nnel, + int overlay, struct drm_plane *plane, + unsigned int zpos) { struct drm_plane_state *state =3D plane->state; const struct drm_format_info *format =3D state->fb->format; @@ -191,8 +191,6 @@ static int sun8i_vi_layer_update_coord(struct sun8i_mix= er *mixer, int channel, regmap_write(bld_regs, SUN8I_MIXER_BLEND_ATTR_INSIZE(bld_base, zpos), outsize); - - return 0; } =20 static u32 sun8i_vi_layer_get_csc_mode(const struct drm_format_info *forma= t) @@ -211,8 +209,8 @@ static u32 sun8i_vi_layer_get_csc_mode(const struct drm= _format_info *format) } } =20 -static int sun8i_vi_layer_update_formats(struct sun8i_mixer *mixer, int ch= annel, - int overlay, struct drm_plane *plane) +static void sun8i_vi_layer_update_formats(struct sun8i_mixer *mixer, int c= hannel, + int overlay, struct drm_plane *plane) { struct drm_plane_state *state =3D 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; } =20 -static int sun8i_vi_layer_update_buffer(struct sun8i_mixer *mixer, int cha= nnel, - int overlay, struct drm_plane *plane) +static void sun8i_vi_layer_update_buffer(struct sun8i_mixer *mixer, int ch= annel, + int overlay, struct drm_plane *plane) { struct drm_plane_state *state =3D plane->state; struct drm_framebuffer *fb =3D state->fb; @@ -305,8 +301,6 @@ static int sun8i_vi_layer_update_buffer(struct sun8i_mi= xer *mixer, int channel, overlay, i), lower_32_bits(dma_addr)); } - - return 0; } =20 static int sun8i_vi_layer_atomic_check(struct drm_plane *plane, --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 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 767F02F49FE for ; Sun, 12 Oct 2025 19:23:49 +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=1760297031; cv=none; b=RveX1FdxRdjRKc8fNffwMtp64TbjdckfUztfL1Q/7ji2LWyztQpM0OuRB+361dxBDFaxXJ5cK1n6CrFC/Fm50Lll81bT704O932sdGMl6+TmRpOrDMke9mRxtBuQfKPl9S+5mMpRaHkmN8FHCaJvQA/bvcU+eqK7q5ujgFNkCBk= 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=K7y5aSN/; 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="K7y5aSN/" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-afcb7322da8so36333366b.0 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zG8bmd+ZBK/ghOVMNjmCpTsnMqAGeyE2Wx03CRuhE1M=; b=K7y5aSN/9rJWLGBITueD2VQiyKHJ851p8FbwhSJ6N6BvkpaqvOpjT+Whk9qflGFj6Y piOqQHPOnDDhPTUuvGtAUJMxKcYXN1NsoKCGh8SiGjmOSdEeCxFchaURrGL3jXKOM3Ic GnfNDUN7elDus5m2dOT71ogU3MANbJQw7Os9jQs0qQrbx2MGuYOvr8lz8OaPy8j5OxZv 3TcRr6CjeIwKH2uTU9QpQnKgsjE2Ghs03HjRolKZpsrw5I3o/zhikKtXGS6VP2gYGAko 1hgrw2xi1iCx2ptR6UgEwbTxh4KB8n6AXxYtkIxvPewhu6UQbhniO1aAJ08VFwapaXlo +8lQ== 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=JClBtxX8WaZevHpTPdh9UoisBWXVqQlQTkJQEWdoIHZejzj0ITRpn7ZZYGzlniPEMp kqd9BR+3+g7+a6ahwhLoZjaB2xMnp8FAFvdW7DDvaQcf62bnxc5u2t/hVW4vLCcMuHUZ 6ZzCFBYlnFZApEdmnazvV0YNirlRHvGoNWEh0lTxtC60qZficRSatbLiCBBG22Aut7L0 nzFEfYKOlJwGxgmG7lMIiG8DVN/addjwAcTM9LRyhWqvs6MWey768iTCL6a9oFs2IiL9 tbCdqDafQR5YY0zmRpQd20S5fKDdYrJ6VTfEEDQ6QEQ0wj/Sb9gQHm2j3vBMmRhCi6gX FkRg== X-Forwarded-Encrypted: i=1; AJvYcCX7BRpvXnLlutk8OzX9kBOWdI5bfQj2brdWZPUjJXtQz/gzfgb1ofo3VitK7jKZFQ+KXa/aPPpXIMc7xls=@vger.kernel.org X-Gm-Message-State: AOJu0YxikKfs9AI4iqxAQSS92iFDMZ4j776ZZyA/J2bHnWZ8M1gIo/qA 95nMSWMgrjqnQO2fQOnXReF2YOsDBuLM1zr3wsKcKlbyxHV3eU2ewz+R X-Gm-Gg: ASbGncuDnYlDVuPdTLrwqRxwxLDkUAkWp//HlzCoYV/3lfkInMLKYiQCSgMWszgdrpA djAkb3spz1CldcoJTISm/u25gf/POcCrWnlqfaRaiS4NSQJr7Sxl54jt/bfcxETr2bofR2nzTU9 7VtFq79AOzLdZGB4gtOi32bv3GL1vkvJSxubmFDzWi8pZpv0R09yOOuijznRVGIxOtFVhK3ICtr 3V3BxAwioj9jWtaKY7zYyo6NnUywYrKMuxN/zvbQEAgcbMyt+/E+A3yav1jtf/sfG9a+gpULdfm fEYgMRBZbIF8pdlvB+ysNsmpQANAKwQ/OmDvjC4BoPcnibTDqjRxbRFVX7YZicKlHkCd9hAlLTQ VPLUPRCgQMlZ2bAAr/IVTHM88iw93Yb31WMDhNOuKjlVTGEvArnXyNeHW/eUxUs1bGDAAWikzLp RpT4a+6LdrJW+fHnIAypdZAu1oz3EYUf8= 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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/su= n8i_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 *eng= ine, =20 drm_for_each_plane(plane, state->dev) { struct sun8i_layer *layer =3D plane_to_sun8i_layer(plane); + int w, h, x, y, zpos; bool enable; - int zpos; =20 if (!(plane->possible_crtcs & drm_crtc_mask(crtc)) || layer->mixer !=3D = mixer) continue; @@ -295,10 +295,14 @@ static void sun8i_mixer_commit(struct sunxi_engine *e= ngine, =20 enable =3D plane_state->crtc && plane_state->visible; zpos =3D plane_state->normalized_zpos; + x =3D plane_state->dst.x1; + y =3D plane_state->dst.y1; + w =3D drm_rect_width(&plane_state->dst); + h =3D drm_rect_height(&plane_state->dst); =20 - DRM_DEBUG_DRIVER(" plane %d: chan=3D%d ovl=3D%d en=3D%d zpos=3D%d\n", + DRM_DEBUG_DRIVER(" plane %d: chan=3D%d ovl=3D%d en=3D%d zpos=3D%d x=3D%= d y=3D%d w=3D%d h=3D%d\n", plane->base.id, layer->channel, layer->overlay, - enable, zpos); + enable, zpos, x, y, w, h); =20 /* * We always update the layer enable bit, because it can clear @@ -312,6 +316,13 @@ static void sun8i_mixer_commit(struct sunxi_engine *en= gine, /* Route layer to pipe based on zpos */ route |=3D layer->channel << SUN8I_MIXER_BLEND_ROUTE_PIPE_SHIFT(zpos); pipe_en |=3D 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)); } =20 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_mi= xer *mixer, int channel, } =20 static void sun8i_ui_layer_update_coord(struct sun8i_mixer *mixer, int cha= nnel, - int overlay, struct drm_plane *plane, - unsigned int zpos) + int overlay, struct drm_plane *plane) { struct drm_plane_state *state =3D 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; =20 DRM_DEBUG_DRIVER("Updating UI channel %d overlay %d\n", channel, overlay); =20 - bld_base =3D sun8i_blender_base(mixer); - bld_regs =3D sun8i_blender_regmap(mixer); ch_base =3D sun8i_channel_base(mixer, channel); =20 src_w =3D drm_rect_width(&state->src) >> 16; @@ -113,17 +109,6 @@ static void sun8i_ui_layer_update_coord(struct sun8i_m= ixer *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); } =20 static void sun8i_ui_layer_update_formats(struct sun8i_mixer *mixer, int c= hannel, @@ -230,14 +215,13 @@ static void sun8i_ui_layer_atomic_update(struct drm_p= lane *plane, struct drm_plane_state *new_state =3D drm_atomic_get_new_plane_state(stat= e, plane); struct sun8i_layer *layer =3D plane_to_sun8i_layer(plane); - unsigned int zpos =3D new_state->normalized_zpos; struct sun8i_mixer *mixer =3D layer->mixer; =20 if (!new_state->crtc || !new_state->visible) return; =20 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_mi= xer *mixer, int channel, } =20 static void sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int cha= nnel, - int overlay, struct drm_plane *plane, - unsigned int zpos) + int overlay, struct drm_plane *plane) { struct drm_plane_state *state =3D plane->state; const struct drm_format_info *format =3D 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 =3D 0, hm =3D 0; u32 vn =3D 0, vm =3D 0; bool subsampled; + u32 ch_base; =20 DRM_DEBUG_DRIVER("Updating VI channel %d overlay %d\n", channel, overlay); =20 - bld_base =3D sun8i_blender_base(mixer); - bld_regs =3D sun8i_blender_regmap(mixer); ch_base =3D sun8i_channel_base(mixer, channel); =20 src_w =3D drm_rect_width(&state->src) >> 16; @@ -180,17 +176,6 @@ static void sun8i_vi_layer_update_coord(struct sun8i_m= ixer *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); } =20 static u32 sun8i_vi_layer_get_csc_mode(const struct drm_format_info *forma= t) @@ -350,14 +335,13 @@ static void sun8i_vi_layer_atomic_update(struct drm_p= lane *plane, struct drm_plane_state *new_state =3D drm_atomic_get_new_plane_state(stat= e, plane); struct sun8i_layer *layer =3D plane_to_sun8i_layer(plane); - unsigned int zpos =3D new_state->normalized_zpos; struct sun8i_mixer *mixer =3D layer->mixer; =20 if (!new_state->crtc || !new_state->visible) return; =20 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, --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.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 E0D672F549C for ; Sun, 12 Oct 2025 19:23:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297032; cv=none; b=gL67qcYds2OoL4AZU5W5fVa0qQyig8dbnj9DZP+ZT96sP4/lCP8S1okRG8bdxjPVd2pZWWDoLYet0mS3ODldSSiokANGMxmaP9ECd9cniPpCtP8mCUaMbSrr5juo7cgM/hYNtQz84qD/tkDae6smdo6xh6aR4NsB0Nn40sQxHWA= 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=VVI/UJK+; arc=none smtp.client-ip=209.85.208.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="VVI/UJK+" Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-639df8d869fso6717842a12.0 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=S9SmCp0RhICJrtT3B0EVlMoJ5KkuRntCLc/b84MPeMA=; b=VVI/UJK+L54hXF6ysdizD+bKxKxDlLObUdUVAxafbSIJQgbI+2GFwjoTPjRRNicp5d /nOGUTt/FoNFU8Df0ZY/qJmOFVgo6qrmEvIz+YbDNgy+epDl5wj79mh7L4jwCvBjGZqo EXZGHsI0mqlhA9FWUCe2+zFd+BXd9DHM3Qql6p5Yl6oUzpENNZ2tZDbNWOLS3v7q4toW U5D8h+QoXPnkl1QTnBge8pv4advm/a41/uv+t8XU7id01+WMF1IfJHAO6wvR+cEWtVgO unxmmRSz7Y/YnCqJsZ2HxOnD1DEmuiIkDYglaGMzxo38c5YZMa8TTv2YaR1Fd0Fa2B5t XoqA== 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=qCkcZ5kdr4AsBpjlJ+RyaRxc0+pBjtuDHiKp78BTU24uwYzQiTjrHfeOhO1g1YqKF9 thPcugOExG0QcIYVW9Wbfr97adDc84ffv3ONcJLikEt3LItnl5ODF3bE/MYfSV5sYZBn qjhfnZgWMepSPuvwRbbi8jk4Q8V/aeMedaNWx2pEwR67jqnqQpN3m100Qz4S0eOhEitj 3v0aJ1u7ovKqdTElcQOTqxzNQwfnbTUfyXLg6cBD+BHAUaBCKSzRyJXpRSycNGtgJi7h 0OfAQ42f++Hdn1mTKz7NOafUp+NklEQB3XPV9ynUjYy/zNw4ENwKZFhIGlRiuDPOehOi TgWw== X-Forwarded-Encrypted: i=1; AJvYcCWBXrStTxzpHanDOtoywsqx+yxnQSOSZalRoBMWI3OvHc5hPbw1KyogMfQHEyOp7wffuxFD/RDcmet+J04=@vger.kernel.org X-Gm-Message-State: AOJu0Yw2yh6xTFfcG+SFXi2Scvd27QVj+kcq5QWkIfKWjO0XzF9sJ5D9 Ya8wVtAKZZqN7lhmJm482y5j2rYPfpeCKDMx2Ly1HEQa3AJ7AbRQIwEm X-Gm-Gg: ASbGncsgQISYwDqhoiDDa2U4J4wi9b5pojGfFrClKxFq5l8GZ0qq20xw/0uE6m9Hmzq 0k43AuTcb9tAKXbzj7SWoyb8xLmCHeAB1XSntRf+GJIlGlf9Mmzwggs7UXv6D94Y1TFJOlJ9dHe tEc+GJ7SkGuCibdEwvkKuUrfu02cHrpzAK23/dm0Gqdj5iCzgERpQjwaMyoAuS88QoQDBwxQ8NV 3zfSkVrlm+Ut2PwOZdrkRbLfNef+R1/DQdfTnPxOFrvmatXSPJtd16h6cm9V1QYLqZisEWck/tn Fht1taMcYGAd81hKfB/CRPVbXfvOjWQuiJyS881alo/0cTtoZ+7oGxCqwOPib1LwqVmNxUCWW4K 5U2p4gdAWC47DT7Yv+3dj3O2qwLtjt0bknNyQ8IYU4WkW7EyxArG+KOQeGi500Im0W+WJ62aRNN 4igPOa9ohxQWsZjgYNvu/FUXt9QHlx3AQ7VH3e1VKyBA== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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" =20 -static void sun8i_ui_layer_update_alpha(struct sun8i_mixer *mixer, int cha= nnel, - 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 =3D plane->state; + const struct drm_format_info *fmt; + u32 val, ch_base, hw_fmt; =20 ch_base =3D sun8i_channel_base(mixer, channel); + fmt =3D state->fb->format; + sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); =20 - mask =3D SUN8I_MIXER_CHAN_UI_LAYER_ATTR_ALPHA_MODE_MASK | - SUN8I_MIXER_CHAN_UI_LAYER_ATTR_ALPHA_MASK; - - val =3D SUN8I_MIXER_CHAN_UI_LAYER_ATTR_ALPHA(plane->state->alpha >> 8); - - val |=3D (plane->state->alpha =3D=3D DRM_BLEND_ALPHA_OPAQUE) ? + val =3D SUN8I_MIXER_CHAN_UI_LAYER_ATTR_ALPHA(state->alpha >> 8); + val |=3D (state->alpha =3D=3D DRM_BLEND_ALPHA_OPAQUE) ? SUN8I_MIXER_CHAN_UI_LAYER_ATTR_ALPHA_MODE_PIXEL : SUN8I_MIXER_CHAN_UI_LAYER_ATTR_ALPHA_MODE_COMBINED; + val |=3D hw_fmt << SUN8I_MIXER_CHAN_UI_LAYER_ATTR_FBFMT_OFFSET; + val |=3D SUN8I_MIXER_CHAN_UI_LAYER_ATTR_EN; =20 - 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); } =20 static void sun8i_ui_layer_update_coord(struct sun8i_mixer *mixer, int cha= nnel, @@ -111,24 +113,6 @@ static void sun8i_ui_layer_update_coord(struct sun8i_m= ixer *mixer, int channel, } } =20 -static void sun8i_ui_layer_update_formats(struct sun8i_mixer *mixer, int c= hannel, - int overlay, struct drm_plane *plane) -{ - struct drm_plane_state *state =3D plane->state; - const struct drm_format_info *fmt; - u32 val, ch_base, hw_fmt; - - ch_base =3D sun8i_channel_base(mixer, channel); - - fmt =3D state->fb->format; - sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); - - val =3D 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 ch= annel, int overlay, struct drm_plane *plane) { @@ -220,12 +204,10 @@ static void sun8i_ui_layer_atomic_update(struct drm_p= lane *plane, if (!new_state->crtc || !new_state->visible) return; =20 + 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); } --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 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 8D0FC2F60B6 for ; Sun, 12 Oct 2025 19:23:52 +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=1760297034; cv=none; b=GsFL1OGBYW4mcHzpQgUOZtarCe/tTfR4uBrj5Umtayvfu5lLnN5q1UQigqUbZ81wSMTo3YlcRX/bHoTJ6xfMGwoicfo21QvyVeAgXvwAK5sRGryGR7mmVv6en78PNQc8SHtmjYZFs51xCX23mDh7JLHkdVNy6muJQNscLVJB51A= 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=mu+Y2JKc; 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="mu+Y2JKc" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-b3b27b50090so653285166b.0 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4j2gKZWvQ3G/p6x29ljxN7hGavAjse3Wea8WQURA1i4=; b=mu+Y2JKc39vr9cqEuIU8L0Hn57TUq3MfAzekdPXqKnc73ELwZW3khXcD5N6OLs5beO d+4ggT/vy9osnRnAVje/HFUBSWGYgc+kU8C+pDAsI06N1vjUxCyb57KUzXaQsahPSMvB SJ/WbKEy/V3iCA96ckdliQ6dL9V4l8m93HHTe9+q9O9fhEvvpXjiRYfW85Y7zrnZBDOP kKNPPd9pE/J+hz1Y4+xM6PhAHm0i3/R28CTl2T0KVdKafeV4CYxdadLeN0MdalOqLM7S QZBKZelMbaSNtZUMUXqa4bcsD9VD1UHhKtOJx31M7PV2EDywKCU188UBFB/PqZgziw9z Popg== 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=QHNgQmAozUVqyMjjiI+Y+u7CFrnk+I3Jtu/sUOKuak25Mj/dvVLVY/U4ZVk+/QJcjE O/F1M8KzKQkQoufbW98FPKBse4Rey48/e6jZONtvYD3QamYaj1y+TWgN3yZ6F6WlmMcr JuViXd+8J/Q3Pq7aQYOtI4wan/n/A0YUviEAmmQLPWILCKujDQO7owCzwGmZmFUNYokL 6OLWbvG0RRCzbu5R2wUo3cVviwrNZyZsfzU+T5m4ZEy1Scn3hvf26buIqWjXP/UoczeP vxtwO6YUdmdiOBFmU2GQXBqSK3d0fBRUan0+bp0/MQGiGcG+A7Q2uW77z04ZvBBuvH5l JpZw== X-Forwarded-Encrypted: i=1; AJvYcCVtO4JPxz434KouHavr7MVzvzwm+ThAeKLqL0+1tmjFMLoy/X220qkKUa8p2ua4RkjoH4GgkCSWArOUkLk=@vger.kernel.org X-Gm-Message-State: AOJu0YzjrAUe300rmUSVNxHTIDwZncPW8GSQrhvzMp4rzxhtQ9gCZL+e Gob5PUNe2glktvhKXkvhfVWKr3oHJgWF8ZywIcg2JP4aXKQmfSh/5rAm X-Gm-Gg: ASbGncs+ESeMfYFHyNYEkROUaqEGL7uYN5e5kvCfIS2IBfn64caL1nNAOK8EjLOu0dq 7/exP0MdkyeB0QdZqKAItIXYYGW2EFIZM0A0ldbs4vcayypjhxW58fySKI+ktbK4A+dZpDTVWip UQAN0qVRnkgvqScdZBokxaG3Zbzev62Ed8qqufa6D5QuwjW541wwIdM9ObIx4HFhShAbCv+A7JP jLej5yik76ZfISUAs0zAD/1ybmu4lNjXkaR4ojpFInQscun50F6cqb35p9MFeQyy5/jXTDpa+gz rEBBRKjNroTDK/FkOTYLd9T3Rja9hJoouKaUYk9q1p/y0SDurr+XFho/FSiCPae1FHSZFCEPivs mkBI4h3l9CLSHlWMn24uC2qIjVr8jJ9oRtfS+2d7aEMMduJyWQsVctDz2LAOo4vX16SYkEbaLi7 BmE6JEmAfJ18jkWkk771c9wIeHqAXxcMMrr+jE15VY6Q== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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" =20 -static void sun8i_vi_layer_update_alpha(struct sun8i_mixer *mixer, int cha= nnel, - 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 =3D plane->state; + const struct drm_format_info *fmt; + u32 val, ch_base, hw_fmt; =20 ch_base =3D sun8i_channel_base(mixer, channel); + fmt =3D state->fb->format; + sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); =20 + val =3D hw_fmt << SUN8I_MIXER_CHAN_VI_LAYER_ATTR_FBFMT_OFFSET; + if (!fmt->is_yuv) + val |=3D SUN8I_MIXER_CHAN_VI_LAYER_ATTR_RGB_MODE; + val |=3D SUN8I_MIXER_CHAN_VI_LAYER_ATTR_EN; if (mixer->cfg->de_type >=3D SUN8I_MIXER_DE3) { - mask =3D SUN50I_MIXER_CHAN_VI_LAYER_ATTR_ALPHA_MASK | - SUN50I_MIXER_CHAN_VI_LAYER_ATTR_ALPHA_MODE_MASK; - val =3D SUN50I_MIXER_CHAN_VI_LAYER_ATTR_ALPHA - (plane->state->alpha >> 8); - - val |=3D (plane->state->alpha =3D=3D DRM_BLEND_ALPHA_OPAQUE) ? + val |=3D SUN50I_MIXER_CHAN_VI_LAYER_ATTR_ALPHA(state->alpha >> 8); + val |=3D (state->alpha =3D=3D 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 =3D=3D 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); } =20 static void sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int cha= nnel, @@ -194,23 +195,14 @@ static u32 sun8i_vi_layer_get_csc_mode(const struct d= rm_format_info *format) } } =20 -static void sun8i_vi_layer_update_formats(struct sun8i_mixer *mixer, int c= hannel, - int overlay, struct drm_plane *plane) +static void sun8i_vi_layer_update_colors(struct sun8i_mixer *mixer, int ch= annel, + int overlay, struct drm_plane *plane) { struct drm_plane_state *state =3D plane->state; - u32 val, ch_base, csc_mode, hw_fmt; const struct drm_format_info *fmt; - - ch_base =3D sun8i_channel_base(mixer, channel); + u32 csc_mode; =20 fmt =3D state->fb->format; - sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); - - val =3D 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 =3D sun8i_vi_layer_get_csc_mode(fmt); if (csc_mode !=3D 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 =3D SUN8I_MIXER_CHAN_VI_LAYER_ATTR_RGB_MODE; - else - val =3D 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); } =20 static void sun8i_vi_layer_update_buffer(struct sun8i_mixer *mixer, int ch= annel, @@ -340,12 +323,12 @@ static void sun8i_vi_layer_atomic_update(struct drm_p= lane *plane, if (!new_state->crtc || !new_state->visible) return; =20 + 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); } --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.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 3E1332F6569 for ; Sun, 12 Oct 2025 19:23:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297036; cv=none; b=cbYci8V+TNg2wUViVpRU6nwxTJTE8tfv+uDmFrQqPaww2DwRst7A99H8Fo8UMfarS6MfE+01rpDBUyYe3gu+n8/BrIFWMKKch803D4S7YgNd0XA62RQ0uH8AamBPJg27lCQa6QRxw9+Dq+nacUaZ7Fz/MSAZcIWVuhsIxOQFNFo= 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=c9DzbOH0; arc=none smtp.client-ip=209.85.208.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="c9DzbOH0" Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-62fca01f0d9so7294808a12.3 for ; Sun, 12 Oct 2025 12:23:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760297032; x=1760901832; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9r6Ut7kV6R9HZszR3tkt2ETSQ6gt6SVQ7s+jJ4oPNx0=; b=c9DzbOH0VaW0Qfb0vIXt7hLaCp0/9ezHPgYcS2bzj70mHBvQi2cKsMrCgl/cOTzymV J8KqmD1Tn5gBI/IYzA9YNugJApjrUJXEx9O2JP6JI1xpSWD1g3PwKrY1Tmsjf7O3tnFb MgbjzU+wpTyliPzkiLlEM7yzlA7I/iLLYmTNIqz2ucNrFHoMQmG3EQ4Nv2ClubEuIuVs P8cnF3jm5agVIErb42TeadDo2GHF/vvVOalGQ0MXLFFR5okGAjshYA6cCKIwDrPpi3Xd OXeniXbS67gxQ3qS4nQ7nv6Fk6MOuzmxTfngbGDDPOP3u4Jfko892oigbvv+y4WNUH0E bV9g== 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=USJi1AHZj/MALb4ZRnMdA8BzIRupWKywmv8J1uc/XOoi6SCqpHU58rgmYj/fMkGtHP WgbLtQBRUTqimjUElPcxGtkDuV/+M1E71OmBSx5/WrMws+e4RVm9bBDoCXSH6jhT3Je6 9/DJpR8iLWac+BNI3zSNqDWHDgisvwHrgWYG78gkIRSq2Bvzpu86uoSCUBmQjJ38G6nx xGE8XSwccrQz20us87Xgrds1R22y/054SuuNux1Nkj3IhYPmEw2xcbfmPc8HzMPE0rvm WfJiay4IHDq4FFdy1LUhU7UpMCExZbG9f/0x1cCJobZVFJdDgk89avICH32gdEQjM6XF Cwqw== X-Forwarded-Encrypted: i=1; AJvYcCVjvE34ZVnSlJqzyQd+yuHPPjFIxKme4vF1XpIZV3/eaHAW2bCzequAR9Gvf9hYbYV/qFGuD80XRbtVCKw=@vger.kernel.org X-Gm-Message-State: AOJu0YwLFaJrEYQK4nu2Df6pKqvDgFThCOoHadT5oP9yWVw+ipsu8ocr uj3rZuB3Sfhn0XDWg4vEBLthRqYlD+/0Su8gkErrgqXroDHudUacSqX/ X-Gm-Gg: ASbGncv7JeqYysD6Dvnggsnj7aGUS83GImZrRlnM6dzgjr7kiSzlyLzyOOj330ZQ4CE 1fBUozDXVwUksnpWKAxDabOQmtZMB1rWcSU8qGFnaDj+VgtQB2EP+sh2NfBBYLUr/oVp/YuINUh TUKbHmLJLk2WNs6VO0XC1i48thmnhCiysmcuQOm/NJjn3QWz6i9B+dZQbPVDvn65owlaABeq7Lt 3tf21A60av6sg1o1acw+BFuqFUM4IjM5ffqhWtFcxReZMVbt8hHNNDQeBTOhNIuX33L0mtIpCDB FeaHO6WVk3lb1PpaS96x6W5EJlrNVl43KHXoHbSiolXwcb0/KxG7Uql6S2lpDxK5eTznVHIU/Rf VjIuY7wsOeyWf1hjkI9RF2cg0c6kL19phy7uzKoHz1+t/K7fEJZzqTFg4P+vZ1DZqaZJ1ayjKuL WfbTBdduU5VVqC0+WDQJ8K 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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/su= n8i_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_f= ormat) return -EINVAL; } =20 -static void sun8i_layer_enable(struct sun8i_layer *layer, bool enable) -{ - u32 ch_base =3D sun8i_channel_base(layer->mixer, layer->channel); - u32 val, reg, mask; - - if (layer->type =3D=3D SUN8I_LAYER_TYPE_UI) { - val =3D enable ? SUN8I_MIXER_CHAN_UI_LAYER_ATTR_EN : 0; - mask =3D SUN8I_MIXER_CHAN_UI_LAYER_ATTR_EN; - reg =3D SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, layer->overlay); - } else { - val =3D enable ? SUN8I_MIXER_CHAN_VI_LAYER_ATTR_EN : 0; - mask =3D SUN8I_MIXER_CHAN_VI_LAYER_ATTR_EN; - reg =3D 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 *en= gine, plane->base.id, layer->channel, layer->overlay, enable, zpos, x, y, w, h); =20 - /* - * We always update the layer enable bit, because it can clear - * spontaneously for unknown reasons. - */ - sun8i_layer_enable(layer, enable); - if (!enable) continue; =20 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" =20 +static void sun8i_ui_layer_disable(struct sun8i_mixer *mixer, + int channel, int overlay) +{ + u32 ch_base =3D 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_pl= ane *plane, struct sun8i_layer *layer =3D plane_to_sun8i_layer(plane); struct sun8i_mixer *mixer =3D layer->mixer; =20 - if (!new_state->crtc || !new_state->visible) + if (!new_state->crtc || !new_state->visible) { + sun8i_ui_layer_disable(mixer, layer->channel, layer->overlay); return; + } =20 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" =20 +static void sun8i_vi_layer_disable(struct sun8i_mixer *mixer, + int channel, int overlay) +{ + u32 ch_base =3D 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_pl= ane *plane, struct sun8i_layer *layer =3D plane_to_sun8i_layer(plane); struct sun8i_mixer *mixer =3D layer->mixer; =20 - if (!new_state->crtc || !new_state->visible) + if (!new_state->crtc || !new_state->visible) { + sun8i_vi_layer_disable(mixer, layer->channel, layer->overlay); return; + } =20 sun8i_vi_layer_update_attributes(mixer, layer->channel, layer->overlay, plane); --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 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 4E5992F1FDD for ; Sun, 12 Oct 2025 19:23:55 +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=1760297037; cv=none; b=mmisCj8BLtxxzE/nRMw534aBMM1xT3k5T4LjLxhDNy8w/KPPU1zBYsVWSxzzgobDy+403GydPtp4aYjwTHWT4mfxQD8vAva1miADrQTpMUH/3ingUjWCer13BLVxqqKL6OJxCAk2p1tWR/K6BywhXG60PVEEhG7W0pacn/iON0E= 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=k/TuhrCh; 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="k/TuhrCh" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-b3ee18913c0so549768866b.3 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ljTiHpH/7wCq4Sb80OipRX+gpuymv7x8m1cTbrMD8nQ=; b=k/TuhrCh+qrZxbUlVNDZSm5mN5BRWBIohIqOUZUlerP8Jx1dm9uFMkWbpfw/XNb3lS fxHiziPFF0SmHqksdhZ9v6jQji0S3W384tcXLxiBNkFIWUrSkOXAzYtwHq/2b6J8ZEGm O3rz5RBtuLPR2jjj2Vgj6xpm2RNy0lzlJWRUTm9LSB9ti0Z69XM6EXZF+xpOD6ql8DHe fPyKMJ7qkqg2L0N7M9xqsveA5kxgDvpoKs66oooj0jebFxpNyMPbJ92GHJKwGQ0UMnr/ wxsHokh652KFFCTHI92I5HAvCWyGOXtInOIMSWKZErOygS/F9DL+8vCs3c6aFoKUw21G 7RPg== 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=daUzJftQqJr/7S5PizyF2VUs9tk6KaLjPI0YamvrvoqkQxzLE2bhKxplM2sfdD+NtY PM8wKpTleFZ5AJvJW20Ya6kHxFThtf5CTjcPkWNZXvXCda368u8SsNzHVcoj4juCF2CH uWEwFnRpfZ/UerGnjsgAaE7iHDd4E+wBCfWSli9AaPKwb2cChUCbXU5QLTKnvqmIgRin g2tzYbGbZuZmVTvRD4lqaLEqa0EL97lZsTeRGNy5Y9Y7fXbQw9B2WF1gqx3U/KGAZRFJ SC6jZlR6FEc0ohUaLlwBPoriGE2/spnjIDPfcMrhrzf2Vt1pU7O/tbtgVXV2y/OXfQ+M qA0Q== X-Forwarded-Encrypted: i=1; AJvYcCV8IeqmARRHAmUZMslG4iJDTVwj4PMXsOLi1LFHr3ArJgDo1ifYavMvHBjl3H9KIr3Sn2ZmniMX/syGDbA=@vger.kernel.org X-Gm-Message-State: AOJu0Yx/gcf/XMNErfwZKmFguuCWSiproQiRjcnzeJFhn7REEa4TpScg Gr7ztkdglt+kqmRVwuvCew6UbCNlnKOJEso5U9w9MFHpAGw9Gv5lbbxt X-Gm-Gg: ASbGncsDOeK2c+ZwnfGMOCzGSZQIxcKpSXp68oxoMrmYYO70oDU/rxxygUcUEfjlV3N kjbMKn2P5WNtzMMm6k5j++GpaLbKRCCMNM78xaH2jKrMlXr19RUWi30wNIpZiIE9ufORZedF7/A 1AuKPJaKHfnlJmOah5h2/sFvHWxlZCZQef6ZJczwf8hZfrHLBa86pkc89T0dshVEFOUrY5tVtE1 SEgAErTM58zjixoHVwws5iTP1hUidgEPEh8y3BlNGAEJ9iS/VbkqAnkErttAhMKtpqymXzunpqv gnXbR9zjYwwL7w7aYyZQi/FUBS9GGDdOS30iS18c39N43+nE8L8ElQP+6x5oiaFUxtTyz3Ko6bg CmIkS6xgjwdnv22xbtYCSTcZ/3+507FNag2oWfMvrsrg7Bkyr4bEJYntANcc3aRJNqtnciD6Q2t BbyOLhwPEXZORKE0e+uXl6 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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/sun8= i_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] =3D { }, }; =20 -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; =20 table =3D yuv2rgb[range][encoding]; =20 switch (mode) { + case SUN8I_CSC_MODE_OFF: + val =3D 0; + break; case SUN8I_CSC_MODE_YUV2RGB: + val =3D SUN8I_CSC_CTRL_EN; base_reg =3D SUN8I_CSC_COEFF(base, 0); regmap_bulk_write(map, base_reg, table, 12); break; case SUN8I_CSC_MODE_YVU2RGB: + val =3D SUN8I_CSC_CTRL_EN; for (i =3D 0; i < 12; i++) { if ((i & 3) =3D=3D 1) base_reg =3D SUN8I_CSC_COEFF(base, i + 1); @@ -135,28 +140,37 @@ static void sun8i_csc_set_coefficients(struct regmap = *map, u32 base, } break; default: + val =3D 0; DRM_WARN("Wrong CSC mode specified.\n"); return; } + + regmap_write(map, SUN8I_CSC_CTRL(base), val); } =20 -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; =20 + mask =3D SUN50I_MIXER_BLEND_CSC_CTL_EN(layer); table =3D yuv2rgb_de3[range][encoding]; =20 switch (mode) { + case SUN8I_CSC_MODE_OFF: + val =3D 0; + break; case SUN8I_CSC_MODE_YUV2RGB: + val =3D mask; addr =3D SUN50I_MIXER_BLEND_CSC_COEFF(DE3_BLD_BASE, layer, 0); regmap_bulk_write(map, addr, table, 12); break; case SUN8I_CSC_MODE_YVU2RGB: + val =3D mask; for (i =3D 0; i < 12; i++) { if ((i & 3) =3D=3D 1) addr =3D SUN50I_MIXER_BLEND_CSC_COEFF(DE3_BLD_BASE, @@ -173,67 +187,30 @@ static void sun8i_de3_ccsc_set_coefficients(struct re= gmap *map, int layer, } break; default: + val =3D 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 =3D SUN8I_CSC_CTRL_EN; - else - val =3D 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 enab= le) -{ - u32 val, mask; - - mask =3D SUN50I_MIXER_BLEND_CSC_CTL_EN(layer); - - if (enable) - val =3D mask; - else - val =3D 0; =20 regmap_update_bits(map, SUN50I_MIXER_BLEND_CSC_CTL(DE3_BLD_BASE), mask, val); } =20 -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; =20 if (mixer->cfg->de_type =3D=3D 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; } =20 base =3D ccsc_base[mixer->cfg->ccsc][layer]; =20 - sun8i_csc_set_coefficients(mixer->engine.regs, base, - mode, encoding, range); -} - -void sun8i_csc_enable_ccsc(struct sun8i_mixer *mixer, int layer, bool enab= le) -{ - u32 base; - - if (mixer->cfg->de_type =3D=3D SUN8I_MIXER_DE3) { - sun8i_de3_ccsc_enable(mixer->engine.regs, layer, enable); - return; - } - - base =3D 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/sun8= i_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, }; =20 -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 enab= le); +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); =20 #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, =20 fmt =3D state->fb->format; csc_mode =3D sun8i_vi_layer_get_csc_mode(fmt); - if (csc_mode !=3D 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); } =20 static void sun8i_vi_layer_update_buffer(struct sun8i_mixer *mixer, int ch= annel, --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 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 6717E2F7AB9 for ; Sun, 12 Oct 2025 19:23:56 +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=1760297038; cv=none; b=CXuaDyE3VAfH9nhZEgcUc2B5GerMLTF3FZWk79apkyNyZPaBDKOTkienodE1O8YFGfDURyOVnYlGJDlmH/v4lug5LIIA4sxUl0G5SOZEg/QZmVKujMJtioqfMuM4SPrA4pZNqbfyyFh8luXOCdol8U9n++4p2zHquWN9Sv4oYHk= 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=AHZannk2; 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="AHZannk2" Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-b3b27b50090so653289766b.0 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qN9JZUnTMzqv0Kva4/oSm7+m7qLCjBjh91j5rj1nu0o=; b=AHZannk2km0RJ/HXbAoCM3lnUY3qUQwkf960BxKon20kZx2/IyDIHokM0KuQiZQH78 A5WUR2+U3wsvjzgeIuy/01f6Ywl3mFUMDQk6YyUFD5ZhlqHGZ/CybNLZvHUV2CUY1zq2 Zo0M92yGYipSOklQdah46XLKbbEzVGNBgvPei872PiVTPOOwBT9RUrz0/7v7O7o+iCed gKBUSoCpkLNzUyNXEx5JHUYbR7z7Vt20sNKRzCwJvRJBePJkmK1fqD8dkGgJIyWUZMmF zOoSgW7KMWhR/aj++O25jFp1P4G1sdCWdHstEo6hn3L0C3a1L1TCcs1uzr4+9mERfl4u 8xIw== 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=wNO4URR11efA13Hh1vXWZZBB/PJfqmGIvL7gJ3PaFl0SPhaw2ROQ95lCNd0aDpcaXM dpyAXFvlXxP30SDc4AxESOMOOat25tBtGA61Bhkw3yf7nviAFnTOEX+cAbwGAHl2GUDr CIQrQqL8Xyk4xPCTQrN6qdOj9m2we8DfwmQrbNsOenuZZQK6BGphVIekr8XvOqM3iO16 AEZFQuKp5tpA+w50LMQ5G1r0yXqdDVew6binoMoB05AU7B//MKoovjZhsyHMmFHLYF+s mS4sv5v5qG7AFQRrki5KNHw0LGVg1oWeuoJfSBCkEpnVVrEsoCvGOkbBcQBBXYo47Q3D TIkw== X-Forwarded-Encrypted: i=1; AJvYcCUHLfpKSF3rRFktqtzhJNYReQ1k+3hjD3lquLBGsrSkdTi+JhFHDwIs/twpi0SLj7/AW8TRYJ9Aa52C2kc=@vger.kernel.org X-Gm-Message-State: AOJu0YwMLFWPbpQ/YmiTrqu+HSjNi1VC7BNw88AQ/Axl31QjBPzxzcSd 1N+wnsuoxrfeMwB9U4AJKMPS24dfLjXuGYC/5eWQo7Y21Nq9wMEBhI/W X-Gm-Gg: ASbGncsHZ41BRlLa+2aT+TBX8Wq9RNQk/E5kz+ES85PyRkcni5LfxyruU6TsyGlVqnu LMLeWMlvIEJ8/WK63y1zDOZ0Qludn9cW7Sz5l6EyOVJnKUc437lI1r3qN/grZfMobpJ3nZGCat1 JBClsNXUDjAA/JanttDtmhrvpxKDj2BbWwC1YaQ1NZJ4njSuTXRJSyDAjU619yZsnxwMs5xfj5g uEeliF2j5aC/oOgyhaIDl2c+9TcWVoxsriUUAJcyJ676OVVGFLOe8IFUDSx037+Wku9Jvc2UJ56 16CYT17D96+nb7RKAVwlPtxLcsXAGMS2s08Dj9J1nkuZyU6zz/0EqnqAJ8EjqeNy737U6UzwfTv xMAWbl/1nr2t/hdGuUVZsfZdubT2JRhdJ7RPTZRsxt81kiJyP6JAWKYameERHIYk4dY39+/qHc5 3mfcZnvvSgv6hUKXaaSTLS 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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/sun8= i_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 */ =20 +#include +#include +#include #include =20 #include "sun8i_csc.h" #include "sun8i_mixer.h" =20 +enum sun8i_csc_mode { + SUN8I_CSC_MODE_OFF, + SUN8I_CSC_MODE_YUV2RGB, + SUN8I_CSC_MODE_YVU2RGB, +}; + static const u32 ccsc_base[][2] =3D { [CCSC_MIXER0_LAYOUT] =3D {CCSC00_OFFSET, CCSC01_OFFSET}, [CCSC_MIXER1_LAYOUT] =3D {CCSC10_OFFSET, CCSC11_OFFSET}, @@ -196,21 +205,44 @@ static void sun8i_de3_ccsc_setup(struct regmap *map, = int layer, mask, val); } =20 +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 =3D 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 =3D sun8i_csc_get_mode(state); u32 base; =20 if (mixer->cfg->de_type =3D=3D SUN8I_MIXER_DE3) { sun8i_de3_ccsc_setup(mixer->engine.regs, layer, - mode, encoding, range); + mode, state->color_encoding, + state->color_range); return; } =20 base =3D ccsc_base[mixer->cfg->ccsc][layer]; =20 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/sun8= i_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 @@ =20 #include =20 +struct drm_plane_state; struct sun8i_mixer; =20 /* VI channel CSC units offsets */ @@ -22,15 +23,7 @@ struct sun8i_mixer; =20 #define SUN8I_CSC_CTRL_EN BIT(0) =20 -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); =20 #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_m= ixer *mixer, int channel, SUN8I_MIXER_CHAN_VI_DS_M(vm)); } =20 -static u32 sun8i_vi_layer_get_csc_mode(const struct drm_format_info *forma= t) -{ - 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 ch= annel, - int overlay, struct drm_plane *plane) -{ - struct drm_plane_state *state =3D plane->state; - const struct drm_format_info *fmt; - u32 csc_mode; - - fmt =3D state->fb->format; - csc_mode =3D 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 ch= annel, int overlay, struct drm_plane *plane) { @@ -333,8 +303,7 @@ static void sun8i_vi_layer_atomic_update(struct drm_pla= ne *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); } --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 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 B39AF2F83CC for ; Sun, 12 Oct 2025 19:23:57 +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=1760297039; cv=none; b=cXhbcDQ8om57fCxHAy00sZSS+ezW6KRyBoV4SUrRHdP+MBWB0PWB1Zytw83f9tPwlNrcGt+37yneXkEURFpOhSe4s6Yl7lcLy3I8CQpIEAenuEIt7YkfCGdAoLt2IAc8m018QlmT9n+IvDObNcRMnRTMHj9sej+JNrbc7VbvXW0= 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=mahHmJYC; 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="mahHmJYC" Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-b3da3b34950so600180166b.3 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UQIOjRIdDsBl/wnqSd50NloWouLj/f2wu4NfISu0ViQ=; b=mahHmJYChAiAvqAKzmk48l0utsVppjScF/HYRo8ngdI5BkZIs7TXcLs9DV1Mo7dkW7 7sKA1oGMQrDvCTmtMSKAzQzkq0RadbVfnhiwTSopjb+1/DCWeNYR9jwNpJ1tq+YxbaEn mJa8C5eiGOhlObKNKqTte8KttrZpznuk+4zsoX7B31QAkbtrcjJaGD+IEURz+xWT5EQ+ 4BMQPskXxwEMofybVnUYSposkGOW+BgGuig21y5J61Ab/7Djrcc8o/9nYZJuoNsfO9CL sw6yn/dBLjDjr6+OUtfwRa0J2Nzfv5y715gEaNfX9SHwVAKJPOKFGvS1A0oaXvxfcRqx VXyw== 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=V2shkbE1uhVDNhMJvTeWJjr0LZ0eAF4aksRc7tHlV07hrhoZB3RzXAq9aze6E06ou8 /uOWsfv6JxGOcuH4iaWYrRTRz8tE6+1BFc3B1lT1dKcINQV9/d1QPgh2k5TDVIpJCXxb z20wCd6mlpHQvTRJqzw6abZ2TGFwZeHoz6YEfIvuBxGnnTw0EghvvGYNWnm1qwakeKxN D2RMNhJGQjqBj2klTdsSQja4jmfUe63W7lx82SWmncO1RAb+F1DRkrtyds363BTna2Fg 6SrMozYb85TUWnSzJStm7PcxyS9+YeaZ4k0w9GtOXvryUstXVl/mI+ZN8pMutJSGblWC DsZQ== X-Forwarded-Encrypted: i=1; AJvYcCXsXyIAARuLePenfKxb8kY1db3MAeXwJbaK6fEV8o7B18TFppkKRv7wl8YIXMYZD2JksKaELxySMFLusOE=@vger.kernel.org X-Gm-Message-State: AOJu0YxEGn4YKFx+XAMmzOy7tuHdSFgfr0lZQzGvkx6vrSxsD2hR3W0X k/TzDsKVyJNz666bZjpGQSa2BaWuEXnBucgLCyPx4vBRDZfy9SImAbN0 X-Gm-Gg: ASbGncuoF3AJozqNFjrA67sJ+qQKA7nxf/JoGBbCmFnCQCcKMCTYsKrNoW01rn/e815 U/flCYhV17i5spIQY5dOOrb3P70h1StRny83Sl7e0kqyAmm9ayFgNX0WrjpDMlnYbpkOpXT1oIB juq/2V99870XG1zC3uI90WbjJHrDdgQVuCsOx2VfYEIfa34msUwIZRRvBjLiLyVkT0FBNGP1YnV /DSgaf1vcGM3ru12ouDvUiI+g50576XcRF6tqts1RQ3fbIYREgybT+slkZaO4oUyKM7owBR1xYp gBit7yPG01LH6UIrzp7hILVNVTrGGpsHqWBz9P+CtBlvVGCMCAf5OX7xO22accNKVr48cikiFEe Q+ChM4aF0ktm9NTdLGQXIe3mvfedVN4xhXfVG3DIX8u3R0yCSce1jx+dg4qsMRg7TOS8DxVMNzW f2nwggxgSYmubGohmtpBHF1TZiDvoDse4= 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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/su= n8i_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 =3D engine_to_sun8i_mixer(engine); + enum drm_plane_type type; int i; =20 planes =3D devm_kcalloc(drm->dev, @@ -326,7 +327,12 @@ static struct drm_plane **sun8i_layers_init(struct drm= _device *drm, for (i =3D 0; i < mixer->cfg->vi_num; i++) { struct sun8i_layer *layer; =20 - layer =3D sun8i_vi_layer_init_one(drm, mixer, i); + if (i =3D=3D 0 && !mixer->cfg->ui_num) + type =3D DRM_PLANE_TYPE_PRIMARY; + else + type =3D DRM_PLANE_TYPE_OVERLAY; + + layer =3D 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 =3D 0; i < mixer->cfg->ui_num; i++) { struct sun8i_layer *layer; =20 - layer =3D sun8i_ui_layer_init_one(drm, mixer, i); + if (i =3D=3D 0) + type =3D DRM_PLANE_TYPE_PRIMARY; + else + type =3D DRM_PLANE_TYPE_OVERLAY; + + layer =3D 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[] =3D { =20 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 =3D DRM_PLANE_TYPE_OVERLAY; int channel =3D 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 =3D channel; layer->overlay =3D 0; =20 - if (index =3D=3D 0) - type =3D DRM_PLANE_TYPE_PRIMARY; - /* possible crtcs are set later */ ret =3D 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; =20 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[] =3D { =20 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 =3D 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 =3D ARRAY_SIZE(sun8i_vi_layer_formats); } =20 - if (!mixer->cfg->ui_num && index =3D=3D 0) - type =3D DRM_PLANE_TYPE_PRIMARY; - /* possible crtcs are set later */ ret =3D 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; =20 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_ */ --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (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 AAAD72F7AC3 for ; Sun, 12 Oct 2025 19:23:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297040; cv=none; b=bHliZtA5acw0+TeHBP4vKPtkargSiYrR9EXVrB/O1AQYXN4wlLtJodyf27KvQJSfxZGZ7nMMipkf4SOT4cRGELYqNEFLUYASRlRXY6BEXWNpStDF7baIhXXKUeq9IkEzg0QoToHwnTkLRUILAbMkMQx2wZK23j5zbHBEYQkGElA= 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=dxn7K1Uq; arc=none smtp.client-ip=209.85.218.48 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="dxn7K1Uq" Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-b3dbf11fa9eso592131666b.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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4rXnVYjWRna1Dp2XBUdGu2XgFBNqeWg8iiIcPP8l+VE=; b=dxn7K1UqFbfguvmZKRfCwB8urCJOdZOfCTSnDiiG5w4Rn2cuGGIwxcDNwJdufR9STv Ecwr1DxqNOcSJ4IxjdNddLn5ClEledTHOSvyCvAVQWiAnqwP6LVSQqbzFz9wxj/bkn7k 0JbuS2c13vi8etGkuguwQSefjT+MZ1GjcKeTmaEfiL2rMOPCZN19SfbTKj116kBDBlA9 MvIMxJbwzmbg3G3/YrRuK7jMVsHhyGUGhGZ1WImFAtQv5TI+PvkEOpG+rmGDJSEs3W5H UWGV6sHo1c6m/OmQSY3synvznqoQTKhY+kTdMHt51uCy3DlqQT+qBq3gfUmkeHYil6tF 5ibg== 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=JZGRlh6g02L7REqm+adkiztdcIyEbyxhsRuoNX+hVD1ITQtq5gctEIajFNKKm/dkxX 7gbGd/GfJw3ATLx+FoxjZlrTnKNwb5kLvrBuob2Wy0OiyTxWHXAbw62tHI4NEiFqN0Bc pgR/O9eCLb0Q0aXDxGYpLfKUdOXC5GnJeWSd7Bf/5piffVuFjXKWKe3FNgeZUqUz7vsd k5gQ8McMtnuPmDHDq/5xDDP/M1Evg+5gO30oQ8YpCwZOTKVPPGgNbeICOm9DDyrTSb46 R2Rnaz/hAzjWT7moxs7Tg9y+6cPKR6Zw7N5FoOaTjh+l7ksN3EaKIaH4haFJmgC0QcJ4 4tww== X-Forwarded-Encrypted: i=1; AJvYcCVagNOCZQV+bJDLBcB9Im1wpI2/dy1pY9U+kDGuJ5Kmm0YKWnIjF3c6LkSfZtiZq+0+uqgA/wqv3q9+bNA=@vger.kernel.org X-Gm-Message-State: AOJu0Yx2uvVLMsgRAUAUAtQz52GsNi0s4TG/f+R1uJWsA1+dUOWtfihj huKIQV0St7k5EP5JG2Q+ecCfdeTw5Z6RCdEfy1AJ5/LDy+rrEYfuo9qQ X-Gm-Gg: ASbGncuOpHVtyqhCADifD0FDx+lSrJcSVt20WfUuKBbCzotekKE1435+YiohXbcISnD HRqX23H3s7Fso6Gnogn5U9iOtfP9BWvRdRzuTerlUnhqjlWNwVPNUVrMyITS4U0SA8e3ufZlf1V yifsrHi3HvuoMiyfvveiHEIgTMB0w6c0XUBETf7o1z/fNa2QETfjtQ2mqE94+JbnZC3Y2YT/u6g /YOI0EWkNY90xmHbGGUU4G2TH2Ekj0UNIL0/JTVp8qRWlMU6K2+Oue9bA1SzLf/1jkjnUE8MKWO gyLgfrox7QfT0/cAX0e3K5oNfejMMr3mhyVmpoZRKFR+sWUJWYtDUuISPQ8CczuQIzXX6o4ye1C Qf+0nfNTdkG3HS7NRGKQ8TZgmQQhMvyKRcwJ5AiGgXqC9dwna2TmDPzGdbxtMWRTdGdo6VZ2GNT mwl1zeITa7D/oh6ST1uG9n 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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/su= n8i_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, } =20 for (i =3D 0; i < mixer->cfg->ui_num; i++) { + unsigned int index =3D mixer->cfg->vi_num + i; struct sun8i_layer *layer; =20 if (i =3D=3D 0) @@ -350,14 +351,14 @@ static struct drm_plane **sun8i_layers_init(struct dr= m_device *drm, else type =3D DRM_PLANE_TYPE_OVERLAY; =20 - layer =3D sun8i_ui_layer_init_one(drm, mixer, type, i); + layer =3D 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); } =20 - planes[mixer->cfg->vi_num + i] =3D &layer->plane; + planes[index] =3D &layer->plane; } =20 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 =3D 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, =20 layer->mixer =3D mixer; layer->type =3D SUN8I_LAYER_TYPE_UI; - layer->channel =3D channel; + layer->channel =3D index; layer->overlay =3D 0; =20 /* 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); } =20 - ret =3D drm_plane_create_zpos_property(&layer->plane, channel, + ret =3D drm_plane_create_zpos_property(&layer->plane, index, 0, plane_cnt - 1); if (ret) { dev_err(drm->dev, "Couldn't add zpos property\n"); --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (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 45CB42F9D89 for ; Sun, 12 Oct 2025 19:24:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297043; cv=none; b=e3d3W0vr6g8Gss3+tHkxT4MczNPmc2lsULtGkHikjdE66PiUuHofkOsMpGog7Lnvzonah8An6inkOWQ7xEhs9wbLZVOWnTpFhy0s0sKTqvPwx8QAuj/AsfSD3ITvXgJlcP1JCV7xuvAcdTAiWhLAN6q+AQqQnrMqv5UHOvMNIAU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297043; c=relaxed/simple; bh=zj1rOPUM5oZeeTycyM+Ty1Sv9Bs/6lqDALJplKv3ek4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ianZQZEoWNwQrSPIkUscz2aXSEbz8JBUy5FimdW2yYFpV8ZJZASO5e4nXwQwXm3CuzhP7zXyuA4c8M6oJpGkXGsLiU8hQQ/xd3QpMFgiIOzLXikEoBUkh/5QGabWx61P8ALVoHbLj4UYAE+GTNc/L1U0zRVWoqRTtHBKxOQU86M= 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=EUPJfZjc; arc=none smtp.client-ip=209.85.218.48 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="EUPJfZjc" Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-afcb7ae31caso728495366b.3 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=1760297038; x=1760901838; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=v7B5z/6FvG3I54OQ4ZNRVyTMbTdgGg3l1ZfyjU4MqtQ=; b=EUPJfZjcALr496N6wCmnjHAMDNXScWyhkGJuCK6EhUhxsxq+Baehl4tyFKfV4i4cZz CwJw3fz6I+fhCoKl7uXF1v2eUzDl0ATDHnSbRPtPJJ8sVQPq5umPyuLqE5XxgEw3mVAJ CtY6gg7d+yYvg3bsftaCN+GFv2XndJtt77ZnhLGrtRcPsQQ+Zjn7mQG/RQuJdlY2Caau 9Of5CtMkx1AEc7SDvUnQ6WtKc/dAtNq03jKPLXF48pB0QMXpSIxuQqHhFdSX4CFSsHU+ 607wH6ByKIVSHDTksEx769knNK5R6HBhXKO+bXKC3p9FqRsi4kUqDL5fYSA0JBfVBw3p Acjw== 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=Ex9lM2U6zcmjkAQwBtwmGnShNDiwbn5fgC+Z5cuHrDCoCciMAIFeIYb9DkuoAwGd2y VuzmnMyKcORIzQf3JUZJ/Rla51RPMv8qsJke6USUOsWyT34DXNItqB5zRKjMNAtfVPrg RIbZLKC7LExH58xzfDeZAY5+fJFHDZMcrkenAzCNM7buo7oGZ+pWd0QwlG8+ieGoSUNH 300oi2kXI/IIu8IlNLBs6cOwBE2AmMvk9p78jmCXV4UnKCb85HH7gCs/B9hlVnk44sQN 7zymMwgQwo6VL3pptgHLRf37k8JiWylxnD0PwvhQfo7naJvxzrO+OtfCa2HH+DiuxURN a+2g== X-Forwarded-Encrypted: i=1; AJvYcCWLR6IAq/qUwDhvCZPr/OhXLE4h9lfmh8RynDjSan01co13GTG+HrGML5tII/fU19Z5VItIgdF4Lc8lXFY=@vger.kernel.org X-Gm-Message-State: AOJu0YweDD/7k/KvsXteO/uaj3ewtIL2UP07EH2iS7uXSbnV0CGIVKyl df+GaONgmVUg02aQvaY7EMMQNmcFi+AEGP1gT5bOnt70r5PTYTQCT+vp X-Gm-Gg: ASbGncvF7WMG/ZcPCaeIi1rYVc8grUFfHC8Zo8++f5EoPeAJC8Brd1gG5SGpKCrx/Is bRZ+NjDYYoXI4PNmUkW6f6wqFoXmHA3Iq5pIGFX+xkQ2cCAAeKCgc/KMBoC9v9YsvKyH9zQEvXs 5aRiOIRf+ehKRSAlwp2xVtMEa4p7FCJ/d1tXaxTKlV6I0XkiD/Xo/tRGV1bTlXtliFkhakD4sJ6 huBWOJ1GT9kMu0njztEnwCCw902Gh49fpAbPgj1RxXMofqPbioaOsa71/0+CJnn9/Ntj66VBYLQ k/yaOFRHnr0eqBH6y+0yITo9M+cZC0d28QsqqrGisCgxVcBM2GwHkH1uOly0dLQSS2+RYOvYlh6 /4BAfsxhF/A5ThEDcx+JNONR60emGbfyT8E1qEzWqVgok30owWdg+vgOd8MC1LK7K7q3/qa9mkJ Dfx9+yMqkEvi9dbfIu5G9dO7huzlHWaDI= 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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/su= n8i_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 dr= m_device *drm, { struct drm_plane **planes; struct sun8i_mixer *mixer =3D engine_to_sun8i_mixer(engine); + int plane_cnt =3D mixer->cfg->ui_num + mixer->cfg->vi_num; enum drm_plane_type type; int i; =20 - planes =3D devm_kcalloc(drm->dev, - mixer->cfg->vi_num + mixer->cfg->ui_num + 1, - sizeof(*planes), GFP_KERNEL); + planes =3D devm_kcalloc(drm->dev, plane_cnt, sizeof(*planes), GFP_KERNEL); if (!planes) return ERR_PTR(-ENOMEM); =20 @@ -332,7 +331,7 @@ static struct drm_plane **sun8i_layers_init(struct drm_= device *drm, else type =3D DRM_PLANE_TYPE_OVERLAY; =20 - layer =3D sun8i_vi_layer_init_one(drm, mixer, type, i); + layer =3D 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 =3D DRM_PLANE_TYPE_OVERLAY; =20 - layer =3D sun8i_ui_layer_init_one(drm, mixer, type, index); + layer =3D 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[] =3D { 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; =20 layer =3D 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); } =20 - plane_cnt =3D mixer->cfg->ui_num + mixer->cfg->vi_num; - ret =3D 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[] =3D { 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); } =20 - plane_cnt =3D mixer->cfg->ui_num + mixer->cfg->vi_num; - if (mixer->cfg->vi_num =3D=3D 1 || mixer->cfg->de_type >=3D SUN8I_MIXER_D= E3) { ret =3D 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_ */ --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 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 077D82F9C3C for ; Sun, 12 Oct 2025 19:24:00 +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=1760297043; cv=none; b=ek4UcHGc505sHKsMXuFOcZ0Wt7ib6UYNe2gzQm0x3cAX7jahmnqot7xxzSbdGpv5xmHFObRyWtHkwBFnikZUEFtpjE93EYVEOXjloyqInOc9Hub9Hfvb9sT5U5Mo9nXO46Qmsb7mwqStVDg+DlHhc5kUtjzb4Yxj00bN6WRuqlk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297043; c=relaxed/simple; bh=k6sfFLRDZy5wK4Z9n6cVxPJtWPapLDCxQAuqb+LuH0k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=G4f3CIZy38DDq0TNcnHCpc2jRKJp9XqsItSt6skYLBuTPX8B2p8QApwvfZoe7gRkUj7paOPecOcKQdIkwvrtHMIbfw8miz/46um4+DbezY2sSvloK3JVMr1aLCjLBU58st7+zWv2Nb/52USSaU75EbUU1y+QT7HNVzzIONsCHv4= 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=G3DAwSF/; 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="G3DAwSF/" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-b3e9d633b78so652798566b.1 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=OE7z3Ym6vzsdMqeurGEJ9WmMXX0dMfNPsEVDzikE/Uo=; b=G3DAwSF/ucpDfozs9pdZycjkw5Vr2pVvdlvonJNaF93k5kz/xHMnDWouz4nBM4Qu/c GeBdvAhZW9hxgpkN4bPad09CgDhur9O+5hPtRZy8zoU8uJDzq7eEiNSXIxGH24oab2Gb iVuUkqwBCCWcm1igWmEaTk+12RwM2eRnCSV56eM/noBMX0P1+ftKVIchDkrNdr6WXQkW p1J/BfMPaNhwQJsF1out/2ZoSu9NNwkb0SmROlkQ/JNSB6xViO7XZa25xAgFyz9fejN5 EL+51OqZGzAFX0DD3nGn5Pc01sEg6JQHrOn+O/h8qxRtFjKbG2fFDFcb3XOrMv5hdQ2R 7UDw== 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=tAiPPPgkjDuOtKhlVNW0csvLKhJWyaC/8mMPDjPNVlMpLnY5A5/1Fph916gN07+cX3 rwJgHwx3gOhCg4Ui1Y6SxX0U2L5IbDSHz7s0VMKLJNP2MirIQwQ4yx3AniUsy8txW4Wy 4chg8Z8cMt4W4WwwprUmNlJeY74KACIH8gSao7JBraBsticdiApiSr2s630bi/I/lkWt 1nDDlvwQ5V3/w+YfxBxOh5LaUDKQSMzRHp0IvqmYPShsfKMP4if9e7PYWEH4Fe+tPrLc 2u8ojw0/JCzCavHM4Scrdc4LT8RjTuKHykYS83TjMFYDQgtEW3djLGJ4LlJIUNxrIvqb DkTQ== X-Forwarded-Encrypted: i=1; AJvYcCXgiUy3FODq33tbfH+58XIJBn1w1pvyneWDuBLhEZQAhg5Sykxi/3v6w4Av4PhHA1JQhiG5OwgaR2FWZRU=@vger.kernel.org X-Gm-Message-State: AOJu0YwVM4Fu7NL3T7h6ciHSmoulix9xU5DIvV27nkvzYQSHUBTOkMyQ TqHcN4tF3bK5c+11qMWIiQcGZPW/mKdglQop0VCT5x3q1BpHWcrQJGsE X-Gm-Gg: ASbGncsEO23A+8sK6krKBUndREaUZB7Eg1koVSLc1009to0XkOCs/0e1Q2NTZh3JfxG 8chzxOZa4Y7BJknPaThDrjcMnvilX91dz+nwTxCBoG4INBpXQHqSBNAfBfP1IGdwwUpRq+7Iwwd AR0YIMI6dn8c7souCStNpLARZRX70mIc1J+3PjYR5sgY8qaEiD4/BS820zvPylEhhuPsZJ8vsyi 7YCJHXmzoXV2kM0CU2uihNAwT5uvRsUyol4UOmxF6qg5famBw7YCPf3JEVHmzWbtvFGihrNdM02 gnxbix8Lw9OrdcXl+146ForB6+qH141Ej4zbieU5ZLuJbW33s2VmKlsgcPExiZ5j/puSyMPy3Xs ozZ6bv/7CRfVjnPl5/fRNNEpyI+hIZPsdzgwKb7UON9zrq7AlpPcNlfEJ/LnY7t7/KBV/zmFKBf /3HlC6cGpLYxJMmveWUcpO 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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" =20 -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 =3D sun8i_channel_base(mixer, channel); + struct sun8i_mixer *mixer =3D layer->mixer; + u32 ch_base =3D sun8i_channel_base(mixer, layer->channel); =20 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); } =20 -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 =3D plane->state; + struct sun8i_mixer *mixer =3D layer->mixer; const struct drm_format_info *fmt; u32 val, ch_base, hw_fmt; =20 - ch_base =3D sun8i_channel_base(mixer, channel); + ch_base =3D sun8i_channel_base(mixer, layer->channel); fmt =3D state->fb->format; sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); =20 @@ -54,22 +54,23 @@ static void sun8i_ui_layer_update_attributes(struct sun= 8i_mixer *mixer, val |=3D SUN8I_MIXER_CHAN_UI_LAYER_ATTR_EN; =20 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); } =20 -static void sun8i_ui_layer_update_coord(struct sun8i_mixer *mixer, int cha= nnel, - 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 =3D plane->state; + struct sun8i_mixer *mixer =3D layer->mixer; u32 src_w, src_h, dst_w, dst_h; u32 outsize, insize; u32 hphase, vphase; u32 ch_base; =20 DRM_DEBUG_DRIVER("Updating UI channel %d overlay %d\n", - channel, overlay); + layer->channel, layer->overlay); =20 - ch_base =3D sun8i_channel_base(mixer, channel); + ch_base =3D sun8i_channel_base(mixer, layer->channel); =20 src_w =3D drm_rect_width(&state->src) >> 16; src_h =3D drm_rect_height(&state->src) >> 16; @@ -87,7 +88,7 @@ static void sun8i_ui_layer_update_coord(struct sun8i_mixe= r *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 =3D state->src_h / state->crtc_h; =20 if (mixer->cfg->de_type =3D=3D 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 =3D=3D 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); } } =20 -static void sun8i_ui_layer_update_buffer(struct sun8i_mixer *mixer, int ch= annel, - 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 =3D plane->state; + struct sun8i_mixer *mixer =3D layer->mixer; struct drm_framebuffer *fb =3D state->fb; struct drm_gem_dma_object *gem; dma_addr_t dma_addr; u32 ch_base; int bpp; =20 - ch_base =3D sun8i_channel_base(mixer, channel); + ch_base =3D sun8i_channel_base(mixer, layer->channel); =20 /* Get the physical address of the buffer in memory */ gem =3D 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]); =20 DRM_DEBUG_DRIVER("Setting buffer address to %pad\n", &dma_addr); =20 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)); } =20 @@ -208,19 +210,15 @@ static void sun8i_ui_layer_atomic_update(struct drm_p= lane *plane, struct drm_plane_state *new_state =3D drm_atomic_get_new_plane_state(stat= e, plane); struct sun8i_layer *layer =3D plane_to_sun8i_layer(plane); - struct sun8i_mixer *mixer =3D layer->mixer; =20 if (!new_state->crtc || !new_state->visible) { - sun8i_ui_layer_disable(mixer, layer->channel, layer->overlay); + sun8i_ui_layer_disable(layer); return; } =20 - 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); } =20 static const struct drm_plane_helper_funcs sun8i_ui_layer_helper_funcs =3D= { --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 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 41AF72FA0EE for ; Sun, 12 Oct 2025 19:24:02 +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=1760297045; cv=none; b=sWLLu06DBhyya65HpirVwr4bbnUdDFXusfzGoio82vK0CBrwGvnw2weH0Twni9WWGk/9/2kq2JWpxrcKd8MXKTf9p2kGGSJ50y/CKDXMbIbE/DXL51U3aAL9ySLnqiebTYaOIEr0PMxgrJYT2+yihgIn14HNa1iEMxE81E2++xk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297045; c=relaxed/simple; bh=VMGFXyUFgbi3kCmM6PTUqzyMycpO6B+C8ZN7eSBLhS0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=oQPuWhP9CZYRjkYphNpm2ZdbCtnFIWrfQbInqk3dXxIsHxGPTS9yyXcUM+s8mi90ZwCkqt7XEWsnLKNdUFMVXbiXkPU5Oef/K8kIBUHzB0xNFNeng/iiWSqdLG7E2CBmlupgTTxYw6VnteXG6EQ4791mNJ1N5qBKLc+uvZJRW+4= 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=drsYuEhF; 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="drsYuEhF" Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-62fc0b7bf62so5241273a12.2 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=eL2EBWUDT3u08ZkUVEOOStqc7WgxRVhnqkwZQdEEL5M=; b=drsYuEhF9cdN+Ui0/hP90m5a0CIU629/FfzmjxioVFqDzGzLwb7QHTU13A5YdDXf5A QTne/qvKQ5GP6AsrYu9iX7F8fStr6jRe+2njCW0Ety+amurHccKFE+qAS8xWQZkU3g8y yLcS6M33UCAGUiCQtCO9z0H07XZalYmqCEKKGoOkGQX2Jmp4D91+SqzUJLnmYL2emoXF Js8/zciVftZJaxvZQ2vk/msD7I4HsSFqBKB6Dwk6gDYPIzL9F1uRiY3tKhAhtk1OaVak cirKjlBfqxGW86sGgNsITYzOV4oHrGjSO7ibuMQfjxsshDLqp0n4IAi3p0mAcb6yRsTd 7i5A== 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=gQJF3sHcBgASe2nTSj4meDqeLTOxjh3GPABwn8n6rKrW70EoB7O+lbFFzPS/FkZ3Js 8yEafBh1Uvs3mlS1nmHgZc0VOAsE1vtCrlhZnOnQcp1xS0IL0wG02tvuoJn1FTsqHvMc ht7LMNjYCIKdfrFuK603cXggJF19JvsaekQmp4SqABoWZLYNt99QJRW852sLxe3YHfQU vO8qj4ZKw2bg1vP8GhX96IjyiExzjg1rPikqxoXDdMibirntbv0UqDfakDjcdDfxHkBG Vp5RllaYn2Fwy47NeDvIZT2WtX+ijXVOrjSNOzH6GqYy+X4UEia43M/h5T/YF7jUlZDF OOrg== X-Forwarded-Encrypted: i=1; AJvYcCU4D66kdJc7JLgP5mSV8PCgcM1VbY86j34iz/kca9aj3XWm2eEghIPDBA/GQV3ke7gEW/W4W8P69LedcRI=@vger.kernel.org X-Gm-Message-State: AOJu0Yzddp6DjB1t5rJhZ6np9UNU3MlVF5PhSCNJugxoyTnqmpoOpMW5 jOVUq6wVwslJgXBXRo+T/LdkL5xucBUgzvTIoq8fG15gQs+oYuP9FRnO X-Gm-Gg: ASbGncu7uCNhFtFu9UiA/xvmNehyUJ4khCV1HmnKSWqcGGSIQamXd/GtgtT25gYQlwl JN/B2ZQgbq9vJTEjb98B5NAqNA8xK2yVt7s+IdFziJYCKoMh+zlpraGZjcw3c1b2WLAVHGU8RVW raqmgOOPsoAQt0X4j5WwfIvMER/ijE5wmJBA+40EyyucK0KYw7/zmKo7BgN7tE6XxGOsNuOO5Ks us3fjuPgl45QUx40Mrf4MLULlBCfFnlHDZq2+L51s8D194chS4IAZEksC84uLOVw7bGLsby1Pod nZ6LNcAlH3ZupxITVRWnWCtBs+hBUawrm6BQLT5AWk2f5vymyd6BKtqt8SYlTVvN0TF2BZfJYCu 9phr45BOgEiZmSV8SlTvni5/LO00BrWRvYcF+8CAOS2GQcQDZT1+YlsIx3iYiHRMbOq99KSutqK NfT33DRx1sTgRh4tRtjJLtSHRTWz3T5+EpHM47VHn7fQ== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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" =20 -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 =3D sun8i_channel_base(mixer, channel); + struct sun8i_mixer *mixer =3D layer->mixer; + u32 ch_base =3D sun8i_channel_base(mixer, layer->channel); =20 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); } =20 -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 =3D plane->state; + struct sun8i_mixer *mixer =3D layer->mixer; const struct drm_format_info *fmt; u32 val, ch_base, hw_fmt; =20 - ch_base =3D sun8i_channel_base(mixer, channel); + ch_base =3D sun8i_channel_base(mixer, layer->channel); fmt =3D state->fb->format; sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); =20 @@ -55,14 +55,15 @@ static void sun8i_vi_layer_update_attributes(struct sun= 8i_mixer *mixer, } =20 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); } =20 -static void sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int cha= nnel, - 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 =3D plane->state; const struct drm_format_info *format =3D state->fb->format; + struct sun8i_mixer *mixer =3D 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_mixe= r *mixer, int channel, u32 ch_base; =20 DRM_DEBUG_DRIVER("Updating VI channel %d overlay %d\n", - channel, overlay); + layer->channel, layer->overlay); =20 - ch_base =3D sun8i_channel_base(mixer, channel); + ch_base =3D sun8i_channel_base(mixer, layer->channel); =20 src_w =3D drm_rect_width(&state->src) >> 16; src_h =3D drm_rect_height(&state->src) >> 16; @@ -112,7 +113,7 @@ static void sun8i_vi_layer_update_coord(struct sun8i_mi= xer *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 =3D (src_w << 16) / dst_w; vscale =3D (src_h << 16) / dst_h; =20 - 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); } =20 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)); } =20 -static void sun8i_vi_layer_update_buffer(struct sun8i_mixer *mixer, int ch= annel, - 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 =3D plane->state; + struct sun8i_mixer *mixer =3D layer->mixer; struct drm_framebuffer *fb =3D state->fb; const struct drm_format_info *format =3D fb->format; struct drm_gem_dma_object *gem; @@ -200,7 +202,7 @@ static void sun8i_vi_layer_update_buffer(struct sun8i_m= ixer *mixer, int channel, u32 ch_base; int i; =20 - ch_base =3D sun8i_channel_base(mixer, channel); + ch_base =3D sun8i_channel_base(mixer, layer->channel); =20 /* Adjust x and y to be dividable by subsampling factor */ src_x =3D (state->src.x1 >> 16) & ~(format->hsub - 1); @@ -232,7 +234,7 @@ static void sun8i_vi_layer_update_buffer(struct sun8i_m= ixer *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]); =20 DRM_DEBUG_DRIVER("Setting %d. buffer address to %pad\n", @@ -240,7 +242,7 @@ static void sun8i_vi_layer_update_buffer(struct sun8i_m= ixer *mixer, int channel, =20 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_p= lane *plane, struct drm_plane_state *new_state =3D drm_atomic_get_new_plane_state(stat= e, plane); struct sun8i_layer *layer =3D plane_to_sun8i_layer(plane); - struct sun8i_mixer *mixer =3D layer->mixer; =20 if (!new_state->crtc || !new_state->visible) { - sun8i_vi_layer_disable(mixer, layer->channel, layer->overlay); + sun8i_vi_layer_disable(layer); return; } =20 - 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); } =20 static const struct drm_plane_helper_funcs sun8i_vi_layer_helper_funcs =3D= { --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 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 843882FABFB for ; Sun, 12 Oct 2025 19:24:03 +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=1760297046; cv=none; b=iCR4Rbsbjw8exJKjSZgDt7ar1prAzrnLZonRtnxT8t5xkyvF6pDNWc9I80N6NdFoxjf/wq9zj8uGOFDvmgkoyWLnAkfEPDn6waDLI8nfAdtnfMDNaLAoDh7a7lvQb8Q5h9aEj4COd7dDmwRIbHg4wMl8ioR5K7AXkQvT9dho90I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297046; c=relaxed/simple; bh=104h35l/DchpohDTQvOcPAlK0/ZZNw6ykSs+tKAkpg0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KFLBYh1iPxPQbDrp0f8tZnqZI08VfYuSIThAX7LP07BF2ZfL6X09Imja1CO7XZPCRZDcU27OCc60IJ7Ca3YufMjdjqvV9vfadry8d2wfq4f7qG2qQFJUACg8FUCQB/bjJBB6syMOXQOkUXnBFwLTO+CD8oDt6/gBYgkldAdQmg4= 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=gy5WxRbL; 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="gy5WxRbL" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-b3e44f22f15so514475266b.2 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=1760297042; x=1760901842; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=FWJm6Ru2WyONf5Yro6jfwB0WobfTQWEzjnSYauNm30E=; b=gy5WxRbL3f4EPzFC9Iizxud9fO0LZuKdmgJL5Rjwb290vEt1kOsXnUheRQi0TsY3W+ sw3Tgxhb6zJ2UEPyEitnqVMf6NX1eFDrGzKxxPPTIPoW1ivZEJJd2hvGszbhWjbf+mVD 5+Hl1jnX+QIjCR08er0YStlJrQwoQg7N4QWYPKvKtaJYQLBD455nHZ1qaKbNcNs5li/4 J1dft1vKW3mZAaAwxCIToYF9xspOJ2dT7zr8dnziKTEmOBfUWZ3mwfEINCleXqSZjvX6 c3ZdzaETa9zkdoHbn0SWebjkmIvbo7V0LN2ebaoRHVkAmfZwqbFcSrGWjHZ1CnVsjR1s poEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760297042; x=1760901842; 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=coivWOIMDkp0+/ZEsMxZb7HF8HVT0LdO0sidPKSkITPrxyfdsLNDUoFalqXRaN1HOK LDu0r78fWUDO3Qc54eZ2vyViSoaxzfE+1DmgnSSuPI4yFuOjtwjPny0+fMKXt5/vnU9A +pzf2u072FOvb+GYFm3s27ycYBBkxpEzUB8luJ931/mlk8UiFbPnVa+b8yh7bfJmWwQk p2yBCY/5aLyJNMY3LM/aFW7vcnM0JpHhYrYgTXi2v3iM0ShS7B+5EhI7gGz/fxBG+K6p Feg7UbbFqBFvJ5QGSMt0+ouXR1rKi4kRJ7DS4UNdtJx3q55TUe3hNzjFJSsVJunTEQpR xIGA== X-Forwarded-Encrypted: i=1; AJvYcCUJmVWHhFmuyByQTzYiMTxU1ZQUzEJaASKHU2wtAoyC6FN4zzccQC22gaMufGC4j2d9r+3vJ5sUImkGyl4=@vger.kernel.org X-Gm-Message-State: AOJu0Yx62/lvLRlikUuIQRVaAToImSCdcsMs5RF2Nd8kdZsGtKUlQ16V qpuFvsuvCaSzi8qb+FFEjNUSc+Ds4L1Xf9Ondcsru00vI5/OAnsW/IAA X-Gm-Gg: ASbGncv9K3wHIR2m5XQk0g61EZ9JkodiEKjPWdVAnp3PAkvkGkel+RWjwciYf9jkSAR L8txZvEj+qRScI8MhzA2V+kAW0gqKSBFQ+NlSAc0dC4cByRr2s6rb9iffw7gzxZJ0nANhC2cCxw yljIvH9WxZ/0Quabj+k5MHivGk42neqqrK/ul26UIxr9uktlU3gRXoPZ/K4J4E5E+XxXljZ+qO8 AztKnaEO8zq6Aez7nO8f1P1ppsQdiJAmVPQZskE3SaH0P7jZu4r/R0wjxXVP+/SkCx+2xc0pZaE Vcv/glTZFKK7TGvAbeTKLWqlCCkTBa8uPlsmTh7ca8CS34dLquOW5e2xU9pKQVmMdLjWS2Wgz3D 1JN8r3E3Zyp455CXrtiRpp3BtBnOqxAL+bepWQoGDlBXktU7Xzc3fILmBb31SlXz2QEymoww3nh fKxa9w7GeoTPWFw4uU7miE 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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 =3D=3D 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); } } =20 diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c b/drivers/gpu/drm/sun4= i/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 st= ep) } } =20 -void sun8i_ui_scaler_enable(struct sun8i_mixer *mixer, int layer, bool ena= ble) +void sun8i_ui_scaler_enable(struct sun8i_layer *layer, bool enable) { + struct sun8i_mixer *mixer =3D layer->mixer; u32 val, base; =20 - if (WARN_ON(layer < mixer->cfg->vi_num)) + if (WARN_ON(layer->channel < mixer->cfg->vi_num)) return; =20 - base =3D sun8i_ui_scaler_base(mixer, layer); + base =3D sun8i_ui_scaler_base(mixer, layer->channel); =20 if (enable) val =3D 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); } =20 -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 =3D layer->mixer; u32 insize, outsize; int i, offset; u32 base; =20 - if (WARN_ON(layer < mixer->cfg->vi_num)) + if (WARN_ON(layer->channel < mixer->cfg->vi_num)) return; =20 - base =3D sun8i_ui_scaler_base(mixer, layer); + base =3D sun8i_ui_scaler_base(mixer, layer->channel); =20 hphase <<=3D SUN8I_UI_SCALER_PHASE_FRAC - 16; vphase <<=3D SUN8I_UI_SCALER_PHASE_FRAC - 16; diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_scaler.h b/drivers/gpu/drm/sun4= i/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) =20 -void sun8i_ui_scaler_enable(struct sun8i_mixer *mixer, int layer, bool ena= ble); -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); =20 --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (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 844482FABFE for ; Sun, 12 Oct 2025 19:24:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297046; cv=none; b=lPm+mK8ecECMrBzu4zu+Fi2alNPKPVGWW0OO9HocXom92/pAo4MdePV1e+sJh9yu7WEB8zjLi4AcT62NwmvL+qDPusqcBrm0hbbwkpfKYFK5nczNJtxbnqsRhqSW4p/npY3WPz8Gm+8/Q3IHabodt85041EReT0G+g4g0a3meHU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297046; c=relaxed/simple; bh=zbt5I065g6BO3drjKwx+RPXT/JavcO/tn3lo2YFsv8c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ijULzyfN9ekPS8vRLc8JXNRlRda7Ccky9jbPgot2LW1Jtg3amCrftP1gdXqwqnSjjEXHWIXGERxXRqxZRqfHvl8O7zK+gTiJo/vkW6iy5YG9B/d13Z51CxEHo4Vnj7wRWkJrcG50WVO4wF21ZAMJzWiMlnB2C8N3+7ssM/z7tAM= 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=Ksm1p0Vp; arc=none smtp.client-ip=209.85.218.48 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="Ksm1p0Vp" Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-b3e44f22f15so514477566b.2 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=QPg7C4Ufc4hWFOGmxU8Q0n2wES7W0TyH0ijKt94tsok=; b=Ksm1p0VppWCUhkeI04XZKMfxic5q/klt9iagrrBistACeqRfQ4UEWBfWsrt1o0/mfI LMtNYVGovakPTD5WpU2z73qRTzyTA4V5+xx8R+WmyHSwEbLQhN9iF+Q3L9mcYHZdOh6x Vb3Ia0V+F4gOvdIPKirkQPRsVdYp+wLXkSXgr8pY37VojKElfK/5M43QagTtcxt4cSRu 5I9U6KkgJplqEreDGnTnNVOJXytLTAciJS6vn8zZT29Lo8357Z5G35utXpD6tqK37nG3 RxM0fxhKPUf3AKZofHhB1FymUT73nDTl4C+J242fUOJ1P65cbo1dlsOFiVbIDNSt6rSY MLRw== 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=dKxcRxAuaf8hvz4SZzBJ5Q/X5HxbbmXvZQbaaGiWdZUtWD3oUVRAm2XZKQqRe8gn3z Rg7ATUwHfEsqXaQghC6NSz60hnNmffaofTeh8ye5SG8NGA02jrZWGozdP7v565sXP5O6 XfRati/Yl4pn/FKtyvJNcCtOI02gptiWx7O0Vu9p9itPXM+I08uASa1t7K5ozJ1bW0Mx qqOolI1Se3Mh2Ai5BlC90I1o1hZzlkpWWC6cT1RV4yxpHvGSvf5anHtJKonvmaNKycR8 jOlM+KNS8JgwkqQ7NuD9s+aLSWudDOILyao4Tk+MADFWNHYEIGw7HNBXSmCEquqVtids 0W+g== X-Forwarded-Encrypted: i=1; AJvYcCVWfcTb1RcyCEBQBuV1rKJDEWumv3Jn2M3Gqpg5WMTlcqps9EkQakwbyYGs64Mhw9ZaF6H+sVturpTl1wM=@vger.kernel.org X-Gm-Message-State: AOJu0YxkYmuOIak3ePAMZ3+sosvIO4MX/aVWCasvCtNi8kkOUjN6A+rs JkzZl7A6eNeAu5VIsIsTxka3xBJ9iVPGU4LX3rlLDO/Pg2NGPERSS9mp X-Gm-Gg: ASbGncubrzutdJXTolOz0yQoTP5HND58+60yL4aXh1/i+T3P+P5bwFG8yC99GcLaiER ORexPMrvLgYGamh+KH7GpGW5svQ9nalcxSb4vHzt7NxfZHT61T05uE/xfvV4mLaS1BNfkQ5uVGR LLemOXVIKttsHpcUD6B4WnaL9OH1jvlnGvie3vWLkpOHFkWz+qq3wdtTI9SM1Kmy7YdphPyrEal WGcN/5uQFu+2u2YQubgiGMy6KzmsG6W2hs3YDRdl5Al9ztBTvCE5YipjwSeiDp2Tot87+gGIRx4 MBMe0wGPAE8seaXF3VpoW/43itnrapcaTEAwjbOhcKU4IVwgCn8qKLe2LdZU0uw41s+RK8yAzLq NaYCd7RIEg2vev5M/f86NMahOjOY1Yuo/wNplVl2JnlIcQYUWUlztYe6GeKRJdWLboT0Ueq1nXk 3A4gHLvToE7Pizh6xtnbe6jZrnmM9COpBybK3vbWWFtQ== 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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 =3D state->src_h / state->crtc_h; =20 if (mixer->cfg->de_type =3D=3D 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_la= yer *layer, } else { DRM_DEBUG_DRIVER("HW scaling is not needed\n"); if (mixer->cfg->de_type =3D=3D 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 =3D (src_w << 16) / dst_w; vscale =3D (src_h << 16) / dst_h; =20 - 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); } =20 regmap_write(mixer->engine.regs, diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_scaler.c b/drivers/gpu/drm/sun4= i/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, } } =20 -void sun8i_vi_scaler_enable(struct sun8i_mixer *mixer, int layer, bool ena= ble) +void sun8i_vi_scaler_enable(struct sun8i_layer *layer, bool enable) { + struct sun8i_mixer *mixer =3D layer->mixer; u32 val, base; =20 - base =3D sun8i_vi_scaler_base(mixer, layer); + base =3D sun8i_vi_scaler_base(mixer, layer->channel); =20 if (enable) val =3D 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); } =20 -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 =3D layer->mixer; u32 chphase, cvphase; u32 insize, outsize; u32 base; =20 - base =3D sun8i_vi_scaler_base(mixer, layer); + base =3D sun8i_vi_scaler_base(mixer, layer->channel); =20 hphase <<=3D SUN8I_VI_SCALER_PHASE_FRAC - 16; vphase <<=3D SUN8I_VI_SCALER_PHASE_FRAC - 16; diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_scaler.h b/drivers/gpu/drm/sun4= i/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) =20 -void sun8i_vi_scaler_enable(struct sun8i_mixer *mixer, int layer, bool ena= ble); -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); --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 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 0AE362FB09A for ; Sun, 12 Oct 2025 19:24:05 +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=1760297050; cv=none; b=uOn452aTzeh92J8rNMju+7Gp4w33G7PABIBlQcsCe5Cjk1edsEsI8GOZEeR1E16qf6mOwZkSQ2LDCiWx0hlB13DGB1A2G4tL9txZtN6+RZLxTNfSpvriQkpNKwLv/iwj2loKsM1rBW/UqLda6hc9iC8xNyh7j7eokgaoULPe1Ns= 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=hwELOPZd; 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="hwELOPZd" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-afcb78ead12so546196366b.1 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=aDedyHXZRi05h+yiSLUF3HPKeqGWy/zcBT6LVM4ULn4=; b=hwELOPZdul3axiy5+A08zWmgD1J45oZb9jLyotMFZGfjCdVVk6Yyz2Be8FqauFy7Lf znlEjPkp6I40Dlt4iGDZ01ADhjnoYRZOAcQpvThenrwstR9BXohI0/L/+vv7BgMBRLXU PrT5AlJxeXyp1Bs7UZXc/Ri7SyPR7khvQWVJaiffniSCBefYCC/VFGv0IMMy5c94Sh6H VjTXdK6iyLgnPDlHgVSkRaumoEtQc17BQeggx8PJ1klkJcnKnyRfY/p/UofPbwLaIBWf o9teyW24iVL2LM7PkSNTzyZfA6ZfNtOE0bYS0XS1+19TWhaw3swsIeMUvKPXRL7eRnIa yfKg== 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=Hn4v2x60Y4iVxhtXl/HMyis6pGNfoXnYijFmIJOAVyNf99IFS9suv64a9GUeKcUKzx YvEoH/CcKMGF5ugnUSJff1xOtFzjN7dTuXbbsQDn90lhajZrZ+cx4bsvJZTrgf0IX5C6 XlWwlOdxnPzazJoFOOUWHED/T0BbTYQPjc3pQkic8cbZGF6pWwv49/jSHucwTbE0qtcL 7Z9KYpRYvq7bTWO5iXYSNqg6U9qJt8MBaWcZMKY7wRzQZIRZKE8iWpSAVyLqSXWRar1V ohgUrq5KzJarBLPoKVuyVGBNksb52fw7QmqSZ/vFllHMtPyZrEAagHMzQERb6Eozur5s jkXA== X-Forwarded-Encrypted: i=1; AJvYcCVWlhIs73XGN8h+mmw9Hbdzh+Vd4fPMnQg3Yf3aaTK5zqYpJQ2EfXtU+Bv5qbMMDlvMmsT15F9QMBRg98Q=@vger.kernel.org X-Gm-Message-State: AOJu0Yy4VDl6MGc2eBO1EofPZdHwnYMobuwhRlmbDfauwgoTjWr8tKMY Ic/6wmObvXY0KtnZBdIAABQUSpDbwjKVjNvaCaFmIjSGBU+WPvDACze/ X-Gm-Gg: ASbGncuR2xqOPAPewLI8fdYLC8GNV4VbFcE+BVTT8hHgMekuUeWLot/zLZfdJyMkZ5U 59pvt44+L0bwQ8xBIHu2uq5XwgwlyyrqAEyftXRc8WGHp1qBSyVCEuQmdIF3SMR4OoC/QPAYzKB rxNAW2uQJ4u1MFTJY40NJutNtdE+ho9RrW4V1PdFTkMn3dTf2tMjlaMTGjWalLPFFOuXcgyxpL+ E8eAOT0eFhLF9jFHwF2nQQy41DAiCxjOOvN/7T+ZA/soidYWRudGwNQLPKnqtHgPg5EATfgC+pw lGGs1020qA28nZTeWZBwJ2PxR5M107ajJySe+WRVX4doPeAaZCmeKjkdGNtOJH5GpnskwNiEJGj k+X7kCS3hobz5wuAvt6ggBZZNipjFxgRaosPpaWnxAQ/mNYQt2gl9OLSfq6C8k6Islx5P6e3Hgb W85fgCYLdPt/ql183rLYJQJpJjgfyyi7A= 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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/su= n8i_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 =3D DRM_PLANE_TYPE_OVERLAY; =20 - layer =3D sun8i_vi_layer_init_one(drm, mixer, type, i, plane_cnt); + layer =3D 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 =3D DRM_PLANE_TYPE_OVERLAY; =20 - layer =3D sun8i_ui_layer_init_one(drm, mixer, type, index, + layer =3D 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/su= n8i_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; }; =20 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 |=3D hw_fmt << SUN8I_MIXER_CHAN_UI_LAYER_ATTR_FBFMT_OFFSET; val |=3D SUN8I_MIXER_CHAN_UI_LAYER_ATTR_EN; =20 - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, layer->overlay), val); } =20 @@ -87,10 +87,10 @@ static void sun8i_ui_layer_update_coord(struct sun8i_la= yer *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); =20 @@ -149,13 +149,13 @@ static void sun8i_ui_layer_update_buffer(struct sun8i= _layer *layer, =20 /* 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]); =20 DRM_DEBUG_DRIVER("Setting buffer address to %pad\n", &dma_addr); =20 - 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[] =3D { 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 =3D SUN8I_LAYER_TYPE_UI; layer->channel =3D index; layer->overlay =3D 0; + layer->regs =3D regs; =20 /* possible crtcs are set later */ ret =3D 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/sun4= i/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 =3D 0; =20 - regmap_write(mixer->engine.regs, SUN8I_SCALER_GSU_CTRL(base), val); + regmap_write(layer->regs, SUN8I_SCALER_GSU_CTRL(base), val); } =20 void sun8i_ui_scaler_setup(struct sun8i_layer *layer, @@ -168,22 +168,22 @@ void sun8i_ui_scaler_setup(struct sun8i_layer *layer, insize =3D SUN8I_UI_SCALER_SIZE(src_w, src_h); outsize =3D SUN8I_UI_SCALER_SIZE(dst_w, dst_h); =20 - 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 =3D sun8i_ui_scaler_coef_index(hscale) * SUN8I_UI_SCALER_COEFF_COUNT; for (i =3D 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 sun= 8i_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 =3D=3D 1) { - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_FCC_GLOBAL_ALPHA_REG, SUN8I_MIXER_FCC_GLOBAL_ALPHA(state->alpha >> 8)); } =20 - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, layer->overlay), val); } =20 @@ -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); =20 @@ -170,19 +170,19 @@ static void sun8i_vi_layer_update_coord(struct sun8i_= layer *layer, sun8i_vi_scaler_enable(layer, false); } =20 - 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_l= ayer *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_l= ayer *layer, DRM_DEBUG_DRIVER("Setting %d. buffer address to %pad\n", i + 1, &dma_addr); =20 - 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[] =3D { 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 =3D SUN8I_LAYER_TYPE_VI; layer->channel =3D index; layer->overlay =3D 0; + layer->regs =3D regs; =20 if (mixer->cfg->de_type >=3D SUN8I_MIXER_DE3) { formats =3D 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/sun4= i/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 *m= ap, u32 base, =20 void sun8i_vi_scaler_enable(struct sun8i_layer *layer, bool enable) { - struct sun8i_mixer *mixer =3D layer->mixer; u32 val, base; =20 - base =3D sun8i_vi_scaler_base(mixer, layer->channel); + base =3D sun8i_vi_scaler_base(layer->mixer, layer->channel); =20 if (enable) val =3D SUN8I_SCALER_VSU_CTRL_EN | @@ -922,7 +921,7 @@ void sun8i_vi_scaler_enable(struct sun8i_layer *layer, = bool enable) else val =3D 0; =20 - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_SCALER_VSU_CTRL(base), val); } =20 @@ -968,36 +967,36 @@ void sun8i_vi_scaler_setup(struct sun8i_layer *layer, else val =3D SUN50I_SCALER_VSU_SCALE_MODE_NORMAL; =20 - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN50I_SCALER_VSU_SCALE_MODE(base), val); } =20 - 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); } --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 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 CD8152FAC1D for ; Sun, 12 Oct 2025 19:24:06 +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=1760297051; cv=none; b=MCnctnXyMGGOPAdU+SLIvAhhxVJKyDm265pPSClka/e7ku+1lN1cXUZDzZdCJaM8ZAvp/C1lIi5/064preWUdI/TZgrdm+TT3VqRr5cu4VpeeK6KFChGjRiBpfH50IlRPZ4qLARS9ptnQ169b451npXYXNfODK0EzTHIzQ5kONc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297051; c=relaxed/simple; bh=2rEgqEZ2KuPdRGMl0QKQlefkIl3FEYhRSxtjPD2zq0g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JyD1e9EToX3j5YYKWxAPZoygdH3AuGhWNPq4xmVxe4fIE0+jAG6jTxo/p5hMc3EOZZCA14vPZgZaxtbGjHFWav8bJlsE5FPcf9WvyHCxLUPf++9tQSiQm3BdkTaXONgg3Mpao/ZWdXMEvZdCZntLwLh1e2Q6rY1dV2HAlskBmpA= 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=QY+cwhFF; 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="QY+cwhFF" Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-b4539dddd99so728714266b.1 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=08VhihKvGZOzCvy6uNWRiLafS0nfxwn+0WLCtxZhCew=; b=QY+cwhFF/wKnizLOv+WnYCFbodxqSOzV27q744UD8kZpf6jzVSgucbyHVI50fmfYcG OHL5s4/5ynXQeGuhPlXXfXnbcVzrDIdDmbPJ3RjPXC0jrv+quI6u1lC6shI8qLzGkkDn j3ULvsUpYMgbpH7exnOgQGHfRatGfJl+9xUq4DsGUApQjvlxLbHtwKFufEVPNaMcaSCJ kk8A1pUcPWLyLDacPS6i+Bz0o7Qdb+E69pSfF31toW8uZl8MFHofz8mM0/5GwzsgR19E x/oM3i4AUA2YW2bg9Oh7dv4s6RamkEe0Kmvhxcn5ULp/zMK9o3CYa56K8O9PgI/ERRt4 Fq8Q== 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=PViJthBlytEkzYh61VoL3h75M1j4+dXc7errG6QFlRhpSGJaAgAL7qyP+PuW72L7/O zf40YWCv+MDdVYiJj7W+GhQuLu4zEkGygHZnqpeY4JC4mDbCH8GzVXtMHzeXr/w9pwDs /ctNIbFtQOkXbMY2illxB+v426mMOPPIqqc8Vxut9B5QtzoaV8VWf2z2/xUgB259c6gY IZa7rwc035212eeR/UuqDZyjAAOFd1Rgr1zbdhGXfbJokrQWz7koZoHsDakXnUFTf7Xm DHueN21VlsT426Sf3+zTof/Ql43dNmT+YU4/uugmrGNf4GZPafQPHpylU9HHz0w93XQP 1cPA== X-Forwarded-Encrypted: i=1; AJvYcCXUJLbw6dXUDUJfSJ0Y7U71fQ+WNYOSGzc5br5jETBd3YCGsR6P3pU127UVmQjhm4NJBtKwE36lB85sVBs=@vger.kernel.org X-Gm-Message-State: AOJu0YwTNJgOZuA4w6JzLi4QJ2N3KAShGndsnJfaqTSdNZJHkF6SA6/k GwNQyruFIN2vIqUVpp06mLMAha/bzemv98VH1+ub5UT6Tnj08dqOvp3W X-Gm-Gg: ASbGncszMjhOKwMb2fy9Ie11YVmgT0QT/e+lRfJtqZIxLpGqYK9G1nL7ZgE6yFeaVrE 3Uz0UApYwOKwmYoFsH6WUTywq2unLqbfwCReH2LTdZfOih5cQPjAm9O6j6hI0bwdPqv7bv8po6N 8agcfKK1lTyilAWT8rLynoEp/ihNuzrod7TkmEqEcqH/UeJVzPLqqvwZa6TUNBU2RN9Ur8Z7Mq7 cErIHNHCae7WZ2q6eOvJvMnMHlqcbIIBX4iXwnIQqdCPzr1zYr2FylUryN7I4BGpMvGxGudONCT KvwaDrg0CtH8+chtiKUyD5gsLoZvIF9xMvF/CDivQymbJqpCSDgdPFiTd138jbHNqkjU1DfnWGK WcoLbJmUlAJ2jDaT4jjnxPOuxuF0cp0hRn7mIFLqeStxpO7bdKS7D9CeAjWjoxaW7D/WyROLuX8 pvGxfBiEFKEJegY0kzQdUvIS/44+s/xlk= 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Layer will be more universal, due to DE33 support. Signed-off-by: Jernej Skrabec Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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/sun8= i_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) } } =20 -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 =3D sun8i_csc_get_mode(state); u32 base; =20 - if (mixer->cfg->de_type =3D=3D SUN8I_MIXER_DE3) { - sun8i_de3_ccsc_setup(mixer->engine.regs, layer, + if (layer->mixer->cfg->de_type =3D=3D SUN8I_MIXER_DE3) { + sun8i_de3_ccsc_setup(layer->regs, layer->channel, mode, state->color_encoding, state->color_range); return; } =20 - base =3D ccsc_base[mixer->cfg->ccsc][layer]; + base =3D ccsc_base[layer->mixer->cfg->ccsc][layer->channel]; =20 - 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/sun8= i_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 =20 struct drm_plane_state; -struct sun8i_mixer; +struct sun8i_layer; =20 /* VI channel CSC units offsets */ #define CCSC00_OFFSET 0xAA050 @@ -23,7 +23,7 @@ struct sun8i_mixer; =20 #define SUN8I_CSC_CTRL_EN BIT(0) =20 -void sun8i_csc_config(struct sun8i_mixer *mixer, int layer, +void sun8i_csc_config(struct sun8i_layer *layer, struct drm_plane_state *state); =20 #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_pla= ne *plane, =20 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); } =20 --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 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 D71B42FB608 for ; Sun, 12 Oct 2025 19:24:07 +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=1760297051; cv=none; b=p1+h6QuFmpzjnrbvpjYvOCJIxGhqgaefjI+GXLe8KD7X79AwPlurxNhn7B0CqU8KWUmBXpSMKlPrOu5FpVNretUZzi6woWBMMMin+LNlTSpaH+937IjtU51act7zOFq/NQdI9o7ra2MG38A7nLqSwmgdC+HlK/ENHPXrGwqKAkA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297051; c=relaxed/simple; bh=iZauC4bq3j0IteUuEC4xJ1yNrvVQr9i4sppPKzvfY2I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=org9GQWv63kmsiKCBhetw4tsnVz+OyN4CRxKWZErtsz1BFQzF2sVPSG6JbBolSWAIDEoY+mny/X+4wYgKVPAAXF4c0mQUDpd9tRaIgqlIyDG9l6eq3AfxW6RipaGVJiWrOehe/RlCbzC5C7Wru3D3WlpWgdfNXd5aDTHH+OBe1I= 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=O69Y+jn6; 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="O69Y+jn6" Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-b3d80891c6cso703919766b.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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hQOv5yUZt16sUnKDbEIh6jBa6S1wacoD7LiibO9kAbE=; b=O69Y+jn64mAeXIGqyi1t7rn6WMleXjdUjFLrrhQSjgByQLC2SaZq0mEb1j4EtikcQN ouxfwlK4CP5R9zGm+4M24eAR7Q4/V2QddN33WeTnJDcNk+plco1MfXN4Tbnuiy3p3Uhu hEnLA+RxP15Ungg/4WyoApGtDbSTBXoR9TzHUYqALUgJ7Dhied2XvFilCetmVwRYZ82d LY9AKmIVOOujHZcCNrLU1wl9nZ43OVhCMPYrRsZqpYO57APoxXCD4FRv8fU7jF9SpV6g bz1xZTdutcYluaNzOfYriuPpBg0TD/sfJGELTyYRPvfIXaqv4iRxcCxVkwPKY+aZv0Gt K3tw== 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=cSHzQ3d4CQUEeAIYV7auin3p5glrfgZy6hZjU74T0HXuwUOS6qM/rShzvMTMLGYSZL ZBVKuDhJoopCXcvf3EGI6p7kTbK5mhU3QgrlvIDxG2SV5gcEUD7vCk20GyAYq0ybN6F3 LQKEuDaS80WfE8aMfQahP3oUyfaAzDYR3n/MfaO5tVbWW1wBDpUSrAZtHYzxldLlqidg 5Yt9uw8z5iRCCYgWM0wsWEGSo8PXP6K5uxEiNcbqxqmuxVEGvCjzbdDc7AFrHmeFIrLT WVwbcG+zPH3xzsyTmKxCKU5+hTjZkWAlBDT2RY2nSp+4wu2mQsBtaCyJiOK3k4Ayd9Qv ktBA== X-Forwarded-Encrypted: i=1; AJvYcCXNhSAoGDREQSDf/n3n6BC8SWHdvQTXGhuFF/EwHwiDeUA/dtGhl9qikao7fmbHEFtfnBuY4Wvhlvqv/go=@vger.kernel.org X-Gm-Message-State: AOJu0Yy2MuIpLHs7dolceonzv/ATSIFYstMr4fsUzzc7knzTnwigH12B a25ULSVClIFlrQja5ie5fCuSxkoS0ucA84J7SnpDDO1SMQ57Fgf5dZov51ZzLBx2 X-Gm-Gg: ASbGncvUX4/3ObMskvdU+RzN1jclnG/sJvqVH7ALVpQ/TuG5tzw0StfnZlhHu9Q8O9f TA3VmCubxaiSvYV0x4nHFYn04qfaynwJoyL8M7nYmxgSG5KnPwSevs2p/T1sOjDHcDBKPYc1agq coJY3+eUFwneaJqKx/d8OLn3etdiWQnEv7np/YnDNMkrv9HJIqMsDqKnMGvUrl3RNEUsSR/BYlq hwGhcEZWkuqDcJ25/E2jgjRlfkGP+PQLqPVimZ2o3hz1w17b8H6QxsG2iYYfh2fqxRIgylq1bkm cCEUccA/I9xWSIbSHwlnGTVi1/aTxl1eq6+daoCAE0zs5KjOM7lPImxi1we828YTT8zKPwE4R9W idUTdhLdqR27ecMFv7B5pUuPiyEtY/Ou4RzszkKjhOkYBUQ1OWQ8wbEKtKWXKhrvTpCZ1pHl7Sq JRVrYAEppe7PLy5kn73NVI 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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/su= n8i_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 *e= ngine, h =3D drm_rect_height(&plane_state->dst); =20 DRM_DEBUG_DRIVER(" plane %d: chan=3D%d ovl=3D%d en=3D%d zpos=3D%d x=3D%= d y=3D%d w=3D%d h=3D%d\n", - plane->base.id, layer->channel, layer->overlay, + plane->base.id, layer->index, layer->overlay, enable, zpos, x, y, w, h); =20 if (!enable) continue; =20 /* Route layer to pipe based on zpos */ - route |=3D layer->channel << SUN8I_MIXER_BLEND_ROUTE_PIPE_SHIFT(zpos); + route |=3D layer->index << SUN8I_MIXER_BLEND_ROUTE_PIPE_SHIFT(zpos); pipe_en |=3D SUN8I_MIXER_BLEND_PIPE_CTL_EN(zpos); =20 regmap_write(bld_regs, @@ -317,6 +317,7 @@ static struct drm_plane **sun8i_layers_init(struct drm_= device *drm, struct sun8i_mixer *mixer =3D engine_to_sun8i_mixer(engine); int plane_cnt =3D mixer->cfg->ui_num + mixer->cfg->vi_num; enum drm_plane_type type; + unsigned int phy_index; int i; =20 planes =3D devm_kcalloc(drm->dev, plane_cnt, sizeof(*planes), GFP_KERNEL); @@ -331,9 +332,13 @@ static struct drm_plane **sun8i_layers_init(struct drm= _device *drm, else type =3D DRM_PLANE_TYPE_OVERLAY; =20 + phy_index =3D i; + if (mixer->cfg->de_type =3D=3D SUN8I_MIXER_DE33) + phy_index =3D mixer->cfg->map[i]; + layer =3D sun8i_vi_layer_init_one(drm, 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 =3D DRM_PLANE_TYPE_OVERLAY; =20 + phy_index =3D index; + if (mixer->cfg->de_type =3D=3D SUN8I_MIXER_DE33) + phy_index =3D mixer->cfg->map[index]; + layer =3D sun8i_ui_layer_init_one(drm, 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/su= n8i_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 =3D=3D 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 =3D=3D 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, =20 layer->mixer =3D mixer; layer->type =3D SUN8I_LAYER_TYPE_UI; - layer->channel =3D index; + layer->index =3D index; + layer->channel =3D phy_index; layer->overlay =3D 0; layer->regs =3D regs; =20 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_de= vice *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, =20 layer->mixer =3D mixer; layer->type =3D SUN8I_LAYER_TYPE_VI; - layer->channel =3D index; + layer->index =3D index; + layer->channel =3D phy_index; layer->overlay =3D 0; layer->regs =3D regs; =20 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_de= vice *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_ */ --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 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 198FC2FB63E for ; Sun, 12 Oct 2025 19:24:08 +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=1760297051; cv=none; b=U0hdeRKrY4Phd/FQcrfQtX0v9zbVEpSfmbCYodbUeWd6jMvbBZtteMKvw/yOzs/2ZNaSLfVyYgogIki0J/6jWmRkp+Bt9EM4M3tMsDRXDUSbzUaKFt1vJ/lHOQ7veRErg8V56IbypKdfimU1Z/2ndFb48o2W9qAdt2Xtm0PnTeU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297051; c=relaxed/simple; bh=JE+9t2uTRyVmHQwjLdQehz8MHh5AG1h3FeCTYbIFTxM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eE+1LsVHo21eBJv17t/xjPA75oNy1um5IRkOMBj+i593w8Kroy5OKSudRySlV4oAgAl2gkS9PZyeWCgR8HUn6/7UB1WPcXEWW1NR2d0nl3LMn3NEcHmO9qqunF03y+pbA5gLuK+HNO95/enu+EL18FxayAt8iSqBV/7GfhyiX5o= 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=WeSvlw1Y; 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="WeSvlw1Y" Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-b3f5e0e2bf7so656589266b.3 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Lx6RwmSdgU4IIQBCfnjkaHIgGiO5u++wyA5NWC/K61U=; b=WeSvlw1YdMda0TtXTqSn94k7HvEdxRc+0knjrdWLQH5JTkQaJzqyjj80faL0SuztxB U6+GDVE5+Xe00zkwHgTdc9v9f2BaqiGZySu3N9hCVaKQl4VjGJ1BbMbgQ4FMTG3IB/XA gHxxn9YjPGlCIVwiO8uPEgqZp5RiVkqC/GsgCYzMFn4m6K5Q6dQeaXnKxauffbuMglsO K1mZRrc4iDVgLqC15hUVBbI36WLdFlm3Hdhtj6Ng36vfZU8vLO7YFC1PZ/Y9knk/JAHO xqKWz3hfFX6G1gt03JVDRMd4YpOsZ/omQ31Uo35vEoKCsjk/asjqtmuyOQkdccci1WAW R3Bw== 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=WGdTbR7an0QjfuxrsBEZ6J9Lthg/Zi7ZAMss1R1YWXBMYuq0wrqKaACy4acN6lSZS9 0h+GPKREhhGFLI+MdgcxRxwW4r+TFQFExTsqmtV77qZMezTonaEgV6Zu3zEzaW3sECle mzwwf5+RxqMD4+tzuqZed5iCvsJT00QSUiAKsC9L2RF6mVH5dHhct7wQVkbzNACgIqWy TTme1RY4fy+BEN89SKcFER1ChGPtVHHDSYXXfqrKkIuy3+xJG9RMZ+OdxdUbyTrLVAOE bMXWmNujzxFohK5BDWJ3i2lkW3w3W2RE2Jh4Yivk8rUajiMhjCkHFWsACPvkfs4HbxXW gUMQ== X-Forwarded-Encrypted: i=1; AJvYcCWVxPwWz8Zy3pS7pFzmzpkegJ+Q2If/08P1C+I+W2FxitEf1AU+EILNkAIdSaetpPndr+fTCl+u+YnUYs4=@vger.kernel.org X-Gm-Message-State: AOJu0YxX/P8+d+3JsbvWaqxEf7WYFotuQfMjgwCXxKfQd9CTwopqJs/1 oLSEhKNAaDSt+QOQWIKAQ/Cz0+E5NgTPghNOqKTb3NlJdHxMWWlg7DSZ X-Gm-Gg: ASbGncvDD7OoF1hFH0BctDWCqQna2TXPwZ+Yf5wH3HIN7pKwssJwlDMzZA8De361fsf MmqHdtxyUdRz+hg/sELw2SEdE8ZVC8wu/pFMDHmv1fch+a+n9jc+2/prVdXRGt1N7mAZ574Ddqm wjCJdyVAmMs4F0/4dbOuJsICaLp2YP68lck1FLY0Hi5NUdOEmMrUKS/BCxDNhoqdVBD+cVfO01D txkBGqD8NiFwpf5ul5dNqiKQ7fjJ0PsfHLkx/cAXLCcFReMZo/q4eqZPSKrI2pTduj1jCa45vG9 05DdPreLdaprhGi1/O8J0Yl9rQv66fg5oW3F9xryUNpFlbvdp79AmEk27BZvZ5meXo9NMbaLBs9 WL0A0lCdUkbZT8BmMqJbVsA2tKbI9Df//bsWzGHOxl58Fui+9C1ye8/ISE2BdqSTHaZFM5nkz2c Ve+jdwcvP6cx8321AtDeYWYDXHcyvKGIc= 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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/sun4= i/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] =3D { static u32 sun8i_vi_scaler_base(struct sun8i_mixer *mixer, int channel) { if (mixer->cfg->de_type =3D=3D 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 =3D=3D 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/sun4= i/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 =20 +#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) --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 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 5DBFC2FB967 for ; Sun, 12 Oct 2025 19:24:10 +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=1760297052; cv=none; b=HjEzVHBOUSN8WFI+B4WBCYrL82JL9hznPjmwFDhiw4i8G8oGjWtdjR4e7FPXIMbix3M1OcaF2tvvKBGjIQNtPnAc3iNa/enZaLhrGJRjE8aTGVOSnDCuBhz0Np3vGV5m4ffD7p6uJYP7lBzX07HX0XGl/U9SRkl5BBs5AASH6bQ= 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=aGd892BY; 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="aGd892BY" Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-b00a9989633so650788466b.0 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0DrFRmdaEbeeGFVkadVtzvz8t+dwN3rT/7iEQHdomrY=; b=aGd892BY9gIr6OtvsJDhBJA5QNz/v7RukcujwLl49rHQIdIgKktkyxgvn0p4wmhliY ERM/YeYZ1vmDeinQCXIG7RChN0cYgUYSpmKv3elHCqccyapSGIFXz0GlqboEMjE1tSu1 WOJcdej5dxlCjGzfMnbP4xiUGkmnAdfe0ulio8R3c0+0ovGNAiJvaowZyrHd7BPTh5Fp AksZlvp5OjK6tKo+ujqo2i/+O0rlZHoZowjGlqGIi8id9lANjYknvHKcnnUdL/MIOF6W lBeZuAKIYIJ1uKmUlDaHezt/NoiryiFTqrWAuxBNjjORTGrVF30hS7OYK1UJW94udCDS 3xcQ== 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=uEA3qcDSOxat65+gV9HhYkCPu64HL9Ye/og0vFzFSltb473Sxb2Ewaxl8Bmmj/90M9 74XRNPWsiSJUqwTTRzIT7sgkaVOK0qd8SULE3cgmtisD8S10ecAoSPTGi5FcybunCvbJ PaYL0pAWWM7irFlQlo/xqBoCZQoniVr/ca8VPFxzXlVZ34zEhUfaAXdXQpikJzT9hdmO 4ISXOlZDLyzf9hfjE8ESmGmScCxMnYncReu16B/QuRi/G+54kT2cajrKbWz3hjG6Zn5s wpRCZk6xZkq/ggxO2zaNLksiDDdz4hwH1Y4Fm6RcU6HMMg8vDpEqKKwQxXQwt0ZGT/0K QSXg== X-Forwarded-Encrypted: i=1; AJvYcCWAZ7G+/Cm3Vt138zg9m12uO2TjYhlVJaRqJSnXvCC9kYmDocMpOSjMxF+8LRLfA9gnsnqFAM1PT0CTBbU=@vger.kernel.org X-Gm-Message-State: AOJu0YzYsuRYND+FKdmHo0MSlfTGCIwCSABCiCqUc5r2e4bXVYNYIOGT yYmDH/p0t8b3BcmmrnPeAmzx945udS4T1RVx4i6NIQuFdFo0aRMY5B9F X-Gm-Gg: ASbGncv+vUUkUYfGKoTDBsYtxgd1eJ5wiOXQna354hXgVHgoKzqrHlwtSHBMTHgz09i PcbrUdDlspRkCil7joCgw50DYtzi6y5Ydbb5/7sgCz7m5j5bVR6wvrOhrFNd9DPh06ftrVESywr i15PDEPVBBE6t1eT+BDxwVWeek5Bg/fdr7Xp4/PsQPLFe/NFn/3IgZjYvhhEHSTa6mK2AyJA/24 e60BRmdth2K4HTNt6Lp0gpUr2pnPJu4hK7CIwwK9Bhz2VUp73ddL2SXWhJbY0CDoGYSfa3QVlt2 HSI+IqPvrO5Gp5nBkxsyJEynNyoz6q+KKJR+KlVDNUjN8cvk4+lD8k3qBI/GU9ScPzSwWWcgnKF lwA44dEll2ApeSDfGejirN3PboWREfkjntEXVLBvqb/kIWedaFJdJYyjPT3usjILhrxN45V+RMP cCEelNQJyKm0BXtuU97ZHe7++lHCBnIJQ= 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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/su= n8i_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_c= fg =3D { .de_type =3D SUN8I_MIXER_DE2, .scaler_mask =3D 0xf, .scanline_yuv =3D 2048, + .de2_fcc_alpha =3D 1, .ui_num =3D 3, .vi_num =3D 1, }; @@ -716,6 +717,7 @@ static const struct sun8i_mixer_cfg sun8i_a83t_mixer1_c= fg =3D { .de_type =3D SUN8I_MIXER_DE2, .scaler_mask =3D 0x3, .scanline_yuv =3D 2048, + .de2_fcc_alpha =3D 1, .ui_num =3D 1, .vi_num =3D 1, }; @@ -726,6 +728,7 @@ static const struct sun8i_mixer_cfg sun8i_h3_mixer0_cfg= =3D { .mod_rate =3D 432000000, .scaler_mask =3D 0xf, .scanline_yuv =3D 2048, + .de2_fcc_alpha =3D 1, .ui_num =3D 3, .vi_num =3D 1, }; @@ -736,6 +739,7 @@ static const struct sun8i_mixer_cfg sun8i_r40_mixer0_cf= g =3D { .mod_rate =3D 297000000, .scaler_mask =3D 0xf, .scanline_yuv =3D 2048, + .de2_fcc_alpha =3D 1, .ui_num =3D 3, .vi_num =3D 1, }; @@ -746,6 +750,7 @@ static const struct sun8i_mixer_cfg sun8i_r40_mixer1_cf= g =3D { .mod_rate =3D 297000000, .scaler_mask =3D 0x3, .scanline_yuv =3D 2048, + .de2_fcc_alpha =3D 1, .ui_num =3D 1, .vi_num =3D 1, }; @@ -766,6 +771,7 @@ static const struct sun8i_mixer_cfg sun20i_d1_mixer0_cf= g =3D { .mod_rate =3D 297000000, .scaler_mask =3D 0x3, .scanline_yuv =3D 2048, + .de2_fcc_alpha =3D 1, .ui_num =3D 1, .vi_num =3D 1, }; @@ -776,6 +782,7 @@ static const struct sun8i_mixer_cfg sun20i_d1_mixer1_cf= g =3D { .mod_rate =3D 297000000, .scaler_mask =3D 0x1, .scanline_yuv =3D 1024, + .de2_fcc_alpha =3D 1, .ui_num =3D 0, .vi_num =3D 1, }; @@ -786,6 +793,7 @@ static const struct sun8i_mixer_cfg sun50i_a64_mixer0_c= fg =3D { .mod_rate =3D 297000000, .scaler_mask =3D 0xf, .scanline_yuv =3D 4096, + .de2_fcc_alpha =3D 1, .ui_num =3D 3, .vi_num =3D 1, }; @@ -796,6 +804,7 @@ static const struct sun8i_mixer_cfg sun50i_a64_mixer1_c= fg =3D { .mod_rate =3D 297000000, .scaler_mask =3D 0x3, .scanline_yuv =3D 2048, + .de2_fcc_alpha =3D 1, .ui_num =3D 1, .vi_num =3D 1, }; diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.h b/drivers/gpu/drm/sun4i/su= n8i_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 generat= ion. * @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]; }; =20 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 sun= 8i_layer *layer, val |=3D (state->alpha =3D=3D 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 =3D=3D 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); } =20 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); } =20 - if (mixer->cfg->vi_num =3D=3D 1 || mixer->cfg->de_type >=3D SUN8I_MIXER_D= E3) { + if (mixer->cfg->de2_fcc_alpha || mixer->cfg->de_type >=3D SUN8I_MIXER_DE3= ) { ret =3D drm_plane_create_alpha_property(&layer->plane); if (ret) { dev_err(drm->dev, "Couldn't add alpha property\n"); --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 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 7CDDF2F28F2 for ; Sun, 12 Oct 2025 19:24:11 +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=1760297053; cv=none; b=bkmcDq3JaapW+Cs34gELPE7GGK417Zh1t86Bb09PIbRDpwLaMugXjH6jDmsdfg8GBMRFLRZ06FSJR/+lTOqf489TP5C3pxfgS48egGFB5tLcDAjCe3aVJNUPl+reNm56IVRNKGe4ph4Etd5N+opqIlABo8Xyqd0KEe62CHZfvuw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297053; c=relaxed/simple; bh=7Vpg5pdcwhpe6j3H4rCvIT3PXPexXBscDV/N0+A/BKQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bvIAXlsp3j7yUI0EhTqhAi/SvDwPcIHiphEIbBK8EOnXirOrj13zyZoFs+ZGYCzYywQ3f2CAQmscLbOy7bcoojLHP3igpZk/5bznYBk6dEH6dm6jzzI0WZpiC+/ErIQcKXijkA//JM77Ngk5OYZpum9Jo9p6byRgKRlfKjfr6z4= 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=dThX/gtF; 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="dThX/gtF" Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-b457d93c155so572112266b.1 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WhJ4Mx5N84YekwfwtgsaM13tMkuKqezRguQA+ougb2A=; b=dThX/gtFUTD6lhiUMmmIyuFBR0KeNcvon8MYEMB/+Tfc8whvQeI+9ScsML82yBYFRR SYea5PSszloayNrREBwLi0b5KBR5mm8dYn2TpaHjgEA0AzCyLPqgPPX0TPN5tsd5WMYM UMbfs6Tlg5XVOXDx+M/bsXpjq84wtZ8cyVmf+31K10a63xlmkH3DpokavvYKYruqJa2Y qiBUe8jgPwmzRbgsgPTyl8KiblyGH3Jqc+DhzH2TszV23TK1ljXiyZtTjRnjbR4PF9Hd CuHBuc8zxJm35zXMuZwj2uz7KphYa8t8G2BeGpPK0pwO2cJtYBi0i0vfIyNMMCHcv50C 50+w== 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=bLJiDCjs9FvBg6UnKAZXL6PUv0H9mTEEUbSaQhXcHYlMDqpn/gwzBpeEgDaU75OXji Runvb8VbCjWDDc8yehP1YoE8/rhN1S85bQp6X/5FNWfTQgljf8bb2kF444wC8RPu7k0x Ig0QxoVaiqV88MPgLSa01oYPaVDucR5Ef7jEBCoXLyT4yZECBzo3C/XMIkWwClWhGLA1 1jE8E1HYJ+Gp11T5B8m9gsysli0qqLb7FELkL2vxtD5eHUfsZ8Mx4pDBtO9ThGD9KIqI eLhy7E/1GQqZgeyUu+pPRu+tzDa0+jDmqxqePLyGSCxUo1py586mIY2SiTpuFEE2dYM7 ekBg== X-Forwarded-Encrypted: i=1; AJvYcCU+fnkHB7OzQ61cKxp8vrcmym0HpvhGi0f1JnYiMeltKUe93/Ic9s0EMceAPBRfK/ux7kr/bnKjE+Po/uw=@vger.kernel.org X-Gm-Message-State: AOJu0YxyHSfuvOEe1N2Fo79oeMCZELysbD2SptnToGAI4o24rUlTUJb2 FTR21Mq/9Fhl+ZzeKKFwW3gCQ7zogbFFaZQunafSz/2k7+wNiWqAT2lO X-Gm-Gg: ASbGncuKwe6W+T3Z8z+kq/xDsvP6faA+AKj8iMPONu7ZZ5J6FjeKJDoqOds+rKYGM+7 Mkk6BcMCmw2aGc2SftktZ/dyICQ+IO5QgB0pX9q9CRA2LT8KBSK/B2JoZjyiiPqgVLuFW414//M REVyaUelDAduicLiUoUhs8qtfrDpzDDaRdWK8w9221e/kbu4w36MkIgJ+n8iweOrmLREJwewix6 1W49zGaGFjg4x/hhygu2m/ocENAp6zexvrQ2lJCkvfBTUDv80eOAJQldnh4FLVGV9SA/ZiOoKfF 5PIm7Qgluns1S/HHZd+IIGoKA8O6vwe4HSN2+z/UgH7sAfyEy2fRjIyDcfm5d/Es6Ad1Wh8QeeJ 6I+49DInDtsKOsrBr0+d4zzJmAcL/IfMqkg1vLkqWPM2qkRbb9R1lZt2sStJRe5+oLfvTnwXGlq I2/BpRk1cR4BIC69Wj3vqlBQhU895eE00= 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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/sun4= i/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 =3D layer->mixer; u32 val, base; =20 - if (WARN_ON(layer->channel < mixer->cfg->vi_num)) - return; - base =3D sun8i_ui_scaler_base(mixer, layer->channel); =20 if (enable) @@ -155,9 +152,6 @@ void sun8i_ui_scaler_setup(struct sun8i_layer *layer, int i, offset; u32 base; =20 - if (WARN_ON(layer->channel < mixer->cfg->vi_num)) - return; - base =3D sun8i_ui_scaler_base(mixer, layer->channel); =20 hphase <<=3D SUN8I_UI_SCALER_PHASE_FRAC - 16; --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 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 910362FBE0B for ; Sun, 12 Oct 2025 19:24:12 +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=1760297054; cv=none; b=sE+IZwIn63bgRJGq+Gc6yVbzNXgndoO3ABwuj58bBZ4d2VWR2Uiqq8gvWG7SYdkkNc/AEYamweyoVeYn0gOtA5pYqR+n59h2Rth4g1w4j/zrFQaFDTM+DiGlkd/NF+Mt0WOsakJBp93QSSFhdNiSOtMV7fmeMWczxze9qbojbBY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297054; c=relaxed/simple; bh=8tfH0Ct8eBgAlzgTHkf8CSVQ9Upjl7jIzKw/OuBxCZ8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NDpn0EOwfeBbpYJ3pyIAxJgKHrZq6IIU4Joet7cLFFBmGXyKPJNpBFBMmHRgXRfaCxbJH7kFw1Hkct62ym2p28d/CkUz3Zk9uPQfQo5b5TiEjUs6fdJ7xof3v6r3JO0VWQVEY8qJ1tu3TOKt89l7ew3DCy81mvKObYmuhbF0WoA= 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=TJsL1aOa; 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="TJsL1aOa" Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-639e34ffa69so5473999a12.3 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XtfZqtpuShLv1nU1aubYkk3yFU+GUfrCfqGs419v49U=; b=TJsL1aOavD39Ah4rzehcEvXsj6zm/YjIOa8U8BJDmdLpK0363yxYVWBjKt52wGvkiZ atBCD6C1LDNfriCbYJilRgukB5wANGsFTVtbhTDuZZMbr6nYPZMm7lDxmSTE7a0FnzNy IPHuYKkY6DZNiYl7LRW9MBtkr7wq+0nFSM8vsMqYxf2+05DjICbHfYSgws9wQOfpLSnV Pj6tvUCr7W0ZB2irmwXNlRiKYaHj9oCLuFxb83OPT8cp/MCAUCXVzDMu2uebgG2MAEdq kjIR7PUhtCuKnXmpGwclnZMBRu92bb8PMGy43eY/OdT19pVXGNxhRi8YYPtvl/o8J63A OzvA== 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=G3X0MdJDMEMORcVNAFO8VZFkHyVnhkdWUBSohJaFbZoMKLOxvWX7jJVqNkbrBmXyRB yTUJqol8kRs+m7oYV1VoqgJ2pB1YSImKRMjesY2HEYAlWjKW+LPoni/E33JQUkkCA45x C5zaOrK4lTTIayT72ssVC38XGxK4DbcVAKudLQzAUDk2fWJcdHF5rDt0Dhp8BDlmpbXG KlsTXrm3fnUNGV5VJYhJtBoZYW7yULI0lewslK1FHMNVHPtOCuJXVKFSLHwbl9kHQLPK ySOJIVPO9Lno8/DjHvpY/tWqc+BhIFXyNIaI9XLNZMVqb+Ijz40URXYRbxoO441S5xNp 4L1Q== X-Forwarded-Encrypted: i=1; AJvYcCXK6243NGSM3pymuX2BsO5zMXhgh2OYpxLMdClh0WbW6UJ2qbZnZzexEBLeudWYITGySBet5egQvny3FRE=@vger.kernel.org X-Gm-Message-State: AOJu0YxJJo2lFqhPmsJTKubhNg67OG2rdIbaU8J2nk9Op9zvaz8AJiPO Abfhc/xRu75drYOfpOaGs2Lb88VQ0Pk44dzS5XowbdIP11I7CAKqScZa X-Gm-Gg: ASbGncuRdVx0QzT5KOcMrxNkBtDIrspux3nYQ7Y0jR7n35WUaLPKwJGcOtZFm7HK0+M oq8JkWQv+8lEYS7s7bYS51KfmZb0n/alJeR/b4BTaGlsU6kpPDHJVjn0cQnbNein3x9qXeH6jNG UKrK2YqvrCsRcYNYrkbENmQRs1Qe6HtJe3hPesofHsm9WQBaRCLLAzZhGWRjymZdXZ1D0ZVjd82 4f4Zc9ylP6MLXkVqotjaaTd90aLS63Uec3TTF+ffA0Ir8cjBj467SZ3UWrgbJ6/kI+tGP64SScJ xNyury9ARUj4S9knIummo+Dx5uNTvW/Lo5tm5ht0SKGbfAG9N49V5JqN7t5iYzl0hQ+uLdTIMr0 TLI5qSlYIb3E0lZHWjN3JrEIWqGgGf99eV3uFuSat8sGJDZcGileqC968wb/CyoRCTf3a0cxDvk RE8iWpylefyKPX8szzd9+Kl504ahgEUqY= 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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/su= n8i_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_c= fg =3D { .scaler_mask =3D 0xf, .scanline_yuv =3D 2048, .de2_fcc_alpha =3D 1, + .vi_scaler_num =3D 1, .ui_num =3D 3, .vi_num =3D 1, }; @@ -718,6 +719,7 @@ static const struct sun8i_mixer_cfg sun8i_a83t_mixer1_c= fg =3D { .scaler_mask =3D 0x3, .scanline_yuv =3D 2048, .de2_fcc_alpha =3D 1, + .vi_scaler_num =3D 1, .ui_num =3D 1, .vi_num =3D 1, }; @@ -729,6 +731,7 @@ static const struct sun8i_mixer_cfg sun8i_h3_mixer0_cfg= =3D { .scaler_mask =3D 0xf, .scanline_yuv =3D 2048, .de2_fcc_alpha =3D 1, + .vi_scaler_num =3D 1, .ui_num =3D 3, .vi_num =3D 1, }; @@ -740,6 +743,7 @@ static const struct sun8i_mixer_cfg sun8i_r40_mixer0_cf= g =3D { .scaler_mask =3D 0xf, .scanline_yuv =3D 2048, .de2_fcc_alpha =3D 1, + .vi_scaler_num =3D 1, .ui_num =3D 3, .vi_num =3D 1, }; @@ -751,6 +755,7 @@ static const struct sun8i_mixer_cfg sun8i_r40_mixer1_cf= g =3D { .scaler_mask =3D 0x3, .scanline_yuv =3D 2048, .de2_fcc_alpha =3D 1, + .vi_scaler_num =3D 1, .ui_num =3D 1, .vi_num =3D 1, }; @@ -761,6 +766,7 @@ static const struct sun8i_mixer_cfg sun8i_v3s_mixer_cfg= =3D { .ui_num =3D 1, .scaler_mask =3D 0x3, .scanline_yuv =3D 2048, + .vi_scaler_num =3D 2, .ccsc =3D CCSC_MIXER0_LAYOUT, .mod_rate =3D 150000000, }; @@ -772,6 +778,7 @@ static const struct sun8i_mixer_cfg sun20i_d1_mixer0_cf= g =3D { .scaler_mask =3D 0x3, .scanline_yuv =3D 2048, .de2_fcc_alpha =3D 1, + .vi_scaler_num =3D 1, .ui_num =3D 1, .vi_num =3D 1, }; @@ -783,6 +790,7 @@ static const struct sun8i_mixer_cfg sun20i_d1_mixer1_cf= g =3D { .scaler_mask =3D 0x1, .scanline_yuv =3D 1024, .de2_fcc_alpha =3D 1, + .vi_scaler_num =3D 1, .ui_num =3D 0, .vi_num =3D 1, }; @@ -794,6 +802,7 @@ static const struct sun8i_mixer_cfg sun50i_a64_mixer0_c= fg =3D { .scaler_mask =3D 0xf, .scanline_yuv =3D 4096, .de2_fcc_alpha =3D 1, + .vi_scaler_num =3D 1, .ui_num =3D 3, .vi_num =3D 1, }; @@ -805,6 +814,7 @@ static const struct sun8i_mixer_cfg sun50i_a64_mixer1_c= fg =3D { .scaler_mask =3D 0x3, .scanline_yuv =3D 2048, .de2_fcc_alpha =3D 1, + .vi_scaler_num =3D 1, .ui_num =3D 1, .vi_num =3D 1, }; @@ -814,6 +824,7 @@ static const struct sun8i_mixer_cfg sun50i_h6_mixer0_cf= g =3D { .mod_rate =3D 600000000, .scaler_mask =3D 0xf, .scanline_yuv =3D 4096, + .vi_scaler_num =3D 1, .ui_num =3D 3, .vi_num =3D 1, }; diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.h b/drivers/gpu/drm/sun4i/su= n8i_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]; }; =20 diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c b/drivers/gpu/drm/sun4= i/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] =3D { =20 static u32 sun8i_ui_scaler_base(struct sun8i_mixer *mixer, int channel) { - int vi_num =3D mixer->cfg->vi_num; + int offset =3D mixer->cfg->vi_scaler_num; =20 if (mixer->cfg->de_type =3D=3D 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); } =20 static int sun8i_ui_scaler_coef_index(unsigned int step) --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (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 AFA7E2FC02A for ; Sun, 12 Oct 2025 19:24:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297056; cv=none; b=hoG79SmA92ywnr+i+bWolns1v0ADknZml+SrIEadqKOhQ1Lm+1XV0CLBCp3d9FGqLgEZJakvCQ+Lk3QYuxceW+dykuJYkecU4AUcNd2bEwf3Kf17IgjEETPMcmWIIKMzYzm3VSO7LU1OhbkgxkWhkIkeGvvChHN1Lp/t8Pggms0= 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=j3rNHeqT; arc=none smtp.client-ip=209.85.218.48 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="j3rNHeqT" Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-b3b27b50090so653305166b.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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kaJPE4L65CXDkqyIuBABLqdOxJoCd3GcyPIY1yQyHic=; b=j3rNHeqTQKKweg+mWyLFYU3mV8RO8VLYgRcF4Vl53QemcHYPwrCC1lycBgAWQSRTUb JE/vZSWwpDeuxJdYisMG8osC95H4BXF7yQv6nnzpbcwIR6UuJih9sFW05RXCcMknwsJ4 Kmg2lH2KUS48RF4yyViXDbXoriXomFOl+YGiiIMQBeNN2aYKWoB0Bx9Q1dZiytUCcy/9 0Ao3TFezx+8nZFqP+gS3Df8yn/tZ2R6+S8NWdAJT+OuthJ0zA1yYqM6ZmLcXSyCrGVSA 34iVSl/QXyaIjzf28nOBrLp1Eq5iJkQif1RBcYwINCcDLI6RTjTz3X7emoiyMh4ZhVHI y/UA== 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=pDAmWpnzt12cqwEhzkK5rdmAqDZs/dMwL0tbCacjb8NlUuOL8Jw6lqp1A4rdq6Sndp PwCzrKFOf5TmNwhPWgl8t1TP6OGOujdjHI5dFmyaFd3szhQ+4QfMr0JNl7lZETfJKWiV KysV36qwf+LITaIQW3XSHrREeP4uQLgyKJRsPE6S5tQb+KzM1fQ0FpE6iOB7V37E1+CN zgTEf2IOm1Q3eBT6sI9rwnnGg13fUz9gzPtk/HEmhel1tNwlNAcPEb9UcP4nfhd7pvbq A6us/Nj0YjCmTD11ouQ3ECt0YVrjzDT7SXOpYPJQenLGK8DGHqsiTdCXVVfCmMpQ7DVQ 0axA== X-Forwarded-Encrypted: i=1; AJvYcCUgzJnEGLQyzV6ptu6blRKmX2BvsJGyMGZLqJzjcIhUeOtujWlZwSSU7ZLZUkNhJE2mYc5Fdr9g5NG5XKE=@vger.kernel.org X-Gm-Message-State: AOJu0YyFlb+5WDssk8qZUGjVbvhb616+/jXU+kWgmLrAlBpeoHXeR7Cj ze/7fNEofAGcvot4nIQnOh4TbwGH0TOpBl4YfgUhmhAj2SkmyIvhCjOU X-Gm-Gg: ASbGnct6BaLHv7CYSoC/xxPKtBESK6CrrN0b7my8gPDzXossEd0lW4SZ03jPM665QBh CGOYMvLuGHSh0GGFhJQ0re04QRiS59iF9JSKF2awcUpzkhXdp/RklHNjgYUy1h7dLBvyCXhEO9Z IAcrzoQqYgv5DDvG+dS7gv14Ps/Erd4YsFDDkAGKWShJV4u61M1caeoZ0EaGv34xeX4qx7C4KeN ywBjlbSs/+ApFjp4oBXp5kZ+I+XjHqy3Mp1mb3NdI43tCQ/xQceeB5U8JcQpGzz33eishfZQkeW 1+5lvFwd9jTSMazoqmwI0sorMnEn9oWq94GdOxRkdFW/LDxqCtMokBPotodx9NxGpca5Tebbthi 05wMcwfcIQn1QKt5OVXgQ0QIJtIKnDO11I6pHDqihQWuu9l8QUdtOE/FHw8Vb2EJgGCecDD8Rgg SCHfcpgBiSzzUjUT3bLYbVjSYZwkR85GY= 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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/sun8= i_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; } =20 - base =3D ccsc_base[layer->mixer->cfg->ccsc][layer->channel]; + base =3D ccsc_base[layer->mixer->cfg->lay_cfg.ccsc][layer->channel]; =20 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/su= n8i_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_devi= ce *pdev) } =20 static const struct sun8i_mixer_cfg sun8i_a83t_mixer0_cfg =3D { - .ccsc =3D CCSC_MIXER0_LAYOUT, + .lay_cfg =3D { + .ccsc =3D CCSC_MIXER0_LAYOUT, + .de_type =3D SUN8I_MIXER_DE2, + .scaler_mask =3D 0xf, + .scanline_yuv =3D 2048, + .de2_fcc_alpha =3D 1, + .vi_scaler_num =3D 1, + }, .de_type =3D SUN8I_MIXER_DE2, - .scaler_mask =3D 0xf, - .scanline_yuv =3D 2048, - .de2_fcc_alpha =3D 1, - .vi_scaler_num =3D 1, .ui_num =3D 3, .vi_num =3D 1, }; =20 static const struct sun8i_mixer_cfg sun8i_a83t_mixer1_cfg =3D { - .ccsc =3D CCSC_MIXER1_LAYOUT, + .lay_cfg =3D { + .ccsc =3D CCSC_MIXER1_LAYOUT, + .de_type =3D SUN8I_MIXER_DE2, + .scaler_mask =3D 0x3, + .scanline_yuv =3D 2048, + .de2_fcc_alpha =3D 1, + .vi_scaler_num =3D 1, + }, .de_type =3D SUN8I_MIXER_DE2, - .scaler_mask =3D 0x3, - .scanline_yuv =3D 2048, - .de2_fcc_alpha =3D 1, - .vi_scaler_num =3D 1, .ui_num =3D 1, .vi_num =3D 1, }; =20 static const struct sun8i_mixer_cfg sun8i_h3_mixer0_cfg =3D { - .ccsc =3D CCSC_MIXER0_LAYOUT, + .lay_cfg =3D { + .ccsc =3D CCSC_MIXER0_LAYOUT, + .de_type =3D SUN8I_MIXER_DE2, + .scaler_mask =3D 0xf, + .scanline_yuv =3D 2048, + .de2_fcc_alpha =3D 1, + .vi_scaler_num =3D 1, + }, .de_type =3D SUN8I_MIXER_DE2, .mod_rate =3D 432000000, - .scaler_mask =3D 0xf, - .scanline_yuv =3D 2048, - .de2_fcc_alpha =3D 1, - .vi_scaler_num =3D 1, .ui_num =3D 3, .vi_num =3D 1, }; =20 static const struct sun8i_mixer_cfg sun8i_r40_mixer0_cfg =3D { - .ccsc =3D CCSC_MIXER0_LAYOUT, + .lay_cfg =3D { + .ccsc =3D CCSC_MIXER0_LAYOUT, + .de_type =3D SUN8I_MIXER_DE2, + .scaler_mask =3D 0xf, + .scanline_yuv =3D 2048, + .de2_fcc_alpha =3D 1, + .vi_scaler_num =3D 1, + }, .de_type =3D SUN8I_MIXER_DE2, .mod_rate =3D 297000000, - .scaler_mask =3D 0xf, - .scanline_yuv =3D 2048, - .de2_fcc_alpha =3D 1, - .vi_scaler_num =3D 1, .ui_num =3D 3, .vi_num =3D 1, }; =20 static const struct sun8i_mixer_cfg sun8i_r40_mixer1_cfg =3D { - .ccsc =3D CCSC_MIXER1_LAYOUT, + .lay_cfg =3D { + .ccsc =3D CCSC_MIXER1_LAYOUT, + .de_type =3D SUN8I_MIXER_DE2, + .scaler_mask =3D 0x3, + .scanline_yuv =3D 2048, + .de2_fcc_alpha =3D 1, + .vi_scaler_num =3D 1, + }, .de_type =3D SUN8I_MIXER_DE2, .mod_rate =3D 297000000, - .scaler_mask =3D 0x3, - .scanline_yuv =3D 2048, - .de2_fcc_alpha =3D 1, - .vi_scaler_num =3D 1, .ui_num =3D 1, .vi_num =3D 1, }; =20 static const struct sun8i_mixer_cfg sun8i_v3s_mixer_cfg =3D { - .de_type =3D SUN8I_MIXER_DE2, - .vi_num =3D 2, - .ui_num =3D 1, - .scaler_mask =3D 0x3, - .scanline_yuv =3D 2048, - .vi_scaler_num =3D 2, - .ccsc =3D CCSC_MIXER0_LAYOUT, - .mod_rate =3D 150000000, + .lay_cfg =3D { + .ccsc =3D CCSC_MIXER0_LAYOUT, + .de_type =3D SUN8I_MIXER_DE2, + .scaler_mask =3D 0x3, + .scanline_yuv =3D 2048, + .vi_scaler_num =3D 2, + }, + .de_type =3D SUN8I_MIXER_DE2, + .mod_rate =3D 150000000, + .vi_num =3D 2, + .ui_num =3D 1, }; =20 static const struct sun8i_mixer_cfg sun20i_d1_mixer0_cfg =3D { - .ccsc =3D CCSC_D1_MIXER0_LAYOUT, + .lay_cfg =3D { + .ccsc =3D CCSC_D1_MIXER0_LAYOUT, + .de_type =3D SUN8I_MIXER_DE2, + .scaler_mask =3D 0x3, + .scanline_yuv =3D 2048, + .de2_fcc_alpha =3D 1, + .vi_scaler_num =3D 1, + }, .de_type =3D SUN8I_MIXER_DE2, .mod_rate =3D 297000000, - .scaler_mask =3D 0x3, - .scanline_yuv =3D 2048, - .de2_fcc_alpha =3D 1, - .vi_scaler_num =3D 1, .ui_num =3D 1, .vi_num =3D 1, }; =20 static const struct sun8i_mixer_cfg sun20i_d1_mixer1_cfg =3D { - .ccsc =3D CCSC_MIXER1_LAYOUT, + .lay_cfg =3D { + .ccsc =3D CCSC_MIXER1_LAYOUT, + .de_type =3D SUN8I_MIXER_DE2, + .scaler_mask =3D 0x1, + .scanline_yuv =3D 1024, + .de2_fcc_alpha =3D 1, + .vi_scaler_num =3D 1, + }, .de_type =3D SUN8I_MIXER_DE2, .mod_rate =3D 297000000, - .scaler_mask =3D 0x1, - .scanline_yuv =3D 1024, - .de2_fcc_alpha =3D 1, - .vi_scaler_num =3D 1, .ui_num =3D 0, .vi_num =3D 1, }; =20 static const struct sun8i_mixer_cfg sun50i_a64_mixer0_cfg =3D { - .ccsc =3D CCSC_MIXER0_LAYOUT, + .lay_cfg =3D { + .ccsc =3D CCSC_MIXER0_LAYOUT, + .de_type =3D SUN8I_MIXER_DE2, + .scaler_mask =3D 0xf, + .scanline_yuv =3D 4096, + .de2_fcc_alpha =3D 1, + .vi_scaler_num =3D 1, + }, .de_type =3D SUN8I_MIXER_DE2, .mod_rate =3D 297000000, - .scaler_mask =3D 0xf, - .scanline_yuv =3D 4096, - .de2_fcc_alpha =3D 1, - .vi_scaler_num =3D 1, .ui_num =3D 3, .vi_num =3D 1, }; =20 static const struct sun8i_mixer_cfg sun50i_a64_mixer1_cfg =3D { - .ccsc =3D CCSC_MIXER1_LAYOUT, + .lay_cfg =3D { + .ccsc =3D CCSC_MIXER1_LAYOUT, + .de_type =3D SUN8I_MIXER_DE2, + .scaler_mask =3D 0x3, + .scanline_yuv =3D 2048, + .de2_fcc_alpha =3D 1, + .vi_scaler_num =3D 1, + }, .de_type =3D SUN8I_MIXER_DE2, .mod_rate =3D 297000000, - .scaler_mask =3D 0x3, - .scanline_yuv =3D 2048, - .de2_fcc_alpha =3D 1, - .vi_scaler_num =3D 1, .ui_num =3D 1, .vi_num =3D 1, }; =20 static const struct sun8i_mixer_cfg sun50i_h6_mixer0_cfg =3D { + .lay_cfg =3D { + .de_type =3D SUN8I_MIXER_DE3, + .scaler_mask =3D 0xf, + .scanline_yuv =3D 4096, + .vi_scaler_num =3D 1, + }, .de_type =3D SUN8I_MIXER_DE3, .mod_rate =3D 600000000, - .scaler_mask =3D 0xf, - .scanline_yuv =3D 4096, - .vi_scaler_num =3D 1, .ui_num =3D 3, .vi_num =3D 1, }; =20 static const struct sun8i_mixer_cfg sun50i_h616_mixer0_cfg =3D { + .lay_cfg =3D { + .de_type =3D SUN8I_MIXER_DE33, + .scaler_mask =3D 0xf, + .scanline_yuv =3D 4096, + }, .de_type =3D SUN8I_MIXER_DE33, .mod_rate =3D 600000000, - .scaler_mask =3D 0xf, - .scanline_yuv =3D 4096, .ui_num =3D 3, .vi_num =3D 1, .map =3D {0, 6, 7, 8}, diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.h b/drivers/gpu/drm/sun4i/su= n8i_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 { }; =20 /** - * 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 generat= ion. * @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]; }; =20 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 =3D DRM_PLANE_NO_SCALING; max_scale =3D DRM_PLANE_NO_SCALING; =20 - if (layer->mixer->cfg->scaler_mask & BIT(layer->channel)) { + if (layer->mixer->cfg->lay_cfg.scaler_mask & BIT(layer->channel)) { min_scale =3D SUN8I_UI_SCALER_SCALE_MIN; max_scale =3D SUN8I_UI_SCALER_SCALE_MAX; } diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c b/drivers/gpu/drm/sun4= i/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] =3D { =20 static u32 sun8i_ui_scaler_base(struct sun8i_mixer *mixer, int channel) { - int offset =3D mixer->cfg->vi_scaler_num; + int offset =3D mixer->cfg->lay_cfg.vi_scaler_num; =20 if (mixer->cfg->de_type =3D=3D 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); =20 - 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_la= yer *layer, } =20 /* it seems that every RGB scaler has buffer for 2048 pixels */ - scanline =3D subsampled ? mixer->cfg->scanline_yuv : 2048; + scanline =3D subsampled ? mixer->cfg->lay_cfg.scanline_yuv : 2048; =20 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 =3D DRM_PLANE_NO_SCALING; max_scale =3D DRM_PLANE_NO_SCALING; =20 - if (layer->mixer->cfg->scaler_mask & BIT(layer->channel)) { + if (layer->mixer->cfg->lay_cfg.scaler_mask & BIT(layer->channel)) { min_scale =3D SUN8I_VI_SCALER_SCALE_MIN; max_scale =3D 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); } =20 - if (mixer->cfg->de2_fcc_alpha || mixer->cfg->de_type >=3D SUN8I_MIXER_DE3= ) { + if (mixer->cfg->lay_cfg.de2_fcc_alpha || mixer->cfg->de_type >=3D SUN8I_M= IXER_DE3) { ret =3D drm_plane_create_alpha_property(&layer->plane); if (ret) { dev_err(drm->dev, "Couldn't add alpha property\n"); --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 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 38D122FCC16 for ; Sun, 12 Oct 2025 19:24:15 +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=1760297058; cv=none; b=jN61rG59Ewbfd3W9Hc5ry8vbVAPqbBqwTy2R/OTmM+ZdCKNoufMVisDsUTIsunl3+7vAyDD/cIRAom+Qf968lGRnbuQLTUGV7uiZM4Be+Uwf+Xqwwqe5//U3yazemlW2S0xzFnhW43xq2PvUw4IhraUY5fT1c1EgLqbNyMJEZEg= 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=i46zhw+Y; 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="i46zhw+Y" Received: by mail-ej1-f43.google.com with SMTP id a640c23a62f3a-b3e44f22f15so514486666b.2 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=1760297053; x=1760901853; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HEur3eg0WxHhimUwBT77oBMDrloZhIqqu554ATZTSIU=; b=i46zhw+Y9aUR7G4Jj7up/dpAlZR0SOD+/64hwD/J3Rf/Ii7ifzmoxyfNl/4G7Gm8gI /i41lUKQRafV0I7P5jcCeqhj39qKVLUIk/k46x4FAWed6A+ePReMzME/2422BA4GgnFG jeJcsgx730N1S9oind+Lm5AEuemk9ZjQEAje/QJwC0BKuJTXMzN9eHKwCAxDkGggKrx9 mn2zgwae6lcJgRRQ+EH03lAoRIgaW1ulW60MPxGKLs2rBVmDcHBHY3rxLOS2pox+v0Np Su1ShFm0XdoXVSs7gs3Tf1XbfNlXPgXiFluUbDZ8fjFnMoYDGmlvYzPkKfsl+480x89g DTnA== 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=SbSdqTNJUqz1vJfYUvqQ4eechEtKNn4IXZkkROiywqTmh25Wjd2IpILEbtomoUHhxC RkjJIdz3zewGkbbrquiW7wQSGFbaa+cR2LIf5lgbAMjeJJ1sPrRqvjI40y6Qnk91xgCE dvDLm8wvqanmM29tPgIfa56XXIMmQrtOQg7X8UoCMqF3xc/j8A8puIifq+wU0x/9a0LO s62CEBAaohCsX64xFKk7ODABcbp2+uZVnygnFOxBKMDcwAWnw2JOyoQQceIoFLstWpnB KvTgIzUDuVHlJCynL57rKXAzuSBpWZLbSRS6xLiFrk0OODJqGAXpbSC7zD2n/XEjxA9T sAFQ== X-Forwarded-Encrypted: i=1; AJvYcCVaoapR+PqtnwpQijJti1WngR4DnpTkp6TFKaY+7cHVn4vgtHn08hyluAME2Qp3j2efXTtYia73Gcwu38g=@vger.kernel.org X-Gm-Message-State: AOJu0YwPLfNsmr72fNTbNgBR9X61eW7KlqNLE/Byf5q7TPWiND0HF034 7/C5pLE0ktRE4j2oNNLJRy+D/Aj0+cIrjuym0AYfitJbpwg0q9c0GzCf X-Gm-Gg: ASbGncuiqCDX2w3HoVO2ZbQJ+5RDT9YT+OYtp7FRtJIl2co+Vz28jyfveyAoG7mihMW ud8lmIPNjqylgsuWXNgiTLsGa1SskXrnXD5AV+1Gmb0/ioxUJWq3EmP76NQxDKVSFspk8hDGYzB ymkgACUV5AGOxqv525IGaTSql+NB5VEhk8o7scnp/9O8GUbd7EJOdTBy9Omgl6rgY6tcXazeIYV ga87X9h3XA+9Llxt+T1xrm1uZ+IQjOWxITH80taqCLLOSoSc84bdMJvuLkIgTDTc6pHDY2A+nd9 Ll6Ka22zYoDTXUMboRXf97zzY1UYRjQhyLd+9ej+esOfw7SPiv6TjKM/SuWnKIdmK2jgxGAhpL7 5dOSPIiP8MyS4FJOYiUVP/ZYDwd8Q42mwFRgyAnShVil2uqsa9L5o1+3duRg/bjsGT4TKIuyn4r psP982pot6p+h38vbTS8jW 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This allows to almost completely decouple layer code from mixer. This is important for DE33. Signed-off-by: Jernej Skrabec Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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/sun8= i_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 =3D sun8i_csc_get_mode(state); u32 base; =20 - if (layer->mixer->cfg->de_type =3D=3D SUN8I_MIXER_DE3) { + if (layer->cfg->de_type =3D=3D SUN8I_MIXER_DE3) { sun8i_de3_ccsc_setup(layer->regs, layer->channel, mode, state->color_encoding, state->color_range); return; } =20 - base =3D ccsc_base[layer->mixer->cfg->lay_cfg.ccsc][layer->channel]; + base =3D ccsc_base[layer->cfg->ccsc][layer->channel]; =20 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/su= n8i_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, =20 layer =3D 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, =20 layer =3D 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/su= n8i_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 { }; =20 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; }; =20 static inline struct sun8i_layer * @@ -259,14 +260,14 @@ sun8i_blender_regmap(struct sun8i_mixer *mixer) } =20 static inline u32 -sun8i_channel_base(struct sun8i_mixer *mixer, int channel) +sun8i_channel_base(struct sun8i_layer *layer) { - if (mixer->cfg->de_type =3D=3D SUN8I_MIXER_DE33) - return DE33_CH_BASE + channel * DE33_CH_SIZE; - else if (mixer->cfg->de_type =3D=3D SUN8I_MIXER_DE3) - return DE3_CH_BASE + channel * DE3_CH_SIZE; + if (layer->cfg->de_type =3D=3D SUN8I_MIXER_DE33) + return DE33_CH_BASE + layer->channel * DE33_CH_SIZE; + else if (layer->cfg->de_type =3D=3D 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; } =20 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 @@ =20 static void sun8i_ui_layer_disable(struct sun8i_layer *layer) { - struct sun8i_mixer *mixer =3D layer->mixer; - u32 ch_base =3D sun8i_channel_base(mixer, layer->channel); + u32 ch_base =3D sun8i_channel_base(layer); =20 - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, layer->overlay), 0); } =20 @@ -38,11 +37,10 @@ static void sun8i_ui_layer_update_attributes(struct sun= 8i_layer *layer, struct drm_plane *plane) { struct drm_plane_state *state =3D plane->state; - struct sun8i_mixer *mixer =3D layer->mixer; const struct drm_format_info *fmt; u32 val, ch_base, hw_fmt; =20 - ch_base =3D sun8i_channel_base(mixer, layer->channel); + ch_base =3D sun8i_channel_base(layer); fmt =3D state->fb->format; sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); =20 @@ -61,7 +59,6 @@ static void sun8i_ui_layer_update_coord(struct sun8i_laye= r *layer, struct drm_plane *plane) { struct drm_plane_state *state =3D plane->state; - struct sun8i_mixer *mixer =3D 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_laye= r *layer, DRM_DEBUG_DRIVER("Updating UI channel %d overlay %d\n", layer->channel, layer->overlay); =20 - ch_base =3D sun8i_channel_base(mixer, layer->channel); + ch_base =3D sun8i_channel_base(layer); =20 src_w =3D drm_rect_width(&state->src) >> 16; src_h =3D drm_rect_height(&state->src) >> 16; @@ -102,7 +99,7 @@ static void sun8i_ui_layer_update_coord(struct sun8i_lay= er *layer, hscale =3D state->src_w / state->crtc_w; vscale =3D state->src_h / state->crtc_h; =20 - if (mixer->cfg->de_type =3D=3D SUN8I_MIXER_DE33) { + if (layer->cfg->de_type =3D=3D 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_la= yer *layer, } } else { DRM_DEBUG_DRIVER("HW scaling is not needed\n"); - if (mixer->cfg->de_type =3D=3D SUN8I_MIXER_DE33) + if (layer->cfg->de_type =3D=3D 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 =3D plane->state; - struct sun8i_mixer *mixer =3D layer->mixer; struct drm_framebuffer *fb =3D state->fb; struct drm_gem_dma_object *gem; dma_addr_t dma_addr; u32 ch_base; int bpp; =20 - ch_base =3D sun8i_channel_base(mixer, layer->channel); + ch_base =3D sun8i_channel_base(layer); =20 /* Get the physical address of the buffer in memory */ gem =3D 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 =3D DRM_PLANE_NO_SCALING; max_scale =3D DRM_PLANE_NO_SCALING; =20 - if (layer->mixer->cfg->lay_cfg.scaler_mask & BIT(layer->channel)) { + if (layer->cfg->scaler_mask & BIT(layer->channel)) { min_scale =3D SUN8I_UI_SCALER_SCALE_MIN; max_scale =3D 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 =3D phy_index; layer->overlay =3D 0; layer->regs =3D regs; + layer->cfg =3D cfg; =20 /* possible crtcs are set later */ ret =3D 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_de= vice *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/sun4= i/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] =3D { 0x0b1c1603, 0x0d1c1502, 0x0e1d1401, 0x0f1d1301, }; =20 -static u32 sun8i_ui_scaler_base(struct sun8i_mixer *mixer, int channel) +static u32 sun8i_ui_scaler_base(struct sun8i_layer *layer) { - int offset =3D mixer->cfg->lay_cfg.vi_scaler_num; + int offset =3D layer->cfg->vi_scaler_num; =20 - if (mixer->cfg->de_type =3D=3D SUN8I_MIXER_DE3) + if (layer->cfg->de_type =3D=3D 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); } =20 static int sun8i_ui_scaler_coef_index(unsigned int step) @@ -129,10 +129,9 @@ static int sun8i_ui_scaler_coef_index(unsigned int ste= p) =20 void sun8i_ui_scaler_enable(struct sun8i_layer *layer, bool enable) { - struct sun8i_mixer *mixer =3D layer->mixer; u32 val, base; =20 - base =3D sun8i_ui_scaler_base(mixer, layer->channel); + base =3D sun8i_ui_scaler_base(layer); =20 if (enable) val =3D 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 =3D layer->mixer; u32 insize, outsize; int i, offset; u32 base; =20 - base =3D sun8i_ui_scaler_base(mixer, layer->channel); + base =3D sun8i_ui_scaler_base(layer); =20 hphase <<=3D SUN8I_UI_SCALER_PHASE_FRAC - 16; vphase <<=3D 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 @@ =20 static void sun8i_vi_layer_disable(struct sun8i_layer *layer) { - struct sun8i_mixer *mixer =3D layer->mixer; - u32 ch_base =3D sun8i_channel_base(mixer, layer->channel); + u32 ch_base =3D sun8i_channel_base(layer); =20 - regmap_write(mixer->engine.regs, + regmap_write(layer->regs, SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, layer->overlay), 0); } =20 @@ -31,11 +30,10 @@ static void sun8i_vi_layer_update_attributes(struct sun= 8i_layer *layer, struct drm_plane *plane) { struct drm_plane_state *state =3D plane->state; - struct sun8i_mixer *mixer =3D layer->mixer; const struct drm_format_info *fmt; u32 val, ch_base, hw_fmt; =20 - ch_base =3D sun8i_channel_base(mixer, layer->channel); + ch_base =3D sun8i_channel_base(layer); fmt =3D state->fb->format; sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt); =20 @@ -43,7 +41,7 @@ static void sun8i_vi_layer_update_attributes(struct sun8i= _layer *layer, if (!fmt->is_yuv) val |=3D SUN8I_MIXER_CHAN_VI_LAYER_ATTR_RGB_MODE; val |=3D SUN8I_MIXER_CHAN_VI_LAYER_ATTR_EN; - if (mixer->cfg->de_type >=3D SUN8I_MIXER_DE3) { + if (layer->cfg->de_type >=3D SUN8I_MIXER_DE3) { val |=3D SUN50I_MIXER_CHAN_VI_LAYER_ATTR_ALPHA(state->alpha >> 8); val |=3D (state->alpha =3D=3D 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); =20 - 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_laye= r *layer, DRM_DEBUG_DRIVER("Updating VI channel %d overlay %d\n", layer->channel, layer->overlay); =20 - ch_base =3D sun8i_channel_base(mixer, layer->channel); + ch_base =3D sun8i_channel_base(layer); =20 src_w =3D drm_rect_width(&state->src) >> 16; src_h =3D drm_rect_height(&state->src) >> 16; @@ -152,7 +150,7 @@ static void sun8i_vi_layer_update_coord(struct sun8i_la= yer *layer, } =20 /* it seems that every RGB scaler has buffer for 2048 pixels */ - scanline =3D subsampled ? mixer->cfg->lay_cfg.scanline_yuv : 2048; + scanline =3D subsampled ? layer->cfg->scanline_yuv : 2048; =20 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_l= ayer *layer, struct drm_plane *plane) { struct drm_plane_state *state =3D plane->state; - struct sun8i_mixer *mixer =3D layer->mixer; struct drm_framebuffer *fb =3D state->fb; const struct drm_format_info *format =3D fb->format; struct drm_gem_dma_object *gem; @@ -203,7 +200,7 @@ static void sun8i_vi_layer_update_buffer(struct sun8i_l= ayer *layer, u32 ch_base; int i; =20 - ch_base =3D sun8i_channel_base(mixer, layer->channel); + ch_base =3D sun8i_channel_base(layer); =20 /* Adjust x and y to be dividable by subsampling factor */ src_x =3D (state->src.x1 >> 16) & ~(format->hsub - 1); @@ -278,7 +275,7 @@ static int sun8i_vi_layer_atomic_check(struct drm_plane= *plane, min_scale =3D DRM_PLANE_NO_SCALING; max_scale =3D DRM_PLANE_NO_SCALING; =20 - if (layer->mixer->cfg->lay_cfg.scaler_mask & BIT(layer->channel)) { + if (layer->cfg->scaler_mask & BIT(layer->channel)) { min_scale =3D SUN8I_VI_SCALER_SCALE_MIN; max_scale =3D 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 =3D phy_index; layer->overlay =3D 0; layer->regs =3D regs; + layer->cfg =3D cfg; =20 - if (mixer->cfg->de_type >=3D SUN8I_MIXER_DE3) { + if (layer->cfg->de_type >=3D SUN8I_MIXER_DE3) { formats =3D sun8i_vi_layer_de3_formats; format_count =3D ARRAY_SIZE(sun8i_vi_layer_de3_formats); } else { @@ -452,7 +451,7 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_= device *drm, return ERR_PTR(ret); } =20 - if (mixer->cfg->lay_cfg.de2_fcc_alpha || mixer->cfg->de_type >=3D SUN8I_M= IXER_DE3) { + if (layer->cfg->de2_fcc_alpha || layer->cfg->de_type >=3D SUN8I_MIXER_DE3= ) { ret =3D 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, =20 supported_encodings =3D BIT(DRM_COLOR_YCBCR_BT601) | BIT(DRM_COLOR_YCBCR_BT709); - if (mixer->cfg->de_type >=3D SUN8I_MIXER_DE3) + if (layer->cfg->de_type >=3D SUN8I_MIXER_DE3) supported_encodings |=3D BIT(DRM_COLOR_YCBCR_BT2020); =20 supported_ranges =3D 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_de= vice *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/sun4= i/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] =3D { 0x1012110d, 0x1012110d, 0x1013110c, 0x1013110c, }; =20 -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 =3D=3D SUN8I_MIXER_DE33) + if (layer->cfg->de_type =3D=3D SUN8I_MIXER_DE33) return DE33_VI_SCALER_UNIT_BASE + - DE33_CH_SIZE * channel; - else if (mixer->cfg->de_type =3D=3D SUN8I_MIXER_DE3) + DE33_CH_SIZE * layer->channel; + else if (layer->cfg->de_type =3D=3D 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; } =20 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; =20 - base =3D sun8i_vi_scaler_base(layer->mixer, layer->channel); + base =3D sun8i_vi_scaler_base(layer); =20 if (enable) val =3D 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 =3D layer->mixer; u32 chphase, cvphase; u32 insize, outsize; u32 base; =20 - base =3D sun8i_vi_scaler_base(mixer, layer->channel); + base =3D sun8i_vi_scaler_base(layer); =20 hphase <<=3D SUN8I_VI_SCALER_PHASE_FRAC - 16; vphase <<=3D SUN8I_VI_SCALER_PHASE_FRAC - 16; @@ -960,7 +959,7 @@ void sun8i_vi_scaler_setup(struct sun8i_layer *layer, cvphase =3D vphase; } =20 - if (mixer->cfg->de_type >=3D SUN8I_MIXER_DE3) { + if (layer->cfg->de_type >=3D SUN8I_MIXER_DE3) { u32 val; =20 if (format->hsub =3D=3D 1 && format->vsub =3D=3D 1) --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.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 EC7ED2FD1B0 for ; Sun, 12 Oct 2025 19:24:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297058; cv=none; b=qTFw/Y++CIkwFMQLFIFOlFJDAWklWqNKhawIhGa5ANdzKbkqk3VT+G9Mo1vdbzJLBZIy8WDjxkG9ToSs2m8H80mRfnUUf39wXzq+f2LlONFC/Ohx3I2pqZLp3QCDAXdktNQGblIrQnBDHkRRLwDEj9jBxoP9E7d07a6246s1964= 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=GxqTVSC7; arc=none smtp.client-ip=209.85.208.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="GxqTVSC7" Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-63babfdb52cso356045a12.3 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GN8no7TuZPEE4ZrIoWOSDqFeNHwdwABVG2L9ibzW5CM=; b=GxqTVSC7LPMkWshctN3oYz+invSrnjQdULj+NIO5Yf9WPWnD8LgjrwxhzDqD7yv3Sa 8Qk46YeVggktiqKcpMHQxuwi+DpbIsCX/vZniXO+Y/I1vw87yY5/emgOCK1H8WT+dSnU jeTzZqnfwPIZWZ1S2tzW18Mq6EFp/FbRdpcbcSySsTVJFA42gwGG4l+EXcZazjBZjh90 hcUcjl9neY8b2azMq6S0kqYx1+itsJbdtvm8yOUFdlmbuPaH3qrYArG9Ai+yeN5ZWU4U eLIwZcyj/NH4sqObWZnWzmcsR46EXpiLQHmyVbyA+4CssGhEotoQJ9a8+HFPVoN3hFeN dZmQ== 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=RGxNADIdFKMUyxQY6VPLiDdZ48INwhl9q5bFIpqdltHQDQ7oGytpS0FPBOT0R16on+ HSlMVij5amodBNjSWz/rq1WaJuBwrKVpg/+wLY5YdXEUEoa8ctiK4BuxrWkuOHqaansN WBWpdjkqS/tpsBw5gpzf6GtFi7igbZGRYbM2QiSFKMlQ4s5IiY/QDA8CI7fyOubOXjGQ KEKLnLv2JQ9/lwyA001z9M5qPlEqwiJK0uQA0erxBuW/VD3FVV/WLVj7H9NNGvLbGja4 Sfvlj/dwT0wy0GCFJjL1ZkokYHAezH/t3b9vejRKJsCSOoGZwJGURYerU62/aCl2930K 5tMQ== X-Forwarded-Encrypted: i=1; AJvYcCWRoBa89AMsKGHQjAgdcgw9SlpA5n2jq1HfDvV6lYNkH9FvAt0L/9usrta38JQPn276pDGGn2OgBXOl1dg=@vger.kernel.org X-Gm-Message-State: AOJu0YzA5BSYI0cwJv73qhpGo/pR7QL0fYf5kErPknC9hzdhFJ1nr4zx npShvZiU5LsBEusd8LK8XPIcSBteyo9gNtSZlvZaoQkEdg1UleQ9WeJ5 X-Gm-Gg: ASbGncu5JWZVSxULi/s8f7yTTNyGP+g1b/+DZKi6lkf1FOG/sthXgcBrjrJbXBlaDEU zECQTbgv664rM7kQi682fPoodOtEEApcXpy8QtdyOT8febwGx0DRQP1ixjwUS/eAxlDy5Th3ALk 9qMGmnjaIrzb5vcplPB7aHY1dhBFVxhD7h+so8l7GA/ykz+v0DzypquAMgBWiRYdwiGBENsJmIi GiPzBZTcehSfWmt96aLWXV6s9NdRF1fTR3dLm5q2fwPMtg2UZc815+d4tBhnCz4jXoBiyqDdeE3 52QCwpvbqIsMjFDHSQvByWVEAC20Jo2nTE3du7Q6ITFFk7KuRNPiosY+k4IofKFy1cqrba7nK74 UrQsNoEn9Br8FR9sAHR0E/hT4p4L8XEM4MTbEEwKPoydKRsv5hgJ2gdKmNS6Jr91xzEIkjZ8rfd uuNOP9yopemoHLKOLC3Go7 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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 =20 +#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_laye= r *layer, struct drm_plane *plane) { struct drm_plane_state *state =3D plane->state; + struct sun4i_crtc *scrtc =3D drm_crtc_to_sun4i_crtc(state->crtc); + struct sun8i_mixer *mixer =3D engine_to_sun8i_mixer(scrtc->engine); const struct drm_format_info *format =3D state->fb->format; - struct sun8i_mixer *mixer =3D layer->mixer; u32 src_w, src_h, dst_w, dst_h; u32 outsize, insize; u32 hphase, vphase; --=20 2.51.0 From nobody Fri Dec 19 13:49:44 2025 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 6932D2FD1DD for ; Sun, 12 Oct 2025 19:24:17 +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=1760297060; cv=none; b=k8gPhkowtBWE8ewxpst9NBbjHsvb3Dvh99fXrZw4FnRx80by/lbaqlq8Oc6AL6/1wpNWLoHNT1/eYg7BJBSm/bcXYd5tkrj41cO1gHiVIeCwkSKq/HHw+/tbdQUJMDLZBf+3a+4gvlfXV4y8HEHQR1RUAkdyAU9/2Qj9t+nkSnU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760297060; c=relaxed/simple; bh=ErqsMLJpxzUTMtTz2Dz7Gq5FTD1dwcKP3WwZLtDrtzE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TKY2g6h2EAAj3fNCGVoJpwvFQ0QVOoGwJRnlHv/gGGZKUXX4jhctwvtOfcF2faMl2umg5ZT9vvn1wS4UZUUSno9yUBTktQi7CXFwhqPjufwg8TEHoDwDV3aKB0HP0dlfLEJkaVrkJtyDvrZqQpCBNYRPH1YqH5Bni00gT6ySr2A= 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=WhSyiElS; 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="WhSyiElS" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-b3ee18913c0so549788566b.3 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=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=NRrJwhH9ddhv+15LnO8TBX702Sbu4XiFGKBFd7hqCR4=; b=WhSyiElSZGsNLHb3pp6o0Us3lJDUnESpI0rtlpeRmrDMqKdff+FCdvhfVJqTqEQCiE 0ms7gOrAEfz27vROAAyOuHLyUvYLX167KaTdzB7/1f+ClZRcG/HNLCCsgsNIxhvIBIIb quHpykrp8cW8zRYHc1Al4fNO/HQVv0pB+r5/TWFUaTW+xycvDZtZ/OT43csGZ6tnBLi8 owNTE6c/cGtna7ZVm3e5cEbuzVQSqjS3NRYciMm4If77CCkNhtwJSGkn/UriiIfom9vD mOgWXm2TLxnoEXehtDqPYXZ0lWZwrj8T/MlfqWv+QsbDEjPT0OeldW1wHDFd4bExKbg7 hdrQ== 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=U3O4LgSRbfUqcMXamioxEaApsd6AHopg28ttEyvQQ00wXsrahtEs9mhEJ2Z6GqD3d4 mM8eYTRBn5W8TTU6+T3I+rs1qPSxD0ukTR7PO6nCzPInUXCnTPa9QhCK95k02Ui06MKL ew+9sXNEyIEF3mJPzH2OeX1HVkmVXcvJdgoLB8BFbCQwZmyhfliXX156DeeaLy7kvsqr HY/iD3xq0TR57Fi1EbF/U1FX2vIQ82nZJF8jwWHldYIeYff5i5Af79JOrsf2V/ZUGKd6 AxfjC1rL9qUpgRIF2zN7lDG1ascMil1VysXZkxQogY2iQ39+8rT9U/YFh2hjnhw7oV49 hOHw== X-Forwarded-Encrypted: i=1; AJvYcCXMdfOFLi55SNyd7JhI4VXaN6PySaCqYsswGIku5I7c72EayFgCLQg4PJVO3Q0rMiRGlRebTTZGWusJH30=@vger.kernel.org X-Gm-Message-State: AOJu0YwJZDKRz37jY6yrHSRavTzXv1EMacTnUbhdUdvtyjOVbJ6tDbvx psmsISdozHm5DvVljxD/CbzA4GGPz1qII5O5BkqCg9z9d96ztWqN/e3g X-Gm-Gg: ASbGncsKfdSXk9zEGc3Alz9qcSHVS2zr7u3c35aPwVAXuRY8kgOi3H9aWlHjeW/FSd7 KYmubyzUMBlEqVqbTaVRBqUxZgOhgSBKFX4PyHbsag5czlB09I3OI3Cmh7Z2dP+ODhEWUDaD0j7 qL50GCfET1+CXKVMJECnX42Ae2Mto5BArEkTb2JAprCYOTmiqXqSXCAfLMV5jcXrpekRcmJ8Z/P J5vH89byFV9p2JRanK07pNyB79jtAimC85WNg2Q+e04hCK0Y/pF5GKpz3AdRVJtpYZzwpa6Nyap CLYCIGerGzpJuIduRYPC2M8YyaismGiW/gYhfeGFVpKe8TBGxZUD3do41sdqMGTGlrSjaVWU1SS MXDh/AQo59isBnuONCUfQBqT0uGDoZtw029zd2PWNExeFf5jvlgcwwihK4A34a5VkDa0eGE5CmM judJ2R1UqaF/wfhQ5LEqgJ 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-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" It's not used anymore, so remove it. This allows trully independent layer state from mixer. Signed-off-by: Jernej Skrabec Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin --- 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/su= n8i_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 *eng= ine, int w, h, x, y, zpos; bool enable; =20 - if (!(plane->possible_crtcs & drm_crtc_mask(crtc)) || layer->mixer !=3D = mixer) + if (!(plane->possible_crtcs & drm_crtc_mask(crtc))) continue; =20 plane_state =3D 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 =3D=3D SUN8I_MIXER_DE33) phy_index =3D mixer->cfg->map[i]; =20 - layer =3D sun8i_vi_layer_init_one(drm, mixer, type, - mixer->engine.regs, i, - phy_index, plane_cnt, + layer =3D 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 =3D=3D SUN8I_MIXER_DE33) phy_index =3D mixer->cfg->map[index]; =20 - layer =3D sun8i_ui_layer_init_one(drm, mixer, type, - mixer->engine.regs, index, - phy_index, plane_cnt, + layer =3D 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/su= n8i_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 { =20 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[] =3D { }; =20 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); =20 - layer->mixer =3D mixer; layer->type =3D SUN8I_LAYER_TYPE_UI; layer->index =3D index; layer->channel =3D 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; =20 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[] =3D { }; =20 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); =20 - layer->mixer =3D mixer; layer->type =3D SUN8I_LAYER_TYPE_VI; layer->index =3D index; layer->channel =3D 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; =20 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, --=20 2.51.0