Re: [PATCH] thinkpad_acpi: support HKEY interface version 0x200

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Apr 19, 2016 at 02:48:25PM +0200, Bastien Nocera wrote:
> On Tue, 2016-04-19 at 14:42 +0200, Bjørn Mork wrote:
> > Bastien Nocera <hadess@xxxxxxxxxx> writes:
> > 
> > > 
> > > From: Shuduo Sang <shuduo.sang@xxxxxxxxxxxxx>
> > > 
> > > The Thinkpad X1 Carbon 2nd generation (2014) ships with BIOS that
> > > will
> > > return HKEY interface version 0x200. It needs thinkpad-acpi support
> > > otherwise it will be routed to wrong branch and the hotkey mask
> > > will
> > > be wrong.
> > > 
> > > https://bugzilla.kernel.org/show_bug.cgi?id=114731
> > > 
> > > Signed-off-by: Bruce Ma <bruce.ma@xxxxxxxxxxxxx>
> > > Signed-off-by: Shuduo Sang <shuduo.sang@xxxxxxxxxxxxx>
> > > ---
> > >  drivers/platform/x86/thinkpad_acpi.c | 35
> > > ++++++++++++++++++++++++++++++-----
> > >  1 file changed, 30 insertions(+), 5 deletions(-)
> > > 
> > > diff --git a/drivers/platform/x86/thinkpad_acpi.c
> > > b/drivers/platform/x86/thinkpad_acpi.c
> > > index dad2984..c177936 100644
> > > --- a/drivers/platform/x86/thinkpad_acpi.c
> > > +++ b/drivers/platform/x86/thinkpad_acpi.c
> > > @@ -3357,11 +3357,8 @@ static int __init hotkey_init(struct
> > > ibm_init_struct *iibm)
> > >  	   A30, R30, R31, T20-22, X20-21, X22-24.  Detected by
> > > checking
> > >  	   for HKEY interface version 0x100 */
> > >  	if (acpi_evalf(hkey_handle, &hkeyv, "MHKV", "qd")) {
> > > -		if ((hkeyv >> 8) != 1) {
> > > -			pr_err("unknown version of the HKEY
> > > interface: 0x%x\n",
> > > -			       hkeyv);
> > > -			pr_err("please report this to %s\n",
> > > TPACPI_MAIL);
> > > -		} else {
> > > +		switch (hkeyv >> 8) {
> > > +		case 1:
> > >  			/*
> > >  			 * MHKV 0x100 in A31, R40, R40e,
> > >  			 * T4x, X31, and later
> > > @@ -3381,6 +3378,34 @@ static int __init hotkey_init(struct
> > > ibm_init_struct *iibm)
> > >  			} else {
> > >  				tp_features.hotkey_mask = 1;
> > >  			}
> > > +			break;
> > > +
> > > +		case 2:
> > > +			/*
> > > +			 * MHKV 0x200 in X1
> > > +			 */
> > > +			vdbg_printk(TPACPI_DBG_INIT |
> > > TPACPI_DBG_HKEY,
> > > +				"firmware HKEY interface version:
> > > 0x%x\n",
> > > +				hkeyv);
> > > +
> > > +			/* Paranoia check AND init hotkey_all_mask
> > > */
> > > +			if (!acpi_evalf(hkey_handle,
> > > &hotkey_all_mask,
> > > +					"MHKA", "dd", 1)) {
> > > +				pr_err("missing MHKA handler, "
> > > +					"please report this to
> > > %s\n",
> > > +					TPACPI_MAIL);
> > > +				/* Fallback: pre-init for
> > > FN+F3,F4,F12 */
> > > +				hotkey_all_mask = 0x080cU;
> > > +			} else {
> > > +				tp_features.hotkey_mask = 1;
> > > +			}
> > > +			break;
> > 
> > Why do you duplicate this code block with that single byte changed?
> > If
> > that was intended, then it certainly should be explained.

It is not entirely duplicated. The calls to acpi_evalf are different.
Would it be a good idea to move the call to vdbg_printk in both the
switch cases to before the switch case to reduce the code duplication?

Maybe also update the comment in case 2 to suggest that it's the MHKV for
multiple newer models?

> I didn't, I re-sent one of Shuduo's patches.
> 
> In any case, it seems that the patch breaks a few devices that appeared
> after the Lenovo Carbon X1 2014. This is discussed, in a few separate
> threads, on the ibm-acpi list:
> http://news.gmane.org/gmane.linux.acpi.ibm-acpi.devel

This patch breaks devices? I failed to find any mention of that.
Do you mean that it fixes some broken devices ..?
--
To unsubscribe from this list: send the line "unsubscribe platform-driver-x86" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux