diff options
author | Maxime Ripard <maxime.ripard@free-electrons.com> | 2012-09-07 08:18:12 -0400 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2012-09-07 17:04:02 -0400 |
commit | 061505fd396c89b358a1b7a655565b2bb05b2fdc (patch) | |
tree | 4ce397e69828750b490523e7fb059e3b363d4f5d /drivers/gpio/gpio-74x164.c | |
parent | 72eac3020de35a2c3fd0d39a26399989a0a9392e (diff) |
gpio: 74x164: Use dynamic gpio number assignment if no pdata is present
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Florian Fainelli <florian@openwrt.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/gpio/gpio-74x164.c')
-rw-r--r-- | drivers/gpio/gpio-74x164.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/gpio/gpio-74x164.c b/drivers/gpio/gpio-74x164.c index 604b998b7b74..ef8baacb650a 100644 --- a/drivers/gpio/gpio-74x164.c +++ b/drivers/gpio/gpio-74x164.c | |||
@@ -75,12 +75,6 @@ static int __devinit gen_74x164_probe(struct spi_device *spi) | |||
75 | struct gen_74x164_chip_platform_data *pdata; | 75 | struct gen_74x164_chip_platform_data *pdata; |
76 | int ret; | 76 | int ret; |
77 | 77 | ||
78 | pdata = spi->dev.platform_data; | ||
79 | if (!pdata || !pdata->base) { | ||
80 | dev_dbg(&spi->dev, "incorrect or missing platform data\n"); | ||
81 | return -EINVAL; | ||
82 | } | ||
83 | |||
84 | /* | 78 | /* |
85 | * bits_per_word cannot be configured in platform data | 79 | * bits_per_word cannot be configured in platform data |
86 | */ | 80 | */ |
@@ -94,6 +88,12 @@ static int __devinit gen_74x164_probe(struct spi_device *spi) | |||
94 | if (!chip) | 88 | if (!chip) |
95 | return -ENOMEM; | 89 | return -ENOMEM; |
96 | 90 | ||
91 | pdata = spi->dev.platform_data; | ||
92 | if (pdata && pdata->base) | ||
93 | chip->gpio_chip.base = pdata->base; | ||
94 | else | ||
95 | chip->gpio_chip.base = -1; | ||
96 | |||
97 | mutex_init(&chip->lock); | 97 | mutex_init(&chip->lock); |
98 | 98 | ||
99 | dev_set_drvdata(&spi->dev, chip); | 99 | dev_set_drvdata(&spi->dev, chip); |
@@ -104,7 +104,6 @@ static int __devinit gen_74x164_probe(struct spi_device *spi) | |||
104 | chip->gpio_chip.direction_output = gen_74x164_direction_output; | 104 | chip->gpio_chip.direction_output = gen_74x164_direction_output; |
105 | chip->gpio_chip.get = gen_74x164_get_value; | 105 | chip->gpio_chip.get = gen_74x164_get_value; |
106 | chip->gpio_chip.set = gen_74x164_set_value; | 106 | chip->gpio_chip.set = gen_74x164_set_value; |
107 | chip->gpio_chip.base = pdata->base; | ||
108 | chip->gpio_chip.ngpio = 8; | 107 | chip->gpio_chip.ngpio = 8; |
109 | chip->gpio_chip.can_sleep = 1; | 108 | chip->gpio_chip.can_sleep = 1; |
110 | chip->gpio_chip.dev = &spi->dev; | 109 | chip->gpio_chip.dev = &spi->dev; |