lkml.org 
[lkml]   [2008]   [Feb]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    SubjectRe: [PATCH 1/4 resend] [x86] Add generic GPIO support to x86
    Date
    On Wednesday 13 February 2008, Andrew Morton wrote:
    > It would be more modern to have a <linux/gpio.h> which takes care of
    > cruddy details, but it's getting too late for that.

    Sort of like this? For drivers that don't want to list themselves
    in Kconfig as depending on GENERIC_GPIO (e.g. one NAND driver I heard
    about), this lets them use <linux/gpio.h> ... existing code can't
    break, and it won't hurt if new code uses this.

    - Dave


    ============== CUT HERE
    Add a <linux/gpio.h> defining fail/warn stubs for GPIO calls on
    platforms that don't support the GPIO programming interface. It
    includes the arch-specific interface glue otherwise.

    Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
    ---
    include/linux/gpio.h | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++
    1 file changed, 93 insertions(+)

    --- /dev/null 1970-01-01 00:00:00.000000000 +0000
    +++ g26/include/linux/gpio.h 2008-02-13 17:40:06.000000000 -0800
    @@ -0,0 +1,93 @@
    +#ifndef __LINUX_GPIO_H
    +#define __LINUX_GPIO_H
    +
    +#ifdef CONFIG_GENERIC_GPIO
    +#include <asm/gpio.h>
    +
    +#else
    +
    +/*
    + * Some platforms don't support the GPIO programming interface.
    + *
    + * In case some driver uses it anyway (it should normally have
    + * depended on GENERIC_GPIO), these routines help the compiler
    + * optimize out much GPIO-related code ... or trigger a runtime
    + * warning when something is wrongly called.
    + */
    +
    +static inline int gpio_is_valid(int number)
    +{
    + return 0;
    +}
    +
    +static inline int gpio_request(unsigned gpio, const char *label)
    +{
    + return -EINVAL;
    +}
    +
    +static inline void gpio_free(unsigned gpio)
    +{
    + /* GPIO can never have been requested */
    + WARN_ON(1);
    +}
    +
    +static inline int gpio_direction_input(unsigned gpio)
    +{
    + return -EINVAL;
    +}
    +
    +static inline int gpio_direction_output(unsigned gpio, int value)
    +{
    + return -EINVAL;
    +}
    +
    +static inline int gpio_get_value(unsigned gpio)
    +{
    + /* GPIO can never have been requested or set as {in,out}put */
    + WARN_ON(1);
    + return 0;
    +}
    +
    +static inline void gpio_set_value(unsigned gpio, int value)
    +{
    + /* GPIO can never have been requested or set as output */
    + WARN_ON(1);
    +}
    +
    +static int gpio_cansleep(unsigned gpio)
    +{
    + /* GPIO can never have been requested or set as {in,out}put */
    + WARN_ON(1);
    + return 0;
    +}
    +
    +static inline int gpio_get_value_cansleep(unsigned gpio)
    +{
    + /* GPIO can never have been requested or set as {in,out}put */
    + WARN_ON(1);
    + return 0;
    +}
    +
    +static inline void gpio_set_value_cansleep(unsigned gpio, int value)
    +{
    + /* GPIO can never have been requested or set as output */
    + WARN_ON(1);
    +}
    +
    +static inline int gpio_to_irq(unsigned gpio)
    +{
    + /* GPIO can never have been requested or set as input */
    + WARN_ON(1);
    + return -EINVAL;
    +}
    +
    +static inline int irq_to_gpio(unsigned irq)
    +{
    + /* irq can never have been returned from gpio_to_irq() */
    + WARN_ON(1);
    + return -EINVAL;
    +}
    +
    +#endif
    +
    +#endif /* __LINUX_GPIO_H */


    \
     
     \ /
      Last update: 2008-02-14 03:05    [W:0.055 / U:90.932 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site