From nobody Fri Dec 19 11:15:23 2025 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CCF2433DEE3 for ; Tue, 4 Nov 2025 18:10:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279806; cv=none; b=ZL/+djubdhiY6PyY0/t+gwXBCq1ES8UEz0biAJu35dqNUrpXSrVjp4oisrM1Pt30I2sKYbj5F9ISIOCGqwb1MHrzjzZpUeuSc6QBwLRVmHXnCsje6RDuB0TqcqhT3xmwHnxtNrjF7/kxsF0l5pvCr9zBQHA04zksxwYFBg2LfgM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279806; c=relaxed/simple; bh=aREJ13it41dhVSZnZkEIp556vGl5b/Ra76n/PoBdPPM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QQtpZ8QARApUq46ZSVjTjnzi5HkxkXfIG4YgN7Yk9Ee/Jy2x1tSfisXjlIoZLBdZ2coSTxRV6bYlJERLPhXIMI7jVE2VhHyfYDDSnbbIUtcM8fe0BbS8PjzA/xTQ3I+6gL0I3T9AV6WNXHVhyOWKtLmDmvwaW3Zpu0/YHxRJTag= 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=hwaOCWaY; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hwaOCWaY" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-471191ac79dso64629485e9.3 for ; Tue, 04 Nov 2025 10:10:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279803; x=1762884603; 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=l+/CRDV30StujBfkrHNR5F++4wuDv1TH5QOb5NIYpYA=; b=hwaOCWaYTz+Da/sZQ42GwKQ/m4+pLEm8Al5vmIg2ZDUr5R7U8pC+rxqNjknA9rCmOW UGv86CovdYhgXqjnp9/fiJT9y/wK8/i5tRcd1IP5oP3BDWceMJarpUAPW6kBAF7duzW+ z35sIAuscxMBBVxTXW3L53/2uWvZ7bkwXGc/Ok9RSwbsenONxBtUh/va248cm2cyqb1i d/5mpS/9797UpHYRAXfmcAsgYMKRrHFjKdry0EeVCepzyY8hCgLeuAysdxeZuNCjXHaF 9AmOm7gwkCOnnG6j+jZQCs7fyCzz5Ac0haPqkPaxcvcXt1T6e41ivtdlWtXmRYoHHlqs ydeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279803; x=1762884603; 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=l+/CRDV30StujBfkrHNR5F++4wuDv1TH5QOb5NIYpYA=; b=HnRvue5mUXAlIW4slhskuccQ+ogpvX9JgcvuG2B7wDqD+kO0K2tUpxVxDxMIGmyCW5 n9FHPZYiXJTVDSb2ol3CTOetCP8k2z+6tK5VbGzmYfeGfDvtUL2G6MBwQ4S4DXO8dd9P +DunwpQNYbPuHN+PSGI5bNyHjjtiiQ4f69MlUINgVCiMmkvCnj+xsJlQyYPuUwDdJYES t4Dx405PaGIhPVhDUOQMOwOhMPzS3O03ROYhLb6LBIkArTMAtKMrXxG26/0jfnpHDqQh tPC4WIdlsxVb9/D5TLkym15hNwqUWPJcBxyWEtq6qXPotU33SL1J/93Z6mQUSwVyRrpl Sqzw== X-Forwarded-Encrypted: i=1; AJvYcCWbW4j+RAhV3KR7RBollk/JztzAiBHi81YvJK8uLCavsXjKAcEtt6wIsrW2x48bEhcpUyOjyZ5MXkEDaaY=@vger.kernel.org X-Gm-Message-State: AOJu0YzOPGnOuM00udRyo83YhGsKQnU+uHRAgy0vr7TnrDLL2oHMyu0o Bm3E3PyDQQUxLkzOU2Y7kkPhL+e+VIqhIaFdO7Cxuy0cFVHO2Y3PGG8d X-Gm-Gg: ASbGncuLNGo2eceoz8jf0kWa817Qe9HnN6AvpHI3xrPP0WUC+1gFcQr/ZHfbs8RxY6E HaVfygvBG24Ki/1gY8csOhY3JCjarXi0sbgRq+ZpdnZJVvWR+OjuyuBYh9SYVLvSdhlOspypT+z Qz83ms8cKMJXdnRhmbxgGuTWdBE7sFLdVqWhcacLxo3kGz7muK0jUJGjpqoZmMOBrxV3PlyQGP0 cr/1/+XKUb4sMe4CptVX/WFdQc+PFf6UdHzGBcScgSe4j+AzC0r6ApWuxMZHnMfHu665tuguN2+ TYSk9uT/pycQRcgo+kBnc2ZFMCmNICRmZbbIw60TvIIwgnV97i/ZXNeYxYkczWZCvirVRi7XZ6V FHNoutwnict5I3/m8Ji2TlGpR7nVECas96cOyzwHlVyZ3AQmxCkzGpjN0WgbYC5hHmDeTh41UkH w/JZSYxhuv4zxB0AFypA== X-Google-Smtp-Source: AGHT+IGtn2Tb5IVfUa8fwzSIF6EUNQPbcBikspeOnI6L4J7SH1eZ3RvMdCq27U9/2nMsft5HkQB0Jg== X-Received: by 2002:a05:600c:5251:b0:46f:c55a:5a8d with SMTP id 5b1f17b1804b1-4775cdbd440mr2296855e9.4.1762279802950; Tue, 04 Nov 2025 10:10:02 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:02 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Ryan Walklin Subject: [PATCH v2 01/30] drm/sun4i: mixer: Fix up DE33 channel macros Date: Tue, 4 Nov 2025 19:09:13 +0100 Message-ID: <20251104180942.61538-2-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_mixer.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.h b/drivers/gpu/drm/sun4i/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.2 From nobody Fri Dec 19 11:15:23 2025 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3B2AC33DEFE for ; Tue, 4 Nov 2025 18:10:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279808; cv=none; b=QiGSVIVS6IbpsryzIElhhzcHhPBenWGs13OvF/RL8kr06GD/JccRhIZJzWwy+emkNFcVATqOAVogo+onAQaX5MNlPV4CIL4X722Yc+SOzbZ04OJL4Oftp2WOffTUjzdjvePJMijAo13AK8S/n3U8JR9ST4PqOQzUr3chDekV97w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279808; c=relaxed/simple; bh=AVpGhbTlWMYcUtDZO75Du13zXCCyhna1uvtNgig20wg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jh5o8jNrn47TZ2QiQBPydePda9+t10UOdbYl6TquXbvCt2Gf6/UIbwz4OOAAdP7oVb2hY1DuD1wBFdcJ9kVdz0sAKX4VUa4faDT/W2gPRfRfGCC6IMDp39XTqjMISIORwAyCJ95LaHv1ND9EmHCTEAZVwjjppRJ7GCwRY6FgA88= 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=lpZjNS4B; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lpZjNS4B" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-477442b1de0so20304205e9.1 for ; Tue, 04 Nov 2025 10:10:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279804; x=1762884604; 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=dBzuHGqFjGOh4IAWV5vCG99JkAgbQed0TO0fNPxfrBM=; b=lpZjNS4BM7T9ubzWi+7PYlDoVORI17XV297RvIUvk8SKZJPQx9vPMx2YTBnBbd2Obb 1A2cW2iXhC4012vRbnHxfPwj7A38Pe1Z/7tavHAObVR4tXtW+TFNo96i4XIuelHD9zQw ShT4LUOVKLyGU8N8v6bKvCIpcHK6UnAfWYf0kaK6qhFsQuHxUb9ekB6TzG0O0Sno0kZM b1zqihSUFwv1Q5VzcFlUdWEhwMxjSa41c8mVO2oMuWI5njkxK+sUeKKkmarylcDcFMYE RKjGvJwPPFwsCxRSLhogHvIwjZaIkHhTIYW3qQm976FN8gHNJVMF0X/7dMkA9oi1bEj7 wnzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279804; x=1762884604; 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=dBzuHGqFjGOh4IAWV5vCG99JkAgbQed0TO0fNPxfrBM=; b=wnc9f9VCONRw6HaQkjl5CXtTemrnn4xgPkv4vaa2vOT+/P99ORURc8KeMiqSy5SIiX BZHZrEtmaIRhqDRerTRPszfgOcuG5Mk+BtA6bMrY5pLpcMW8lqMgwdVWoX0Y9EpDnTai Zw65luQU1kigJbwqNs9iOpjGC7kRw5uRjA9P56OLQAYrqkNwW8KnyX9cDeGRAn/XSUmD gqNboqiHSEEt3Hh+fkQI6dnj7KaTqAe1t33MTVnPLsU5sjzCqRRsXrtbGN4dmc1vBIYK /SU1gXsWZkr2oDbWqjEWR+SXZ5V5tAISK95Tk/wl4rvbhR4oO1RqCaB0oZe4u7J0awzA UyQA== X-Forwarded-Encrypted: i=1; AJvYcCVitZ3UoK+OP55AXlKXmBIjpOr05Vvp6cAq57QR39SWH+vKpiU3jDn2+n8h/F/21pDoWYTOlepKLwaDhm4=@vger.kernel.org X-Gm-Message-State: AOJu0YyI7AJUGduUU19cqeUyfxvHwkutwCSDzREsrXXh00E2zl3BedjG jd2mpzgvfcdbdT0NRvuliSvqOMtfL/PNvPO+O4FKqCao9MpcSX1Y0ehC X-Gm-Gg: ASbGncvhqUDVLA7ME9v8G3Mb4yUc3VpbLMHOzbV4W8xF1cVJbt+vrXFtWne2h5fQxxl fCFUTrw1TXPtpT1CXaZvYyCckd9DavbU3OhJN7TRpIKHXfX+Yuk0O0gcbpqzxx4yRWCDUJgvdLl W0JhIEmA8p39LcY7cOqPqR5VHL3khKiIFII8HCevYDFdnIvcL8Fa2bQpKTWxqy+KQh9Gyo+sVRv IrValLw4acCfia+I5956j8pPCoFFyTXsSVwrCSjUuZYWU+o8OHzcAirgILyICbb8LUmCQ3pF2lA aywllB4TIsD+X1L+NfwdmcZ6s8SFe9EqZtiv248t60GuHX99O2iHqyrBGY1HuLXOMwIX0Obs8UH tEETV1TYq4QeTeYC9OAQFcOKfmTLsGo+7UGsYRTJT6XL905z7KHj63UJTfXb1+rn2BOXt+iQ9YQ kc8TXT81D/xuFjKcDK8Q== X-Google-Smtp-Source: AGHT+IE+aXaz85+OcD9Vk61BR2+xCkKdEVOqbAdpjmknpg/EVMyrQo0hoti++4WquFHkKitI5cwjxQ== X-Received: by 2002:a05:600c:4e48:b0:477:54c0:6c3b with SMTP id 5b1f17b1804b1-4775cdad2admr2728525e9.2.1762279804193; Tue, 04 Nov 2025 10:10:04 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:03 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Ryan Walklin Subject: [PATCH v2 02/30] drm/sun4i: mixer: Remove ccsc cfg for >= DE3 Date: Tue, 4 Nov 2025 19:09:14 +0100 Message-ID: <20251104180942.61538-3-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_mixer.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/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.2 From nobody Fri Dec 19 11:15:23 2025 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.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 4686B33E357 for ; Tue, 4 Nov 2025 18:10:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279809; cv=none; b=HHZOPVcepFrEx6qVZx8lSUNcRRe51+0ddHt+7tQ+Y4ZMvis37gRpE2sKX7MOvjbAI1elLSjZk86QoqrFRdqxedAvJSguLi9C40xMeXFSN+UknnzXvOWqObjzrqX1IJVj1HVorNRwfHsU/NgOItOGUWMatG06luwy5XoNKGaPulY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279809; c=relaxed/simple; bh=EhvcCC5M8Ffhpn9lWdXwL6pO1wy+yi3roBXaKFO/oSE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=c7xC3csR0vQiuJnEvtJ4XoqGi9Ac+aQmkNgkek2m0AtnjV3ogZ6HGGdD2tNF/rXeB6REURVuNW804KmdHzrMprQhcp6R4bqkq9vXl96WF+sKbW+zfL1BlVc7d56hCD3A5/k4hkigv/F7lBKV+7Qq92S/OsuQEUw0+kEDWsLf80Y= 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=ZjeGOpk/; arc=none smtp.client-ip=209.85.128.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="ZjeGOpk/" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-47117f92e32so47876835e9.1 for ; Tue, 04 Nov 2025 10:10:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279805; x=1762884605; 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=dL+KOGGetvWAx0akok8/ovUlD3VF5A+umltWwuLE0k8=; b=ZjeGOpk/lEIypuP2B6tTZ6HU53B2IbHFhtIMuD356PxVm40UCM47QLC/Rq8hVRLTPG j/0WpecrdfY2gaIX0HjjM+osDHPugf5PRDAeWkOqFg1aqScB/+ruOxw89XAd5kwHCVPp rAGQI42fJ8N6yGkWIauBRWf6LMvNm2fiL+WxWkusfQUfh1iHziRnWUoIFyNkWHRq6MlJ noGLvws+7k1V1cPs5vHfG+8PRpqX7ftGkvztJ4o+J+aFXWMgIBNaxRozXdAbk2P8StfK r+ys9As/sXPMiZ9GGTLRwKfODUAbUoiU98WJy9WkoVqlUb9qQf+pD5oIk973+BUBsgFa tr1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279805; x=1762884605; 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=dL+KOGGetvWAx0akok8/ovUlD3VF5A+umltWwuLE0k8=; b=ndoX/ptIH7y0IL3nxk0X7SfhpD6zwR4y1zOGd+o49rAo7cof1jhR+g7nyvE1PQ4qMa OFQ0KHQEF6CLLNHnG1YMZxoANOEXjlJqu4b49+q6Vz0F4Jq+TDz2txsQ/WQ+52UJafBe dimf+ixspd0fKRjMMs0lHTJ8Qmu2P/Pvg/2XJISfIfxHfaMfVgnezowRiJjtvAl4T/0+ OVFv5r/0X+tfTZ1htjPTA7sruQufM6IaB09589BKrhWshvZyN39eX7MKHySz/9dYa8Ya O22uwf4kUJ2zR/n29Ul8ZHhnCcFk8Sh1BHGDzLSb+BuHWITJP5OZ+OGR5G/L1QKd6lAd sJuw== X-Forwarded-Encrypted: i=1; AJvYcCXpbRfBFQTmC2ujtgWkRiV4BHgUibeHaErjRI3Kh5AW3cBLlTXC4Ta2PlOG20t+n/QYrdgzAYVuzulnoFk=@vger.kernel.org X-Gm-Message-State: AOJu0Yyt47xdpl9cjpi6WkR/wpQvZx7MjG2x4mUhSYdCdy39h9luoy59 5eTC4WjsBotk4hn5tQm7RYdg6ym1U6hoErmtzT1Eg/gTT/t/rUKMXxR/ X-Gm-Gg: ASbGncv8iYRi2p18X6PfQ+jJqrr1x7WLEbk598d3nyvT7h+UwdWVw3W8GB6w7NYesvT 3MYVtorEAQqwSI3wMQ911AjNuK1xpHgnNdxmiCKfwLPRCjWVrvj24IpZT2Hl6LjSQN/1A/grA4h JAXupyjczUMAQCp07wq0Y258RLcS4/I2+zb2ZaWFrTEfTCfIAl1m0hXOvDSHF6jEYYzmAg34m2/ NyUYBTEZIPevqf4eO4ES3h7ToaM0HGJQ0Ea5VJEc8m4iFId8PpsMKfo0v0a386ZRKbBBECBbhlQ v5UepsKtvUaIL1DsD7tQY5G4E561eMr78XN84aU9c/DRgH+RZlfKJueaUthh4cpJTjJzYZjPI5J CcKxBv08ak98bnVto7C1vtdB4VEgRDmphpRckUz/Vlu4pYl/SRWVpoWacbyFS+CF6RxrTqjworU QobPdePsixcVIMm6ompg== X-Google-Smtp-Source: AGHT+IFE1Vnf7zp2knUPF6yAEnxj56xkN0ItjqfzEh1DT7fbSwSU9DzT/Mss/kHxDSruSnpGcPcZVA== X-Received: by 2002:a05:600c:699a:b0:46e:32f7:98fc with SMTP id 5b1f17b1804b1-4775cdf46b2mr2500505e9.21.1762279805418; Tue, 04 Nov 2025 10:10:05 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:05 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Ryan Walklin Subject: [PATCH v2 03/30] drm/sun4i: de2: Initialize layer fields earlier Date: Tue, 4 Nov 2025 19:09:15 +0100 Message-ID: <20251104180942.61538-4-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 9 +++++---- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i= /sun8i_ui_layer.c index f97be0040aab..9b786e5c7f3c 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -304,6 +304,11 @@ struct sun8i_layer *sun8i_ui_layer_init_one(struct drm= _device *drm, if (!layer) return ERR_PTR(-ENOMEM); =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.2 From nobody Fri Dec 19 11:15:23 2025 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 99C0C33E376 for ; Tue, 4 Nov 2025 18:10:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279810; cv=none; b=SFZhDxfYZlYsgb3sZJ4Xv1ViWmxvvvjWjsr5o8AK4XeghLOnA1E9V+LzJT2Z8JdJThur/nKWI290DbdHqB4eWVtHq0MriAMnsBViF9pbqQzpk1OQci2DPjoobMqLd/ilkA1OQvS0LchXFDaA6/IMVIgUPhu0nmRPP7xKKog3+g8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279810; c=relaxed/simple; bh=v75gTyjSy2HSa3UfhJ4KqrZ90JgtcxjZBdZ9oY7/Htg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=i9lLp138OiFIM4FfPxKg4Pp6y0DIxdK4/rmr1H6z+HE1KBMKfK0mWMuYfodzagT4x4nVEhaypeSk3Tkbiwi7TwBVagvUHZQ7AaSqJqfgbSCR+oD4YqjucyZ4GRR+mEljsJGjMq4jhDQ86fCrqTao8W6RiYFLJVtiJCuLJfi8SlI= 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=Pb1s4dc0; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Pb1s4dc0" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-471b80b994bso75232945e9.3 for ; Tue, 04 Nov 2025 10:10:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279807; x=1762884607; 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=S/mUaml8jAYrXfg/EZn9k2T0kOPXbCuOkx1KYxiElS0=; b=Pb1s4dc0TAaAKa4dtH82HncFEOP2d3Xl+UFNvQpEBUS+CVdKzeLuhSoIm7gJMIiezd 0mOXpGCelbr+HnR8HykBGc+y2+vSleRaqe77+hTqK2pXD7qLvLA6efylTB1/aIMLvyK7 viNHJaXO+TaaP70xWFLE6qBkui0+Ndj2uUqhG1m2SJriG8kvcAYk2yNY9m+odtgj4CfN aECuJJpqu26k0tQTrmyG89Bimp0TsBMxqu0fEDGkkS7AGbAhy6yGCkK/mLr2ypg6rcRm fBXP4Zdtjf2iKbqbpklHCLVxsCRZrGvMshsY+UEn2xlbdO8dVClkNhuEos0Fe28iB9Ml vjtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279807; x=1762884607; 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=S/mUaml8jAYrXfg/EZn9k2T0kOPXbCuOkx1KYxiElS0=; b=qiaBmKT+yHadBtp7gQpLK+0lHEQ66AkeENjcJWMxp3hUqrGtCaNftDqEQU+6NSSSAR b76z7bkq14wvg5Q3XaqjwGa8uu8sXbWBq2IiUA6YtWCzFTfMPDcPxstHp9NmsZvzcEZh HlvBbJ3Nr7SYCEtEvdSvDmTBUe/SGzom4BrbS/StHT791ZA6+AuYEl0UYrm6nOBunKBX N2MfsSfEZkvIIRnSg5ForK17o3moPxfnr1027yyJIfk1dzT5TTkGjkrasVzx7uGPLNAS 1BNnpBU1TltqGtlvrWfuq0MVPNLURwA4eIR0R+brXaSehFJ/YehBqsB6Qp83z4/cMF5P y3aw== X-Forwarded-Encrypted: i=1; AJvYcCUSkfORi9xH0SAeylxEngY5VB0maRFScJyJO8MtNaLgk4nyNQDUHSW+LeJNMy2IiWqJXTnlYGZJ2p88ruI=@vger.kernel.org X-Gm-Message-State: AOJu0YxWYNIh657kiNgdubBT99pZ+uBh4wPgnDLsJgRCP2Xi0gFlvQVa 4voIV6bXrk8SIeKXE3r7QJBrXEl5TD7S5vwqyTcPbyZuv03pNvW86z0n X-Gm-Gg: ASbGncvQoZUypr0rohxZTc9yCbH8S9MT7xvhkfbf56k04hdNu/omqyEdPIGtrT7kCLQ epTXbwlsmch78A8Dj/e/EUZPDS+RWZRKoJPt1a4YRb0Y4L0x9aJoDjNukQctsKnBm2+TUkDm0Hh U2iuYkICH+7tMVy6qUTENu7bVJKJ61d8LiPw+2ypjZpA3IPBzSZTBA+zq3tc0Ee3+L64mJf5h7+ +2XMP7qXtUXIU3wVbH7C7BhYlIl6fX9yCP9QKkTZFn7FWClVQIrTsb0IumffY+8d2zy0rvbOv/9 UjR7N7zvqZ1NdChj50XLRbrDyEajAT07mzyNm4GGLBKP3eOB23uMdp7VBNrOQzfBZT0BItja+n2 y19886et4Mxb4ClyU1yHYnI8112dpS8/JYB2Kj4P1QMZVxLAHvWpuDRKadiCyqsoErMRx/H6+H9 c9LWEqBCKiqnf+eQ+OLjjJtJvG4t/1 X-Google-Smtp-Source: AGHT+IFmRzImpuQKxnU59wlPaEzVIfge0eS811Rho4boK9lxVttq6F0W8N4VKTddLMFMzKY8tP/Egw== X-Received: by 2002:a05:600c:608a:b0:475:de68:3c2e with SMTP id 5b1f17b1804b1-4775ce3ebedmr2220945e9.40.1762279806649; Tue, 04 Nov 2025 10:10:06 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:06 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Ryan Walklin Subject: [PATCH v2 04/30] drm/sun4i: ui_layer: Move check from update to check callback Date: Tue, 4 Nov 2025 19:09:16 +0100 Message-ID: <20251104180942.61538-5-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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_check callback. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- Changes in v2: - fixed commit message 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.2 From nobody Fri Dec 19 11:15:23 2025 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ECA0C33F370 for ; Tue, 4 Nov 2025 18:10:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279811; cv=none; b=M5OirocztO+CRXNmtcRXiiIuP7kAGMxizP7T/NDvYis64ru8AfGcMTN0YJeW5KDZi5t21cSW9369BN/8ZsfcEHQe/T7melvlpVx+F3OwT5qpcuqdTKgApQ7X/nj+OtXQlJvNnpO9iRscHP25W5uC+d8zhLlRlSjcrdYgGeedOHo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279811; c=relaxed/simple; bh=9iuYPe+y3PbTHR/R97DFIicMKJlmsqd/U6tW26GqMxw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qoWV7F+ZepVrBG9SJ5rBg2E+BPQZS8TEbJ2FhsPoP8OuIn/7XLtMHTdwvbsjdj85kVJI3Qqv3UMLZJ2DsyyXxMWbD2IypjpYWcZnN+APNekB3r8ZdjltvL67ckOPCpHVqqqDk1lPJtXnpBFY0ZNe2ofJJZ0aJnYMsF1LhPHrYoo= 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=dU7YFxQF; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dU7YFxQF" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-47118259fd8so43594895e9.3 for ; Tue, 04 Nov 2025 10:10:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279808; x=1762884608; 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=nl1ilT/sObHTqPC76FAptDP4x6azYGMRqYkHZHMZay0=; b=dU7YFxQF/bA8qjijCi+FFeJkHL/EjATM/swP80KQtWWVLQae2QCDiB8bwfYbPDM7xf X4WWgBJIV+8P0aGodDlbOnOb/pTVQOpH7X73JPYQDxceqrpW/A6L21BgtHu8aeLPBB7T gTVaVA+9DEl8XDxP2OtEK3nQmpCbZLnpfjju27xGRkCuOm9soUsK4mRMrV8LiLK1JNZC Sj/OWztzJAdbejPNl27S3YbjSP/bvgHI0rMr05cALxLzXIpfYzOVxTx3rJ7IqLRa3zIg 2W78e81JF2pXHuR6mEzv16X8hZ2ywyKEFL94UOdD5mj1axf6TJUXUJicfll4ly0sl9OR Py4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279808; x=1762884608; 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=nl1ilT/sObHTqPC76FAptDP4x6azYGMRqYkHZHMZay0=; b=Ouhahfhzv4cHmA4s+0gDPtSkzg9rg5ah5pstSwC3cIlrXaiLYgSiwUUeGmqSsn5bcT d1YvXGoP0iV0PPw5swoziWp1H/Dk0FH4gb0v0nzmTsScA7CpIwVRhNz4HwYAj2A/k1oG Seyq3CUaKN5N/6NOSSb1h//Jp99tw+udCBy3UTHzCP+OTJgG/Qngg0VfBZKkiYNwcYIl EdctA4vkauETgibLC2Vgsrib3vWPwytS3+7AVuIRC2HPc3mowocORB0DFO5ZD8OGeKrY ARtiar/V674LosVg+fCfWPh9TjeawmYSBLgGQgSaGKok+0d5HIYjDMTi5M9skwzKjf5K +2Lg== X-Forwarded-Encrypted: i=1; AJvYcCWwF8lUeJZQP3TLTqq0W+rx2fXWiCkDPFhEV1J5atW032DujygHdZcfU8xaLmoPywhDorQp9YcVsYVmrpE=@vger.kernel.org X-Gm-Message-State: AOJu0YxFxkdmNEcVwlIzwONqP5DMjcvhXjqewMoDxwk605ZXk0C+AWNF ISFmIJ3kwamLOcToI4wGY66uHm3DYKfVB3/RW8eGgSnuSbNDHzl7p6zA X-Gm-Gg: ASbGncvlC2P/Vcr6E8gEvWfvDCFCHbazlitRYp9dAGFvJd3LpQhHTHcFwn3uJpCTwUg DXrIRtSeh9E22VzPfEmqwU53DQJeoMa20iFI7gCVnEpDBnzxskg+rAuRAwaX2WLgo1U+iOTgmGX ATpAWaYJV7wU/VxK5PB8ZVOes0Etv9jfLGoABnry+/tM/Au0z5j2q2684xHS1voAn52VU/QTLeu jKvL8sXuAEdRzQjfAjxaOr9RpcK8AdaicqpOlbZPhrhE9g9X0bgjI4Qe7xwX9crbK0l26UhmhWO CzRO4mJedwRySErq9f6HqTX3AgR9+PntueaJwwmQcw5zpAPZagIKq7QGgfRrVuUYXR5pIZIr/va 6UfOUb4MNqKPGgr8WVLxSAGv2/D77LmBjflA9aIP7IulsyHVVZftAdWkWTw5Sv960x4H4edpE0J rihna5ILlrYxBqxM9quQ== X-Google-Smtp-Source: AGHT+IEaQ0kJCmYAyDupR48ISzZYJfw4Ug61ieLu3o3gUFaY4n5a/nzq0x9jBMUVbLw7oK4nsgRXfg== X-Received: by 2002:a05:600c:34d0:b0:471:6f4:601f with SMTP id 5b1f17b1804b1-4775cdf54aemr2431095e9.19.1762279807980; Tue, 04 Nov 2025 10:10:07 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:07 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Ryan Walklin Subject: [PATCH v2 05/30] drm/sun4i: vi_layer: Move check from update to check callback Date: Tue, 4 Nov 2025 19:09:17 +0100 Message-ID: <20251104180942.61538-6-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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_check callback. Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- Changes in v2: - fixed commit message 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.2 From nobody Fri Dec 19 11:15:23 2025 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E84C733F8AB for ; Tue, 4 Nov 2025 18:10:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279812; cv=none; b=qyWZlpvYvI+TpzjO57T/6goHjnpHXW4HHWDkJIIKucLco+l/KA8OqG81LSfeAV+mNKOxvLmfl23Fv2QYMO07TIVJ/fB9WSlzfeXgG00mXhKqSb+FGLCjBtChubk28oQ5w1uK/pQ/7XGK48+3NYEN6p+AcLAlvl3pBr7BI2RZO1c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279812; c=relaxed/simple; bh=UMLQniINjUdHSGOyeKlaW/QFkXzdQJ8JOe+PvNsMFsM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=h5GH8B8NCP9eELkPNUvA60u1eE//civ+oS2kzyS25TBM+TqM5ERgrhyYaJ7YrjQMMKlIhAGYt24JVGU6d9tCXkSoT/mItiY1D2Ca8XoAugalwjzCkJiefu02fme0ilHYBlq+vOjsIj6emCDu0E+uu+4SrqxMPYajaOmuiZpa28U= 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=U0Y4kWWl; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="U0Y4kWWl" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-4711b95226dso75722655e9.0 for ; Tue, 04 Nov 2025 10:10:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279809; x=1762884609; 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=9UxxEnvD5E7Y1WhJtD+AnEMx6VMSP1mmylf6BBTY00A=; b=U0Y4kWWlkLG96+xJrOkLAo+nIWH8iViG/aYh9lqzr0g4euqqC7MSFUW2l1tpOVeI5f iWoB+mu8drcxIkCXNUocv/gdpHdjkqWsWmnLehnqA9HMB/BbmEG61zDpcWFXC1Kytsxj a5s0REM+zkA5hOHUCqI3gYiZqYHcjOxh2FTusq9kqsQn0xsMPPfpmt29Q5r9RWjwzNDn z3TRH0fgXhXk7Q7XmXxo3LmCjXC82iuQ+0a0YrMOG52d3l95EtW1ff+DjxvuNmqc6FuJ Uj2TpaG2YcK8YTL4HOZCXw2lMPwjRmsFhB3OuiYZCx65N1kH+8rnzA++9nLyxt5a8LvX wokQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279809; x=1762884609; 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=9UxxEnvD5E7Y1WhJtD+AnEMx6VMSP1mmylf6BBTY00A=; b=iKfRqM7gZAOMIRZr+ymumj0j3mqIYeUUJU6xIHfozHBKWYxcEO1xO753ciLbAJvjeS 1hsjC7fAIMx8Wbx5mC+Ki6PBT6ZVychDo5Tdh9EH0Dq+cxB4e8vDJJlYytWQcG7sZP9q iy2mrGYM4lsLtrCA8F6/etYoM0QU8wAz0Rx4jgdJkMXgPgJ+HEOZoXd7r+zKCuQ4oS3M AdvPUec9hSwoT9s0ytdo6DGtIwrEQ4HAstruXm6Wy46MmjMYDffqAX+f3ojNUdnkJUIO OJeePJdxPy4eghtDJ0wfPPcY0q15iExFbrAEGayH1LhRO3ulpUszHhLDdP2F3JkPm6rr zgZg== X-Forwarded-Encrypted: i=1; AJvYcCWHVtERg7FtcYSnYdjNEPA4ZdpG1xoPINeYKhcYl4r+THh3dMqkLvcNx4YgXO/CBaQGdPsVHmtfI9ILd00=@vger.kernel.org X-Gm-Message-State: AOJu0YwQsCeS5B5r6QXMnnTDU1KPhNmJhLf2rlGkoNFa8zC6KNfaVzE4 cHrhRmt5ObLhFGTH9t66DYLq8Q8oUFmpJLEHIfGtmQ/eArLie9X84mAh X-Gm-Gg: ASbGncvOIlBuztgYRzuWc+EVB+GnU2Lc33tawb94kgb8ukQlAEQhlL1RKCh0i8s6JaC 3rMFAmOaFc+DJNvHh9jR1nYwf5XGANYmwGxzFM3tYt3Tndpm2u6LJ2xi059pUJ1Fh7TemFTs9vt Si/aWr/8xrV9H3dBL2C3KqyQdQqyl647yLgAIAdyGxXmK8T631NavhzzpLyoJRFBbRrPQoFYPme fQmCVKbCC/GKvtXxaQB8/Qr5/jxAZRk/ECB73an2F2pmxSKFsIpars6KHR0IFg6wYbtNj+6y4C3 q04+u8531LsNHbnOgE6rcsAoBeHtacEOfF7HpiKXqAr90dfQzKLstu/pxVNOOwVZHKXUz6aqwDA 0SahSJjIesoEWnyTET7k29/EDPcJZIHE1QSixbj3sa95EqM66qSmtBnK9R5hsbOC7pcGrrJuAly UskiC1bMaK8KTdwXrNKw== X-Google-Smtp-Source: AGHT+IEJHAiuBYWEtNzJWv6C7uhRnDsBy6FovSk1I1qNjU8+nmp3MeD3eeYgDnF9LcKCHm1OTcNSBg== X-Received: by 2002:a05:600c:530d:b0:477:55ce:f3c2 with SMTP id 5b1f17b1804b1-4775cdc5874mr2504965e9.14.1762279809223; Tue, 04 Nov 2025 10:10:09 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:08 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Ryan Walklin Subject: [PATCH v2 06/30] drm/sun4i: layers: Make atomic commit functions void Date: Tue, 4 Nov 2025 19:09:18 +0100 Message-ID: <20251104180942.61538-7-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 20 +++++++------------- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 20 +++++++------------- 2 files changed, 14 insertions(+), 26 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i= /sun8i_ui_layer.c index fce7b265c5d8..8baa1d0b53bd 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -46,9 +46,9 @@ static void sun8i_ui_layer_update_alpha(struct sun8i_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.2 From nobody Fri Dec 19 11:15:23 2025 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 44F3533FE05 for ; Tue, 4 Nov 2025 18:10:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279814; cv=none; b=PAZEqV8s1DScbZoCiu9imRptCDX/3bXkciL16iI/a/dF8v3kk3//w4Yok2Yp1lhwFlzxjWzN6N5Uwpz5oMcr0v7/HVMEC8mHfBZomf3azP1gmvZBb0qJ+HPQucFefn54s9dihJFOaqraWjYaAF4r2IfKjDT0UraTrn4BOzO0Gfw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279814; c=relaxed/simple; bh=skVQGagTyy6PyNFI+F7smYSL+wQwoaFNd4LrPRY1PcA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Py3FcYYmSGTmv3OZYi/tKY6YmqmdBdtLgfpkDiItNcFIeFakkMy9VeNujVAWgtd5X7vx2XOOTY6apUx49rliCjeZgnaMx6t/HBwZ2qHWNmwCH15n2xbSjPkPGphwxRj8J2pKWFnGW49p6ZkxDON7J5w84CTdnlEzO6xdp5bi9LE= 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=OfRc9Jzh; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OfRc9Jzh" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-47721743fd0so31652485e9.2 for ; Tue, 04 Nov 2025 10:10:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279810; x=1762884610; 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=bDqva417xyNryg1IXFcTOy97H9FHEQaAyTZzRiGHEe8=; b=OfRc9JzhDWt8BJiJaBYWapcUOItNqdGmbQdDMNpf0YM7Aruq0r0kOZj5AlHR4F29RI cByChtrXc2xxVvM8w93swiUC5r+jbjp0lM+EoDhsrCN6mkaUZTli322//WeT9AaTv+u9 pH2McOQ3qzQz48+AL9nZ3FDVYwZqQzOuSkeTFXd8x0XE6ped/oYqmiCbGYlKcjQ941Ez hniThAN7iNcmk6VBYI6do9Wdhw7SqZIqmihVfQUx2wKUk1eoOsLDhZPjEjrbUuOj8Qva ypyyzwZp5V0w55TUS2ikemvCxjrMIj5kau441jvYHV3+y6j3b0EshimVbXt2BTPb9cv8 isYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279810; x=1762884610; 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=bDqva417xyNryg1IXFcTOy97H9FHEQaAyTZzRiGHEe8=; b=I/OfOCSkdn+1maUpok7MClvWX8XyaPCijnB7LtE/Ho01ygJUXgyFwpwW1DhQa2mExR EJM1N8VKpALkLL2sHwDkLI5YjLtbsja01jOBdBS0lMU9ABxGwvqEs7P25HFA9P3b/8wf d1POhBgZCxTZNPbYldeIZ9QTNabVdWg5e+/bp2YAxBIjomhRn68pc4e/5D7N2TAlvlTF GDoz6k9JwhztnaEmcmZgyVcI9LNUi7b2gUBe1SU6dSzWgfO2RKxyEsBHcP7HJA2ZfyB/ 4j18WDBZmUdjiYhge2f7A9rTulj1pw6/KD5w5WmwNHTjaU+pFCZftGMBG0Npj0Kz2MSR vUjA== X-Forwarded-Encrypted: i=1; AJvYcCVl2VQBpAjH0dF177X4DrJ3VU5iG1Ixp8tY/Lu2YqbGpMwe9ex98Vv2xKHJ7SNDTudONxTINflxMuoIcRU=@vger.kernel.org X-Gm-Message-State: AOJu0YxxRFzxrgikuV1DKaPBwfk94Zo0vnexgTNwRpHtJL39hLpaOVH8 QeRQDluR1zYs9NfgOPhE0rzc5wuLS0YyEnHUplelHBD23Ehl4gT8eJAQ X-Gm-Gg: ASbGncuauahrweUHvyMTFiCwJ/zcWX1T5YEa41UAUJ0ixY9O+63hGXKM3YyCM0ldG+6 f9vdWAADV0RqL475at+rCR/nkFNKXuYJ8IxSw4K1ympYdzBQZmgXdXfwH9cbEM91TcL7wylqvOT TBoKffV+CXMtTtbYwbUt46tQlbTiNknJf5W2emoi+GcVQs0f7xWQMcNmwY2AhLPyUb3YcDEyU7B tjxvQqigjWEs6/pAQumwaT8aDn7DH5DSHiCGdZYDO4dZHhFhKpPYSzblyYPWbn+FeJLI1mC0rHT D/hpLLURymMivJvkjKSJGd+5y+a5AaJiE/vy3S1uMH/saTe3PcZc28zth0B5SR1KIVKJdlVo0oA nAk0Fgmx5g+oxUYh6/1nAGP2xzWoPjrHTZlgXoSlv1cdrzvvkZzt5VCDjD5J1vHzWqfFQvgsDg5 Rbx7ZZ0VN8U8F5Mk+K505Sl0VFPaSq X-Google-Smtp-Source: AGHT+IHj09IPAOCbCEAg0ncAsr0LC5H9NwCy7b3YSE8GChtZbFobh2jD5PwMN9j5D94aGK3dEVmPNw== X-Received: by 2002:a05:600c:19cf:b0:45d:e28c:875a with SMTP id 5b1f17b1804b1-4775ce19fa1mr2767805e9.31.1762279810441; Tue, 04 Nov 2025 10:10:10 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:10 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 07/30] drm/sun4i: Move blender config from layers to mixer Date: Tue, 4 Nov 2025 19:09:19 +0100 Message-ID: <20251104180942.61538-8-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_mixer.c | 17 ++++++++++++++--- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 22 +++------------------- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 22 +++------------------- 3 files changed, 20 insertions(+), 41 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/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.2 From nobody Fri Dec 19 11:15:23 2025 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 762D333FE2B for ; Tue, 4 Nov 2025 18:10:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279815; cv=none; b=iZ0l5GBuOHAyiXfH58qWoCpLOdTWy89xg9PcRZeJaDvfhoctQkzG1IWvmRdCxBz+qsnsjhyWSOkl0sIDpgn1qoqaNiYj2niaILW2KrrrgiQ08xlGYb8Iq9XEHSPw//8lHZt+1/Qw91ESNU/OGMe5GWpFTalxbkqQlseT/uUxtfk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279815; c=relaxed/simple; bh=iGnNI0++SonwGyedd4a7sun41aecxIvT8MUtouuGC4I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=L3JqlEtcck6Ar5H3hJPmG+asYFfsXmhBO6izLpabMeul8SH/hVbA9lkjysGDNRkyVxRXVff6A1TwgF+Z1G1hYmJDE+Wb73jbktmpXTEKLxZ2fJNedbqpbPs7b6+aWLTgj8jy4BXabszj/7V1wzyaY4LzYom2Samhq4Zz0K/xR20= 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=nnAXxZXt; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nnAXxZXt" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-4711810948aso41623845e9.2 for ; Tue, 04 Nov 2025 10:10:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279812; x=1762884612; 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=2V+kePNpXO72CJenp34f7uw6E8+eMdcIi2DhwUlA3KQ=; b=nnAXxZXtIxxPzqzRI3ZBAbTp73sbVl9UHZ1qvBqb0YbJzW++ueLCbVD1+k+TwQd2kw fcOjR5rn5T12FbA9bAF1KAQKCn22NqLLsHxkY5LiCGwIJqNpTeFj+DIxXM2ZpKvA3xX7 gfj/4xQ97/YiO8P9Ay0J2SKMhZoGYKSZBfFm36a/w0C1+jH19MuwvOpgdzjJLYux22Ts ndR+iE9GvrFpWWdaAnNcOjO4JiuTOzIfI1fhuJZYONePM61RM+DgMu6zwuu0q/gmOO1S yofyGSpQ1g2sF2DpCnKY9BGgeZ1jXx6yF4hZq4jYwRSiOZPXl3N0DgGp5YdWn3cy7p5z CFxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279812; x=1762884612; 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=2V+kePNpXO72CJenp34f7uw6E8+eMdcIi2DhwUlA3KQ=; b=vj202ZkX696kSVMur8lElF0SNZy0Nk18W/2KXQl7hd+g+eqSCtr9jsRA1q0T57r98W I2iIASmpqMJarh4GB5Y9oOr5Tk9chdzbWfEPIwmhKLQT6cZXgRjupix1B+g4XsQiW/t6 lpFnR7gn8HyxEws+Bhn65K5jp2g6EP6NzbwRZjjS6IZ4Bnj3dqJR4Yvqujhd2l54voAD LzbR6kACeIAgr4MARJt06oXQKliomjUpuJmkVS7ASfB46UCwjnnA3gD+HZ8v3pm0KCfN n1Cn8KcxmIC9EvBpDcKtesoN7xWK//INXZM+UGPnlA0WIWOMT5vRcaRfaHxR64edCorR dNOg== X-Forwarded-Encrypted: i=1; AJvYcCV29+o3A8XN93q7xympzYi7aw3lUsOH9TcOfnw/vNE+3tVmsGxeZwD94BBzpZLRAlGZDK3yhRXeFcoISMM=@vger.kernel.org X-Gm-Message-State: AOJu0YxKNquyTG6J7rx/N/54Kpz5izjkX7WCeNvXuLaKXlKSOavfbQhe 7Y61oboAXe2+j5xTJ5GEzBBxuGSRUJQMjZ9sZijjDF5zyY6O5VVkl8pI X-Gm-Gg: ASbGncu4eWhsSQgQJWx9uqnosqlQ3v9taSHI/GynOqxraIYSHxM9ZLjPnUqOwR5HzF3 7ohV/71h2QfoV8qkPhDgpu0qTsQmb8Dw8yet8UXHMnQDfW401rNlYVqg1IcjxNboPGKI0AxLNPf Q+TnAFODvGXVbE6PgtfeRxwKrH5VUYln+qUXyTJDq9eIrrEzOByP1naGigSSVxuZScWaEln+0a+ TEkkOF2MXHu91d1o8g0tGPkGkFm2j/C7js0vPXEYjCZpExkfIuTpfixWBGa/sbf6qE0PBRnMMjY n/AJGc6mlwv9PrRxNer+sYK+2Z4baUpM1Nai1ISN8/qUwlGAOGPQrSVNFLZLCXkT+ukyJAtkzPw Zzb2t9SxDzoIyqDorwPtrvIwNVgLUc7T5ySKOveCjoff9UIlEiI1umzlyR14hsEFxUepERaTLCg c875+Td/JeXllsoTFGRw== X-Google-Smtp-Source: AGHT+IFZg22fNOBq2/+K7yxgA1ojsJmdSdVgUH3x4JG8OH5BRdNvWipWSBISKSpBHgCgvYmvB7tQTA== X-Received: by 2002:a05:600c:6990:b0:475:de68:3c28 with SMTP id 5b1f17b1804b1-4775cdad710mr2567035e9.8.1762279811690; Tue, 04 Nov 2025 10:10:11 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:11 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 08/30] drm/sun4i: ui layer: Write attributes in one go Date: Tue, 4 Nov 2025 19:09:20 +0100 Message-ID: <20251104180942.61538-9-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 50 +++++++++----------------- 1 file changed, 16 insertions(+), 34 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i= /sun8i_ui_layer.c index 12c83c54f9bc..8634d2ee613a 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -25,25 +25,27 @@ #include "sun8i_ui_scaler.h" #include "sun8i_vi_scaler.h" =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.2 From nobody Fri Dec 19 11:15:23 2025 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E67E9340A5A for ; Tue, 4 Nov 2025 18:10:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279817; cv=none; b=lKZnROcUWG2k57EKqBIaMuAAmklfnVA2I4xFT5OCpkV3tiAeJ5WcJ9Q0FVz7TIROF65r8fLezU9D1X/nixgZfhpp9CsyltNW4aNYLafTMxT/nNhuUD6du0UqyzvTDeW8RH5rCYlpATUpg0OKkZLHdH5HjtlV25WHirOC/HJjzeA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279817; c=relaxed/simple; bh=eyy7EC4ErwCa3WckkA1iMdTKsrVPw89x2GAqOyAqd+I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kIdR0cke/g5vMhC9FY542QI/OWwbob8fSBqFwkfcCxQIgqMeFb3witKpRh+KVs7k0QcWY6cXydwtX8hT5Ochtq7JN/UA3WWGcpQo1ObvuCah0/+CYluWNbIDJ2OScldLLMSXSm5zMKM6mYwtw+oAOWI/FYoNwPuR2Dlke1vuXpg= 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=cmXbuBOj; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="cmXbuBOj" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-471191ac79dso64631005e9.3 for ; Tue, 04 Nov 2025 10:10:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279813; x=1762884613; 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=Jjm6bAyoMllMD1Q/IvNTNZhpUzj787YRLXUAz9HfQNA=; b=cmXbuBOjK6uMxl0pF1py9t4RutNNiIqGB4O4BGSNIDt0nBpLEL3Al448tF006pHrDO iWLqUkUAmTNRrr9z++UPh75y+a7U8YMUbBlNhVkBKu1/GEIUN4nhJt07PIGaOyL4o3yr uSFJ6oM67afTGFd86gvrRTeozaOu0odaZ+ZGwIvZm9Giw0NnhIZ25CwvgrsuKw8ZJhFF YVTQ3EACI+gsQkGRIYre6AgiKDQi+YFfMUCmcJuD6YLjvdNab+b5wbbofB3f6iC9IQo1 K+7bP0lbpfmT35p4zculnMGuOKUahTSN2nG9w5rCvNZVb3tTWEW3qLAe572/h2GigEXB rckw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279813; x=1762884613; 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=Jjm6bAyoMllMD1Q/IvNTNZhpUzj787YRLXUAz9HfQNA=; b=t/rn7+c6znLRpMyjQi8rf8r7h+yl/j9Bq0JspNVyPMyK8Z35S8tOxoQcfr2VhVCCeX +/dDfp0V96At9WBn+lAi52ZPcHrFWhZNBQjb8inBxfjWpZynu7UCb+pfuJyvIzOfUceB EN0VAEZV7jWPxjoHNGAZwS37DQH3FRLLVjVRS7hL30JHRTLbsokwYTvCDuazgQi87MeM O1+wIBj4aEF5Sb5HZVv8P6Wis8CBFPZA0sbdh0dEurr5RQSB72wKrqtnqydl+aK2keZd qQzNo0p43irPxF4hXR9+Y4Lp/5Nrso2Ig6b1kMiRFg/DI9ZW23B0wEa1iV46mvsDE7wH YXQw== X-Forwarded-Encrypted: i=1; AJvYcCWPeNeqg+HeyHAxMQFORizTdllIvyRf9wTNam2HW2jkVNPiJ1VctiYd6CVkwRY4nhneqOoRR1Ehi2uAxpc=@vger.kernel.org X-Gm-Message-State: AOJu0YzOdYxDIwVmowLFEeTIW3P4ENR2/s7PCaTWiwP90gVVjP/SuyQ2 tYcHu7pthUggDll9kH3UgyGYwlPbqRUhwNlCIaofoTWo7sYn4PLz9kLe X-Gm-Gg: ASbGncveZcvjcH9pIVogfLlJp+11/uRsUgBXHEpYbIzC2Zqj/pc9NF1Itv4y3NAVxRY M7pSoM3nCzZTZii9R/NwCtE7FjUFFlCE1I/btdeXw4gq03FGvPapTGNan6c3s8IZVXhbwF3ga3y r5NP7SKFET/Q8HMYBT6F52rmEk6IXY+SVDNBuDu+AFEAB38W4/I1NNWefJT+HV0pFMAKmKnQBPv 6Z1UCkurcYCcpNphACap3YQqdESf7gpB4seFDgxhvEx/8jQePW+yaZkDWZwv20sf7GsU9bZKD7B KaJ9T4cjC5z8lPGV1LwLQSHHWNKpUHXWiwWupDKkDLJG0L/5oH97kj6n9EGNhqpX4AfqBSFMzwv e8zYMYBSJWD19O/TKXOstKEGeEf8h9QMZ8krL8HApsC4plSzdVQpEwIgypntby1v/nIqVTMNiKl TYfwVTTHhE1TWBADZX5WEoXuHS1kb0 X-Google-Smtp-Source: AGHT+IHUjkvK3LuEYexNwytgkWNuB+3vDFUmi2M1K/MsCvY3IVkIm6wl0qrMfqC1Lyu5Q0aWPSh04g== X-Received: by 2002:a05:600c:a05:b0:475:da1a:5418 with SMTP id 5b1f17b1804b1-4775cdbd551mr2245645e9.1.1762279812965; Tue, 04 Nov 2025 10:10:12 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:12 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 09/30] drm/sun4i: vi layer: Write attributes in one go Date: Tue, 4 Nov 2025 19:09:21 +0100 Message-ID: <20251104180942.61538-10-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 71 ++++++++++---------------- 1 file changed, 27 insertions(+), 44 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i= /sun8i_vi_layer.c index 1f4fa63ef153..dcc4429368d6 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -18,34 +18,35 @@ #include "sun8i_vi_layer.h" #include "sun8i_vi_scaler.h" =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.2 From nobody Fri Dec 19 11:15:23 2025 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.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 F238533F370 for ; Tue, 4 Nov 2025 18:10:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279818; cv=none; b=szWr7BNi4M5en3ZOW9zIwnkPNR5nVqqPjkMPoAD0F0rUHrcNtLGlqchTo3hsbOrqqT6KJ7qAxf1v7WtJb29oxpXTtbi44wvZ7aTkXyJJIQMZWvr1c7VvJG+Nd5yCzvYWyQCkhiXF0Ck6mTI5tx5qdjT+Bm7Tf3tRn3fkL4b9yGA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279818; c=relaxed/simple; bh=FlT80Jvt6ahoDIAqeU5jws3NHItu0JW+7T1K9WvKkP4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kU1nL7wy5dM5wRFWc3qL62cIjeuR8INOvNtfUfySKfssYySDeLEuIPQP68ycib1dR9NVoytTdZhUqDT8MqK3NVagiL0x9krfPyIKJPaiPDPsum1WNMoNn45aw2HHDEER2XEc4isjvtT/Q8G0YHTeBowSbw5HxzHymc6S1Rsv3gE= 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=HoTqOwlg; arc=none smtp.client-ip=209.85.128.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="HoTqOwlg" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-47754e9cc7fso7991795e9.2 for ; Tue, 04 Nov 2025 10:10:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279814; x=1762884614; 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=vqox3UkaoHNgrz/QIvGOJuxPYXtBZjdwtd1IyKwMyfs=; b=HoTqOwlgLhEDlwhwKTwsewIme7uylP5CzGdhMhLD25ZYyuTINI6Vp/4vO97JhaDyDe ls9NszGvlO9yj244AIPDE8NFHSyIRPsjBvOeTfUFeW1w9dEzwHj3sOhRtxV5LZ2wIsP/ R0SiatuwXmPMuwRHH0aDlYXw4RLdH5zVFQJPaFlZ8fM0WZm6ETLX4Tp9B1B2cP9fEidZ QQSXvR4O+9fUkcBhVf+QFYw0oOFkX9Izjpf1+eb5XOQfQX7XxBJImBC+CV5JC4kcGX5w Zd2d43/39dmpJMwdxdjbyfug916/PkrFfGgDioJ/9swEBCN5CjDOguB7HjPU1dd8y2uX O8MQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279814; x=1762884614; 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=vqox3UkaoHNgrz/QIvGOJuxPYXtBZjdwtd1IyKwMyfs=; b=hWMWuN7J5+L0qEWO30GQW343djVcwv+gj3qEWFvb+WyRp5pnJuhkmZPzP6IkT4wP7r H1p+HlrL0MQWqttug54MMigBNFhEz09+DQKx/0PRyKbz/XlCyS+fjis08IfkpgWoy6pU KbaEEQp6zGJjkkxB9d6Sca2TTb0X0kEFSLM/I5gTtdKBANhA6RTcWdqQOzri2wWAjXHZ dVLhhd7R9yBfCHrKRuqtZg55srfWCfMsfeClPM25b+33gbFspkJIYFwiKaWOKSmf4Cmo VSV9wse9ih33W9qVZAlDaAwDKZnTO+DWp582G2wLQOxBdf3ioQWQcRNyCZy0uwY5cZmK H7ew== X-Forwarded-Encrypted: i=1; AJvYcCVl5Ax5IFgwYyk5WmdaCDTInq1yaSvpo8mmuAmMPuGXkR3m5OCn2I9utWVvEgxpwiWeSHMo43oYkfjQ8hE=@vger.kernel.org X-Gm-Message-State: AOJu0YxEaSJ6tFtyOAq1zLSF2MmVVjVwb4n+/AIt54SH6Rs7SNZRG6ZA wTf+UG0stCgEauOGIweL7joAKRiSIN8PyKGY29qWvCSc7VmSQviYSLPH X-Gm-Gg: ASbGncviT87Lap19BN0XYB6pP35/yhdW4FRc7r9A2byR+a/BDf4VhFgMDfXlADwEe6P ojOKuSFlKLTM7SLsVY18C3S5DHXGV9iA32u55IZq2qjcmg2/EO+gWmC4JELq4VwvaoKd1PXzD1R AUHV4mrTC/Wg0yXaPHgHzkDi4OzjzsTCN/1Vc2q/g3Pdvd72uYpLE5SMVxNZ3upVkMn42jgrg1b 8ogB9Y/1WmDIcFZwc5if0PXMoG6Tu1Aqj3p/VZ5/ckdW6HNKDuzvLLQeYYtwZiQ8jHUFbHbfhlu nmDu5ZD9YxO1Exb95gGNHQiYgQLGg6HK3homd5/3jiiE9/IdiDOatesYnXa2vWRzZfS7JWfOMfx 00g2/7CgUeoBVO1DVSulewKnUFeXYkBWND34b01P7Dpvs55mkatcsJW0XpARyMnXl9XJMnlxCwN 2pb3GQGEuA8Yl2w4REww== X-Google-Smtp-Source: AGHT+IGHcjr5LVZvJCkn6ps5FsbaEzRecmaWoSpniwlTk12WxNdiygIkQQYkFJg+89wFF5L7fhoGZA== X-Received: by 2002:a05:600c:821b:b0:477:54cd:2029 with SMTP id 5b1f17b1804b1-4775cdf4f48mr2528695e9.4.1762279814190; Tue, 04 Nov 2025 10:10:14 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:13 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 10/30] drm/sun4i: mixer: Move layer enabling to atomic_update Date: Tue, 4 Nov 2025 19:09:22 +0100 Message-ID: <20251104180942.61538-11-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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" Enable or disable layer only in layer atomic update callback. Doing so will enable having separate layer driver later for DE33. There is no fear that enable bit would be set incorrectly, as all read-modify-write sequences for that register are now eliminated. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- Changes in v2: - rewrited commit message 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.2 From nobody Fri Dec 19 11:15:23 2025 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.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 7000C33E361 for ; Tue, 4 Nov 2025 18:10:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279820; cv=none; b=UnWHgrWL8vmfsui9fpV/MjcJ8wYWHUufz+menMTZ8qK9ljURTaqGjBfawtmeXtbjmQlacsWmbeBBx0I5ZeYkeYCKP8AgMvvbpENo13uNXJHinmdt7YzYjjpDnO1kXcj5cfxQ7CKmK/Iktl6+XPW4HgYdSOdxlZgb+yducjU1RoE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279820; c=relaxed/simple; bh=vsQRDrwjNb3dB2XQvKOWy7fWTFXCX/LOwxxjT9gCKe8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Oy4LFIXHG3X+A4GzWSx6RN7kpJV3RfrgnBnk09eGMDBl6luGwg6r+oxZzolDaGYAcJgbzmGKJ3ozEwfH/bUVPJEx+9hgxSQxig7wcMd/jMxwFyWFencBn2DnO/xrAH2K/KCcdUeNV0BWfAXsGqNkd901wDvi3wb72U3N90DgQQw= 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=I6/Ls0Bc; arc=none smtp.client-ip=209.85.128.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="I6/Ls0Bc" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-477563bcaacso7269415e9.1 for ; Tue, 04 Nov 2025 10:10:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279816; x=1762884616; 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=bd2rGfbR52BnpdSsNRlsO1gNn2vRHDyP0CX62x34+dg=; b=I6/Ls0BcPfhJ6emj3t1GrxGQh1vIQbw95zfgC/euyRrafuZnExlalwp0VxKruP3xUm k3mFoCgQJqI2Mwbr6+FDY6yawL7mZGSxPuPhI01m9lOVQIvMyZjYxV0EZuZ9GUK9WHUJ x590SwnPkJGn22lG1mv7pNfFOzGPy7HWV2O0JQTuvXD7v8FiETpO6CiAbBwneLcC926W 7s/7QvqA2Ibcy3VC8joLThW2m1/hlLBC2rVykXf7w3pga1XmJK3NKPmvw18WgOZ1RUN9 0ZeUI4XvnJG2OIeNJrww6Y3k6MYpvMaWN9xnuqfrfKGf0MKM2u3iw90G5JN7N0yb5qGs 1Q7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279816; x=1762884616; 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=bd2rGfbR52BnpdSsNRlsO1gNn2vRHDyP0CX62x34+dg=; b=q/nfv0hGzUja3HELJ1Q0dmXIbe2M5drd/07dYU1sH27AXC6UC0WU6X1RbLiKh+T1D0 F2dSk6uuEicYlwDhdbTbUwRrBjYpKlzrGYlLyXEWXiPaGagmwBBc6cDypqbGCrMNUYy0 T7SULRoasfGX+XFzLjoDo7gIZFAG456pd6BUVbjZEA0osKZQtTrmb2RR3QB5za3UNtI+ /5QHalZy5Eem+KSanacXQ2faIM4/u1nFhTs08cF196+G7kS3o92D3z2HY5L+spQbvPoB HFtusG0Zu8OesaFcBGadq4b9+afIFj3zIm1HRoZeoR9wEQnId0aQOb99BfZIAdQfgzf4 itJw== X-Forwarded-Encrypted: i=1; AJvYcCWyh+qr3lTkadXH8xR+k9EigZbGoS1edIgao5VBFn4dBTKHk25RvvBuB3WmEr4hES6fxILBPYBIqoFD+HI=@vger.kernel.org X-Gm-Message-State: AOJu0YzBj2FBR2uAaAmw7mShVlJwdCIx058bzeKB5xWSb8e8Hiny0xbW lMHe/y80QPwW61HoSamhKidq8XtCzGRGZ7L0ZGeX5uUtO/rXmyV6UtR+ X-Gm-Gg: ASbGncvWGMsdiPgBxiGlt6/HB438HmPDm/EBKAI00BfSjhYdAIkd6menQonKqEoiR1f zU33e2buM+NfIb4pw//tP5ZgSaNEzvTQqtQ1C+ZnTJXmp1PcnaZHgonP/Ytn9ZEyUgNBoBQJaXQ XsLZix9NnUaLk5Bd82QECzmMXs20nuv5WDAWU/dl7sYr9uxKZSibyfXDnyWuWpzqaqFBNooezFU n3ZA/NiAXQ65gH1y3d+Szr+I26HE5pLWcoAiWMD6nFO4nh49MaEpG4GwXtLVGAEQPZcvAJYXXTm ivAtY5r8CpS4o7wgW+KaOcChHTP73aw/wMeMYFBXj+QCflxq8S+eb96ohjwBq2ijEa54/f6jqnt 4uZF/SC6rOUv3ROYEmUeayp20viHAuMd5U4WPO1lm9pKmhe4+AzLtCp0/bmxtI6LCo4N4teBHPu ZPAdwz3whBSXS9JF2sZVprFScXj3tQ X-Google-Smtp-Source: AGHT+IG2sBblS49qAXjvkf0vtV34n/K/LEVc1O2UQPjWyBa6gyH0Uf01mtvCoKB5v5EtjbqR1NJhbg== X-Received: by 2002:a05:600c:1994:b0:475:dd59:d8d8 with SMTP id 5b1f17b1804b1-4775ce9ba5cmr1913685e9.8.1762279815509; Tue, 04 Nov 2025 10:10:15 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:15 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 11/30] drm/sun4i: de2/de3: Simplify CSC config interface Date: Tue, 4 Nov 2025 19:09:23 +0100 Message-ID: <20251104180942.61538-12-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_csc.c | 89 ++++++++++---------------- drivers/gpu/drm/sun4i/sun8i_csc.h | 9 ++- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 11 +--- 3 files changed, 40 insertions(+), 69 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_csc.c b/drivers/gpu/drm/sun4i/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.2 From nobody Fri Dec 19 11:15:23 2025 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 957AC342CBD for ; Tue, 4 Nov 2025 18:10:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279821; cv=none; b=nftxpba0Tdw/hm9yxUCaMoA7pAbd4GCscSd0IfkWc7mnKgKfbT6NM3z3oS0fjjjVpcyWbH/CRe8S8MgDYak5MUtSFRflrHqEH/iCXqVYhdxZxmEFgU+o7ur4pKNuWNdLzw1s90i6A2iDMvTcfE201eWhdjENUG0E6/ABnFm7KoQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279821; c=relaxed/simple; bh=sUrIHtojc8Cq5HvYFoOttAp1S2R8CQHc4BYGDanaEHk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ed0efUsXIYb/tVuBaNFkm+MCQlLu7OJIKQUPOnhH2F7uSCFWWJ+ZU/rRFJ5mkc1t7u4Y0UPf2x4FWmwODU6Ar7vI0hwWpSJDKUEtmg8DF+8FjzSxvSblHwUU/A3U4/gASw8xurcsaen8nHtnAFjOYVseL8vq6zjjmOL8LmrrWa8= 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=ULzCLor7; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ULzCLor7" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-475dae5d473so7378975e9.2 for ; Tue, 04 Nov 2025 10:10:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279817; x=1762884617; 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=JdhmcynnandPsql64nAYpaShGCfSEifyPJ/Np9JnIqU=; b=ULzCLor7fTSYL7Sg/0Nyup36fgBQ4s2XTrYvaBnHHYObtEQliI8B1ZODnZKnrxYyhQ QG89W5pLd23WCnOr129F1XVoLUv9oy3TvDDKISJVKpmHv6yeGmE/wP9mDPJdGixM+vGw ZznN8cQUmLXqIPZmD3eMNEIE32ph1egdDbJFeuq/g2F+R+89S5Rrp4aByY39xUr8m+SJ 9j+jZ1czPB31LaHtUqoCSyObdwPos19P31vEzv2PDGqh3BTUFC0cYzjW5M0PWj6Ft9Ah ejiBMe9FU3dzPb66mTDJNXXj7BanDIvSJqJ1SSufks+W7lM8ohbBO7f2883WGpDwSjLV onkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279817; x=1762884617; 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=JdhmcynnandPsql64nAYpaShGCfSEifyPJ/Np9JnIqU=; b=d5n5dMoWCiislOI0qhkybx+/BaDFDllfJzVtisQR7pBbK8EGGzhqZgogOtwenDX456 atszYWwH4Mmzb7XdL5TF8f1zY0cdgvKDZiaaUgK5sN8JcwjiYQCBO+ehNkVqWY8LKQAO V6cd2L6SUhmV78MMDQjR0GLMMeX8N+L/t5eY54GyEJQDPOWmBDc/hF36fWkZKHg6abaG kAOxPTLwtzpiejzjASND/7RG/y3hB87FrfvHKrfq7nk/lbwjJOvyMTZ4b4U78iWUWACO YvpMVCIxut1VFaXlZV+lqg46b0UiNpZSKAPhVA03d2wJHfUczdgMWVIpEE1AilKlZOGW q6gA== X-Forwarded-Encrypted: i=1; AJvYcCWkSYRC1DssNi+2Oh644wbsaUzT/LFTywi6MVBstfJ2aIivpEFUB02nuSgLJcIo33oVgKaWtjDtIBuwf1g=@vger.kernel.org X-Gm-Message-State: AOJu0YymxNkC42jc5kDgV4CYVvKtgM5lDofo9ulyjDpJSUP8dJDmJbc7 O1UOqHwtVmQyHxIC1Coqg4tdtvf4Hd5pvbRPb2IU5gFl0iNVhe0KD9ZV X-Gm-Gg: ASbGncu2l3c0PYPPfTsj2RvPAAWZm6v2IolHr0HMlQXjbcwd+gGRjcG4a5p7boulPit KAtYRlrEM3+tAfMJD/wefLWdxc2DV4RH8RmaV3A8/4L4Hfdmo4V8zD/cVue73C38F3UExpo4dCp 16lMc9rAWk5XnbLad1kbNPhHdk8pyPvGCicMt053LS1u8csZQ/5Sk3MHqogh8aZ12oXNIwyWH12 FV03i2qbbwS80oJeu9i2ZEOM9mxnBBOcvVxtrlpj5Vaa23wd7RZfZSle4wLFskKaXvL1+4jJ+qA t1A93ZtQxJCQxNGtYBpVCSi4ACDkZFDApopvWw8y2EKxQVYgYO2tzvaN24UfJ7cNgK/nR+c4GiW qqnb1L87GP/ZBX11ssJPZCWvoD+JlS+181XsJlaiIc1VLJKDEMF/qOH1+jnUKaGzZgkNMSugAzP PrujPZvi5r82jcupsYrwruMT4Sqg6J X-Google-Smtp-Source: AGHT+IHAn9E17efLdK3gkIKUuQG/k5i67Pxhzd6m2tYSUMyKeGk6z7xhuvIzYFMNgqNcBWlY1dxfwQ== X-Received: by 2002:a05:600c:524d:b0:46e:436c:2191 with SMTP id 5b1f17b1804b1-4775ce12cbcmr2349175e9.25.1762279816823; Tue, 04 Nov 2025 10:10:16 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:16 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 12/30] drm/sun4i: csc: Simplify arguments with taking plane state Date: Tue, 4 Nov 2025 19:09:24 +0100 Message-ID: <20251104180942.61538-13-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_csc.c | 42 +++++++++++++++++++++++--- drivers/gpu/drm/sun4i/sun8i_csc.h | 11 ++----- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 33 +------------------- 3 files changed, 40 insertions(+), 46 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_csc.c b/drivers/gpu/drm/sun4i/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.2 From nobody Fri Dec 19 11:15:23 2025 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 291813431E4 for ; Tue, 4 Nov 2025 18:10:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279822; cv=none; b=fndQLR/qCfmbnu9uGvR5c2bQq/p7tnEO1sdcYD7q960Yc1cwHuPmYTgq1OKSc6jFYpyvDJLG6ihCP85iZYGB6jguKMSHsLX0Ar3p+VTGzTvMGKwUmtXnzB36h5yXsSSovtXhg5gfGuuN6ScOeOJtRZoqfUFFvzemHlR2SoK5J0U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279822; c=relaxed/simple; bh=t8mJW3Fat77+qlKNgT4jR7rPDxuiYTPXp7Gff1nhJ60=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sTL0+1w96Pk41LP3bZgqOuAEs+vm4+UywNW4pYfSuafVGIf27TNG5IIn8VY4vyLASPD7GuMFzqff8/bDlmKCN5Mets7OzknRKUmdG6CnwmpTmO6K7z6KADIHK0woiBdD8akFzNhUm+kQZSXz+hSw040QTEdLsex9lvCMEJWimvY= 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=lyq8AWhd; arc=none smtp.client-ip=209.85.128.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lyq8AWhd" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-477563e28a3so789515e9.1 for ; Tue, 04 Nov 2025 10:10:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279818; x=1762884618; 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=ZDQI5x1cDX0/wzl8C9wFmlja3WFbUj4VL1aXgGGHPcI=; b=lyq8AWhdI0MEhsI96t0x9wxWeaxLweKZc0aLSOwDiVDdrtwnfibgX7mhV/EHn2pmoz t6wMm7oTV35JXtHCF2eKJ7hKG45Gq0QZsgNJo070CePaVq5Gy8UH+qcJLa7KnY0bn6Vl +ubNzG3auc2GliayzLHTvyukog9ARkS7HdMlNFej5HAanmxSF+l8GywalwVrZmjSPhN7 H7xQMzi/tslPDEbUIkXMHfbCk3qFJ8jed2cZZ4AElgxdMjTFGj7/0zHq+yCdu7u5IeiG aVUMGZgG2CQa9okzr/8RBHgoC+9SeOisPTI4UuN7ppE6KpMeYHFuvjcsIVimKek4a1FG y+JQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279818; x=1762884618; 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=ZDQI5x1cDX0/wzl8C9wFmlja3WFbUj4VL1aXgGGHPcI=; b=vgSQehxJpj+6y92VdCt0txJ3K6iXhjWvCxcvUsvb92PL69eOdw6v42k/vfNygdPABB odN2VHME+8xtj38WWoDpulFtyCzMlBGDNr7cx21Nw3py1uf1gJe+ZYgMktT1PuACOfDi UQNqGoAAtYm8SKZ0gyF0nj6kh1EyyQAqXnGXLdJ+oZv7Oz9lTRzoz4k8JNF8W9sIBXGq oI3T3OD4O+a9LU/2HftYZj2G60F6JQ5A4XtdbZjqlHwx4hEpxNwaFBRNNJ3J4bKkYad4 mHwj/NCTERL1U7uV0bChB6IM/xkPROY7vtU2WF026X+B3LDz/bTWzZYMmt4l5eW7w3Ay INCg== X-Forwarded-Encrypted: i=1; AJvYcCXRoaf8bLOabZdVhvHeVwkkUhZZXZvemV9lEZrCxsw2I05P9qmQaQMHQX9cjfUdKmTASVdt2QAhe4pBqCM=@vger.kernel.org X-Gm-Message-State: AOJu0Yw/MsdT8JNNvTfrzAsPjijKIBCU6N7M4UdVAG3GBpxuKXQEB22k XCE/HoF2v/JuQlAFQabuybC+3wcrD88QPxH9wb2vveoYfgSOVzY+8qyd X-Gm-Gg: ASbGnctP0oZT3gs3yDicUDCBp3CK6qpOm2t6UcwYGy8SAqNhX5oEBZh6zXHa5mhkPto E+DaWCFZeRynFuewbYpB3Tu38zGDiv352JRCpV70riAQDSJnyRBqZGqCQ06bDNvNYHp9uIk+xVV lHl98Nz04LLtequeZ3TES5THZAH1FaOkPT6GO7S06axY/9SzA66hRb6tOxeCK71D5k9A+0TTLIN iUC2crnfFijq+8nsF3R0qM4kBg+QY5S8ufE6+f5ETi3rFj3oo22oYMLQvp46gNUiy9HdzgQalZe 44UVegQfnhhibCnAoOuCvwEZSSazQax6CCM/tUjtkdc4/nqIwnudbGEY1nlLfK02NLpBhYryYRa sgSk1YrErfVeTKJ/8RJDzAFTngr1wjCgGVuGLzGNAQ76ZDm5jhcbMbc3y0+kGx47ftZj73C1I93 dlfXK8ksT+zLGz3BNPKg== X-Google-Smtp-Source: AGHT+IE6+wQNQgsRWOAqTzJlZBlSMUgDJYtvMonE1RZ+OJOG9YLIca0WKWGS8Pz1WvOiR/sQSuop1A== X-Received: by 2002:a05:600c:6dd3:b0:475:d278:1ab8 with SMTP id 5b1f17b1804b1-47754c1c553mr27491185e9.2.1762279818149; Tue, 04 Nov 2025 10:10:18 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:17 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 13/30] drm/sun4i: de2/de3: Move plane type determination to mixer Date: Tue, 4 Nov 2025 19:09:25 +0100 Message-ID: <20251104180942.61538-14-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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 further rework for DE33 support. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- Changes in v2: - fixed commit message 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.2 From nobody Fri Dec 19 11:15:23 2025 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AD94233E364 for ; Tue, 4 Nov 2025 18:10:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279823; cv=none; b=HaBGFMTqRPSeBpMipc108EIZb6BKWTA7enDfacWCwthhDM9jNAdStxRln/hRbgj57JaQFd73/qVNe38sHXh1Os7iUpq9cZBlu0GlllkqhMBNDcrmiqaySdoqH9n1GTZnQwKF2tJTv1/HRxi5HbjSu1TcUAPZ9U1Gj/vqPO83qyY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279823; c=relaxed/simple; bh=aukqhPkb3SXDec5/cqcnl9bh4tAlZZ6WtRNZI9Bwr+g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=L+IzF4Enup65krN5GRhw0y2n+zLyOGH5AreQYiemGdpn2srS81DemI0exTNfUemU1mVZv95k5dB+5CdWEOUt1dwzWIHSczYdyo+K/UY+a1KEqoXuYXM+TrcT7S1eYtFXB6dX5miW2/OdcPy5G/RQ7YN9t6TFjodqufaQwHIICU4= 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=IYHJJnnb; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IYHJJnnb" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-47112a73785so38744485e9.3 for ; Tue, 04 Nov 2025 10:10:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279820; x=1762884620; 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=RkKFWxjvfnPBPsn+5nRw8D/GMWr7S+bsKZMhSPQ9djA=; b=IYHJJnnbuL8e1A86DkX8d78uPgIjtXTT2CLULzbYh0RgqSRKCnhoW5ktZTVSHx1E0U 1RO43OYMlG9R6PHZqBMNRP6xzsnEu9HiP3j62BCQqMkVZf9ra7nlBKM9BfmwXRKqhadB gsetMRoiACfOlzHipB+Z4lhKdzG/oE6dDBICgqTzrz2PzH9s9y/g+QGvHRafCYNfaCgZ eLAkMrhPrj6L398lTIEgb0KrxLiCuHAZmWGTXLoey6p8Dd7L9lAWBV3gF8kcc1Iot31r baVz1B3MuBe8N0l6Ydcop31Y73YjAYZlyAppezrjORYM76X0ce2RAUgx0JSDJP3C+hjL hv+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279820; x=1762884620; 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=RkKFWxjvfnPBPsn+5nRw8D/GMWr7S+bsKZMhSPQ9djA=; b=mZmsxNBFKsRzO8Y+U/Rb/SkeapiAJly7ijkeNBJWtER7Tcup+8DdRivz4AdmGhztH/ c4gqKFLXjfRkOqCLI4DRwG07orovlkjFwrT1mCXMIDKLHqSAG6ANmiWEARamQXf7vQiI Z8IteYJPELeTpdu6mLgVixaclP04fZGKlovmitNI3HQZahvXUr+f5lDjvy/OR4ZCAz3P uZtNxaZ0NUUFQhAId2ymNJYRbEeJ/IhfQOisJ+T7aBm3S44JZ7buEeyBWF+7ROZJWxu+ ebRVYgdG06/bb46gzOchsUVtrXZHplRFkOKDBQqRoaGw1tQLzfTEoJCkfO8xtOrLkhYl eisg== X-Forwarded-Encrypted: i=1; AJvYcCXasE5Mb5Oq21+K0/AZq4Ecthn3nUxd4jtGbtfEGP/tS50LGV4IQxaxQCrp4QBBN8py7dMEau8UAWOHarQ=@vger.kernel.org X-Gm-Message-State: AOJu0Ywwj+Z7ytsSvlTeI4zwxAVuusISGazBZijf+a25PU/gN/jz7mxB 0ZVvOw/pjQI8BInl60LmV8oHj4gLH0A0D87OMdBliMs7hsvOgOjTt233 X-Gm-Gg: ASbGncuPSVhkO36C+CVhnubRsr1mWIlXP4m+vYEhnLtCBA5NomT7R3aXWscUhSvvROW PbNK+5UMMCQ2HWtfpGR/NSkWHcQdMtN8gIe0Rhkg/t11Cb9PGA8mJhZLnDYiANUYu2eKPrTxOBw KDJbtGUsezLTYzsU0md5EXUZWdu31SHd9otBIi1R4IXe1xkhfahrmB4LCV/IGTLZeruEc6vLLGO r5PBdST97eX9jFAoESK2XoiwCDmazgKFHfJEUfBc/SiHHvmXTQcoBFm4cs32rbsgbT2kDdxrwPW eWJGYPxXdsRa2rWmqEmGEeJ/czYtsl8Sf5Rp1afiSfGCs1JPSBo1utuPJREJo5nlF8mpfwyjYc2 ZGBL45V9dl40uDA6iCVbEO7FzpByB2wjmOTR4/qCHqxzb4wp7+S7DfqkhkWbfB2PKB0LHfXpEsK +PfTZzLjHecQ35AjTVCA== X-Google-Smtp-Source: AGHT+IE0VNeGup3E339ZS9R9hdH9raL7VWlmheMAS7dvWwXActLDGmTaSE0UPI06AOF5H0yvEXihPQ== X-Received: by 2002:a05:600c:a0d:b0:477:1622:7f78 with SMTP id 5b1f17b1804b1-4775ce24859mr2137695e9.40.1762279819619; Tue, 04 Nov 2025 10:10:19 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:19 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 14/30] drm/sun4i: ui_layer: Change index meaning Date: Tue, 4 Nov 2025 19:09:26 +0100 Message-ID: <20251104180942.61538-15-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_mixer.c | 5 +++-- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 5 ++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/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.2 From nobody Fri Dec 19 11:15:23 2025 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4C6A533F370 for ; Tue, 4 Nov 2025 18:10:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279825; cv=none; b=sKUbbRR1NyTqSVXPdVymwV6ne/eq44OLSvrfsBr2dXw8fvHvh9Ul1tMFPLvVgCOgPISmVxrHV83BVpulIiAoqtW8HGk6NYWP18Hf7H5O7FovVrDaI+F7fEDGO1K2ecxh78N8zn1V4fy+0BKgIe+fyLlUZT/aA6X1qkl0e+tCiHM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279825; c=relaxed/simple; bh=fMfk5XrNq9l01XQk+tz08bGQKmauEMShCmc9xdALUaY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=j0fASaNwZmrwMnb0D2WxeIkrzSb94uZkAcUWHVsiI7Lz5uPM0JMz+3L+rPwBRvBvc3mczUu7apyKDK02wxEG/RDiBnRV2bNj+wO2s5x9Y1wjZyEwwn1hmEogw+8UAd3s3sL812DOoA/FutL6qMvuqrXBWwoA97OsTGzlgxWwQlE= 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=PHAKDcIF; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PHAKDcIF" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-47754e9cc7fso7992515e9.2 for ; Tue, 04 Nov 2025 10:10:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279821; x=1762884621; 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=clITce3FS5MOzvHgr4+g3DvGcjeJNYVgPXmRoIAMUA4=; b=PHAKDcIFolhYO8fisAoTGhevaF8l70DF05nD4vVCCKDqEX9tKoaMfjdcAf/Iodt8qs rIX6L+8LeQn6sEi4zxAj+Trfh98cJQ7F5jUmRusH2J98FPv58wHUJiXaQ2wug5wyoRPs 7JHa0Y//agZJpSkh4DQbSWb26mNg6FRUE4WJoNGRFhcr+o0K1UlbqULxkF0vXVxn5tgd CQKBBBMXCWdfVHYC8Monyvol15VFbB7gYt7jRzBzHCjJg9hFTde6ilm9U3EDpD7YX8Y/ poNCB7wJ3/GcRojZ2NZibYYkUfXVp7PZswpqEahqvo2bzQ/nU+0bVcjNIl74m8BfkRdH S24g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279821; x=1762884621; 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=clITce3FS5MOzvHgr4+g3DvGcjeJNYVgPXmRoIAMUA4=; b=kyhOnQHrGtMRah2Bt2Nch56AjAhDBrHVAOs+zNsq/vEYW0eXGzNHVc0NCluz8t+hA1 SLGXsw9hDrNZ/d+UtpPt/TN8o78QP47OvImijYohSfFc6HmUuF8DRo6xlFnmp3JH/Xy6 xvke4i/9G45oqEvP1CFCa0ToGhpsIyjzlijpoK3yI/CRQyFAtPmxQAmG15gECnwg2M6W iIcDAJepzJQdGDSA02QgZ40LZvSQUD2+HMZB38cxQm/X17NZR16EIINgZsI2qwiUWz0w 8ke44P4XympfjKbl0j6SgGOfZmh0vONU6uVg47j53Nl3HRbWbVuoS2j8199leMXZz7yI 3t1A== X-Forwarded-Encrypted: i=1; AJvYcCXj7OfyJlIcfS0SfHVic87IPHlBRfeXAnI5Xqau/Ca9GpIKMgDab5F2zl6g7hI6kjc142NnTyuo4hSAy8E=@vger.kernel.org X-Gm-Message-State: AOJu0YzGLMwFX+DzpfsO4OKRqgVD5DXXaXAYO8yeg7HaryD+FUChcU97 bKbwzIFrdiasezP68BjLcSQSSruVnschjWCj8/7sb9pAOkiw3jYhvOzU X-Gm-Gg: ASbGncu/W18y52oFSgtQ3fOdZ9Q76AYR3F/P/ImDhd+GmS89ZJ2DtYbczR4DtecQeO+ PKdNMW/IgSLWUP/RgQ6cb9GICHVii0i3Wr7msn/LH3SEU+dfPXf5v+OjKo2K150VPddqxigUEkY Wst22kGvkqwCggVE0wFOqU93j/R49/+2AxU/4cQgLsEWhqqr39NPVXLDAgV7PvxZSTiob7rNxZb boM8J5WNffyoQbB4ZSIZl198+vOzCZUdlDzWZpsoDOa+lknDEeIts8m/i9/wbXLbcNolofYbrh9 8RU+9u8BlAgmaqM6WlJN8fmJPgGbqII80s7yUU/nan+0garllNPZ8WdYOyObJJbv0tIObL+EH4d JiGXpzHC6RdN1xNdF//9gvB5e77Hm/6mv4lowWKW6eGQZti2np+Bn3qujs/BjkglRaLt1QxKy7a lVK7+1FYHZ5JPw1kB3Dw== X-Google-Smtp-Source: AGHT+IEpdaIz/ZPa95URReRW4HZDMqPLVxE4VqmgVrqWeDCwzW1Bh5UB6FP8v4QdEMy5HSG3J/kMpg== X-Received: by 2002:a05:600c:1994:b0:475:dd59:d8d8 with SMTP id 5b1f17b1804b1-4775ce9ba5cmr1916885e9.8.1762279821052; Tue, 04 Nov 2025 10:10:21 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:20 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 15/30] drm/sun4i: layer: move num of planes calc out of layer code Date: Tue, 4 Nov 2025 19:09:27 +0100 Message-ID: <20251104180942.61538-16-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_mixer.c | 10 +++++----- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 6 ++---- drivers/gpu/drm/sun4i/sun8i_ui_layer.h | 3 ++- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 7 +++---- drivers/gpu/drm/sun4i/sun8i_vi_layer.h | 3 ++- 5 files changed, 14 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/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.2 From nobody Fri Dec 19 11:15:23 2025 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7E95E34404C for ; Tue, 4 Nov 2025 18:10:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279826; cv=none; b=ROLoBrAbVHYAVSlvH2LeCKRBVCZ5TFpfwMNC9p5xKStriNKEX7DixzxI1MCruX81u7MRXQJRYTl/U9afM3k1auYrmgkhovFWayyhxfx3PQsOeWFAC51m4sojO8bovJQsniU6c5+GDI74goAYzH9KvNgbcq73tFX+ExYUgVMD1LQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279826; c=relaxed/simple; bh=EUxwqvnihoEVCgnylqZr5GEYPPFaWHBMxkmn3kEO75k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KrlMnX+q8SQbM43OLHIQhhlzEzdhPaKixTTd00HgDN4/ZTwpJ6mOp0uo8Dqpye97x5ih+s3Ut0v9C5sjOhmuuvjFcg8r0bWd2A9YUXu/GIsNkLMXKDpAcHb3Q+zs6+E903hfSYm90ahj/QsFXFWsbCEN4PHcuOrDmd9B8GxgKpc= 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=YlzfR1t4; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="YlzfR1t4" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-477442b1de0so20305985e9.1 for ; Tue, 04 Nov 2025 10:10:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279822; x=1762884622; 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=XDehL28Q27cYBAOVsoKs4qDMfKKiwU8P48oybsPCNMI=; b=YlzfR1t4p+8JJGuMvTss+NNBA2FaRy0aU5dktxi9ji1StCpJdz6lan8NZVz8SEOGbW x2mECPtiWZ2hzWZpuAJxO02n1dWWHwoSfFi6+VXvAdA7XEdl3Ts+y6Ix/NLu+r67gNS1 ylJeVJGtFQ4aE5AmnYbiqc1rYWQTXd0L9qEDtq+xs0hPDVxxc0+6Nt6o5Fev++BwxpQR n2l1J9cp+YrWOKjq9eXJ8UKJ5JH6KWD4LZufLUEywEh+bWOathWO5vZxdwWesuljsdB1 af9gTj0bGku7RGz55ylAhOifqCJRBOsRWnS0yfViYaqfAbrwa6IBnD47VEkoBz3X1jbS NBbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279822; x=1762884622; 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=XDehL28Q27cYBAOVsoKs4qDMfKKiwU8P48oybsPCNMI=; b=dW04zN+T0xUPheivSIcLiDXkBNYXH/OSboOQ7nS+bAKxxIndYxlFwxEZXrbd48PzKZ k+0mDum9Opt2ZY1OBzcLS2azBHWbI1fIynInAMcYhu1jOuMNJMpKDivY/hR3SoS/Ahvo VWRV9GUTepOUiUGYY9yVJ7Z9BGOftQ0CPaguKpXzZMzmAa2IY/4h0ZvH4G+HMTkYFtl8 O96ZUTmruC2LEcEb+5m14041lZCR/KELpCOhVUXo+JEaRsqVE6j/6v/MS1cxNjsJPuYM xbNMBVZhTy4oq9oerDfXD7nQeoteS+GnFdpHp75l7r51UfxDTjL9+Xh1awvr35j3ebVY 5n/w== X-Forwarded-Encrypted: i=1; AJvYcCXIWhnzcWTQ+hdglrGnPnkf2e6MkKlq6/KGov8UADRQitSb72BqWTs9GhiFZ2COeYtNS2QmEgtsacOT1AE=@vger.kernel.org X-Gm-Message-State: AOJu0Yx+K7YATx0iSA4z5K5kmn/OA+255rND4UdhEWpeYqXWlofI8Ca6 UNERrQnVb1n6LV5uC8iXpZA8SZOdW6G3wOvJ0m6D07pUJmlyHfHWDAcJ X-Gm-Gg: ASbGncu9kaN08CnFHYOPu/MlblpWsUaGIiiJZlHtzQE+6v2j61jwCzml2ixJ4KG5ga6 K5lR81nKimL54WUY3YKwYW/pQo9HiDqrzDfbMitm3DnK+7rJxMpdecZBIIFqTHzOCH+JKV40fEu hy9VsmbmBFnYb/qtfLY7RfR0PX4T3ZflQjONYjsUxBIcE2Z2svVsnHHhiwVQ/JreWVEeLrDUI1Z No3ywIWXZtPpcG+6/tyc4BwvR5/f4ZRfGf7kvaUxnse0j+DjHRqCAOpWkkTsUqOU8G5Gq2vFvKM j+I+LW95XYU04YeQ5HsMJhzx/vazgEXFcJpFWRNbrBVj4gp1A8JavaXsy24iFF2j0ewmhyD5ymG TQ1YYXvaeVwGlere+T7Eo6MjtIROZMzIQZpJYG410p6P2f5Gflvpqwa6KZ+3mym7mSLV4J1nKOh jfLWxbqUzO9pE8jP/vSHrv5chF5DSt X-Google-Smtp-Source: AGHT+IH/l6jplGcrJTw+MVPwop24SPu0Xraro0pVDB1OrwY3EC8U4W4qSO/6idS4O2pFVK6xDaJeuQ== X-Received: by 2002:a05:600c:a00c:b0:477:55ce:f3c8 with SMTP id 5b1f17b1804b1-4775ce13215mr2324825e9.25.1762279822265; Tue, 04 Nov 2025 10:10:22 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:21 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 16/30] drm/sun4i: ui_layer: use layer struct instead of multiple args Date: Tue, 4 Nov 2025 19:09:28 +0100 Message-ID: <20251104180942.61538-17-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 62 +++++++++++++------------- 1 file changed, 30 insertions(+), 32 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i= /sun8i_ui_layer.c index 8f6fcdfcf52a..d5b7241acdea 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -25,24 +25,24 @@ #include "sun8i_ui_scaler.h" #include "sun8i_vi_scaler.h" =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.2 From nobody Fri Dec 19 11:15:23 2025 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5E53C3446A7 for ; Tue, 4 Nov 2025 18:10:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279827; cv=none; b=CM1kXikMAkGNHnYo8USLr4ewwAJP7eCDFZTuy4G0NXs+o5SfR9zi7NvJJ9sNBOx4ggR2QeaZhW/sQ+yRgq/X4gjvwr+nXF/V7Nrf57E1JK+OkEugdSwfrTFJSq+o8LYZ9Rw7kttuSo2IzuV3TCKfl6j2D6QdJsmoeGPptZ9HwrY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279827; c=relaxed/simple; bh=GiArxfeMeAL0CBeo7YtFoMvlFTq7fgoVCY+irBH9sNc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=oVnjiAOZerZ6mpj2o+8UOpWlSkPH3WVcGnbBhByXtXZbDhdYztwWUVXkZu3B3o+UzLi2NPgi08ksHBCotRMQj5Hu0UUTQ5OzmnE7fqsXi0seQJpzh8y1ZFasxrKAvPIeY+CF3ty+2DOsjjtg5H2dIp4w86bwnY4IpQhUDcH53nE= 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=mu4WgjhP; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mu4WgjhP" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-47754e9cc7fso7992765e9.2 for ; Tue, 04 Nov 2025 10:10:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279824; x=1762884624; 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=s3EV/MxibVMeuKGvb6vWmFsIs3Yu10QpUHip3gqCW54=; b=mu4WgjhPKp6qrR5epybAfQky9fBwZKJWp6CeC2depbYDwUp3loqCu65OPzPvZfY+qT QvlUU0yP2zVWC4aVgqoIZyBn47UOWzdYSRNp9nlz01oJM6TVtxWu/qEfqG+Hgyyv9d0t x0Ly2wFWDvC3c/jFCOxTDpWvkDBhBm5rO92FKYN6X3nKA79RyTXFYPE4IgGx9LwCOPg3 /7FSixo+70WCpVUMfKoaYHMi6LP7hHEfWkaQF8RlHFZhK9hFXsaL6WRJLMjMNMJ2Q6bv FHR1/Fe8lLwxRLWTbzIQlqnb/ltD9guMcWM7g+gyTylzmGWI7yenJ4asuDrdVYDKF5Pd ZBzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279824; x=1762884624; 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=s3EV/MxibVMeuKGvb6vWmFsIs3Yu10QpUHip3gqCW54=; b=TjCa/5GxaC/3AsHHBHpTNNr+90FsJu6FGc3xiZEPfKMCwK10bEc5LNt3z2rNAnsjlJ FrvFJGc+OXQKTkfUGc2/62R3edJ6qujTpL+7znncv8qgpswyAb6xznBmf9SrBexLrmDR 0yRuc9KVc+81DsLDgvi6123esYJcSdlGSRz+81Je1Azgik4QjDw58fJFt0pGT+dabu57 nkGgSIYiQloBDAtgDkyrGHK6Ma5rI2e7E6SZA+gjlkHOsUShL1ZB4dnb6GD+JUxr3jVq DtjJ4eTFqBMwIHxT9mmVmoLcEqtHp4aD7881r8GT/kujdtTuSznCGFStGA6QYU3+5mxR Qd4Q== X-Forwarded-Encrypted: i=1; AJvYcCUMzTiXw1pr5WvwPD+DbShTbCWusss4dwbN4Fz5BOrDFyPjbVSut1v3QE/UOJ0MW/U7gltDUB4IayUizf0=@vger.kernel.org X-Gm-Message-State: AOJu0YwbAD9WY7iXPM1gz6XUKl9U8vUoJuGxoKMD7adkbZc24f9j1lfh G/ddcrTKXm9E1kpEhqtSc8G60q1fEvDenc24qPffw/20MEw0UlnZcwTe X-Gm-Gg: ASbGncssmjsc9GThKLwmVVOsAvudP3zSd8bpolmaTm+adpwGR5AifH+rmJJOWNKZEZe 7vMHiMUYPX5wbakN4RmaAvkn9VTLd2yqYuZaeNOiuCWZiRXBWvPUo4dRp0VJ54gIS/U0fcMPzPU X7slbbifGiYX4dwL6PwieFUmuh2KHxHfePkQpNhsYnXTo4PZU3TWL8jPHUzV1kfiDkxdaPKgHXu ylA6hf/iBmKQFPWS/g3y/x2sy3W90lVGYelG+JTbOUkVjed1FLHYbzSbzOpt61G/bKVsr1PNflp bGwOVAOpO/yVvRrAuULv1o5Wqi1VEM6wcl0UCKiv0rZ2RvitacINQhS6qMsl5eH8PxMyl/rANYB 6vG1pEoCCjr+cIPft1p+XW5MkWiIEEiTQpeFGnWSXpC+n3xwIvNZEQWj7a3QHVb7MKJc/goYYqh mVZZqtbFej1J0K1n1tpcLZxw74x+nt X-Google-Smtp-Source: AGHT+IG3T52xUW38yiQP+ctGCFR1rUHrIm69DPF54UH5khemOeYMj6ikOX9GGLBlfNHgLEUvN0EOGw== X-Received: by 2002:a05:600c:6286:b0:477:569c:34e9 with SMTP id 5b1f17b1804b1-4775ce61516mr2003715e9.23.1762279823483; Tue, 04 Nov 2025 10:10:23 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:23 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 17/30] drm/sun4i: vi_layer: use layer struct instead of multiple args Date: Tue, 4 Nov 2025 19:09:29 +0100 Message-ID: <20251104180942.61538-18-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 58 +++++++++++++------------- 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i= /sun8i_vi_layer.c index 805db4ea714b..ba9c03f04f03 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -18,24 +18,24 @@ #include "sun8i_vi_layer.h" #include "sun8i_vi_scaler.h" =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.2 From nobody Fri Dec 19 11:15:23 2025 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.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 782743446D7 for ; Tue, 4 Nov 2025 18:10:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279828; cv=none; b=re30dBNOjvV89lS9B2Gf/UfJs0H881t4WdIXf2oE41oNriY6AvBxSngfelbU302t67fdsfYKIV/f/kL645nOehv9C1+Y0/KWaDgXXunTkDCsKJ01Mfk2OSbBNnzvxnto0rpBt5xnIsrg4ZUL7mfUld/NEIVEPtCHQo2FZRFga24= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279828; c=relaxed/simple; bh=dY6ZcTDLzk7IJaQR+fODPFvXrCrNpXJ/qB5JCNXGZaE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=c8gMDe+Yb+z3HE7HO9lUewy4Y9ECc9WJWZDUPLDDcu3rmmol0vnnahJCb6+nCM+GV8foBplasPuIWRcWy0SPAb9UNUqCo3RpN8ZxD/B2YRI9BpRPCp5vAos0WgPevBU4+7rxkEQRgZ1ZypM/+z8f1yy1rYU+UF1GEKrR+kHqVwc= 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=DN6xKaFi; arc=none smtp.client-ip=209.85.128.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="DN6xKaFi" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-477563bcaacso7270695e9.1 for ; Tue, 04 Nov 2025 10:10:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279825; x=1762884625; 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=4tlXBSuCi9KYqEnYaWJPbYjWr/O8PttsygtENhT9s58=; b=DN6xKaFiXnl+cTVCVOOX03/IIfiH/qply6E/D6pkr9QjFrRCMAT45wKaP4wjLEdr6D +q/CLtoFmZhC1Y0Ym9ZoLOip23ZSIHfRpokHkz8e6IijKqY9eGdnVWuEY36xSpKiQN7X Gx3uzAlJTGZATwVDvT178D5R2M1nhRst+4fo9GOtDgw7J6Ydutp+4RLjNXnacDhnK34O ye2EpZd2b3kltnumgLkCxlLbVUUmyanIRzwWDeD1XJ+slTIpdLd9E/dNykxkbmj+NyE2 Yn1klWLM1vkuNWm3DxG/VWdqlZCX8qucve5/ClkBuEzA6GqWBZZnfBZTHk/yLuDKj8Ur wocQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279825; x=1762884625; 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=4tlXBSuCi9KYqEnYaWJPbYjWr/O8PttsygtENhT9s58=; b=L9wYlghxP5B2PcFeGQDO7BrEy4XXAfF3XZ3+QplAHuZCHIHPlf8oD8zdpIMurTrs8L mQEoMniGe+T7b8ttj4tYPGOAegDaliFCulxdeGsU3vhC03DfPFrhBV9Xu4XtMuvMmFkq wEJJq7P+qj8xuLbsGGvtSCAy6BP5k43E+o1JVNouZ/6EIBVTRM5hEZInPz7gC4b2JWgT 4edXUOQblXM4rG+2bM37Rre4aCmjb/5uZlZ/Bst4uFZjhr0hrpF8pm/BSLc1y8i/4jFu 9UOoz5FPBTM49Mage/TOvsm+JmPf7J1OdZNZJ0d37XZ21TpBzDESx7RVuk1An4bjVGGw uP/A== X-Forwarded-Encrypted: i=1; AJvYcCUQjLPVvmGVnZG/bwJ3muQHDSES6MCEmdxkApSAxOb9re+ShNv4Wa9M3Ulk2+c41HR165rWzZyg9+7w9lo=@vger.kernel.org X-Gm-Message-State: AOJu0Yz0lrB4WEu+dJrrRd/GOKQWHmYTEwTpARh7QiWoYH02hDYMnFQA 82S027CELUaEPsQoC9UKG6L9O81Basb6d4JtMLwgwfyW/MbhTBmExPa6 X-Gm-Gg: ASbGncv4or0M5XBaEavl1NXzO0x8khY1VIYk7nyCyhmG94C2+vnwprHYYKNK+lGfkY6 iMzahwRMPCW+84iSKQ1FoaB+mxraMxCuN8+08T5RaROIc7GghYwWEg+W/HPg/h9GsjOd/NK8nw/ 0eflbM0MzGpg23ReaBeySVayrYyeMOxJwv3730fY7kGo+XWdvWlRQLyhcA8q59VyWyZ0J/YY5ur aulpYXLv3Xb4ADn3bj4Nx65apqhcJpRV5/oa31A70GbsOvgXq03vNPmm0Ptzvj/LbQYinZnOsEv N4xvfHUPQde2AfepS/WqRwQNMNF9fAelJVtUf2c+u/a1XQMg+wdTqIeY+vPAboPpweysiJzAbUw iiayutQVM/57FxUkt0qZ5UvbFQhR2wy3VtDGRfx16KS5omwLgf1xgXSz6T0ZhD3Scq9x0k1v3iC s1Hq+sLFyUkVny+aAQDQ== X-Google-Smtp-Source: AGHT+IHm1TAQjaSzwnbLWrmSeHCsVmHtk5JoxXFn6C5ye+q9ij6rKyMSLmT96AnudZeM+B1bys7ikA== X-Received: by 2002:a05:600c:34d5:b0:471:1306:aa0f with SMTP id 5b1f17b1804b1-4775ce8df34mr2008325e9.38.1762279824672; Tue, 04 Nov 2025 10:10:24 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:24 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 18/30] drm/sun4i: ui_scaler: use layer instead of mixer for args Date: Tue, 4 Nov 2025 19:09:30 +0100 Message-ID: <20251104180942.61538-19-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 9 ++++----- drivers/gpu/drm/sun4i/sun8i_ui_scaler.c | 14 ++++++++------ drivers/gpu/drm/sun4i/sun8i_ui_scaler.h | 4 ++-- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i= /sun8i_ui_layer.c index d5b7241acdea..9b938e3dae9c 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -109,17 +109,16 @@ static void sun8i_ui_layer_update_coord(struct sun8i_= layer *layer, state->fb->format); sun8i_vi_scaler_enable(mixer, layer->channel, true); } else { - sun8i_ui_scaler_setup(mixer, layer->channel, src_w, src_h, - dst_w, dst_h, hscale, vscale, - hphase, vphase); - sun8i_ui_scaler_enable(mixer, layer->channel, true); + sun8i_ui_scaler_setup(layer, src_w, src_h, dst_w, dst_h, + hscale, vscale, hphase, vphase); + sun8i_ui_scaler_enable(layer, true); } } else { DRM_DEBUG_DRIVER("HW scaling is not needed\n"); if (mixer->cfg->de_type =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.2 From nobody Fri Dec 19 11:15:23 2025 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0F7A63451DE for ; Tue, 4 Nov 2025 18:10:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279830; cv=none; b=jA8VZ/NYSakZcEBxqo0TX0/7rvMKsH5UlQt9QYY9T9FmlS4sDyc9T7rI001wryITXVdzOSNcPwOO+33fNHIUqXOXjGV0rPW256I3/gG4u1ow1VkjS6yWBag6n0rN6mN7UNjg8MhuzJRPMQC8cqkwj0UoYnfikphhLklV798D++A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279830; c=relaxed/simple; bh=orhvpCnZQU+YiM6vENmZY8xT+JzEBx7B3ZDTqYXr+XA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=U1xBKrlBGVM7kcMFDghsrZO/FM4OoMu55EhJpDjrB6XN7EDH8w+aDdO4JLCjHxYNg3W3hhTx7fyBZTbzP9+nw4sMUJKa5+RjsTVZlghueQcIpP0DqDEZT8rQjW0UGxz8rxv3JvLFc3L9YPGS7mPlKVmJa2vZ8Rg4Zk/diGUzAIc= 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=Hmex1Yg1; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Hmex1Yg1" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-47118259fd8so43597195e9.3 for ; Tue, 04 Nov 2025 10:10:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279826; x=1762884626; 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=QXvWsmt1Dzl8GlEdRb8uf55RYf0uTWm1vCPWOIYaG+k=; b=Hmex1Yg1ICjUlcSCIHe3Ke45UnPTDtFF3la5JlpnCJAO231/13EC3zTB3m2kNJuJZs lCMkLRLmTCel/2Zg0D2aMj2JuAOtYnPBTJTESj+8DXS8QNGqILpiZWn6EzsMjPDWiHoI WsKczcr0WxAxe+vlrIj2tPh7DyWT2mBhikC4oYf+yjh6kxbAUZS/vEBkdRHyCWB8NPMA MJLkKRoJot5x+toeRbz8qHVqbWko9UusKihZYoYcmkXlhFfJ5GOErt4Srp3Mgymlzb8S oJJhKIiU0SPDmcAblh8LEAfvixqiIlNPAMe7sdAP2km1tTNxjuE7UHnS7SF1JRmCdeeQ DJbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279826; x=1762884626; 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=QXvWsmt1Dzl8GlEdRb8uf55RYf0uTWm1vCPWOIYaG+k=; b=AJFMYBTzmxmLFOUBBE+kTBLNYY/mWz1FuSuI7Qz7baUzKW3imy55Srmsn7DDA8Yvvq 7AGgMD9bG4x+3A57r8lWwouCRh9oNnPGfidc1ZsaGBusDjvj0k/qyGkIzNuOMmnuPPzs oYu9QMwMVR6CWKSbGmVKqyZ4wbc0tm5Yp4SuzlyAoAu8yBHKSzfSjEGopr0fCPbgMSco s9nsbOo0VsljIMTb8rN9XbZf8/ESmC2t6R1izTMFRS72PQlBdelTCXVPyTpoReB02+ER 3U4aDzSbIP2lyKbkW9bQf7xpiDMmMFW0orIpcNcMbT394Nn+Wo8wph/q5XMNtx9AARVa 8mnw== X-Forwarded-Encrypted: i=1; AJvYcCUQt8Vx9mDLdBepckfZGEmez67viHUNAr3wtNSdgnqA4ptZId3B0wH0Qq6XPEFIJVpbpbWv9nqDah0sug0=@vger.kernel.org X-Gm-Message-State: AOJu0Yzs6dBudL+tUHQuloU/WlWIo7OXIVxop0fBwYUlJaNxU5enp9Hv RTYZFG0QCABxFOvF+ZQE6O9rKSWplYVqQjJkgf02+EUNRqU3DgQ9O9+aT99W6w== X-Gm-Gg: ASbGncufV69Up7ADtQvSZcZUZKseM3f/MeR7aw4pXZN26GHbaE9TnhpbSYVcS7fJcul MkmvngiCibZXjAvUh1Q0c+nV+L3hAUnMzxdVOSZlrMiptcvqT1cFIrHPLtSlJaz8qapLOk+Gijs MxDzQcAs2ZkBUwxT8NOK1tadBd85XkySlf6UFcvOx6qBhY5ZjW110ytRXJuwZG0gcV3/6o7IOg1 6RROvL3l2x9K9rSmDnHOsq7tIr+r5Gf/KTURTYti0w//rvAStu0tI+X3slABlTXl98ZCo3YOVoI c8jqtpQX/sWuIIq1HZjNlnKZndvPBR+vmDFrQJ9rcKEHd4G99AGo6hy7dJoVQYjmwsLJYfNcW4Z Q4qtYU9Wd4pFpRXC7a6NVKYAxQuTw8qOozi7ycAegGTBrq/74CnCjm83cSBUyFTZ7jbppfOkNMz B9ktDqsCdQmeR7hHUAZQ== X-Google-Smtp-Source: AGHT+IFE3mxZcmB3xFrOwCz13wK7MeGXCTbyLCsueT8YPunx796HFToC9lCdkfkmFYbtx1fnK13ZUA== X-Received: by 2002:a05:600c:46ce:b0:46e:74cc:42b8 with SMTP id 5b1f17b1804b1-4775cdcfbb5mr2723405e9.17.1762279825932; Tue, 04 Nov 2025 10:10:25 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:25 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 19/30] drm/sun4i: vi_scaler: use layer instead of mixer for args Date: Tue, 4 Nov 2025 19:09:31 +0100 Message-ID: <20251104180942.61538-20-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 9 ++++----- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 9 ++++----- drivers/gpu/drm/sun4i/sun8i_vi_scaler.c | 10 ++++++---- drivers/gpu/drm/sun4i/sun8i_vi_scaler.h | 4 ++-- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i= /sun8i_ui_layer.c index 9b938e3dae9c..5167c9d7b9c0 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -103,11 +103,10 @@ static void sun8i_ui_layer_update_coord(struct sun8i_= layer *layer, vscale =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.2 From nobody Fri Dec 19 11:15:23 2025 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C4EC63446CD for ; Tue, 4 Nov 2025 18:10:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279831; cv=none; b=O6pSvBRbqoIEU9aT8HG0Z24mVNNZ1W1QmUuaVu1EXmnbRIfVuMgsyo+3ERv8DFmZLNUes41CJUzmM7C8sjmWkXfQbrrwM7BgOTmQ3IPpn3ylkuJGXjOljQu9aUNU0F58UubF9Jy99GLd69ZbsGfkRecCxhHnyjIDHo8aeXDqxqI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279831; c=relaxed/simple; bh=JYeyE7LbbFjoG+88syiaKUyvUvp80MIbf6YBKHpoLyc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aQsd5FJXhnO9V8fYA2mdIM31hQ5npWYp559//gzgOh1JE1etAW0utcP1Lx5I9bGRJ8jSEv8B1OgsiuEjdokA20ZZTbhEeunaaEFB97ugKsSFnXojxC0V7dVxB+1NZ/3h2GP989Gp69qemH9HrNCc4WIdcm0FCC76deRkzE5GhbM= 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=JmDVmnRZ; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="JmDVmnRZ" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-47755de027eso7476395e9.0 for ; Tue, 04 Nov 2025 10:10:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279827; x=1762884627; 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=E9e8rf9e6LHkBiOZlGLaNm4D4EkbWbTfTmdYI52rOx4=; b=JmDVmnRZzurYJYRXTST1g1Es5KlHwZyMKojsQ593+jHT0c0bItxIcdevnmfzDSHLol Jhh/4DNjK/nUZlX3/wpcb2uTV3zsUS/QogDyEmrhs2tGBgeXY4xm+L5OtBUSvPy96r6y EpweHoIxDG3df2VQEW3pnYh9KZTtC8R+vuEoNIksYMX3Mf6g/tl3XbyjjMM1lRz1GeWo GxUTLXSR5if/3jgA4cmEC3cQTKPUmU+okfe4J+Ho5gHolbJjL23knfbOS9x1pTFesa5/ ow6fab+4DSmqqPhgPGoJhLsB2rcaH9AxsNL0bUXKXbFLUsR46ucf2N/nNLeCuZUMFMmk 6POg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279827; x=1762884627; 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=E9e8rf9e6LHkBiOZlGLaNm4D4EkbWbTfTmdYI52rOx4=; b=uiAZc7VfW6h8XGV/oxdOMaS6SYXV2cGFcGMc+UMhWUFhjgoxkyey9KV+H546FN/vu9 HYidTx1RgYh4Eo+WcpRNCPOiHLBEA9X+3l3pVjJoHc/DhOj41RLC2InxGkNVorLq31ZL 8HiaD+A6QuGc5lyvsCd9Iqul00+Uv2oZzxDie2JpDhaNj+rtCMTvMmT8z5yB1dLqu0zQ kWSWJkH2heSNQQszF3ZrH6yux2QZzw1jQZP2BOfo8G8+VboFnneLL44FSS2O3SpsUHa8 VdMWprqKxqJ8rpg5Iabe9Rm8vCz4J9ifUbTUAtzY/+sgqDAeJR2Kjwzm3LntIMxEVId2 qUOA== X-Forwarded-Encrypted: i=1; AJvYcCXZO5zpjwEcU5jFv+IeE1nw7T8Pz2H4nw0d3kAUjOeCqVVt5xCJIg+FcYU4J5wniN6GQA2LJh+KTrKrxts=@vger.kernel.org X-Gm-Message-State: AOJu0YyYXJ7uiytwIA3c2xbJD1QG08BBO6KyZWxLUQLOHL2IBdQ2s1vU 9kmq1kaue5Er7DrQoA3ArcvA+inPg2BtCM+RmLl8aR/YDcK5FEucoJF0 X-Gm-Gg: ASbGncuNoPahKJSsHvcofu43qtY2hsXUDoTqNoihZVsUGWDG1KmwWif+MUksY7i86Ds LYEQMMj4q1ku99p52arn8C/DrLorIhrfq9PAK8WXB4l7Ik8jotwJmV2qjHr0AMfLrIJC5YtG1O2 4eA8FmlX8F8Jby0FAQBMw0iiqGBjVihje/3/6C45Q9fWYVliBwsxs+xsDg8iH7q5GKodrS6voY5 CabFdQkmN/Yi7akZKrbrL5Wu10F8OJWYHbnfKS7ChnrW1v+U5zJxMOCuCd6KR07zVh6qxDwXmIK gqXH4FsXUXuh9dsGyjXCR2F1G/P/Tv58pfYBRhlNDl8zydHWKxBpQf0mcLYDGcIGEVcX6YwUFMk QDUZvNDdqSgNtXsOX+C7bm0mEJFCT1RIbLZbCTbysiASTlV+L+SP/BDNM7CaVqm+5bAlg02HW6H sFStqddgbcddLDPgcwmA== X-Google-Smtp-Source: AGHT+IELopkSWYIIl/VfNpl6r5Rq+Y8BoYl0VoNX5IZB/3eyJjkFq08R9m6g4B9BfaHixSE6+v7NTA== X-Received: by 2002:a05:600c:4f0d:b0:476:84e9:b571 with SMTP id 5b1f17b1804b1-4775cdc0ed2mr2735205e9.14.1762279827150; Tue, 04 Nov 2025 10:10:27 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:26 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 20/30] drm/sun4i: layers: Make regmap for layers configurable Date: Tue, 4 Nov 2025 19:09:32 +0100 Message-ID: <20251104180942.61538-21-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_mixer.c | 7 ++++-- drivers/gpu/drm/sun4i/sun8i_mixer.h | 1 + drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 12 ++++++---- drivers/gpu/drm/sun4i/sun8i_ui_layer.h | 1 + drivers/gpu/drm/sun4i/sun8i_ui_scaler.c | 16 ++++++------- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 22 ++++++++++-------- drivers/gpu/drm/sun4i/sun8i_vi_layer.h | 1 + drivers/gpu/drm/sun4i/sun8i_vi_scaler.c | 31 ++++++++++++------------- 8 files changed, 50 insertions(+), 41 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/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.2 From nobody Fri Dec 19 11:15:24 2025 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.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 33958345CC2 for ; Tue, 4 Nov 2025 18:10:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279832; cv=none; b=X6MEICn4oxNHIuoZRDIeOBUfLkQGMJR/YQz7HYwXlkfpaWmlm5t68oLAC+E27sA9IZ898F6rr7C/gxNdNdi+eqsSRZZC48GMGjzytokBtQvHj8f2Dz/JvZPaEvM8R+oi+8B4f0Doe4P1xEp8P+E7OdLLAmNnmKRwM8PugzahpcQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279832; c=relaxed/simple; bh=VFseA8+0asa6bmZbTX8OqhwqKLycWDdmZpgLOdy9Z7U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OV787sJSvIwV7SHzyH55Nl9zoRInECVMqXOJXS+O3vuErxiP/Y1rngeFQpkHNSN0aSKTjsTlDyxODcGSOY3EQ54KroJBCc9t1+1CzhAmyIejnqmRpCS/WV7SBZhPTEAUNZkaR5NMjliULqPC+OTCB6J1hcvxCNHGARAgkV0px9Y= 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=Q73Ul6rA; arc=none smtp.client-ip=209.85.128.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="Q73Ul6rA" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-47755a7652eso8492625e9.0 for ; Tue, 04 Nov 2025 10:10:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279828; x=1762884628; 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=uxUKDaL1Q7bL2awForB4PNE5HPywXNIJXgBLrPAkKJk=; b=Q73Ul6rAi7S0QSb9ABR2l3VDj0M2Chk0hkEjKKAlDz0EaC2cjzL+AI9wLK9zZjBFfY YtST4mBRlTFnZ3HPs9m3At2mCuBMoujLKfElwmGkRTFNYpQ54CLcqYP9+t1/+7dK0bMo TI0bWZwNqMgo2LwtsNNaVgw4NrIz6fW6pHSTPy7VN+s4xzI7+Q/8frrO7xU/qzeSiOkV Bl5OaaYpAr7SEo0LKUcJ4DZ191IF0vpZLA+vYJM+mafpV/cK1RNwPBUPV5HpVhooRP/c qLG5GMRXrYbRAeUqyen9sHgDPC71xS9ir+UNw0o1QHZswKyhKEwuvVQaUuGaiWjTn1N1 fy2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279828; x=1762884628; 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=uxUKDaL1Q7bL2awForB4PNE5HPywXNIJXgBLrPAkKJk=; b=YzO/2qbzSpzYCwoguNJ3Rbec3wlVjXZAKE0C52E85PkoGGCyWIuMKaymIXFDP6SEjR K2HLAnLMZK7npNtXu1ZQqTUMpcwi0Fmm9r3iuPj6DlWGO7mlFIu3GmJ/exuZ40BsFy65 2kyr4gQpbeMNVP7lsofKmRaScL8hUxsBpPr4+Fs7TdQG1bB8Hk6ZBDOUrAuGSM8iygBY vBgDfR/YCgN7zbM0O6DJ2L4WewBsB22ypY/hkRspbqngppdlu8H8dRphhbQQbzNiQX7V RdXziDNv8RRc31XeHeWJAK69TiWA4VEJWhe7G8x/al+fzXmiqsQWtwZT1b5+lBm8NH5s KeZg== X-Forwarded-Encrypted: i=1; AJvYcCVWuyXTTUFfODh9dRdHMAOY1+fj5fBbbUBeZXmJVfdmZUhGqQnTXIsYtiGuISBE0ucul6QhjCG4MtcLbF0=@vger.kernel.org X-Gm-Message-State: AOJu0YxExS9wmLKhZAvf5NN76302odVLid7u3r4d6mAbTFBOwY2QxJt8 T7M11WlVZ0xQ9AbrwUjnNOaZKJjKgJ63QlSmW3eFpaE/2S5d20dpeBxb X-Gm-Gg: ASbGncvQhr4QetDw0H9NLWH5quHOfeVTEToZqPEqRYJYhFOeRMFnAHsZe0sOmiUsft8 TC5B9YF5t1QPucfHenIuB/dKmog/wWV2aE5YTaqokdm3p21dKU9MMmPlQoWMh0y8XQxifuH/GXh JJvRNjllJslegXLMn69Wk5nJC6kXleOr/mxGOK9sBsbi742tA3TIuVOt65VarL0VR8J225QV0ih 46i49eCbtA/UnenXK9bcXvO/TGdkbupCFmIDolmgEGUtVNE0orgxMcgja79Ziclj590j7pBwX8I gpIDjBMMnUj4IVxF1tOjOiTTnBXj3QFJ/jUn3veMrYTlp+O5n6gZc2Sj6r61cHwoFY8SqMQX+/d TQcNFLwnYfRLma+KUX63YHP+h17OkdGUa75aU7lMs+M4mlVg2ejagHocjwlzmn2LrDSkE43s/NK SuQE/MhcjYvmXm+jKxw2ENM6/B0UMd X-Google-Smtp-Source: AGHT+IF5c8+mHZzz90mVXQjinbLLHXZDEwGQ66eyEvr+K8f4HxTWYfLZ4fwJ/Z+IpDrhmhZsMsoK/A== X-Received: by 2002:a05:600c:64cd:b0:475:d917:7218 with SMTP id 5b1f17b1804b1-4775ce7df88mr2080215e9.36.1762279828376; Tue, 04 Nov 2025 10:10:28 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:28 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 21/30] drm/sun4i: csc: use layer arg instead of mixer Date: Tue, 4 Nov 2025 19:09:33 +0100 Message-ID: <20251104180942.61538-22-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_csc.c | 10 +++++----- drivers/gpu/drm/sun4i/sun8i_csc.h | 4 ++-- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_csc.c b/drivers/gpu/drm/sun4i/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.2 From nobody Fri Dec 19 11:15:24 2025 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7946F345CD7 for ; Tue, 4 Nov 2025 18:10:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279833; cv=none; b=kNv2KCkGpr331aisTTKkZxCtkXySROjVfd/APdr+6vuEqQ9cz4A8lBRfoPEOnHQKsje28tDX+LfF36I1gtEitY2/m2KQhByqNgUNZ8169yCOoUP0m9leOUPKocpKd7wacbIVD5BgW6tWmjzJjhFfdjZqYg5k/MCsQQEoLd0wkPU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279833; c=relaxed/simple; bh=tLfdvt3kCCBnNflbYWB2jKViQDk0gZMYjhuWhiETf/w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GddLyYWrtJF8WGAi43KZrU8VDyCXEY+40Vg8g1VO/xlCbwqjbzYdnVQ3s83+nE3dtpUr1GOs1aY5usgIMqrHPnxp8F5w0yC2bUIGwSpY1o8v17CyNBZylO3WhzgYIdV3ZBhXu9bDdNGsELiCMw8KW7CSEk2rhjlS7hymir/OV9E= 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=hA2JEMtL; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hA2JEMtL" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-475ca9237c2so31864315e9.3 for ; Tue, 04 Nov 2025 10:10:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279830; x=1762884630; 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=M9/AMl4xgUVEiUmyMxeIjWVAIaeS72AyB+f50sJb9qk=; b=hA2JEMtLQ/o2N1f5F97giONwuiwRfGf6+4cFihenMDUHLbCfPcYrK9Li1oa/CpL6uB morgRhJ3kgbP8buHbcqP7lUpvTyoPRt6c5JySfa6ehuXpO5zgQ8vjoQxhIHQkTwRdhF4 nBju44NGuB5X3rF7eH7Jz748hsbbK62zUDFuQ9/DKIAPfxOu4u7voGmKbUGXRnt7h/dq kyK4YQiMyHTceZBtR2yMMxP043HbRw/9MqvMPAGu/wdlZX98MbV+T8baRQrykFlvfdpv 2zySGpyLkzYnxuM3v2I7wPNJaKNnv0eE1wCL5Met7kxZP7VkCp+mPIz/v2DfSPzB7JqC MCRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279830; x=1762884630; 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=M9/AMl4xgUVEiUmyMxeIjWVAIaeS72AyB+f50sJb9qk=; b=NuklVNz9mlbQSnyPufLNgW0DP6uSED25vapio+Gkj1xfjHNAb5MOCK48DxGiIn56Jt GiZTWmkdxmG6vtUJLeMbOHhkW8360daN2ae+4VKGak/v0P7SmBFpUe1fslRHs677KCVd hRQ2MdszXd8NtYKAAS7rMJtNjIXV4u80AuF6Cn+jnAuPuhz3C8neLLwpRs7Z0NnpvU3N BvgqFGQdLFohmunCPDrmRCiSL7Z2mpBs/Ivg11ON7ILMkg9vOlD+d6oBPQh0c20BjZQg +ezWld+xROlNmfsBH+WF/ZcHBtvvNcHwRknrkpFX8gk+V25uXeZUFeSvCX1OO/P5PMx9 LYAg== X-Forwarded-Encrypted: i=1; AJvYcCV1a6BTocR8oQ5Nspw2hvMEx7xRjdWcd8l0ndh++a5hR+ud+EGcx59YreRdSXG+3hMdxQniplZvQ2W0iNY=@vger.kernel.org X-Gm-Message-State: AOJu0YxyH7yD1PQWjSrz+QxqSCD2wKmx7f+sI8hXo60hgr1FgCH+10hu TKjbHJittP0Wiz0a28vsJvrRYSWD69wML3lvjZiMJSDDnZmusY0xNyKM X-Gm-Gg: ASbGnct26i6u2FghioQLfpe10IJh51lOl5DMXZtlRTInuL68sLcRFIQfJHxcBKB5ET7 aDfo88aE/RynPeabHyB3lh4a1iniyBi03SPOCk8LW8TvZTywzL5Ih/v0ZsTQWSKQGydjc1F4JNl uxRezgMulzRLSB5bk5ydQ7oQ9kV4gzIDg5I0TyYzy22Nd5NzlbxaKmE5yVfuEPT0I5moY2EfMG4 NKWAgP8BzPP5WKHDr98qWLJyS+qiRfSzyemZz6jaz3ETe7alWYwwFscw0af6ldrOs5j8tV4xLZy kfVth71ipo24i9H+XxUAZJDLlxe+C+QTVB1dhVHfU0KIFvHJi22kZgbacd3IEkS/pVqSj5+N+E4 mfWO3CWO7CCZnFJS/pUvtEsSZOtVYvz7ZGPJkBVCGTo6hbBVK4D9AWUdxEbiLxya9H49C7GYkxH HCTM5v7vEELYY5qdwUuQ== X-Google-Smtp-Source: AGHT+IE8pg2fqunzszYJMCpOfAsCZLtKqT6X6xX+b+FBqXNTS7M6/iDgmxVd2/hVTJsg7USbpjI7+w== X-Received: by 2002:a05:600c:5403:b0:477:54cd:201c with SMTP id 5b1f17b1804b1-4775cd9c25amr2654245e9.6.1762279829609; Tue, 04 Nov 2025 10:10:29 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:29 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 22/30] drm/sun4i: layers: add physical index arg Date: Tue, 4 Nov 2025 19:09:34 +0100 Message-ID: <20251104180942.61538-23-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_mixer.c | 17 +++++++++++++---- drivers/gpu/drm/sun4i/sun8i_mixer.h | 3 ++- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 5 +++-- drivers/gpu/drm/sun4i/sun8i_ui_layer.h | 2 +- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 5 +++-- drivers/gpu/drm/sun4i/sun8i_vi_layer.h | 2 +- 6 files changed, 23 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/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.2 From nobody Fri Dec 19 11:15:24 2025 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.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 D58893469EE for ; Tue, 4 Nov 2025 18:10:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279835; cv=none; b=YRpTQmabMhx2m5D0/84m4fDSlPSDsUymryr8Q+NO6aJBm5mlVIxac5EoGCUclXkKSAWbJ1yRcuQ1v5Dv4g9ZnZDeHRJR98hnJbEaci6w3jEUkUpYO6Vj6vV0GBA8dteyxmlcWs/uZHDGo/cA4WGqPoxMlrlyCx9c4lMj6mksIxQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279835; c=relaxed/simple; bh=KowVKeJ70bqoIp+99jXhG6SP3UVn0OWkvuzyT/VB0wo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NfAflqrZerDsBmYGob3yOfDtNo7RE84KdMbPC1JMm6V8vn8Sb3ijqXku6UV7FKHrPCwwIlTQUIg+s9BztQLPIMFOPpIGTxChGt98htpjSASJMa8W4J9eRMY10Fphnr7HDOO/FTNBcPYmfSeqIqk5eyDowDyNIV92EvyL+/QtMLk= 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=KMWUPJtG; arc=none smtp.client-ip=209.85.128.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="KMWUPJtG" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-47117f92e32so47880385e9.1 for ; Tue, 04 Nov 2025 10:10:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279831; x=1762884631; 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=hJ4iKgm80T4FXqrGlRaNuAcAySKRsjOyr7WXu8sKn/8=; b=KMWUPJtGciPNCShVBxdoTfrIGoRRCbUsQ9fpDYxvABQu/SXl/5SI6QBLx94zak7qxl UQPhPV5bHvKLQPhPNctl1rN+OvqMbYBQFtEV4y3GTUt6m3id67JYt/grjwJ/xNrj2SYz ZA+tsrVlQCSnOAVozqiuKrqF9HwE1D3JWIF837w6WMnqFer30j/GGRJJXJkk7aekXENF GHBMIda0Nd9zhtLZZcA7J+G3FQFPt/qPabE7n6PrSllwsGykniCt4RA+zJec+BZMTkNa a7+KQ1Haj69D7iiH+CNGjUK4scz3M9Rnv5axqj0poya742dPFKFUAtbGkBK+9TwQ6TyS DgkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279831; x=1762884631; 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=hJ4iKgm80T4FXqrGlRaNuAcAySKRsjOyr7WXu8sKn/8=; b=wKSTiUvooOcYr+6nbt8ZX3O5/I5y5wtOtBJ9iulu6DVcl2pweeFdPEGWy88H6qVUXp 7WEsYEtTVcpdOQKLd99Jg5eEghs4hE5ixeZ7m+C3WnzdFRN+ktHs03d/KGwQBcqNvZZC 55hHIK4PXKtkxdbtRM1XYQCIQoFRAyiyn5AJM7ERoXtIHNKwxHgTeEq1GPwv3vbvHjhp NhIvoizrF0kESEpqS0ziPbQKXUfrSsc8jD4o+6TkFGnU4dJNOw7GZatR1qz5e1rT1xWd S5H8s//BVLfhYSfTudn8npND94MS3wnob8A3xBhgUJNMlJR0AXhDoUwQE4pzfM4P3T/E ztOg== X-Forwarded-Encrypted: i=1; AJvYcCXIY0+0aq5kb00n76g6aXfcH4kbfgpw43k13Of9bmbjZMfGDU72x53NWCkHk423k1Gb0KMaQCZMt2gPYWg=@vger.kernel.org X-Gm-Message-State: AOJu0YzFyGX1Ja09fyz/mwljJEeDDnOyzo53MUYJyiWMtx+9R1nLkKky ngajX3s4gKsgsVG//4JFClxkM/pKNn43uJX5MHfb9qnqQ7nxPVgBvVS9 X-Gm-Gg: ASbGncujefOwHs0oTEwALbm4VyV1zcSRcyDfjZCM7alzSL2wtA9Eg00P4ZFJhyvGthY qiGZBRY5b46RyjjYMDmRr/Uxi7TNP8gt7zXqoSlMuF11JOMg9R23RkxEemwlK6je7kNtcl45Jo9 aOxV1+apNOLdU4tfN+vB3P1Q8f0Rfx2+Ebkm5rh9TBSx9kxJVwuh3HGFHwxnB581oyeMktnNP1V yi5J6A3XhL6RkdkpwVpatNKIUGcEQAPBs9MY2WWLSBD5/XIV/SRq5A4yQgtFUav0g+7PvsZTdxB SLn3GCTc1w2YvytcbBFQ2Ry9RXvoRsbLAVeRxTQgcIuBXPi0scxZStecYFVBtdKcaF6cflccU1P vMoOh0Ag73hwuYh0CAIhhaN8w2woOALYg/jjm6vFBcT3hk819RmqWDGSYQdawN5s/4CG6vNI4km /2ObFgtuayUghWV95nO39gwkTF5T0y X-Google-Smtp-Source: AGHT+IHkpIC3aSMOHY0XvNH+UoXWk3HEri1Jf6ytHO5K5mDJ0+pJHIyqN7z61F+ww/rx9c/Kck19GA== X-Received: by 2002:a05:600d:8381:b0:46e:376c:b1f0 with SMTP id 5b1f17b1804b1-4775ce9bc74mr1190495e9.7.1762279830853; Tue, 04 Nov 2025 10:10:30 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:30 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 23/30] drm/sun4i: vi_scaler: Update DE33 base calculation Date: Tue, 4 Nov 2025 19:09:35 +0100 Message-ID: <20251104180942.61538-24-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_vi_scaler.c | 3 ++- drivers/gpu/drm/sun4i/sun8i_vi_scaler.h | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_scaler.c b/drivers/gpu/drm/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.2 From nobody Fri Dec 19 11:15:24 2025 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DBCCA346E7D for ; Tue, 4 Nov 2025 18:10:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279837; cv=none; b=P4ecrBIZVzFdrRS81HlcgvAB6QwsWHcAArGg5yJ3Gp8f2bKzKXst14vKr28enoVguFifK7+c0NthEVN6iArGL7MKMyPUXno8xJgvLtPZ97zf9RTd4BAlXp4sW/2CSq5to8Z2CS2UVo+3YkBEK5kWzkkK1GXo8E1QpUCkDm2eZ6E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279837; c=relaxed/simple; bh=kPiLeYIsEiImYjtRwjEv/BEoeWdW4RbU08GWQ9yKjcE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LejJibaVhNygiiUQAGnTPfy38gnZCisy2G1ohn9GTeE35x7oFKqawBiLrXHoTyexxqtUqoVfWl0xckZ2b+nHkjkIpBB9/E6QkNiTXg6g0oWpHzERuPfhdfskFPGXy4fmAaDP7Z8uS/BSKD0JMCJNJsl/As4ZwO6LWokUXBAqJ64= 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=AFY2ijT9; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="AFY2ijT9" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-475dae5d473so7380315e9.2 for ; Tue, 04 Nov 2025 10:10:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279832; x=1762884632; 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=ie7hWDcTxuQcquWuqifGQoLXnJlmFfjHvsfXK9+oj4E=; b=AFY2ijT9VSYKl0Iz3i9cwm8+/sRyGi3F2QHjlheICJxWKDyvla7GKJaoA8Uhd2t8pD MB/ND7RrXIiV6IR8F5MvWkj7DaTIg+W7vpvhZBbOZ6IIUaja+IElqrDCmHd2uye5G1tw 6yGfsviQm+Jr12wMdppFfqQP9kPiby/Nal4dkPSzS+/yHDz2OdACE1mCwVevVrhnYN0M r4Z6YXs/s5zYnA1R7GXc2ltWYK2w/cZLe6qvmxBOucyi6gTjSiq5ZL+M2zRaVecc0UHc SkQy2Dnr54LlHiwS/BQo1axJ6nODaP0Pwd+cnOYtqM0MzihcZMyvXCdYdJkaQLQPPSDG X8Fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279832; x=1762884632; 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=ie7hWDcTxuQcquWuqifGQoLXnJlmFfjHvsfXK9+oj4E=; b=INqKM7yK+EZnwT+ifyp/SrpsEHnDZZGIH3lQmUHfFxwwy9PmOok6O0Yp44Mjhwm8/l WG2cTgnS6rqsB4lDa9btK5dQLC+uzjwenzERassbTtrvXiTYdJQy09wVsXCXdt2YsToo Uu4rCXXLz/+Bl6GqmeHTNgcbY6kEp/5+JSo0Pza1EspsqxwMyetsSq1VEz/Qz9x8H4wJ Fw/ExRXDQ4FQwHEgEJTDHggYkqwvqydGlVxciJgv7ayd6HcgtpoBW62wFnhoR7XvOPuy qsRv5oG27PQasFmxOF1jwmHK+v/hME/N1PnqH0cilew5sRPitwzQZdTk8+eX1NBzwTTd 7GRw== X-Forwarded-Encrypted: i=1; AJvYcCVQMPZZ+23roE1LMr94SqHYOyOnqUMTJol1VV80S7GBBSXZ8PeZM6b2HouXpIwT5VpEaQz8rBAnXwc5N3I=@vger.kernel.org X-Gm-Message-State: AOJu0Yz1hnXvgrY/7PTkcmc9kMESkfWUHhHabj6cXJcaatgu05L2709/ I0xUycOsKwNyYuRQbRslxeI7zjJWB//LA3xiFhWJys9Wvc6jsZhNeQwU X-Gm-Gg: ASbGnctsrx178vLn942vSxfKqNrAwrp36YkPEoyafQyt38TFvGaWeR2MKFBkAe+r2Zl JhdRXAmb4Xdqu1/o439pln81RqkzWWD2qqv/d8RYD2ucKfpdF8mNNS6CADzG22+Z/LAL+Ym6rRP AV1dC3ajPem5TFv0pY6rveBKhdhZRyBQi1YtVazUQThvKgDq7AR4EzWs2oXWNtBChn2NuGL18kO yHe3UbwtfCk6CQkj+yOzs0fMwQF52rKsRFBne58EZiYyUd3YTAmf9mPppoBlupMEuXCKB07vVie 7EfwayD3Zt6eaTMV8L8fUZFauQ8OMPcC57gLz/duJrsKOQeRhyxJQyIQvL87vVhmX7EmiUcbj3I JUvOqdgqoDAu+Jk6dyhRw8htyh30DQx70f4z4/AcUDL7E7OXh8EqRTXzqvys0iXkoC0gaaa2kpS fqpp8LiqGDKu89sRowXg== X-Google-Smtp-Source: AGHT+IEWn71DBw19df7j5vHe6/KdNSpZp9M6RzMXn87h8SZBHIPpRNzHDnrglGnelBkuvtMKpO/7HQ== X-Received: by 2002:a05:600c:a00a:b0:475:d7b7:580c with SMTP id 5b1f17b1804b1-4775cdbfademr2635395e9.12.1762279832100; Tue, 04 Nov 2025 10:10:32 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:31 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 24/30] drm/sun4i: mixer: Convert heuristics to quirk Date: Tue, 4 Nov 2025 19:09:36 +0100 Message-ID: <20251104180942.61538-25-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. While order is slightly changed, it doesn't affect anything due to double buffering of registers. New order keeps related registers together and quirk separate. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- Changes in v2: - updated commit message 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.2 From nobody Fri Dec 19 11:15:24 2025 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1F552345CA1 for ; Tue, 4 Nov 2025 18:10:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279837; cv=none; b=RAxKHXLzX4G9082kbsI4NH/CB0Cw6yj/g3Q+wKx2A0fuYUITxuvLeQpKXeZIdgab0BazAqIyHMc9ScrBlkQ/wAes6ULdL5dQZ+pKCW7hq7GxGefoSc+NgwRshkUsXYlN9zdGFesybl1aXuw9gt7OcTZosjdYNl7aaZx7WaMYGcQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279837; c=relaxed/simple; bh=ye213JbTqvKJ7OHw/ZpY6LCcPpjvObWagFZelGOjlaY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=d1XXeO0f3Z1sB1k25jMvjH5O5HFdrjFGX9YTMQo3lAD/PNQ3/usrxKOdQydBA2Uto7WF3o7be/HJ4NTZ9ayYISoHs2t5u6hIVuarkAsTs6qF7tezIcas4+suPDMGRX051qR6HzCBF8UpwgOU9nTu5j9Ad3BudpwmEufoVEmrnT8= 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=Uyj6uhan; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Uyj6uhan" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-47117f92e32so47880735e9.1 for ; Tue, 04 Nov 2025 10:10:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279833; x=1762884633; 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=mMq6+f8w/XMhRL94h1i6thbehjh3w3EiU9h31KM0Dlo=; b=Uyj6uhan9cgaJDyACAV7CwFe2fVKxndysy+MmVMaZXUqAztbMMcS0kTZRUt1dYsdov MKGQsWGk6rGUTv2mVjdx+EGcd1f0352P6uAfZKoza5zzZBOjG5y6rv9BlKx+rrsUtZRr QJf0DbvEnTwpoh6hRiL/UqbfpUdEKVOJAiqj83dSDgxjzH0aHQDsvyHkHs9YETQOk/J8 gIXlz6VcNYH8yKy6CuGOLJgZdTdsBrnLMK58ARdks0C/AC61K6/6gNeg0cErjDStEEj9 ZjsH8b7MtDODcg+wur97/ijJvZlShIQSQnzOMffS6y2vsMYbmF7hN33Hw+yusLv7PEMa fV4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279833; x=1762884633; 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=mMq6+f8w/XMhRL94h1i6thbehjh3w3EiU9h31KM0Dlo=; b=fA8ISWOzlgPAbl4NT+3U4X81GXl7pmDbvmeSYO6ibTTXGVcd1HwlCS1LbvttigLnOd ok+9lwo3n02l946IzZSBP0i+G1MWSGY5q+4t1TsV10ONrE6aZ8tadq+sLWFY7kNi1PDH xwHa8MprSZE5oTG7+AeaxtrMvmh2+elLVx2aAuWdxD8xugUWC7kqN8JcUR/o9y1CFpWD k/1tkTVl/xYs15siagWrBZSr6ncKb8/dQCoB082SJ/b8QUFucqXsj3BP4dlc692ZHTMX lBxj6bb4qkt3f5msCEBQQIdW8XSMZ7bqCCr2VMoQMF//fCCQo7/w7qorfqdKW90ekqtM KO9A== X-Forwarded-Encrypted: i=1; AJvYcCWXA6ON3QUYHe+/g2LZjEa0Q5sc3cnYiEwSdPAWRj/+cpvU/9knSflckgQHvwd1FM1Zt66dkRR+Wh5Qq+U=@vger.kernel.org X-Gm-Message-State: AOJu0Yy3pZQiopy+AM0ZZd8Ia/WECQu0DMLG5gOVju6ufslO3Pu9MFaI lfcGZQwcJbAd9ek1EPCCyYwwSACeCY9jP0Ui75w+Jk0GCKVm6cGe41jc X-Gm-Gg: ASbGncsk5dHeJExVuSlWWnOl9KH68flVT6loqMEuTzUBAoBJV0+CL/tpgRSYxd5tmTu uMu73w7BB5mSJGoSQCPU2FRw48NsrYykmchvm/e3nA8FEx/LwuXBb5ak7fiZS3PIQr6z4Z1b2xh LAwtnNvGL5oMtafjVLrQjZyng+dq31C5/UuusEV7bVr2pRGwdznQvPnkjMLAhisvn+4KxM8pvhd B343zwGiQYG5P08sDa6qx/Yv6qBi0CAUyWL9pPs4tj2SS5tEMoL/ZUR4iQMnCElj3/BaTrt0zms yi+C11/aL9feRcSFVyJYXSymMSLpWjQaXPGnT8xHMz2iLmF9Abej20zv6t/oo9ck1rfY3ylW+eK yg0cWYHTu52r2gvLzlWrXR7RippukToOD9aBRy4yyHXNFLSQ2r843/m98qw7gYy70GoRqgtO91+ H28ljlyqm97A+qwxoRCA== X-Google-Smtp-Source: AGHT+IGAou+/VWjl/+havcgVpIaUje7S46iuTOTBDTJA+e9THTDoYyFzTPWTWOtjQVDGfLuUQylUOg== X-Received: by 2002:a05:600c:1e1e:b0:476:6ef6:e28c with SMTP id 5b1f17b1804b1-4775ce23c7amr2190455e9.38.1762279833261; Tue, 04 Nov 2025 10:10:33 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:32 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 25/30] drm/sun4i: ui_scaler: drop sanity checks Date: Tue, 4 Nov 2025 19:09:37 +0100 Message-ID: <20251104180942.61538-26-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_ui_scaler.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_scaler.c b/drivers/gpu/drm/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.2 From nobody Fri Dec 19 11:15:24 2025 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6B9E5347BAD for ; Tue, 4 Nov 2025 18:10:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279838; cv=none; b=K3Kzisa2utiaB+YyRw2GSjYxmWbrTxzLk0Xa7q2Zshafoy5OpwBWkzN5afzfa0gQe6c3pD2u2Usn4iYA9D0+QIBrf0nj0kEZ0F3QwFSPjnJvJ6QBvtHcjkXBjf5r0iM36RfKZmpBiFr9wn4R6ADbPXLDZjzzK0HgS3729XeEOhY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279838; c=relaxed/simple; bh=a6SqoW324qMegk6wjIIg/gIMshOekSORsRcCSwVN+8c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MQUXSSIJbgRKnpihA2oOXRxM55RE23ScKj1q02UURhmmHKz2d2XKIvxr99+T3CkpnqNwD3/+tSt9dyFrsaRAGudXeEbCsCSx+YEQR1QQU7V6CX7QX9UHeQl/LIlp5xKYzdZ2YWfPnDiWWH2aMX4tfp9A6Hx6UtvgTI1IUD2Im8I= 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=GIENusjI; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="GIENusjI" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-471b80b994bso75237965e9.3 for ; Tue, 04 Nov 2025 10:10:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279835; x=1762884635; 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=ejkL8TsFG1o5XiPy9Gcy/NzA7/ogTbLjmhfX6D7QHow=; b=GIENusjIToH3eW6/jp88eC0Y42Oxmpp9uCBrZDarK1uc+TLFBeY59zPF4OoMoyBU4C 1dzeaj5hPUk5uvXN/JNKxoJOMF5NxaEo65hiZK83jUiKEf73OjhmzR+ZN1Sbo54hW4li jGQhy+RJ5O1Lj7K6pEAxaoueV5kzofIvjQMcRZvr5buXX+ky1ZnfevHA+ctm2wumY8ww p53PaKyEQ8YSTp/rVZ+bcb2rVThKNdqiWAeKIwTViW0Hv4Z1nLmgwUnFk+/J8pVSRpWm CZcpLwEoFPdbC2hV/vcNTxTTnPxIMcJIFhbVGTQLeNjbOG6GlIIkrmbo+fIuXewYI6od xh7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279835; x=1762884635; 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=ejkL8TsFG1o5XiPy9Gcy/NzA7/ogTbLjmhfX6D7QHow=; b=atDlR43tBCxnGTIKIsIHyMuZMvzxV+dxRoThKMaccF8UEO6Dq6nL5+VoTfOvV1Zyvw IIzwl7XSEzabLq6pKURGm4Yaym/i1waNwqe7+qv4VE6vk8cFnVnNCmUZduMjdzr1vBZr sF7Q346CNa0J8lwLdXKQ+pMbP9GKBUA92AWQF7MsTTzqhPsXJSQv+UrPWFR+XKEgsvwC ZZpmLQZlz/a0sEXUMEAyZnUAE7vYATaYEmEs6oPj539PRNMGoTCy6vFkeGnTFXOVkBfD 5JRQNASEDmsH99jysJUEdwxDZ0zZLpu9mHxxv8ejzdP20zn0ECjwU9gY9ArvlRjPfzRh aOSQ== X-Forwarded-Encrypted: i=1; AJvYcCX7n/KEMrFjAIznU+XjzwB+m2tjVNU65ZvGuf+w1+OvPBjr5ooCE6CscLPOtpEaznWqds6trDjY3p++nS0=@vger.kernel.org X-Gm-Message-State: AOJu0YwEa5LJIEFytRhMmJXJbfgg98p3VdoRWXQyPPpsGUYXCyEuS1fj 4tTg7+zTowvM1G3Fn7TDo2wczK0DfF0QK3P5SKaQOnX3MDtC5dycoqVX X-Gm-Gg: ASbGnctsKK/IMHvh8vkyAH1pp6Bp0lTNjaiss5KQy01ZYyYtKUs6bzjRLvRUYPupBMh XJS81fXCQ8sLpllVxj1L4DTHLmeRLTpBXBjcm8isV2S4bAcLI0YbGdZUNtvTByOZM6+XvPPkflD tKYfkLuUEpI3k0C9b1Yklg/eRhvRxh51OQN7m6S/UZKLDR+2ZejMQ6gqj98jkt0AmXs2kVtyDdi Z/kty2u4PdOvZBnNn3UNPDh3IPBWuWic7va3iDkmvTHns9w45A4UTL0srXWrhXTI0uoJdQaCeaU 3aZYMleeER/H3sbaSFOaX0hfXkK8kuFqKvJhuHlMMTpffYA51ey3yvu2GwcbJktpS55PZl6/Eyv cNqnPZhX5OZMOn8SBQtKn4czpC+rk6kGkfDsFSnj2x+S0I0hsuDo9FjTlH6DAj3Fuy9YiTrWUS5 AgXjW+p9Jtsm2ukns0Mw== X-Google-Smtp-Source: AGHT+IGULxezyFxQaS+IhExoUiRMdNFxErCJ8jQuxzUcsuWhQgiYwKFm3qElEomNCT+mnTz7K/5UIQ== X-Received: by 2002:a05:600c:5488:b0:45b:9a46:69e9 with SMTP id 5b1f17b1804b1-4775ce14dd0mr2937075e9.31.1762279834562; Tue, 04 Nov 2025 10:10:34 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:34 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 26/30] drm/sun4i: mixer: Add quirk for number of VI scalers Date: Tue, 4 Nov 2025 19:09:38 +0100 Message-ID: <20251104180942.61538-27-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- Changes in v2: - switched position of vi_scaler_num quirk 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..da3148f42646 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -705,6 +705,7 @@ static void sun8i_mixer_remove(struct platform_device *= pdev) static const struct sun8i_mixer_cfg sun8i_a83t_mixer0_cfg =3D { .ccsc =3D CCSC_MIXER0_LAYOUT, .de_type =3D SUN8I_MIXER_DE2, + .vi_scaler_num =3D 1, .scaler_mask =3D 0xf, .scanline_yuv =3D 2048, .de2_fcc_alpha =3D 1, @@ -715,6 +716,7 @@ static const struct sun8i_mixer_cfg sun8i_a83t_mixer0_c= fg =3D { static const struct sun8i_mixer_cfg sun8i_a83t_mixer1_cfg =3D { .ccsc =3D CCSC_MIXER1_LAYOUT, .de_type =3D SUN8I_MIXER_DE2, + .vi_scaler_num =3D 1, .scaler_mask =3D 0x3, .scanline_yuv =3D 2048, .de2_fcc_alpha =3D 1, @@ -726,6 +728,7 @@ static const struct sun8i_mixer_cfg sun8i_h3_mixer0_cfg= =3D { .ccsc =3D CCSC_MIXER0_LAYOUT, .de_type =3D SUN8I_MIXER_DE2, .mod_rate =3D 432000000, + .vi_scaler_num =3D 1, .scaler_mask =3D 0xf, .scanline_yuv =3D 2048, .de2_fcc_alpha =3D 1, @@ -737,6 +740,7 @@ static const struct sun8i_mixer_cfg sun8i_r40_mixer0_cf= g =3D { .ccsc =3D CCSC_MIXER0_LAYOUT, .de_type =3D SUN8I_MIXER_DE2, .mod_rate =3D 297000000, + .vi_scaler_num =3D 1, .scaler_mask =3D 0xf, .scanline_yuv =3D 2048, .de2_fcc_alpha =3D 1, @@ -748,6 +752,7 @@ static const struct sun8i_mixer_cfg sun8i_r40_mixer1_cf= g =3D { .ccsc =3D CCSC_MIXER1_LAYOUT, .de_type =3D SUN8I_MIXER_DE2, .mod_rate =3D 297000000, + .vi_scaler_num =3D 1, .scaler_mask =3D 0x3, .scanline_yuv =3D 2048, .de2_fcc_alpha =3D 1, @@ -759,6 +764,7 @@ 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, + .vi_scaler_num =3D 2, .scaler_mask =3D 0x3, .scanline_yuv =3D 2048, .ccsc =3D CCSC_MIXER0_LAYOUT, @@ -769,6 +775,7 @@ static const struct sun8i_mixer_cfg sun20i_d1_mixer0_cf= g =3D { .ccsc =3D CCSC_D1_MIXER0_LAYOUT, .de_type =3D SUN8I_MIXER_DE2, .mod_rate =3D 297000000, + .vi_scaler_num =3D 1, .scaler_mask =3D 0x3, .scanline_yuv =3D 2048, .de2_fcc_alpha =3D 1, @@ -780,6 +787,7 @@ static const struct sun8i_mixer_cfg sun20i_d1_mixer1_cf= g =3D { .ccsc =3D CCSC_MIXER1_LAYOUT, .de_type =3D SUN8I_MIXER_DE2, .mod_rate =3D 297000000, + .vi_scaler_num =3D 1, .scaler_mask =3D 0x1, .scanline_yuv =3D 1024, .de2_fcc_alpha =3D 1, @@ -791,6 +799,7 @@ static const struct sun8i_mixer_cfg sun50i_a64_mixer0_c= fg =3D { .ccsc =3D CCSC_MIXER0_LAYOUT, .de_type =3D SUN8I_MIXER_DE2, .mod_rate =3D 297000000, + .vi_scaler_num =3D 1, .scaler_mask =3D 0xf, .scanline_yuv =3D 4096, .de2_fcc_alpha =3D 1, @@ -802,6 +811,7 @@ static const struct sun8i_mixer_cfg sun50i_a64_mixer1_c= fg =3D { .ccsc =3D CCSC_MIXER1_LAYOUT, .de_type =3D SUN8I_MIXER_DE2, .mod_rate =3D 297000000, + .vi_scaler_num =3D 1, .scaler_mask =3D 0x3, .scanline_yuv =3D 2048, .de2_fcc_alpha =3D 1, @@ -812,6 +822,7 @@ static const struct sun8i_mixer_cfg sun50i_a64_mixer1_c= fg =3D { static const struct sun8i_mixer_cfg sun50i_h6_mixer0_cfg =3D { .de_type =3D SUN8I_MIXER_DE3, .mod_rate =3D 600000000, + .vi_scaler_num =3D 1, .scaler_mask =3D 0xf, .scanline_yuv =3D 4096, .ui_num =3D 3, diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.h b/drivers/gpu/drm/sun4i/su= n8i_mixer.h index def07afd37e1..8c2e8005fc5b 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.h +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.h @@ -167,6 +167,7 @@ enum sun8i_mixer_type { * struct sun8i_mixer_cfg - mixer HW configuration * @vi_num: number of VI channels * @ui_num: number of UI channels + * @vi_scaler_num: Number of VI scalers. Used on DE2 and DE3. * @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 @@ -183,6 +184,7 @@ enum sun8i_mixer_type { struct sun8i_mixer_cfg { int vi_num; int ui_num; + unsigned int vi_scaler_num; int scaler_mask; int ccsc; unsigned long mod_rate; 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.2 From nobody Fri Dec 19 11:15:24 2025 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EC383347FCD for ; Tue, 4 Nov 2025 18:10:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279840; cv=none; b=fF1G7sT9qc6ezn0UYPMK/kszlHXpr7KRtcgUKxUB0T5eURoe8t36oe62nycCUhqL59bbGh7rQ/WfcQiQ/1+Mi4MJqHbLdQR/Qdk/veWsWFqUew6Y/qtssk+ZIC40KUbxd9Xd4OiUj8w9xzduCKb+1pbxfdDPXQ/Uapb6WoIWwaU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279840; c=relaxed/simple; bh=I/Hk0/PHLO8sCGFPEQw+OU4WzVurFU0CE21OKjEm/Lw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PPSAtfoS4x0VXGkq6P0uHlQIgI5eXLNwjhifGKS1r1195jqty3TXAhm3yePPixEXIWOlZXtysikVIHh64iDqKUSRmL/3MZ51Isb8JMZkIzEZWBfInUcRM5s+FGPBps9GljCC+WEdu2L9AFmTMyUj0SaHbjTX5RcpxpY5lw+7bA8= 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=gRogZ4Gl; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="gRogZ4Gl" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-475dd559b0bso78257975e9.1 for ; Tue, 04 Nov 2025 10:10:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279836; x=1762884636; 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=oZvB8XQL4XH/MG4JrDvft0iLE7MCAIYhxytBa3l55Ko=; b=gRogZ4Glf7DPPnHj1bDggoee5c/9CZMQRL2iR5Z6xqKd4o+whnrMAUiZ7Z4fbgus8t 07pgPi0bq6sJvhbmGqSBzf7x+qYWMDDuuw2Jfxir0MlWr2UftutJmFTUBjOZMn4a+Zon FH5Ud21vLUGTIrmHerR8lkLjEeZGqq8whvg0FJ2otCUOtToAJx5c7kq8GYMPkoOCwmab 67rOCm7i0NfHsmWmYC6KjshkNM5zoLLypoDTmn/0Pc6R5+GJIh1XgzcuFswIo7t7S3Jj YvB1yHN5PHhY5cv0NJt7nM5Yw8azkJdyBQ0QmaGPjx2YiNtiuL/aLN3AOYb28ifCRnXz Yy6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279836; x=1762884636; 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=oZvB8XQL4XH/MG4JrDvft0iLE7MCAIYhxytBa3l55Ko=; b=rmLFxy5Gb3vYafx+uVctKu9sfZowBzmg+/REplbhCkeTtQL2i/4j+ExFKkMEsViuco LrILjvCuBRJKb80IMqahRIZJ3njUGzhdzkFoGMZw3kPUk4cIaiWgF6GrzlJgzuwK2Lvz aXbPQD5E2S5IV3K84zPcCbzyVmimNBpr/zNaMF9p8lL+zSEgBk869+/ZB2uJhsdezxD1 MilB85CKdSVidRZE+Lws+VT6fWrPReANSNqNIfP8g6JyO1KOr2ywK/cMWJDcJWwqdyZq Rp7lSfCT+2uSK5KsAB5zr9uwPixeIpnVRGeJNY/6PIFkWnCv80vlhR9CkcH0D3M56kHx VsGQ== X-Forwarded-Encrypted: i=1; AJvYcCVJCFDs3jaZphC2RdXAke67dBYv1qP1QxG51PjJSuevu9/PCfhR+S3Id+Z2+ri09HvAjo8+6zKFLuBLAsY=@vger.kernel.org X-Gm-Message-State: AOJu0Yw4Q0oNT1jS3+iVgFiwfkEGwG0/XYMQGlB8TyVeYs9VNK74424/ c5P6pRaNf+pi0LY4PbyWTwy/kVY385dlMOUZY4v5W7dNOgnYjPlqXy0Z X-Gm-Gg: ASbGnct+pNRrEIKiEO5hHzRA8vjb2YC5lS33Ta7BmBhMlGQj8y8ZcRatYN5V6nBDs1I dpH7N6v6LXSqaCA8NtXsj9McYj9DysJgYxDeUcHa0FrEZtuTlPWgFRXXPL4pYb+NsF3KiL5YpOo xCYSlcf5rI7kcmeEbBVkWtGrA2mN6qHrpA9XU6e9GMtvAu8brm7G4ZaIHAoFnsyWI9DbKIiJLrm 2+W2lmcPzzd/iQlM3hCXegN6xxJMNTryKqbxpqAQyNuRSUhcSIjyI7fEPll2fiRJ12rLTjAMFoq d1W6+Ti53bmYvoxXqOZ0FhexXxfQa54++V9ukDYMroCEMAbLsjIroy2c42qSagVWywJIzZPVDkH k5PFjBcut8GdA65q20vbb9S4xMUG5n0uYojo9Gt+3Td8csHWjJHyiGDDEPPkMeSnFkKrcvgBuh4 moMbUUi+SF5YPjN6ocUATfcS3ETpWG X-Google-Smtp-Source: AGHT+IGmzxfk1x8fnehx5VWjAyq7IZc2z//0VTUwWlUQBtF4GSFWekOx3YeV0AJtLvY7p2RmMGNybQ== X-Received: by 2002:a05:600c:3110:b0:46e:7247:cbc0 with SMTP id 5b1f17b1804b1-4775cdcfb32mr2222405e9.18.1762279835799; Tue, 04 Nov 2025 10:10:35 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:35 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 27/30] drm/sun4i: mixer: split out layer config Date: Tue, 4 Nov 2025 19:09:39 +0100 Message-ID: <20251104180942.61538-28-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- Changes in v2: - added missing .de_type kerneldoc drivers/gpu/drm/sun4i/sun8i_csc.c | 2 +- drivers/gpu/drm/sun4i/sun8i_mixer.c | 152 +++++++++++++++--------- drivers/gpu/drm/sun4i/sun8i_mixer.h | 33 +++-- 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, 123 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 da3148f42646..4559e959a32d 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, + .vi_scaler_num =3D 1, + .scaler_mask =3D 0xf, + .scanline_yuv =3D 2048, + .de2_fcc_alpha =3D 1, + }, .de_type =3D SUN8I_MIXER_DE2, - .vi_scaler_num =3D 1, - .scaler_mask =3D 0xf, - .scanline_yuv =3D 2048, - .de2_fcc_alpha =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, + .vi_scaler_num =3D 1, + .scaler_mask =3D 0x3, + .scanline_yuv =3D 2048, + .de2_fcc_alpha =3D 1, + }, .de_type =3D SUN8I_MIXER_DE2, - .vi_scaler_num =3D 1, - .scaler_mask =3D 0x3, - .scanline_yuv =3D 2048, - .de2_fcc_alpha =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, + .vi_scaler_num =3D 1, + .scaler_mask =3D 0xf, + .scanline_yuv =3D 2048, + .de2_fcc_alpha =3D 1, + }, .de_type =3D SUN8I_MIXER_DE2, .mod_rate =3D 432000000, - .vi_scaler_num =3D 1, - .scaler_mask =3D 0xf, - .scanline_yuv =3D 2048, - .de2_fcc_alpha =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, + .vi_scaler_num =3D 1, + .scaler_mask =3D 0xf, + .scanline_yuv =3D 2048, + .de2_fcc_alpha =3D 1, + }, .de_type =3D SUN8I_MIXER_DE2, .mod_rate =3D 297000000, - .vi_scaler_num =3D 1, - .scaler_mask =3D 0xf, - .scanline_yuv =3D 2048, - .de2_fcc_alpha =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, + .vi_scaler_num =3D 1, + .scaler_mask =3D 0x3, + .scanline_yuv =3D 2048, + .de2_fcc_alpha =3D 1, + }, .de_type =3D SUN8I_MIXER_DE2, .mod_rate =3D 297000000, - .vi_scaler_num =3D 1, - .scaler_mask =3D 0x3, - .scanline_yuv =3D 2048, - .de2_fcc_alpha =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, - .vi_scaler_num =3D 2, - .scaler_mask =3D 0x3, - .scanline_yuv =3D 2048, - .ccsc =3D CCSC_MIXER0_LAYOUT, - .mod_rate =3D 150000000, + .lay_cfg =3D { + .ccsc =3D CCSC_MIXER0_LAYOUT, + .de_type =3D SUN8I_MIXER_DE2, + .vi_scaler_num =3D 2, + .scaler_mask =3D 0x3, + .scanline_yuv =3D 2048, + }, + .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, + .vi_scaler_num =3D 1, + .scaler_mask =3D 0x3, + .scanline_yuv =3D 2048, + .de2_fcc_alpha =3D 1, + }, .de_type =3D SUN8I_MIXER_DE2, .mod_rate =3D 297000000, - .vi_scaler_num =3D 1, - .scaler_mask =3D 0x3, - .scanline_yuv =3D 2048, - .de2_fcc_alpha =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, + .vi_scaler_num =3D 1, + .scaler_mask =3D 0x1, + .scanline_yuv =3D 1024, + .de2_fcc_alpha =3D 1, + }, .de_type =3D SUN8I_MIXER_DE2, .mod_rate =3D 297000000, - .vi_scaler_num =3D 1, - .scaler_mask =3D 0x1, - .scanline_yuv =3D 1024, - .de2_fcc_alpha =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, + .vi_scaler_num =3D 1, + .scaler_mask =3D 0xf, + .scanline_yuv =3D 4096, + .de2_fcc_alpha =3D 1, + }, .de_type =3D SUN8I_MIXER_DE2, .mod_rate =3D 297000000, - .vi_scaler_num =3D 1, - .scaler_mask =3D 0xf, - .scanline_yuv =3D 4096, - .de2_fcc_alpha =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, + .vi_scaler_num =3D 1, + .scaler_mask =3D 0x3, + .scanline_yuv =3D 2048, + .de2_fcc_alpha =3D 1, + }, .de_type =3D SUN8I_MIXER_DE2, .mod_rate =3D 297000000, - .vi_scaler_num =3D 1, - .scaler_mask =3D 0x3, - .scanline_yuv =3D 2048, - .de2_fcc_alpha =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, + .vi_scaler_num =3D 1, + .scaler_mask =3D 0xf, + .scanline_yuv =3D 4096, + }, .de_type =3D SUN8I_MIXER_DE3, .mod_rate =3D 600000000, - .vi_scaler_num =3D 1, - .scaler_mask =3D 0xf, - .scanline_yuv =3D 4096, .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 8c2e8005fc5b..5b6068755ad1 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.h +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.h @@ -164,34 +164,45 @@ 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 * @vi_scaler_num: Number of VI scalers. Used on DE2 and DE3. * @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. - * @map: channel map for DE variants processing YUV separately (DE33) */ -struct sun8i_mixer_cfg { - int vi_num; - int ui_num; +struct sun8i_layer_cfg { unsigned int vi_scaler_num; 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 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 + * @de_type: sun8i_mixer_type enum representing the display engine generat= ion. + * @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.2 From nobody Fri Dec 19 11:15:24 2025 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1B08133F38D for ; Tue, 4 Nov 2025 18:10:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279842; cv=none; b=OeUZ8kQWqeBNWFuATP/SxfbjlKT9bY3rbBIMRjagCucz12NO/LoV6WvJqqA++AJutE5gy6corS5W7Kpv27obI8eoMWtXlPrVd5OTyIcAg3Ncxa10FPhsHxSpBVsxNct/NFpalLf2MCUbgt/oo7SyJkSkQsF6CvrXy/3ecaLNruo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279842; c=relaxed/simple; bh=AwNsBEXtld8Vm9hp9BoKpLqlKkVlUZll6jhZVMKLZHA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FhjYbL/z72B/ye90xmikbJtmfvwMgl87aqK1FNk4YfSpMWQjV9Dhk965rzzZugzq933ziMOl5XcqfSTBT1gr+hsam6+QcVAgLWS8WU5FhFnBLXftx01V/DPyl0AzcrjgWVZfV73FwTmXAvbQD+YwcY/l5ZwRhD6DzhE7cE4nJrQ= 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=fQQoc4gK; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fQQoc4gK" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-477442b1de0so20307635e9.1 for ; Tue, 04 Nov 2025 10:10:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279837; x=1762884637; 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=ZGi+vdnTcOUyDYZpLxnZDrsIWdYfcQsWdysVijdDOkg=; b=fQQoc4gKr0robiiWcN2S4dtB1WB/7QEQos3APL9eGRXn+Kt3YZICyVC2RgRWN2Jp7M OPR7FpfZZULKDfMz7WxlwbOzklgS5fJv3VmhW/t76wdUD3IZ7/4Zab6ZVpsEcaWBMMl1 MDdkO/EF6p+N/tdSD24DqLQHrQYurY8Wy3nFBk1XHHQgjTcPDbdzDCJce0Y+O+2PO4SV zTLzCWkkxkoeTHiqGkSq8jfFDUA2Yqx7GlLJia/cWcy2Vs5NgoPws2GDD0FMVvYqPCNw PWros0OYL7BpIRavhUKeGc84gFJX/azfD2HOtEUJJiWaqoK5lT50/B1n5Jc4eByz5Lu3 1pzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279837; x=1762884637; 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=ZGi+vdnTcOUyDYZpLxnZDrsIWdYfcQsWdysVijdDOkg=; b=Tf+v5HmP/N7r7Gm7mdT96IALhMTeN/I3iPQFLlsqeWrp8+KIpVrsoOl35JeP0qgkxP cpLSS+iBZTRFHwHo4JbJNvNWm3nf2UYSutYm1drWQFf1T2nQfzgUrOgFYXQhzVwmC9WS F0W8fFBAvsy7KZywpXuSGLEVT4bFlsryO+BbSV8bmbzwGOs9/yLN5Vx/XrL/WngltmoQ 5bP+dE8iicRsH7HuO7ZYhKG4FZ1DBPqEKMDRCJ1UguWR1uydeViTwY4EA0xE6vqwojHj MSr3tTeuxdgJE4wm0h+8NGwJ383AZnFMpdvcu/TnGPqxwpoKuTDNrW6iXvRM8md2E2A6 iwLg== X-Forwarded-Encrypted: i=1; AJvYcCW1F7rI8qPCNm1CJ4p2Si4l1H7t0gVwe9k3Ms+S5mWzHyain5GcwD8ynJvvkK/ejWDTxIwPPYun8Nn5tfg=@vger.kernel.org X-Gm-Message-State: AOJu0YzC8Ljr1eTuXkx2Rdw1D9nRdMY0rGZzZUMjGe4WoDRJZ5nn7ycp gAZtoIBS3lCe0jLbteCzCcUgUAdJV4Jcoqg7ySasmHQfHlhicF33tnmqD+9wXw== X-Gm-Gg: ASbGncsA7W34MKbNxcpEip3b4Qx/EWvivf6mIpCm5pL+5gjKw4UBcBAYARNIP79Ogee tzmXiKTLOV+L5lvTqSfEka7URYtZxovRlpSKXriLkDC4dCc3LwoYchhZVAou5YSJBGE3J/m41wZ CyWAnhj5I9KffdXK11538/kRLiCarTobrK/AvOrhQ4sXfnnQZzHfQLJxiN3AeUPSuBNOhdFR7v2 UhXYU6SIZ5uC7KWpvyFzc6rmRIl5qeoa7hKRhUFahD3xZyZKdTBmFI4/PTlUXAhV7zMq1ommg7L pjer5+JgMaj2rnmrMKCpJuLzTrJqHGoJ79/XYw5V00uY6Nn0AgAeIwJ88bOSvV1qBut/W83DkUI T6zfFAVsvVihHf/ggN3JUyvwVNR+i2dkB3v8iqjXIT5MtZp6KbXH/mkHhoOchInKFJCFiSBdQgP UaeCBHa6fm7hw6j6uGhY26ZsyznmnE X-Google-Smtp-Source: AGHT+IHIwFu5ZH0/QDn36lvi+N0EaA4mwC2bsFB40ThRoEib3Q1pusV/RILcIs1eoSSs5+dZbwnBew== X-Received: by 2002:a05:600c:3f0c:b0:471:1435:b0ea with SMTP id 5b1f17b1804b1-4775cdf4413mr1867405e9.24.1762279837126; Tue, 04 Nov 2025 10:10:37 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:36 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 28/30] drm/sun4i: layer: replace mixer with layer struct Date: Tue, 4 Nov 2025 19:09:40 +0100 Message-ID: <20251104180942.61538-29-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_csc.c | 4 ++-- drivers/gpu/drm/sun4i/sun8i_mixer.c | 6 +++-- drivers/gpu/drm/sun4i/sun8i_mixer.h | 27 ++++++++++----------- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 24 +++++++++---------- drivers/gpu/drm/sun4i/sun8i_ui_layer.h | 3 ++- drivers/gpu/drm/sun4i/sun8i_ui_scaler.c | 16 ++++++------- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 31 ++++++++++++------------- drivers/gpu/drm/sun4i/sun8i_vi_layer.h | 3 ++- drivers/gpu/drm/sun4i/sun8i_vi_scaler.c | 19 +++++++-------- 9 files changed, 66 insertions(+), 67 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_csc.c b/drivers/gpu/drm/sun4i/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 4559e959a32d..50fc20100c90 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 5b6068755ad1..3948023e095b 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.h +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.h @@ -225,13 +225,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 * @@ -260,14 +261,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.2 From nobody Fri Dec 19 11:15:24 2025 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3A33034846B for ; Tue, 4 Nov 2025 18:10:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279842; cv=none; b=rAGH1pKVKJ+PhBBkxCrG3uQQ4TOdhK+OfuD3z7ceyAuuIdLeTXn7NWc+eGOxsw1C74/JSbKaOLjAlcgf6PLEx8khc7/mchHrB0268CgV8R13aHmCQFj2y7ECSZXh9z1l5gkG5VsLYnuBqS1KEaD+JyfmLlN5ARxXeiGWHNEw6RI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279842; c=relaxed/simple; bh=tn52gI++VV08p/JOXLBb4YMr7yaoLYJuCkLmlVFTHEs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cS2kVDXAc95J9NCDcybINwoKgDFROF4wk9zhpG3DhM3h9RgkSEkbcprqi+W4J0UU3GFyq7UI2HyNt2WBzgSXmD+Kf5J/fj7014maxAPnhArVgeLfJCYPqdox2Jguf0wRICPVsBlU+E/3ZbssG5A5Bbr9xFJGlXnVKK6F7KZDlDU= 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=T60ewGmB; arc=none smtp.client-ip=209.85.128.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="T60ewGmB" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-47754b9b050so8945225e9.2 for ; Tue, 04 Nov 2025 10:10:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279838; x=1762884638; 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=ZdGrKH1QE0kG7REtfLe4gBCoW5I7PDPHN1PH2jaotk0=; b=T60ewGmBPXgnKDhDxR8qh4upYX1Z1BqYibR7mMjwABgIZIdiVjjdffyz8VE69GqPam NIT3bykJLTl519CgW67Pwk7MYOOWiE46vNgZn5GJAAgeCw/n/5MBe8qAZwJZxN4YJyx8 wnXlqLGiqdXxbp1FOEBcaLpTFBC2e5z1tFBhr5bZYVxVw8pIN/kxAFAhhkYksCHZ3MUN OClnHRPFZ8/LlZw53+GTUKGK85eJUHgiwEYnoLZ3oChfrqgtJsjyj+V7Bf46pJBwX3IL y7k9rw5GmTGNGsfnCKfw+U8qv8yCV66tyxmo/AB4TeDgxr2XRQeToRTGGTiJ8V639ilq iRDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279838; x=1762884638; 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=ZdGrKH1QE0kG7REtfLe4gBCoW5I7PDPHN1PH2jaotk0=; b=FBuaf4Hx8tYDhNDuuEp84O+nkZW5cgWmjsHQXlgDK6yaZ9sFG85aSgkQ9oAKBp/3a+ zDe+xOljyTB/eF/IeJOyHEFECOqVVdbddIeZjPg6xFaHW9HmxyitOPJ6tCM2Vf6BNvbt GwvnDU9bhHGm3pr0jG2cGthgyHjZ7Qtun8jdzL1spOQtoAs+/diRff8qANeS/PFxve6C 8B+47V5b8om2ToW3bCFeZ/4Cq8zMeNCyWu9XLslNwUzFn3IYzudJ3/qa840AjgjIQgYB +6PHV0PEJ52UlV04Ia35hwqcy3jW10M6p7ZLXEtJNszHl83b8ym2iRdE59GoYLJEvDvP W9iQ== X-Forwarded-Encrypted: i=1; AJvYcCU35TX0X30FmTXnoXqWGncbcXzDdsGuMra/XkAppzdpNlluTQtF4VbUmxWaj28pb0qJBsgxhzhwD0B/FRw=@vger.kernel.org X-Gm-Message-State: AOJu0YwNsoVInJnA6+ea4myrUAtK6rlpYzvtZxtHScb13TzoUTL8VXD1 Pcj1sVgbuXh3F8vgf6fiKMM2vxpsN8wffbhcaP8j0jSsxGXKtliB15uk X-Gm-Gg: ASbGnct3HDEJwvihk1dv2ouJhnGp324ccwY0BWpCYwL0TLEUA6upmhhDVUKcANOt00N 6u4dLmZlgWAjSokpcKI3wWV1LXyuv6L9YPjVEornClEWa8nIoCdmUO1YsaDu99YUM4aSDdHzTg6 7iP0nkW1YDlhQneYmvZwY+vwv6yt0Xh8HYjiLQRWM/fkVqRcg2qlB+VVb32PHc8hx7v+K4JNOMu zf0R2LToOWNoi7ZPXRrqvqJ3tyqnPuZgtQGxtgK/3Kclkntn3h9Ew/q61NBAKxjj7YQqFP5Nwvi jnWrYZbCkYcoJ4Q0IxKCabHNRN6OdJIaDGbPpHAcqaORCQNQ5GyooNmi7wafog+NZ261ltIEx1Y uKqa3UgXyWfZy1X0odm+MKrChNnQ36whUHh/45t/sj72CZMvOuyyhuYlhuR9do49yjwEduThs93 RTHuSV3etPf+vwYHtW1w== X-Google-Smtp-Source: AGHT+IE6YV6xR2I6/+NCWHLkg0DglaeA9v7PSL0SkiyT31i7Bh4LMca9EcGx6brDtSF2nS0sWtPQUg== X-Received: by 2002:a05:600c:620d:b0:475:f16b:bcbf with SMTP id 5b1f17b1804b1-4775cdc148dmr2023655e9.14.1762279838428; Tue, 04 Nov 2025 10:10:38 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:38 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 29/30] drm/sun4i: vi_scaler: Find mixer from crtc Date: Tue, 4 Nov 2025 19:09:41 +0100 Message-ID: <20251104180942.61538-30-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i= /sun8i_vi_layer.c index afe38ea03beb..4534998af825 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -13,6 +13,7 @@ #include #include =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.2 From nobody Fri Dec 19 11:15:24 2025 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8663A348884 for ; Tue, 4 Nov 2025 18:10:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279844; cv=none; b=fGdhfTH5nLkll53zw4mAApi4x7iXvNWpeWU1gidH4cnPCBffRUHFQyNzRC/ojkqoC4RYkNPKgGihY1e3sChc8/BoEspRE/RttVLoAUURxsGtuzQLefc5usmb/BxwDdxOnp7IbtDUjlSD1etp7PjYu54h8QBTOGd+cUxfY1GTwEU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762279844; c=relaxed/simple; bh=pwHyPYs+uvcIMdyUOYcnWKkfT8r4lZYUtB/lROjfyFc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=c8THQco3M6iqH+nZCGfw8k/YIkn/xbTo1WKPHI6ZTR14B2Talew60NnHzsaZsRYMn/JTzl+d0cJ3bsZyz74vVrMWWsMC1fuWv4t1Exb4b5vSYlwAKMTmjdD3iavzAcayPsI1CRNbVuMM/SRVyP+vAE6D063kwCwixthYBOqju2U= 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=bpTwq48K; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="bpTwq48K" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-47721743fd0so31654695e9.2 for ; Tue, 04 Nov 2025 10:10:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762279840; x=1762884640; 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=YhWx9NyFnSAm1+R2uJGg2k+MOsOqirwBc3PWmOrvwX4=; b=bpTwq48KhnZbCz6Cfc2ZSkFrBpQsnybsmY8YPdywa605JqN7+Lp5zszsjfbjheZGKJ ihVUxjuvTOTi8pUq4/cgCfluAKtQieCiYDtKecDRcAzittF6dG7A/yAiGwC7eLIFnqsa v6D8Zbze9zmIBl9adkteAX2svzxMzLkbemHdT8Pv0hDbpEsfaj0h6FmaYa/lfyaY5ubJ 4u9yfJBgTjO4AvVOsP5wL8TAQvI9xtFRztpe1xCjTooQtCvNoofEktOjyc1BmFx9DLjZ rkCBYxfYO2z9vdQNCOVIvCa8WRqDF1lHRDCSLlZ2uQ6Dga4ioKn/vT6oDTqR8wRqJS+r 7uRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762279840; x=1762884640; 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=YhWx9NyFnSAm1+R2uJGg2k+MOsOqirwBc3PWmOrvwX4=; b=lfxCTl8yS7JWa6Slnfat71Xm2I/Gew/y7CwS9Co3TN0qdsCkI0B+e//AO2v3DtfyB3 IOC4sIFbm61FzmsTmny8TFVFi2aFNTJt0gqM7iUDsO/90QHDmpPqq6n1oN9DmA1XNftf l5M0W9giNkOe6omskvm8aogtYe92ndofPwA2GRFSbTGa7yTie+PN8SmYV69WEkPDKwmj dskUwNT0D+jyInOUkExppDY64gbYaBU+oMX2z0fRQ/IUb53uZg8T8jrZDXxwUpOackbz DVQ/YK18xJL03pKdiqGFqqMjDUvQNM6X87GAyZ2hrpWczk5EjO8gAxrXDEql+Pe9+Z5O bayw== X-Forwarded-Encrypted: i=1; AJvYcCUzBJFMjPyZKCT00P5megiMqDFj7fdnhQpSmz7sg79JLBxR2sK1EyV19ORpsZ/btT53iihyVPWPvUNDnwM=@vger.kernel.org X-Gm-Message-State: AOJu0YzPI8NRM26RfT67NYNOD1xbq2jrEiAWQFfIIABh70FY4pGRJC9c TgPlfHPbG1fPujcBEantkGt4tzop7wpod7ohaw0XIW0clIuGFtci/u6P X-Gm-Gg: ASbGnctrN/AWbiUEEbRRyR7W3hequqLCTg00AvEwRHkjprlIZvDdufTZghV6ZNRUUxg hyaiQ7hRCcIPalnVAueOCzeQ4WvmknhQ+AvijkG4Au7+OXzQSJPdtcXVHIYRCZ0BZ6C5gLw43Ju ORK6JlQrMb49wED6nfMCbEpCW/m/YP69LlB/cL/zx0bfyymjoBdRykv2aZSReWwJp5+G6AmxnFL yDUUhAs+6S0+kOU6PpoUHESAss3e1EwarYM4hqRYSrKW6mSx4+qj+8wTVrFRBOWp8BsKV1wRntc fOkPJ/7Non1mAy7E6aVBHIdXshPkA/clsUTvtS+aKHMy7PeHuYoUCcWmiiPfB8bEdLAvx3jbj9K RQFdvA/uTwuqTPxhjhr0OIn1S7wfkvHYXCye4bHk1nZM/vTTTx8yCt7KxH7/bBHgHvwm1QG3X9S BKnlQ0F6vp2iToTSnZhg== X-Google-Smtp-Source: AGHT+IGiymh/TsRqhwN6N3A97NvG3Bqul+I8b68ZoyUR344zIADNYxpVaPkfS3GzPbVwVEx24Kp+Fg== X-Received: by 2002:a05:600c:6388:b0:458:a7fa:211d with SMTP id 5b1f17b1804b1-4775ce1874bmr2424725e9.29.1762279839699; Tue, 04 Nov 2025 10:10:39 -0800 (PST) Received: from jernej-laptop ([178.79.73.218]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477558c1a03sm24688685e9.2.2025.11.04.10.10.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Nov 2025 10:10:39 -0800 (PST) From: Jernej Skrabec To: wens@csie.org Cc: mripard@kernel.org, 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 , Chen-Yu Tsai , Ryan Walklin Subject: [PATCH v2 30/30] drm/sun4i: Nuke mixer pointer from layer code Date: Tue, 4 Nov 2025 19:09:42 +0100 Message-ID: <20251104180942.61538-31-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251104180942.61538-1-jernej.skrabec@gmail.com> References: <20251104180942.61538-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. Reviewed-by: Chen-Yu Tsai Tested-by: Ryan Walklin Signed-off-by: Jernej Skrabec --- drivers/gpu/drm/sun4i/sun8i_mixer.c | 12 +++++------- drivers/gpu/drm/sun4i/sun8i_mixer.h | 1 - drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 2 -- drivers/gpu/drm/sun4i/sun8i_ui_layer.h | 1 - drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 2 -- drivers/gpu/drm/sun4i/sun8i_vi_layer.h | 1 - 6 files changed, 5 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/su= n8i_mixer.c index 50fc20100c90..fde3b677e925 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 3948023e095b..e2f83301aae8 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.h +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.h @@ -226,7 +226,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.2