I have resisted contacting the list with regards to an issue I am having trying 
to get what should be a simple part of my system working but I cannot find any 
documentation or other posts to help.
 
I am using 3.6 kernel but have tried 3.12 to see if the issue has been 
addressed in that but its exactly the same.
 
I am attempting to get a GPIO to wake my AM3517 system up from a suspend to 
memory.  I have tried with a few different options for GPIO’s
I have available GPIO-10, GPIO-28 and GPIO-30.
 
I started by using GPIO-28 and that would configure nicely and I set up the 
interrupt handler and could see my debug when triggering the input (brilliant) 
but for some reason I cannot use it  to wake the system as it is not in the 
correct group for wakeup.  There is a note in the Tech Ref Man -

Only gpio_1, gpio_9, gpio_10, gpio_11, gpio_30, and gpio_31 can be used to 
generate a direct wake-up event.

So have to use a different one. GPIO-30 cannot be used as that holds the system 
in reset, so all that is left is GPIO-10.
All seems to be good for initialisation;
 
In the omap_board_mux I define
 
    OMAP3_MUX(SYS_CLKOUT1, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP |
              OMAP_PIN_OFF_INPUT_PULLUP | OMAP_PIN_OFF_OUTPUT_LOW |
              OMAP_PIN_OFF_WAKEUPENABLE),
 
Then the init function and interrupt handler;
 
/****************************************************************************
*
* Board wakeup interrupt
*
****************************************************************************/
#define IGNITION_GPIO 10
 
static irqreturn_t detect_irq(int irq, void *_data)
{
    printk("%s: irq\n", __func__);
 
    return IRQ_HANDLED;
}
 
static void enable_board_wakeup_source(void)
{
    int irq;
    int ret;
    /* GPIO_10 interrupt line */
 
    gpio_request(IGNITION_GPIO, "gpio_10");
    gpio_direction_input(IGNITION_GPIO);
    omap_mux_init_gpio(IGNITION_GPIO, OMAP_PIN_INPUT_PULLUP |
                       OMAP_PIN_OFF_WAKEUPENABLE);
 
       irq = gpio_to_irq(IGNITION_GPIO);
    if (request_irq(irq, detect_irq, IRQF_TRIGGER_RISING, "ignition",
                    NULL)) {
            pr_err("********* %s: request_irq() failed\n", __func__);
            return;
    }
 
    if (enable_irq_wake(irq)) {
            pr_err("********* %s: irq_set_irq_wake() failed\n", __func__);
            return;
    }
 
    pr_err("************** %s: set irq %u\n", __func__, irq);
}
 
But when I try and trigger the input there is no IRQ handled and I also cannot 
export the gpio in sys/class/
 
If I have a look at the mux it seems to be OK
# cd /debug/omap_mux/
# cat sys_clkout1
name: sys_clkout1.gpio_10 (0x48002a1a/0x9ea = 0x411c), b ag25, t NA
mode: OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE | OMAP_MUX_MODE4
signals: sys_clkout1 | NA | NA | NA | gpio_10 | NA | NA | safe_mode
 
There is definitely a problem as when I look at the state it says its high, 
when the input is definitely 0V
# cat /debug/gpio
GPIOs 0-31, gpio:
gpio-0   (mpu6050-irq         ) in  lo
gpio-10  (gpio_10             ) in  hi
gpio-25  (USB1 PHY reset      ) out hi
 
I think there is something else taking over the pin, maybe the clock setup for 
sys_clkout1.
 
Is there any way to make it just work for my config or make GPIO-28 work to 
wake the system ?
 
Hope you have seen this before.
 
Kind Regards
Marc--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to