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

Reply via email to