Re: Configuration-Problem ext-interrupt on mpc52xx

2007-09-20 Thread S. Fricke
Hello,

> > I have read it! But another driver on Boot-time pulled my interrupt
> 
> Erm.. if the interrupt is shared with something else which expects a
> different trigger/polarity, you're kind of stuffed

YEEeess! An incomplete documentation is suboptimal! In german, we would
say: "[...] Das es die Sau krausst [...]"

I have now used an another Interrupt and it works.

Mit freundlichen Gruessen
Silvio Fricke

-- 
-- S. Fricke - MAILTO:[EMAIL PROTECTED] --
   Diplom-Informatiker (FH)   TEL:   (+49)8330-911278
   Linux-Entwicklung   JABBER:  [EMAIL PROTECTED]
-- Steinbacher Strasse 18, D-87764 Legau ---



pgp8VQjayKpfq.pgp
Description: PGP signature
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Re: Configuration-Problem ext-interrupt on mpc52xx

2007-09-19 Thread David Gibson
On Wed, Sep 19, 2007 at 09:01:46PM +0200, S. Fricke wrote:
> Hello,
> 
> > On 9/19/07, S. Fricke <[EMAIL PROTECTED]> wrote:
> > > Hi,
> > >
> > > how can i configure an "ext interrupt" to high-level? I want a 
> > > interruption on
> > > IRQ2, but I checked with an oscilloscope that the pin has a low state and 
> > > I
> > > needs a high state.
> > >
> > > I have tried, after I got the irq (with irq_of_parse_and_map), set it with
> > >
> > > set_irq_type(irq, IRQ_TYPE_LEVEL_HIGH);
> > >
> > > But I think it is a system-configuration (irq_desc) and no
> > > device-configuration.
> > 
> > You shouldn't need to do this.  You set your sense level in the device tree.
> > 
> > From your previous email, your device node looks like this:
> > > [EMAIL PROTECTED] {
> > > interrupt-parent = <500>;
> > > interrupts = <1 2 2>;
> > > };
> > 
> > Which is IRQ2, EDGE_FALLING.
> > 
> > If you change your interrupts property to <1 2 0>, then your sense is
> > set to LEVEL_HIGH.  (Seriously, you need to read the interrupts
> > section of Documentation/powerpc/mpc52xx-device-tree-bindings.txt.)
> 
> I have read it! But another driver on Boot-time pulled my interrupt

Erm.. if the interrupt is shared with something else which expects a
different trigger/polarity, you're kind of stuffed

> to low, I can't do anything except for looking at the oscilloscope
> 
> I'm going to disable all unneeded drivers tomorrow morning.
> 
> TIA:
> Silvio Fricke
> 



> ___
> Linuxppc-dev mailing list
> Linuxppc-dev@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-dev

-- 
David Gibson| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au  | minimalist, thank you.  NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson


signature.asc
Description: Digital signature
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Re: Configuration-Problem ext-interrupt on mpc52xx

2007-09-19 Thread S. Fricke
Hello,

> On 9/19/07, S. Fricke <[EMAIL PROTECTED]> wrote:
> > Hi,
> >
> > how can i configure an "ext interrupt" to high-level? I want a interruption 
> > on
> > IRQ2, but I checked with an oscilloscope that the pin has a low state and I
> > needs a high state.
> >
> > I have tried, after I got the irq (with irq_of_parse_and_map), set it with
> >
> > set_irq_type(irq, IRQ_TYPE_LEVEL_HIGH);
> >
> > But I think it is a system-configuration (irq_desc) and no
> > device-configuration.
> 
> You shouldn't need to do this.  You set your sense level in the device tree.
> 
> From your previous email, your device node looks like this:
> > [EMAIL PROTECTED] {
> > interrupt-parent = <500>;
> > interrupts = <1 2 2>;
> > };
> 
> Which is IRQ2, EDGE_FALLING.
> 
> If you change your interrupts property to <1 2 0>, then your sense is
> set to LEVEL_HIGH.  (Seriously, you need to read the interrupts
> section of Documentation/powerpc/mpc52xx-device-tree-bindings.txt.)

I have read it! But another driver on Boot-time pulled my interrupt to low, I
can't do anything except for looking at the oscilloscope

I'm going to disable all unneeded drivers tomorrow morning.

TIA:
Silvio Fricke

-- 
-- S. Fricke - MAILTO:[EMAIL PROTECTED] --
   Diplom-Informatiker (FH)
   Linux-Entwicklung




pgpcBhPAP4T92.pgp
Description: PGP signature
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Re: Configuration-Problem ext-interrupt on mpc52xx

2007-09-19 Thread Grant Likely
On 9/19/07, S. Fricke <[EMAIL PROTECTED]> wrote:
> Hi,
>
> how can i configure an "ext interrupt" to high-level? I want a interruption on
> IRQ2, but I checked with an oscilloscope that the pin has a low state and I
> needs a high state.
>
> I have tried, after I got the irq (with irq_of_parse_and_map), set it with
>
> set_irq_type(irq, IRQ_TYPE_LEVEL_HIGH);
>
> But I think it is a system-configuration (irq_desc) and no
> device-configuration.

You shouldn't need to do this.  You set your sense level in the device tree.

>From your previous email, your device node looks like this:
> [EMAIL PROTECTED] {
> interrupt-parent = <500>;
> interrupts = <1 2 2>;
> };

Which is IRQ2, EDGE_FALLING.

If you change your interrupts property to <1 2 0>, then your sense is
set to LEVEL_HIGH.  (Seriously, you need to read the interrupts
section of Documentation/powerpc/mpc52xx-device-tree-bindings.txt.)

g.

-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
[EMAIL PROTECTED]
(403) 399-0195
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: Configuration-Problem ext-interrupt on mpc52xx

2007-09-19 Thread Juergen Beisert
Silvio,

On Wednesday 19 September 2007 13:59, S. Fricke wrote:
> how can i configure an "ext interrupt" to high-level? I want a interruption
> on IRQ2, but I checked with an oscilloscope that the pin has a low state
> and I needs a high state.
>
> I have tried, after I got the irq (with irq_of_parse_and_map), set it with
>
> set_irq_type(irq, IRQ_TYPE_LEVEL_HIGH);
>
> But I think it is a system-configuration (irq_desc) and no
> device-configuration.

Try with the attached patch.

Regards,
Juergen

-- 
Dipl.-Ing. Juergen Beisert | http://www.pengutronix.de
 Pengutronix - Linux Solutions for Science and Industry
    Handelsregister: Amtsgericht Hildesheim, HRA 2686
     Vertretung Sued/Muenchen, Germany
   Phone: +49-8766-939 228 |  Fax: +49-5121-206917-9
---
 arch/powerpc/platforms/52xx/mpc52xx_pic.c |   38 ++
 1 file changed, 38 insertions(+)

Index: arch/powerpc/platforms/52xx/mpc52xx_pic.c
===
--- arch/powerpc/platforms/52xx/mpc52xx_pic.c.orig
+++ arch/powerpc/platforms/52xx/mpc52xx_pic.c
@@ -25,6 +25,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 
 #include 
@@ -107,11 +108,48 @@ static void mpc52xx_extirq_ack(unsigned 
 	io_be_setbit(&intr->ctrl, 27-l2irq);
 }
 
+static int mpc52xx_extirq_set_type(unsigned int virq, unsigned int flow_type)
+{
+	u32 ctrl_reg, type;
+	int irq;
+	int l2irq;
+
+	irq = irq_map[virq].hwirq;
+	l2irq = (irq & MPC52xx_IRQ_L2_MASK) >> MPC52xx_IRQ_L2_OFFSET;
+
+	pr_debug("%s: irq=%x. l2=%d flow_type=%d\n", __func__, irq, l2irq, flow_type);
+
+	switch (flow_type) {
+	case IRQF_TRIGGER_HIGH:
+		type = 0;
+		break;
+	case IRQF_TRIGGER_RISING:
+		type = 1;
+		break;
+	case IRQF_TRIGGER_FALLING:
+		type = 2;
+		break;
+	case IRQF_TRIGGER_LOW:
+		type = 3;
+		break;
+	default:
+		type = 0;
+	}
+
+	ctrl_reg = in_be32(&intr->ctrl);
+	ctrl_reg &= ~(0x3 << (22 - (l2irq * 2)));
+	ctrl_reg |= (type << (22 - (l2irq * 2)));
+	out_be32(&intr->ctrl, ctrl_reg);
+
+	return 0;
+}
+
 static struct irq_chip mpc52xx_extirq_irqchip = {
 	.typename = " MPC52xx IRQ[0-3] ",
 	.mask = mpc52xx_extirq_mask,
 	.unmask = mpc52xx_extirq_unmask,
 	.ack = mpc52xx_extirq_ack,
+	.set_type = mpc52xx_extirq_set_type,
 };
 
 /*
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Configuration-Problem ext-interrupt on mpc52xx

2007-09-19 Thread S. Fricke
Hi,

how can i configure an "ext interrupt" to high-level? I want a interruption on
IRQ2, but I checked with an oscilloscope that the pin has a low state and I
needs a high state.

I have tried, after I got the irq (with irq_of_parse_and_map), set it with

set_irq_type(irq, IRQ_TYPE_LEVEL_HIGH);

But I think it is a system-configuration (irq_desc) and no
device-configuration.

Mit freundlichen Gruessen
Silvio Fricke

-- 
-- S. Fricke - MAILTO:[EMAIL PROTECTED] --
   Diplom-Informatiker (FH)
   Linux-Entwicklung




pgpofFkMiFH5Z.pgp
Description: PGP signature
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev