summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-05-31 22:53:35 +0000
committerjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>2011-05-31 22:53:35 +0000
commit6f45adddfe4c060b7c6d77f26232d95edf17a1ff (patch)
tree7737810b956b0c85e625fa09ba07daa5d87fe70f
parentc7eb38661b1c1256aeea697591a6dc723f999c69 (diff)
ar71xx: add AR933x specific glue for ar71xx_device{start,stop}
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@27061 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r--target/linux/ar71xx/files/arch/mips/ar71xx/ar71xx.c23
-rw-r--r--target/linux/ar71xx/files/arch/mips/include/asm/mach-ar71xx/ar71xx.h1
2 files changed, 24 insertions, 0 deletions
diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/ar71xx.c b/target/linux/ar71xx/files/arch/mips/ar71xx/ar71xx.c
index 31b4422a09..ef956fbf4d 100644
--- a/target/linux/ar71xx/files/arch/mips/ar71xx/ar71xx.c
+++ b/target/linux/ar71xx/files/arch/mips/ar71xx/ar71xx.c
@@ -71,6 +71,14 @@ void ar71xx_device_stop(u32 mask)
spin_unlock_irqrestore(&ar71xx_device_lock, flags);
break;
+ case AR71XX_SOC_AR9330:
+ case AR71XX_SOC_AR9331:
+ spin_lock_irqsave(&ar71xx_device_lock, flags);
+ t = ar71xx_reset_rr(AR933X_RESET_REG_RESET_MODULE);
+ ar71xx_reset_wr(AR933X_RESET_REG_RESET_MODULE, t | mask);
+ spin_unlock_irqrestore(&ar71xx_device_lock, flags);
+ break;
+
case AR71XX_SOC_AR9341:
case AR71XX_SOC_AR9342:
case AR71XX_SOC_AR9344:
@@ -122,6 +130,14 @@ void ar71xx_device_start(u32 mask)
spin_unlock_irqrestore(&ar71xx_device_lock, flags);
break;
+ case AR71XX_SOC_AR9330:
+ case AR71XX_SOC_AR9331:
+ spin_lock_irqsave(&ar71xx_device_lock, flags);
+ t = ar71xx_reset_rr(AR933X_RESET_REG_RESET_MODULE);
+ ar71xx_reset_wr(AR933X_RESET_REG_RESET_MODULE, t & ~mask);
+ spin_unlock_irqrestore(&ar71xx_device_lock, flags);
+ break;
+
case AR71XX_SOC_AR9341:
case AR71XX_SOC_AR9342:
case AR71XX_SOC_AR9344:
@@ -166,6 +182,13 @@ int ar71xx_device_stopped(u32 mask)
spin_unlock_irqrestore(&ar71xx_device_lock, flags);
break;
+ case AR71XX_SOC_AR9330:
+ case AR71XX_SOC_AR9331:
+ spin_lock_irqsave(&ar71xx_device_lock, flags);
+ t = ar71xx_reset_rr(AR933X_RESET_REG_RESET_MODULE);
+ spin_unlock_irqrestore(&ar71xx_device_lock, flags);
+ break;
+
case AR71XX_SOC_AR9341:
case AR71XX_SOC_AR9342:
case AR71XX_SOC_AR9344:
diff --git a/target/linux/ar71xx/files/arch/mips/include/asm/mach-ar71xx/ar71xx.h b/target/linux/ar71xx/files/arch/mips/include/asm/mach-ar71xx/ar71xx.h
index 84f7c476b5..3b02d64b99 100644
--- a/target/linux/ar71xx/files/arch/mips/include/asm/mach-ar71xx/ar71xx.h
+++ b/target/linux/ar71xx/files/arch/mips/include/asm/mach-ar71xx/ar71xx.h
@@ -604,6 +604,7 @@ void ar71xx_ddr_flush(u32 reg);
#define AR724X_RESET_REG_RESET_MODULE 0x1c
+#define AR933X_RESET_REG_RESET_MODULE 0x1c
#define AR933X_RESET_REG_BOOTSTRAP 0xac
#define AR933X_BOOTSTRAP_REF_CLK_40 BIT(0)