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:
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.
...
Is this just language correction?

+void i2c_dw_shutdown(struct dw_i2c_dev *dev)
+{
+ 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.
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)
+ 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);
Can we use namespace?

It already does use namespaces with

`#define DEFAULT_SYMBOL_NAMESPACE    "I2C_DW_COMMON"`

I assume I should just keep it consistent as-is?

...

void __i2c_dw_disable(struct dw_i2c_dev *dev);
void i2c_dw_disable(struct dw_i2c_dev *dev);
+void i2c_dw_shutdown(struct dw_i2c_dev *dev);
Isn't more tighten to the probe/remove than this?
Yes, can move it
extern void i2c_dw_configure_master(struct dw_i2c_dev *dev);
extern int i2c_dw_probe_master(struct dw_i2c_dev *dev);