+static void mx1ts_reset_asp(struct mx1ts *mts)
+{
+ unsigned int value;
+
+ mx1ts_flush_fifo(mts);
+
+ /* Soft reset the ASP module */
+ mx1ts_reg_write(mts, ASP_ACNTLCR, ASP_SWRST);
+ /* Read back the reset value of the control register */
+ value = mx1ts_reg_read(mts, ASP_ACNTLCR);
+
+ /* Enable the clock and wait for a short while */
+ value |= ASP_CLKEN;
+ mx1ts_reg_write(mts, ASP_ACNTLCR, value);
+ udelay(100);
+
+ /* Set the value of the conrtol register. */
+ value = ASP_CLKEN | ASP_NM | ASP_SW6 | ASP_BGE;
+ mx1ts_reg_write(mts, ASP_ACNTLCR, value);
+
+ /* 0x01 Set the clock divide ratio to 2. */
+ mx1ts_reg_write(mts, ASP_CLKDIV, 0x1f);
+
+ /* Set the sample rate control register. These values should yield
+ * about 150 samples per second, which seems to give good smooth
+ * lines. */
+ value = (0x7 << ASP_DMCNT_SCALE) | /* 0x2 - Decimation ratio is 3 */
+ (0x3F << ASP_IDLECNT_SCALE) | /* 0x1 - Idle count is 1 clock */
+ (0xF << ASP_DSCNT_SCALE); /* 0x2 - Data setup is 2 clocks */
+ mx1ts_reg_write(mts, ASP_PSMPLRG, value);
+
+ /* Disable the compare function. */
+ mx1ts_reg_write(mts, ASP_CMPCNTL, 0);
+}
+
+static void mx1ts_evt_add_touch(struct input_dev *idev, u8 p , u16 x, u16 y)