- /* Copyright 2021 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 3 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 "quantum.h"
- #include "serial.h"
- #include "printf.h"
-
- #include <ch.h>
- #include <hal.h>
-
- #if !defined(SERIAL_USART_DRIVER)
- # define SERIAL_USART_DRIVER SD1
- #endif
-
- #if !defined(USE_GPIOV1)
- /* The default PAL alternate modes are used to signal that the pins are used for USART. */
- # if !defined(SERIAL_USART_TX_PAL_MODE)
- # define SERIAL_USART_TX_PAL_MODE 7
- # endif
- # if !defined(SERIAL_USART_RX_PAL_MODE)
- # define SERIAL_USART_RX_PAL_MODE 7
- # endif
- #endif
-
- #if defined(SOFT_SERIAL_PIN)
- # define SERIAL_USART_TX_PIN SOFT_SERIAL_PIN
- #endif
-
- #if !defined(SERIAL_USART_TX_PIN)
- # define SERIAL_USART_TX_PIN A9
- #endif
-
- #if !defined(SERIAL_USART_RX_PIN)
- # define SERIAL_USART_RX_PIN A10
- #endif
-
- #if !defined(USART_CR1_M0)
- # define USART_CR1_M0 USART_CR1_M // some platforms (f1xx) dont have this so
- #endif
-
- #if !defined(SERIAL_USART_CR1)
- # define SERIAL_USART_CR1 (USART_CR1_PCE | USART_CR1_PS | USART_CR1_M0) // parity enable, odd parity, 9 bit length
- #endif
-
- #if !defined(SERIAL_USART_CR2)
- # define SERIAL_USART_CR2 (USART_CR2_STOP_1) // 2 stop bits
- #endif
-
- #if !defined(SERIAL_USART_CR3)
- # define SERIAL_USART_CR3 0
- #endif
-
- #if defined(USART1_REMAP)
- # define USART_REMAP \
- do { \
- (AFIO->MAPR |= AFIO_MAPR_USART1_REMAP); \
- } while (0)
- #elif defined(USART2_REMAP)
- # define USART_REMAP \
- do { \
- (AFIO->MAPR |= AFIO_MAPR_USART2_REMAP); \
- } while (0)
- #elif defined(USART3_PARTIALREMAP)
- # define USART_REMAP \
- do { \
- (AFIO->MAPR |= AFIO_MAPR_USART3_REMAP_PARTIALREMAP); \
- } while (0)
- #elif defined(USART3_FULLREMAP)
- # define USART_REMAP \
- do { \
- (AFIO->MAPR |= AFIO_MAPR_USART3_REMAP_FULLREMAP); \
- } while (0)
- #endif
-
- #if !defined(SELECT_SOFT_SERIAL_SPEED)
- # define SELECT_SOFT_SERIAL_SPEED 1
- #endif
-
- #if defined(SERIAL_USART_SPEED)
- // Allow advanced users to directly set SERIAL_USART_SPEED
- #elif SELECT_SOFT_SERIAL_SPEED == 0
- # define SERIAL_USART_SPEED 460800
- #elif SELECT_SOFT_SERIAL_SPEED == 1
- # define SERIAL_USART_SPEED 230400
- #elif SELECT_SOFT_SERIAL_SPEED == 2
- # define SERIAL_USART_SPEED 115200
- #elif SELECT_SOFT_SERIAL_SPEED == 3
- # define SERIAL_USART_SPEED 57600
- #elif SELECT_SOFT_SERIAL_SPEED == 4
- # define SERIAL_USART_SPEED 38400
- #elif SELECT_SOFT_SERIAL_SPEED == 5
- # define SERIAL_USART_SPEED 19200
- #else
- # error invalid SELECT_SOFT_SERIAL_SPEED value
- #endif
-
- #if !defined(SERIAL_USART_TIMEOUT)
- # define SERIAL_USART_TIMEOUT 20
- #endif
-
- #define HANDSHAKE_MAGIC 7
|