On 9/30/20 11:16, Jun Nie wrote: > Add driver for the Qualcomm interconnect buses found in MSM8939 based > platforms. The topology consists of four NoCs that are controlled by > a remote processor that collects the aggregated bandwidth for each > master-slave pairs. > > Signed-off-by: Jun Nie <jun.nie@xxxxxxxxxx> > --- > drivers/interconnect/qcom/Kconfig | 9 + > drivers/interconnect/qcom/Makefile | 2 + > drivers/interconnect/qcom/msm8939.c | 355 ++++++++++++++++++++++++++++ > 3 files changed, 366 insertions(+) > create mode 100644 drivers/interconnect/qcom/msm8939.c > > diff --git a/drivers/interconnect/qcom/Kconfig b/drivers/interconnect/qcom/Kconfig > index 25486de5a38d..6395404bfe3f 100644 > --- a/drivers/interconnect/qcom/Kconfig > +++ b/drivers/interconnect/qcom/Kconfig > @@ -17,6 +17,15 @@ config INTERCONNECT_QCOM_MSM8916 > This is a driver for the Qualcomm Network-on-Chip on msm8916-based > platforms. > > +config INTERCONNECT_QCOM_MSM8939 > + tristate "Qualcomm MSM8939 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 msm8939-based > + platforms. > + > config INTERCONNECT_QCOM_MSM8974 > tristate "Qualcomm MSM8974 interconnect driver" > depends on INTERCONNECT_QCOM > diff --git a/drivers/interconnect/qcom/Makefile b/drivers/interconnect/qcom/Makefile > index f5e803489de0..84b75022f0d8 100644 > --- a/drivers/interconnect/qcom/Makefile > +++ b/drivers/interconnect/qcom/Makefile > @@ -2,6 +2,7 @@ > > icc-bcm-voter-objs := bcm-voter.o > qnoc-msm8916-objs := msm8916.o > +qnoc-msm8939-objs := msm8939.o > qnoc-msm8974-objs := msm8974.o > icc-osm-l3-objs := osm-l3.o > qnoc-qcs404-objs := qcs404.o > @@ -13,6 +14,7 @@ icc-smd-rpm-objs := smd-rpm.o icc-rpm.o > > obj-$(CONFIG_INTERCONNECT_QCOM_BCM_VOTER) += icc-bcm-voter.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 > obj-$(CONFIG_INTERCONNECT_QCOM_OSM_L3) += icc-osm-l3.o > obj-$(CONFIG_INTERCONNECT_QCOM_QCS404) += qnoc-qcs404.o > diff --git a/drivers/interconnect/qcom/msm8939.c b/drivers/interconnect/qcom/msm8939.c > new file mode 100644 > index 000000000000..dfbec30ed149 > --- /dev/null > +++ b/drivers/interconnect/qcom/msm8939.c > @@ -0,0 +1,355 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Copyright (C) 2020 Linaro Ltd > + * Author: Jun Nie <jun.nie@xxxxxxxxxx> > + * With reference of msm8916 interconnect driver of Georgi Djakov. > + */ > + > +#include <linux/clk.h> > +#include <linux/device.h> > +#include <linux/interconnect-provider.h> > +#include <linux/io.h> > +#include <linux/module.h> > +#include <linux/platform_device.h> > +#include <linux/of_device.h> Nit: Move this above platform_device.h to make it sorted. > + > +#include <dt-bindings/interconnect/qcom,msm8939.h> > + > +#include "smd-rpm.h" > +#include "icc-rpm.h" > + [..] > +static const struct of_device_id msm8939_noc_of_match[] = { > + { .compatible = "qcom,msm8939-bimc", .data = &msm8939_bimc }, > + { .compatible = "qcom,msm8939-pcnoc", .data = &msm8939_pcnoc }, > + { .compatible = "qcom,msm8939-snoc", .data = &msm8939_snoc }, > + { .compatible = "qcom,msm8939-snoc-mm", .data = &msm8939_snoc_mm }, > + { } > +}; > +MODULE_DEVICE_TABLE(of, msm8939_noc_of_match); > + > +static struct platform_driver msm8939_noc_driver = { > + .probe = msm8939_qnoc_probe, > + .remove = qnoc_remove, > + .driver = { > + .name = "qnoc-msm8939", > + .of_match_table = msm8939_noc_of_match, The sync_state patches got merged, so please add this: .sync_state = icc_sync_state, Thanks, Georgi > + }, > +}; > +module_platform_driver(msm8939_noc_driver); > +MODULE_AUTHOR("Jun Nie <jun.nie@xxxxxxxxxx>"); > +MODULE_DESCRIPTION("Qualcomm MSM8939 NoC driver"); > +MODULE_LICENSE("GPL v2"); >