[PATCH v10 0/9] Add support for NXP P3H2x4x I3C hub driver
Lakshay Piplani <[email protected]>
| Newsgroups | org.infradead.lists.linux-i3c,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
This series adds a driver for the NXP P3H2x4x family of multiport I3C hub devices. This is an MFD driver integrating I3C hub and on-die regulators. The series introduces: - Core I3C master enhancements required for hub support - Generic I3C hub framework - MFD driver with regulator and I3C hub child drivers for the P3H2x4x I3C hub Changes in v10: - Rename i3c_master_reattach_i3c_dev() to *_locked to reflect required bus locking - Rename i3c_master_direct_attach_i3c_dev() and i3c_master_direct_detach_i3c_dev() to *_locked, as these APIs must be called with the bus lock held for write - Drop redundant is_p3h2x4x_in_i3c flag from p3h2840.h - Remove unnecessary ibi_lock handling in request/enable/disable/free IBI APIs - Remove redundant parent pointer from struct i3c_hub and derive upstream master from hub_dev - Split SMBus target/slave mode support, including IBI and MCTP receive handling, into a separate patch - Link to v9: https://lore.kernel.org/linux-i3c/[email protected]/T/#u Changes in v9: - Renamed macros to follow consistent uppercase naming conventions - Made REGMAP selects in the P3H2X4X MFD Kconfig conditional, to avoid I3C/I2C dependency issues - Referenced i3c.yaml and i2c-controller.yaml for child bus nodes - Dropped unnecessary #address-cells and #size-cells from child nodes - Added CONFIG_I2C_SLAVE guards where necessary to avoid build errors when I2C slave support is disabled - Link to v8: https://lore.kernel.org/linux-i3c/[email protected]/T/#u Changes in v8: - Add compatible in i3c example - Link to v7: https://lore.kernel.org/linux-i3c/[email protected]/T/#u Changes in v7: - Fix kernel-doc warnings across I3C core and hub code - Rework DT binding schema and examples to pass dt_binding_check - Update MFD Kconfig to use I3C_OR_I2C - Convert CONFIG_I3C_HUB to tristate - Remove unnecessary CONFIG_I2C_SLAVE guards - Replace custom helpers with find_closest() - Use devm_regulator_get_enable_optional() - Link to v6: https://lore.kernel.org/linux-i3c/[email protected]/T/#u Changes in v6: - Update DT binding with vendor-prefixed properties - Add generic I3C hub support - Remove generic code from P3H2x4x driver - Link to v5: https://lore.kernel.org/linux-i3c/[email protected]/T/#u Changes in v5: - Update supply naming and descriptions - Improve MFD Kconfig/Makefile ordering - Link to v4: https://lore.kernel.org/linux-i3c/[email protected]/T/#u Changes in v4: - Split driver into MFD, regulator and I3C hub parts - Update I3C master for hub support - Fix DT binding issues - Link to v3: https://lore.kernel.org/linux-i3c/20250811-bittern-of-abstract-prestige-aaeda9@kuoka/T/#u Changes in v3: - Add MFD support for hub and regulators - Add regulator integration - Link to v2: https://lore.kernel.org/linux-i3c/[email protected]/T/#u Changes in v2: - Fix DT binding warnings - Refine DT parsing logic - Link to v1: https://lore.kernel.org/linux-i3c/[email protected]/T/#u Aman Kumar Pandey (6): i3c: master: Expose the APIs to support I3C hub i3c: master: Add APIs for I3C hub support dt-bindings: i3c: Add NXP P3H2x4x i3c-hub support mfd: p3h2x4x: Add driver for NXP P3H2x4x i3c hub and on-die regulator regulator: p3h2x4x: Add driver for on-die regulators in NXP P3H2x4x i3c hub i3c: hub: p3h2x4x: Add support for NXP P3H2x4x I3C hub functionality Lakshay Piplani (3): i3c: master: rename i3c_master_reattach_i3c_dev() to *_locked i3c: hub: Add support for the I3C interface in the I3C hub i3c: hub: p3h2x4x: Add SMBus slave mode support .../devicetree/bindings/i3c/nxp,p3h2840.yaml | 291 +++++++++++ MAINTAINERS | 15 + drivers/i3c/Kconfig | 16 + drivers/i3c/Makefile | 2 + drivers/i3c/hub.c | 465 ++++++++++++++++++ drivers/i3c/hub/Kconfig | 11 + drivers/i3c/hub/Makefile | 4 + drivers/i3c/hub/p3h2840_i3c_hub.h | 337 +++++++++++++ drivers/i3c/hub/p3h2840_i3c_hub_common.c | 353 +++++++++++++ drivers/i3c/hub/p3h2840_i3c_hub_i3c.c | 141 ++++++ drivers/i3c/hub/p3h2840_i3c_hub_smbus.c | 450 +++++++++++++++++ drivers/i3c/master.c | 179 ++++++- drivers/mfd/Kconfig | 13 + drivers/mfd/Makefile | 1 + drivers/mfd/p3h2840.c | 122 +++++ drivers/regulator/Kconfig | 10 + drivers/regulator/Makefile | 1 + drivers/regulator/p3h2840_i3c_hub_regulator.c | 218 ++++++++ include/linux/i3c/device.h | 1 + include/linux/i3c/hub.h | 99 ++++ include/linux/i3c/master.h | 9 + include/linux/mfd/p3h2840.h | 26 + 22 files changed, 2761 insertions(+), 3 deletions(-) create mode 100644 Documentation/devicetree/bindings/i3c/nxp,p3h2840.yaml create mode 100644 drivers/i3c/hub.c create mode 100644 drivers/i3c/hub/Kconfig create mode 100644 drivers/i3c/hub/Makefile create mode 100644 drivers/i3c/hub/p3h2840_i3c_hub.h create mode 100644 drivers/i3c/hub/p3h2840_i3c_hub_common.c create mode 100644 drivers/i3c/hub/p3h2840_i3c_hub_i3c.c create mode 100644 drivers/i3c/hub/p3h2840_i3c_hub_smbus.c create mode 100644 drivers/mfd/p3h2840.c create mode 100644 drivers/regulator/p3h2840_i3c_hub_regulator.c create mode 100644 include/linux/i3c/hub.h create mode 100644 include/linux/mfd/p3h2840.h -- 2.25.1 -- linux-i3c mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-i3c