mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-12-11 12:45:33 +06:00
208ebf54a9
* Begin WS2812 API rework * Move RGBW conversion, clean up color.h, fix RGBW for AVR bitbang * Formatting & update PS2AVRGB I2C driver (untested) * Tested ARM bitbang RGB+RGBW * Tested ARM SPI RGB - RGBW not working * Tested ARM PWM RGB+RGBW * Tested RP2040 PIO driver RGB+RGBW * Update RGBLight * Formatting * Fix BM60HSRGB rev2 * Fix oddforge/vea * Fix 1k and XD002 RGBLite * Fix model_m/mschwingen * Fix handwired/promethium * Rename `WS2812_LED_TOTAL` for BM60HSRGB * Fix work_louder boards * Fix dawn60 * Fix rgbkb/pan * Fix neson_design/700e and n6 * Fix ergodox_ez/shine * ergodox_ez/shine: invert indices for left half * Fix matrix/abelx * Fix matrix/m20add * Remove custom rgblight driver for matrix/noah - should be done with lighting layers * Fix LED indexes for RGBLight split * Rename `convert_rgb_to_rgbw()` to `ws2812_rgb_to_rgbw()` * Update WS2812 API docs * `ergodox_ez/shine`: simplify LED index calculation * LED/RGB Matrix: Add weak function for LED index resolution * Bandaid fix for RGB Matrix splits not using WS2812 * `steelseries/prime_plus`: redo custom RGBLight driver * Update keyboards/steelseries/prime_plus/rgblight_custom.c Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com> --------- Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
55 lines
1.2 KiB
C
55 lines
1.2 KiB
C
/**
|
|
* m20add.c
|
|
*/
|
|
|
|
#include "m20add.h"
|
|
#include "tca6424.h"
|
|
#include "rgb_ring.h"
|
|
#include "i2c_master.h"
|
|
|
|
void set_pin(uint16_t pin)
|
|
{
|
|
uint8_t data = tca6424_read_port(GET_PORT(pin));
|
|
data |= ( 1 << GET_PIN(pin));
|
|
tca6424_write_port(GET_PORT(pin), data);
|
|
}
|
|
|
|
void clear_pin(uint16_t pin)
|
|
{
|
|
uint8_t data = tca6424_read_port(GET_PORT(pin));
|
|
data &= ~( 1 << GET_PIN(pin));
|
|
tca6424_write_port(GET_PORT(pin), data);
|
|
}
|
|
|
|
uint8_t read_pin(uint16_t pin)
|
|
{
|
|
uint8_t data = tca6424_read_port(GET_PORT(pin));
|
|
return (data & (1<<GET_PIN(pin))) ? 1 : 0;
|
|
}
|
|
|
|
void housekeeping_task_kb(void) {
|
|
#ifdef RGBLIGHT_ENABLE
|
|
rgb_ring_task();
|
|
#endif
|
|
}
|
|
|
|
static uint16_t caps_lock_pin = DEF_PIN(TCA6424_PORT2, 3);
|
|
static uint16_t scroll_lock_pin = DEF_PIN(TCA6424_PORT0, 1);
|
|
|
|
bool led_update_kb(led_t led_state) {
|
|
bool res = led_update_user(led_state);
|
|
if (res) {
|
|
led_state.caps_lock ? set_pin(caps_lock_pin) : clear_pin(caps_lock_pin);
|
|
led_state.scroll_lock ? set_pin(scroll_lock_pin) : clear_pin(scroll_lock_pin);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
#define REBOOT_MAGIC 0x41544B42
|
|
|
|
void bootloader_jump(void) {
|
|
// set the magic number for resetting to the bootloader
|
|
*(uint32_t *)(&(RTCD1.rtc->BKP0R)) = REBOOT_MAGIC;
|
|
NVIC_SystemReset();
|
|
}
|