All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Juergen Beisert <jbe@pengutronix.de>, linux-iio@vger.kernel.org
Cc: devel@driverdev.osuosl.org, marex@denx.de,
	fabio.estevam@freescale.com, jic23@cam.ac.uk,
	linux-input@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 7/9] Staging/iio/adc/touchscreen/MXS: remove old touchscreen detection implementation
Date: Tue, 01 Oct 2013 12:13:40 +0100	[thread overview]
Message-ID: <524AAE64.4060706@kernel.org> (raw)
In-Reply-To: <1379946998-23041-8-git-send-email-jbe@pengutronix.de>

On 09/23/13 15:36, Juergen Beisert wrote:
> Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
> CC: linux-arm-kernel@lists.infradead.org
> CC: linux-input@vger.kernel.org
> CC: devel@driverdev.osuosl.org
> CC: Marek Vasut <marex@denx.de>
> CC: Fabio Estevam <fabio.estevam@freescale.com>
> CC: Jonathan Cameron <jic23@cam.ac.uk>
Applied to the togreg branch of iio.git
Thanks,
> ---
>  drivers/staging/iio/adc/mxs-lradc.c | 163 ------------------------------------
>  1 file changed, 163 deletions(-)
> 
> diff --git a/drivers/staging/iio/adc/mxs-lradc.c b/drivers/staging/iio/adc/mxs-lradc.c
> index 76a900d..aa1f337 100644
> --- a/drivers/staging/iio/adc/mxs-lradc.c
> +++ b/drivers/staging/iio/adc/mxs-lradc.c
> @@ -186,7 +186,6 @@ struct mxs_lradc {
>  	bool			use_touchbutton;
>  
>  	struct input_dev	*ts_input;
> -	struct work_struct	ts_work;
>  
>  	enum mxs_lradc_id	soc;
>  	enum lradc_ts_plate	cur_plate; /* statemachine */
> @@ -830,168 +829,6 @@ static const struct iio_info mxs_lradc_iio_info = {
>  	.read_raw		= mxs_lradc_read_raw,
>  };
>  
> -static int mxs_lradc_ts_touched(struct mxs_lradc *lradc)
> -{
> -	uint32_t reg;
> -
> -	/* Enable touch detection. */
> -	mxs_lradc_reg_clear(lradc, mxs_lradc_plate_mask(lradc), LRADC_CTRL0);
> -	mxs_lradc_reg_set(lradc, mxs_lradc_touch_detect_bit(lradc),
> -								LRADC_CTRL0);
> -
> -	msleep(LRADC_TS_SAMPLE_DELAY_MS);
> -
> -	reg = readl(lradc->base + LRADC_STATUS);
> -
> -	return reg & LRADC_STATUS_TOUCH_DETECT_RAW;
> -}
> -
> -static int32_t mxs_lradc_ts_sample(struct mxs_lradc *lradc,
> -				enum lradc_ts_plate plate, int change)
> -{
> -	unsigned long delay, jiff;
> -	uint32_t reg, ctrl0 = 0, chan = 0;
> -	/* The touchscreen always uses CTRL4 slot #7. */
> -	const uint8_t slot = 7;
> -	uint32_t val;
> -
> -	/*
> -	 * There are three correct configurations of the controller sampling
> -	 * the touchscreen, each of these configuration provides different
> -	 * information from the touchscreen.
> -	 *
> -	 * The following table describes the sampling configurations:
> -	 * +-------------+-------+-------+-------+
> -	 * | Wire \ Axis |   X   |   Y   |   Z   |
> -	 * +---------------------+-------+-------+
> -	 * |   X+ (CH2)  |   HI  |   TS  |   TS  |
> -	 * +-------------+-------+-------+-------+
> -	 * |   X- (CH4)  |   LO  |   SH  |   HI  |
> -	 * +-------------+-------+-------+-------+
> -	 * |   Y+ (CH3)  |   SH  |   HI  |   HI  |
> -	 * +-------------+-------+-------+-------+
> -	 * |   Y- (CH5)  |   TS  |   LO  |   SH  |
> -	 * +-------------+-------+-------+-------+
> -	 *
> -	 * HI ... strong '1'  ; LO ... strong '0'
> -	 * SH ... sample here ; TS ... tri-state
> -	 *
> -	 * There are a few other ways of obtaining the Z coordinate
> -	 * (aka. pressure), but the one in the table seems to be the
> -	 * most reliable one.
> -	 */
> -	switch (plate) {
> -	case LRADC_SAMPLE_X:
> -		ctrl0 = mxs_lradc_drive_x_plate(lradc);
> -		chan = 3;
> -		break;
> -	case LRADC_SAMPLE_Y:
> -		ctrl0 = mxs_lradc_drive_y_plate(lradc);
> -		chan = 4;
> -		break;
> -	case LRADC_SAMPLE_PRESSURE:
> -		ctrl0 = mxs_lradc_drive_pressure(lradc);
> -		chan = 5;
> -		break;
> -	}
> -
> -	if (change) {
> -		mxs_lradc_reg_clear(lradc, mxs_lradc_plate_mask(lradc),
> -						LRADC_CTRL0);
> -		mxs_lradc_reg_set(lradc, ctrl0, LRADC_CTRL0);
> -
> -		mxs_lradc_reg_clear(lradc, LRADC_CTRL4_LRADCSELECT_MASK(slot),
> -						LRADC_CTRL4);
> -		mxs_lradc_reg_set(lradc,
> -				chan << LRADC_CTRL4_LRADCSELECT_OFFSET(slot),
> -				LRADC_CTRL4);
> -	}
> -
> -	mxs_lradc_reg_clear(lradc, 0xffffffff, LRADC_CH(slot));
> -	mxs_lradc_reg_set(lradc, 1 << slot, LRADC_CTRL0);
> -
> -	delay = jiffies + msecs_to_jiffies(LRADC_TS_SAMPLE_DELAY_MS);
> -	do {
> -		jiff = jiffies;
> -		reg = readl_relaxed(lradc->base + LRADC_CTRL1);
> -		if (reg & LRADC_CTRL1_LRADC_IRQ(slot))
> -			break;
> -	} while (time_before(jiff, delay));
> -
> -	mxs_lradc_reg_clear(lradc, LRADC_CTRL1_LRADC_IRQ(slot), LRADC_CTRL1);
> -
> -	if (time_after_eq(jiff, delay))
> -		return -ETIMEDOUT;
> -
> -	val = readl(lradc->base + LRADC_CH(slot));
> -	val &= LRADC_CH_VALUE_MASK;
> -
> -	return val;
> -}
> -
> -static int32_t mxs_lradc_ts_sample_filter(struct mxs_lradc *lradc,
> -				enum lradc_ts_plate plate)
> -{
> -	int32_t val, tot = 0;
> -	int i;
> -
> -	val = mxs_lradc_ts_sample(lradc, plate, 1);
> -
> -	/* Delay a bit so the touchscreen is stable. */
> -	mdelay(2);
> -
> -	for (i = 0; i < LRADC_TS_SAMPLE_AMOUNT; i++) {
> -		val = mxs_lradc_ts_sample(lradc, plate, 0);
> -		tot += val;
> -	}
> -
> -	return tot / LRADC_TS_SAMPLE_AMOUNT;
> -}
> -
> -static void mxs_lradc_ts_work(struct work_struct *ts_work)
> -{
> -	struct mxs_lradc *lradc = container_of(ts_work,
> -				struct mxs_lradc, ts_work);
> -	int val_x, val_y, val_p;
> -	bool valid = false;
> -
> -	while (mxs_lradc_ts_touched(lradc)) {
> -		/* Disable touch detector so we can sample the touchscreen. */
> -		mxs_lradc_reg_clear(lradc, mxs_lradc_touch_detect_bit(lradc),
> -						LRADC_CTRL0);
> -
> -		if (likely(valid)) {
> -			input_report_abs(lradc->ts_input, ABS_X, val_x);
> -			input_report_abs(lradc->ts_input, ABS_Y, val_y);
> -			input_report_abs(lradc->ts_input, ABS_PRESSURE, val_p);
> -			input_report_key(lradc->ts_input, BTN_TOUCH, 1);
> -			input_sync(lradc->ts_input);
> -		}
> -
> -		valid = false;
> -
> -		val_x = mxs_lradc_ts_sample_filter(lradc, LRADC_SAMPLE_X);
> -		if (val_x < 0)
> -			continue;
> -		val_y = mxs_lradc_ts_sample_filter(lradc, LRADC_SAMPLE_Y);
> -		if (val_y < 0)
> -			continue;
> -		val_p = mxs_lradc_ts_sample_filter(lradc, LRADC_SAMPLE_PRESSURE);
> -		if (val_p < 0)
> -			continue;
> -
> -		valid = true;
> -	}
> -
> -	input_report_abs(lradc->ts_input, ABS_PRESSURE, 0);
> -	input_report_key(lradc->ts_input, BTN_TOUCH, 0);
> -	input_sync(lradc->ts_input);
> -
> -	/* Restart the touchscreen interrupts. */
> -	mxs_lradc_reg_clear(lradc, LRADC_CTRL1_TOUCH_DETECT_IRQ, LRADC_CTRL1);
> -	mxs_lradc_reg_set(lradc, LRADC_CTRL1_TOUCH_DETECT_IRQ_EN, LRADC_CTRL1);
> -}
> -
>  static int mxs_lradc_ts_open(struct input_dev *dev)
>  {
>  	struct mxs_lradc *lradc = input_get_drvdata(dev);
> 

WARNING: multiple messages have this Message-ID (diff)
From: Jonathan Cameron <jic23@kernel.org>
To: Juergen Beisert <jbe@pengutronix.de>, linux-iio@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org, devel@driverdev.osuosl.org,
	marex@denx.de, fabio.estevam@freescale.com, jic23@cam.ac.uk,
	linux-input@vger.kernel.org
Subject: Re: [PATCH 7/9] Staging/iio/adc/touchscreen/MXS: remove old touchscreen detection implementation
Date: Tue, 01 Oct 2013 12:13:40 +0100	[thread overview]
Message-ID: <524AAE64.4060706@kernel.org> (raw)
In-Reply-To: <1379946998-23041-8-git-send-email-jbe@pengutronix.de>

On 09/23/13 15:36, Juergen Beisert wrote:
> Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
> CC: linux-arm-kernel@lists.infradead.org
> CC: linux-input@vger.kernel.org
> CC: devel@driverdev.osuosl.org
> CC: Marek Vasut <marex@denx.de>
> CC: Fabio Estevam <fabio.estevam@freescale.com>
> CC: Jonathan Cameron <jic23@cam.ac.uk>
Applied to the togreg branch of iio.git
Thanks,
> ---
>  drivers/staging/iio/adc/mxs-lradc.c | 163 ------------------------------------
>  1 file changed, 163 deletions(-)
> 
> diff --git a/drivers/staging/iio/adc/mxs-lradc.c b/drivers/staging/iio/adc/mxs-lradc.c
> index 76a900d..aa1f337 100644
> --- a/drivers/staging/iio/adc/mxs-lradc.c
> +++ b/drivers/staging/iio/adc/mxs-lradc.c
> @@ -186,7 +186,6 @@ struct mxs_lradc {
>  	bool			use_touchbutton;
>  
>  	struct input_dev	*ts_input;
> -	struct work_struct	ts_work;
>  
>  	enum mxs_lradc_id	soc;
>  	enum lradc_ts_plate	cur_plate; /* statemachine */
> @@ -830,168 +829,6 @@ static const struct iio_info mxs_lradc_iio_info = {
>  	.read_raw		= mxs_lradc_read_raw,
>  };
>  
> -static int mxs_lradc_ts_touched(struct mxs_lradc *lradc)
> -{
> -	uint32_t reg;
> -
> -	/* Enable touch detection. */
> -	mxs_lradc_reg_clear(lradc, mxs_lradc_plate_mask(lradc), LRADC_CTRL0);
> -	mxs_lradc_reg_set(lradc, mxs_lradc_touch_detect_bit(lradc),
> -								LRADC_CTRL0);
> -
> -	msleep(LRADC_TS_SAMPLE_DELAY_MS);
> -
> -	reg = readl(lradc->base + LRADC_STATUS);
> -
> -	return reg & LRADC_STATUS_TOUCH_DETECT_RAW;
> -}
> -
> -static int32_t mxs_lradc_ts_sample(struct mxs_lradc *lradc,
> -				enum lradc_ts_plate plate, int change)
> -{
> -	unsigned long delay, jiff;
> -	uint32_t reg, ctrl0 = 0, chan = 0;
> -	/* The touchscreen always uses CTRL4 slot #7. */
> -	const uint8_t slot = 7;
> -	uint32_t val;
> -
> -	/*
> -	 * There are three correct configurations of the controller sampling
> -	 * the touchscreen, each of these configuration provides different
> -	 * information from the touchscreen.
> -	 *
> -	 * The following table describes the sampling configurations:
> -	 * +-------------+-------+-------+-------+
> -	 * | Wire \ Axis |   X   |   Y   |   Z   |
> -	 * +---------------------+-------+-------+
> -	 * |   X+ (CH2)  |   HI  |   TS  |   TS  |
> -	 * +-------------+-------+-------+-------+
> -	 * |   X- (CH4)  |   LO  |   SH  |   HI  |
> -	 * +-------------+-------+-------+-------+
> -	 * |   Y+ (CH3)  |   SH  |   HI  |   HI  |
> -	 * +-------------+-------+-------+-------+
> -	 * |   Y- (CH5)  |   TS  |   LO  |   SH  |
> -	 * +-------------+-------+-------+-------+
> -	 *
> -	 * HI ... strong '1'  ; LO ... strong '0'
> -	 * SH ... sample here ; TS ... tri-state
> -	 *
> -	 * There are a few other ways of obtaining the Z coordinate
> -	 * (aka. pressure), but the one in the table seems to be the
> -	 * most reliable one.
> -	 */
> -	switch (plate) {
> -	case LRADC_SAMPLE_X:
> -		ctrl0 = mxs_lradc_drive_x_plate(lradc);
> -		chan = 3;
> -		break;
> -	case LRADC_SAMPLE_Y:
> -		ctrl0 = mxs_lradc_drive_y_plate(lradc);
> -		chan = 4;
> -		break;
> -	case LRADC_SAMPLE_PRESSURE:
> -		ctrl0 = mxs_lradc_drive_pressure(lradc);
> -		chan = 5;
> -		break;
> -	}
> -
> -	if (change) {
> -		mxs_lradc_reg_clear(lradc, mxs_lradc_plate_mask(lradc),
> -						LRADC_CTRL0);
> -		mxs_lradc_reg_set(lradc, ctrl0, LRADC_CTRL0);
> -
> -		mxs_lradc_reg_clear(lradc, LRADC_CTRL4_LRADCSELECT_MASK(slot),
> -						LRADC_CTRL4);
> -		mxs_lradc_reg_set(lradc,
> -				chan << LRADC_CTRL4_LRADCSELECT_OFFSET(slot),
> -				LRADC_CTRL4);
> -	}
> -
> -	mxs_lradc_reg_clear(lradc, 0xffffffff, LRADC_CH(slot));
> -	mxs_lradc_reg_set(lradc, 1 << slot, LRADC_CTRL0);
> -
> -	delay = jiffies + msecs_to_jiffies(LRADC_TS_SAMPLE_DELAY_MS);
> -	do {
> -		jiff = jiffies;
> -		reg = readl_relaxed(lradc->base + LRADC_CTRL1);
> -		if (reg & LRADC_CTRL1_LRADC_IRQ(slot))
> -			break;
> -	} while (time_before(jiff, delay));
> -
> -	mxs_lradc_reg_clear(lradc, LRADC_CTRL1_LRADC_IRQ(slot), LRADC_CTRL1);
> -
> -	if (time_after_eq(jiff, delay))
> -		return -ETIMEDOUT;
> -
> -	val = readl(lradc->base + LRADC_CH(slot));
> -	val &= LRADC_CH_VALUE_MASK;
> -
> -	return val;
> -}
> -
> -static int32_t mxs_lradc_ts_sample_filter(struct mxs_lradc *lradc,
> -				enum lradc_ts_plate plate)
> -{
> -	int32_t val, tot = 0;
> -	int i;
> -
> -	val = mxs_lradc_ts_sample(lradc, plate, 1);
> -
> -	/* Delay a bit so the touchscreen is stable. */
> -	mdelay(2);
> -
> -	for (i = 0; i < LRADC_TS_SAMPLE_AMOUNT; i++) {
> -		val = mxs_lradc_ts_sample(lradc, plate, 0);
> -		tot += val;
> -	}
> -
> -	return tot / LRADC_TS_SAMPLE_AMOUNT;
> -}
> -
> -static void mxs_lradc_ts_work(struct work_struct *ts_work)
> -{
> -	struct mxs_lradc *lradc = container_of(ts_work,
> -				struct mxs_lradc, ts_work);
> -	int val_x, val_y, val_p;
> -	bool valid = false;
> -
> -	while (mxs_lradc_ts_touched(lradc)) {
> -		/* Disable touch detector so we can sample the touchscreen. */
> -		mxs_lradc_reg_clear(lradc, mxs_lradc_touch_detect_bit(lradc),
> -						LRADC_CTRL0);
> -
> -		if (likely(valid)) {
> -			input_report_abs(lradc->ts_input, ABS_X, val_x);
> -			input_report_abs(lradc->ts_input, ABS_Y, val_y);
> -			input_report_abs(lradc->ts_input, ABS_PRESSURE, val_p);
> -			input_report_key(lradc->ts_input, BTN_TOUCH, 1);
> -			input_sync(lradc->ts_input);
> -		}
> -
> -		valid = false;
> -
> -		val_x = mxs_lradc_ts_sample_filter(lradc, LRADC_SAMPLE_X);
> -		if (val_x < 0)
> -			continue;
> -		val_y = mxs_lradc_ts_sample_filter(lradc, LRADC_SAMPLE_Y);
> -		if (val_y < 0)
> -			continue;
> -		val_p = mxs_lradc_ts_sample_filter(lradc, LRADC_SAMPLE_PRESSURE);
> -		if (val_p < 0)
> -			continue;
> -
> -		valid = true;
> -	}
> -
> -	input_report_abs(lradc->ts_input, ABS_PRESSURE, 0);
> -	input_report_key(lradc->ts_input, BTN_TOUCH, 0);
> -	input_sync(lradc->ts_input);
> -
> -	/* Restart the touchscreen interrupts. */
> -	mxs_lradc_reg_clear(lradc, LRADC_CTRL1_TOUCH_DETECT_IRQ, LRADC_CTRL1);
> -	mxs_lradc_reg_set(lradc, LRADC_CTRL1_TOUCH_DETECT_IRQ_EN, LRADC_CTRL1);
> -}
> -
>  static int mxs_lradc_ts_open(struct input_dev *dev)
>  {
>  	struct mxs_lradc *lradc = input_get_drvdata(dev);
> 

WARNING: multiple messages have this Message-ID (diff)
From: jic23@kernel.org (Jonathan Cameron)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 7/9] Staging/iio/adc/touchscreen/MXS: remove old touchscreen detection implementation
Date: Tue, 01 Oct 2013 12:13:40 +0100	[thread overview]
Message-ID: <524AAE64.4060706@kernel.org> (raw)
In-Reply-To: <1379946998-23041-8-git-send-email-jbe@pengutronix.de>

On 09/23/13 15:36, Juergen Beisert wrote:
> Signed-off-by: Juergen Beisert <jbe@pengutronix.de>
> CC: linux-arm-kernel at lists.infradead.org
> CC: linux-input at vger.kernel.org
> CC: devel at driverdev.osuosl.org
> CC: Marek Vasut <marex@denx.de>
> CC: Fabio Estevam <fabio.estevam@freescale.com>
> CC: Jonathan Cameron <jic23@cam.ac.uk>
Applied to the togreg branch of iio.git
Thanks,
> ---
>  drivers/staging/iio/adc/mxs-lradc.c | 163 ------------------------------------
>  1 file changed, 163 deletions(-)
> 
> diff --git a/drivers/staging/iio/adc/mxs-lradc.c b/drivers/staging/iio/adc/mxs-lradc.c
> index 76a900d..aa1f337 100644
> --- a/drivers/staging/iio/adc/mxs-lradc.c
> +++ b/drivers/staging/iio/adc/mxs-lradc.c
> @@ -186,7 +186,6 @@ struct mxs_lradc {
>  	bool			use_touchbutton;
>  
>  	struct input_dev	*ts_input;
> -	struct work_struct	ts_work;
>  
>  	enum mxs_lradc_id	soc;
>  	enum lradc_ts_plate	cur_plate; /* statemachine */
> @@ -830,168 +829,6 @@ static const struct iio_info mxs_lradc_iio_info = {
>  	.read_raw		= mxs_lradc_read_raw,
>  };
>  
> -static int mxs_lradc_ts_touched(struct mxs_lradc *lradc)
> -{
> -	uint32_t reg;
> -
> -	/* Enable touch detection. */
> -	mxs_lradc_reg_clear(lradc, mxs_lradc_plate_mask(lradc), LRADC_CTRL0);
> -	mxs_lradc_reg_set(lradc, mxs_lradc_touch_detect_bit(lradc),
> -								LRADC_CTRL0);
> -
> -	msleep(LRADC_TS_SAMPLE_DELAY_MS);
> -
> -	reg = readl(lradc->base + LRADC_STATUS);
> -
> -	return reg & LRADC_STATUS_TOUCH_DETECT_RAW;
> -}
> -
> -static int32_t mxs_lradc_ts_sample(struct mxs_lradc *lradc,
> -				enum lradc_ts_plate plate, int change)
> -{
> -	unsigned long delay, jiff;
> -	uint32_t reg, ctrl0 = 0, chan = 0;
> -	/* The touchscreen always uses CTRL4 slot #7. */
> -	const uint8_t slot = 7;
> -	uint32_t val;
> -
> -	/*
> -	 * There are three correct configurations of the controller sampling
> -	 * the touchscreen, each of these configuration provides different
> -	 * information from the touchscreen.
> -	 *
> -	 * The following table describes the sampling configurations:
> -	 * +-------------+-------+-------+-------+
> -	 * | Wire \ Axis |   X   |   Y   |   Z   |
> -	 * +---------------------+-------+-------+
> -	 * |   X+ (CH2)  |   HI  |   TS  |   TS  |
> -	 * +-------------+-------+-------+-------+
> -	 * |   X- (CH4)  |   LO  |   SH  |   HI  |
> -	 * +-------------+-------+-------+-------+
> -	 * |   Y+ (CH3)  |   SH  |   HI  |   HI  |
> -	 * +-------------+-------+-------+-------+
> -	 * |   Y- (CH5)  |   TS  |   LO  |   SH  |
> -	 * +-------------+-------+-------+-------+
> -	 *
> -	 * HI ... strong '1'  ; LO ... strong '0'
> -	 * SH ... sample here ; TS ... tri-state
> -	 *
> -	 * There are a few other ways of obtaining the Z coordinate
> -	 * (aka. pressure), but the one in the table seems to be the
> -	 * most reliable one.
> -	 */
> -	switch (plate) {
> -	case LRADC_SAMPLE_X:
> -		ctrl0 = mxs_lradc_drive_x_plate(lradc);
> -		chan = 3;
> -		break;
> -	case LRADC_SAMPLE_Y:
> -		ctrl0 = mxs_lradc_drive_y_plate(lradc);
> -		chan = 4;
> -		break;
> -	case LRADC_SAMPLE_PRESSURE:
> -		ctrl0 = mxs_lradc_drive_pressure(lradc);
> -		chan = 5;
> -		break;
> -	}
> -
> -	if (change) {
> -		mxs_lradc_reg_clear(lradc, mxs_lradc_plate_mask(lradc),
> -						LRADC_CTRL0);
> -		mxs_lradc_reg_set(lradc, ctrl0, LRADC_CTRL0);
> -
> -		mxs_lradc_reg_clear(lradc, LRADC_CTRL4_LRADCSELECT_MASK(slot),
> -						LRADC_CTRL4);
> -		mxs_lradc_reg_set(lradc,
> -				chan << LRADC_CTRL4_LRADCSELECT_OFFSET(slot),
> -				LRADC_CTRL4);
> -	}
> -
> -	mxs_lradc_reg_clear(lradc, 0xffffffff, LRADC_CH(slot));
> -	mxs_lradc_reg_set(lradc, 1 << slot, LRADC_CTRL0);
> -
> -	delay = jiffies + msecs_to_jiffies(LRADC_TS_SAMPLE_DELAY_MS);
> -	do {
> -		jiff = jiffies;
> -		reg = readl_relaxed(lradc->base + LRADC_CTRL1);
> -		if (reg & LRADC_CTRL1_LRADC_IRQ(slot))
> -			break;
> -	} while (time_before(jiff, delay));
> -
> -	mxs_lradc_reg_clear(lradc, LRADC_CTRL1_LRADC_IRQ(slot), LRADC_CTRL1);
> -
> -	if (time_after_eq(jiff, delay))
> -		return -ETIMEDOUT;
> -
> -	val = readl(lradc->base + LRADC_CH(slot));
> -	val &= LRADC_CH_VALUE_MASK;
> -
> -	return val;
> -}
> -
> -static int32_t mxs_lradc_ts_sample_filter(struct mxs_lradc *lradc,
> -				enum lradc_ts_plate plate)
> -{
> -	int32_t val, tot = 0;
> -	int i;
> -
> -	val = mxs_lradc_ts_sample(lradc, plate, 1);
> -
> -	/* Delay a bit so the touchscreen is stable. */
> -	mdelay(2);
> -
> -	for (i = 0; i < LRADC_TS_SAMPLE_AMOUNT; i++) {
> -		val = mxs_lradc_ts_sample(lradc, plate, 0);
> -		tot += val;
> -	}
> -
> -	return tot / LRADC_TS_SAMPLE_AMOUNT;
> -}
> -
> -static void mxs_lradc_ts_work(struct work_struct *ts_work)
> -{
> -	struct mxs_lradc *lradc = container_of(ts_work,
> -				struct mxs_lradc, ts_work);
> -	int val_x, val_y, val_p;
> -	bool valid = false;
> -
> -	while (mxs_lradc_ts_touched(lradc)) {
> -		/* Disable touch detector so we can sample the touchscreen. */
> -		mxs_lradc_reg_clear(lradc, mxs_lradc_touch_detect_bit(lradc),
> -						LRADC_CTRL0);
> -
> -		if (likely(valid)) {
> -			input_report_abs(lradc->ts_input, ABS_X, val_x);
> -			input_report_abs(lradc->ts_input, ABS_Y, val_y);
> -			input_report_abs(lradc->ts_input, ABS_PRESSURE, val_p);
> -			input_report_key(lradc->ts_input, BTN_TOUCH, 1);
> -			input_sync(lradc->ts_input);
> -		}
> -
> -		valid = false;
> -
> -		val_x = mxs_lradc_ts_sample_filter(lradc, LRADC_SAMPLE_X);
> -		if (val_x < 0)
> -			continue;
> -		val_y = mxs_lradc_ts_sample_filter(lradc, LRADC_SAMPLE_Y);
> -		if (val_y < 0)
> -			continue;
> -		val_p = mxs_lradc_ts_sample_filter(lradc, LRADC_SAMPLE_PRESSURE);
> -		if (val_p < 0)
> -			continue;
> -
> -		valid = true;
> -	}
> -
> -	input_report_abs(lradc->ts_input, ABS_PRESSURE, 0);
> -	input_report_key(lradc->ts_input, BTN_TOUCH, 0);
> -	input_sync(lradc->ts_input);
> -
> -	/* Restart the touchscreen interrupts. */
> -	mxs_lradc_reg_clear(lradc, LRADC_CTRL1_TOUCH_DETECT_IRQ, LRADC_CTRL1);
> -	mxs_lradc_reg_set(lradc, LRADC_CTRL1_TOUCH_DETECT_IRQ_EN, LRADC_CTRL1);
> -}
> -
>  static int mxs_lradc_ts_open(struct input_dev *dev)
>  {
>  	struct mxs_lradc *lradc = input_get_drvdata(dev);
> 

  reply	other threads:[~2013-10-01 11:13 UTC|newest]

Thread overview: 127+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-23 14:36 [PATCHv6] staging/iio/adc: change the MXS touchscreen driver implementation Juergen Beisert
2013-09-23 14:36 ` Juergen Beisert
2013-09-23 14:36 ` Juergen Beisert
2013-09-23 14:36 ` [PATCH 1/9] Staging/iio/adc/touchscreen/MXS: add proper clock handling Juergen Beisert
2013-09-23 14:36   ` Juergen Beisert
2013-09-23 14:36   ` Juergen Beisert
2013-09-23 15:13   ` Fabio Estevam
2013-09-23 15:13     ` Fabio Estevam
2013-09-23 15:13     ` Fabio Estevam
     [not found]     ` <52405A7F.1050801-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2013-09-24  7:50       ` Jürgen Beisert
2013-09-24  7:50         ` Jürgen Beisert
2013-09-24  7:50         ` Jürgen Beisert
2013-09-24 13:50         ` Fabio Estevam
2013-09-24 13:50           ` Fabio Estevam
2013-09-24 13:50           ` Fabio Estevam
2013-10-01 10:57         ` Jonathan Cameron
2013-10-01 10:57           ` Jonathan Cameron
2013-10-01 10:57           ` Jonathan Cameron
     [not found]   ` <1379946998-23041-2-git-send-email-jbe-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2013-09-23 15:30     ` Lothar Waßmann
2013-09-23 15:30       ` Lothar Waßmann
2013-09-23 15:30       ` Lothar Waßmann
     [not found]       ` <21056.24202.312851.105281-VjFSrY7JcPWvSplVBqRQBQ@public.gmane.org>
2013-09-24  7:39         ` Jürgen Beisert
2013-09-24  7:39           ` Jürgen Beisert
2013-09-24  7:39           ` Jürgen Beisert
2013-09-23 14:36 ` [PATCH 2/9] Staging/iio/adc/touchscreen/MXS: distinguish i.MX23's and i.MX28's LRADC Juergen Beisert
2013-09-23 14:36   ` Juergen Beisert
2013-09-23 14:36   ` Juergen Beisert
     [not found]   ` <1379946998-23041-3-git-send-email-jbe-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2013-10-01 10:58     ` Jonathan Cameron
2013-10-01 10:58       ` Jonathan Cameron
2013-10-01 10:58       ` Jonathan Cameron
2013-09-23 14:36 ` [PATCH 3/9] Staging/iio/adc/touchscreen/MXS: separate i.MX28 specific register bits Juergen Beisert
2013-09-23 14:36   ` Juergen Beisert
2013-09-23 14:36   ` Juergen Beisert
     [not found]   ` <1379946998-23041-4-git-send-email-jbe-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2013-10-01 11:00     ` Jonathan Cameron
2013-10-01 11:00       ` Jonathan Cameron
2013-10-01 11:00       ` Jonathan Cameron
2013-09-23 14:36 ` [PATCH 4/9] Staging/iio/adc/touchscreen/MXS: simplify register access Juergen Beisert
2013-09-23 14:36   ` Juergen Beisert
2013-09-23 14:36   ` Juergen Beisert
2013-10-01 11:01   ` Jonathan Cameron
2013-10-01 11:01     ` Jonathan Cameron
2013-09-23 14:36 ` [PATCH 5/9] Staging/iio/adc/touchscreen/MXS: add i.MX23 support to the LRADC touchscreen driver Juergen Beisert
2013-09-23 14:36   ` Juergen Beisert
2013-10-01 11:02   ` Jonathan Cameron
2013-10-01 11:02     ` Jonathan Cameron
2013-09-23 14:36 ` [PATCH 6/9] Staging/iio/adc/touchscreen/MXS: add interrupt driven touch detection Juergen Beisert
2013-09-23 14:36   ` Juergen Beisert
     [not found]   ` <1379946998-23041-7-git-send-email-jbe-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2013-10-01  9:28     ` Jürgen Beisert
2013-10-01  9:28       ` Jürgen Beisert
2013-10-01  9:28       ` Jürgen Beisert
2013-10-01 10:51       ` Jonathan Cameron
2013-10-01 10:51         ` Jonathan Cameron
2013-10-01 10:51         ` Jonathan Cameron
     [not found]         ` <524AA91F.7000906-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2013-10-01 11:06           ` Jonathan Cameron
2013-10-01 11:06             ` Jonathan Cameron
2013-10-01 11:06             ` Jonathan Cameron
2013-09-23 14:36 ` [PATCH 7/9] Staging/iio/adc/touchscreen/MXS: remove old touchscreen detection implementation Juergen Beisert
2013-09-23 14:36   ` Juergen Beisert
2013-09-23 14:36   ` Juergen Beisert
2013-10-01 11:13   ` Jonathan Cameron [this message]
2013-10-01 11:13     ` Jonathan Cameron
2013-10-01 11:13     ` Jonathan Cameron
2013-09-23 14:36 ` [PATCH 9/9] Staging/iio: add TODO reminder Juergen Beisert
2013-09-23 14:36   ` Juergen Beisert
2013-09-23 14:36   ` Juergen Beisert
     [not found]   ` <1379946998-23041-10-git-send-email-jbe-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2013-10-01 11:14     ` Jonathan Cameron
2013-10-01 11:14       ` Jonathan Cameron
2013-10-01 11:14       ` Jonathan Cameron
     [not found]       ` <524AAEA8.4090106-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2013-10-01 11:21         ` Jonathan Cameron
2013-10-01 11:21           ` Jonathan Cameron
2013-10-01 11:21           ` Jonathan Cameron
     [not found]           ` <524AB04C.4070409-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2013-10-01 11:22             ` Jonathan Cameron
2013-10-01 11:22               ` Jonathan Cameron
     [not found] ` <1379946998-23041-1-git-send-email-jbe-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2013-09-23 14:36   ` [PATCH 8/9] Staging/iio/adc/touchscreen/MXS: provide devicetree adaption Juergen Beisert
2013-09-23 14:36     ` Juergen Beisert
2013-09-23 14:36     ` Juergen Beisert
     [not found]     ` <1379946998-23041-9-git-send-email-jbe-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2013-10-01 11:14       ` Jonathan Cameron
2013-10-01 11:14         ` Jonathan Cameron
2013-10-01 11:14         ` Jonathan Cameron
2013-09-23 15:25   ` [PATCHv6] staging/iio/adc: change the MXS touchscreen driver implementation Marek Vasut
2013-09-23 15:25     ` Marek Vasut
2013-09-23 15:25     ` Marek Vasut
2013-10-01  9:25   ` Jonathan Cameron
2013-10-01  9:25     ` Jonathan Cameron
2013-10-01  9:25     ` Jonathan Cameron
     [not found]     ` <524A951A.5050606-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2013-10-01 10:49       ` Marek Vasut
2013-10-01 10:49         ` Marek Vasut
2013-10-01 10:49         ` Marek Vasut
2014-01-09 13:31   ` Alexandre Belloni
2014-01-09 13:31     ` Alexandre Belloni
2014-01-09 13:31     ` Alexandre Belloni
     [not found]     ` <52CEA4AA.8050503-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2014-01-10  8:55       ` Jürgen Beisert
2014-01-10  8:55         ` Jürgen Beisert
2014-01-10  8:55         ` Jürgen Beisert
2014-02-04 23:45         ` Marek Vasut
2014-02-04 23:45           ` Marek Vasut
2014-02-04 23:45           ` Marek Vasut
     [not found]         ` <201401100955.45885.jbe-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2014-02-24 13:16           ` Juergen Beisert
2014-02-24 13:16             ` Juergen Beisert
2014-02-24 13:16             ` Juergen Beisert
2014-02-24 13:33             ` Dan Carpenter
2014-02-24 13:33               ` Dan Carpenter
2014-02-24 13:33               ` Dan Carpenter
2014-02-24 14:38               ` Juergen Beisert
2014-02-24 14:38                 ` Juergen Beisert
2014-02-24 14:38                 ` Juergen Beisert
2014-02-24 14:47                 ` Dan Carpenter
2014-02-24 14:47                   ` Dan Carpenter
2014-02-24 14:47                   ` Dan Carpenter
2014-02-24 14:39               ` [PATCH] staging/iio/adc/MXS/LRADC: fix touchscreen statemachine Juergen Beisert
2014-02-24 14:39                 ` Juergen Beisert
2014-02-24 14:39                 ` Juergen Beisert
2014-02-24 16:48                 ` Alexandre Belloni
2014-02-24 16:48                   ` Alexandre Belloni
2014-02-24 16:48                   ` Alexandre Belloni
     [not found]                   ` <20140224164817.GE4436-m++hUPXGwpdeoWH0uzbU5w@public.gmane.org>
2014-02-24 21:14                     ` Jonathan Cameron
2014-02-24 21:14                       ` Jonathan Cameron
2014-02-24 21:14                       ` Jonathan Cameron
     [not found]                       ` <530BB63D.4050200-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2014-02-24 22:04                         ` Jonathan Cameron
2014-02-24 22:04                           ` Jonathan Cameron
2014-02-24 22:04                           ` Jonathan Cameron
     [not found]             ` <201402241416.24270.jbe-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2014-02-24 14:26               ` [PATCHv6] staging/iio/adc: change the MXS touchscreen driver implementation Alexandre Belloni
2014-02-24 14:26                 ` Alexandre Belloni
2014-02-24 14:26                 ` Alexandre Belloni
     [not found]                 ` <20140224142658.GD4436-m++hUPXGwpdeoWH0uzbU5w@public.gmane.org>
2014-02-24 17:14                   ` Jonathan Cameron
2014-02-24 17:14                     ` Jonathan Cameron
2014-02-24 17:14                     ` Jonathan Cameron

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=524AAE64.4060706@kernel.org \
    --to=jic23@kernel.org \
    --cc=devel@driverdev.osuosl.org \
    --cc=fabio.estevam@freescale.com \
    --cc=jbe@pengutronix.de \
    --cc=jic23@cam.ac.uk \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=marex@denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.