From nobody Mon Jun 15 19:04:49 2026 Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) (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 14C133002D8 for ; Mon, 13 Apr 2026 11:47:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776080855; cv=none; b=dHuiBQBskrevmMRqf6beBxc8MQapv2XZGG1DsTZaxIJMmduq/yyWZL8IYxzy/XA9sMxfjOd4ayu+RCqtg9C9qmheWDPmnCY3FoSxS1C6PjOBMQXORfzhB1d9Pkili1E8oTFACNTwGgYVFaobvfhQDMkmVt1hbr5lyIVkTIe4ZEE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776080855; c=relaxed/simple; bh=zkUugOB5qjy54EN2XecQLygQMrIV/4QG57iX4wp2xjM=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=DYVpljfCisS//rlM8RCflFrsx3cMUUmgTVykyi3Log1rwEOMk9kvtJxpupG1JOduv9OWG/qf0JA486z1ZB1e/pKzapC5AbUbe8x0++yF/Hp68mEtL1JDRxSJcaWppwfiRS2BnU6mliIAaOqpqQhdPEvDwhzZgZvj5KYyDZFR/Xw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=mechasystems.com; spf=fail smtp.mailfrom=mechasystems.com; dkim=pass (2048-bit key) header.d=mechasystems-com.20251104.gappssmtp.com header.i=@mechasystems-com.20251104.gappssmtp.com header.b=LvJFSceV; arc=none smtp.client-ip=209.85.210.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=mechasystems.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=mechasystems.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=mechasystems-com.20251104.gappssmtp.com header.i=@mechasystems-com.20251104.gappssmtp.com header.b="LvJFSceV" Received: by mail-pf1-f173.google.com with SMTP id d2e1a72fcca58-82f2385724aso1177922b3a.0 for ; Mon, 13 Apr 2026 04:47:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mechasystems-com.20251104.gappssmtp.com; s=20251104; t=1776080852; x=1776685652; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=b/LOXITNDN/uMhBAVQruWsPEexWMWJ2BqlDUKp8QBqI=; b=LvJFSceV328yrhctMZ+0eke8ei43OP2uP77ATAnNuweOHX9bZNyhTPuNIf1K1I3I/Z DPdQIy/wj5ETtVHza80Om1HXfFb4F/weImHihRpkrF88witHcxv4e+/risSQrk1LinDZ SiThtws06AiT4EXqLZlW/t/ZucHsdNQuTi/UTbrSqoMe8Dj9a3PziLj3iYCQ81zuKKuI HShCwqf8E+gtxr6oC9+2FmyrPMOxmYECd8aKRhYjjD4f8B2Mz7IsT5IKR3Wz+oV/hds6 czsXye+uMs1j+Q6runC6P8uejMtUs7ltpgRioO5IeNs2qQesi4WezHL9PO3kdnL3x1V5 oreA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776080852; x=1776685652; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=b/LOXITNDN/uMhBAVQruWsPEexWMWJ2BqlDUKp8QBqI=; b=XPLvUPsKrlmSj8J1bWmRZ6CGcN8mj0+j579A6r3TJCPBTeuQvLzi3F/UAaiHyHwlkL Iesj6DizMMuFSycQ3bNT0X/b2wvBGDce4TfYOD0plBjx+0Ij7sFzLCSfl744xcNpjqWS NvKsuioJgYxVopW9jXiW+BpjSOLL6ViKDvLftK8p5krpnHeTKtkwhbSOY53E/IhinnV6 qHSgiO5rDRG2C+eT3lIRE1VBTRGyHWGDOjUujisdMPn2pNDk7lFyBVWSffYrKdL+J1Cm ffnklFF3CT5KD7js2USjtYP61MvuB7nKBSJIsQMgLr4rFpb8SbUebCLIcwHpEAvuCjnE /T8A== X-Forwarded-Encrypted: i=1; AFNElJ+kI3m3XlYCgzwm2bBfZht2YxEGT8ZIdImllaHbiuYNdeBP3NI4kTmcYe5HH4lbQ5B7RJr3cNMr+7QTQ1I=@vger.kernel.org X-Gm-Message-State: AOJu0YxXcZKfFcNe2xM1ptj5GI1XDijwHi2vFZ8MHdzix4Fh5sS1RFxD Oo/EwG591bg7xe5YzXDbZthBDH4AjNJ5Gpc3Yng6Mdk21tqf0XxKoU+n//39BsGsKOU= X-Gm-Gg: AeBDievC8Lq3Tm7ipKtsw+JYqrgZJAhJ4sGy+U5STFv/LCPWO06pHDw7Y8LtifGy8Tt h7WoXx+kQm222yyQPY5fdemStk1SYQytDtGwwSBGYfPEcnhTDJt5HHOl2tRZuDz+YQGyeljZKaw 5UUszXIKSgOID2AKOZaiZ7OIL5kdPA7718z3Pc20FANiO04uuqpyb+juW5x4XfaArlgOKqwvQip 2B1Lfghsae/8p8bOLQSnzUc4mXrM79LrHscSaWgmMsmOSeNxTzXevnQ17VupeXaOd/jHgEMtkxe 6vHODqJT6yjUwJvm8ZbXYD7rcKd2JnZbp6uy9NJukT3BKbXLmcuW1vwe/eFqJ5lBAdsXrx6f91K DSxKrhVX+twXnaMyedVJ6ot9HSOTVA+d/rGwgKEAjcX1PhmDr1vAqonM9DLPl+51VCmgjzsF30Y 62w757Wpu6okmiT16QuuiBKvIVT20amvY8ITWo X-Received: by 2002:a05:6a00:39a9:b0:82c:e3f4:f5e9 with SMTP id d2e1a72fcca58-82f0c219ccfmr14135131b3a.18.1776080852304; Mon, 13 Apr 2026 04:47:32 -0700 (PDT) Received: from advait-work.lan ([2001:df0:e1c0:3414:7eaf:93c5:46f:fbe4]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f0c330925sm12822137b3a.15.2026.04.13.04.47.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Apr 2026 04:47:31 -0700 (PDT) From: Advait Dhamorikar To: marex@denx.de Cc: stefan@agner.ch, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, Frank.Li@nxp.com, s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com, dri-devel@lists.freedesktop.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Advait Dhamorikar Subject: [PATCH] drm: mxsfb: lcdif: enforce 64-byte pitch alignment for scanout Date: Mon, 13 Apr 2026 17:14:56 +0530 Message-ID: <20260413114456.173485-1-advaitd@mechasystems.com> X-Mailer: git-send-email 2.43.0 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" The LCDIF controller expects framebuffer pitch to be aligned to a 64 byte boundary for reliable scanout. While byte-granular pitches are supported by the interface, the i.MX8MP reference manual recommends 64-byte alignment for optimal operation. Corrupted output was observed with XR24 framebuffers where a pitch of 4320 bytes caused visible corruption and choppy display, while an aligned pitch of 4352 bytes worked correctly. Ensure that only framebuffers with properly aligned pitch are accepted by rejecting invalid configurations in lcdif_plane_atomic_check(). This allows userspace to fall back to a compatible allocation. Signed-off-by: Advait Dhamorikar --- drivers/gpu/drm/mxsfb/lcdif_kms.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/gpu/drm/mxsfb/lcdif_kms.c b/drivers/gpu/drm/mxsfb/lcdi= f_kms.c index 72eb0de46b54..8e574e9a591a 100644 --- a/drivers/gpu/drm/mxsfb/lcdif_kms.c +++ b/drivers/gpu/drm/mxsfb/lcdif_kms.c @@ -674,6 +674,18 @@ static int lcdif_plane_atomic_check(struct drm_plane *= plane, crtc_state =3D drm_atomic_get_new_crtc_state(state, &lcdif->crtc); =20 + /* + * While byte granularity is supported, LCDIF requires + * that framebuffer pitch be aligned to 64 bytes. + */ + if (plane_state->fb && + !IS_ALIGNED(plane_state->fb->pitches[0], 64)) { + DRM_DEV_DEBUG_DRIVER(plane->dev->dev, + "Framebuffer pitch (%u bytes) must be aligned to 64 bytes\n", + plane_state->fb->pitches[0]); + return -EINVAL; + } + return drm_atomic_helper_check_plane_state(plane_state, crtc_state, DRM_PLANE_NO_SCALING, DRM_PLANE_NO_SCALING, --=20 2.43.0