Commit 1cd1c049 authored by Jonas Gorski's avatar Jonas Gorski Committed by Ralf Baechle

MIPS: BCM63XX: add missing clocks for BCM6328 and BCM6362

Add some mosty unused, but missing clocks for BCM6328 and BCM6362.
This also fixes PCIe init on BCM6362.
Signed-off-by: default avatarJonas Gorski <jogo@openwrt.org>
Patchwork: http://patchwork.linux-mips.org/patch/5200/Acked-by: default avatarJohn Crispin <blogic@openwrt.org>
parent 9b75733b
...@@ -125,11 +125,18 @@ static struct clk clk_ephy = { ...@@ -125,11 +125,18 @@ static struct clk clk_ephy = {
*/ */
static void enetsw_set(struct clk *clk, int enable) static void enetsw_set(struct clk *clk, int enable)
{ {
if (!BCMCPU_IS_6368()) if (BCMCPU_IS_6328())
return; bcm_hwclock_set(CKCTL_6328_ROBOSW_EN, enable);
else if (BCMCPU_IS_6362())
bcm_hwclock_set(CKCTL_6362_ROBOSW_EN, enable);
else if (BCMCPU_IS_6368())
bcm_hwclock_set(CKCTL_6368_ROBOSW_EN | bcm_hwclock_set(CKCTL_6368_ROBOSW_EN |
CKCTL_6368_SWPKT_USB_EN | CKCTL_6368_SWPKT_USB_EN |
CKCTL_6368_SWPKT_SAR_EN, enable); CKCTL_6368_SWPKT_SAR_EN,
enable);
else
return;
if (enable) { if (enable) {
/* reset switch core afer clock change */ /* reset switch core afer clock change */
bcm63xx_core_set_reset(BCM63XX_RESET_ENETSW, 1); bcm63xx_core_set_reset(BCM63XX_RESET_ENETSW, 1);
...@@ -166,6 +173,8 @@ static void usbh_set(struct clk *clk, int enable) ...@@ -166,6 +173,8 @@ static void usbh_set(struct clk *clk, int enable)
bcm_hwclock_set(CKCTL_6328_USBH_EN, enable); bcm_hwclock_set(CKCTL_6328_USBH_EN, enable);
else if (BCMCPU_IS_6348()) else if (BCMCPU_IS_6348())
bcm_hwclock_set(CKCTL_6348_USBH_EN, enable); bcm_hwclock_set(CKCTL_6348_USBH_EN, enable);
else if (BCMCPU_IS_6362())
bcm_hwclock_set(CKCTL_6362_USBH_EN, enable);
else if (BCMCPU_IS_6368()) else if (BCMCPU_IS_6368())
bcm_hwclock_set(CKCTL_6368_USBH_EN, enable); bcm_hwclock_set(CKCTL_6368_USBH_EN, enable);
} }
...@@ -181,6 +190,8 @@ static void usbd_set(struct clk *clk, int enable) ...@@ -181,6 +190,8 @@ static void usbd_set(struct clk *clk, int enable)
{ {
if (BCMCPU_IS_6328()) if (BCMCPU_IS_6328())
bcm_hwclock_set(CKCTL_6328_USBD_EN, enable); bcm_hwclock_set(CKCTL_6328_USBD_EN, enable);
else if (BCMCPU_IS_6362())
bcm_hwclock_set(CKCTL_6362_USBD_EN, enable);
else if (BCMCPU_IS_6368()) else if (BCMCPU_IS_6368())
bcm_hwclock_set(CKCTL_6368_USBD_EN, enable); bcm_hwclock_set(CKCTL_6368_USBD_EN, enable);
} }
...@@ -244,6 +255,9 @@ static struct clk clk_xtm = { ...@@ -244,6 +255,9 @@ static struct clk clk_xtm = {
*/ */
static void ipsec_set(struct clk *clk, int enable) static void ipsec_set(struct clk *clk, int enable)
{ {
if (BCMCPU_IS_6362())
bcm_hwclock_set(CKCTL_6362_IPSEC_EN, enable);
else if (BCMCPU_IS_6368())
bcm_hwclock_set(CKCTL_6368_IPSEC_EN, enable); bcm_hwclock_set(CKCTL_6368_IPSEC_EN, enable);
} }
...@@ -257,7 +271,10 @@ static struct clk clk_ipsec = { ...@@ -257,7 +271,10 @@ static struct clk clk_ipsec = {
static void pcie_set(struct clk *clk, int enable) static void pcie_set(struct clk *clk, int enable)
{ {
if (BCMCPU_IS_6328())
bcm_hwclock_set(CKCTL_6328_PCIE_EN, enable); bcm_hwclock_set(CKCTL_6328_PCIE_EN, enable);
else if (BCMCPU_IS_6362())
bcm_hwclock_set(CKCTL_6362_PCIE_EN, enable);
} }
static struct clk clk_pcie = { static struct clk clk_pcie = {
...@@ -323,9 +340,9 @@ struct clk *clk_get(struct device *dev, const char *id) ...@@ -323,9 +340,9 @@ struct clk *clk_get(struct device *dev, const char *id)
return &clk_periph; return &clk_periph;
if (BCMCPU_IS_6358() && !strcmp(id, "pcm")) if (BCMCPU_IS_6358() && !strcmp(id, "pcm"))
return &clk_pcm; return &clk_pcm;
if (BCMCPU_IS_6368() && !strcmp(id, "ipsec")) if ((BCMCPU_IS_6362() || BCMCPU_IS_6368()) && !strcmp(id, "ipsec"))
return &clk_ipsec; return &clk_ipsec;
if (BCMCPU_IS_6328() && !strcmp(id, "pcie")) if ((BCMCPU_IS_6328() || BCMCPU_IS_6362()) && !strcmp(id, "pcie"))
return &clk_pcie; return &clk_pcie;
return ERR_PTR(-ENOENT); return ERR_PTR(-ENOENT);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment