Commit 0f5796da authored by Krzysztof Kozlowski's avatar Krzysztof Kozlowski Committed by Rob Herring (Arm)
Browse files

cpufreq: dt-platdev: Fix creating device on OPPv1 platforms



Commit 6ea891a6 ("cpufreq: dt-platdev: Simplify with
of_machine_get_match_data()") broke several platforms which did not have
OPPv2 proprety, because it incorrectly checked for device match data
after first matching from "allowlist".  Almost all of "allowlist" match
entries do not have match data and it is expected to create platform
device for them with empty data.

Fix this by first checking if platform is on the allowlist with
of_machine_device_match() and only then taking the match data.  This
duplicates the number of checks (we match against the allowlist twice),
but makes the code here much smaller.

Reported-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
Closes: https://lore.kernel.org/all/CAMuHMdVJD4+J9QpUUs-sX0feKfuPD72CO0dcqN7shvF_UYpZ3Q@mail.gmail.com/


Reported-by: default avatarPavel Pisa <pisa@fel.cvut.cz>
Closes: https://lore.kernel.org/all/6hnk7llbwdezh74h74fhvofbx4t4jihel5kvr6qwx2xuxxbjys@rmwbd7lkhrdz/


Fixes: 6ea891a6 ("cpufreq: dt-platdev: Simplify with of_machine_get_match_data()")
Signed-off-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Tested-by: default avatarPavel Pisa <pisa@fel.cvut.cz>
Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Link: https://patch.msgid.link/20251210051718.132795-2-krzysztof.kozlowski@oss.qualcomm.com


Signed-off-by: default avatarRob Herring (Arm) <robh@kernel.org>
parent 512e1568
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -219,11 +219,12 @@ static bool __init cpu0_node_has_opp_v2_prop(void)

static int __init cpufreq_dt_platdev_init(void)
{
	const void *data;
	const void *data = NULL;

	if (of_machine_device_match(allowlist)) {
		data = of_machine_get_match_data(allowlist);
	if (data)
		goto create_pdev;
	}

	if (cpu0_node_has_opp_v2_prop() && !of_machine_device_match(blocklist))
		goto create_pdev;