* [PATCH v3 0/1] cpufreq: ti: Fix probe ordering with k3-socinfo @ 2026-05-27 6:25 Akashdeep Kaur 2026-05-27 6:25 ` [PATCH v3 1/1] cpufreq: ti: Add EPROBE_DEFER for K3 SoCs Akashdeep Kaur 0 siblings, 1 reply; 5+ messages in thread From: Akashdeep Kaur @ 2026-05-27 6:25 UTC (permalink / raw) To: praneeth, nm, vigneshr, rafael, viresh.kumar, linux-pm, linux-kernel Cc: vishalm, sebin.francis, k-willis, a-kaur For K3 SoCs, ti-cpufreq depends on k3-socinfo to provide SoC revision information via soc_device_match(). If ti-cpufreq probes before k3-socinfo, soc_device_match() returns NULL, causing incorrect revision detection and OPP table initialization failures. Add EPROBE_DEFER handling in ti-cpufreq when soc_device_match() fails for K3 SoCs, ensuring k3-socinfo probes first. Changes in v3 - Simplified to single patch (EPROBE_DEFER only) - Changed the logic to detect whether the probe is for am62 family SoCs - Dropped device link patch after analysis as revision information is cached after successful probe. Module reload also works as k3-socinfo stays bound during normal operation - Link to v2: https://lore.kernel.org/all/20260401105404.1194717-1-a-kaur@ti.com/ Changes in v2 - Added DT bindings documentation for ti,soc-info property - Reordered patches: bindings first, then driver changes, then DTS - Link to v1: https://lore.kernel.org/all/20260330120105.2985200-1-a-kaur@ti.com/ Testing - Verified correct probe ordering on AM625, AM62A7, AM62P5 platforms Signed-off-by: Akashdeep Kaur <a-kaur@ti.com> --- Akashdeep Kaur (1): cpufreq: ti: Add EPROBE_DEFER for K3 SoCs drivers/cpufreq/ti-cpufreq.c | 10 ++++++++++ 1 file changed, 10 insertions(+) -- 2.34.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 1/1] cpufreq: ti: Add EPROBE_DEFER for K3 SoCs 2026-05-27 6:25 [PATCH v3 0/1] cpufreq: ti: Fix probe ordering with k3-socinfo Akashdeep Kaur @ 2026-05-27 6:25 ` Akashdeep Kaur 2026-05-27 7:59 ` Zhongqiu Han 0 siblings, 1 reply; 5+ messages in thread From: Akashdeep Kaur @ 2026-05-27 6:25 UTC (permalink / raw) To: praneeth, nm, vigneshr, rafael, viresh.kumar, linux-pm, linux-kernel Cc: vishalm, sebin.francis, k-willis, a-kaur On K3 SoCs, ti-cpufreq relies on k3-socinfo to register the SoC device before soc_device_match() can return valid revision information. If ti-cpufreq probes before k3-socinfo, soc_device_match() returns NULL, leading to incorrect CPU frequency scaling behavior. Defer probe when k3-socinfo hasn't registered the SoC device yet. Signed-off-by: Akashdeep Kaur <a-kaur@ti.com> --- drivers/cpufreq/ti-cpufreq.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/cpufreq/ti-cpufreq.c b/drivers/cpufreq/ti-cpufreq.c index a01abc1622eb..72832898f3f5 100644 --- a/drivers/cpufreq/ti-cpufreq.c +++ b/drivers/cpufreq/ti-cpufreq.c @@ -429,6 +429,7 @@ static int ti_cpufreq_get_efuse(struct ti_cpufreq_data *opp_data, static int ti_cpufreq_get_rev(struct ti_cpufreq_data *opp_data, u32 *revision_value) { + const struct of_device_id *match; struct device *dev = opp_data->cpu_dev; u32 revision; int ret; @@ -441,6 +442,15 @@ static int ti_cpufreq_get_rev(struct ti_cpufreq_data *opp_data, */ *revision_value = 0x1; goto done; + } else { + /* Check if we're on a K3 SoC that needs k3-socinfo */ + match = dev_get_platdata(dev); + if (match && !strncmp(match->compatible, "ti,am62", 7)) { + /* SoC info not ready yet, defer */ + dev_dbg(opp_data->cpu_dev, + "Failed to get SoC info, deferring probe\n"); + return -EPROBE_DEFER; + } } ret = regmap_read(opp_data->syscon, opp_data->soc_data->rev_offset, -- 2.34.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v3 1/1] cpufreq: ti: Add EPROBE_DEFER for K3 SoCs 2026-05-27 6:25 ` [PATCH v3 1/1] cpufreq: ti: Add EPROBE_DEFER for K3 SoCs Akashdeep Kaur @ 2026-05-27 7:59 ` Zhongqiu Han 2026-05-28 13:26 ` Akashdeep Kaur 0 siblings, 1 reply; 5+ messages in thread From: Zhongqiu Han @ 2026-05-27 7:59 UTC (permalink / raw) To: Akashdeep Kaur, praneeth, nm, vigneshr, rafael, viresh.kumar, linux-pm, linux-kernel Cc: vishalm, sebin.francis, k-willis, zhongqiu.han On 5/27/2026 2:25 PM, Akashdeep Kaur wrote: > On K3 SoCs, ti-cpufreq relies on k3-socinfo to register the SoC > device before soc_device_match() can return valid revision > information. If ti-cpufreq probes before k3-socinfo, > soc_device_match() returns NULL, leading to incorrect CPU frequency > scaling behavior. > Defer probe when k3-socinfo hasn't registered the SoC device yet. > > Signed-off-by: Akashdeep Kaur <a-kaur@ti.com> > --- > drivers/cpufreq/ti-cpufreq.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/drivers/cpufreq/ti-cpufreq.c b/drivers/cpufreq/ti-cpufreq.c > index a01abc1622eb..72832898f3f5 100644 > --- a/drivers/cpufreq/ti-cpufreq.c > +++ b/drivers/cpufreq/ti-cpufreq.c > @@ -429,6 +429,7 @@ static int ti_cpufreq_get_efuse(struct ti_cpufreq_data *opp_data, > static int ti_cpufreq_get_rev(struct ti_cpufreq_data *opp_data, > u32 *revision_value) > { > + const struct of_device_id *match; > struct device *dev = opp_data->cpu_dev; > u32 revision; > int ret; > @@ -441,6 +442,15 @@ static int ti_cpufreq_get_rev(struct ti_cpufreq_data *opp_data, > */ > *revision_value = 0x1; > goto done; > + } else { > + /* Check if we're on a K3 SoC that needs k3-socinfo */ > + match = dev_get_platdata(dev); Hi Akashdeep, Just to double-check: here 'dev' is 'opp_data->cpu_dev' (get_cpu_device(0)), not 'pdev->dev', right? In that case, would the 'struct of_device_id' match data actually be associated with the ti-cpufreq platform device rather than the CPU device? Do you think it would be reasonable to add a boolean `needs_k3_socinfo` flag to `struct ti_cpufreq_soc_data` (similar to the existing multi_regulator pattern), and check `opp_data->soc_data->needs_k3_socinfo` instead? > + if (match && !strncmp(match->compatible, "ti,am62", 7)) { > + /* SoC info not ready yet, defer */ > + dev_dbg(opp_data->cpu_dev, > + "Failed to get SoC info, deferring probe\n"); > + return -EPROBE_DEFER; > + } > } > > ret = regmap_read(opp_data->syscon, opp_data->soc_data->rev_offset, -- Thx and BRs, Zhongqiu Han ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v3 1/1] cpufreq: ti: Add EPROBE_DEFER for K3 SoCs 2026-05-27 7:59 ` Zhongqiu Han @ 2026-05-28 13:26 ` Akashdeep Kaur 2026-06-01 3:31 ` Zhongqiu Han 0 siblings, 1 reply; 5+ messages in thread From: Akashdeep Kaur @ 2026-05-28 13:26 UTC (permalink / raw) To: Zhongqiu Han, praneeth, nm, vigneshr, rafael, viresh.kumar, linux-pm, linux-kernel Cc: vishalm, sebin.francis, k-willis Hi Han, On 27/05/26 13:29, Zhongqiu Han wrote: > On 5/27/2026 2:25 PM, Akashdeep Kaur wrote: >> On K3 SoCs, ti-cpufreq relies on k3-socinfo to register the SoC >> device before soc_device_match() can return valid revision >> information. If ti-cpufreq probes before k3-socinfo, >> soc_device_match() returns NULL, leading to incorrect CPU frequency ... >> u32 revision; >> int ret; >> @@ -441,6 +442,15 @@ static int ti_cpufreq_get_rev(struct >> ti_cpufreq_data *opp_data, >> */ >> *revision_value = 0x1; >> goto done; >> + } else { >> + /* Check if we're on a K3 SoC that needs k3-socinfo */ >> + match = dev_get_platdata(dev); > > > Hi Akashdeep, > > Just to double-check: here 'dev' is 'opp_data->cpu_dev' > (get_cpu_device(0)), not 'pdev->dev', right? > > In that case, would the 'struct of_device_id' match data actually be > associated with the ti-cpufreq platform device rather than the CPU > device? > > Do you think it would be reasonable to add a boolean > `needs_k3_socinfo` flag to `struct ti_cpufreq_soc_data` (similar to the > existing multi_regulator pattern), and check > `opp_data->soc_data->needs_k3_socinfo` instead? Good catch!! I think the approach to use needs_k3_socinfo is good, i have respinned the series with this approach, please take a look. > > > >> + if (match && !strncmp(match->compatible, "ti,am62", 7)) { >> + /* SoC info not ready yet, defer */ >> + dev_dbg(opp_data->cpu_dev, >> + "Failed to get SoC info, deferring probe\n"); >> + return -EPROBE_DEFER; >> + } >> } >> ret = regmap_read(opp_data->syscon, opp_data->soc_data->rev_offset, > > Thanks and Regards, Akashdeep Kaur ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v3 1/1] cpufreq: ti: Add EPROBE_DEFER for K3 SoCs 2026-05-28 13:26 ` Akashdeep Kaur @ 2026-06-01 3:31 ` Zhongqiu Han 0 siblings, 0 replies; 5+ messages in thread From: Zhongqiu Han @ 2026-06-01 3:31 UTC (permalink / raw) To: Akashdeep Kaur, praneeth, nm, vigneshr, rafael, viresh.kumar, linux-pm, linux-kernel Cc: vishalm, sebin.francis, k-willis, zhongqiu.han On 5/28/2026 9:26 PM, Akashdeep Kaur wrote: > Hi Han, > > On 27/05/26 13:29, Zhongqiu Han wrote: >> On 5/27/2026 2:25 PM, Akashdeep Kaur wrote: >>> On K3 SoCs, ti-cpufreq relies on k3-socinfo to register the SoC >>> device before soc_device_match() can return valid revision >>> information. If ti-cpufreq probes before k3-socinfo, >>> soc_device_match() returns NULL, leading to incorrect CPU frequency > ... >>> u32 revision; >>> int ret; >>> @@ -441,6 +442,15 @@ static int ti_cpufreq_get_rev(struct >>> ti_cpufreq_data *opp_data, >>> */ >>> *revision_value = 0x1; >>> goto done; >>> + } else { >>> + /* Check if we're on a K3 SoC that needs k3-socinfo */ >>> + match = dev_get_platdata(dev); >> >> >> Hi Akashdeep, >> >> Just to double-check: here 'dev' is 'opp_data->cpu_dev' >> (get_cpu_device(0)), not 'pdev->dev', right? >> >> In that case, would the 'struct of_device_id' match data actually be >> associated with the ti-cpufreq platform device rather than the CPU >> device? >> >> Do you think it would be reasonable to add a boolean >> `needs_k3_socinfo` flag to `struct ti_cpufreq_soc_data` (similar to the >> existing multi_regulator pattern), and check >> `opp_data->soc_data->needs_k3_socinfo` instead? > > Good catch!! I think the approach to use needs_k3_socinfo is good, i > have respinned the series with this approach, please take a look. Thanks, Akashdeep. I've shared my comments on v4. >> >> >> >>> + if (match && !strncmp(match->compatible, "ti,am62", 7)) { >>> + /* SoC info not ready yet, defer */ >>> + dev_dbg(opp_data->cpu_dev, >>> + "Failed to get SoC info, deferring probe\n"); >>> + return -EPROBE_DEFER; >>> + } >>> } >>> ret = regmap_read(opp_data->syscon, opp_data->soc_data- >>> >rev_offset, >> >> > > Thanks and Regards, > Akashdeep Kaur -- Thx and BRs, Zhongqiu Han ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-06-01 3:31 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2026-05-27 6:25 [PATCH v3 0/1] cpufreq: ti: Fix probe ordering with k3-socinfo Akashdeep Kaur 2026-05-27 6:25 ` [PATCH v3 1/1] cpufreq: ti: Add EPROBE_DEFER for K3 SoCs Akashdeep Kaur 2026-05-27 7:59 ` Zhongqiu Han 2026-05-28 13:26 ` Akashdeep Kaur 2026-06-01 3:31 ` Zhongqiu Han
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®