Skip to content

Commit

Permalink
[Keyboard] Add Iron165R2 PCB support (#16948)
Browse files Browse the repository at this point in the history
  • Loading branch information
Gondolindrim authored May 17, 2022
1 parent f22e858 commit 467f3ae
Show file tree
Hide file tree
Showing 27 changed files with 972 additions and 0 deletions.
64 changes: 64 additions & 0 deletions keyboards/smithrune/iron165r2/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/*
Copyright 2022 Gondolindrim
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 "config_common.h"

/* USB Device descriptor parameter */
#define VENDOR_ID 0x8384 // SR for Smith and RUne
#define PRODUCT_ID 0x1652 // 165 rev 2
#define DEVICE_VER 0x0001
#define MANUFACTURER SmithRune
#define PRODUCT Iron156R2

#define MATRIX_ROWS 5
#define MATRIX_COLS 15

#define MATRIX_COL_PINS { A3 , B8 , B9 , B1 , B0 , B5 , B4 , B3 , A15, A8 , A1 , A0 , C15, C14, C13}
#define MATRIX_ROW_PINS { B10, A10, A2 , A5 , A7 }

#define DIODE_DIRECTION COL2ROW

#define LED_CAPS_LOCK_PIN A4

#define DEBOUNCE 5

#define LOCKING_SUPPORT_ENABLE
#define LOCKING_RESYNC_ENABLE

//#define ALL_RGBS // Define the RGB option here
//#define LINE_RGBS
//#define RUNE_RGBS
#define LUKE_RGBS

#define RGBLIGHT_LED_MAP {17 , 0 , 1 , 2 , 3 , 18 , 20 , 16 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 19 , 12 , 13 , 14 , 15 , 21}
// D18, D19, D20, D21, D22, D23, D24, D25, D26, D27, D28, D29, D60, D61, D62, D63, D64, D65, D66, D67, D68, D69}

#ifdef RUNE_RGBS
# undef RGBLIGHT_LED_MAP
# define RGBLIGHT_LED_MAP {1 , 6 , 7 , 8 , 9 , 2 , 5 , 0 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 3 , 4 , 18 , 19 , 20 , 21 }
// D18, D19, D20, D21, D22, D23, D24, D25, D26, D27, D28, D29, D60, D61, D62, D63, D64, D65, D66, D67, D68, D69}
#endif

#ifdef LUKE_RGBS
# undef RGBLIGHT_LED_MAP
# define RGBLIGHT_LED_MAP {21 , 2 , 3 , 4 , 5 , 1 , 20 , 0 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 19 , 14 , 15 , 16 , 17 , 18 }
// D18, D19, D20, D21, D22, D23, D24, D25, D26, D27, D28, D29, D60, D61, D62, D63, D64, D65, D66, D67, D68, D69}
#endif

#define RGBLIGHT_DEFAULT_VAL 0
40 changes: 40 additions & 0 deletions keyboards/smithrune/iron165r2/f072/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/*
Copyright 2020 Gondolindrim
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_PIN A6
#define BACKLIGHT_PWM_DRIVER PWMD3
#define BACKLIGHT_PWM_CHANNEL 1
#define BACKLIGHT_PAL_MODE 1
#define BACKLIGHT_LEVELS 20
#define BACKLIGHT_BREATHING
#define BREATHING_PERIOD 5
#define BACKLIGHT_ON_STATE 1

#define RGB_DI_PIN B15
#define RGBLED_NUM 22
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
#define RGBLIGHT_EFFECT_SNAKE
#define RGBLIGHT_EFFECT_KNIGHT
#define RGBLIGHT_EFFECT_CHRISTMAS
#define RGBLIGHT_EFFECT_STATIC_GRADIENT
#define RGBLIGHT_EFFECT_RGB_TEST
#define RGBLIGHT_EFFECT_ALTERNATING
#define RGBLIGHT_EFFECT_TWINKLE
24 changes: 24 additions & 0 deletions keyboards/smithrune/iron165r2/f072/halconf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/* Copyright 2022 QMK
*
* 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
#define HAL_USE_PAL TRUE

#define HAL_USE_SPI TRUE

#include_next <halconf.h>
25 changes: 25 additions & 0 deletions keyboards/smithrune/iron165r2/f072/mcuconf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/* Copyright 2020 QMK
*
* 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

#undef STM32_SPI_USE_SPI2
#define STM32_SPI_USE_SPI2 TRUE
4 changes: 4 additions & 0 deletions keyboards/smithrune/iron165r2/f072/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# MCU name
MCU = STM32F072
BACKLIGHT_ENABLE = yes
BACKLIGHT_DRIVER = pwm
48 changes: 48 additions & 0 deletions keyboards/smithrune/iron165r2/f411/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/*
Copyright 2022 Gondolindrim
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_PIN A6
#define BACKLIGHT_PWM_DRIVER PWMD3
#define BACKLIGHT_PWM_CHANNEL 1
#define BACKLIGHT_PAL_MODE 2
#define BACKLIGHT_LEVELS 20
#define BACKLIGHT_BREATHING
#define BREATHING_PERIOD 5
#define BACKLIGHT_ON_STATE 1

#define STM32_HSECLK 8000000

#define RGB_DI_PIN B15
#define RGBLED_NUM 22
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
#define RGBLIGHT_EFFECT_SNAKE
#define RGBLIGHT_EFFECT_KNIGHT
#define RGBLIGHT_EFFECT_CHRISTMAS
#define RGBLIGHT_EFFECT_STATIC_GRADIENT
#define RGBLIGHT_EFFECT_RGB_TEST
#define RGBLIGHT_EFFECT_ALTERNATING
#define RGBLIGHT_EFFECT_TWINKLE

#define WS2812_PWM_COMPLEMENTARY_OUTPUT
#define WS2812_PWM_DRIVER PWMD1
#define WS2812_PWM_CHANNEL 3
#define WS2812_PWM_PAL_MODE 1
#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
#define WS2812_DMA_CHANNEL 6
24 changes: 24 additions & 0 deletions keyboards/smithrune/iron165r2/f411/halconf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/* Copyright 2020 QMK
*
* 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
#define HAL_USE_PAL TRUE

#define HAL_USE_I2C TRUE

#include_next <halconf.h>
44 changes: 44 additions & 0 deletions keyboards/smithrune/iron165r2/f411/mcuconf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/* Copyright 2020 QMK
*
* 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_PLLM_VALUE
#undef STM32_PLLN_VALUE
#undef STM32_PLLP_VALUE
#undef STM32_PLLQ_VALUE
#undef STM32_PPRE1
#undef STM32_PPRE2

#define STM32_PLLM_VALUE 4
#define STM32_PLLN_VALUE 72
#define STM32_PLLP_VALUE 2
#define STM32_PLLQ_VALUE 3
#define STM32_PPRE1 STM32_PPRE1_DIV2
#define STM32_PPRE2 STM32_PPRE2_DIV1

#undef STM32_I2C_USE_I2C1
#define STM32_I2C_USE_I2C1 TRUE

#undef STM32_PWM_USE_ADVANCED
#define STM32_PWM_USE_ADVANCED TRUE

#undef STM32_PWM_USE_TIM3
#define STM32_PWM_USE_TIM3 TRUE

#undef STM32_PWM_USE_TIM1
#define STM32_PWM_USE_TIM1 TRUE
5 changes: 5 additions & 0 deletions keyboards/smithrune/iron165r2/f411/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
MCU = STM32F411
EEPROM_DRIVER = i2c
BACKLIGHT_ENABLE = yes
BACKLIGHT_DRIVER = pwm
WS2812_DRIVER = pwm
37 changes: 37 additions & 0 deletions keyboards/smithrune/iron165r2/iron165r2.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/* Copyright 2020 Gondolindrim
*
* 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 "iron165r2.h"

void board_init(void) {
setPinInput(B6);
setPinInput(B7);
#if defined (LINE_RGBS)
rgblight_set_effect_range(0,16);
#elif defined (RUNE_RGBS)
rgblight_set_effect_range(0,5);
#elif defined (LUKE_RGBS)
rgblight_set_effect_range(0,2);
#endif
}

#define LED_PIN_ON_STATE 1

bool led_update_kb(led_t led_state) {
bool res = led_update_user(led_state);
if(res) writePin(LED_CAPS_LOCK_PIN, led_state.caps_lock);
return res;
}
43 changes: 43 additions & 0 deletions keyboards/smithrune/iron165r2/iron165r2.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
/* Copyright 2022 Gondolindrim
*
* 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 ___ KC_NO

#include "quantum.h"

/* This is a shortcut to help you visually see your layout.
*
* The first section contains all of the arguments representing the physical
* layout of the board and position of the Keys.
*
* The second converts the arguments into a two-dimensional array which
* represents the switch matrix.
*/

#define LAYOUT( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E , \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E , \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E , \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E , \
K40, K41, K42, K46, K49, K4A, K4B, K4C, K4D, K4E )\
{\
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
{ K40, K41, K42, ___, ___, ___, K46, ___, ___, K49, K4A, K4B, K4C, K4D, K4E } \
}
Loading

0 comments on commit 467f3ae

Please sign in to comment.