diff --git a/epicardium/modules/ws2812.c b/epicardium/modules/ws2812.c
index 4d16e5a20b4d7ee90a0e36f1bd275bc60140dcce..9221b6a223d55b03798159538dae412961c3d59e 100644
--- a/epicardium/modules/ws2812.c
+++ b/epicardium/modules/ws2812.c
@@ -11,11 +11,11 @@
 
 #define OVERHEAD 33
 
-#define EPIC_WS2812_ZERO_HIGH_TICKS 34 - OVERHEAD
-#define EPIC_WS2812_ZERO_LOW_TICKS 86 - OVERHEAD
-#define EPIC_WS2812_ONE_HIGH_TICKS 86 - OVERHEAD
-#define EPIC_WS2812_ONE_LOW_TICKS 34 - OVERHEAD
-#define EPIC_WS2812_RESET_TCKS 4800 - OVERHEAD
+#define EPIC_WS2812_ZERO_HIGH_TICKS (34 - OVERHEAD)
+#define EPIC_WS2812_ZERO_LOW_TICKS (86 - OVERHEAD)
+#define EPIC_WS2812_ONE_HIGH_TICKS (86 - OVERHEAD)
+#define EPIC_WS2812_ONE_LOW_TICKS (34 - OVERHEAD)
+#define EPIC_WS2812_RESET_TCKS (4800 - OVERHEAD)
 
 static volatile uint32_t counter = 0;
 
@@ -28,7 +28,7 @@ epic_ws2812_delay_ticks(uint32_t ticks)
 }
 
 static inline __attribute__((always_inline)) void
-epic_ws2812_transmit_bit(uint32_t pin, uint8_t bit)
+epic_ws2812_transmit_bit(gpio_cfg_t *pin, uint8_t bit)
 {
 	if (bit != 0) {
 		GPIO_OutSet(pin);
@@ -44,7 +44,7 @@ epic_ws2812_transmit_bit(uint32_t pin, uint8_t bit)
 }
 
 static inline __attribute__((always_inline)) void
-epic_ws2812_transmit_byte(uint32_t pin, uint8_t byte)
+epic_ws2812_transmit_byte(gpio_cfg_t *pin, uint8_t byte)
 {
 	epic_ws2812_transmit_bit(pin, byte & 0b10000000);
 	epic_ws2812_transmit_bit(pin, byte & 0b01000000);
@@ -69,7 +69,7 @@ void epic_ws2812_write(uint8_t pin, uint8_t *pixels, uint32_t n_bytes)
 		epic_ws2812_transmit_byte(pin_cfg, *pixels);
 	} while (++pixels != pixels_end);
 
-	GPIO_OutClr(pin);
+	GPIO_OutClr(pin_cfg);
 	epic_ws2812_delay_ticks(EPIC_WS2812_RESET_TCKS);
 
 	taskEXIT_CRITICAL();