mbox series

[v3,0/4] iio/adc: ingenic: add support for the JZ4760(B) Socs to the ingenic sadc driver

Message ID 20210724190449.221894-1-cbranchereau@gmail.com
Headers show
Series iio/adc: ingenic: add support for the JZ4760(B) Socs to the ingenic sadc driver | expand

Message

Christophe Branchereau July 24, 2021, 7:04 p.m. UTC
This is a set of patches to add support to the JZ4760(B) socs found in numerous gaming handhelds and some
mp3 players to the ingenic-sadc driver.

Changelog for this v3:
- Minor formatting change in ingenic-adc.c to remain within 80 lines
- Correctly set the ingenic,use-internal-divider property in the Documentation so it cannot be used on other
socs than the jz4760b, and modify the description as requested.

Thanks to Paul and Jonathan for their help

Christophe Branchereau (5):
  iio/adc: ingenic: rename has_aux2 to has_aux_md
  dt-bindings: iio/adc: add an INGENIC_ADC_AUX0 entry
  iio/adc: ingenic: add JZ4760 support to the sadc driver
  iio/adc: ingenic: add JZ4760B support to the sadc driver
  dt-bindings: iio/adc: ingenic: add the JZ4760(B) socs to the sadc
    Documentation

 .../bindings/iio/adc/ingenic,adc.yaml         |  19 ++++
 drivers/iio/adc/ingenic-adc.c                 | 101 ++++++++++++++++--
 include/dt-bindings/iio/adc/ingenic,adc.h     |   1 +
 3 files changed, 112 insertions(+), 9 deletions(-)

Comments

Paul Cercueil July 25, 2021, 9:14 a.m. UTC | #1
Hi Christophe,

Le sam., juil. 24 2021 at 21:04:45 +0200, Christophe Branchereau 
<cbranchereau@gmail.com> a écrit :
> The jz4760(b) socs have 3 aux channels.

> 

> The purpose of has_aux2 is to set the MD bits used to select

> the AUX channel to be sampled, not to describe the hardware.

> 

> Rename it to a more appropriate name.

> 

> Signed-off-by: Christophe Branchereau <cbranchereau@gmail.com>


Reviewed-by: Paul Cercueil <paul@crapouillou.net>


Cheers,
-Paul

> ---

>  drivers/iio/adc/ingenic-adc.c | 10 +++++-----

>  1 file changed, 5 insertions(+), 5 deletions(-)

> 

> diff --git a/drivers/iio/adc/ingenic-adc.c 

> b/drivers/iio/adc/ingenic-adc.c

> index 34c03a264f74..40f2d8c2cf72 100644

> --- a/drivers/iio/adc/ingenic-adc.c

> +++ b/drivers/iio/adc/ingenic-adc.c

> @@ -92,7 +92,7 @@ struct ingenic_adc_soc_data {

>  	const int *battery_scale_avail;

>  	size_t battery_scale_avail_size;

>  	unsigned int battery_vref_mode: 1;

> -	unsigned int has_aux2: 1;

> +	unsigned int has_aux_md: 1;

>  	const struct iio_chan_spec *channels;

>  	unsigned int num_channels;

>  	int (*init_clk_div)(struct device *dev, struct ingenic_adc *adc);

> @@ -506,7 +506,7 @@ static const struct ingenic_adc_soc_data 

> jz4725b_adc_soc_data = {

>  	.battery_scale_avail = jz4725b_adc_battery_scale_avail,

>  	.battery_scale_avail_size = 

> ARRAY_SIZE(jz4725b_adc_battery_scale_avail),

>  	.battery_vref_mode = true,

> -	.has_aux2 = false,

> +	.has_aux_md = false,

>  	.channels = jz4740_channels,

>  	.num_channels = ARRAY_SIZE(jz4740_channels),

>  	.init_clk_div = jz4725b_adc_init_clk_div,

> @@ -520,7 +520,7 @@ static const struct ingenic_adc_soc_data 

> jz4740_adc_soc_data = {

>  	.battery_scale_avail = jz4740_adc_battery_scale_avail,

>  	.battery_scale_avail_size = 

> ARRAY_SIZE(jz4740_adc_battery_scale_avail),

>  	.battery_vref_mode = true,

> -	.has_aux2 = false,

> +	.has_aux_md = false,

>  	.channels = jz4740_channels,

>  	.num_channels = ARRAY_SIZE(jz4740_channels),

>  	.init_clk_div = NULL, /* no ADCLK register on JZ4740 */

> @@ -534,7 +534,7 @@ static const struct ingenic_adc_soc_data 

> jz4770_adc_soc_data = {

>  	.battery_scale_avail = jz4770_adc_battery_scale_avail,

>  	.battery_scale_avail_size = 

> ARRAY_SIZE(jz4770_adc_battery_scale_avail),

>  	.battery_vref_mode = false,

> -	.has_aux2 = true,

> +	.has_aux_md = true,

>  	.channels = jz4770_channels,

>  	.num_channels = ARRAY_SIZE(jz4770_channels),

>  	.init_clk_div = jz4770_adc_init_clk_div,

> @@ -581,7 +581,7 @@ static int ingenic_adc_read_chan_info_raw(struct 

> iio_dev *iio_dev,

> 

>  	/* We cannot sample AUX/AUX2 in parallel. */

>  	mutex_lock(&adc->aux_lock);

> -	if (adc->soc_data->has_aux2 && engine == 0) {

> +	if (adc->soc_data->has_aux_md && engine == 0) {

>  		bit = BIT(chan->channel == INGENIC_ADC_AUX2);

>  		ingenic_adc_set_config(adc, JZ_ADC_REG_CFG_AUX_MD, bit);

>  	}

> --

> 2.30.2

>
Paul Cercueil July 25, 2021, 9:14 a.m. UTC | #2
Le sam., juil. 24 2021 at 21:04:46 +0200, Christophe Branchereau 
<cbranchereau@gmail.com> a écrit :
> The JZ4760(B) socs have 3 AUX inputs, add an entry to prepare 

> including the one named AUX in the sadc driver.

> Leaving the rest untouched as it's ABI.

> 

> Signed-off-by: Christophe Branchereau <cbranchereau@gmail.com>


Reviewed-by: Paul Cercueil <paul@crapouillou.net>


Cheers,
-Paul

> ---

>  include/dt-bindings/iio/adc/ingenic,adc.h | 1 +

>  1 file changed, 1 insertion(+)

> 

> diff --git a/include/dt-bindings/iio/adc/ingenic,adc.h 

> b/include/dt-bindings/iio/adc/ingenic,adc.h

> index 4627a00e369e..a6ccc031635b 100644

> --- a/include/dt-bindings/iio/adc/ingenic,adc.h

> +++ b/include/dt-bindings/iio/adc/ingenic,adc.h

> @@ -13,5 +13,6 @@

>  #define INGENIC_ADC_TOUCH_YN	6

>  #define INGENIC_ADC_TOUCH_XD	7

>  #define INGENIC_ADC_TOUCH_YD	8

> +#define INGENIC_ADC_AUX0	9

> 

>  #endif

> --

> 2.30.2

>
Paul Cercueil July 25, 2021, 9:23 a.m. UTC | #3
Hi Christophe,

Le sam., juil. 24 2021 at 21:04:49 +0200, Christophe Branchereau 
<cbranchereau@gmail.com> a écrit :
> Add both the jz4760 and jz4760b, plus a property to use the internal

> divider on the b variant and document it.

> 

> Signed-off-by: Christophe Branchereau <cbranchereau@gmail.com>


Looks good.

Reviewed-by: Paul Cercueil <paul@crapouillou.net>


> ---

>  .../bindings/iio/adc/ingenic,adc.yaml         | 19 

> +++++++++++++++++++

>  1 file changed, 19 insertions(+)

> 

> diff --git 

> a/Documentation/devicetree/bindings/iio/adc/ingenic,adc.yaml 

> b/Documentation/devicetree/bindings/iio/adc/ingenic,adc.yaml

> index 433a3fb55a2e..3eb7aa8822c3 100644

> --- a/Documentation/devicetree/bindings/iio/adc/ingenic,adc.yaml

> +++ b/Documentation/devicetree/bindings/iio/adc/ingenic,adc.yaml

> @@ -23,6 +23,8 @@ properties:

>      enum:

>        - ingenic,jz4725b-adc

>        - ingenic,jz4740-adc

> +      - ingenic,jz4760-adc

> +      - ingenic,jz4760b-adc

>        - ingenic,jz4770-adc

> 

>    '#io-channel-cells':

> @@ -43,6 +45,23 @@ properties:

>    interrupts:

>      maxItems: 1

> 

> +  ingenic,use-internal-divider:

> +    description:

> +      If present, battery voltage is read from the VBAT_IR pin, 

> which has an

> +      internal 1/4 divider. If absent, it is read through the 

> VBAT_ER pin,

> +      which does not have such a divider.

> +    type: boolean

> +

> +if:

> +  not:

> +    properties:

> +      compatible:

> +        contains:

> +          const: ingenic,jz4760b-adc

> +then:

> +  properties:

> +    ingenic,use-internal-divider: false

> +

>  required:

>    - compatible

>    - '#io-channel-cells'

> --

> 2.30.2

>
Jonathan Cameron July 25, 2021, 3:22 p.m. UTC | #4
On Sat, 24 Jul 2021 21:04:44 +0200
Christophe Branchereau <cbranchereau@gmail.com> wrote:

> This is a set of patches to add support to the JZ4760(B) socs found in numerous gaming handhelds and some

> mp3 players to the ingenic-sadc driver.

> 

> Changelog for this v3:

> - Minor formatting change in ingenic-adc.c to remain within 80 lines

> - Correctly set the ingenic,use-internal-divider property in the Documentation so it cannot be used on other

> socs than the jz4760b, and modify the description as requested.

> 

> Thanks to Paul and Jonathan for their help


You are welcome.

Other than Paul's question on the missing entry in patch 4, these look good to me.
We should leave a bit of time for others to review but otherwise once that's
resolved I'll pick them up.

Thanks,

Jonathan

> 

> Christophe Branchereau (5):

>   iio/adc: ingenic: rename has_aux2 to has_aux_md

>   dt-bindings: iio/adc: add an INGENIC_ADC_AUX0 entry

>   iio/adc: ingenic: add JZ4760 support to the sadc driver

>   iio/adc: ingenic: add JZ4760B support to the sadc driver

>   dt-bindings: iio/adc: ingenic: add the JZ4760(B) socs to the sadc

>     Documentation

> 

>  .../bindings/iio/adc/ingenic,adc.yaml         |  19 ++++

>  drivers/iio/adc/ingenic-adc.c                 | 101 ++++++++++++++++--

>  include/dt-bindings/iio/adc/ingenic,adc.h     |   1 +

>  3 files changed, 112 insertions(+), 9 deletions(-)

>