Re: [uClinux-dev] [PATCH] m68knommu: rename PT_OFF_VECTOR to PT_OFF_FORMATVEC.

2010-09-01 Thread Greg Ungerer


Hi Philippe,

Philippe De Muyter wrote:

In m68k/m68knommu assembly files, the same value is called sometimes
PT_OFF_VECTOR, but more frequently PT_OFF_FORMATVEC.  Standardize
name to PT_OFF_FORMATVEC.

Signed-off-by: Philippe De Muyter 


Looks good, thanks. Added to the m68knommu git tree.

Regards
Greg



---
 arch/m68knommu/kernel/asm-offsets.c   |2 +-
 arch/m68knommu/platform/68328/entry.S |   16 
 arch/m68knommu/platform/68360/entry.S |2 +-
 3 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/arch/m68knommu/kernel/asm-offsets.c 
b/arch/m68knommu/kernel/asm-offsets.c
index eca508c..8156287 100644
--- a/arch/m68knommu/kernel/asm-offsets.c
+++ b/arch/m68knommu/kernel/asm-offsets.c
@@ -57,7 +57,7 @@ int main(void)
DEFINE(PT_OFF_FORMATVEC, offsetof(struct pt_regs, sr) - 2);
 #else
/* bitfields are a bit difficult */
-   DEFINE(PT_OFF_VECTOR, offsetof(struct pt_regs, pc) + 4);
+   DEFINE(PT_OFF_FORMATVEC, offsetof(struct pt_regs, pc) + 4);
 #endif
 
 	/* signal defines */

diff --git a/arch/m68knommu/platform/68328/entry.S 
b/arch/m68knommu/platform/68328/entry.S
index 74229f7..b3d8d73 100644
--- a/arch/m68knommu/platform/68328/entry.S
+++ b/arch/m68knommu/platform/68328/entry.S
@@ -133,7 +133,7 @@ Lreturn:
  */
 inthandler1:
SAVE_ALL
-   movew   %sp@(PT_OFF_VECTOR), %d0
+   movew   %sp@(PT_OFF_FORMATVEC), %d0
and #0x3ff, %d0
 
 	movel	%sp,%...@-

@@ -144,7 +144,7 @@ inthandler1:
 
 inthandler2:

SAVE_ALL
-   movew   %sp@(PT_OFF_VECTOR), %d0
+   movew   %sp@(PT_OFF_FORMATVEC), %d0
and #0x3ff, %d0
 
 	movel	%sp,%...@-

@@ -155,7 +155,7 @@ inthandler2:
 
 inthandler3:

SAVE_ALL
-   movew   %sp@(PT_OFF_VECTOR), %d0
+   movew   %sp@(PT_OFF_FORMATVEC), %d0
and #0x3ff, %d0
 
 	movel	%sp,%...@-

@@ -166,7 +166,7 @@ inthandler3:
 
 inthandler4:

SAVE_ALL
-   movew   %sp@(PT_OFF_VECTOR), %d0
+   movew   %sp@(PT_OFF_FORMATVEC), %d0
and #0x3ff, %d0
 
 	movel	%sp,%...@-

@@ -177,7 +177,7 @@ inthandler4:
 
 inthandler5:

SAVE_ALL
-   movew   %sp@(PT_OFF_VECTOR), %d0
+   movew   %sp@(PT_OFF_FORMATVEC), %d0
and #0x3ff, %d0
 
 	movel	%sp,%...@-

@@ -188,7 +188,7 @@ inthandler5:
 
 inthandler6:

SAVE_ALL
-   movew   %sp@(PT_OFF_VECTOR), %d0
+   movew   %sp@(PT_OFF_FORMATVEC), %d0
and #0x3ff, %d0
 
 	movel	%sp,%...@-

@@ -199,7 +199,7 @@ inthandler6:
 
 inthandler7:

SAVE_ALL
-   movew   %sp@(PT_OFF_VECTOR), %d0
+   movew   %sp@(PT_OFF_FORMATVEC), %d0
and #0x3ff, %d0
 
 	movel	%sp,%...@-

@@ -210,7 +210,7 @@ inthandler7:
 
 inthandler:

SAVE_ALL
-   movew   %sp@(PT_OFF_VECTOR), %d0
+   movew   %sp@(PT_OFF_FORMATVEC), %d0
and #0x3ff, %d0
 
 	movel	%sp,%...@-

diff --git a/arch/m68knommu/platform/68360/entry.S 
b/arch/m68knommu/platform/68360/entry.S
index d5ad408..5c50473 100644
--- a/arch/m68knommu/platform/68360/entry.S
+++ b/arch/m68knommu/platform/68360/entry.S
@@ -129,7 +129,7 @@ Lreturn:
  */
 inthandler:
SAVE_ALL
-   movew   %sp@(PT_OFF_VECTOR), %d0
+   movew   %sp@(PT_OFF_FORMATVEC), %d0
and.l   #0x3ff, %d0
lsr.l   #0x02,  %d0
 



--

Greg Ungerer  --  Principal EngineerEMAIL: g...@snapgear.com
SnapGear Group, McAfee  PHONE:   +61 7 3435 2888
8 Gardner Close FAX: +61 7 3217 5323
Milton, QLD, 4064, AustraliaWEB: http://www.SnapGear.com
___
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev


[uClinux-dev] Re: [PATCHv2] m68knommu: add support for Coldfire 547x/548x interrupt controller

2010-09-01 Thread Greg Ungerer


Hi Philippe,

Philippe De Muyter wrote:

Defines look good. Probably no point having a separate header
file for these, given the only use is in intc-2.c. I would
suggest putting them directly in intc-2.c


I think that in the long term, we'll need one, e.g. because the profile
timer will want to choose its (high) level+priority.

In the mean time, here is a revised patch.


Looks good, thanks. Applied to the m68knommu git tree.

Regards
Greg




---

The Coldfire MCF547x/MCF548x have the same interrupt controller than
the MCF528x e.g., but only one, not two as in the MCF528x.  Modify
intc-2.c to support only one interrupt controller if MCFICM_INTC1 is
not defined.

Signed-off-by: Philippe De Muyter 

diff --git a/arch/m68knommu/platform/coldfire/intc-2.c 
b/arch/m68knommu/platform/coldfire/intc-2.c
index a0c72ec..c23046c 100644
--- a/arch/m68knommu/platform/coldfire/intc-2.c
+++ b/arch/m68knommu/platform/coldfire/intc-2.c
@@ -1,9 +1,11 @@
 /*
  * intc-2.c
  *
- * General interrupt controller code for the many ColdFire version 2 cores
- * that use the two region INTC interrupt controller. This includes the
- * 523x family, 5270, 5271, 5274, 5275, and the 528x families.
+ * General interrupt controller code for the many ColdFire cores that use
+ * interrupt controllers with 63 interrupt sources, organized as 56 fully-
+ * programmable + 7 fixed-level interrupt sources. This includes the 523x
+ * family, the 5270, 5271, 5274, 5275, and the 528x family which have two such
+ * controllers, and the 547x and 548x families which have only one of them.
  *
  * (C) Copyright 2009, Greg Ungerer 
  *
@@ -23,21 +25,37 @@
 #include 
 
 /*

- * Each vector needs a unique priority and level asscoiated with it.
+ * Bit definitions for the ICR family of registers.
+ */
+#define MCFSIM_ICR_LEVEL(l)((l)<<3)  /* Level l intr */
+#define MCFSIM_ICR_PRI(p)  (p) /* Priority p intr */
+
+/*
+ * Each vector needs a unique priority and level associated with it.
  * We don't really care so much what they are, we don't rely on the
- * tranditional priority interrupt scheme of the m68k/ColdFire.
+ * traditional priority interrupt scheme of the m68k/ColdFire.
  */
-static u8 intc_intpri = 0x36;
+static u8 intc_intpri = MCFSIM_ICR_LEVEL(6) | MCFSIM_ICR_PRI(6);
+
+#ifdef MCFICM_INTC1
+#define NR_VECS128
+#else
+#define NR_VECS64
+#endif
 
 static void intc_irq_mask(unsigned int irq)

 {
-   if ((irq >= MCFINT_VECBASE) && (irq <= MCFINT_VECBASE + 128)) {
+   if ((irq >= MCFINT_VECBASE) && (irq <= MCFINT_VECBASE + NR_VECS)) {
unsigned long imraddr;
u32 val, imrbit;
 
 		irq -= MCFINT_VECBASE;

imraddr = MCF_IPSBAR;
+#ifdef MCFICM_INTC1
imraddr += (irq & 0x40) ? MCFICM_INTC1 : MCFICM_INTC0;
+#else
+   imraddr += MCFICM_INTC0;
+#endif
imraddr += (irq & 0x20) ? MCFINTC_IMRH : MCFINTC_IMRL;
imrbit = 0x1 << (irq & 0x1f);
 
@@ -48,13 +66,17 @@ static void intc_irq_mask(unsigned int irq)
 
 static void intc_irq_unmask(unsigned int irq)

 {
-   if ((irq >= MCFINT_VECBASE) && (irq <= MCFINT_VECBASE + 128)) {
+   if ((irq >= MCFINT_VECBASE) && (irq <= MCFINT_VECBASE + NR_VECS)) {
unsigned long intaddr, imraddr, icraddr;
u32 val, imrbit;
 
 		irq -= MCFINT_VECBASE;

intaddr = MCF_IPSBAR;
+#ifdef MCFICM_INTC1
intaddr += (irq & 0x40) ? MCFICM_INTC1 : MCFICM_INTC0;
+#else
+   intaddr += MCFICM_INTC0;
+#endif
imraddr = intaddr + ((irq & 0x20) ? MCFINTC_IMRH : 
MCFINTC_IMRL);
icraddr = intaddr + MCFINTC_ICR0 + (irq & 0x3f);
imrbit = 0x1 << (irq & 0x1f);
@@ -85,7 +107,9 @@ void __init init_IRQ(void)
 
 	/* Mask all interrupt sources */

__raw_writel(0x1, MCF_IPSBAR + MCFICM_INTC0 + MCFINTC_IMRL);
+#ifdef MCFICM_INTC1
__raw_writel(0x1, MCF_IPSBAR + MCFICM_INTC1 + MCFINTC_IMRL);
+#endif
 
 	for (irq = 0; (irq < NR_IRQS); irq++) {

irq_desc[irq].status = IRQ_DISABLED;




--

Greg Ungerer  --  Principal EngineerEMAIL: g...@snapgear.com
SnapGear Group, McAfee  PHONE:   +61 7 3435 2888
8 Gardner Close FAX: +61 7 3217 5323
Milton, QLD, 4064, AustraliaWEB: http://www.SnapGear.com
___
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev


[uClinux-dev] [PATCHv2] m68knommu: add support for Coldfire 547x/548x interrupt controller

2010-09-01 Thread Philippe De Muyter
Hi Greg,

> Defines look good. Probably no point having a separate header
> file for these, given the only use is in intc-2.c. I would
> suggest putting them directly in intc-2.c

I think that in the long term, we'll need one, e.g. because the profile
timer will want to choose its (high) level+priority.

In the mean time, here is a revised patch.

Best regards

Philippe

---

The Coldfire MCF547x/MCF548x have the same interrupt controller than
the MCF528x e.g., but only one, not two as in the MCF528x.  Modify
intc-2.c to support only one interrupt controller if MCFICM_INTC1 is
not defined.

Signed-off-by: Philippe De Muyter 

diff --git a/arch/m68knommu/platform/coldfire/intc-2.c 
b/arch/m68knommu/platform/coldfire/intc-2.c
index a0c72ec..c23046c 100644
--- a/arch/m68knommu/platform/coldfire/intc-2.c
+++ b/arch/m68knommu/platform/coldfire/intc-2.c
@@ -1,9 +1,11 @@
 /*
  * intc-2.c
  *
- * General interrupt controller code for the many ColdFire version 2 cores
- * that use the two region INTC interrupt controller. This includes the
- * 523x family, 5270, 5271, 5274, 5275, and the 528x families.
+ * General interrupt controller code for the many ColdFire cores that use
+ * interrupt controllers with 63 interrupt sources, organized as 56 fully-
+ * programmable + 7 fixed-level interrupt sources. This includes the 523x
+ * family, the 5270, 5271, 5274, 5275, and the 528x family which have two such
+ * controllers, and the 547x and 548x families which have only one of them.
  *
  * (C) Copyright 2009, Greg Ungerer 
  *
@@ -23,21 +25,37 @@
 #include 
 
 /*
- * Each vector needs a unique priority and level asscoiated with it.
+ * Bit definitions for the ICR family of registers.
+ */
+#define MCFSIM_ICR_LEVEL(l)((l)<<3)/* Level l intr */
+#define MCFSIM_ICR_PRI(p)  (p) /* Priority p intr */
+
+/*
+ * Each vector needs a unique priority and level associated with it.
  * We don't really care so much what they are, we don't rely on the
- * tranditional priority interrupt scheme of the m68k/ColdFire.
+ * traditional priority interrupt scheme of the m68k/ColdFire.
  */
-static u8 intc_intpri = 0x36;
+static u8 intc_intpri = MCFSIM_ICR_LEVEL(6) | MCFSIM_ICR_PRI(6);
+
+#ifdef MCFICM_INTC1
+#define NR_VECS128
+#else
+#define NR_VECS64
+#endif
 
 static void intc_irq_mask(unsigned int irq)
 {
-   if ((irq >= MCFINT_VECBASE) && (irq <= MCFINT_VECBASE + 128)) {
+   if ((irq >= MCFINT_VECBASE) && (irq <= MCFINT_VECBASE + NR_VECS)) {
unsigned long imraddr;
u32 val, imrbit;
 
irq -= MCFINT_VECBASE;
imraddr = MCF_IPSBAR;
+#ifdef MCFICM_INTC1
imraddr += (irq & 0x40) ? MCFICM_INTC1 : MCFICM_INTC0;
+#else
+   imraddr += MCFICM_INTC0;
+#endif
imraddr += (irq & 0x20) ? MCFINTC_IMRH : MCFINTC_IMRL;
imrbit = 0x1 << (irq & 0x1f);
 
@@ -48,13 +66,17 @@ static void intc_irq_mask(unsigned int irq)
 
 static void intc_irq_unmask(unsigned int irq)
 {
-   if ((irq >= MCFINT_VECBASE) && (irq <= MCFINT_VECBASE + 128)) {
+   if ((irq >= MCFINT_VECBASE) && (irq <= MCFINT_VECBASE + NR_VECS)) {
unsigned long intaddr, imraddr, icraddr;
u32 val, imrbit;
 
irq -= MCFINT_VECBASE;
intaddr = MCF_IPSBAR;
+#ifdef MCFICM_INTC1
intaddr += (irq & 0x40) ? MCFICM_INTC1 : MCFICM_INTC0;
+#else
+   intaddr += MCFICM_INTC0;
+#endif
imraddr = intaddr + ((irq & 0x20) ? MCFINTC_IMRH : 
MCFINTC_IMRL);
icraddr = intaddr + MCFINTC_ICR0 + (irq & 0x3f);
imrbit = 0x1 << (irq & 0x1f);
@@ -85,7 +107,9 @@ void __init init_IRQ(void)
 
/* Mask all interrupt sources */
__raw_writel(0x1, MCF_IPSBAR + MCFICM_INTC0 + MCFINTC_IMRL);
+#ifdef MCFICM_INTC1
__raw_writel(0x1, MCF_IPSBAR + MCFICM_INTC1 + MCFINTC_IMRL);
+#endif
 
for (irq = 0; (irq < NR_IRQS); irq++) {
irq_desc[irq].status = IRQ_DISABLED;
___
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev