Skip to content

Commit

Permalink
NFC: trf7970a: Add VIN voltage override support
Browse files Browse the repository at this point in the history
The trf7970a driver uses the voltage from the
power/regulator subsystem to determine what the
voltage on the VIN pin is.  Normally, this is
the right thing to do but sometimes the board
that the trf7970a is on may change the voltage.
This is the case for the trf7970atb board from
Texas Instruments where it boosts the VIN voltage
from 3.3V to 5V (see http://www.ti.com/tool/trf7970atb).

To handle this, add support for the 'vin-voltage-override'
device tree property which overrides the voltage value
given by the regulator subsystem.  When the DT property
is not present, the value from the regulator subsystem
is used.

The value of 'vin-voltage-override' is in uVolts.

Signed-off-by: Mark A. Greer <mgreer@animalcreek.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
  • Loading branch information
Mark A. Greer authored and Samuel Ortiz committed Aug 31, 2014
1 parent dddb3da commit 3bd1423
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion drivers/nfc/trf7970a.c
Original file line number Diff line number Diff line change
Expand Up @@ -1251,6 +1251,12 @@ static int trf7970a_get_autosuspend_delay(struct device_node *np)
return autosuspend_delay;
}

static int trf7970a_get_vin_voltage_override(struct device_node *np,
u32 *vin_uvolts)
{
return of_property_read_u32(np, "vin-voltage-override", vin_uvolts);
}

static int trf7970a_probe(struct spi_device *spi)
{
struct device_node *np = spi->dev.of_node;
Expand Down Expand Up @@ -1326,7 +1332,9 @@ static int trf7970a_probe(struct spi_device *spi)
goto err_destroy_lock;
}

uvolts = regulator_get_voltage(trf->regulator);
ret = trf7970a_get_vin_voltage_override(np, &uvolts);
if (ret)
uvolts = regulator_get_voltage(trf->regulator);

if (uvolts > 4000000)
trf->chip_status_ctrl = TRF7970A_CHIP_STATUS_VRS5_3;
Expand Down

0 comments on commit 3bd1423

Please sign in to comment.