Re: [PATCH v5 2/2] memory: mtk-smi: mt8188: Add SMI reset and clamp for MT8188
From: Friday Yang (杨阳) <hidden>
Date: 2025-03-19 03:07:08
Also in:
linux-devicetree, linux-mediatek, lkml
On Wed, 2025-03-12 at 13:02 +0100, Krzysztof Kozlowski wrote:
External email : Please do not click links or open attachments until you have verified the sender or the content. On 11/03/2025 13:23, Friday Yang wrote:quoted
static int mtk_smi_device_link_common(struct device *dev, struct device **com_dev) { struct platform_device *smi_com_pdev;@@ -528,6 +598,53 @@ static int mtk_smi_dts_clk_init(struct device*dev, struct mtk_smi *smi, return ret; } +static int mtk_smi_larb_parse_clamp_optional(struct mtk_smi_larb *larb) +{ + struct device *dev = larb->dev; + const struct mtk_smi_larb_gen *larb_gen = larb->larb_gen; + u32 larb_id; + int ret; + + /**Not a kerneldoc
OK, I will fix it like this: /* * Only SMI LARBs ... */
quoted
+ * Only SMI LARBs in camera, image and IPE subsys need to + * apply clamp and reset operations, others can be skipped. + */ + ret = of_property_read_u32(dev->of_node, "mediatek,larb-id", &larb_id);...quoted
static const struct mtk_smi_common_plat mtk_smi_common_mt8192 = { .type = MTK_SMI_GEN2, .has_gals = true,@@ -729,6 +862,7 @@ static const struct of_device_idmtk_smi_common_of_ids[] = { {.compatible = "mediatek,mt8186-smi-common", .data = &mtk_smi_common_mt8186}, {.compatible = "mediatek,mt8188-smi-common-vdo", .data = &mtk_smi_common_mt8188_vdo}, {.compatible = "mediatek,mt8188-smi-common-vpp", .data = &mtk_smi_common_mt8188_vpp}, + {.compatible = "mediatek,mt8188-smi-sub-common", .data = &mtk_smi_sub_common_mt8188}, {.compatible = "mediatek,mt8192-smi-common", .data = &mtk_smi_common_mt8192}, {.compatible = "mediatek,mt8195-smi-common-vdo", .data = &mtk_smi_common_mt8195_vdo}, {.compatible = "mediatek,mt8195-smi-common-vpp", .data = &mtk_smi_common_mt8195_vpp},@@ -787,7 +921,10 @@ static int mtk_smi_common_probe(structplatform_device *pdev) return ret; } - pm_runtime_enable(dev); + ret = devm_pm_runtime_enable(dev); + if (ret) + return ret; + platform_set_drvdata(pdev, common); return 0; }@@ -798,7 +935,6 @@ static void mtk_smi_common_remove(structplatform_device *pdev) if (common->plat->type == MTK_SMI_GEN2_SUB_COMM) device_link_remove(&pdev->dev, common-quoted
smi_common_dev);- pm_runtime_disable(&pdev->dev);Does not look related to this patch. Is it some sort of cleanup to devm?
This 'devm' modification aims to remove 'pm_runtime_disable' and 'err_pm_disable', which would make the code more efficient. If I insist on using 'pm_runtime_enable', I would need to add another 'goto err_pm_disable', which is not an ideal solution. Just as below, ret = mtk_smi_larb_parse_clamp_optional(larb); if (ret) goto err_link_remove; ret = mtk_smi_larb_parse_reset_optional(larb); if (ret) goto err_link_remove; pm_runtime_enable(dev); platform_set_drvdata(pdev, larb); ret = component_add(dev, &mtk_smi_larb_component_ops); if (ret) goto err_pm_disable; return 0; err_pm_disable: pm_runtime_disable(dev); err_link_remove: device_link_remove(dev, larb->smi_common_dev); return ret; Therefore, I prefer to use 'devm_pm_runtime_enable' here. Please let me know if you have any concerns, thanks!
Best regards, Krzysztof