include/asm-ppc/platforms/

15 messages, 6 authors, 2001-12-27 · open the first message on its own page

include/asm-ppc/platforms/

From: Paul Mackerras <hidden>
Date: 2001-11-27 11:32:40

I want to create a new directory, include/asm-ppc/platforms, for those
files which mainly contain configuration information for specific
platforms, such as address and IRQ assignments for on-board devices.
The files that I want to move into include/asm-ppc/platforms are:

bseip.h		  ibm405gp.h	    mvme5100_serial.h	  rpxclassic.h
ccm.h		  ibmnp405.h	    oak.h		  rpxhiox.h
ceder.h		  ibmstbx.h	    pcu_e.h		  rpxlite.h
cpci405.h	  ip860.h	    powerpmc250.h	  sandpoint_serial.h
ep405.h		  ivms8.h	    powerpmc250_serial.h  spd8xx.h
est8260.h	  lantec.h	    ppc4xx_serial.h	  spruce.h
ev64260_serial.h  lopec_serial.h    prpmc750.h		  spruce_serial.h
fads.h		  lwmon.h	    prpmc750_serial.h	  tqm8260.h
gemini.h	  mbx.h		    prpmc800.h		  tqm8xx.h
gemini_serial.h   mcpn765_serial.h  prpmc800_serial.h	  walnut.h
hermes.h	  mvme5100.h	    redwood.h		  zx4500_serial.h

This requires corresponding minor changes to 14 files in
arch/ppc/platforms and 5 files in include/asm-ppc, plus some changes
in the files that move to include/asm-ppc/platforms.

Does anyone have any comments or objections?

Paul.

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

Re: include/asm-ppc/platforms/

From: Tom Rini <hidden>
Date: 2001-11-27 15:22:44

On Tue, Nov 27, 2001 at 10:32:40PM +1100, Paul Mackerras wrote:
I want to create a new directory, include/asm-ppc/platforms, for those
files which mainly contain configuration information for specific
platforms, such as address and IRQ assignments for on-board devices.
The files that I want to move into include/asm-ppc/platforms are:
[snip]

What about:
amgia*.h ans-lcd.h backlight.h heathrow.h keylargo.h pmac_feature.h
prep_nvram.h gg2.h uninorth.h and maybe ppc405_dma.h as well.  I think I
might have missed a few pmac-specific platform headers in there...
This requires corresponding minor changes to 14 files in
arch/ppc/platforms and 5 files in include/asm-ppc, plus some changes
in the files that move to include/asm-ppc/platforms.

Does anyone have any comments or objections?
Like I said on IRC, I don't think this really helps much.  I will
conceed that in _devel we have more .h files in include/asm-$(ARCH) than
anyone else, but if we're going to do some organization, lets do more
than throwing lots of files in one directory, which could keep on
growing...

I sort of like the include/asm-ppc/platforms symlink idea, but I forget
if kbuild-2.5 works well with this or if it is/was painful.  Keith?

Barring that, maybe make processor, platform and peripheral dirs?

--
Tom Rini (TR1265)
http://gate.crashing.org/~trini/

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

Re: include/asm-ppc/platforms/

From: Roman Zippel <hidden>
Date: 2001-11-27 20:06:43

Hi,

Tom Rini wrote:
What about:
amgia*.h ans-lcd.h backlight.h heathrow.h keylargo.h pmac_feature.h
prep_nvram.h gg2.h uninorth.h and maybe ppc405_dma.h as well.  I think I
might have missed a few pmac-specific platform headers in there...
Be careful with amiga*.h, there are included by several drivers, which
also have to continue to work under m68k.

bye, Roman

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

Re: include/asm-ppc/platforms/

From: Paul Mackerras <hidden>
Date: 2001-11-28 06:13:30

Dan Malek writes:
That's a pretty good idea, and I have another one.  Name the
directory include/asm-ppc/ppc-platforms or something, then
have a symbolic link
	include/asm/platform -> include/asm-ppc/ppc-platforms/<board-file>

That way we can just #include <platform.h> instead of having lots
of ifdefs in upper level files to determine which one is needed.  If
we are moving files around, let's have some effect on actually making
it easier to use them, too.
I have figured out a way to do this without too much pain.  The idea
is that we will have platform.h and platform-serial.h be symlinks to
files in include/asm-ppc/platforms/.  The way that I am suggesting
that we do this is to have special comments in those files (the ones
in include/asm-ppc/platforms) that say what should be symlinked, like
this, from include/asm-ppc/platforms/all_ppc_serial.h:

/* Link to platform_serial.h if CONFIG_ALL_PPC=y */

The comment has to be of the form:

/* Link to <filename> if CONFIG_<option>=y */

and filename can't contain slashes.

The patch below does all this.  It does mean that we will need a
platform header for every platform, and a platform_serial header for
every platform where we want to use the standard serial driver.  As an
example, I have made an all_ppc_serial.h that contains most of what
was in serial.h before.  In fact, with a bit of care we could make
serial.h be the symlink.

Note that we can use one header for multiple platforms, just by
putting multiple magic comments in.  We can also potentially use this
mechanism for config options other than the platform selection
options.

Thoughts?

Paul.

diff -urN linuxppc_2_4_devel/arch/ppc/Makefile pmac/arch/ppc/Makefile
--- linuxppc_2_4_devel/arch/ppc/Makefile	Wed Nov 14 02:50:13 2001
+++ pmac/arch/ppc/Makefile	Wed Nov 28 16:22:01 2001
@@ -14,6 +14,8 @@
 # Rewritten by Cort Dougan and Paul Mackerras
 #

+MRPROPER_FILES += include/asm-ppc/platform.h include/asm-ppc/platform-serial.h
+
 # Be sure to change PAGE_OFFSET in include/asm-ppc/page.h to match
 KERNELLOAD	=0xc0000000
@@ -123,5 +125,11 @@

 archmrproper:

-archdep: scripts/mkdep
+archdep: scripts/mkdep platformlinks
 	$(MAKEBOOT) fastdep
+
+platformlinks:
+	rm -f include/asm-ppc/platform.h
+	rm -f include/asm-ppc/platform-serial.h
+	grep '=y$$' .config | grep -f - include/asm-ppc/platforms/*.h | \
+	awk -f arch/ppc/mklinks.awk
diff -urN linuxppc_2_4_devel/arch/ppc/mklinks.awk pmac/arch/ppc/mklinks.awk
--- linuxppc_2_4_devel/arch/ppc/mklinks.awk	Thu Jan 01 10:00:00 1970
+++ pmac/arch/ppc/mklinks.awk	Wed Nov 28 16:33:48 2001
@@ -0,0 +1,8 @@
+/^[-_A-Za-z0-9.\/]+:\/\* Link to [-_A-Za-z0-9.]+ if CONFIG.* \*\/$/ {
+	target=$1;
+	gsub(/:.*$/, "", target);
+	gsub(/^include\/asm-ppc\//, "", target);
+	link="include/asm-ppc/" $4;
+	print link " -> " target;
+	system("ln -sf " target " " link);
+}
diff -urN linuxppc_2_4_devel/include/asm-ppc/platforms/all_ppc_serial.h pmac/include/asm-ppc/platforms/all_ppc_serial.h
--- linuxppc_2_4_devel/include/asm-ppc/platforms/all_ppc_serial.h	Thu Jan 01 10:00:00 1970
+++ pmac/include/asm-ppc/platforms/all_ppc_serial.h	Wed Nov 28 16:42:57 2001
@@ -0,0 +1,128 @@
+/*
+ * Platform-specific header for serial devices on
+ * the (badly-named) ALL_PPC platform.
+ */
+
+/* Link to platform_serial.h if CONFIG_ALL_PPC=y */
+
+#include <linux/config.h>
+#include <asm/processor.h>
+
+/*
+ * This assumes you have a 1.8432 MHz clock for your UART.
+ *
+ * It'd be nice if someone built a serial card with a 24.576 MHz
+ * clock, since the 16550A is capable of handling a top speed of 1.5
+ * megabits/second; but this requires the faster clock.
+ */
+#define BASE_BAUD ( 1843200 / 16 )
+
+#if defined(CONFIG_MAC_SERIAL)
+#define SERIAL_DEV_OFFSET	((_machine == _MACH_prep || _machine == _MACH_chrp) ? 0 : 2)
+#endif
+
+#ifdef CONFIG_SERIAL_MANY_PORTS
+#define RS_TABLE_SIZE  64
+#else
+#define RS_TABLE_SIZE  4
+#endif
+
+/* Standard COM flags (except for COM4, because of the 8514 problem) */
+#ifdef CONFIG_SERIAL_DETECT_IRQ
+#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ)
+#define STD_COM4_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_AUTO_IRQ)
+#else
+#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST)
+#define STD_COM4_FLAGS ASYNC_BOOT_AUTOCONF
+#endif
+
+#ifdef CONFIG_SERIAL_MANY_PORTS
+#define FOURPORT_FLAGS ASYNC_FOURPORT
+#define ACCENT_FLAGS 0
+#define BOCA_FLAGS 0
+#define HUB6_FLAGS 0
+#endif
+
+/*
+ * The following define the access methods for the HUB6 card. All
+ * access is through two ports for all 24 possible chips. The card is
+ * selected through the high 2 bits, the port on that card with the
+ * "middle" 3 bits, and the register on that port with the bottom
+ * 3 bits.
+ *
+ * While the access port and interrupt is configurable, the default
+ * port locations are 0x302 for the port control register, and 0x303
+ * for the data read/write register. Normally, the interrupt is at irq3
+ * but can be anything from 3 to 7 inclusive. Note that using 3 will
+ * require disabling com2.
+ */
+
+#define C_P(card,port) (((card)<<6|(port)<<3) + 1)
+
+#define STD_SERIAL_PORT_DEFNS			\
+	/* UART CLK   PORT IRQ     FLAGS        */			\
+	{ 0, BASE_BAUD, 0x3F8, 4, STD_COM_FLAGS },	/* ttyS0 */	\
+	{ 0, BASE_BAUD, 0x2F8, 3, STD_COM_FLAGS },	/* ttyS1 */	\
+	{ 0, BASE_BAUD, 0x3E8, 4, STD_COM_FLAGS },	/* ttyS2 */	\
+	{ 0, BASE_BAUD, 0x2E8, 3, STD_COM4_FLAGS },	/* ttyS3 */
+
+
+#ifdef CONFIG_SERIAL_MANY_PORTS
+#define EXTRA_SERIAL_PORT_DEFNS			\
+	{ 0, BASE_BAUD, 0x1A0, 9, FOURPORT_FLAGS }, 	/* ttyS4 */	\
+	{ 0, BASE_BAUD, 0x1A8, 9, FOURPORT_FLAGS },	/* ttyS5 */	\
+	{ 0, BASE_BAUD, 0x1B0, 9, FOURPORT_FLAGS },	/* ttyS6 */	\
+	{ 0, BASE_BAUD, 0x1B8, 9, FOURPORT_FLAGS },	/* ttyS7 */	\
+	{ 0, BASE_BAUD, 0x2A0, 5, FOURPORT_FLAGS },	/* ttyS8 */	\
+	{ 0, BASE_BAUD, 0x2A8, 5, FOURPORT_FLAGS },	/* ttyS9 */	\
+	{ 0, BASE_BAUD, 0x2B0, 5, FOURPORT_FLAGS },	/* ttyS10 */	\
+	{ 0, BASE_BAUD, 0x2B8, 5, FOURPORT_FLAGS },	/* ttyS11 */	\
+	{ 0, BASE_BAUD, 0x330, 4, ACCENT_FLAGS },	/* ttyS12 */	\
+	{ 0, BASE_BAUD, 0x338, 4, ACCENT_FLAGS },	/* ttyS13 */	\
+	{ 0, BASE_BAUD, 0x000, 0, 0 },	/* ttyS14 (spare) */		\
+	{ 0, BASE_BAUD, 0x000, 0, 0 },	/* ttyS15 (spare) */		\
+	{ 0, BASE_BAUD, 0x100, 12, BOCA_FLAGS },	/* ttyS16 */	\
+	{ 0, BASE_BAUD, 0x108, 12, BOCA_FLAGS },	/* ttyS17 */	\
+	{ 0, BASE_BAUD, 0x110, 12, BOCA_FLAGS },	/* ttyS18 */	\
+	{ 0, BASE_BAUD, 0x118, 12, BOCA_FLAGS },	/* ttyS19 */	\
+	{ 0, BASE_BAUD, 0x120, 12, BOCA_FLAGS },	/* ttyS20 */	\
+	{ 0, BASE_BAUD, 0x128, 12, BOCA_FLAGS },	/* ttyS21 */	\
+	{ 0, BASE_BAUD, 0x130, 12, BOCA_FLAGS },	/* ttyS22 */	\
+	{ 0, BASE_BAUD, 0x138, 12, BOCA_FLAGS },	/* ttyS23 */	\
+	{ 0, BASE_BAUD, 0x140, 12, BOCA_FLAGS },	/* ttyS24 */	\
+	{ 0, BASE_BAUD, 0x148, 12, BOCA_FLAGS },	/* ttyS25 */	\
+	{ 0, BASE_BAUD, 0x150, 12, BOCA_FLAGS },	/* ttyS26 */	\
+	{ 0, BASE_BAUD, 0x158, 12, BOCA_FLAGS },	/* ttyS27 */	\
+	{ 0, BASE_BAUD, 0x160, 12, BOCA_FLAGS },	/* ttyS28 */	\
+	{ 0, BASE_BAUD, 0x168, 12, BOCA_FLAGS },	/* ttyS29 */	\
+	{ 0, BASE_BAUD, 0x170, 12, BOCA_FLAGS },	/* ttyS30 */	\
+	{ 0, BASE_BAUD, 0x178, 12, BOCA_FLAGS },	/* ttyS31 */
+#else
+#define EXTRA_SERIAL_PORT_DEFNS
+#endif
+
+/* You can have up to four HUB6's in the system, but I've only
+ * included two cards here for a total of twelve ports.
+ */
+#if (defined(CONFIG_HUB6) && defined(CONFIG_SERIAL_MANY_PORTS))
+#define HUB6_SERIAL_PORT_DFNS		\
+	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,0) },  /* ttyS32 */	\
+	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,1) },  /* ttyS33 */	\
+	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,2) },  /* ttyS34 */	\
+	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,3) },  /* ttyS35 */	\
+	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,4) },  /* ttyS36 */	\
+	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,5) },  /* ttyS37 */	\
+	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,0) },  /* ttyS38 */	\
+	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,1) },  /* ttyS39 */	\
+	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,2) },  /* ttyS40 */	\
+	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,3) },  /* ttyS41 */	\
+	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,4) },  /* ttyS42 */	\
+	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,5) },  /* ttyS43 */
+#else
+#define HUB6_SERIAL_PORT_DFNS
+#endif
+
+#define SERIAL_PORT_DFNS		\
+	STD_SERIAL_PORT_DEFNS		\
+	EXTRA_SERIAL_PORT_DEFNS		\
+	HUB6_SERIAL_PORT_DFNS
diff -urN linuxppc_2_4_devel/include/asm-ppc/serial.h pmac/include/asm-ppc/serial.h
--- linuxppc_2_4_devel/include/asm-ppc/serial.h	Wed Nov 28 10:22:04 2001
+++ pmac/include/asm-ppc/serial.h	Wed Nov 28 16:54:03 2001
@@ -9,149 +9,7 @@
 #ifndef __ASM_SERIAL_H__
 #define __ASM_SERIAL_H__

-#include <linux/config.h>
+#include <asm/platform_serial.h>

-#if defined(CONFIG_EV64260)
-#include <asm/platforms/ev64260_serial.h>
-#elif defined(CONFIG_GEMINI)
-#include <asm/platforms/gemini_serial.h>
-#elif defined(CONFIG_POWERPMC250)
-#include <asm/platforms/powerpmc250_serial.h>
-#elif defined(CONFIG_LOPEC)
-#include <asm/platforms/lopec_serial.h>
-#elif defined(CONFIG_MCPN765)
-#include <asm/platforms/mcpn765_serial.h>
-#elif defined(CONFIG_MVME5100)
-#include <asm/platforms/mvme5100_serial.h>
-#elif defined(CONFIG_PRPMC750)
-#include <asm/platforms/prpmc750_serial.h>
-#elif defined(CONFIG_PRPMC800)
-#include <asm/platforms/prpmc800_serial.h>
-#elif defined(CONFIG_SANDPOINT)
-#include <asm/platforms/sandpoint_serial.h>
-#elif defined(CONFIG_SPRUCE)
-#include <asm/platforms/spruce_serial.h>
-#elif defined(CONFIG_ZX4500)
-#include <asm/platforms/zx4500_serial.h>
-#elif defined(CONFIG_4xx)
-#include <asm/platforms/ppc4xx_serial.h>
-#else
-
-/*
- * This assumes you have a 1.8432 MHz clock for your UART.
- *
- * It'd be nice if someone built a serial card with a 24.576 MHz
- * clock, since the 16550A is capable of handling a top speed of 1.5
- * megabits/second; but this requires the faster clock.
- */
-#define BASE_BAUD ( 1843200 / 16 )
-
-#ifdef CONFIG_SERIAL_MANY_PORTS
-#define RS_TABLE_SIZE  64
-#else
-#define RS_TABLE_SIZE  4
-#endif
-
-/* Standard COM flags (except for COM4, because of the 8514 problem) */
-#ifdef CONFIG_SERIAL_DETECT_IRQ
-#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ)
-#define STD_COM4_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_AUTO_IRQ)
-#else
-#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST)
-#define STD_COM4_FLAGS ASYNC_BOOT_AUTOCONF
-#endif
-
-#ifdef CONFIG_SERIAL_MANY_PORTS
-#define FOURPORT_FLAGS ASYNC_FOURPORT
-#define ACCENT_FLAGS 0
-#define BOCA_FLAGS 0
-#define HUB6_FLAGS 0
-#endif
-
-/*
- * The following define the access methods for the HUB6 card. All
- * access is through two ports for all 24 possible chips. The card is
- * selected through the high 2 bits, the port on that card with the
- * "middle" 3 bits, and the register on that port with the bottom
- * 3 bits.
- *
- * While the access port and interrupt is configurable, the default
- * port locations are 0x302 for the port control register, and 0x303
- * for the data read/write register. Normally, the interrupt is at irq3
- * but can be anything from 3 to 7 inclusive. Note that using 3 will
- * require disabling com2.
- */
-
-#define C_P(card,port) (((card)<<6|(port)<<3) + 1)
-
-#define STD_SERIAL_PORT_DEFNS			\
-	/* UART CLK   PORT IRQ     FLAGS        */			\
-	{ 0, BASE_BAUD, 0x3F8, 4, STD_COM_FLAGS },	/* ttyS0 */	\
-	{ 0, BASE_BAUD, 0x2F8, 3, STD_COM_FLAGS },	/* ttyS1 */	\
-	{ 0, BASE_BAUD, 0x3E8, 4, STD_COM_FLAGS },	/* ttyS2 */	\
-	{ 0, BASE_BAUD, 0x2E8, 3, STD_COM4_FLAGS },	/* ttyS3 */
-
-
-#ifdef CONFIG_SERIAL_MANY_PORTS
-#define EXTRA_SERIAL_PORT_DEFNS			\
-	{ 0, BASE_BAUD, 0x1A0, 9, FOURPORT_FLAGS }, 	/* ttyS4 */	\
-	{ 0, BASE_BAUD, 0x1A8, 9, FOURPORT_FLAGS },	/* ttyS5 */	\
-	{ 0, BASE_BAUD, 0x1B0, 9, FOURPORT_FLAGS },	/* ttyS6 */	\
-	{ 0, BASE_BAUD, 0x1B8, 9, FOURPORT_FLAGS },	/* ttyS7 */	\
-	{ 0, BASE_BAUD, 0x2A0, 5, FOURPORT_FLAGS },	/* ttyS8 */	\
-	{ 0, BASE_BAUD, 0x2A8, 5, FOURPORT_FLAGS },	/* ttyS9 */	\
-	{ 0, BASE_BAUD, 0x2B0, 5, FOURPORT_FLAGS },	/* ttyS10 */	\
-	{ 0, BASE_BAUD, 0x2B8, 5, FOURPORT_FLAGS },	/* ttyS11 */	\
-	{ 0, BASE_BAUD, 0x330, 4, ACCENT_FLAGS },	/* ttyS12 */	\
-	{ 0, BASE_BAUD, 0x338, 4, ACCENT_FLAGS },	/* ttyS13 */	\
-	{ 0, BASE_BAUD, 0x000, 0, 0 },	/* ttyS14 (spare) */		\
-	{ 0, BASE_BAUD, 0x000, 0, 0 },	/* ttyS15 (spare) */		\
-	{ 0, BASE_BAUD, 0x100, 12, BOCA_FLAGS },	/* ttyS16 */	\
-	{ 0, BASE_BAUD, 0x108, 12, BOCA_FLAGS },	/* ttyS17 */	\
-	{ 0, BASE_BAUD, 0x110, 12, BOCA_FLAGS },	/* ttyS18 */	\
-	{ 0, BASE_BAUD, 0x118, 12, BOCA_FLAGS },	/* ttyS19 */	\
-	{ 0, BASE_BAUD, 0x120, 12, BOCA_FLAGS },	/* ttyS20 */	\
-	{ 0, BASE_BAUD, 0x128, 12, BOCA_FLAGS },	/* ttyS21 */	\
-	{ 0, BASE_BAUD, 0x130, 12, BOCA_FLAGS },	/* ttyS22 */	\
-	{ 0, BASE_BAUD, 0x138, 12, BOCA_FLAGS },	/* ttyS23 */	\
-	{ 0, BASE_BAUD, 0x140, 12, BOCA_FLAGS },	/* ttyS24 */	\
-	{ 0, BASE_BAUD, 0x148, 12, BOCA_FLAGS },	/* ttyS25 */	\
-	{ 0, BASE_BAUD, 0x150, 12, BOCA_FLAGS },	/* ttyS26 */	\
-	{ 0, BASE_BAUD, 0x158, 12, BOCA_FLAGS },	/* ttyS27 */	\
-	{ 0, BASE_BAUD, 0x160, 12, BOCA_FLAGS },	/* ttyS28 */	\
-	{ 0, BASE_BAUD, 0x168, 12, BOCA_FLAGS },	/* ttyS29 */	\
-	{ 0, BASE_BAUD, 0x170, 12, BOCA_FLAGS },	/* ttyS30 */	\
-	{ 0, BASE_BAUD, 0x178, 12, BOCA_FLAGS },	/* ttyS31 */
-#else
-#define EXTRA_SERIAL_PORT_DEFNS
-#endif
-
-/* You can have up to four HUB6's in the system, but I've only
- * included two cards here for a total of twelve ports.
- */
-#if (defined(CONFIG_HUB6) && defined(CONFIG_SERIAL_MANY_PORTS))
-#define HUB6_SERIAL_PORT_DFNS		\
-	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,0) },  /* ttyS32 */	\
-	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,1) },  /* ttyS33 */	\
-	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,2) },  /* ttyS34 */	\
-	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,3) },  /* ttyS35 */	\
-	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,4) },  /* ttyS36 */	\
-	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,5) },  /* ttyS37 */	\
-	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,0) },  /* ttyS38 */	\
-	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,1) },  /* ttyS39 */	\
-	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,2) },  /* ttyS40 */	\
-	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,3) },  /* ttyS41 */	\
-	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,4) },  /* ttyS42 */	\
-	{ 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,5) },  /* ttyS43 */
-#else
-#define HUB6_SERIAL_PORT_DFNS
-#endif
-
-#define SERIAL_PORT_DFNS		\
-	STD_SERIAL_PORT_DEFNS		\
-	EXTRA_SERIAL_PORT_DEFNS		\
-	HUB6_SERIAL_PORT_DFNS
-
-#endif /* !CONFIG_GEMINI and others */
 #endif /* __ASM_SERIAL_H__ */
 #endif /* __KERNEL__ */
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

Re: include/asm-ppc/platforms/

From: Dan Malek <hidden>
Date: 2001-11-28 06:23:50

Paul Mackerras wrote:

I have figured out a way to do this without too much pain.  The idea
is that we will have platform.h and platform-serial.h be symlinks ....
Thoughts?

Cool (although I really dislike looking at that serial.h file :-).

Thanks.

	-- Dan


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

Re: include/asm-ppc/platforms/

From: Adrian Cox <hidden>
Date: 2001-11-28 08:46:59

Paul Mackerras wrote:
The patch below does all this.  It does mean that we will need a
platform header for every platform, and a platform_serial header for
every platform where we want to use the standard serial driver.  As an
example, I have made an all_ppc_serial.h that contains most of what
was in serial.h before.  In fact, with a bit of care we could make
serial.h be the symlink.

All my boards now use early_serial_setup() instead of a platform header
file. This approach is simple to write, and requires no modifications
outside the platform_setup.c file. I'd rather not go back to providing
platform specific serial definitions in a header file.

--
Adrian Cox   http://www.humboldt.co.uk/


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

Re: include/asm-ppc/platforms/

From: Paul Mackerras <hidden>
Date: 2001-11-28 21:34:36

Adrian Cox writes:
All my boards now use early_serial_setup() instead of a platform header
file. This approach is simple to write, and requires no modifications
outside the platform_setup.c file. I'd rather not go back to providing
platform specific serial definitions in a header file.
Perfectly reasonable - I wish all the platforms used early_serial_setup.
Would you mind posting your code that does the early_serial_setup calls?

Paul.

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

Re: include/asm-ppc/platforms/

From: Adrian Cox <hidden>
Date: 2001-11-28 21:46:22

Paul Mackerras wrote:

Perfectly reasonable - I wish all the platforms used early_serial_setup.
Would you mind posting your code that does the early_serial_setup calls?


Mangled by Mozilla below. This is a 7400 board with a memory mapped
uart. It is important to zero out the entries for serial ports that
aren't present, otherwise the serial driver will attempt to use the
traditional locations.



static void __init
tpe3_setup_arch(void)
{
	struct serial_struct req;

	...

	memset(&req, 0, sizeof (req));
	req.line = 0;
	req.io_type = SERIAL_IO_MEM;
	req.iomem_base = (void *) (tpe3_uart_base + 0x10);
	req.baud_base = 6144000 / 16;
	req.irq = 3;
	req.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST;
	early_serial_setup(&req);
	memset(&req, 0, sizeof (req));
	req.line = 1;
	early_serial_setup(&req);
	req.line = 2;
	early_serial_setup(&req);
	req.line = 3;
	early_serial_setup(&req);

	...
}


--
Adrian Cox   http://www.humboldt.co.uk/


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

Re: include/asm-ppc/platforms/

From: Tom Rini <hidden>
Date: 2001-11-28 23:50:54

On Wed, Nov 28, 2001 at 08:46:59AM +0000, Adrian Cox wrote:
Paul Mackerras wrote:
quoted
The patch below does all this.  It does mean that we will need a
platform header for every platform, and a platform_serial header for
every platform where we want to use the standard serial driver.  As an
example, I have made an all_ppc_serial.h that contains most of what
was in serial.h before.  In fact, with a bit of care we could make
serial.h be the symlink.
All my boards now use early_serial_setup() instead of a platform header
file. This approach is simple to write, and requires no modifications
outside the platform_setup.c file. I'd rather not go back to providing
platform specific serial definitions in a header file.
What do you use for a bootloader tho?  I'm guessing PPCBoot.  The
in-kernel wrappers have a basic serial driver and need to know about
these things.

--
Tom Rini (TR1265)
http://gate.crashing.org/~trini/

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

Re: include/asm-ppc/platforms/

From: Tom Rini <hidden>
Date: 2001-11-28 23:51:32

On Wed, Nov 28, 2001 at 05:13:30PM +1100, Paul Mackerras wrote:
Dan Malek writes:
quoted
That's a pretty good idea, and I have another one.  Name the
directory include/asm-ppc/ppc-platforms or something, then
have a symbolic link
	include/asm/platform -> include/asm-ppc/ppc-platforms/<board-file>

That way we can just #include <platform.h> instead of having lots
of ifdefs in upper level files to determine which one is needed.  If
we are moving files around, let's have some effect on actually making
it easier to use them, too.
I have figured out a way to do this without too much pain.  The idea
is that we will have platform.h and platform-serial.h be symlinks to
files in include/asm-ppc/platforms/.  The way that I am suggesting
that we do this is to have special comments in those files (the ones
in include/asm-ppc/platforms) that say what should be symlinked, like
this, from include/asm-ppc/platforms/all_ppc_serial.h:
The one thing I don't like about this is that there's a handfull of
platforms which would use the 'all_ppc_serial.h' file.
The patch below does all this.  It does mean that we will need a
platform header for every platform, and a platform_serial header for
every platform where we want to use the standard serial driver.  As an
example, I have made an all_ppc_serial.h that contains most of what
was in serial.h before.  In fact, with a bit of care we could make
serial.h be the symlink.
Well, if I read that mess if #ifdefs, they already are a whole
'serial.h', so lets just do it in one go. :)

Aside from that it looks good.

--
Tom Rini (TR1265)
http://gate.crashing.org/~trini/

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

Re: include/asm-ppc/platforms/

From: Paul Mackerras <hidden>
Date: 2001-11-29 10:57:07

Adrian Cox writes:
All my boards now use early_serial_setup() instead of a platform header
file. This approach is simple to write, and requires no modifications
outside the platform_setup.c file. I'd rather not go back to providing
platform specific serial definitions in a header file.
I have just realized again that this is not possible if the serial
driver is built as a module, since you don't get the chance to call
early_serial_init between when it is loaded and when rs_init (which is
the module init function) is called.

Paul.

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

Re: include/asm-ppc/platforms/

From: Paul Mackerras <hidden>
Date: 2001-11-29 11:48:46

I have run the platform.h stuff past Keith Owens, the kbuild
maintainer.  He makes several points:

* He much prefers generated files (including symlinks) to be created
  in arch/$(ARCH) rather than include.  In particular he doesn't like
  mixing supplied and generated headers in the one directory.

* He prefers a copy rather than a symlink, particularly for
  kbuild-2.5, so that we have real pathnames and timestamps in the
  dependency tree.

* He wrote a new script that uses sed rather than awk, checks a few
  things (e.g. exactly one platform.h file is selected) and also
  creates empty files if e.g. no platform_serial.h file is selected.

The only reason for having include/asm-ppc/platforms under
include/asm-ppc is so that serial.h can include the right
blah_serial.h file.  We can get around that by using
early_serial_setup except that that doesn't work if the serial driver
is built as a module.  The boot stuff also needs to get at the first
serial port but we can manage that by requiring the platform.h file to
define e.g. BOOT_SERIAL_ADDRESS, BOOT_SERIAL_REG_SHIFT, etc., if it
wants to use a serial port in the boot wrapper.  The boot wrapper code
then just does #include <platform.h>.

Alternatively we can add a -Iarch/$(ARCH) flag for cc and put
platform.h in arch/ppc and the platform headers in
arch/ppc/platforms.  This is Keith's preferred solution and it feels
right to me too.

Platform maintainers can continue to statically initialize rs_table
for their serial ports if they wish.  I think I will move all those
crufty old fourport, accent, boca and hub6 declarations into
include/asm-ppc/isa_serial.h so that they are still available but not
getting in our faces all the time.

Comments?

Paul.

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

Re: include/asm-ppc/platforms/

From: Tom Rini <hidden>
Date: 2001-11-29 15:26:25

On Thu, Nov 29, 2001 at 10:48:46PM +1100, Paul Mackerras wrote:
The only reason for having include/asm-ppc/platforms under
include/asm-ppc is so that serial.h can include the right
blah_serial.h file.  We can get around that by using
early_serial_setup except that that doesn't work if the serial driver
is built as a module.  The boot stuff also needs to get at the first
serial port but we can manage that by requiring the platform.h file to
define e.g. BOOT_SERIAL_ADDRESS, BOOT_SERIAL_REG_SHIFT, etc., if it
wants to use a serial port in the boot wrapper.  The boot wrapper code
then just does #include <platform.h>.
What would <asm/serial.h> contain here?  Keep in mind that some ports
'just work' with the default <asm/serial.h>.
Alternatively we can add a -Iarch/$(ARCH) flag for cc and put
platform.h in arch/ppc and the platform headers in
arch/ppc/platforms.  This is Keith's preferred solution and it feels
right to me too.
This would probably be better.

--
Tom Rini (TR1265)
http://gate.crashing.org/~trini/

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

Re: include/asm-ppc/platforms/

From: Frank Rowand <hidden>
Date: 2001-11-29 17:57:02

Adrian Cox wrote:
Paul Mackerras wrote:
quoted
Perfectly reasonable - I wish all the platforms used early_serial_setup.
Would you mind posting your code that does the early_serial_setup calls?
Mangled by Mozilla below. This is a 7400 board with a memory mapped
uart. It is important to zero out the entries for serial ports that
aren't present, otherwise the serial driver will attempt to use the
traditional locations.

static void __init
tpe3_setup_arch(void)
{
        struct serial_struct req;

        ...

        memset(&req, 0, sizeof (req));
        req.line = 0;
        req.io_type = SERIAL_IO_MEM;
        req.iomem_base = (void *) (tpe3_uart_base + 0x10);
        req.baud_base = 6144000 / 16;
        req.irq = 3;
        req.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST;
        early_serial_setup(&req);
        memset(&req, 0, sizeof (req));
        req.line = 1;
        early_serial_setup(&req);
        req.line = 2;
        early_serial_setup(&req);
        req.line = 3;
        early_serial_setup(&req);

        ...
}

And a more generic approach (that can pull the port definitions from
a header file) is attached...


-Frank
--
Frank Rowand [off-list ref]
MontaVista Software, Inc

Re: include/asm-ppc/platforms/

From: Dan Malek <hidden>
Date: 2001-12-27 14:59:59

Paul Mackerras wrote:

Does anyone have any comments or objections?
That's a pretty good idea, and I have another one.  Name the
directory include/asm-ppc/ppc-platforms or something, then
have a symbolic link
	include/asm/platform -> include/asm-ppc/ppc-platforms/<board-file>

That way we can just #include <platform.h> instead of having lots
of ifdefs in upper level files to determine which one is needed.  If
we are moving files around, let's have some effect on actually making
it easier to use them, too.

Thanks.


	-- Dan


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help