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

This makes the turris-omnia-mcu driver available for compilation even if
RTC_CLASS 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-4-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-base.c
drivers/platform/cznic/turris-omnia-mcu.h

index 98f17562646e3fb8be0a752dd498fd7142f30a65..f02856226dd74e6dc9b114a08a6c624c348abef3 100644 (file)
@@ -18,15 +18,11 @@ config TURRIS_OMNIA_MCU
        depends on I2C
        depends on OF
        depends on GPIOLIB
-       depends on RTC_CLASS
        select GPIOLIB_IRQCHIP
        help
          Say Y here to add support for the features implemented by the
          microcontroller on the CZ.NIC's Turris Omnia SOHO router.
          The features include:
-         - board poweroff into true low power mode (with voltage regulators
-           disabled) and the ability to configure wake up from this mode (via
-           rtcwake)
          - 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
@@ -45,6 +41,15 @@ config TURRIS_OMNIA_MCU
 
 if TURRIS_OMNIA_MCU
 
+config TURRIS_OMNIA_MCU_SYSOFF_WAKEUP
+       bool "Turris Omnia MCU system off and RTC wakeup"
+       default y
+       depends on RTC_CLASS
+       help
+         Say Y here to add support for CZ.NIC's Turris Omnia board poweroff
+         into true low power mode (with voltage regulators disabled) and the
+         ability to configure wake up from this mode (via rtcwake).
+
 config TURRIS_OMNIA_MCU_WATCHDOG
        bool "Turris Omnia MCU watchdog"
        default y
index 0c28fa859391cdf7e221e92ee4c1424e93ff2484..380530ba74f7be98b86c00d1a76cc5de8d2f787c 100644 (file)
@@ -3,6 +3,6 @@
 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-$(CONFIG_TURRIS_OMNIA_MCU_SYSOFF_WAKEUP)      += turris-omnia-mcu-sys-off-wakeup.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 c68a7a84a9519a65005b23292bb32848acc50342..7b514e60273dc8cc5b1377bc9585e763d71a1621 100644 (file)
@@ -198,7 +198,9 @@ static const struct attribute_group omnia_mcu_base_group = {
 static const struct attribute_group *omnia_mcu_groups[] = {
        &omnia_mcu_base_group,
        &omnia_mcu_gpio_group,
+#ifdef CONFIG_TURRIS_OMNIA_MCU_SYSOFF_WAKEUP
        &omnia_mcu_poweroff_group,
+#endif
        NULL
 };
 
index d07a32cfe238dc7d561088cf82411965b4f54e76..75fa2111546f773f39e2d686a090a440d25a3ca0 100644 (file)
@@ -42,10 +42,12 @@ struct omnia_mcu {
        unsigned long last_status;
        bool button_pressed_emul;
 
+#ifdef CONFIG_TURRIS_OMNIA_MCU_SYSOFF_WAKEUP
        /* RTC device for configuring wake-up */
        struct rtc_device *rtcdev;
        u32 rtc_alarm;
        bool front_button_poweron;
+#endif
 
 #ifdef CONFIG_TURRIS_OMNIA_MCU_WATCHDOG
        /* MCU watchdog */
@@ -188,10 +190,17 @@ static inline int omnia_cmd_read_u8(const struct i2c_client *client, u8 cmd,
 
 extern const u8 omnia_int_to_gpio_idx[32];
 extern const struct attribute_group omnia_mcu_gpio_group;
-extern const struct attribute_group omnia_mcu_poweroff_group;
-
 int omnia_mcu_register_gpiochip(struct omnia_mcu *mcu);
+
+#ifdef CONFIG_TURRIS_OMNIA_MCU_SYSOFF_WAKEUP
+extern const struct attribute_group omnia_mcu_poweroff_group;
 int omnia_mcu_register_sys_off_and_wakeup(struct omnia_mcu *mcu);
+#else
+static inline int omnia_mcu_register_sys_off_and_wakeup(struct omnia_mcu *mcu)
+{
+       return 0;
+}
+#endif
 
 #ifdef CONFIG_TURRIS_OMNIA_MCU_TRNG
 int omnia_mcu_register_trng(struct omnia_mcu *mcu);