On Mon, Jun 01, 2009 at 02:02:05PM +0200, Florian Fainelli wrote: > Subject: [PATCH 08/10] add TI AR7 support This should be 7/9 I assume? > + if (base / (*prediv) * (*mul) / (*postdiv) != target) { There should be a tax on excessive use of parenthesis ;-) > + approximate(base, target, prediv, postdiv, mul); > + tmp_freq = base / (*prediv) * (*mul) / (*postdiv); More taxes! > + > + writel(((prediv - 1) << PREDIV_SHIFT) | (postdiv - 1), &clock->ctrl); > + mdelay(1); > + writel(4, &clock->pll); > + while (readl(&clock->pll) & PLL_STATUS) > + ; > + writel(((mul - 1) << MUL_SHIFT) | (0xff << 3) | 0x0e, &clock->pll); > + mdelay(75); These calls to mdelay seem to be done very early before BogoMIPS has been calibrated? > + printk(KERN_INFO "Clocks: Setting USB clock\n"); > + usb_base = ar7_bus_clock; > + calculate(usb_base, TNETD7200_DEF_USB_CLK, &usb_prediv, > + &usb_postdiv, &usb_mul); > + tnetd7200_set_clock(usb_base, &clocks->usb, > + usb_prediv, usb_postdiv, -1, usb_mul, > + TNETD7200_DEF_USB_CLK); > + > + #warning FIXME > + ar7_dsp_clock = ar7_cpu_clock; Fix it :-) > +void __init ar7_init_clocks(void) > +{ > + switch (ar7_chip_id()) { > + case AR7_CHIP_7100: > +#warning FIXME: Check if the new 7200 clock init works for 7100 Fix it again, Toni. > diff --git a/arch/mips/ar7/memory.c b/arch/mips/ar7/memory.c > new file mode 100644 > index 0000000..e8522a1 > --- /dev/null > +++ b/arch/mips/ar7/memory.c > @@ -0,0 +1,74 @@ > +/* > + * Based on arch/mips/mm/init.c > + * Copyright (C) 1994 - 2000 Ralf Baechle > + * Copyright (C) 1999, 2000 Silicon Graphics, Inc. > + * Kevin D. Kissell, kevink@xxxxxxxx and Carsten Langgaard, carstenl@xxxxxxxx > + * Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved. Somehow this file has no similarity to arch/mips/mm/init.c so I think somebody else should claim the (C). > --- /dev/null > +++ b/arch/mips/ar7/platform.c > @@ -0,0 +1,543 @@ > +/* > + * Copyright (C) 2006,2007 Felix Fietkau <nbd@xxxxxxxxxxx> > + * Copyright (C) 2006,2007 Eugene Konev <ejka@xxxxxxxxxxx> > + * > + * 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 > + */ > + > +#include <linux/autoconf.h> Do not include <linux/autoconf.h>. > +static struct platform_device vlynq_high = { > + .id = 1, > + .name = "vlynq", > + .dev.platform_data = &vlynq_high_data, > + .resource = vlynq_high_res, > + .num_resources = ARRAY_SIZE(vlynq_high_res), > +}; > + > + > +/* This is proper way to define uart ports, but they are then detected > + * as xscale and, obviously, don't work... > + */ > +#if !defined(CONFIG_SERIAL_8250) Can you elaborate? > +static inline unsigned char char2hex(char h) > +{ > + switch (h) { > + case '0': case '1': case '2': case '3': case '4': > + case '5': case '6': case '7': case '8': case '9': > + return h - '0'; > + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': > + return h - 'A' + 10; > + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': > + return h - 'a' + 10; > + default: > + return 0; > + } > +} > + > +static void cpmac_get_mac(int instance, unsigned char *dev_addr) > +{ > + int i; > + char name[5], default_mac[] = "00:00:00:12:34:56", *mac; If you don't have a MAC address, either use random_ether_addr() or don't bring up the network interface at all. Multiple interfaces with the same MAC can cause chaos on a network to better avoid that. > +struct psp_env_chunk { > + u8 num; > + u8 ctrl; > + u16 csum; > + u8 len; > + char data[11]; > +} __attribute__ ((packed)); Afair historic versions of this code were totally polluted with __attribute__((packed)). Thanks for cleaning that. Btw - Linux coding style: No space between __attribute__ and ((packed)). > +#include <asm/reboot.h> You get a false warning from checkpatch.pl here. Which probably means either we should teach checkpatch.pl to check if <linux/reboot.h> is actually including <asm/reboot.h> or rename <asm/reboot.h> to something which would also help to avoid confusion. > +++ b/arch/mips/include/asm/mach-ar7/spaces.h You can cut down this header file to something like: /* Copyright blurb */ #ifndef _ASM_AR7_SPACES_H #define _ASM_AR7_SPACES_H /* * This handles the memory map. * We handle pages at KSEG0 for kernels with 32 bit address space. */ #define PAGE_OFFSET 0x94000000UL #define PHYS_OFFSET 0x14000000UL #include <asm/mach-generic/spaces.h> #endif /* __ASM_AR7_SPACES_H */ Ralf