linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: "tiejun.chen" <tiejun.chen@windriver.com>
To: deebul nair <deebuls@gmail.com>
Cc: linuxppc-dev@lists.ozlabs.org
Subject: Re: MPC85xx - accessing external interrupt
Date: Mon, 30 Aug 2010 15:36:54 +0800	[thread overview]
Message-ID: <4C7B5F96.4010607@windriver.com> (raw)
In-Reply-To: <AANLkTim5FXeRvx2TiPMGSkwqdbOeei6bL5PebK7+toLZ@mail.gmail.com>

deebul nair wrote:
> Hi all
> 
> I am trying to use the external interrupts on the Powerpc architecture
> MPC8542 .
> 
> My  problem is that my driver is trying to request the external
> interrupt IRQ1, and I dont know what number use in INTR_NUM:
> 
> request_irq(INTR_NUM, , , , )
> 
> As per the MPC85xx documentation
> Documentation/powerpc/dts-bindings/fsl/mpic.txt
> about the implementation of interrupts virtual numbers
> the external interrupt virtual irq number for IRQ1 should be 1
> 
> but when i try to give INTR_NUM ins request_irq as 1 it gives error .
> 
> When i use irq_create_mapping() it gives me output as 16.. and it registers
> .. but the problem is it is not fixed
> neither it gives interrupts .
> when i remove and add it registers to some other addresses
> 
> i even tried irq_of_parse_map()
> 
> for_each_node_by_type(np,"interrupt-controller"){
>     if(of_device_is_compatible(np,"chrp,open-pic")){
>            found=np;
>            break;
> }
> }
> 
> virq = irq_of_parse_and_map(found, irq);
> 
> this always returns 0
> whatever may be the irq value..
> as a result the driver gives error for irq 0

Anyway the following path should be the correct path:

request_irq(virq)
	      |
	      + virq = irq_of_parse_and_map(hw_irq)
					      |
					      + We get this from the dts file.

So you should define the appropriate node for your device. Then convert your
hw_irq to vir_irq via irq_of_parse_and_map() to pass that to reuest_irq() on
your device driver. Sometime this process is wrapped by some functions so I
recommend you refer to the files on the directory, arch/powerpc/sysdev/.

But I think the root cause to your problem is that you cannot pass the proper
arguments to irq_of_parse_and_map().
------
unsigned int irq_of_parse_and_map(struct device_node *dev, int index)

You should do this like the following:
------
	struct device_node *np;
	unsigned int virq;

	np = of_find_compatible_node(NULL, NULL, "<the compatible property of your
device node on dts>");
	if (np) {
		irq_of_parse_and_map(np, 0);
	}

	request_irq(virq,......);

Here I assume you have only one irq property so set 'index' as '0' on the
function, irq_of_parse_and_map().

Cheers
Tiejun
		
> 
> 
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev

      reply	other threads:[~2010-08-30 11:16 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-30  6:02 MPC85xx - accessing external interrupt deebul nair
2010-08-30  7:36 ` tiejun.chen [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4C7B5F96.4010607@windriver.com \
    --to=tiejun.chen@windriver.com \
    --cc=deebuls@gmail.com \
    --cc=linuxppc-dev@lists.ozlabs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).