Re: [PATCH] Enable ADC Filter on UCB1400

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

 



Dne Čt 30. července 2009 19:22:24 Marek Vasut napsal(a):
> Hi!
>
> please consider applying the following patch. I tested it on Palm
> Tungsten|C (ADCSYNC connected, both disabled and enabled through module
> parameter) and a friend of mine tested it on Toradex Colibri (ADCSYNC not
> connected, disabled).
>
> Thanks

Hi!

any updates on this? Thanks
>
> From 65cb92df1aba511fbc44d62fa25d5cf38a687952 Mon Sep 17 00:00:00 2001
> From: Marek Vasut <marek.vasut@xxxxxxxxx>
> Date: Thu, 30 Jul 2009 19:03:10 +0200
> Subject: [PATCH] Enable ADC Filter on UCB1400
>
> This patch enables ADC filtering on UCB1400 codec by default. The
> benefit from this change is mostly on some Colibri boards where the
> ADCSYNC pin of the UCB1400 codec isn't connected causing the touchscreen
> to jitter very badly. This change has no visible effect on boards where
> the ADCSYNC pin is connected.
>
> Signed-off-by: Marek Vasut <marek.vasut@xxxxxxxxx>
> ---
>  drivers/input/touchscreen/ucb1400_ts.c |    6 ++++++
>  include/linux/ucb1400.h                |    4 ++++
>  2 files changed, 10 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/input/touchscreen/ucb1400_ts.c
> b/drivers/input/touchscreen/ucb1400_ts.c
> index b2828a3..df8e5f3 100644
> --- a/drivers/input/touchscreen/ucb1400_ts.c
> +++ b/drivers/input/touchscreen/ucb1400_ts.c
> @@ -345,6 +345,7 @@ static int ucb1400_ts_detect_irq(struct ucb1400_ts
> *ucb) static int ucb1400_ts_probe(struct platform_device *dev)
>  {
>  	int error, x_res, y_res;
> +	u16 fcsr;
>  	struct ucb1400_ts *ucb = dev->dev.platform_data;
>
>  	ucb->ts_idev = input_allocate_device();
> @@ -382,6 +383,11 @@ static int ucb1400_ts_probe(struct platform_device
> *dev) ucb->ts_idev->evbit[0]		= BIT_MASK(EV_ABS) | BIT_MASK(EV_KEY);
>  	ucb->ts_idev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
>
> +	/* Enable ADC filter to prevent horrible jitter on Colibri. This also
> +	 * further reduces jitter on boards where ADCSYNC pin is connected. */
> +	fcsr = ucb1400_reg_read(ucb->ac97, UCB_FCSR);
> +	ucb1400_reg_write(ucb->ac97, UCB_FCSR, fcsr | UCB_FCSR_AVE);
> +
>  	ucb1400_adc_enable(ucb->ac97);
>  	x_res = ucb1400_ts_read_xres(ucb);
>  	y_res = ucb1400_ts_read_yres(ucb);
> diff --git a/include/linux/ucb1400.h b/include/linux/ucb1400.h
> index 464fb34..e489ff6 100644
> --- a/include/linux/ucb1400.h
> +++ b/include/linux/ucb1400.h
> @@ -74,6 +74,10 @@
>
>  #define UCB_ADC_DATA		0x68
>  #define UCB_ADC_DAT_VALID	(1 << 15)
> +
> +#define UCB_FCSR		0x6c
> +#define UCB_FCSR_AVE		(1 << 12)
> +
>  #define UCB_ADC_DAT_MASK	0x3ff
>
>  #define UCB_ID			0x7e

--
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