On 6.12.2023 15:35, Stephan Gerhold wrote: > From: Adam Skladowski <a39.skl@xxxxxxxxx> > > Add driver for interconnect busses found in MSM8909 based platforms. > The topology consists of three NoCs that are partially controlled by a > RPM processor. > > In the downstream/vendor kernel from Qualcomm there is an additional > "mm-snoc". However, it doesn't have a separate RPM clock assigned. It > looks like this is actually the same NoC in hardware and the "mm-snoc" > was only defined to assign a different "qcom,util-fact". In mainline we > can represent this by assigning the equivalent "ab_coeff" to all the > nodes that are part of "mm-snoc" downstream. Worth mentioning that snoc_mm used the same clock as snoc, which is not obvious with some of these older designs: static DEFINE_CLK_VOTER(snoc_msmbus_a_clk, &snoc_a_clk.c, LONG_MAX); static DEFINE_CLK_VOTER(snoc_mm_msmbus_a_clk, &snoc_a_clk.c, LONG_MAX); [...] > + > +static struct platform_driver msm8909_noc_driver = { > + .probe = qnoc_probe, > + .remove = qnoc_remove, > + .driver = { > + .name = "qnoc-msm8909", > + .of_match_table = msm8909_noc_of_match, > + .sync_state = icc_sync_state, > + }, > +}; > +module_platform_driver(msm8909_noc_driver); And you may want this to be a bit higher up in the food chain! Otherwise I don't see anything obviously wrong, I assume you tested this without clk/pd_ignore_unused, with rpmcc cleanup and can confirm the QoS programming went through without angry resets. Konrad