On Tue, Feb 8, 2022 at 9:55 AM Peter Maydell <peter.mayd...@linaro.org> wrote:
> 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.mayd...@linaro.org> > Reviewed-by: Hao Wu <wuhao...@google.com> > --- > Feel free to suggest other i2c devices that should be marked > as in the group; as I say, I erred on the side of not putting > devices in the group. > --- > docs/devel/kconfig.rst | 8 ++++++-- > hw/i2c/Kconfig | 5 +++++ > hw/rtc/Kconfig | 2 ++ > hw/sensor/Kconfig | 5 +++++ > 4 files changed, 18 insertions(+), 2 deletions(-) > > diff --git a/docs/devel/kconfig.rst b/docs/devel/kconfig.rst > index a1cdbec7512..aa5042f1569 100644 > --- a/docs/devel/kconfig.rst > +++ b/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 > 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 > some boards (notably s390) easily support a subset of 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 > production virtual machines, but provide useful hooks to test QEMU > or KVM. > diff --git a/hw/i2c/Kconfig b/hw/i2c/Kconfig > index 8217cb50411..9bb8870517f 100644 > --- a/hw/i2c/Kconfig > +++ b/hw/i2c/Kconfig > @@ -1,6 +1,11 @@ > config I2C > bool > > +config I2C_DEVICES > + # Device group for i2c devices which can reasonably be user-plugged > + # to any board's i2c bus > + bool > + > config SMBUS > bool > select I2C > diff --git a/hw/rtc/Kconfig b/hw/rtc/Kconfig > index f06e133b8a2..730c272bc54 100644 > --- a/hw/rtc/Kconfig > +++ b/hw/rtc/Kconfig > @@ -1,10 +1,12 @@ > config DS1338 > bool > depends on I2C > + default y if I2C_DEVICES > > config M41T80 > bool > depends on I2C > + default y if I2C_DEVICES > > config M48T59 > bool > diff --git a/hw/sensor/Kconfig b/hw/sensor/Kconfig > index b317f91b7b4..215944decc7 100644 > --- a/hw/sensor/Kconfig > +++ b/hw/sensor/Kconfig > @@ -1,18 +1,22 @@ > config TMP105 > bool > depends on I2C > + default y if I2C_DEVICES > > config TMP421 > bool > depends on I2C > + default y if I2C_DEVICES > > config DPS310 > bool > depends on I2C > + default y if I2C_DEVICES > > config EMC141X > bool > depends on I2C > + default y if I2C_DEVICES > > config ADM1272 > bool > @@ -25,3 +29,4 @@ config MAX34451 > config LSM303DLHC_MAG > bool > depends on I2C > + default y if I2C_DEVICES > -- > 2.25.1 > > >