diff options
Diffstat (limited to 'arch/arm/cpu/armv7/zynq/slcr.c')
| -rw-r--r-- | arch/arm/cpu/armv7/zynq/slcr.c | 17 | 
1 files changed, 10 insertions, 7 deletions
diff --git a/arch/arm/cpu/armv7/zynq/slcr.c b/arch/arm/cpu/armv7/zynq/slcr.c index b4c11c324..d7c188233 100644 --- a/arch/arm/cpu/armv7/zynq/slcr.c +++ b/arch/arm/cpu/armv7/zynq/slcr.c @@ -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 rclk, 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,16 +62,16 @@ void zynq_slcr_gem_clk_setup(u32 gem_id, u32 rclk, 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(rclk, &slcr_base->gem1_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(rclk, &slcr_base->gem0_rclk_ctrl); +		writel(1, &slcr_base->gem0_rclk_ctrl);  	}  	udelay(100000);  out:  |