X-Git-Url: http://git.ozo.com/?a=blobdiff_plain;f=target%2Flinux%2Far7-2.6%2Ffiles%2Farch%2Fmips%2Far7%2Fvlynq.c;h=c9be21472158c8c98a312bf84e1d6116b936e223;hb=828c43f29db3df46803c43d47b94835450bf1cda;hp=06097556d2662c9b428b0cb3bf803cf0a2da949c;hpb=7fff341bb3866a3139a3edbe09c7c07ab9dd56e6;p=openwrt-10.03%2F.git 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 06097556d..c9be21472 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; @@ -298,17 +299,23 @@ int vlynq_device_enable(struct vlynq_device *dev) dev->local->control = 0; dev->remote->control = 0; - + dev->local->control = VLYNQ_CTRL_CLOCK_INT; + + div = ar7_dsp_freq() / 62500000; + if (div != 0 ) { + 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)); + } 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; }