[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <7074006.bC9N32Mljn@fw-rgant>
Date: Tue, 26 Nov 2024 09:34:56 +0100
From: Romain Gantois <romain.gantois@...tlin.com>
To: Luca Ceresoli <luca.ceresoli@...tlin.com>,
Wolfram Sang <wsa+renesas@...g-engineering.com>,
Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
Sakari Ailus <sakari.ailus@...ux.intel.com>,
Tomi Valkeinen <tomi.valkeinen@...asonboard.com>
Cc: linux-i2c@...r.kernel.org, linux-kernel@...r.kernel.org,
Wolfram Sang <wsa@...nel.org>, Mauro Carvalho Chehab <mchehab@...nel.org>,
Cosmin Tanislav <demonsingur@...il.com>,
Tomi Valkeinen <tomi.valkeinen@...asonboard.com>,
Tomi Valkeinen <tomi.valkeinen+renesas@...asonboard.com>
Subject:
Re: [PATCH v2 2/3] i2c: atr: Allow unmapped addresses from nested ATRs
Hello Tomi,
On vendredi 22 novembre 2024 13:26:19 heure normale d’Europe centrale Tomi Valkeinen wrote:
> From: Cosmin Tanislav <demonsingur@...il.com>
>
> i2c-atr translates the i2c transactions and forwards them to its parent
> i2c bus. Any transaction to an i2c address that has not been mapped on
> the i2c-atr will be rejected with an error.
>
> However, if the parent i2c bus is another i2c-atr, the parent i2c-atr
> gets a transaction to an i2c address that is not mapped in the parent
> i2c-atr, and thus fails.
>
> Relax the checks, and allow non-mapped transactions to fix this issue.
I have a series in the review pipeline which adds optional support for dynamic
I2C ATR address translation. If this option is enabled, then transactions on any
unmapped address are assigned an alias on-the-fly. This feature is required to
handle alias shortages on some hardware setups:
https://lore.kernel.org/all/20241125-fpc202-v3-0-34e86bcb5b56@bootlin.com/
Letting all non-mapped transactions through would conflict with my series, since
these two scenarios would be indistinguishable:
case 1:
transaction with 3 messages is requested, msg1 -> 0x50; msg2 -> 0x51; msg3 -> 0x56
alias pool can only hold 2 mappings at a time, so transaction cannot go through
case 2:
transaction with 3 messages is requested, msg1 -> 0x50; msg2 -> 0x51; msg3 -> 0x50
alias pool can hold 2 mappings at a time, so transaction can go through
Could you perhaps introduce an ATR flag which would enable/disable letting all unmapped
messages through? I have something similar in patch 8 of my FPC202 series:
https://lore.kernel.org/all/20241125-fpc202-v3-8-34e86bcb5b56@bootlin.com/
There could be a flag named "I2C_ATR_FLAG_NESTED_ATR", which would be enabled in i2c_atr_new():
```
@@ i2c_atr_new()
if (is_an_atr(parent))
atr->flags |= I2C_ATR_FLAG_NESTED_ATR;
```
Please let me know what you think.
Best Regards,
--
Romain Gantois, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
Powered by blists - more mailing lists