On Fri, Oct 04, 2024 at 01:33:30PM GMT, Manikanta Mylavarapu wrote: > From: Devi Priya <quic_devipriy@xxxxxxxxxxx> > > Add Networking Sub System Clock Controller(NSSCC) driver for ipq9574 based > devices. > > Signed-off-by: Devi Priya <quic_devipriy@xxxxxxxxxxx> > Signed-off-by: Manikanta Mylavarapu <quic_mmanikan@xxxxxxxxxxx> > --- > Changes in V6: > - Remove 'nsscc_ipq9574_desc' and use 'nss_cc_ipq9574_desc' in > probe() > - Drop of_clk_get() and clk_prepare_enable() in probe() because > ethernet node will subscribe to GCC_NSSCC_CLK and enable it. Does the cllock supply the clock controller? If not, it should be dropped from bindings too. > - Drop Tested-by tag > > drivers/clk/qcom/Kconfig | 7 + > drivers/clk/qcom/Makefile | 1 + > drivers/clk/qcom/nsscc-ipq9574.c | 3084 ++++++++++++++++++++++++++++++ > 3 files changed, 3092 insertions(+) > create mode 100644 drivers/clk/qcom/nsscc-ipq9574.c > > diff --git a/drivers/clk/qcom/Kconfig b/drivers/clk/qcom/Kconfig > index a3e2a09e2105..b9a5cc9fd8c8 100644 > --- a/drivers/clk/qcom/Kconfig > +++ b/drivers/clk/qcom/Kconfig > @@ -255,6 +255,13 @@ config IPQ_GCC_9574 > i2c, USB, SD/eMMC, etc. Select this for the root clock > of ipq9574. > > +config IPQ_NSSCC_9574 > + tristate "IPQ9574 NSS Clock Controller" > + depends on ARM64 || COMPILE_TEST > + depends on IPQ_GCC_9574 > + help > + Support for NSS clock controller on ipq9574 devices. > + > config IPQ_NSSCC_QCA8K > tristate "QCA8K(QCA8386 or QCA8084) NSS Clock Controller" > depends on MDIO_BUS > diff --git a/drivers/clk/qcom/Makefile b/drivers/clk/qcom/Makefile > index 2b378667a63f..65b825a54c45 100644 > --- a/drivers/clk/qcom/Makefile > +++ b/drivers/clk/qcom/Makefile > @@ -36,6 +36,7 @@ obj-$(CONFIG_IPQ_GCC_6018) += gcc-ipq6018.o > obj-$(CONFIG_IPQ_GCC_806X) += gcc-ipq806x.o > obj-$(CONFIG_IPQ_GCC_8074) += gcc-ipq8074.o > obj-$(CONFIG_IPQ_GCC_9574) += gcc-ipq9574.o > +obj-$(CONFIG_IPQ_NSSCC_9574) += nsscc-ipq9574.o > obj-$(CONFIG_IPQ_LCC_806X) += lcc-ipq806x.o > obj-$(CONFIG_IPQ_NSSCC_QCA8K) += nsscc-qca8k.o > obj-$(CONFIG_MDM_GCC_9607) += gcc-mdm9607.o > diff --git a/drivers/clk/qcom/nsscc-ipq9574.c b/drivers/clk/qcom/nsscc-ipq9574.c > new file mode 100644 > index 000000000000..acbd1c3855d2 > --- /dev/null > +++ b/drivers/clk/qcom/nsscc-ipq9574.c > @@ -0,0 +1,3084 @@ > +// SPDX-License-Identifier: GPL-2.0-only > +/* > + * Copyright (c) 2021, The Linux Foundation. All rights reserved. > + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. > + */ > + > +#include <linux/clk.h> > +#include <linux/clk-provider.h> > +#include <linux/err.h> > +#include <linux/interconnect-provider.h> > +#include <linux/kernel.h> > +#include <linux/module.h> > +#include <linux/of.h> > +#include <linux/of_device.h> > +#include <linux/regmap.h> > +#include <linux/platform_device.h> > + > +#include <dt-bindings/clock/qcom,ipq9574-nsscc.h> > +#include <dt-bindings/interconnect/qcom,ipq9574.h> > +#include <dt-bindings/reset/qcom,ipq9574-nsscc.h> > + > +#include "clk-alpha-pll.h" > +#include "clk-branch.h" > +#include "clk-pll.h" > +#include "clk-rcg.h" > +#include "clk-regmap.h" > +#include "clk-regmap-divider.h" > +#include "clk-regmap-mux.h" > +#include "common.h" > +#include "reset.h" > + > +/* Need to match the order of clocks in DT binding */ > +enum { > + DT_XO, > + DT_BIAS_PLL_CC_CLK, > + DT_BIAS_PLL_NSS_NOC_CLK, > + DT_BIAS_PLL_UBI_NC_CLK, > + DT_GCC_GPLL0_OUT_AUX, > + DT_UNIPHY0_NSS_RX_CLK, > + DT_UNIPHY0_NSS_TX_CLK, > + DT_UNIPHY1_NSS_RX_CLK, > + DT_UNIPHY1_NSS_TX_CLK, > + DT_UNIPHY2_NSS_RX_CLK, > + DT_UNIPHY2_NSS_TX_CLK, > +}; > + I didn't check the driver, but LGTM. -- With best wishes Dmitry