From 3db2dc0515a6404bfc3e192f3e153d0b8d5a08c6 Mon Sep 17 00:00:00 2001 From: Florian Fainelli Date: Tue, 24 Jul 2007 11:05:23 +0000 Subject: [PATCH] Add more ar7 fixes by DerAgo. Fix vlnyq initialistion on fritzbox, add prom_printf required for kgdb, make kgbd finally work, thanks ! SVN-Revision: 8141 --- target/linux/ar7-2.6/config/default | 31 ++++++++++++++++++ .../linux/ar7-2.6/files/arch/mips/ar7/prom.c | 32 +++++++++++++++++-- .../linux/ar7-2.6/files/arch/mips/ar7/vlynq.c | 28 ++++++++++------ .../ar7-2.6/files/include/asm-mips/ar7/prom.h | 29 +++++++++++++++++ .../ar7-2.6/patches/100-board_support.patch | 3 +- 5 files changed, 109 insertions(+), 14 deletions(-) create mode 100644 target/linux/ar7-2.6/files/include/asm-mips/ar7/prom.h diff --git a/target/linux/ar7-2.6/config/default b/target/linux/ar7-2.6/config/default index 3092078a29..f45cdeb346 100644 --- a/target/linux/ar7-2.6/config/default +++ b/target/linux/ar7-2.6/config/default @@ -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 diff --git a/target/linux/ar7-2.6/files/arch/mips/ar7/prom.c b/target/linux/ar7-2.6/files/arch/mips/ar7/prom.c index 38037dd337..08904dee71 100644 --- a/target/linux/ar7-2.6/files/arch/mips/ar7/prom.c +++ b/target/linux/ar7-2.6/files/arch/mips/ar7/prom.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -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) { diff --git a/target/linux/ar7-2.6/files/arch/mips/ar7/vlynq.c b/target/linux/ar7-2.6/files/arch/mips/ar7/vlynq.c index 06097556d2..e085c5b199 100644 --- a/target/linux/ar7-2.6/files/arch/mips/ar7/vlynq.c +++ b/target/linux/ar7-2.6/files/arch/mips/ar7/vlynq.c @@ -32,6 +32,7 @@ #include #include #include +#include #include #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 index 0000000000..bb0b0c4d5b --- /dev/null +++ b/target/linux/ar7-2.6/files/include/asm-mips/ar7/prom.h @@ -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__ + diff --git a/target/linux/ar7-2.6/patches/100-board_support.patch b/target/linux/ar7-2.6/patches/100-board_support.patch index 1fa263043a..9702efa8ec 100644 --- a/target/linux/ar7-2.6/patches/100-board_support.patch +++ b/target/linux/ar7-2.6/patches/100-board_support.patch @@ -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 +