Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit acad9853 authored by Mark Brown's avatar Mark Brown Committed by Dmitry Torokhov
Browse files

Input: wm831x-ts - allow IRQ flags to be specified



This allows maximum flexibility for configuring the direct GPIO based
interrupts.

Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent f5346668
Loading
Loading
Loading
Loading
+13 −3
Original line number Original line Diff line number Diff line
@@ -241,7 +241,7 @@ static __devinit int wm831x_ts_probe(struct platform_device *pdev)
	struct wm831x_pdata *core_pdata = dev_get_platdata(pdev->dev.parent);
	struct wm831x_pdata *core_pdata = dev_get_platdata(pdev->dev.parent);
	struct wm831x_touch_pdata *pdata = NULL;
	struct wm831x_touch_pdata *pdata = NULL;
	struct input_dev *input_dev;
	struct input_dev *input_dev;
	int error;
	int error, irqf;


	if (core_pdata)
	if (core_pdata)
		pdata = core_pdata->touch;
		pdata = core_pdata->touch;
@@ -314,9 +314,14 @@ static __devinit int wm831x_ts_probe(struct platform_device *pdev)
	wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
	wm831x_set_bits(wm831x, WM831X_TOUCH_CONTROL_1,
			WM831X_TCH_RATE_MASK, 6);
			WM831X_TCH_RATE_MASK, 6);


	if (pdata && pdata->data_irqf)
		irqf = pdata->data_irqf;
	else
		irqf = IRQF_TRIGGER_HIGH;

	error = request_threaded_irq(wm831x_ts->data_irq,
	error = request_threaded_irq(wm831x_ts->data_irq,
				     NULL, wm831x_ts_data_irq,
				     NULL, wm831x_ts_data_irq,
				     IRQF_ONESHOT,
				     irqf | IRQF_ONESHOT,
				     "Touchscreen data", wm831x_ts);
				     "Touchscreen data", wm831x_ts);
	if (error) {
	if (error) {
		dev_err(&pdev->dev, "Failed to request data IRQ %d: %d\n",
		dev_err(&pdev->dev, "Failed to request data IRQ %d: %d\n",
@@ -325,9 +330,14 @@ static __devinit int wm831x_ts_probe(struct platform_device *pdev)
	}
	}
	disable_irq(wm831x_ts->data_irq);
	disable_irq(wm831x_ts->data_irq);


	if (pdata && pdata->pd_irqf)
		irqf = pdata->pd_irqf;
	else
		irqf = IRQF_TRIGGER_HIGH;

	error = request_threaded_irq(wm831x_ts->pd_irq,
	error = request_threaded_irq(wm831x_ts->pd_irq,
				     NULL, wm831x_ts_pen_down_irq,
				     NULL, wm831x_ts_pen_down_irq,
				     IRQF_ONESHOT,
				     irqf | IRQF_ONESHOT,
				     "Touchscreen pen down", wm831x_ts);
				     "Touchscreen pen down", wm831x_ts);
	if (error) {
	if (error) {
		dev_err(&pdev->dev, "Failed to request pen down IRQ %d: %d\n",
		dev_err(&pdev->dev, "Failed to request pen down IRQ %d: %d\n",
+2 −0
Original line number Original line Diff line number Diff line
@@ -81,7 +81,9 @@ struct wm831x_touch_pdata {
	int rpu;               /** Pen down sensitivity resistor divider */
	int rpu;               /** Pen down sensitivity resistor divider */
	int pressure;          /** Report pressure (boolean) */
	int pressure;          /** Report pressure (boolean) */
	unsigned int data_irq; /** Touch data ready IRQ */
	unsigned int data_irq; /** Touch data ready IRQ */
	int data_irqf;         /** IRQ flags for data ready IRQ */
	unsigned int pd_irq;   /** Touch pendown detect IRQ */
	unsigned int pd_irq;   /** Touch pendown detect IRQ */
	int pd_irqf;           /** IRQ flags for pen down IRQ */
};
};


enum wm831x_watchdog_action {
enum wm831x_watchdog_action {