diff options
Diffstat (limited to 'drivers/input/mouse/elantech.c')
| -rw-r--r-- | drivers/input/mouse/elantech.c | 26 | 
1 files changed, 18 insertions, 8 deletions
diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c index 09b93b11a27..e2a9867c19d 100644 --- a/drivers/input/mouse/elantech.c +++ b/drivers/input/mouse/elantech.c @@ -1210,18 +1210,28 @@ static int elantech_reconnect(struct psmouse *psmouse)   */  static int elantech_set_properties(struct elantech_data *etd)  { +	/* This represents the version of IC body. */  	int ver = (etd->fw_version & 0x0f0000) >> 16; +	/* Early version of Elan touchpads doesn't obey the rule. */  	if (etd->fw_version < 0x020030 || etd->fw_version == 0x020600)  		etd->hw_version = 1; -	else if (etd->fw_version < 0x150600) -		etd->hw_version = 2; -	else if (ver == 5) -		etd->hw_version = 3; -	else if (ver == 6) -		etd->hw_version = 4; -	else -		return -1; +	else { +		switch (ver) { +		case 2: +		case 4: +			etd->hw_version = 2; +			break; +		case 5: +			etd->hw_version = 3; +			break; +		case 6: +			etd->hw_version = 4; +			break; +		default: +			return -1; +		} +	}  	/*  	 * Turn on packet checking by default.  |