And "new drivers" are almost always not really "new" as everyone uses
much the same IP blocks. As proof of this patch where the DWC3 IP block
is being used by multiple SoC vendors. To handle that, you split out
the SoC-specific portions into sub-drivers, so that you can build a
single image of the driver that works on multiple platforms. Nothing
new, we've been doing this for years, it's just that out-of-mainline SoC
trees that think they can touch "core IP block code" break this all the
time, which is what I am pushing back on.
I am perfectly fine with (and like it!) putting dwc3 exynos back into base/main dwc3 and getting rid of USB_DWC3_EXYNOS entirely. But this was not part of this patch...
Anyway, this is just me as a driver subsystem maintainer being grumpy to
see ARCH_ dependancies on tiny little things like SoC-portions for
generic IP drivers. Or on individual drivers (i.e. Samsung serial port
driver), where they don't belong at all.
At least with Samsung serial driver we see adding new SoC - Apple M1.
Here, the guys in Samsung want to tweak several kernel parts to work with their out-of-tree code without contributing this code back. It's not a community-friendly approach. The upstream kernel should be tweaked to the out-of-tree unknown, hidden and uncontrollable code.
Instead I expect from Samsung to contribute the basic Exynos9 support to the upstream.