From ae5f818d5a1efa321ffc0c6e659fa8fb47e79a01 Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Mon, 31 Oct 2022 18:02:43 -0700 Subject: [PATCH 1/2] Simplify Keymap Config EEPROM (#18886) * Simplify Keymap Config EEPROM * Decrement eeconfig magic number due to eeconfig changes * Update quantum/eeconfig.h Co-authored-by: Joel Challis --- quantum/eeconfig.c | 11 ++++------- quantum/eeconfig.h | 11 +++-------- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/quantum/eeconfig.c b/quantum/eeconfig.c index 27a0f6d48f1..2e2df11d69f 100644 --- a/quantum/eeconfig.c +++ b/quantum/eeconfig.c @@ -45,10 +45,8 @@ void eeconfig_init_quantum(void) { eeprom_update_byte(EECONFIG_DEBUG, 0); eeprom_update_byte(EECONFIG_DEFAULT_LAYER, 0); default_layer_state = 0; - eeprom_update_byte(EECONFIG_KEYMAP_LOWER_BYTE, 0); - // Enable oneshot and autocorrect by default: 0b0001 0100 - eeprom_update_byte(EECONFIG_KEYMAP_UPPER_BYTE, 0x14); - eeprom_update_byte(EECONFIG_MOUSEKEY_ACCEL, 0); + // Enable oneshot and autocorrect by default: 0b0001 0100 0000 0000 + eeprom_update_word(EECONFIG_KEYMAP, 0x1400); eeprom_update_byte(EECONFIG_BACKLIGHT, 0); eeprom_update_byte(EECONFIG_AUDIO, 0xFF); // On by default eeprom_update_dword(EECONFIG_RGBLIGHT, 0); @@ -167,15 +165,14 @@ void eeconfig_update_default_layer(uint8_t val) { * FIXME: needs doc */ uint16_t eeconfig_read_keymap(void) { - return (eeprom_read_byte(EECONFIG_KEYMAP_LOWER_BYTE) | (eeprom_read_byte(EECONFIG_KEYMAP_UPPER_BYTE) << 8)); + return eeprom_read_word(EECONFIG_KEYMAP); } /** \brief eeconfig update keymap * * FIXME: needs doc */ void eeconfig_update_keymap(uint16_t val) { - eeprom_update_byte(EECONFIG_KEYMAP_LOWER_BYTE, val & 0xFF); - eeprom_update_byte(EECONFIG_KEYMAP_UPPER_BYTE, (val >> 8) & 0xFF); + eeprom_update_word(EECONFIG_KEYMAP, val); } /** \brief eeconfig read audio diff --git a/quantum/eeconfig.h b/quantum/eeconfig.h index 565a0dbe5b9..9c4617c962c 100644 --- a/quantum/eeconfig.h +++ b/quantum/eeconfig.h @@ -21,7 +21,7 @@ along with this program. If not, see . #include #ifndef EECONFIG_MAGIC_NUMBER -# define EECONFIG_MAGIC_NUMBER (uint16_t)0xFEE8 // When changing, decrement this value to avoid future re-init issues +# define EECONFIG_MAGIC_NUMBER (uint16_t)0xFEE7 // When changing, decrement this value to avoid future re-init issues #endif #define EECONFIG_MAGIC_NUMBER_OFF (uint16_t)0xFFFF @@ -29,8 +29,7 @@ along with this program. If not, see . #define EECONFIG_MAGIC (uint16_t *)0 #define EECONFIG_DEBUG (uint8_t *)2 #define EECONFIG_DEFAULT_LAYER (uint8_t *)3 -#define EECONFIG_KEYMAP (uint8_t *)4 -#define EECONFIG_MOUSEKEY_ACCEL (uint8_t *)5 +#define EECONFIG_KEYMAP (uint16_t *)4 #define EECONFIG_BACKLIGHT (uint8_t *)6 #define EECONFIG_AUDIO (uint8_t *)7 #define EECONFIG_RGBLIGHT (uint32_t *)8 @@ -51,10 +50,8 @@ along with this program. If not, see . #define EECONFIG_LED_MATRIX_EXTENDED (uint16_t *)32 #define EECONFIG_RGB_MATRIX_EXTENDED (uint16_t *)32 -// TODO: Combine these into a single word and single block of EEPROM -#define EECONFIG_KEYMAP_UPPER_BYTE (uint8_t *)34 // Size of EEPROM being used, other code can refer to this for available EEPROM -#define EECONFIG_SIZE 35 +#define EECONFIG_SIZE 34 /* debug bit */ #define EECONFIG_DEBUG_ENABLE (1 << 0) #define EECONFIG_DEBUG_MATRIX (1 << 1) @@ -71,8 +68,6 @@ along with this program. If not, see . #define EECONFIG_KEYMAP_SWAP_BACKSLASH_BACKSPACE (1 << 6) #define EECONFIG_KEYMAP_NKRO (1 << 7) -#define EECONFIG_KEYMAP_LOWER_BYTE EECONFIG_KEYMAP - bool eeconfig_is_enabled(void); bool eeconfig_is_disabled(void); From 9435ad19eedba9e56fa6a33989bc5c788f080e54 Mon Sep 17 00:00:00 2001 From: Joy Lee Date: Tue, 1 Nov 2022 12:04:15 +0800 Subject: [PATCH 2/2] Added analog support for WB32 MCU. (#18289) Co-authored-by: Joy --- .../handwired/onekey/evb_wb32f3g71/config.h | 25 +++++++++++++++++++ .../handwired/onekey/evb_wb32f3g71/halconf.h | 11 ++++++++ .../handwired/onekey/evb_wb32f3g71/info.json | 6 +++++ .../handwired/onekey/evb_wb32f3g71/mcuconf.h | 17 +++++++++++++ .../handwired/onekey/evb_wb32f3g71/rules.mk | 4 +-- .../handwired/onekey/evb_wb32fq95/config.h | 25 +++++++++++++++++++ .../handwired/onekey/evb_wb32fq95/halconf.h | 11 ++++++++ .../handwired/onekey/evb_wb32fq95/info.json | 6 +++++ .../handwired/onekey/evb_wb32fq95/mcuconf.h | 17 +++++++++++++ .../handwired/onekey/evb_wb32fq95/rules.mk | 4 +-- platforms/chibios/drivers/analog.c | 12 ++++----- 11 files changed, 126 insertions(+), 12 deletions(-) create mode 100644 keyboards/handwired/onekey/evb_wb32f3g71/config.h create mode 100644 keyboards/handwired/onekey/evb_wb32f3g71/halconf.h create mode 100644 keyboards/handwired/onekey/evb_wb32f3g71/mcuconf.h create mode 100644 keyboards/handwired/onekey/evb_wb32fq95/config.h create mode 100644 keyboards/handwired/onekey/evb_wb32fq95/halconf.h create mode 100644 keyboards/handwired/onekey/evb_wb32fq95/mcuconf.h diff --git a/keyboards/handwired/onekey/evb_wb32f3g71/config.h b/keyboards/handwired/onekey/evb_wb32f3g71/config.h new file mode 100644 index 00000000000..d1f87b4e3e1 --- /dev/null +++ b/keyboards/handwired/onekey/evb_wb32f3g71/config.h @@ -0,0 +1,25 @@ +// Copyright 2022 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "config_common.h" + +#define ADC_PIN A0 + +#define BACKLIGHT_PWM_DRIVER PWMD4 +#define BACKLIGHT_PWM_CHANNEL 3 +#define BACKLIGHT_PAL_MODE 2 + +#define APA102_NOPS (100 / (1000000000L / (CPU_CLOCK / 4))) +#define RGB_CI_PIN B8 + +#define SOLENOID_PIN B12 +#define SOLENOID_PINS { B12, B13, B14, B15 } +#define SOLENOID_PINS_ACTIVE_STATE { high, high, low } + +#define I2C1_SDA_PIN B7 +#define I2C1_SCL_PIN B6 +#define I2C1_SCL_PAL_MODE 4 +#define I2C1_OPMODE OPMODE_I2C +#define I2C1_CLOCK_SPEED 100000 diff --git a/keyboards/handwired/onekey/evb_wb32f3g71/halconf.h b/keyboards/handwired/onekey/evb_wb32f3g71/halconf.h new file mode 100644 index 00000000000..f0cf0a179f0 --- /dev/null +++ b/keyboards/handwired/onekey/evb_wb32f3g71/halconf.h @@ -0,0 +1,11 @@ +// Copyright 2022 QMK +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define HAL_USE_ADC TRUE + +#define HAL_USE_I2C TRUE + +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/handwired/onekey/evb_wb32f3g71/info.json b/keyboards/handwired/onekey/evb_wb32f3g71/info.json index 6287cdc34a3..304517d2663 100644 --- a/keyboards/handwired/onekey/evb_wb32f3g71/info.json +++ b/keyboards/handwired/onekey/evb_wb32f3g71/info.json @@ -5,5 +5,11 @@ "matrix_pins": { "cols": ["B12"], "rows": ["B13"] + }, + "backlight": { + "pin": "B8" + }, + "rgblight": { + "pin": "A0" } } diff --git a/keyboards/handwired/onekey/evb_wb32f3g71/mcuconf.h b/keyboards/handwired/onekey/evb_wb32f3g71/mcuconf.h new file mode 100644 index 00000000000..7ef36ff66c7 --- /dev/null +++ b/keyboards/handwired/onekey/evb_wb32f3g71/mcuconf.h @@ -0,0 +1,17 @@ +// Copyright 2022 QMK +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#include_next "mcuconf.h" + +#undef WB32_ADC_USE_ADC1 +#define WB32_ADC_USE_ADC1 TRUE + +#undef WB32_DMA_REQUIRED +#define WB32_DMA_REQUIRED TRUE + +#undef WB32_I2C_USE_I2C1 +#define WB32_I2C_USE_I2C1 TRUE + +#undef WB32_PWM_USE_TIM4 +#define WB32_PWM_USE_TIM4 TRUE diff --git a/keyboards/handwired/onekey/evb_wb32f3g71/rules.mk b/keyboards/handwired/onekey/evb_wb32f3g71/rules.mk index 033dd66aa4a..1071cf62ee3 100644 --- a/keyboards/handwired/onekey/evb_wb32f3g71/rules.mk +++ b/keyboards/handwired/onekey/evb_wb32f3g71/rules.mk @@ -1,3 +1 @@ -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = no # Audio control and System control -NKRO_ENABLE = no # Enable N-Key Rollover +KEYBOARD_SHARED_EP = yes diff --git a/keyboards/handwired/onekey/evb_wb32fq95/config.h b/keyboards/handwired/onekey/evb_wb32fq95/config.h new file mode 100644 index 00000000000..d1f87b4e3e1 --- /dev/null +++ b/keyboards/handwired/onekey/evb_wb32fq95/config.h @@ -0,0 +1,25 @@ +// Copyright 2022 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "config_common.h" + +#define ADC_PIN A0 + +#define BACKLIGHT_PWM_DRIVER PWMD4 +#define BACKLIGHT_PWM_CHANNEL 3 +#define BACKLIGHT_PAL_MODE 2 + +#define APA102_NOPS (100 / (1000000000L / (CPU_CLOCK / 4))) +#define RGB_CI_PIN B8 + +#define SOLENOID_PIN B12 +#define SOLENOID_PINS { B12, B13, B14, B15 } +#define SOLENOID_PINS_ACTIVE_STATE { high, high, low } + +#define I2C1_SDA_PIN B7 +#define I2C1_SCL_PIN B6 +#define I2C1_SCL_PAL_MODE 4 +#define I2C1_OPMODE OPMODE_I2C +#define I2C1_CLOCK_SPEED 100000 diff --git a/keyboards/handwired/onekey/evb_wb32fq95/halconf.h b/keyboards/handwired/onekey/evb_wb32fq95/halconf.h new file mode 100644 index 00000000000..f0cf0a179f0 --- /dev/null +++ b/keyboards/handwired/onekey/evb_wb32fq95/halconf.h @@ -0,0 +1,11 @@ +// Copyright 2022 QMK +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define HAL_USE_ADC TRUE + +#define HAL_USE_I2C TRUE + +#define HAL_USE_PWM TRUE + +#include_next diff --git a/keyboards/handwired/onekey/evb_wb32fq95/info.json b/keyboards/handwired/onekey/evb_wb32fq95/info.json index 3fc1c886572..bbf51396683 100644 --- a/keyboards/handwired/onekey/evb_wb32fq95/info.json +++ b/keyboards/handwired/onekey/evb_wb32fq95/info.json @@ -5,5 +5,11 @@ "matrix_pins": { "cols": ["B12"], "rows": ["B13"] + }, + "backlight": { + "pin": "B8" + }, + "rgblight": { + "pin": "A0" } } diff --git a/keyboards/handwired/onekey/evb_wb32fq95/mcuconf.h b/keyboards/handwired/onekey/evb_wb32fq95/mcuconf.h new file mode 100644 index 00000000000..7ef36ff66c7 --- /dev/null +++ b/keyboards/handwired/onekey/evb_wb32fq95/mcuconf.h @@ -0,0 +1,17 @@ +// Copyright 2022 QMK +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#include_next "mcuconf.h" + +#undef WB32_ADC_USE_ADC1 +#define WB32_ADC_USE_ADC1 TRUE + +#undef WB32_DMA_REQUIRED +#define WB32_DMA_REQUIRED TRUE + +#undef WB32_I2C_USE_I2C1 +#define WB32_I2C_USE_I2C1 TRUE + +#undef WB32_PWM_USE_TIM4 +#define WB32_PWM_USE_TIM4 TRUE diff --git a/keyboards/handwired/onekey/evb_wb32fq95/rules.mk b/keyboards/handwired/onekey/evb_wb32fq95/rules.mk index 033dd66aa4a..1071cf62ee3 100644 --- a/keyboards/handwired/onekey/evb_wb32fq95/rules.mk +++ b/keyboards/handwired/onekey/evb_wb32fq95/rules.mk @@ -1,3 +1 @@ -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = no # Audio control and System control -NKRO_ENABLE = no # Enable N-Key Rollover +KEYBOARD_SHARED_EP = yes diff --git a/platforms/chibios/drivers/analog.c b/platforms/chibios/drivers/analog.c index a7b7ec76d74..8b03e73849f 100644 --- a/platforms/chibios/drivers/analog.c +++ b/platforms/chibios/drivers/analog.c @@ -22,7 +22,7 @@ # error "You need to set HAL_USE_ADC to TRUE in your halconf.h to use the ADC." #endif -#if !STM32_ADC_USE_ADC1 && !STM32_ADC_USE_ADC2 && !STM32_ADC_USE_ADC3 && !STM32_ADC_USE_ADC4 +#if !STM32_ADC_USE_ADC1 && !STM32_ADC_USE_ADC2 && !STM32_ADC_USE_ADC3 && !STM32_ADC_USE_ADC4 && !WB32_ADC_USE_ADC1 # error "You need to set one of the 'STM32_ADC_USE_ADCx' settings to TRUE in your mcuconf.h to use the ADC." #endif @@ -37,7 +37,7 @@ // Otherwise assume V3 #if defined(STM32F0XX) || defined(STM32L0XX) # define USE_ADCV1 -#elif defined(STM32F1XX) || defined(STM32F2XX) || defined(STM32F4XX) || defined(GD32VF103) +#elif defined(STM32F1XX) || defined(STM32F2XX) || defined(STM32F4XX) || defined(GD32VF103) || defined(WB32F3G71xx) || defined(WB32FQ95xx) # define USE_ADCV2 #endif @@ -74,7 +74,7 @@ /* User configurable ADC options */ #ifndef ADC_COUNT -# if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F4XX) || defined(GD32VF103) +# if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F4XX) || defined(GD32VF103) || defined(WB32F3G71xx) || defined(WB32FQ95xx) # define ADC_COUNT 1 # elif defined(STM32F3XX) # define ADC_COUNT 4 @@ -121,7 +121,7 @@ static ADCConversionGroup adcConversionGroup = { .cfgr1 = ADC_CFGR1_CONT | ADC_RESOLUTION, .smpr = ADC_SAMPLING_RATE, #elif defined(USE_ADCV2) -# if !defined(STM32F1XX) && !defined(GD32VF103) +# if !defined(STM32F1XX) && !defined(GD32VF103) && !defined(WB32F3G71xx) && !defined(WB32FQ95xx) .cr2 = ADC_CR2_SWSTART, // F103 seem very unhappy with, F401 seems very unhappy without... # endif .smpr2 = ADC_SMPR2_SMP_AN0(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN1(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN2(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN3(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN4(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN5(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN6(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN7(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN8(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN9(ADC_SAMPLING_RATE), @@ -219,7 +219,7 @@ __attribute__((weak)) adc_mux pinToMux(pin_t pin) { case F9: return TO_MUX( ADC_CHANNEL_IN7, 2 ); case F10: return TO_MUX( ADC_CHANNEL_IN8, 2 ); # endif -#elif defined(STM32F1XX) || defined(GD32VF103) +#elif defined(STM32F1XX) || defined(GD32VF103) || defined(WB32F3G71xx) || defined(WB32FQ95xx) case A0: return TO_MUX( ADC_CHANNEL_IN0, 0 ); case A1: return TO_MUX( ADC_CHANNEL_IN1, 0 ); case A2: return TO_MUX( ADC_CHANNEL_IN2, 0 ); @@ -248,7 +248,7 @@ __attribute__((weak)) adc_mux pinToMux(pin_t pin) { static inline ADCDriver* intToADCDriver(uint8_t adcInt) { switch (adcInt) { -#if STM32_ADC_USE_ADC1 +#if STM32_ADC_USE_ADC1 || WB32_ADC_USE_ADC1 case 0: return &ADCD1; #endif