First SPV1 support

This commit is contained in:
Gondolindrim 2023-09-25 23:52:21 -03:00
parent 6eb2e43a8d
commit f0167b0187
No known key found for this signature in database
GPG Key ID: A44E7AEDE212F56C
9 changed files with 329 additions and 0 deletions

34
keyboards/spv1/config.h Normal file
View File

@ -0,0 +1,34 @@
/* Copyright 2023 Gondolindrim <gondolindrim@acheronproject.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/>.
*/
#pragma once
#define BACKLIGHT_PWM_DRIVER PWMD3
#define BACKLIGHT_PWM_CHANNEL 2
#define BACKLIGHT_PAL_MODE 2
#define LED_CAPS A8
#define LED_IND1 B14
#define LED_IND2 B15
#define LED_IND3 C6
#define LED_IND4 B13
#define LED_IND5 B1
#define LED_IND6 B12
#define LED_IND7 B10
#define LED_IND8 B0
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE 4096

21
keyboards/spv1/halconf.h Normal file
View File

@ -0,0 +1,21 @@
/* Copyright 2023 Gondolindrim <gondolindrim@acheronproject.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/>.
*/
#pragma once
#define HAL_USE_PWM TRUE
#include_next <halconf.h>

138
keyboards/spv1/info.json Normal file
View File

@ -0,0 +1,138 @@
{
"keyboard_name": "SPV1",
"manufacturer": "Bisoromi",
"url": "",
"maintainer": "Gondolindrim",
"usb": {
"vid": "0xAC11",
"pid": "0x5356",
"device_version": "0.0.1"
},
"processor": "STM32F401",
"bootloader": "stm32-dfu",
"matrix_pins": {
"cols": ["A5" ,"A6" ,"C4" ,"C5","C8" ,"C9" ,"D2" ,"C12","C11","C10","A10","B3" ,"B5" ,"B4" ,"B8" ,"B9" ,"C13","C14","C15" ],
"rows": ["C3" ,"C2" ,"C1" ,"C0","A15","A7" ,"A0" ]
},
"features": {
"bootmagic": true,
"extrakey": true,
"mousekey": true,
"backlight": true
},
"backlight": {
"breathing": true,
"levels": 30,
"pin": "C7"
},
"diode_direction": "COL2ROW",
"layouts": {
"LAYOUT": {
"layout": [
{"label":"PrtSc", "matrix":[ 0, 0], "x":0 , "y":0 },
{"label":"Scroll Lock", "matrix":[ 0, 1], "x":1 , "y":0 },
{"label":"Pause", "matrix":[ 0, 2], "x":2 , "y":0 },
{"label":"Esc", "matrix":[ 0, 4], "x":4.25 , "y":0 },
{"label":"F1", "matrix":[ 0, 5], "x":5.75 , "y":0 },
{"label":"F2", "matrix":[ 0, 6], "x":6.75 , "y":0 },
{"label":"F3", "matrix":[ 0, 7], "x":7.75 , "y":0 },
{"label":"F4", "matrix":[ 0, 8], "x":8.75 , "y":0 },
{"label":"F5", "matrix":[ 0, 9], "x":10.25, "y":0 },
{"label":"F6", "matrix":[ 0,10], "x":11.25, "y":0 },
{"label":"F7", "matrix":[ 0,11], "x":12.25, "y":0 },
{"label":"F8", "matrix":[ 0,12], "x":13.25, "y":0 },
{"label":"F9", "matrix":[ 0,13], "x":14.75, "y":0 },
{"label":"F10", "matrix":[ 0,14], "x":15.75, "y":0 },
{"label":"F11", "matrix":[ 0,15], "x":16.75, "y":0 },
{"label":"F12", "matrix":[ 0,16], "x":17.75, "y":0 },
{ "matrix":[ 0,17], "x":17.25, "y":1.25 },
{"label":"F13", "matrix":[ 0,18], "x":19.25, "y":0 },
{ "matrix":[ 1, 0], "x":0 , "y":1.25 },
{ "matrix":[ 1, 1], "x":1 , "y":1.25 },
{ "matrix":[ 1, 2], "x":2 , "y":1.25 },
{ "matrix":[ 1, 3], "x":3 , "y":1.25 },
{"label":"~", "matrix":[ 1, 4], "x":4.25 , "y":1.25 },
{"label":"1!", "matrix":[ 1, 5], "x":5.25 , "y":1.25 },
{"label":"2@", "matrix":[ 1, 6], "x":6.25 , "y":1.25 },
{"label":"3#", "matrix":[ 1, 7], "x":7.25 , "y":1.25 },
{"label":"4$", "matrix":[ 1, 8], "x":8.25 , "y":1.25 },
{"label":"5%", "matrix":[ 1, 9], "x":9.25 , "y":1.25 },
{"label":"6^", "matrix":[ 1,10], "x":10.25, "y":1.25 },
{"label":"7&", "matrix":[ 1,11], "x":11.25, "y":1.25 },
{"label":"8*", "matrix":[ 1,12], "x":12.25, "y":1.25 },
{"label":"9(", "matrix":[ 1,13], "x":13.25, "y":1.25 },
{"label":"0)", "matrix":[ 1,14], "x":14.25, "y":1.25 },
{"label":"-_", "matrix":[ 1,15], "x":15.25, "y":1.25 },
{"label":"=+", "matrix":[ 1,16], "x":16.25, "y":1.25 },
{ "matrix":[ 1,17], "x":18.25, "y":1.25 },
{"label":"Delete", "matrix":[ 1,18], "x":19.25, "y":1.25 },
{ "matrix":[ 2, 0], "x":0 , "y":2.25 },
{ "matrix":[ 2, 1], "x":1 , "y":2.25 },
{ "matrix":[ 2, 2], "x":2 , "y":2.25 },
{ "matrix":[ 2, 3], "x":3 , "y":2.25 },
{"label":"Tab", "matrix":[ 2, 4], "x":4.25 , "y":2.25, "w":1.5 },
{"label":"Q", "matrix":[ 2, 5], "x":5.75 , "y":2.25 },
{"label":"W", "matrix":[ 2, 6], "x":6.75 , "y":2.25 },
{"label":"E", "matrix":[ 2, 7], "x":7.75 , "y":2.25 },
{"label":"R", "matrix":[ 2, 8], "x":8.75 , "y":2.25 },
{"label":"T", "matrix":[ 2, 9], "x":9.75 , "y":2.25 },
{"label":"Y", "matrix":[ 2,10], "x":10.75, "y":2.25 },
{"label":"U", "matrix":[ 2,11], "x":11.75, "y":2.25 },
{"label":"I", "matrix":[ 2,12], "x":12.75, "y":2.25 },
{"label":"O", "matrix":[ 2,13], "x":13.75, "y":2.25 },
{"label":"P", "matrix":[ 2,14], "x":14.75, "y":2.25 },
{"label":"[{", "matrix":[ 2,15], "x":15.75, "y":2.25 },
{"label":"]}", "matrix":[ 2,16], "x":16.75, "y":2.25 },
{"label":"\\|", "matrix":[ 2,17], "x":17.75, "y":2.25, "w":1.5 },
{"label":"PgUp", "matrix":[ 2,18], "x":19.25, "y":2.25 },
{ "matrix":[ 3, 0], "x":0 , "y":3.25 },
{ "matrix":[ 3, 1], "x":1 , "y":3.25 },
{ "matrix":[ 3, 2], "x":2 , "y":3.25 },
{ "matrix":[ 3, 3], "x":3 , "y":3.25 },
{"label":"Caps Lock", "matrix":[ 3, 4], "x":4.25 , "y":3.25, "w":1.75 },
{"label":"A", "matrix":[ 3, 5], "x":6 , "y":3.25 },
{"label":"S", "matrix":[ 3, 6], "x":7 , "y":3.25 },
{"label":"D", "matrix":[ 3, 7], "x":8 , "y":3.25 },
{"label":"F", "matrix":[ 3, 8], "x":9 , "y":3.25 },
{"label":"G", "matrix":[ 3, 9], "x":10 , "y":3.25 },
{"label":"H", "matrix":[ 3,10], "x":11 , "y":3.25 },
{"label":"J", "matrix":[ 3,11], "x":12 , "y":3.25 },
{"label":"K", "matrix":[ 3,13], "x":13 , "y":3.25 },
{"label":"L", "matrix":[ 3,14], "x":14 , "y":3.25 },
{"label":":", "matrix":[ 3,15], "x":15 , "y":3.25 },
{"label":"\"", "matrix":[ 3,16], "x":16 , "y":3.25 },
{"label":"Enter", "matrix":[ 3,17], "x":17 , "y":3.25, "w":2.25 },
{"label":"PgDn", "matrix":[ 3,18], "x":19.25, "y":3.25 },
{ "matrix":[ 4, 0], "x":0 , "y":4.25 },
{ "matrix":[ 4, 1], "x":1 , "y":4.25 },
{ "matrix":[ 4, 2], "x":2 , "y":4.25 },
{ "matrix":[ 4, 3], "x":3 , "y":4.25 },
{"label":"Shift", "matrix":[ 4, 5], "x":4.25 , "y":4.25, "w":2.25 },
{"label":"Z", "matrix":[ 4, 6], "x":6.5 , "y":4.25 },
{"label":"X", "matrix":[ 4, 7], "x":7.5 , "y":4.25 },
{"label":"C", "matrix":[ 4, 8], "x":8.5 , "y":4.25 },
{"label":"V", "matrix":[ 4, 9], "x":9.5 , "y":4.25 },
{"label":"B", "matrix":[ 4,10], "x":10.5 , "y":4.25 },
{"label":"N", "matrix":[ 4,11], "x":11.5 , "y":4.25 },
{"label":"M", "matrix":[ 4,12], "x":12.5 , "y":4.25 },
{"label":",<", "matrix":[ 4,13], "x":13.5 , "y":4.25 },
{"label":".>", "matrix":[ 4,14], "x":14.5 , "y":4.25 },
{"label":"/?", "matrix":[ 4,15], "x":15.5 , "y":4.25 },
{"label":"Shift", "matrix":[ 4,16], "x":16.5 , "y":4.25, "w":1.75 },
{"label":"\u2191", "matrix":[ 4,17], "x":18.25, "y":4.25 },
{"label":"Fn", "matrix":[ 4,18], "x":19.25, "y":4.25 },
{ "matrix":[ 5, 0], "x":0 , "y":5.25 },
{ "matrix":[ 5, 1], "x":1 , "y":5.25 },
{ "matrix":[ 5, 2], "x":2 , "y":5.25 },
{ "matrix":[ 5, 3], "x":3 , "y":5.25 },
{"label":"Ctrl", "matrix":[ 5, 5], "x":4.25 , "y":5.25, "w":1.5 },
{"label":"Alt", "matrix":[ 5, 7], "x":6.75 , "y":5.25, "w":1.5 },
{"label":"Space", "matrix":[ 5,11], "x":8.25 , "y":5.25, "w":7 },
{"label":"Alt", "matrix":[ 6,15], "x":15.25, "y":5.25, "w":1.5 },
{"label":"\u2190", "matrix":[ 6,16], "x":17.25, "y":5.25 },
{"label":"\u2193", "matrix":[ 6,17], "x":18.25, "y":5.25 },
{"label":"\u2192", "matrix":[ 6,18], "x":19.25, "y":5.25 }
]
}
}
}

View File

@ -0,0 +1,35 @@
/* Copyright 2023 Gondolindrim <gondolindrim@acheronproject.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/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
MO(1) , KC_PSCR, KC_SCRL, KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_BSPC, KC_F13 ,
KC_NUM , KC_PSLS, KC_PAST, KC_PMNS , KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_DEL ,
KC_P7 , KC_P8 , KC_P9 , KC_NO , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
KC_P4 , KC_P5 , KC_P6 , KC_PPLS , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_COLN, KC_QUOT, KC_ENT , KC_PGDN,
KC_P1 , KC_P2 , KC_P3 , KC_NO , KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , MO(1) ,
KC_NO , KC_P0 , KC_PDOT, KC_PENT , KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

@ -0,0 +1,35 @@
/* Copyright 2023 Gondolindrim <gondolindrim@acheronproject.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/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
MO(1) , KC_PSCR, KC_SCRL, KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_BSPC, KC_F13 ,
KC_NUM , KC_PSLS, KC_PAST, KC_PMNS , KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_DEL ,
KC_P7 , KC_P8 , KC_P9 , KC_NO , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
KC_P4 , KC_P5 , KC_P6 , KC_PPLS , KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_COLN, KC_QUOT, KC_ENT , KC_PGDN,
KC_P1 , KC_P2 , KC_P3 , KC_NO , KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , MO(1) ,
KC_NO , KC_P0 , KC_PDOT, KC_PENT , KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

@ -0,0 +1 @@
VIA_ENABLE = yes

21
keyboards/spv1/mcuconf.h Normal file
View File

@ -0,0 +1,21 @@
/* Copyright 2023 Gondolindrim <gondolindrim@acheronproject.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/>.
*/
#pragma once
#include_next <mcuconf.h>
#undef STM32_PWM_USE_TIM3
#define STM32_PWM_USE_TIM3 TRUE

4
keyboards/spv1/rules.mk Normal file
View File

@ -0,0 +1,4 @@
BACKLIGHT_DRIVER = pwm
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE

40
keyboards/spv1/spv1.c Normal file
View File

@ -0,0 +1,40 @@
/* Copyright 2023 Gondolindrim <gondolindrim@acheronproject.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/>.
*/
#include "quantum.h"
bool led_update_kb(led_t led_state) {
bool res = led_update_user(led_state);
if(res) {
writePin(LED_CAPS, led_state.caps_lock);
writePin(LED_IND1, led_state.caps_lock);
writePin(LED_IND2, led_state.num_lock);
writePin(LED_IND3, led_state.scroll_lock);
writePin(LED_IND4, led_state.scroll_lock);
writePin(LED_IND6, led_state.scroll_lock);
writePin(LED_IND5, led_state.num_lock);
writePin(LED_IND8, led_state.num_lock);
}
return res;
}
layer_state_t layer_state_set_kb(layer_state_t state) {
if (get_highest_layer(state) > 0) writePin(LED_IND7, 1);
else writePin(LED_IND7, 0);
return state;
}