config I2C_ALTERA
        tristate "Altera Soft IP I2C"
-       depends on (ARCH_SOCFPGA || NIOS2) && OF
+       depends on ARCH_SOCFPGA || NIOS2 || COMPILE_TEST
+       depends on OF
        help
          If you say yes to this option, support will be included for the
          Altera Soft IP I2C interfaces on SoCFPGA and Nios2 architectures.
 
 config I2C_AT91
        tristate "Atmel AT91 I2C Two-Wire interface (TWI)"
-       depends on ARCH_AT91
+       depends on ARCH_AT91 || COMPILE_TEST
        help
          This supports the use of the I2C interface on Atmel AT91
          processors.
 
 config I2C_BCM2835
        tristate "Broadcom BCM2835 I2C controller"
-       depends on ARCH_BCM2835 || ARCH_BRCMSTB
+       depends on ARCH_BCM2835 || ARCH_BRCMSTB || COMPILE_TEST
+       depends on COMMON_CLK
        help
          If you say yes to this option, support will be included for the
          BCM2835 I2C controller.
 
 config I2C_BCM_KONA
        tristate "BCM Kona I2C adapter"
-       depends on ARCH_BCM_MOBILE
-       default y
+       depends on ARCH_BCM_MOBILE || COMPILE_TEST
+       default y if ARCH_BCM_MOBILE
        help
          If you say yes to this option, support will be included for the
          I2C interface on the Broadcom Kona family of processors.
 
 config I2C_DAVINCI
        tristate "DaVinci I2C driver"
-       depends on ARCH_DAVINCI || ARCH_KEYSTONE
+       depends on ARCH_DAVINCI || ARCH_KEYSTONE || COMPILE_TEST
        help
          Support for TI DaVinci I2C controller driver.
 
 
 config I2C_DIGICOLOR
        tristate "Conexant Digicolor I2C driver"
-       depends on ARCH_DIGICOLOR
+       depends on ARCH_DIGICOLOR || COMPILE_TEST
        help
          Support for Conexant Digicolor SoCs (CX92755) I2C controller driver.
 
 
 config I2C_EXYNOS5
        tristate "Exynos5 high-speed I2C driver"
-       depends on ARCH_EXYNOS && OF
-       default y
+       depends on OF
+       depends on ARCH_EXYNOS || COMPILE_TEST
+       default y if ARCH_EXYNOS
        help
          High-speed I2C controller on Exynos5 based Samsung SoCs.
 
 
 config I2C_HIGHLANDER
        tristate "Highlander FPGA SMBus interface"
-       depends on SH_HIGHLANDER
+       depends on SH_HIGHLANDER || COMPILE_TEST
        help
          If you say yes to this option, support will be included for
          the SMBus interface located in the FPGA on various Highlander
 
 config I2C_IOP3XX
        tristate "Intel IOPx3xx and IXP4xx on-chip I2C interface"
-       depends on ARCH_IOP32X || ARCH_IXP4XX
+       depends on ARCH_IOP32X || ARCH_IXP4XX || COMPILE_TEST
        help
          Say Y here if you want to use the IIC bus controller on
          the Intel IOPx3xx I/O Processors or IXP4xx Network Processors.
 config I2C_MESON
        tristate "Amlogic Meson I2C controller"
        depends on ARCH_MESON || COMPILE_TEST
+       depends on COMMON_CLK
        help
          If you say yes to this option, support will be included for the
          I2C interface on the Amlogic Meson family of SoCs.
 
 config I2C_MV64XXX
        tristate "Marvell mv64xxx I2C Controller"
-       depends on MV64X60 || PLAT_ORION || ARCH_SUNXI || ARCH_MVEBU
+       depends on MV64X60 || PLAT_ORION || ARCH_SUNXI || ARCH_MVEBU || COMPILE_TEST
        help
          If you say yes to this option, support will be included for the
          built-in I2C interface on the Marvell 64xxx line of host bridges.
 
 config I2C_MXS
        tristate "Freescale i.MX28 I2C interface"
-       depends on SOC_IMX28
+       depends on SOC_IMX28 || COMPILE_TEST
        select STMP_DEVICE
        help
          Say Y here if you want to use the I2C bus controller on
 
 config I2C_OMAP
        tristate "OMAP I2C adapter"
-       depends on ARCH_OMAP || ARCH_K3
+       depends on ARCH_OMAP || ARCH_K3 || COMPILE_TEST
        default y if MACH_OMAP_H3 || MACH_OMAP_OSK
        help
          If you say yes to this option, support will be included for the
 
 config I2C_PMCMSP
        tristate "PMC MSP I2C TWI Controller"
-       depends on PMC_MSP
+       depends on PMC_MSP || COMPILE_TEST
        help
          This driver supports the PMC TWI controller on MSP devices.
 
 
 config I2C_PNX
        tristate "I2C bus support for Philips PNX and NXP LPC targets"
-       depends on ARCH_LPC32XX
+       depends on ARCH_LPC32XX || COMPILE_TEST
        help
          This driver supports the Philips IP3204 I2C IP block master and/or
          slave controller
 
 config I2C_PXA
        tristate "Intel PXA2XX I2C adapter"
-       depends on ARCH_PXA || ARCH_MMP || ARCH_MVEBU || (X86_32 && PCI && OF)
+       depends on ARCH_PXA || ARCH_MMP || ARCH_MVEBU || (X86_32 && PCI && OF) || COMPILE_TEST
        help
          If you have devices in the PXA I2C bus, say yes to this option.
          This driver can also be built as a module.  If so, the module
 
 config I2C_S3C2410
        tristate "S3C2410 I2C Driver"
-       depends on HAVE_S3C2410_I2C
+       depends on HAVE_S3C2410_I2C || COMPILE_TEST
        help
          Say Y here to include support for I2C controller in the
          Samsung SoCs.
 
 config I2C_SIRF
        tristate "CSR SiRFprimaII I2C interface"
-       depends on ARCH_SIRF
+       depends on ARCH_SIRF || COMPILE_TEST
        help
          If you say yes to this option, support will be included for the
          CSR SiRFprimaII I2C interface.
 
 config I2C_SPRD
        tristate "Spreadtrum I2C interface"
-       depends on I2C=y && ARCH_SPRD
+       depends on I2C=y && (ARCH_SPRD || COMPILE_TEST)
        help
          If you say yes to this option, support will be included for the
          Spreadtrum I2C interface.
 
 config I2C_ST
        tristate "STMicroelectronics SSC I2C support"
-       depends on ARCH_STI
+       depends on ARCH_STI || COMPILE_TEST
        help
          Enable this option to add support for STMicroelectronics SoCs
          hardware SSC (Synchronous Serial Controller) as an I2C controller.
 
 config I2C_STU300
        tristate "ST Microelectronics DDC I2C interface"
-       depends on MACH_U300
+       depends on MACH_U300 || COMPILE_TEST
        default y if MACH_U300
        help
          If you say yes to this option, support will be included for the
 
 config I2C_TEGRA
        tristate "NVIDIA Tegra internal I2C controller"
-       depends on ARCH_TEGRA
+       depends on ARCH_TEGRA || (COMPILE_TEST && (ARC || ARM || ARM64 || M68K || RISCV || SUPERH || SPARC))
+       # COMPILE_TEST needs architectures with readsX()/writesX() primitives
        help
          If you say yes to this option, support will be included for the
          I2C controller embedded in NVIDIA Tegra SOCs
 
 config I2C_TEGRA_BPMP
        tristate "NVIDIA Tegra BPMP I2C controller"
-       depends on TEGRA_BPMP
-       default y
+       depends on TEGRA_BPMP || COMPILE_TEST
+       default y if TEGRA_BPMP
        help
          If you say yes to this option, support will be included for the I2C
          controller embedded in NVIDIA Tegra SoCs accessed via the BPMP.
 
 config I2C_WMT
        tristate "Wondermedia WM8xxx SoC I2C bus support"
-       depends on ARCH_VT8500
+       depends on ARCH_VT8500 || COMPILE_TEST
        help
          Say yes if you want to support the I2C bus on Wondermedia 8xxx-series
          SoCs.
 
 config I2C_XLR
        tristate "Netlogic XLR and Sigma Designs I2C support"
-       depends on CPU_XLR || ARCH_TANGO
+       depends on CPU_XLR || ARCH_TANGO || COMPILE_TEST
        help
          This driver enables support for the on-chip I2C interface of
          the Netlogic XLR/XLS MIPS processors and Sigma Designs SOCs.
 
 config I2C_MLXCPLD
        tristate "Mellanox I2C driver"
-       depends on X86_64
+       depends on X86_64 || COMPILE_TEST
        help
          This exposes the Mellanox platform I2C busses to the linux I2C layer
          for X86 based systems.