LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH] Ethtool support for the new PowerPC 4xx on-chip ethernet controller driver
From: Jeff Garzik @ 2005-10-25  6:29 UTC (permalink / raw)
  To: Eugene Surovegin; +Cc: netdev, linuxppc-embedded
In-Reply-To: <20050831062416.GD17017@gate.ebshome.net>

applied

^ permalink raw reply

* [PATCH 2.6.14-rc5 1/1] : mv643xx_eth_showsram: Added information message when using the SRAM
From: Nicolas DET @ 2005-10-25  7:31 UTC (permalink / raw)
  To: Sven Luther, Andrew Morton, linuxppc-dev

[-- Attachment #1: Type: text/plain, Size: 166 bytes --]

Added information message when using the SRAM in mv643xx_eth_probe()

Signed-off-by: Nicolas DET <det.nicolas@free.fr>
Signed-off-by: Sven Luther <sl@bplan-gmbh.de>


[-- Attachment #2: mv643xx_eth_showsram_2.6.14-rc5.diff --]
[-- Type: text/x-patch, Size: 398 bytes --]

diff -Naur a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c
--- a/drivers/net/mv643xx_eth.c	2005-10-25 09:24:57.952386000 +0200
+++ b/drivers/net/mv643xx_eth.c	2005-10-25 09:25:02.220386000 +0200
@@ -1533,6 +1533,9 @@
 	printk(KERN_NOTICE "%s: RX NAPI Enabled \n", dev->name);
 #endif
 
+	if (mp->tx_sram_size > 0)
+		printk(KERN_NOTICE "%s: Using SRAM\n", dev->name);
+
 	return 0;
 
 out:

^ permalink raw reply

* [PATCH 2/2] powerpc: merge scatterlist.h
From: Stephen Rothwell @ 2005-10-25  6:59 UTC (permalink / raw)
  To: paulus; +Cc: ppc64-dev, ppc-dev
In-Reply-To: <20051025165643.39cac31d.sfr@canb.auug.org.au>

This depends on the 64bit dma_addr_t patch.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
---

 include/asm-powerpc/scatterlist.h |   45 +++++++++++++++++++++++++++++++++++++
 include/asm-ppc/scatterlist.h     |   25 ---------------------
 include/asm-ppc64/scatterlist.h   |   31 -------------------------
 3 files changed, 45 insertions(+), 56 deletions(-)
 create mode 100644 include/asm-powerpc/scatterlist.h
 delete mode 100644 include/asm-ppc/scatterlist.h
 delete mode 100644 include/asm-ppc64/scatterlist.h

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
d
b7d026746092f2b10eb5c2931aac88cdbec3eb3
diff --git a/include/asm-powerpc/scatterlist.h b/include/asm-powerpc/scatterlist.h
new file mode 100644
--- /dev/null
+++ b/include/asm-powerpc/scatterlist.h
@@ -0,0 +1,45 @@
+#ifndef _ASM_POWERPC_SCATTERLIST_H
+#define _ASM_POWERPC_SCATTERLIST_H
+/*
+ * Copyright (C) 2001 PPC64 Team, IBM Corp
+ *
+ * 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.
+ */
+
+#ifdef __KERNEL__
+#include <linux/types.h>
+#include <asm/dma.h>
+
+struct scatterlist {
+	struct page *page;
+	unsigned int offset;
+	unsigned int length;
+
+	/* For TCE support */
+	dma_addr_t dma_address;
+	u32 dma_length;
+};
+
+/*
+ * These macros should be used after a dma_map_sg call has been done
+ * to get bus addresses of each of the SG entries and their lengths.
+ * You should only work with the number of sg entries pci_map_sg
+ * returns, or alternatively stop on the first sg_dma_len(sg) which
+ * is 0.
+ */
+#define sg_dma_address(sg)	((sg)->dma_address)
+#ifdef __powerpc64__
+#define sg_dma_len(sg)		((sg)->dma_length)
+#else
+#define sg_dma_len(sg)		((sg)->length)
+#endif
+
+#ifdef __powerpc64__
+#define ISA_DMA_THRESHOLD	(~0UL)
+#endif
+
+#endif /* __KERNEL__ */
+#endif /* _ASM_POWERPC_SCATTERLIST_H */
diff --git a/include/asm-ppc/scatterlist.h b/include/asm-ppc/scatterlist.h
deleted file mode 100644
--- a/include/asm-ppc/scatterlist.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifdef __KERNEL__
-#ifndef _PPC_SCATTERLIST_H
-#define _PPC_SCATTERLIST_H
-
-#include <asm/dma.h>
-
-struct scatterlist {
-	struct page	*page;
-	unsigned int	offset;
-	dma_addr_t	dma_address;
-	unsigned int	length;
-};
-
-/*
- * These macros should be used after a pci_map_sg call has been done
- * to get bus addresses of each of the SG entries and their lengths.
- * You should only work with the number of sg entries pci_map_sg
- * returns, or alternatively stop on the first sg_dma_len(sg) which
- * is 0.
- */
-#define sg_dma_address(sg)      ((sg)->dma_address)
-#define sg_dma_len(sg)          ((sg)->length)
-
-#endif /* !(_PPC_SCATTERLIST_H) */
-#endif /* __KERNEL__ */
diff --git a/include/asm-ppc64/scatterlist.h b/include/asm-ppc64/scatterlist.h
deleted file mode 100644
--- a/include/asm-ppc64/scatterlist.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef _PPC64_SCATTERLIST_H
-#define _PPC64_SCATTERLIST_H
-
-/*
- * Copyright (C) 2001 PPC64 Team, IBM Corp
- *
- * 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.
- */
-
-#include <linux/types.h>
-#include <asm/dma.h>
-
-struct scatterlist {
-	struct page *page;
-	unsigned int offset;
-	unsigned int length;
-
-	/* For TCE support */
-	dma_addr_t dma_address;
-	u32 dma_length;
-};
-
-#define sg_dma_address(sg)	((sg)->dma_address)
-#define sg_dma_len(sg)		((sg)->dma_length)
-
-#define ISA_DMA_THRESHOLD	(~0UL)
-
-#endif /* !(_PPC64_SCATTERLIST_H) */

^ permalink raw reply

* [PATCH 1/2] ppc64: make dma_addr_t 64 bits
From: Stephen Rothwell @ 2005-10-25  6:56 UTC (permalink / raw)
  To: paulus; +Cc: ppc64-dev, ppc-dev

There has been a need expressed for dma_addr_t to be 64 bits on PPC64.
This patch does that.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
---

 drivers/net/ibmveth.c           |    2 +-
 include/asm-powerpc/types.h     |    4 ++++
 include/asm-ppc64/scatterlist.h |    2 +-
 3 files changed, 6 insertions(+), 2 deletions(-)

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

3be60638aece21cb4ca9b98ffb0ed349ec3e192a
diff --git a/drivers/net/ibmveth.c b/drivers/net/ibmveth.c
--- a/drivers/net/ibmveth.c
+++ b/drivers/net/ibmveth.c
@@ -532,7 +532,7 @@ static int ibmveth_open(struct net_devic
 
 	if(lpar_rc != H_Success) {
 		ibmveth_error_printk("h_register_logical_lan failed with %ld\n", lpar_rc);
-		ibmveth_error_printk("buffer TCE:0x%x filter TCE:0x%x rxq desc:0x%lx MAC:0x%lx\n",
+		ibmveth_error_printk("buffer TCE:0x%lx filter TCE:0x%lx rxq desc:0x%lx MAC:0x%lx\n",
 				     adapter->buffer_list_dma,
 				     adapter->filter_list_dma,
 				     rxq_desc.desc,
diff --git a/include/asm-powerpc/types.h b/include/asm-powerpc/types.h
--- a/include/asm-powerpc/types.h
+++ b/include/asm-powerpc/types.h
@@ -83,7 +83,11 @@ typedef unsigned long long u64;
 
 typedef __vector128 vector128;
 
+#ifdef __powerpc64__
+typedef u64 dma_addr_t;
+#else
 typedef u32 dma_addr_t;
+#endif
 typedef u64 dma64_addr_t;
 
 typedef struct {
diff --git a/include/asm-ppc64/scatterlist.h b/include/asm-ppc64/scatterlist.h
--- a/include/asm-ppc64/scatterlist.h
+++ b/include/asm-ppc64/scatterlist.h
@@ -19,7 +19,7 @@ struct scatterlist {
 	unsigned int length;
 
 	/* For TCE support */
-	u32 dma_address;
+	dma_addr_t dma_address;
 	u32 dma_length;
 };
 

^ permalink raw reply

* Re: [PATCH] 85xx PHY Platform Update
From: Kumar Gala @ 2005-10-24 14:56 UTC (permalink / raw)
  To: info; +Cc: linuxppc-embedded
In-Reply-To: <1130165338$29160$83019474@info@moreframe.com>

You need the corresponding patches that are in the netdev tree for  
the PHY subsystem.

- kumar

On Oct 24, 2005, at 9:49 AM, info wrote:

> Andy, Kumar
>
> I try this patch for RMC-G8500 from GDAtech, error message below:
> ---------------------------------------------------------------------- 
> -----------
>  [root@ppclinux linux-2.6.13]# make uImage
>   CHK     include/linux/version.h
>   CHK     include/linux/compile.h
>   CHK     usr/initramfs_list
>   CC      drivers/net/gianfar.o
> drivers/net/gianfar.c: In function `gfar_probe':
> drivers/net/gianfar.c:217: error: structure has no member named  
> `phy_reg_addr'
> drivers/net/gianfar.c: In function `init_phy':
> drivers/net/gianfar.c:452: error: structure has no member named  
> `phyid'
> drivers/net/gianfar.c: In function `stop_gfar':
> drivers/net/gianfar.c:636: error: structure has no member named  
> `interruptPHY'
> drivers/net/gianfar.c: In function `gfar_phy_startup_timer':
> drivers/net/gianfar.c:1818: error: structure has no member named  
> `interruptPHY'
> drivers/net/gianfar.c:1826: error: structure has no member named  
> `interruptPHY'
> make[2]: *** [drivers/net/gianfar.o] Error 1
> make[1]: *** [drivers/net] Error 2
> make: *** [drivers] Error 2
>
> ---------------------------------------------------------------------- 
> -----------
> because???
>
>  /* Internal interrupts are all Level Sensitive, and Positive  
> Polarity */
> diff --git a/include/linux/fsl_devices.h b/include/linux/fsl_devices.h
> --- a/include/linux/fsl_devices.h
> +++ b/include/linux/fsl_devices.h
> @@ -47,14 +47,19 @@
>  struct gianfar_platform_data {
>      /* device specific information */
>      u32 device_flags;
> -    u32 phy_reg_addr;
>
>      /* board specific information */
>      u32 board_flags;
> -    u32 phy_flags;
> -    u32 phyid;
> -    u32 interruptPHY;
> +    const char *bus_id;
>      u8 mac_addr[6];
> +};
> +
>
>
> ---------------------------------------------------------------------- 
> ---------------------
> <This patch updates the 85xx platform code to support the new PHY  
> Layer.
> <
> <Signed-off-by: Andy Fleming <afleming at freescale.com>
> <Signed-off-by: Kumar Gala <Kumar.gala at freescale.com>
> <
> <
> <diff --git a/arch/ppc/platforms/85xx/mpc8540_ads.c b/arch/ppc/ 
> platforms/85xx/mpc8540_ads.c
> <--- a/arch/ppc/platforms/85xx/mpc8540_ads.c
> <+++ b/arch/ppc/platforms/85xx/mpc8540_ads.c
> <@@ -53,6 +53,10 @@
> <
> < #include <syslib/ppc85xx_setup.h>
> <
> <+static const char *GFAR_PHY_0 = "phy0:0";
> <+static const char *GFAR_PHY_1 = "phy0:1";
> <+static const char *GFAR_PHY_3 = "phy0:3";
> <+
> < /*  
> ********************************************************************** 
> **
> <  *
> <  * Setup the architecture
> <@@ -64,6 +68,7 @@ mpc8540ads_setup_arch(void)
>
>
>
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>

^ permalink raw reply

* Virtual Machine Exit on eclipse startup
From: Juan P. Holder @ 2005-10-24 20:10 UTC (permalink / raw)
  To: linuxppc-dev

[-- Attachment #1: Type: text/plain, Size: 297 bytes --]

Hi to all,

I am new at ppc architecture, I 've installed debian 3.1 on a new Ibook
G4, and got some trouble executing eclipse 3.1.1 for linux/gtk/ppc.
I am using de IBM vm for ppc 32, and JAVA_HOME and PATH ar well set, but
eclipse throw exit 4 at init, and do not work, any Idea?

thanks 

Juan

[-- Attachment #2: Type: text/html, Size: 553 bytes --]

^ permalink raw reply

* Fix m82xx_pci build
From: Becky Bruce @ 2005-10-24 19:50 UTC (permalink / raw)
  To: paulus; +Cc: linuxppc-dev

ppc: Fix build of m82xx_pci

A recent patch updated the name of pci_assign_all_busses to
pci_assign_all_buses.  This instance of its use wasn't corrected
by the original patch to use the new name.

Builds cleanly on ads8272.

Signed-off-by: Becky Bruce <becky.bruce@freescale.com>

---
commit 7910aeac19d31ad2c0f9d1a63f77e58705e46886
tree 06fbae6fee12a548a6854b2ea768b37738073d8e
parent 16e835a69ee9da54920111f99bbd6d23749ae110
author Becky Bruce <becky.bruce@freescale.com> Mon, 24 Oct 2005 14:43:39 -0500
committer Becky Bruce <becky.bruce@freescale.com> Mon, 24 Oct 2005 14:43:39 -0500

 arch/ppc/syslib/m82xx_pci.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/ppc/syslib/m82xx_pci.c b/arch/ppc/syslib/m82xx_pci.c
--- a/arch/ppc/syslib/m82xx_pci.c
+++ b/arch/ppc/syslib/m82xx_pci.c
@@ -306,7 +306,7 @@ void __init pq2_find_bridges(void)
 	struct pci_controller * hose;
 	int host_bridge;
 
-	pci_assign_all_busses = 1;
+	pci_assign_all_buses = 1;
 
 	hose = pcibios_alloc_controller();
 

^ permalink raw reply

* Re: CHRP specifications
From: Sven Luther @ 2005-10-24 19:15 UTC (permalink / raw)
  To: i2a; +Cc: linuxppc-dev
In-Reply-To: <20051022131932.M72304@gmx.net>

On Sat, Oct 22, 2005 at 03:22:18PM +0200, i2a wrote:
> On Fri, 21 Oct 2005 07:18:45 +0200, Sven Luther wrote
> > On Thu, Oct 20, 2005 at 06:33:18PM -0500, Hollis Blanchard wrote:
> > > On Oct 20, 2005, at 10:17 AM, Sven Luther wrote:
> > > >
> > > >BTW, anyone know of where to get the CHRP specs in downloadable html 
> > > >or pdf or
> > > >something format. Not the chrp OF bindings, but the real CHRP specs ?
> > > 
> > > I believe you've seen this before, but the link is still in the same 
> > > place... http://penguinppc.org/otherhw/#chrp
> > 
> > ah, yes, remember now,  i even already downloaded it :)
> > 
> > > As I recall, though, the CHRP specification mandates such obsolete 
> > > features as an ADB controller, so claiming "CHRP compliance" may not be 
> > > all that special these days. :)
> > 
> > still good for the other features and for documentation.
> 
> I got pointers to this document, in case you do not have it already (it's old
> but at least something)..
> 
> http://simonraven.nuit.ca/docs/pdf/MacTech.pdf

Thanks,

Friendly,

Sven Luther

^ permalink raw reply

* segmentation fault on bnslr instruction
From: Vijay Sampath @ 2005-10-24 18:49 UTC (permalink / raw)
  To: linuxppc-embedded

Hi,

I am running an embedded linux (kernel 2.4.18) system with a bunch of
multithreaded applications compiled using uClibc (0.9.26). I have
noticed that very occasionally a couple of the processes die with a
segmentation fault. The core file points to the process dying on the
bnslr instruction inside the uClibc library code immediately after a
system call. I don't know why the system returned from the system
call, because nothing should have been going on at the time and the
process should have been sleeping in kernel space on the accept call.

Would like any pointers from people more knowledgeable on the ppc
architecture as to why a bnslr instruction would cause a segmentation
fault (the LR register is correct). I am assuming that the registers
saved by the OS when the fault occurred are precise (at the instant of
the fault and not sometime after). Also it bothers me as to why the OS
returned from the system call, as there was no activity going on.

Attached below is some debugging info using gdb.

Thanks,

Vijay


GNU gdb 5.2.1
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you ar=
e
welcome to change it and/or distribute copies of it under certain condition=
s.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "powerpc-linux"...
Core was generated by `xmlagent.out 1 2 6500 6500 1'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /lib/libpthread.so.0...done.
Loaded symbols for /lib/libpthread.so.0
Reading symbols from /lib/libc.so.0...done.
Loaded symbols for /lib/libc.so.0
Reading symbols from /lib/ld.so.1...done.
Loaded symbols for /lib/ld.so.1
#0  0x30072000 in __uClibc_syscall () from /lib/libc.so.0


(gdb) bt
#0  0x30072000 in __uClibc_syscall () from /lib/libc.so.0
#1  0x3005f7b0 in accept () from /lib/libc.so.0
#2  0x3002175c in accept () from /lib/libpthread.so.0
#3  0x10002718 in xmlSocketThread (arg=3D0x200) at xmlMain.c:335
#4  0x3001b3ec in __pthread_manager_event () from /lib/libpthread.so.0
#5  0x30071fe0 in clone () from /lib/libc.so.0


(gdb) info frame
Stack level 0, frame at 0x7f7ffc60:
 pc =3D 0x30072000 in __uClibc_syscall; saved pc 0x3005f7b0
 (FRAMELESS), called by frame at 0x7f7ffc60
 Arglist at 0x7f7ffc60, args:
 Locals at 0x7f7ffc60, Previous frame's sp is 0x0


(gdb) disassemble
Dump of assembler code for function __uClibc_syscall:
0x30071ffc <__uClibc_syscall>:  sc
0x30072000 <__uClibc_syscall+4>:        bnslr             -------->
segmentation fault
0x30072004 <__uClibc_syscall+8>:        b       0x300897f8 <___brk_addr+227=
6>
End of assembler dump.
(gdb) info registers
r0             0x66     102
r1             0x7f7ffc60       2139094112
r2             0x0      0
r3             0x200    512
r4             0x7f7ffc68       2139094120
r5             0x7f7ffd1c       2139094300
r6             0x8      8
r7             0x38     56
r8             0x21     33
r9             0x7f7ffcc8       2139094216
r10            0x7f7ffc70       2139094128
r11            0x30071ffc       805773308
r12            0x1005a07c       268804220
r13            0x0      0
r14            0x30005140       805327168
r15            0x30005000       805326848
r16            0x2      2
r17            0xe4     228
r18            0x300050a0       805327008
r19            0xe4     228
r20            0x30035bf0       805526512
r21            0x30035d60       805526880
r22            0x0      0
---Type <return> to continue, or q <return> to quit---
r23            0x0      0
r24            0x100025f4       268445172
r25            0x10076ccc       268922060
r26            0x10070000       268894208
r27            0x7f7ffd1c       2139094300
r28            0x7f7ffcc8       2139094216
r29            0x10     16
r30            0x100726d8       268904152
r31            0x10072744       268904260
pc             0x30072000       805773312
ps             0xd030   53296
cr             0x32002028       838869032
lr             0x3005f7b0       805697456
ctr            0x30071ffc       805773308
xer            0x20000000       536870912


(gdb)  disassemble 0x3005f7b0                    --------> LR location
Dump of assembler code for function accept:
0x3005f784 <accept>:    stwu    r1,-48(r1)
0x3005f788 <accept+4>:  mflr    r0
0x3005f78c <accept+8>:  stw     r0,52(r1)
0x3005f790 <accept+12>: mr      r9,r4
0x3005f794 <accept+16>: mr      r0,r3
0x3005f798 <accept+20>: addi    r4,r1,8
0x3005f79c <accept+24>: li      r3,5
0x3005f7a0 <accept+28>: stw     r0,8(r1)
0x3005f7a4 <accept+32>: stw     r9,12(r1)
0x3005f7a8 <accept+36>: stw     r5,16(r1)
0x3005f7ac <accept+40>: bl      0x30088fb8 <___brk_addr+164>
0x3005f7b0 <accept+44>: lwz     r0,52(r1)
0x3005f7b4 <accept+48>: addi    r1,r1,48
0x3005f7b8 <accept+52>: mtlr    r0
0x3005f7bc <accept+56>: blr

^ permalink raw reply

* Re: Add PCI support for TQM834x Boards
From: Wolfgang Denk @ 2005-10-24 18:29 UTC (permalink / raw)
  To: Kumar Gala; +Cc: linuxppc-dev
In-Reply-To: <398F469F-357E-445D-B48E-59899230E001@freescale.com>

Dear Kumar,

in message <398F469F-357E-445D-B48E-59899230E001@freescale.com> you wrote:
>
> * The comment in mpc83xx_setup_hose() may not be 100% correct (see  
> inline)

It probably needs more explanation.

> * Updating of pci_ids.h should be done via http:// 
> pciids.sourceforge.net/.  I can handle doing this for 834x if you  
> want me to.

I'd appreciate if you could handle it this time. I will  remeber  how
to do it correctly from now on. Thanks.

...
> > +#ifdef CONFIG_TQM834x
> 
> Is the following comment 100% correct?  I'm not sure I follow the  
> STK85xx reference.
> 
> > +    /*
> > +     * WARNING! only PCI_CLK_OUTPUT1 is enabled for the TQM834x as this is
> > +     * the one line actually used for clocking all external PCI devices in
> > +     * current setup of the STK85xx.  Enabling other PCI_CLK_OUTPUT lines

This is correct. TQ uses the same eval  board  for  all  TQM83xx  and
TQM85xx  modules.  It  was originally developed for the TQM85xx so it
got named STK85xx (STarter Kit 85xx). Later,  it  was  impossible  to
reflect  the  use for the TQM83xx in the name of the eval board. Yes,
this is confusing...

Best regards,

Wolfgang Denk

-- 
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
"Have you lived in this village all your life?"        "No, not yet."

^ permalink raw reply

* Re: [Patch] Add support for TQM834x Boards
From: Wolfgang Denk @ 2005-10-24 18:23 UTC (permalink / raw)
  To: Kumar Gala; +Cc: linuxppc-dev
In-Reply-To: <989A4B75-70FA-43BE-AAA7-379D42AFEA49@freescale.com>

In message <989A4B75-70FA-43BE-AAA7-379D42AFEA49@freescale.com> you wrote:
> 
> Will you or Marian being maintaining this board family going forward?

I'll be the maintainer / contact.

> Also, you need to split out the MTD portion and submit that to the  
> MTD maintainer separately.

I already did so. Included here for completeness. Let me know if this
is a problem and I will resubmit without the MTD part.

> The only other comment is that tqm834x_show_cpuinfo() might want to  
> be updated the vendor info.

What do you mean? We set vendor as  "Freescale  Inc."  -  isn't  this
correct for the MPC8349 CPU? What schould it be?

> Otherwise, once the I2C DS1337 patch is ack'd I'll push this upstream.

Thanks.

Ummm... what about my earlier patch for the PPChameleonEVB board?

Best regards,

Wolfgang Denk

-- 
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
A committee is a group that keeps the minutes and loses hours.
                                                      -- Milton Berle

^ permalink raw reply

* Re: Help needed Linux-2.6 - MPC8540
From: info @ 2005-10-24 16:34 UTC (permalink / raw)
  To: Andy Fleming, Kumar Gala; +Cc: linuxppc-embedded

Andy, Kumar

Thank you for your help!
GDAtech only give me linux-2.4.27 binary file for RMC-G8500 card, I try to port 2.6.13 for that card myself.

Today, I download linux-2.6.13.tar.bz2 and patch-2.6.14-rc5.bz2 from kernel.org. 
I download http://lwn.net/Articles/146253/ "Patch: Gianfar PHY Layer Update".
I download http://ozlabs.org/pipermail/linuxppc-embedded/2005-October/020593.html  "[PATCH] 85xx PHY Platform Update"
I patch and build them together get a linux 2.6.14-rc5 for MPC8540, try it on RMC-G8500 card

U-Boot 1.1.1 (Aug 10 2004 - 11:01:21)

Motorola PowerPC ProcessorID=00000000 Rev. PVR=80200020
Board: GDA Technologies RMC-G8500 [PowerQUICC III]
        CPU: 825 MHz
        CCB: 330 MHz
        DDR: 165 MHz
        LBC: 82 MHz
L1 D-cache 32KB, L1 I-cache 32KB enabled.
I2C:   ready
DRAM:  256 MB
8540 in PCI Host Mode.
8540 is the PCI Arbiter.
FLASH:  8 MB
L2 cache enabled: 256KB
In:    serial
Out:   serial
Err:   serial
Net:   MOTO ETHERNET
Hit any key to stop autoboot:  0 
RMCG8500#>tftp 200000 uImage; tftp 400000 your.ramdisk.u-boot; bootm 200000 400000
Using MOTO ETHERNET device
TFTP from server 192.96.134.135; our IP address is 192.96.134.136
Filename 'uImage'.
Load address: 0x200000
Loading: #################################################################
         #################################################################
         #################################################################
         ################################
done
Bytes transferred = 1159376 (11b0d0 hex)
Using MOTO ETHERNET device
TFTP from server 192.96.134.135; our IP address is 192.96.134.136
Filename 'your.ramdisk.u-boot'.
Load address: 0x400000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ########################################
done
Bytes transferred = 3530818 (35e042 hex)
## Booting image at 00200000 ...
   Image Name:   Linux-2.6.14-rc5
   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
   Data Size:    1159312 Bytes =  1.1 MB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
## Loading RAMDisk Image at 00400000 ...
   Image Name:   zzz ppc ramdisk
   Image Type:   PowerPC Linux RAMDisk Image (gzip compressed)
   Data Size:    3530754 Bytes =  3.4 MB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
   Loading Ramdisk to 0fc54000, end 0ffb2002 ... OK
Memory CAM mapping: CAM0=256Mb, CAM1=0Mb, CAM2=0Mb residual: 0Mb
Linux version 2.6.14-rc5 (root@ppclinux) (gcc version 3.3.3 (Yellow Dog Linux 3.3.3-16.ydl.4)) #1 Mon Oct 24 13:22:56 EDT 2005
Built 1 zonelists
Kernel command line: console=ttyS0,115200 root=/dev/ram rw doPci=1
OpenPIC Version 1.2 (1 CPUs and 60 IRQ sources) at fcfbb000
PID hash table entries: 2048 (order: 11, 32768 bytes)
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Memory: 253440k available (1904k kernel code, 516k data, 132k init, 0k highmem)
Mount-cache hash table entries: 512
checking if image is initramfs...it isn't (no cpio magic); looks like an initrd
softlockup thread 0 started up.
Freeing initrd memory: 3448k freed
NET: Registered protocol family 16
PCI: Probing PCI hardware
Generic PHY: Registered new driver
SCSI subsystem initialized
Generic RTC Driver v1.07
i8042.c: i8042 controller self test timeout.
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
ttyS0 at MMIO 0xfdf04500 (irq = 26) is a 16550A
ttyS1 at MMIO 0xfdf04600 (irq = 26) is a 16550A
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
RAMDISK driver initialized: 16 RAM disks of 32768K size 1024 blocksize
loop: loaded (max 8 devices)
Gianfar MII Bus: probed


!!STOP HERE



>
>On Oct 23, 2005, at 10:39, info wrote:
>
>> Junita
>>
>> Sorry to disturbed you. I find your question in the http:// 
>> ozlabs.org mail list.
>> Have you fixed the bug in gianfar_phy.c?
>> tempval = gfar_read(&priv-> regs-> dmactrl);
>> tempval |= (DMACTRL_GRS | DMACTRL_GTS);
>> gfar_write(&priv-> regs-> dmactrl, tempval);
>>
>> while (!(gfar_read(&priv-> regs-> ievent) & (IEVENT_GRSC |  
>> IEVENT_GTSC)))
>> cpu_relax();
>>
>> /* Reset MAC layer */
>> gfar_write(&priv-> regs-> maccfg1, MACCFG1_SOFT_RESET);
>
>
>I'm a bit confused by the statement above.  The code you present is  
>from gianfar.c, and is certainly not a bug.  It is possible you are  
>using an older version of the code, which has a bug, which is fixed  
>by adding these lines above the code you show:
>
>         tempval = gfar_read(&priv->regs->dmactrl);
>         tempval &= ~(DMACTRL_GRS | DMACTRL_GTS);
>         gfar_write(&priv->regs->dmactrl, tempval);
>
>This fixes a problem where setting GRS and GTS when they're already  
>set doesn't initiate the graceful stop.  But if you are using 2.6.13,  
>you should have this fix.  I suspect that, like I told Junita, you  
>need to make sure the platform code has the right CCSRBAR value set up.
>
>>
>> I buy a RMC-G8500 card from GDAtech, I try to build linux-2.6.13.4  
>> from kernel.org and meet the same problems as you had. I test the  
>> same code on freescale 8540_ADS board, it is good.Can you share  
>> some infomation of your progress?
>
>
>I'm not familiar with this card.  Are you sure there's support for it  
>in your source tree?
>
>
>Andy Fleming
>
>.


>You need the corresponding patches that are in the netdev tree for  
>the PHY subsystem.

>- kumar

>On Oct 24, 2005, at 9:49 AM, info wrote:

> Andy, Kumar
>
> I try this patch for RMC-G8500 from GDAtech, error message below:
> ---------------------------------------------------------------------- 
> -----------
>  [root@ppclinux linux-2.6.13]# make uImage
>   CHK     include/linux/version.h
>   CHK     include/linux/compile.h
>   CHK     usr/initramfs_list
>   CC      drivers/net/gianfar.o
> drivers/net/gianfar.c: In function `gfar_probe':
> drivers/net/gianfar.c:217: error: structure has no member named  
> `phy_reg_addr'
> drivers/net/gianfar.c: In function `init_phy':
> drivers/net/gianfar.c:452: error: structure has no member named  
> `phyid'
> drivers/net/gianfar.c: In function `stop_gfar':
> drivers/net/gianfar.c:636: error: structure has no member named  
> `interruptPHY'
> drivers/net/gianfar.c: In function `gfar_phy_startup_timer':
> drivers/net/gianfar.c:1818: error: structure has no member named  
> `interruptPHY'
> drivers/net/gianfar.c:1826: error: structure has no member named  
> `interruptPHY'
> make[2]: *** [drivers/net/gianfar.o] Error 1
> make[1]: *** [drivers/net] Error 2
> make: *** [drivers] Error 2
>
> ---------------------------------------------------------------------- 
> -----------
> because???
>
>  /* Internal interrupts are all Level Sensitive, and Positive  
> Polarity */
> diff --git a/include/linux/fsl_devices.h b/include/linux/fsl_devices.h
> --- a/include/linux/fsl_devices.h
> +++ b/include/linux/fsl_devices.h
> @@ -47,14 +47,19 @@
>  struct gianfar_platform_data {
>      /* device specific information */
>      u32 device_flags;
> -    u32 phy_reg_addr;
>
>      /* board specific information */
>      u32 board_flags;
> -    u32 phy_flags;
> -    u32 phyid;
> -    u32 interruptPHY;
> +    const char *bus_id;
>      u8 mac_addr[6];
> +};
> +
>
>
> ---------------------------------------------------------------------- 
> ---------------------
> <This patch updates the 85xx platform code to support the new PHY  
> Layer.
> <
> <Signed-off-by: Andy Fleming <afleming at freescale.com>
> <Signed-off-by: Kumar Gala <Kumar.gala at freescale.com>
> <
> <
> <diff --git a/arch/ppc/platforms/85xx/mpc8540_ads.c b/arch/ppc/ 
> platforms/85xx/mpc8540_ads.c
> <--- a/arch/ppc/platforms/85xx/mpc8540_ads.c
> <+++ b/arch/ppc/platforms/85xx/mpc8540_ads.c
> <@@ -53,6 +53,10 @@
> <
> < #include <syslib/ppc85xx_setup.h>
> <
> <+static const char *GFAR_PHY_0 = "phy0:0";
> <+static const char *GFAR_PHY_1 = "phy0:1";
> <+static const char *GFAR_PHY_3 = "phy0:3";
> <+
> < /*  
> ********************************************************************** 
> **
> <  *
> <  * Setup the architecture
> <@@ -64,6 +68,7 @@ mpc8540ads_setup_arch(void)
>
>
>
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>

^ permalink raw reply

* Re: m82xxhci USB driver problems
From: Vitaly Bordug @ 2005-10-24 16:15 UTC (permalink / raw)
  To: Alex Zeffertt; +Cc: linuxppc-embedded
In-Reply-To: <20051024170707.5068be0a.ajz@cambridgebroadband.com>

Maybe there's something with SOF generation - check if RCCR[EIE] is set.
Just a pure guess...
Alex Zeffertt wrote:
> Hi list,
> 
> I'm trying to get the m82xxhci USB host controller driver working on
> my MPC8272ADS board, and linux-2.4.25.
> 
> I can compile and modprobe the module.  When I insert a USB pen drive
> I get the following message:
> 
> 	# hub.c: new USB device m8xxhci-1, assigned address 4
> 	Manufacturer:
> 	Product: USB Disk Pro
> 	SerialNumber: 07531E630012
> 	scsi0 : SCSI emulation for USB Mass Storage devices
> 
> Which looks okay.  But after a long delay I get:
> 	
> 	# usb_control/bulk_msg: timeout
>                                 
> Then after another delay:
> 	
> 	# usb-storage: host_reset() requested but not implemented
> 	#
> 
> 
> Then after another delay:
> 
> 	# scsi: device set offline - command error recover failed: host 0
> 	channel 0 id 0 lun 0
> 
> After this final message, but not before, the pen drive device appears
> in /proc/bus/usb/devices:
> 
> 	# cat /proc/bus/usb/devices
> 	T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 1
> 	B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
> 	D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
> 	P:  Vendor=0000 ProdID=0000 Rev= 0.00
> 	S:  Product=USB MPC8xx Root Hub
> 	S:  SerialNumber=f0011b60	
> 	C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
> 	I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
> 	E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms
> 	T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
> 	D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
> 	P:  Vendor=0d7d ProdID=0120 Rev= 1.00
> 	S:  Manufacturer=
> 	S:  Product=USB Disk Pro
> 	S:  SerialNumber=07531E630012
> 	C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
> 	I:  If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=04 Prot=00
> 	Driver=usb-storage E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
> 	E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
> 	E:  Ad=83(I) Atr=03(Int.) MxPS=   2 Ivl=1ms
> 
> 
> 
> Does anybody have any idea what could be causing this problem?  The
> HCI is clearly able to communicate with the device because it
> identifies it.  But I don't know why the timeout should occur!
> 
> 
> Alex
> 
> 
> PS A possibly related problem: I have built sd_mod.o as a module, and
> I can modprobe sd_mod okay.  However, after I have run modprobe I
> still do not see an "sd" block device in /proc/devices.  I have no
> idea why though....
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
> 
> 


-- 
Sincerely,
Vitaly

^ permalink raw reply

* m82xxhci USB driver problems
From: Alex Zeffertt @ 2005-10-24 16:07 UTC (permalink / raw)
  To: linuxppc-embedded

Hi list,

I'm trying to get the m82xxhci USB host controller driver working on
my MPC8272ADS board, and linux-2.4.25.

I can compile and modprobe the module.  When I insert a USB pen drive
I get the following message:

	# hub.c: new USB device m8xxhci-1, assigned address 4
	Manufacturer:
	Product: USB Disk Pro
	SerialNumber: 07531E630012
	scsi0 : SCSI emulation for USB Mass Storage devices

Which looks okay.  But after a long delay I get:
	
	# usb_control/bulk_msg: timeout
                                
Then after another delay:
	
	# usb-storage: host_reset() requested but not implemented
	#


Then after another delay:

	# scsi: device set offline - command error recover failed: host 0
	channel 0 id 0 lun 0

After this final message, but not before, the pen drive device appears
in /proc/bus/usb/devices:

	# cat /proc/bus/usb/devices
	T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 1
	B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
	D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
	P:  Vendor=0000 ProdID=0000 Rev= 0.00
	S:  Product=USB MPC8xx Root Hub
	S:  SerialNumber=f0011b60	
	C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
	I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
	E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms
	T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
	D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
	P:  Vendor=0d7d ProdID=0120 Rev= 1.00
	S:  Manufacturer=
	S:  Product=USB Disk Pro
	S:  SerialNumber=07531E630012
	C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
	I:  If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=04 Prot=00
	Driver=usb-storage E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
	E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
	E:  Ad=83(I) Atr=03(Int.) MxPS=   2 Ivl=1ms



Does anybody have any idea what could be causing this problem?  The
HCI is clearly able to communicate with the device because it
identifies it.  But I don't know why the timeout should occur!


Alex


PS A possibly related problem: I have built sd_mod.o as a module, and
I can modprobe sd_mod okay.  However, after I have run modprobe I
still do not see an "sd" block device in /proc/devices.  I have no
idea why though....

^ permalink raw reply

* Re: Help needed Linux-2.6 - MPC8541
From: Andy Fleming @ 2005-10-24 15:27 UTC (permalink / raw)
  To: info; +Cc: linuxppc-embedded
In-Reply-To: <1130081898$57509$59788830@info@moreframe.com>


On Oct 23, 2005, at 10:39, info wrote:

> Junita
>
> Sorry to disturbed you. I find your question in the http:// 
> ozlabs.org mail list.
> Have you fixed the bug in gianfar_phy.c?
> tempval = gfar_read(&priv-> regs-> dmactrl);
> tempval |= (DMACTRL_GRS | DMACTRL_GTS);
> gfar_write(&priv-> regs-> dmactrl, tempval);
>
> while (!(gfar_read(&priv-> regs-> ievent) & (IEVENT_GRSC |  
> IEVENT_GTSC)))
> cpu_relax();
>
> /* Reset MAC layer */
> gfar_write(&priv-> regs-> maccfg1, MACCFG1_SOFT_RESET);


I'm a bit confused by the statement above.  The code you present is  
from gianfar.c, and is certainly not a bug.  It is possible you are  
using an older version of the code, which has a bug, which is fixed  
by adding these lines above the code you show:

         tempval = gfar_read(&priv->regs->dmactrl);
         tempval &= ~(DMACTRL_GRS | DMACTRL_GTS);
         gfar_write(&priv->regs->dmactrl, tempval);

This fixes a problem where setting GRS and GTS when they're already  
set doesn't initiate the graceful stop.  But if you are using 2.6.13,  
you should have this fix.  I suspect that, like I told Junita, you  
need to make sure the platform code has the right CCSRBAR value set up.

>
> I buy a RMC-G8500 card from GDAtech, I try to build linux-2.6.13.4  
> from kernel.org and meet the same problems as you had. I test the  
> same code on freescale 8540_ADS board, it is good.Can you share  
> some infomation of your progress?


I'm not familiar with this card.  Are you sure there's support for it  
in your source tree?


Andy Fleming

^ permalink raw reply

* Re: Add PCI support for TQM834x Boards
From: Kumar Gala @ 2005-10-24 15:20 UTC (permalink / raw)
  To: Wolfgang Denk; +Cc: linuxppc-dev
In-Reply-To: <20051022223658.3C202352B25@atlas.denx.de>

Two comments:
* The comment in mpc83xx_setup_hose() may not be 100% correct (see  
inline)
* Updating of pci_ids.h should be done via http:// 
pciids.sourceforge.net/.  I can handle doing this for 834x if you  
want me to.

- kumar

On Oct 22, 2005, at 5:36 PM, Wolfgang Denk wrote:

> The following patch (against latest 2.6 tree) adds  PCI  support  for
> the TQ Systems TQM834x Boards. Verified on TQM8349L.
>
> Note: for TQM834x board support actually to compile and  work,  three
> previously submitted patches are required. See postings:
>
> Sat, 22 Oct 2005   [PATCH 2.6] Add generic support for DS1377 RTC
> Sat, 22 Oct 2005   [PATCH] Cleanup mpc83xx_restart() code
> Sat, 22 Oct 2005   [Patch] Add support for TQM834x Boards
>
>
> ---
> PCI support for the TQM834x boards.
>
> Signed-off-by: Rafal Jaworowski <raj@semihalf.com>
> Signed-off-by: Wolfgang Denk <wd@denx.de>
>
>
> ---
> commit 5108607a56824e025fda5efe9f68ff310545adb9
> tree 4e3b67d3e9f4188f69de9715da68781fb7eebc84
> parent 0af38510e829b6d397128269fe194898924ab534
> author Rafal Jaworowski <raj@pollux.denx.de> Wed, 19 Oct 2005  
> 12:32:42 +0200
> committer Rafal Jaworowski <raj@pollux.denx.de> Wed, 19 Oct 2005  
> 12:32:42 +0200
>
>  arch/ppc/platforms/83xx/mpc834x_sys.c |    7 +++
>  arch/ppc/platforms/83xx/tqm834x.c     |   37 ++++++++++-----
>  arch/ppc/platforms/83xx/tqm834x.h     |   10 ++--
>  arch/ppc/syslib/ppc83xx_pci.h         |   41 +++++++++++++++++
>  arch/ppc/syslib/ppc83xx_setup.c       |   79 ++++++++++++++++++++++ 
> ++++++-----
>  arch/ppc/syslib/ppc83xx_setup.h       |    1
>  include/linux/pci_ids.h               |   10 ++++
>  7 files changed, 157 insertions(+), 28 deletions(-)
>
> diff --git a/arch/ppc/platforms/83xx/mpc834x_sys.c b/arch/ppc/ 
> platforms/83xx/mpc834x_sys.c
> --- a/arch/ppc/platforms/83xx/mpc834x_sys.c
> +++ b/arch/ppc/platforms/83xx/mpc834x_sys.c
> @@ -364,6 +364,13 @@ platform_init(unsigned long r3, unsigned
>      ppc_md.progress = gen550_progress;
>  #endif    /* CONFIG_SERIAL_8250 && CONFIG_SERIAL_TEXT_DEBUG */
>
> +#ifdef CONFIG_PCI
> +    ppc_md.pci_swizzle = common_swizzle;
> +    ppc_md.pci_map_irq = mpc83xx_map_irq;
> +    ppc_md.pci_exclude_device = mpc83xx_exclude_device;
> +    ppc_md.pcibios_fixup = mpc834x_pcibios_fixup;
> +#endif /* CONFIG_PCI */
> +
>      if (ppc_md.progress)
>          ppc_md.progress("mpc834x_sys_init(): exit", 0);
>
> diff --git a/arch/ppc/platforms/83xx/tqm834x.c b/arch/ppc/platforms/ 
> 83xx/tqm834x.c
> --- a/arch/ppc/platforms/83xx/tqm834x.c
> +++ b/arch/ppc/platforms/83xx/tqm834x.c
> @@ -61,28 +61,33 @@ unsigned char __res[sizeof (bd_t)];
>
>  #ifdef CONFIG_PCI
>  int
> -mpc83xx_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned  
> char pin)
> +tqm834x_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned  
> char pin)
>  {
> +    int irq;
>      static char pci_irq_table[][4] =
>          /*
>           *      PCI IDSEL/INTPIN->INTLINE
>           *       A      B      C      D
>           */
>      {
> -        {PIRQA, PIRQB,  PIRQC,  PIRQD}, /* idsel 0x11 */
> -        {PIRQC, PIRQD,  PIRQA,  PIRQB}, /* idsel 0x12 */
> -        {PIRQD, PIRQA,  PIRQB,  PIRQC}  /* idsel 0x13 */
> +        {PIRQA, PIRQB,  PIRQC,  PIRQD}, /* idsel 0x1c */
> +        {PIRQB, PIRQC,  PIRQD,  PIRQA}, /* idsel 0x1d */
> +        {PIRQC, PIRQD,  0,  0}      /* idsel 0x1e */
>      };
>
> -    const long min_idsel = 0x11, max_idsel = 0x13, irqs_per_slot = 4;
> -    return PCI_IRQ_TABLE_LOOKUP;
> +    const long min_idsel = 0x1c, max_idsel = 0x1e, irqs_per_slot = 4;
> +    irq = PCI_IRQ_TABLE_LOOKUP;
> +    if (!irq)
> +        irq = 0;
> +    return (irq);
>  }
>
>  int
> -mpc83xx_exclude_device(u_char bus, u_char devfn)
> +tqm834x_exclude_device(u_char bus, u_char devfn)
>  {
>      return PCIBIOS_SUCCESSFUL;
>  }
> +
>  #endif /* CONFIG_PCI */
>
>  /*  
> ********************************************************************** 
> **
> @@ -190,19 +195,20 @@ tqm834x_init_IRQ(void)
>      u8 senses[8] = {
>          0,            /* EXT 0 */
>          0,            /* EXT 1 */
> -        0,            /* EXT 2 */
> -        0,            /* EXT 3 */
>  #ifdef CONFIG_PCI
> -        IRQ_SENSE_LEVEL,    /* EXT 4 */
> +        IRQ_SENSE_LEVEL,    /* EXT 2 */
> +        IRQ_SENSE_LEVEL,    /* EXT 3 */
> +        0,            /* EXT 4 */
>          IRQ_SENSE_LEVEL,    /* EXT 5 */
>          IRQ_SENSE_LEVEL,    /* EXT 6 */
> -        IRQ_SENSE_LEVEL,    /* EXT 7 */
>  #else
> +        0,            /* EXT 2 */
> +        0,            /* EXT 3 */
>          0,            /* EXT 4 */
>          0,            /* EXT 5 */
>          0,            /* EXT 6 */
> -        0,            /* EXT 7 */
>  #endif
> +        IRQ_SENSE_LEVEL,    /* EXT 7 */
>      };
>
>      ipic_init(binfo->bi_immr_base + 0x00700, 0,  
> MPC83xx_IPIC_IRQ_OFFSET, senses, 8);
> @@ -329,6 +335,13 @@ platform_init(unsigned long r3, unsigned
>      ppc_md.progress = gen550_progress;
>  #endif    /* CONFIG_SERIAL_8250 && CONFIG_SERIAL_TEXT_DEBUG */
>
> +#ifdef CONFIG_PCI
> +    ppc_md.pci_swizzle = common_swizzle;
> +    ppc_md.pci_map_irq = tqm834x_map_irq;
> +    ppc_md.pci_exclude_device = tqm834x_exclude_device;
> +    ppc_md.pcibios_fixup = mpc834x_pcibios_fixup;
> +#endif /* CONFIG_PCI */
> +
>      if (ppc_md.progress)
>          ppc_md.progress("tqm834x_init(): exit", 0);
>
> diff --git a/arch/ppc/platforms/83xx/tqm834x.h b/arch/ppc/platforms/ 
> 83xx/tqm834x.h
> --- a/arch/ppc/platforms/83xx/tqm834x.h
> +++ b/arch/ppc/platforms/83xx/tqm834x.h
> @@ -24,15 +24,15 @@
>
>  #define VIRT_IMMRBAR        ((uint)0xfe000000)
>
> -#define PIRQA    MPC83xx_IRQ_EXT4
> -#define PIRQB    MPC83xx_IRQ_EXT5
> +#define PIRQA    MPC83xx_IRQ_EXT2
> +#define PIRQB    MPC83xx_IRQ_EXT3
>  #define PIRQC    MPC83xx_IRQ_EXT6
> -#define PIRQD    MPC83xx_IRQ_EXT7
> +#define PIRQD    MPC83xx_IRQ_EXT5
>
>  #define MPC83xx_PCI1_LOWER_IO    0x00000000
>  #define MPC83xx_PCI1_UPPER_IO    0x00ffffff
> -#define MPC83xx_PCI1_LOWER_MEM    0x80000000
> -#define MPC83xx_PCI1_UPPER_MEM    0x9fffffff
> +#define MPC83xx_PCI1_LOWER_MEM    0xc0000000
> +#define MPC83xx_PCI1_UPPER_MEM    0xdfffffff
>  #define MPC83xx_PCI1_IO_BASE    0xe2000000
>  #define MPC83xx_PCI1_MEM_OFFSET    0x00000000
>  #define MPC83xx_PCI1_IO_SIZE    0x01000000
> diff --git a/arch/ppc/syslib/ppc83xx_pci.h b/arch/ppc/syslib/ 
> ppc83xx_pci.h
> --- a/arch/ppc/syslib/ppc83xx_pci.h
> +++ b/arch/ppc/syslib/ppc83xx_pci.h
> @@ -25,6 +25,47 @@ typedef struct immr_clk {
>      u32 sccr; /* system clock control Register  */
>      u8 res0[0xF4];
>  } immr_clk_t;
> +#define SPMR_LBIUCM  0x80000000 /* LBIUCM  */
> +#define SPMR_DDRCM   0x40000000 /* DDRCM  */
> +#define SPMR_SVCOD   0x30000000 /* SVCOD  */
> +#define SPMR_SPMF    0x0F000000 /* SPMF  */
> +#define SPMR_CKID    0x00800000 /* CKID  */
> +#define SPMR_CKID_SHIFT 23
> +#define SPMR_COREPLL 0x007F0000 /* COREPLL  */
> +#define SPMR_CEVCOD  0x000000C0 /* CEVCOD  */
> +#define SPMR_CEPDF   0x00000020 /* CEPDF  */
> +#define SPMR_CEPMF   0x0000001F /* CEPMF  */
> +
> +#define OCCR_PCICOE0 0x80000000 /* PCICOE0  */
> +#define OCCR_PCICOE1 0x40000000 /* PCICOE1  */
> +#define OCCR_PCICOE2 0x20000000 /* PCICOE2  */
> +#define OCCR_PCICOE3 0x10000000 /* PCICOE3  */
> +#define OCCR_PCICOE4 0x08000000 /* PCICOE4  */
> +#define OCCR_PCICOE5 0x04000000 /* PCICOE5  */
> +#define OCCR_PCICOE6 0x02000000 /* PCICOE6  */
> +#define OCCR_PCICOE7 0x01000000 /* PCICOE7  */
> +#define OCCR_PCICD0  0x00800000 /* PCICD0  */
> +#define OCCR_PCICD1  0x00400000 /* PCICD1  */
> +#define OCCR_PCICD2  0x00200000 /* PCICD2  */
> +#define OCCR_PCICD3  0x00100000 /* PCICD3  */
> +#define OCCR_PCICD4  0x00080000 /* PCICD4  */
> +#define OCCR_PCICD5  0x00040000 /* PCICD5  */
> +#define OCCR_PCICD6  0x00020000 /* PCICD6  */
> +#define OCCR_PCICD7  0x00010000 /* PCICD7  */
> +#define OCCR_PCI1CR  0x00000002 /* PCI1CR  */
> +#define OCCR_PCI2CR  0x00000001 /* PCI2CR  */
> +
> +#define SCCR_TSEC1CM  0xc0000000 /* TSEC1CM  */
> +#define SCCR_TSEC1CM_SHIFT 30
> +#define SCCR_TSEC2CM  0x30000000 /* TSEC2CM  */
> +#define SCCR_TSEC2CM_SHIFT 28
> +#define SCCR_ENCCM    0x03000000 /* ENCCM  */
> +#define SCCR_ENCCM_SHIFT 24
> +#define SCCR_USBMPHCM 0x00c00000 /* USBMPHCM  */
> +#define SCCR_USBMPHCM_SHIFT 22
> +#define SCCR_USBDRCM  0x00300000 /* USBDRCM  */
> +#define SCCR_USBDRCM_SHIFT 20
> +#define SCCR_PCICM    0x00010000 /* PCICM  */
>
>  /*
>   * Sequencer
> diff --git a/arch/ppc/syslib/ppc83xx_setup.c b/arch/ppc/syslib/ 
> ppc83xx_setup.c
> --- a/arch/ppc/syslib/ppc83xx_setup.c
> +++ b/arch/ppc/syslib/ppc83xx_setup.c
> @@ -221,6 +221,7 @@ mpc83xx_setup_pci1(struct pci_controller
>      iounmap(ios);
>  }
>
> +#ifdef CONFIG_MPC83xx_PCI2
>  void __init
>  mpc83xx_setup_pci2(struct pci_controller *hose)
>  {
> @@ -278,8 +279,11 @@ mpc83xx_setup_pci2(struct pci_controller
>      iounmap(pci_ctrl);
>      iounmap(ios);
>  }
> +#endif
>
>  /*
> + * NOTICE for the MPC83xx SYS Freescale evaluation board:
> + *
>   * PCI buses can be enabled only if SYS board combinates with PIB
>   * (Platform IO Board) board which provide 3 PCI slots. There is 2  
> PCI buses
>   * and 3 PCI slots, so people must configure the routes between  
> them before
> @@ -287,10 +291,6 @@ mpc83xx_setup_pci2(struct pci_controller
>   * can be accessed via I2C bus 2 and are configured by firmware.  
> Refer to
>   * Freescale to get more information about firmware configuration.
>   */
> -
> -extern int mpc83xx_exclude_device(u_char bus, u_char devfn);
> -extern int mpc83xx_map_irq(struct pci_dev *dev, unsigned char idsel,
> -        unsigned char pin);
>  void __init
>  mpc83xx_setup_hose(void)
>  {
> @@ -306,22 +306,46 @@ mpc83xx_setup_hose(void)
>              sizeof(immr_clk_t));
>
>      /*
> -     * Configure PCI controller and PCI_CLK_OUTPUT both in 66M mode
> +     * Configure PCI_CLK_OUTPUT
>       */
>      val32 = clk->occr;
>      udelay(2000);
> -    clk->occr = 0xff000000;
> +
> +#ifdef CONFIG_TQM834x

Is the following comment 100% correct?  I'm not sure I follow the  
STK85xx reference.

> +    /*
> +     * WARNING! only PCI_CLK_OUTPUT1 is enabled for the TQM834x as  
> this is
> +     * the one line actually used for clocking all external PCI  
> devices in
> +     * current setup of the STK85xx.  Enabling other  
> PCI_CLK_OUTPUT lines
> +     * may lead to board's hang for unknown reasons - particularly
> +     * PCI_CLK_OUTPUT6 and PCI_CLK_OUTPUT7 are known to hang the  
> board;
> +     * this issue is under investigation (18 oct 05)
> +     */
> +    val32 = OCCR_PCICOE1;
> +#else
> +    /* enable all PCI_CLK_OUTs */
> +    val32 = (OCCR_PCICOE0 | OCCR_PCICOE1 | OCCR_PCICOE2 |  
> OCCR_PCICOE3 \
> +         | OCCR_PCICOE4 | OCCR_PCICOE5 | OCCR_PCICOE6 |  
> OCCR_PCICOE7);
> +#endif
> +    /* set frequency of the PCI and clock outputs for external  
> devicesc
> +     * according to system clocking settings */
> +    if (clk->spmr & SPMR_CKID) {
> +        /* PCI Clock is 1/2 of CONFIG_83XX_CLKIN so need to set up  
> OCCR
> +         * fields accordingly */
> +        val32 |= (OCCR_PCI1CR | OCCR_PCI2CR);
> +
> +        val32 |= (OCCR_PCICD0 | OCCR_PCICD1 | OCCR_PCICD2 \
> +              | OCCR_PCICD3 | OCCR_PCICD4 | OCCR_PCICD5 \
> +              | OCCR_PCICD6 | OCCR_PCICD7);
> +    }
> +
> +    clk->occr = val32;
>      udelay(2000);
> -
>      iounmap(clk);
>
>      hose1 = pcibios_alloc_controller();
>      if(!hose1)
>          return;
>
> -    ppc_md.pci_swizzle = common_swizzle;
> -    ppc_md.pci_map_irq = mpc83xx_map_irq;
> -
>      hose1->bus_offset = 0;
>      hose1->first_busno = 0;
>      hose1->last_busno = 0xff;
> @@ -357,7 +381,6 @@ mpc83xx_setup_hose(void)
>              MPC83xx_PCI1_UPPER_MEM,
>              IORESOURCE_MEM, "PCI host bridge 1");
>
> -    ppc_md.pci_exclude_device = mpc83xx_exclude_device;
>      hose1->last_busno = pciauto_bus_scan(hose1, hose1->first_busno);
>
>  #ifdef CONFIG_MPC83xx_PCI2
> @@ -395,4 +418,38 @@ mpc83xx_setup_hose(void)
>      hose2->last_busno = pciauto_bus_scan(hose2, hose2->first_busno);
>  #endif /* CONFIG_MPC83xx_PCI2 */
>  }
> +
> +
> +void __init
> +mpc834x_pcibios_fixup(void)
> +{
> +    struct pci_dev *dev = NULL;
> +    unsigned int class;
> +    int i;
> +
> +    if ((dev = pci_find_device(PCI_VENDOR_ID_FREESCALE,
> +                   PCI_DEVICE_ID_FREESCALE_MPC8349E, NULL))) {
> +        class = dev->class >> 8;
> +        if (class == PCI_CLASS_BRIDGE_OTHER) {
> +            /*
> +             * at least rev 1.1 of the MPC8349E chip has the class
> +             * wrongly set in the host/PCI bridge config space
> +             * register; this leads to the host/PCI bridge being
> +             * treated as a regular client device, trying to assign
> +             * PCI resources to it etc.
> +             *
> +             */
> +            dev->class = (PCI_CLASS_BRIDGE_HOST << 8) & ~0xf;
> +
> +            /* for some odd reasons the host/PCI bridge behaves
> +             * like an agent device and would claim PCI mem/io/irq
> +             * resources, so we make these resources inactive (i.e.
> +             * the bridge will not claim resources from itself)
> +             */
> +            for (i = 0; i < DEVICE_COUNT_RESOURCE; i++)
> +                dev->resource[i].flags = IORESOURCE_UNSET;
> +        }
> +    }
> +
> +}
>  #endif /*CONFIG_PCI*/
> diff --git a/arch/ppc/syslib/ppc83xx_setup.h b/arch/ppc/syslib/ 
> ppc83xx_setup.h
> --- a/arch/ppc/syslib/ppc83xx_setup.h
> +++ b/arch/ppc/syslib/ppc83xx_setup.h
> @@ -36,6 +36,7 @@ extern void mpc83xx_restart(char *cmd);
>  extern void mpc83xx_power_off(void);
>  extern void mpc83xx_halt(void);
>  extern void mpc83xx_setup_hose(void) __init;
> +extern void mpc834x_pcibios_fixup(void);
>
>  /* PCI config */
>  #define PCI1_CFG_ADDR_OFFSET (0x8300)
> diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
> --- a/include/linux/pci_ids.h
> +++ b/include/linux/pci_ids.h
> @@ -2278,6 +2278,16 @@
>  #define PCI_VENDOR_ID_TDI               0x192E
>  #define PCI_DEVICE_ID_TDI_EHCI          0x0101
>
> +#define PCI_VENDOR_ID_FREESCALE            0x1957
> +#define PCI_DEVICE_ID_FREESCALE_MPC8349E    0x0080
> +#define PCI_DEVICE_ID_FREESCALE_MPC8349        0x0081
> +#define PCI_DEVICE_ID_FREESCALE_MPC8347E_1    0x0082
> +#define PCI_DEVICE_ID_FREESCALE_MPC8347_1    0x0083
> +#define PCI_DEVICE_ID_FREESCALE_MPC8347E_2    0x0084
> +#define PCI_DEVICE_ID_FREESCALE_MPC8347_2    0x0085
> +#define PCI_DEVICE_ID_FREESCALE_MPC8343E    0x0086
> +#define PCI_DEVICE_ID_FREESCALE_MPC8343        0x0087
> +
>  #define PCI_VENDOR_ID_SYMPHONY        0x1c1c
>  #define PCI_DEVICE_ID_SYMPHONY_101    0x0001
>
>
>
> !-------------------------------------------------------------flip-
>
>
>
> Best regards,
>
> Wolfgang Denk
>
> -- 
> Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
> Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
> The first 90% of a project takes 90% of the time, the last 10%  takes
> the other 90% of the time.
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-dev
>

^ permalink raw reply

* Re: [Patch] Add support for TQM834x Boards
From: Kumar Gala @ 2005-10-24 15:16 UTC (permalink / raw)
  To: Wolfgang Denk; +Cc: linuxppc-dev
In-Reply-To: <20051022220612.7F2F3353D84@atlas.denx.de>

Wolfgang,

Will you or Marian being maintaining this board family going forward?

Also, you need to split out the MTD portion and submit that to the  
MTD maintainer separately.

The only other comment is that tqm834x_show_cpuinfo() might want to  
be updated the vendor info.

Otherwise, once the I2C DS1337 patch is ack'd I'll push this upstream.

- kumar

On Oct 22, 2005, at 5:06 PM, Wolfgang Denk wrote:

> The following patch (against latest 2.6 tree) adds support for the TQ
> Systems TQM834x Boards. Verified on TQM8349L.
>
> Note: for TQM834x board support actually to  compile  and  work,  two
> previously submitted patches are required. See postings:
>
> Sat, 22 Oct 2005   [PATCH 2.6] Add generic support for DS1377 RTC
> Sat, 22 Oct 2005   [PATCH] Cleanup mpc83xx_restart() code
>
>
> ---
> Add support for TQM834x boards.
>
> Signed-off-by: Marian Balakowicz <m8@semihalf.com>
> Signed-off-by: Wolfgang Denk <wd@denx.de>
>
> ---
>
>  arch/ppc/Kconfig                   |   11
>  arch/ppc/configs/TQM834x_defconfig |  819 +++++++++++++++++++++++++ 
> +++++++++++
>  arch/ppc/platforms/83xx/Makefile   |    1
>  arch/ppc/platforms/83xx/tqm834x.c  |  336 +++++++++++++++
>  arch/ppc/platforms/83xx/tqm834x.h  |   40 ++
>  drivers/mtd/maps/Kconfig           |    8
>  drivers/mtd/maps/Makefile          |    1
>  drivers/mtd/maps/tqm834x.c         |  298 +++++++++++++
>  include/asm-ppc/mpc83xx.h          |    4
>  9 files changed, 1516 insertions(+), 2 deletions(-)
>
> diff --git a/arch/ppc/Kconfig b/arch/ppc/Kconfig
> --- a/arch/ppc/Kconfig
> +++ b/arch/ppc/Kconfig
> @@ -690,6 +690,12 @@ config EV64360
>      help
>        Select EV64360 if configuring a Marvell EV64360BP Evaluation
>        platform.
> +
> +config TQM834x
> +    bool "TQM834x"
> +    help
> +      This option enables support for the TQM834x boards from TQ
> +      Components.
>  endchoice
>
>  config PQ2ADS
> @@ -730,11 +736,11 @@ config 8272
>
>  config 83xx
>      bool
> -    default y if MPC834x_SYS
> +    default y if MPC834x_SYS || TQM834x
>
>  config MPC834x
>      bool
> -    default y if MPC834x_SYS
> +    default y if MPC834x_SYS || TQM834x
>
>  config CPM2
>      bool
> @@ -1170,6 +1176,7 @@ config PCI_DOMAINS
>  config MPC83xx_PCI2
>      bool "  Supprt for 2nd PCI host controller"
>      depends on PCI && MPC834x
> +    depends on !TQM834x
>      default y if MPC834x_SYS
>
>  config PCI_QSPAN
> diff --git a/arch/ppc/configs/TQM834x_defconfig b/arch/ppc/configs/ 
> TQM834x_defconfig
> new file mode 100644
> --- /dev/null
> +++ b/arch/ppc/configs/TQM834x_defconfig
> @@ -0,0 +1,819 @@
> +#
> +# Automatically generated make config: don't edit
> +# Linux kernel version: 2.6.14-rc4
> +# Mon Oct 17 17:22:19 2005
> +#
> +CONFIG_MMU=y
> +CONFIG_GENERIC_HARDIRQS=y
> +CONFIG_RWSEM_XCHGADD_ALGORITHM=y
> +CONFIG_GENERIC_CALIBRATE_DELAY=y
> +CONFIG_PPC=y
> +CONFIG_PPC32=y
> +CONFIG_GENERIC_NVRAM=y
> +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
> +CONFIG_ARCH_MAY_HAVE_PC_FDC=y
> +
> +#
> +# Code maturity level options
> +#
> +CONFIG_EXPERIMENTAL=y
> +CONFIG_CLEAN_COMPILE=y
> +CONFIG_BROKEN_ON_SMP=y
> +CONFIG_INIT_ENV_ARG_LIMIT=32
> +
> +#
> +# General setup
> +#
> +CONFIG_LOCALVERSION=""
> +CONFIG_LOCALVERSION_AUTO=y
> +CONFIG_SWAP=y
> +CONFIG_SYSVIPC=y
> +# CONFIG_POSIX_MQUEUE is not set
> +# CONFIG_BSD_PROCESS_ACCT is not set
> +CONFIG_SYSCTL=y
> +# CONFIG_AUDIT is not set
> +# CONFIG_HOTPLUG is not set
> +CONFIG_KOBJECT_UEVENT=y
> +# CONFIG_IKCONFIG is not set
> +CONFIG_INITRAMFS_SOURCE=""
> +CONFIG_EMBEDDED=y
> +# CONFIG_KALLSYMS is not set
> +CONFIG_PRINTK=y
> +CONFIG_BUG=y
> +CONFIG_BASE_FULL=y
> +CONFIG_FUTEX=y
> +# CONFIG_EPOLL is not set
> +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
> +CONFIG_SHMEM=y
> +CONFIG_CC_ALIGN_FUNCTIONS=0
> +CONFIG_CC_ALIGN_LABELS=0
> +CONFIG_CC_ALIGN_LOOPS=0
> +CONFIG_CC_ALIGN_JUMPS=0
> +# CONFIG_TINY_SHMEM is not set
> +CONFIG_BASE_SMALL=0
> +
> +#
> +# Loadable module support
> +#
> +# CONFIG_MODULES is not set
> +
> +#
> +# Processor
> +#
> +CONFIG_6xx=y
> +# CONFIG_40x is not set
> +# CONFIG_44x is not set
> +# CONFIG_POWER3 is not set
> +# CONFIG_POWER4 is not set
> +# CONFIG_8xx is not set
> +# CONFIG_E200 is not set
> +# CONFIG_E500 is not set
> +CONFIG_PPC_FPU=y
> +# CONFIG_KEXEC is not set
> +# CONFIG_CPU_FREQ is not set
> +# CONFIG_WANT_EARLY_SERIAL is not set
> +CONFIG_PPC_GEN550=y
> +CONFIG_PPC_STD_MMU=y
> +
> +#
> +# Platform options
> +#
> +# CONFIG_PPC_MULTIPLATFORM is not set
> +# CONFIG_APUS is not set
> +# CONFIG_KATANA is not set
> +# CONFIG_WILLOW is not set
> +# CONFIG_CPCI690 is not set
> +# CONFIG_POWERPMC250 is not set
> +# CONFIG_CHESTNUT is not set
> +# CONFIG_SPRUCE is not set
> +# CONFIG_HDPU is not set
> +# CONFIG_EV64260 is not set
> +# CONFIG_LOPEC is not set
> +# CONFIG_MVME5100 is not set
> +# CONFIG_PPLUS is not set
> +# CONFIG_PRPMC750 is not set
> +# CONFIG_PRPMC800 is not set
> +# CONFIG_SANDPOINT is not set
> +# CONFIG_RADSTONE_PPC7D is not set
> +# CONFIG_PAL4 is not set
> +# CONFIG_GEMINI is not set
> +# CONFIG_EST8260 is not set
> +# CONFIG_SBC82xx is not set
> +# CONFIG_SBS8260 is not set
> +# CONFIG_RPX8260 is not set
> +# CONFIG_TQM8260 is not set
> +# CONFIG_ADS8272 is not set
> +# CONFIG_PQ2FADS is not set
> +# CONFIG_LITE5200 is not set
> +# CONFIG_MPC834x_SYS is not set
> +# CONFIG_EV64360 is not set
> +CONFIG_TQM834x=y
> +CONFIG_83xx=y
> +CONFIG_MPC834x=y
> +# CONFIG_SMP is not set
> +# CONFIG_HIGHMEM is not set
> +# CONFIG_HZ_100 is not set
> +CONFIG_HZ_250=y
> +# CONFIG_HZ_1000 is not set
> +CONFIG_HZ=250
> +CONFIG_PREEMPT_NONE=y
> +# CONFIG_PREEMPT_VOLUNTARY is not set
> +# CONFIG_PREEMPT is not set
> +CONFIG_SELECT_MEMORY_MODEL=y
> +CONFIG_FLATMEM_MANUAL=y
> +# CONFIG_DISCONTIGMEM_MANUAL is not set
> +# CONFIG_SPARSEMEM_MANUAL is not set
> +CONFIG_FLATMEM=y
> +CONFIG_FLAT_NODE_MEM_MAP=y
> +# CONFIG_SPARSEMEM_STATIC is not set
> +CONFIG_BINFMT_ELF=y
> +# CONFIG_BINFMT_MISC is not set
> +# CONFIG_CMDLINE_BOOL is not set
> +# CONFIG_PM is not set
> +# CONFIG_SOFTWARE_SUSPEND is not set
> +CONFIG_SECCOMP=y
> +CONFIG_ISA_DMA_API=y
> +
> +#
> +# Bus options
> +#
> +CONFIG_GENERIC_ISA_DMA=y
> +# CONFIG_PCI is not set
> +# CONFIG_PCI_DOMAINS is not set
> +
> +#
> +# PCCARD (PCMCIA/CardBus) support
> +#
> +# CONFIG_PCCARD is not set
> +
> +#
> +# Advanced setup
> +#
> +# CONFIG_ADVANCED_OPTIONS is not set
> +
> +#
> +# Default settings for advanced configuration options are used
> +#
> +CONFIG_HIGHMEM_START=0xfe000000
> +CONFIG_LOWMEM_SIZE=0x30000000
> +CONFIG_KERNEL_START=0xc0000000
> +CONFIG_TASK_SIZE=0x80000000
> +CONFIG_BOOT_LOAD=0x00800000
> +
> +#
> +# Networking
> +#
> +CONFIG_NET=y
> +
> +#
> +# Networking options
> +#
> +CONFIG_PACKET=y
> +# CONFIG_PACKET_MMAP is not set
> +CONFIG_UNIX=y
> +# CONFIG_NET_KEY is not set
> +CONFIG_INET=y
> +CONFIG_IP_MULTICAST=y
> +# CONFIG_IP_ADVANCED_ROUTER is not set
> +CONFIG_IP_FIB_HASH=y
> +CONFIG_IP_PNP=y
> +CONFIG_IP_PNP_DHCP=y
> +CONFIG_IP_PNP_BOOTP=y
> +# CONFIG_IP_PNP_RARP is not set
> +# CONFIG_NET_IPIP is not set
> +# CONFIG_NET_IPGRE is not set
> +# CONFIG_IP_MROUTE is not set
> +# CONFIG_ARPD is not set
> +CONFIG_SYN_COOKIES=y
> +# CONFIG_INET_AH is not set
> +# CONFIG_INET_ESP is not set
> +# CONFIG_INET_IPCOMP is not set
> +# CONFIG_INET_TUNNEL is not set
> +CONFIG_INET_DIAG=y
> +CONFIG_INET_TCP_DIAG=y
> +# CONFIG_TCP_CONG_ADVANCED is not set
> +CONFIG_TCP_CONG_BIC=y
> +# CONFIG_IPV6 is not set
> +# CONFIG_NETFILTER is not set
> +
> +#
> +# DCCP Configuration (EXPERIMENTAL)
> +#
> +# CONFIG_IP_DCCP is not set
> +
> +#
> +# SCTP Configuration (EXPERIMENTAL)
> +#
> +# CONFIG_IP_SCTP is not set
> +# CONFIG_ATM is not set
> +# CONFIG_BRIDGE is not set
> +# CONFIG_VLAN_8021Q is not set
> +# CONFIG_DECNET is not set
> +# CONFIG_LLC2 is not set
> +# CONFIG_IPX is not set
> +# CONFIG_ATALK is not set
> +# CONFIG_X25 is not set
> +# CONFIG_LAPB is not set
> +# CONFIG_NET_DIVERT is not set
> +# CONFIG_ECONET is not set
> +# CONFIG_WAN_ROUTER is not set
> +# CONFIG_NET_SCHED is not set
> +# CONFIG_NET_CLS_ROUTE is not set
> +
> +#
> +# Network testing
> +#
> +# CONFIG_NET_PKTGEN is not set
> +# CONFIG_HAMRADIO is not set
> +# CONFIG_IRDA is not set
> +# CONFIG_BT is not set
> +# CONFIG_IEEE80211 is not set
> +
> +#
> +# Device Drivers
> +#
> +
> +#
> +# Generic Driver Options
> +#
> +CONFIG_STANDALONE=y
> +CONFIG_PREVENT_FIRMWARE_BUILD=y
> +# CONFIG_FW_LOADER is not set
> +
> +#
> +# Connector - unified userspace <-> kernelspace linker
> +#
> +# CONFIG_CONNECTOR is not set
> +
> +#
> +# Memory Technology Devices (MTD)
> +#
> +CONFIG_MTD=y
> +# CONFIG_MTD_DEBUG is not set
> +# CONFIG_MTD_CONCAT is not set
> +CONFIG_MTD_PARTITIONS=y
> +# CONFIG_MTD_REDBOOT_PARTS is not set
> +CONFIG_MTD_CMDLINE_PARTS=y
> +
> +#
> +# User Modules And Translation Layers
> +#
> +CONFIG_MTD_CHAR=y
> +CONFIG_MTD_BLOCK=y
> +# CONFIG_FTL is not set
> +# CONFIG_NFTL is not set
> +# CONFIG_INFTL is not set
> +
> +#
> +# RAM/ROM/Flash chip drivers
> +#
> +CONFIG_MTD_CFI=y
> +# CONFIG_MTD_JEDECPROBE is not set
> +CONFIG_MTD_GEN_PROBE=y
> +CONFIG_MTD_CFI_ADV_OPTIONS=y
> +CONFIG_MTD_CFI_NOSWAP=y
> +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
> +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
> +CONFIG_MTD_CFI_GEOMETRY=y
> +# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
> +# CONFIG_MTD_MAP_BANK_WIDTH_2 is not set
> +CONFIG_MTD_MAP_BANK_WIDTH_4=y
> +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
> +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
> +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
> +# CONFIG_MTD_CFI_I1 is not set
> +CONFIG_MTD_CFI_I2=y
> +# CONFIG_MTD_CFI_I4 is not set
> +# CONFIG_MTD_CFI_I8 is not set
> +# CONFIG_MTD_OTP is not set
> +# CONFIG_MTD_CFI_INTELEXT is not set
> +CONFIG_MTD_CFI_AMDSTD=y
> +CONFIG_MTD_CFI_AMDSTD_RETRY=0
> +# CONFIG_MTD_CFI_STAA is not set
> +CONFIG_MTD_CFI_UTIL=y
> +# CONFIG_MTD_RAM is not set
> +# CONFIG_MTD_ROM is not set
> +# CONFIG_MTD_ABSENT is not set
> +
> +#
> +# Mapping drivers for chip access
> +#
> +# CONFIG_MTD_COMPLEX_MAPPINGS is not set
> +# CONFIG_MTD_PHYSMAP is not set
> +CONFIG_MTD_TQM834x=y
> +# CONFIG_MTD_PLATRAM is not set
> +
> +#
> +# Self-contained MTD device drivers
> +#
> +# CONFIG_MTD_SLRAM is not set
> +# CONFIG_MTD_PHRAM is not set
> +# CONFIG_MTD_MTDRAM is not set
> +# CONFIG_MTD_BLKMTD is not set
> +# CONFIG_MTD_BLOCK2MTD is not set
> +
> +#
> +# Disk-On-Chip Device Drivers
> +#
> +# CONFIG_MTD_DOC2000 is not set
> +# CONFIG_MTD_DOC2001 is not set
> +# CONFIG_MTD_DOC2001PLUS is not set
> +
> +#
> +# NAND Flash Device Drivers
> +#
> +# CONFIG_MTD_NAND is not set
> +
> +#
> +# Parallel port support
> +#
> +# CONFIG_PARPORT is not set
> +
> +#
> +# Plug and Play support
> +#
> +
> +#
> +# Block devices
> +#
> +# CONFIG_BLK_DEV_FD is not set
> +# CONFIG_BLK_DEV_COW_COMMON is not set
> +CONFIG_BLK_DEV_LOOP=y
> +# CONFIG_BLK_DEV_CRYPTOLOOP is not set
> +# CONFIG_BLK_DEV_NBD is not set
> +CONFIG_BLK_DEV_RAM=y
> +CONFIG_BLK_DEV_RAM_COUNT=16
> +CONFIG_BLK_DEV_RAM_SIZE=32768
> +CONFIG_BLK_DEV_INITRD=y
> +# CONFIG_LBD is not set
> +# CONFIG_CDROM_PKTCDVD is not set
> +
> +#
> +# IO Schedulers
> +#
> +CONFIG_IOSCHED_NOOP=y
> +CONFIG_IOSCHED_AS=y
> +CONFIG_IOSCHED_DEADLINE=y
> +CONFIG_IOSCHED_CFQ=y
> +# CONFIG_ATA_OVER_ETH is not set
> +
> +#
> +# ATA/ATAPI/MFM/RLL support
> +#
> +# CONFIG_IDE is not set
> +
> +#
> +# SCSI device support
> +#
> +# CONFIG_RAID_ATTRS is not set
> +# CONFIG_SCSI is not set
> +
> +#
> +# Multi-device support (RAID and LVM)
> +#
> +# CONFIG_MD is not set
> +
> +#
> +# Fusion MPT device support
> +#
> +# CONFIG_FUSION is not set
> +
> +#
> +# IEEE 1394 (FireWire) support
> +#
> +
> +#
> +# I2O device support
> +#
> +
> +#
> +# Macintosh device drivers
> +#
> +
> +#
> +# Network device support
> +#
> +CONFIG_NETDEVICES=y
> +# CONFIG_DUMMY is not set
> +# CONFIG_BONDING is not set
> +# CONFIG_EQUALIZER is not set
> +# CONFIG_TUN is not set
> +
> +#
> +# PHY device support
> +#
> +# CONFIG_PHYLIB is not set
> +
> +#
> +# Ethernet (10 or 100Mbit)
> +#
> +CONFIG_NET_ETHERNET=y
> +CONFIG_MII=y
> +
> +#
> +# Ethernet (1000 Mbit)
> +#
> +CONFIG_GIANFAR=y
> +# CONFIG_GFAR_NAPI is not set
> +
> +#
> +# Ethernet (10000 Mbit)
> +#
> +
> +#
> +# Token Ring devices
> +#
> +
> +#
> +# Wireless LAN (non-hamradio)
> +#
> +# CONFIG_NET_RADIO is not set
> +
> +#
> +# Wan interfaces
> +#
> +# CONFIG_WAN is not set
> +# CONFIG_PPP is not set
> +# CONFIG_SLIP is not set
> +# CONFIG_SHAPER is not set
> +# CONFIG_NETCONSOLE is not set
> +# CONFIG_NETPOLL is not set
> +# CONFIG_NET_POLL_CONTROLLER is not set
> +
> +#
> +# ISDN subsystem
> +#
> +# CONFIG_ISDN is not set
> +
> +#
> +# Telephony Support
> +#
> +# CONFIG_PHONE is not set
> +
> +#
> +# Input device support
> +#
> +CONFIG_INPUT=y
> +
> +#
> +# Userland interfaces
> +#
> +# CONFIG_INPUT_MOUSEDEV is not set
> +# CONFIG_INPUT_JOYDEV is not set
> +# CONFIG_INPUT_TSDEV is not set
> +# CONFIG_INPUT_EVDEV is not set
> +# CONFIG_INPUT_EVBUG is not set
> +
> +#
> +# Input Device Drivers
> +#
> +# CONFIG_INPUT_KEYBOARD is not set
> +# CONFIG_INPUT_MOUSE is not set
> +# CONFIG_INPUT_JOYSTICK is not set
> +# CONFIG_INPUT_TOUCHSCREEN is not set
> +# CONFIG_INPUT_MISC is not set
> +
> +#
> +# Hardware I/O ports
> +#
> +# CONFIG_SERIO is not set
> +# CONFIG_GAMEPORT is not set
> +
> +#
> +# Character devices
> +#
> +# CONFIG_VT is not set
> +# CONFIG_SERIAL_NONSTANDARD is not set
> +
> +#
> +# Serial drivers
> +#
> +CONFIG_SERIAL_8250=y
> +CONFIG_SERIAL_8250_CONSOLE=y
> +CONFIG_SERIAL_8250_NR_UARTS=4
> +# CONFIG_SERIAL_8250_EXTENDED is not set
> +
> +#
> +# Non-8250 serial port support
> +#
> +CONFIG_SERIAL_CORE=y
> +CONFIG_SERIAL_CORE_CONSOLE=y
> +CONFIG_UNIX98_PTYS=y
> +CONFIG_LEGACY_PTYS=y
> +CONFIG_LEGACY_PTY_COUNT=256
> +
> +#
> +# IPMI
> +#
> +# CONFIG_IPMI_HANDLER is not set
> +
> +#
> +# Watchdog Cards
> +#
> +# CONFIG_WATCHDOG is not set
> +# CONFIG_NVRAM is not set
> +CONFIG_GEN_RTC=y
> +# CONFIG_GEN_RTC_X is not set
> +# CONFIG_DTLK is not set
> +# CONFIG_R3964 is not set
> +
> +#
> +# Ftape, the floppy tape device driver
> +#
> +# CONFIG_AGP is not set
> +# CONFIG_RAW_DRIVER is not set
> +
> +#
> +# TPM devices
> +#
> +
> +#
> +# I2C support
> +#
> +CONFIG_I2C=y
> +CONFIG_I2C_CHARDEV=y
> +
> +#
> +# I2C Algorithms
> +#
> +# CONFIG_I2C_ALGOBIT is not set
> +# CONFIG_I2C_ALGOPCF is not set
> +# CONFIG_I2C_ALGOPCA is not set
> +
> +#
> +# I2C Hardware Bus support
> +#
> +CONFIG_I2C_MPC=y
> +# CONFIG_I2C_PARPORT_LIGHT is not set
> +# CONFIG_I2C_PCA_ISA is not set
> +
> +#
> +# Miscellaneous I2C Chip support
> +#
> +CONFIG_SENSORS_DS1337=y
> +# CONFIG_SENSORS_DS1374 is not set
> +# CONFIG_SENSORS_EEPROM is not set
> +# CONFIG_SENSORS_PCF8574 is not set
> +# CONFIG_SENSORS_PCA9539 is not set
> +# CONFIG_SENSORS_PCF8591 is not set
> +# CONFIG_SENSORS_RTC8564 is not set
> +# CONFIG_SENSORS_M41T00 is not set
> +# CONFIG_SENSORS_MAX6875 is not set
> +# CONFIG_I2C_DEBUG_CORE is not set
> +# CONFIG_I2C_DEBUG_ALGO is not set
> +# CONFIG_I2C_DEBUG_BUS is not set
> +# CONFIG_I2C_DEBUG_CHIP is not set
> +
> +#
> +# Dallas's 1-wire bus
> +#
> +# CONFIG_W1 is not set
> +
> +#
> +# Hardware Monitoring support
> +#
> +CONFIG_HWMON=y
> +# CONFIG_HWMON_VID is not set
> +# CONFIG_SENSORS_ADM1021 is not set
> +# CONFIG_SENSORS_ADM1025 is not set
> +# CONFIG_SENSORS_ADM1026 is not set
> +# CONFIG_SENSORS_ADM1031 is not set
> +# CONFIG_SENSORS_ADM9240 is not set
> +# CONFIG_SENSORS_ASB100 is not set
> +# CONFIG_SENSORS_ATXP1 is not set
> +# CONFIG_SENSORS_DS1621 is not set
> +# CONFIG_SENSORS_FSCHER is not set
> +# CONFIG_SENSORS_FSCPOS is not set
> +# CONFIG_SENSORS_GL518SM is not set
> +# CONFIG_SENSORS_GL520SM is not set
> +# CONFIG_SENSORS_IT87 is not set
> +# CONFIG_SENSORS_LM63 is not set
> +CONFIG_SENSORS_LM75=y
> +# CONFIG_SENSORS_LM77 is not set
> +# CONFIG_SENSORS_LM78 is not set
> +# CONFIG_SENSORS_LM80 is not set
> +# CONFIG_SENSORS_LM83 is not set
> +# CONFIG_SENSORS_LM85 is not set
> +# CONFIG_SENSORS_LM87 is not set
> +# CONFIG_SENSORS_LM90 is not set
> +# CONFIG_SENSORS_LM92 is not set
> +# CONFIG_SENSORS_MAX1619 is not set
> +# CONFIG_SENSORS_PC87360 is not set
> +# CONFIG_SENSORS_SMSC47M1 is not set
> +# CONFIG_SENSORS_SMSC47B397 is not set
> +# CONFIG_SENSORS_W83781D is not set
> +# CONFIG_SENSORS_W83792D is not set
> +# CONFIG_SENSORS_W83L785TS is not set
> +# CONFIG_SENSORS_W83627HF is not set
> +# CONFIG_SENSORS_W83627EHF is not set
> +# CONFIG_HWMON_DEBUG_CHIP is not set
> +
> +#
> +# Misc devices
> +#
> +
> +#
> +# Multimedia Capabilities Port drivers
> +#
> +
> +#
> +# Multimedia devices
> +#
> +# CONFIG_VIDEO_DEV is not set
> +
> +#
> +# Digital Video Broadcasting Devices
> +#
> +# CONFIG_DVB is not set
> +
> +#
> +# Graphics support
> +#
> +# CONFIG_FB is not set
> +
> +#
> +# Sound
> +#
> +# CONFIG_SOUND is not set
> +
> +#
> +# USB support
> +#
> +# CONFIG_USB_ARCH_HAS_HCD is not set
> +# CONFIG_USB_ARCH_HAS_OHCI is not set
> +
> +#
> +# USB Gadget Support
> +#
> +# CONFIG_USB_GADGET is not set
> +
> +#
> +# MMC/SD Card support
> +#
> +# CONFIG_MMC is not set
> +
> +#
> +# InfiniBand support
> +#
> +
> +#
> +# SN Devices
> +#
> +
> +#
> +# File systems
> +#
> +CONFIG_EXT2_FS=y
> +# CONFIG_EXT2_FS_XATTR is not set
> +# CONFIG_EXT2_FS_XIP is not set
> +CONFIG_EXT3_FS=y
> +CONFIG_EXT3_FS_XATTR=y
> +# CONFIG_EXT3_FS_POSIX_ACL is not set
> +# CONFIG_EXT3_FS_SECURITY is not set
> +CONFIG_JBD=y
> +# CONFIG_JBD_DEBUG is not set
> +CONFIG_FS_MBCACHE=y
> +# CONFIG_REISERFS_FS is not set
> +# CONFIG_JFS_FS is not set
> +# CONFIG_FS_POSIX_ACL is not set
> +# CONFIG_XFS_FS is not set
> +# CONFIG_MINIX_FS is not set
> +# CONFIG_ROMFS_FS is not set
> +CONFIG_INOTIFY=y
> +# CONFIG_QUOTA is not set
> +CONFIG_DNOTIFY=y
> +# CONFIG_AUTOFS_FS is not set
> +# CONFIG_AUTOFS4_FS is not set
> +# CONFIG_FUSE_FS is not set
> +
> +#
> +# CD-ROM/DVD Filesystems
> +#
> +# CONFIG_ISO9660_FS is not set
> +# CONFIG_UDF_FS is not set
> +
> +#
> +# DOS/FAT/NT Filesystems
> +#
> +# CONFIG_MSDOS_FS is not set
> +# CONFIG_VFAT_FS is not set
> +# CONFIG_NTFS_FS is not set
> +
> +#
> +# Pseudo filesystems
> +#
> +CONFIG_PROC_FS=y
> +CONFIG_PROC_KCORE=y
> +CONFIG_SYSFS=y
> +CONFIG_TMPFS=y
> +# CONFIG_HUGETLB_PAGE is not set
> +CONFIG_RAMFS=y
> +# CONFIG_RELAYFS_FS is not set
> +
> +#
> +# Miscellaneous filesystems
> +#
> +# CONFIG_ADFS_FS is not set
> +# CONFIG_AFFS_FS is not set
> +# CONFIG_HFS_FS is not set
> +# CONFIG_HFSPLUS_FS is not set
> +# CONFIG_BEFS_FS is not set
> +# CONFIG_BFS_FS is not set
> +# CONFIG_EFS_FS is not set
> +# CONFIG_JFFS_FS is not set
> +CONFIG_JFFS2_FS=y
> +CONFIG_JFFS2_FS_DEBUG=0
> +CONFIG_JFFS2_FS_WRITEBUFFER=y
> +CONFIG_JFFS2_COMPRESSION_OPTIONS=y
> +CONFIG_JFFS2_ZLIB=y
> +CONFIG_JFFS2_RTIME=y
> +CONFIG_JFFS2_RUBIN=y
> +# CONFIG_JFFS2_CMODE_NONE is not set
> +CONFIG_JFFS2_CMODE_PRIORITY=y
> +# CONFIG_JFFS2_CMODE_SIZE is not set
> +# CONFIG_CRAMFS is not set
> +# CONFIG_VXFS_FS is not set
> +# CONFIG_HPFS_FS is not set
> +# CONFIG_QNX4FS_FS is not set
> +# CONFIG_SYSV_FS is not set
> +# CONFIG_UFS_FS is not set
> +
> +#
> +# Network File Systems
> +#
> +CONFIG_NFS_FS=y
> +# CONFIG_NFS_V3 is not set
> +# CONFIG_NFS_V4 is not set
> +# CONFIG_NFS_DIRECTIO is not set
> +# CONFIG_NFSD is not set
> +CONFIG_ROOT_NFS=y
> +CONFIG_LOCKD=y
> +CONFIG_NFS_COMMON=y
> +CONFIG_SUNRPC=y
> +# CONFIG_RPCSEC_GSS_KRB5 is not set
> +# CONFIG_RPCSEC_GSS_SPKM3 is not set
> +# CONFIG_SMB_FS is not set
> +# CONFIG_CIFS is not set
> +# CONFIG_NCP_FS is not set
> +# CONFIG_CODA_FS is not set
> +# CONFIG_AFS_FS is not set
> +# CONFIG_9P_FS is not set
> +
> +#
> +# Partition Types
> +#
> +CONFIG_PARTITION_ADVANCED=y
> +# CONFIG_ACORN_PARTITION is not set
> +# CONFIG_OSF_PARTITION is not set
> +# CONFIG_AMIGA_PARTITION is not set
> +# CONFIG_ATARI_PARTITION is not set
> +# CONFIG_MAC_PARTITION is not set
> +# CONFIG_MSDOS_PARTITION is not set
> +# CONFIG_LDM_PARTITION is not set
> +# CONFIG_SGI_PARTITION is not set
> +# CONFIG_ULTRIX_PARTITION is not set
> +# CONFIG_SUN_PARTITION is not set
> +# CONFIG_EFI_PARTITION is not set
> +
> +#
> +# Native Language Support
> +#
> +# CONFIG_NLS is not set
> +
> +#
> +# Library routines
> +#
> +# CONFIG_CRC_CCITT is not set
> +# CONFIG_CRC16 is not set
> +CONFIG_CRC32=y
> +# CONFIG_LIBCRC32C is not set
> +CONFIG_ZLIB_INFLATE=y
> +CONFIG_ZLIB_DEFLATE=y
> +
> +#
> +# Profiling support
> +#
> +# CONFIG_PROFILING is not set
> +
> +#
> +# Kernel hacking
> +#
> +# CONFIG_PRINTK_TIME is not set
> +# CONFIG_DEBUG_KERNEL is not set
> +CONFIG_LOG_BUF_SHIFT=14
> +# CONFIG_SERIAL_TEXT_DEBUG is not set
> +
> +#
> +# Security options
> +#
> +# CONFIG_KEYS is not set
> +# CONFIG_SECURITY is not set
> +
> +#
> +# Cryptographic options
> +#
> +# CONFIG_CRYPTO is not set
> +
> +#
> +# Hardware crypto devices
> +#
> diff --git a/arch/ppc/platforms/83xx/Makefile b/arch/ppc/platforms/ 
> 83xx/Makefile
> --- a/arch/ppc/platforms/83xx/Makefile
> +++ b/arch/ppc/platforms/83xx/Makefile
> @@ -2,3 +2,4 @@
>  # Makefile for the PowerPC 83xx linux kernel.
>  #
>  obj-$(CONFIG_MPC834x_SYS)    += mpc834x_sys.o
> +obj-$(CONFIG_TQM834x)        += tqm834x.o
> diff --git a/arch/ppc/platforms/83xx/tqm834x.c b/arch/ppc/platforms/ 
> 83xx/tqm834x.c
> new file mode 100644
> --- /dev/null
> +++ b/arch/ppc/platforms/83xx/tqm834x.c
> @@ -0,0 +1,336 @@
> +/*
> + * arch/ppc/platforms/83xx/tqm834x.c
> + *
> + * TQ Components TQM834x board routines
> + *
> + * Copyright 2005 DENX Software Engineering
> + * Derived from mpc834x_sys.c
> + *
> + * 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.
> + */
> +
> +#include <linux/config.h>
> +#include <linux/stddef.h>
> +#include <linux/kernel.h>
> +#include <linux/init.h>
> +#include <linux/errno.h>
> +#include <linux/reboot.h>
> +#include <linux/pci.h>
> +#include <linux/kdev_t.h>
> +#include <linux/major.h>
> +#include <linux/console.h>
> +#include <linux/delay.h>
> +#include <linux/seq_file.h>
> +#include <linux/root_dev.h>
> +#include <linux/serial.h>
> +#include <linux/tty.h>    /* for linux/serial_core.h */
> +#include <linux/serial_core.h>
> +#include <linux/initrd.h>
> +#include <linux/module.h>
> +#include <linux/fsl_devices.h>
> +
> +#include <asm/system.h>
> +#include <asm/pgtable.h>
> +#include <asm/page.h>
> +#include <asm/atomic.h>
> +#include <asm/time.h>
> +#include <asm/io.h>
> +#include <asm/machdep.h>
> +#include <asm/ipic.h>
> +#include <asm/bootinfo.h>
> +#include <asm/pci-bridge.h>
> +#include <asm/mpc83xx.h>
> +#include <asm/irq.h>
> +#include <asm/kgdb.h>
> +#include <asm/ppc_sys.h>
> +#include <mm/mmu_decl.h>
> +
> +#include <syslib/ppc83xx_setup.h>
> +
> +#ifndef CONFIG_PCI
> +unsigned long isa_io_base = 0;
> +unsigned long isa_mem_base = 0;
> +#endif
> +
> +extern unsigned long total_memory;    /* in mm/init */
> +
> +unsigned char __res[sizeof (bd_t)];
> +
> +#ifdef CONFIG_PCI
> +int
> +mpc83xx_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned  
> char pin)
> +{
> +    static char pci_irq_table[][4] =
> +        /*
> +         *      PCI IDSEL/INTPIN->INTLINE
> +         *       A      B      C      D
> +         */
> +    {
> +        {PIRQA, PIRQB,  PIRQC,  PIRQD}, /* idsel 0x11 */
> +        {PIRQC, PIRQD,  PIRQA,  PIRQB}, /* idsel 0x12 */
> +        {PIRQD, PIRQA,  PIRQB,  PIRQC}  /* idsel 0x13 */
> +    };
> +
> +    const long min_idsel = 0x11, max_idsel = 0x13, irqs_per_slot = 4;
> +    return PCI_IRQ_TABLE_LOOKUP;
> +}
> +
> +int
> +mpc83xx_exclude_device(u_char bus, u_char devfn)
> +{
> +    return PCIBIOS_SUCCESSFUL;
> +}
> +#endif /* CONFIG_PCI */
> +
> +/*  
> ********************************************************************** 
> **
> + *
> + * Setup the architecture
> + *
> + */
> +static void __init
> +tqm834x_setup_arch(void)
> +{
> +    bd_t *binfo = (bd_t *) __res;
> +    unsigned int freq;
> +    struct gianfar_platform_data *pdata;
> +
> +    /* get the core frequency */
> +    freq = binfo->bi_intfreq;
> +
> +    /* Set loops_per_jiffy to a half-way reasonable value,
> +       for use until calibrate_delay gets called. */
> +    loops_per_jiffy = freq / HZ;
> +
> +#ifdef CONFIG_PCI
> +    /* setup PCI host bridges */
> +    mpc83xx_setup_hose();
> +#endif
> +    mpc83xx_early_serial_map();
> +
> +    /* setup the board related information for the enet  
> controllers */
> +    pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata 
> (MPC83xx_TSEC1);
> +    if (pdata) {
> +        pdata->board_flags = FSL_GIANFAR_BRD_IS_REDUCED;
> +        pdata->interruptPHY = MPC83xx_IRQ_EXT1;
> +        pdata->phyid = 0;
> +        /* fixup phy address */
> +        pdata->phy_reg_addr += binfo->bi_immr_base;
> +        memcpy(pdata->mac_addr, binfo->bi_enetaddr, 6);
> +    }
> +
> +    pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata 
> (MPC83xx_TSEC2);
> +    if (pdata) {
> +        pdata->board_flags = FSL_GIANFAR_BRD_IS_REDUCED;
> +        pdata->interruptPHY = MPC83xx_IRQ_EXT1;
> +        pdata->phyid = 1;
> +        /* fixup phy address */
> +        pdata->phy_reg_addr += binfo->bi_immr_base;
> +        memcpy(pdata->mac_addr, binfo->bi_enet1addr, 6);
> +    }
> +
> +#ifdef CONFIG_BLK_DEV_INITRD
> +    if (initrd_start)
> +        ROOT_DEV = Root_RAM0;
> +    else
> +#endif
> +#ifdef  CONFIG_ROOT_NFS
> +        ROOT_DEV = Root_NFS;
> +#else
> +        ROOT_DEV = Root_HDA1;
> +#endif
> +}
> +
> +static void __init
> +tqm834x_map_io(void)
> +{
> +    /* we steal the lowest ioremap addr for virt space */
> +    io_block_mapping(VIRT_IMMRBAR, immrbar, 1024*1024, _PAGE_IO);
> +}
> +
> +int
> +tqm834x_show_cpuinfo(struct seq_file *m)
> +{
> +    uint pvid, svid, phid1;
> +    bd_t *binfo = (bd_t *) __res;
> +    unsigned int freq;
> +
> +    /* get the core frequency */
> +    freq = binfo->bi_intfreq;
> +
> +    pvid = mfspr(SPRN_PVR);
> +    svid = mfspr(SPRN_SVR);
> +
> +    seq_printf(m, "Vendor\t\t: Freescale Inc.\n");
> +    seq_printf(m, "Machine\t\t: TQM%s\n", cur_ppc_sys_spec- 
> >ppc_sys_name);
> +    seq_printf(m, "core clock\t: %d MHz\n"
> +            "bus  clock\t: %d MHz\n",
> +            (int)(binfo->bi_intfreq / 1000000),
> +            (int)(binfo->bi_busfreq / 1000000));
> +    seq_printf(m, "PVR\t\t: 0x%x\n", pvid);
> +    seq_printf(m, "SVR\t\t: 0x%x\n", svid);
> +
> +    /* Display cpu Pll setting */
> +    phid1 = mfspr(SPRN_HID1);
> +    seq_printf(m, "PLL setting\t: 0x%x\n", ((phid1 >> 24) & 0x3f));
> +
> +    /* Display the amount of memory */
> +    seq_printf(m, "Memory\t\t: %d MB\n", (int)(binfo->bi_memsize /  
> (1024 * 1024)));
> +
> +    return 0;
> +}
> +
> +void __init
> +tqm834x_init_IRQ(void)
> +{
> +    bd_t *binfo = (bd_t *) __res;
> +
> +    u8 senses[8] = {
> +        0,            /* EXT 0 */
> +        0,            /* EXT 1 */
> +        0,            /* EXT 2 */
> +        0,            /* EXT 3 */
> +#ifdef CONFIG_PCI
> +        IRQ_SENSE_LEVEL,    /* EXT 4 */
> +        IRQ_SENSE_LEVEL,    /* EXT 5 */
> +        IRQ_SENSE_LEVEL,    /* EXT 6 */
> +        IRQ_SENSE_LEVEL,    /* EXT 7 */
> +#else
> +        0,            /* EXT 4 */
> +        0,            /* EXT 5 */
> +        0,            /* EXT 6 */
> +        0,            /* EXT 7 */
> +#endif
> +    };
> +
> +    ipic_init(binfo->bi_immr_base + 0x00700, 0,  
> MPC83xx_IPIC_IRQ_OFFSET, senses, 8);
> +
> +    /* Initialize the default interrupt mapping priorities,
> +     * in case the boot rom changed something on us.
> +     */
> +    ipic_set_default_priority();
> +}
> +
> +#if defined(CONFIG_I2C_MPC) && defined(CONFIG_SENSORS_DS1337)
> +extern ulong ds1337_get_rtc_time(void);
> +extern int ds1337_set_rtc_time(unsigned long nowtime);
> +
> +static int __init
> +tqm834x_rtc_hookup(void)
> +{
> +    struct timespec    tv;
> +
> +        ppc_md.set_rtc_time = ds1337_set_rtc_time;
> +        ppc_md.get_rtc_time = ds1337_get_rtc_time;
> +
> +    tv.tv_nsec = 0;
> +    tv.tv_sec = (ppc_md.get_rtc_time)();
> +    do_settimeofday(&tv);
> +
> +    return 0;
> +}
> +late_initcall(tqm834x_rtc_hookup);
> +#endif
> +
> +static __inline__ void
> +tqm834x_set_bat(void)
> +{
> +    /* we steal the lowest ioremap addr for virt space */
> +    mb();
> +    mtspr(SPRN_DBAT1U, VIRT_IMMRBAR | 0x1e);
> +    mtspr(SPRN_DBAT1L, immrbar | 0x2a);
> +    mb();
> +}
> +
> +void __init
> +platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
> +          unsigned long r6, unsigned long r7)
> +{
> +    bd_t *binfo = (bd_t *) __res;
> +
> +    /* parse_bootinfo must always be called first */
> +    parse_bootinfo(find_bootinfo());
> +
> +    /*
> +     * If we were passed in a board information, copy it into the
> +     * residual data area.
> +     */
> +    if (r3) {
> +        memcpy((void *) __res, (void *) (r3 + KERNELBASE),
> +               sizeof (bd_t));
> +    }
> +
> +#if defined(CONFIG_BLK_DEV_INITRD)
> +    /*
> +     * If the init RAM disk has been configured in, and there's a  
> valid
> +     * starting address for it, set it up.
> +     */
> +    if (r4) {
> +        initrd_start = r4 + KERNELBASE;
> +        initrd_end = r5 + KERNELBASE;
> +    }
> +#endif /* CONFIG_BLK_DEV_INITRD */
> +
> +    /* Copy the kernel command line arguments to a safe place. */
> +    if (r6) {
> +        *(char *) (r7 + KERNELBASE) = 0;
> +        strcpy(cmd_line, (char *) (r6 + KERNELBASE));
> +    }
> +
> +    immrbar = binfo->bi_immr_base;
> +
> +    tqm834x_set_bat();
> +
> +#if defined(CONFIG_SERIAL_8250) && defined(CONFIG_SERIAL_TEXT_DEBUG)
> +    {
> +        struct uart_port p;
> +
> +        memset(&p, 0, sizeof (p));
> +        p.iotype = SERIAL_IO_MEM;
> +        p.membase = (unsigned char __iomem *)(VIRT_IMMRBAR + 0x4500);
> +        p.uartclk = binfo->bi_busfreq;
> +
> +        gen550_init(0, &p);
> +
> +        memset(&p, 0, sizeof (p));
> +        p.iotype = SERIAL_IO_MEM;
> +        p.membase = (unsigned char __iomem *)(VIRT_IMMRBAR + 0x4600);
> +        p.uartclk = binfo->bi_busfreq;
> +
> +        gen550_init(1, &p);
> +    }
> +#endif
> +
> +    identify_ppc_sys_by_id(mfspr(SPRN_SVR));
> +
> +    /* setup the PowerPC module struct */
> +    ppc_md.setup_arch = tqm834x_setup_arch;
> +    ppc_md.show_cpuinfo = tqm834x_show_cpuinfo;
> +
> +    ppc_md.init_IRQ = tqm834x_init_IRQ;
> +    ppc_md.get_irq = ipic_get_irq;
> +
> +    ppc_md.restart = mpc83xx_restart;
> +    ppc_md.power_off = mpc83xx_power_off;
> +    ppc_md.halt = mpc83xx_halt;
> +
> +    ppc_md.find_end_of_memory = mpc83xx_find_end_of_memory;
> +    ppc_md.setup_io_mappings  = tqm834x_map_io;
> +
> +    ppc_md.time_init = mpc83xx_time_init;
> +    ppc_md.set_rtc_time = NULL;
> +    ppc_md.get_rtc_time = NULL;
> +    ppc_md.calibrate_decr = mpc83xx_calibrate_decr;
> +
> +    ppc_md.early_serial_map = mpc83xx_early_serial_map;
> +#if defined(CONFIG_SERIAL_8250) && defined(CONFIG_SERIAL_TEXT_DEBUG)
> +    ppc_md.progress = gen550_progress;
> +#endif    /* CONFIG_SERIAL_8250 && CONFIG_SERIAL_TEXT_DEBUG */
> +
> +    if (ppc_md.progress)
> +        ppc_md.progress("tqm834x_init(): exit", 0);
> +
> +    return;
> +}
> diff --git a/arch/ppc/platforms/83xx/tqm834x.h b/arch/ppc/platforms/ 
> 83xx/tqm834x.h
> new file mode 100644
> --- /dev/null
> +++ b/arch/ppc/platforms/83xx/tqm834x.h
> @@ -0,0 +1,40 @@
> +/*
> + * arch/ppc/platforms/83xx/tqm834x.h
> + *
> + * TQ Components TQM834x common board definitions
> + *
> + * Copyright 2005 DENX Software Engineering
> + * Derived from mpc834x_sys.h
> + *
> + * 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.
> + *
> + */
> +
> +#ifndef __MACH_TQM834X_H__
> +#define __MACH_TQM834X_H__
> +
> +#include <linux/config.h>
> +#include <linux/init.h>
> +#include <linux/seq_file.h>
> +#include <syslib/ppc83xx_setup.h>
> +#include <asm/ppcboot.h>
> +
> +#define VIRT_IMMRBAR        ((uint)0xfe000000)
> +
> +#define PIRQA    MPC83xx_IRQ_EXT4
> +#define PIRQB    MPC83xx_IRQ_EXT5
> +#define PIRQC    MPC83xx_IRQ_EXT6
> +#define PIRQD    MPC83xx_IRQ_EXT7
> +
> +#define MPC83xx_PCI1_LOWER_IO    0x00000000
> +#define MPC83xx_PCI1_UPPER_IO    0x00ffffff
> +#define MPC83xx_PCI1_LOWER_MEM    0x80000000
> +#define MPC83xx_PCI1_UPPER_MEM    0x9fffffff
> +#define MPC83xx_PCI1_IO_BASE    0xe2000000
> +#define MPC83xx_PCI1_MEM_OFFSET    0x00000000
> +#define MPC83xx_PCI1_IO_SIZE    0x01000000
> +
> +#endif                /* __MACH_TQM834X_H__ */
> diff --git a/drivers/mtd/maps/Kconfig b/drivers/mtd/maps/Kconfig
> --- a/drivers/mtd/maps/Kconfig
> +++ b/drivers/mtd/maps/Kconfig
> @@ -340,6 +340,14 @@ config MTD_REDWOOD
>        Redwood board. If you have one of these boards and would  
> like to
>        use the flash chips on it, say 'Y'.
>
> +config MTD_TQM834x
> +    tristate "Flash device mapped on TQ Components TQM834x Boards"
> +    depends on MTD_CFI && PPC32 && 83xx && TQM834x
> +    help
> +      This enables access routines for the flash chips on the
> +      TQ Components TQM834x boards. If you have one of these boards
> +      and would like to use the flash chips on it, say 'Y'.
> +
>  config MTD_CSTM_MIPS_IXX
>      tristate "Flash chip mapping on ITE QED-4N-S01B, Globespan IVR  
> or custom board"
>      depends on MIPS && MTD_CFI && MTD_JEDECPROBE && MTD_PARTITIONS
> diff --git a/drivers/mtd/maps/Makefile b/drivers/mtd/maps/Makefile
> --- a/drivers/mtd/maps/Makefile
> +++ b/drivers/mtd/maps/Makefile
> @@ -70,3 +70,4 @@ obj-$(CONFIG_MTD_DMV182)    += dmv182.o
>  obj-$(CONFIG_MTD_SHARP_SL)    += sharpsl-flash.o
>  obj-$(CONFIG_MTD_PLATRAM)    += plat-ram.o
>  obj-$(CONFIG_MTD_OMAP_NOR)    += omap_nor.o
> +obj-$(CONFIG_MTD_TQM834x)    += tqm834x.o
> diff --git a/drivers/mtd/maps/tqm834x.c b/drivers/mtd/maps/tqm834x.c
> new file mode 100644
> --- /dev/null
> +++ b/drivers/mtd/maps/tqm834x.c
> @@ -0,0 +1,298 @@
> +/*
> + * drivers/mtd/maps/tqm834x.c
> + *
> + * MTD mapping driver for TQM834x boards
> + *
> + * Copyright 2005 Wolfgang Denk, DENX Software Engineering,  
> <wd@denx.de>.
> + *
> + * This file is licensed under the terms of the GNU General Public  
> License
> + * version 2.  This program is licensed "as is" without any  
> warranty of any
> + * kind, whether express or implied.
> + *
> + */
> +
> +#include <linux/config.h>
> +#include <linux/init.h>
> +#include <linux/module.h>
> +#include <linux/types.h>
> +#include <linux/kernel.h>
> +#include <linux/slab.h>
> +#include <asm/io.h>
> +#include <asm/ppcboot.h>
> +
> +#include <linux/mtd/mtd.h>
> +#include <linux/mtd/map.h>
> +#include <linux/mtd/partitions.h>
> +
> +#if 0    /* Debugging turned off */
> +# define debugk(fmt,args...)    printk(fmt ,##args)
> +#else
> +# define debugk(fmt,args...)
> +#endif
> +
> +#define FLASH_BANK_MAX    2
> +
> +extern unsigned char __res[];
> +
> +/* trivial struct to describe partition information */
> +struct mtd_part_def
> +{
> +    int nums;
> +    unsigned char *type;
> +    struct mtd_partition* mtd_part;
> +};
> +
> +static struct mtd_info* mtd_banks[FLASH_BANK_MAX];
> +static struct map_info* map_banks[FLASH_BANK_MAX];
> +static struct mtd_part_def part_banks[FLASH_BANK_MAX];
> +
> +static unsigned long num_banks;
> +static unsigned long start_scan_addr;
> +
> +#ifdef CONFIG_MTD_PARTITIONS
> +/*
> + * The following defines the partition layout of TQM834x boards.
> + *
> + * See include/linux/mtd/partitions.h for definition of the
> + * mtd_partition structure.
> + *
> + * Assume minimal initial size of 4 MiB per bank, will be updated
> + * later in init_tqm834x_mtd() routine.
> + */
> +
> +/* Partition definition for the first flash bank which is always  
> present. */
> +static struct mtd_partition tqm834x_partitions_bank1[] = {
> +    {
> +        name:    "u-boot",        /* u-boot firmware    */
> +        offset:    0x00000000,
> +        size:    0x00040000,        /* 256 KiB        */
> +        /*mask_flags: MTD_WRITEABLE,     * force read-only    */
> +    },
> +    {
> +        name:    "env",            /* u-boot environment    */
> +        offset:    0x00040000,
> +        size:    0x00020000,        /* 128 KiB        */
> +        /*mask_flags: MTD_WRITEABLE,     * force read-only    */
> +    },
> +    {
> +        name:    "kernel",        /* linux kernel image    */
> +        offset:    0x00060000,
> +        size:    0x00100000,        /* 1 MiB        */
> +        /*mask_flags: MTD_WRITEABLE,     * force read-only    */
> +    },
> +    {
> +        name:    "initrd",        /* ramdisk image    */
> +        offset:    0x00160000,
> +        size:    0x00200000,        /* 2 MiB        */
> +    },
> +    {
> +        name:    "user",            /* user data        */
> +        offset:    0x00360000,
> +        size:    0x000a0000,        /* remaining space    */
> +        /* NOTE: this parttion size is re-calcated in        */
> +        /* init_tqm834x_mtd() to cover actual remaining space.    */
> +    },
> +};
> +
> +/* Partition definition for the second flash bank which may be  
> present on some
> + * TQM834x boards.
> + */
> +static struct mtd_partition tqm834x_partitions_bank2[] = {
> +    {
> +        name:    "jffs2",        /* jffs2 filesystem    */
> +        offset:    0x00000000,
> +        size:    0x00400000,        /* whole device        */
> +        /* NOTE: this parttion size is re-calcated in        */
> +        /* init_tqm834x_mtd() to cover actual device size.    */
> +    },
> +};
> +
> +#endif    /* CONFIG_MTD_PARTITIONS */
> +
> +#define NB_OF(x)  (sizeof(x)/sizeof(x[0]))
> +
> +int __init init_tqm834x_mtd(void)
> +{
> +    int idx = 0, ret = 0;
> +    unsigned long flash_addr, flash_size, mtd_size = 0;
> +
> +    /* pointer to TQM834x board info data */
> +    bd_t *bd = (bd_t *)__res;
> +#ifdef CONFIG_MTD_CMDLINE_PARTS
> +    int n;
> +    char mtdid[4];
> +    const char *part_probes[] = { "cmdlinepart", NULL };
> +#endif
> +
> +    flash_addr = bd->bi_flashstart;
> +    flash_size = bd->bi_flashsize;
> +
> +    /* request maximum flash size address space */
> +    start_scan_addr = (unsigned long)ioremap(flash_addr, flash_size);
> +    if (!start_scan_addr) {
> +        printk("%s: Failed to ioremap address: 0x%lx\n",
> +            __FUNCTION__, flash_addr);
> +        return -EIO;
> +    }
> +
> +    for(idx = 0 ; idx < FLASH_BANK_MAX ; idx++) {
> +        if (mtd_size >= flash_size)
> +            break;
> +
> +        debugk ("%s: chip probing count %d\n", __FUNCTION__, idx);
> +
> +        map_banks[idx] = (struct map_info *)kmalloc(sizeof(struct  
> map_info),
> +                            GFP_KERNEL);
> +        if (map_banks[idx] == NULL) {
> +            ret = -ENOMEM;
> +            goto error_mem;
> +        }
> +        memset((void *)map_banks[idx], 0, sizeof(struct map_info));
> +        map_banks[idx]->name = (char *)kmalloc(16, GFP_KERNEL);
> +        if (map_banks[idx]->name == NULL) {
> +            ret = -ENOMEM;
> +            goto error_mem;
> +        }
> +        memset((void *)map_banks[idx]->name, 0, 16);
> +
> +        sprintf(map_banks[idx]->name, "TQM834x-%d", idx);
> +        map_banks[idx]->size = flash_size;
> +        map_banks[idx]->bankwidth = 4;
> +
> +        simple_map_init(map_banks[idx]);
> +
> +        map_banks[idx]->virt = (void __iomem *)
> +            (start_scan_addr + ((idx > 0) ?
> +            (mtd_banks[idx-1] ? mtd_banks[idx-1]->size : 0) : 0));
> +        map_banks[idx]->phys =
> +            flash_addr + ((idx > 0) ?
> +            (mtd_banks[idx-1] ? mtd_banks[idx-1]->size : 0) : 0);
> +
> +        /* start to probe flash chips */
> +        mtd_banks[idx] = do_map_probe("cfi_probe", map_banks[idx]);
> +        if (mtd_banks[idx]) {
> +            mtd_banks[idx]->owner = THIS_MODULE;
> +            mtd_size += mtd_banks[idx]->size;
> +            num_banks++;
> +            debugk ("%s: bank %ld, name: %s, size: %d bytes \n",
> +                __FUNCTION__, num_banks,
> +                mtd_banks[idx]->name, mtd_banks[idx]->size);
> +        }
> +    }
> +
> +    /* no supported flash chips found */
> +    if (!num_banks) {
> +        printk("TQM834x: No supported flash chips found!\n");
> +        ret = -ENXIO;
> +        goto error_mem;
> +    }
> +
> +#ifdef CONFIG_MTD_PARTITIONS
> +    /*
> +     * Select static partition definitions
> +     */
> +    n = NB_OF(tqm834x_partitions_bank1);
> +    part_banks[0].mtd_part    = tqm834x_partitions_bank1;
> +    part_banks[0].type    = "static image bank1";
> +    part_banks[0].nums    = n;
> +
> +    /* update last partition size to cover actual remaining space */
> +    tqm834x_partitions_bank1[n - 1].size =
> +        mtd_banks[0]->size -
> +        tqm834x_partitions_bank1[n - 1].offset;
> +
> +    /* check if we have second bank? */
> +    if (num_banks == 2) {
> +        n = NB_OF(tqm834x_partitions_bank2);
> +        part_banks[1].mtd_part    = tqm834x_partitions_bank2;
> +        part_banks[1].type    = "static image bank2";
> +        part_banks[1].nums    = n;
> +
> +        /* update last partition size to cover actual remaining  
> space */
> +        tqm834x_partitions_bank2[n - 1].size =
> +            mtd_banks[1]->size -
> +            tqm834x_partitions_bank2[n - 1].offset;
> +    }
> +
> +    for(idx = 0; idx < num_banks ; idx++) {
> +#ifdef CONFIG_MTD_CMDLINE_PARTS
> +        sprintf(mtdid, "%d", idx);
> +        n = parse_mtd_partitions(mtd_banks[idx],
> +                part_probes,
> +                &part_banks[idx].mtd_part,
> +                0);
> +        debugk ("%s: %d command line partitions on bank %s\n",
> +                __FUNCTION__, n, mtdid);
> +        if (n > 0) {
> +            part_banks[idx].type = "command line";
> +            part_banks[idx].nums = n;
> +        }
> +#endif    /* CONFIG_MTD_CMDLINE_PARTS */
> +        if (part_banks[idx].nums == 0) {
> +            printk (KERN_NOTICE
> +                "TQM834x flash bank %d: no partition info "
> +                "available, registering whole device\n", idx);
> +            add_mtd_device(mtd_banks[idx]);
> +        } else {
> +            printk (KERN_NOTICE
> +                "TQM834x flash bank %d: Using %s partition "
> +                "definition\n", idx, part_banks[idx].type);
> +            add_mtd_partitions (mtd_banks[idx],
> +                    part_banks[idx].mtd_part,
> +                    part_banks[idx].nums);
> +        }
> +    }
> +#else    /* ! CONFIG_MTD_PARTITIONS */
> +    printk (KERN_NOTICE "TQM834x flash: registering %d flash banks "
> +            "at once\n", num_banks);
> +
> +    for(idx = 0 ; idx < num_banks ; idx++) {
> +        add_mtd_device(mtd_banks[idx]);
> +    }
> +#endif    /* CONFIG_MTD_PARTITIONS */
> +
> +    return 0;
> +error_mem:
> +    for (idx = 0 ; idx < FLASH_BANK_MAX ; idx++) {
> +        if (map_banks[idx] != NULL) {
> +            if (map_banks[idx]->name != NULL) {
> +                kfree(map_banks[idx]->name);
> +                map_banks[idx]->name = NULL;
> +            }
> +            kfree(map_banks[idx]);
> +            map_banks[idx] = NULL;
> +        }
> +    }
> +
> +    iounmap((void *)start_scan_addr);
> +
> +    return ret;
> +}
> +
> +static void __exit cleanup_tqm834x_mtd(void)
> +{
> +    unsigned int idx = 0;
> +    for(idx = 0 ; idx < num_banks ; idx++) {
> +        /* destroy mtd_info previously allocated */
> +        if (mtd_banks[idx]) {
> +            del_mtd_partitions(mtd_banks[idx]);
> +            map_destroy(mtd_banks[idx]);
> +        }
> +
> +        /* release map_info not used anymore */
> +        kfree(map_banks[idx]->name);
> +        kfree(map_banks[idx]);
> +    }
> +
> +    if (start_scan_addr) {
> +        iounmap((void *)start_scan_addr);
> +        start_scan_addr = 0;
> +    }
> +}
> +
> +module_init(init_tqm834x_mtd);
> +module_exit(cleanup_tqm834x_mtd);
> +
> +MODULE_LICENSE("GPL");
> +MODULE_AUTHOR("Wolfgang Denk <wd@denx.de>");
> +MODULE_DESCRIPTION("MTD map driver for TQM834x boards");
> diff --git a/include/asm-ppc/mpc83xx.h b/include/asm-ppc/mpc83xx.h
> --- a/include/asm-ppc/mpc83xx.h
> +++ b/include/asm-ppc/mpc83xx.h
> @@ -26,6 +26,10 @@
>  #include <platforms/83xx/mpc834x_sys.h>
>  #endif
>
> +#ifdef CONFIG_TQM834x
> +#include <platforms/83xx/tqm834x.h>
> +#endif
> +
>  #define _IO_BASE        isa_io_base
>  #define _ISA_MEM_BASE   isa_mem_base
>  #ifdef CONFIG_PCI
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-dev
>

^ permalink raw reply

* Re: [PATCH] 85xx PHY Platform Update
From: Vitaly Bordug @ 2005-10-24 15:10 UTC (permalink / raw)
  To: info; +Cc: linuxppc-embedded
In-Reply-To: <1130165338$29160$83019474@info@moreframe.com>

info wrote:
> Andy, Kumar
> 
> I try this patch for RMC-G8500 from GDAtech, error message below:
> ---------------------------------------------------------------------------------
>  [root@ppclinux linux-2.6.13]# make uImage
>   CHK     include/linux/version.h
>   CHK     include/linux/compile.h
>   CHK     usr/initramfs_list
>   CC      drivers/net/gianfar.o
> drivers/net/gianfar.c: In function `gfar_probe':
> drivers/net/gianfar.c:217: error: structure has no member named `phy_reg_addr'
> drivers/net/gianfar.c: In function `init_phy':
> drivers/net/gianfar.c:452: error: structure has no member named `phyid'
> drivers/net/gianfar.c: In function `stop_gfar':
> drivers/net/gianfar.c:636: error: structure has no member named `interruptPHY'
> drivers/net/gianfar.c: In function `gfar_phy_startup_timer':
> drivers/net/gianfar.c:1818: error: structure has no member named `interruptPHY'
> drivers/net/gianfar.c:1826: error: structure has no member named `interruptPHY'
> make[2]: *** [drivers/net/gianfar.o] Error 1
> make[1]: *** [drivers/net] Error 2
> make: *** [drivers] Error 2
> 
> ---------------------------------------------------------------------------------
> because???
This patch implies that PAL (Phy Abstraction layer) is utilized within
the gianfar driver, but this change is just queued upstream (AFAIK - or
in the netdev tree) right now. In order to use this you should wait a
little...
>  
>  /* Internal interrupts are all Level Sensitive, and Positive Polarity */
> diff --git a/include/linux/fsl_devices.h b/include/linux/fsl_devices.h
> --- a/include/linux/fsl_devices.h
> +++ b/include/linux/fsl_devices.h
> @@ -47,14 +47,19 @@
>  struct gianfar_platform_data {
>  	/* device specific information */
>  	u32 device_flags;
> -	u32 phy_reg_addr;
>  
>  	/* board specific information */
>  	u32 board_flags;
> -	u32 phy_flags;
> -	u32 phyid;
> -	u32 interruptPHY;
> +	const char *bus_id;
>  	u8 mac_addr[6];
> +};
> +
> 
> 
> -------------------------------------------------------------------------------------------
> <This patch updates the 85xx platform code to support the new PHY Layer.
> <
> <Signed-off-by: Andy Fleming <afleming at freescale.com>
> <Signed-off-by: Kumar Gala <Kumar.gala at freescale.com>
> <
> <
> <diff --git a/arch/ppc/platforms/85xx/mpc8540_ads.c b/arch/ppc/platforms/85xx/mpc8540_ads.c
> <--- a/arch/ppc/platforms/85xx/mpc8540_ads.c
> <+++ b/arch/ppc/platforms/85xx/mpc8540_ads.c
> <@@ -53,6 +53,10 @@
> < 
> < #include <syslib/ppc85xx_setup.h>
> < 
> <+static const char *GFAR_PHY_0 = "phy0:0";
> <+static const char *GFAR_PHY_1 = "phy0:1";
> <+static const char *GFAR_PHY_3 = "phy0:3";
> <+
> < /* ************************************************************************
> <  *
> <  * Setup the architecture
> <@@ -64,6 +68,7 @@ mpc8540ads_setup_arch(void)
> 
> 
> 
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
> 
> 


-- 
Sincerely,
Vitaly

^ permalink raw reply

* [PATCH] 85xx PHY Platform Update
From: info @ 2005-10-24 14:49 UTC (permalink / raw)
  To: linuxppc-embedded

Andy, Kumar

I try this patch for RMC-G8500 from GDAtech, error message below:
---------------------------------------------------------------------------------
 [root@ppclinux linux-2.6.13]# make uImage
  CHK     include/linux/version.h
  CHK     include/linux/compile.h
  CHK     usr/initramfs_list
  CC      drivers/net/gianfar.o
drivers/net/gianfar.c: In function `gfar_probe':
drivers/net/gianfar.c:217: error: structure has no member named `phy_reg_addr'
drivers/net/gianfar.c: In function `init_phy':
drivers/net/gianfar.c:452: error: structure has no member named `phyid'
drivers/net/gianfar.c: In function `stop_gfar':
drivers/net/gianfar.c:636: error: structure has no member named `interruptPHY'
drivers/net/gianfar.c: In function `gfar_phy_startup_timer':
drivers/net/gianfar.c:1818: error: structure has no member named `interruptPHY'
drivers/net/gianfar.c:1826: error: structure has no member named `interruptPHY'
make[2]: *** [drivers/net/gianfar.o] Error 1
make[1]: *** [drivers/net] Error 2
make: *** [drivers] Error 2

---------------------------------------------------------------------------------
because???
 
 /* Internal interrupts are all Level Sensitive, and Positive Polarity */
diff --git a/include/linux/fsl_devices.h b/include/linux/fsl_devices.h
--- a/include/linux/fsl_devices.h
+++ b/include/linux/fsl_devices.h
@@ -47,14 +47,19 @@
 struct gianfar_platform_data {
 	/* device specific information */
 	u32 device_flags;
-	u32 phy_reg_addr;
 
 	/* board specific information */
 	u32 board_flags;
-	u32 phy_flags;
-	u32 phyid;
-	u32 interruptPHY;
+	const char *bus_id;
 	u8 mac_addr[6];
+};
+


-------------------------------------------------------------------------------------------
<This patch updates the 85xx platform code to support the new PHY Layer.
<
<Signed-off-by: Andy Fleming <afleming at freescale.com>
<Signed-off-by: Kumar Gala <Kumar.gala at freescale.com>
<
<
<diff --git a/arch/ppc/platforms/85xx/mpc8540_ads.c b/arch/ppc/platforms/85xx/mpc8540_ads.c
<--- a/arch/ppc/platforms/85xx/mpc8540_ads.c
<+++ b/arch/ppc/platforms/85xx/mpc8540_ads.c
<@@ -53,6 +53,10 @@
< 
< #include <syslib/ppc85xx_setup.h>
< 
<+static const char *GFAR_PHY_0 = "phy0:0";
<+static const char *GFAR_PHY_1 = "phy0:1";
<+static const char *GFAR_PHY_3 = "phy0:3";
<+
< /* ************************************************************************
<  *
<  * Setup the architecture
<@@ -64,6 +68,7 @@ mpc8540ads_setup_arch(void)

^ permalink raw reply

* [PATCH 2.6.14-rc5 1/1] chrp_pegasos_eth: Added Marvell Discovery II SRAM support
From: Nicolas DET @ 2005-10-24 13:09 UTC (permalink / raw)
  To: Sven Luther, Andrew Morton, linuxppc-dev

[-- Attachment #1: Type: text/plain, Size: 229 bytes --]

Added proper entry to support the Marvell MV64361 (Marvell Discovery II)
SRAM.

This feature may be used by the mv643xx_eth driver.

Signed-off-by: Nicolas DET <det.nicolas@free.fr>
Signed-off-by: Sven Luther <sl@bplan-gmbh.de>


[-- Attachment #2: chrp_pegasos_eth.2.6.14-rc5.patch --]
[-- Type: text/x-patch, Size: 4477 bytes --]

diff -Naur a/arch/ppc/platforms/chrp_pegasos_eth.c b/arch/ppc/platforms/chrp_pegasos_eth.c
--- a/arch/ppc/platforms/chrp_pegasos_eth.c	2005-10-24 14:48:16.087853000 +0200
+++ b/arch/ppc/platforms/chrp_pegasos_eth.c	2005-10-24 15:05:09.271853000 +0200
@@ -17,7 +17,20 @@
 #include <linux/mv643xx.h>
 #include <linux/pci.h>
 
-/* Pegasos 2 specific Marvell MV 64361 gigabit ethernet port setup */
+#define PEGASOS2_MARVELL_REGBASE 		(0xf1000000)
+#define PEGASOS2_MARVELL_REGSIZE 		(0x00004000)
+#define PEGASOS2_SRAM_BASE 			(0xf2000000)
+#define PEGASOS2_SRAM_SIZE			(256*1024)
+
+#define PEGASOS2_SRAM_BASE_ETH0			(PEGASOS2_SRAM_BASE)
+#define PEGASOS2_SRAM_BASE_ETH1			(PEGASOS2_SRAM_BASE_ETH0 + (PEGASOS2_SRAM_SIZE / 2) )
+
+
+#define PEGASOS2_SRAM_RXRING_SIZE		(PEGASOS2_SRAM_SIZE/4)
+#define PEGASOS2_SRAM_TXRING_SIZE		(PEGASOS2_SRAM_SIZE/4)
+
+#undef BE_VERBOSE
+
 static struct resource mv643xx_eth_shared_resources[] = {
 	[0] = {
 		.name	= "ethernet shared base",
@@ -44,7 +57,16 @@
 	},
 };
 
-static struct mv643xx_eth_platform_data eth0_pd;
+
+static struct mv643xx_eth_platform_data eth0_pd = {
+	.tx_sram_addr = PEGASOS2_SRAM_BASE_ETH0,
+	.tx_sram_size = PEGASOS2_SRAM_TXRING_SIZE,
+	.tx_queue_size = PEGASOS2_SRAM_TXRING_SIZE/16,
+
+	.rx_sram_addr = PEGASOS2_SRAM_BASE_ETH0 + PEGASOS2_SRAM_TXRING_SIZE,
+	.rx_sram_size = PEGASOS2_SRAM_RXRING_SIZE,
+	.rx_queue_size = PEGASOS2_SRAM_RXRING_SIZE/16,
+};
 
 static struct platform_device eth0_device = {
 	.name		= MV643XX_ETH_NAME,
@@ -65,7 +87,15 @@
 	},
 };
 
-static struct mv643xx_eth_platform_data eth1_pd;
+static struct mv643xx_eth_platform_data eth1_pd = {
+	.tx_sram_addr = PEGASOS2_SRAM_BASE_ETH1,
+	.tx_sram_size = PEGASOS2_SRAM_TXRING_SIZE,
+	.tx_queue_size = PEGASOS2_SRAM_TXRING_SIZE/16,
+	
+	.rx_sram_addr = PEGASOS2_SRAM_BASE_ETH1 + PEGASOS2_SRAM_TXRING_SIZE,
+	.rx_sram_size = PEGASOS2_SRAM_RXRING_SIZE,
+	.rx_queue_size = PEGASOS2_SRAM_RXRING_SIZE/16,
+};
 
 static struct platform_device eth1_device = {
 	.name		= MV643XX_ETH_NAME,
@@ -83,9 +113,61 @@
 	&eth1_device,
 };
 
+/***********/
+/***********/
+#define MV_READ(offset,val) 	{ val = readl(mv643xx_reg_base + offset); }
+#define MV_WRITE(offset,data) writel(data, mv643xx_reg_base + offset)
+
+static void __iomem *mv643xx_reg_base = NULL;
+
+
+static int Enable_SRAM(void)
+{
+	u32 ALong;
+	
+	if (mv643xx_reg_base == NULL)
+		mv643xx_reg_base = ioremap(PEGASOS2_MARVELL_REGBASE, PEGASOS2_MARVELL_REGSIZE);
+
+	if (mv643xx_reg_base == NULL)
+	return -ENOMEM;
+
+#ifdef BE_VERBOSE
+	printk("Pegasos II/Marvell MV64361: register remapped from %p to %p\n", (void *)PEGASOS2_MARVELL_REGBASE, (void *)mv643xx_reg_base);
+#endif
 
-int
-mv643xx_eth_add_pds(void)
+	MV_WRITE(MV64340_SRAM_CONFIG, 0);
+
+	MV_WRITE(MV64340_INTEGRATED_SRAM_BASE_ADDR, PEGASOS2_SRAM_BASE >> 16);
+
+	MV_READ(MV64340_BASE_ADDR_ENABLE, ALong);
+	ALong &= ~(1 << 19);
+	MV_WRITE(MV64340_BASE_ADDR_ENABLE, ALong);
+
+	ALong = 0x02;
+	ALong |= PEGASOS2_SRAM_BASE & 0xffff0000; 
+	MV_WRITE(MV643XX_ETH_BAR_4, ALong);
+
+	MV_WRITE(MV643XX_ETH_SIZE_REG_4, (PEGASOS2_SRAM_SIZE-1) & 0xffff0000);
+
+	MV_READ(MV643XX_ETH_BASE_ADDR_ENABLE_REG, ALong);
+	ALong &= ~(1 << 4);
+	MV_WRITE(MV643XX_ETH_BASE_ADDR_ENABLE_REG, ALong);
+
+#ifdef BE_VERBOSE
+	printk("Pegasos II/Marvell MV64361: register unmapped\n");
+	printk("Pegasos II/Marvell MV64361: SRAM at %p, size=%x\n", (void*) PEGASOS2_SRAM_BASE, PEGASOS2_SRAM_SIZE);
+#endif
+
+	iounmap(mv643xx_reg_base);
+	mv643xx_reg_base = NULL;
+
+	return 1;
+}
+
+
+/***********/
+/***********/
+int mv643xx_eth_add_pds(void)
 {
 	int ret = 0;
 	static struct pci_device_id pci_marvell_mv64360[] = {
@@ -93,9 +175,39 @@
 		{ }
 	};
 
-	if (pci_dev_present(pci_marvell_mv64360)) {
+#ifdef BE_VERBOSE
+	printk("Pegasos II/Marvell MV64361: init\n");
+#endif
+
+	if (pci_dev_present(pci_marvell_mv64360))
+	{
 		ret = platform_add_devices(mv643xx_eth_pd_devs, ARRAY_SIZE(mv643xx_eth_pd_devs));
+		
+		if ( Enable_SRAM() < 0)
+		{
+			eth0_pd.tx_sram_addr = 0;
+			eth0_pd.tx_sram_size = 0;
+			eth0_pd.rx_sram_addr = 0;
+			eth0_pd.rx_sram_size = 0;
+			
+			eth1_pd.tx_sram_addr = 0;
+			eth1_pd.tx_sram_size = 0;
+			eth1_pd.rx_sram_addr = 0;
+			eth1_pd.rx_sram_size = 0;
+			
+#ifdef BE_VERBOSE
+			printk("Pegasos II/Marvell MV64361: Can't enable the SRAM\n");
+#endif
+		}	
 	}
+	
+#ifdef BE_VERBOSE
+		
+	printk("Pegasos II/Marvell MV64361: init is over\n");
+#endif
+	
 	return ret;
 }
+
 device_initcall(mv643xx_eth_add_pds);
+

^ permalink raw reply

* Re: MPC8xx soft-float userspace ...
From: Matej Kupljen @ 2005-10-24  8:27 UTC (permalink / raw)
  To: Schaefer-Hutter, Peter; +Cc: linuxppc-embedded
In-Reply-To: <8E342283C2100540AAC5D103097054778A4189@rcexc.racoms.loc>

Hi

> While i was successful in compiling a glibc with -mcpu=860
> and soft-float (and without memset.S) there's still floating
> point in there. Does anybody have some pointers what else
> needs to be removed?

I had similar problems on MIPS.
Look at this threads:
http://sources.redhat.com/ml/crossgcc/2005-09/msg00054.html
http://sources.redhat.com/ml/crossgcc/2005-09/msg00063.html

BR,
Matej

^ permalink raw reply

* Re: [PATCH] hide pmac specific drivers if CONFIG_ADB is not set
From: Brad Boyer @ 2005-10-23 17:44 UTC (permalink / raw)
  To: Benjamin Herrenschmidt
  Cc: Andrew Morton, Linux/PPC Development, Geert Uytterhoeven,
	Olaf Hering
In-Reply-To: <1130055811.7919.61.camel@gaston>

On Sun, Oct 23, 2005 at 06:23:31PM +1000, Benjamin Herrenschmidt wrote:
> On Sun, 2005-10-23 at 10:23 +0200, Geert Uytterhoeven wrote:
> > On Sat, 22 Oct 2005, Olaf Hering wrote:
> > > SCSI_MESH exists on old Macs, but the PB Lombard has an external connector
> > 
> > And on some CHRP.
> > 
> > You can no longer enable MESH when compiling for CHRP or when disabling ADB?
> > 
> > It's clearly visible my LongTrail died last year... :-(
> 
> Come on, Geert, I told you back then I was doing that :) You didn't
> complain and we figured out nobody around had any of these in working
> conditions anymore :)

Well, it really doesn't have anything to do with ADB. The problem is
actually the macio bus layer, but we don't have CONFIG_ options for
that. I've been working on getting the macio code running in 68k,
so I was thinking of introducing a CONFIG_MACIO. Would this be an
acceptable option? On 68k, I would just default it to yes if the
config has CONFIG_MAC, but it could be made a real question for ppc
since the platform stuff doesn't really let you select just a pci
powermac kernel anymore. Any comments?

I suppose if anyone still has one of those old CHRP machines, we
could probably get hydra supported by macio_asic to get some of the
other drivers working on it.

	Brad Boyer
	flar@allandria.com

^ permalink raw reply

* RE:Help needed Linux-2.6 - MPC8541
From: info @ 2005-10-23 15:39 UTC (permalink / raw)
  To: linuxppc-embedded

[-- Attachment #1: Type: text/plain, Size: 677 bytes --]

Junita

Sorry to disturbed you. I find your question in the http://ozlabs.org mail list.
Have you fixed the bug in gianfar_phy.c? 
tempval = gfar_read(&priv-> regs-> dmactrl);
tempval |= (DMACTRL_GRS | DMACTRL_GTS);
gfar_write(&priv-> regs-> dmactrl, tempval);

while (!(gfar_read(&priv-> regs-> ievent) & (IEVENT_GRSC | IEVENT_GTSC)))
cpu_relax();

/* Reset MAC layer */
gfar_write(&priv-> regs-> maccfg1, MACCFG1_SOFT_RESET);

I buy a RMC-G8500 card from GDAtech, I try to build linux-2.6.13.4 from kernel.org and meet the same problems as you had. I test the same code on freescale 8540_ADS board, it is good.Can you share some infomation of your progress?

Thank you!
Jian

[-- Attachment #2: Type: text/html, Size: 1819 bytes --]

^ permalink raw reply

* Re: [PATCH][RFT] Extended BAT features, take 2
From: Rupert Eibauer @ 2005-10-23 13:27 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: linuxppc-dev
In-Reply-To: <1130061332.7919.63.camel@gaston>

Please don't test my last patch, it will breaks some page table code.

^ permalink raw reply

* Re: Newbie... in mailing lists...
From: David Woodhouse @ 2005-10-23 11:38 UTC (permalink / raw)
  To: Nathael PAJANI; +Cc: linuxppc-embedded
In-Reply-To: <1129621982.3830.310.camel@baythorne.infradead.org>

On Tue, 2005-10-18 at 08:53 +0100, David Woodhouse wrote:
> That's a problem with the archives; it's not your fault. If you look
> at the mailto: link at the top of that page, you see it looks like
> this:
> 
> mailto:linuxppc-embedded%40ozlabs.org?Subject=eldk%203.1.1%20ramdisk%20image%20problem&In-Reply-To=
> 
> Although it _attempts_ to set the In-Reply-To: header which would make
> your message appear to be a reply to the mail in the archive, it seems
> to be missing the actual message-id of that mail; it's just empty.

I filed this mailman bug along with a partial fix at
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=171567

-- 
dwmw2

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox