]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
interconnect: mediatek: Don't hijack parent device
authorNicolas Frattaroli <nicolas.frattaroli@collabora.com>
Mon, 24 Nov 2025 11:07:01 +0000 (12:07 +0100)
committerGeorgi Djakov <djakov@kernel.org>
Sun, 21 Dec 2025 11:59:47 +0000 (13:59 +0200)
If the intention is that users of the interconnect declare their
relationship to the child icc_emi node of the dvfsrc controller, then
this code never worked. That's because it uses the parent dvfsrc device
as the device it passes to the interconnect core framework, which means
all the OF parsing is broken.

Use the actual device instead, and pass the dvfsrc parent into the
dvfsrc calls.

Fixes: b45293799f75 ("interconnect: mediatek: Add MediaTek MT8183/8195 EMI Interconnect driver")
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
Link: https://lore.kernel.org/r/20251124-mt8196-dvfsrc-v2-12-d9c1334db9f3@collabora.com
Signed-off-by: Georgi Djakov <djakov@kernel.org>
drivers/interconnect/mediatek/icc-emi.c

index 7da740b5fa8d62b9f5736618e854f179934023c2..182aa2b0623af37ea52077b9167d0601cca3117c 100644 (file)
@@ -40,7 +40,7 @@ static int mtk_emi_icc_set(struct icc_node *src, struct icc_node *dst)
        if (unlikely(!src->provider))
                return -EINVAL;
 
-       dev = src->provider->dev;
+       dev = src->provider->dev->parent;
 
        switch (node->ep) {
        case 0:
@@ -97,7 +97,7 @@ int mtk_emi_icc_probe(struct platform_device *pdev)
        if (!data)
                return -ENOMEM;
 
-       provider->dev = pdev->dev.parent;
+       provider->dev = dev;
        provider->set = mtk_emi_icc_set;
        provider->aggregate = mtk_emi_icc_aggregate;
        provider->xlate = of_icc_xlate_onecell;