Re: [PATCH v3 1/4] i2c: designware: Introduce shutdown exported function
From: William A. Kennington III
Date: Thu May 07 2026 - 03:57:04 EST
On 5/5/26 00:29, Andy Shevchenko wrote:
On Mon, May 04, 2026 at 08:15:02PM +0000, William A. Kennington III wrote:Is this just language correction?
Introduce an exported shutdown function to safely shutdown the...
DesignWare I2C controller.
This shutdown hook gracefully sets the slave disable bit before disabling
the controller. This guarantees that any incoming requests from the master
are immediately NACKed during shutdown, preventing the bus from hanging.
+void i2c_dw_shutdown(struct dw_i2c_dev *dev)i2c_dw_xfer()
+{
+ unsigned int con;
+
+ /*
+ * We only need to handle shutdown for slave mode to ensure
+ * we NACK any incoming master requests. Master mode cleanup
+ * is handled after each transfer in i2c_dw_xfer.
+ */Since it's a newly added comment, can you switch to use inclusive language?
Same for the whole series related to the commit messages, comments, and
documentation.
+ if (dev->mode != DW_IC_SLAVE)Can we use namespace?
+ return;
+
+ /*
+ * To quickly NACK the master during shutdown, we set the slave
+ * disable bit while the controller is still enabled.
+ */
+ regmap_read(dev->map, DW_IC_CON, &con);
+ con |= DW_IC_CON_SLAVE_DISABLE;
+ regmap_write(dev->map, DW_IC_CON, con);
+
+ i2c_dw_disable(dev);
+}
+EXPORT_SYMBOL_GPL(i2c_dw_shutdown);
It already does use namespaces with
`#define DEFAULT_SYMBOL_NAMESPACE "I2C_DW_COMMON"`
I assume I should just keep it consistent as-is?
...Yes, can move it
void __i2c_dw_disable(struct dw_i2c_dev *dev);Isn't more tighten to the probe/remove than this?
void i2c_dw_disable(struct dw_i2c_dev *dev);
+void i2c_dw_shutdown(struct dw_i2c_dev *dev);
extern void i2c_dw_configure_master(struct dw_i2c_dev *dev);
extern int i2c_dw_probe_master(struct dw_i2c_dev *dev);