Re: [PATCH v6 1/2] dt-bindings: pwm: dwc: add optional reset

From: Krzysztof Kozlowski

Date: Thu May 14 2026 - 10:38:26 EST


On 11/05/2026 09:10, Xuyang Dong wrote:
>>
>> On 29/04/2026 11:30, Xuyang Dong wrote:
>>>>>>>
>>>>>>> +allOf:
>>>>>>> + - $ref: pwm.yaml#
>>>>>>> +
>>>>>>> + - if:
>>>>>>> + properties:
>>>>>>> + compatible:
>>>>>>> + contains:
>>>>>>> + const: eswin,eic7700-pwm
>>>>>>
>>>>>> Same problem as v3 which I commented. I do not understand why your new
>>>>>> device has also 1 reset.
>>>>>>
>>>>>> Your commit msg MUST explain why 1 reset is valid.
>>>>>>
>>>>>
>>>>> Hi Krzysztof,
>>>>>
>>>>> Although the PWM IP supports two clock domains, each requiring a reset, 
>>>>> the EIC7700 implementation uses the same clock domain for both clock 
>>>>> signals. Therefore, the eic7700-pwm only supports one reset.
>>>>>
>>>>
>>>> If we speak about eic7700, explain why it has two resets now, according
>>>> to schema, even though you say it has not.
>>>>
>>>> But I was speaking about dw-apb-timers-pwm, which has one reset as well!
>>>> Why you are not having proper constraints? Please read writing bindings
>>>> document.
>>>>
>>>
>>> Hi Krzysztof,
>>>
>>> Let me clarify the reset signals.
>>>   - snps,dw-apb-timers-pwm2: IP spec has 2 optional reset signals (one per
>>> clock domain), SoC vendor decides whether to wire them — so maxItems: 2, 
>>> optional in required.
>>
>> Two reset signals but what is exactly optional? Each of them? Only the
>> first? Binding does not allow the first to be optional.
>>
>
> Hi Krzysztof,
>
> Thank you for the review.
>
> For the generic snps,dw-apb-timers-pwm2 binding, both reset signals 
> are now fully optional by not including resets in the required list.
>
> When a single optional reset signal is used, the interface bus reset 
> (index 0) is used by default.
>
> Keep the YAML as follows:
> +  resets:
> +    minItems: 1
> +    items:
> +      - description: Interface bus reset
> +      - description: PWM timer logic reset
>
> Add the following description to the commit message:

We speak about hardware, not binding. I asked, why your new device has
only one reset.

>
> Whether each signal is wired on a given SoC is a board integration 
> decision, so the resets property is optional for snps,dw-apb-timers-pwm2. 
> When present, up to two handles may be supplied: the bus reset is always 
> at index 0 and the timer reset at index 1.
>
>>>   - eswin,eic7700-pwm: SoC physically ties both signals to one reset — so
>>> exactly 1, required.
>>
>> Then two would not be right and you need to restrict that.
>>
>
> For the specific eswin,eic7700-pwm binding, the reset signal is required 
> and fixed to one via conditional schema (if:then:), with maxItems: 1 
> and resets added to required. And add an example for eswin,eic7700-pwm.
> The changes are as follows:
>
> +allOf:
> +  - $ref: pwm.yaml#
> +
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            const: eswin,eic7700-pwm
> +    then:
> +      properties:
> +        resets:
> +          maxItems: 1
> +      required:
> +        - resets
> +
>
> +  - |
> +    pwm@50818000 {
> +      compatible = "eswin,eic7700-pwm";
> +      reg = <0x50818000 0x4000>;
> +      #pwm-cells = <3>;
> +      clocks = <&bus>, <&timer>;
> +      clock-names = "bus", "timer";
> +      resets = <&reset>;
> +    };
>
> Then change the binding's subject from "dt-bindings: pwm: dwc: add optional 
> reset" to "dt-bindings: pwm: dwc: add eswin,eic7700-pwm compatible and resets".
>
> Do these changes look acceptable to you?

So two resets or one reset? I am completely confused what you are
replying to.

Please read writing bindings document.

Best regards,
Krzysztof