From: Krzysztof Kozlowski <krzk@kernel.org>
To: Dikshita Agarwal <quic_dikshita@quicinc.com>,
quic_vgarodia@quicinc.com, quic_abhinavk@quicinc.com,
mchehab@kernel.org, robh@kernel.org, krzk+dt@kernel.org,
p.zabel@pengutronix.de
Cc: hverkuil@xs4all.nl, sebastian.fricke@collabora.com,
bryan.odonoghue@linaro.org, dmitry.baryshkov@linaro.org,
neil.armstrong@linaro.org, nicolas@ndufresne.ca,
u.kleine-koenig@baylibre.com, stefan.schmidt@linaro.org,
lujianhua000@gmail.com, linux-arm-msm@vger.kernel.org,
linux-media@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, krzysztof.kozlowski@linaro.org,
johan@kernel.org
Subject: Re: [RFC PATCH v10 1/2] media: iris: introduce helper module to select video driver
Date: Wed, 29 Jan 2025 11:44:32 +0100 [thread overview]
Message-ID: <5070e1f1-914b-4654-88ef-3566e3eee9ca@kernel.org> (raw)
In-Reply-To: <20250128080429.3911091-2-quic_dikshita@quicinc.com>
On 28/01/2025 09:04, Dikshita Agarwal wrote:
> Introduce a helper module with a kernel param to select between
> venus and iris drivers for platforms supported by both drivers.
>
> Signed-off-by: Dikshita Agarwal <quic_dikshita@quicinc.com>
> ---
> drivers/media/platform/qcom/Makefile | 1 +
> drivers/media/platform/qcom/iris/iris_core.h | 1 +
> drivers/media/platform/qcom/iris/iris_probe.c | 3 +
> drivers/media/platform/qcom/venus/core.c | 5 ++
> .../platform/qcom/video_drv_helper/Makefile | 4 ++
> .../qcom/video_drv_helper/video_drv_helper.c | 70 +++++++++++++++++++
> .../qcom/video_drv_helper/video_drv_helper.h | 11 +++
> 7 files changed, 95 insertions(+)
> create mode 100644 drivers/media/platform/qcom/video_drv_helper/Makefile
> create mode 100644 drivers/media/platform/qcom/video_drv_helper/video_drv_helper.c
> create mode 100644 drivers/media/platform/qcom/video_drv_helper/video_drv_helper.h
>
> diff --git a/drivers/media/platform/qcom/Makefile b/drivers/media/platform/qcom/Makefile
> index ea2221a202c0..15accde3bd67 100644
> --- a/drivers/media/platform/qcom/Makefile
> +++ b/drivers/media/platform/qcom/Makefile
> @@ -2,3 +2,4 @@
> obj-y += camss/
> obj-y += iris/
> obj-y += venus/
> +obj-y += video_drv_helper/
> diff --git a/drivers/media/platform/qcom/iris/iris_core.h b/drivers/media/platform/qcom/iris/iris_core.h
> index 37fb4919fecc..7108e751ff88 100644
> --- a/drivers/media/platform/qcom/iris/iris_core.h
> +++ b/drivers/media/platform/qcom/iris/iris_core.h
> @@ -107,5 +107,6 @@ struct iris_core {
>
> int iris_core_init(struct iris_core *core);
> void iris_core_deinit(struct iris_core *core);
> +extern bool video_drv_should_bind(struct device *dev, bool is_iris_driver);
>
> #endif
> diff --git a/drivers/media/platform/qcom/iris/iris_probe.c b/drivers/media/platform/qcom/iris/iris_probe.c
> index 954cc7c0cc97..276461ade811 100644
> --- a/drivers/media/platform/qcom/iris/iris_probe.c
> +++ b/drivers/media/platform/qcom/iris/iris_probe.c
> @@ -196,6 +196,9 @@ static int iris_probe(struct platform_device *pdev)
> u64 dma_mask;
> int ret;
>
> + if (!video_drv_should_bind(&pdev->dev, true))
> + return -ENODEV;
Wouldn't it mark the probe as failed and cause dmesg regressions?
> +
> core = devm_kzalloc(&pdev->dev, sizeof(*core), GFP_KERNEL);
> if (!core)
> return -ENOMEM;
> diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c
> index 77d48578ecd2..b38be7812efe 100644
> --- a/drivers/media/platform/qcom/venus/core.c
> +++ b/drivers/media/platform/qcom/venus/core.c
> @@ -369,12 +369,17 @@ static int venus_add_dynamic_nodes(struct venus_core *core)
> static void venus_remove_dynamic_nodes(struct venus_core *core) {}
> #endif
>
> +extern bool video_drv_should_bind(struct device *dev, bool is_iris_driver);
You just defined it in the header. Why is this here?
> +
> static int venus_probe(struct platform_device *pdev)
> {
> struct device *dev = &pdev->dev;
> struct venus_core *core;
> int ret;
>
> + if (!video_drv_should_bind(&pdev->dev, false))
> + return -ENODEV;
Same problems - d,esg regression.
> +
> core = devm_kzalloc(dev, sizeof(*core), GFP_KERNEL);
> if (!core)
> return -ENOMEM;
> diff --git a/drivers/media/platform/qcom/video_drv_helper/Makefile b/drivers/media/platform/qcom/video_drv_helper/Makefile
> new file mode 100644
> index 000000000000..82567e0392fb
> --- /dev/null
> +++ b/drivers/media/platform/qcom/video_drv_helper/Makefile
> @@ -0,0 +1,4 @@
Missing SPDX
> +# Makefile for Video driver helper
> +
> +obj-m := video_drv_helper.o
> +
> diff --git a/drivers/media/platform/qcom/video_drv_helper/video_drv_helper.c b/drivers/media/platform/qcom/video_drv_helper/video_drv_helper.c
> new file mode 100644
> index 000000000000..9009c2906e54
> --- /dev/null
> +++ b/drivers/media/platform/qcom/video_drv_helper/video_drv_helper.c
> @@ -0,0 +1,70 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/*
> + * Copyright (c) 2025 Qualcomm Innovation Center, Inc. All rights reserved.
> + */
> +
> +#include <linux/device.h>
> +#include <linux/module.h>
> +#include <linux/of.h>
> +
> +#include "video_drv_helper.h"
> +
> +/* The venus driver supports only hfi gen1 to communicate with the firmware while
Use Linux generic coding style comment, not netdev.
> + * the iris driver supports both hfi gen1 and hfi gen2.
> + * The support of hfi gen1 is added to the iris driver with the intention that
> + * it can support old gen1 interface based firmware, while enabling gen2 based future SOCs.
> + * With this, the plan is to migrate older SOCs from venus to iris.
> + * As of now, since the iris driver supports only entry level features and doesn't have
> + * feature parity with the venus driver, a runtime-selection is provided to user via
> + * module parameter 'prefer_venus' to select the driver.
> + * This selection is available only for the SoCs which are supported by both venus
> + * and iris eg: SM8250.
> + * When the feature parity is achieved, the plan is to switch the default to point to
> + * the iris driver, then gradually start removing platforms from venus.
> + * Hardware supported by only venus - 8916, 8996, SDM660, SDM845, SC7180, SC7280
> + * Hardware supported by only iris - SM8550
> + * Hardware supported by both venus and iris - SM8250
> + */
> +
> +#if !IS_REACHABLE(CONFIG_VIDEO_QCOM_VENUS) || !IS_REACHABLE(CONFIG_VIDEO_QCOM_IRIS)
> +bool video_drv_should_bind(struct device *dev, bool is_iris_driver)
> +{
> + /* If just a single driver is enabled, use it no matter what */
> + return true;
> +}
> +
> +#else
> +static bool prefer_venus = true;
> +MODULE_PARM_DESC(prefer_venus, "Select whether venus or iris driver should be preferred");
> +module_param(prefer_venus, bool, 0444);
The choice of driver is by module blacklisting, not by failing probes.
I don't understand why this patchset is needed and neither commit msg
nor above longer code comment explain me that. Just blacklist the module.
Best regards,
Krzysztof
next prev parent reply other threads:[~2025-01-29 10:44 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-28 8:04 [RFC PATCH v10 0/2] Add helper module to select video driver Dikshita Agarwal
2025-01-28 8:04 ` [RFC PATCH v10 1/2] media: iris: introduce " Dikshita Agarwal
2025-01-28 16:14 ` Dmitry Baryshkov
2025-01-29 9:53 ` Dikshita Agarwal
2025-01-29 11:27 ` Dmitry Baryshkov
2025-01-29 10:44 ` Krzysztof Kozlowski [this message]
2025-01-31 18:44 ` Abhinav Kumar
2025-02-03 8:22 ` Johan Hovold
2025-02-03 15:16 ` Dmitry Baryshkov
2025-02-03 16:34 ` Krzysztof Kozlowski
2025-02-04 9:35 ` Johan Hovold
2025-02-04 9:31 ` Johan Hovold
2025-02-04 14:55 ` Dmitry Baryshkov
2025-02-04 16:00 ` Johan Hovold
2025-02-04 23:09 ` Dmitry Baryshkov
2025-02-05 6:17 ` Dikshita Agarwal
2025-02-05 8:30 ` Johan Hovold
2025-02-04 15:08 ` Vikash Garodia
2025-02-04 16:05 ` Johan Hovold
2025-01-28 8:04 ` [RFC PATCH v10 2/2] media: iris: enable video driver probe of SM8250 SoC Dikshita Agarwal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5070e1f1-914b-4654-88ef-3566e3eee9ca@kernel.org \
--to=krzk@kernel.org \
--cc=bryan.odonoghue@linaro.org \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.baryshkov@linaro.org \
--cc=hverkuil@xs4all.nl \
--cc=johan@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=krzysztof.kozlowski@linaro.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=lujianhua000@gmail.com \
--cc=mchehab@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=nicolas@ndufresne.ca \
--cc=p.zabel@pengutronix.de \
--cc=quic_abhinavk@quicinc.com \
--cc=quic_dikshita@quicinc.com \
--cc=quic_vgarodia@quicinc.com \
--cc=robh@kernel.org \
--cc=sebastian.fricke@collabora.com \
--cc=stefan.schmidt@linaro.org \
--cc=u.kleine-koenig@baylibre.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox