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
master
Peter Maydell 2022-02-08 15:59:10 +00:00
parent 92d6528dbb
commit b5bf5a53d1
4 changed files with 18 additions and 2 deletions

View File

@ -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 QEMU currently has three device groups, ``PCI_DEVICES``, ``I2C_DEVICES``,
``TEST_DEVICES``. PCI devices usually have a ``default y if 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.

View File

@ -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

View File

@ -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

View File

@ -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