Hi Geert,

> That's because they rely on the HAS_IOMEM dependency for the whole
> subsystem. In fact, I'm surprised you didn't have to add HAS_IOMEM
> dependencies to more drivers.
I changed only the ones which are available in UML.
I now rewrote the patch to remove the global dependency and move it to all the 
drivers that really rely on HAS_IOMEM - see below.


> > Do you think I should try to push this mainline via the i2c subsystem?
> As long as there are no "real" i2c drivers for UML, but only
> dummy/development ones,
> that is up to the i2c maintainer (in CC).
Nevertheless it would probably be a good starting point for developers - if a 
subsystem is available the probability that someone hacks on it is much higher 
;)

Thanks,
Peter

---

>From 25268d4cdd4b1dd1e5d03c9b90c179758dd41e2e Mon Sep 17 00:00:00 2001
From: Peter Huewe <peterhu...@gmx.de>
Date: Sun, 9 Sep 2012 03:03:29 +0200
Subject: [PATCH] i2c: Fix/Change dependencies to make I2C available on UML

This patch removes the global dependency of the I2C subsystem on
HAS_IOMEM and moves the dependency to the drivers which really rely on
HAS_IOMEM.

The generic I2C part does not need to have HAS_IOMEM set and thus now
becomes available in UML so the I2C subsystem can now be used, e.g.
by the i2c-stub driver, for development of I2C device drivers.

Signed-off-by: Peter Huewe <peterhu...@gmx.de>
---
 drivers/i2c/Kconfig        |    1 -
 drivers/i2c/busses/Kconfig |   60 ++++++++++++++++++++++++++-----------------
 2 files changed, 36 insertions(+), 25 deletions(-)

diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig
index 5a3bb3d..e4e02e2 100644
--- a/drivers/i2c/Kconfig
+++ b/drivers/i2c/Kconfig
@@ -4,7 +4,6 @@
 
 menuconfig I2C
        tristate "I2C support"
-       depends on HAS_IOMEM
        select RT_MUTEXES
        ---help---
          I2C (pronounce: I-squared-C) is a slow serial bus protocol used in
diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index b4aaa1b..27d1d98 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -79,6 +79,7 @@ config I2C_AMD8111
 config I2C_I801
        tristate "Intel 82801 (ICH/PCH)"
        depends on PCI
+       depends on HAS_IOMEM
        select CHECK_SIGNATURE if X86 && DMI
        help
          If you say yes to this option, support will be included for the Intel
@@ -264,7 +265,7 @@ comment "Mac SMBus host controller drivers"
 
 config I2C_HYDRA
        tristate "CHRP Apple Hydra Mac I/O I2C interface"
-       depends on PCI && PPC_CHRP && EXPERIMENTAL
+       depends on PCI && PPC_CHRP && EXPERIMENTAL && HAS_IOMEM
        select I2C_ALGOBIT
        help
          This supports the use of the I2C interface in the Apple Hydra Mac
@@ -291,6 +292,7 @@ comment "I2C system bus drivers (mostly embedded / system-
on-chip)"
 config I2C_AT91
        tristate "Atmel AT91 I2C Two-Wire interface (TWI)"
        depends on ARCH_AT91 && EXPERIMENTAL && BROKEN
+       depends on HAS_IOMEM
        help
          This supports the use of the I2C interface on Atmel AT91
          processors.
@@ -305,7 +307,7 @@ config I2C_AT91
 
 config I2C_AU1550
        tristate "Au1550/Au1200/Au1300 SMBus interface"
-       depends on MIPS_ALCHEMY
+       depends on MIPS_ALCHEMY && HAS_IOMEM
        help
          If you say yes to this option, support will be included for the
          Au1550/Au1200/Au1300 SMBus interface.
@@ -315,7 +317,7 @@ config I2C_AU1550
 
 config I2C_BLACKFIN_TWI
        tristate "Blackfin TWI I2C support"
-       depends on BLACKFIN
+       depends on BLACKFIN && HAS_IOMEM
        depends on !BF561 && !BF531 && !BF532 && !BF533
        help
          This is the I2C bus driver for Blackfin on-chip TWI interface.
@@ -343,7 +345,7 @@ config I2C_CPM
 
 config I2C_DAVINCI
        tristate "DaVinci I2C driver"
-       depends on ARCH_DAVINCI
+       depends on ARCH_DAVINCI && HAS_IOMEM
        help
          Support for TI DaVinci I2C controller driver.
 
@@ -356,7 +358,7 @@ config I2C_DAVINCI
 
 config I2C_DESIGNWARE_PLATFORM
        tristate "Synopsys DesignWare Platform"
-       depends on HAVE_CLK
+       depends on HAVE_CLK && HAS_IOMEM
        help
          If you say yes to this option, support will be included for the
          Synopsys DesignWare I2C adapter. Only master mode is supported.
@@ -366,7 +368,7 @@ config I2C_DESIGNWARE_PLATFORM
 
 config I2C_DESIGNWARE_PCI
        tristate "Synopsys DesignWare PCI"
-       depends on PCI
+       depends on PCI && HAS_IOMEM
        help
          If you say yes to this option, support will be included for the
          Synopsys DesignWare I2C adapter. Only master mode is supported.
@@ -399,7 +401,7 @@ config I2C_GPIO
 
 config I2C_HIGHLANDER
        tristate "Highlander FPGA SMBus interface"
-       depends on SH_HIGHLANDER
+       depends on SH_HIGHLANDER && HAS_IOMEM
        help
          If you say yes to this option, support will be included for
          the SMBus interface located in the FPGA on various Highlander
@@ -421,7 +423,7 @@ config I2C_IBM_IIC
 
 config I2C_IMX
        tristate "IMX I2C interface"
-       depends on ARCH_MXC
+       depends on ARCH_MXC && HAS_IOMEM
        help
          Say Y here if you want to use the IIC bus controller on
          the Freescale i.MX/MXC processors.
@@ -431,7 +433,7 @@ config I2C_IMX
 
 config I2C_INTEL_MID
        tristate "Intel Moorestown/Medfield Platform I2C controller"
-       depends on PCI
+       depends on PCI && HAS_IOMEM
        help
          Say Y here if you have an Intel Moorestown/Medfield platform I2C
          controller.
@@ -442,6 +444,7 @@ config I2C_INTEL_MID
 config I2C_IOP3XX
        tristate "Intel IOPx3xx and IXP4xx on-chip I2C interface"
        depends on ARCH_IOP32X || ARCH_IOP33X || ARCH_IXP4XX || ARCH_IOP13XX
+       depends on HAS_IOMEM
        help
          Say Y here if you want to use the IIC bus controller on
          the Intel IOPx3xx I/O Processors or IXP4xx Network Processors.
@@ -451,7 +454,7 @@ config I2C_IOP3XX
 
 config I2C_MPC
        tristate "MPC107/824x/85xx/512x/52xx/83xx/86xx"
-       depends on PPC
+       depends on PPC && HAS_IOMEM
        help
          If you say yes to this option, support will be included for the
          built-in I2C interface on the MPC107, Tsi107, MPC512x, MPC52xx,
@@ -463,6 +466,7 @@ config I2C_MPC
 config I2C_MV64XXX
        tristate "Marvell mv64xxx I2C Controller"
        depends on (MV64X60 || PLAT_ORION)
+       depends on HAS_IOMEM
        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.
@@ -473,6 +477,7 @@ config I2C_MV64XXX
 config I2C_MXS
        tristate "Freescale i.MX28 I2C interface"
        depends on SOC_IMX28
+       depends on HAS_IOMEM
        select STMP_DEVICE
        help
          Say Y here if you want to use the I2C bus controller on
@@ -483,7 +488,7 @@ config I2C_MXS
 
 config I2C_NOMADIK
        tristate "ST-Ericsson Nomadik/Ux500 I2C Controller"
-       depends on ARM_AMBA
+       depends on ARM_AMBA && HAS_IOMEM
        help
          If you say yes to this option, support will be included for the
          I2C interface from ST-Ericsson's Nomadik and Ux500 architectures,
@@ -491,14 +496,14 @@ config I2C_NOMADIK
 
 config I2C_NUC900
        tristate "NUC900 I2C Driver"
-       depends on ARCH_W90X900
+       depends on ARCH_W90X900 && HAS_IOMEM
        help
          Say Y here to include support for I2C controller in the
          Winbond/Nuvoton NUC900 based System-on-Chip devices.
 
 config I2C_OCORES
        tristate "OpenCores I2C Controller"
-       depends on EXPERIMENTAL
+       depends on EXPERIMENTAL && HAS_IOMEM
        help
          If you say yes to this option, support will be included for the
          OpenCores I2C controller. For details see
@@ -509,7 +514,7 @@ config I2C_OCORES
 
 config I2C_OMAP
        tristate "OMAP I2C adapter"
-       depends on ARCH_OMAP
+       depends on ARCH_OMAP && HAS_IOMEM
        default y if MACH_OMAP_H3 || MACH_OMAP_OSK
        help
          If you say yes to this option, support will be included for the
@@ -525,6 +530,7 @@ config I2C_PASEMI
 
 config I2C_PCA_PLATFORM
        tristate "PCA9564/PCA9665 as platform device"
+       depends on HAS_IOMEM
        select I2C_ALGOPCA
        default n
        help
@@ -536,7 +542,7 @@ config I2C_PCA_PLATFORM
 
 config I2C_PMCMSP
        tristate "PMC MSP I2C TWI Controller"
-       depends on PMC_MSP
+       depends on PMC_MSP && HAS_IOMEM
        help
          This driver supports the PMC TWI controller on MSP devices.
 
@@ -546,6 +552,7 @@ config I2C_PMCMSP
 config I2C_PNX
        tristate "I2C bus support for Philips PNX and NXP LPC targets"
        depends on ARCH_PNX4008 || ARCH_LPC32XX
+       depends on HAS_IOMEM
        help
          This driver supports the Philips IP3204 I2C IP block master and/or
          slave controller
@@ -567,6 +574,7 @@ config I2C_PUV3
 config I2C_PXA
        tristate "Intel PXA2XX I2C adapter"
        depends on ARCH_PXA || ARCH_MMP || (X86_32 && PCI && OF)
+       depends on HAS_IOMEM
        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
@@ -592,14 +600,14 @@ config HAVE_S3C2410_I2C
 
 config I2C_S3C2410
        tristate "S3C2410 I2C Driver"
-       depends on HAVE_S3C2410_I2C
+       depends on HAVE_S3C2410_I2C && HAS_IOMEM
        help
          Say Y here to include support for I2C controller in the
          Samsung SoCs.
 
 config I2C_S6000
        tristate "S6000 I2C support"
-       depends on XTENSA_VARIANT_S6000
+       depends on XTENSA_VARIANT_S6000 && HAS_IOMEM
        help
          This driver supports the on chip I2C device on the
          S6000 xtensa processor family.
@@ -610,6 +618,7 @@ config I2C_S6000
 config I2C_SH7760
        tristate "Renesas SH7760 I2C Controller"
        depends on CPU_SUBTYPE_SH7760
+       depends on HAS_IOMEM
        help
          This driver supports the 2 I2C interfaces on the Renesas SH7760.
 
@@ -619,6 +628,7 @@ config I2C_SH7760
 config I2C_SH_MOBILE
        tristate "SuperH Mobile I2C Controller"
        depends on SUPERH || ARCH_SHMOBILE
+       depends on HAS_IOMEM
        help
          If you say yes to this option, support will be included for the
          built-in I2C interface on the Renesas SH-Mobile processor.
@@ -628,6 +638,7 @@ config I2C_SH_MOBILE
 
 config I2C_SIMTEC
        tristate "Simtec Generic I2C interface"
+       depends on HAS_IOMEM
        select I2C_ALGOBIT
        help
          If you say yes to this option, support will be included for
@@ -640,7 +651,7 @@ config I2C_SIMTEC
 
 config I2C_SIRF
        tristate "CSR SiRFprimaII I2C interface"
-       depends on ARCH_PRIMA2
+       depends on ARCH_PRIMA2 && HAS_IOMEM
        help
          If you say yes to this option, support will be included for the
          CSR SiRFprimaII I2C interface.
@@ -650,7 +661,7 @@ config I2C_SIRF
 
 config I2C_STU300
        tristate "ST Microelectronics DDC I2C interface"
-       depends on MACH_U300
+       depends on MACH_U300 && HAS_IOMEM
        default y if MACH_U300
        help
          If you say yes to this option, support will be included for the
@@ -663,7 +674,7 @@ config I2C_STU300
 
 config I2C_TEGRA
        tristate "NVIDIA Tegra internal I2C controller"
-       depends on ARCH_TEGRA
+       depends on ARCH_TEGRA && HAS_IOMEM
        help
          If you say yes to this option, support will be included for the
          I2C controller embedded in NVIDIA Tegra SOCs
@@ -671,6 +682,7 @@ config I2C_TEGRA
 config I2C_VERSATILE
        tristate "ARM Versatile/Realview I2C bus support"
        depends on ARCH_VERSATILE || ARCH_REALVIEW || ARCH_VEXPRESS
+       depends on HAS_IOMEM
        select I2C_ALGOBIT
        help
          Say yes if you want to support the I2C serial bus on ARMs Versatile
@@ -681,7 +693,7 @@ config I2C_VERSATILE
 
 config I2C_OCTEON
        tristate "Cavium OCTEON I2C bus support"
-       depends on CPU_CAVIUM_OCTEON
+       depends on CPU_CAVIUM_OCTEON && HAS_IOMEM
        help
          Say yes if you want to support the I2C serial bus on Cavium
          OCTEON SOC.
@@ -701,7 +713,7 @@ config I2C_XILINX
 
 config I2C_XLR
        tristate "XLR I2C support"
-       depends on CPU_XLR
+       depends on CPU_XLR && HAS_IOMEM
        help
          This driver enables support for the on-chip I2C interface of
          the Netlogic XLR/XLS MIPS processors.
@@ -772,7 +784,7 @@ config I2C_PARPORT_LIGHT
 
 config I2C_TAOS_EVM
        tristate "TAOS evaluation module"
-       depends on EXPERIMENTAL
+       depends on EXPERIMENTAL && HAS_IOMEM
        select SERIO
        select SERIO_SERPORT
        default n
@@ -811,7 +823,7 @@ config I2C_ACORN
 
 config I2C_ELEKTOR
        tristate "Elektor ISA card"
-       depends on ISA && HAS_IOPORT && BROKEN_ON_SMP
+       depends on ISA && HAS_IOPORT && BROKEN_ON_SMP && HAS_IOMEM
        select I2C_ALGOPCF
        help
          This supports the PCF8584 ISA bus I2C adapter.  Say Y if you own
-- 
1.7.8.6


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

Reply via email to