All of lore.kernel.org
 help / color / mirror / Atom feed
From: Philippe Gerum <rpm@xenomai.org>
To: peter.breuer@domain.hid
Cc: xenomai@xenomai.org
Subject: Re: [Xenomai-help] gpio-keys with xenomai
Date: Thu, 18 Mar 2010 21:56:54 +0100	[thread overview]
Message-ID: <1268945814.27899.397.camel@domain.hid> (raw)
In-Reply-To: <1268865353.2396.0.camel@domain.hid>

On Wed, 2010-03-17 at 23:35 +0100, Peter Breuer wrote:
> Hello everyone,
> I am new to xenomai, so please be patient.
> I am working with an AT91SAM9621S (Board SBC6000X) and I successfully
> patched my linux 2.6.24 with xenomai 2.4.9.1. I also have a signal on on
> of the GPIOs and I want a program to react, every time the signal
> arrives (~10Hz).
> Before compiling I added some lines to the board description file
> (arch/arm/mach-at91/board-sbc9621.c):
> ...
> static struct gpio_keys_button sbc9261_buttons[] = {
> ...
> //begin changes
>     {
>         .gpio        = AT91_PIN_PC4,
>         .code        = BTN_2,
>         .desc        = "GPIO 1",
>         .active_low    = 1,
>     },
> //end changes
> };
> ...
> static void __init sbc9261_add_device_buttons(void)
> {
> ...
> //begin changes
>     at91_set_gpio_input(AT91_PIN_PC4, 1);    /* btn1 */
>     at91_set_deglitch(AT91_PIN_PC4, 1);
> //end changes
> 
>     platform_device_register(&sbc9261_button_device);
> }
> 
> Now a new event showed up in /dev/input/
> Without the xenomai patch there was an interrupt, that I could listen to
> with a program (open(/dev/input/event2) and select for listening) and
> react to the signal.
> With the xenomai patch nothing is coming trough, and even though GPIO 1
> still shows up in /proc/interrupts, it doesnt show up
> in /proc/xenomai/irq.
> I tried to use the native API (I used the usr_irq.c) to create and wait
> for the signal, but nothin happend (rt_intr_wait() returned -1).
> I would be very happy about every hint in the right direction.

rt_intr_wait() should be called from a real-time task, obtained from
rt_task_create/spawn; failure to do so causes the Xenomai core to
dismiss your request with -EPERM.

There is a simple rule of thumb to know whether a Xenomai syscall shall
be called from a real-time task: if a Xenomai service may block the
caller, or has an effect on some of its dynamic properties (like its
real-time scheduling priority, some of its runtime options or current
execution mode within the Xenomai domain etc.), then it may only be
called on behalf of a real-time task.

Additionally, you should call rt_intr_enable() to explicitly unmask the
interrupt channel, since it is left masked upon creation. Maybe that is
what is missing (user_irq.c is wrong in this respect) to get the first
IRQ.

> greetings,
> Peter 
> 
> 
> 
> _______________________________________________
> Xenomai-help mailing list
> Xenomai-help@domain.hid
> https://mail.gna.org/listinfo/xenomai-help


-- 
Philippe.




  parent reply	other threads:[~2010-03-18 20:56 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-17 22:35 [Xenomai-help] gpio-keys with xenomai Peter Breuer
2010-03-18 20:14 ` Gilles Chanteperdrix
2010-03-18 20:56 ` Philippe Gerum [this message]
  -- strict thread matches above, loose matches on Subject: below --
2010-03-24  0:18 Peter Breuer
2010-03-24 10:19 ` Gilles Chanteperdrix

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=1268945814.27899.397.camel@domain.hid \
    --to=rpm@xenomai.org \
    --cc=peter.breuer@domain.hid \
    --cc=xenomai@xenomai.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.