It bothered to me to see "static struct i2c_algorithm i2c_dw_algo {}" defined twice both in i2c-designware-pcidrv.c and i2c-designware-platdrv.c and so many exported i2c-designware-core functions. It turned out some of them became unused or are local and there were also duplicated probe code that I moved to new common i2c_dw_probe(). Object sizes below before and after this set from CONFIG_X86_64=y build. text data bss dec hex filename 6439 1096 0 7535 1d6f drivers/i2c/busses/i2c-designware-core.ko 5123 1588 16 6727 1a47 drivers/i2c/busses/i2c-designware-pci.ko 5274 1096 16 6386 18f2 drivers/i2c/busses/i2c-designware-platform.ko 16836 3780 32 20648 50a8 (TOTALS) text data bss dec hex filename 7225 1120 16 8361 20a9 drivers/i2c/busses/i2c-designware-core.ko 4281 1524 0 5805 16ad drivers/i2c/busses/i2c-designware-pci.ko 4337 1072 0 5409 1521 drivers/i2c/busses/i2c-designware-platform.ko 15843 3716 16 19575 4c77 (TOTALS) Jarkko Nikula (6): i2c: designware: Remove interrupt clearing from i2c_dw_pci_probe() i2c: designware: Disable interrupts before requesting PCI device interrupt i2c: designware: Remove unused functions i2c: designware: Make dw_readl() and dw_writel() static i2c: designware: Rename platform driver probe and PM functions i2c: designware: Move common probe code into i2c_dw_probe() drivers/i2c/busses/i2c-designware-core.c | 73 ++++++++++++++++++----------- drivers/i2c/busses/i2c-designware-core.h | 10 +--- drivers/i2c/busses/i2c-designware-pcidrv.c | 31 ++---------- drivers/i2c/busses/i2c-designware-platdrv.c | 52 ++++++-------------- 4 files changed, 63 insertions(+), 103 deletions(-) -- 2.5.0 -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html