Message ID | 097e82b0d66570763d64be1715517d8b032fcf95.1702158423.git.daniel@makrotopia.org |
---|---|
State | Not Applicable, archived |
Headers | show |
Series | [v4,1/4] dt-bindings: clock: mediatek: add MT7988 clock IDs | expand |
Context | Check | Description |
---|---|---|
robh/checkpatch | success | |
robh/patch-applied | success |
Il 09/12/23 22:56, Daniel Golle ha scritto: > From: Sam Shih <sam.shih@mediatek.com> > > Add APMIXED, ETH, INFRACFG and TOPCKGEN clock drivers which are > typical MediaTek designs. > > Also add driver for XFIPLL clock generating the 156.25MHz clock for > the XFI SerDes. It needs an undocumented software workaround and has > an unknown internal design. > > Signed-off-by: Sam Shih <sam.shih@mediatek.com> > Signed-off-by: Daniel Golle <daniel@makrotopia.org> > --- > v4: > * make use of existing GATE_MTK_FLAGS macro > * reformat to max. 100 columns > * cosmetics > > v3: use git --from ... > v2: no changes > > > drivers/clk/mediatek/Kconfig | 9 + > drivers/clk/mediatek/Makefile | 5 + > drivers/clk/mediatek/clk-mt7988-apmixed.c | 102 +++++++ > drivers/clk/mediatek/clk-mt7988-eth.c | 133 +++++++++ > drivers/clk/mediatek/clk-mt7988-infracfg.c | 274 +++++++++++++++++ > drivers/clk/mediatek/clk-mt7988-topckgen.c | 325 +++++++++++++++++++++ > drivers/clk/mediatek/clk-mt7988-xfipll.c | 78 +++++ > 7 files changed, 926 insertions(+) > create mode 100644 drivers/clk/mediatek/clk-mt7988-apmixed.c > create mode 100644 drivers/clk/mediatek/clk-mt7988-eth.c > create mode 100644 drivers/clk/mediatek/clk-mt7988-infracfg.c > create mode 100644 drivers/clk/mediatek/clk-mt7988-topckgen.c > create mode 100644 drivers/clk/mediatek/clk-mt7988-xfipll.c > > diff --git a/drivers/clk/mediatek/Kconfig b/drivers/clk/mediatek/Kconfig > index 48b42d11111cd..70a005e7e1b18 100644 > --- a/drivers/clk/mediatek/Kconfig > +++ b/drivers/clk/mediatek/Kconfig > @@ -423,6 +423,15 @@ config COMMON_CLK_MT7986_ETHSYS > This driver adds support for clocks for Ethernet and SGMII > required on MediaTek MT7986 SoC. > > +config COMMON_CLK_MT7988 > + tristate "Clock driver for MediaTek MT7988" > + depends on ARCH_MEDIATEK || COMPILE_TEST > + select COMMON_CLK_MEDIATEK > + default ARCH_MEDIATEK > + help > + This driver supports MediaTek MT7988 basic clocks and clocks > + required for various periperals found on this SoC. > + > config COMMON_CLK_MT8135 > tristate "Clock driver for MediaTek MT8135" > depends on (ARCH_MEDIATEK && ARM) || COMPILE_TEST > diff --git a/drivers/clk/mediatek/Makefile b/drivers/clk/mediatek/Makefile > index dbeaa5b41177d..eeccfa039896f 100644 > --- a/drivers/clk/mediatek/Makefile > +++ b/drivers/clk/mediatek/Makefile > @@ -62,6 +62,11 @@ obj-$(CONFIG_COMMON_CLK_MT7986) += clk-mt7986-apmixed.o > obj-$(CONFIG_COMMON_CLK_MT7986) += clk-mt7986-topckgen.o > obj-$(CONFIG_COMMON_CLK_MT7986) += clk-mt7986-infracfg.o > obj-$(CONFIG_COMMON_CLK_MT7986_ETHSYS) += clk-mt7986-eth.o > +obj-$(CONFIG_COMMON_CLK_MT7988) += clk-mt7988-apmixed.o > +obj-$(CONFIG_COMMON_CLK_MT7988) += clk-mt7988-topckgen.o > +obj-$(CONFIG_COMMON_CLK_MT7988) += clk-mt7988-infracfg.o > +obj-$(CONFIG_COMMON_CLK_MT7988) += clk-mt7988-eth.o > +obj-$(CONFIG_COMMON_CLK_MT7988) += clk-mt7988-xfipll.o > obj-$(CONFIG_COMMON_CLK_MT8135) += clk-mt8135-apmixedsys.o clk-mt8135.o > obj-$(CONFIG_COMMON_CLK_MT8167) += clk-mt8167-apmixedsys.o clk-mt8167.o > obj-$(CONFIG_COMMON_CLK_MT8167_AUDSYS) += clk-mt8167-aud.o > diff --git a/drivers/clk/mediatek/clk-mt7988-apmixed.c b/drivers/clk/mediatek/clk-mt7988-apmixed.c > new file mode 100644 > index 0000000000000..02eb6354b01a8 > --- /dev/null > +++ b/drivers/clk/mediatek/clk-mt7988-apmixed.c > @@ -0,0 +1,102 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Copyright (c) 2023 MediaTek Inc. > + * Author: Sam Shih <sam.shih@mediatek.com> > + * Author: Xiufeng Li <Xiufeng.Li@mediatek.com> > + */ > + > +#include <linux/clk-provider.h> > +#include <linux/of.h> > +#include <linux/of_address.h> > +#include <linux/of_device.h> > +#include <linux/platform_device.h> > +#include "clk-mtk.h" > +#include "clk-gate.h" > +#include "clk-mux.h" > +#include "clk-pll.h" > +#include <dt-bindings/clock/mediatek,mt7988-clk.h> > + > +#define MT7988_PLL_FMAX (2500UL * MHZ) > +#define MT7988_PCW_CHG_SHIFT 2 > + > +#define PLL(_id, _name, _reg, _pwr_reg, _en_mask, _flags, _rst_bar_mask, _pcwbits, _pd_reg, \ > + _pd_shift, _tuner_reg, _tuner_en_reg, _tuner_en_bit, _pcw_reg, _pcw_shift, \ > + _pcw_chg_reg) \ > + { \ > + .id = _id, .name = _name, .reg = _reg, .pwr_reg = _pwr_reg, .en_mask = _en_mask, \ > + .flags = _flags, .rst_bar_mask = BIT(_rst_bar_mask), .fmax = MT7988_PLL_FMAX, \ > + .pcwbits = _pcwbits, .pd_reg = _pd_reg, .pd_shift = _pd_shift, \ > + .tuner_reg = _tuner_reg, .tuner_en_reg = _tuner_en_reg, \ > + .tuner_en_bit = _tuner_en_bit, .pcw_reg = _pcw_reg, .pcw_shift = _pcw_shift, \ > + .pcw_chg_reg = _pcw_chg_reg, .pcw_chg_shift = MT7988_PCW_CHG_SHIFT, \ > + .parent_name = "clkxtal", \ > + } I think that there was a bit of misunderstanding here: I said 100cols, and that's fine, but I wanted you to do that with everything but the macros, following what was done in all the other MediaTek clock drivers. Can you please change the macros again? Also, there's some discrepancy in the usage of tabulations vs spaces, please fix. #define PLL(....)*TAB*\ .... { \ .id = _id, \ .name = _name, \ .reg = _reg, \ .pwr_reg = _pwr_reg, \ .en_mask = _en_mask, \ ...etc etc etc... \ } Thanks, Angelo
Il 09/12/23 22:55, Daniel Golle ha scritto: > From: Sam Shih <sam.shih@mediatek.com> > > Add MT7988 clock dt-bindings for topckgen, apmixedsys, infracfg, > ethernet and xfipll subsystem clocks. > > Signed-off-by: Sam Shih <sam.shih@mediatek.com> > Signed-off-by: Daniel Golle <daniel@makrotopia.org> > Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Il 09/12/23 22:56, Daniel Golle ha scritto: > From: Sam Shih <sam.shih@mediatek.com> > > Introduce pcw_chg_shfit control to replace hardcoded PCW_CHG_MASK macro. > This will needed for clocks on the MT7988 SoC. > > Signed-off-by: Sam Shih <sam.shih@mediatek.com> > Signed-off-by: Daniel Golle <daniel@makrotopia.org> > --- > v4: always set .pcw_chg_shift if .pcw_chg_reg is used instead of > having an if-expression in mtk_pll_set_rate_regs(). > v3: use git --from ... > v2: no changes > > drivers/clk/mediatek/clk-mt6779.c | 1 + > drivers/clk/mediatek/clk-mt8183-apmixedsys.c | 1 + > drivers/clk/mediatek/clk-mt8188-apmixedsys.c | 1 + > drivers/clk/mediatek/clk-mt8192-apmixedsys.c | 1 + > drivers/clk/mediatek/clk-mt8195-apmixedsys.c | 1 + > drivers/clk/mediatek/clk-mt8365-apmixedsys.c | 1 + > drivers/clk/mediatek/clk-pll.c | 3 +-- > drivers/clk/mediatek/clk-pll.h | 2 ++ > 8 files changed, 9 insertions(+), 2 deletions(-) > > diff --git a/drivers/clk/mediatek/clk-mt6779.c b/drivers/clk/mediatek/clk-mt6779.c > index ffedb1fe3c672..e66461f341dd3 100644 > --- a/drivers/clk/mediatek/clk-mt6779.c > +++ b/drivers/clk/mediatek/clk-mt6779.c > @@ -1166,6 +1166,7 @@ static const struct mtk_gate apmixed_clks[] = { > .pcw_reg = _pcw_reg, \ > .pcw_shift = _pcw_shift, \ > .pcw_chg_reg = _pcw_chg_reg, \ > + .pcw_chg_shift = PCW_CHG_SHIFT, \ > .div_table = _div_table, \ > } > > diff --git a/drivers/clk/mediatek/clk-mt8183-apmixedsys.c b/drivers/clk/mediatek/clk-mt8183-apmixedsys.c > index 2b261c0e2b61d..184e0cd1dde29 100644 > --- a/drivers/clk/mediatek/clk-mt8183-apmixedsys.c > +++ b/drivers/clk/mediatek/clk-mt8183-apmixedsys.c > @@ -75,6 +75,7 @@ static const struct mtk_gate apmixed_clks[] = { > .pcw_reg = _pcw_reg, \ > .pcw_shift = _pcw_shift, \ > .pcw_chg_reg = _pcw_chg_reg, \ > + .pcw_chg_shift = PCW_CHG_SHIFT, \ > .div_table = _div_table, \ > } > > diff --git a/drivers/clk/mediatek/clk-mt8188-apmixedsys.c b/drivers/clk/mediatek/clk-mt8188-apmixedsys.c > index 41ab4d6896a49..87c5dfa3d1ac4 100644 > --- a/drivers/clk/mediatek/clk-mt8188-apmixedsys.c > +++ b/drivers/clk/mediatek/clk-mt8188-apmixedsys.c > @@ -53,6 +53,7 @@ static const struct mtk_gate apmixed_clks[] = { > .pcw_reg = _pcw_reg, \ > .pcw_shift = _pcw_shift, \ > .pcw_chg_reg = _pcw_chg_reg, \ > + .pcw_chg_shift = PCW_CHG_SHIFT, \ > .en_reg = _en_reg, \ > .pll_en_bit = _pll_en_bit, \ > } > diff --git a/drivers/clk/mediatek/clk-mt8192-apmixedsys.c b/drivers/clk/mediatek/clk-mt8192-apmixedsys.c > index 3590932acc63a..67bf5ef3f0033 100644 > --- a/drivers/clk/mediatek/clk-mt8192-apmixedsys.c > +++ b/drivers/clk/mediatek/clk-mt8192-apmixedsys.c > @@ -56,6 +56,7 @@ static const struct mtk_gate apmixed_clks[] = { > .pcw_reg = _pcw_reg, \ > .pcw_shift = _pcw_shift, \ > .pcw_chg_reg = _pcw_chg_reg, \ > + .pcw_chg_shift = PCW_CHG_SHIFT, \ > .en_reg = _en_reg, \ > .pll_en_bit = _pll_en_bit, \ > } > diff --git a/drivers/clk/mediatek/clk-mt8195-apmixedsys.c b/drivers/clk/mediatek/clk-mt8195-apmixedsys.c > index 44a4c85a67ef5..ccd6bac7cb1fc 100644 > --- a/drivers/clk/mediatek/clk-mt8195-apmixedsys.c > +++ b/drivers/clk/mediatek/clk-mt8195-apmixedsys.c > @@ -54,6 +54,7 @@ static const struct mtk_gate apmixed_clks[] = { > .pcw_reg = _pcw_reg, \ > .pcw_shift = _pcw_shift, \ > .pcw_chg_reg = _pcw_chg_reg, \ > + .pcw_chg_shift = PCW_CHG_SHIFT, \ > .en_reg = _en_reg, \ > .pll_en_bit = _pll_en_bit, \ > } > diff --git a/drivers/clk/mediatek/clk-mt8365-apmixedsys.c b/drivers/clk/mediatek/clk-mt8365-apmixedsys.c > index 9b0bc5daeac06..daddca6db44e7 100644 > --- a/drivers/clk/mediatek/clk-mt8365-apmixedsys.c > +++ b/drivers/clk/mediatek/clk-mt8365-apmixedsys.c > @@ -39,6 +39,7 @@ > .pcw_reg = _pcw_reg, \ > .pcw_shift = _pcw_shift, \ > .pcw_chg_reg = _pcw_chg_reg, \ > + .pcw_chg_shift = PCW_CHG_SHIFT, \ > .div_table = _div_table, \ > } > > diff --git a/drivers/clk/mediatek/clk-pll.c b/drivers/clk/mediatek/clk-pll.c > index 513ab6b1b3229..139b01ab8d140 100644 > --- a/drivers/clk/mediatek/clk-pll.c > +++ b/drivers/clk/mediatek/clk-pll.c > @@ -23,7 +23,6 @@ > #define CON0_BASE_EN BIT(0) > #define CON0_PWR_ON BIT(0) > #define CON0_ISO_EN BIT(1) > -#define PCW_CHG_MASK BIT(31) > > #define AUDPLL_TUNER_EN BIT(31) > > @@ -114,7 +113,7 @@ static void mtk_pll_set_rate_regs(struct mtk_clk_pll *pll, u32 pcw, > pll->data->pcw_shift); > val |= pcw << pll->data->pcw_shift; > writel(val, pll->pcw_addr); > - chg = readl(pll->pcw_chg_addr) | PCW_CHG_MASK; > + chg = readl(pll->pcw_chg_addr) | BIT(pll->data->pcw_chg_shift); > writel(chg, pll->pcw_chg_addr); > if (pll->tuner_addr) > writel(val + 1, pll->tuner_addr); > diff --git a/drivers/clk/mediatek/clk-pll.h b/drivers/clk/mediatek/clk-pll.h > index f17278ff15d78..84bd8df13e2e5 100644 > --- a/drivers/clk/mediatek/clk-pll.h > +++ b/drivers/clk/mediatek/clk-pll.h > @@ -22,6 +22,7 @@ struct mtk_pll_div_table { > #define HAVE_RST_BAR BIT(0) > #define PLL_AO BIT(1) > #define POSTDIV_MASK GENMASK(2, 0) > +#define PCW_CHG_SHIFT 31 > > struct mtk_pll_data { > int id; > @@ -48,6 +49,7 @@ struct mtk_pll_data { > const char *parent_name; > u32 en_reg; > u8 pll_en_bit; /* Assume 0, indicates BIT(0) by default */ > + u8 pcw_chg_shift; Ok this is better - please call this "pcw_chg_bit" (same for the definition). Also, since it is impossible for PCW_CHG to be 0, please add a sanity check at the beginning of function mtk_clk_register_pll_ops(), like so: if (!data->pcw_chg_bit) { pr_warn("Invalid PCW_CHG bit for pll %s", data->name); return ERR_PTR(-EINVAL); } ...like that, we're fully covered for eventual mistakes during porting (etc). Cheers, Angelo
On Sat, Dec 9, 2023 at 3:56 PM Daniel Golle <daniel@makrotopia.org> wrote: > > From: Sam Shih <sam.shih@mediatek.com> > > Add APMIXED, ETH, INFRACFG and TOPCKGEN clock drivers which are > typical MediaTek designs. > > Also add driver for XFIPLL clock generating the 156.25MHz clock for > the XFI SerDes. It needs an undocumented software workaround and has > an unknown internal design. > > Signed-off-by: Sam Shih <sam.shih@mediatek.com> > Signed-off-by: Daniel Golle <daniel@makrotopia.org> > --- > v4: > * make use of existing GATE_MTK_FLAGS macro > * reformat to max. 100 columns > * cosmetics > > v3: use git --from ... > v2: no changes > > > drivers/clk/mediatek/Kconfig | 9 + > drivers/clk/mediatek/Makefile | 5 + > drivers/clk/mediatek/clk-mt7988-apmixed.c | 102 +++++++ > drivers/clk/mediatek/clk-mt7988-eth.c | 133 +++++++++ > drivers/clk/mediatek/clk-mt7988-infracfg.c | 274 +++++++++++++++++ > drivers/clk/mediatek/clk-mt7988-topckgen.c | 325 +++++++++++++++++++++ > drivers/clk/mediatek/clk-mt7988-xfipll.c | 78 +++++ > 7 files changed, 926 insertions(+) > create mode 100644 drivers/clk/mediatek/clk-mt7988-apmixed.c > create mode 100644 drivers/clk/mediatek/clk-mt7988-eth.c > create mode 100644 drivers/clk/mediatek/clk-mt7988-infracfg.c > create mode 100644 drivers/clk/mediatek/clk-mt7988-topckgen.c > create mode 100644 drivers/clk/mediatek/clk-mt7988-xfipll.c > > diff --git a/drivers/clk/mediatek/Kconfig b/drivers/clk/mediatek/Kconfig > index 48b42d11111cd..70a005e7e1b18 100644 > --- a/drivers/clk/mediatek/Kconfig > +++ b/drivers/clk/mediatek/Kconfig > @@ -423,6 +423,15 @@ config COMMON_CLK_MT7986_ETHSYS > This driver adds support for clocks for Ethernet and SGMII > required on MediaTek MT7986 SoC. > > +config COMMON_CLK_MT7988 > + tristate "Clock driver for MediaTek MT7988" > + depends on ARCH_MEDIATEK || COMPILE_TEST > + select COMMON_CLK_MEDIATEK > + default ARCH_MEDIATEK > + help > + This driver supports MediaTek MT7988 basic clocks and clocks > + required for various periperals found on this SoC. > + > config COMMON_CLK_MT8135 > tristate "Clock driver for MediaTek MT8135" > depends on (ARCH_MEDIATEK && ARM) || COMPILE_TEST > diff --git a/drivers/clk/mediatek/Makefile b/drivers/clk/mediatek/Makefile > index dbeaa5b41177d..eeccfa039896f 100644 > --- a/drivers/clk/mediatek/Makefile > +++ b/drivers/clk/mediatek/Makefile > @@ -62,6 +62,11 @@ obj-$(CONFIG_COMMON_CLK_MT7986) += clk-mt7986-apmixed.o > obj-$(CONFIG_COMMON_CLK_MT7986) += clk-mt7986-topckgen.o > obj-$(CONFIG_COMMON_CLK_MT7986) += clk-mt7986-infracfg.o > obj-$(CONFIG_COMMON_CLK_MT7986_ETHSYS) += clk-mt7986-eth.o > +obj-$(CONFIG_COMMON_CLK_MT7988) += clk-mt7988-apmixed.o > +obj-$(CONFIG_COMMON_CLK_MT7988) += clk-mt7988-topckgen.o > +obj-$(CONFIG_COMMON_CLK_MT7988) += clk-mt7988-infracfg.o > +obj-$(CONFIG_COMMON_CLK_MT7988) += clk-mt7988-eth.o > +obj-$(CONFIG_COMMON_CLK_MT7988) += clk-mt7988-xfipll.o > obj-$(CONFIG_COMMON_CLK_MT8135) += clk-mt8135-apmixedsys.o clk-mt8135.o > obj-$(CONFIG_COMMON_CLK_MT8167) += clk-mt8167-apmixedsys.o clk-mt8167.o > obj-$(CONFIG_COMMON_CLK_MT8167_AUDSYS) += clk-mt8167-aud.o > diff --git a/drivers/clk/mediatek/clk-mt7988-apmixed.c b/drivers/clk/mediatek/clk-mt7988-apmixed.c > new file mode 100644 > index 0000000000000..02eb6354b01a8 > --- /dev/null > +++ b/drivers/clk/mediatek/clk-mt7988-apmixed.c > @@ -0,0 +1,102 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Copyright (c) 2023 MediaTek Inc. > + * Author: Sam Shih <sam.shih@mediatek.com> > + * Author: Xiufeng Li <Xiufeng.Li@mediatek.com> > + */ > + > +#include <linux/clk-provider.h> > +#include <linux/of.h> > +#include <linux/of_address.h> > +#include <linux/of_device.h> You probably don't need these 2 headers and the implicit includes of_device.h makes are dropped now in linux-next. Please check what you actually need and make them explicit. Rob
diff --git a/include/dt-bindings/clock/mediatek,mt7988-clk.h b/include/dt-bindings/clock/mediatek,mt7988-clk.h new file mode 100644 index 0000000000000..63376e40f14d2 --- /dev/null +++ b/include/dt-bindings/clock/mediatek,mt7988-clk.h @@ -0,0 +1,280 @@ +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ +/* + * Copyright (c) 2023 MediaTek Inc. + * Author: Sam Shih <sam.shih@mediatek.com> + * Author: Xiufeng Li <Xiufeng.Li@mediatek.com> + */ + +#ifndef _DT_BINDINGS_CLK_MT7988_H +#define _DT_BINDINGS_CLK_MT7988_H + +/* APMIXEDSYS */ + +#define CLK_APMIXED_NETSYSPLL 0 +#define CLK_APMIXED_MPLL 1 +#define CLK_APMIXED_MMPLL 2 +#define CLK_APMIXED_APLL2 3 +#define CLK_APMIXED_NET1PLL 4 +#define CLK_APMIXED_NET2PLL 5 +#define CLK_APMIXED_WEDMCUPLL 6 +#define CLK_APMIXED_SGMPLL 7 +#define CLK_APMIXED_ARM_B 8 +#define CLK_APMIXED_CCIPLL2_B 9 +#define CLK_APMIXED_USXGMIIPLL 10 +#define CLK_APMIXED_MSDCPLL 11 + +/* TOPCKGEN */ + +#define CLK_TOP_XTAL 0 +#define CLK_TOP_XTAL_D2 1 +#define CLK_TOP_RTC_32K 2 +#define CLK_TOP_RTC_32P7K 3 +#define CLK_TOP_MPLL_D2 4 +#define CLK_TOP_MPLL_D3_D2 5 +#define CLK_TOP_MPLL_D4 6 +#define CLK_TOP_MPLL_D8 7 +#define CLK_TOP_MPLL_D8_D2 8 +#define CLK_TOP_MMPLL_D2 9 +#define CLK_TOP_MMPLL_D3_D5 10 +#define CLK_TOP_MMPLL_D4 11 +#define CLK_TOP_MMPLL_D6_D2 12 +#define CLK_TOP_MMPLL_D8 13 +#define CLK_TOP_APLL2_D4 14 +#define CLK_TOP_NET1PLL_D4 15 +#define CLK_TOP_NET1PLL_D5 16 +#define CLK_TOP_NET1PLL_D5_D2 17 +#define CLK_TOP_NET1PLL_D5_D4 18 +#define CLK_TOP_NET1PLL_D8 19 +#define CLK_TOP_NET1PLL_D8_D2 20 +#define CLK_TOP_NET1PLL_D8_D4 21 +#define CLK_TOP_NET1PLL_D8_D8 22 +#define CLK_TOP_NET1PLL_D8_D16 23 +#define CLK_TOP_NET2PLL_D2 24 +#define CLK_TOP_NET2PLL_D4 25 +#define CLK_TOP_NET2PLL_D4_D4 26 +#define CLK_TOP_NET2PLL_D4_D8 27 +#define CLK_TOP_NET2PLL_D6 28 +#define CLK_TOP_NET2PLL_D8 29 +#define CLK_TOP_NETSYS_SEL 30 +#define CLK_TOP_NETSYS_500M_SEL 31 +#define CLK_TOP_NETSYS_2X_SEL 32 +#define CLK_TOP_NETSYS_GSW_SEL 33 +#define CLK_TOP_ETH_GMII_SEL 34 +#define CLK_TOP_NETSYS_MCU_SEL 35 +#define CLK_TOP_NETSYS_PAO_2X_SEL 36 +#define CLK_TOP_EIP197_SEL 37 +#define CLK_TOP_AXI_INFRA_SEL 38 +#define CLK_TOP_UART_SEL 39 +#define CLK_TOP_EMMC_250M_SEL 40 +#define CLK_TOP_EMMC_400M_SEL 41 +#define CLK_TOP_SPI_SEL 42 +#define CLK_TOP_SPIM_MST_SEL 43 +#define CLK_TOP_NFI1X_SEL 44 +#define CLK_TOP_SPINFI_SEL 45 +#define CLK_TOP_PWM_SEL 46 +#define CLK_TOP_I2C_SEL 47 +#define CLK_TOP_PCIE_MBIST_250M_SEL 48 +#define CLK_TOP_PEXTP_TL_SEL 49 +#define CLK_TOP_PEXTP_TL_P1_SEL 50 +#define CLK_TOP_PEXTP_TL_P2_SEL 51 +#define CLK_TOP_PEXTP_TL_P3_SEL 52 +#define CLK_TOP_USB_SYS_SEL 53 +#define CLK_TOP_USB_SYS_P1_SEL 54 +#define CLK_TOP_USB_XHCI_SEL 55 +#define CLK_TOP_USB_XHCI_P1_SEL 56 +#define CLK_TOP_USB_FRMCNT_SEL 57 +#define CLK_TOP_USB_FRMCNT_P1_SEL 58 +#define CLK_TOP_AUD_SEL 59 +#define CLK_TOP_A1SYS_SEL 60 +#define CLK_TOP_AUD_L_SEL 61 +#define CLK_TOP_A_TUNER_SEL 62 +#define CLK_TOP_SSPXTP_SEL 63 +#define CLK_TOP_USB_PHY_SEL 64 +#define CLK_TOP_USXGMII_SBUS_0_SEL 65 +#define CLK_TOP_USXGMII_SBUS_1_SEL 66 +#define CLK_TOP_SGM_0_SEL 67 +#define CLK_TOP_SGM_SBUS_0_SEL 68 +#define CLK_TOP_SGM_1_SEL 69 +#define CLK_TOP_SGM_SBUS_1_SEL 70 +#define CLK_TOP_XFI_PHY_0_XTAL_SEL 71 +#define CLK_TOP_XFI_PHY_1_XTAL_SEL 72 +#define CLK_TOP_SYSAXI_SEL 73 +#define CLK_TOP_SYSAPB_SEL 74 +#define CLK_TOP_ETH_REFCK_50M_SEL 75 +#define CLK_TOP_ETH_SYS_200M_SEL 76 +#define CLK_TOP_ETH_SYS_SEL 77 +#define CLK_TOP_ETH_XGMII_SEL 78 +#define CLK_TOP_BUS_TOPS_SEL 79 +#define CLK_TOP_NPU_TOPS_SEL 80 +#define CLK_TOP_DRAMC_SEL 81 +#define CLK_TOP_DRAMC_MD32_SEL 82 +#define CLK_TOP_INFRA_F26M_SEL 83 +#define CLK_TOP_PEXTP_P0_SEL 84 +#define CLK_TOP_PEXTP_P1_SEL 85 +#define CLK_TOP_PEXTP_P2_SEL 86 +#define CLK_TOP_PEXTP_P3_SEL 87 +#define CLK_TOP_DA_XTP_GLB_P0_SEL 88 +#define CLK_TOP_DA_XTP_GLB_P1_SEL 89 +#define CLK_TOP_DA_XTP_GLB_P2_SEL 90 +#define CLK_TOP_DA_XTP_GLB_P3_SEL 91 +#define CLK_TOP_CKM_SEL 92 +#define CLK_TOP_DA_SEL 93 +#define CLK_TOP_PEXTP_SEL 94 +#define CLK_TOP_TOPS_P2_26M_SEL 95 +#define CLK_TOP_MCUSYS_BACKUP_625M_SEL 96 +#define CLK_TOP_NETSYS_SYNC_250M_SEL 97 +#define CLK_TOP_MACSEC_SEL 98 +#define CLK_TOP_NETSYS_TOPS_400M_SEL 99 +#define CLK_TOP_NETSYS_PPEFB_250M_SEL 100 +#define CLK_TOP_NETSYS_WARP_SEL 101 +#define CLK_TOP_ETH_MII_SEL 102 +#define CLK_TOP_NPU_SEL 103 +#define CLK_TOP_AUD_I2S_M 104 + +/* MCUSYS */ + +#define CLK_MCU_BUS_DIV_SEL 0 +#define CLK_MCU_ARM_DIV_SEL 1 + +/* INFRACFG_AO */ + +#define CLK_INFRA_MUX_UART0_SEL 0 +#define CLK_INFRA_MUX_UART1_SEL 1 +#define CLK_INFRA_MUX_UART2_SEL 2 +#define CLK_INFRA_MUX_SPI0_SEL 3 +#define CLK_INFRA_MUX_SPI1_SEL 4 +#define CLK_INFRA_MUX_SPI2_SEL 5 +#define CLK_INFRA_PWM_SEL 6 +#define CLK_INFRA_PWM_CK1_SEL 7 +#define CLK_INFRA_PWM_CK2_SEL 8 +#define CLK_INFRA_PWM_CK3_SEL 9 +#define CLK_INFRA_PWM_CK4_SEL 10 +#define CLK_INFRA_PWM_CK5_SEL 11 +#define CLK_INFRA_PWM_CK6_SEL 12 +#define CLK_INFRA_PWM_CK7_SEL 13 +#define CLK_INFRA_PWM_CK8_SEL 14 +#define CLK_INFRA_PCIE_GFMUX_TL_O_P0_SEL 15 +#define CLK_INFRA_PCIE_GFMUX_TL_O_P1_SEL 16 +#define CLK_INFRA_PCIE_GFMUX_TL_O_P2_SEL 17 +#define CLK_INFRA_PCIE_GFMUX_TL_O_P3_SEL 18 + +/* INFRACFG */ + +#define CLK_INFRA_PCIE_PERI_26M_CK_P0 19 +#define CLK_INFRA_PCIE_PERI_26M_CK_P1 20 +#define CLK_INFRA_PCIE_PERI_26M_CK_P2 21 +#define CLK_INFRA_PCIE_PERI_26M_CK_P3 22 +#define CLK_INFRA_66M_GPT_BCK 23 +#define CLK_INFRA_66M_PWM_HCK 24 +#define CLK_INFRA_66M_PWM_BCK 25 +#define CLK_INFRA_66M_PWM_CK1 26 +#define CLK_INFRA_66M_PWM_CK2 27 +#define CLK_INFRA_66M_PWM_CK3 28 +#define CLK_INFRA_66M_PWM_CK4 29 +#define CLK_INFRA_66M_PWM_CK5 30 +#define CLK_INFRA_66M_PWM_CK6 31 +#define CLK_INFRA_66M_PWM_CK7 32 +#define CLK_INFRA_66M_PWM_CK8 33 +#define CLK_INFRA_133M_CQDMA_BCK 34 +#define CLK_INFRA_66M_AUD_SLV_BCK 35 +#define CLK_INFRA_AUD_26M 36 +#define CLK_INFRA_AUD_L 37 +#define CLK_INFRA_AUD_AUD 38 +#define CLK_INFRA_AUD_EG2 39 +#define CLK_INFRA_DRAMC_F26M 40 +#define CLK_INFRA_133M_DBG_ACKM 41 +#define CLK_INFRA_66M_AP_DMA_BCK 42 +#define CLK_INFRA_66M_SEJ_BCK 43 +#define CLK_INFRA_PRE_CK_SEJ_F13M 44 +#define CLK_INFRA_26M_THERM_SYSTEM 45 +#define CLK_INFRA_I2C_BCK 46 +#define CLK_INFRA_52M_UART0_CK 47 +#define CLK_INFRA_52M_UART1_CK 48 +#define CLK_INFRA_52M_UART2_CK 49 +#define CLK_INFRA_NFI 50 +#define CLK_INFRA_SPINFI 51 +#define CLK_INFRA_66M_NFI_HCK 52 +#define CLK_INFRA_104M_SPI0 53 +#define CLK_INFRA_104M_SPI1 54 +#define CLK_INFRA_104M_SPI2_BCK 55 +#define CLK_INFRA_66M_SPI0_HCK 56 +#define CLK_INFRA_66M_SPI1_HCK 57 +#define CLK_INFRA_66M_SPI2_HCK 58 +#define CLK_INFRA_66M_FLASHIF_AXI 59 +#define CLK_INFRA_RTC 60 +#define CLK_INFRA_26M_ADC_BCK 61 +#define CLK_INFRA_RC_ADC 62 +#define CLK_INFRA_MSDC400 63 +#define CLK_INFRA_MSDC2_HCK 64 +#define CLK_INFRA_133M_MSDC_0_HCK 65 +#define CLK_INFRA_66M_MSDC_0_HCK 66 +#define CLK_INFRA_133M_CPUM_BCK 67 +#define CLK_INFRA_BIST2FPC 68 +#define CLK_INFRA_I2C_X16W_MCK_CK_P1 69 +#define CLK_INFRA_I2C_X16W_PCK_CK_P1 70 +#define CLK_INFRA_133M_USB_HCK 71 +#define CLK_INFRA_133M_USB_HCK_CK_P1 72 +#define CLK_INFRA_66M_USB_HCK 73 +#define CLK_INFRA_66M_USB_HCK_CK_P1 74 +#define CLK_INFRA_USB_SYS 75 +#define CLK_INFRA_USB_SYS_CK_P1 76 +#define CLK_INFRA_USB_REF 77 +#define CLK_INFRA_USB_CK_P1 78 +#define CLK_INFRA_USB_FRMCNT 79 +#define CLK_INFRA_USB_FRMCNT_CK_P1 80 +#define CLK_INFRA_USB_PIPE 81 +#define CLK_INFRA_USB_PIPE_CK_P1 82 +#define CLK_INFRA_USB_UTMI 83 +#define CLK_INFRA_USB_UTMI_CK_P1 84 +#define CLK_INFRA_USB_XHCI 85 +#define CLK_INFRA_USB_XHCI_CK_P1 86 +#define CLK_INFRA_PCIE_GFMUX_TL_P0 87 +#define CLK_INFRA_PCIE_GFMUX_TL_P1 88 +#define CLK_INFRA_PCIE_GFMUX_TL_P2 89 +#define CLK_INFRA_PCIE_GFMUX_TL_P3 90 +#define CLK_INFRA_PCIE_PIPE_P0 91 +#define CLK_INFRA_PCIE_PIPE_P1 92 +#define CLK_INFRA_PCIE_PIPE_P2 93 +#define CLK_INFRA_PCIE_PIPE_P3 94 +#define CLK_INFRA_133M_PCIE_CK_P0 95 +#define CLK_INFRA_133M_PCIE_CK_P1 96 +#define CLK_INFRA_133M_PCIE_CK_P2 97 +#define CLK_INFRA_133M_PCIE_CK_P3 98 + +/* ETHDMA */ + +#define CLK_ETHDMA_XGP1_EN 0 +#define CLK_ETHDMA_XGP2_EN 1 +#define CLK_ETHDMA_XGP3_EN 2 +#define CLK_ETHDMA_FE_EN 3 +#define CLK_ETHDMA_GP2_EN 4 +#define CLK_ETHDMA_GP1_EN 5 +#define CLK_ETHDMA_GP3_EN 6 +#define CLK_ETHDMA_ESW_EN 7 +#define CLK_ETHDMA_CRYPT0_EN 8 +#define CLK_ETHDMA_NR_CLK 9 + +/* SGMIISYS_0 */ + +#define CLK_SGM0_TX_EN 0 +#define CLK_SGM0_RX_EN 1 +#define CLK_SGMII0_NR_CLK 2 + +/* SGMIISYS_1 */ + +#define CLK_SGM1_TX_EN 0 +#define CLK_SGM1_RX_EN 1 +#define CLK_SGMII1_NR_CLK 2 + +/* ETHWARP */ + +#define CLK_ETHWARP_WOCPU2_EN 0 +#define CLK_ETHWARP_WOCPU1_EN 1 +#define CLK_ETHWARP_WOCPU0_EN 2 +#define CLK_ETHWARP_NR_CLK 3 + +/* XFIPLL */ +#define CLK_XFIPLL_PLL 0 +#define CLK_XFIPLL_PLL_EN 1 + +#endif /* _DT_BINDINGS_CLK_MT7988_H */