[U-Boot] couple questions on driver model for gpio, and gpio in sandbox

Robert P. J. Day rpjday at crashcourse.ca
Fri Sep 23 12:02:35 CEST 2016


  currently crawling through the gpio code in u-boot so, question one,
i see in include/asm-generic/gpio.h, the explicitly listed as
"deprecated" old API routines:

 int gpio_request(unsigned gpio, const char *label)
 int gpio_free(unsigned gpio)
 int gpio_direction_input(unsigned gpio)
 int gpio_direction_output(unsigned gpio, int value)
 int gpio_get_value(unsigned gpio)
 int gpio_set_value(unsigned gpio, int value)

is that it? are those the entirety of the old-style gpio API that are
now deprecated? as in, all else in that header file is relevant for
the newer driver model?

  also, i note in that same file enum and flags for the states of a
gpio:

  /* State of a GPIO, as reported by get_function() */
  enum gpio_func_t {
        GPIOF_INPUT = 0,
        GPIOF_OUTPUT,
        GPIOF_UNUSED,           /* Not claimed */
        GPIOF_UNKNOWN,          /* Not known */
        GPIOF_FUNC,             /* Not used as a GPIO */

        GPIOF_COUNT,
  };

  struct udevice;

  struct gpio_desc {
        struct udevice *dev;    /* Device, NULL for invalid GPIO */
        unsigned long flags;
  #define GPIOD_REQUESTED         (1 << 0)        /* Requested/claimed */
  #define GPIOD_IS_OUT            (1 << 1)        /* GPIO is an output */
  #define GPIOD_IS_IN             (1 << 2)        /* GPIO is an input */
  #define GPIOD_ACTIVE_LOW        (1 << 3)        /* value has active low */
  #define GPIOD_IS_OUT_ACTIVE     (1 << 4)        /* set output active   */

        uint offset;            /* GPIO offset within the device */
        /*
         * We could consider adding the GPIO label in here. Possibly we could
         * use this structure for internal GPIO information.
         */
  };

however, i note this in drivers/gpio/sandbox.c:

  /* Flags for each GPIO */
  #define GPIOF_OUTPUT    (1 << 0)        /* Currently set as an output */
  #define GPIOF_HIGH      (1 << 1)        /* Currently set high */
  #define GPIOF_ODR       (1 << 2)        /* Currently set to open drain mode */

this looks like sandbox is (re)defining some GPIO-related flags ... is
there some reason it doesn't just use the flag definitions from the
earlier header file? or is that a silly question?

rday

-- 

========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                        http://crashcourse.ca

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================



More information about the U-Boot mailing list