Skip to content

Commit

Permalink
Convert some PS2AVRGB boards to I2C WS2812 driver (qmk#7241)
Browse files Browse the repository at this point in the history
* Convert some PS2AVRGB boards to I2C WS2812 driver

* Fix Travis failure for bface
  • Loading branch information
fauxpark authored and drashna committed Nov 5, 2019
1 parent 0a9a693 commit efa28d0
Show file tree
Hide file tree
Showing 40 changed files with 122 additions and 1,157 deletions.
72 changes: 4 additions & 68 deletions keyboards/ares/ares.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,50 +17,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.

#include "ares.h"

#ifdef RGBLIGHT_ENABLE

#include <string.h>
#include "i2c_master.h"
#include "rgblight.h"

extern rgblight_config_t rgblight_config;

void matrix_init_kb(void) {
i2c_init();
// call user level keymaps, if any
matrix_init_user();
}

// custom RGB driver
void rgblight_set(void) {
if (!rgblight_config.enable) {
memset(led, 0, 3 * RGBLED_NUM);
}

i2c_transmit(0xb0, (uint8_t*)led, 3 * RGBLED_NUM, 100);
}

bool rgb_init = false;

void matrix_scan_kb(void) {
// if LEDs were previously on before poweroff, turn them back on
if (rgb_init == false && rgblight_config.enable) {
i2c_transmit(0xb0, (uint8_t*)led, 3 * RGBLED_NUM, 100);
rgb_init = true;
}

rgblight_task();
matrix_scan_user();
}

#endif

#ifdef BACKLIGHT_ENABLE
void backlight_init_ports(void) {
setPinOutput(D0);
setPinOutput(D1);
setPinOutput(D4);
setPinOutput(D6);
setPinOutput(D0);
setPinOutput(D1);
setPinOutput(D4);
setPinOutput(D6);
}

void backlight_set(uint8_t level) {
Expand All @@ -79,29 +41,3 @@ void backlight_set(uint8_t level) {
}
}
#endif

// Optional override functions below.
// You can leave any or all of these undefined.
// These are only required if you want to perform custom actions.

/*
void matrix_init_kb(void) {
// put your keyboard start-up code here
// runs once when the firmware starts up
matrix_init_user();
}
void matrix_scan_kb(void) {
// put your looping keyboard code here
// runs every cycle (a lot)
matrix_scan_user();
}
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
// put your per-action keyboard code here
// runs for every action, just before processing by the firmware
return process_record_user(keycode, record);
}
void led_set_kb(uint8_t usb_led) {
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
led_set_user(usb_led);
}
*/
19 changes: 1 addition & 18 deletions keyboards/ares/rules.mk
Original file line number Diff line number Diff line change
@@ -1,18 +1,3 @@
# Copyright 2017 Luiz Ribeiro <luizribeiro@gmail.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

# MCU name
MCU = atmega32a

Expand All @@ -34,8 +19,6 @@ CONSOLE_ENABLE = yes
COMMAND_ENABLE = yes
BACKLIGHT_ENABLE = no
RGBLIGHT_ENABLE = no
RGBLIGHT_CUSTOM_DRIVER = yes
WS2812_DRIVER = i2c

OPT_DEFS = -DDEBUG_LEVEL=0

SRC += i2c_master.c
71 changes: 9 additions & 62 deletions keyboards/donutcables/budget96/budget96.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,61 +13,8 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "budget96.h"

#ifdef BACKLIGHT_ENABLE
#include "backlight.h"
#endif
#ifdef RGBLIGHT_ENABLE
#include "rgblight.h"
#endif

#include <avr/pgmspace.h>

#include "action_layer.h"
#include "i2c_master.h"
#include "quantum.h"

__attribute__ ((weak))
void matrix_scan_user(void) {
}

#ifdef RGBLIGHT_ENABLE
extern rgblight_config_t rgblight_config;

void rgblight_set(void) {
if (!rgblight_config.enable) {
for (uint8_t i = 0; i < RGBLED_NUM; i++) {
led[i].r = 0;
led[i].g = 0;
led[i].b = 0;
}
}

i2c_init();
i2c_transmit(0xb0, (uint8_t*)led, 3 * RGBLED_NUM, 100);
}
#endif

void matrix_init_kb(void) {
#ifdef RGBLIGHT_ENABLE
if (rgblight_config.enable) {
i2c_init();
i2c_transmit(0xb0, (uint8_t*)led, 3 * RGBLED_NUM, 100);
}
#endif
// call user level keymaps, if any
matrix_init_user();
}

void matrix_scan_kb(void) {
#ifdef RGBLIGHT_ENABLE
rgblight_task();
#endif
matrix_scan_user();
/* Nothing else for now. */
}

#include "budget96.h"

void backlight_init_ports(void) {
// initialize pins D0, D1, D4 and D6 as output
Expand All @@ -76,25 +23,25 @@ void backlight_init_ports(void) {
setPinOutput(D4);
setPinOutput(D6);

// turn RGB LEDs on
// turn backlight LEDs on
writePinHigh(D0);
writePinHigh(D1);
writePinHigh(D4);
writePinHigh(D6);
}

void backlight_set(uint8_t level) {
if (level == 0) {
// turn RGB LEDs off
void backlight_set(uint8_t level) {
if (level == 0) {
// turn backlight LEDs off
writePinLow(D0);
writePinLow(D1);
writePinLow(D4);
writePinLow(D6);
} else {
// turn RGB LEDs on
} else {
// turn backlight LEDs on
writePinHigh(D0);
writePinHigh(D1);
writePinHigh(D4);
writePinHigh(D6);
}
}
}
}
20 changes: 1 addition & 19 deletions keyboards/donutcables/budget96/rules.mk
Original file line number Diff line number Diff line change
@@ -1,18 +1,3 @@
# Copyright 2017 Luiz Ribeiro <luizribeiro@gmail.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

# MCU name
MCU = atmega32a

Expand All @@ -34,9 +19,6 @@ CONSOLE_ENABLE = yes
COMMAND_ENABLE = yes
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
RGBLIGHT_CUSTOM_DRIVER = yes
WS2812_DRIVER = i2c

OPT_DEFS = -DDEBUG_LEVEL=0

# custom matrix setup
SRC = i2c_master.c
50 changes: 4 additions & 46 deletions keyboards/eve/meteor/meteor.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,49 +14,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#include "i2c_master.h"
#include "quantum.h"

#ifdef RGBLIGHT_ENABLE
#include "rgblight.h"
extern rgblight_config_t rgblight_config;

void rgblight_set(void) {
if (!rgblight_config.enable) {
for (uint8_t i = 0; i < RGBLED_NUM; i++) {
led[i].r = 0;
led[i].g = 0;
led[i].b = 0;
}
}

i2c_init();
i2c_transmit(0xb0, (uint8_t*)led, 3 * RGBLED_NUM, 100);
}
#endif

void matrix_init_kb(void) {
#ifdef RGBLIGHT_ENABLE
if (rgblight_config.enable) {
i2c_init();
i2c_transmit(0xb0, (uint8_t*)led, 3 * RGBLED_NUM, 100);
}
#endif
// call user level keymaps, if any
matrix_init_user();
}

void matrix_scan_kb(void) {
#ifdef RGBLIGHT_ENABLE
rgblight_task();
#endif
matrix_scan_user();
/* Nothing else for now. */
}

__attribute__ ((weak))
void matrix_scan_user(void) {
}
#include "meteor.h"

void backlight_init_ports(void) {
// initialize pins D0, D1, D4 and D6 as output
Expand All @@ -73,17 +31,17 @@ void backlight_init_ports(void) {
}

void backlight_set(uint8_t level) {
if (level == 0) {
if (level == 0) {
// turn backlight LEDs off
writePinLow(D0);
writePinLow(D1);
writePinLow(D4);
writePinLow(D6);
} else {
} else {
// turn backlight LEDs on
writePinHigh(D0);
writePinHigh(D1);
writePinHigh(D4);
writePinHigh(D6);
}
}
}
19 changes: 1 addition & 18 deletions keyboards/eve/meteor/rules.mk
Original file line number Diff line number Diff line change
@@ -1,18 +1,3 @@
# Copyright 2017 Luiz Ribeiro <luizribeiro@gmail.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

# MCU name
MCU = atmega32a

Expand All @@ -34,8 +19,6 @@ CONSOLE_ENABLE = yes
COMMAND_ENABLE = yes
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = no
RGBLIGHT_CUSTOM_DRIVER = no
WS2812_DRIVER = i2c

OPT_DEFS = -DDEBUG_LEVEL=0

QUANTUM_LIB_SRC = i2c_master.c
Loading

0 comments on commit efa28d0

Please sign in to comment.