On 06/27/2014 06:17 AM, Tomasz Figa wrote: > Hi Doug, > > On 26.06.2014 17:25, Doug Anderson wrote: >> Tomasz, >> >> On Thu, Jun 26, 2014 at 2:52 AM, Tomasz Figa <t.figa@xxxxxxxxxxx> wrote: >>> Hi Vikas, Doug, >>> >>> On 26.06.2014 11:15, Vikas Sajjan wrote: >>>> From: Doug Anderson <dianders@xxxxxxxxxxxx> >>>> >>>> The mask-tpm-reset GPIO is used by the kernel to prevent the TPM from >>>> being reset across sleep/wake. If we don't set it to anything then >>>> the TPM will be reset. U-Boot will detect this as invalid >>>> and will reset the system on resume time. This GPIO can always be low >>>> and not hurt anything. It will get pulled back high again during a >>>> normal warm reset when it will default back to an input. >>>> >>>> To properly preserve the TPM state across suspend/resume and to make >>>> the chrome U-Boot happy, properly set the GPIO to mask the >>>> reset to the TPM. >>>> >>>> Signed-off-by: Doug Anderson <dianders@xxxxxxxxxxxx> >>>> Signed-off-by: Vikas Sajjan <vikas.sajjan@xxxxxxxxxxx> >>>> --- >>>> arch/arm/boot/dts/exynos5420-peach-pit.dts | 20 ++++++++++++++++++++ >>>> 1 file changed, 20 insertions(+) >>>> >>>> diff --git a/arch/arm/boot/dts/exynos5420-peach-pit.dts b/arch/arm/boot/dts/exynos5420-peach-pit.dts >>>> index 7649982..8fd990a 100644 >>>> --- a/arch/arm/boot/dts/exynos5420-peach-pit.dts >>>> +++ b/arch/arm/boot/dts/exynos5420-peach-pit.dts >>>> @@ -87,6 +87,18 @@ >>>> pinctrl-0 = <&usb301_vbus_en>; >>>> enable-active-high; >>>> }; >>>> + >>>> + /* We need GPX0_6 to be low at sleep time; just keep it low always */ >>>> + mask_tpm_reset_regulator: mask-tpm-reset-regulator { >>>> + compatible = "regulator-fixed"; >>>> + regulator-name = "mask-tpm-reset "; >>>> + gpio = <&gpx0 6 0>; >>>> + enable-active-low; >>>> + regulator-boot-on; >>>> + regulator-always-on; >>>> + pinctrl-names = "default"; >>>> + pinctrl-0 = <&mask_tpm_reset>; >>>> + }; >>> >>> I don't think this pin is supposed to be a real regulator. If I'm right, >>> you should just add a hog for it, if you don't have a proper driver to >>> handle it. >> >> Yes, I agree that it shouldn't really be a regulator, but there's not >> a whole lot of choice. The pin needs to actually be driven low, not >> just pulled low. Without your proposed patch (pinctrl: samsung: Allow >> pin value to be initialized using pinfunc) I don't think it's possible >> to actually drive a pin low with a hog. I could be wrong, though. Surely there's a driver (or could be a driver) for the TPM chip, and that driver should have a reset-mask-gpios property, so the driver can call gpio_get() and gpio_set_output() on the GPIO? Faking this out via a not-really-a-regulator or pinctrl hogs seems like an abuse of those features to me. -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html