mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-21 12:27:27 +03:00
Add more ar7 fixes by DerAgo. Fix vlnyq initialistion on fritzbox, add prom_printf required for kgdb, make kgbd finally work, thanks !
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@8141 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user