* [PATCH v2] [POWERPC] pasemi: Implement MSI support
From: Olof Johansson @ 2007-12-12 6:44 UTC (permalink / raw)
To: linuxppc-dev
In-Reply-To: <20071212063406.GA786@lixom.net>
[POWERPC] pasemi: Implement MSI support
Implement MSI support for PA Semi PWRficient platforms. MSI is done
through a special range of sources on the openpic controller, and they're
unfortunately breaking the usual concepts of how sources are programmed:
* The source is calculated as 512 + the value written into the MSI
register
* The vector for this source is added to the source and reported
through IACK
This means that for simplicity, it makes much more sense to just set the
vector to 0 for the source, since that's really the vector we expect to
see from IACK.
Also, the affinity/priority registers will affect 16 sources at a
time. To avoid most (simple) users from being limited by this, allocate
16 sources per device but use only one. This means that there's a total
of 32 sources.
If we get usage scenarions that need more sources, the allocator should
probably be revised to take an alignment argument and size, not just do
natural alignment.
Finally, since I'm already touching the MPIC names on pasemi, rename
the base one from the somewhat odd " PAS-OPIC " to "PASEMI-OPIC".
Signed-off-by: Olof Johansson <olof@lixom.net>
---
Oops, fixed the CONFIG_PCI_MSI=n prototype to be static inline instead
of extern.
arch/powerpc/platforms/pasemi/setup.c | 2
arch/powerpc/sysdev/Makefile | 2
arch/powerpc/sysdev/mpic.c | 20 +++
arch/powerpc/sysdev/mpic.h | 7 +
arch/powerpc/sysdev/mpic_pasemi_msi.c | 172 ++++++++++++++++++++++++++++++++++
5 files changed, 201 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc/platforms/pasemi/setup.c b/arch/powerpc/platforms/pasemi/setup.c
index 6d7d068..b5dfd42 100644
--- a/arch/powerpc/platforms/pasemi/setup.c
+++ b/arch/powerpc/platforms/pasemi/setup.c
@@ -223,7 +223,7 @@ static __init void pas_init_IRQ(void)
mpic = mpic_alloc(mpic_node, openpic_addr,
MPIC_PRIMARY|MPIC_LARGE_VECTORS,
- 0, 0, " PAS-OPIC ");
+ 0, 0, "PASEMI-OPIC");
BUG_ON(!mpic);
mpic_assign_isu(mpic, 0, openpic_addr + 0x10000);
diff --git a/arch/powerpc/sysdev/Makefile b/arch/powerpc/sysdev/Makefile
index 99a77d7..85cf8c6 100644
--- a/arch/powerpc/sysdev/Makefile
+++ b/arch/powerpc/sysdev/Makefile
@@ -2,7 +2,7 @@ ifeq ($(CONFIG_PPC64),y)
EXTRA_CFLAGS += -mno-minimal-toc
endif
-mpic-msi-obj-$(CONFIG_PCI_MSI) += mpic_msi.o mpic_u3msi.o
+mpic-msi-obj-$(CONFIG_PCI_MSI) += mpic_msi.o mpic_u3msi.o mpic_pasemi_msi.o
obj-$(CONFIG_MPIC) += mpic.o $(mpic-msi-obj-y)
obj-$(CONFIG_PPC_MPC106) += grackle.o
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index e479388..aebf025 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -842,6 +842,24 @@ int mpic_set_irq_type(unsigned int virq, unsigned int flow_type)
return 0;
}
+void mpic_set_vector(unsigned int virq, unsigned int vector)
+{
+ struct mpic *mpic = mpic_from_irq(virq);
+ unsigned int src = mpic_irq_to_hw(virq);
+ unsigned int vecpri;
+
+ DBG("mpic: set_vector(mpic:@%p,virq:%d,src:%d,vector:0x%x)\n",
+ mpic, virq, src, vector);
+
+ if (src >= mpic->irq_count)
+ return;
+
+ vecpri = mpic_irq_read(src, MPIC_INFO(IRQ_VECTOR_PRI));
+ vecpri = vecpri & ~MPIC_INFO(VECPRI_VECTOR_MASK);
+ vecpri |= vector;
+ mpic_irq_write(src, MPIC_INFO(IRQ_VECTOR_PRI), vecpri);
+}
+
static struct irq_chip mpic_irq_chip = {
.mask = mpic_mask_irq,
.unmask = mpic_unmask_irq,
@@ -1230,6 +1248,8 @@ void __init mpic_init(struct mpic *mpic)
mpic_u3msi_init(mpic);
}
+ mpic_pasemi_msi_init(mpic);
+
for (i = 0; i < mpic->num_sources; i++) {
/* start with vector = source number, and masked */
u32 vecpri = MPIC_VECPRI_MASK | i |
diff --git a/arch/powerpc/sysdev/mpic.h b/arch/powerpc/sysdev/mpic.h
index 1cb6bd8..4783c6e 100644
--- a/arch/powerpc/sysdev/mpic.h
+++ b/arch/powerpc/sysdev/mpic.h
@@ -17,6 +17,7 @@ extern int mpic_msi_init_allocator(struct mpic *mpic);
extern irq_hw_number_t mpic_msi_alloc_hwirqs(struct mpic *mpic, int num);
extern void mpic_msi_free_hwirqs(struct mpic *mpic, int offset, int num);
extern int mpic_u3msi_init(struct mpic *mpic);
+extern int mpic_pasemi_msi_init(struct mpic *mpic);
#else
static inline void mpic_msi_reserve_hwirq(struct mpic *mpic,
irq_hw_number_t hwirq)
@@ -28,9 +29,15 @@ static inline int mpic_u3msi_init(struct mpic *mpic)
{
return -1;
}
+
+static inline int mpic_pasemi_msi_init(struct mpic *mpic)
+{
+ return -1;
+}
#endif
extern int mpic_set_irq_type(unsigned int virq, unsigned int flow_type);
+extern void mpic_set_vector(unsigned int virq, unsigned int vector);
extern void mpic_end_irq(unsigned int irq);
extern void mpic_mask_irq(unsigned int irq);
extern void mpic_unmask_irq(unsigned int irq);
diff --git a/arch/powerpc/sysdev/mpic_pasemi_msi.c b/arch/powerpc/sysdev/mpic_pasemi_msi.c
new file mode 100644
index 0000000..d6bfda3
--- /dev/null
+++ b/arch/powerpc/sysdev/mpic_pasemi_msi.c
@@ -0,0 +1,172 @@
+/*
+ * Copyright 2007, Olof Johansson, PA Semi
+ *
+ * Based on arch/powerpc/sysdev/mpic_u3msi.c:
+ *
+ * Copyright 2006, Segher Boessenkool, IBM Corporation.
+ * Copyright 2006-2007, Michael Ellerman, IBM Corporation.
+ *
+ * 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; version 2 of the
+ * License.
+ *
+ */
+
+#undef DEBUG
+
+#include <linux/irq.h>
+#include <linux/bootmem.h>
+#include <linux/msi.h>
+#include <asm/mpic.h>
+#include <asm/prom.h>
+#include <asm/hw_irq.h>
+#include <asm/ppc-pci.h>
+
+#include "mpic.h"
+
+/* Allocate 16 interrupts per device, to give an alignment of 16,
+ * since that's the size of the grouping w.r.t. affinity. If someone
+ * needs more than 32 MSI's down the road we'll have to rethink this,
+ * but it should be OK for now.
+ */
+#define ALLOC_CHUNK 16
+
+#define PASEMI_MSI_ADDR 0xfc080000
+
+/* A bit ugly, can we get this from the pci_dev somehow? */
+static struct mpic *msi_mpic;
+
+
+static void mpic_pasemi_msi_mask_irq(unsigned int irq)
+{
+ pr_debug("mpic_pasemi_msi_mask_irq %d\n", irq);
+ mask_msi_irq(irq);
+ mpic_mask_irq(irq);
+}
+
+static void mpic_pasemi_msi_unmask_irq(unsigned int irq)
+{
+ pr_debug("mpic_pasemi_msi_unmask_irq %d\n", irq);
+ mpic_unmask_irq(irq);
+ unmask_msi_irq(irq);
+}
+
+static struct irq_chip mpic_pasemi_msi_chip = {
+ .shutdown = mpic_pasemi_msi_mask_irq,
+ .mask = mpic_pasemi_msi_mask_irq,
+ .unmask = mpic_pasemi_msi_unmask_irq,
+ .eoi = mpic_end_irq,
+ .set_type = mpic_set_irq_type,
+ .set_affinity = mpic_set_affinity,
+ .typename = "PASEMI-MSI ",
+};
+
+static int pasemi_msi_check_device(struct pci_dev *pdev, int nvec, int type)
+{
+ if (type == PCI_CAP_ID_MSIX)
+ pr_debug("pasemi_msi: MSI-X untested, trying anyway\n");
+
+ return 0;
+}
+
+static void pasemi_msi_teardown_msi_irqs(struct pci_dev *pdev)
+{
+ struct msi_desc *entry;
+
+ pr_debug("pasemi_msi_teardown_msi_irqs, pdev %p\n", pdev);
+
+ list_for_each_entry(entry, &pdev->msi_list, list) {
+ if (entry->irq == NO_IRQ)
+ continue;
+
+ set_irq_msi(entry->irq, NULL);
+ mpic_msi_free_hwirqs(msi_mpic, virq_to_hw(entry->irq),
+ ALLOC_CHUNK);
+ irq_dispose_mapping(entry->irq);
+ }
+
+ return;
+}
+
+static int pasemi_msi_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type)
+{
+ irq_hw_number_t hwirq;
+ unsigned int virq;
+ struct msi_desc *entry;
+ struct msi_msg msg;
+ u64 addr;
+
+ pr_debug("pasemi_msi_setup_msi_irqs, pdev %p nvec %d type %d\n",
+ pdev, nvec, type);
+
+ msg.address_hi = 0;
+ msg.address_lo = PASEMI_MSI_ADDR;
+
+ list_for_each_entry(entry, &pdev->msi_list, list) {
+ /* Allocate 16 interrupts for now, since that's the grouping for
+ * affinity. This can be changed later if it turns out 32 is too
+ * few MSIs for someone, but restrictions will apply to how the
+ * sources can be changed independently.
+ */
+ hwirq = mpic_msi_alloc_hwirqs(msi_mpic, ALLOC_CHUNK);
+ if (hwirq < 0) {
+ pr_debug("pasemi_msi: failed allocating hwirq\n");
+ return hwirq;
+ }
+
+ virq = irq_create_mapping(msi_mpic->irqhost, hwirq);
+ if (virq == NO_IRQ) {
+ pr_debug("pasemi_msi: failed mapping hwirq 0x%lx\n", hwirq);
+ mpic_msi_free_hwirqs(msi_mpic, hwirq, ALLOC_CHUNK);
+ return -ENOSPC;
+ }
+
+ /* Vector on MSI is really an offset, the hardware adds
+ * it to the value written at the magic address. So set
+ * it to 0 to remain sane.
+ */
+ mpic_set_vector(virq, 0);
+
+ set_irq_msi(virq, entry);
+ set_irq_chip(virq, &mpic_pasemi_msi_chip);
+ set_irq_type(virq, IRQ_TYPE_EDGE_RISING);
+
+ pr_debug("pasemi_msi: allocated virq 0x%x (hw 0x%lx) addr 0x%lx\n",
+ virq, hwirq, addr);
+
+ /* Likewise, the device writes [0...511] into the target
+ * register to generate MSI [512...1023]
+ */
+ msg.data = hwirq-0x200;
+ write_msi_msg(virq, &msg);
+ }
+
+ return 0;
+}
+
+int mpic_pasemi_msi_init(struct mpic *mpic)
+{
+ int rc;
+
+ if (!mpic->irqhost->of_node ||
+ !of_device_is_compatible(mpic->irqhost->of_node,
+ "pasemi,pwrficient-openpic"))
+ return -ENODEV;
+
+ rc = mpic_msi_init_allocator(mpic);
+ if (rc) {
+ pr_debug("pasemi_msi: Error allocating bitmap!\n");
+ return rc;
+ }
+
+ pr_debug("pasemi_msi: Registering PA Semi MPIC MSI callbacks\n");
+
+ msi_mpic = mpic;
+ WARN_ON(ppc_md.setup_msi_irqs);
+ ppc_md.setup_msi_irqs = pasemi_msi_setup_msi_irqs;
+ ppc_md.teardown_msi_irqs = pasemi_msi_teardown_msi_irqs;
+ ppc_md.msi_check_device = pasemi_msi_check_device;
+
+ return 0;
+}
^ permalink raw reply related
* Re: [PATCH v2] [POWERPC] pasemi: Implement MSI support
From: Michael Ellerman @ 2007-12-12 6:49 UTC (permalink / raw)
To: Olof Johansson; +Cc: linuxppc-dev
In-Reply-To: <20071212064446.GB786@lixom.net>
[-- Attachment #1: Type: text/plain, Size: 7039 bytes --]
On Wed, 2007-12-12 at 00:44 -0600, Olof Johansson wrote:
> [POWERPC] pasemi: Implement MSI support
>
> Implement MSI support for PA Semi PWRficient platforms. MSI is done
> through a special range of sources on the openpic controller, and they're
> unfortunately breaking the usual concepts of how sources are programmed:
>
> * The source is calculated as 512 + the value written into the MSI
> register
> * The vector for this source is added to the source and reported
> through IACK
>
> This means that for simplicity, it makes much more sense to just set the
> vector to 0 for the source, since that's really the vector we expect to
> see from IACK.
>
> Also, the affinity/priority registers will affect 16 sources at a
> time. To avoid most (simple) users from being limited by this, allocate
> 16 sources per device but use only one. This means that there's a total
> of 32 sources.
>
> If we get usage scenarions that need more sources, the allocator should
> probably be revised to take an alignment argument and size, not just do
> natural alignment.
>
> Finally, since I'm already touching the MPIC names on pasemi, rename
> the base one from the somewhat odd " PAS-OPIC " to "PASEMI-OPIC".
>
>
> Signed-off-by: Olof Johansson <olof@lixom.net>
>
> ---
>
> Oops, fixed the CONFIG_PCI_MSI=n prototype to be static inline instead
> of extern.
>
> arch/powerpc/platforms/pasemi/setup.c | 2
> arch/powerpc/sysdev/Makefile | 2
> arch/powerpc/sysdev/mpic.c | 20 +++
> arch/powerpc/sysdev/mpic.h | 7 +
> arch/powerpc/sysdev/mpic_pasemi_msi.c | 172 ++++++++++++++++++++++++++++++++++
> 5 files changed, 201 insertions(+), 2 deletions(-)
>
> diff --git a/arch/powerpc/platforms/pasemi/setup.c b/arch/powerpc/platforms/pasemi/setup.c
> index 6d7d068..b5dfd42 100644
> --- a/arch/powerpc/platforms/pasemi/setup.c
> +++ b/arch/powerpc/platforms/pasemi/setup.c
> @@ -223,7 +223,7 @@ static __init void pas_init_IRQ(void)
>
> mpic = mpic_alloc(mpic_node, openpic_addr,
> MPIC_PRIMARY|MPIC_LARGE_VECTORS,
> - 0, 0, " PAS-OPIC ");
> + 0, 0, "PASEMI-OPIC");
> BUG_ON(!mpic);
>
> mpic_assign_isu(mpic, 0, openpic_addr + 0x10000);
> diff --git a/arch/powerpc/sysdev/Makefile b/arch/powerpc/sysdev/Makefile
> index 99a77d7..85cf8c6 100644
> --- a/arch/powerpc/sysdev/Makefile
> +++ b/arch/powerpc/sysdev/Makefile
> @@ -2,7 +2,7 @@ ifeq ($(CONFIG_PPC64),y)
> EXTRA_CFLAGS += -mno-minimal-toc
> endif
>
> -mpic-msi-obj-$(CONFIG_PCI_MSI) += mpic_msi.o mpic_u3msi.o
> +mpic-msi-obj-$(CONFIG_PCI_MSI) += mpic_msi.o mpic_u3msi.o mpic_pasemi_msi.o
> obj-$(CONFIG_MPIC) += mpic.o $(mpic-msi-obj-y)
>
> obj-$(CONFIG_PPC_MPC106) += grackle.o
> diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
> index e479388..aebf025 100644
> --- a/arch/powerpc/sysdev/mpic.c
> +++ b/arch/powerpc/sysdev/mpic.c
> @@ -842,6 +842,24 @@ int mpic_set_irq_type(unsigned int virq, unsigned int flow_type)
> return 0;
> }
>
> +void mpic_set_vector(unsigned int virq, unsigned int vector)
> +{
> + struct mpic *mpic = mpic_from_irq(virq);
> + unsigned int src = mpic_irq_to_hw(virq);
> + unsigned int vecpri;
> +
> + DBG("mpic: set_vector(mpic:@%p,virq:%d,src:%d,vector:0x%x)\n",
> + mpic, virq, src, vector);
> +
> + if (src >= mpic->irq_count)
> + return;
> +
> + vecpri = mpic_irq_read(src, MPIC_INFO(IRQ_VECTOR_PRI));
> + vecpri = vecpri & ~MPIC_INFO(VECPRI_VECTOR_MASK);
> + vecpri |= vector;
> + mpic_irq_write(src, MPIC_INFO(IRQ_VECTOR_PRI), vecpri);
> +}
> +
> static struct irq_chip mpic_irq_chip = {
> .mask = mpic_mask_irq,
> .unmask = mpic_unmask_irq,
> @@ -1230,6 +1248,8 @@ void __init mpic_init(struct mpic *mpic)
> mpic_u3msi_init(mpic);
> }
>
> + mpic_pasemi_msi_init(mpic);
> +
> for (i = 0; i < mpic->num_sources; i++) {
> /* start with vector = source number, and masked */
> u32 vecpri = MPIC_VECPRI_MASK | i |
> diff --git a/arch/powerpc/sysdev/mpic.h b/arch/powerpc/sysdev/mpic.h
> index 1cb6bd8..4783c6e 100644
> --- a/arch/powerpc/sysdev/mpic.h
> +++ b/arch/powerpc/sysdev/mpic.h
> @@ -17,6 +17,7 @@ extern int mpic_msi_init_allocator(struct mpic *mpic);
> extern irq_hw_number_t mpic_msi_alloc_hwirqs(struct mpic *mpic, int num);
> extern void mpic_msi_free_hwirqs(struct mpic *mpic, int offset, int num);
> extern int mpic_u3msi_init(struct mpic *mpic);
> +extern int mpic_pasemi_msi_init(struct mpic *mpic);
> #else
> static inline void mpic_msi_reserve_hwirq(struct mpic *mpic,
> irq_hw_number_t hwirq)
> @@ -28,9 +29,15 @@ static inline int mpic_u3msi_init(struct mpic *mpic)
> {
> return -1;
> }
> +
> +static inline int mpic_pasemi_msi_init(struct mpic *mpic)
> +{
> + return -1;
> +}
> #endif
>
> extern int mpic_set_irq_type(unsigned int virq, unsigned int flow_type);
> +extern void mpic_set_vector(unsigned int virq, unsigned int vector);
> extern void mpic_end_irq(unsigned int irq);
> extern void mpic_mask_irq(unsigned int irq);
> extern void mpic_unmask_irq(unsigned int irq);
> diff --git a/arch/powerpc/sysdev/mpic_pasemi_msi.c b/arch/powerpc/sysdev/mpic_pasemi_msi.c
> new file mode 100644
> index 0000000..d6bfda3
> --- /dev/null
> +++ b/arch/powerpc/sysdev/mpic_pasemi_msi.c
> @@ -0,0 +1,172 @@
> +/*
> + * Copyright 2007, Olof Johansson, PA Semi
> + *
> + * Based on arch/powerpc/sysdev/mpic_u3msi.c:
> + *
> + * Copyright 2006, Segher Boessenkool, IBM Corporation.
> + * Copyright 2006-2007, Michael Ellerman, IBM Corporation.
> + *
> + * 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; version 2 of the
> + * License.
> + *
> + */
> +
> +#undef DEBUG
> +
> +#include <linux/irq.h>
> +#include <linux/bootmem.h>
> +#include <linux/msi.h>
> +#include <asm/mpic.h>
> +#include <asm/prom.h>
> +#include <asm/hw_irq.h>
> +#include <asm/ppc-pci.h>
> +
> +#include "mpic.h"
> +
> +/* Allocate 16 interrupts per device, to give an alignment of 16,
> + * since that's the size of the grouping w.r.t. affinity. If someone
> + * needs more than 32 MSI's down the road we'll have to rethink this,
> + * but it should be OK for now.
> + */
> +#define ALLOC_CHUNK 16
> +
> +#define PASEMI_MSI_ADDR 0xfc080000
> +
> +/* A bit ugly, can we get this from the pci_dev somehow? */
> +static struct mpic *msi_mpic;
Before the ugliness spreads .. I'm pretty sure we can get this from the
chip_data of the virq - I haven't fixed it though because I wasn't sure
if using chip_data was kosher or not.
cheers
--
Michael Ellerman
OzLabs, IBM Australia Development Lab
wwweb: http://michael.ellerman.id.au
phone: +61 2 6212 1183 (tie line 70 21183)
We do not inherit the earth from our ancestors,
we borrow it from our children. - S.M.A.R.T Person
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply
* Re: [PATCH 2/2] kdump shutdown hook support
From: Olof Johansson @ 2007-12-12 7:01 UTC (permalink / raw)
To: Michael Neuling; +Cc: linuxppc-dev, RAISCH, Paul Mackerras, THEMANN
In-Reply-To: <20071212054512.A02B062C153@localhost.localdomain>
Hi,
A couple of comments below.
-Olof
On Wed, Dec 12, 2007 at 04:45:12PM +1100, Michael Neuling wrote:
> Index: linux-2.6-ozlabs/arch/powerpc/kernel/crash.c
> ===================================================================
> --- linux-2.6-ozlabs.orig/arch/powerpc/kernel/crash.c
> +++ linux-2.6-ozlabs/arch/powerpc/kernel/crash.c
> @@ -32,6 +32,8 @@
> #include <asm/lmb.h>
> #include <asm/firmware.h>
> #include <asm/smp.h>
> +#include <asm/system.h>
> +#include <asm/setjmp.h>
>
> #ifdef DEBUG
> #include <asm/udbg.h>
> @@ -45,6 +47,11 @@ int crashing_cpu = -1;
> static cpumask_t cpus_in_crash = CPU_MASK_NONE;
> cpumask_t cpus_in_sr = CPU_MASK_NONE;
>
> +#define CRASH_SHUTDOWN_HANDLES_NUM 1
> +/* NULL terminated list of shutdown handles */
> +static crash_shutdown_t crash_shutdown_handles[CRASH_SHUTDOWN_HANDLES_NUM+1];
> +static DEFINE_SPINLOCK(crash_handles_lock);
Not 'handlers'?
> +
> #ifdef CONFIG_SMP
> static atomic_t enter_on_soft_reset = ATOMIC_INIT(0);
>
> @@ -285,9 +292,69 @@ static inline void crash_kexec_stop_spus
> }
> #endif /* CONFIG_SPU_BASE */
>
> +/*
> + * Register a function to be called on shutdown. Only use this if you
> + * can't reset your device in the second kernel.
> + */
> +int crash_shutdown_register(crash_shutdown_t handler)
> +{
> + unsigned int i;
> +
> + spin_lock(&crash_handles_lock);
> + for(i = 0 ; i <= CRASH_SHUTDOWN_HANDLES_NUM; i++)
Missing space after for. There's a handful more of these through the
patch.
> + if (!crash_shutdown_handles[i])
> + break;
> +
> + if (i == CRASH_SHUTDOWN_HANDLES_NUM){
> + printk(KERN_ERR "Crash shutdown handles full, "
> + "not registered.\n");
> + spin_unlock(&crash_handles_lock);
> + return 1;
> + }
> +
> + /* Insert handle at end */
> + crash_shutdown_handles[i] = handler;
> + spin_unlock(&crash_handles_lock);
> + return 0;
> +}
> +EXPORT_SYMBOL(crash_shutdown_register);
> +
> +int crash_shutdown_unregister(crash_shutdown_t handler)
> +{
> + unsigned int i;
> +
> + spin_lock(&crash_handles_lock);
> + for(i = 0 ; i <= CRASH_SHUTDOWN_HANDLES_NUM; i++)
> + if (crash_shutdown_handles[i] == handler)
> + break;
> +
> + if (i == CRASH_SHUTDOWN_HANDLES_NUM){
> + printk(KERN_ERR "Crash shutdown handle not found\n");
> + spin_unlock(&crash_handles_lock);
> + return 1;
> + }
> +
> + /* Shift handles down */
> + while(crash_shutdown_handles[i]) {
> + crash_shutdown_handles[i] = crash_shutdown_handles[i+1];
> + i++;
> + }
> + spin_unlock(&crash_handles_lock);
> + return 0;
> +}
> +EXPORT_SYMBOL(crash_shutdown_unregister);
> +
> +static long crash_shutdown_buf[SETJMP_BUF_LEN];
> +
> +static int handle_fault(struct pt_regs *regs)
> +{
> + longjmp(crash_shutdown_buf, 1);
> + return 0;
> +}
> +
> void default_machine_crash_shutdown(struct pt_regs *regs)
> {
> - unsigned int irq;
> + unsigned int i;
>
> /*
> * This function is only called after the system
> @@ -301,14 +368,27 @@ void default_machine_crash_shutdown(stru
> */
> hard_irq_disable();
>
> - for_each_irq(irq) {
> - struct irq_desc *desc = irq_desc + irq;
> + for_each_irq(i) {
> + struct irq_desc *desc = irq_desc + i;
>
> if (desc->status & IRQ_INPROGRESS)
> - desc->chip->eoi(irq);
> + desc->chip->eoi(i);
>
> if (!(desc->status & IRQ_DISABLED))
> - desc->chip->disable(irq);
> + desc->chip->disable(i);
> + }
> +
> + /* Call registered shutdown routines */
> + __debugger_fault_handler = handle_fault;
> + i = 0;
> + while(crash_shutdown_handles[i]){
This could do nicely as a for loop instead:
for (i = 0; crash_shutdown_handles[i]; i++) {
> + if (setjmp(crash_shutdown_buf) == 0) {
> + asm volatile("sync; isync");
> + crash_shutdown_handles[i]();
> + asm volatile("sync; isync");
> + __delay(200);
This looks a bit random. Why the handcoded barriers, and why the delay?
At least comment why the delay is needed (and why just 200 is
sufficient). I don't see a need for the barriers at all here?
> + }
> + i++;
> }
>
> /*
> Index: linux-2.6-ozlabs/include/asm-powerpc/kexec.h
> ===================================================================
> --- linux-2.6-ozlabs.orig/include/asm-powerpc/kexec.h
> +++ linux-2.6-ozlabs/include/asm-powerpc/kexec.h
> @@ -123,6 +123,9 @@ struct pt_regs;
> extern void default_machine_kexec(struct kimage *image);
> extern int default_machine_kexec_prepare(struct kimage *image);
> extern void default_machine_crash_shutdown(struct pt_regs *regs);
> +typedef void (*crash_shutdown_t)(void);
> +extern int crash_shutdown_register(crash_shutdown_t handler);
> +extern int crash_shutdown_unregister(crash_shutdown_t handler);
>
> extern void machine_kexec_simple(struct kimage *image);
> extern void crash_kexec_secondary(struct pt_regs *regs);
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-dev
^ permalink raw reply
* Re: [PATCH v2] [POWERPC] pasemi: Implement MSI support
From: Olof Johansson @ 2007-12-12 7:23 UTC (permalink / raw)
To: Michael Ellerman; +Cc: linuxppc-dev
In-Reply-To: <1197442179.24356.3.camel@concordia>
On Wed, Dec 12, 2007 at 05:49:39PM +1100, Michael Ellerman wrote:
> Before the ugliness spreads .. I'm pretty sure we can get this from the
> chip_data of the virq - I haven't fixed it though because I wasn't sure
> if using chip_data was kosher or not.
Hmm, maybe.
I can forsee MSI and legacy interrupts being handled by different irq
hosts on systems where they are cascaded, so I'm not 100% sure that's a
workable way to do it (I assume you'd look it up through the pci_dev's
legacy irq field, right?).
-Olof
^ permalink raw reply
* MPC5121e Freescale BSP...
From: David Jander @ 2007-12-12 7:30 UTC (permalink / raw)
To: linuxppc-embedded
Hi everyone,
I have an ADS5121 evaluation module from Freescale, and wonder if there's any
Freescale engineer on this list working on the linux BSP for this
processor/SoC/platform?
I have downloaded the latest alpha release of the BSP and found it to be
completely unusable. I took some time to fix the framebuffer driver, and make
console-fb work, I even sent patches to our Freescale contact, while I
already suspected it to be completely useless, since the BSP is already
lacking behind several months from actual Freescale code, and all those
issues are most probably fixed already. Only problem: I can't seem to get the
latest versions of it. I heared rumors they'll release a new version next
week or so, but I fear it will also lack behind development, and fixing bugs
myself or contributing code will be a useless waste of time!
Is there any Freescale engineer on this list that can help out, or at least
clarify the reasons behind closed-doors open-source software development??
On the other hand, I also whish to contact other furtunate owners of
PPC5121e-based hardware to join forces on linux-kernel driver development. If
Freescale won't collaborate, I'd even consider forking their code, if
necessary.
Greetings,
--
David Jander
Protonic Holland.
^ permalink raw reply
* [PATCH] [POWERPC] FSL: enet device tree cleanups
From: Kumar Gala @ 2007-12-12 7:52 UTC (permalink / raw)
To: linuxppc-dev
* Removed address fields in ethernet nodes
* Removed #address-cells, #size-cells from gianfar nodes
* Added cell-index to gianfar and ucc ethernet nodes
* Added enet[0..3] labels
* Renamed compatible node for gianfar mdio to "fsl,gianfar-mdio"
* Removed device_type = "mdio"
The matching for gianfar mdio still supports the old "mdio"/"gianfar" combo
but it is now considered deprecated.
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
---
Documentation/powerpc/booting-without-of.txt | 6 +--
arch/powerpc/boot/dts/mpc8313erdb.dts | 11 +++---
arch/powerpc/boot/dts/mpc832x_mds.dts | 18 ++--------
arch/powerpc/boot/dts/mpc832x_rdb.dts | 18 ++--------
arch/powerpc/boot/dts/mpc8349emitx.dts | 25 +++-----------
arch/powerpc/boot/dts/mpc8349emitxgp.dts | 8 ++--
arch/powerpc/boot/dts/mpc834x_mds.dts | 26 ++++-----------
arch/powerpc/boot/dts/mpc836x_mds.dts | 18 ++--------
arch/powerpc/boot/dts/mpc8540ads.dts | 37 ++++----------------
arch/powerpc/boot/dts/mpc8541cds.dts | 14 +++----
arch/powerpc/boot/dts/mpc8544ds.dts | 14 +++----
arch/powerpc/boot/dts/mpc8548cds.dts | 24 ++++++--------
arch/powerpc/boot/dts/mpc8555cds.dts | 14 +++----
arch/powerpc/boot/dts/mpc8560ads.dts | 42 +++++-------------------
arch/powerpc/boot/dts/mpc8568mds.dts | 45 ++++++--------------------
arch/powerpc/boot/dts/mpc8572ds.dts | 24 ++++++--------
arch/powerpc/boot/dts/mpc8641_hpcn.dts | 40 +++-------------------
arch/powerpc/sysdev/fsl_soc.c | 15 ++++++---
18 files changed, 118 insertions(+), 281 deletions(-)
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt
index 7327f37..c3fc9d9 100644
--- a/Documentation/powerpc/booting-without-of.txt
+++ b/Documentation/powerpc/booting-without-of.txt
@@ -1223,16 +1223,14 @@ platforms are moved over to use the flattened-device-tree model.
Required properties:
- reg : Offset and length of the register set for the device
- - device_type : Should be "mdio"
- compatible : Should define the compatible device type for the
- mdio. Currently, this is most likely to be "gianfar"
+ mdio. Currently, this is most likely to be "fsl,gianfar-mdio"
Example:
mdio@24520 {
reg = <24520 20>;
- device_type = "mdio";
- compatible = "gianfar";
+ compatible = "fsl,gianfar-mdio";
ethernet-phy@0 {
......
diff --git a/arch/powerpc/boot/dts/mpc8313erdb.dts b/arch/powerpc/boot/dts/mpc8313erdb.dts
index d417f1b..2f83050 100644
--- a/arch/powerpc/boot/dts/mpc8313erdb.dts
+++ b/arch/powerpc/boot/dts/mpc8313erdb.dts
@@ -95,11 +95,10 @@
};
mdio@24520 {
- device_type = "mdio";
- compatible = "gianfar";
- reg = <24520 20>;
#address-cells = <1>;
#size-cells = <0>;
+ compatible = "fsl,gianfar-mdio";
+ reg = <24520 20>;
phy1: ethernet-phy@1 {
interrupt-parent = < &ipic >;
interrupts = <13 8>;
@@ -114,7 +113,8 @@
};
};
- ethernet@24000 {
+ enet0: ethernet@24000 {
+ cell-index = <0>;
device_type = "network";
model = "eTSEC";
compatible = "gianfar";
@@ -125,7 +125,8 @@
phy-handle = < &phy1 >;
};
- ethernet@25000 {
+ enet1: ethernet@25000 {
+ cell-index = <1>;
device_type = "network";
model = "eTSEC";
compatible = "gianfar";
diff --git a/arch/powerpc/boot/dts/mpc832x_mds.dts b/arch/powerpc/boot/dts/mpc832x_mds.dts
index f866e81..b0d89d6 100644
--- a/arch/powerpc/boot/dts/mpc832x_mds.dts
+++ b/arch/powerpc/boot/dts/mpc832x_mds.dts
@@ -208,20 +208,15 @@
mode = "slave";
};
- ucc@2200 {
+ enet0: ucc@2200 {
device_type = "network";
compatible = "ucc_geth";
model = "UCC";
+ cell-index = <3>;
device-id = <3>;
reg = <2200 200>;
interrupts = <22>;
interrupt-parent = < &qeic >;
- /*
- * mac-address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- mac-address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
rx-clock = <19>;
tx-clock = <1a>;
@@ -229,20 +224,15 @@
pio-handle = < &pio3 >;
};
- ucc@3200 {
+ enet1: ucc@3200 {
device_type = "network";
compatible = "ucc_geth";
model = "UCC";
+ cell-index = <4>;
device-id = <4>;
reg = <3200 200>;
interrupts = <23>;
interrupt-parent = < &qeic >;
- /*
- * mac-address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- mac-address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
rx-clock = <17>;
tx-clock = <18>;
diff --git a/arch/powerpc/boot/dts/mpc832x_rdb.dts b/arch/powerpc/boot/dts/mpc832x_rdb.dts
index 91849dd..0c64381 100644
--- a/arch/powerpc/boot/dts/mpc832x_rdb.dts
+++ b/arch/powerpc/boot/dts/mpc832x_rdb.dts
@@ -189,20 +189,15 @@
mode = "cpu";
};
- ucc@3000 {
+ enet0: ucc@3000 {
device_type = "network";
compatible = "ucc_geth";
model = "UCC";
+ cell-index = <2>;
device-id = <2>;
reg = <3000 200>;
interrupts = <21>;
interrupt-parent = <&qeic>;
- /*
- * mac-address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- mac-address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
rx-clock = <20>;
tx-clock = <13>;
@@ -210,20 +205,15 @@
pio-handle = <&ucc2pio>;
};
- ucc@2200 {
+ enet1: ucc@2200 {
device_type = "network";
compatible = "ucc_geth";
model = "UCC";
+ cell-index = <3>;
device-id = <3>;
reg = <2200 200>;
interrupts = <22>;
interrupt-parent = <&qeic>;
- /*
- * mac-address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- mac-address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
rx-clock = <19>;
tx-clock = <1a>;
diff --git a/arch/powerpc/boot/dts/mpc8349emitx.dts b/arch/powerpc/boot/dts/mpc8349emitx.dts
index c29e4f4..d2184ad 100644
--- a/arch/powerpc/boot/dts/mpc8349emitx.dts
+++ b/arch/powerpc/boot/dts/mpc8349emitx.dts
@@ -106,11 +106,10 @@
};
mdio@24520 {
- device_type = "mdio";
- compatible = "gianfar";
- reg = <24520 20>;
#address-cells = <1>;
#size-cells = <0>;
+ compatible = "fsl,gianfar-mdio";
+ reg = <24520 20>;
/* Vitesse 8201 */
phy1c: ethernet-phy@1c {
@@ -129,17 +128,12 @@
};
};
- ethernet@24000 {
+ enet0: ethernet@24000 {
+ cell-index = <0>;
device_type = "network";
model = "TSEC";
compatible = "gianfar";
reg = <24000 1000>;
- /*
- * address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
interrupts = <20 8 21 8 22 8>;
interrupt-parent = < &ipic >;
@@ -147,19 +141,12 @@
linux,network-index = <0>;
};
- ethernet@25000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet1: ethernet@25000 {
+ cell-index = <1>;
device_type = "network";
model = "TSEC";
compatible = "gianfar";
reg = <25000 1000>;
- /*
- * address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
interrupts = <23 8 24 8 25 8>;
interrupt-parent = < &ipic >;
diff --git a/arch/powerpc/boot/dts/mpc8349emitxgp.dts b/arch/powerpc/boot/dts/mpc8349emitxgp.dts
index 6e51d17..30c6816 100644
--- a/arch/powerpc/boot/dts/mpc8349emitxgp.dts
+++ b/arch/powerpc/boot/dts/mpc8349emitxgp.dts
@@ -94,11 +94,10 @@
};
mdio@24520 {
- device_type = "mdio";
- compatible = "gianfar";
- reg = <24520 20>;
#address-cells = <1>;
#size-cells = <0>;
+ compatible = "fsl,gianfar-mdio";
+ reg = <24520 20>;
/* Vitesse 8201 */
phy1c: ethernet-phy@1c {
@@ -109,7 +108,8 @@
};
};
- ethernet@24000 {
+ enet0: ethernet@24000 {
+ cell-index = <0>;
device_type = "network";
model = "TSEC";
compatible = "gianfar";
diff --git a/arch/powerpc/boot/dts/mpc834x_mds.dts b/arch/powerpc/boot/dts/mpc834x_mds.dts
index 73311e8..c5239c9 100644
--- a/arch/powerpc/boot/dts/mpc834x_mds.dts
+++ b/arch/powerpc/boot/dts/mpc834x_mds.dts
@@ -119,11 +119,11 @@
};
mdio@24520 {
- device_type = "mdio";
- compatible = "gianfar";
- reg = <24520 20>;
#address-cells = <1>;
#size-cells = <0>;
+ compatible = "fsl,gianfar-mdio";
+ reg = <24520 20>;
+
phy0: ethernet-phy@0 {
interrupt-parent = < &ipic >;
interrupts = <11 8>;
@@ -138,17 +138,12 @@
};
};
- ethernet@24000 {
+ enet0: ethernet@24000 {
+ cell-index = <0>;
device_type = "network";
model = "TSEC";
compatible = "gianfar";
reg = <24000 1000>;
- /*
- * address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
interrupts = <20 8 21 8 22 8>;
interrupt-parent = < &ipic >;
@@ -156,19 +151,12 @@
linux,network-index = <0>;
};
- ethernet@25000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet1: ethernet@25000 {
+ cell-index = <1>;
device_type = "network";
model = "TSEC";
compatible = "gianfar";
reg = <25000 1000>;
- /*
- * address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
interrupts = <23 8 24 8 25 8>;
interrupt-parent = < &ipic >;
diff --git a/arch/powerpc/boot/dts/mpc836x_mds.dts b/arch/powerpc/boot/dts/mpc836x_mds.dts
index 8b7d778..3b0873a 100644
--- a/arch/powerpc/boot/dts/mpc836x_mds.dts
+++ b/arch/powerpc/boot/dts/mpc836x_mds.dts
@@ -239,20 +239,15 @@
mode = "slave";
};
- ucc@2000 {
+ enet0: ucc@2000 {
device_type = "network";
compatible = "ucc_geth";
model = "UCC";
+ cell-index = <1>;
device-id = <1>;
reg = <2000 200>;
interrupts = <20>;
interrupt-parent = < &qeic >;
- /*
- * mac-address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- mac-address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
rx-clock = <0>;
tx-clock = <19>;
@@ -261,20 +256,15 @@
pio-handle = < &pio1 >;
};
- ucc@3000 {
+ enet1: ucc@3000 {
device_type = "network";
compatible = "ucc_geth";
model = "UCC";
+ cell-index = <2>;
device-id = <2>;
reg = <3000 200>;
interrupts = <21>;
interrupt-parent = < &qeic >;
- /*
- * mac-address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- mac-address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
rx-clock = <0>;
tx-clock = <14>;
diff --git a/arch/powerpc/boot/dts/mpc8540ads.dts b/arch/powerpc/boot/dts/mpc8540ads.dts
index 435a2b6..7961d91 100644
--- a/arch/powerpc/boot/dts/mpc8540ads.dts
+++ b/arch/powerpc/boot/dts/mpc8540ads.dts
@@ -76,9 +76,9 @@
mdio@24520 {
#address-cells = <1>;
#size-cells = <0>;
- device_type = "mdio";
- compatible = "gianfar";
+ compatible = "fsl,gianfar-mdio";
reg = <24520 20>;
+
phy0: ethernet-phy@0 {
interrupt-parent = <&mpic>;
interrupts = <5 1>;
@@ -99,57 +99,36 @@
};
};
- ethernet@24000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet0: ethernet@24000 {
+ cell-index = <0>;
device_type = "network";
model = "TSEC";
compatible = "gianfar";
reg = <24000 1000>;
- /*
- * address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
interrupts = <1d 2 1e 2 22 2>;
interrupt-parent = <&mpic>;
phy-handle = <&phy0>;
};
- ethernet@25000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet1: ethernet@25000 {
+ cell-index = <1>;
device_type = "network";
model = "TSEC";
compatible = "gianfar";
reg = <25000 1000>;
- /*
- * address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
interrupts = <23 2 24 2 28 2>;
interrupt-parent = <&mpic>;
phy-handle = <&phy1>;
};
- ethernet@26000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet2: ethernet@26000 {
+ cell-index = <2>;
device_type = "network";
model = "FEC";
compatible = "gianfar";
reg = <26000 1000>;
- /*
- * address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
interrupts = <29 2>;
interrupt-parent = <&mpic>;
diff --git a/arch/powerpc/boot/dts/mpc8541cds.dts b/arch/powerpc/boot/dts/mpc8541cds.dts
index 101c0b6..8637fe0 100644
--- a/arch/powerpc/boot/dts/mpc8541cds.dts
+++ b/arch/powerpc/boot/dts/mpc8541cds.dts
@@ -76,9 +76,9 @@
mdio@24520 {
#address-cells = <1>;
#size-cells = <0>;
- device_type = "mdio";
- compatible = "gianfar";
+ compatible = "fsl,gianfar-mdio";
reg = <24520 20>;
+
phy0: ethernet-phy@0 {
interrupt-parent = <&mpic>;
interrupts = <5 1>;
@@ -93,9 +93,8 @@
};
};
- ethernet@24000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet0: ethernet@24000 {
+ cell-index = <0>;
device_type = "network";
model = "TSEC";
compatible = "gianfar";
@@ -106,9 +105,8 @@
phy-handle = <&phy0>;
};
- ethernet@25000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet1: ethernet@25000 {
+ cell-index = <1>;
device_type = "network";
model = "TSEC";
compatible = "gianfar";
diff --git a/arch/powerpc/boot/dts/mpc8544ds.dts b/arch/powerpc/boot/dts/mpc8544ds.dts
index a81ecca..a98c46e 100644
--- a/arch/powerpc/boot/dts/mpc8544ds.dts
+++ b/arch/powerpc/boot/dts/mpc8544ds.dts
@@ -88,9 +88,9 @@
mdio@24520 {
#address-cells = <1>;
#size-cells = <0>;
- device_type = "mdio";
- compatible = "gianfar";
+ compatible = "fsl,gianfar-mdio";
reg = <24520 20>;
+
phy0: ethernet-phy@0 {
interrupt-parent = <&mpic>;
interrupts = <a 1>;
@@ -105,9 +105,8 @@
};
};
- ethernet@24000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet0: ethernet@24000 {
+ cell-index = <0>;
device_type = "network";
model = "TSEC";
compatible = "gianfar";
@@ -119,9 +118,8 @@
phy-connection-type = "rgmii-id";
};
- ethernet@26000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet1: ethernet@26000 {
+ cell-index = <1>;
device_type = "network";
model = "TSEC";
compatible = "gianfar";
diff --git a/arch/powerpc/boot/dts/mpc8548cds.dts b/arch/powerpc/boot/dts/mpc8548cds.dts
index 70358dc..64f83d0 100644
--- a/arch/powerpc/boot/dts/mpc8548cds.dts
+++ b/arch/powerpc/boot/dts/mpc8548cds.dts
@@ -87,9 +87,9 @@
mdio@24520 {
#address-cells = <1>;
#size-cells = <0>;
- device_type = "mdio";
- compatible = "gianfar";
+ compatible = "fsl,gianfar-mdio";
reg = <24520 20>;
+
phy0: ethernet-phy@0 {
interrupt-parent = <&mpic>;
interrupts = <5 1>;
@@ -116,9 +116,8 @@
};
};
- ethernet@24000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet0: ethernet@24000 {
+ cell-index = <0>;
device_type = "network";
model = "eTSEC";
compatible = "gianfar";
@@ -129,9 +128,8 @@
phy-handle = <&phy0>;
};
- ethernet@25000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet1: ethernet@25000 {
+ cell-index = <1>;
device_type = "network";
model = "eTSEC";
compatible = "gianfar";
@@ -143,9 +141,8 @@
};
/* eTSEC 3/4 are currently broken
- ethernet@26000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet2: ethernet@26000 {
+ cell-index = <2>;
device_type = "network";
model = "eTSEC";
compatible = "gianfar";
@@ -156,9 +153,8 @@
phy-handle = <&phy2>;
};
- ethernet@27000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet3: ethernet@27000 {
+ cell-index = <3>;
device_type = "network";
model = "eTSEC";
compatible = "gianfar";
diff --git a/arch/powerpc/boot/dts/mpc8555cds.dts b/arch/powerpc/boot/dts/mpc8555cds.dts
index 1e8bf46..339e873 100644
--- a/arch/powerpc/boot/dts/mpc8555cds.dts
+++ b/arch/powerpc/boot/dts/mpc8555cds.dts
@@ -76,9 +76,9 @@
mdio@24520 {
#address-cells = <1>;
#size-cells = <0>;
- device_type = "mdio";
- compatible = "gianfar";
+ compatible = "fsl,gianfar-mdio";
reg = <24520 20>;
+
phy0: ethernet-phy@0 {
interrupt-parent = <&mpic>;
interrupts = <5 1>;
@@ -93,9 +93,8 @@
};
};
- ethernet@24000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet0: ethernet@24000 {
+ cell-index = <0>;
device_type = "network";
model = "TSEC";
compatible = "gianfar";
@@ -106,9 +105,8 @@
phy-handle = <&phy0>;
};
- ethernet@25000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet1: ethernet@25000 {
+ cell-index = <1>;
device_type = "network";
model = "TSEC";
compatible = "gianfar";
diff --git a/arch/powerpc/boot/dts/mpc8560ads.dts b/arch/powerpc/boot/dts/mpc8560ads.dts
index 6b362f8..936a4d5 100644
--- a/arch/powerpc/boot/dts/mpc8560ads.dts
+++ b/arch/powerpc/boot/dts/mpc8560ads.dts
@@ -63,11 +63,11 @@
};
mdio@24520 {
- device_type = "mdio";
- compatible = "gianfar";
- reg = <24520 20>;
#address-cells = <1>;
#size-cells = <0>;
+ compatible = "fsl,gianfar-mdio";
+ reg = <24520 20>;
+
phy0: ethernet-phy@0 {
interrupt-parent = <&mpic>;
interrupts = <5 1>;
@@ -94,36 +94,24 @@
};
};
- ethernet@24000 {
+ enet0: ethernet@24000 {
+ cell-index = <0>;
device_type = "network";
model = "TSEC";
compatible = "gianfar";
reg = <24000 1000>;
- /*
- * address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
interrupts = <1d 2 1e 2 22 2>;
interrupt-parent = <&mpic>;
phy-handle = <&phy0>;
};
- ethernet@25000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet1: ethernet@25000 {
+ cell-index = <1>;
device_type = "network";
model = "TSEC";
compatible = "gianfar";
reg = <25000 1000>;
- /*
- * address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
interrupts = <23 2 24 2 28 2>;
interrupt-parent = <&mpic>;
@@ -198,17 +186,11 @@
interrupt-parent = <&cpmpic>;
};
- ethernet@91320 {
+ enet2: ethernet@91320 {
device_type = "network";
compatible = "fsl,mpc8560-fcc-enet",
"fsl,cpm2-fcc-enet";
reg = <91320 20 88500 100 913b0 1>;
- /*
- * mac-address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- mac-address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
fsl,cpm-command = <16200300>;
interrupts = <21 8>;
@@ -216,17 +198,11 @@
phy-handle = <&phy2>;
};
- ethernet@91340 {
+ enet3: ethernet@91340 {
device_type = "network";
compatible = "fsl,mpc8560-fcc-enet",
"fsl,cpm2-fcc-enet";
reg = <91340 20 88600 100 913d0 1>;
- /*
- * mac-address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- mac-address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
fsl,cpm-command = <1a400300>;
interrupts = <22 8>;
diff --git a/arch/powerpc/boot/dts/mpc8568mds.dts b/arch/powerpc/boot/dts/mpc8568mds.dts
index d73e5f1..60f0eab 100644
--- a/arch/powerpc/boot/dts/mpc8568mds.dts
+++ b/arch/powerpc/boot/dts/mpc8568mds.dts
@@ -101,9 +101,9 @@
mdio@24520 {
#address-cells = <1>;
#size-cells = <0>;
- device_type = "mdio";
- compatible = "gianfar";
+ compatible = "fsl,gianfar-mdio";
reg = <24520 20>;
+
phy0: ethernet-phy@7 {
interrupt-parent = <&mpic>;
interrupts = <1 1>;
@@ -130,38 +130,24 @@
};
};
- ethernet@24000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet0: ethernet@24000 {
+ cell-index = <0>;
device_type = "network";
model = "eTSEC";
compatible = "gianfar";
reg = <24000 1000>;
- /*
- * mac-address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- mac-address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
interrupts = <1d 2 1e 2 22 2>;
interrupt-parent = <&mpic>;
phy-handle = <&phy2>;
};
- ethernet@25000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet1: ethernet@25000 {
+ cell-index = <1>;
device_type = "network";
model = "eTSEC";
compatible = "gianfar";
reg = <25000 1000>;
- /*
- * mac-address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- mac-address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
interrupts = <23 2 24 2 28 2>;
interrupt-parent = <&mpic>;
@@ -318,20 +304,15 @@
mode = "cpu";
};
- ucc@2000 {
+ enet2: ucc@2000 {
device_type = "network";
compatible = "ucc_geth";
model = "UCC";
+ cell-index = <1>;
device-id = <1>;
reg = <2000 200>;
interrupts = <20>;
interrupt-parent = <&qeic>;
- /*
- * mac-address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- mac-address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
rx-clock = <0>;
tx-clock = <20>;
@@ -340,20 +321,15 @@
phy-connection-type = "rgmii-id";
};
- ucc@3000 {
+ enet3: ucc@3000 {
device_type = "network";
compatible = "ucc_geth";
model = "UCC";
+ cell-index = <2>;
device-id = <2>;
reg = <3000 200>;
interrupts = <21>;
interrupt-parent = <&qeic>;
- /*
- * mac-address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- mac-address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
rx-clock = <0>;
tx-clock = <20>;
@@ -366,7 +342,6 @@
#address-cells = <1>;
#size-cells = <0>;
reg = <2120 18>;
- device_type = "mdio";
compatible = "ucc_geth_phy";
/* These are the same PHYs as on
diff --git a/arch/powerpc/boot/dts/mpc8572ds.dts b/arch/powerpc/boot/dts/mpc8572ds.dts
index 91d15e8..c2a8ffa 100644
--- a/arch/powerpc/boot/dts/mpc8572ds.dts
+++ b/arch/powerpc/boot/dts/mpc8572ds.dts
@@ -93,9 +93,9 @@
mdio@24520 {
#address-cells = <1>;
#size-cells = <0>;
- device_type = "mdio";
- compatible = "gianfar";
+ compatible = "fsl,gianfar-mdio";
reg = <24520 20>;
+
phy0: ethernet-phy@0 {
interrupt-parent = <&mpic>;
interrupts = <a 1>;
@@ -118,9 +118,8 @@
};
};
- ethernet@24000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet0: ethernet@24000 {
+ cell-index = <0>;
device_type = "network";
model = "eTSEC";
compatible = "gianfar";
@@ -132,9 +131,8 @@
phy-connection-type = "rgmii-id";
};
- ethernet@25000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet1: ethernet@25000 {
+ cell-index = <1>;
device_type = "network";
model = "eTSEC";
compatible = "gianfar";
@@ -146,9 +144,8 @@
phy-connection-type = "rgmii-id";
};
- ethernet@26000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet2: ethernet@26000 {
+ cell-index = <2>;
device_type = "network";
model = "eTSEC";
compatible = "gianfar";
@@ -160,9 +157,8 @@
phy-connection-type = "rgmii-id";
};
- ethernet@27000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ enet3: ethernet@27000 {
+ cell-index = <3>;
device_type = "network";
model = "eTSEC";
compatible = "gianfar";
diff --git a/arch/powerpc/boot/dts/mpc8641_hpcn.dts b/arch/powerpc/boot/dts/mpc8641_hpcn.dts
index dc0efaf..ddd8fbb 100644
--- a/arch/powerpc/boot/dts/mpc8641_hpcn.dts
+++ b/arch/powerpc/boot/dts/mpc8641_hpcn.dts
@@ -93,9 +93,9 @@
mdio@24520 {
#address-cells = <1>;
#size-cells = <0>;
- device_type = "mdio";
- compatible = "gianfar";
+ compatible = "fsl,gianfar-mdio";
reg = <24520 20>;
+
phy0: ethernet-phy@0 {
interrupt-parent = <&mpic>;
interrupts = <a 1>;
@@ -123,18 +123,11 @@
};
enet0: ethernet@24000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ cell-index = <0>;
device_type = "network";
model = "TSEC";
compatible = "gianfar";
reg = <24000 1000>;
- /*
- * mac-address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- mac-address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
interrupts = <1d 2 1e 2 22 2>;
interrupt-parent = <&mpic>;
@@ -143,18 +136,11 @@
};
enet1: ethernet@25000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ cell-index = <1>;
device_type = "network";
model = "TSEC";
compatible = "gianfar";
reg = <25000 1000>;
- /*
- * mac-address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- mac-address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
interrupts = <23 2 24 2 28 2>;
interrupt-parent = <&mpic>;
@@ -163,18 +149,11 @@
};
enet2: ethernet@26000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ cell-index = <2>;
device_type = "network";
model = "TSEC";
compatible = "gianfar";
reg = <26000 1000>;
- /*
- * mac-address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- mac-address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
interrupts = <1F 2 20 2 21 2>;
interrupt-parent = <&mpic>;
@@ -183,18 +162,11 @@
};
enet3: ethernet@27000 {
- #address-cells = <1>;
- #size-cells = <0>;
+ cell-index = <3>;
device_type = "network";
model = "TSEC";
compatible = "gianfar";
reg = <27000 1000>;
- /*
- * mac-address is deprecated and will be removed
- * in 2.6.25. Only recent versions of
- * U-Boot support local-mac-address, however.
- */
- mac-address = [ 00 00 00 00 00 00 ];
local-mac-address = [ 00 00 00 00 00 00 ];
interrupts = <25 2 26 2 27 2>;
interrupt-parent = <&mpic>;
diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c
index 81af4bd..4baad80 100644
--- a/arch/powerpc/sysdev/fsl_soc.c
+++ b/arch/powerpc/sysdev/fsl_soc.c
@@ -132,15 +132,18 @@ EXPORT_SYMBOL(get_baudrate);
static int __init gfar_mdio_of_init(void)
{
- struct device_node *np;
- unsigned int i;
+ struct device_node *np = NULL;
struct platform_device *mdio_dev;
struct resource res;
int ret;
- for (np = NULL, i = 0;
- (np = of_find_compatible_node(np, "mdio", "gianfar")) != NULL;
- i++) {
+ np = of_find_compatible_node(np, NULL, "fsl,gianfar-mdio");
+
+ /* try the deprecated version */
+ if (!np)
+ np = of_find_compatible_node(np, "mdio", "gianfar");
+
+ if (np) {
int k;
struct device_node *child = NULL;
struct gianfar_mdio_data mdio_data;
@@ -179,11 +182,13 @@ static int __init gfar_mdio_of_init(void)
goto unreg;
}
+ of_node_put(np);
return 0;
unreg:
platform_device_unregister(mdio_dev);
err:
+ of_node_put(np);
return ret;
}
--
1.5.3.4
^ permalink raw reply related
* [PATCH] [POWERPC] FSL: Added aliases node to device trees
From: Kumar Gala @ 2007-12-12 7:52 UTC (permalink / raw)
To: linuxppc-dev
Added aliases nodes for kurobox, 83xx, 85xx, and 86xx platforms.
This included added labels and cell-index properties for serial and
pci nodes.
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
---
arch/powerpc/boot/dts/kuroboxHD.dts | 14 +++++++++++---
arch/powerpc/boot/dts/kuroboxHG.dts | 14 +++++++++++---
arch/powerpc/boot/dts/mpc8313erdb.dts | 17 ++++++++++++++---
arch/powerpc/boot/dts/mpc832x_mds.dts | 17 ++++++++++++++---
arch/powerpc/boot/dts/mpc832x_rdb.dts | 17 ++++++++++++++---
arch/powerpc/boot/dts/mpc8349emitx.dts | 21 +++++++++++++++++----
arch/powerpc/boot/dts/mpc8349emitxgp.dts | 16 +++++++++++++---
arch/powerpc/boot/dts/mpc834x_mds.dts | 21 +++++++++++++++++----
arch/powerpc/boot/dts/mpc836x_mds.dts | 17 ++++++++++++++---
arch/powerpc/boot/dts/mpc8540ads.dts | 18 +++++++++++++++---
arch/powerpc/boot/dts/mpc8541cds.dts | 23 ++++++++++++++++++-----
arch/powerpc/boot/dts/mpc8544ds.dts | 30 +++++++++++++++++++++++-------
arch/powerpc/boot/dts/mpc8548cds.dts | 29 ++++++++++++++++++++++++-----
arch/powerpc/boot/dts/mpc8555cds.dts | 23 ++++++++++++++++++-----
arch/powerpc/boot/dts/mpc8560ads.dts | 17 ++++++++++++++---
arch/powerpc/boot/dts/mpc8568mds.dts | 23 +++++++++++++++++++----
arch/powerpc/boot/dts/mpc8572ds.dts | 27 ++++++++++++++++++++++-----
arch/powerpc/boot/dts/mpc8610_hpcd.dts | 20 +++++++++++++++-----
arch/powerpc/boot/dts/mpc8641_hpcn.dts | 4 ++++
19 files changed, 297 insertions(+), 71 deletions(-)
diff --git a/arch/powerpc/boot/dts/kuroboxHD.dts b/arch/powerpc/boot/dts/kuroboxHD.dts
index 1c14dcd..4469588 100644
--- a/arch/powerpc/boot/dts/kuroboxHD.dts
+++ b/arch/powerpc/boot/dts/kuroboxHD.dts
@@ -23,6 +23,12 @@ XXXX add flash parts, rtc, ??
#address-cells = <1>;
#size-cells = <1>;
+ aliases {
+ serial0 = &serial0;
+ serial1 = &serial1;
+ pci0 = &pci0;
+ };
+
cpus {
#address-cells = <1>;
#size-cells = <0>;
@@ -73,7 +79,8 @@ XXXX add flash parts, rtc, ??
};
};
- serial@80004500 {
+ serial0: serial@80004500 {
+ cell-index = <0>;
device_type = "serial";
compatible = "ns16550";
reg = <80004500 8>;
@@ -83,7 +90,8 @@ XXXX add flash parts, rtc, ??
interrupt-parent = <&mpic>;
};
- serial@80004600 {
+ serial1: serial@80004600 {
+ cell-index = <1>;
device_type = "serial";
compatible = "ns16550";
reg = <80004600 8>;
@@ -102,7 +110,7 @@ XXXX add flash parts, rtc, ??
reg = <80040000 40000>;
};
- pci@fec00000 {
+ pci0: pci@fec00000 {
#address-cells = <3>;
#size-cells = <2>;
#interrupt-cells = <1>;
diff --git a/arch/powerpc/boot/dts/kuroboxHG.dts b/arch/powerpc/boot/dts/kuroboxHG.dts
index 1b973fa..8443c85 100644
--- a/arch/powerpc/boot/dts/kuroboxHG.dts
+++ b/arch/powerpc/boot/dts/kuroboxHG.dts
@@ -23,6 +23,12 @@ XXXX add flash parts, rtc, ??
#address-cells = <1>;
#size-cells = <1>;
+ aliases {
+ serial0 = &serial0;
+ serial1 = &serial1;
+ pci0 = &pci0;
+ };
+
cpus {
#address-cells = <1>;
#size-cells = <0>;
@@ -73,7 +79,8 @@ XXXX add flash parts, rtc, ??
};
};
- serial@80004500 {
+ serial0: serial@80004500 {
+ cell-index = <0>;
device_type = "serial";
compatible = "ns16550";
reg = <80004500 8>;
@@ -83,7 +90,8 @@ XXXX add flash parts, rtc, ??
interrupt-parent = <&mpic>;
};
- serial@80004600 {
+ serial1: serial@80004600 {
+ cell-index = <1>;
device_type = "serial";
compatible = "ns16550";
reg = <80004600 8>;
@@ -102,7 +110,7 @@ XXXX add flash parts, rtc, ??
reg = <80040000 40000>;
};
- pci@fec00000 {
+ pci0: pci@fec00000 {
#address-cells = <3>;
#size-cells = <2>;
#interrupt-cells = <1>;
diff --git a/arch/powerpc/boot/dts/mpc8313erdb.dts b/arch/powerpc/boot/dts/mpc8313erdb.dts
index 2f83050..c5b6665 100644
--- a/arch/powerpc/boot/dts/mpc8313erdb.dts
+++ b/arch/powerpc/boot/dts/mpc8313erdb.dts
@@ -15,6 +15,14 @@
#address-cells = <1>;
#size-cells = <1>;
+ aliases {
+ ethernet0 = &enet0;
+ ethernet1 = &enet1;
+ serial0 = &serial0;
+ serial1 = &serial1;
+ pci0 = &pci0;
+ };
+
cpus {
#address-cells = <1>;
#size-cells = <0>;
@@ -137,7 +145,8 @@
phy-handle = < &phy4 >;
};
- serial@4500 {
+ serial0: serial@4500 {
+ cell-index = <0>;
device_type = "serial";
compatible = "ns16550";
reg = <4500 100>;
@@ -146,7 +155,8 @@
interrupt-parent = < &ipic >;
};
- serial@4600 {
+ serial1: serial@4600 {
+ cell-index = <1>;
device_type = "serial";
compatible = "ns16550";
reg = <4600 100>;
@@ -184,7 +194,8 @@
};
};
- pci@e0008500 {
+ pci0: pci@e0008500 {
+ cell-index = <1>;
interrupt-map-mask = <f800 0 0 7>;
interrupt-map = <
diff --git a/arch/powerpc/boot/dts/mpc832x_mds.dts b/arch/powerpc/boot/dts/mpc832x_mds.dts
index b0d89d6..5a88187 100644
--- a/arch/powerpc/boot/dts/mpc832x_mds.dts
+++ b/arch/powerpc/boot/dts/mpc832x_mds.dts
@@ -15,6 +15,14 @@
#address-cells = <1>;
#size-cells = <1>;
+ aliases {
+ ethernet0 = &enet0;
+ ethernet1 = &enet1;
+ serial0 = &serial0;
+ serial1 = &serial1;
+ pci0 = &pci0;
+ };
+
cpus {
#address-cells = <1>;
#size-cells = <0>;
@@ -72,7 +80,8 @@
};
};
- serial@4500 {
+ serial0: serial@4500 {
+ cell-index = <0>;
device_type = "serial";
compatible = "ns16550";
reg = <4500 100>;
@@ -81,7 +90,8 @@
interrupt-parent = < &ipic >;
};
- serial@4600 {
+ serial1: serial@4600 {
+ cell-index = <1>;
device_type = "serial";
compatible = "ns16550";
reg = <4600 100>;
@@ -273,7 +283,8 @@
};
};
- pci@e0008500 {
+ pci0: pci@e0008500 {
+ cell-index = <1>;
interrupt-map-mask = <f800 0 0 7>;
interrupt-map = <
/* IDSEL 0x11 AD17 */
diff --git a/arch/powerpc/boot/dts/mpc832x_rdb.dts b/arch/powerpc/boot/dts/mpc832x_rdb.dts
index 0c64381..d314986 100644
--- a/arch/powerpc/boot/dts/mpc832x_rdb.dts
+++ b/arch/powerpc/boot/dts/mpc832x_rdb.dts
@@ -15,6 +15,14 @@
#address-cells = <1>;
#size-cells = <1>;
+ aliases {
+ ethernet0 = &enet0;
+ ethernet1 = &enet1;
+ serial0 = &serial0;
+ serial1 = &serial1;
+ pci0 = &pci0;
+ };
+
cpus {
#address-cells = <1>;
#size-cells = <0>;
@@ -62,7 +70,8 @@
dfsrr;
};
- serial@4500 {
+ serial0: serial@4500 {
+ cell-index = <0>;
device_type = "serial";
compatible = "ns16550";
reg = <4500 100>;
@@ -71,7 +80,8 @@
interrupt-parent = <&pic>;
};
- serial@4600 {
+ serial1: serial@4600 {
+ cell-index = <1>;
device_type = "serial";
compatible = "ns16550";
reg = <4600 100>;
@@ -254,7 +264,8 @@
};
};
- pci@e0008500 {
+ pci0: pci@e0008500 {
+ cell-index = <1>;
interrupt-map-mask = <f800 0 0 7>;
interrupt-map = <
/* IDSEL 0x10 AD16 (USB) */
diff --git a/arch/powerpc/boot/dts/mpc8349emitx.dts b/arch/powerpc/boot/dts/mpc8349emitx.dts
index d2184ad..e354f26 100644
--- a/arch/powerpc/boot/dts/mpc8349emitx.dts
+++ b/arch/powerpc/boot/dts/mpc8349emitx.dts
@@ -14,6 +14,15 @@
#address-cells = <1>;
#size-cells = <1>;
+ aliases {
+ ethernet0 = &enet0;
+ ethernet1 = &enet1;
+ serial0 = &serial0;
+ serial1 = &serial1;
+ pci0 = &pci0;
+ pci1 = &pci1;
+ };
+
cpus {
#address-cells = <1>;
#size-cells = <0>;
@@ -154,7 +163,8 @@
linux,network-index = <1>;
};
- serial@4500 {
+ serial0: serial@4500 {
+ cell-index = <0>;
device_type = "serial";
compatible = "ns16550";
reg = <4500 100>;
@@ -163,7 +173,8 @@
interrupt-parent = < &ipic >;
};
- serial@4600 {
+ serial1: serial@4600 {
+ cell-index = <1>;
device_type = "serial";
compatible = "ns16550";
reg = <4600 100>;
@@ -194,7 +205,8 @@
};
};
- pci@e0008500 {
+ pci0: pci@e0008500 {
+ cell-index = <1>;
interrupt-map-mask = <f800 0 0 7>;
interrupt-map = <
/* IDSEL 0x10 - SATA */
@@ -215,7 +227,8 @@
device_type = "pci";
};
- pci@e0008600 {
+ pci1: pci@e0008600 {
+ cell-index = <2>;
interrupt-map-mask = <f800 0 0 7>;
interrupt-map = <
/* IDSEL 0x0E - MiniPCI Slot */
diff --git a/arch/powerpc/boot/dts/mpc8349emitxgp.dts b/arch/powerpc/boot/dts/mpc8349emitxgp.dts
index 30c6816..ebdf0b7 100644
--- a/arch/powerpc/boot/dts/mpc8349emitxgp.dts
+++ b/arch/powerpc/boot/dts/mpc8349emitxgp.dts
@@ -14,6 +14,13 @@
#address-cells = <1>;
#size-cells = <1>;
+ aliases {
+ ethernet0 = &enet0;
+ serial0 = &serial0;
+ serial1 = &serial1;
+ pci0 = &pci0;
+ };
+
cpus {
#address-cells = <1>;
#size-cells = <0>;
@@ -121,7 +128,8 @@
linux,network-index = <0>;
};
- serial@4500 {
+ serial0: serial@4500 {
+ cell-index = <0>;
device_type = "serial";
compatible = "ns16550";
reg = <4500 100>;
@@ -130,7 +138,8 @@
interrupt-parent = < &ipic >;
};
- serial@4600 {
+ serial1: serial@4600 {
+ cell-index = <1>;
device_type = "serial";
compatible = "ns16550";
reg = <4600 100>;
@@ -161,7 +170,8 @@
};
};
- pci@e0008600 {
+ pci0: pci@e0008600 {
+ cell-index = <2>;
interrupt-map-mask = <f800 0 0 7>;
interrupt-map = <
/* IDSEL 0x0F - PCI Slot */
diff --git a/arch/powerpc/boot/dts/mpc834x_mds.dts b/arch/powerpc/boot/dts/mpc834x_mds.dts
index c5239c9..0ba13eb 100644
--- a/arch/powerpc/boot/dts/mpc834x_mds.dts
+++ b/arch/powerpc/boot/dts/mpc834x_mds.dts
@@ -15,6 +15,15 @@
#address-cells = <1>;
#size-cells = <1>;
+ aliases {
+ ethernet0 = &enet0;
+ ethernet1 = &enet1;
+ serial0 = &serial0;
+ serial1 = &serial1;
+ pci0 = &pci0;
+ pci1 = &pci1;
+ };
+
cpus {
#address-cells = <1>;
#size-cells = <0>;
@@ -164,7 +173,8 @@
linux,network-index = <1>;
};
- serial@4500 {
+ serial0: serial@4500 {
+ cell-index = <0>;
device_type = "serial";
compatible = "ns16550";
reg = <4500 100>;
@@ -173,7 +183,8 @@
interrupt-parent = < &ipic >;
};
- serial@4600 {
+ serial1: serial@4600 {
+ cell-index = <1>;
device_type = "serial";
compatible = "ns16550";
reg = <4600 100>;
@@ -213,7 +224,8 @@
};
};
- pci@e0008500 {
+ pci0: pci@e0008500 {
+ cell-index = <1>;
interrupt-map-mask = <f800 0 0 7>;
interrupt-map = <
@@ -273,7 +285,8 @@
device_type = "pci";
};
- pci@e0008600 {
+ pci1: pci@e0008600 {
+ cell-index = <2>;
interrupt-map-mask = <f800 0 0 7>;
interrupt-map = <
diff --git a/arch/powerpc/boot/dts/mpc836x_mds.dts b/arch/powerpc/boot/dts/mpc836x_mds.dts
index 3b0873a..ea07a6f 100644
--- a/arch/powerpc/boot/dts/mpc836x_mds.dts
+++ b/arch/powerpc/boot/dts/mpc836x_mds.dts
@@ -20,6 +20,14 @@
#address-cells = <1>;
#size-cells = <1>;
+ aliases {
+ ethernet0 = &enet0;
+ ethernet1 = &enet1;
+ serial0 = &serial0;
+ serial1 = &serial1;
+ pci0 = &pci0;
+ };
+
cpus {
#address-cells = <1>;
#size-cells = <0>;
@@ -88,7 +96,8 @@
dfsrr;
};
- serial@4500 {
+ serial0: serial@4500 {
+ cell-index = <0>;
device_type = "serial";
compatible = "ns16550";
reg = <4500 100>;
@@ -97,7 +106,8 @@
interrupt-parent = < &ipic >;
};
- serial@4600 {
+ serial1: serial@4600 {
+ cell-index = <1>;
device_type = "serial";
compatible = "ns16550";
reg = <4600 100>;
@@ -306,7 +316,8 @@
};
};
- pci@e0008500 {
+ pci0: pci@e0008500 {
+ cell-index = <1>;
interrupt-map-mask = <f800 0 0 7>;
interrupt-map = <
diff --git a/arch/powerpc/boot/dts/mpc8540ads.dts b/arch/powerpc/boot/dts/mpc8540ads.dts
index 7961d91..9752484 100644
--- a/arch/powerpc/boot/dts/mpc8540ads.dts
+++ b/arch/powerpc/boot/dts/mpc8540ads.dts
@@ -16,6 +16,15 @@
#address-cells = <1>;
#size-cells = <1>;
+ aliases {
+ ethernet0 = &enet0;
+ ethernet1 = &enet1;
+ ethernet2 = &enet2;
+ serial0 = &serial0;
+ serial1 = &serial1;
+ pci0 = &pci0;
+ };
+
cpus {
#address-cells = <1>;
#size-cells = <0>;
@@ -135,7 +144,8 @@
phy-handle = <&phy3>;
};
- serial@4500 {
+ serial0: serial@4500 {
+ cell-index = <0>;
device_type = "serial";
compatible = "ns16550";
reg = <4500 100>; // reg base, size
@@ -144,7 +154,8 @@
interrupt-parent = <&mpic>;
};
- serial@4600 {
+ serial1: serial@4600 {
+ cell-index = <1>;
device_type = "serial";
compatible = "ns16550";
reg = <4600 100>; // reg base, size
@@ -164,7 +175,8 @@
};
};
- pci@e0008000 {
+ pci0: pci@e0008000 {
+ cell-index = <0>;
interrupt-map-mask = <f800 0 0 7>;
interrupt-map = <
diff --git a/arch/powerpc/boot/dts/mpc8541cds.dts b/arch/powerpc/boot/dts/mpc8541cds.dts
index 8637fe0..fa8d9aa 100644
--- a/arch/powerpc/boot/dts/mpc8541cds.dts
+++ b/arch/powerpc/boot/dts/mpc8541cds.dts
@@ -16,6 +16,15 @@
#address-cells = <1>;
#size-cells = <1>;
+ aliases {
+ ethernet0 = &enet0;
+ ethernet1 = &enet1;
+ serial0 = &serial0;
+ serial1 = &serial1;
+ pci0 = &pci0;
+ pci1 = &pci1;
+ };
+
cpus {
#address-cells = <1>;
#size-cells = <0>;
@@ -117,7 +126,8 @@
phy-handle = <&phy1>;
};
- serial@4500 {
+ serial0: serial@4500 {
+ cell-index = <0>;
device_type = "serial";
compatible = "ns16550";
reg = <4500 100>; // reg base, size
@@ -126,7 +136,8 @@
interrupt-parent = <&mpic>;
};
- serial@4600 {
+ serial1: serial@4600 {
+ cell-index = <1>;
device_type = "serial";
compatible = "ns16550";
reg = <4600 100>; // reg base, size
@@ -183,7 +194,8 @@
};
};
- pci1: pci@e0008000 {
+ pci0: pci@e0008000 {
+ cell-index = <0>;
interrupt-map-mask = <1f800 0 0 7>;
interrupt-map = <
@@ -250,11 +262,12 @@
#interrupt-cells = <2>;
compatible = "chrp,iic";
interrupts = <1>;
- interrupt-parent = <&pci1>;
+ interrupt-parent = <&pci0>;
};
};
- pci@e0009000 {
+ pci1: pci@e0009000 {
+ cell-index = <1>;
interrupt-map-mask = <f800 0 0 7>;
interrupt-map = <
diff --git a/arch/powerpc/boot/dts/mpc8544ds.dts b/arch/powerpc/boot/dts/mpc8544ds.dts
index a98c46e..54b3bdf 100644
--- a/arch/powerpc/boot/dts/mpc8544ds.dts
+++ b/arch/powerpc/boot/dts/mpc8544ds.dts
@@ -15,6 +15,17 @@
#address-cells = <1>;
#size-cells = <1>;
+ aliases {
+ ethernet0 = &enet0;
+ ethernet1 = &enet1;
+ serial0 = &serial0;
+ serial1 = &serial1;
+ pci0 = &pci0;
+ pci1 = &pci1;
+ pci2 = &pci2;
+ pci3 = &pci3;
+ };
+
cpus {
#cpus = <1>;
#address-cells = <1>;
@@ -131,7 +142,8 @@
phy-connection-type = "rgmii-id";
};
- serial@4500 {
+ serial0: serial@4500 {
+ cell-index = <0>;
device_type = "serial";
compatible = "ns16550";
reg = <4500 100>;
@@ -140,7 +152,8 @@
interrupt-parent = <&mpic>;
};
- serial@4600 {
+ serial1: serial@4600 {
+ cell-index = <1>;
device_type = "serial";
compatible = "ns16550";
reg = <4600 100>;
@@ -167,7 +180,8 @@
};
};
- pci@e0008000 {
+ pci0: pci@e0008000 {
+ cell-index = <0>;
compatible = "fsl,mpc8540-pci";
device_type = "pci";
interrupt-map-mask = <f800 0 0 7>;
@@ -198,7 +212,8 @@
reg = <e0008000 1000>;
};
- pcie@e0009000 {
+ pci1: pcie@e0009000 {
+ cell-index = <1>;
compatible = "fsl,mpc8548-pcie";
device_type = "pci";
#interrupt-cells = <1>;
@@ -234,7 +249,8 @@
};
};
- pcie@e000a000 {
+ pci2: pcie@e000a000 {
+ cell-index = <2>;
compatible = "fsl,mpc8548-pcie";
device_type = "pci";
#interrupt-cells = <1>;
@@ -270,7 +286,8 @@
};
};
- pcie@e000b000 {
+ pci3: pcie@e000b000 {
+ cell-index = <3>;
compatible = "fsl,mpc8548-pcie";
device_type = "pci";
#interrupt-cells = <1>;
@@ -380,6 +397,5 @@
};
};
};
-
};
};
diff --git a/arch/powerpc/boot/dts/mpc8548cds.dts b/arch/powerpc/boot/dts/mpc8548cds.dts
index 64f83d0..1f470c6 100644
--- a/arch/powerpc/boot/dts/mpc8548cds.dts
+++ b/arch/powerpc/boot/dts/mpc8548cds.dts
@@ -16,6 +16,20 @@
#address-cells = <1>;
#size-cells = <1>;
+ aliases {
+ ethernet0 = &enet0;
+ ethernet1 = &enet1;
+/*
+ ethernet2 = &enet2;
+ ethernet3 = &enet3;
+*/
+ serial0 = &serial0;
+ serial1 = &serial1;
+ pci0 = &pci0;
+ pci1 = &pci1;
+ pci2 = &pci2;
+ };
+
cpus {
#address-cells = <1>;
#size-cells = <0>;
@@ -166,7 +180,8 @@
};
*/
- serial@4500 {
+ serial0: serial@4500 {
+ cell-index = <0>;
device_type = "serial";
compatible = "ns16550";
reg = <4500 100>; // reg base, size
@@ -175,7 +190,8 @@
interrupt-parent = <&mpic>;
};
- serial@4600 {
+ serial1: serial@4600 {
+ cell-index = <1>;
device_type = "serial";
compatible = "ns16550";
reg = <4600 100>; // reg base, size
@@ -202,7 +218,8 @@
};
};
- pci@e0008000 {
+ pci0: pci@e0008000 {
+ cell-index = <0>;
interrupt-map-mask = <f800 0 0 7>;
interrupt-map = <
/* IDSEL 0x4 (PCIX Slot 2) */
@@ -351,7 +368,8 @@
};
};
- pci@e0009000 {
+ pci1: pci@e0009000 {
+ cell-index = <1>;
interrupt-map-mask = <f800 0 0 7>;
interrupt-map = <
@@ -375,7 +393,8 @@
device_type = "pci";
};
- pcie@e000a000 {
+ pci2: pcie@e000a000 {
+ cell-index = <2>;
interrupt-map-mask = <f800 0 0 7>;
interrupt-map = <
diff --git a/arch/powerpc/boot/dts/mpc8555cds.dts b/arch/powerpc/boot/dts/mpc8555cds.dts
index 339e873..4538f3c 100644
--- a/arch/powerpc/boot/dts/mpc8555cds.dts
+++ b/arch/powerpc/boot/dts/mpc8555cds.dts
@@ -16,6 +16,15 @@
#address-cells = <1>;
#size-cells = <1>;
+ aliases {
+ ethernet0 = &enet0;
+ ethernet1 = &enet1;
+ serial0 = &serial0;
+ serial1 = &serial1;
+ pci0 = &pci0;
+ pci1 = &pci1;
+ };
+
cpus {
#address-cells = <1>;
#size-cells = <0>;
@@ -117,7 +126,8 @@
phy-handle = <&phy1>;
};
- serial@4500 {
+ serial0: serial@4500 {
+ cell-index = <0>;
device_type = "serial";
compatible = "ns16550";
reg = <4500 100>; // reg base, size
@@ -126,7 +136,8 @@
interrupt-parent = <&mpic>;
};
- serial@4600 {
+ serial1: serial@4600 {
+ cell-index = <1>;
device_type = "serial";
compatible = "ns16550";
reg = <4600 100>; // reg base, size
@@ -183,7 +194,8 @@
};
};
- pci1: pci@e0008000 {
+ pci0: pci@e0008000 {
+ cell-index = <0>;
interrupt-map-mask = <1f800 0 0 7>;
interrupt-map = <
@@ -250,11 +262,12 @@
#interrupt-cells = <2>;
compatible = "chrp,iic";
interrupts = <1>;
- interrupt-parent = <&pci1>;
+ interrupt-parent = <&pci0>;
};
};
- pci@e0009000 {
+ pci1: pci@e0009000 {
+ cell-index = <1>;
interrupt-map-mask = <f800 0 0 7>;
interrupt-map = <
diff --git a/arch/powerpc/boot/dts/mpc8560ads.dts b/arch/powerpc/boot/dts/mpc8560ads.dts
index 936a4d5..639ce8a 100644
--- a/arch/powerpc/boot/dts/mpc8560ads.dts
+++ b/arch/powerpc/boot/dts/mpc8560ads.dts
@@ -16,6 +16,16 @@
#address-cells = <1>;
#size-cells = <1>;
+ aliases {
+ ethernet0 = &enet0;
+ ethernet1 = &enet1;
+ ethernet2 = &enet2;
+ ethernet3 = &enet3;
+ serial0 = &serial0;
+ serial1 = &serial1;
+ pci0 = &pci0;
+ };
+
cpus {
#address-cells = <1>;
#size-cells = <0>;
@@ -162,7 +172,7 @@
compatible = "fsl,mpc8560-cpm-pic", "fsl,cpm2-pic";
};
- serial@91a00 {
+ serial0: serial@91a00 {
device_type = "serial";
compatible = "fsl,mpc8560-scc-uart",
"fsl,cpm2-scc-uart";
@@ -174,7 +184,7 @@
interrupt-parent = <&cpmpic>;
};
- serial@91a20 {
+ serial1: serial@91a20 {
device_type = "serial";
compatible = "fsl,mpc8560-scc-uart",
"fsl,cpm2-scc-uart";
@@ -212,7 +222,8 @@
};
};
- pci@e0008000 {
+ pci0: pci@e0008000 {
+ cell-index = <0>;
#interrupt-cells = <1>;
#size-cells = <2>;
#address-cells = <3>;
diff --git a/arch/powerpc/boot/dts/mpc8568mds.dts b/arch/powerpc/boot/dts/mpc8568mds.dts
index 60f0eab..90545b1 100644
--- a/arch/powerpc/boot/dts/mpc8568mds.dts
+++ b/arch/powerpc/boot/dts/mpc8568mds.dts
@@ -20,6 +20,17 @@
#address-cells = <1>;
#size-cells = <1>;
+ aliases {
+ ethernet0 = &enet0;
+ ethernet1 = &enet1;
+ ethernet2 = &enet2;
+ ethernet3 = &enet3;
+ serial0 = &serial0;
+ serial1 = &serial1;
+ pci0 = &pci0;
+ pci1 = &pci1;
+ };
+
cpus {
#address-cells = <1>;
#size-cells = <0>;
@@ -154,7 +165,8 @@
phy-handle = <&phy3>;
};
- serial@4500 {
+ serial0: serial@4500 {
+ cell-index = <0>;
device_type = "serial";
compatible = "ns16550";
reg = <4500 100>;
@@ -169,7 +181,8 @@
fsl,has-rstcr;
};
- serial@4600 {
+ serial1: serial@4600 {
+ cell-index = <1>;
device_type = "serial";
compatible = "ns16550";
reg = <4600 100>;
@@ -385,7 +398,8 @@
};
- pci@e0008000 {
+ pci0: pci@e0008000 {
+ cell-index = <0>;
interrupt-map-mask = <f800 0 0 7>;
interrupt-map = <
/* IDSEL 0x12 AD18 */
@@ -415,7 +429,8 @@
};
/* PCI Express */
- pcie@e000a000 {
+ pci1: pcie@e000a000 {
+ cell-index = <2>;
interrupt-map-mask = <f800 0 0 7>;
interrupt-map = <
diff --git a/arch/powerpc/boot/dts/mpc8572ds.dts b/arch/powerpc/boot/dts/mpc8572ds.dts
index c2a8ffa..233e0d5 100644
--- a/arch/powerpc/boot/dts/mpc8572ds.dts
+++ b/arch/powerpc/boot/dts/mpc8572ds.dts
@@ -15,6 +15,18 @@
#address-cells = <1>;
#size-cells = <1>;
+ aliases {
+ ethernet0 = &enet0;
+ ethernet1 = &enet1;
+ ethernet2 = &enet2;
+ ethernet3 = &enet3;
+ serial0 = &serial0;
+ serial1 = &serial1;
+ pci0 = &pci0;
+ pci1 = &pci1;
+ pci2 = &pci2;
+ };
+
cpus {
#address-cells = <1>;
#size-cells = <0>;
@@ -170,7 +182,8 @@
phy-connection-type = "rgmii-id";
};
- serial@4500 {
+ serial0: serial@4500 {
+ cell-index = <0>;
device_type = "serial";
compatible = "ns16550";
reg = <4500 100>;
@@ -179,7 +192,8 @@
interrupt-parent = <&mpic>;
};
- serial@4600 {
+ serial1: serial@4600 {
+ cell-index = <1>;
device_type = "serial";
compatible = "ns16550";
reg = <4600 100>;
@@ -206,7 +220,8 @@
};
};
- pcie@ffe08000 {
+ pci0: pcie@ffe08000 {
+ cell-index = <0>;
compatible = "fsl,mpc8548-pcie";
device_type = "pci";
#interrupt-cells = <1>;
@@ -415,7 +430,8 @@
};
- pcie@ffe09000 {
+ pci1: pcie@ffe09000 {
+ cell-index = <1>;
compatible = "fsl,mpc8548-pcie";
device_type = "pci";
#interrupt-cells = <1>;
@@ -451,7 +467,8 @@
};
};
- pcie@ffe0a000 {
+ pci2: pcie@ffe0a000 {
+ cell-index = <2>;
compatible = "fsl,mpc8548-pcie";
device_type = "pci";
#interrupt-cells = <1>;
diff --git a/arch/powerpc/boot/dts/mpc8610_hpcd.dts b/arch/powerpc/boot/dts/mpc8610_hpcd.dts
index e9c444e..01040a7 100644
--- a/arch/powerpc/boot/dts/mpc8610_hpcd.dts
+++ b/arch/powerpc/boot/dts/mpc8610_hpcd.dts
@@ -15,6 +15,13 @@
#address-cells = <1>;
#size-cells = <1>;
+ aliases {
+ serial0 = &serial0;
+ serial1 = &serial1;
+ pci0 = &pci0;
+ pci1 = &pci1;
+ };
+
cpus {
#address-cells = <1>;
#size-cells = <0>;
@@ -68,7 +75,8 @@
dfsrr;
};
- serial@4500 {
+ serial0: serial@4500 {
+ cell-index = <0>;
device_type = "serial";
compatible = "ns16550";
reg = <4500 100>;
@@ -77,7 +85,8 @@
interrupt-parent = <&mpic>;
};
- serial@4600 {
+ serial1: serial@4600 {
+ cell-index = <1>;
device_type = "serial";
compatible = "ns16550";
reg = <4600 100>;
@@ -86,7 +95,6 @@
interrupt-parent = <&mpic>;
};
-
mpic: interrupt-controller@40000 {
clock-frequency = <0>;
interrupt-controller;
@@ -105,7 +113,8 @@
};
};
- pci@e0008000 {
+ pci0: pci@e0008000 {
+ cell-index = <0>;
compatible = "fsl,mpc8610-pci";
device_type = "pci";
#interrupt-cells = <1>;
@@ -134,7 +143,8 @@
>;
};
- pcie@e000a000 {
+ pci1: pcie@e000a000 {
+ cell-index = <1>;
compatible = "fsl,mpc8641-pcie";
device_type = "pci";
#interrupt-cells = <1>;
diff --git a/arch/powerpc/boot/dts/mpc8641_hpcn.dts b/arch/powerpc/boot/dts/mpc8641_hpcn.dts
index ddd8fbb..86fc228 100644
--- a/arch/powerpc/boot/dts/mpc8641_hpcn.dts
+++ b/arch/powerpc/boot/dts/mpc8641_hpcn.dts
@@ -175,6 +175,7 @@
};
serial0: serial@4500 {
+ cell-index = <0>;
device_type = "serial";
compatible = "ns16550";
reg = <4500 100>;
@@ -184,6 +185,7 @@
};
serial1: serial@4600 {
+ cell-index = <1>;
device_type = "serial";
compatible = "ns16550";
reg = <4600 100>;
@@ -211,6 +213,7 @@
};
pci0: pcie@f8008000 {
+ cell-index = <0>;
compatible = "fsl,mpc8641-pcie";
device_type = "pci";
#interrupt-cells = <1>;
@@ -419,6 +422,7 @@
};
pci1: pcie@f8009000 {
+ cell-index = <1>;
compatible = "fsl,mpc8641-pcie";
device_type = "pci";
#interrupt-cells = <1>;
--
1.5.3.4
^ permalink raw reply related
* Re: [PATCH 1/2] Make setjmp/longjmp code generic
From: Kumar Gala @ 2007-12-12 7:59 UTC (permalink / raw)
To: Michael Neuling; +Cc: linuxppc-dev, RAISCH, Paul Mackerras, THEMANN
In-Reply-To: <20071212054512.882AC62C070@localhost.localdomain>
On Dec 11, 2007, at 11:45 PM, Michael Neuling wrote:
> This makes the setjmp/longjmp code used by xmon, generically available
> to other code. It also removes the requirement for debugger hooks to
> be only called on 0x300 (data storage) exception.
>
> Signed-off-by: Michael Neuling <mikey@neuling.org>
> ---
>
> arch/powerpc/kernel/misc_64.S | 124 ++++++++++++++++++++++++++++++++
> ++++++
> arch/powerpc/mm/fault.c | 6 -
> arch/powerpc/xmon/Makefile | 2
> arch/powerpc/xmon/setjmp.S | 135
> ------------------------------------------
> arch/powerpc/xmon/xmon.c | 10 ---
> include/asm-powerpc/setjmp.h | 12 +++
> 6 files changed, 142 insertions(+), 147 deletions(-)
it would seem that moving this code out of xmon.c into misc_64.s would
break ppc32 usage.
- k
^ permalink raw reply
* Re: [PATCH 1/2] Make setjmp/longjmp code generic
From: Benjamin Herrenschmidt @ 2007-12-12 8:06 UTC (permalink / raw)
To: Kumar Gala; +Cc: linuxppc-dev, Michael Neuling, RAISCH, Paul Mackerras, THEMANN
In-Reply-To: <B07AAF57-E87C-40CF-A550-7F868497A2CB@kernel.crashing.org>
On Wed, 2007-12-12 at 01:59 -0600, Kumar Gala wrote:
> On Dec 11, 2007, at 11:45 PM, Michael Neuling wrote:
>
> > This makes the setjmp/longjmp code used by xmon, generically available
> > to other code. It also removes the requirement for debugger hooks to
> > be only called on 0x300 (data storage) exception.
> >
> > Signed-off-by: Michael Neuling <mikey@neuling.org>
> > ---
> >
> > arch/powerpc/kernel/misc_64.S | 124 ++++++++++++++++++++++++++++++++
> > ++++++
> > arch/powerpc/mm/fault.c | 6 -
> > arch/powerpc/xmon/Makefile | 2
> > arch/powerpc/xmon/setjmp.S | 135
> > ------------------------------------------
> > arch/powerpc/xmon/xmon.c | 10 ---
> > include/asm-powerpc/setjmp.h | 12 +++
> > 6 files changed, 142 insertions(+), 147 deletions(-)
>
> it would seem that moving this code out of xmon.c into misc_64.s would
> break ppc32 usage.
Time to introduce a merged misc.S ? :-)
Ben.
^ permalink raw reply
* Re: [PATCH] Fix rounding bug in emulation for double floatoperating
From: Zang Roy-r61911 @ 2007-12-12 8:30 UTC (permalink / raw)
To: Kumar Gala; +Cc: linuxppc-dev list, Liu Yu, David Gibson
In-Reply-To: <A069B515-C07A-4471-9473-7A7E29F12685@kernel.crashing.org>
On Tue, 2007-12-11 at 23:26, Kumar Gala wrote:
> >>
> >> how did you find this?
> >>
> > It supposed to run the following test case on a powerpc platform.
> > Yu's patch fixes the issue.
> > Could you help to merge this patch in your tree?
> > ---
> > #include <stdio.h>
> > #include <math.h>
> > #include <bits/nan.h>
> > #ifdef __SPE__
> > #include <spe.h>
> > int
> > getSPEFSCR()
> > {
> > return __builtin_spe_mfspefscr();
> > }
> >
> > void
> > setSPEFSCR(int i)
> > {
> > __builtin_spe_mtspefscr(i);
> > }
> > #else
> > int
> > getSPEFSCR()
> > {
> > return 0;
> > }
> >
> > void
> > setSPEFSCR(int i)
> > {
> > }
> > #endif
> >
> > void
> > dmul(double d, double d1, double expected)
> > {
> > double d2;
> > int before, after;
> >
> > before = getSPEFSCR();
> > d2 = d * d1;
> > after = getSPEFSCR();
> >
> > printf("dmul %llx * %llx = %llx expected %llx %s [0x%x 0x%x]\n",
> > d, d1, d2, expected,
> > (d2 == expected) ? "(PASS)" : "(FAIL)", before, after);
> > }
> >
> > void
> > ddiv(double d, double d1, double expected)
> > {
> > register double d2;
> > int before, after;
> >
> > before = getSPEFSCR();
> > d2 = d / d1;
> > after = getSPEFSCR();
> >
> > printf("ddiv %llx / %llx = %llx expected %llx %s [0x%x 0x%x]\n",
> > d, d1, d2, expected,
> > (d2 == expected) ? "(PASS)" : "(FAIL)", before, after);
> > }
> >
> > main()
> > {
> > const double min_double = 4.9406564584124654e-324L;
> >
> > printf("\n");
> > dmul(0.5L, min_double, 0.0L);
> > dmul(-0.5L, min_double, 0.0L);
> > dmul(-min_double, -0.5L, 0.0L);
> > printf("\n");
> > ddiv(min_double, 2.0L, 0.0L);
> > }
>
> When I run this on a G5 (w/HW FP) I get:
>
> dmul 3fe0000000000000 * 1 = 0 expected 0 (PASS)
> dmul bfe0000000000000 * 1 = 8000000000000000 expected 0 (PASS)
> dmul 8000000000000001 * bfe0000000000000 = 0 expected 0 (PASS)
>
> ddiv 1 / 4000000000000000 = 0 expected 0 (PASS)
>
> and on the 85xx w/FP emu:
>
> dmul 3fe0000000000000 * 1 = 0 expected 0 (PASS)
> dmul bfe0000000000000 * 1 = 8000000000000000 expected 0 (PASS)
> dmul 8000000000000001 * bfe0000000000000 = 0 expected 0 (PASS)
>
> ddiv 1 / 4000000000000000 = 0 expected 0 (PASS)
>
> Maybe I'm missing where the error is.
I am missing ...
It is supposed to run based on previous IEEE 754 patch.
http://ozlabs.org/pipermail/linuxppc-dev/2007-February/031351.html
Roy
^ permalink raw reply
* Re: [PATCH 1/2] Make setjmp/longjmp code generic
From: Stephen Rothwell @ 2007-12-12 9:37 UTC (permalink / raw)
To: benh; +Cc: Neuling, THEMANN, Michael, linuxppc-dev, RAISCH, Paul Mackerras
In-Reply-To: <1197446814.8385.104.camel@pasglop>
[-- Attachment #1: Type: text/plain, Size: 275 bytes --]
On Wed, 12 Dec 2007 19:06:54 +1100 Benjamin Herrenschmidt <benh@kernel.crashing.org> wrote:
>
> Time to introduce a merged misc.S ? :-)
We already have one ...
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply
* Re: [PATCH 1/2] Make setjmp/longjmp code generic
From: Benjamin Herrenschmidt @ 2007-12-12 9:44 UTC (permalink / raw)
To: Stephen Rothwell
Cc: Michael Neuling, THEMANN, linuxppc-dev, RAISCH, Paul Mackerras
In-Reply-To: <20071212203727.f3719e4a.sfr@canb.auug.org.au>
On Wed, 2007-12-12 at 20:37 +1100, Stephen Rothwell wrote:
> On Wed, 12 Dec 2007 19:06:54 +1100 Benjamin Herrenschmidt <benh@kernel.crashing.org> wrote:
> >
> > Time to introduce a merged misc.S ? :-)
>
> We already have one ...
Hah ! I should have looked :-)
Ben.
^ permalink raw reply
* Re: Lnux 2.6.24-rc5
From: Subrata Modak @ 2007-12-12 9:55 UTC (permalink / raw)
To: Benjamin Herrenschmidt; +Cc: Linuxppc-dev
In-Reply-To: <alpine.LFD.0.9999.0712102130370.28293@woody.linux-foundation.org>
On Mon, 2007-12-10 at 21:40 -0800, Linus Torvalds wrote:
> It's been a week, and I promised to be a good boy and try to follow my
> release rules, so here is the next -rc.
>
> Things _have_ slowed down, although I'd obviously be lying if I said we've
> got all the regressions handled and under control. They are being worked
> on, and the list is shrinking, but at a guess, we're definitely not going
> to have a final 2.6.24 out before xmas unless santa puts some more elves
> to work on those regressions..
>
> So any elves out there - please keep working.
>
> I'm including the shortlog since it's small enough, and quite frankly,
> gives about as readable explanation of the changes as can be imagined.
> Nothing hugely exciting here.
>
> I'd post the diffstat too, but it's not really all that interesting, and
> it only highlights a textually big PA-RISC revert, and the powerpc
> defconfig updates. And the Blackfin SPI driver. The rest is largely random
> noise in various subsystems (drivers/net, xfs filesystem, and arch updates
> are some of the areas that show more changes).
>
> Linus
>
> ---
>
> Benjamin Herrenschmidt (6):
> ibm_newemac: Fix ZMII refcounting bug
> ibm_newemac: Workaround reset timeout when no link
> ibm_newemac: Cleanup/Fix RGMII MDIO support detection
> ibm_newemac: Cleanup/fix support for STACR register variants
> ibm_newemac: Update file headers copyright notices
> powerpc: Fix IDE legacy vs. native fixups
>
Dear Benjamin,
Since you are working on Device drivers, do you want to see whether your
Device drivers testcases can fit in here in LTP:
http://ltp.cvs.sourceforge.net/ltp/ltp/testcases/kernel/device-drivers/,
I am eager to know whether we can work together to get these device
drivers testcases inside LTP.
Regards--
Subrata
(LTP Mainatiner)
^ permalink raw reply
* RE: LPC burst accesses
From: Kári Davíðsson @ 2007-12-12 10:36 UTC (permalink / raw)
To: linuxppc-embedded; +Cc: WITTROCK
In-Reply-To: <14274105.post@talk.nabble.com>
Thanks,
Using this configuration of the SCLPC I was able to get burst accesses.
Getting bursts with the SDMA general purpose task (without the SCLPC =
fifo) is
still a mistery to me. I somehow have the feeling that with the CPU one =
can only
get bursts if we are capable of executing code out of the bank, which =
implies=20
multiplexed mode of the bank. Multiplexed mode I am not able to do, at =
least
not at this time.
rg
kd=20
--=20
K=E1ri Dav=ED=F0sson | kari.davidsson@marel.is
Hugb=FAna=F0arger=F0 | www.marel.com
Tel: +354 563 8156 Fax: +354 563 8001
Iceland
-----Original Message-----
From: linuxppc-embedded-bounces+karidav=3Dmarel.is@ozlabs.org =
[mailto:linuxppc-embedded-bounces+karidav=3Dmarel.is@ozlabs.org] On =
Behalf Of WITTROCK
Sent: 11. desember 2007 13:43
To: linuxppc-embedded@ozlabs.org
Subject: Re: LPC burst accesses
I remember doing something like this a while back. I ended up not =
implementing it in my project for other reasons, but here is some =
correspondence I had with Freescale:
The question
---------------------------------------------------------------------
I am using the LocalPlus bus and BestComm on a MPC5200B to communicate =
with an external FPGA.
I am currently using CS2 as the chip select for the FPGA. If I =
configure the chip select 2 configuration register for a 16bit address =
width and 2 byte bus width then all works well (MBAR + 0x0308 =3D =
0x00003500).
I am now trying to configure CS2 to operate in LargeFlash mode with 2 =
byte bus width and 26bit address (MBAR + 0x0308 =3D 0x00003D00) in order =
to support a burst read. I have configured the Chip Select Burst =
Control Register (BRE2=3D1), and ensured that PCI is disabled, however I =
do not see a burst read performed on the bus.
Before I investigate any further, should it be possible to use the LP in =
LargeFlash mode together with its assosciated FIFO and BestComm to =
perform a burst read?
The Reply
Local Plus controller performs burst read from LargeFlash or MostGraphic =
memory only if an XLB master (CPU) or SCLPC interface initiates burst =
access.
In the case of CPU, you should enable cache for Local Plus memory.
In the case of SCLPC, you should define BPT=3D8 in the SCLPC Control =
Register (MBAR + 0x3C08).
Other configurations doesn't force bursting.
Thank you for your interest in Freescale Semiconductor products and for =
the opportunity to serve you.
Should you need to contact us with regard to this message, please see =
the notes below.
I hope its of some use.
-WITTROCK
--
View this message in context: =
http://www.nabble.com/LPC-burst-accesses-tp14270986p14274105.html
Sent from the linuxppc-embedded mailing list archive at Nabble.com.
_______________________________________________
Linuxppc-embedded mailing list
Linuxppc-embedded@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-embedded
^ permalink raw reply
* Re: [PATCH 1/2] Make setjmp/longjmp code generic
From: Michael Neuling @ 2007-12-12 11:09 UTC (permalink / raw)
To: benh; +Cc: Stephen Rothwell, THEMANN, linuxppc-dev, RAISCH, Paul Mackerras
In-Reply-To: <1197452676.8385.116.camel@pasglop>
> On Wed, 2007-12-12 at 20:37 +1100, Stephen Rothwell wrote:
> > On Wed, 12 Dec 2007 19:06:54 +1100 Benjamin Herrenschmidt <benh@kernel.cras
hing.org> wrote:
> > >
> > > Time to introduce a merged misc.S ? :-)
> >
> > We already have one ...
>
> Hah ! I should have looked :-)
Me too! :-)
Sorry Kumar, I'll fix.
Mikey
^ permalink raw reply
* Re: [ewg] Re: [PATCH] IB/ehca: Serialize HCA-related hCalls on POWER5
From: Or Gerlitz @ 2007-12-12 12:14 UTC (permalink / raw)
To: Joachim Fenkes
Cc: Arnd Bergmann, Roland Dreier, LKML, linuxppc-dev,
Christoph Raisch, OF-General, Stefan Roscher
In-Reply-To: <OFD9564F75.44193623-ONC12573AE.002EA542-C12573AE.002F5FBC@de.ibm.com>
Joachim Fenkes wrote:
> Roland Dreier <rdreier@cisco.com> wrote on 10.12.2007 22:47:37:
>> It's an optional device feature, so this should be OK
>> (although the iSER driver currently seems to depend on a device
>> supporting FMRs, which is probably going to be a problem with iWARP
>> support in the future anyway).
> I don't feel very well with removing code from the driver that iSER seems
> to depend on. Are there plans to fix this in iSER?
What is the fix you suggest, to add a device query that tells you for
which verbs the documentation does not apply? or enhance the code of the
map_phys_fmr verb within the ehca driver to return error if called
from non-sleepable context?
Or.
^ permalink raw reply
* Re: [PATCH RFC 0/7] "NAND on UPM" and related patches
From: Anton Vorontsov @ 2007-12-12 12:47 UTC (permalink / raw)
To: linuxppc-dev
In-Reply-To: <20071211003647.GB12363@localhost.localdomain>
On Tue, Dec 11, 2007 at 11:36:47AM +1100, David Gibson wrote:
[...]
> > > > OF device tree GPIOs bindings are similar to IRQs:
> > > >
> > > > node {
> > > > gpios = <bank pin bank pin bank pin>;
> > > > gpio-parent = <&par_io_controller>;
> > > > };
> > > >
> > > > "bank pin" scheme is controller specific, so controllers that want
> > > > to implement flat mappings or any other could do so.
> > >
> > > It might be safest to do as is done for interrupts, and not define the
> > > internal format at all.
> >
> > This is how it is done already. Take a look into second and third patches:
> >
> > +static int par_io_xlate(struct device_node *np, int index)
> > +{
> > + return __of_parse_gpio_bank_pin(np, index, 32, num_par_io_ports);
> > +}
> > +
> > +static struct of_gpio_chip of_gpio_chip = {
> > + .xlate = par_io_xlate,
> > +};
> >
> > __of_parse_gpio_bank_pin() is helper function, I just factored
> > it out, because both QE and CPM2 using same format.
> >
> > But generally, controllers are encouraged to do their own xlates.
> >
> > Or am I missing the point?
>
> Right, but you are assuming a fixed size (2 cells?)
Nope, of_get_gpio() doesn't assume that, but per-controller's .xlate()
is free to assume (and check) that, right.
> for the bank/pin
> information, arent' you - I didn't see any #gpio-cells or similar
> looking property.
Well, per-controller .xlate() is checking for correct cell count
(just reminding -- __of_parse_gpio_bank_pin is helper function,
controllers are free to implement their own):
int __of_parse_gpio_bank_pin(struct device_node *np, int index,
int bank_width, int max_bank)
{
...
gpios = of_get_property(np, "gpios", &len);
len /= sizeof(u32);
if (len < 2 || len % 2 || index > len / 2 - 1)
return -EINVAL;
...
}
On the other hand, I might indeed introduce #gpio-cells, and move
that check into generic of_get_gpio(), which will use #gpio-cells.
I think this is good idea anyway, so I'll just do it. ;-)
> I'm wondering if some gpio controllers might want
> less (only one bank) or more (bank, pin, polarity/flags perhaps).
Yup, they might. With #gpio-cells or without. The matter of where
to place sanity checks.
Much thanks,
--
Anton Vorontsov
email: cbou@mail.ru
backup email: ya-cbou@yandex.ru
irc://irc.freenode.net/bd2
^ permalink raw reply
* Re: Lnux 2.6.24-rc5
From: Josh Boyer @ 2007-12-12 12:54 UTC (permalink / raw)
To: subrata; +Cc: Linuxppc-dev
In-Reply-To: <1197453301.4710.71.camel@subratamodak.linux.ibm.com>
On Wed, 12 Dec 2007 15:25:01 +0530
Subrata Modak <subrata@linux.vnet.ibm.com> wrote:
> On Mon, 2007-12-10 at 21:40 -0800, Linus Torvalds wrote:
> > It's been a week, and I promised to be a good boy and try to follow my
> > release rules, so here is the next -rc.
> >
> > Things _have_ slowed down, although I'd obviously be lying if I said we've
> > got all the regressions handled and under control. They are being worked
> > on, and the list is shrinking, but at a guess, we're definitely not going
> > to have a final 2.6.24 out before xmas unless santa puts some more elves
> > to work on those regressions..
> >
> > So any elves out there - please keep working.
> >
> > I'm including the shortlog since it's small enough, and quite frankly,
> > gives about as readable explanation of the changes as can be imagined.
> > Nothing hugely exciting here.
> >
> > I'd post the diffstat too, but it's not really all that interesting, and
> > it only highlights a textually big PA-RISC revert, and the powerpc
> > defconfig updates. And the Blackfin SPI driver. The rest is largely random
> > noise in various subsystems (drivers/net, xfs filesystem, and arch updates
> > are some of the areas that show more changes).
> >
> > Linus
> >
> > ---
> >
> > Benjamin Herrenschmidt (6):
> > ibm_newemac: Fix ZMII refcounting bug
> > ibm_newemac: Workaround reset timeout when no link
> > ibm_newemac: Cleanup/Fix RGMII MDIO support detection
> > ibm_newemac: Cleanup/fix support for STACR register variants
> > ibm_newemac: Update file headers copyright notices
> > powerpc: Fix IDE legacy vs. native fixups
> >
>
> Dear Benjamin,
>
> Since you are working on Device drivers, do you want to see whether your
> Device drivers testcases can fit in here in LTP:
> http://ltp.cvs.sourceforge.net/ltp/ltp/testcases/kernel/device-drivers/,
There are no testcases for the EMAC drivers per se. Also, I don't see
any testcases for any network driver in there at all. Is that not
something LTP is testing yet?
josh
^ permalink raw reply
* Re: Lnux 2.6.24-rc5
From: Subrata Modak @ 2007-12-12 12:59 UTC (permalink / raw)
To: Josh Boyer; +Cc: Linuxppc-dev
In-Reply-To: <20071212065437.73e708ef@weaponx>
On Wed, 2007-12-12 at 06:54 -0600, Josh Boyer wrote:
> On Wed, 12 Dec 2007 15:25:01 +0530
> Subrata Modak <subrata@linux.vnet.ibm.com> wrote:
>
> > On Mon, 2007-12-10 at 21:40 -0800, Linus Torvalds wrote:
> > > It's been a week, and I promised to be a good boy and try to follow my
> > > release rules, so here is the next -rc.
> > >
> > > Things _have_ slowed down, although I'd obviously be lying if I said we've
> > > got all the regressions handled and under control. They are being worked
> > > on, and the list is shrinking, but at a guess, we're definitely not going
> > > to have a final 2.6.24 out before xmas unless santa puts some more elves
> > > to work on those regressions..
> > >
> > > So any elves out there - please keep working.
> > >
> > > I'm including the shortlog since it's small enough, and quite frankly,
> > > gives about as readable explanation of the changes as can be imagined.
> > > Nothing hugely exciting here.
> > >
> > > I'd post the diffstat too, but it's not really all that interesting, and
> > > it only highlights a textually big PA-RISC revert, and the powerpc
> > > defconfig updates. And the Blackfin SPI driver. The rest is largely random
> > > noise in various subsystems (drivers/net, xfs filesystem, and arch updates
> > > are some of the areas that show more changes).
> > >
> > > Linus
> > >
> > > ---
> > >
> > > Benjamin Herrenschmidt (6):
> > > ibm_newemac: Fix ZMII refcounting bug
> > > ibm_newemac: Workaround reset timeout when no link
> > > ibm_newemac: Cleanup/Fix RGMII MDIO support detection
> > > ibm_newemac: Cleanup/fix support for STACR register variants
> > > ibm_newemac: Update file headers copyright notices
> > > powerpc: Fix IDE legacy vs. native fixups
> > >
> >
> > Dear Benjamin,
> >
> > Since you are working on Device drivers, do you want to see whether your
> > Device drivers testcases can fit in here in LTP:
> > http://ltp.cvs.sourceforge.net/ltp/ltp/testcases/kernel/device-drivers/,
>
> There are no testcases for the EMAC drivers per se. Also, I don't see
> any testcases for any network driver in there at all. Is that not
> something LTP is testing yet?
Nope. LTP is not doing that. Like lkml it is also dependent on community
for contributions. Our Device Driver Test cases needs to be
re-rejuvenated as they are pretty old. I am of the idea of maintaining
Architecture specific device drivers testcases inside LTP as well
provided you guys give me the required test cases.
--Subrata
>
> josh
^ permalink raw reply
* Re: [PATCH] Fix rounding bug in emulation for double floatoperating
From: Kumar Gala @ 2007-12-12 13:36 UTC (permalink / raw)
To: Zang Roy-r61911; +Cc: linuxppc-dev list, Liu Yu, David Gibson
In-Reply-To: <1197448223.29372.12.camel@localhost.localdomain>
>> When I run this on a G5 (w/HW FP) I get:
>>
>> dmul 3fe0000000000000 * 1 = 0 expected 0 (PASS)
>> dmul bfe0000000000000 * 1 = 8000000000000000 expected 0 (PASS)
>> dmul 8000000000000001 * bfe0000000000000 = 0 expected 0 (PASS)
>>
>> ddiv 1 / 4000000000000000 = 0 expected 0 (PASS)
>>
>> and on the 85xx w/FP emu:
>>
>> dmul 3fe0000000000000 * 1 = 0 expected 0 (PASS)
>> dmul bfe0000000000000 * 1 = 8000000000000000 expected 0 (PASS)
>> dmul 8000000000000001 * bfe0000000000000 = 0 expected 0 (PASS)
>>
>> ddiv 1 / 4000000000000000 = 0 expected 0 (PASS)
>>
>> Maybe I'm missing where the error is.
> I am missing ...
> It is supposed to run based on previous IEEE 754 patch.
> http://ozlabs.org/pipermail/linuxppc-dev/2007-February/031351.html
Ok, but the test case should care if we are doing full "classic"
emulation or fixup of e500 FP.
- k
^ permalink raw reply
* Re: [PATCH v5] qe: add ability to upload QE firmware
From: Timur Tabi @ 2007-12-12 15:17 UTC (permalink / raw)
To: galak; +Cc: linuxppc-dev
In-Reply-To: <11970422334145-git-send-email-timur@freescale.com>
Timur Tabi wrote:
> Define the layout of a binary blob that contains a QE firmware and instructions
> on how to upload it. Add function qe_upload_firmware() to parse the blob
> and perform the actual upload. Fully define 'struct rsp' in immap_qe.h to
> include the actual RISC Special Registers. Added description of a new
> QE firmware node to booting-without-of.txt.
If there are no objections, I'd like this patch to be pulled into for-2.6.25.
Thanks.
--
Timur Tabi
Linux kernel developer at Freescale
^ permalink raw reply
* Re: [PATCH 1/2] qe: add function qe_clock_source()
From: Timur Tabi @ 2007-12-12 15:19 UTC (permalink / raw)
To: galak; +Cc: netdev, linuxppc-dev
In-Reply-To: <1196716680381-git-send-email-timur@freescale.com>
Timur Tabi wrote:
> Add function qe_clock_source() which takes a string containing the name of a
> QE clock source (as is typically found in device trees) and returns the
> matching enum qe_clock value.
>
> Update booting-without-of.txt to indicate that the UCC properties rx-clock
> and tx-clock are deprecated and replaced with rx-clock-name and tx-clock-name,
> which use strings instead of numbers to indicate QE clock sources.
>
> Signed-off-by: Timur Tabi <timur@freescale.com>
If there are no objections, I'd like this patch to be pulled into 2.6.25. Thanks.
--
Timur Tabi
Linux kernel developer at Freescale
^ permalink raw reply
* Re: [PATCH 2/2] ucc_geth: use rx-clock-name and tx-clock-name device tree properties
From: Timur Tabi @ 2007-12-12 15:19 UTC (permalink / raw)
To: galak; +Cc: netdev, linuxppc-dev
In-Reply-To: <1196716685975-git-send-email-timur@freescale.com>
Timur Tabi wrote:
> Updates the ucc_geth device driver to check the new rx-clock-name and
> tx-clock-name properties first. If present, it uses the new function
> qe_clock_source() to obtain the clock source. Otherwise, it checks the
> deprecated rx-clock and tx-clock properties.
>
> Update the device trees for 832x, 836x, and 8568 to contain the new property
> names only.
>
> Signed-off-by: Timur Tabi <timur@freescale.com>
If there are no objections, I'd like this patch to be pulled into 2.6.25. Thanks.
--
Timur Tabi
Linux kernel developer at Freescale
^ permalink raw reply
* RE: USB configuration
From: Pedro Luis D. L. @ 2007-12-12 15:23 UTC (permalink / raw)
To: linuxppc-embedded
In-Reply-To: <14206951.post@talk.nabble.com>
> From: misbah_khan@engineer.com
> To: linuxppc-embedded@ozlabs.org
> Subject: RE: USB configuration
>=20
>=20
> I have inserted a USB card reader, and the following dmesg it shows .....
>=20
> -------------------------------------------------------------------------=
------
> mpc8272ads: Init
> PCI: Probing PCI hardware
> PCI: Cannot allocate resource region 0 of device 0000:00:00.0
> PCI: Cannot allocate resource region 1 of device 0000:00:00.0
> SCSI subsystem initialized
> Linux Kernel Card Services
> options: [pci] [cardbus]
> usbcore: registered new driver usbfs
> usbcore: registered new driver hub
> Serial: CPM driver $Revision: 0.01 $
> ttyCPM0 at MMIO 0xf0011a00 (irq =3D 40) is a CPM UART
> ttyCPM1 at MMIO 0xf0011a60 (irq =3D 43) is a CPM UART
> io scheduler noop registered
> io scheduler anticipatory registered
> io scheduler deadline registered
> io scheduler cfq registered
> loop: loaded (max 8 devices)
> fs_enet.c:v1.0 (Aug 8, 2005)
> fs_enet: eth0 Phy @ 0x0, type DM9161 (0x0181b881)
> fs_enet: eth1 Phy @ 0x3, type DM9161 (0x0181b881)
> Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
> ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=
=3Dxx
> st: Version 20041025, fixed bufsize 32768, s/g segs 256
> osst :I: Tape driver with OnStream support version 0.99.1
> osst :I: $Id: osst.c,v 1.70 2003/12/23 14:22:12 wriede Exp $
> ohci_hcd: 2004 Nov 08 USB 1.1 'Open' Host Controller (OHCI) Driver (PCI)
> ohci_hcd: block sizes: ed 64 td 64
> drivers/usb/serial/usb-serial.c: USB Serial support registered for Generi=
c
> usbcore: registered new driver usbserial_generic
> usbcore: registered new driver usbserial
> drivers/usb/serial/usb-serial.c: USB Serial Driver core v2.0
> NET: Registered protocol family 2
> IP: routing cache hash table of 512 buckets, 4Kbytes
> TCP: Hash tables configured (established 4096 bind 8192)
> NET: Registered protocol family 1
> NET: Registered protocol family 17
> IP-Config: Complete:
> device=3Deth1, addr=3D192.168.33.136, mask=3D255.255.248.0,
> gw=3D192.168.32.47,
> host=3Dcashel, domain=3D, nis-domain=3D(none),
> bootserver=3D192.168.33.96, rootserver=3D192.168.33.96, rootpath=3D
> Looking up port of RPC 100003/2 on 192.168.33.96
> Looking up port of RPC 100005/1 on 192.168.33.96
> VFS: Mounted root (nfs filesystem).
> Freeing unused kernel memory: 104k init
> -------------------------------------------------------------------------=
-------------
>=20
It looks like it is well configured, because the usbfs and hub are loaded. =
You could check in your kernel configuration that you enabled USB Mass stor=
age driver and attached a pen drive as I suggested before.
Another possibility is to insert a card in the USB card reader. Then you sh=
ould be able to see with dmesg if it is recognized.
Pedro.
> This doesent gives me the clear explaination of whether USB is working
> properly....
>=20
> I would appreciate if you could share with me the basic steps to be follo=
wed
> to confirm that the USB support that i had configured is being tested in =
all
> aspects.
>=20
> Misbah
>=20
> Pedro Luis D. L. wrote:
>>=20
>>=20
>>=20
>>> Date: Thu, 6 Dec 2007 05:27:14 -0800
>>> From: misbah_khan@engineer.com
>>> To: linuxppc-embedded@ozlabs.org
>>> Subject: USB configuration
>>>=20
>>>=20
>>> HI all ...
>>=20
>> Hi,
>>=20
>>> I have configured the Montavista Kernel for USB support and for
>>> PPC8272-ADS
>>> board I need to know that how could i test that my USB is working ????
>>>=20
>>=20
>> Try to attach an USB device, like a pendrive, to an USB port. Then type=
:=20
>> dmesg | tail
>>=20
>> If the USB support is working properly, you should see some output sayin=
g
>> which device have you attached and where is it mapped.
>> If you plug a memory stick, you can try to mount it and check that the
>> filesystem is correct.
>>=20
>> Pedro.
>>=20
>>> Its creating the directory :- /proc/bus/usb/ but doesent contain any fi=
le
>>> under it ????
>>>=20
>>>=20
>>> its also creating the directory :- /sys/bus/usb/ but doesent contain
>>> any
>>> file under it ????
>>>=20
>>>=20
>>> Please let me know the procedure to test whether my USB configuration i=
s
>>> all
>>> right ????
>>>=20
>>> Thank u=20
>>> Misbah <><
>>> --=20
>>> View this message in context:
>>> http://www.nabble.com/USB-configuration-tf4956061.html#a14192347
>>> Sent from the linuxppc-embedded mailing list archive at Nabble.com.
>>>=20
>>> _______________________________________________
>>> Linuxppc-embedded mailing list
>>> Linuxppc-embedded@ozlabs.org
>>> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>>=20
>> _________________________________________________________________
>> Tecnolog=EDa, moda, motor, viajes,=85suscr=EDbete a nuestros boletines p=
ara
>> estar a la =FAltima
>> http://newsletters.msn.com/hm/maintenanceeses.asp?L=3DES&C=3DES&P=3DWCMa=
intenance&Brand=3DWL&RU=3Dhttp%3a%2f%2fmail.live.com
>> _______________________________________________
>> Linuxppc-embedded mailing list
>> Linuxppc-embedded@ozlabs.org
>> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>>=20
>>=20
>=20
> --=20
> View this message in context: http://www.nabble.com/USB-configuration-tf4=
956061.html#a14206951
> Sent from the linuxppc-embedded mailing list archive at Nabble.com.
>=20
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
_________________________________________________________________
MSN Video.=20
http://video.msn.com/?mkt=3Des-es=
^ permalink raw reply
* Re: [PATCH RFC 3/7] [POWERPC] CPM2: implement GPIO API
From: Jochen Friedrich @ 2007-12-12 15:49 UTC (permalink / raw)
To: Anton Vorontsov; +Cc: linuxppc-dev
In-Reply-To: <20071210204845.GC32278@localhost.localdomain>
Hi Anton,
> +int gpio_direction_input(unsigned int gpio)
> +{
> + unsigned long flags;
> + int port = gpio / 32;
> + int pin = gpio % 32;
> +
> + spin_lock_irqsave(&cpm2_port_locks[port], flags);
> +
> + cpm2_set_pin(port, pin, CPM_PIN_INPUT | CPM_PIN_GPIO);
> +int gpio_direction_output(unsigned int gpio, int value)
> +{
> + struct cpm2_ioports __iomem *iop =
> + (struct cpm2_ioports __iomem *)&cpm2_immr->im_ioport;
> + int port = gpio / 32;
> + int pin = gpio % 32;
> + unsigned long flags;
> +
> + pin = 1 << (31 - pin);
> +
> + spin_lock_irqsave(&cpm2_port_locks[port], flags);
> +
> + cpm2_set_pin(port, pin, CPM_PIN_OUTPUT | CPM_PIN_GPIO);
You seem to do the pin -> bitmask conversation twice in gpio_direction_output().
cpm2_set_pin() must be executed before pin = 1 << (31 - pin);
Thanks,
Jochen
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox