Browse Source

Kconfig: Add I2C_DEVICES device group

Currently there is no way for a board model's Kconfig stanza to
say "I have an i2c bus which the user can plug an i2c device into,
build all the free-standing i2c devices". The Kconfig mechanism
for this is the "device group". Add an I2C_DEVICES group along
the same lines as the existing PCI_DEVICES. Simple free-standing
i2c devices which a user might plausibly want to be able to
plug in on the QEMU commandline should have
   default y if I2C_DEVICES
and board models which have an i2c bus that is user-accessible
should use
   imply I2C_DEVICES
to cause those pluggable devices to be built.

In this commit we mark only a fairly conservative set of i2c devices
as belonging to the I2C_DEVICES group: the simple sensors and RTCs
(not including PMBus devices or devices which need GPIO lines to be
connected).

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Hao Wu <wuhaotsh@google.com>
Message-id: 20220208155911.3408455-2-peter.maydell@linaro.org
Peter Maydell 3 năm trước cách đây
mục cha
commit
b5bf5a53d1
4 tập tin đã thay đổi với 18 bổ sung2 xóa
  1. 6 2
      docs/devel/kconfig.rst
  2. 5 0
      hw/i2c/Kconfig
  3. 2 0
      hw/rtc/Kconfig
  4. 5 0
      hw/sensor/Kconfig

+ 6 - 2
docs/devel/kconfig.rst

@@ -192,11 +192,15 @@ declares its dependencies in different ways:
   no directive and are not used in the Makefile either; they only appear
   no directive and are not used in the Makefile either; they only appear
   as conditions for ``default y`` directives.
   as conditions for ``default y`` directives.
 
 
-  QEMU currently has two device groups, ``PCI_DEVICES`` and
-  ``TEST_DEVICES``.  PCI devices usually have a ``default y if
+  QEMU currently has three device groups, ``PCI_DEVICES``, ``I2C_DEVICES``,
+  and ``TEST_DEVICES``.  PCI devices usually have a ``default y if
   PCI_DEVICES`` directive rather than just ``default y``.  This lets
   PCI_DEVICES`` directive rather than just ``default y``.  This lets
   some boards (notably s390) easily support a subset of PCI devices,
   some boards (notably s390) easily support a subset of PCI devices,
   for example only VFIO (passthrough) and virtio-pci devices.
   for example only VFIO (passthrough) and virtio-pci devices.
+  ``I2C_DEVICES`` is similar to ``PCI_DEVICES``. It contains i2c devices
+  that users might reasonably want to plug in to an i2c bus on any
+  board (and not ones which are very board-specific or that need
+  to be wired up in a way that can't be done on the command line).
   ``TEST_DEVICES`` instead is used for devices that are rarely used on
   ``TEST_DEVICES`` instead is used for devices that are rarely used on
   production virtual machines, but provide useful hooks to test QEMU
   production virtual machines, but provide useful hooks to test QEMU
   or KVM.
   or KVM.

+ 5 - 0
hw/i2c/Kconfig

@@ -1,6 +1,11 @@
 config I2C
 config I2C
     bool
     bool
 
 
+config I2C_DEVICES
+    # Device group for i2c devices which can reasonably be user-plugged
+    # to any board's i2c bus
+    bool
+
 config SMBUS
 config SMBUS
     bool
     bool
     select I2C
     select I2C

+ 2 - 0
hw/rtc/Kconfig

@@ -1,10 +1,12 @@
 config DS1338
 config DS1338
     bool
     bool
     depends on I2C
     depends on I2C
+    default y if I2C_DEVICES
 
 
 config M41T80
 config M41T80
     bool
     bool
     depends on I2C
     depends on I2C
+    default y if I2C_DEVICES
 
 
 config M48T59
 config M48T59
     bool
     bool

+ 5 - 0
hw/sensor/Kconfig

@@ -1,18 +1,22 @@
 config TMP105
 config TMP105
     bool
     bool
     depends on I2C
     depends on I2C
+    default y if I2C_DEVICES
 
 
 config TMP421
 config TMP421
     bool
     bool
     depends on I2C
     depends on I2C
+    default y if I2C_DEVICES
 
 
 config DPS310
 config DPS310
     bool
     bool
     depends on I2C
     depends on I2C
+    default y if I2C_DEVICES
 
 
 config EMC141X
 config EMC141X
     bool
     bool
     depends on I2C
     depends on I2C
+    default y if I2C_DEVICES
 
 
 config ADM1272
 config ADM1272
     bool
     bool
@@ -25,3 +29,4 @@ config MAX34451
 config LSM303DLHC_MAG
 config LSM303DLHC_MAG
     bool
     bool
     depends on I2C
     depends on I2C
+    default y if I2C_DEVICES