kernel: leds-ws2812b: fix build with Linux >= 5.18
authorDaniel Golle <daniel@makrotopia.org>
Sat, 8 Jul 2023 13:46:18 +0000 (14:46 +0100)
committerDaniel Golle <daniel@makrotopia.org>
Sat, 8 Jul 2023 14:10:12 +0000 (15:10 +0100)
The return value of the .remove function pointer has changed from
int to void with Linux 5.18. Use a precompiler macro to allow building
the leds-ws2812b module with both, Linux 5.15 and Linux 6.1.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
package/kernel/leds-ws2812b/src/leds-ws2812b.c

index b0d13f52427fbe8e4c1f71c71e711ab3d90bc426..0dba128c1f08ef667523bcaa34249bd59871a482 100644 (file)
@@ -17,6 +17,7 @@
 #include <linux/property.h>
 #include <linux/spi/spi.h>
 #include <linux/mutex.h>
+#include <linux/version.h>
 
 #define WS2812B_BYTES_PER_COLOR 3
 #define WS2812B_NUM_COLORS 3
@@ -191,7 +192,11 @@ ERR_UNREG_LEDS:
        return ret;
 }
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,18,0)
+static void ws2812b_remove(struct spi_device *spi)
+#else
 static int ws2812b_remove(struct spi_device *spi)
+#endif
 {
        struct ws2812b_priv *priv = spi_get_drvdata(spi);
        int cur_led;
@@ -201,7 +206,9 @@ static int ws2812b_remove(struct spi_device *spi)
        kfree(priv->data_buf);
        mutex_destroy(&priv->mutex);
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,18,0)
        return 0;
+#endif
 }
 
 static const struct spi_device_id ws2812b_spi_ids[] = {