@@ -33,13 +33,6 @@
#define SEQ_SETTLE 275
#define MAX_12BIT ((1 << 12) - 1)
-static const int config_pins[] = {
- STEPCONFIG_XPP,
- STEPCONFIG_XNN,
- STEPCONFIG_YPP,
- STEPCONFIG_YNN,
-};
-
struct titsc {
struct input_dev *input;
struct ti_tscadc_dev *mfd_tscadc;
@@ -48,9 +41,6 @@ struct titsc {
unsigned int x_plate_resistance;
bool pen_down;
int coordinate_readouts;
- u32 config_inp[4];
- u32 bit_xp, bit_xn, bit_yp, bit_yn;
- u32 inp_xp, inp_xn, inp_yp, inp_yn;
u32 step_mask;
};
@@ -65,58 +55,6 @@ static void titsc_writel(struct titsc *tsc, unsigned int reg,
writel(val, tsc->mfd_tscadc->tscadc_base + reg);
}
-static int titsc_config_wires(struct titsc *ts_dev)
-{
- u32 analog_line[4];
- u32 wire_order[4];
- int i, bit_cfg;
-
- for (i = 0; i < 4; i++) {
- /*
- * Get the order in which TSC wires are attached
- * w.r.t. each of the analog input lines on the EVM.
- */
- analog_line[i] = (ts_dev->config_inp[i] & 0xF0) >> 4;
- wire_order[i] = ts_dev->config_inp[i] & 0x0F;
- if (WARN_ON(analog_line[i] > 7))
- return -EINVAL;
- if (WARN_ON(wire_order[i] > ARRAY_SIZE(config_pins)))
- return -EINVAL;
- }
-
- for (i = 0; i < 4; i++) {
- int an_line;
- int wi_order;
-
- an_line = analog_line[i];
- wi_order = wire_order[i];
- bit_cfg = config_pins[wi_order];
- if (bit_cfg == 0)
- return -EINVAL;
- switch (wi_order) {
- case 0:
- ts_dev->bit_xp = bit_cfg;
- ts_dev->inp_xp = an_line;
- break;
-
- case 1:
- ts_dev->bit_xn = bit_cfg;
- ts_dev->inp_xn = an_line;
- break;
-
- case 2:
- ts_dev->bit_yp = bit_cfg;
- ts_dev->inp_yp = an_line;
- break;
- case 3:
- ts_dev->bit_yn = bit_cfg;
- ts_dev->inp_yn = an_line;
- break;
- }
- }
- return 0;
-}
-
static void titsc_step_config(struct titsc *ts_dev)
{
unsigned int config;
@@ -124,19 +62,17 @@ static void titsc_step_config(struct titsc *ts_dev)
int end_step;
u32 stepenable;
- config = STEPCONFIG_MODE_HWSYNC |
- STEPCONFIG_AVG_16 | ts_dev->bit_xp;
+ config = STEPCONFIG_MODE_HWSYNC | STEPCONFIG_AVG_16 | STEPCONFIG_XPP;
switch (ts_dev->wires) {
case 4:
- config |= STEPCONFIG_INP(ts_dev->inp_yp) | ts_dev->bit_xn;
+ config |= STEPCONFIG_INP(2) | STEPCONFIG_XNN;
break;
case 5:
- config |= ts_dev->bit_yn |
- STEPCONFIG_INP_AN4 | ts_dev->bit_xn |
- ts_dev->bit_yp;
+ config |= STEPCONFIG_YNN | STEPCONFIG_INP_AN4 | STEPCONFIG_XNN |
+ STEPCONFIG_YPP;
break;
case 8:
- config |= STEPCONFIG_INP(ts_dev->inp_yp) | ts_dev->bit_xn;
+ config |= STEPCONFIG_INP(2) | STEPCONFIG_XNN;
break;
}
@@ -147,20 +83,18 @@ static void titsc_step_config(struct titsc *ts_dev)
titsc_writel(ts_dev, REG_STEPDELAY(i), STEPCONFIG_OPENDLY);
}
- config = 0;
- config = STEPCONFIG_MODE_HWSYNC |
- STEPCONFIG_AVG_16 | ts_dev->bit_yn |
+ config = STEPCONFIG_MODE_HWSYNC | STEPCONFIG_AVG_16 | STEPCONFIG_YNN |
STEPCONFIG_INM_ADCREFM;
switch (ts_dev->wires) {
case 4:
- config |= ts_dev->bit_yp | STEPCONFIG_INP(ts_dev->inp_xp);
+ config |= STEPCONFIG_YPP | STEPCONFIG_INP(0);
break;
case 5:
- config |= ts_dev->bit_xp | STEPCONFIG_INP_AN4 |
+ config |= STEPCONFIG_XPP | STEPCONFIG_INP_AN4 |
STEPCONFIG_XNP | STEPCONFIG_YPN;
break;
case 8:
- config |= ts_dev->bit_yp | STEPCONFIG_INP(ts_dev->inp_xp);
+ config |= STEPCONFIG_YPP | STEPCONFIG_INP(0);
break;
}
@@ -172,24 +106,23 @@ static void titsc_step_config(struct titsc *ts_dev)
}
/* Charge step configuration */
- config = ts_dev->bit_xp | ts_dev->bit_yn |
- STEPCHARGE_RFP_XPUL | STEPCHARGE_RFM_XNUR |
- STEPCHARGE_INM_AN1 | STEPCHARGE_INP(ts_dev->inp_yp);
+ config = STEPCONFIG_XPP | STEPCONFIG_YNN | STEPCHARGE_RFP_XPUL |
+ STEPCHARGE_RFM_XNUR | STEPCHARGE_INM_AN1 | STEPCHARGE_INP(2);
titsc_writel(ts_dev, REG_CHARGECONFIG, config);
titsc_writel(ts_dev, REG_CHARGEDELAY, CHARGEDLY_OPENDLY);
/* coordinate_readouts * 2 … coordinate_readouts * 2 + 2 is for Z */
config = STEPCONFIG_MODE_HWSYNC |
- STEPCONFIG_AVG_16 | ts_dev->bit_yp |
- ts_dev->bit_xn | STEPCONFIG_INM_ADCREFM |
- STEPCONFIG_INP(ts_dev->inp_xp);
+ STEPCONFIG_AVG_16 | STEPCONFIG_YPP |
+ STEPCONFIG_XNN | STEPCONFIG_INM_ADCREFM |
+ STEPCONFIG_INP(0);
titsc_writel(ts_dev, REG_STEPCONFIG(end_step), config);
titsc_writel(ts_dev, REG_STEPDELAY(end_step),
STEPCONFIG_OPENDLY);
end_step++;
- config |= STEPCONFIG_INP(ts_dev->inp_yn);
+ config |= STEPCONFIG_INP(3);
titsc_writel(ts_dev, REG_STEPCONFIG(end_step), config);
titsc_writel(ts_dev, REG_STEPDELAY(end_step),
STEPCONFIG_OPENDLY);
@@ -364,12 +297,7 @@ static int titsc_parse_dt(struct platform_device *pdev,
err = of_property_read_u32(node, "ti,coordiante-readouts",
&ts_dev->coordinate_readouts);
}
-
- if (err < 0)
- return err;
-
- return of_property_read_u32_array(node, "ti,wire-config",
- ts_dev->config_inp, ARRAY_SIZE(ts_dev->config_inp));
+ return err;
}
/*
@@ -411,11 +339,6 @@ static int titsc_probe(struct platform_device *pdev)
}
titsc_writel(ts_dev, REG_IRQENABLE, IRQENB_FIFO0THRES);
- err = titsc_config_wires(ts_dev);
- if (err) {
- dev_err(&pdev->dev, "wrong i/p wire configuration\n");
- goto err_free_irq;
- }
titsc_step_config(ts_dev);
titsc_writel(ts_dev, REG_FIFO0THR,
ts_dev->coordinate_readouts * 2 + 2 - 1);