linux-i2c.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Manish Varma <varmam@google.com>
To: Rob Herring <robh@kernel.org>
Cc: Wolfram Sang <wsa@kernel.org>,
	linux-i2c@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, kernel-team@android.com
Subject: Re: [PATCH v1 1/2] dt-bindings: i2c: add "dev-name" property to assign specific device name
Date: Mon, 19 Apr 2021 16:21:44 -0700	[thread overview]
Message-ID: <CAMyCerLy2bA_D=8j9C+pAUe7fDHh9DYJwXQWGgKGnD-dadnewg@mail.gmail.com> (raw)
In-Reply-To: <20210409183415.GA3919775@robh.at.kernel.org>

Hi Rob,

Thanks for the inputs.

On Fri, Apr 9, 2021 at 11:34 AM Rob Herring <robh@kernel.org> wrote:
>
> On Wed, Apr 07, 2021 at 11:50:38AM -0700, Manish Varma wrote:
> > I2C devices currently are named dynamically using
> > <adapter_id>-<device_address> convention, unless they are instantiated
> > through ACPI.
> >
> > This means the device name may vary for the same device across different
> > systems, infact even on the same system if the I2C bus enumeration order
> > changes, i.e. because of device tree modifications.
> >
> > By adding an optional "dev-name" property, it provides a mechanism to
> > set consistent and easy to recognize names for I2C devices.
>
> So? Why do you need 'easy to recognize names'?
>

From the cover letter:

"Currently I2C device names are assigned dynamically unless they are
instantiated through ACPI, this names are based on adapter_id and
device_address. While device_address will remain constant for a given
device, the adapter_id may vary across different systems and hence,
overall, the device name won't be unique for the same I2C device."

Basically, the motivation here is to provide a mechanism to allow overriding
those names to easy to recognize names (e.g. <vendor_name_dev_name>
or <device part number> which leaves more information compared to just
device name in the form of numbers such as "2-001f").

These (device) names are further used by different module e.g. system
wakeup events framework, and hence this presents difficulties debug/identify
issues at various levels in the software stack.

So, the idea was to address it at the lowest level possible.

> Why is I2C special? If we wanted this in DT, it wouldn't be I2C specific
> and we probably would have added it long ago.
>

"Unlike PCI or USB devices, I2C devices are not enumerated at the hardware
level. Instead, the software must know which devices are connected on each
I2C bus segment, and what address these devices are using. For this
reason, the kernel code must instantiate I2C devices explicitly."

Reference: https://www.kernel.org/doc/Documentation/i2c/instantiating-devices

There are various ways to instantiate I2C devices e.g. through board_info
interface, ACPI and device tree etc.

While board_info and ACPI both allow specifying device name, I find no such
provision to assign device names for the I2C devices instantiated through
device tree interface.

> > Signed-off-by: Manish Varma <varmam@google.com>
> > ---
> >  Documentation/devicetree/bindings/i2c/i2c.txt | 5 +++++
> >  1 file changed, 5 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/i2c/i2c.txt b/Documentation/devicetree/bindings/i2c/i2c.txt
> > index df41f72afc87..6fb03f464b81 100644
> > --- a/Documentation/devicetree/bindings/i2c/i2c.txt
> > +++ b/Documentation/devicetree/bindings/i2c/i2c.txt
> > @@ -130,6 +130,11 @@ wants to support one of the below features, it should adapt these bindings.
> >  - wakeup-source
> >       device can be used as a wakeup source.
> >
> > +- dev-name
> > +     Name of the device.
> > +     Overrides the default device name which is in the form of
> > +     <busnr>-<addr>.
>
> What's 'busnr'? No such thing in DT.
>

Right! dev-name introduced to hold the string value for overriding
device names assigned by the kernel. Currently, kernel assigns the device
name in the form of <busnr>-<addr>.

Reference:
https://www.kernel.org/doc/html/latest/driver-api/i2c.html?highlight=i2c_board_info#c.i2c_board_info

> > +
> >  Binding may contain optional "interrupts" property, describing interrupts
> >  used by the device. I2C core will assign "irq" interrupt (or the very first
> >  interrupt if not using interrupt names) as primary interrupt for the slave.
> > --
> > 2.31.1.295.g9ea45b61b8-goog
> >

Hope the explanation provided above answers your questions.

Thanks,
Manish

  reply	other threads:[~2021-04-19 23:22 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-07 18:50 [PATCH v1 0/2] Override device name using DT "dev-name" property Manish Varma
2021-04-07 18:50 ` [PATCH v1 1/2] dt-bindings: i2c: add "dev-name" property to assign specific device name Manish Varma
2021-04-09 18:34   ` Rob Herring
2021-04-19 23:21     ` Manish Varma [this message]
2021-04-07 18:50 ` [PATCH v1 2/2] i2c: use "dev-name" device tree property to override " Manish Varma

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='CAMyCerLy2bA_D=8j9C+pAUe7fDHh9DYJwXQWGgKGnD-dadnewg@mail.gmail.com' \
    --to=varmam@google.com \
    --cc=devicetree@vger.kernel.org \
    --cc=kernel-team@android.com \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=robh@kernel.org \
    --cc=wsa@kernel.org \
    /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;
as well as URLs for NNTP newsgroup(s).