Messages in this thread Patch in this message | | | From | Florian Fainelli <> | Subject | [PATCH v2 2/2] pinctrl: Allow indicating loss of pin states during low-power | Date | Thu, 2 Nov 2017 16:15:51 -0700 |
| |
Some platforms (e.g: Broadcom STB: BMIPS_GENERIC/ARCH_BRCMSTB) will lose their register contents when entering their lower power state. In such a case, the pinctrl-single driver that is used will not be able to restore the power states without telling the core about it and having pinctrl_select_state() check for that.
This patch adds a new optional boolean property that Device Tree can define in order to obtain exactly that and having the core pinctrl code take that into account.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> --- Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt | 4 ++++ drivers/pinctrl/core.c | 3 +++ 2 files changed, 7 insertions(+)
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt index ad9bbbba36e9..cc9bae3b7c33 100644 --- a/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt +++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt @@ -103,6 +103,10 @@ Optional properties: #pinctrl-cells: Number of pin control cells in addition to the index within the pin controller device instance +low-power-state-loss: boolean property which indicates that the pins lose their +state during low power modes and therefore need to be restored upon system +resumption. + Pin controller devices should contain the pin configuration nodes that client devices reference. diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c index c91359d48aa1..3fee457999b5 100644 --- a/drivers/pinctrl/core.c +++ b/drivers/pinctrl/core.c @@ -1978,6 +1978,9 @@ pinctrl_init_controller(struct pinctrl_desc *pctldesc, struct device *dev, pctldev->dev = dev; mutex_init(&pctldev->mutex); + if (of_property_read_bool(dev->of_node, "low-power-state-loss")) + pctldev->flags |= PINCTRL_FLG_FORCE_STATE; + /* check core ops for sanity */ ret = pinctrl_check_ops(pctldev); if (ret) { -- 2.9.3
| |