From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
To: Alexandre Mergnat <amergnat@baylibre.com>, chunkuang.hu@kernel.org
Cc: p.zabel@pengutronix.de, airlied@gmail.com, simona@ffwll.ch,
maarten.lankhorst@linux.intel.com, mripard@kernel.org,
tzimmermann@suse.de, robh@kernel.org, krzk+dt@kernel.org,
conor+dt@kernel.org, matthias.bgg@gmail.com, ck.hu@mediatek.com,
jitao.shi@mediatek.com, jie.qiu@mediatek.com,
junzhi.zhao@mediatek.com, dri-devel@lists.freedesktop.org,
linux-mediatek@lists.infradead.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, kernel@collabora.com,
dmitry.baryshkov@linaro.org, lewis.liao@mediatek.com,
ives.chenjh@mediatek.com, tommyyl.chen@mediatek.com,
jason-jh.lin@mediatek.com
Subject: Re: [PATCH v5 21/34] drm/mediatek: mtk_hdmi: Move CEC device parsing in new function
Date: Mon, 10 Feb 2025 12:44:26 +0100 [thread overview]
Message-ID: <59f611c5-1dcf-4667-bb34-c7f57b341f49@collabora.com> (raw)
In-Reply-To: <18fd9544-f9ef-4f58-9a8a-026737c26b94@baylibre.com>
Il 07/02/25 15:45, Alexandre Mergnat ha scritto:
>
>
> On 13/01/2025 15:52, AngeloGioacchino Del Regno wrote:
>> Move the CEC device parsing logic to a new function called
>> mtk_hdmi_get_cec_dev(), and move the parsing action to the end
>> of mtk_hdmi_dt_parse_pdata(), allowing to remove gotos in this
>> function, reducing code size and improving readability.
>
> Why CEC device parsing logic isn't done mtk_cec.c driver ? Then add
> "mtk_cec_get_dev" function to mtk_cec.c too. Finally, call this new function in
> mtk_hdmi_probe after mtk_hdmi_dt_parse_pdata().
>
>>
>> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
>> ---
>> drivers/gpu/drm/mediatek/mtk_hdmi.c | 84 ++++++++++++++---------------
>> 1 file changed, 40 insertions(+), 44 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/
>> mtk_hdmi.c
>> index 48c37294dcbb..eb285ec394a3 100644
>> --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
>> +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
>> @@ -1367,24 +1367,16 @@ static const struct drm_bridge_funcs
>> mtk_hdmi_bridge_funcs = {
>> .edid_read = mtk_hdmi_bridge_edid_read,
>> };
>> -static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi,
>> - struct platform_device *pdev)
>> +static int mtk_hdmi_get_cec_dev(struct mtk_hdmi *hdmi, struct device *dev,
>> struct device_node *np)
>> {
>> - struct device *dev = &pdev->dev;
>> - struct device_node *np = dev->of_node;
>> - struct device_node *remote, *i2c_np;
>> struct platform_device *cec_pdev;
>> - struct regmap *regmap;
>> + struct device_node *cec_np;
>> int ret;
>> - ret = mtk_hdmi_get_all_clk(hdmi, np);
>> - if (ret)
>> - return dev_err_probe(dev, ret, "Failed to get clocks\n");
>> -
>> /* The CEC module handles HDMI hotplug detection */
>> cec_np = of_get_compatible_child(np->parent, "mediatek,mt8173-cec");
>
> If it's done in mtk_cec.c, the hardcoded compatible string method will be replaced
> by of_match_table (mtk_cec_of_ids), which is scalable and consistent.
>
That's true, yes, but the CEC driver is not supposed to be in drivers/drm/mediatek
in the first place - that should be partially refactored and moved to where the CEC
drivers belong: drivers/media/cec/platform/mediatek/
This is something that is currently in the process of making here, as the CEC v2
driver will be added there, and the CECv1 driver will be moved along side of the
new one, making things finally correct.
Of course, this code will be retained to keep retrocompatibility with older device
trees, and if I move it to mtk_cec, I will have to move it back here after the
CEC driver is moved to the correct location.
For the reasons explained above, I disagree about moving this code to the CEC
driver.
Cheers,
Angelo
>> if (!cec_np)
>> - return dev_err_probe(dev, -EINVAL, "Failed to find CEC node\n");
>> + return dev_err_probe(dev, -ENOTSUPP, "Failed to find CEC node\n");
>> cec_pdev = of_find_device_by_node(cec_np);
>> if (!cec_pdev) {
>> @@ -1393,65 +1385,69 @@ static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi,
>> return -EPROBE_DEFER;
>> }
>> of_node_put(cec_np);
>> - hdmi->cec_dev = &cec_pdev->dev;
>> /*
>> * The mediatek,syscon-hdmi property contains a phandle link to the
>> * MMSYS_CONFIG device and the register offset of the HDMI_SYS_CFG
>> * registers it contains.
>> */
>> - regmap = syscon_regmap_lookup_by_phandle(np, "mediatek,syscon-hdmi");
>> - ret = of_property_read_u32_index(np, "mediatek,syscon-hdmi", 1,
>> - &hdmi->sys_offset);
>> - if (IS_ERR(regmap))
>> - ret = PTR_ERR(regmap);
>> - if (ret) {
>> - dev_err_probe(dev, ret,
>> - "Failed to get system configuration registers\n");
>> - goto put_device;
>> - }
>> - hdmi->sys_regmap = regmap;
>> + hdmi->sys_regmap = syscon_regmap_lookup_by_phandle(np, "mediatek,syscon-hdmi");
>> + if (IS_ERR(hdmi->sys_regmap))
>> + return PTR_ERR(hdmi->sys_regmap);
>> +
>> + ret = of_property_read_u32_index(np, "mediatek,syscon-hdmi", 1, &hdmi-
>> >sys_offset);
>> + if (ret)
>> + return dev_err_probe(dev, ret,
>> + "Failed to get system configuration registers\n");
>> +
>> + hdmi->cec_dev = &cec_pdev->dev;
>> + return 0;
>> +}
>> +
>> +static int mtk_hdmi_dt_parse_pdata(struct mtk_hdmi *hdmi,
>> + struct platform_device *pdev)
>> +{
>> + struct device *dev = &pdev->dev;
>> + struct device_node *np = dev->of_node;
>> + struct device_node *remote, *i2c_np;
>> + int ret;
>> +
>> + ret = mtk_hdmi_get_all_clk(hdmi, np);
>> + if (ret)
>> + return dev_err_probe(dev, ret, "Failed to get clocks\n");
>> hdmi->regs = device_node_to_regmap(dev->of_node);
>> - if (IS_ERR(hdmi->regs)) {
>> - ret = PTR_ERR(hdmi->regs);
>> - goto put_device;
>> - }
>> + if (IS_ERR(hdmi->regs))
>> + return PTR_ERR(hdmi->regs);
>> remote = of_graph_get_remote_node(np, 1, 0);
>> - if (!remote) {
>> - ret = -EINVAL;
>> - goto put_device;
>> - }
>> + if (!remote)
>> + return -EINVAL;
>> if (!of_device_is_compatible(remote, "hdmi-connector")) {
>> hdmi->next_bridge = of_drm_find_bridge(remote);
>> if (!hdmi->next_bridge) {
>> dev_err(dev, "Waiting for external bridge\n");
>> of_node_put(remote);
>> - ret = -EPROBE_DEFER;
>> - goto put_device;
>> + return -EPROBE_DEFER;
>> }
>> }
>> i2c_np = of_parse_phandle(remote, "ddc-i2c-bus", 0);
>> of_node_put(remote);
>> - if (!i2c_np) {
>> - ret = dev_err_probe(dev, -EINVAL, "No ddc-i2c-bus in connector\n");
>> - goto put_device;
>> - }
>> + if (!i2c_np)
>> + return dev_err_probe(dev, -EINVAL, "No ddc-i2c-bus in connector\n");
>> hdmi->ddc_adpt = of_find_i2c_adapter_by_node(i2c_np);
>> of_node_put(i2c_np);
>> - if (!hdmi->ddc_adpt) {
>> - ret = dev_err_probe(dev, -EINVAL, "Failed to get ddc i2c adapter by
>> node\n");
>> - goto put_device;
>> - }
>> + if (!hdmi->ddc_adpt)
>> + return dev_err_probe(dev, -EINVAL, "Failed to get ddc i2c adapter by
>> node\n");
>> +
>> + ret = mtk_hdmi_get_cec_dev(hdmi, dev, np);
>> + if (ret)
>> + return ret;
>> return 0;
>> -put_device:
>> - put_device(hdmi->cec_dev);
>> - return ret;
>> }
>> /*
>
next prev parent reply other threads:[~2025-02-10 11:44 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-13 14:51 [PATCH v5 00/34] Add support for MT8195/88 DPI, HDMIv2 and DDCv2 AngeloGioacchino Del Regno
2025-01-13 14:51 ` [PATCH v5 01/34] dt-bindings: display: mediatek: dpi: Add MT8195 and MT8188 compat AngeloGioacchino Del Regno
2025-01-13 14:52 ` [PATCH v5 02/34] drm/mediatek: mtk_dpi: Add support for Pattern Generator in debugfs AngeloGioacchino Del Regno
2025-01-13 14:52 ` [PATCH v5 03/34] drm/mediatek: mtk_dpi: Use an array for pixclk factor calculation AngeloGioacchino Del Regno
2025-01-13 14:52 ` [PATCH v5 04/34] drm/mediatek: mtk_dpi: Move pixel clock setting flow to function AngeloGioacchino Del Regno
2025-01-24 9:02 ` CK Hu (胡俊光)
2025-01-13 14:52 ` [PATCH v5 05/34] drm/mediatek: mtk_dpi: Add checks for reg_h_fre_con existence AngeloGioacchino Del Regno
2025-01-13 14:52 ` [PATCH v5 06/34] drm/mediatek: Add support for MT8195 Digital Parallel Interface AngeloGioacchino Del Regno
2025-01-24 9:00 ` CK Hu (胡俊光)
2025-01-27 8:56 ` AngeloGioacchino Del Regno
2025-01-13 14:52 ` [PATCH v5 07/34] dt-bindings: display: mediatek: Add binding for HDMIv2 DDC AngeloGioacchino Del Regno
2025-02-10 7:32 ` CK Hu (胡俊光)
2025-01-13 14:52 ` [PATCH v5 08/34] dt-bindings: display: mediatek: Add binding for MT8195 HDMI-TX v2 AngeloGioacchino Del Regno
2025-02-10 7:29 ` CK Hu (胡俊光)
2025-01-13 14:52 ` [PATCH v5 09/34] drm/mediatek: mtk_cec: Switch to register as module_platform_driver AngeloGioacchino Del Regno
2025-02-07 14:20 ` Alexandre Mergnat
2025-02-10 6:58 ` CK Hu (胡俊光)
2025-02-10 16:40 ` AngeloGioacchino Del Regno
2025-01-13 14:52 ` [PATCH v5 10/34] drm/mediatek: mtk_hdmi_ddc: " AngeloGioacchino Del Regno
2025-02-07 14:20 ` Alexandre Mergnat
2025-02-10 7:01 ` CK Hu (胡俊光)
2025-02-10 11:50 ` AngeloGioacchino Del Regno
2025-01-13 14:52 ` [PATCH v5 11/34] drm/mediatek: mtk_hdmi: Convert to module_platform_driver macro AngeloGioacchino Del Regno
2025-02-07 14:21 ` Alexandre Mergnat
2025-01-13 14:52 ` [PATCH v5 12/34] drm/mediatek: mtk_hdmi: Unregister audio platform device on failure AngeloGioacchino Del Regno
2025-01-22 1:23 ` CK Hu (胡俊光)
2025-01-13 14:52 ` [PATCH v5 13/34] drm/mediatek: hdmi: Use regmap instead of iomem for main registers AngeloGioacchino Del Regno
2025-01-13 14:52 ` [PATCH v5 14/34] drm/mediatek: mtk_hdmi: Fix typo for aud_sampe_size member AngeloGioacchino Del Regno
2025-01-13 14:52 ` [PATCH v5 15/34] drm/mediatek: mtk_hdmi: Disgregate function mtk_hdmi_audio_set_param() AngeloGioacchino Del Regno
2025-01-24 7:59 ` CK Hu (胡俊光)
2025-01-13 14:52 ` [PATCH v5 16/34] drm/mediatek: mtk_hdmi: Move audio params selection to new function AngeloGioacchino Del Regno
2025-01-24 8:09 ` CK Hu (胡俊光)
2025-01-13 14:52 ` [PATCH v5 17/34] drm/mediatek: mtk_hdmi: Move plugged_cb/codec_dev setting " AngeloGioacchino Del Regno
2025-01-13 14:52 ` [PATCH v5 18/34] drm/mediatek: mtk_hdmi: Move N/CTS " AngeloGioacchino Del Regno
2025-01-13 14:52 ` [PATCH v5 19/34] drm/mediatek: mtk_hdmi: Move vendor/product strings to drm_bridge AngeloGioacchino Del Regno
2025-01-13 14:52 ` [PATCH v5 20/34] drm/mediatek: mtk_hdmi: Use dev_err_probe() in mtk_hdmi_dt_parse_pdata() AngeloGioacchino Del Regno
2025-01-24 8:24 ` CK Hu (胡俊光)
2025-01-27 11:42 ` AngeloGioacchino Del Regno
2025-02-07 5:24 ` CK Hu (胡俊光)
2025-01-13 14:52 ` [PATCH v5 21/34] drm/mediatek: mtk_hdmi: Move CEC device parsing in new function AngeloGioacchino Del Regno
2025-02-07 14:45 ` Alexandre Mergnat
2025-02-10 11:44 ` AngeloGioacchino Del Regno [this message]
2025-02-10 6:22 ` CK Hu (胡俊光)
2025-01-13 14:52 ` [PATCH v5 22/34] drm/mediatek: mtk_hdmi: Remove unused members of struct mtk_hdmi AngeloGioacchino Del Regno
2025-01-13 14:52 ` [PATCH v5 23/34] drm/mediatek: mtk_hdmi: Move output init to mtk_hdmi_register_audio_driver() AngeloGioacchino Del Regno
2025-02-07 5:46 ` CK Hu (胡俊光)
2025-02-10 11:15 ` AngeloGioacchino Del Regno
2025-02-11 2:25 ` CK Hu (胡俊光)
2025-01-13 14:52 ` [PATCH v5 24/34] drm/mediatek: mtk_hdmi: Use devm managed version of drm_bridge_add AngeloGioacchino Del Regno
2025-01-13 14:52 ` [PATCH v5 25/34] drm/mediatek: mtk_hdmi: Remove ifdef for CONFIG_PM_SLEEP AngeloGioacchino Del Regno
2025-02-07 6:10 ` CK Hu (胡俊光)
2025-02-10 11:43 ` AngeloGioacchino Del Regno
2025-02-11 2:16 ` CK Hu (胡俊光)
2025-01-13 14:52 ` [PATCH v5 26/34] drm/mediatek: mtk_hdmi: Remove goto in mtk_hdmi_clk_enable_audio() AngeloGioacchino Del Regno
2025-01-13 14:52 ` [PATCH v5 27/34] drm/mediatek: mtk_hdmi: Cleanup function mtk_hdmi_resume() AngeloGioacchino Del Regno
2025-02-07 6:04 ` CK Hu (胡俊光)
2025-02-10 11:23 ` AngeloGioacchino Del Regno
2025-02-11 2:13 ` CK Hu (胡俊光)
2025-01-13 14:52 ` [PATCH v5 28/34] drm/mediatek: mtk_hdmi: Improve mtk_hdmi_get_all_clk() flexibility AngeloGioacchino Del Regno
2025-02-07 6:26 ` CK Hu (胡俊光)
2025-01-13 14:52 ` [PATCH v5 29/34] drm/mediatek: mtk_hdmi: Split driver and add common probe function AngeloGioacchino Del Regno
2025-02-10 2:18 ` CK Hu (胡俊光)
2025-02-10 17:11 ` AngeloGioacchino Del Regno
2025-01-13 14:52 ` [PATCH v5 30/34] drm/mediatek: mtk_hdmi_common: Assign DDC adapter pointer to bridge AngeloGioacchino Del Regno
2025-01-13 14:52 ` [PATCH v5 31/34] drm/mediatek: mtk_hdmi_common: Add OP_HDMI if helper funcs assigned AngeloGioacchino Del Regno
2025-01-13 14:52 ` [PATCH v5 32/34] drm/mediatek: Introduce HDMI/DDC v2 for MT8195/MT8188 AngeloGioacchino Del Regno
2025-01-17 16:54 ` kernel test robot
2025-01-17 18:41 ` kernel test robot
2025-01-17 22:04 ` kernel test robot
2025-01-20 12:48 ` AngeloGioacchino Del Regno
2025-01-13 14:52 ` [PATCH v5 33/34] drm/mediatek: mtk_hdmi_common: Add var to enable interlaced modes AngeloGioacchino Del Regno
2025-01-13 14:52 ` [PATCH v5 34/34] drm/mediatek: mtk_hdmi_v2: Add debugfs ops and implement ABIST AngeloGioacchino Del Regno
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=59f611c5-1dcf-4667-bb34-c7f57b341f49@collabora.com \
--to=angelogioacchino.delregno@collabora.com \
--cc=airlied@gmail.com \
--cc=amergnat@baylibre.com \
--cc=chunkuang.hu@kernel.org \
--cc=ck.hu@mediatek.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.baryshkov@linaro.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=ives.chenjh@mediatek.com \
--cc=jason-jh.lin@mediatek.com \
--cc=jie.qiu@mediatek.com \
--cc=jitao.shi@mediatek.com \
--cc=junzhi.zhao@mediatek.com \
--cc=kernel@collabora.com \
--cc=krzk+dt@kernel.org \
--cc=lewis.liao@mediatek.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=matthias.bgg@gmail.com \
--cc=mripard@kernel.org \
--cc=p.zabel@pengutronix.de \
--cc=robh@kernel.org \
--cc=simona@ffwll.ch \
--cc=tommyyl.chen@mediatek.com \
--cc=tzimmermann@suse.de \
/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