public inbox for linuxppc-dev@ozlabs.org 
 help / color / mirror / Atom feed
From: David Gibson <david@gibson•dropbear.id.au>
To: Olof Johansson <olof@lixom•net>
Cc: linuxppc-dev@ozlabs•org, Paul Mackerras <paulus@samba•org>
Subject: Re: [PATCH 5/6] Support for the Ebony 440GP reference board in arch/powerpc
Date: Mon, 7 May 2007 13:22:06 +1000	[thread overview]
Message-ID: <20070507032206.GB21287@localhost.localdomain> (raw)
In-Reply-To: <20070504143645.GA10645@lixom.net>

On Fri, May 04, 2007 at 09:36:45AM -0500, Olof Johansson wrote:
> Hi,
> 
> Not much actual board support code in here, nice and clean. :-) Seems
> like most of this was boot wrapper enhancements.

Mostly, yes.  There will be more in-kernel support code coming
eventually, when we get PCI, the RTC and various other peripherals
going.

> Some comments below.
> 
> 
> -Olof
> 
> On Fri, May 04, 2007 at 03:57:33PM +1000, David Gibson wrote:
> 
> > Index: working-2.6/arch/powerpc/kernel/head_44x.S
> > ===================================================================
> > --- working-2.6.orig/arch/powerpc/kernel/head_44x.S	2007-05-03 10:19:32.000000000 +1000
> > +++ working-2.6/arch/powerpc/kernel/head_44x.S	2007-05-04 13:46:51.000000000 +1000
> > @@ -709,16 +709,6 @@ _GLOBAL(giveup_fpu)
> >  	blr
> >  #endif
> >  
> > -/*
> > - * extern void abort(void)
> > - *
> > - * At present, this routine just applies a system reset.
> > - */
> > -_GLOBAL(abort)
> > -        mfspr   r13,SPRN_DBCR0
> > -        oris    r13,r13,DBCR0_RST_SYSTEM@h
> > -        mtspr   SPRN_DBCR0,r13
> > -
> 
> Looks like this rename is really separate from the platform support. Maybe
> post it as such in a patch before this one?

Hrm, I suppose I could.  Is it really worth it?

> Also, I know it was just a rename but you might want to add a "b ."
> after it, if for some reason the reset doesn't happen instantly to avoid
> executing random code afterwards.

Added.

[snip]
> > +static struct of_device_id ebony_of_bus[] = {
> > +	{ .type = "ibm,plb", },
> > +	{ .type = "ibm,opb", },
> > +	{ .type = "ibm,ebc", },
> > +	{},
> > +};
> > +
> > +static int __init ebony_device_probe(void)
> > +{
> > +	if (! machine_is(ebony))
> 
> Extra space after !

Fixed.

[snip]
> > Index: working-2.6/arch/powerpc/platforms/Makefile
> > ===================================================================
> > --- working-2.6.orig/arch/powerpc/platforms/Makefile	2007-02-14 10:58:22.000000000 +1100
> > +++ working-2.6/arch/powerpc/platforms/Makefile	2007-05-04 13:46:51.000000000 +1000
> > @@ -6,7 +6,8 @@ obj-$(CONFIG_PPC_PMAC)		+= powermac/
> >  endif
> >  endif
> >  obj-$(CONFIG_PPC_CHRP)		+= chrp/
> > -obj-$(CONFIG_4xx)		+= 4xx/
> > +#obj-$(CONFIG_4xx)		+= 4xx/
> 
> Hmm?

Contrary to the comment in arch/powerpc/platforms/4xx/Makefile, an
empty Makefile does *not* compile correctly within Kbuild.  It's
commented out so we build again, obviously it will need to go back in
once there's any code that actually works in
arch/powerpc/platforms/4xx.

[snip]
> > Index: working-2.6/arch/powerpc/boot/dcr.h
> > ===================================================================
> > --- /dev/null	1970-01-01 00:00:00.000000000 +0000
> > +++ working-2.6/arch/powerpc/boot/dcr.h	2007-05-04 13:46:51.000000000 +1000
> > @@ -0,0 +1,85 @@
> > +#ifndef _PPC_BOOT_DCR_H_
> > +#define _PPC_BOOT_DCR_H_
> > +
> > +#define mfdcr(rn) \
> > +	({	\
> > +		unsigned long rval; \
> > +		asm volatile("mfdcr %0,%1" : "=r"(rval) : "i"(rn)); \
> > +		rval; \
> > +	})
> > +#define mtdcr(rn, val) \
> > +	asm volatile("mtdcr %0,%1" : : "i"(rn), "r"(val))
> > +
> > +/* 440GP/440GX SDRAM controller DCRs */
> > +#define DCRN_SDRAM0_CFGADDR				0x010
> > +#define DCRN_SDRAM0_CFGDATA				0x011
> > +
> > +#define 	SDRAM0_B0CR				0x40
> > +#define 	SDRAM0_B1CR				0x44
> > +#define 	SDRAM0_B2CR				0x48
> > +#define 	SDRAM0_B3CR				0x4c
> > +
> > +static const unsigned long sdram_bxcr[] = { SDRAM0_B0CR, SDRAM0_B1CR, SDRAM0_B2CR, SDRAM0_B3CR };
> > +
> > +#define			SDRAM_CONFIG_BANK_ENABLE        0x00000001
> > +#define			SDRAM_CONFIG_SIZE_MASK          0x000e0000
> > +#define			SDRAM_CONFIG_BANK_SIZE(reg)	\
> > +	(0x00400000 << ((reg & SDRAM_CONFIG_SIZE_MASK) >> 17))
> 
> Lots of tabs here? Other powerpc code tends to use
> <tab><space><space><space> for the register field defines indentation.
> 
> Same for below.

Yeah, I suppose they do.  Spacing revised through this file.

> > +
> > +/* 440GP Clock, PM, chip control */
> > +#define DCRN_CPC0_SR					0x0b0
> > +#define DCRN_CPC0_ER					0x0b1
> > +#define DCRN_CPC0_FR					0x0b2
> > +#define DCRN_CPC0_SYS0					0x0e0
> > +#define		CPC0_SYS0_TUNE				0xffc00000
> > +#define		CPC0_SYS0_FBDV_MASK			0x003c0000
> > +#define		CPC0_SYS0_FBDV(reg)			\
> > +	((((((reg) & CPC0_SYS0_FBDV_MASK) >> 18) - 1) & 0xf) + 1)
> 
> Would you mind a short comment about why the above math is needed?

Ok, I've regrouped all those macros together, and added:

/* Helper macros to compute the actual clock divider values from the
 * encodings in the CPC0 register */

[snip]
> > +#define SPRN_DBCR0		0x134
> > +#define   DBCR0_RST_SYSTEM	0x30000000
> > +
> > +static void ebony_exit(void)
> > +{
> > +	unsigned long tmp;
> > +
> > +	asm volatile (
> > +		"mfspr	%0,%1\n"
> > +		"oris	%0,%0,%2@h\n"
> > +		"mtspr	%1,%0"
> > +		: "=&r"(tmp) : "i"(SPRN_DBCR0), "i"(DBCR0_RST_SYSTEM)
> 
> You don't have to pass in the constants here, you can specify them in
> the asm. Makes it a little more readable.

As discussed in that other thread, not quite as easy as it sounds.
Unless, possibly, you use some abomination like asm volatile("#include
...")

[snip]

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

  parent reply	other threads:[~2007-05-07  3:22 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-04  5:54 [0/6] Ebony support David Gibson
2007-05-04  5:57 ` [PATCH 1/6] Only legacy ports should allow addr/irq changes via setserial David Gibson
2007-05-04  5:57 ` [PATCH 2/6] Use resource_size_t for serial port IO addresses David Gibson
2007-05-04  5:57 ` [PATCH 5/6] Support for the Ebony 440GP reference board in arch/powerpc David Gibson
2007-05-04 14:36   ` Olof Johansson
2007-05-05 18:43     ` Milton Miller
2007-05-05 19:02       ` Olof Johansson
2007-05-05 20:37       ` Segher Boessenkool
2007-05-06  0:43         ` David Gibson
2007-05-06  1:58           ` Segher Boessenkool
2007-05-07  3:22     ` David Gibson [this message]
2007-05-07  3:45       ` Olof Johansson
2007-05-07  4:02         ` David Gibson
2007-05-07 10:41   ` Josh Boyer
2007-05-04  5:57 ` [PATCH 6/6] Early serial debug support for PPC44x David Gibson
2007-05-04  5:57 ` [PATCH 3/6] Add device tree for Ebony David Gibson
2007-05-07  0:30 ` [PATCH 4/6] Device tree aware EMAC driver David Gibson
2007-05-07  0:57   ` Olof Johansson
2007-05-07  1:40     ` David Gibson
2007-05-07  3:56       ` Olof Johansson
2007-05-07  4:10         ` David Gibson

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=20070507032206.GB21287@localhost.localdomain \
    --to=david@gibson$(echo .)dropbear.id.au \
    --cc=linuxppc-dev@ozlabs$(echo .)org \
    --cc=olof@lixom$(echo .)net \
    --cc=paulus@samba$(echo .)org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox