Add more ar7 fixes by DerAgo. Fix vlnyq initialistion on fritzbox, add prom_printf...
authorFlorian Fainelli <florian@openwrt.org>
Tue, 24 Jul 2007 11:05:23 +0000 (11:05 +0000)
committerFlorian Fainelli <florian@openwrt.org>
Tue, 24 Jul 2007 11:05:23 +0000 (11:05 +0000)
SVN-Revision: 8141

target/linux/ar7-2.6/config/default
target/linux/ar7-2.6/files/arch/mips/ar7/prom.c
target/linux/ar7-2.6/files/arch/mips/ar7/vlynq.c
target/linux/ar7-2.6/files/include/asm-mips/ar7/prom.h [new file with mode: 0644]
target/linux/ar7-2.6/patches/100-board_support.patch

index 3092078a29f77c8e2782cf6f1a8f059e5beeab01..f45cdeb346485b07899e1aa0bdb5f21c0ee7a293 100644 (file)
@@ -207,3 +207,34 @@ CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
 CONFIG_TRAD_SIGNALS=y
 # CONFIG_UNUSED_SYMBOLS is not set
 # CONFIG_USB is not set
+CONFIG_DEBUG_DEVRES=n
+CONFIG_DEBUG_DRIVER=n
+CONFIG_DEBUG_KERNEL=y
+CONFIG_DEBUG_KOBJECT=n
+CONFIG_DEBUG_LIST=n
+CONFIG_DEBUG_LOCKING_API_SELFTESTS=n
+CONFIG_DEBUG_LOCK_ALLOC=n
+CONFIG_DEBUG_MUTEXES=n
+CONFIG_DEBUG_RT_MUTEXES=n
+CONFIG_DEBUG_SHIRQ=n
+CONFIG_DEBUG_SLAB=n
+CONFIG_DEBUG_SPINLOCK=n
+CONFIG_DEBUG_SPINLOCK_SLEEP=n
+CONFIG_DEBUG_STACK_USAGE=n
+CONFIG_DEBUG_VM=n
+CONFIG_DETECT_SOFTLOCKUP=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_FAULT_INJECTION=n
+CONFIG_FORCED_INLINING=y
+CONFIG_GDB_CONSOLE=y
+CONFIG_IP_DCCP_DEBUG=n
+CONFIG_KALLSYMS_ALL=n
+CONFIG_KGDB=y
+CONFIG_MIPS_UNCACHED=n
+CONFIG_PCI_DEBUG=n
+CONFIG_PROVE_LOCKING=n
+CONFIG_RCU_TORTURE_TEST=n
+CONFIG_RT_MUTEX_TESTER=n
+CONFIG_RUNTIME_DEBUG=n
+CONFIG_SCHEDSTATS=n
+CONFIG_TIMER_STATS=n
index 38037dd337100a5e05fc4c2de671dca00831e876..08904dee717e11832f45f951c7ca6507ed25bf10 100644 (file)
@@ -26,6 +26,7 @@
 #include <linux/serial_reg.h>
 #include <linux/spinlock.h>
 #include <linux/module.h>
+#include <linux/string.h>
 #include <asm/io.h>
 #include <asm/bootinfo.h>
 #include <asm/mips-boards/prom.h>
@@ -245,9 +246,12 @@ static void __init console_config(void)
                return;
 
 #ifdef CONFIG_KGDB
-       strcat(prom_getcmdline(), " console=kgdb");
-       kgdb_enabled = 1;
-       return;
+       if (!strstr(prom_getcmdline(), "nokgdb"))
+       {
+            strcat(prom_getcmdline(), " console=kgdb");
+            kgdb_enabled = 1;
+            return;
+       }
 #endif
 
        if ((s = prom_getenv("modetty0"))) {
@@ -307,6 +311,28 @@ int prom_putchar(char c)
        return 1;
 }
 
+// from adm5120/prom.c
+void prom_printf(char *fmt, ...)
+{
+    va_list args;
+    int l;
+    char *p, *buf_end;
+    char buf[1024];
+
+    va_start(args, fmt);
+    l = vsprintf(buf, fmt, args); /* hopefully i < sizeof(buf) */
+    va_end(args);
+
+    buf_end = buf + l;
+
+    for (p = buf; p < buf_end; p++) {
+        /* Crude cr/nl handling is better than none */
+        if (*p == '\n')
+            prom_putchar('\r');
+        prom_putchar(*p);
+    }
+}
+
 #ifdef CONFIG_KGDB
 int putDebugChar(char c)
 {
index 06097556d2662c9b428b0cb3bf803cf0a2da949c..e085c5b199f06c7a9b36ab9041ac9a126c1bd83c 100644 (file)
@@ -32,6 +32,7 @@
 #include <linux/device.h>
 #include <asm/addrspace.h>
 #include <asm/io.h>
+#include <asm/ar7/ar7.h>
 #include <asm/ar7/vlynq.h>
 
 #define PER_DEVICE_IRQS 32
@@ -288,7 +289,7 @@ EXPORT_SYMBOL(vlynq_unregister_driver);
 
 int vlynq_device_enable(struct vlynq_device *dev)
 {
-       u32 val;
+    u32 div;
        int result;
        struct plat_vlynq_ops *ops = dev->dev.platform_data;
 
@@ -299,17 +300,24 @@ int vlynq_device_enable(struct vlynq_device *dev)
        dev->local->control = 0;
        dev->remote->control = 0;
 
-       if (vlynq_linked(dev)) 
+    div = ar7_dsp_freq() / 62500000;
+    if(ar7_dsp_freq() / div != 62500000)
+    {
+               printk(KERN_WARNING
+                      "VLYNQ: Adjusted requested frequency %d to %d\n",
+                      62500000, ar7_dsp_freq() / div);
+    }
+    
+    printk("VLYNQ: Setting clock to %d (clock divider %u)\n", ar7_dsp_freq() / div, div);
+       dev->local->control = VLYNQ_CTRL_CLOCK_DIV((div - 1)) |
+               VLYNQ_CTRL_CLOCK_INT;
+
+//     dev->local->control = VLYNQ_CTRL_CLOCK_INT;
+
+    if (vlynq_linked(dev)) 
                return vlynq_setup_irq(dev);
 
-       for (val = 0; val < 8; val++) {
-               dev->local->control = VLYNQ_CTRL_CLOCK_DIV(val) |
-                       VLYNQ_CTRL_CLOCK_INT;
-               if (vlynq_linked(dev)) 
-                       return vlynq_setup_irq(dev);
-       }
-
-       return -ENODEV;
+    return -ENODEV;
 }
 
 void vlynq_device_disable(struct vlynq_device *dev)
diff --git a/target/linux/ar7-2.6/files/include/asm-mips/ar7/prom.h b/target/linux/ar7-2.6/files/include/asm-mips/ar7/prom.h
new file mode 100644 (file)
index 0000000..bb0b0c4
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * $Id$
+ * 
+ * Copyright (C) 2006, 2007 OpenWrt.org
+ * 
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef __PROM_H__
+#define __PROM_H__
+
+extern void prom_init(void);
+extern char *prom_getenv(char *name);
+extern void prom_printf(char *fmt, ...);
+
+#endif // __PROM_H__
+
index 1fa263043a17be156dbd2fe329ddde91038ce25b..9702efa8ec386bfb1a3c100222460ecf05e4f0d9 100644 (file)
@@ -1,7 +1,7 @@
 diff -Nru linux-2.6.19.2/arch/mips/Kconfig linux-ar7/arch/mips/Kconfig
 --- linux-2.6.19.2/arch/mips/Kconfig   2006-12-12 02:32:53.000000000 +0700
 +++ linux-ar7/arch/mips/Kconfig        2007-01-29 21:52:21.000000000 +0700
-@@ -16,6 +16,20 @@
+@@ -16,6 +16,21 @@
        prompt "System type"
        default SGI_IP22
  
@@ -16,6 +16,7 @@ diff -Nru linux-2.6.19.2/arch/mips/Kconfig linux-ar7/arch/mips/Kconfig
 +      select SYS_HAS_EARLY_PRINTK
 +      select SYS_SUPPORTS_32BIT_KERNEL
 +      select SYS_SUPPORTS_LITTLE_ENDIAN
++      select SYS_SUPPORTS_KGDB
 +      select NEED_MULTIPLE_NODES
 +      select GENERIC_GPIO
 +