From: Wolfram Sang <wsa@the-dreams.de>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Wolfram Sang <wsa+renesas@sang-engineering.com>,
linux-i2c@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
Luca Ceresoli <luca@lucaceresoli.net>,
Kieran Bingham <kieran@ksquared.org.uk>,
Jacopo Mondi <jacopo@jmondi.org>,
Vladimir Zapolskiy <vz@mleia.com>
Subject: Re: [RFC PATCH 3/5] i2c: core: add function to request an alias
Date: Thu, 2 Jan 2020 22:03:35 +0100 [thread overview]
Message-ID: <20200102210335.GA1030@kunai> (raw)
In-Reply-To: <20200101165515.GC6226@pendragon.ideasonboard.com>
[-- Attachment #1: Type: text/plain, Size: 2160 bytes --]
Hi Laurent,
> > + i2c_lock_bus(adap, I2C_LOCK_SEGMENT);
> > +
> > + for (addr = 0x08; addr < 0x78; addr++) {
> > + ret = i2c_scan_for_client(adap, addr, i2c_unlocked_read_byte_probe);
> > + if (ret == -ENODEV) {
> > + alias = i2c_new_dummy_device(adap, addr);
> > + dev_dbg(&adap->dev, "Found alias: 0x%x\n", addr);
> > + break;
> > + }
> > + }
>
> This looks quite inefficient, especially if the beginning of the range
> is populated with devices.
Well, we have to start somewhere? And actually, the range from 0x08
onwards is the least used I encountered so far. What would you suggest?
> Furthermore, I think there's a high risk of
> false negatives, as acquiring a free address and reprogramming the
> client to make use of it are separate operations. Another call to
> i2c_new_alias_device() could occur in-between.
This is why the whole function is protected using i2c_lock_bus. No other
device can scan simultaneously. And once we have the dummy device
registered, it is blocked like any other registered device. As we
register the dummy device with the lock being held, I don't see how the
above race can happen.
> There's also the issue
> that I2C hasn't been designed for scanning, so some devices may not
> appreciate this.
This is inevitable. What GMSL and FPD-Link do is very non-I2Cish. I
don't see a "perfect" solution. We could skip this transaction and rely
only on that all devices are pre-registered. Yet, I think the
requirement that all busses *must* be fully described is more dangerous.
I'd rather risk that some rare device doesn't like the transaction. I
think a byte_read is the best we can do. Much better than a quick
command, for sure.
> What happened to the idea of reporting busy address ranges in the
> firmware (DT, ACPI, ...) ?
Fully in place. All pre-registered devices won't be considered because
i2c_scan_for_client() uses i2c_check_addr_busy(). Did you think the new
helper only relies on the transfer sent out? This is not the case, the
transfer is only the final safety measure for so far unclaimed
addresses.
All the best for 2020,
Wolfram
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2020-01-02 21:03 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-31 16:13 [RFC PATCH 0/5] i2c: implement mechanism to retrieve an alias device Wolfram Sang
2019-12-31 16:13 ` [RFC PATCH 1/5] i2c: core: refactor scanning for a client Wolfram Sang
2020-01-01 16:45 ` Laurent Pinchart
2020-01-07 9:26 ` Kieran Bingham
2020-01-07 9:53 ` Geert Uytterhoeven
2020-01-07 9:58 ` Kieran Bingham
2020-01-07 10:25 ` Wolfram Sang
2020-01-07 10:36 ` Geert Uytterhoeven
2020-01-07 11:23 ` Wolfram Sang
2020-01-07 15:03 ` Luca Ceresoli
2020-01-07 16:45 ` Wolfram Sang
2020-01-07 16:52 ` Kieran Bingham
2019-12-31 16:13 ` [RFC PATCH 2/5] i2c: core: add new variant to check " Wolfram Sang
2020-01-01 16:49 ` Laurent Pinchart
2020-01-07 9:42 ` Kieran Bingham
2019-12-31 16:13 ` [RFC PATCH 3/5] i2c: core: add function to request an alias Wolfram Sang
2020-01-01 16:55 ` Laurent Pinchart
2020-01-02 18:58 ` Luca Ceresoli
2020-01-02 21:13 ` Wolfram Sang
2020-01-02 22:27 ` Luca Ceresoli
2020-01-03 0:10 ` Laurent Pinchart
2020-01-07 15:03 ` Luca Ceresoli
2020-01-07 17:13 ` Laurent Pinchart
2020-01-08 13:27 ` Wolfram Sang
2020-01-08 13:31 ` Laurent Pinchart
2020-01-08 13:38 ` Wolfram Sang
2020-01-08 13:22 ` Wolfram Sang
2020-01-08 13:19 ` Wolfram Sang
2020-01-08 13:29 ` Geert Uytterhoeven
2020-01-08 13:34 ` Laurent Pinchart
2020-01-02 21:03 ` Wolfram Sang [this message]
2020-01-21 9:05 ` Peter Rosin
2020-01-07 9:40 ` Kieran Bingham
2020-01-07 17:11 ` Laurent Pinchart
2020-01-07 17:14 ` Kieran Bingham
2020-01-08 13:35 ` Wolfram Sang
2020-01-08 13:36 ` Laurent Pinchart
2019-12-31 16:13 ` [RFC PATCH 4/5] i2c: core: add simple caching to the 'alias' scanning Wolfram Sang
2020-01-07 9:59 ` Kieran Bingham
2020-01-21 9:22 ` Peter Rosin
2019-12-31 16:14 ` [RFC PATCH 5/5] simple test case for the I2C alias functionality Wolfram Sang
2019-12-31 16:27 ` [RFC PATCH 0/5] i2c: implement mechanism to retrieve an alias device Wolfram Sang
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=20200102210335.GA1030@kunai \
--to=wsa@the-dreams.de \
--cc=jacopo@jmondi.org \
--cc=kieran@ksquared.org.uk \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=luca@lucaceresoli.net \
--cc=vz@mleia.com \
--cc=wsa+renesas@sang-engineering.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.