mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-21 01:54:51 +08:00
Input: synaptics - support min/max board id in min_max_pnpid_table
Add a min/max range for board ids to the min/max coordinates quirk. This makes it possible to restrict quirks to specific models based upon their board id. The define ANY_BOARD_ID (0) serves as a wild card. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=91541 Cc: stable@vger.kernel.org Signed-off-by: Daniel Martin <daniel.martin@secunet.com> Acked-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
This commit is contained in:
parent
b05f4d1c33
commit
5b3089ddb5
@ -120,32 +120,41 @@ void synaptics_reset(struct psmouse *psmouse)
|
|||||||
|
|
||||||
static bool cr48_profile_sensor;
|
static bool cr48_profile_sensor;
|
||||||
|
|
||||||
|
#define ANY_BOARD_ID 0
|
||||||
struct min_max_quirk {
|
struct min_max_quirk {
|
||||||
const char * const *pnp_ids;
|
const char * const *pnp_ids;
|
||||||
|
struct {
|
||||||
|
unsigned long int min, max;
|
||||||
|
} board_id;
|
||||||
int x_min, x_max, y_min, y_max;
|
int x_min, x_max, y_min, y_max;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct min_max_quirk min_max_pnpid_table[] = {
|
static const struct min_max_quirk min_max_pnpid_table[] = {
|
||||||
{
|
{
|
||||||
(const char * const []){"LEN0033", NULL},
|
(const char * const []){"LEN0033", NULL},
|
||||||
|
{ANY_BOARD_ID, ANY_BOARD_ID},
|
||||||
1024, 5052, 2258, 4832
|
1024, 5052, 2258, 4832
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
(const char * const []){"LEN0042", NULL},
|
(const char * const []){"LEN0042", NULL},
|
||||||
|
{ANY_BOARD_ID, ANY_BOARD_ID},
|
||||||
1232, 5710, 1156, 4696
|
1232, 5710, 1156, 4696
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
(const char * const []){"LEN0034", "LEN0036", "LEN0037",
|
(const char * const []){"LEN0034", "LEN0036", "LEN0037",
|
||||||
"LEN0039", "LEN2002", "LEN2004",
|
"LEN0039", "LEN2002", "LEN2004",
|
||||||
NULL},
|
NULL},
|
||||||
|
{ANY_BOARD_ID, ANY_BOARD_ID},
|
||||||
1024, 5112, 2024, 4832
|
1024, 5112, 2024, 4832
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
(const char * const []){"LEN2001", NULL},
|
(const char * const []){"LEN2001", NULL},
|
||||||
|
{ANY_BOARD_ID, ANY_BOARD_ID},
|
||||||
1024, 5022, 2508, 4832
|
1024, 5022, 2508, 4832
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
(const char * const []){"LEN2006", NULL},
|
(const char * const []){"LEN2006", NULL},
|
||||||
|
{ANY_BOARD_ID, ANY_BOARD_ID},
|
||||||
1264, 5675, 1171, 4688
|
1264, 5675, 1171, 4688
|
||||||
},
|
},
|
||||||
{ }
|
{ }
|
||||||
@ -401,18 +410,27 @@ static void synaptics_apply_quirks(struct psmouse *psmouse)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; min_max_pnpid_table[i].pnp_ids; i++) {
|
for (i = 0; min_max_pnpid_table[i].pnp_ids; i++) {
|
||||||
if (psmouse_matches_pnp_id(psmouse,
|
if (!psmouse_matches_pnp_id(psmouse,
|
||||||
min_max_pnpid_table[i].pnp_ids)) {
|
min_max_pnpid_table[i].pnp_ids))
|
||||||
priv->x_min = min_max_pnpid_table[i].x_min;
|
continue;
|
||||||
priv->x_max = min_max_pnpid_table[i].x_max;
|
|
||||||
priv->y_min = min_max_pnpid_table[i].y_min;
|
if (min_max_pnpid_table[i].board_id.min != ANY_BOARD_ID &&
|
||||||
priv->y_max = min_max_pnpid_table[i].y_max;
|
priv->board_id < min_max_pnpid_table[i].board_id.min)
|
||||||
psmouse_info(psmouse,
|
continue;
|
||||||
"quirked min/max coordinates: x [%d..%d], y [%d..%d]\n",
|
|
||||||
priv->x_min, priv->x_max,
|
if (min_max_pnpid_table[i].board_id.max != ANY_BOARD_ID &&
|
||||||
priv->y_min, priv->y_max);
|
priv->board_id > min_max_pnpid_table[i].board_id.max)
|
||||||
break;
|
continue;
|
||||||
}
|
|
||||||
|
priv->x_min = min_max_pnpid_table[i].x_min;
|
||||||
|
priv->x_max = min_max_pnpid_table[i].x_max;
|
||||||
|
priv->y_min = min_max_pnpid_table[i].y_min;
|
||||||
|
priv->y_max = min_max_pnpid_table[i].y_max;
|
||||||
|
psmouse_info(psmouse,
|
||||||
|
"quirked min/max coordinates: x [%d..%d], y [%d..%d]\n",
|
||||||
|
priv->x_min, priv->x_max,
|
||||||
|
priv->y_min, priv->y_max);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user