mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-13 15:03:58 +03:00
net: zynq_gem: Calculate clock dividers dynamically
Remove hard coded clock divider setting and use the Zynq clock framework to dynamically calculate appropriate dividers at run time. Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
This commit is contained in:
committed by
Michal Simek
parent
1cd46ed2d3
commit
97598fcf10
@@ -8,6 +8,7 @@
|
||||
#include <asm/io.h>
|
||||
#include <malloc.h>
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/arch/clk.h>
|
||||
|
||||
#define SLCR_LOCK_MAGIC 0x767B
|
||||
#define SLCR_UNLOCK_MAGIC 0xDF0D
|
||||
@@ -50,8 +51,10 @@ void zynq_slcr_cpu_reset(void)
|
||||
}
|
||||
|
||||
/* Setup clk for network */
|
||||
void zynq_slcr_gem_clk_setup(u32 gem_id, u32 clk)
|
||||
void zynq_slcr_gem_clk_setup(u32 gem_id, unsigned long clk_rate)
|
||||
{
|
||||
int ret;
|
||||
|
||||
zynq_slcr_unlock();
|
||||
|
||||
if (gem_id > 1) {
|
||||
@@ -59,14 +62,14 @@ void zynq_slcr_gem_clk_setup(u32 gem_id, u32 clk)
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = zynq_clk_set_rate(gem0_clk + gem_id, clk_rate);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
if (gem_id) {
|
||||
/* Set divisors for appropriate frequency in GEM_CLK_CTRL */
|
||||
writel(clk, &slcr_base->gem1_clk_ctrl);
|
||||
/* Configure GEM_RCLK_CTRL */
|
||||
writel(1, &slcr_base->gem1_rclk_ctrl);
|
||||
} else {
|
||||
/* Set divisors for appropriate frequency in GEM_CLK_CTRL */
|
||||
writel(clk, &slcr_base->gem0_clk_ctrl);
|
||||
/* Configure GEM_RCLK_CTRL */
|
||||
writel(1, &slcr_base->gem0_rclk_ctrl);
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
extern void zynq_slcr_lock(void);
|
||||
extern void zynq_slcr_unlock(void);
|
||||
extern void zynq_slcr_cpu_reset(void);
|
||||
extern void zynq_slcr_gem_clk_setup(u32 gem_id, u32 clk);
|
||||
extern void zynq_slcr_gem_clk_setup(u32 gem_id, unsigned long clk_rate);
|
||||
extern void zynq_slcr_devcfg_disable(void);
|
||||
extern void zynq_slcr_devcfg_enable(void);
|
||||
extern u32 zynq_slcr_get_boot_mode(void);
|
||||
|
||||
Reference in New Issue
Block a user