Re: [PATCH] ads7846: Add possibility to use external vref on ads7846

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 05/05/11 09:32, Alexander Stein wrote:
> Just set vref_mv in your platform config to use external vref. Otherwise
> the internal one is used.
Would be nicer to see this done with the regulator framework. But then if you
have a use case on a board where that isn't available, then fair enough.
> 
> Signed-off-by: Alexander Stein <alexander.stein@xxxxxxxxxxxxxxxxxxxxx>
> ---
> This slight semantic change of vref_mv should not introduce a regression.
> All boards using the 7846 model didn't set vref_mv which results in the
> expected behavior.
> 
> Alexander
>  drivers/input/touchscreen/ads7846.c |    8 +++-----
>  include/linux/spi/ads7846.h         |    3 ++-
>  2 files changed, 5 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c
> index 1de1c19..a19e340 100644
> --- a/drivers/input/touchscreen/ads7846.c
> +++ b/drivers/input/touchscreen/ads7846.c
> @@ -109,6 +109,7 @@ struct ads7846 {
>  	u16			pressure_max;
>  
>  	bool			swap_xy;
> +	bool			use_internal;
>  
>  	struct ads7846_packet	*packet;
>  
> @@ -307,7 +308,6 @@ static int ads7846_read12_ser(struct device *dev, unsigned command)
>  	struct ads7846 *ts = dev_get_drvdata(dev);
>  	struct ser_req *req;
>  	int status;
> -	int use_internal;
>  
>  	req = kzalloc(sizeof *req, GFP_KERNEL);
>  	if (!req)
> @@ -315,11 +315,8 @@ static int ads7846_read12_ser(struct device *dev, unsigned command)
>  
>  	spi_message_init(&req->msg);
>  
> -	/* FIXME boards with ads7846 might use external vref instead ... */
> -	use_internal = (ts->model == 7846);
> -
>  	/* maybe turn on internal vREF, and let it settle */
> -	if (use_internal) {
> +	if (ts->use_internal) {
>  		req->ref_on = REF_ON;
>  		req->xfer[0].tx_buf = &req->ref_on;
>  		req->xfer[0].len = 1;
> @@ -509,6 +506,7 @@ static int ads784x_hwmon_register(struct spi_device *spi, struct ads7846 *ts)
>  		if (!ts->vref_mv) {
>  			dev_dbg(&spi->dev, "assuming 2.5V internal vREF\n");
>  			ts->vref_mv = 2500;
> +			ts->use_internal = true;
>  		}
>  		break;
>  	case 7845:
> diff --git a/include/linux/spi/ads7846.h b/include/linux/spi/ads7846.h
> index 92bd083..c64de9d 100644
> --- a/include/linux/spi/ads7846.h
> +++ b/include/linux/spi/ads7846.h
> @@ -14,7 +14,8 @@ enum ads7846_filter {
>  struct ads7846_platform_data {
>  	u16	model;			/* 7843, 7845, 7846, 7873. */
>  	u16	vref_delay_usecs;	/* 0 for external vref; etc */
> -	u16	vref_mv;		/* external vref value, milliVolts */
> +	u16	vref_mv;		/* external vref value, milliVolts
> +					 * ads7846: if 0, use internal vref */
>  	bool	keep_vref_on;		/* set to keep vref on for differential
>  					 * measurements as well */
>  	bool	swap_xy;		/* swap x and y axes */

--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux