summaryrefslogtreecommitdiffstats
path: root/target/linux/aruba-2.6/files/arch/mips/aruba/flash_lock.c
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/aruba-2.6/files/arch/mips/aruba/flash_lock.c')
-rw-r--r--target/linux/aruba-2.6/files/arch/mips/aruba/flash_lock.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/target/linux/aruba-2.6/files/arch/mips/aruba/flash_lock.c b/target/linux/aruba-2.6/files/arch/mips/aruba/flash_lock.c
new file mode 100644
index 0000000000..48c762db5a
--- /dev/null
+++ b/target/linux/aruba-2.6/files/arch/mips/aruba/flash_lock.c
@@ -0,0 +1,27 @@
+#include <linux/module.h>
+#include <linux/types.h>
+#include <asm/bootinfo.h>
+
+#define AP70_PROT_ADDR 0xb8010008
+#define AP70_PROT_DATA 0x8
+#define AP60_PROT_ADDR 0xB8400000
+#define AP60_PROT_DATA 0x04000000
+
+void unlock_ap60_70_flash(void)
+{
+ volatile __u32 val;
+ switch (mips_machtype) {
+ case MACH_ARUBA_AP70:
+ val = *(volatile __u32 *)AP70_PROT_ADDR;
+ val &= ~(AP70_PROT_DATA);
+ *(volatile __u32 *)AP70_PROT_ADDR = val;
+ break;
+ case MACH_ARUBA_AP65:
+ case MACH_ARUBA_AP60:
+ default:
+ val = *(volatile __u32 *)AP60_PROT_ADDR;
+ val &= ~(AP60_PROT_DATA);
+ *(volatile __u32 *)AP60_PROT_ADDR = val;
+ break;
+ }
+}