On Thu, 22 Nov 2018 17:54:54 +0000 Vitor Soares <vitor.soares@xxxxxxxxxxxx> wrote: > From: Vitor Soares <soares@xxxxxxxxxxxx> > > This patch slipts dw-i3c-master.c into three pieces: > dw-i3c-master.c - contains the code that interacts directly with the > core in master mode. > > dw-i3c-platdrv.c - contains the code specific to the platform driver. > > dw-i3c-core.h - contains the definitions and declarations shared by > dw-i3c-master and dw-i3c-platdrv > > This patch will allow SOC integrators to add their code specific to > DesignWare I3C IP. Isn't it too early to do this change? Can't we wait until we have a SoC that actually embeds this IP? > > Signed-off-by: Vitor Soares <soares@xxxxxxxxxxxx> > --- > drivers/i3c/master/Kconfig | 9 +- > drivers/i3c/master/Makefile | 5 +- > drivers/i3c/master/dw-i3c-core.h | 214 ++++++++++++++++++++++++++ > drivers/i3c/master/dw-i3c-master.c | 299 ++---------------------------------- > drivers/i3c/master/dw-i3c-platdrv.c | 112 ++++++++++++++ I'd prefer to have a dw/ subdir where you'd place all dw files. > 5 files changed, 349 insertions(+), 290 deletions(-) > create mode 100644 drivers/i3c/master/dw-i3c-core.h > create mode 100644 drivers/i3c/master/dw-i3c-platdrv.c > > diff --git a/drivers/i3c/master/Kconfig b/drivers/i3c/master/Kconfig > index 8ee1ce6..fdc6e46 100644 > --- a/drivers/i3c/master/Kconfig > +++ b/drivers/i3c/master/Kconfig > @@ -5,9 +5,14 @@ config CDNS_I3C_MASTER > help > Enable this driver if you want to support Cadence I3C master block. > > -config DW_I3C_MASTER > - tristate "Synospsys DesignWare I3C master driver" > +config DW_I3C_CORE > + tristate > + > +config DW_I3C_PLATFORM > + tristate "Synospsys DesignWare I3C Platform driver" > + select DW_I3C_CORE > depends on I3C > + depends on HAS_IOMEM > depends on !(ALPHA || PARISC) > # ALPHA and PARISC needs {read,write}sl() > help > diff --git a/drivers/i3c/master/Makefile b/drivers/i3c/master/Makefile > index fc53939..004ad1c 100644 > --- a/drivers/i3c/master/Makefile > +++ b/drivers/i3c/master/Makefile > @@ -1,2 +1,5 @@ > obj-$(CONFIG_CDNS_I3C_MASTER) += i3c-master-cdns.o > -obj-$(CONFIG_DW_I3C_MASTER) += dw-i3c-master.o > +obj-$(CONFIG_DW_I3C_CORE) += dw-i3c-core.o > +dw-i3c-core-objs := dw-i3c-master.o > +obj-$(CONFIG_DW_I3C_PLATFORM) += dw-i3c-platform.o > +dw-i3c-platform-objs := dw-i3c-platdrv.o Do we really have to create one module for the core and one per SoC? Can't we have everything in the same .ko?