mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 09:12:39 +00:00
e55b4b436e
Some BCM63268 bootloaders may leave gpio registers, related to the roboswitch, disabled before loading the OpenWrt firmware. As result of this the switch won't work. These registers, if not enabled, probably avoid forwarding packets. Signed-off-by: Daniel González Cabanelas <dgcbueu@gmail.com>
45 lines
1.4 KiB
Diff
45 lines
1.4 KiB
Diff
--- a/arch/mips/bcm63xx/clk.c
|
|
+++ b/arch/mips/bcm63xx/clk.c
|
|
@@ -180,7 +180,11 @@ static struct clk clk_swpkt_usb = {
|
|
*/
|
|
static void enetsw_set(struct clk *clk, int enable)
|
|
{
|
|
- if (BCMCPU_IS_6328()) {
|
|
+ if (BCMCPU_IS_6318()) {
|
|
+ bcm_hwclock_set(CKCTL_6318_ROBOSW250_EN |
|
|
+ CKCTL_6318_ROBOSW025_EN, enable);
|
|
+ bcm_ub_hwclock_set(UB_CKCTL_6318_ROBOSW_EN, enable);
|
|
+ } else if (BCMCPU_IS_6328()) {
|
|
bcm_hwclock_set(CKCTL_6328_ROBOSW_EN, enable);
|
|
} else if (BCMCPU_IS_6362()) {
|
|
bcm_hwclock_set(CKCTL_6362_ROBOSW_EN, enable);
|
|
@@ -234,18 +238,22 @@ static struct clk clk_pcm = {
|
|
*/
|
|
static void usbh_set(struct clk *clk, int enable)
|
|
{
|
|
- if (BCMCPU_IS_6328())
|
|
+ if (BCMCPU_IS_6318()) {
|
|
+ bcm_hwclock_set(CKCTL_6318_USB_EN, enable);
|
|
+ bcm_ub_hwclock_set(UB_CKCTL_6318_USB_EN, enable);
|
|
+ } else if (BCMCPU_IS_6328()) {
|
|
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);
|
|
- else if (BCMCPU_IS_6362())
|
|
+ } 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);
|
|
- else if (BCMCPU_IS_63268())
|
|
+ } else if (BCMCPU_IS_63268()) {
|
|
bcm_hwclock_set(CKCTL_63268_USBH_EN, enable);
|
|
- else
|
|
+ } else {
|
|
return;
|
|
+ }
|
|
|
|
if (enable)
|
|
msleep(100);
|