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

Commit bd8f6d2e authored by John Sung's avatar John Sung Committed by Dmitry Torokhov
Browse files

Input: penmount - add PenMount 6250 support



Add multi touch support for PenMount 6250 touch controller.

Signed-off-by: default avatarJohn Sung <penmount.touch@gmail.com>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 90aba7d8
Loading
Loading
Loading
Loading
+23 −0
Original line number Original line Diff line number Diff line
@@ -37,6 +37,7 @@ MODULE_LICENSE("GPL");
#define	PM_MAX_LENGTH	6
#define	PM_MAX_LENGTH	6
#define	PM_MAX_MTSLOT	16
#define	PM_MAX_MTSLOT	16
#define	PM_3000_MTSLOT	2
#define	PM_3000_MTSLOT	2
#define	PM_6250_MTSLOT	12


/*
/*
 * Multi-touch slot
 * Multi-touch slot
@@ -150,6 +151,21 @@ static irqreturn_t pm_interrupt(struct serio *serio,
			}
			}
		}
		}
		break;
		break;

	case 0x6250:
		if ((pm->data[0] & 0xb0) == 0x30) {
			if (pm->packetsize == ++pm->idx) {
				if (pm_checkpacket(pm->data)) {
					int slotnum = pm->data[0] & 0x0f;
					pm->slots[slotnum].active = pm->data[0] & 0x40;
					pm->slots[slotnum].x = pm->data[2] * 256 + pm->data[1];
					pm->slots[slotnum].y = pm->data[4] * 256 + pm->data[3];
					pm_mtevent(pm, dev);
				}
				pm->idx = 0;
			}
		}
		break;
	}
	}


	return IRQ_HANDLED;
	return IRQ_HANDLED;
@@ -227,6 +243,13 @@ static int pm_connect(struct serio *serio, struct serio_driver *drv)
		max_x = max_y = 0x7ff;
		max_x = max_y = 0x7ff;
		pm->maxcontacts = PM_3000_MTSLOT;
		pm->maxcontacts = PM_3000_MTSLOT;
		break;
		break;

	case 3:
		pm->packetsize = 6;
		input_dev->id.product = 0x6250;
		max_x = max_y = 0x3ff;
		pm->maxcontacts = PM_6250_MTSLOT;
		break;
	}
	}


	input_set_abs_params(pm->dev, ABS_X, 0, max_x, 0, 0);
	input_set_abs_params(pm->dev, ABS_X, 0, max_x, 0, 0);