Re: [BISECTED] tpm CLKRUN breaks PS/2 keyboard and touchpad on Braswell system

From: Javier Martinez Canillas
Date: Tue Dec 19 2017 - 08:12:47 EST

On 12/19/2017 02:10 PM, Jarkko Sakkinen wrote:
> On Tue, Dec 19, 2017 at 12:34:46AM +0100, Javier Martinez Canillas wrote:
>> Hello Jason,
>> On 12/18/2017 09:19 PM, Jason Gunthorpe wrote:
>>> On Mon, Dec 18, 2017 at 07:34:29PM +0000, Shaikh, Azhar wrote:
>>>>> IIUC, if CLKRUN_EN is enabled, then all the devices attached to the
>>>>> LPC bus have to support the CLKRUN protocol. My guess is that on
>>>>> some Braswell systems LPC power management is enabled but the TPM
>>>>> device doesn't have CLKRUN support.
>>>> I think this is what might be happening here.
>>> That makes it a BIOS bug, not a chipset bug, and we shouldn't be
>>> trying to fix it like this in Linux.
>> Indeed, the system integrator should make sure that all peripherals that
>> are connected through the LPC bus either support the CLKRUN protocol and
>> CLKRUN_EN is enabled or CLKRUN_EN should be disabled.
>>> Based on the original discussion I always thought this was an Intel
>>> chipset bug and applies to all cases.
>> After thinking about this and with a better understanding of the issue,
>> I think we have 2 options (please let me know if I got something wrong):
>> 1) Leave the code as is and apply the patch I shared with James. In that
>> case the CLKRUN protocol will be disabled only during TPM transactions
>> and not enabled again after transactions if it wasn't enabled.
>> This shouldn't affect other peripherals since even if they have CLKRUN
>> support, they should work correctly while CLKRUN protocol is disabled.
>> The disadvantage is that TPM devices that have CLKRUN support (do they
>> exist?) will not take the advantage of the power management feature of
>> stopping the LPC host LCLK clock during low-power states.
> CLKRUN is enabled after TPM has processed the command so how this could
> make power mgmt worse?

I meant if there are Braswell systems with a TPM that _does_ support CLKRUN
protocol. Since the current code disables ClKRUN_EN for all Braswell boards.

> /Jarkko

Best regards,
Javier Martinez Canillas
Software Engineer - Desktop Hardware Enablement
Red Hat