diff options
author | Vladimir Zapolskiy <vladimir_zapolskiy@mentor.com> | 2015-04-29 11:35:00 -0400 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2015-05-11 05:51:29 -0400 |
commit | f30663398ee28ecd1b66ceeb6a73ef704d4abf78 (patch) | |
tree | 0606af3a510a6ef34d81d634d409eaf4fa4c7bb6 /drivers/gpio/gpio-moxart.c | |
parent | b19e7f51a55fe740c18038d1d6957aedfc078d07 (diff) |
gpio: moxart: get value of output gpio from generic driver
Adding a BGPIOF_READ_OUTPUT_REG_SET initialization flag to GPIO
generic MMIO driver makes possible to remove a private get() value
function from the driver.
Signed-off-by: Vladimir Zapolskiy <vladimir_zapolskiy@mentor.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/gpio/gpio-moxart.c')
-rw-r--r-- | drivers/gpio/gpio-moxart.c | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/drivers/gpio/gpio-moxart.c b/drivers/gpio/gpio-moxart.c index c3ab46e595da..abd8676ce2b6 100644 --- a/drivers/gpio/gpio-moxart.c +++ b/drivers/gpio/gpio-moxart.c | |||
@@ -39,17 +39,6 @@ static void moxart_gpio_free(struct gpio_chip *chip, unsigned offset) | |||
39 | pinctrl_free_gpio(offset); | 39 | pinctrl_free_gpio(offset); |
40 | } | 40 | } |
41 | 41 | ||
42 | static int moxart_gpio_get(struct gpio_chip *chip, unsigned offset) | ||
43 | { | ||
44 | struct bgpio_chip *bgc = to_bgpio_chip(chip); | ||
45 | u32 ret = bgc->read_reg(bgc->reg_dir); | ||
46 | |||
47 | if (ret & BIT(offset)) | ||
48 | return !!(bgc->read_reg(bgc->reg_set) & BIT(offset)); | ||
49 | else | ||
50 | return !!(bgc->read_reg(bgc->reg_dat) & BIT(offset)); | ||
51 | } | ||
52 | |||
53 | static int moxart_gpio_probe(struct platform_device *pdev) | 42 | static int moxart_gpio_probe(struct platform_device *pdev) |
54 | { | 43 | { |
55 | struct device *dev = &pdev->dev; | 44 | struct device *dev = &pdev->dev; |
@@ -68,8 +57,9 @@ static int moxart_gpio_probe(struct platform_device *pdev) | |||
68 | return PTR_ERR(base); | 57 | return PTR_ERR(base); |
69 | 58 | ||
70 | ret = bgpio_init(bgc, dev, 4, base + GPIO_DATA_IN, | 59 | ret = bgpio_init(bgc, dev, 4, base + GPIO_DATA_IN, |
71 | base + GPIO_DATA_OUT, NULL, | 60 | base + GPIO_DATA_OUT, NULL, |
72 | base + GPIO_PIN_DIRECTION, NULL, 0); | 61 | base + GPIO_PIN_DIRECTION, NULL, |
62 | BGPIOF_READ_OUTPUT_REG_SET); | ||
73 | if (ret) { | 63 | if (ret) { |
74 | dev_err(&pdev->dev, "bgpio_init failed\n"); | 64 | dev_err(&pdev->dev, "bgpio_init failed\n"); |
75 | return ret; | 65 | return ret; |
@@ -78,7 +68,6 @@ static int moxart_gpio_probe(struct platform_device *pdev) | |||
78 | bgc->gc.label = "moxart-gpio"; | 68 | bgc->gc.label = "moxart-gpio"; |
79 | bgc->gc.request = moxart_gpio_request; | 69 | bgc->gc.request = moxart_gpio_request; |
80 | bgc->gc.free = moxart_gpio_free; | 70 | bgc->gc.free = moxart_gpio_free; |
81 | bgc->gc.get = moxart_gpio_get; | ||
82 | bgc->data = bgc->read_reg(bgc->reg_set); | 71 | bgc->data = bgc->read_reg(bgc->reg_set); |
83 | bgc->gc.base = 0; | 72 | bgc->gc.base = 0; |
84 | bgc->gc.ngpio = 32; | 73 | bgc->gc.ngpio = 32; |