From nobody Sat Jul 25 00:55:17 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 96B503769F7 for ; Tue, 21 Jul 2026 13:53:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784641983; cv=none; b=gAG55K1px0ToC923TyvcMU4BIcf0Rk8gL6zcvpVA/p3qYbNTiFUmKC1z2Gclrg0UPGrbEtOfPFRm2xlHSC2ft8HrAqM9WJWikajG2cc01KJuykOUTEgxdTq3u8zv/83j34FN4bw6O4jx5l1oVZSGxpULaeRYroHdogj6udwrVVQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784641983; c=relaxed/simple; bh=5NNQt50ThK+i6RemMF7K3iOU8KTCx3lj7dD2Lv27Gd8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fVl8AvOam2NdQgcHm1x+tsaGhSK3yDt3LTFv6hSUrbtNSYn2K0JXEIP3RlxSaQWOr+xhwW5nXYooESKl3o5GDmzLzrwo9LMlUQGvfYSE0hwt4UTb2J1csqCMerP2g/W572Tw00OM/3MORTlaKUO6oobVioDNL0dSI4/z2kC3UGo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=JYZqNMUC; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="JYZqNMUC" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id AEF511595; Tue, 21 Jul 2026 06:52:56 -0700 (PDT) Received: from e135116.manchester.arm.com (e135116.arm.com [10.33.50.66]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id C24E93F58B; Tue, 21 Jul 2026 06:52:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784641980; bh=5NNQt50ThK+i6RemMF7K3iOU8KTCx3lj7dD2Lv27Gd8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=JYZqNMUCP53mw1VbuvQgqPb0J/lIKJTUSOFTh+hzI6dNHrNDyZHHxi7/qxRuU6F9B teFw1RJW9OGp+MJY6YQWRMFfD9LQKFHHivQ+z30ZyNTOaNCrjW8wt6VFSNcOQQkDbf 8aki+VFOgyaI6ja2zaWAQZOT1J7iwSpBVQsqYliw= From: Raveendra Talabattula To: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org, Raveendra Talabattula , liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, james.qian.wang@arm.com, vincenzo.frascino@arm.com, nayden.kanchev@arm.com, charvi.mehta@arm.com, Asad Malik Subject: [PATCH 1/2] drm/komeda: Fix bits parsing of GLB_CORE_ID Date: Tue, 21 Jul 2026 14:52:26 +0100 Message-ID: <20260721135227.439413-2-raveendra.talabattula@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260721135227.439413-1-raveendra.talabattula@arm.com> References: <20260721135227.439413-1-raveendra.talabattula@arm.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" GLB_CORE_ID contains the product and version information returned by the hardware. The current macros parses VERSION_MINOR as a 4-bit field and VERSION_STATUS as an 8-bit field, which does not match the register layout. As a result, the driver reports an incorrect version number. Fix the parsing macros to match the hardware specification: - VERSION_MINOR is 8 bits at [11:4] - VERSION_STATUS is 4 bits at [3:0] Fixes: bd628c1bed79 ("drm/komeda: komeda_dev/pipeline/component definition = and initialzation") Signed-off-by: Asad Malik Signed-off-by: Raveendra Talabattula --- drivers/gpu/drm/arm/display/include/malidp_product.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/arm/display/include/malidp_product.h b/drivers= /gpu/drm/arm/display/include/malidp_product.h index 6f954bcdf40e..bf63c4e05c3e 100644 --- a/drivers/gpu/drm/arm/display/include/malidp_product.h +++ b/drivers/gpu/drm/arm/display/include/malidp_product.h @@ -8,14 +8,18 @@ #define _MALIDP_PRODUCT_H_ =20 /* Product identification */ +/* GLB_CORE_ID fields as per HW specification: + * MINOR is 8 bits ([11:4]) and STATUS is 4 bits ([3:0]). + * Update masks/shifts accordingly. + */ #define MALIDP_CORE_ID(__product, __major, __minor, __status) \ ((((__product) & 0xFFFF) << 16) | (((__major) & 0xF) << 12) | \ - (((__minor) & 0xF) << 8) | ((__status) & 0xFF)) + (((__minor) & 0xFF) << 4) | ((__status) & 0xF)) =20 -#define MALIDP_CORE_ID_PRODUCT_ID(__core_id) ((__u32)(__core_id) >> 16) +#define MALIDP_CORE_ID_PRODUCT_ID(__core_id) (((__u32)(__core_id) >> 16) &= 0xFFFF) #define MALIDP_CORE_ID_MAJOR(__core_id) (((__u32)(__core_id) >> 12) &= 0xF) -#define MALIDP_CORE_ID_MINOR(__core_id) (((__u32)(__core_id) >> 8) & = 0xF) -#define MALIDP_CORE_ID_STATUS(__core_id) (((__u32)(__core_id)) & 0xFF) +#define MALIDP_CORE_ID_MINOR(__core_id) (((__u32)(__core_id) >> 4) &= 0xFF) +#define MALIDP_CORE_ID_STATUS(__core_id) (((__u32)(__core_id) >> 0) &= 0xF) =20 /* Mali-display product IDs */ #define MALIDP_D71_PRODUCT_ID 0x0071 --=20 2.43.0 From nobody Sat Jul 25 00:55:17 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4F845377ECA for ; Tue, 21 Jul 2026 13:53:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784641985; cv=none; b=tnZrNEVv95RukJjXcaW4s4363a9okrb4xPIk2F47z6g8IpSKgC+L2lHqBiYmHgFFPeTOCT5rlluobllGk5Ly6eNvT8q7EC2C3KPJE+eCEn8QX4cYVqJ5XBPml2EgBd9F08yoYhqGBg72RtC4gKtBfUuZe2vYB0lXTb6VNDVqptk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784641985; c=relaxed/simple; bh=z+0sbQICk2r/MH87vzYWNV2SevbRD+kWsOGPx/9J1c8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SqeM9FK0TF1qClMr5ngjnmjmQgtLEY0qp+twl9pXX2l5CUZOf8A7H/VqMHSTzd7aieQB44zyfa6M1+zqcsbecK0RjiHaV4VecNENgboVB8AZzlaLrpf1JkGtyQa2QjDnXds8fehBS97BEFVIR8kLrDIgIXUg83aDKrfhAu79n2k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b=rg0Atn70; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.b="rg0Atn70" Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 1B67F15A1; Tue, 21 Jul 2026 06:52:59 -0700 (PDT) Received: from e135116.manchester.arm.com (e135116.arm.com [10.33.50.66]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 34A633F58B; Tue, 21 Jul 2026 06:53:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1784641983; bh=z+0sbQICk2r/MH87vzYWNV2SevbRD+kWsOGPx/9J1c8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rg0Atn70hgVOQtkjbgVzCXodm5x7Ce3cZc/wnemijvhszkDdHXX8P7FvrNL4I1ypo 0EMNlyS9UTEg9Z3ghyCV5CWehmKK/SPYx9IClGWJs2g2+tMzuIl6MOxzVVFfjbLGMI 2SLQHL2TfiiARx/9ntZnvqb0r/LpaN1eKWXK6Zp4= From: Raveendra Talabattula To: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org, Raveendra Talabattula , liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, james.qian.wang@arm.com, vincenzo.frascino@arm.com, nayden.kanchev@arm.com, charvi.mehta@arm.com, Asad Malik Subject: [PATCH 2/2] drm/komeda: Initialize encoder possible_clones Date: Tue, 21 Jul 2026 14:52:27 +0100 Message-ID: <20260721135227.439413-3-raveendra.talabattula@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260721135227.439413-1-raveendra.talabattula@arm.com> References: <20260721135227.439413-1-raveendra.talabattula@arm.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" Komeda leaves encoder->possible_clones unset, so it stays at 0 for every encoder. When userspace asks for writeback, the DRM atomic checks reject the configuration because no encoder is marked as clone-compatible, leading to errors such as: crtc96 failed valid clone check for mask 0x5 Komeda does not impose per-encoder clone restrictions, so initialize possible_clones for all registered encoders to the full encoder mask after encoder creation. This fixes writeback validation. Signed-off-by: Asad Malik Signed-off-by: Raveendra Talabattula --- .../gpu/drm/arm/display/komeda/komeda_kms.c | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/= drm/arm/display/komeda/komeda_kms.c index 6ed504099188..0dcc8c05e86b 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c @@ -276,7 +276,10 @@ struct komeda_kms_dev *komeda_kms_attach(struct komeda= _dev *mdev) { struct komeda_kms_dev *kms; struct drm_device *drm; + struct drm_encoder *encoder; int err; + /* Bitmap of all encoders, assigned to each encoder's possible_clones. */ + u32 clone_mask =3D 0; =20 kms =3D devm_drm_dev_alloc(mdev->dev, &komeda_kms_driver, struct komeda_kms_dev, base); @@ -311,6 +314,23 @@ struct komeda_kms_dev *komeda_kms_attach(struct komeda= _dev *mdev) =20 drm_mode_config_reset(drm); =20 + /* + * Build the full possible_clones mask once. drm_encoder_index() + * returns the bit position assigned to each encoder and BIT() converts + * that index into the corresponding mask value. + * + * Komeda does not have per-encoder clone restrictions, so every encoder + * gets the same mask and is advertised as clone-compatible with all + * other registered encoders. + */ + drm_for_each_encoder(encoder, drm) { + clone_mask |=3D BIT(drm_encoder_index(encoder)); + } + + drm_for_each_encoder(encoder, drm) { + encoder->possible_clones =3D clone_mask; + } + err =3D devm_request_irq(drm->dev, mdev->irq, komeda_kms_irq_handler, IRQF_SHARED, drm->driver->name, drm); --=20 2.43.0