All of lore.kernel.org
 help / color / mirror / Atom feed
From: Adrian Fiergolski <Adrian.Fiergolski@cern.ch>
To: Peter Rosin <peda@axentia.se>, linux-i2c@vger.kernel.org
Subject: Re: [PATCH v3] i2c: Add support for NXP PCA984x family.
Date: Wed, 13 Dec 2017 11:02:36 +0100	[thread overview]
Message-ID: <a7d41a83-9d4a-8463-16e5-d6e22cdc205b@cern.ch> (raw)
In-Reply-To: <f02a4d93-fe18-c913-bdaf-e2c9f4ab22eb@axentia.se>

On 13.12.2017 at 10:39, Peter Rosin wrote:
> On 2017-12-13 09:47, Adrian Fiergolski wrote:
>> On 12.12.2017 at 20:03, Peter Rosin wrote:
>>> [Adding Wolfram]
>>>
>>> On 2017-12-12 18:14, Adrian Fiergolski wrote:
>>>> On 12.12.2017 at 16:25, Peter Rosin wrote:
>>>>> On 2017-12-12 13:06, Adrian Fiergolski wrote:
>>>>>> In a normal run scenario, I don't need it. I can imagine it may be a
>>>>>> problem, if the module
>>>>>> is suddenly unloaded and loaded: the mux remains set to some not default
>>>>>> bus and
>>>>>> the module is not aware of it. However, I agree then the bus could be
>>>>>> reset somewhere
>>>>>> at higher level.
>>>>> Think about what happens if you have more than one chip on some i2c bus
>>>>> that uses this reset mechanism. First you instantiate one of the drivers
>>>>> and both chips are reset. Then you carry on with careful configuration
>>>>> of that first chip. Then you instantiate the driver for the other chip
>>>>> and all you careful configuration of the first chip is lost as it is
>>>>> reset a second time. So, you just can't reset everything on the bus in
>>>>> any random driver, that has to be done on some other level.
>>>> That's all true. However, we are discussing an I2C mux/switch which is a
>>>> root
>>>> of an I2C sub-tree. It is initialized first, so the SOFTWARE_RESET command
>>>> would reset only mux/switch and all its nodes. The command would be followed
>>>> by the configuration of all its nodes, which anyway can't be performed
>>>> earlier.
>>> Have a look at Documentation/i2c/i2c-topology and think again.
>> And... ?
> If you have a topology like this (use a fixed-width font):
>
>           .-- deviceA
>           |
> i2c-root--+          deviceB
>           |         /
>           '--pca984x
>                     \
>                      deviceC
>
> and linux for some reason starts with instantiating the driver for deviceA,
> and after that instantiates the pca984x driver, then you obviously have a
> problem if deviceA reacts to a general call to reset done by the probe in
> the pca984x driver.
>
> Or if you have this:
>
>                             deviceA
>                            /
>                     pca984x
>                    /       \
> i2c-root----pca984x         deviceB
>                    \
>                     deviceC
>
> then the driver for the first level pca984x device is instantiated first,
> but the general call to reset when the second level pca984x device is
> instantiated will trash the already configured first level pca984x
> device.
>
You are right. I checked addressing in this RESET call again. For some
reasons,
I was sure that this GENERAL_CALL is performed on the I2C buses mastered by
the pca984x device. Of course, this call is performed on its slave
interface. It
couldn't be different.

Thanks,
Adrian

  reply	other threads:[~2017-12-13 10:02 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-11 11:10 [PATCH] i2c: Add support for NXP PCA984x family Adrian Fiergolski
2017-12-11 11:25 ` Rodolfo Giometti
2017-12-11 12:51   ` Peter Rosin
2017-12-11 13:15     ` Adrian Fiergolski
2017-12-11 13:26       ` Peter Rosin
2017-12-11 13:29       ` Rodolfo Giometti
2017-12-11 14:27         ` [PATCH v2] " Adrian Fiergolski
2017-12-11 14:59           ` Peter Rosin
2017-12-11 15:07           ` Rodolfo Giometti
2017-12-11 16:58             ` [PATCH v3] " Adrian Fiergolski
2017-12-11 19:14               ` Peter Rosin
2017-12-12 12:06                 ` Adrian Fiergolski
2017-12-12 15:25                   ` Peter Rosin
2017-12-12 17:14                     ` Adrian Fiergolski
2017-12-12 19:03                       ` Peter Rosin
2017-12-12 22:05                         ` Wolfram Sang
2017-12-13 17:17                           ` Adrian Fiergolski
2017-12-14  0:30                             ` Wolfram Sang
2017-12-13  8:47                         ` Adrian Fiergolski
2017-12-13  9:39                           ` Peter Rosin
2017-12-13 10:02                             ` Adrian Fiergolski [this message]
2017-12-13 16:12                         ` [PATCH v4] " Adrian Fiergolski
2017-12-13 16:56                           ` Wolfram Sang
2017-12-15  9:46                             ` Rodolfo Giometti
2017-12-13 18:26                           ` Peter Rosin
2017-12-14  9:54                             ` Peter Rosin
     [not found]                               ` <990e4a1f-a9ac-c899-0075-ae3211ff9475-koto5C5qi+TLoDKTGw+V6w@public.gmane.org>
2017-12-14 11:20                                 ` [PATCH v5] " Adrian Fiergolski
     [not found]                                   ` <20171214112003.13701-1-adrian.fiergolski-vJEk5272eHo@public.gmane.org>
2017-12-14 21:22                                     ` Peter Rosin
2017-12-18 17:45                                       ` [PATCH v6] " Adrian Fiergolski
2017-12-20 18:27                                         ` Rob Herring
2017-12-25 21:26                                           ` [PATCH v7] " Adrian Fiergolski
     [not found]                                             ` <20171225212646.8062-1-adrian.fiergolski-vJEk5272eHo@public.gmane.org>
2017-12-26 17:58                                               ` Rob Herring
2017-12-28 23:31                                               ` Peter Rosin
2017-12-15 10:40                                     ` [PATCH v5] " Peter Rosin
2017-12-12 19:03                 ` [PATCH v3] " Peter Rosin

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=a7d41a83-9d4a-8463-16e5-d6e22cdc205b@cern.ch \
    --to=adrian.fiergolski@cern.ch \
    --cc=linux-i2c@vger.kernel.org \
    --cc=peda@axentia.se \
    /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.