• A
    i2c-designware: Fix build error if CONFIG_I2C_DESIGNWARE_PLATFORM=y && CONFIG_I2C_DESIGNWARE_PCI=y · e68bb91b
    Axel Lin 提交于
    This patch adds config I2C_DESIGNWARE_CORE in Kconfig, and let
    I2C_DESIGNWARE_PLATFORM and I2C_DESIGNWARE_PCI select I2C_DESIGNWARE_CORE.
    
    Because both I2C_DESIGNWARE_PLATFORM and I2C_DESIGNWARE_PCI can be built as
    built-in or module, we also need to export the functions in i2c-designware-core.
    
    This fixes below build error when CONFIG_I2C_DESIGNWARE_PLATFORM=y &&
    CONFIG_I2C_DESIGNWARE_PCI=y:
    
      LD      drivers/i2c/busses/built-in.o
    drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_clear_int':
    i2c-designware-core.c:(.text+0xa10): multiple definition of `i2c_dw_clear_int'
    drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x928): first defined here
    drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_init':
    i2c-designware-core.c:(.text+0x178): multiple definition of `i2c_dw_init'
    drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x90): first defined here
    drivers/i2c/busses/i2c-designware-pci.o: In function `dw_readl':
    i2c-designware-core.c:(.text+0xe8): multiple definition of `dw_readl'
    drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x0): first defined here
    drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_isr':
    i2c-designware-core.c:(.text+0x724): multiple definition of `i2c_dw_isr'
    drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x63c): first defined here
    drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_xfer':
    i2c-designware-core.c:(.text+0x4b0): multiple definition of `i2c_dw_xfer'
    drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x3c8): first defined here
    drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_is_enabled':
    i2c-designware-core.c:(.text+0x9d4): multiple definition of `i2c_dw_is_enabled'
    drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x8ec): first defined here
    drivers/i2c/busses/i2c-designware-pci.o: In function `dw_writel':
    i2c-designware-core.c:(.text+0x124): multiple definition of `dw_writel'
    drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x3c): first defined here
    drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_xfer_msg':
    i2c-designware-core.c:(.text+0x2e8): multiple definition of `i2c_dw_xfer_msg'
    drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x200): first defined here
    drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_enable':
    i2c-designware-core.c:(.text+0x9c8): multiple definition of `i2c_dw_enable'
    drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x8e0): first defined here
    drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_read_comp_param':
    i2c-designware-core.c:(.text+0xa24): multiple definition of `i2c_dw_read_comp_param'
    drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x93c): first defined here
    drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_disable':
    i2c-designware-core.c:(.text+0x9dc): multiple definition of `i2c_dw_disable'
    drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x8f4): first defined here
    drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_func':
    i2c-designware-core.c:(.text+0x710): multiple definition of `i2c_dw_func'
    drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x628): first defined here
    drivers/i2c/busses/i2c-designware-pci.o: In function `i2c_dw_disable_int':
    i2c-designware-core.c:(.text+0xa18): multiple definition of `i2c_dw_disable_int'
    drivers/i2c/busses/i2c-designware-platform.o:i2c-designware-platdrv.c:(.text+0x930): first defined here
    make[3]: *** [drivers/i2c/busses/built-in.o] Error 1
    make[2]: *** [drivers/i2c/busses] Error 2
    make[1]: *** [drivers/i2c] Error 2
    make: *** [drivers] Error 2
    Signed-off-by: NAxel Lin <axel.lin@gmail.com>
    Signed-off-by: NJean Delvare <khali@linux-fr.org>
    Tested-by: NJiri Slaby <jslaby@suse.cz>
    Cc: stable@vger.kernel.org [3.2+]
    e68bb91b
i2c-designware-core.c 19.0 KB