Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 336364
b: refs/heads/master
c: 1e63d7b
h: refs/heads/master
v: v3
  • Loading branch information
Linus Walleij committed Nov 11, 2012
1 parent dd8dd7d commit f7ceba9
Show file tree
Hide file tree
Showing 7 changed files with 21 additions and 29 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 9ef0d6f7628bdcb5cc3c11623930f2527a3881a0
refs/heads/master: 1e63d7b9363f0c57d00991f9f2e0af374dfc591a
23 changes: 9 additions & 14 deletions trunk/drivers/gpio/gpiolib-of.c
Original file line number Diff line number Diff line change
Expand Up @@ -221,8 +221,8 @@ EXPORT_SYMBOL(of_mm_gpiochip_add);
static void of_gpiochip_add_pin_range(struct gpio_chip *chip)
{
struct device_node *np = chip->of_node;
struct gpio_pin_range *pin_range;
struct of_phandle_args pinspec;
struct pinctrl_dev *pctldev;
int index = 0, ret;

if (!np)
Expand All @@ -234,22 +234,17 @@ static void of_gpiochip_add_pin_range(struct gpio_chip *chip)
if (ret)
break;

pin_range = devm_kzalloc(chip->dev, sizeof(*pin_range),
GFP_KERNEL);
if (!pin_range) {
pr_err("%s: GPIO chip: failed to allocate pin ranges\n",
chip->label);
pctldev = of_pinctrl_get(pinspec.np);
if (!pctldev)
break;
}

pin_range->range.name = chip->label;
pin_range->range.base = chip->base;
pin_range->range.pin_base = pinspec.args[0];
pin_range->range.npins = pinspec.args[1];
pin_range->pctldev = of_pinctrl_add_gpio_range(pinspec.np,
&pin_range->range);
ret = gpiochip_add_pin_range(chip,
pinctrl_dev_get_name(pctldev),
pinspec.args[0],
pinspec.args[1]);

list_add_tail(&pin_range->node, &chip->pin_ranges);
if (ret)
break;

} while (index++);
}
Expand Down
8 changes: 5 additions & 3 deletions trunk/drivers/gpio/gpiolib.c
Original file line number Diff line number Diff line change
Expand Up @@ -1187,16 +1187,16 @@ EXPORT_SYMBOL_GPL(gpiochip_find);

#ifdef CONFIG_PINCTRL

void gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
unsigned int pin_base, unsigned int npins)
int gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
unsigned int pin_base, unsigned int npins)
{
struct gpio_pin_range *pin_range;

pin_range = devm_kzalloc(chip->dev, sizeof(*pin_range), GFP_KERNEL);
if (!pin_range) {
pr_err("%s: GPIO chip: failed to allocate pin ranges\n",
chip->label);
return;
return -ENOMEM;
}

pin_range->range.name = chip->label;
Expand All @@ -1207,6 +1207,8 @@ void gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
&pin_range->range);

list_add_tail(&pin_range->node, &chip->pin_ranges);

return 0;
}
EXPORT_SYMBOL_GPL(gpiochip_add_pin_range);

Expand Down
4 changes: 1 addition & 3 deletions trunk/drivers/pinctrl/devicetree.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,16 +106,14 @@ static struct pinctrl_dev *find_pinctrl_by_of_node(struct device_node *np)
return NULL;
}

struct pinctrl_dev *of_pinctrl_add_gpio_range(struct device_node *np,
struct pinctrl_gpio_range *range)
struct pinctrl_dev *of_pinctrl_get(struct device_node *np)
{
struct pinctrl_dev *pctldev;

pctldev = find_pinctrl_by_of_node(np);
if (!pctldev)
return NULL;

pinctrl_add_gpio_range(pctldev, range);
return pctldev;
}

Expand Down
4 changes: 2 additions & 2 deletions trunk/include/asm-generic/gpio.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ struct gpio_pin_range {
struct pinctrl_gpio_range range;
};

void gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
unsigned int pin_base, unsigned int npins);
int gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
unsigned int pin_base, unsigned int npins);
void gpiochip_remove_pin_ranges(struct gpio_chip *chip);

#endif
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/linux/gpio.h
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ static inline int irq_to_gpio(unsigned irq)

#ifdef CONFIG_PINCTRL

static inline void
static inline int
gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
unsigned int pin_base, unsigned int npins)
{
Expand Down
7 changes: 2 additions & 5 deletions trunk/include/linux/pinctrl/pinctrl.h
Original file line number Diff line number Diff line change
Expand Up @@ -141,16 +141,13 @@ extern struct pinctrl_dev *find_pinctrl_and_add_gpio_range(const char *devname,
struct pinctrl_gpio_range *range);

#ifdef CONFIG_OF
extern struct pinctrl_dev *of_pinctrl_add_gpio_range(struct device_node *np,
struct pinctrl_gpio_range *range);
extern struct pinctrl_dev *of_pinctrl_get(struct device_node *np);
#else
static inline
struct pinctrl_dev *of_pinctrl_add_gpio_range(struct device_node *np,
struct pinctrl_gpio_range *range)
struct pinctrl_dev *of_pinctrl_get(struct device_node *np)
{
return NULL;
}

#endif /* CONFIG_OF */

extern const char *pinctrl_dev_get_name(struct pinctrl_dev *pctldev);
Expand Down

0 comments on commit f7ceba9

Please sign in to comment.