On 29-08-24, 14:54, Mukesh Kumar Savaliya wrote: > This Series adds support to share QUP based I2C SE between subsystems. > Each subsystem should have its own GPII which interacts between SE and > GSI DMA HW engine. > > Subsystem must acquire Lock over the SE on GPII channel so that it > gets uninterrupted control till it unlocks the SE. It also makes sure > the commonly shared TLMM GPIOs are not touched which can impact other > subsystem or cause any interruption. Generally, GPIOs are being > unconfigured during suspend time. Most of the use case it is either I2C using it or some other peripheral using it, so who are you protecting the channel with this locking mechanism? > GSI DMA engine is capable to perform requested transfer operations > from any of the SE in a seamless way and its transparent to the > subsystems. Make sure to enable “qcom,shared-se” flag only while > enabling this feature. I2C client should add in its respective parent > node. Why should this be expose to peripheral drivers and not handled internally inside dma driver, you lock, submit the txn to engine and then unlock when txn is processed, why should this be exposed to clients? > > --- > Mukesh Kumar Savaliya (4): > dt-bindindgs: i2c: qcom,i2c-geni: Document shared flag > dma: gpi: Add Lock and Unlock TRE support to access SE exclusively > soc: qcom: geni-se: Export function geni_se_clks_off() > i2c: i2c-qcom-geni: Enable i2c controller sharing between two > subsystems > > .../bindings/i2c/qcom,i2c-geni-qcom.yaml | 4 ++ > drivers/dma/qcom/gpi.c | 37 ++++++++++++++++++- > drivers/i2c/busses/i2c-qcom-geni.c | 29 +++++++++++---- > drivers/soc/qcom/qcom-geni-se.c | 4 +- > include/linux/dma/qcom-gpi-dma.h | 6 +++ > include/linux/soc/qcom/geni-se.h | 3 ++ > 6 files changed, 74 insertions(+), 9 deletions(-) > > -- > 2.25.1 > -- ~Vinod