forked from mirrors/qmk_userspace
		
	Update ChibiOS[-Contrib], SIO driver, configs (#17915)
Co-authored-by: Nick Brassel <nick@tzarc.org>
This commit is contained in:
		
					parent
					
						
							
								81513ab5f5
							
						
					
				
			
			
				commit
				
					
						ec09087543
					
				
			
		
					 7 changed files with 39 additions and 42 deletions
				
			
		| 
						 | 
					@ -1 +1 @@
 | 
				
			||||||
Subproject commit 0e9d558b525a8f28285f3bb509fd48a897c43151
 | 
					Subproject commit 0062927e3058a8b5ef587234bbd98d42fb4e595e
 | 
				
			||||||
| 
						 | 
					@ -1 +1 @@
 | 
				
			||||||
Subproject commit 1130173eae6b7402443aff18ad68228acbe25cc4
 | 
					Subproject commit a224be155ae18d38deccf33a6c1d259b9a5ad8d3
 | 
				
			||||||
| 
						 | 
					@ -1,9 +1,12 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
    ChibiOS - Copyright (C) 2006..2020 Giovanni Di Sirio
 | 
					    ChibiOS - Copyright (C) 2006..2020 Giovanni Di Sirio
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Licensed under the Apache License, Version 2.0 (the "License");
 | 
					    Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
    you may not use this file except in compliance with the License.
 | 
					    you may not use this file except in compliance with the License.
 | 
				
			||||||
    You may obtain a copy of the License at
 | 
					    You may obtain a copy of the License at
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        http://www.apache.org/licenses/LICENSE-2.0
 | 
					        http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Unless required by applicable law or agreed to in writing, software
 | 
					    Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
    distributed under the License is distributed on an "AS IS" BASIS,
 | 
					    distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
					    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,7 +29,7 @@
 | 
				
			||||||
#define HALCONF_H
 | 
					#define HALCONF_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define _CHIBIOS_HAL_CONF_
 | 
					#define _CHIBIOS_HAL_CONF_
 | 
				
			||||||
#define _CHIBIOS_HAL_CONF_VER_8_0_
 | 
					#define _CHIBIOS_HAL_CONF_VER_8_4_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <mcuconf.h>
 | 
					#include <mcuconf.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -335,15 +335,18 @@
 | 
				
			||||||
/*===========================================================================*/
 | 
					/*===========================================================================*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @brief   Delays insertions.
 | 
					 * @brief   Timeout before assuming a failure while waiting for card idle.
 | 
				
			||||||
 * @details If enabled this options inserts delays into the MMC waiting
 | 
					 * @note    Time is in milliseconds.
 | 
				
			||||||
 *          routines releasing some extra CPU time for the threads with
 | 
					 | 
				
			||||||
 *          lower priority, this may slow down the driver a bit however.
 | 
					 | 
				
			||||||
 *          This option is recommended also if the SPI driver does not
 | 
					 | 
				
			||||||
 *          use a DMA channel and heavily loads the CPU.
 | 
					 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__)
 | 
					#if !defined(MMC_IDLE_TIMEOUT_MS) || defined(__DOXYGEN__)
 | 
				
			||||||
#define MMC_NICE_WAITING                    TRUE
 | 
					#define MMC_IDLE_TIMEOUT_MS                 1000
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @brief   Mutual exclusion on the SPI bus.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#if !defined(MMC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
 | 
				
			||||||
 | 
					#define MMC_USE_MUTUAL_EXCLUSION            TRUE
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*===========================================================================*/
 | 
					/*===========================================================================*/
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,7 +29,7 @@
 | 
				
			||||||
#define HALCONF_H
 | 
					#define HALCONF_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define _CHIBIOS_HAL_CONF_
 | 
					#define _CHIBIOS_HAL_CONF_
 | 
				
			||||||
#define _CHIBIOS_HAL_CONF_VER_8_0_
 | 
					#define _CHIBIOS_HAL_CONF_VER_8_4_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <mcuconf.h>
 | 
					#include <mcuconf.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -335,15 +335,18 @@
 | 
				
			||||||
/*===========================================================================*/
 | 
					/*===========================================================================*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @brief   Delays insertions.
 | 
					 * @brief   Timeout before assuming a failure while waiting for card idle.
 | 
				
			||||||
 * @details If enabled this options inserts delays into the MMC waiting
 | 
					 * @note    Time is in milliseconds.
 | 
				
			||||||
 *          routines releasing some extra CPU time for the threads with
 | 
					 | 
				
			||||||
 *          lower priority, this may slow down the driver a bit however.
 | 
					 | 
				
			||||||
 *          This option is recommended also if the SPI driver does not
 | 
					 | 
				
			||||||
 *          use a DMA channel and heavily loads the CPU.
 | 
					 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__)
 | 
					#if !defined(MMC_IDLE_TIMEOUT_MS) || defined(__DOXYGEN__)
 | 
				
			||||||
#define MMC_NICE_WAITING                    TRUE
 | 
					#define MMC_IDLE_TIMEOUT_MS                 1000
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @brief   Mutual exclusion on the SPI bus.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#if !defined(MMC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
 | 
				
			||||||
 | 
					#define MMC_USE_MUTUAL_EXCLUSION            TRUE
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*===========================================================================*/
 | 
					/*===========================================================================*/
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -72,27 +72,17 @@ inline void serial_transport_driver_clear(void) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#elif HAL_USE_SIO
 | 
					#elif HAL_USE_SIO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void clear_rx_evt_cb(SIODriver* siop) {
 | 
					 | 
				
			||||||
    osalSysLockFromISR();
 | 
					 | 
				
			||||||
    /* If errors occured during transactions this callback is invoked. We just
 | 
					 | 
				
			||||||
     * clear the error sources and move on. We rely on the fact that we check
 | 
					 | 
				
			||||||
     * for the success of the transaction by comparing the received/send bytes
 | 
					 | 
				
			||||||
     * with the actual received/send bytes in the send/receive functions. */
 | 
					 | 
				
			||||||
    sioGetAndClearEventsI(serial_driver);
 | 
					 | 
				
			||||||
    osalSysUnlockFromISR();
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const SIOOperation serial_usart_operation = {.rx_cb = NULL, .rx_idle_cb = NULL, .tx_cb = NULL, .tx_end_cb = NULL, .rx_evt_cb = &clear_rx_evt_cb};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @brief SIO Driver startup routine.
 | 
					 * @brief SIO Driver startup routine.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
static inline void usart_driver_start(void) {
 | 
					static inline void usart_driver_start(void) {
 | 
				
			||||||
    sioStart(serial_driver, &serial_config);
 | 
					    sioStart(serial_driver, &serial_config);
 | 
				
			||||||
    sioStartOperation(serial_driver, &serial_usart_operation);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
inline void serial_transport_driver_clear(void) {
 | 
					inline void serial_transport_driver_clear(void) {
 | 
				
			||||||
 | 
					    if (sioHasRXErrorsX(serial_driver)) {
 | 
				
			||||||
 | 
					        sioGetAndClearErrors(serial_driver);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    osalSysLock();
 | 
					    osalSysLock();
 | 
				
			||||||
    while (!sioIsRXEmptyX(serial_driver)) {
 | 
					    while (!sioIsRXEmptyX(serial_driver)) {
 | 
				
			||||||
        (void)sioGetX(serial_driver);
 | 
					        (void)sioGetX(serial_driver);
 | 
				
			||||||
| 
						 | 
					@ -132,10 +122,10 @@ inline bool serial_transport_send(const uint8_t* source, const size_t size) {
 | 
				
			||||||
        return serial_transport_receive(dump, bytes_left);
 | 
					        return serial_transport_receive(dump, bytes_left);
 | 
				
			||||||
#    else
 | 
					#    else
 | 
				
			||||||
        /* The SIO driver directly accesses the hardware FIFOs of the USART
 | 
					        /* The SIO driver directly accesses the hardware FIFOs of the USART
 | 
				
			||||||
         * peripheral. As these are limited in depth, the RX FIFO might have been
 | 
					         * peripheral. As these are limited in depth, the RX FIFO might have
 | 
				
			||||||
         * overflowed by a large that we just send. Therefore we attempt to read
 | 
					         * been overflowed by a large transaction that we just send. Therefore
 | 
				
			||||||
         * back all the data we send or until the FIFO runs empty in case it
 | 
					         * we attempt to read back all the data we send or until the FIFO runs
 | 
				
			||||||
         * overflowed and data was truncated. */
 | 
					         * empty in case it overflowed and data was truncated. */
 | 
				
			||||||
        if (unlikely(sioSynchronizeTXEnd(serial_driver, TIME_MS2I(SERIAL_USART_TIMEOUT)) < MSG_OK)) {
 | 
					        if (unlikely(sioSynchronizeTXEnd(serial_driver, TIME_MS2I(SERIAL_USART_TIMEOUT)) < MSG_OK)) {
 | 
				
			||||||
            return false;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,10 +13,8 @@ umask 022
 | 
				
			||||||
#   sudo add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/
 | 
					#   sudo add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/
 | 
				
			||||||
#   sudo apt-get update && sudo apt-get install adoptopenjdk-8-hotspot
 | 
					#   sudo apt-get update && sudo apt-get install adoptopenjdk-8-hotspot
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# For Fedora 36-ish distros:
 | 
					# For Fedora 37-ish distros:
 | 
				
			||||||
#  # Prep yum repository from https://adoptium.net/installation/linux/
 | 
					#  sudo dnf install -y ant java-1.8.0-openjdk.x86_64
 | 
				
			||||||
#  sudo dnf install -y ant temurin-8-jdk
 | 
					 | 
				
			||||||
#  export JAVA_HOME=/usr/lib/jvm/temurin-8-jdk
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
sinfo() { echo "$@" >&2 ; }
 | 
					sinfo() { echo "$@" >&2 ; }
 | 
				
			||||||
shead() { sinfo "" ; sinfo "---------------------------------" ; sinfo "-- $@" ; sinfo "---------------------------------" ; }
 | 
					shead() { sinfo "" ; sinfo "---------------------------------" ; sinfo "-- $@" ; sinfo "---------------------------------" ; }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue