On Mon, Aug 17, 2026 at 03:18:30PM +0200, Konrad Dybcio wrote:
> On 8/15/26 3:25 PM, Shawn Guo wrote:
> > On Nord, ADSP0/1/2 share HPASS-domain resources (PLLs, AG_NOC, RSCp,
> > CESTA, THROTTLE, QTMR) owned by ADSP0, and their firmware cannot
> > tolerate one member being started or stopped independently of the
> > others. Modeling that requires each PAS instance to know which other
> > instances it is grouped with.
>
> [...]
>
> > +static struct qcom_pas_cluster *qcom_pas_cluster_get(struct device_node
> > *node)
> > +{
> > + struct qcom_pas_cluster *cluster;
> > +
> > + mutex_lock(&qcom_pas_cluster_list_lock);
>
> Use scoped mutex guards
Will do in the next version, thanks!
>
> [...]
>
> > +static int qcom_pas_cluster_init(struct qcom_pas *pas, struct device_node
> > *np)
> > +{
> > + struct device_node *root_node;
> > + bool is_root;
> > +
> > + root_node = of_parse_phandle(np, "qcom,cluster-root", 0);
> > + if (!root_node)
> > + return 0;
> > +
> > + is_root = root_node == np;
> > +
> > + /*
> > + * A non-root member is useless without its root: it can never be
> > + * booted, since its boot has to be sequenced after the root's. Reject
> > + * it here rather than at first boot, so that a DT enabling a dependent
> > + * DSP but not the one owning the shared resources fails loudly and
> > + * early.
> > + */
> > + if (!is_root && !of_device_is_available(root_node)) {
>
> Let's use fwnode_device_is_available() instead, even though there's
> megatons of OF-specific calls across the framework
Noted! But this will probably be gone anyway with Krzysztof's comment
that property "qcom,cluster-root" is not really necessary.
Shawn