Message ID | 1593070769-9106-4-git-send-email-alain.volmat@st.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | stm32-f7: Addition of SMBus Alert / Host-notify features | expand |
On Thu, Jun 25, 2020 at 09:39:28AM +0200, Alain Volmat wrote: > Add a new binding of the i2c-stm32f7 driver to enable the handling > of the SMBUS-Alert. > > The I2C/SMBUS framework already provides a mechanism to enable SMBus-Alert > by naming an IRQ line "smbus_alert". However, on stm32, the SMBus-Alert is > part of the i2c IRQ. Using the smbus_alert naming here would lead to having > 2 handlers (the handler of the driver and the smbus_alert handler > from I2C/SMBUS framework) on the unique i2c IRQ of the stm32. Meaning that > the smbus_alert handler would get called for all IRQ generated by the stm32 > I2C controller. > > For that reason, the smbus_alert IRQ naming cannot be used and a dedicated > binding is introduced. What if we update the core to not register another irq handler if the "smbus_alert" and main irq are the same? I think it could work. However, while trying to make a proof-of-concept, I found that irq descriptions in the generic i2c binding document are probably mixed up. And before fixing that, I'd like to get HostNotify done first. Makes sense?
On Tue, Jun 30, 2020 at 09:41:07PM +0200, Wolfram Sang wrote: > On Thu, Jun 25, 2020 at 09:39:28AM +0200, Alain Volmat wrote: > > Add a new binding of the i2c-stm32f7 driver to enable the handling > > of the SMBUS-Alert. > > > > The I2C/SMBUS framework already provides a mechanism to enable SMBus-Alert > > by naming an IRQ line "smbus_alert". However, on stm32, the SMBus-Alert is > > part of the i2c IRQ. Using the smbus_alert naming here would lead to having > > 2 handlers (the handler of the driver and the smbus_alert handler > > from I2C/SMBUS framework) on the unique i2c IRQ of the stm32. Meaning that > > the smbus_alert handler would get called for all IRQ generated by the stm32 > > I2C controller. > > > > For that reason, the smbus_alert IRQ naming cannot be used and a dedicated > > binding is introduced. > > What if we update the core to not register another irq handler if the > "smbus_alert" and main irq are the same? > > I think it could work. However, while trying to make a proof-of-concept, > I found that irq descriptions in the generic i2c binding document are > probably mixed up. And before fixing that, I'd like to get HostNotify > done first. Why does this even need to be in DT? Can't the driver just register that it supports SMBus alert or have some call to the core signaling an SMBus alert? Rob
Hi Rob, > > > The I2C/SMBUS framework already provides a mechanism to enable SMBus-Alert > > > by naming an IRQ line "smbus_alert". However, on stm32, the SMBus-Alert is > > > part of the i2c IRQ. Using the smbus_alert naming here would lead to having > > > 2 handlers (the handler of the driver and the smbus_alert handler > > > from I2C/SMBUS framework) on the unique i2c IRQ of the stm32. Meaning that > > > the smbus_alert handler would get called for all IRQ generated by the stm32 > > > I2C controller. > > > > > > For that reason, the smbus_alert IRQ naming cannot be used and a dedicated > > > binding is introduced. > > > > What if we update the core to not register another irq handler if the > > "smbus_alert" and main irq are the same? > > > > I think it could work. However, while trying to make a proof-of-concept, > > I found that irq descriptions in the generic i2c binding document are > > probably mixed up. And before fixing that, I'd like to get HostNotify > > done first. > > Why does this even need to be in DT? Can't the driver just register that > it supports SMBus alert or have some call to the core signaling an SMBus > alert? If we emulate this SMBus behaviour with I2C, it means we apply additional restrictions. In this case, there is an address which can't be used anymore. Because there is another case of additional restrictions, I proposed the binding "smbus" which means this bus is not I2C but SMBus, so it is more restricted. Thanks, Wolfram
diff --git a/Documentation/devicetree/bindings/i2c/st,stm32-i2c.yaml b/Documentation/devicetree/bindings/i2c/st,stm32-i2c.yaml index f2fcbb361180..6fde046fae5e 100644 --- a/Documentation/devicetree/bindings/i2c/st,stm32-i2c.yaml +++ b/Documentation/devicetree/bindings/i2c/st,stm32-i2c.yaml @@ -36,6 +36,10 @@ allOf: minItems: 3 maxItems: 3 + st,smbus-alert: + description: Enable the SMBus Alert feature + $ref: /schemas/types.yaml#/definitions/flag + - if: properties: compatible:
Add a new binding of the i2c-stm32f7 driver to enable the handling of the SMBUS-Alert. The I2C/SMBUS framework already provides a mechanism to enable SMBus-Alert by naming an IRQ line "smbus_alert". However, on stm32, the SMBus-Alert is part of the i2c IRQ. Using the smbus_alert naming here would lead to having 2 handlers (the handler of the driver and the smbus_alert handler from I2C/SMBUS framework) on the unique i2c IRQ of the stm32. Meaning that the smbus_alert handler would get called for all IRQ generated by the stm32 I2C controller. For that reason, the smbus_alert IRQ naming cannot be used and a dedicated binding is introduced. Signed-off-by: Alain Volmat <alain.volmat@st.com> --- v2: Clarify commit message Documentation/devicetree/bindings/i2c/st,stm32-i2c.yaml | 4 ++++ 1 file changed, 4 insertions(+)