net: zynq_gem: Move RCLK details out of driver
The GEM driver should not need to know about Zynq specific details of RCLK related registers and bitfields in the SLCR. Move those details to the slcr driver. Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
This commit is contained in:
parent
2826fd320c
commit
1cd46ed2d3
@ -50,7 +50,7 @@ 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, u32 clk)
|
||||
{
|
||||
zynq_slcr_unlock();
|
||||
|
||||
@ -63,12 +63,12 @@ void zynq_slcr_gem_clk_setup(u32 gem_id, u32 rclk, u32 clk)
|
||||
/* 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:
|
||||
|
@ -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 rclk, u32 clk);
|
||||
extern void zynq_slcr_gem_clk_setup(u32 gem_id, u32 clk);
|
||||
extern void zynq_slcr_devcfg_disable(void);
|
||||
extern void zynq_slcr_devcfg_enable(void);
|
||||
extern u32 zynq_slcr_get_boot_mode(void);
|
||||
|
@ -270,7 +270,7 @@ static int zynq_gem_setup_mac(struct eth_device *dev)
|
||||
|
||||
static int zynq_gem_init(struct eth_device *dev, bd_t * bis)
|
||||
{
|
||||
u32 i, rclk, clk = 0;
|
||||
u32 i, clk = 0;
|
||||
struct phy_device *phydev;
|
||||
const u32 stat_size = (sizeof(struct zynq_gem_regs) -
|
||||
offsetof(struct zynq_gem_regs, stat)) / 4;
|
||||
@ -348,17 +348,14 @@ static int zynq_gem_init(struct eth_device *dev, bd_t * bis)
|
||||
case SPEED_1000:
|
||||
writel(ZYNQ_GEM_NWCFG_INIT | ZYNQ_GEM_NWCFG_SPEED1000,
|
||||
®s->nwcfg);
|
||||
rclk = (0 << 4) | (1 << 0);
|
||||
clk = (1 << 20) | (8 << 8) | (0 << 4) | (1 << 0);
|
||||
break;
|
||||
case SPEED_100:
|
||||
clrsetbits_le32(®s->nwcfg, ZYNQ_GEM_NWCFG_SPEED1000,
|
||||
ZYNQ_GEM_NWCFG_INIT | ZYNQ_GEM_NWCFG_SPEED100);
|
||||
rclk = 1 << 0;
|
||||
clk = (5 << 20) | (8 << 8) | (0 << 4) | (1 << 0);
|
||||
break;
|
||||
case SPEED_10:
|
||||
rclk = 1 << 0;
|
||||
/* FIXME untested */
|
||||
clk = (5 << 20) | (8 << 8) | (0 << 4) | (1 << 0);
|
||||
break;
|
||||
@ -367,7 +364,7 @@ static int zynq_gem_init(struct eth_device *dev, bd_t * bis)
|
||||
/* Change the rclk and clk only not using EMIO interface */
|
||||
if (!priv->emio)
|
||||
zynq_slcr_gem_clk_setup(dev->iobase !=
|
||||
ZYNQ_GEM_BASEADDR0, rclk, clk);
|
||||
ZYNQ_GEM_BASEADDR0, clk);
|
||||
|
||||
setbits_le32(®s->nwctrl, ZYNQ_GEM_NWCTRL_RXEN_MASK |
|
||||
ZYNQ_GEM_NWCTRL_TXEN_MASK);
|
||||
|
Loading…
Reference in New Issue
Block a user