Input: ti_am335x_tsc - read charge delay from DT
This patch reads charge delay from tsc DT node and writes to REG_CHARGEDELAY register. If the charge delay is not specified in DT then default value of 0x400(CHARGEDLY_OPENDLY) is used. Signed-off-by: Vignesh R <vigneshr@ti.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
This commit is contained in:
parent
344d635b9a
commit
bf223612a4
@ -28,6 +28,20 @@ Required properties:
|
||||
ti,adc-channels: List of analog inputs available for ADC.
|
||||
AIN0 = 0, AIN1 = 1 and so on till AIN7 = 7.
|
||||
|
||||
Optional properties:
|
||||
- child "tsc"
|
||||
ti,charge-delay: Length of touch screen charge delay step in terms of
|
||||
ADC clock cycles. Charge delay value should be large
|
||||
in order to avoid false pen-up events. This value
|
||||
effects the overall sampling speed, hence need to be
|
||||
kept as low as possible, while avoiding false pen-up
|
||||
event. Start from a lower value, say 0x400, and
|
||||
increase value until false pen-up events are avoided.
|
||||
The pen-up detection happens immediately after the
|
||||
charge step, so this does in fact function as a
|
||||
hardware knob for adjusting the amount of "settling
|
||||
time".
|
||||
|
||||
Example:
|
||||
tscadc: tscadc@44e0d000 {
|
||||
compatible = "ti,am3359-tscadc";
|
||||
@ -36,6 +50,7 @@ Example:
|
||||
ti,x-plate-resistance = <200>;
|
||||
ti,coordiante-readouts = <5>;
|
||||
ti,wire-config = <0x00 0x11 0x22 0x33>;
|
||||
ti,charge-delay = <0x400>;
|
||||
};
|
||||
|
||||
adc {
|
||||
|
@ -52,6 +52,7 @@ struct titsc {
|
||||
u32 bit_xp, bit_xn, bit_yp, bit_yn;
|
||||
u32 inp_xp, inp_xn, inp_yp, inp_yn;
|
||||
u32 step_mask;
|
||||
u32 charge_delay;
|
||||
};
|
||||
|
||||
static unsigned int titsc_readl(struct titsc *ts, unsigned int reg)
|
||||
@ -177,7 +178,7 @@ static void titsc_step_config(struct titsc *ts_dev)
|
||||
|
||||
config = titsc_readl(ts_dev, REG_IDLECONFIG);
|
||||
titsc_writel(ts_dev, REG_CHARGECONFIG, config);
|
||||
titsc_writel(ts_dev, REG_CHARGEDELAY, CHARGEDLY_OPENDLY);
|
||||
titsc_writel(ts_dev, REG_CHARGEDELAY, ts_dev->charge_delay);
|
||||
|
||||
/* coordinate_readouts + 1 ... coordinate_readouts + 2 is for Z */
|
||||
config = STEPCONFIG_MODE_HWSYNC |
|
||||
@ -368,6 +369,17 @@ static int titsc_parse_dt(struct platform_device *pdev,
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
err = of_property_read_u32(node, "ti,charge-delay",
|
||||
&ts_dev->charge_delay);
|
||||
/*
|
||||
* If ti,charge-delay value is not specified, then use
|
||||
* CHARGEDLY_OPENDLY as the default value.
|
||||
*/
|
||||
if (err < 0) {
|
||||
ts_dev->charge_delay = CHARGEDLY_OPENDLY;
|
||||
dev_warn(&pdev->dev, "ti,charge-delay not specified\n");
|
||||
}
|
||||
|
||||
return of_property_read_u32_array(node, "ti,wire-config",
|
||||
ts_dev->config_inp, ARRAY_SIZE(ts_dev->config_inp));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user