aboutsummaryrefslogtreecommitdiffstats
path: root/keyboards/steelseries/prime_plus/prime_plus.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/steelseries/prime_plus/prime_plus.c')
-rw-r--r--keyboards/steelseries/prime_plus/prime_plus.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/keyboards/steelseries/prime_plus/prime_plus.c b/keyboards/steelseries/prime_plus/prime_plus.c
new file mode 100644
index 0000000000..69db195ef1
--- /dev/null
+++ b/keyboards/steelseries/prime_plus/prime_plus.c
@@ -0,0 +1,40 @@
+// Copyright 2024 Dasky (@daskygit)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "quantum.h"
+#include "graphics/primeplus.qgf.h"
+
+painter_image_handle_t primeplus;
+painter_device_t display;
+
+void board_init(void) {
+ AFIO->MAPR |= AFIO_MAPR_I2C1_REMAP;
+
+ gpio_set_pin_output(A15);
+ gpio_write_pin_high(A15); // Activate D+ pullup
+
+ gpio_set_pin_output(OPTICAL_SW_PWR);
+ gpio_write_pin_low(OPTICAL_SW_PWR); // Enable power for optical switches
+
+ gpio_set_pin_output(OLED_PWR);
+ gpio_write_pin_high(OLED_PWR); // Enable OLED power
+}
+
+void keyboard_post_init_kb(void) {
+ wait_ms(1); // Wait for OLED
+
+ gpio_set_pin_output(OLED_RESET);
+ gpio_write_pin_low(OLED_RESET);
+ wait_us(10); // Minimum wait 1us
+
+ gpio_write_pin_high(OLED_RESET);
+ wait_ms(1); // Minimum wait 1ms
+
+ primeplus = qp_load_image_mem(gfx_primeplus);
+ display = qp_ld7032_make_i2c_device(96, 24, 0x37);
+
+ qp_init(display, QP_ROTATION_180);
+ qp_drawimage(display, 0, 0, primeplus);
+
+ keyboard_post_init_user();
+}