13 Feb, 2013

1 commit

  • This patch replaces the horribly coded of_count_named_gpios() with a
    call to of_count_phandle_with_args() which is far more efficient. This
    also changes the return value of of_gpio_count() & of_gpio_named_count()
    from 'unsigned int' to 'int' so that it can return an error code. All
    the users of that function are fixed up to correctly handle a negative
    return value.

    v2: Split GPIO portion into a separate patch

    Tested-by: Andreas Larsson
    Signed-off-by: Grant Likely
    Cc: Linus Walleij
    Cc: Rob Herring

    Grant Likely
     

19 May, 2012

1 commit

  • This patch changes the of_xlate API to make it possible for multiple
    gpio_chips to refer to the same device tree node. This is useful for
    banked GPIO controllers that use multiple gpio_chips for a single
    device. With this change the core code will try calling of_xlate on
    each gpio_chip that references the device_node and will return the
    gpio number for the first one to return 'true'.

    Tested-by: Roland Stigge
    Acked-by: Arnd Bergmann
    Signed-off-by: Grant Likely

    Grant Likely
     

06 Feb, 2012

1 commit


13 Dec, 2011

1 commit

  • of_parse_phandle_with_args() needs to return quite a bit of data. Rather
    than making each datum a separate **out_ argument, this patch creates
    struct of_phandle_args to contain all the returned data and reworks the
    user of the function. This patch also enables of_parse_phandle_with_args()
    to return the device node pointer for the phandle node.

    This patch also ends up being fairly major surgery to
    of_parse_handle_with_args(). The existing structure didn't work well
    when extending to use of_phandle_args, and I discovered bugs during testing.
    I also took the opportunity to rename the function to be like the
    existing of_parse_phandle().

    v2: - moved declaration of of_phandle_args to fix compile on non-DT builds
    - fixed incorrect index in example usage
    - fixed incorrect return code handling for empty entries

    Reviewed-by: Shawn Guo
    Signed-off-by: Grant Likely

    Grant Likely
     

29 Jul, 2011

1 commit

  • Allow GPIO drivers to use of_gpio_simple_xlate. This is useful for the
    generic GPIO driver for example where gpio_chip is embedded in
    bgpio_chip and doesn't need of_mm_gpio_chip but has a simple 1:1 GPIO
    mapping.

    Cc: Anton Vorontsov
    Cc: Grant Likely
    Signed-off-by: Jamie Iles
    Signed-off-by: Grant Likely

    Jamie Iles
     

29 Jun, 2011

1 commit


06 Jul, 2010

3 commits

  • Implement generic OF gpio hooks and thus make device-enabled GPIO chips
    (i.e. the ones that have gpio_chip->dev specified) automatically attach
    to the OpenFirmware subsystem. Which means that now we can handle I2C and
    SPI GPIO chips almost* transparently.

    * "Almost" because some chips still require platform data, and for these
    chips OF-glue is still needed, though with this change the glue will
    be much smaller.

    Signed-off-by: Anton Vorontsov
    Signed-off-by: Grant Likely
    Cc: David Brownell
    Cc: Bill Gatliff
    Cc: Dmitry Eremin-Solenikov
    Cc: Benjamin Herrenschmidt
    Cc: Jean Delvare
    Cc: Andrew Morton
    CC: linux-kernel@vger.kernel.org
    CC: devicetree-discuss@lists.ozlabs.org

    Anton Vorontsov
     
  • Currently the kernel uses the struct device_node.data pointer to resolve
    a struct gpio_chip pointer from a device tree node. However, the .data
    member doesn't provide any type checking and there aren't any rules
    enforced on what it should be used for. There's no guarantee that the
    data stored in it actually points to an gpio_chip pointer.

    Instead of relying on the .data pointer, this patch modifies the code
    to add a lookup function which scans through the registered gpio_chips
    and returns the gpio_chip that has a pointer to the specified
    device_node.

    Signed-off-by: Grant Likely
    CC: Andrew Morton
    CC: Anton Vorontsov
    CC: Grant Likely
    CC: David Brownell
    CC: Bill Gatliff
    CC: Dmitry Eremin-Solenikov
    CC: Benjamin Herrenschmidt
    CC: Jean Delvare
    CC: linux-kernel@vger.kernel.org
    CC: devicetree-discuss@lists.ozlabs.org

    Grant Likely
     
  • The OF gpio infrastructure is great for describing GPIO connections within
    the device tree. However, using a GPIO binding still requires changes to
    the gpio controller just to add an of_gpio structure. In most cases, the
    gpio controller doesn't actually need any special support and the simple
    OF gpio mapping function is more than sufficient. Additional, the current
    scheme of using of_gpio_chip requires a convoluted scheme to maintain
    1:1 mappings between of_gpio_chip and gpio_chip instances.

    If the struct of_gpio_chip data members were moved into struct gpio_chip,
    then it would simplify the processing of OF gpio bindings, and it would
    make it trivial to use device tree OF connections on existing gpiolib
    controller drivers.

    This patch eliminates the of_gpio_chip structure and moves the relevant
    fields into struct gpio_chip (conditional on CONFIG_OF_GPIO). This move
    simplifies the existing code and prepares for adding automatic device tree
    support to existing drivers.

    Signed-off-by: Grant Likely
    Cc: Andrew Morton
    Cc: Anton Vorontsov
    Cc: Grant Likely
    Cc: David Brownell
    Cc: Bill Gatliff
    Cc: Dmitry Eremin-Solenikov
    Cc: Benjamin Herrenschmidt
    Cc: Jean Delvare

    Anton Vorontsov
     

21 Dec, 2008

1 commit


03 Dec, 2008

1 commit

  • This adds a new function, of_get_gpio_flags, which is like
    of_get_gpio(), but accepts a new "flags" argument. This new function
    will be used by the drivers that need to retrieve additional GPIO
    information, such as active-low flag.

    Also, this changes the default ("simple") .xlate routine to warn about
    bogus (< 2) #gpio-cells usage: the second cell should always be present
    for GPIO flags.

    Signed-off-by: Anton Vorontsov
    Signed-off-by: Paul Mackerras

    Anton Vorontsov
     

22 Jul, 2008

1 commit

  • Since commit 7560fa60fcdcdb0da662f6a9fad9064b554ef46c (gpio:
    and "no GPIO support here" stubs) drivers can use GPIOs if they're available,
    but don't require them.

    This patch actually enables this feature.

    Signed-off-by: Wolfgang Grandegger
    Signed-off-by: Anton Vorontsov
    Signed-off-by: Benjamin Herrenschmidt

    Wolfgang Grandegger
     

17 Apr, 2008

1 commit

  • This implements various helpers to support OF bindings for the GPIO
    LIB API.

    Previously this was PowerPC specific, but it seems this code isn't
    arch-dependent anyhow, so let's place it into of/.

    SPARC will not see this addition yet, real hardware seem to not use
    GPIOs at all. But this might change:

    http://www.leox.org/docs/faq_MLleon.html

    "16-bit I/O port" sounds promising. :-)

    Signed-off-by: Anton Vorontsov
    Acked-by: Grant Likely
    Signed-off-by: Paul Mackerras

    Anton Vorontsov