ASoC: tlv320adcx140: Add support for configuring GPI pins

Add support to configure the GPI pins to the specific configuration.
The pins can be disabled or be configured as data input for any of the
digital mic channels.  In addition the GPI can be used a a general
purpose input, a Master clock input or an ASI input for daisy chaining
devices.

Signed-off-by: Dan Murphy <dmurphy@ti.com>
Link: https://lore.kernel.org/r/20200526200917.10385-2-dmurphy@ti.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Dan Murphy 2020-05-26 15:09:17 -05:00 committed by Mark Brown
parent 2465d32bea
commit 3c35e79cea
No known key found for this signature in database
GPG Key ID: 24D68B725D5487D0
2 changed files with 35 additions and 0 deletions

View File

@ -764,6 +764,9 @@ static int adcx140_codec_probe(struct snd_soc_component *component)
int pdm_count;
u32 pdm_edges[ADCX140_NUM_PDM_EDGES];
u32 pdm_edge_val = 0;
int gpi_count;
u32 gpi_inputs[ADCX140_NUM_GPI_PINS];
u32 gpi_input_val = 0;
int i;
int ret;
@ -809,6 +812,31 @@ static int adcx140_codec_probe(struct snd_soc_component *component)
return ret;
}
gpi_count = device_property_count_u32(adcx140->dev, "ti,gpi-config");
if (gpi_count <= ADCX140_NUM_GPI_PINS && gpi_count > 0) {
ret = device_property_read_u32_array(adcx140->dev,
"ti,gpi-config",
gpi_inputs, gpi_count);
if (ret)
return ret;
gpi_input_val = gpi_inputs[ADCX140_GPI1_INDEX] << ADCX140_GPI_SHIFT |
gpi_inputs[ADCX140_GPI2_INDEX];
ret = regmap_write(adcx140->regmap, ADCX140_GPI_CFG0,
gpi_input_val);
if (ret)
return ret;
gpi_input_val = gpi_inputs[ADCX140_GPI3_INDEX] << ADCX140_GPI_SHIFT |
gpi_inputs[ADCX140_GPI4_INDEX];
ret = regmap_write(adcx140->regmap, ADCX140_GPI_CFG1,
gpi_input_val);
if (ret)
return ret;
}
ret = adcx140_reset(adcx140);
if (ret)
goto out;

View File

@ -132,4 +132,11 @@
#define ADCX140_NUM_PDM_EDGES 4
#define ADCX140_PDM_EDGE_SHIFT 7
#define ADCX140_NUM_GPI_PINS 4
#define ADCX140_GPI_SHIFT 4
#define ADCX140_GPI1_INDEX 0
#define ADCX140_GPI2_INDEX 1
#define ADCX140_GPI3_INDEX 2
#define ADCX140_GPI4_INDEX 3
#endif /* _TLV320ADCX140_ */