mirror of https://gitee.com/openkylin/linux.git
gpio: 74x164: Introduce 'enable-gpios' property
74HC595 has an /OE (output enable) pin that can be controlled by a GPIO. Introduce an optional property called 'enable-gpios' that allows controlling the /OE pin. Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com> Acked-by: Rob Herring <robh@kernel.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
ee949b51e4
commit
7ebc194d0f
|
@ -12,6 +12,9 @@ Required properties:
|
|||
1 = active low
|
||||
- registers-number: Number of daisy-chained shift registers
|
||||
|
||||
Optional properties:
|
||||
- enable-gpios: GPIO connected to the OE (Output Enable) pin.
|
||||
|
||||
Example:
|
||||
|
||||
gpio5: gpio5@0 {
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/spi/spi.h>
|
||||
|
@ -31,6 +32,7 @@ struct gen_74x164_chip {
|
|||
* numbering, store the bytes in reverse order.
|
||||
*/
|
||||
u8 buffer[0];
|
||||
struct gpio_desc *gpiod_oe;
|
||||
};
|
||||
|
||||
static int __gen_74x164_write_config(struct gen_74x164_chip *chip)
|
||||
|
@ -126,6 +128,13 @@ static int gen_74x164_probe(struct spi_device *spi)
|
|||
if (!chip)
|
||||
return -ENOMEM;
|
||||
|
||||
chip->gpiod_oe = devm_gpiod_get_optional(&spi->dev, "enable",
|
||||
GPIOD_OUT_LOW);
|
||||
if (IS_ERR(chip->gpiod_oe))
|
||||
return PTR_ERR(chip->gpiod_oe);
|
||||
|
||||
gpiod_set_value_cansleep(chip->gpiod_oe, 1);
|
||||
|
||||
spi_set_drvdata(spi, chip);
|
||||
|
||||
chip->gpio_chip.label = spi->modalias;
|
||||
|
@ -164,6 +173,7 @@ static int gen_74x164_remove(struct spi_device *spi)
|
|||
{
|
||||
struct gen_74x164_chip *chip = spi_get_drvdata(spi);
|
||||
|
||||
gpiod_set_value_cansleep(chip->gpiod_oe, 0);
|
||||
gpiochip_remove(&chip->gpio_chip);
|
||||
mutex_destroy(&chip->lock);
|
||||
|
||||
|
|
Loading…
Reference in New Issue