mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Yemike Abhilash Chandra <y-abhilashchandra@ti.com>
To: Conor Dooley <conor@kernel.org>, Linus Walleij <linusw@kernel.org>
Cc: <robh@kernel.org>, <krzk+dt@kernel.org>, <conor+dt@kernel.org>,
	<nm@ti.com>, <vigneshr@ti.com>, <kristo@kernel.org>,
	<brgl@kernel.org>, <linux-gpio@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<afd@ti.com>, <u-kumar1@ti.com>
Subject: Re: [PATCH 1/3] dt-bindings: pinctrl: Add TI TDA54 pin controller
Date: Tue, 27 Oct 2026 14:39:32 +0530	[thread overview]
Message-ID: <9d505e63-9d99-42fd-9638-05043ad36e90@ti.com> (raw)
In-Reply-To: <20261001-repost-reselect-2b597c627c11@spud>

Hi Conor,
Thanks for the review.

On 02/10/26 02:56, Conor Dooley wrote:
> On Thu, Oct 01, 2026 at 11:10:34PM +0200, Linus Walleij wrote:
>> Hi Yemike,
>>
>> thanks for your patch!
>>
>> On Wed, Sep 30, 2026 at 11:21 AM Yemike Abhilash Chandra
>> <y-abhilashchandra@ti.com> wrote:
>>
>>> +      ti,debounce-select:
>>> +        $ref: /schemas/types.yaml#/definitions/uint32
>>> +        enum: [0, 1, 2, 3, 4, 5, 6]
>>> +        description:
>>> +          Selects which DBOUNCE_CFGn period register in the control module
>>> +          drives the debounce filter for this pad. 0 disables debouncing,
>>> +          1 to 6 select DBOUNCE_CFG1 to DBOUNCE_CFG6.
>>
>> What's wrong with the existing input-debounce property?
>>
>>    input-debounce:
>>      $ref: /schemas/types.yaml#/definitions/uint32-array
>>      description: Takes the debounce time in usec as argument or 0 to disable
>>        debouncing
>>
>> Just translate usec:s into your custom format in the code, problem solved.
>>
>>> +      ti,virt-gpio-instance:
>>> +        $ref: /schemas/types.yaml#/definitions/uint32
>>> +        enum: [0, 1, 2, 3, 4, 5, 6, 7]
>>> +        description:
>>> +          Selects which virtual GPIO instance controls this pad, allowing
>>> +          protection between multiple virtual views of the GPIO control
>>> +          registers. Has no effect unless the pad is muxed to GPIO mode
>>> +          (muxmode 7).
>>
>> Wow crazy stuff. OK keep it :D
>>
>>> +      ti,wakeup:
>>> +        $ref: /schemas/types.yaml#/definitions/uint32
>>> +        enum: [0, 1, 2, 3]
>>> +        description: |
>>> +          Wakeup event configuration for this pad.
>>> +          0 - wakeup disabled
>>> +          1 - wakeup triggered by any change of the pin input value
>>> +          2 - wakeup triggered by a low value on the pin
>>> +          3 - wakeup triggered by a high value on the pin
>>
>> I just have the feeling this should be a generic property. It seems so useful.
>>
>> Can you just add this as wakeup-mode = <custom value> in
>> Documentation/devicetree/bindings/pinctrl/pincfg-node.yaml
> 
> And I think it should probably be strings, so that there's some hope of
> commonality, since obviously any user is going to invent different
> mappings.
>

Makes sense, I'll make generic wakeup-mode a string property in v2.

>>
>>> +      ti,retention-bias:
>>> +        $ref: /schemas/types.yaml#/definitions/uint32
>>> +        enum: [0, 1, 2]
>>> +        description: |
>>> +          Enables the internal I/O pullup/pulldown resistor when pin enters
>>> +          TDA54 I/O retention mode, and configures the I/O pull resistor
>>> +          direction.
>>> +          0 - OFF mode pad pull resistor disable
>>> +          1 - Select OFF mode pulldown resistor
>>> +          2 - Select OFF mode pullup resistor
>>
>> Use names inspired by the generic config types and flags instead
>> of enums.
>>
>> ti,retention-bias-disable;
>> ti,retention-bias-pull-down;
>> ti,retention-bias-pull-up;
>>
>>> +      ti,retention-offmode:
>>> +        $ref: /schemas/types.yaml#/definitions/uint32
>>> +        enum: [0, 1]
>>> +        description: |
>>> +          I/O behaviour when retention mode is active.
>>> +          0 - I/O maintains its previous state
>>> +          1 - I/O state is forced to the OFF mode value
>>
>> Behaviour of *what*?
>>
>> The driver stage?
>>
>> I suspect you should make two bool flags
>> ti,retention-output-hold;
>> ti,retention-output-disable;
>>
>>> +      ti,retention-output:
>>> +        $ref: /schemas/types.yaml#/definitions/uint32
>>> +        enum: [0, 1, 2]
>>> +        description: |
>>> +          Output driver behaviour while the pad is in retention mode.
>>> +          0 - output driver disabled
>>> +          1 - output driver enabled, pad driven low
>>> +          2 - output driver enabled, pad driven high
>>
>> Make three flags:
>> ti,retention-output-disable;
>> ti,retention-output-low;
>> ti,retention-output-high;
>>
>>> +      ti,retention-force:
>>> +        $ref: /schemas/types.yaml#/definitions/uint32
>>> +        enum: [0, 1]
>>> +        description: |
>>> +          I/O retention controls.
>>> +          0 - gated by the Device Manager logic
>>> +          1 - forced active, overriding the Device Manager gating logic
>>
>> This is clearly a bool flag. It should contain device-manager as that
>> magic entity is involved.
>>
>> ti,retention-device-manager-enable;
>> ti,retention-device-manager-forced-active;
>>
>> Both seems to be related to the device manager whatever that is.
>>
>>> +      ti,isolation-bypass:
>>> +        $ref: /schemas/types.yaml#/definitions/uint32
>>> +        enum: [0, 1]
>>> +        description: |
>>> +          I/O isolation for this pad.
>>> +          0 - isolation preserved
>>> +          1 - isolation bypassed
>>
>> What does this even mean electronically speaking? Explain in a description:
>> statement.
>>
>> ti,isolation-preserve;
>> ti.isolation-bypass-enable;
> 
> Is this not just an either or, so there should only be one property
> here.
> 

It is an either/or, but with a single bool, leaving it out wouldn't
clear a bypass set by an earlier boot stage. So I'd prefer the two
bool properties Linus suggested, does that work for you?

>>
>> perhaps?
>>
>> Some of the retention settings seem *very* generic, c.f. this
>> from include/dt-bindings/pinctrl/nomadik.h that has been
>> around forever:
>>
>> #define SLPM_DISABLED           0
>> #define SLPM_ENABLED            1
>> #define SLPM_INPUT_NOPULL       0
>> #define SLPM_INPUT_PULLUP       1
>> #define SLPM_INPUT_PULLDOWN     2
>> #define SLPM_DIR_INPUT          3
>> #define SLPM_OUTPUT_LOW         0
>> #define SLPM_OUTPUT_HIGH        1
>> #define SLPM_DIR_OUTPUT         2
>> #define SLPM_WAKEUP_DISABLE     0
>> #define SLPM_WAKEUP_ENABLE      1
>>
>> SLPM means "sleep mode", yeah pretty much retention...
>>
>> I think the corresponding retention settings for things that are really
>> quite generic should just be added to the generic pin config bindings.
> 
> Additionally, if any of the custom properties are gonna be kept as
> numerical values, they're all missing defaults. In the case where you're
> advocating for multiple boolean properties, one of them is gonna have to
> be required as otherwise we're looking at indeterminate states based on
> reset values or what a prior stage may or may not have done? The reset
> values should probably be considered default, but the cleanest way to
> make this work with separate booleans is have a
> oneOf:
>   - required:
>      - a
>   - required:
>      - b
>   - required:
>      - c
>
> and you've also got to deal with people potentially making mistakes and
> adding multiple properties for the same feature or trying to overwrite a
> $som.dtsi/$soc-common.dtsi config and not realising that they've got to
> do a /delete-property/ on the other property for the feature.

In v2, I will switch most of them to boolean properties, with every
state available as its own flag, so a DT can always set a known value
and override whatever an earlier stage left. For each group I'd follow
the same pattern as the generic bias-* properties: at most one flag from
a group, which also catches the dtsi override case in dtbs_check. If
none is given, the driver leaves those bits untouched, same as for
bias-*.

Would that work for you, or would you still prefer one of them to be
required?

For the numerical properties that remain, I'll add a default.

Thanks and Regards,
Yemike Abhilash Chandra

  reply	other threads:[~2026-10-27  9:10 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-30  9:20 [PATCH 0/3] Add pin controller support for TI TDA54 SoC Yemike Abhilash Chandra
2026-09-30  9:20 ` [PATCH 1/3] dt-bindings: pinctrl: Add TI TDA54 pin controller Yemike Abhilash Chandra
2026-10-01 21:10   ` Linus Walleij
2026-10-01 21:26     ` Conor Dooley
2026-10-27  9:09       ` Yemike Abhilash Chandra [this message]
2026-10-27 18:08         ` Conor Dooley
2026-10-27  8:49     ` Yemike Abhilash Chandra
2026-09-30  9:20 ` [PATCH 2/3] pinctrl: ti: Add TDA54 pin controller driver Yemike Abhilash Chandra
2026-10-01 20:52   ` Linus Walleij
2026-10-13  6:00     ` Yemike Abhilash Chandra
2026-10-11 23:11   ` Uwe Kleine-König
2026-10-13  6:09     ` Yemike Abhilash Chandra
2026-09-30  9:20 ` [PATCH 3/3] arm64: dts: ti: Add TDA54 pinctrl header Yemike Abhilash Chandra

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9d505e63-9d99-42fd-9638-05043ad36e90@ti.com \
    --to=y-abhilashchandra@ti.com \
    --cc=afd@ti.com \
    --cc=brgl@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=conor@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=kristo@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=linusw@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nm@ti.com \
    --cc=robh@kernel.org \
    --cc=u-kumar1@ti.com \
    --cc=vigneshr@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®