From nobody Sat Feb 7 19:45:45 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C8C95288DF for ; Mon, 19 Feb 2024 10:09:32 +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=1708337374; cv=none; b=IAL17uBOiElTKYoFk/fs3sxhoicMgLsw2EahaOEkYT3tviN5cgrgIU4r2yYO6jNBoO0nGyeU8AOEx2KiCRl/+WhPgfWG6M1m+so80FiZpcUHYZ02Lf0j6iE5b/L+hXx/oS6PqQ0GLLb5F0tV0GPnZKfEo04bat54WeaZylp68ws= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708337374; c=relaxed/simple; bh=fPKK7lbxTJQg2HozRmLSmLdED3dVOb6syBUEw/ZUhuw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=BiDHcX/I48g/NRQVxrKtPyDMx+94iEOkJ8rUVjVI/gRm2vnzi7nok6Cdwl4TCuCP6ptJXwOrPPDEy0kSADeOwO38yTGy2hB8p5EM1g0FU0L0VPws0SB4y+2C2ETvewgpICNvJpa1eVDStDctHnsfRWIchLJa52yPah2Mhv7wI/I= 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; 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 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 D454E1FB; Mon, 19 Feb 2024 02:10:11 -0800 (PST) Received: from a077854.blr.arm.com (a077854.arm.com [10.162.41.80]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 5D45B3F762; Mon, 19 Feb 2024 02:09:29 -0800 (PST) From: Faiz Abbas To: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Cc: liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, daniel@ffwll.ch, Faiz Abbas Subject: [PATCH 1/3] drm/arm/komeda: Fix komeda probe failing if there are no links in the secondary pipeline Date: Mon, 19 Feb 2024 15:39:13 +0530 Message-Id: <20240219100915.192475-2-faiz.abbas@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240219100915.192475-1-faiz.abbas@arm.com> References: <20240219100915.192475-1-faiz.abbas@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" Since commit f7936d6beda9 ("drm/arm/komeda: Remove component framework and add a simple encoder"), the devm_drm_of_get_bridge() call happens regardless of whether any remote nodes are available on the pipeline. Fix this by moving the bridge attach to its own function and calling it conditional on there being an output link. Fixes: f7936d6beda9 ("drm/arm/komeda: Remove component framework and add a = simple encoder") Signed-off-by: Faiz Abbas --- .../gpu/drm/arm/display/komeda/komeda_crtc.c | 43 ++++++++++++++----- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c b/drivers/gpu= /drm/arm/display/komeda/komeda_crtc.c index 2c661f28410e..b645c5998230 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c +++ b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c @@ -5,6 +5,7 @@ * */ #include +#include #include #include =20 @@ -610,12 +611,34 @@ get_crtc_primary(struct komeda_kms_dev *kms, struct k= omeda_crtc *crtc) return NULL; } =20 +static int komeda_attach_bridge(struct device *dev, + struct komeda_pipeline *pipe, + struct drm_encoder *encoder) +{ + struct drm_bridge *bridge; + int err; + + bridge =3D devm_drm_of_get_bridge(dev, pipe->of_node, + KOMEDA_OF_PORT_OUTPUT, 0); + if (IS_ERR(bridge)) + return dev_err_probe(dev, PTR_ERR(bridge), "remote bridge not found for = pipe: %s\n", + of_node_full_name(pipe->of_node)); + + err =3D drm_bridge_attach(encoder, bridge, NULL, 0); + if (err) + dev_err(dev, "bridge_attach() failed for pipe: %s\n", + of_node_full_name(pipe->of_node)); + + return err; +} + static int komeda_crtc_add(struct komeda_kms_dev *kms, struct komeda_crtc *kcrtc) { struct drm_crtc *crtc =3D &kcrtc->base; struct drm_device *base =3D &kms->base; - struct drm_bridge *bridge; + struct komeda_pipeline *pipe =3D kcrtc->master; + struct drm_encoder *encoder =3D &kcrtc->encoder; int err; =20 err =3D drm_crtc_init_with_planes(base, crtc, @@ -626,27 +649,25 @@ static int komeda_crtc_add(struct komeda_kms_dev *kms, =20 drm_crtc_helper_add(crtc, &komeda_crtc_helper_funcs); =20 - crtc->port =3D kcrtc->master->of_output_port; + crtc->port =3D pipe->of_output_port; =20 /* Construct an encoder for each pipeline and attach it to the remote * bridge */ kcrtc->encoder.possible_crtcs =3D drm_crtc_mask(crtc); - err =3D drm_simple_encoder_init(base, &kcrtc->encoder, - DRM_MODE_ENCODER_TMDS); + err =3D drm_simple_encoder_init(base, encoder, DRM_MODE_ENCODER_TMDS); if (err) return err; =20 - bridge =3D devm_drm_of_get_bridge(base->dev, kcrtc->master->of_node, - KOMEDA_OF_PORT_OUTPUT, 0); - if (IS_ERR(bridge)) - return PTR_ERR(bridge); - - err =3D drm_bridge_attach(&kcrtc->encoder, bridge, NULL, 0); + if (pipe->of_output_links[0]) { + err =3D komeda_attach_bridge(base->dev, pipe, encoder); + if (err) + return err; + } =20 drm_crtc_enable_color_mgmt(crtc, 0, true, KOMEDA_COLOR_LUT_SIZE); =20 - return err; + return 0; } =20 int komeda_kms_add_crtcs(struct komeda_kms_dev *kms, struct komeda_dev *md= ev) --=20 2.25.1 From nobody Sat Feb 7 19:45:45 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C721428E22 for ; Mon, 19 Feb 2024 10:09:36 +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=1708337378; cv=none; b=fwIWMG8KZ47XVfJb5xkI7aMwdvXBofHNP7+w3KrgY2H0UcJPAsZ1BUt/J/uJ1dJMNIgfkTTsWdJHKPKe9AfDWwwaplXSOMBoseNYYyOg0eOF8A2bQV9IHBDUxlkD+V9xRqoNluflBJwFdn1wIWefbp6wrTBI5wNoAKEGlm4Gg9w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708337378; c=relaxed/simple; bh=D+5MITGSTIWZmg+eDLdAq8eiW/paDZ2Wz+SdaFAiXlc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Sr7inpt1zeWfI+4DbJnDZXKlH9gk3TyJp352562kO7YpJ1BB/ERV4s57+pwFzflVPABuMFucItDVjkJvG42bmFk4/EIDEjAWHygNo+WufUydqnW2G/Nj6qp7pWtGJP3w/RMVhUuUeMusL6Zw0zQKGBz8qikrIKCbh1Mbfc0RynU= 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; 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 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 009491FB; Mon, 19 Feb 2024 02:10:16 -0800 (PST) Received: from a077854.blr.arm.com (a077854.arm.com [10.162.41.80]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 801233F762; Mon, 19 Feb 2024 02:09:33 -0800 (PST) From: Faiz Abbas To: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Cc: liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, daniel@ffwll.ch, Faiz Abbas Subject: [PATCH 2/3] drm/arm/komeda: Move pipeline prints to after the entire pipeline has been enabled Date: Mon, 19 Feb 2024 15:39:14 +0530 Message-Id: <20240219100915.192475-3-faiz.abbas@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240219100915.192475-1-faiz.abbas@arm.com> References: <20240219100915.192475-1-faiz.abbas@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" The komeda driver prints a pretty verbose log in komeda_pipeline_dump() detailing the components of each of the two pipelines. This gets printed multiple times during boot as komeda EPROBE_DEFERs waiting for the remote bridge drivers to come up. Move this log to after this has happened indicating that the printed pipeline is actually completely up. Signed-off-by: Faiz Abbas --- drivers/gpu/drm/arm/display/komeda/komeda_crtc.c | 2 ++ drivers/gpu/drm/arm/display/komeda/komeda_kms.h | 1 + drivers/gpu/drm/arm/display/komeda/komeda_pipeline.c | 4 ++-- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c b/drivers/gpu= /drm/arm/display/komeda/komeda_crtc.c index b645c5998230..92ac09dc033b 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c +++ b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c @@ -667,6 +667,8 @@ static int komeda_crtc_add(struct komeda_kms_dev *kms, =20 drm_crtc_enable_color_mgmt(crtc, 0, true, KOMEDA_COLOR_LUT_SIZE); =20 + komeda_pipeline_dump(pipe); + return 0; } =20 diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.h b/drivers/gpu/= drm/arm/display/komeda/komeda_kms.h index a4048724564d..83e61c4080c2 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.h +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.h @@ -191,5 +191,6 @@ void komeda_crtc_flush_and_wait_for_flip_done(struct ko= meda_crtc *kcrtc, struct komeda_kms_dev *komeda_kms_attach(struct komeda_dev *mdev); void komeda_kms_detach(struct komeda_kms_dev *kms); void komeda_kms_shutdown(struct komeda_kms_dev *kms); +void komeda_pipeline_dump(struct komeda_pipeline *pipe); =20 #endif /*_KOMEDA_KMS_H_*/ diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_pipeline.c b/drivers= /gpu/drm/arm/display/komeda/komeda_pipeline.c index 4b7d94961527..4b64ed9e9df5 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_pipeline.c +++ b/drivers/gpu/drm/arm/display/komeda/komeda_pipeline.c @@ -9,6 +9,7 @@ #include =20 #include "komeda_dev.h" +#include "komeda_kms.h" #include "komeda_pipeline.h" =20 /** komeda_pipeline_add - Add a pipeline to &komeda_dev */ @@ -246,7 +247,7 @@ static void komeda_component_dump(struct komeda_compone= nt *c) c->max_active_outputs, c->supported_outputs); } =20 -static void komeda_pipeline_dump(struct komeda_pipeline *pipe) +void komeda_pipeline_dump(struct komeda_pipeline *pipe) { struct komeda_component *c; int id; @@ -350,7 +351,6 @@ int komeda_assemble_pipelines(struct komeda_dev *mdev) pipe =3D mdev->pipelines[i]; =20 komeda_pipeline_assemble(pipe); - komeda_pipeline_dump(pipe); } =20 return 0; --=20 2.25.1 From nobody Sat Feb 7 19:45:45 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D63322C1B9 for ; Mon, 19 Feb 2024 10:09:41 +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=1708337383; cv=none; b=X32KfxvDhRdtpJfPju8IRVgdFGEjp85kNaNKRHdOni0zOWZxbv8lKorxHb1QYhCnh03k3nR6DZkWLYYdF+p563+DSP6iVnxpfK9d5DouiKznjNJj46DzCGIC81tibmPasahlAnsv5uwnGsradqF6/baiYf3l/v7al2U+Ny9WhTM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708337383; c=relaxed/simple; bh=4p55QVB0gwo1Fy/Ce5qntjkMuucso5JioyXwkvgEAIw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ZXoqhyJQbsdbGsADU4co3DjPzK6hBuk4sMT5gJHp036Eb965dfeha6yBiWXUNYlgEAecz6IlytSUqGNGOsPlg4fnF6orvP5izapuZsocHRw9rD4lnCz2dSLtZpy+DvtyFzqxEXYSpmnIGoOyDl9KycOPbanDdB8L6lTqNJhDyAg= 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; 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 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 0E9ECFEC; Mon, 19 Feb 2024 02:10:21 -0800 (PST) Received: from a077854.blr.arm.com (a077854.arm.com [10.162.41.80]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 45ED93F762; Mon, 19 Feb 2024 02:09:38 -0800 (PST) From: Faiz Abbas To: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Cc: liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, daniel@ffwll.ch, Amjad Ouled-Ameur , Faiz Abbas Subject: [PATCH 3/3] drm/arm/komeda: update DMA mask to 40 bits Date: Mon, 19 Feb 2024 15:39:15 +0530 Message-Id: <20240219100915.192475-4-faiz.abbas@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240219100915.192475-1-faiz.abbas@arm.com> References: <20240219100915.192475-1-faiz.abbas@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" From: Amjad Ouled-Ameur Each layer in the DPU has a 40-bit base address register, which indicates start of frame buffer data for that layer. Komeda driver does not set its DMA mask, which makes it 32-bit by default which does not use the entire available possible supported by the DPU. Update the DMA mask to align with DPU Architecture v1.0 spec. Signed-off-by: Amjad Ouled-Ameur Signed-off-by: Faiz Abbas --- drivers/gpu/drm/arm/display/komeda/komeda_drv.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_drv.c b/drivers/gpu/= drm/arm/display/komeda/komeda_drv.c index cc57ea4e13ae..fea5a4818f33 100644 --- a/drivers/gpu/drm/arm/display/komeda/komeda_drv.c +++ b/drivers/gpu/drm/arm/display/komeda/komeda_drv.c @@ -59,6 +59,10 @@ static int komeda_platform_probe(struct platform_device = *pdev) struct komeda_drv *mdrv; int err; =20 + err =3D dma_set_mask_and_coherent(dev, DMA_BIT_MASK(40)); + if (err) + return dev_err_probe(dev, err, "DMA mask error\n"); + mdrv =3D devm_kzalloc(dev, sizeof(*mdrv), GFP_KERNEL); if (!mdrv) return -ENOMEM; --=20 2.25.1