aboutsummaryrefslogtreecommitdiff
path: root/keyboards/bpiphany
diff options
context:
space:
mode:
authorAndrew Missel <dyindude@users.noreply.github.com>2022-01-08 15:22:14 -0600
committerGitHub <noreply@github.com>2022-01-08 13:22:14 -0800
commit4c080be8e8fd2d1a7a818022634b08c76ee92e40 (patch)
tree0984c4a100022ddc3d1faef2735d7e20b62eb153 /keyboards/bpiphany
parent31331e6d33a46d98a3a853bd7fef39f898977386 (diff)
downloadqmk_firmware-4c080be8e8fd2d1a7a818022634b08c76ee92e40.tar.gz
qmk_firmware-4c080be8e8fd2d1a7a818022634b08c76ee92e40.zip
[Keyboard] Bathroom Epiphanies Frosty Flake rev 20130602 (#15365)
* add optional support for Frosty Flake rev 20130602 * update documentation with instructions on building for rev 20130602 * support revisions using subfolders instead of preprocessor directives * rules.mk cleanup
Diffstat (limited to 'keyboards/bpiphany')
-rw-r--r--keyboards/bpiphany/frosty_flake/20130602/20130602.c (renamed from keyboards/bpiphany/frosty_flake/frosty_flake.c)0
-rw-r--r--keyboards/bpiphany/frosty_flake/20130602/matrix.c86
-rw-r--r--keyboards/bpiphany/frosty_flake/20130602/rules.mk22
-rw-r--r--keyboards/bpiphany/frosty_flake/20140521/20140521.c24
-rw-r--r--keyboards/bpiphany/frosty_flake/20140521/matrix.c (renamed from keyboards/bpiphany/frosty_flake/matrix.c)1
-rw-r--r--keyboards/bpiphany/frosty_flake/20140521/rules.mk22
-rw-r--r--keyboards/bpiphany/frosty_flake/readme.md8
-rw-r--r--keyboards/bpiphany/frosty_flake/rules.mk23
8 files changed, 162 insertions, 24 deletions
diff --git a/keyboards/bpiphany/frosty_flake/frosty_flake.c b/keyboards/bpiphany/frosty_flake/20130602/20130602.c
index be4e1a312..be4e1a312 100644
--- a/keyboards/bpiphany/frosty_flake/frosty_flake.c
+++ b/keyboards/bpiphany/frosty_flake/20130602/20130602.c
diff --git a/keyboards/bpiphany/frosty_flake/20130602/matrix.c b/keyboards/bpiphany/frosty_flake/20130602/matrix.c
new file mode 100644
index 000000000..e0337f9ec
--- /dev/null
+++ b/keyboards/bpiphany/frosty_flake/20130602/matrix.c
@@ -0,0 +1,86 @@
1/*
2 Copyright 2017 Gabriel Young <gabeplaysdrums@live.com>
3
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 2 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#include <util/delay.h>
19#include "matrix.h"
20
21
22static matrix_row_t scan_col(void) {
23 // Each of the 8 columns is read off pins as below
24 // 7 6 5 4 3 2 1 0
25 // ,--,--,--,--,--,--,--,--,
26 // |B0|B3|B2|B1|B6|B4|B5|C7|
27 // `--`--`--`--`--`--`--`--`
28 return (
29 (PINC&(1<<2) ? 0 : ((matrix_row_t)1<<0)) |
30 (PIND&(1<<0) ? 0 : ((matrix_row_t)1<<1)) |
31 (PIND&(1<<1) ? 0 : ((matrix_row_t)1<<2)) |
32 (PINC&(1<<7) ? 0 : ((matrix_row_t)1<<3)) |
33 (PIND&(1<<5) ? 0 : ((matrix_row_t)1<<4)) |
34 (PIND&(1<<4) ? 0 : ((matrix_row_t)1<<5)) |
35 (PIND&(1<<2) ? 0 : ((matrix_row_t)1<<6)) |
36 (PIND&(1<<6) ? 0 : ((matrix_row_t)1<<7))
37 );
38}
39
40static void select_row(uint8_t row) {
41 switch (row) {
42 case 0: PORTB = (PORTB & ~0b01111110) | 0b00111010; break;
43 case 1: PORTB = (PORTB & ~0b01111110) | 0b01011000; break;
44 case 2: PORTB = (PORTB & ~0b01111110) | 0b01110000; break;
45 case 3: PORTB = (PORTB & ~0b01111110) | 0b01101110; break;
46 case 4: PORTB = (PORTB & ~0b01111110) | 0b01101100; break;
47 case 5: PORTB = (PORTB & ~0b01111110) | 0b01101010; break;
48 case 6: PORTB = (PORTB & ~0b01111110) | 0b01101000; break;
49 case 7: PORTB = (PORTB & ~0b01111110) | 0b01100100; break;
50 case 8: PORTB = (PORTB & ~0b01111110) | 0b01100000; break;
51 case 9: PORTB = (PORTB & ~0b01111110) | 0b01100010; break;
52 case 10: PORTB = (PORTB & ~0b01111110) | 0b00011010; break;
53 case 11: PORTB = (PORTB & ~0b01111110) | 0b00011000; break;
54 case 12: PORTB = (PORTB & ~0b01111110) | 0b00111100; break;
55 case 13: PORTB = (PORTB & ~0b01111110) | 0b01100110; break;
56 case 14: PORTB = (PORTB & ~0b01111110) | 0b00111000; break;
57 case 15: PORTB = (PORTB & ~0b01111110) | 0b01110010; break;
58 case 16: PORTB = (PORTB & ~0b01111110) | 0b00011110; break;
59 case 17: PORTB = (PORTB & ~0b01111110) | 0b00111110; break;
60 }
61}
62
63void matrix_init_custom(void) {
64 /* Column output pins */
65 DDRB |= 0b01111110;
66 /* Row input pins */
67 DDRC &= ~0b10000100;
68 DDRD &= ~0b01110111;
69 PORTC |= 0b10000100;
70 PORTD |= 0b01110111;
71}
72
73// matrix is 18 uint8_t.
74// we select the row (one of 18), then read the column
75bool matrix_scan_custom(matrix_row_t current_matrix[]) {
76 bool has_changed = false;
77 for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
78 matrix_row_t orig = current_matrix[row];
79 select_row(row);
80 _delay_us(3);
81 current_matrix[row] = scan_col();
82 has_changed |= (orig != current_matrix[row]);
83 }
84
85 return has_changed;
86}
diff --git a/keyboards/bpiphany/frosty_flake/20130602/rules.mk b/keyboards/bpiphany/frosty_flake/20130602/rules.mk
new file mode 100644
index 000000000..dc435a332
--- /dev/null
+++ b/keyboards/bpiphany/frosty_flake/20130602/rules.mk
@@ -0,0 +1,22 @@
1# MCU name
2MCU = atmega32u2
3
4# Bootloader selection
5BOOTLOADER = atmel-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15NKRO_ENABLE = no # Enable N-Key Rollover
16BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
17AUDIO_ENABLE = no # Audio output
18
19CUSTOM_MATRIX = lite
20SRC += 20130602/matrix.c
21
22LAYOUTS = tkl_ansi
diff --git a/keyboards/bpiphany/frosty_flake/20140521/20140521.c b/keyboards/bpiphany/frosty_flake/20140521/20140521.c
new file mode 100644
index 000000000..cd425cffa
--- /dev/null
+++ b/keyboards/bpiphany/frosty_flake/20140521/20140521.c
@@ -0,0 +1,24 @@
1#include "frosty_flake.h"
2
3void keyboard_pre_init_kb() {
4 setPinOutput(B7); // num lock
5 writePinHigh(B7);
6 setPinOutput(C5); // caps lock
7 writePinHigh(C7);
8 setPinOutput(C6); // scroll lock
9 writePinHigh(C6);
10
11 keyboard_pre_init_user();
12}
13
14bool led_update_kb(led_t usb_led) {
15 // user requests no further processing
16 if (!led_update_user(usb_led))
17 return true;
18
19 writePin(B7, !usb_led.caps_lock);
20 writePin(C5, !usb_led.num_lock);
21 writePin(C6, !usb_led.scroll_lock);
22
23 return true;
24}
diff --git a/keyboards/bpiphany/frosty_flake/matrix.c b/keyboards/bpiphany/frosty_flake/20140521/matrix.c
index 4517c7af5..24c7617b1 100644
--- a/keyboards/bpiphany/frosty_flake/matrix.c
+++ b/keyboards/bpiphany/frosty_flake/20140521/matrix.c
@@ -18,6 +18,7 @@
18#include <util/delay.h> 18#include <util/delay.h>
19#include "matrix.h" 19#include "matrix.h"
20 20
21
21static matrix_row_t scan_col(void) { 22static matrix_row_t scan_col(void) {
22 // Each of the 8 columns is read off pins as below 23 // Each of the 8 columns is read off pins as below
23 // 7 6 5 4 3 2 1 0 24 // 7 6 5 4 3 2 1 0
diff --git a/keyboards/bpiphany/frosty_flake/20140521/rules.mk b/keyboards/bpiphany/frosty_flake/20140521/rules.mk
new file mode 100644
index 000000000..035e59f91
--- /dev/null
+++ b/keyboards/bpiphany/frosty_flake/20140521/rules.mk
@@ -0,0 +1,22 @@
1# MCU name
2MCU = atmega32u2
3
4# Bootloader selection
5BOOTLOADER = atmel-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15NKRO_ENABLE = no # Enable N-Key Rollover
16BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
17AUDIO_ENABLE = no # Audio output
18
19CUSTOM_MATRIX = lite
20SRC += 20140521/matrix.c
21
22LAYOUTS = tkl_ansi
diff --git a/keyboards/bpiphany/frosty_flake/readme.md b/keyboards/bpiphany/frosty_flake/readme.md
index 5917022a8..7c6408518 100644
--- a/keyboards/bpiphany/frosty_flake/readme.md
+++ b/keyboards/bpiphany/frosty_flake/readme.md
@@ -1,7 +1,7 @@
1# Frosty Flake Controller 1# Frosty Flake Controller
2 2
3This is the firmware for Rev. 20140521 of the Frosty Flake controller 3This is the firmware for the Frosty Flake controller by
4by [Bathroom Epiphanies](http://bathroomepiphanies.com/controllers/), 4[Bathroom Epiphanies](http://bathroomepiphanies.com/controllers/),
5a replacement controller for the [Cooler Master Quick Fire 5a replacement controller for the [Cooler Master Quick Fire
6Rapid](http://www.coolermaster.com/peripheral/keyboards/quickfirerapid/). 6Rapid](http://www.coolermaster.com/peripheral/keyboards/quickfirerapid/).
7 7
@@ -11,6 +11,10 @@ but has been cleaned up to match the
11[schematic](https://deskthority.net/wiki/File:Frosty_Flake_Schematics.pdf) 11[schematic](https://deskthority.net/wiki/File:Frosty_Flake_Schematics.pdf)
12and gone through some minor refactoring for QMK. 12and gone through some minor refactoring for QMK.
13 13
14## Revision support
15There are two revisions of this controller. 20140521 is built by default.
16If you need to build for 20130602, it can be built with `make bpiphany/frosty_flake/20130602`
17
14## 104 and 87 layout support 18## 104 and 87 layout support
15 19
16Support for both 104 key and 87 key layouts is provided. See the 20Support for both 104 key and 87 key layouts is provided. See the
diff --git a/keyboards/bpiphany/frosty_flake/rules.mk b/keyboards/bpiphany/frosty_flake/rules.mk
index 38e02ec18..e5402b32f 100644
--- a/keyboards/bpiphany/frosty_flake/rules.mk
+++ b/keyboards/bpiphany/frosty_flake/rules.mk
@@ -1,22 +1 @@
1# MCU name DEFAULT_FOLDER=bpiphany/frosty_flake/20140521
2MCU = atmega32u2
3
4# Bootloader selection
5BOOTLOADER = atmel-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15NKRO_ENABLE = no # Enable N-Key Rollover
16BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
17AUDIO_ENABLE = no # Audio output
18
19CUSTOM_MATRIX = lite
20SRC += matrix.c
21
22LAYOUTS = tkl_ansi