]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
platform: cznic: turris-omnia-mcu: Make TRNG code optional
authorMarek Behún <kabel@kernel.org>
Fri, 19 Jul 2024 08:57:54 +0000 (10:57 +0200)
committerArnd Bergmann <arnd@arndb.de>
Wed, 7 Aug 2024 12:43:54 +0000 (14:43 +0200)
Make the TRNG part of the driver optional, under a boolean config
option.

This makes the driver turris-omnia-mcu available for compilation even if
HW_RANDOM is disabled.

Fixes: ed46f1f7731d ("platform: cznic: turris-omnia-mcu: fix Kconfig dependencies")
Signed-off-by: Marek Behún <kabel@kernel.org>
Link: https://lore.kernel.org/r/20240719085756.30598-3-kabel@kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
drivers/platform/cznic/Kconfig
drivers/platform/cznic/Makefile
drivers/platform/cznic/turris-omnia-mcu.h

index b56c343e21d61450968bb0a58b2f75fce8a4e6de..98f17562646e3fb8be0a752dd498fd7142f30a65 100644 (file)
@@ -18,7 +18,6 @@ config TURRIS_OMNIA_MCU
        depends on I2C
        depends on OF
        depends on GPIOLIB
-       depends on HW_RANDOM
        depends on RTC_CLASS
        select GPIOLIB_IRQCHIP
        help
@@ -28,7 +27,6 @@ config TURRIS_OMNIA_MCU
          - board poweroff into true low power mode (with voltage regulators
            disabled) and the ability to configure wake up from this mode (via
            rtcwake)
-         - true random number generator (if available on the MCU)
          - GPIO pins
            - to get front button press events (the front button can be
              configured either to generate press events to the CPU or to change
@@ -56,6 +54,14 @@ config TURRIS_OMNIA_MCU_WATCHDOG
          Say Y here to add support for watchdog provided by CZ.NIC's Turris
          Omnia MCU.
 
+config TURRIS_OMNIA_MCU_TRNG
+       bool "Turris Omnia MCU true random number generator"
+       default y
+       depends on HW_RANDOM
+       help
+         Say Y here to add support for the true random number generator
+         provided by CZ.NIC's Turris Omnia MCU.
+
 endif # TURRIS_OMNIA_MCU
 
 endif # CZNIC_PLATFORMS
index 7599b483505605b74f5bb2c6df2eaeb25387d51c..0c28fa859391cdf7e221e92ee4c1424e93ff2484 100644 (file)
@@ -4,5 +4,5 @@ obj-$(CONFIG_TURRIS_OMNIA_MCU)  += turris-omnia-mcu.o
 turris-omnia-mcu-y             := turris-omnia-mcu-base.o
 turris-omnia-mcu-y             += turris-omnia-mcu-gpio.o
 turris-omnia-mcu-y             += turris-omnia-mcu-sys-off-wakeup.o
-turris-omnia-mcu-y             += turris-omnia-mcu-trng.o
+turris-omnia-mcu-$(CONFIG_TURRIS_OMNIA_MCU_TRNG)               += turris-omnia-mcu-trng.o
 turris-omnia-mcu-$(CONFIG_TURRIS_OMNIA_MCU_WATCHDOG)           += turris-omnia-mcu-watchdog.o
index 85bf9ab39356f5ad3b86743a250b6c6ccb6272ca..d07a32cfe238dc7d561088cf82411965b4f54e76 100644 (file)
@@ -52,9 +52,11 @@ struct omnia_mcu {
        struct watchdog_device wdt;
 #endif
 
+#ifdef CONFIG_TURRIS_OMNIA_MCU_TRNG
        /* true random number generator */
        struct hwrng trng;
        struct completion trng_entropy_ready;
+#endif
 };
 
 int omnia_cmd_write_read(const struct i2c_client *client,
@@ -190,7 +192,15 @@ extern const struct attribute_group omnia_mcu_poweroff_group;
 
 int omnia_mcu_register_gpiochip(struct omnia_mcu *mcu);
 int omnia_mcu_register_sys_off_and_wakeup(struct omnia_mcu *mcu);
+
+#ifdef CONFIG_TURRIS_OMNIA_MCU_TRNG
 int omnia_mcu_register_trng(struct omnia_mcu *mcu);
+#else
+static inline int omnia_mcu_register_trng(struct omnia_mcu *mcu)
+{
+       return 0;
+}
+#endif
 
 #ifdef CONFIG_TURRIS_OMNIA_MCU_WATCHDOG
 int omnia_mcu_register_watchdog(struct omnia_mcu *mcu);