Skip to content

Commit

Permalink
NFC: Make EN2 pin optional in the TRF7970A driver
Browse files Browse the repository at this point in the history
Make the EN2 pin optional. This is useful for boards,
which have this pin fix wired, for example to ground.

Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Guan Ben <ben.guan@cn.bosch.com>
Signed-off-by: Mark Jonas <mark.jonas@de.bosch.com>
Signed-off-by: Heiko Schocher <hs@denx.de>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
  • Loading branch information
Guan Ben authored and Samuel Ortiz committed Apr 1, 2017
1 parent 96bd0b5 commit ce69b95
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 14 deletions.
4 changes: 2 additions & 2 deletions Documentation/devicetree/bindings/net/nfc/trf7970a.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ Required properties:
- spi-max-frequency: Maximum SPI frequency (<= 2000000).
- interrupt-parent: phandle of parent interrupt handler.
- interrupts: A single interrupt specifier.
- ti,enable-gpios: Two GPIO entries used for 'EN' and 'EN2' pins on the
TRF7970A.
- ti,enable-gpios: One or two GPIO entries used for 'EN' and 'EN2' pins on the
TRF7970A. EN2 is optional.
- vin-supply: Regulator for supply voltage to VIN pin

Optional SoC Specific Properties:
Expand Down
26 changes: 14 additions & 12 deletions drivers/nfc/trf7970a.c
Original file line number Diff line number Diff line change
Expand Up @@ -1885,8 +1885,10 @@ static int trf7970a_power_up(struct trf7970a *trf)
usleep_range(5000, 6000);

if (!(trf->quirks & TRF7970A_QUIRK_EN2_MUST_STAY_LOW)) {
gpio_set_value(trf->en2_gpio, 1);
usleep_range(1000, 2000);
if (gpio_is_valid(trf->en2_gpio)) {
gpio_set_value(trf->en2_gpio, 1);
usleep_range(1000, 2000);
}
}

gpio_set_value(trf->en_gpio, 1);
Expand Down Expand Up @@ -1914,7 +1916,8 @@ static int trf7970a_power_down(struct trf7970a *trf)
}

gpio_set_value(trf->en_gpio, 0);
gpio_set_value(trf->en2_gpio, 0);
if (gpio_is_valid(trf->en2_gpio))
gpio_set_value(trf->en2_gpio, 0);

ret = regulator_disable(trf->regulator);
if (ret)
Expand Down Expand Up @@ -2032,15 +2035,14 @@ static int trf7970a_probe(struct spi_device *spi)

trf->en2_gpio = of_get_named_gpio(np, "ti,enable-gpios", 1);
if (!gpio_is_valid(trf->en2_gpio)) {
dev_err(trf->dev, "No EN2 GPIO property\n");
return trf->en2_gpio;
}

ret = devm_gpio_request_one(trf->dev, trf->en2_gpio,
GPIOF_DIR_OUT | GPIOF_INIT_LOW, "trf7970a EN2");
if (ret) {
dev_err(trf->dev, "Can't request EN2 GPIO: %d\n", ret);
return ret;
dev_info(trf->dev, "No EN2 GPIO property\n");
} else {
ret = devm_gpio_request_one(trf->dev, trf->en2_gpio,
GPIOF_DIR_OUT | GPIOF_INIT_LOW, "trf7970a EN2");
if (ret) {
dev_err(trf->dev, "Can't request EN2 GPIO: %d\n", ret);
return ret;
}
}

if (of_property_read_bool(np, "en2-rf-quirk"))
Expand Down

0 comments on commit ce69b95

Please sign in to comment.