linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Boris Brezillon <boris.brezillon@free-electrons.com>
To: Rob Herring <robh@kernel.org>
Cc: Wolfram Sang <wsa@the-dreams.de>,
	linux-i2c@vger.kernel.org, Jonathan Corbet <corbet@lwn.net>,
	linux-doc@vger.kernel.org,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Przemyslaw Sroka <psroka@cadence.com>,
	Arkadiusz Golec <agolec@cadence.com>,
	Alan Douglas <adouglas@cadence.com>,
	Bartosz Folta <bfolta@cadence.com>, Damian Kos <dkos@cadence.com>,
	Alicja Jurasik-Urbaniak <alicja@cadence.com>,
	Cyprian Wronka <cwronka@cadence.com>,
	Suresh Punnoose <sureshp@cadence.com>,
	Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
	Nishanth Menon <nm@ti.com>, Pawel Moll <pawel.moll@arm.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Ian Campbell <ijc+devicetree@hellion.org.uk>,
	Kumar Gala <galak@codeaurora.org>,
	"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" 
	<devicetree@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Vitor Soares <Vitor.Soares@synopsys.com>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Linus Walleij <linus.walleij@linaro.org>
Subject: Re: [PATCH v2 5/7] dt-bindings: i3c: Document core bindings
Date: Sun, 7 Jan 2018 15:14:25 +0100	[thread overview]
Message-ID: <20180107151425.124c2c75@bbrezillon> (raw)
In-Reply-To: <CAL_JsqLBTtaM=7qdbbyODs61hbGdLughuVtPC-BsfrU8KV79aA@mail.gmail.com>

Hi Rob,

On Tue, 26 Dec 2017 12:29:34 -0600
Rob Herring <robh@kernel.org> wrote:

> >> > > > +Optional properties
> >> > > > +-------------------
> >> > > > +- reg: static address. Only valid is the device has a static address.
> >> > > > +- i3c-dynamic-address: dynamic address to be assigned to this device. This
> >> > > > +                      property depends on the reg property.  
> >> > >
> >> > > Perhaps "assigned-address" property would be appropriate. I'm not all
> >> > > that familiar with it though.  
> >> >
> >> > Again, the spec use the term "dynamic address" everywhere, and I'd like
> >> > to stay as close as possible to the spec.  
> >>
> >> I looked at assigned-addresses a bit more and that won't really fit
> >> because it should be the same format as reg. So I think reg should
> >> always be the PID as that is fixed and always present. Then the DAA
> >> address is separate and can be the i3c-dynamic-address property.
> >>
> >> However, there's still part I don't understand...
> >>  
> >> > > > +               /* I3C device with a static address. */
> >> > > > +               thermal_sensor: sensor@68 {
> >> > > > +                       reg = <0x68>;
> >> > > > +                       i3c-dynamic-address = <0xa>;  
> >>
> >> I'm confused as to how/why you have both reg and dynamic address?  
> >
> > Some I3C devices have an I2C address (also called static or legacy
> > address in a few places). The static/I2C/legacy address is used until
> > the I3C device is assigned a dynamic address by the master. The whole
> > point of specifying both an I2C address (through the reg property) and
> > a dynamic address (through the i3c-dynamic-address) is to tell the
> > controller that a specific dynamic address should be assigned to this
> > device using the SETSADA (Set Dynamic Address from Static Address)
> > command before a DAA (Dynamic Address Assignment) procedure is started.
> > This way, the device will not participate to the DAA (because it
> > already has a valid DA) and the dynamic address can't be assigned to
> > a different device (which is one of the problem with the automatic DAA
> > procedure).  
> 
> Okay, think I got it now.
> 
> I think we should extend "reg" to have either I2C address, I3C PID, or
> both (in a defined order). I'm assuming you can always distinguish a
> static I2C address and an I3C PID just by upper bits all being 0s for
> I2C addresses. Maybe both is not needed? This means we'd have to allow
> 64-bit I2C addresses (#address-cells=2), but that should be easily
> fixed if that causes problems in the kernel.
> 
> So i3c-pid would go away and i3c-dynamic-address stays.

Hm, actually I'm not sure this is a good idea. Sounds like we're
abusing the purpose of reg here. For busses, reg is supposed to encode
the id of the device on the bus that is used to communicate with this
device (CS line for SPI, I2C address for I2C devs, ...). With I3C, the
PID is just a way to uniquely identify a device, but is not used during
communications (we either use the static/I2C address or the dynamic
address assigned by the master).

If your concern is just about I3C dev naming convention, maybe we
could have something like:

	i3c-master@xxxx {
		...
		i2cdev@xx {
			reg = <xx>;
			i3c-lvr = <yy>;
			...
		};
		...

		i3cdev-<i3c-pid>[@zz] {
			i3c-pid = <pppppp>;
			/*
			 * reg only defined if the device has a static
			 * address.
			 */
			[reg = <zz>;]
			/*
			 * i3c-dynamic-address only defined if a
			 * specific dynamic address is requested.
			 */
			[i3c-dynamic-address = <dd>;]
		};
	}; 

With this approach we have a way to quickly identify i3c devices by
their pid when looking at their names (with the -<i3c-pid> suffix), and
we keep reg for static/i2c addresses only.

Regards,

Boris

  reply	other threads:[~2018-01-07 14:14 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-14 15:16 [PATCH v2 0/7] Add the I3C subsystem Boris Brezillon
2017-12-14 15:16 ` [PATCH v2 1/7] i2c: Export of_i2c_get_board_info() Boris Brezillon
2017-12-14 15:16 ` [PATCH v2 2/7] i3c: Add core I3C infrastructure Boris Brezillon
2017-12-17 22:32   ` Randy Dunlap
2017-12-18  8:37     ` Boris Brezillon
2017-12-18 18:22       ` Randy Dunlap
2017-12-19  8:52   ` Greg Kroah-Hartman
2017-12-19  9:09     ` Boris Brezillon
2017-12-19  9:13       ` Boris Brezillon
2017-12-19  9:21         ` Greg Kroah-Hartman
2017-12-19  9:28           ` Boris Brezillon
2017-12-19  9:36             ` Greg Kroah-Hartman
2018-02-21 14:22               ` Boris Brezillon
2018-02-21 14:38                 ` Greg Kroah-Hartman
2018-02-23 16:28   ` Vitor Soares
2018-02-23 16:56   ` Vitor Soares
2018-02-23 20:30     ` Boris Brezillon
2018-02-26 18:58       ` Vitor Soares
2018-02-26 20:36         ` Boris Brezillon
2018-02-26 20:40           ` Boris Brezillon
2018-02-26 21:38             ` Boris Brezillon
2018-02-27 16:03           ` Vitor Soares
2018-02-27 16:43             ` Przemyslaw Sroka
2018-02-27 17:06               ` Przemyslaw Sroka
2018-02-27 20:25                 ` Boris Brezillon
2018-02-27 20:13               ` Boris Brezillon
2018-02-27 20:24                 ` Przemyslaw Sroka
2018-02-27 21:14                   ` Boris Brezillon
2018-02-27 19:57             ` Boris Brezillon
2018-02-23 22:45     ` Boris Brezillon
2017-12-14 15:16 ` [PATCH v2 3/7] docs: driver-api: Add I3C documentation Boris Brezillon
2017-12-14 15:16 ` [PATCH v2 4/7] i3c: Add sysfs ABI spec Boris Brezillon
2017-12-14 15:16 ` [PATCH v2 5/7] dt-bindings: i3c: Document core bindings Boris Brezillon
2017-12-14 16:24   ` Geert Uytterhoeven
2017-12-14 21:47   ` Peter Rosin
2017-12-16 17:20   ` Rob Herring
2017-12-16 18:35     ` Boris Brezillon
2017-12-20 18:06       ` Rob Herring
2017-12-21 10:41         ` Boris Brezillon
2017-12-26 18:29           ` Rob Herring
2018-01-07 14:14             ` Boris Brezillon [this message]
2018-01-22  8:47               ` Boris Brezillon
2017-12-14 15:16 ` [PATCH v2 6/7] i3c: master: Add driver for Cadence IP Boris Brezillon
2017-12-14 19:54   ` Randy Dunlap
2017-12-14 20:17     ` Boris Brezillon
2017-12-14 20:25       ` Randy Dunlap
2017-12-14 20:44         ` Boris Brezillon
2017-12-14 22:10           ` Randy Dunlap
2017-12-14 15:16 ` [PATCH v2 7/7] dt-bindings: i3c: Document Cadence I3C master bindings Boris Brezillon
2018-02-22 15:00 ` [PATCH v2 0/7] Add the I3C subsystem Vitor Soares

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=20180107151425.124c2c75@bbrezillon \
    --to=boris.brezillon@free-electrons.com \
    --cc=Vitor.Soares@synopsys.com \
    --cc=adouglas@cadence.com \
    --cc=agolec@cadence.com \
    --cc=alicja@cadence.com \
    --cc=arnd@arndb.de \
    --cc=bfolta@cadence.com \
    --cc=corbet@lwn.net \
    --cc=cwronka@cadence.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dkos@cadence.com \
    --cc=galak@codeaurora.org \
    --cc=geert@linux-m68k.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=linus.walleij@linaro.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=nm@ti.com \
    --cc=pawel.moll@arm.com \
    --cc=psroka@cadence.com \
    --cc=robh@kernel.org \
    --cc=sureshp@cadence.com \
    --cc=thomas.petazzoni@free-electrons.com \
    --cc=wsa@the-dreams.de \
    /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).