Hi Michael, thank you for the patches. Sorry for the big delay! On Wed, Feb 19, 2025 at 11:16:37AM +0100, Michael Riesch wrote: > The Rockchip RK3568 MIPI CSI-2 Host is a CSI-2 bridge with one input port > and one output port. It receives the data with the help of an external > MIPI PHY (C-PHY or D-PHY) and passes it to the Rockchip RK3568 Video > Capture (VICAP) block. Add a V4L2 subdevice driver for this unit. > > Signed-off-by: Michael Riesch <michael.riesch@xxxxxxxxxxxxxx> > --- > drivers/media/platform/rockchip/rkcif/Makefile | 1 + > .../platform/rockchip/rkcif/rkcif-mipi-csi-host.c | 731 +++++++++++++++++++++ > 2 files changed, 732 insertions(+) > > diff --git a/drivers/media/platform/rockchip/rkcif/Makefile b/drivers/media/platform/rockchip/rkcif/Makefile > index 818424972c7b..0c18efd1f1b4 100644 > --- a/drivers/media/platform/rockchip/rkcif/Makefile > +++ b/drivers/media/platform/rockchip/rkcif/Makefile > @@ -4,4 +4,5 @@ rockchip-cif-objs += rkcif-dev.o \ > rkcif-capture-dvp.o \ > rkcif-capture-mipi.o \ > rkcif-interface.o \ > + rkcif-mipi-csi-host.o \ [..] > rkcif-stream.o > diff --git a/drivers/media/platform/rockchip/rkcif/rkcif-mipi-csi-host.c b/drivers/media/platform/rockchip/rkcif/rkcif-mipi-csi-host.c > new file mode 100644 > index 000000000000..fa3f42b2dc55 SNIP > --- /dev/null > +++ b/drivers/media/platform/rockchip/rkcif/rkcif-mipi-csi-host.c > + > +static struct platform_driver rkcif_csi_drv = { > + .driver = { > + .name = "rockchip-mipi-csi", > + .of_match_table = rkcif_csi_of_match, > + .pm = &rkcif_csi_pm_ops, > + }, > + .probe = rkcif_csi_probe, > + .remove = rkcif_csi_remove, > +}; > +module_platform_driver(rkcif_csi_drv); [..] When adding the driver for this CSI-2 Host bridge, you added another call to module_platform_driver() but in the definition of this macro: "Each module may only use this macro once, and calling it replaces module_init() and module_exit()" and as you can see in the diff of the Makefile, rkcif-mipi-csi-host.0 is part of the same module as rkcif-dev.o, where you already call module_platform_driver() I think the solution here is to call platform_register_drivers(drivers, ARRAY_SIZE(drivers)) in rkcif-dev.c with static struct platform_driver * const drivers[] = { &rkcif_csi_drv, &rkcif_plat_drv, }; then define module_init() and module_exit() Btw. MODULE_DEVICE_TABLE() is missing both here and in rkcif-dev.c > + > +MODULE_DESCRIPTION("Rockchip MIPI CSI-2 Host platform driver"); > +MODULE_LICENSE("GPL"); > > -- > 2.34.1 > -- Kind Regards Mehdi Djait