All of lore.kernel.org
 help / color / mirror / Atom feed
From: Florian Fainelli <florian@openwrt.org>
To: Ralf Baechle <ralf@linux-mips.org>
Cc: Alexander Clouter <alex@digriz.org.uk>, linux-mips@linux-mips.org
Subject: Re: [PATCH 5/8] add Texas Instruments AR7 support
Date: Wed, 24 Jun 2009 22:18:13 +0200	[thread overview]
Message-ID: <200906242218.13794.florian@openwrt.org> (raw)
In-Reply-To: <20090624122347.GA28583@linux-mips.org>

Le Wednesday 24 June 2009 14:23:47 Ralf Baechle, vous avez écrit :
> On Wed, Jun 24, 2009 at 12:28:56PM +0100, Alexander Clouter wrote:
> > Florian Fainelli <florian@openwrt.org> wrote:
> > > Le Tuesday 23 June 2009 20:15:09 Ralf Baechle, vous avez écrit :
> > >> On Tue, Jun 23, 2009 at 11:28:27AM +0200, Florian Fainelli wrote:
> > >>
> > >> AR7 time again - the platform pending longest ...  Let's see:
> > >
> > > Thank you very much for your comments Ralf, please find below an
> > > updated version which addresses all of your comments. I hope this time
> > > we are going to make it ;)
> >
> > I am hoping someone can have a tackle of the lzma/bzip2 kernel/initramfs
> > generic compression code myself, but I guess one thing at a time. :)  If
> > you have a simple way for me to produce a LZMA'd image, I'll test it
> > this on my WAG54Gv2 (I need the image to be less than 700kB).
> >
> > My comments, for what they are worth, below:
> > > From: Florian Fainelli <florian@openwrt.org>
> > > Subject: Add support for Texas Instruments AR7 System-on-a-Chip
> > >
> > > This patch adds support for the Texas Instruments AR7 System-on-a-Chip.
> > > It supports the TNETD7100, 7200 and 7300 versions of the SoC.
> > >
> > > Changes from v4:
> > > [snipped]
> > >
> > > Signed-off-by: Matteo Croce <matteo@openwrt.org>
> > > Signed-off-by: Felix Fietkau <nbd@openwrt.org>
> > > Signed-off-by: Eugene Konev <ejka@openwrt.org>
> > > Signed-off-by: Nicolas Thill <nico@openwrt.org>
> > > Signed-off-by: Florian Fainelli <florian@openwrt.org>
> > > --
> > > [snipped]
> > >
> > > diff --git a/arch/mips/ar7/clock.c b/arch/mips/ar7/clock.c
> > > new file mode 100644
> > > index 0000000..7ce5f07
> > > --- /dev/null
> > > +++ b/arch/mips/ar7/clock.c
> > > @@ -0,0 +1,450 @@
> > > [snipped]
> > > +static void __init tnetd7300_init_clocks(void)
> > > +{
> > > +       u32 *bootcr = (u32 *)ioremap_nocache(AR7_REGS_DCL, 4);
> > > +       struct tnetd7300_clocks *clocks =
> > > +                                       (struct tnetd7300_clocks *)
> > > +                                       ioremap_nocache(AR7_REGS_POWER
> > > + 0x20, +                                       sizeof(struct
> > > tnetd7300_clocks)); +
> >
> > Needless cast'ing and also should you not check that NULL is not
> > returned for both of these ioremap's?
>
> That's because we "know" it can't ever fail for addresses < 0x20000000.
> Downside - sparse will bitch about it.
>
> But yes, the cast indeed is unnecessary.

Incremental patch on top of the one you already have below.
--
From: Florian Fainelli <florian@openwrt.org>
Subject: clean up AR7 code

This patch cleans up the code and is incremental to version 5
of patch previously sent which adds AR7 support.

- uneeded casts on ioremaps in clock.c
- define AR7_REGS_CLOCKS/UR8_REGS_CLOCKS for consistency
- remove useless nops and use busy-waiting on the pll status register
- remove commented out usb clock setting for TNETD7300
- simplify ar7_init_clocks
- return -ENXIO for unknown chips in ar7_has_high_cpmac
- remove forward declarations of functions in setup.c

Signed-off-by: Florian Fainelli <florian@openwrt.org>
--
diff --git a/arch/mips/ar7/clock.c b/arch/mips/ar7/clock.c
index 7ce5f07..b8c7c84 100644
--- a/arch/mips/ar7/clock.c
+++ b/arch/mips/ar7/clock.c
@@ -244,8 +244,7 @@ static void __init tnetd7300_init_clocks(void)
 {
 	u32 *bootcr = (u32 *)ioremap_nocache(AR7_REGS_DCL, 4);
 	struct tnetd7300_clocks *clocks =
-					(struct tnetd7300_clocks *)
-					ioremap_nocache(AR7_REGS_POWER + 0x20,
+					ioremap_nocache(UR8_REGS_CLOCKS,
 					sizeof(struct tnetd7300_clocks));
 
 	ar7_bus_clock = tnetd7300_get_clock(BUS_PLL_SOURCE_SHIFT,
@@ -256,10 +255,7 @@ static void __init tnetd7300_init_clocks(void)
 			&clocks->cpu, bootcr, AR7_AFE_CLOCK);
 	else
 		ar7_cpu_clock = ar7_bus_clock;
-/*
-	tnetd7300_set_clock(USB_PLL_SOURCE_SHIFT, &clocks->usb,
-		bootcr, 48000000);
-*/
+	
 	if (ar7_dsp_clock == 250000000)
 		tnetd7300_set_clock(DSP_PLL_SOURCE_SHIFT, &clocks->dsp,
 			bootcr, ar7_dsp_clock);
@@ -293,9 +289,6 @@ static void tnetd7200_set_clock(int base, struct tnetd7200_clock *clock,
 	writel(DIVISOR_ENABLE_MASK | ((prediv - 1) & 0x1F), &clock->prediv);
 	writel((mul - 1) & 0xF, &clock->mul);
 
-	for (mul = 0; mul < 2000; mul++)
-		; /* nop */
-
 	while (readl(&clock->status) & 0x1)
 		; /* nop */
 
@@ -348,8 +341,7 @@ static void __init tnetd7200_init_clocks(void)
 {
 	u32 *bootcr = (u32 *)ioremap_nocache(AR7_REGS_DCL, 4);
 	struct tnetd7200_clocks *clocks =
-					(struct tnetd7200_clocks *)
-					ioremap_nocache(AR7_REGS_POWER + 0x80,
+					ioremap_nocache(AR7_REGS_CLOCKS,
 					sizeof(struct tnetd7200_clocks));
 	int cpu_base, cpu_mul, cpu_prediv, cpu_postdiv;
 	int dsp_base, dsp_mul, dsp_prediv, dsp_postdiv;
@@ -432,8 +424,6 @@ int __init ar7_init_clocks(void)
 {
 	switch (ar7_chip_id()) {
 	case AR7_CHIP_7100:
-		tnetd7200_init_clocks();
-		break;
 	case AR7_CHIP_7200:
 		tnetd7200_init_clocks();
 		break;
diff --git a/arch/mips/ar7/setup.c b/arch/mips/ar7/setup.c
index cccb484..6ebb5f1 100644
--- a/arch/mips/ar7/setup.c
+++ b/arch/mips/ar7/setup.c
@@ -25,10 +25,6 @@
 #include <asm/mach-ar7/ar7.h>
 #include <asm/mach-ar7/prom.h>
 
-static void ar7_machine_restart(char *command);
-static void ar7_machine_halt(void);
-static void ar7_machine_power_off(void);
-
 static void ar7_machine_restart(char *command)
 {
 	u32 *softres_reg = ioremap(AR7_REGS_RESET +
diff --git a/arch/mips/include/asm/mach-ar7/ar7.h b/arch/mips/include/asm/mach-ar7/ar7.h
index 4ebe2c6..de71694 100644
--- a/arch/mips/include/asm/mach-ar7/ar7.h
+++ b/arch/mips/include/asm/mach-ar7/ar7.h
@@ -21,8 +21,10 @@
 #define __AR7_H__
 
 #include <linux/delay.h>
-#include <asm/addrspace.h>
 #include <linux/io.h>
+#include <linux/errno.h>
+
+#include <asm/addrspace.h>
 
 #define AR7_SDRAM_BASE	0x14000000
 
@@ -32,6 +34,8 @@
 #define AR7_REGS_GPIO	(AR7_REGS_BASE + 0x0900)
 /* 0x08610A00 - 0x08610BFF (512 bytes, 128 bytes / clock) */
 #define AR7_REGS_POWER	(AR7_REGS_BASE + 0x0a00)
+#define AR7_REGS_CLOCKS (AR7_REGS_POWER + 0x80)
+#define UR8_REGS_CLOCKS (AR7_REGS_POWER + 0x20)
 #define AR7_REGS_UART0	(AR7_REGS_BASE + 0x0e00)
 #define AR7_REGS_USB	(AR7_REGS_BASE + 0x1200)
 #define AR7_REGS_RESET	(AR7_REGS_BASE + 0x1600)
@@ -126,8 +130,10 @@ static inline int ar7_has_high_cpmac(void)
 	case AR7_CHIP_7100:
 	case AR7_CHIP_7200:
 		return 0;
-	default:
+	case AR7_CHIP_7300:
 		return 1;
+	default:
+		return -ENXIO;
 	}
 }
 #define ar7_has_high_vlynq ar7_has_high_cpmac

  reply	other threads:[~2009-06-24 20:22 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-04 14:19 [PATCH 5/8] add Texas Instruments AR7 support Florian Fainelli
     [not found] ` <200906161428.33571.florian@openwrt.org>
2009-06-23  9:28   ` Florian Fainelli
2009-06-23 18:15     ` Ralf Baechle
2009-06-24  9:12       ` Florian Fainelli
2009-06-24 10:22         ` Ralf Baechle
2009-06-24 12:17           ` Florian Fainelli
2009-06-24 11:28         ` Alexander Clouter
2009-06-24 12:23           ` Ralf Baechle
2009-06-24 20:18             ` Florian Fainelli [this message]
2009-06-24 17:32           ` Florian Fainelli
2009-06-24 21:16             ` Alexander Clouter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200906242218.13794.florian@openwrt.org \
    --to=florian@openwrt.org \
    --cc=alex@digriz.org.uk \
    --cc=linux-mips@linux-mips.org \
    --cc=ralf@linux-mips.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.