[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <d1fab35d-a4e7-449d-9666-0c651e44929a@cherry.de>
Date: Tue, 27 May 2025 10:48:08 +0200
From: Quentin Schulz <quentin.schulz@...rry.de>
To: Krzysztof Kozlowski <krzk@...nel.org>,
Quentin Schulz <foss+kernel@...il.net>, Lee Jones <lee@...nel.org>,
Rob Herring <robh@...nel.org>, Krzysztof Kozlowski <krzk+dt@...nel.org>,
Conor Dooley <conor+dt@...nel.org>, Heiko Stuebner <heiko@...ech.de>,
Sebastian Reichel <sebastian.reichel@...labora.com>
Cc: Lukasz Czechowski <lukasz.czechowski@...umatec.com>,
Daniel Semkowicz <dse@...umatec.com>, devicetree@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org, linux-rockchip@...ts.infradead.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH 1/4] dt-bindings: mfd: rk806: allow to customize PMIC
reset method
Hi Krzysztof,
On 5/27/25 10:25 AM, Krzysztof Kozlowski wrote:
> On 26/05/2025 19:05, Quentin Schulz wrote:
>> From: Quentin Schulz <quentin.schulz@...rry.de>
>>
>> The RK806 PMIC (and RK809, RK817; but those aren't handled here) has a
>> bitfield for configuring the restart/reset behavior (which I assume
>> Rockchip calls "function") whenever the PMIC is reset (at least by
>> software; c.f. DEV_RST in the datasheet).
>>
>> For RK806, the following values are possible for RST_FUN:
>>
>> 0b00 means "restart PMU"
>> 0b01 means "Reset all the power off reset registers, forcing
>> the state to switch to ACTIVE mode"
>> 0b10 means "Reset all the power off reset registers, forcing
>> the state to switch to ACTIVE mode, and simultaneously
>> pull down the RESETB PIN for 5mS before releasing"
>> 0b11 means the same as for 0b10 just above.
>>
>> I don't believe this is suitable for a subsystem-generic property hence
>> let's make it a vendor property called rockchip,rst-fun.
>>
>> The first few sentences in the description of the property are
>> voluntarily generic so they could be copied to the DT binding for
>> RK809/RK817 whenever someone wants to implement that for those PMIC.
>>
>> Signed-off-by: Quentin Schulz <quentin.schulz@...rry.de>
>> ---
>> .../devicetree/bindings/mfd/rockchip,rk806.yaml | 24 ++++++++++++++++++++++
>> 1 file changed, 24 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/mfd/rockchip,rk806.yaml b/Documentation/devicetree/bindings/mfd/rockchip,rk806.yaml
>> index 3c2b06629b75ea94f90712470bf14ed7fc16d68d..0f931a6da93f7596eac89c5f0deb8ee3bd934c31 100644
>> --- a/Documentation/devicetree/bindings/mfd/rockchip,rk806.yaml
>> +++ b/Documentation/devicetree/bindings/mfd/rockchip,rk806.yaml
>> @@ -31,6 +31,30 @@ properties:
>>
>> system-power-controller: true
>>
>> + rockchip,rst-fun:
>> + $ref: /schemas/types.yaml#/definitions/uint32
>> + enum: [0, 1, 2, 3]
>> + description:
>> + RST_FUN value to set for the PMIC.
>> +
>> + This is the value in the RST_FUN bitfield according to the
>> + datasheet. I.e. if RST_FUN is bits 6 and 7 and the desired value
>> + of RST_FUN is 1, this property needs to be set to 1 (and not 64,
>> + 0x40, or BIT(6)).
>> +
>> + The meaning of this value is specific to the PMIC and is
>> + explained in the datasheet.
>
> And why would that be exactly board-level configuration? IOW, I expect
> all boards to be reset in the same - correct and optimal - way. Looks
> close to SW policy.
>
All RK3588 boards except ours in downstream kernel have their RST_FUN
set to 1, we need 0 and I cannot talk for what's the actual expected
behavior for other vendors' boards. I do not feel confident
indiscriminately changing the PMIC reset behavior for all boards using
RK806 (which also includes RK3576 boards). Hence why I made that a property.
Additionally, if all boards were "to be reset in the same - correct and
optimal - way", why would Rockchip even have a register for that in the
PMIC? It's not an IP they bought (as far as I could tell), so there's
likely a purpose to it. Especially if they also change the
silicon-default in their own downstream fork AND provide you with a way
to change their new default from Device Tree.
We can hardcode the change in the driver without using DT, but I wager
we're going to see a revert in a few releases because it broke some
devices. It may break in subtle ways as well, for example our boards
seem to be working just fine except that because the PMIC doesn't
entirely reset the power rails, our companion microcontroller doesn't
detect the reboot.
If it's deemed a SW policy by the DT binding people, is there a way to
customize this without having it hardcoded to the same value for all
users of RK806 and without relying on module params?
Cheers,
Quentin
Powered by blists - more mailing lists