Hi Simon,

You have already applied this patch.

It might be too late, but...



You can remove  "#include <asm/gpio.h>"
from lib/fdtdec.c.



This is important for me to delete 
my dummy file arch/arm/include/asm/arch-uniphier/gpio.h





Best Regards
Masahiro Yamada






On Mon,  5 Jan 2015 20:05:43 -0700
Simon Glass <s...@chromium.org> wrote:

> Now that we support device tree GPIO bindings directly in the driver model
> GPIO uclass we can remove these functions.
> 
> Signed-off-by: Simon Glass <s...@chromium.org>
> ---
> 
>  include/fdtdec.h | 77 ---------------------------------------------
>  lib/fdtdec.c     | 95 
> --------------------------------------------------------
>  2 files changed, 172 deletions(-)
> 
> diff --git a/include/fdtdec.h b/include/fdtdec.h
> index 629e072..54b716e 100644
> --- a/include/fdtdec.h
> +++ b/include/fdtdec.h
> @@ -186,39 +186,6 @@ int fdtdec_parse_phandle_with_args(const void *blob, int 
> src_node,
>                                  int cell_count, int index,
>                                  struct fdtdec_phandle_args *out_args);
>  
> -/* GPIOs are numbered from 0 */
> -enum {
> -     FDT_GPIO_NONE = -1U,    /* an invalid GPIO used to end our list */
> -
> -     FDT_GPIO_ACTIVE_LOW = 1 << 0,   /* input is active low (else high) */
> -};
> -
> -/* This is the state of a GPIO pin as defined by the fdt */
> -struct fdt_gpio_state {
> -     const char *name;       /* name of the fdt property defining this */
> -     uint gpio;              /* GPIO number, or FDT_GPIO_NONE if none */
> -     u8 flags;               /* FDT_GPIO_... flags */
> -};
> -
> -/* This tells us whether a fdt_gpio_state record is valid or not */
> -#define fdt_gpio_isvalid(x) ((x)->gpio != FDT_GPIO_NONE)
> -
> -/**
> - * Read the GPIO taking into account the polarity of the pin.
> - *
> - * @param gpio               pointer to the decoded gpio
> - * @return value of the gpio if successful, < 0 if unsuccessful
> - */
> -int fdtdec_get_gpio(struct fdt_gpio_state *gpio);
> -
> -/**
> - * Write the GPIO taking into account the polarity of the pin.
> - *
> - * @param gpio               pointer to the decoded gpio
> - * @return 0 if successful
> - */
> -int fdtdec_set_gpio(struct fdt_gpio_state *gpio, int val);
> -
>  /**
>   * Find the next numbered alias for a peripheral. This is used to enumerate
>   * all the peripherals of a certain type.
> @@ -546,50 +513,6 @@ const u32 *fdtdec_locate_array(const void *blob, int 
> node,
>  int fdtdec_get_bool(const void *blob, int node, const char *prop_name);
>  
>  /**
> - * Decode a single GPIOs from an FDT.
> - *
> - * If the property is not found, then the GPIO structure will still be
> - * initialised, with gpio set to FDT_GPIO_NONE. This makes it easy to
> - * provide optional GPIOs.
> - *
> - * @param blob               FDT blob to use
> - * @param node               Node to look at
> - * @param prop_name  Node property name
> - * @param gpio               gpio elements to fill from FDT
> - * @return 0 if ok, -FDT_ERR_NOTFOUND if the property is missing.
> - */
> -int fdtdec_decode_gpio(const void *blob, int node, const char *prop_name,
> -             struct fdt_gpio_state *gpio);
> -
> -/**
> - * Decode a list of GPIOs from an FDT. This creates a list of GPIOs with no
> - * terminating item.
> - *
> - * @param blob         FDT blob to use
> - * @param node         Node to look at
> - * @param prop_name    Node property name
> - * @param gpio         Array of gpio elements to fill from FDT. This will be
> - *                     untouched if either 0 or an error is returned
> - * @param max_count    Maximum number of elements allowed
> - * @return number of GPIOs read if ok, -FDT_ERR_BADLAYOUT if max_count would
> - * be exceeded, or -FDT_ERR_NOTFOUND if the property is missing.
> - */
> -int fdtdec_decode_gpios(const void *blob, int node, const char *prop_name,
> -             struct fdt_gpio_state *gpio, int max_count);
> -
> -/**
> - * Set up a GPIO pin according to the provided gpio information. At present 
> this
> - * just requests the GPIO.
> - *
> - * If the gpio is FDT_GPIO_NONE, no action is taken. This makes it easy to
> - * deal with optional GPIOs.
> - *
> - * @param gpio               GPIO info to use for set up
> - * @return 0 if all ok or gpio was FDT_GPIO_NONE; -1 on error
> - */
> -int fdtdec_setup_gpio(struct fdt_gpio_state *gpio);
> -
> -/**
>   * Look in the FDT for a config item with the given name and return its value
>   * as a 32-bit integer. The property must have at least 4 bytes of data. The
>   * value of the first cell is returned.
> diff --git a/lib/fdtdec.c b/lib/fdtdec.c
> index d6bc783..71adc06 100644
> --- a/lib/fdtdec.c
> +++ b/lib/fdtdec.c
> @@ -645,101 +645,6 @@ int fdtdec_parse_phandle_with_args(const void *blob, 
> int src_node,
>       return rc;
>  }
>  
> -/**
> - * Decode a list of GPIOs from an FDT. This creates a list of GPIOs with no
> - * terminating item.
> - *
> - * @param blob               FDT blob to use
> - * @param node               Node to look at
> - * @param prop_name  Node property name
> - * @param gpio               Array of gpio elements to fill from FDT. This 
> will be
> - *                   untouched if either 0 or an error is returned
> - * @param max_count  Maximum number of elements allowed
> - * @return number of GPIOs read if ok, -FDT_ERR_BADLAYOUT if max_count would
> - * be exceeded, or -FDT_ERR_NOTFOUND if the property is missing.
> - */
> -int fdtdec_decode_gpios(const void *blob, int node, const char *prop_name,
> -             struct fdt_gpio_state *gpio, int max_count)
> -{
> -     const struct fdt_property *prop;
> -     const u32 *cell;
> -     const char *name;
> -     int len, i;
> -
> -     debug("%s: %s\n", __func__, prop_name);
> -     assert(max_count > 0);
> -     prop = fdt_get_property(blob, node, prop_name, &len);
> -     if (!prop) {
> -             debug("%s: property '%s' missing\n", __func__, prop_name);
> -             return -FDT_ERR_NOTFOUND;
> -     }
> -
> -     /* We will use the name to tag the GPIO */
> -     name = fdt_string(blob, fdt32_to_cpu(prop->nameoff));
> -     cell = (u32 *)prop->data;
> -     len /= sizeof(u32) * 3;         /* 3 cells per GPIO record */
> -     if (len > max_count) {
> -             debug(" %s: too many GPIOs / cells for "
> -                     "property '%s'\n", __func__, prop_name);
> -             return -FDT_ERR_BADLAYOUT;
> -     }
> -
> -     /* Read out the GPIO data from the cells */
> -     for (i = 0; i < len; i++, cell += 3) {
> -             gpio[i].gpio = fdt32_to_cpu(cell[1]);
> -             gpio[i].flags = fdt32_to_cpu(cell[2]);
> -             gpio[i].name = name;
> -     }
> -
> -     return len;
> -}
> -
> -int fdtdec_decode_gpio(const void *blob, int node, const char *prop_name,
> -             struct fdt_gpio_state *gpio)
> -{
> -     int err;
> -
> -     debug("%s: %s\n", __func__, prop_name);
> -     gpio->gpio = FDT_GPIO_NONE;
> -     gpio->name = NULL;
> -     err = fdtdec_decode_gpios(blob, node, prop_name, gpio, 1);
> -     return err == 1 ? 0 : err;
> -}
> -
> -int fdtdec_get_gpio(struct fdt_gpio_state *gpio)
> -{
> -     int val;
> -
> -     if (!fdt_gpio_isvalid(gpio))
> -             return -1;
> -
> -     val = gpio_get_value(gpio->gpio);
> -     return gpio->flags & FDT_GPIO_ACTIVE_LOW ? val ^ 1 : val;
> -}
> -
> -int fdtdec_set_gpio(struct fdt_gpio_state *gpio, int val)
> -{
> -     if (!fdt_gpio_isvalid(gpio))
> -             return -1;
> -
> -     val = gpio->flags & FDT_GPIO_ACTIVE_LOW ? val ^ 1 : val;
> -     return gpio_set_value(gpio->gpio, val);
> -}
> -
> -int fdtdec_setup_gpio(struct fdt_gpio_state *gpio)
> -{
> -     /*
> -      * Return success if there is no GPIO defined. This is used for
> -      * optional GPIOs)
> -      */
> -     if (!fdt_gpio_isvalid(gpio))
> -             return 0;
> -
> -     if (gpio_request(gpio->gpio, gpio->name))
> -             return -1;
> -     return 0;
> -}
> -
>  int fdtdec_get_byte_array(const void *blob, int node, const char *prop_name,
>               u8 *array, int count)
>  {
> -- 
> 2.2.0.rc0.207.ga3a616c


_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to