mbox series

[v2,0/4] stm32-f7: Addition of SMBus Alert / Host-notify features

Message ID 1593070769-9106-1-git-send-email-alain.volmat@st.com
Headers show
Series stm32-f7: Addition of SMBus Alert / Host-notify features | expand

Message

Alain Volmat June 25, 2020, 7:39 a.m. UTC
This serie adds SMBus Alert and SMBus Host-Notify features for the i2c-stm32f7.

This serie v2 rework comments from the 1st serie and replace the very generic
reg_client / unreg_client callback with HOST_NOTIFY only reg_hnotify_cli
and unreg_hnotify_cli callbacks.

Alain Volmat (4):
  i2c: smbus: add core function handling SMBus host-notify
  i2c: addition of client hnotify reg/unreg callbacks
  dt-bindings: i2c-stm32: add SMBus Alert bindings
  i2c: stm32f7: Add SMBus-specific protocols support

 .../devicetree/bindings/i2c/st,stm32-i2c.yaml      |   4 +
 drivers/i2c/busses/Kconfig                         |   1 +
 drivers/i2c/busses/i2c-stm32f7.c                   | 194 +++++++++++++++++++--
 drivers/i2c/i2c-core-base.c                        |  18 +-
 drivers/i2c/i2c-core-smbus.c                       | 110 ++++++++++++
 include/linux/i2c-smbus.h                          |   2 +
 include/linux/i2c.h                                |   8 +
 7 files changed, 325 insertions(+), 12 deletions(-)

Comments

Rob Herring (Arm) July 14, 2020, 2:30 a.m. UTC | #1
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
Wolfram Sang July 21, 2020, 6:22 a.m. UTC | #2
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