Message ID | 1391398346-5094-3-git-send-email-wens@csie.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, Feb 03, 2014 at 11:32:20AM +0800, Chen-Yu Tsai wrote: > The GMAC uses 1 of 2 sources for its transmit clock, depending on the > PHY interface mode. Add both sources as dummy clocks, and as parents > to the GMAC clock node. > > Signed-off-by: Chen-Yu Tsai <wens@csie.org> > --- > arch/arm/boot/dts/sun7i-a20.dtsi | 28 ++++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) > > diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi > index 1595e9a..fc7f470 100644 > --- a/arch/arm/boot/dts/sun7i-a20.dtsi > +++ b/arch/arm/boot/dts/sun7i-a20.dtsi > @@ -314,6 +314,34 @@ > }; > > /* > + * The following two are dummy clocks, placeholders used > + * on gmac_tx clock. The actual frequency and availability > + * depends on the external PHY, operation mode and link > + * speed. > + */ If it depends on the external PHY, I guess that means it also depends on the board, right? Or is the GMAC supposed to always have that clock running at 25MHz, no matter what PHY is connected to it? Maxime
On Tue, Feb 4, 2014 at 3:34 AM, Maxime Ripard <maxime.ripard@free-electrons.com> wrote: > On Mon, Feb 03, 2014 at 11:32:20AM +0800, Chen-Yu Tsai wrote: >> The GMAC uses 1 of 2 sources for its transmit clock, depending on the >> PHY interface mode. Add both sources as dummy clocks, and as parents >> to the GMAC clock node. >> >> Signed-off-by: Chen-Yu Tsai <wens@csie.org> >> --- >> arch/arm/boot/dts/sun7i-a20.dtsi | 28 ++++++++++++++++++++++++++++ >> 1 file changed, 28 insertions(+) >> >> diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi >> index 1595e9a..fc7f470 100644 >> --- a/arch/arm/boot/dts/sun7i-a20.dtsi >> +++ b/arch/arm/boot/dts/sun7i-a20.dtsi >> @@ -314,6 +314,34 @@ >> }; >> >> /* >> + * The following two are dummy clocks, placeholders used >> + * on gmac_tx clock. The actual frequency and availability >> + * depends on the external PHY, operation mode and link >> + * speed. >> + */ > > If it depends on the external PHY, I guess that means it also depends > on the board, right? Or is the GMAC supposed to always have that clock > running at 25MHz, no matter what PHY is connected to it? What I meant in the comment is that we cannot control the actual clock rate of the TX clock. We can only select the source, and this is what gmac_tx clock does. It is just a clock mux. The 125MHz and 25MHz clock rates are used by the clk_set_rate in the stmmac glue layer to do auto-reparenting. The board dependent factor is what _type_ of PHY it is using, i.e. MII, GMII, or RGMII. If it's MII, the PHY should provide the clock. If it's RGMII, the internal clock would be used. GMII is a mix of both. The actual clock rate depends on the link speed. I should rephrase the comment along the lines of: The following two are dummy clocks, placeholders used in the gmac_tx clock. The gmac driver will choose one parent depending on the PHY interface mode, using clk_set_rate auto-reparenting. The actual TX clock rate is not controlled by the gmac_tx clock. Cheers ChenYu
On Tue, Feb 04, 2014 at 11:06:24AM +0800, Chen-Yu Tsai wrote: > On Tue, Feb 4, 2014 at 3:34 AM, Maxime Ripard > <maxime.ripard@free-electrons.com> wrote: > > On Mon, Feb 03, 2014 at 11:32:20AM +0800, Chen-Yu Tsai wrote: > >> The GMAC uses 1 of 2 sources for its transmit clock, depending on the > >> PHY interface mode. Add both sources as dummy clocks, and as parents > >> to the GMAC clock node. > >> > >> Signed-off-by: Chen-Yu Tsai <wens@csie.org> > >> --- > >> arch/arm/boot/dts/sun7i-a20.dtsi | 28 ++++++++++++++++++++++++++++ > >> 1 file changed, 28 insertions(+) > >> > >> diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi > >> index 1595e9a..fc7f470 100644 > >> --- a/arch/arm/boot/dts/sun7i-a20.dtsi > >> +++ b/arch/arm/boot/dts/sun7i-a20.dtsi > >> @@ -314,6 +314,34 @@ > >> }; > >> > >> /* > >> + * The following two are dummy clocks, placeholders used > >> + * on gmac_tx clock. The actual frequency and availability > >> + * depends on the external PHY, operation mode and link > >> + * speed. > >> + */ > > > > If it depends on the external PHY, I guess that means it also depends > > on the board, right? Or is the GMAC supposed to always have that clock > > running at 25MHz, no matter what PHY is connected to it? > > What I meant in the comment is that we cannot control the actual clock > rate of the TX clock. We can only select the source, and this is what > gmac_tx clock does. It is just a clock mux. The 125MHz and 25MHz clock > rates are used by the clk_set_rate in the stmmac glue layer to do > auto-reparenting. > > The board dependent factor is what _type_ of PHY it is using, i.e. > MII, GMII, or RGMII. If it's MII, the PHY should provide the clock. > If it's RGMII, the internal clock would be used. GMII is a mix of > both. The actual clock rate depends on the link speed. > > I should rephrase the comment along the lines of: > > The following two are dummy clocks, placeholders used in the gmac_tx > clock. The gmac driver will choose one parent depending on the PHY > interface mode, using clk_set_rate auto-reparenting. > The actual TX clock rate is not controlled by the gmac_tx clock. Ok, thanks for the clarification. Maxime
diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi index 1595e9a..fc7f470 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi @@ -314,6 +314,34 @@ }; /* + * The following two are dummy clocks, placeholders used + * on gmac_tx clock. The actual frequency and availability + * depends on the external PHY, operation mode and link + * speed. + */ + mii_phy_tx_clk: clk@2 { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <25000000>; + clock-output-names = "mii_phy_tx"; + }; + + gmac_int_tx_clk: clk@3 { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <125000000>; + clock-output-names = "gmac_int_tx"; + }; + + gmac_tx_clk: clk@01c20164 { + #clock-cells = <0>; + compatible = "allwinner,sun7i-a20-gmac-clk"; + reg = <0x01c20164 0x4>; + clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>; + clock-output-names = "gmac_tx"; + }; + + /* * Dummy clock used by output clocks */ osc24M_32k: clk@1 {
The GMAC uses 1 of 2 sources for its transmit clock, depending on the PHY interface mode. Add both sources as dummy clocks, and as parents to the GMAC clock node. Signed-off-by: Chen-Yu Tsai <wens@csie.org> --- arch/arm/boot/dts/sun7i-a20.dtsi | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+)