LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* RE: [PATCH] MTD: Add support for the PM82x Boards.
From: Heiko Schocher @ 2005-11-23 17:50 UTC (permalink / raw)
  To: tglx; +Cc: linuxppc-dev, dwmw2, linux-mtd
In-Reply-To: <1132754409.32542.161.camel@tglx.tec.linutronix.de>

Hello,

i made the changes in the code you suggested to me.

Additional changes:
- I now use the CFI interface (I tested it, and it seems OK
  to me)
- MB -> MiB
- Code reworked

[PATCH]	MTD:	Add support for the PM82x Board.

Included support for the NOR flashes on the Modul,
and for the DiskOnChip on the Board.

Signed-off-by: Heiko Schocher <hs@denx.de>

---
 drivers/mtd/maps/Kconfig      |    6 +
 drivers/mtd/maps/Makefile     |    1 
 drivers/mtd/maps/pm82x.c      |  337 +++++++++++++++++++++++++++++++++++++++++
 drivers/mtd/nand/diskonchip.c |    4 
 4 files changed, 348 insertions(+), 0 deletions(-)

diff --git a/drivers/mtd/maps/Kconfig b/drivers/mtd/maps/Kconfig
index 846a533..237abe8 100644
--- a/drivers/mtd/maps/Kconfig
+++ b/drivers/mtd/maps/Kconfig
@@ -256,6 +256,12 @@ config MTD_SBC8240
           Flash access on the SBC8240 board from Wind River.  See
           <http://www.windriver.com/products/sbc8240/>
 
+config MTD_PM82X
+	tristate "Flash device on PM82X Boards"
+	depends on PPC32 && 6xx && 8260 && MTD_COMPLEX_MAPPINGS && MTD_PARTITIONS
+	help
+	  Flash access on the PM82X boards from Microsys.
+
 config MTD_TQM8XXL
 	tristate "CFI Flash device mapped on TQM8XXL"
 	depends on MTD_CFI && TQM8xxL
diff --git a/drivers/mtd/maps/Makefile b/drivers/mtd/maps/Makefile
index 7d9e940..e3733b1 100644
--- a/drivers/mtd/maps/Makefile
+++ b/drivers/mtd/maps/Makefile
@@ -73,3 +73,4 @@ obj-$(CONFIG_MTD_OMAP_NOR)	+= omap_nor.o
 obj-$(CONFIG_MTD_PQ2FADS)	+= pq2fads.o
 obj-$(CONFIG_MTD_MTX1)		+= mtx-1_flash.o
 obj-$(CONFIG_MTD_TQM834x)	+= tqm834x.o
+obj-$(CONFIG_MTD_PM82X)	+= pm82x.o
diff --git a/drivers/mtd/maps/pm82x.c b/drivers/mtd/maps/pm82x.c
new file mode 100644
index 0000000..840fc29
--- /dev/null
+++ b/drivers/mtd/maps/pm82x.c
@@ -0,0 +1,337 @@
+/*
+ * Copyright(C) 2005
+ * Wolfgang Denk, DENX Software Engineering, <wd@denx.de>
+ *
+ * Copyright(C) 2005
+ * Josef Wagner, MicroSys GmbH <wagner@microsys.de>
+ *
+ * This code is GPLed
+ *
+ */
+
+/*
+ * PM825/PM826 uses 4 x Intel 28F160C3B (16 Mbit)
+ * 4 x Intel 28F160C3 (16 Mbit) in one bank (64 bit bankwidth)
+ * for a total of 8MiB flash
+ *
+ * PM827/PM828 uses 4 x Intel 28F640C3 (64 Mbit)
+ * in one bank (64 bit bankwidth)
+ * for a total of 32MiB flash
+
+ * Thus we have to chose:
+ * - Support 64-bit bankwidth => CONFIG_MTD_CFI_B8
+ * - Support 4-chip flash interleave => CONFIG_MTD_CFI_I4
+*/
+#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 <linux/interrupt.h>
+#include <asm/io.h>
+#include <asm/ppcboot.h>
+
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/map.h>
+#include <linux/mtd/partitions.h>
+
+#define FLASH_BANK_MAX 1
+
+/* The "residual" data board information structure the boot loader
+ * hands to us.
+ */
+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 __iomem void *start_scan_addr;
+
+static map_word pm82x_read64(struct map_info *map, unsigned long ofs)
+{
+	map_word val;
+	val.x[0] = *((volatile __u32 *)(map->map_priv_1 + ofs));
+	val.x[1] = *(((volatile __u32 *)(map->map_priv_1 + ofs)) + 1);
+	return val;
+}
+
+static void pm82x_copy_from(struct map_info *map,
+		void *to, unsigned long from, ssize_t len)
+{
+	memcpy_fromio(to, (void *)(map->map_priv_1 + from), len);
+}
+
+static void pm82x_write64 (struct map_info *map, map_word map_d,
+		unsigned long adr)
+{
+	ulong addr = map->map_priv_1 + adr;
+	__u64 d = ((__u64)map_d.x[0] << 32) + map_d.x[1];
+	__u64 * data = &d;
+	ulong flags;
+	volatile ulong msr;
+	ulong saved_msr;
+	volatile long saved_fr[2];
+
+	local_irq_save (flags);
+
+	__asm__ __volatile__ ("mfmsr %0" : "=r" (msr):);
+	saved_msr = msr;
+	msr |= MSR_FP;
+	msr &= ~(MSR_FE0 | MSR_FE1);
+
+	__asm__ __volatile__ (
+		"mtmsr %0\n"
+		"isync\n"
+		:
+		: "r" (msr));
+
+	__asm__ __volatile__ (
+		"stfd 1, 0(%2)\n"
+		"lfd  1, 0(%0)\n"
+		"stfd 1, 0(%1)\n"
+		"lfd  1, 0(%2)\n"
+		 :
+		 : "r" (data), "r" (addr), "b" (saved_fr)
+	);
+
+	__asm__ __volatile__ (
+		"mtmsr %0\n"
+		"isync\n"
+		:
+		: "r" (saved_msr));
+
+	local_irq_restore (flags);
+}
+
+static void pm82x_copy_to(struct map_info *map,
+		unsigned long to, const void *from, ssize_t len)
+{
+	memcpy_toio((void *)(map->map_priv_1 + to), from, len);
+}
+
+/*
+ * The following defines the partition layout of PM825/PM826 boards.
+ *
+ * See include/linux/mtd/partitions.h for definition of the
+ * mtd_partition structure.
+ *
+ */
+
+#ifdef CONFIG_MTD_PARTITIONS
+/* partition definition for first (and only) flash bank
+ * also ref. to "drivers/char/flash_config.c"
+ */
+static struct mtd_partition pm82x_partitions_8M[] = {
+	{
+		.name =		"U-Boot",		/* U-Boot image		*/
+		.offset =	0x00000000,
+		.size =		0x00040000,		/* 256 KB		*/
+	},
+	{
+		.name =		"kernel",		/* Linux kernel image	*/
+		.offset =	0x00040000,
+		.size =		0x000C0000,		/* 768 KB		*/
+	},
+	{
+		.name =		"ramdisk",		/* Ramdisk image	*/
+		.offset =	0x00100000,
+		.size =		0x00300000,		/* 3 MiB		*/
+	},
+	{
+		.name =		"user",			/* User file system	*/
+		.offset =	0x00400000,
+		.size =		0x00400000,		/* 4 MiB		*/
+	},
+};
+
+static struct mtd_partition pm82x_partitions_32M[] = {
+	{
+		.name =		"U-Boot",		/* U-Boot image		*/
+		.offset =	0x00000000,
+		.size =		0x00040000,		/* 256 KB		*/
+	},
+	{
+		.name = 	"kernel",		/* Linux kernel image	*/
+		.offset =	0x00040000,
+		.size =		0x000C0000,		/* 768 KB		*/
+	},
+	{
+		.name =		"ramdisk",		/* Ramdisk image	*/
+		.offset =	0x00100000,
+		.size =		0x00300000,		/* 3 MiB		*/
+	},
+	{
+		.name =		"user",			/* User file system	*/
+		.offset =	0x00400000,
+		.size =		0x01C00000,		/* 28 MiB		*/
+	},
+};
+
+#endif	/* CONFIG_MTD_PARTITIONS */
+
+int __init init_pm82x_mtd(void)
+{
+	int idx = 0, ret = 0;
+	unsigned long flash_addr, flash_size, mtd_size = 0;
+
+	/* pointer to PM82x board info data */
+	bd_t *bd = (bd_t *)__res;
+
+#ifdef CONFIG_MTD_CMDLINE_PARTS
+	int n;
+	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 = ioremap(flash_addr, flash_size);
+	if (!start_scan_addr) {
+		printk(KERN_ERR "%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;
+
+		pr_debug ("%s: chip probing count %d\n", __FUNCTION__, idx);
+
+		map_banks[idx] = kmalloc(sizeof(struct map_info) + 16, 
+								GFP_KERNEL);
+		if (map_banks[idx] == NULL) {
+			ret = -ENOMEM;
+			goto error_mem;
+		}
+		memset(map_banks[idx]->name, 0, 16);
+		sprintf(map_banks[idx]->name, "PM82x-%d", idx);
+		map_banks[idx]->size	  = flash_size;
+		map_banks[idx]->bankwidth = 8;
+		map_banks[idx]->read	  = pm82x_read64;
+		map_banks[idx]->copy_from = pm82x_copy_from;
+		map_banks[idx]->write	  = pm82x_write64;
+		map_banks[idx]->copy_to	  = pm82x_copy_to;
+		map_banks[idx]->map_priv_1= (unsigned long)
+			start_scan_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++;
+			pr_debug ("%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(KERN_ERR "PM82x: No supported flash chips found!\n");
+		ret = -ENXIO;
+		goto error_mem;
+	}
+
+#ifdef CONFIG_MTD_PARTITIONS
+	/*
+	 * Select static partition definitions
+	 */
+	if (flash_size == 0x800000) {
+		part_banks[0].mtd_part	= pm82x_partitions_8M;
+		part_banks[0].nums	= ARRAY_SIZE(pm82x_partitions_8M);
+	} else {
+		part_banks[0].mtd_part	= pm82x_partitions_32M;
+		part_banks[0].nums	= ARRAY_SIZE(pm82x_partitions_32M);
+	}
+	part_banks[0].type	= "static image";
+
+	for(idx = 0; idx < num_banks ; idx++) {
+#ifdef CONFIG_MTD_CMDLINE_PARTS
+		n = parse_mtd_partitions(mtd_banks[idx],
+						part_probes,
+						&part_banks[idx].mtd_part,
+						0);
+		pr_debug ("%s: %d command line partitions on bank %d\n",
+			__FUNCTION__, n, idx);
+		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
+					"PM82x flash bank %d: no partition info "
+					"available, registering whole device\n", idx);
+			add_mtd_device(mtd_banks[idx]);
+		} else {
+			printk (KERN_NOTICE
+					"PM82x 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 "PM82x 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) {
+			kfree(map_banks[idx]);
+			map_banks[idx] = NULL;
+		}
+	}
+	iounmap(start_scan_addr);
+
+	return ret;
+}
+
+static void __exit cleanup_pm82x_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]);
+	}
+	if (start_scan_addr) {
+		iounmap(start_scan_addr);
+		start_scan_addr = NULL;
+	}
+}
+
+module_init(init_pm82x_mtd);
+module_exit(cleanup_pm82x_mtd);
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Wolfgang Denk <wd@denx.de>");
+MODULE_DESCRIPTION("MTD map driver for PM82x boards");
diff --git a/drivers/mtd/nand/diskonchip.c b/drivers/mtd/nand/diskonchip.c
index 21d4e8f..bf7cf54 100644
--- a/drivers/mtd/nand/diskonchip.c
+++ b/drivers/mtd/nand/diskonchip.c
@@ -55,7 +55,11 @@ static unsigned long __initdata doc_loca
 	0xe8000, 0xea000, 0xec000, 0xee000,
 #endif /*  CONFIG_MTD_DOCPROBE_HIGH */
 #elif defined(__PPC__)
+#if defined(CONFIG_PM82X)
+	0xff800000,
+#else
 	0xe4000000,
+#endif
 #elif defined(CONFIG_MOMENCO_OCELOT)
 	0x2f000000,
         0xff000000,

^ permalink raw reply related

* Re: [PATCH] ppc32: 8xx board-specific platform stuff for fs_enet
From: Marcelo Tosatti @ 2005-11-23 12:00 UTC (permalink / raw)
  To: Kumar Gala, Dan Malek, 'Aristeu Sergio Rozanski Filho',
	Pantelis Antoniou
  Cc: Paul Mackerras, linuxppc-embedded list
In-Reply-To: <ACB2F36A-0A37-4EA1-9E4A-F773AD4E0D86@kernel.crashing.org>

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

On Wed, Nov 23, 2005 at 10:05:19AM -0600, Kumar Gala wrote:
> 
> On Nov 23, 2005, at 3:11 AM, Marcelo Tosatti wrote:
> 
> >On Wed, Nov 23, 2005 at 01:40:38PM +1100, Paul Mackerras wrote:
> >>Marcelo Tosatti writes:
> >>
> >>>Paul, you're OK with the following definitions on asm-ppc/io.h?
> >>>
> >>>+/* access ports */
> >>>+#define setbits32(_addr, _v) out_be32(&(_addr), in_be32(& 
> >>>(_addr)) |  (_v))
> >>>+#define clrbits32(_addr, _v) out_be32(&(_addr), in_be32(& 
> >>>(_addr)) & ~(_v))
> >>>+
> >>>+#define setbits16(_addr, _v) out_be16(&(_addr), in_be16(& 
> >>>(_addr)) |  (_v))
> >>>+#define clrbits16(_addr, _v) out_be16(&(_addr), in_be16(& 
> >>>(_addr)) & ~(_v))
> >>
> >>I guess so... how many drivers need these things?
> >
> >Many.
> 
> Shouldn't these go into some non-arch specific location?  I hate  
> making drivers only build on a give arch.

Hi Kumar,

I dont really know the policy for driver placement, but it seems that
it works on a case by case basis.

The files in arch/ppc/8xx_io/ (which is what I think you refer to as
candidates for drivers/), are:

1) commproc.c 
Basic API for dpram access. Core code.

2) micropatch.c
microcode update code/data. Core code.

3) cs4218.h
4) cs4218_tdm.c

cs4218 does not compile at the moment due to syntatical problems,
I've fixed them up and the driver compiles, but I don't know 
if it works (patch attached).

I would not be surprised if the driver has been broken since
long time ago.

Does anyone have hardware to test it? Dan? 

Otherwise we should remove it from the tree, since its unmaintained
and unused.

5) enet.c
6) fec.c

The ENET/FEC network drivers are obseleted by fs_enet.

However there are some PHY descriptions in fec.c which are missing from
fs_enet - we'd better make sure to have them all in the new driver
before removing the old one.

Aris, would you mind looking into this?

Once we have that we can set a deadline at Documentation/feature-removal.txt 
if desired.

Other than those there are no 8xx drivers in arch/ppc/ AFAIK.


[-- Attachment #2: cs42.patch --]
[-- Type: text/plain, Size: 489 bytes --]

@@ -1380,7 +1381,7 @@
 }
 
 static DEFINE_TIMER(beep_timer, cs_nosound, 0, 0);
-};
+//};
 
 static void cs_mksound(unsigned int hz, unsigned int ticks)
 {
@@ -1462,7 +1463,7 @@
 }
 
 static MACHINE mach_cs4218 = {
-	.owner =	THIS_MODULE,
+//	.owner =	THIS_MODULE,
 	.name =		"HIOX CS4218",
 	.name2 =	"Built-in Sound",
 	.dma_alloc =	CS_Alloc,
@@ -2475,6 +2476,7 @@
 	volatile smc_t		*sp;
 	volatile smc_uart_t	*up;
 	volatile immap_t	*immap;
+	unsigned long	dp_addr;
 
 	has_sound = 0;
 

^ permalink raw reply

* Re: Tsi108
From: Kumar Gala @ 2005-11-23 17:21 UTC (permalink / raw)
  To: Adrian Cox; +Cc: linuxppc-embedded
In-Reply-To: <1132761494.2776.14.camel@localhost>

On Wed, 23 Nov 2005, Adrian Cox wrote:

> I've just received the evaluation board for the Tsi108 bridge:
> 
> http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MCEVALHPC2-7448&nodeId=0162468rH3bTdGb9MM
> 
> The kernel supplied is 2.6.11.1, and it looks like it needs the
> following to bring it up to date:
> 
> 1) Using platform_device for on-chip resources.
> 2) Coding standards cleanup.
> 3) Fix the ethernet driver
> 3a) Fix bugs in stopping and starting interface
> 3b) remove virt_to_phys
> 3c) ethtool support?
> 
> Has anybody started on this before I begin?

I'm not aware of anyone, but I know I told people at FSL to clean this up.

Also, the PIC code needs to be looked at. The TSI108 looked too similar to 
openpic to warrant its own code when I reviewed this code awhile ago.

- kumar

^ permalink raw reply

* Re: [PATCH] Fix USB suspend/resume crasher
From: Greg KH @ 2005-11-23 17:10 UTC (permalink / raw)
  To: Benjamin Herrenschmidt
  Cc: Andrew Morton, Linux Kernel list, David Brownell,
	linuxppc-dev list, Alan Stern
In-Reply-To: <1132715288.26560.262.camel@gaston>

On Wed, Nov 23, 2005 at 02:08:07PM +1100, Benjamin Herrenschmidt wrote:
> This patch applies on top of the patch that moves the PowerMac specific
> code out of ohci-pci.c to hcd-pci.c where it belongs. This patch isn't
> upstream yet for reasons I don't fully understand (why does USB stuffs
> has such a high latency for going upstream ?), I'm sending it as a reply
> to this email for completeness.

Sorry, I hadn't seen it, otherwise I would have sent it on.

David, are you ok with the patch Ben sent on as a followup?

thanks,

greg k-h

^ permalink raw reply

* RE: Booting hangs after "Calibrating delay loop..."
From: Autran, Guillaume @ 2005-11-23 16:39 UTC (permalink / raw)
  To: 'linuxppc-embedded@ozlabs.org',
	'n_tbinh@yahoo.com'

Hi,

I remember there is some race condition before calling set_dec(..) in time.c
Basically, what happens is that the external decrementer is set way before
the interrupt gets enabled. When we get to enable the interrupt, the
decrementer value already reached 0 and wrapped arround (at least in our
case). 
The fix was to comment the line in:
arch/ppc/kernel/time.c:330: set_dec(tb_ticks_per_jiffy);

And move it to:
arch/ppc/syslib/m8xx_setup.c
inside m8xx_calibrate_decr() just before setting up the interrupt for the
decrementer.

In time.c, you may also need to initialize stamp = get_native_tbl(); as this
variable may not have been initialized since you are using an external
decrementer.

Try that...

Guillaume.

^ permalink raw reply

* Tsi108
From: Adrian Cox @ 2005-11-23 15:58 UTC (permalink / raw)
  To: linuxppc-embedded

I've just received the evaluation board for the Tsi108 bridge:

http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MCEVALHPC2-7448&nodeId=0162468rH3bTdGb9MM

The kernel supplied is 2.6.11.1, and it looks like it needs the
following to bring it up to date:

1) Using platform_device for on-chip resources.
2) Coding standards cleanup.
3) Fix the ethernet driver
3a) Fix bugs in stopping and starting interface
3b) remove virt_to_phys
3c) ethtool support?

Has anybody started on this before I begin?

-- 
Adrian Cox <adrian@humboldt.co.uk>

^ permalink raw reply

* Re: [PATCH 2/3] ppc32: PCIX support for Yucca board
From: Ruslan V. Sushko @ 2005-11-23 16:29 UTC (permalink / raw)
  To: Dale Farnsworth; +Cc: linuxppc-embedded
In-Reply-To: <20051121174745.GA2654@xyzzy.farnsworth.org>

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

This is updated Yucca PCI-X patch with removed leading spaces

Signed-off-by: Ruslan V. Sushko <rsushko@ru.mvista.com> 

Thanks,
Ruslan Sushko

On Mon, 2005-11-21 at 10:47 -0700, Dale Farnsworth wrote:
> On Mon, Nov 21, 2005 at 02:25:52PM +0000, Ruslan V. Sushko wrote:
> > This patch includes following changes:
> > 
> > 1) Fix wrong PCIe config space address calculation for slot #3 (Using an
> > signed integer for port numbering will cause wrong address accessing)
> > 2) Fix the PCI bus numbering assignment. This will be an issues if more
> > than one PCI card is inserted.
> > 3) Add verbose error checking.
> > 4) Remove commented or unused lines.
> > 
> > Signed-off-by: Ruslan V. Sushko <rsushko@ru.mvista.com>
> 
> There are a couple of whitespace/style problems in these 3 patches.
> Please clean them up and re-submit.
> 
> > diff --git a/arch/ppc/platforms/4xx/yucca.c b/arch/ppc/platforms/4xx/yucca.c
> > --- a/arch/ppc/platforms/4xx/yucca.c
> > +++ b/arch/ppc/platforms/4xx/yucca.c
> > @@ -280,12 +276,14 @@ yucca_setup_hoses(void)
> >  				  IORESOURCE_MEM,
> >  				  name);
> >  
> > -		hose->first_busno = 0;
> > -		hose->last_busno  = 15;
> > +		hose->first_busno = bus_no;
> > +		hose->last_busno  = 0xFF;
> >  		hose_type[hose->index] = HOSE_PCIE0 + i;
> >  
> >  		ppc440spe_setup_pcie(hose, i);
> >  		hose->last_busno = pciauto_bus_scan(hose, hose->first_busno);
> > +                bus_no = hose->last_busno + 1;
> > +                printk(KERN_INFO "%s: resources allocated\n", name);
> 
> The above two lines have leading spaces instead of tabs.  The same
> problem exists in several other lines added by the patches.
> 
> diff --git a/arch/ppc/syslib/ppc440spe_pcie.c b/arch/ppc/syslib/ppc440spe_pcie.c
> --- a/arch/ppc/syslib/ppc440spe_pcie.c
> +++ b/arch/ppc/syslib/ppc440spe_pcie.c
> > @@ -157,33 +162,37 @@ int ppc440spe_init_pcie(void)
> >  	/* Set PLL clock receiver to LVPECL */
> >  	SDR_WRITE(PESDR0_PLLLCT1, SDR_READ(PESDR0_PLLLCT1) | 1 << 28);
> >  
> > -	check_error();
> > -
> > -	printk(KERN_INFO "PCIE initialization OK\n");
> > -
> > -	if (!(SDR_READ(PESDR0_PLLLCT2) & 0x10000))
> > -		printk(KERN_INFO "PESDR_PLLCT2 resistance calibration failed (0x%08x)\n",
> > +	if (check_error()) {
> > +                return -1;
> > +        }
> 
> The above braces aren't needed.
> 
> > +
> > +	if (!(SDR_READ(PESDR0_PLLLCT2) & 0x10000)) {
> > +		printk(KERN_INFO "PCIE: PESDR_PLLCT2 resistance calibration "
> > +                                "failed (0x%08x)\n",
> >  		       SDR_READ(PESDR0_PLLLCT2));
> > +                return -1;
> > +        }
> >  
> >  	/* De-assert reset of PCIe PLL, wait for lock */
> >  	SDR_WRITE(PESDR0_PLLLCT1, SDR_READ(PESDR0_PLLLCT1) & ~(1 << 24));
> >  	udelay(3);
> > +	printk(KERN_INFO "PCIE initialization OK\n");
> >  
> >  	return 0;
> >  }
> >  
> > -int ppc440spe_init_pcie_rootport(int port)
> > +int ppc440spe_init_pcie_rootport(u32 port)
> >  {
> >  	static int core_init;
> >  	void __iomem *utl_base;
> > +        int attempts;
> >  	u32 val = 0;
> > -	int i;
> >  
> >  	if (!core_init) {
> > +		if(ppc440spe_init_pcie()) {
> > +			return -1;
> > +                }
> 
> Again, the above braces are unnecessary.
> 
> Thanks,
> -Dale Farnsworth
> 
> 

[-- Attachment #2: yucca_pcix_support.patch --]
[-- Type: text/x-patch, Size: 8678 bytes --]

diff --git a/arch/ppc/platforms/4xx/yucca.c b/arch/ppc/platforms/4xx/yucca.c
--- a/arch/ppc/platforms/4xx/yucca.c
+++ b/arch/ppc/platforms/4xx/yucca.c
@@ -58,6 +58,25 @@ extern bd_t __res;
 
 static struct ibm44x_clocks clocks __initdata;
 
+unsigned char ppc4xx_uic_ext_irq_cfg[] __initdata = {
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* IRQ15: EXT */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* IRQ14: EXT */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* IRQ13: EXT */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* IRQ12: PCI-X slot */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* IRQ11: EXT */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* IRQ10: EXT */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* IRQ9:  EXT */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* IRQ8:  EXT */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* IRQ7:  EXT */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* IRQ6:  EXT */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* IRQ5:  EXT */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* IRQ4:  EXT */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* IRQ3:  EXT */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* IRQ2:  EXT */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* IRQ1:  EXT */
+	(IRQ_SENSE_LEVEL | IRQ_POLARITY_NEGATIVE),	/* IRQ0:  EXT */
+};
+
 static void __init
 yucca_calibrate_decr(void)
 {
@@ -80,13 +99,83 @@ yucca_show_cpuinfo(struct seq_file *m)
 	return 0;
 }
 
-static enum {
-	HOSE_UNKNOWN,
+static void __init yucca_set_emacdata(void)
+{
+	struct ocp_def *def;
+	struct ocp_func_emac_data *emacdata;
+
+	/* Set phy_map, phy_mode, and mac_addr for the EMAC */
+	def = ocp_get_one_device(OCP_VENDOR_IBM, OCP_FUNC_EMAC, 0);
+	emacdata = def->additions;
+	emacdata->phy_map = 0x00000001;	/* Skip 0x00 */
+	emacdata->phy_mode = PHY_MODE_GMII;
+	memcpy(emacdata->mac_addr, __res.bi_enetaddr, 6);
+}
+
+enum yucca_hoses {
 	HOSE_PCIX,
 	HOSE_PCIE0,
 	HOSE_PCIE1,
-	HOSE_PCIE2
-} hose_type[4];
+	HOSE_PCIE2,
+	HOSE_MAX
+};
+
+static enum yucca_hoses hose_type[4];
+
+#define is_pcix_hose(_hs_) ((_hs_) == HOSE_PCIX)
+#define is_pcie_hose(_hs_) (((_hs_) >= HOSE_PCIE0) && ((_hs_) <= HOSE_PCIE2))
+#define pcie_hose_num(_hs_) ((_hs_) - HOSE_PCIE0)
+
+#define PCIX_READW(offset) \
+	(readw((void *)((u32)pcix_reg_base+offset)))
+
+#define PCIX_WRITEW(value, offset) \
+	(writew(value, (void *)((u32)pcix_reg_base+offset)))
+
+#define PCIX_WRITEL(value, offset) \
+	(writel(value, (void *)((u32)pcix_reg_base+offset)))
+
+static void __init
+ppc440spe_setup_pcix(struct pci_controller *hose)
+{
+	void *pcix_reg_base;
+
+	pcix_reg_base = ioremap64(PCIX0_REG_BASE, PCIX_REG_SIZE);
+
+	/* Disable all windows */
+	PCIX_WRITEL(0, PCIX0_POM0SA);
+	PCIX_WRITEL(0, PCIX0_POM1SA);
+	PCIX_WRITEL(0, PCIX0_POM2SA);
+	PCIX_WRITEL(0, PCIX0_PIM0SA);
+	PCIX_WRITEL(0, PCIX0_PIM0SAH);
+	PCIX_WRITEL(0, PCIX0_PIM1SA);
+	PCIX_WRITEL(0, PCIX0_PIM2SA);
+	PCIX_WRITEL(0, PCIX0_PIM2SAH);
+
+	/*
+	 * Setup 512MB PLB->PCI outbound mem window
+	 * (a_n000_0000->0_n000_0000)
+	 * */
+	PCIX_WRITEL(0x0000000d, PCIX0_POM0LAH);
+	PCIX_WRITEL(hose->mem_space.start, PCIX0_POM0LAL);
+	PCIX_WRITEL(0x00000000, PCIX0_POM0PCIAH);
+	PCIX_WRITEL(hose->mem_space.start, PCIX0_POM0PCIAL);
+	PCIX_WRITEL(~(hose->mem_space.end - hose->mem_space.start) | 1 ,
+			PCIX0_POM0SA);
+
+	/* Setup 1GB PCI->PLB inbound memory window at 0, enable MSIs */
+	PCIX_WRITEL(0x00000000, PCIX0_PIM0LAH);
+	PCIX_WRITEL(0x00000000, PCIX0_PIM0LAL);
+	PCIX_WRITEL(0xc0000007, PCIX0_PIM0SA);
+	PCIX_WRITEL(0xffffffff, PCIX0_PIM0SAH);
+
+		/* Enable PCIX0 I/O, Mem, and Busmaster cycles */
+	PCIX_WRITEW(PCIX_READW(PCIX0_COMMAND) | PCI_COMMAND_MEMORY |
+			PCI_COMMAND_MASTER, PCIX0_COMMAND);
+
+	iounmap(pcix_reg_base);
+	eieio();
+}
 
 static inline int
 yucca_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
@@ -100,7 +189,7 @@ yucca_map_irq(struct pci_dev *dev, unsig
 		 *	  A   B   C   D
 		 */
 		{
-			{ 81, -1, -1, -1 },	/* IDSEL 1 - PCIX0 Slot 0 */
+			{ 49, -1, -1, -1 },	/* IDSEL 1 - PCIX0 Slot 0 */
 		};
 		const long min_idsel = 1, max_idsel = 1, irqs_per_slot = 4;
 		return PCI_IRQ_TABLE_LOOKUP;
@@ -141,34 +230,25 @@ yucca_map_irq(struct pci_dev *dev, unsig
 	return -1;
 }
 
-static void __init yucca_set_emacdata(void)
-{
-	struct ocp_def *def;
-	struct ocp_func_emac_data *emacdata;
-
-	/* Set phy_map, phy_mode, and mac_addr for the EMAC */
-	def = ocp_get_one_device(OCP_VENDOR_IBM, OCP_FUNC_EMAC, 0);
-	emacdata = def->additions;
-	emacdata->phy_map = 0x00000001;	/* Skip 0x00 */
-	emacdata->phy_mode = PHY_MODE_GMII;
-	memcpy(emacdata->mac_addr, __res.bi_enetaddr, 6);
-}
-
 static int __init yucca_pcie_card_present(int port)
 {
-   void __iomem *pcie_fpga_base;
-   u16 reg;
+	void __iomem *pcie_fpga_base;
+	u16 reg;
+
+	pcie_fpga_base = ioremap64(YUCCA_FPGA_REG_BASE, YUCCA_FPGA_REG_SIZE);
+	if (!pcie_fpga_base) {
+		printk(KERN_ERR "FPGA remap filed\n");
+		return 0;
+	}
+	reg = in_be16(pcie_fpga_base + FPGA_REG1C);
+	iounmap(pcie_fpga_base);
 
-   pcie_fpga_base = ioremap64(YUCCA_FPGA_REG_BASE, YUCCA_FPGA_REG_SIZE);
-   reg = in_be16(pcie_fpga_base + FPGA_REG1C);
-   iounmap(pcie_fpga_base);
-
-   switch(port) {
-   case 0: return !(reg & FPGA_REG1C_PE0_PRSNT);
-   case 1: return !(reg & FPGA_REG1C_PE1_PRSNT);
-   case 2: return !(reg & FPGA_REG1C_PE2_PRSNT);
-   default: return 0;
-   }
+	switch(port) {
+	case 0: return !(reg & FPGA_REG1C_PE0_PRSNT);
+	case 1: return !(reg & FPGA_REG1C_PE1_PRSNT);
+	case 2: return !(reg & FPGA_REG1C_PE2_PRSNT);
+	default: return 0;
+	}
 }
 
 /*
@@ -240,35 +320,44 @@ yucca_setup_hoses(void)
 {
 	struct pci_controller *hose;
 	char name[20];
+	enum yucca_hoses hs;
 	int bus_no = 0;
-	int i;
 
-	for (i = 0; i <= 2; ++i) {
-		if (!yucca_pcie_card_present(i))
-			continue;
-
-		printk(KERN_INFO "PCIE%d: card present\n", i);
-		yucca_setup_pcie_fpga_rootpoint(i);
-		if (ppc440spe_init_pcie_rootport(i)) {
-			printk(KERN_WARNING "PCIE%d: initialization failed\n", i);
-			continue;
+	for (hs = HOSE_PCIX; hs < HOSE_MAX; ++hs) {
+		if (is_pcie_hose(hs)) {
+			if (!yucca_pcie_card_present(pcie_hose_num(hs)))
+				continue;
+
+			printk(KERN_INFO "PCIE%d: card present\n",
+					pcie_hose_num(hs));
+
+			yucca_setup_pcie_fpga_rootpoint(pcie_hose_num(hs));
+			if (ppc440spe_init_pcie_rootport(pcie_hose_num(hs))) {
+				printk(KERN_ERR "PCIE%d: initialization "
+						"failed\n", pcie_hose_num(hs));
+				continue;
+			}
 		}
 
 		hose = pcibios_alloc_controller();
+
 		if (!hose)
 			return;
 
-		sprintf(name, "PCIE%d host bridge", i);
+		sprintf(name, "PCI%s%d host bridge",
+				is_pcix_hose(hs) ? "X" : "E",
+				is_pcie_hose(hs) ?  pcie_hose_num(hs) : 0
+				);
 		pci_init_resource(&hose->io_resource,
 				  YUCCA_PCIX_LOWER_IO,
 				  YUCCA_PCIX_UPPER_IO,
 				  IORESOURCE_IO,
 				  name);
 
-		hose->mem_space.start = YUCCA_PCIE_LOWER_MEM +
-			i * YUCCA_PCIE_MEM_SIZE;
+		hose->mem_space.start = YUCCA_PCIX_LOWER_MEM +
+			hs * YUCCA_PCIX_MEM_SIZE;
 		hose->mem_space.end   = hose->mem_space.start +
-			YUCCA_PCIE_MEM_SIZE - 1;
+			YUCCA_PCIX_MEM_SIZE - 1;
 
 		pci_init_resource(&hose->mem_resources[0],
 				  hose->mem_space.start,
@@ -278,9 +367,24 @@ yucca_setup_hoses(void)
 
 		hose->first_busno = bus_no;
 		hose->last_busno  = 0xFF;
-		hose_type[hose->index] = HOSE_PCIE0 + i;
+		hose_type[hose->index] = hs;
+
+		if (is_pcix_hose(hs)) {
+			hose->io_space.start = YUCCA_PCIX_LOWER_IO;
+			hose->io_space.end = YUCCA_PCIX_UPPER_IO;
+			isa_io_base =
+				(unsigned long)
+					ioremap64(PCIX0_IO_BASE, PCIX_IO_SIZE);
+			hose->io_base_virt = (void *)isa_io_base;
+
+				ppc440spe_setup_pcix(hose);
+
+			setup_indirect_pci(hose, PCIX0_CFGA, PCIX0_CFGD);
+			hose->set_cfg_type = 1;
+		} else {
+			ppc440spe_setup_pcie(hose, pcie_hose_num(hs));
+		}
 
-		ppc440spe_setup_pcie(hose, i);
 		hose->last_busno = pciauto_bus_scan(hose, hose->first_busno);
 		bus_no = hose->last_busno + 1;
 		printk(KERN_INFO "%s: resources allocated\n", name);
diff --git a/include/asm-ppc/ibm44x.h b/include/asm-ppc/ibm44x.h
--- a/include/asm-ppc/ibm44x.h
+++ b/include/asm-ppc/ibm44x.h
@@ -557,12 +557,19 @@
 #define PCIX1_CFGD		0x1ec00004UL
 #define PCIX2_CFGD		0x2ec00004UL
 
+#if defined (CONFIG_440SPE)
+#define PCIX0_IO_BASE		0x0000000C08000000ULL
+#else
 #define PCIX0_IO_BASE		0x0000000908000000ULL
 #define PCIX1_IO_BASE		0x0000000908000000ULL
 #define PCIX2_IO_BASE		0x0000000908000000ULL
+#endif
+
 #define PCIX_IO_SIZE		0x00010000
 
-#ifdef CONFIG_440SP
+#if defined (CONFIG_440SPE)
+#define PCIX0_REG_BASE		0x0000000c0ec80000ULL
+#elif defined(CONFIG_440SP)
 #define PCIX0_REG_BASE		0x000000090ec80000ULL
 #else
 #define PCIX0_REG_BASE		0x000000020ec80000ULL

^ permalink raw reply

* Re: [PATCH 1/3] ppc32: Fix  a few issues in Yucca PCIe functionality
From: Ruslan V. Sushko @ 2005-11-23 16:29 UTC (permalink / raw)
  To: Dale Farnsworth; +Cc: linuxppc-embedded
In-Reply-To: <20051121174745.GA2654@xyzzy.farnsworth.org>

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

This is the updated Yucca PCIE patch with removed leading spaces and
unnecessary braces

Signed-off-by: Ruslan V. Sushko <rsushko@ru.mvista.com>

Thanks,
Ruslan Sushko

On Mon, 2005-11-21 at 10:47 -0700, Dale Farnsworth wrote:
> On Mon, Nov 21, 2005 at 02:25:52PM +0000, Ruslan V. Sushko wrote:
> > This patch includes following changes:
> > 
> > 1) Fix wrong PCIe config space address calculation for slot #3 (Using an
> > signed integer for port numbering will cause wrong address accessing)
> > 2) Fix the PCI bus numbering assignment. This will be an issues if more
> > than one PCI card is inserted.
> > 3) Add verbose error checking.
> > 4) Remove commented or unused lines.
> > 
> > Signed-off-by: Ruslan V. Sushko <rsushko@ru.mvista.com>
> 
> There are a couple of whitespace/style problems in these 3 patches.
> Please clean them up and re-submit.
> 
> > diff --git a/arch/ppc/platforms/4xx/yucca.c b/arch/ppc/platforms/4xx/yucca.c
> > --- a/arch/ppc/platforms/4xx/yucca.c
> > +++ b/arch/ppc/platforms/4xx/yucca.c
> > @@ -280,12 +276,14 @@ yucca_setup_hoses(void)
> >  				  IORESOURCE_MEM,
> >  				  name);
> >  
> > -		hose->first_busno = 0;
> > -		hose->last_busno  = 15;
> > +		hose->first_busno = bus_no;
> > +		hose->last_busno  = 0xFF;
> >  		hose_type[hose->index] = HOSE_PCIE0 + i;
> >  
> >  		ppc440spe_setup_pcie(hose, i);
> >  		hose->last_busno = pciauto_bus_scan(hose, hose->first_busno);
> > +                bus_no = hose->last_busno + 1;
> > +                printk(KERN_INFO "%s: resources allocated\n", name);
> 
> The above two lines have leading spaces instead of tabs.  The same
> problem exists in several other lines added by the patches.
> 
> diff --git a/arch/ppc/syslib/ppc440spe_pcie.c b/arch/ppc/syslib/ppc440spe_pcie.c
> --- a/arch/ppc/syslib/ppc440spe_pcie.c
> +++ b/arch/ppc/syslib/ppc440spe_pcie.c
> > @@ -157,33 +162,37 @@ int ppc440spe_init_pcie(void)
> >  	/* Set PLL clock receiver to LVPECL */
> >  	SDR_WRITE(PESDR0_PLLLCT1, SDR_READ(PESDR0_PLLLCT1) | 1 << 28);
> >  
> > -	check_error();
> > -
> > -	printk(KERN_INFO "PCIE initialization OK\n");
> > -
> > -	if (!(SDR_READ(PESDR0_PLLLCT2) & 0x10000))
> > -		printk(KERN_INFO "PESDR_PLLCT2 resistance calibration failed (0x%08x)\n",
> > +	if (check_error()) {
> > +                return -1;
> > +        }
> 
> The above braces aren't needed.
> 
> > +
> > +	if (!(SDR_READ(PESDR0_PLLLCT2) & 0x10000)) {
> > +		printk(KERN_INFO "PCIE: PESDR_PLLCT2 resistance calibration "
> > +                                "failed (0x%08x)\n",
> >  		       SDR_READ(PESDR0_PLLLCT2));
> > +                return -1;
> > +        }
> >  
> >  	/* De-assert reset of PCIe PLL, wait for lock */
> >  	SDR_WRITE(PESDR0_PLLLCT1, SDR_READ(PESDR0_PLLLCT1) & ~(1 << 24));
> >  	udelay(3);
> > +	printk(KERN_INFO "PCIE initialization OK\n");
> >  
> >  	return 0;
> >  }
> >  
> > -int ppc440spe_init_pcie_rootport(int port)
> > +int ppc440spe_init_pcie_rootport(u32 port)
> >  {
> >  	static int core_init;
> >  	void __iomem *utl_base;
> > +        int attempts;
> >  	u32 val = 0;
> > -	int i;
> >  
> >  	if (!core_init) {
> > +		if(ppc440spe_init_pcie()) {
> > +			return -1;
> > +                }
> 
> Again, the above braces are unnecessary.
> 
> Thanks,
> -Dale Farnsworth
> 
> 

[-- Attachment #2: yucca_pcie_fix.patch --]
[-- Type: text/x-patch, Size: 6815 bytes --]

diff --git a/arch/ppc/platforms/4xx/yucca.c b/arch/ppc/platforms/4xx/yucca.c
--- a/arch/ppc/platforms/4xx/yucca.c
+++ b/arch/ppc/platforms/4xx/yucca.c
@@ -240,13 +240,9 @@ yucca_setup_hoses(void)
 {
 	struct pci_controller *hose;
 	char name[20];
+	int bus_no = 0;
 	int i;
 
-	if (0 && ppc440spe_init_pcie()) {
-		printk(KERN_WARNING "PPC440SPe PCI Express initialization failed\n");
-		return;
-	}
-
 	for (i = 0; i <= 2; ++i) {
 		if (!yucca_pcie_card_present(i))
 			continue;
@@ -280,12 +276,14 @@ yucca_setup_hoses(void)
 				  IORESOURCE_MEM,
 				  name);
 
-		hose->first_busno = 0;
-		hose->last_busno  = 15;
+		hose->first_busno = bus_no;
+		hose->last_busno  = 0xFF;
 		hose_type[hose->index] = HOSE_PCIE0 + i;
 
 		ppc440spe_setup_pcie(hose, i);
 		hose->last_busno = pciauto_bus_scan(hose, hose->first_busno);
+		bus_no = hose->last_busno + 1;
+		printk(KERN_INFO "%s: resources allocated\n", name);
 	}
 
 	ppc_md.pci_swizzle = common_swizzle;
diff --git a/arch/ppc/syslib/ppc440spe_pcie.c b/arch/ppc/syslib/ppc440spe_pcie.c
--- a/arch/ppc/syslib/ppc440spe_pcie.c
+++ b/arch/ppc/syslib/ppc440spe_pcie.c
@@ -47,8 +47,6 @@ pcie_read_config(struct pci_bus *bus, un
 		break;
 	}
 
-	if (0) printk("%s: read %x(%d) @ %x\n", __func__, *val, len, offset);
-
 	return PCIBIOS_SUCCESSFUL;
 }
 
@@ -93,9 +91,10 @@ enum {
 	LNKW_X8			= 0x8
 };
 
-static void check_error(void)
+static int check_error(void)
 {
 	u32 valPE0, valPE1, valPE2;
+	int err = 0;
 
 	/* SDR0_PEGPLLLCT1 reset */
 	if (!(valPE0 = SDR_READ(PESDR0_PLLLCT1) & 0x01000000)) {
@@ -111,6 +110,7 @@ static void check_error(void)
 	     !(valPE1 & 0x01000000) ||
 	     !(valPE2 & 0x01000000)) {
 		printk(KERN_INFO "PCIE:  SDR0_PExRCSSET rstgu error\n");
+		err = -1;
 	}
 
 	/* SDR0_PExRCSSET rstdl */
@@ -118,6 +118,7 @@ static void check_error(void)
 	     !(valPE1 & 0x00010000) ||
 	     !(valPE2 & 0x00010000)) {
 		printk(KERN_INFO "PCIE:  SDR0_PExRCSSET rstdl error\n");
+		err = -1;
 	}
 
 	/* SDR0_PExRCSSET rstpyn */
@@ -132,6 +133,7 @@ static void check_error(void)
 	     (valPE1 & 0x10000000) ||
 	     (valPE2 & 0x10000000)) {
 		printk(KERN_INFO "PCIE:  SDR0_PExRCSSET hldplb error\n");
+		err = -1;
 	}
 
 	/* SDR0_PExRCSSET rdy */
@@ -139,6 +141,7 @@ static void check_error(void)
 	     (valPE1 & 0x00100000) ||
 	     (valPE2 & 0x00100000)) {
 		printk(KERN_INFO "PCIE:  SDR0_PExRCSSET rdy error\n");
+		err = -1;
 	}
 
 	/* SDR0_PExRCSSET shutdown */
@@ -146,7 +149,9 @@ static void check_error(void)
 	     (valPE1 & 0x00000100) ||
 	     (valPE2 & 0x00000100)) {
 		printk(KERN_INFO "PCIE:  SDR0_PExRCSSET shutdown error\n");
+		err = -1;
 	}
+	return err;
 }
 
 /*
@@ -157,33 +162,35 @@ int ppc440spe_init_pcie(void)
 	/* Set PLL clock receiver to LVPECL */
 	SDR_WRITE(PESDR0_PLLLCT1, SDR_READ(PESDR0_PLLLCT1) | 1 << 28);
 
-	check_error();
-
-	printk(KERN_INFO "PCIE initialization OK\n");
+	if (check_error())
+		return -1;
 
-	if (!(SDR_READ(PESDR0_PLLLCT2) & 0x10000))
-		printk(KERN_INFO "PESDR_PLLCT2 resistance calibration failed (0x%08x)\n",
+	if (!(SDR_READ(PESDR0_PLLLCT2) & 0x10000)) {
+		printk(KERN_INFO "PCIE: PESDR_PLLCT2 resistance calibration "
+				"failed (0x%08x)\n",
 		       SDR_READ(PESDR0_PLLLCT2));
+		return -1;
+	}
 
 	/* De-assert reset of PCIe PLL, wait for lock */
 	SDR_WRITE(PESDR0_PLLLCT1, SDR_READ(PESDR0_PLLLCT1) & ~(1 << 24));
 	udelay(3);
+	printk(KERN_INFO "PCIE initialization OK\n");
 
 	return 0;
 }
 
-int ppc440spe_init_pcie_rootport(int port)
+int ppc440spe_init_pcie_rootport(u32 port)
 {
 	static int core_init;
 	void __iomem *utl_base;
+	int attempts;
 	u32 val = 0;
-	int i;
 
 	if (!core_init) {
+		if(ppc440spe_init_pcie())
+			return -1;
 		++core_init;
-		i = ppc440spe_init_pcie();
-		if (i)
-			return i;
 	}
 
 	/*
@@ -254,15 +261,10 @@ int ppc440spe_init_pcie_rootport(int por
 	case 2: val = SDR_READ(PESDR2_RCSSTS); break;
 	}
 
-	if (!(val & (1 << 20)))
-		printk(KERN_INFO "PCIE%d: PGRST inactive\n", port);
-	else
-		printk(KERN_WARNING "PGRST for PCIE%d failed %08x\n", port, val);
-
-	switch (port) {
-	case 0: printk(KERN_INFO "PCIE0: LOOP %08x\n", SDR_READ(PESDR0_LOOP)); break;
-	case 1: printk(KERN_INFO "PCIE1: LOOP %08x\n", SDR_READ(PESDR1_LOOP)); break;
-	case 2: printk(KERN_INFO "PCIE2: LOOP %08x\n", SDR_READ(PESDR2_LOOP)); break;
+	if (val & (1 << 20)) {
+		printk(KERN_WARNING "PGRST for PCIE%d failed %08x\n",
+				port, val);
+		return -1;
 	}
 
 	/*
@@ -335,44 +337,47 @@ int ppc440spe_init_pcie_rootport(int por
 	/*
 	 * Check for VC0 active and assert RDY.
 	 */
+
+	attempts = 10;
 	switch (port) {
 	case 0:
-		if (!(SDR_READ(PESDR0_RCSSTS) & (1 << 16)))
-			printk(KERN_WARNING "PCIE0: VC0 not active\n");
+		while(!(SDR_READ(PESDR0_RCSSTS) & (1 << 16))) {
+			if (!(attempts--)) {
+				printk(KERN_WARNING "PCIE0: VC0 not active\n");
+				return -1;
+			}
+			mdelay(1000);
+		}
 		SDR_WRITE(PESDR0_RCSSET, SDR_READ(PESDR0_RCSSET) | 1 << 20);
 		break;
 	case 1:
-		if (!(SDR_READ(PESDR1_RCSSTS) & (1 << 16)))
-			printk(KERN_WARNING "PCIE0: VC0 not active\n");
+		while(!(SDR_READ(PESDR1_RCSSTS) & (1 << 16))) {
+			if (!(attempts--)) {
+				printk(KERN_WARNING "PCIE1: VC0 not active\n");
+				return -1;
+			}
+			mdelay(1000);
+		}
 		SDR_WRITE(PESDR1_RCSSET, SDR_READ(PESDR1_RCSSET) | 1 << 20);
 		break;
 	case 2:
-		if (!(SDR_READ(PESDR2_RCSSTS) & (1 << 16)))
-			printk(KERN_WARNING "PCIE0: VC0 not active\n");
+		while(!(SDR_READ(PESDR2_RCSSTS) & (1 << 16))) {
+			if (!(attempts--)) {
+				printk(KERN_WARNING "PCIE2: VC0 not active\n");
+				return -1;
+			}
+			mdelay(1000);
+		}
 		SDR_WRITE(PESDR2_RCSSET, SDR_READ(PESDR2_RCSSET) | 1 << 20);
 		break;
 	}
 
-#if 0
-	/* Dump all config regs */
-	for (i = 0x300; i <= 0x320; ++i)
-		printk("[%04x] 0x%08x\n", i, SDR_READ(i));
-	for (i = 0x340; i <= 0x353; ++i)
-		printk("[%04x] 0x%08x\n", i, SDR_READ(i));
-	for (i = 0x370; i <= 0x383; ++i)
-		printk("[%04x] 0x%08x\n", i, SDR_READ(i));
-	for (i = 0x3a0; i <= 0x3a2; ++i)
-		printk("[%04x] 0x%08x\n", i, SDR_READ(i));
-	for (i = 0x3c0; i <= 0x3c3; ++i)
-		printk("[%04x] 0x%08x\n", i, SDR_READ(i));
-#endif
-
 	mdelay(100);
 
 	return 0;
 }
 
-void ppc440spe_setup_pcie(struct pci_controller *hose, int port)
+void ppc440spe_setup_pcie(struct pci_controller *hose, u32 port)
 {
 	void __iomem *mbase;
 
diff --git a/arch/ppc/syslib/ppc440spe_pcie.h b/arch/ppc/syslib/ppc440spe_pcie.h
--- a/arch/ppc/syslib/ppc440spe_pcie.h
+++ b/arch/ppc/syslib/ppc440spe_pcie.h
@@ -143,7 +143,7 @@
 #define PECFG_POM0LAH		0x384
 
 int ppc440spe_init_pcie(void);
-int ppc440spe_init_pcie_rootport(int port);
-void ppc440spe_setup_pcie(struct pci_controller *hose, int port);
+int ppc440spe_init_pcie_rootport(u32 port);
+void ppc440spe_setup_pcie(struct pci_controller *hose, u32 port);
 
 #endif /* __PPC_SYSLIB_PPC440SPE_PCIE_H */

^ permalink raw reply

* Re: USB Keyboard Support
From: Igor Luri @ 2005-11-23 16:00 UTC (permalink / raw)
  To: Absolut Hunter, linuxppc-embedded
In-Reply-To: <000901c5f03c$5d4e8c60$6405a8c0@absolut>

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

Absolut Hunter wrote:

>Everyone,
>
>I recently got the USB device up and working under DENX Linux 2.4.25 with a
>MPC8280.
>
>We are using a Sm501 video chip and also have that working now, I was hoping
>to get the USB Keyboard system and running so I could totally run the system
>without having to use the serial port as the stdin/stdout anymore.
>
>However, I am having trouble getting any USB keyboard input to be recognized
>as the stdin or anything really.
>
>I have verified that the kernel sees the keyboard and associates the correct
>HID driver, and keyboard driver with it.  Also I have added the
>/dev/input/input0-3 files and have verified that they are receiving garbage
>when keys are pressed. i.e. via 'cat input0' and dumping the input to the
>console.
>
>Anyone know what else is required in order to setup the USB keyboard as the
>input device when using a VGA console?
>
>Thanks,
>
>-Russ
>
>_______________________________________________
>Linuxppc-embedded mailing list
>Linuxppc-embedded@ozlabs.org
>https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>  
>
Dear Russ,

We have MPC5200Lite board running DENX Linux 2.4.25 with Fujitsu CoralP 
video card.
To have have the USB keyboard as system stdin, the only thing I have 
done is to remove "console" args from kernel command line. I use the 
following command lines:

1)To have the console output on serial line and screen, and the input on 
serial line:

root=/dev/nfs rw ip=on console=tty console=ttyS0 init=/sbin/init

2) To have the console input on the USB keyboard and the output on the 
screen:

root=/dev/nfs rw ip=on init=/sbin/init

I have atached our kernel configuration.

Hope this helps.

[-- Attachment #2: autoconf.h --]
[-- Type: text/x-chdr, Size: 21211 bytes --]

/*
 * Automatically generated by make menuconfig: don't edit
 */
#define AUTOCONF_INCLUDED
#undef  CONFIG_UID16
#undef  CONFIG_RWSEM_GENERIC_SPINLOCK
#define CONFIG_RWSEM_XCHGADD_ALGORITHM 1
#define CONFIG_HAVE_DEC_LOCK 1

/*
 * Code maturity level options
 */
#define CONFIG_EXPERIMENTAL 1
#define CONFIG_ADVANCED_OPTIONS 1

/*
 * Loadable module support
 */
#define CONFIG_MODULES 1
#undef  CONFIG_MODVERSIONS
#define CONFIG_KMOD 1

/*
 * Platform support
 */
#define CONFIG_PPC 1
#define CONFIG_PPC32 1
#define CONFIG_6xx 1
#undef  CONFIG_40x
#undef  CONFIG_44x
#undef  CONFIG_E500
#undef  CONFIG_POWER3
#undef  CONFIG_POWER4
#undef  CONFIG_8xx
#undef  CONFIG_8260
#define CONFIG_PPC_STD_MMU 1
#undef  CONFIG_ALL_PPC
#undef  CONFIG_APUS
#undef  CONFIG_INKA4X0
#undef  CONFIG_WILLOW
#undef  CONFIG_TOP5200
#undef  CONFIG_CPCI690
#undef  CONFIG_PCORE
#undef  CONFIG_POWERPMC250
#undef  CONFIG_PPMC260
#undef  CONFIG_EV64260
#undef  CONFIG_SPRUCE
#undef  CONFIG_HMI1001
#undef  CONFIG_PP01
#undef  CONFIG_CPC45
#undef  CONFIG_CU824
#undef  CONFIG_PM520
#undef  CONFIG_PUMA_A
#undef  CONFIG_ALASKA
#undef  CONFIG_GLACIER
#define CONFIG_ICECUBE 1
#undef  CONFIG_HXEB100
#undef  CONFIG_LOPEC
#undef  CONFIG_MCPN765
#undef  CONFIG_MVME5100
#undef  CONFIG_PPLUS
#undef  CONFIG_PRPMC750
#undef  CONFIG_PRPMC800
#undef  CONFIG_SANDPOINT
#undef  CONFIG_P3G4
#undef  CONFIG_ADIR
#undef  CONFIG_K2
#undef  CONFIG_PAL4
#undef  CONFIG_SL8245
#undef  CONFIG_GEMINI
#undef  CONFIG_TQM5200
#undef  CONFIG_O2DNT
#undef  CONFIG_SORCERY
#define CONFIG_PPC_5xxx 1
#undef  CONFIG_SMP
#define CONFIG_RTHAL 1
#undef  CONFIG_ALTIVEC
#undef  CONFIG_TAU
#define CONFIG_PPC_ISATIMER 1
#undef  CONFIG_MPC5100
#define CONFIG_MPC5200 1
#define CONFIG_PPC_5xxx_PSC_CONSOLE_BAUD (115200)
#define CONFIG_UBOOT 1
#define CONFIG_PPC_5xxx_PSC_CONSOLE_PORT (0)

/*
 * General setup
 */
#undef  CONFIG_BIGPHYS_AREA
#undef  CONFIG_HIGHMEM
#undef  CONFIG_LOWMEM_SIZE_BOOL
#undef  CONFIG_KERNEL_START_BOOL
#undef  CONFIG_TASK_SIZE_BOOL
#define CONFIG_HIGHMEM_START 0xfe000000
#define CONFIG_LOWMEM_SIZE 0x30000000
#define CONFIG_KERNEL_START 0xc0000000
#define CONFIG_TASK_SIZE 0x80000000
#undef  CONFIG_ISA
#undef  CONFIG_EISA
#undef  CONFIG_SBUS
#undef  CONFIG_MCA
#define CONFIG_PCI 1
#define CONFIG_NET 1
#define CONFIG_SYSCTL 1
#define CONFIG_SYSVIPC 1
#undef  CONFIG_BSD_PROCESS_ACCT
#define CONFIG_KCORE_ELF 1
#define CONFIG_BINFMT_ELF 1
#define CONFIG_KERNEL_ELF 1
#undef  CONFIG_BINFMT_MISC
#undef  CONFIG_OOM_KILLER
#undef  CONFIG_PCI_NAMES
#undef  CONFIG_HOTPLUG
#undef  CONFIG_PCMCIA

/*
 * Parallel port support
 */
#undef  CONFIG_PARPORT
#undef  CONFIG_GEN_RTC
#define CONFIG_PPC_RTC 1
#undef  CONFIG_CMDLINE_BOOL

/*
 * Embedded options
 */
#undef  CONFIG_EMBEDDED

/*
 * Memory Technology Devices (MTD)
 */
#define CONFIG_MTD 1
#undef  CONFIG_MTD_DEBUG
#define CONFIG_MTD_PARTITIONS 1
#undef  CONFIG_MTD_CONCAT
#undef  CONFIG_MTD_REDBOOT_PARTS
#undef  CONFIG_MTD_CMDLINE_PARTS
#define CONFIG_MTD_CHAR 1
#define CONFIG_MTD_BLOCK 1
#undef  CONFIG_FTL
#undef  CONFIG_NFTL
#undef  CONFIG_INFTL

/*
 * RAM/ROM/Flash chip drivers
 */
#define CONFIG_MTD_CFI 1
#undef  CONFIG_MTD_JEDECPROBE
#define CONFIG_MTD_GEN_PROBE 1
#undef  CONFIG_MTD_CFI_ADV_OPTIONS
#define CONFIG_MTD_MAP_BANK_WIDTH_1 1
#define CONFIG_MTD_MAP_BANK_WIDTH_2 1
#define CONFIG_MTD_MAP_BANK_WIDTH_4 1
#define CONFIG_MTD_CFI_I1 1
#define CONFIG_MTD_CFI_I2 1
#undef  CONFIG_MTD_CFI_INTELEXT
#define CONFIG_MTD_CFI_AMDSTD 1
#undef  CONFIG_MTD_CFI_STAA
#define CONFIG_MTD_CFI_UTIL 1
#undef  CONFIG_MTD_RAM
#undef  CONFIG_MTD_ROM
#undef  CONFIG_MTD_ABSENT
#undef  CONFIG_MTD_OBSOLETE_CHIPS
#undef  CONFIG_MTD_AMDSTD
#undef  CONFIG_MTD_SHARP
#undef  CONFIG_MTD_JEDEC

/*
 * Mapping drivers for chip access
 */
#define CONFIG_MTD_COMPLEX_MAPPINGS 1
#undef  CONFIG_MTD_PHYSMAP
#undef  CONFIG_MTD_PUMA_A
#undef  CONFIG_MTD_CHESTNUT
#undef  CONFIG_MTD_K2
#undef  CONFIG_MTD_HXEB100
#undef  CONFIG_MTD_PPMC260
#undef  CONFIG_MTD_SL8245
#undef  CONFIG_MTD_CU824
#undef  CONFIG_MTD_CPC45
#define CONFIG_MTD_ICECUBE 1
#undef  CONFIG_MTD_PP01
#undef  CONFIG_MTD_PM520
#undef  CONFIG_MTD_TQM5200
#undef  CONFIG_MTD_INKA4X0
#undef  CONFIG_MTD_SORCERY
#undef  CONFIG_MTD_HMI1001
#undef  CONFIG_MTD_P3G4
#undef  CONFIG_MTD_O2DNT
#undef  CONFIG_MTD_PCI
#undef  CONFIG_MTD_PCMCIA

/*
 * Self-contained MTD device drivers
 */
#undef  CONFIG_MTD_PMC551
#undef  CONFIG_MTD_SLRAM
#undef  CONFIG_MTD_MTDRAM
#undef  CONFIG_MTD_BLKMTD
#undef  CONFIG_MTD_DOC2000
#undef  CONFIG_MTD_DOC2001
#undef  CONFIG_MTD_DOC2001PLUS
#undef  CONFIG_MTD_DOCPROBE
#undef  CONFIG_MTD_DOCECC

/*
 * NAND Flash Device Drivers
 */
#undef  CONFIG_MTD_NAND
#undef  CONFIG_MTD_NAND_DISKONCHIP
#undef  CONFIG_MTD_NAND_NANDSIM

/*
 * Plug and Play configuration
 */
#undef  CONFIG_PNP
#undef  CONFIG_ISAPNP

/*
 * Block devices
 */
#undef  CONFIG_BLK_DEV_FD
#undef  CONFIG_BLK_DEV_XD
#undef  CONFIG_PARIDE
#undef  CONFIG_BLK_CPQ_DA
#undef  CONFIG_BLK_CPQ_CISS_DA
#undef  CONFIG_CISS_SCSI_TAPE
#undef  CONFIG_CISS_MONITOR_THREAD
#undef  CONFIG_BLK_DEV_DAC960
#undef  CONFIG_BLK_DEV_UMEM
#define CONFIG_BLK_DEV_LOOP 1
#undef  CONFIG_BLK_DEV_NBD
#define CONFIG_BLK_DEV_RAM 1
#define CONFIG_BLK_DEV_RAM_SIZE (10240)
#define CONFIG_BLK_DEV_INITRD 1
#undef  CONFIG_BLK_STATS

/*
 * Multi-device support (RAID and LVM)
 */
#undef  CONFIG_MD
#undef  CONFIG_BLK_DEV_MD
#undef  CONFIG_MD_LINEAR
#undef  CONFIG_MD_RAID0
#undef  CONFIG_MD_RAID1
#undef  CONFIG_MD_RAID5
#undef  CONFIG_MD_MULTIPATH
#undef  CONFIG_BLK_DEV_LVM

/*
 * Networking options
 */
#define CONFIG_PACKET 1
#undef  CONFIG_PACKET_MMAP
#undef  CONFIG_NETLINK_DEV
#define CONFIG_NETFILTER 1
#undef  CONFIG_NETFILTER_DEBUG
#undef  CONFIG_FILTER
#define CONFIG_UNIX 1
#define CONFIG_INET 1
#define CONFIG_IP_MULTICAST 1
#define CONFIG_IP_ADVANCED_ROUTER 1
#undef  CONFIG_IP_MULTIPLE_TABLES
#undef  CONFIG_IP_ROUTE_MULTIPATH
#undef  CONFIG_IP_ROUTE_TOS
#undef  CONFIG_IP_ROUTE_VERBOSE
#define CONFIG_IP_PNP 1
#define CONFIG_IP_PNP_DHCP 1
#undef  CONFIG_IP_PNP_BOOTP
#undef  CONFIG_IP_PNP_RARP
#undef  CONFIG_NET_IPIP
#undef  CONFIG_NET_IPGRE
#undef  CONFIG_IP_MROUTE
#undef  CONFIG_ARPD
#undef  CONFIG_INET_ECN
#define CONFIG_SYN_COOKIES 1

/*
 *   IP: Netfilter Configuration
 */
#undef  CONFIG_IP_NF_CONNTRACK
#undef  CONFIG_IP_NF_QUEUE
#undef  CONFIG_IP_NF_IPTABLES
#undef  CONFIG_IP_NF_ARPTABLES
#undef  CONFIG_IP_NF_COMPAT_IPCHAINS
#undef  CONFIG_IP_NF_COMPAT_IPFWADM

/*
 *   IP: Virtual Server Configuration
 */
#undef  CONFIG_IP_VS
#undef  CONFIG_IPV6
#undef  CONFIG_KHTTPD

/*
 *    SCTP Configuration (EXPERIMENTAL)
 */
#define CONFIG_IPV6_SCTP__ 1
#undef  CONFIG_IP_SCTP
#undef  CONFIG_ATM
#undef  CONFIG_VLAN_8021Q
#undef  CONFIG_IPX
#undef  CONFIG_ATALK

/*
 * Appletalk devices
 */
#undef  CONFIG_DEV_APPLETALK
#undef  CONFIG_DECNET
#undef  CONFIG_BRIDGE
#undef  CONFIG_X25
#undef  CONFIG_LAPB
#undef  CONFIG_LLC
#undef  CONFIG_NET_DIVERT
#undef  CONFIG_ECONET
#undef  CONFIG_WAN_ROUTER
#undef  CONFIG_NET_FASTROUTE
#undef  CONFIG_NET_HW_FLOWCONTROL

/*
 * QoS and/or fair queueing
 */
#undef  CONFIG_NET_SCHED

/*
 * Network testing
 */
#undef  CONFIG_NET_PKTGEN

/*
 * ATA/IDE/MFM/RLL support
 */
#define CONFIG_IDE 1

/*
 * IDE, ATA and ATAPI Block devices
 */
#define CONFIG_BLK_DEV_IDE 1
#undef  CONFIG_BLK_DEV_HD_IDE
#undef  CONFIG_BLK_DEV_HD
#define CONFIG_BLK_DEV_IDEDISK 1
#define CONFIG_IDEDISK_MULTI_MODE 1
#undef  CONFIG_IDEDISK_STROKE
#undef  CONFIG_BLK_DEV_IDECS
#define CONFIG_BLK_DEV_IDECD 1
#undef  CONFIG_BLK_DEV_IDETAPE
#undef  CONFIG_BLK_DEV_IDEFLOPPY
#undef  CONFIG_BLK_DEV_IDESCSI
#undef  CONFIG_IDE_TASK_IOCTL
#undef  CONFIG_BLK_DEV_CMD640
#undef  CONFIG_BLK_DEV_CMD640_ENHANCED
#undef  CONFIG_BLK_DEV_ISAPNP
#undef  CONFIG_BLK_DEV_IDEPCI
#define CONFIG_BLK_DEV_IDE_MPC5xxx 1
#undef  CONFIG_IDE_CHIPSETS
#undef  CONFIG_IDEDMA_AUTO
#undef  CONFIG_DMA_NONPCI
#undef  CONFIG_BLK_DEV_ATARAID
#undef  CONFIG_BLK_DEV_ATARAID_PDC
#undef  CONFIG_BLK_DEV_ATARAID_HPT
#undef  CONFIG_BLK_DEV_ATARAID_SII

/*
 * SCSI support
 */
#undef  CONFIG_SCSI

/*
 * Fusion MPT device support
 */
#undef  CONFIG_FUSION
#undef  CONFIG_FUSION_BOOT
#undef  CONFIG_FUSION_ISENSE
#undef  CONFIG_FUSION_CTL
#undef  CONFIG_FUSION_LAN

/*
 * IEEE 1394 (FireWire) support (EXPERIMENTAL)
 */
#undef  CONFIG_IEEE1394

/*
 * I2O device support
 */
#undef  CONFIG_I2O
#undef  CONFIG_I2O_PCI
#undef  CONFIG_I2O_BLOCK
#undef  CONFIG_I2O_LAN
#undef  CONFIG_I2O_SCSI
#undef  CONFIG_I2O_PROC

/*
 * Network device support
 */
#define CONFIG_NETDEVICES 1

/*
 * ARCnet devices
 */
#undef  CONFIG_ARCNET
#undef  CONFIG_DUMMY
#undef  CONFIG_BONDING
#undef  CONFIG_EQUALIZER
#undef  CONFIG_TUN
#undef  CONFIG_ETHERTAP

/*
 * Ethernet (10 or 100Mbit)
 */
#define CONFIG_NET_ETHERNET 1
#undef  CONFIG_MACE
#undef  CONFIG_BMAC
#undef  CONFIG_GMAC
#undef  CONFIG_SUNLANCE
#undef  CONFIG_HAPPYMEAL
#undef  CONFIG_SUNBMAC
#undef  CONFIG_SUNQE
#undef  CONFIG_SUNGEM
#undef  CONFIG_NET_VENDOR_3COM
#undef  CONFIG_LANCE
#undef  CONFIG_NET_VENDOR_SMC
#undef  CONFIG_NET_VENDOR_RACAL
#undef  CONFIG_HP100
#undef  CONFIG_NET_ISA
#undef  CONFIG_NET_PCI
#undef  CONFIG_NET_POCKET

/*
 * Ethernet (1000 Mbit)
 */
#undef  CONFIG_ACENIC
#undef  CONFIG_DL2K
#undef  CONFIG_E1000
#undef  CONFIG_MYRI_SBUS
#undef  CONFIG_NS83820
#undef  CONFIG_HAMACHI
#undef  CONFIG_YELLOWFIN
#undef  CONFIG_R8169
#undef  CONFIG_SK98LIN
#undef  CONFIG_TIGON3
#undef  CONFIG_GIANFAR
#undef  CONFIG_GFAR_NAPI
#undef  CONFIG_GFAR_BDSTASH
#undef  CONFIG_GFAR_BUFSTASH
#undef  CONFIG_FDDI
#undef  CONFIG_NETCONSOLE
#undef  CONFIG_HIPPI
#undef  CONFIG_PLIP
#undef  CONFIG_PPP
#undef  CONFIG_SLIP

/*
 * Wireless LAN (non-hamradio)
 */
#undef  CONFIG_NET_RADIO

/*
 * Token Ring devices
 */
#undef  CONFIG_TR
#undef  CONFIG_NET_FC
#undef  CONFIG_RCPCI
#undef  CONFIG_SHAPER

/*
 * Wan interfaces
 */
#undef  CONFIG_WAN

/*
 * Amateur Radio support
 */
#undef  CONFIG_HAMRADIO

/*
 * IrDA (infrared) support
 */
#undef  CONFIG_IRDA

/*
 * ISDN subsystem
 */
#undef  CONFIG_ISDN

/*
 * Old CD-ROM drivers (not SCSI, not IDE)
 */
#undef  CONFIG_CD_NO_IDESCSI

/*
 * Console drivers
 */
#undef  CONFIG_VGA_CONSOLE

/*
 * Frame-buffer support
 */
#define CONFIG_FB 1
#define CONFIG_DUMMY_CONSOLE 1
#undef  CONFIG_FB_VOYAGER
#define CONFIG_FB_MB86290 1
#undef  CONFIG_FB_RIVA
#undef  CONFIG_FB_CLGEN
#undef  CONFIG_FB_PM2
#undef  CONFIG_FB_PM3
#undef  CONFIG_FB_CYBER2000
#undef  CONFIG_FB_CT65550
#undef  CONFIG_FB_IMSTT
#undef  CONFIG_FB_S3TRIO
#undef  CONFIG_FB_VESA
#undef  CONFIG_FB_VGA16
#undef  CONFIG_FB_LYNX
#undef  CONFIG_FB_SM712
#undef  CONFIG_FB_MATROX
#undef  CONFIG_FB_ATY
#undef  CONFIG_FB_RADEON
#undef  CONFIG_FB_ATY128
#undef  CONFIG_FB_INTEL
#undef  CONFIG_FB_SIS
#undef  CONFIG_FB_NEOMAGIC
#undef  CONFIG_FB_3DFX
#undef  CONFIG_FB_VOODOO1
#undef  CONFIG_FB_TRIDENT
#undef  CONFIG_FB_IT8181
#undef  CONFIG_FB_VIRTUAL
#define CONFIG_FBCON_ADVANCED 1
#undef  CONFIG_FBCON_MFB
#undef  CONFIG_FBCON_CFB2
#undef  CONFIG_FBCON_CFB4
#undef  CONFIG_FBCON_CFB8
#define CONFIG_FBCON_CFB16 1
#undef  CONFIG_FBCON_CFB24
#undef  CONFIG_FBCON_CFB32
#undef  CONFIG_FBCON_AFB
#undef  CONFIG_FBCON_ILBM
#undef  CONFIG_FBCON_IPLAN2P2
#undef  CONFIG_FBCON_IPLAN2P4
#undef  CONFIG_FBCON_IPLAN2P8
#undef  CONFIG_FBCON_MAC
#undef  CONFIG_FBCON_VGA_PLANES
#undef  CONFIG_FBCON_VGA
#undef  CONFIG_FBCON_HGA
#undef  CONFIG_FBCON_YUV16
#undef  CONFIG_FBCON_FONTWIDTH8_ONLY
#define CONFIG_FBCON_FONTS 1
#define CONFIG_FONT_8x8 1
#define CONFIG_FONT_8x16 1
#undef  CONFIG_FONT_SUN8x16
#undef  CONFIG_FONT_SUN12x22
#undef  CONFIG_FONT_6x11
#undef  CONFIG_FONT_PEARL_8x8
#undef  CONFIG_FONT_ACORN_8x8

/*
 * Input core support
 */
#define CONFIG_INPUT 1
#define CONFIG_INPUT_KEYBDEV 1
#define CONFIG_INPUT_MOUSEDEV 1
#define CONFIG_INPUT_MOUSEDEV_SCREEN_X (1024)
#define CONFIG_INPUT_MOUSEDEV_SCREEN_Y (768)
#undef  CONFIG_INPUT_JOYDEV
#define CONFIG_INPUT_EVDEV 1
#undef  CONFIG_INPUT_UINPUT

/*
 * Macintosh device drivers
 */

/*
 * Character devices
 */
#define CONFIG_VT 1
#define CONFIG_VT_CONSOLE 1
#undef  CONFIG_CONSOLE_NOBLANK
#undef  CONFIG_CONSOLE_NOCUR
#undef  CONFIG_SERIAL
#undef  CONFIG_SERIAL_EXTENDED
#define CONFIG_SERIAL_NONSTANDARD 1
#undef  CONFIG_COMPUTONE
#undef  CONFIG_ROCKETPORT
#undef  CONFIG_CYCLADES
#undef  CONFIG_DIGIEPCA
#undef  CONFIG_DIGI
#undef  CONFIG_ESPSERIAL
#undef  CONFIG_MOXA_INTELLIO
#undef  CONFIG_MOXA_SMARTIO
#undef  CONFIG_ISI
#undef  CONFIG_SYNCLINK
#undef  CONFIG_SYNCLINKMP
#undef  CONFIG_N_HDLC
#undef  CONFIG_RISCOM8
#undef  CONFIG_SPECIALIX
#undef  CONFIG_SX
#undef  CONFIG_RIO
#undef  CONFIG_STALDRV
#undef  CONFIG_PS2MULT
#define CONFIG_UNIX98_PTYS 1
#define CONFIG_UNIX98_PTY_COUNT (256)

/*
 * I2C support
 */
#undef  CONFIG_I2C

/*
 * SPI support
 */
#undef  CONFIG_SPI

/*
 * Mice
 */
#undef  CONFIG_BUSMOUSE
#undef  CONFIG_MOUSE

/*
 * Joysticks
 */
#undef  CONFIG_INPUT_GAMEPORT
#undef  CONFIG_INPUT_NS558
#undef  CONFIG_INPUT_LIGHTNING
#undef  CONFIG_INPUT_PCIGAME
#undef  CONFIG_INPUT_CS461X
#undef  CONFIG_INPUT_EMU10K1
#undef  CONFIG_INPUT_SERIO
#undef  CONFIG_INPUT_SERPORT
#undef  CONFIG_INPUT_ANALOG
#undef  CONFIG_INPUT_A3D
#undef  CONFIG_INPUT_ADI
#undef  CONFIG_INPUT_COBRA
#undef  CONFIG_INPUT_GF2K
#undef  CONFIG_INPUT_GRIP
#undef  CONFIG_INPUT_INTERACT
#undef  CONFIG_INPUT_TMDC
#undef  CONFIG_INPUT_SIDEWINDER
#undef  CONFIG_INPUT_IFORCE_USB
#undef  CONFIG_INPUT_IFORCE_232
#undef  CONFIG_INPUT_WARRIOR
#undef  CONFIG_INPUT_MAGELLAN
#undef  CONFIG_INPUT_SPACEORB
#undef  CONFIG_INPUT_SPACEBALL
#undef  CONFIG_INPUT_STINGER
#undef  CONFIG_INPUT_DB9
#undef  CONFIG_INPUT_GAMECON
#undef  CONFIG_INPUT_TURBOGRAFX
#undef  CONFIG_QIC02_TAPE
#undef  CONFIG_IPMI_HANDLER
#undef  CONFIG_IPMI_PANIC_EVENT
#undef  CONFIG_IPMI_DEVICE_INTERFACE
#undef  CONFIG_IPMI_KCS
#undef  CONFIG_IPMI_WATCHDOG

/*
 * Watchdog Cards
 */
#undef  CONFIG_WATCHDOG
#undef  CONFIG_SCx200
#undef  CONFIG_SCx200_GPIO
#undef  CONFIG_AMD_PM768
#undef  CONFIG_NVRAM
#undef  CONFIG_RTC
#undef  CONFIG_RTC_11_MINUTE_MODE
#undef  CONFIG_DTLK
#undef  CONFIG_R3964
#undef  CONFIG_APPLICOM
#undef  CONFIG_FLASH

/*
 * Ftape, the floppy tape device driver
 */
#undef  CONFIG_FTAPE
#undef  CONFIG_AGP

/*
 * Direct Rendering Manager (XFree86 DRI support)
 */
#undef  CONFIG_DRM

/*
 * Multimedia devices
 */
#undef  CONFIG_VIDEO_DEV

/*
 * File systems
 */
#undef  CONFIG_QUOTA
#undef  CONFIG_QFMT_V2
#undef  CONFIG_AUTOFS_FS
#undef  CONFIG_AUTOFS4_FS
#undef  CONFIG_REISERFS_FS
#undef  CONFIG_REISERFS_CHECK
#undef  CONFIG_REISERFS_PROC_INFO
#undef  CONFIG_ADFS_FS
#undef  CONFIG_ADFS_FS_RW
#undef  CONFIG_AFFS_FS
#undef  CONFIG_HFS_FS
#undef  CONFIG_HFSPLUS_FS
#undef  CONFIG_BEFS_FS
#undef  CONFIG_BEFS_DEBUG
#undef  CONFIG_BFS_FS
#define CONFIG_EXT3_FS 1
#define CONFIG_JBD 1
#undef  CONFIG_JBD_DEBUG
#define CONFIG_FAT_FS 1
#define CONFIG_MSDOS_FS 1
#undef  CONFIG_UMSDOS_FS
#define CONFIG_VFAT_FS 1
#undef  CONFIG_EFS_FS
#undef  CONFIG_JFFS_FS
#define CONFIG_JFFS2_FS 1
#define CONFIG_JFFS2_FS_DEBUG (0)
#define CONFIG_JFFS2_FS_WRITEBUFFER 1
#define CONFIG_JFFS2_ZLIB 1
#define CONFIG_JFFS2_RTIME 1
#undef  CONFIG_JFFS2_RUBIN
#undef  CONFIG_JFFS2_LZO
#undef  CONFIG_JFFS2_LZARI
#undef  CONFIG_JFFS2_CMODE_NONE
#define CONFIG_JFFS2_CMODE_PRIORITY 1
#undef  CONFIG_JFFS2_CMODE_SIZE
#define CONFIG_JFFS2_PROC 1
#define CONFIG_CRAMFS 1
#define CONFIG_TMPFS 1
#define CONFIG_RAMFS 1
#define CONFIG_ISO9660_FS 1
#define CONFIG_JOLIET 1
#define CONFIG_ZISOFS 1
#undef  CONFIG_JFS_FS
#undef  CONFIG_JFS_DEBUG
#undef  CONFIG_JFS_STATISTICS
#undef  CONFIG_MINIX_FS
#undef  CONFIG_VXFS_FS
#undef  CONFIG_NTFS_FS
#undef  CONFIG_NTFS_RW
#undef  CONFIG_HPFS_FS
#define CONFIG_PROC_FS 1
#undef  CONFIG_DEVFS_FS
#undef  CONFIG_DEVFS_MOUNT
#undef  CONFIG_DEVFS_DEBUG
#define CONFIG_DEVPTS_FS 1
#undef  CONFIG_QNX4FS_FS
#undef  CONFIG_QNX4FS_RW
#define CONFIG_ROMFS_FS 1
#define CONFIG_EXT2_FS 1
#undef  CONFIG_SYSV_FS
#undef  CONFIG_UDF_FS
#undef  CONFIG_UDF_RW
#undef  CONFIG_UFS_FS
#undef  CONFIG_UFS_FS_WRITE
#undef  CONFIG_XFS_FS
#undef  CONFIG_XFS_QUOTA
#undef  CONFIG_XFS_RT
#undef  CONFIG_XFS_TRACE
#undef  CONFIG_XFS_DEBUG

/*
 * Network File Systems
 */
#undef  CONFIG_CODA_FS
#undef  CONFIG_INTERMEZZO_FS
#define CONFIG_NFS_FS 1
#define CONFIG_NFS_V3 1
#undef  CONFIG_NFS_DIRECTIO
#define CONFIG_ROOT_NFS 1
#define CONFIG_NFSD 1
#define CONFIG_NFSD_V3 1
#undef  CONFIG_NFSD_TCP
#define CONFIG_SUNRPC 1
#define CONFIG_LOCKD 1
#define CONFIG_LOCKD_V4 1
#undef  CONFIG_SMB_FS
#undef  CONFIG_NCP_FS
#undef  CONFIG_NCPFS_PACKET_SIGNING
#undef  CONFIG_NCPFS_IOCTL_LOCKING
#undef  CONFIG_NCPFS_STRONG
#undef  CONFIG_NCPFS_NFS_NS
#undef  CONFIG_NCPFS_OS2_NS
#undef  CONFIG_NCPFS_SMALLDOS
#undef  CONFIG_NCPFS_NLS
#undef  CONFIG_NCPFS_EXTRAS
#define CONFIG_ZISOFS_FS 1

/*
 * Partition Types
 */
#define CONFIG_PARTITION_ADVANCED 1
#undef  CONFIG_ACORN_PARTITION
#undef  CONFIG_OSF_PARTITION
#undef  CONFIG_AMIGA_PARTITION
#undef  CONFIG_ATARI_PARTITION
#define CONFIG_MAC_PARTITION 1
#define CONFIG_MSDOS_PARTITION 1
#undef  CONFIG_BSD_DISKLABEL
#undef  CONFIG_MINIX_SUBPARTITION
#undef  CONFIG_SOLARIS_X86_PARTITION
#undef  CONFIG_UNIXWARE_DISKLABEL
#undef  CONFIG_LDM_PARTITION
#undef  CONFIG_SGI_PARTITION
#undef  CONFIG_ULTRIX_PARTITION
#undef  CONFIG_SUN_PARTITION
#undef  CONFIG_EFI_PARTITION
#undef  CONFIG_SMB_NLS
#define CONFIG_NLS 1

/*
 * Native Language Support
 */
#define CONFIG_NLS_DEFAULT "iso8859-1"
#define CONFIG_NLS_CODEPAGE_437 1
#undef  CONFIG_NLS_CODEPAGE_737
#undef  CONFIG_NLS_CODEPAGE_775
#define CONFIG_NLS_CODEPAGE_850 1
#undef  CONFIG_NLS_CODEPAGE_852
#undef  CONFIG_NLS_CODEPAGE_855
#undef  CONFIG_NLS_CODEPAGE_857
#undef  CONFIG_NLS_CODEPAGE_860
#undef  CONFIG_NLS_CODEPAGE_861
#undef  CONFIG_NLS_CODEPAGE_862
#undef  CONFIG_NLS_CODEPAGE_863
#undef  CONFIG_NLS_CODEPAGE_864
#undef  CONFIG_NLS_CODEPAGE_865
#undef  CONFIG_NLS_CODEPAGE_866
#undef  CONFIG_NLS_CODEPAGE_869
#undef  CONFIG_NLS_CODEPAGE_936
#undef  CONFIG_NLS_CODEPAGE_950
#undef  CONFIG_NLS_CODEPAGE_932
#undef  CONFIG_NLS_CODEPAGE_949
#undef  CONFIG_NLS_CODEPAGE_874
#undef  CONFIG_NLS_ISO8859_8
#undef  CONFIG_NLS_CODEPAGE_1250
#undef  CONFIG_NLS_CODEPAGE_1251
#define CONFIG_NLS_ISO8859_1 1
#undef  CONFIG_NLS_ISO8859_2
#undef  CONFIG_NLS_ISO8859_3
#undef  CONFIG_NLS_ISO8859_4
#undef  CONFIG_NLS_ISO8859_5
#undef  CONFIG_NLS_ISO8859_6
#undef  CONFIG_NLS_ISO8859_7
#undef  CONFIG_NLS_ISO8859_9
#undef  CONFIG_NLS_ISO8859_13
#undef  CONFIG_NLS_ISO8859_14
#define CONFIG_NLS_ISO8859_15 1
#undef  CONFIG_NLS_KOI8_R
#undef  CONFIG_NLS_KOI8_U
#undef  CONFIG_NLS_UTF8

/*
 * Sound
 */
#undef  CONFIG_SOUND

/*
 * MPC5xxx I/O Options
 */
#define CONFIG_BESTCOMM_API 1
#define CONFIG_PPC_5xxx_FEC 1
#define CONFIG_USE_MDIO 1
#undef  CONFIG_FEC_GENERIC_PHY
#define CONFIG_FEC_LXT971 1
#undef  CONFIG_FEC_DP83847
#define CONFIG_PPC_5xxx_PSC 1
#define CONFIG_PPC_5xxx_PSC_CONSOLE 1
#define CONFIG_SERIAL_CONSOLE 1
#undef  CONFIG_5200_I2S
#undef  CONFIG_5200_I2S_RING

/*
 * USB support
 */
#define CONFIG_USB 1
#undef  CONFIG_USB_DEBUG
#define CONFIG_USB_DEVICEFS 1
#undef  CONFIG_USB_BANDWIDTH
#undef  CONFIG_USB_EHCI_HCD
#undef  CONFIG_USB_UHCI
#undef  CONFIG_USB_UHCI_ALT
#define CONFIG_USB_OHCI 1
#undef  CONFIG_USB_ISP1362
#define CONFIG_USB_PPC_5xxx 1
#undef  CONFIG_USB_SINGLEENDED
#define CONFIG_USB_USEBOTH 1
#define CONFIG_USB_OHCI 1
#undef  CONFIG_USB_AUDIO
#undef  CONFIG_USB_EMI26
#undef  CONFIG_USB_BLUETOOTH
#undef  CONFIG_USB_MIDI
#undef  CONFIG_USB_STORAGE
#undef  CONFIG_USB_STORAGE_DEBUG
#undef  CONFIG_USB_STORAGE_DATAFAB
#undef  CONFIG_USB_STORAGE_FREECOM
#undef  CONFIG_USB_STORAGE_ISD200
#undef  CONFIG_USB_STORAGE_DPCM
#undef  CONFIG_USB_STORAGE_HP8200e
#undef  CONFIG_USB_STORAGE_SDDR09
#undef  CONFIG_USB_STORAGE_SDDR55
#undef  CONFIG_USB_STORAGE_JUMPSHOT
#undef  CONFIG_USB_ACM
#undef  CONFIG_USB_PRINTER
#define CONFIG_USB_HID 1
#define CONFIG_USB_HIDINPUT 1
#define CONFIG_USB_HIDDEV 1
#undef  CONFIG_USB_AIPTEK
#undef  CONFIG_USB_WACOM
#undef  CONFIG_USB_KBTAB
#undef  CONFIG_USB_POWERMATE
#undef  CONFIG_USB_DC2XX
#undef  CONFIG_USB_MDC800
#undef  CONFIG_USB_SCANNER
#undef  CONFIG_USB_MICROTEK
#undef  CONFIG_USB_HPUSBSCSI
#undef  CONFIG_USB_PEGASUS
#undef  CONFIG_USB_RTL8150
#undef  CONFIG_USB_KAWETH
#undef  CONFIG_USB_CATC
#undef  CONFIG_USB_CDCETHER
#undef  CONFIG_USB_USBNET
#undef  CONFIG_USB_USS720

/*
 * USB Serial Converter support
 */
#undef  CONFIG_USB_SERIAL
#undef  CONFIG_USB_RIO500
#undef  CONFIG_USB_AUERSWALD
#undef  CONFIG_USB_TIGL
#undef  CONFIG_USB_BRLVGER
#undef  CONFIG_USB_LCD
#undef  CONFIG_ISP1362_USB
#undef  CONFIG_ISP1362_NETLINK

/*
 * Support for USB gadgets
 */
#undef  CONFIG_USB_GADGET

/*
 * Bluetooth support
 */
#undef  CONFIG_BLUEZ

/*
 * Cryptographic options
 */
#undef  CONFIG_CRYPTO

/*
 * Library routines
 */
#undef  CONFIG_CRC32
#define CONFIG_ZLIB_INFLATE 1
#define CONFIG_ZLIB_DEFLATE 1
#undef  CONFIG_REED_SOLOMON

/*
 * Kernel hacking
 */
#define CONFIG_DEBUG_KERNEL 1
#undef  CONFIG_MAGIC_SYSRQ
#undef  CONFIG_DEBUG_HIGHMEM
#undef  CONFIG_DEBUG_SLAB
#undef  CONFIG_DEBUG_IOVIRT
#undef  CONFIG_DEBUG_SPINLOCK
#undef  CONFIG_DEBUG_WAITQ
#undef  CONFIG_KGDB
#undef  CONFIG_XMON
#define CONFIG_BDI_SWITCH 1
#define CONFIG_MORE_COMPILE_OPTIONS 1
#define CONFIG_COMPILE_OPTIONS "-g -ggdb"
#undef  CONFIG_SERIAL_TEXT_DEBUG
#define CONFIG_LOG_BUF_SHIFT (0)

^ permalink raw reply

* Re: Freescale 8541 support
From: Kumar Gala @ 2005-11-23 16:19 UTC (permalink / raw)
  To: Dan Wilson; +Cc: linuxppc-embedded
In-Reply-To: <200511230816400937.2B36A589@smtp.dslextreme.com>


On Nov 23, 2005, at 10:16 AM, Dan Wilson wrote:

> On 11/23/2005 at 9:51 AM Kumar Gala wrote:
>
>> If I'm not mistaken the Denx kernel is based on 2.6.14. This should
>> have support for the MPC8541.  Realize that the differences between
>> MPC8540 and MPC8541/55 are minor.  Is there something specific on
>> MPC8541 your looking for.
>>
>> - kumar
>
> Thanks for the reply!  Unfortunately, I am constrained to use the  
> 2.4 kernel by another software package that I have to use, which  
> doesn't yet support 2.6.  It appears to me that the 8541/8555  
> support was put into 2.6 and never back-ported to 2.4.  I'll take a  
> look at the manuals today and compare the 8540 to the 8541: perhaps  
> I can live with the 8540 support that does appear to be in the 2.4  
> kernel.  If not, hopefully the porting job won't be very difficult.

I believe the linuxppc-dev 2.4 tree had support for the MPC8541/55.

- kumar

^ permalink raw reply

* RE: [PATCH] MTD: Add support for the PM82x Boards.
From: David Woodhouse @ 2005-11-23 16:15 UTC (permalink / raw)
  To: hs; +Cc: linuxppc-dev, linux-mtd
In-Reply-To: <AHEILKONAKAEJPHNMOPNMEMKCDAA.hs@denx.de>

On Wed, 2005-11-23 at 17:08 +0100, Heiko Schocher wrote:
> I ported this code from the 2.4er Kernel, so I didn´t know
> the background, why this code uses the jedec-probe. What
> exactly bothers you?

The JEDEC tables are large enough already -- if the chips do support the
CFI probe, then I'd prefer not to add them to the table.

-- 
dwmw2

^ permalink raw reply

* Re: Freescale 8541 support
From: Dan Wilson @ 2005-11-23 16:16 UTC (permalink / raw)
  To: linuxppc-embedded
In-Reply-To: <A49A0ECA-B0EB-4673-928D-0C41D0856635@kernel.crashing.org>

On 11/23/2005 at 9:51 AM Kumar Gala wrote:

> If I'm not mistaken the Denx kernel is based on 2.6.14. This should  
> have support for the MPC8541.  Realize that the differences between  
> MPC8540 and MPC8541/55 are minor.  Is there something specific on  
> MPC8541 your looking for.
> 
> - kumar

Thanks for the reply!  Unfortunately, I am constrained to use the 2.4=
 kernel by another software package that I have to use, which doesn't yet=
 support 2.6.  It appears to me that the 8541/8555 support was put into 2.6=
 and never back-ported to 2.4.  I'll take a look at the manuals today and=
 compare the 8540 to the 8541: perhaps I can live with the 8540 support=
 that does appear to be in the 2.4 kernel.  If not, hopefully the porting=
 job won't be very difficult.

Thanks for your help!

Dan.

^ permalink raw reply

* Re: [PATCH] ppc32: 8xx board-specific platform stuff for fs_enet
From: Vitaly Bordug @ 2005-11-23 16:14 UTC (permalink / raw)
  To: Kumar Gala; +Cc: Paul Mackerras, linuxppc-embedded list
In-Reply-To: <ACB2F36A-0A37-4EA1-9E4A-F773AD4E0D86@kernel.crashing.org>

Kumar Gala wrote:
> 
> On Nov 23, 2005, at 3:11 AM, Marcelo Tosatti wrote:
> 
>> On Wed, Nov 23, 2005 at 01:40:38PM +1100, Paul Mackerras wrote:
>>> Marcelo Tosatti writes:
>>>
>>>> Paul, you're OK with the following definitions on asm-ppc/io.h?
>>>>
>>>> +/* access ports */
>>>> +#define setbits32(_addr, _v) out_be32(&(_addr), in_be32(&(_addr)) 
>>>> |  (_v))
>>>> +#define clrbits32(_addr, _v) out_be32(&(_addr), in_be32(&(_addr)) & 
>>>> ~(_v))
>>>> +
>>>> +#define setbits16(_addr, _v) out_be16(&(_addr), in_be16(&(_addr)) 
>>>> |  (_v))
>>>> +#define clrbits16(_addr, _v) out_be16(&(_addr), in_be16(&(_addr)) & 
>>>> ~(_v))
>>>
>>> I guess so... how many drivers need these things?
>>
>> Many.
> 
> Shouldn't these go into some non-arch specific location?  I hate making 
> drivers only build on a give arch.
> 

Hmm, what is the worth? IIRC, in_be* stuff is defined for only ppc-specific 
archs(ppc(64),ppc,powerpc).
> - kumar
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
> 
> 


-- 
Sincerely,
Vitaly

^ permalink raw reply

* RE: [PATCH] MTD: Add support for the PM82x Boards.
From: Heiko Schocher @ 2005-11-23 16:08 UTC (permalink / raw)
  To: David Woodhouse; +Cc: linuxppc-dev, linux-mtd
In-Reply-To: <1132750986.15117.252.camel@baythorne.infradead.org>

Hello David,

On Wednesday, November 23, 2005 2:03 PM David Woodhouse wrote:
>> now without drivers/mtd/devices/docprobe.c
>
> Thanks. Are those Intel chips really not CFI-compliant?

I ported this code from the 2.4er Kernel, so I didn´t know
the background, why this code uses the jedec-probe. What
exactly bothers you?

> Please could you also correct each instance of 'MB' to 'MiB'?

OK, i send a new patch.

thanks
Heiko

^ permalink raw reply

* Re: [PATCH] ppc32: 8xx board-specific platform stuff for fs_enet
From: Kumar Gala @ 2005-11-23 16:05 UTC (permalink / raw)
  To: Marcelo Tosatti; +Cc: Paul Mackerras, linuxppc-embedded list
In-Reply-To: <20051123091107.GA3482@logos.cnet>


On Nov 23, 2005, at 3:11 AM, Marcelo Tosatti wrote:

> On Wed, Nov 23, 2005 at 01:40:38PM +1100, Paul Mackerras wrote:
>> Marcelo Tosatti writes:
>>
>>> Paul, you're OK with the following definitions on asm-ppc/io.h?
>>>
>>> +/* access ports */
>>> +#define setbits32(_addr, _v) out_be32(&(_addr), in_be32(& 
>>> (_addr)) |  (_v))
>>> +#define clrbits32(_addr, _v) out_be32(&(_addr), in_be32(& 
>>> (_addr)) & ~(_v))
>>> +
>>> +#define setbits16(_addr, _v) out_be16(&(_addr), in_be16(& 
>>> (_addr)) |  (_v))
>>> +#define clrbits16(_addr, _v) out_be16(&(_addr), in_be16(& 
>>> (_addr)) & ~(_v))
>>
>> I guess so... how many drivers need these things?
>
> Many.

Shouldn't these go into some non-arch specific location?  I hate  
making drivers only build on a give arch.

- kumar

^ permalink raw reply

* Re: Help ! 2.6.14 kernel can't bring up
From: David H. Lynch Jr @ 2005-11-23 15:54 UTC (permalink / raw)
  To: zjznliang; +Cc: linuxppc-embedded

 I was stuck at exactly this point for over a week. Basically, at this
point lots of things happen all at once:
Prior to this the MMU has had a small collection of TLB's setup.
The 6 lines of code you listed:
change from whatever Machine Status you powered up in to the proper
Machine status for running the kernel with memory translation and
exception handling enabled.
and switch from executing using physical addresses to executing using
virtual addresses.
and "jump" via the "rfi" from real mode to virtual mode at virtual
address start_here.

If you are using a LED IO port for debugging, then you MUST setup a TLB
entry for that LED or after the rfi you will not be able to write to it.
There should be a setup tlb block inside a CONFIG_SERIAL_TEXT_DEBUG
block copy it, change the address to match your LED port and set a new
index and your LED debug port should be good to go.

In my instance, my problem turned out to be with Machine Check
exceptions - The moment that rfi executes not only is virtual memory
enabled - but all exception handling is turned on.
I was able to find this my "testing" things one bit in the MSR at a
time, until I figured out which ones could be turned on and which could not.


zjznliang wrote:
> Hello David H. Lynch Jr.,!
>
> 	Now ,I am tracing the code in Linux 2.6.14 in head_8xx.S .
> 	I used led to trace the procedure,and I found the block in it .
> 	
> 644	/* Now turn on the MMU for real! */
> 645		li	r4,MSR_KERNEL
> 646		lis	r3,start_kernel@h
> 647		ori	r3,r3,start_kernel@l
> 648		mtspr	SPRN_SRR0,r3
> 649		mtspr	SPRN_SRR1,r4
> 650		rfi			/* enable MMU and jump to start_kernel */
>
> I set the led between the 649 and 650 ,and the led was light ,
> but when I set the led in the function start_kernel the led is not
> light .
>
> I thought the function start_kernel was not jumped to .
>
> what do you think ?
>   

^ permalink raw reply

* Re: USB Keyboard Support
From: Jarno Manninen @ 2005-11-23 15:55 UTC (permalink / raw)
  To: linuxppc-embedded; +Cc: Absolut Hunter
In-Reply-To: <000901c5f03c$5d4e8c60$6405a8c0@absolut>

On Wednesday 23 November 2005 16:44, Absolut Hunter wrote:

> We are using a Sm501 video chip and also have that working now, I was
> hoping to get the USB Keyboard system and running so I could totally run
> the system without having to use the serial port as the stdin/stdout
> anymore.

Um. The serial port has its advantages when doing developement. If or when you 
crash the whole system you still have the output on the terminal. :)

> Anyone know what else is required in order to setup the USB keyboard as the
> input device when using a VGA console?

If you have frame buffer up and running then setting console=tty0 should be 
enough. Depending on your system you might want to check where 
the /dev/console points to. 

- Jarno

^ permalink raw reply

* Re: Freescale 8541 support
From: Kumar Gala @ 2005-11-23 15:51 UTC (permalink / raw)
  To: Dan Wilson; +Cc: linuxppc-embedded
In-Reply-To: <200511230732120750.2B0DEEED@smtp.dslextreme.com>


On Nov 23, 2005, at 9:32 AM, Dan Wilson wrote:

> Hello,
>
> I am trying to find embedded linux support for the Freescale  
> 8541/8555 processor.  I downloaded the latest ELDK sources from the  
> Denx CVS server and found 8540 support in there but nothing (unless  
> I missed it) for the 8541.
>
> Does anyone know of any support for that processor?

If I'm not mistaken the Denx kernel is based on 2.6.14. This should  
have support for the MPC8541.  Realize that the differences between  
MPC8540 and MPC8541/55 are minor.  Is there something specific on  
MPC8541 your looking for.

- kumar

^ permalink raw reply

* Freescale 8541 support
From: Dan Wilson @ 2005-11-23 15:32 UTC (permalink / raw)
  To: linuxppc-embedded

Hello,

I am trying to find embedded linux support for the Freescale 8541/8555=
 processor.  I downloaded the latest ELDK sources from the Denx CVS server=
 and found 8540 support in there but nothing (unless I missed it) for the=
 8541.

Does anyone know of any support for that processor?

Thanks,

Dan.

^ permalink raw reply

* USB Keyboard Support
From: Absolut Hunter @ 2005-11-23 14:44 UTC (permalink / raw)
  To: linuxppc-embedded

Everyone,

I recently got the USB device up and working under DENX Linux 2.4.25 with a
MPC8280.

We are using a Sm501 video chip and also have that working now, I was hoping
to get the USB Keyboard system and running so I could totally run the system
without having to use the serial port as the stdin/stdout anymore.

However, I am having trouble getting any USB keyboard input to be recognized
as the stdin or anything really.

I have verified that the kernel sees the keyboard and associates the correct
HID driver, and keyboard driver with it.  Also I have added the
/dev/input/input0-3 files and have verified that they are receiving garbage
when keys are pressed. i.e. via 'cat input0' and dumping the input to the
console.

Anyone know what else is required in order to setup the USB keyboard as the
input device when using a VGA console?

Thanks,

-Russ

^ permalink raw reply

* Re: [PATCH] ppc32: 8xx board-specific platform stuff for fs_enet
From: Marcelo Tosatti @ 2005-11-23  9:11 UTC (permalink / raw)
  To: Paul Mackerras; +Cc: linuxppc-embedded list
In-Reply-To: <17283.54950.681390.749679@cargo.ozlabs.ibm.com>

On Wed, Nov 23, 2005 at 01:40:38PM +1100, Paul Mackerras wrote:
> Marcelo Tosatti writes:
> 
> > Paul, you're OK with the following definitions on asm-ppc/io.h?
> > 
> > +/* access ports */
> > +#define setbits32(_addr, _v) out_be32(&(_addr), in_be32(&(_addr)) |  (_v))
> > +#define clrbits32(_addr, _v) out_be32(&(_addr), in_be32(&(_addr)) & ~(_v))
> > +
> > +#define setbits16(_addr, _v) out_be16(&(_addr), in_be16(&(_addr)) |  (_v))
> > +#define clrbits16(_addr, _v) out_be16(&(_addr), in_be16(&(_addr)) & ~(_v))
> 
> I guess so... how many drivers need these things?

Many.

Check for instance git-diff-tree -p e37b0c9670fed2264661ade1beb5c228dec29c96

^ permalink raw reply

* Re: about powerpc design,thanks very much
From: Vitaly Bordug @ 2005-11-23 14:39 UTC (permalink / raw)
  To: zengshuai; +Cc: linuxppc-embedded
In-Reply-To: <10059043.1132751565040.JavaMail.postfix@mx3.mail.sohu.com>

zengshuai@sogou.com wrote:
> first,i'm sorry my poor English.
> Our team is a new team.we want to design a production,which used to receive/transmit aal2 and aal5.
> So we choose the MPC8280 and PQ2FADS_ZU(a kind of MPC8280 Boards). Now we can run linux on this board.
> But there are so less example code about ATM,and they don't support linux,but bare-board.
> We are all student.We don't know how to go on our design.Use linux or not,use Codewarrior Development 
> Studio PowerPC ISA Edition for Comm Processors or Linux Application/Platform Edition,can get some code 
> we needed or not,and so on.
> Our freescale agent just sale us a PQ2FADS_ZU board,and say they didn't know any more.
> We need some help and some advise.What are you usually to do next to go on your design? thanks a lot.
> 
There is a sf project - http://mpc8260sar.sourceforge.net/. I don't know if PQ2FADS is
supported, but it supports 8272ADS which is really similar.

For start, take a look at http://www.denx.de/wiki/DULG/Manual.
> ------------------------------
> 我现在使用Sogou.com的2G邮箱了,你也来试试吧! 
> http://mail.sogou.com/recommend/sogoumail_invite_reg1.jsp?from=sogouinvitation&s_EMAIL=zengshuai%40sogou.com&username=linuxppc-embedded&FullName=linuxppc-embedded&Email=linuxppc-embedded%40ozlabs.org&verify=755eff4e640bdcfc57d93cbd8b0a9cb7
> 
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
> 
> 

祝好运

-- 
Sincerely,
Vitaly

^ permalink raw reply

* Re: [PATCH] ppc32: 8xx board-specific platform stuff for fs_enet
From: Marcelo Tosatti @ 2005-11-23  8:34 UTC (permalink / raw)
  To: Vitaly Bordug; +Cc: linuxppc-embedded list
In-Reply-To: <437DFEFA.4080203@ru.mvista.com>

Hi Vitaly,

On Fri, Nov 18, 2005 at 07:19:06PM +0300, Vitaly Bordug wrote:
> This adds board-specific files needed to utilize fs_enet Ethernet driver
> for MPC885ADS and MPC866ADS.
> 
> Signed-off-by: Vitaly Bordug <vbordug@ru.mvista.com>

Looks nice.

Just one thing: Would mind separating the setbits/clearbits patch, and
while you're at it, convert the current read-and-modify operations to
setbits/clearbits?

They have been switched to use IO accessors with GIT commit
e37b0c9670fed2264661ade1beb5c228dec29c96

Thanks

^ permalink raw reply

* about powerpc design,thanks very much
From: zengshuai @ 2005-11-23 13:12 UTC (permalink / raw)
  To: linuxppc-embedded

first,i'm sorry my poor English.
Our team is a new team.we want to design a production,which used to receive/transmit aal2 and aal5.
So we choose the MPC8280 and PQ2FADS_ZU(a kind of MPC8280 Boards). Now we can run linux on this board.
But there are so less example code about ATM,and they don't support linux,but bare-board.
We are all student.We don't know how to go on our design.Use linux or not,use Codewarrior Development 
Studio PowerPC ISA Edition for Comm Processors or Linux Application/Platform Edition,can get some code 
we needed or not,and so on.
Our freescale agent just sale us a PQ2FADS_ZU board,and say they didn't know any more.
We need some help and some advise.What are you usually to do next to go on your design? thanks a lot.

------------------------------
我现在使用Sogou.com的2G邮箱了,你也来试试吧! 
http://mail.sogou.com/recommend/sogoumail_invite_reg1.jsp?from=sogouinvitation&s_EMAIL=zengshuai%40sogou.com&username=linuxppc-embedded&FullName=linuxppc-embedded&Email=linuxppc-embedded%40ozlabs.org&verify=755eff4e640bdcfc57d93cbd8b0a9cb7

^ permalink raw reply

* Re: [PATCH] MTD: Add support for the PM82x Boards.
From: David Woodhouse @ 2005-11-23 13:03 UTC (permalink / raw)
  To: hs; +Cc: linuxppc-dev, tglx, linux-mtd
In-Reply-To: <AHEILKONAKAEJPHNMOPNCEMHCDAA.hs@denx.de>

On Wed, 2005-11-23 at 13:37 +0100, Heiko Schocher wrote:
> now without drivers/mtd/devices/docprobe.c

Thanks. Are those Intel chips really not CFI-compliant? 
Please could you also correct each instance of 'MB' to 'MiB'?

-- 
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