Message ID | 20200527113039.5380-1-wsa+renesas@sang-engineering.com |
---|---|
State | Not Applicable, archived |
Headers | show |
Series | i2c: add 'single-master' property to generic bindings | expand |
Context | Check | Description |
---|---|---|
robh/checkpatch | success |
On Wed, May 27, 2020 at 01:30:39PM +0200, Wolfram Sang wrote: > It is useful to know if we are the only master on a given bus. Because > this is a HW description of the bus, add it to the generic bindings. > > Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> > Cc: Laine Jaakko EXT <ext-jaakko.laine@vaisala.com> > --- > > We added 'multi-master' back then because most busses are single-master > and 'multi-master' was the exception. In hindsight, however, this was a > bad choice because 'multi-master' should be the default, i.e. if you > know nothing, you should assume there could be another master. > > So, we can't deduce that a missing 'multi-master' property automatically > means 'single-master'. That's why we need this new property. > > I am a bit tempted to mark 'multi-master' as deprecated because the > default should be multi-master. However, it might also be a bit more > descriptive to let "no property" still mean "we don't know". I'd be > thankful for more opinions here. Could you just have different timeouts for clearing stalled bus. You know quickly if 'single-master' is set, but have to wait longer if not? Note that we need to add a bunch of these properties to dt-schema i2c-controller.yaml. I hadn't done that because I want to dual license in the process, but lots of folks have touched i2c.txt IIRC. Reviewed-by: Rob Herring <robh@kernel.org> > Thanks and happy hacking, > > Wolfram > > Documentation/devicetree/bindings/i2c/i2c.txt | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/Documentation/devicetree/bindings/i2c/i2c.txt b/Documentation/devicetree/bindings/i2c/i2c.txt > index 819436b48fae..438ae123107e 100644 > --- a/Documentation/devicetree/bindings/i2c/i2c.txt > +++ b/Documentation/devicetree/bindings/i2c/i2c.txt > @@ -70,7 +70,12 @@ wants to support one of the below features, it should adapt these bindings. > - multi-master > states that there is another master active on this bus. The OS can use > this information to adapt power management to keep the arbitration awake > - all the time, for example. > + all the time, for example. Can not be combined with 'single-master'. > + > +- single-master > + states that there is no other master active on this bus. The OS can use > + this information to detect a stalled bus more reliably, for example. > + Can not be combined with 'multi-master'. > > Required properties (per child device) > -------------------------------------- > -- > 2.20.1 >
Hi Rob, thanks for the review! > Could you just have different timeouts for clearing stalled bus. You > know quickly if 'single-master' is set, but have to wait longer if not? Timeouts are a difficult topic with I2C; there is no timeout defined. However, if you want to start communictaing and don't have a 'bus idle' condition, then the new property makes a difference. With "single-master", we know the bus is stalled. With "multi-master" it could be another master communicating. > Note that we need to add a bunch of these properties to dt-schema > i2c-controller.yaml. I hadn't done that because I want to dual license > in the process, but lots of folks have touched i2c.txt IIRC. What is your motivation for dual licensing? All the best, Wolfram
On Wed, May 27, 2020 at 01:30:39PM +0200, Wolfram Sang wrote: > It is useful to know if we are the only master on a given bus. Because > this is a HW description of the bus, add it to the generic bindings. > > Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> > Cc: Laine Jaakko EXT <ext-jaakko.laine@vaisala.com> Applied to for-next, thanks!
On Fri, May 29, 2020 at 5:03 PM Wolfram Sang <wsa+renesas@sang-engineering.com> wrote: > > Hi Rob, > > thanks for the review! > > > Could you just have different timeouts for clearing stalled bus. You > > know quickly if 'single-master' is set, but have to wait longer if not? > > Timeouts are a difficult topic with I2C; there is no timeout defined. > However, if you want to start communictaing and don't have a 'bus idle' > condition, then the new property makes a difference. With > "single-master", we know the bus is stalled. With "multi-master" it > could be another master communicating. > > > Note that we need to add a bunch of these properties to dt-schema > > i2c-controller.yaml. I hadn't done that because I want to dual license > > in the process, but lots of folks have touched i2c.txt IIRC. > > What is your motivation for dual licensing? Non-GPL OS's use DT. Rob
diff --git a/Documentation/devicetree/bindings/i2c/i2c.txt b/Documentation/devicetree/bindings/i2c/i2c.txt index 819436b48fae..438ae123107e 100644 --- a/Documentation/devicetree/bindings/i2c/i2c.txt +++ b/Documentation/devicetree/bindings/i2c/i2c.txt @@ -70,7 +70,12 @@ wants to support one of the below features, it should adapt these bindings. - multi-master states that there is another master active on this bus. The OS can use this information to adapt power management to keep the arbitration awake - all the time, for example. + all the time, for example. Can not be combined with 'single-master'. + +- single-master + states that there is no other master active on this bus. The OS can use + this information to detect a stalled bus more reliably, for example. + Can not be combined with 'multi-master'. Required properties (per child device) --------------------------------------
It is useful to know if we are the only master on a given bus. Because this is a HW description of the bus, add it to the generic bindings. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Cc: Laine Jaakko EXT <ext-jaakko.laine@vaisala.com> --- We added 'multi-master' back then because most busses are single-master and 'multi-master' was the exception. In hindsight, however, this was a bad choice because 'multi-master' should be the default, i.e. if you know nothing, you should assume there could be another master. So, we can't deduce that a missing 'multi-master' property automatically means 'single-master'. That's why we need this new property. I am a bit tempted to mark 'multi-master' as deprecated because the default should be multi-master. However, it might also be a bit more descriptive to let "no property" still mean "we don't know". I'd be thankful for more opinions here. Thanks and happy hacking, Wolfram Documentation/devicetree/bindings/i2c/i2c.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)