On Wed, Dec 6, 2023 at 8:35 AM Stephan Gerhold <stephan.gerhold@xxxxxxxxxxxxxxx> 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. > > Signed-off-by: Adam Skladowski <a39.skl@xxxxxxxxx> > [Stephan: Drop separate mm-snoc that exists downstream since it's > actually the same NoC as SNoC in hardware, add qos_offset for BIMC, > add ab_coeff for mm-snoc nodes and BIMC] > Signed-off-by: Stephan Gerhold <stephan.gerhold@xxxxxxxxxxxxxxx> > --- > drivers/interconnect/qcom/Kconfig | 9 + > drivers/interconnect/qcom/Makefile | 2 + > drivers/interconnect/qcom/msm8909.c | 1329 +++++++++++++++++++++++++++++++++++ > 3 files changed, 1340 insertions(+) > > diff --git a/drivers/interconnect/qcom/Kconfig b/drivers/interconnect/qcom/Kconfig > index 4d15ce2dab16..ad03182b0587 100644 > --- a/drivers/interconnect/qcom/Kconfig > +++ b/drivers/interconnect/qcom/Kconfig > @@ -8,6 +8,15 @@ config INTERCONNECT_QCOM > config INTERCONNECT_QCOM_BCM_VOTER > tristate > > +config INTERCONNECT_QCOM_MSM8909 > + tristate "Qualcomm MSM8909 interconnect driver" > + depends on INTERCONNECT_QCOM > + depends on QCOM_SMD_RPM > + select INTERCONNECT_QCOM_SMD_RPM > + help > + This is a driver for the Qualcomm Network-on-Chip on msm8909-based > + platforms. > + > config INTERCONNECT_QCOM_MSM8916 > tristate "Qualcomm MSM8916 interconnect driver" > depends on INTERCONNECT_QCOM > diff --git a/drivers/interconnect/qcom/Makefile b/drivers/interconnect/qcom/Makefile > index 3a8a6ef67543..69eaddccd4f1 100644 > --- a/drivers/interconnect/qcom/Makefile > +++ b/drivers/interconnect/qcom/Makefile > @@ -4,6 +4,7 @@ obj-$(CONFIG_INTERCONNECT_QCOM) += interconnect_qcom.o > > interconnect_qcom-y := icc-common.o > icc-bcm-voter-objs := bcm-voter.o > +qnoc-msm8909-objs := msm8909.o > qnoc-msm8916-objs := msm8916.o > qnoc-msm8939-objs := msm8939.o > qnoc-msm8974-objs := msm8974.o > @@ -35,6 +36,7 @@ qnoc-x1e80100-objs := x1e80100.o > icc-smd-rpm-objs := smd-rpm.o icc-rpm.o icc-rpm-clocks.o > > obj-$(CONFIG_INTERCONNECT_QCOM_BCM_VOTER) += icc-bcm-voter.o > +obj-$(CONFIG_INTERCONNECT_QCOM_MSM8909) += qnoc-msm8909.o > obj-$(CONFIG_INTERCONNECT_QCOM_MSM8916) += qnoc-msm8916.o > obj-$(CONFIG_INTERCONNECT_QCOM_MSM8939) += qnoc-msm8939.o > obj-$(CONFIG_INTERCONNECT_QCOM_MSM8974) += qnoc-msm8974.o > diff --git a/drivers/interconnect/qcom/msm8909.c b/drivers/interconnect/qcom/msm8909.c > new file mode 100644 > index 000000000000..81335476aa51 > --- /dev/null > +++ b/drivers/interconnect/qcom/msm8909.c > @@ -0,0 +1,1329 @@ > +// SPDX-License-Identifier: GPL-2.0 > + > +#include <linux/clk.h> > +#include <linux/device.h> > +#include <linux/interconnect-provider.h> > +#include <linux/io.h> > +#include <linux/module.h> > +#include <linux/of_device.h> > +#include <linux/of_platform.h> You probably don't need these 2 headers and the implicit includes it makes are dropped now in linux-next. Please check what you actually need and make them explicit. Rob