From: Andrew Lunn <andrew@lunn.ch> To: sean.wang@mediatek.com Cc: f.fainelli@gmail.com, vivien.didelot@savoirfairelinux.com, matthias.bgg@gmail.com, robh+dt@kernel.org, mark.rutland@arm.com, devicetree@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, davem@davemloft.net, Landen.Chao@mediatek.com, keyhaede@gmail.com, objelf@gmail.com Subject: Re: [PATCH net-next v2 5/5] net-next: dsa: add dsa support for Mediatek MT7530 switch Date: Fri, 24 Mar 2017 15:19:53 +0100 [thread overview] Message-ID: <20170324141953.GH28518@lunn.ch> (raw) In-Reply-To: <1490088910-19405-6-git-send-email-sean.wang@mediatek.com> On Tue, Mar 21, 2017 at 05:35:10PM +0800, sean.wang@mediatek.com wrote: Hi Sean > + /* Lower Tx Driving */ > + for (i = 0 ; i < 6 ; i++) Could MT7530_CPU_PORT be used here? > + mt7530_write(priv, MT7530_TRGMII_TD_ODT(i), > + TD_DM_DRVP(8) | TD_DM_DRVN(8)); > + > + /* Setup MT7530 core clock */ > + if (!trgint) { > + /* Disable MT7530 core clock */ > + core_clear(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN); > + > + /* Disable MT7530 PLL, since phy_device has not yet been > + * created when this function is called. So we provide > + * core_write_mmd_indirect to complete this function > + */ > + core_write_mmd_indirect(priv, > + CORE_GSWPLL_GRP1, > + MDIO_MMD_VEND2, > + 0); > + > + /* Setup MT7530 core clock into 500Mhz */ > + core_write(priv, CORE_GSWPLL_GRP2, > + RG_GSWPLL_POSDIV_500M(1) | > + RG_GSWPLL_FBKDIV_500M(25)); > + > + /* Enable MT7530 PLL */ > + core_write(priv, CORE_GSWPLL_GRP1, > + RG_GSWPLL_EN_PRE | > + RG_GSWPLL_POSDIV_200M(2) | > + RG_GSWPLL_FBKDIV_200M(32)); > + > + /* Enable MT7530 core clock */ > + core_set(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN); > + } > + > + /* Setup the MT7530 TRGMII Tx Clock */ > + core_set(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN); > + core_write(priv, CORE_PLL_GROUP5, RG_LCDDS_PCW_NCPO1(ncpo1)); > + core_write(priv, CORE_PLL_GROUP6, RG_LCDDS_PCW_NCPO0(0)); > + core_write(priv, CORE_PLL_GROUP10, RG_LCDDS_SSC_DELTA(ssc_delta)); > + core_write(priv, CORE_PLL_GROUP11, RG_LCDDS_SSC_DELTA1(ssc_delta)); > + core_write(priv, CORE_PLL_GROUP4, > + RG_SYSPLL_DDSFBK_EN | RG_SYSPLL_BIAS_EN | > + RG_SYSPLL_BIAS_LPF_EN); > + core_write(priv, CORE_PLL_GROUP2, > + RG_SYSPLL_EN_NORMAL | RG_SYSPLL_VODEN | > + RG_SYSPLL_POSDIV(1)); > + core_write(priv, CORE_PLL_GROUP7, > + RG_LCDDS_PCW_NCPO_CHG | RG_LCCDS_C(3) | > + RG_LCDDS_PWDB | RG_LCDDS_ISO_EN); > + core_set(priv, CORE_TRGMII_GSW_CLK_CG, > + REG_GSWCK_EN | REG_TRGMIICK_EN); > + > + if (!trgint) > + for (i = 0 ; i < 5 ; i++) Why only 5 here? All other similar loops are to 6. Replacing 5 with a #define might help make this more readable. > + mt7530_rmw(priv, MT7530_TRGMII_RD(i), > + RD_TAP_MASK, RD_TAP(16)); > + else > + mt7623_trgmii_set(priv, GSW_INTF_MODE, INTF_MODE_TRGMII); > + > + return 0; > +} > + > +static int > +mt7623_pad_clk_setup(struct dsa_switch *ds) > +{ > + struct mt7530_priv *priv = ds->priv; > + int i; > + > + for (i = 0 ; i < 6; i++) MT7530_CPU_PORT? > + > +/* Registers to mac forward conrol for unknown frames */ /conrol/control > + > +/* Registor for port control */ Register > +/* Regiser for TOP signal control */ Register > +/* struct mt7530_priv - This is the main datasructure for holding the state data structure > + * of the driver > + * @dev: The device pointer > + * @ds: The pointer to the dsa core structure > + * @bus: The bus used for the device and built-in PHY > + * @ethsys: The regmap used for enabling the necessary PLL > + * @ethernet: The regmap used for access TRGMII-based registers > + * @core_pwr: The power supplied into the core > + * @io_pwr: The power supplied into the I/O > + * @mcm: Flag for distinguishing if standalone IC or module > + * coupling > + * @reset: The descriptor for GPIO line tied to its reset pin > + * @phy_mode: The xMII for cpu port used > + * @ports: Holding the state amongs ports among Andrew
WARNING: multiple messages have this Message-ID (diff)
From: Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org> To: sean.wang-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org Cc: f.fainelli-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, vivien.didelot-4ysUXcep3aM1wj+D4I0NRVaTQe2KTcn/@public.gmane.org, matthias.bgg-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, mark.rutland-5wv7dgnIgG8@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org, Landen.Chao-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org, keyhaede-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, objelf-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org Subject: Re: [PATCH net-next v2 5/5] net-next: dsa: add dsa support for Mediatek MT7530 switch Date: Fri, 24 Mar 2017 15:19:53 +0100 [thread overview] Message-ID: <20170324141953.GH28518@lunn.ch> (raw) In-Reply-To: <1490088910-19405-6-git-send-email-sean.wang-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org> On Tue, Mar 21, 2017 at 05:35:10PM +0800, sean.wang-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org wrote: Hi Sean > + /* Lower Tx Driving */ > + for (i = 0 ; i < 6 ; i++) Could MT7530_CPU_PORT be used here? > + mt7530_write(priv, MT7530_TRGMII_TD_ODT(i), > + TD_DM_DRVP(8) | TD_DM_DRVN(8)); > + > + /* Setup MT7530 core clock */ > + if (!trgint) { > + /* Disable MT7530 core clock */ > + core_clear(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN); > + > + /* Disable MT7530 PLL, since phy_device has not yet been > + * created when this function is called. So we provide > + * core_write_mmd_indirect to complete this function > + */ > + core_write_mmd_indirect(priv, > + CORE_GSWPLL_GRP1, > + MDIO_MMD_VEND2, > + 0); > + > + /* Setup MT7530 core clock into 500Mhz */ > + core_write(priv, CORE_GSWPLL_GRP2, > + RG_GSWPLL_POSDIV_500M(1) | > + RG_GSWPLL_FBKDIV_500M(25)); > + > + /* Enable MT7530 PLL */ > + core_write(priv, CORE_GSWPLL_GRP1, > + RG_GSWPLL_EN_PRE | > + RG_GSWPLL_POSDIV_200M(2) | > + RG_GSWPLL_FBKDIV_200M(32)); > + > + /* Enable MT7530 core clock */ > + core_set(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN); > + } > + > + /* Setup the MT7530 TRGMII Tx Clock */ > + core_set(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN); > + core_write(priv, CORE_PLL_GROUP5, RG_LCDDS_PCW_NCPO1(ncpo1)); > + core_write(priv, CORE_PLL_GROUP6, RG_LCDDS_PCW_NCPO0(0)); > + core_write(priv, CORE_PLL_GROUP10, RG_LCDDS_SSC_DELTA(ssc_delta)); > + core_write(priv, CORE_PLL_GROUP11, RG_LCDDS_SSC_DELTA1(ssc_delta)); > + core_write(priv, CORE_PLL_GROUP4, > + RG_SYSPLL_DDSFBK_EN | RG_SYSPLL_BIAS_EN | > + RG_SYSPLL_BIAS_LPF_EN); > + core_write(priv, CORE_PLL_GROUP2, > + RG_SYSPLL_EN_NORMAL | RG_SYSPLL_VODEN | > + RG_SYSPLL_POSDIV(1)); > + core_write(priv, CORE_PLL_GROUP7, > + RG_LCDDS_PCW_NCPO_CHG | RG_LCCDS_C(3) | > + RG_LCDDS_PWDB | RG_LCDDS_ISO_EN); > + core_set(priv, CORE_TRGMII_GSW_CLK_CG, > + REG_GSWCK_EN | REG_TRGMIICK_EN); > + > + if (!trgint) > + for (i = 0 ; i < 5 ; i++) Why only 5 here? All other similar loops are to 6. Replacing 5 with a #define might help make this more readable. > + mt7530_rmw(priv, MT7530_TRGMII_RD(i), > + RD_TAP_MASK, RD_TAP(16)); > + else > + mt7623_trgmii_set(priv, GSW_INTF_MODE, INTF_MODE_TRGMII); > + > + return 0; > +} > + > +static int > +mt7623_pad_clk_setup(struct dsa_switch *ds) > +{ > + struct mt7530_priv *priv = ds->priv; > + int i; > + > + for (i = 0 ; i < 6; i++) MT7530_CPU_PORT? > + > +/* Registers to mac forward conrol for unknown frames */ /conrol/control > + > +/* Registor for port control */ Register > +/* Regiser for TOP signal control */ Register > +/* struct mt7530_priv - This is the main datasructure for holding the state data structure > + * of the driver > + * @dev: The device pointer > + * @ds: The pointer to the dsa core structure > + * @bus: The bus used for the device and built-in PHY > + * @ethsys: The regmap used for enabling the necessary PLL > + * @ethernet: The regmap used for access TRGMII-based registers > + * @core_pwr: The power supplied into the core > + * @io_pwr: The power supplied into the I/O > + * @mcm: Flag for distinguishing if standalone IC or module > + * coupling > + * @reset: The descriptor for GPIO line tied to its reset pin > + * @phy_mode: The xMII for cpu port used > + * @ports: Holding the state amongs ports among Andrew -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2017-03-24 14:20 UTC|newest] Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-03-21 9:35 [PATCH net-next v2 0/5] net-next: dsa: add Mediatek MT7530 support sean.wang 2017-03-21 9:35 ` sean.wang-NuS5LvNUpcJWk0Htik3J/w 2017-03-21 9:35 ` sean.wang-NuS5LvNUpcJWk0Htik3J/w 2017-03-21 9:35 ` [PATCH net-next v2 1/5] dt-bindings: net: dsa: add Mediatek MT7530 binding sean.wang 2017-03-21 9:35 ` sean.wang 2017-03-24 16:16 ` Rob Herring 2017-03-24 16:16 ` Rob Herring 2017-03-21 9:35 ` [PATCH net-next v2 2/5] net-next: dsa: add Mediatek tag RX/TX handler sean.wang 2017-03-21 9:35 ` sean.wang-NuS5LvNUpcJWk0Htik3J/w 2017-03-21 9:35 ` sean.wang-NuS5LvNUpcJWk0Htik3J/w 2017-03-21 9:35 ` [PATCH net-next v2 3/5] net-next: ethernet: mediatek: add CDM able to recognize the tag for DSA sean.wang 2017-03-21 9:35 ` sean.wang-NuS5LvNUpcJWk0Htik3J/w 2017-03-21 9:35 ` sean.wang-NuS5LvNUpcJWk0Htik3J/w 2017-03-22 17:43 ` Andrew Lunn 2017-03-22 17:43 ` Andrew Lunn 2017-03-22 18:23 ` Florian Fainelli 2017-03-22 18:23 ` Florian Fainelli 2017-03-21 9:35 ` [PATCH net-next v2 4/5] net-next: ethernet: mediatek: add device_node of GMAC pointing into the netdev instance sean.wang 2017-03-21 9:35 ` sean.wang-NuS5LvNUpcJWk0Htik3J/w 2017-03-21 9:35 ` sean.wang-NuS5LvNUpcJWk0Htik3J/w 2017-03-22 18:18 ` Andrew Lunn 2017-03-22 18:18 ` Andrew Lunn 2017-03-22 18:23 ` Florian Fainelli 2017-03-21 9:35 ` [PATCH net-next v2 5/5] net-next: dsa: add dsa support for Mediatek MT7530 switch sean.wang 2017-03-21 9:35 ` sean.wang-NuS5LvNUpcJWk0Htik3J/w 2017-03-21 9:35 ` sean.wang-NuS5LvNUpcJWk0Htik3J/w 2017-03-22 18:30 ` Andrew Lunn 2017-03-22 18:30 ` Andrew Lunn 2017-03-22 18:39 ` Florian Fainelli 2017-03-22 18:39 ` Florian Fainelli 2017-03-28 5:51 ` Sean Wang 2017-03-28 5:51 ` Sean Wang 2017-03-23 7:22 ` Andrew Lunn 2017-03-23 7:22 ` Andrew Lunn 2017-03-23 8:06 ` Sean Wang 2017-03-23 8:06 ` Sean Wang 2017-03-23 14:09 ` Felix Fietkau 2017-03-23 14:09 ` Felix Fietkau 2017-03-23 14:25 ` John Crispin 2017-03-23 14:25 ` John Crispin 2017-03-23 14:30 ` Felix Fietkau 2017-03-24 7:53 ` Andrew Lunn 2017-03-24 7:53 ` Andrew Lunn 2017-03-24 14:02 ` Andrew Lunn 2017-03-28 6:05 ` Sean Wang 2017-03-28 6:05 ` Sean Wang 2017-03-24 14:19 ` Andrew Lunn [this message] 2017-03-24 14:19 ` Andrew Lunn 2017-03-28 6:50 ` Sean Wang 2017-03-28 6:50 ` Sean Wang 2017-03-28 6:50 ` Sean Wang
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20170324141953.GH28518@lunn.ch \ --to=andrew@lunn.ch \ --cc=Landen.Chao@mediatek.com \ --cc=davem@davemloft.net \ --cc=devicetree@vger.kernel.org \ --cc=f.fainelli@gmail.com \ --cc=keyhaede@gmail.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mediatek@lists.infradead.org \ --cc=mark.rutland@arm.com \ --cc=matthias.bgg@gmail.com \ --cc=netdev@vger.kernel.org \ --cc=objelf@gmail.com \ --cc=robh+dt@kernel.org \ --cc=sean.wang@mediatek.com \ --cc=vivien.didelot@savoirfairelinux.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.