linux/drivers/net/ethernet/stmicro/stmmac
Martin Blumenstingl fb7d38a70e net: stmmac: dwmac-meson8b: propagate rate changes to the parent clock
On Meson8b the only valid input clock is MPLL2. The bootloader
configures that to run at 500002394Hz which cannot be divided evenly
down to 125MHz using the m250_div clock. Currently the common clock
framework chooses a m250_div of 2 - with the internal fixed
"divide by 10" this results in a RGMII TX clock of 125001197Hz (120Hz
above the requested 125MHz).

Letting the common clock framework propagate the rate changes up to the
parent of m250_mux allows us to get the best possible clock rate. With
this patch the common clock framework calculates a rate of
very-close-to-250MHz (249999701Hz to be exact) for the MPLL2 clock
(which is the mux input). Dividing that by 2 (which is an internal,
fixed divider for the RGMII TX clock) gives us an RGMII TX clock of
124999850Hz (which is only 150Hz off the requested 125MHz, compared to
1197Hz based on the MPLL2 rate set by u-boot and the Amlogic GPL kernel
sources).

SoCs from the Meson GX series are not affected by this change because
the input clock is FCLK_DIV2 whose rate cannot be changed (which is fine
since it's running at 1GHz, so it's already a multiple of 250MHz and
125MHz).

Fixes: 566e825162 ("net: stmmac: add a glue driver for the Amlogic Meson 8b / GXBB DWMAC")
Suggested-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Reviewed-by: Jerome Brunet <jbrunet@baylibre.com>
Tested-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2018-01-17 14:41:05 -05:00
..
altr_tse_pcs.c net: ethernet: stmmac: Convert timers to use timer_setup() 2017-10-18 12:39:37 +01:00
altr_tse_pcs.h
chain_mode.c net: stmmac: set total length of the packet to be transmitted in TDES3 2017-04-13 12:40:09 -04:00
common.h net: stmmac: Fix bad RX timestamp extraction 2017-12-19 14:12:15 -05:00
descs_com.h net: stmmac: remove freesoftware address 2017-02-08 15:11:23 -05:00
descs.h net: stmmac: remove freesoftware address 2017-02-08 15:11:23 -05:00
dwmac4_core.c net: stmmac: fix LPI transitioning for dwmac4 2017-11-14 22:04:56 +09:00
dwmac4_descs.c net: stmmac: Pad ring number with zeroes in display_ring() 2018-01-02 21:54:56 -05:00
dwmac4_descs.h
dwmac4_dma.c net: stmmac: Disable flow ctrl for RX AVB queues and really enable TX AVB queues 2017-10-14 11:12:08 -07:00
dwmac4_dma.h net: stmmac: rx and tx ring length prepared for multiple queues 2017-03-15 14:44:32 -07:00
dwmac4_lib.c net: stmmac: prepare rx/tx set tail function for multiple queues 2017-03-15 14:44:32 -07:00
dwmac4.h net: stmmac: fix LPI transitioning for dwmac4 2017-11-14 22:04:56 +09:00
dwmac100_core.c net-next: stmmac: rework the speed selection 2017-05-25 13:08:35 -04:00
dwmac100_dma.c net: stmmac: Adjust dump offset of DMA registers for ethtool 2017-07-24 16:19:10 -07:00
dwmac100.h net: stmmac: remove freesoftware address 2017-02-08 15:11:23 -05:00
dwmac1000_core.c net-next: stmmac: rework the speed selection 2017-05-25 13:08:35 -04:00
dwmac1000_dma.c net: stmmac: Adjust dump offset of DMA registers for ethtool 2017-07-24 16:19:10 -07:00
dwmac1000.h net: stmmac: remove freesoftware address 2017-02-08 15:11:23 -05:00
dwmac_dma.h net: stmmac: Adjust dump offset of DMA registers for ethtool 2017-07-24 16:19:10 -07:00
dwmac_lib.c net: stmmac: dwmac_lib: fix interchanged sleep/timeout values in DMA reset function 2017-10-13 10:19:52 -07:00
dwmac-anarion.c net: stmmac: Add Adaptrum Anarion GMAC glue layer 2017-08-06 21:31:32 -07:00
dwmac-dwc-qos-eth.c net: stmmac: dwc-qos-eth: Fix typo in DT bindings parsing 2017-10-27 23:23:19 +09:00
dwmac-generic.c
dwmac-ipq806x.c net: ethernet: stmmac: Clean up dead code 2017-10-08 21:19:07 -07:00
dwmac-lpc18xx.c
dwmac-meson8b.c net: stmmac: dwmac-meson8b: propagate rate changes to the parent clock 2018-01-17 14:41:05 -05:00
dwmac-meson.c
dwmac-oxnas.c
dwmac-rk.c net: stmmac: dwmac-rk: Add RK3128 GMAC support 2017-10-03 15:39:56 -07:00
dwmac-socfpga.c net: stmmac: socfgpa: Ensure emac bit set in sys manager for MII/GMII/SGMII. 2017-08-23 20:26:58 -07:00
dwmac-sti.c
dwmac-stm32.c ethernet: dwmac-stm32: Fix copyright 2017-11-29 10:08:09 -05:00
dwmac-sun8i.c net: stmmac: dwmac-sun8i: fix allwinner,leds-active-low handling 2017-11-30 09:44:56 -05:00
dwmac-sunxi.c
enh_desc.c net: stmmac: Pad ring number with zeroes in display_ring() 2018-01-02 21:54:56 -05:00
Kconfig net: stmmac: dwmac-sun8i: Handle integrated/external MDIOs 2017-10-27 11:58:49 +09:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mmc_core.c net: stmmac: remove freesoftware address 2017-02-08 15:11:23 -05:00
mmc.h net: stmmac: remove freesoftware address 2017-02-08 15:11:23 -05:00
norm_desc.c net: stmmac: Pad ring number with zeroes in display_ring() 2018-01-02 21:54:56 -05:00
ring_mode.c net: stmmac: set total length of the packet to be transmitted in TDES3 2017-04-13 12:40:09 -04:00
stmmac_ethtool.c net: stmmac: Adjust dump offset of DMA registers for ethtool 2017-07-24 16:19:10 -07:00
stmmac_hwtstamp.c net: stmmac: Fix TX timestamp calculation 2017-12-19 14:12:14 -05:00
stmmac_main.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-01-09 10:37:00 -05:00
stmmac_mdio.c net: stmmac: Delete dead code for MDIO registration 2017-09-05 14:36:18 -07:00
stmmac_pci.c stmmac: pci: Use dmi_system_id table for retrieving PHY addresses 2017-06-22 13:39:57 -04:00
stmmac_pcs.h
stmmac_platform.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
stmmac_platform.h
stmmac_ptp.c net: ethernet: make ptp_clock_info const 2017-08-22 11:04:51 -07:00
stmmac_ptp.h stmmac: fix ptp header for GMAC3 hw timestamp 2017-06-09 12:39:25 -04:00
stmmac.h net-next: stmmac: Convert old_link to bool 2017-05-25 13:08:35 -04:00