From beefd512967220d9812af4881286c817574fcd86 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Fri, 16 Apr 2021 13:48:04 -0300 Subject: [PATCH 001/739] risc-v/esp32c3: Add driver for General Purpose SPI Master --- arch/risc-v/src/esp32c3/Kconfig | 53 + arch/risc-v/src/esp32c3/Make.defs | 4 + arch/risc-v/src/esp32c3/esp32c3_spi.c | 1144 +++++++++ arch/risc-v/src/esp32c3/esp32c3_spi.h | 137 + .../src/esp32c3/hardware/esp32c3_pinmap.h | 45 + .../risc-v/src/esp32c3/hardware/esp32c3_soc.h | 7 +- .../risc-v/src/esp32c3/hardware/esp32c3_spi.h | 2214 +++++++++++++++++ 7 files changed, 3601 insertions(+), 3 deletions(-) create mode 100644 arch/risc-v/src/esp32c3/esp32c3_spi.c create mode 100644 arch/risc-v/src/esp32c3/esp32c3_spi.h create mode 100644 arch/risc-v/src/esp32c3/hardware/esp32c3_pinmap.h create mode 100644 arch/risc-v/src/esp32c3/hardware/esp32c3_spi.h diff --git a/arch/risc-v/src/esp32c3/Kconfig b/arch/risc-v/src/esp32c3/Kconfig index f128e898d75..105eb8d6915 100644 --- a/arch/risc-v/src/esp32c3/Kconfig +++ b/arch/risc-v/src/esp32c3/Kconfig @@ -178,8 +178,13 @@ config ESP32C3_WDT bool default n +config ESP32C3_SPI + bool + default n + config ESP32C3_GPIO_IRQ bool "GPIO pin interrupts" + default n ---help--- Enable support for interrupting GPIO pins @@ -230,6 +235,12 @@ config ESP32C3_SPIFLASH select MTD_BYTE_WRITE select MTD_PARTITION +config ESP32C3_SPI2 + bool "SPI 2" + default n + select ESP32C3_SPI + select SPI + config ESP32C3_MWDT0 bool "Main System Watchdog Timer (Group 0)" default n @@ -288,6 +299,48 @@ endif # ESP32C3_I2C0 endmenu # I2C configuration +menu "SPI configuration" + depends on ESP32C3_SPI + +config ESP32C3_SPI_SWCS + bool "SPI software CS" + default n + ---help--- + Use SPI software CS. + +config ESP32C3_SPI_UDCS + bool "User defined CS" + default n + depends on ESP32C3_SPI_SWCS + ---help--- + Use user-defined CS. + +if ESP32C3_SPI2 + +config ESP32C3_SPI2_CSPIN + int "SPI2 CS Pin" + default 10 + range 0 21 + +config ESP32C3_SPI2_CLKPIN + int "SPI2 CLK Pin" + default 6 + range 0 21 + +config ESP32C3_SPI2_MOSIPIN + int "SPI2 MOSI Pin" + default 7 + range 0 21 + +config ESP32C3_SPI2_MISOPIN + int "SPI2 MISO Pin" + default 2 + range 0 21 + +endif # ESP32C3_SPI2 + +endmenu # SPI configuration + menu "UART configuration" depends on ESP32C3_UART diff --git a/arch/risc-v/src/esp32c3/Make.defs b/arch/risc-v/src/esp32c3/Make.defs index 16b6961c716..30d217ff687 100644 --- a/arch/risc-v/src/esp32c3/Make.defs +++ b/arch/risc-v/src/esp32c3/Make.defs @@ -63,6 +63,10 @@ ifeq ($(CONFIG_ESP32C3_I2C),y) CHIP_CSRCS += esp32c3_i2c.c endif +ifeq ($(CONFIG_ESP32C3_SPI),y) +CHIP_CSRCS += esp32c3_spi.c +endif + ifeq ($(CONFIG_ESP32C3_SPIFLASH),y) CHIP_CSRCS += esp32c3_spiflash.c endif diff --git a/arch/risc-v/src/esp32c3/esp32c3_spi.c b/arch/risc-v/src/esp32c3/esp32c3_spi.c new file mode 100644 index 00000000000..d65055b1a57 --- /dev/null +++ b/arch/risc-v/src/esp32c3/esp32c3_spi.c @@ -0,0 +1,1144 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/esp32c3_spi.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#ifdef CONFIG_ESP32C3_SPI + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +#include "esp32c3_spi.h" +#include "esp32c3_gpio.h" + +#include "riscv_arch.h" +#include "hardware/esp32c3_gpio_sigmap.h" +#include "hardware/esp32c3_pinmap.h" +#include "hardware/esp32c3_spi.h" +#include "hardware/esp32c3_soc.h" +#include "hardware/esp32c3_system.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Check if Chip-Select pin will be controlled via software */ + +#ifdef CONFIG_ESP32C3_SPI_SWCS +# define SPI_HAVE_SWCS TRUE +#else +# define SPI_HAVE_SWCS FALSE +#endif + +/* Verify whether SPI has been assigned IOMUX pins. + * Otherwise, SPI signals will be routed via GPIO Matrix. + */ + +#define SPI_IS_CS_IOMUX (CONFIG_ESP32C3_SPI2_CSPIN == SPI2_IOMUX_CSPIN) +#define SPI_IS_CLK_IOMUX (CONFIG_ESP32C3_SPI2_CLKPIN == SPI2_IOMUX_CLKPIN) +#define SPI_IS_MOSI_IOMUX (CONFIG_ESP32C3_SPI2_MOSIPIN == SPI2_IOMUX_MOSIPIN) +#define SPI_IS_MISO_IOMUX (CONFIG_ESP32C3_SPI2_MISOPIN == SPI2_IOMUX_MISOPIN) + +#define SPI_VIA_IOMUX (SPI_IS_CS_IOMUX || SPI_HAVE_SWCS) && \ + (SPI_IS_CLK_IOMUX) && \ + (SPI_IS_MOSI_IOMUX) && \ + (SPI_IS_MISO_IOMUX) + +/* SPI default frequency (limited by clock divider) */ + +#define SPI_DEFAULT_FREQ (400000) + +/* SPI default width */ + +#define SPI_DEFAULT_WIDTH (8) + +/* SPI default mode */ + +#define SPI_DEFAULT_MODE (SPIDEV_MODE0) + +/* Helper for applying the mask for a given register field. + * Mask is determined by the macros suffixed with _V and _S from the + * peripheral register description. + */ + +#define VALUE_MASK(_val, _field) ((_val & (_field##_V)) << (_field##_S)) + +/* SPI Maximum buffer size in bytes */ + +#define SPI_MAX_BUF_SIZE (64) + +#ifndef MIN +# define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif + +/**************************************************************************** + * Private Types + ****************************************************************************/ + +/* SPI Device hardware configuration */ + +struct esp32c3_spi_config_s +{ + uint32_t clk_freq; /* SPI default clock frequency */ + uint32_t width; /* SPI default width */ + enum spi_mode_e mode; /* SPI default mode */ + + uint8_t cs_pin; /* GPIO configuration for CS */ + uint8_t mosi_pin; /* GPIO configuration for MOSI */ + uint8_t miso_pin; /* GPIO configuration for MISO */ + uint8_t clk_pin; /* GPIO configuration for CLK */ + uint32_t clk_bit; /* Clock enable bit */ + uint32_t rst_bit; /* SPI reset bit */ + uint32_t cs_insig; /* SPI CS input signal index */ + uint32_t cs_outsig; /* SPI CS output signal index */ + uint32_t mosi_insig; /* SPI MOSI input signal index */ + uint32_t mosi_outsig; /* SPI MOSI output signal index */ + uint32_t miso_insig; /* SPI MISO input signal index */ + uint32_t miso_outsig; /* SPI MISO output signal index */ + uint32_t clk_insig; /* SPI CLK input signal index */ + uint32_t clk_outsig; /* SPI CLK output signal index */ +}; + +struct esp32c3_spi_priv_s +{ + /* Externally visible part of the SPI interface */ + + struct spi_dev_s spi_dev; + + /* Port configuration */ + + const struct esp32c3_spi_config_s *config; + int refs; /* Reference count */ + sem_t exclsem; /* Held while chip is selected for mutual exclusion */ + uint32_t frequency; /* Requested clock frequency */ + uint32_t actual; /* Actual clock frequency */ + enum spi_mode_e mode; /* Actual SPI hardware mode */ + uint8_t nbits; /* Actual SPI send/receive bits once transmission */ +}; + +/**************************************************************************** + * Private Function Prototypes + ****************************************************************************/ + +static int esp32c3_spi_lock(FAR struct spi_dev_s *dev, bool lock); +#ifndef CONFIG_ESP32C3_SPI_UDCS +static void esp32c3_spi_select(FAR struct spi_dev_s *dev, + uint32_t devid, bool selected); +#endif +static uint32_t esp32c3_spi_setfrequency(FAR struct spi_dev_s *dev, + uint32_t frequency); +static void esp32c3_spi_setmode(FAR struct spi_dev_s *dev, + enum spi_mode_e mode); +static void esp32c3_spi_setbits(FAR struct spi_dev_s *dev, int nbits); +#ifdef CONFIG_SPI_HWFEATURES +static int esp32c3_spi_hwfeatures(FAR struct spi_dev_s *dev, + spi_hwfeatures_t features); +#endif +static uint32_t esp32c3_spi_send(FAR struct spi_dev_s *dev, uint32_t wd); +static void esp32c3_spi_exchange(FAR struct spi_dev_s *dev, + FAR const void *txbuffer, + FAR void *rxbuffer, size_t nwords); +#ifndef CONFIG_SPI_EXCHANGE +static void esp32c3_spi_sndblock(FAR struct spi_dev_s *dev, + FAR const void *txbuffer, + size_t nwords); +static void esp32c3_spi_recvblock(FAR struct spi_dev_s *dev, + FAR void *rxbuffer, + size_t nwords); +#endif +#ifdef CONFIG_SPI_TRIGGER +static int esp32c3_spi_trigger(FAR struct spi_dev_s *dev); +#endif +static void esp32c3_spi_init(FAR struct spi_dev_s *dev); +static void esp32c3_spi_deinit(FAR struct spi_dev_s *dev); + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +#ifdef CONFIG_ESP32C3_SPI2 +static const struct esp32c3_spi_config_s esp32c3_spi2_config = +{ + .clk_freq = SPI_DEFAULT_FREQ, + .width = SPI_DEFAULT_WIDTH, + .mode = SPI_DEFAULT_MODE, + .cs_pin = CONFIG_ESP32C3_SPI2_CSPIN, + .mosi_pin = CONFIG_ESP32C3_SPI2_MOSIPIN, + .miso_pin = CONFIG_ESP32C3_SPI2_MISOPIN, + .clk_pin = CONFIG_ESP32C3_SPI2_CLKPIN, + .clk_bit = SYSTEM_SPI2_CLK_EN, + .rst_bit = SYSTEM_SPI2_RST, + .cs_insig = FSPICS0_IN_IDX, + .cs_outsig = FSPICS0_OUT_IDX, + .mosi_insig = FSPID_IN_IDX, + .mosi_outsig = FSPID_OUT_IDX, + .miso_insig = FSPIQ_IN_IDX, + .miso_outsig = FSPIQ_OUT_IDX, + .clk_insig = FSPICLK_IN_IDX, + .clk_outsig = FSPICLK_OUT_IDX +}; + +static const struct spi_ops_s esp32c3_spi2_ops = +{ + .lock = esp32c3_spi_lock, +#ifdef CONFIG_ESP32C3_SPI_UDCS + .select = esp32c3_spi2_select, +#else + .select = esp32c3_spi_select, +#endif + .setfrequency = esp32c3_spi_setfrequency, + .setmode = esp32c3_spi_setmode, + .setbits = esp32c3_spi_setbits, +#ifdef CONFIG_SPI_HWFEATURES + .hwfeatures = esp32c3_spi_hwfeatures, +#endif + .status = esp32c3_spi2_status, +#ifdef CONFIG_SPI_CMDDATA + .cmddata = esp32c3_spi2_cmddata, +#endif + .send = esp32c3_spi_send, +#ifdef CONFIG_SPI_EXCHANGE + .exchange = esp32c3_spi_exchange, +#else + .sndblock = esp32c3_spi_sndblock, + .recvblock = esp32c3_spi_recvblock, +#endif +#ifdef CONFIG_SPI_TRIGGER + .trigger = esp32c3_spi_trigger, +#endif + .registercallback = NULL, +}; + +static struct esp32c3_spi_priv_s esp32c3_spi2_priv = +{ + .spi_dev = + { + .ops = &esp32c3_spi2_ops + }, + .config = &esp32c3_spi2_config, + .refs = 0, + .exclsem = SEM_INITIALIZER(0), + .frequency = 0, + .actual = 0, + .mode = 0, + .nbits = 0 +}; +#endif /* CONFIG_ESP32C3_SPI2 */ + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: esp32c3_spi_set_regbits + * + * Description: + * Set the bits of the SPI register. + * + * Input Parameters: + * addr - Address of the register of interest + * bits - Bits to be set + * + * Returned Value: + * None + * + ****************************************************************************/ + +static inline void esp32c3_spi_set_regbits(uint32_t addr, uint32_t bits) +{ + uint32_t tmp = getreg32(addr); + + putreg32(tmp | bits, addr); +} + +/**************************************************************************** + * Name: esp32c3_spi_clr_regbits + * + * Description: + * Clear the bits of the SPI register. + * + * Input Parameters: + * addr - Address of the register of interest + * bits - Bits to be cleared + * + * Returned Value: + * None + * + ****************************************************************************/ + +static inline void esp32c3_spi_clr_regbits(uint32_t addr, uint32_t bits) +{ + uint32_t tmp = getreg32(addr); + + putreg32(tmp & (~bits), addr); +} + +/**************************************************************************** + * Name: esp32c3_spi_lock + * + * Description: + * Lock or unlock the SPI device. + * + * Input Parameters: + * dev - Device-specific state data + * lock - true: Lock spi bus, false: unlock SPI bus + * + * Returned Value: + * The result of lock or unlock the SPI device + * + ****************************************************************************/ + +static int esp32c3_spi_lock(FAR struct spi_dev_s *dev, bool lock) +{ + int ret; + FAR struct esp32c3_spi_priv_s *priv = (FAR struct esp32c3_spi_priv_s *)dev; + + if (lock) + { + ret = nxsem_wait_uninterruptible(&priv->exclsem); + } + else + { + ret = nxsem_post(&priv->exclsem); + } + + return ret; +} + +/**************************************************************************** + * Name: esp32c3_spi_select + * + * Description: + * Enable/disable the SPI chip select. The implementation of this method + * must include handshaking: If a device is selected, it must hold off + * all other attempts to select the device until the device is deselected. + * + * If ESP32C3_SPI_SWCS is disabled, the driver will use hardware CS so that + * once transmission is started the hardware selects the device and when + * this transmission is done hardware deselects the device automatically. + * So, this function will do nothing. + * + * Input Parameters: + * dev - Device-specific state data + * devid - Identifies the device to select + * selected - true: slave selected, false: slave de-selected + * + * Returned Value: + * None + * + ****************************************************************************/ + +#ifndef CONFIG_ESP32C3_SPI_UDCS +static void esp32c3_spi_select(FAR struct spi_dev_s *dev, + uint32_t devid, bool selected) +{ +#if SPI_HAVE_SWCS + FAR struct esp32c3_spi_priv_s *priv = (FAR struct esp32c3_spi_priv_s *)dev; + bool value = selected ? false : true; + + esp32c3_gpiowrite(priv->config->cs_pin, value); +#endif + + spiinfo("devid: %08" PRIx32 " CS: %s\n", + devid, selected ? "select" : "free"); +} +#endif + +/**************************************************************************** + * Name: esp32c3_spi_setfrequency + * + * Description: + * Set the SPI frequency. + * + * Input Parameters: + * dev - Device-specific state data + * frequency - The requested SPI frequency + * + * Returned Value: + * Returns the current selected frequency. + * + ****************************************************************************/ + +static uint32_t esp32c3_spi_setfrequency(FAR struct spi_dev_s *dev, + uint32_t frequency) +{ + uint32_t reg_val; + FAR struct esp32c3_spi_priv_s *priv = (FAR struct esp32c3_spi_priv_s *)dev; + const uint32_t duty_cycle = 128; + + if (priv->frequency == frequency) + { + /* Requested frequency is the same as the current frequency. */ + + return priv->actual; + } + + /* In HW, n, h and l fields range from 1 to 64, pre ranges from 1 to 8K. + * The value written to register is one lower than the used value. + */ + + if (frequency > ((APB_CLK_FREQ / 4) * 3)) + { + /* Using APB frequency directly will give us the best result here. */ + + reg_val = SPI_CLK_EQU_SYSCLK_M; + priv->actual = APB_CLK_FREQ; + } + else + { + /* For best duty cycle resolution, we want n to be as close to 32 as + * possible, but we also need a pre/n combo that gets us as close as + * possible to the intended frequency. To do this, we bruteforce n and + * calculate the best pre to go along with that. If there's a choice + * between pre/n combos that give the same result, use the one with the + * higher n. + */ + + int32_t pre; + int32_t n; + int32_t h; + int32_t l; + int32_t bestn = -1; + int32_t bestpre = -1; + int32_t besterr = 0; + int32_t errval; + + /* Start at n = 2. We need to be able to set h/l so we have at least + * one high and one low pulse. + */ + + for (n = 2; n <= 64; n++) + { + /* Effectively, this does: + * pre = round((APB_CLK_FREQ / n) / frequency) + */ + + pre = ((APB_CLK_FREQ / n) + (frequency / 2)) / frequency; + + if (pre <= 0) + { + pre = 1; + } + + if (pre > 16) + { + pre = 16; + } + + errval = abs(APB_CLK_FREQ / (pre * n) - frequency); + if (bestn == -1 || errval <= besterr) + { + besterr = errval; + bestn = n; + bestpre = pre; + } + } + + n = bestn; + pre = bestpre; + l = n; + + /* Effectively, this does: + * h = round((duty_cycle * n) / 256) + */ + + h = (duty_cycle * n + 127) / 256; + if (h <= 0) + { + h = 1; + } + + reg_val = ((l - 1) << SPI_CLKCNT_L_S) | + ((h - 1) << SPI_CLKCNT_H_S) | + ((n - 1) << SPI_CLKCNT_N_S) | + ((pre - 1) << SPI_CLKDIV_PRE_S); + + priv->actual = APB_CLK_FREQ / (n * pre); + } + + priv->frequency = frequency; + + putreg32(reg_val, SPI_CLOCK_REG); + + spiinfo("frequency=%" PRIu32 ", actual=%" PRIu32 "\n", + priv->frequency, priv->actual); + + return priv->actual; +} + +/**************************************************************************** + * Name: esp32c3_spi_setmode + * + * Description: + * Set the SPI mode. + * + * Input Parameters: + * dev - Device-specific state data + * mode - The requested SPI mode + * + * Returned Value: + * none + * + ****************************************************************************/ + +static void esp32c3_spi_setmode(FAR struct spi_dev_s *dev, + enum spi_mode_e mode) +{ + FAR struct esp32c3_spi_priv_s *priv = (FAR struct esp32c3_spi_priv_s *)dev; + + spiinfo("mode=%d\n", mode); + + /* Has the mode changed? */ + + if (mode != priv->mode) + { + uint32_t ck_idle_edge; + uint32_t ck_out_edge; + + switch (mode) + { + case SPIDEV_MODE0: /* CPOL=0; CPHA=0 */ + ck_idle_edge = 0; + ck_out_edge = 0; + break; + + case SPIDEV_MODE1: /* CPOL=0; CPHA=1 */ + ck_idle_edge = 0; + ck_out_edge = 1; + break; + + case SPIDEV_MODE2: /* CPOL=1; CPHA=0 */ + ck_idle_edge = 1; + ck_out_edge = 1; + break; + + case SPIDEV_MODE3: /* CPOL=1; CPHA=1 */ + ck_idle_edge = 1; + ck_out_edge = 0; + break; + + default: + spierr("Invalid mode: %d\n", mode); + DEBUGASSERT(false); + return; + } + + esp32c3_spi_clr_regbits(SPI_MISC_REG, SPI_CK_IDLE_EDGE_M); + esp32c3_spi_set_regbits(SPI_MISC_REG, + VALUE_MASK(ck_idle_edge, SPI_CK_IDLE_EDGE)); + + esp32c3_spi_clr_regbits(SPI_USER_REG, SPI_CK_OUT_EDGE_M); + esp32c3_spi_set_regbits(SPI_USER_REG, + VALUE_MASK(ck_out_edge, SPI_CK_OUT_EDGE)); + + priv->mode = mode; + } +} + +/**************************************************************************** + * Name: esp32c3_spi_setbits + * + * Description: + * Set the number of bits per word. + * + * Input Parameters: + * dev - Device-specific state data + * nbits - The number of bits in an SPI word. + * + * Returned Value: + * none + * + ****************************************************************************/ + +static void esp32c3_spi_setbits(FAR struct spi_dev_s *dev, int nbits) +{ + FAR struct esp32c3_spi_priv_s *priv = (FAR struct esp32c3_spi_priv_s *)dev; + + spiinfo("nbits=%d\n", nbits); + + priv->nbits = nbits; +} + +/**************************************************************************** + * Name: esp32c3_spi_hwfeatures + * + * Description: + * Set hardware-specific feature flags. + * + * Input Parameters: + * dev - Device-specific state data + * features - H/W feature flags + * + * Returned Value: + * Zero (OK) if the selected H/W features are enabled; A negated errno + * value if any H/W feature is not supportable. + * + ****************************************************************************/ + +#ifdef CONFIG_SPI_HWFEATURES +static int esp32c3_spi_hwfeatures(FAR struct spi_dev_s *dev, + spi_hwfeatures_t features) +{ + /* Other H/W features are not supported */ + + return (features == 0) ? OK : -ENOSYS; +} +#endif + +/**************************************************************************** + * Name: esp32c3_spi_poll_send + * + * Description: + * Send one word on SPI by polling mode. + * + * Input Parameters: + * priv - SPI private state data + * wd - The word to send. The size of the data is determined by the + * number of bits selected for the SPI interface. + * + * Returned Value: + * Received value + * + ****************************************************************************/ + +static uint32_t esp32c3_spi_poll_send(FAR struct esp32c3_spi_priv_s *priv, + uint32_t wd) +{ + uint32_t val; + + putreg32((priv->nbits - 1), SPI_MS_DLEN_REG); + + putreg32(wd, SPI_W0_REG); + + /* Trigger start of user-defined transaction for master. */ + + esp32c3_spi_set_regbits(SPI_CMD_REG, SPI_UPDATE_M); + + while ((getreg32(SPI_CMD_REG) & SPI_UPDATE_M) != 0) + { + ; + } + + esp32c3_spi_set_regbits(SPI_CMD_REG, SPI_USR_M); + + /* Wait for the user-defined transaction to finish. */ + + while ((getreg32(SPI_CMD_REG) & SPI_USR_M) != 0) + { + ; + } + + val = getreg32(SPI_W0_REG); + + spiinfo("send=0x%" PRIx32 " and recv=0x%" PRIx32 "\n", wd, val); + + return val; +} + +/**************************************************************************** + * Name: esp32c3_spi_send + * + * Description: + * Send one word on SPI. + * + * Input Parameters: + * dev - Device-specific state data + * wd - The word to send. The size of the data is determined by the + * number of bits selected for the SPI interface. + * + * Returned Value: + * Received value + * + ****************************************************************************/ + +static uint32_t esp32c3_spi_send(FAR struct spi_dev_s *dev, uint32_t wd) +{ + FAR struct esp32c3_spi_priv_s *priv = (FAR struct esp32c3_spi_priv_s *)dev; + + return esp32c3_spi_poll_send(priv, wd); +} + +/**************************************************************************** + * Name: esp32c3_spi_poll_exchange + * + * Description: + * Exchange a block of data from SPI. + * + * Input Parameters: + * priv - SPI private state data + * txbuffer - A pointer to the buffer of data to be sent + * rxbuffer - A pointer to the buffer in which to receive data + * nwords - The length of data that to be exchanged in units of words. + * The wordsize is determined by the number of bits-per-word + * selected for the SPI interface. If nbits <= 8, the data is + * packed into uint8_t's; if nbits >8, the data is packed into + * uint16_t's + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void esp32c3_spi_poll_exchange(FAR struct esp32c3_spi_priv_s *priv, + FAR const void *txbuffer, + FAR void *rxbuffer, + size_t nwords) +{ + const uint32_t total_bytes = nwords * (priv->nbits / 8); + uintptr_t bytes_remaining = total_bytes; + uint8_t *tp = (uint8_t *)txbuffer; + uint8_t *rp = (uint8_t *)rxbuffer; + + while (bytes_remaining != 0) + { + /* Initialize data_buf_reg with the address of the first data buffer + * register (W0). + */ + + uintptr_t data_buf_reg = SPI_W0_REG; + uint32_t transfer_size = MIN(SPI_MAX_BUF_SIZE, bytes_remaining); + + /* Write data words to data buffer registers. + * SPI peripheral contains 16 registers (W0 - W15). + */ + + for (int i = 0 ; i < transfer_size; i += sizeof(uint32_t)) + { + uint32_t w_wd = UINT32_MAX; + + if (tp != NULL) + { + memcpy(&w_wd, tp, sizeof(uint32_t)); + + tp += sizeof(uintptr_t); + } + + putreg32(w_wd, data_buf_reg); + + spiinfo("send=0x%" PRIx32 " data_reg=0x%" PRIxPTR "\n", + w_wd, data_buf_reg); + + /* Update data_buf_reg to point to the next data buffer register. */ + + data_buf_reg += sizeof(uintptr_t); + } + + esp32c3_spi_set_regbits(SPI_USER_REG, SPI_USR_MOSI_M); + + if (rp == NULL) + { + esp32c3_spi_clr_regbits(SPI_USER_REG, SPI_USR_MISO_M); + } + else + { + esp32c3_spi_set_regbits(SPI_USER_REG, SPI_USR_MISO_M); + } + + putreg32((transfer_size * 8) - 1, SPI_MS_DLEN_REG); + + /* Trigger start of user-defined transaction for master. */ + + esp32c3_spi_set_regbits(SPI_CMD_REG, SPI_UPDATE_M); + + while ((getreg32(SPI_CMD_REG) & SPI_UPDATE_M) != 0) + { + ; + } + + esp32c3_spi_set_regbits(SPI_CMD_REG, SPI_USR_M); + + /* Wait for the user-defined transaction to finish. */ + + while ((getreg32(SPI_CMD_REG) & SPI_USR_M) != 0) + { + ; + } + + if (rp != NULL) + { + /* Set data_buf_reg with the address of the first data buffer + * register (W0). + */ + + data_buf_reg = SPI_W0_REG; + + /* Read received data words from SPI data buffer registers. */ + + for (int i = 0 ; i < transfer_size; i += sizeof(uint32_t)) + { + uint32_t r_wd = getreg32(data_buf_reg); + + spiinfo("recv=0x%" PRIx32 " data_reg=0x%" PRIxPTR "\n", + r_wd, data_buf_reg); + + memcpy(rp, &r_wd, sizeof(uint32_t)); + + rp += sizeof(uintptr_t); + + /* Update data_buf_reg to point to the next data buffer + * register. + */ + + data_buf_reg += sizeof(uintptr_t); + } + } + + bytes_remaining -= transfer_size; + } +} + +/**************************************************************************** + * Name: esp32c3_spi_exchange + * + * Description: + * Exchange a block of data from SPI. + * + * Input Parameters: + * dev - Device-specific state data + * txbuffer - A pointer to the buffer of data to be sent + * rxbuffer - A pointer to the buffer in which to receive data + * nwords - The length of data that to be exchanged in units of words. + * The wordsize is determined by the number of bits-per-word + * selected for the SPI interface. If nbits <= 8, the data is + * packed into uint8_t's; if nbits >8, the data is packed into + * uint16_t's + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void esp32c3_spi_exchange(FAR struct spi_dev_s *dev, + FAR const void *txbuffer, + FAR void *rxbuffer, + size_t nwords) +{ + FAR struct esp32c3_spi_priv_s *priv = (FAR struct esp32c3_spi_priv_s *)dev; + + esp32c3_spi_poll_exchange(priv, txbuffer, rxbuffer, nwords); +} + +#ifndef CONFIG_SPI_EXCHANGE + +/**************************************************************************** + * Name: esp32c3_spi_sndblock + * + * Description: + * Send a block of data on SPI. + * + * Input Parameters: + * dev - Device-specific state data + * txbuffer - A pointer to the buffer of data to be sent + * nwords - The length of data to send from the buffer in number of + * words. The wordsize is determined by the number of + * bits-per-word selected for the SPI interface. If nbits <= 8, + * the data is packed into uint8_t's; if nbits >8, the data is + * packed into uint16_t's + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void esp32c3_spi_sndblock(FAR struct spi_dev_s *dev, + FAR const void *txbuffer, + size_t nwords) +{ + spiinfo("txbuffer=%p nwords=%d\n", txbuffer, nwords); + + esp32c3_spi_exchange(dev, txbuffer, NULL, nwords); +} + +/**************************************************************************** + * Name: esp32c3_spi_recvblock + * + * Description: + * Receive a block of data from SPI. + * + * Input Parameters: + * dev - Device-specific state data + * rxbuffer - A pointer to the buffer in which to receive data + * nwords - The length of data that can be received in the buffer in + * number of words. The wordsize is determined by the number of + * bits-per-word selected for the SPI interface. If nbits <= 8, + * the data is packed into uint8_t's; if nbits >8, the data is + * packed into uint16_t's + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void esp32c3_spi_recvblock(FAR struct spi_dev_s *dev, + FAR void *rxbuffer, + size_t nwords) +{ + spiinfo("rxbuffer=%p nwords=%d\n", rxbuffer, nwords); + + esp32c3_spi_exchange(dev, NULL, rxbuffer, nwords); +} +#endif + +/**************************************************************************** + * Name: esp32c3_spi_trigger + * + * Description: + * Trigger a previously configured DMA transfer. + * + * Input Parameters: + * dev - Device-specific state data + * + * Returned Value: + * OK - Trigger was fired + * -ENOSYS - Trigger not fired due to lack of DMA or low level support + * -EIO - Trigger not fired because not previously primed + * + ****************************************************************************/ + +#ifdef CONFIG_SPI_TRIGGER +static int esp32c3_spi_trigger(FAR struct spi_dev_s *dev) +{ + return -ENOSYS; +} +#endif + +/**************************************************************************** + * Name: esp32c3_spi_init + * + * Description: + * Initialize ESP32-C3 SPI hardware interface. + * + * Input Parameters: + * dev - Device-specific state data + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void esp32c3_spi_init(FAR struct spi_dev_s *dev) +{ + FAR struct esp32c3_spi_priv_s *priv = (FAR struct esp32c3_spi_priv_s *)dev; + const struct esp32c3_spi_config_s *config = priv->config; + uint32_t regval; + + /* Initialize the SPI semaphore that enforces mutually exclusive access */ + + nxsem_init(&priv->exclsem, 0, 1); + + esp32c3_gpiowrite(config->cs_pin, true); + esp32c3_gpiowrite(config->mosi_pin, true); + esp32c3_gpiowrite(config->miso_pin, true); + esp32c3_gpiowrite(config->clk_pin, true); + +#if SPI_HAVE_SWCS + esp32c3_configgpio(config->cs_pin, OUTPUT_FUNCTION_1); + esp32c3_gpio_matrix_out(config->cs_pin, SIG_GPIO_OUT_IDX, 0, 0); +#endif + +#if SPI_VIA_IOMUX +#if !SPI_HAVE_SWCS + esp32c3_configgpio(config->cs_pin, OUTPUT_FUNCTION_2); + esp32c3_gpio_matrix_out(config->cs_pin, SIG_GPIO_OUT_IDX, 0, 0); +#endif + esp32c3_configgpio(config->mosi_pin, OUTPUT_FUNCTION_2); + esp32c3_gpio_matrix_out(config->mosi_pin, SIG_GPIO_OUT_IDX, 0, 0); + + esp32c3_configgpio(config->miso_pin, INPUT_FUNCTION_2 | PULLUP); + esp32c3_gpio_matrix_out(config->miso_pin, SIG_GPIO_OUT_IDX, 0, 0); + + esp32c3_configgpio(config->clk_pin, OUTPUT_FUNCTION_2); + esp32c3_gpio_matrix_out(config->clk_pin, SIG_GPIO_OUT_IDX, 0, 0); +#else +#if !SPI_HAVE_SWCS + esp32c3_configgpio(config->cs_pin, OUTPUT_FUNCTION_1); + esp32c3_gpio_matrix_out(config->cs_pin, config->cs_outsig, 0, 0); +#endif + esp32c3_configgpio(config->mosi_pin, OUTPUT_FUNCTION_1); + esp32c3_gpio_matrix_out(config->mosi_pin, config->mosi_outsig, 0, 0); + + esp32c3_configgpio(config->miso_pin, INPUT_FUNCTION_1 | PULLUP); + esp32c3_gpio_matrix_in(config->miso_pin, config->miso_insig, 0); + + esp32c3_configgpio(config->clk_pin, OUTPUT_FUNCTION_1); + esp32c3_gpio_matrix_out(config->clk_pin, config->clk_outsig, 0, 0); +#endif + + modifyreg32(SYSTEM_PERIP_CLK_EN0_REG, 0, config->clk_bit); + modifyreg32(SYSTEM_PERIP_RST_EN0_REG, config->rst_bit, 0); + + regval = SPI_DOUTDIN_M | SPI_USR_MISO_M | SPI_USR_MOSI_M | SPI_CS_HOLD_M; + putreg32(regval, SPI_USER_REG); + putreg32(0, SPI_USER1_REG); + putreg32(0, SPI_SLAVE_REG); + putreg32(SPI_CS1_DIS_M | SPI_CS2_DIS_M, SPI_MISC_REG); + + regval = SPI_CLK_EN_M | SPI_MST_CLK_ACTIVE_M | SPI_MST_CLK_SEL_M; + putreg32(regval, SPI_CLK_GATE_REG); + +#if SPI_HAVE_SWCS + esp32c3_spi_set_regbits(SPI_MISC_REG, SPI_CS0_DIS_M); +#endif + + putreg32(0, SPI_CTRL_REG); + putreg32(VALUE_MASK(0, SPI_CS_HOLD_TIME), SPI_USER1_REG); + + esp32c3_spi_setfrequency(dev, config->clk_freq); + esp32c3_spi_setbits(dev, config->width); + esp32c3_spi_setmode(dev, config->mode); +} + +/**************************************************************************** + * Name: esp32c3_spi_deinit + * + * Description: + * Deinitialize ESP32-C3 SPI hardware interface. + * + * Input Parameters: + * dev - Device-specific state data + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void esp32c3_spi_deinit(FAR struct spi_dev_s *dev) +{ + FAR struct esp32c3_spi_priv_s *priv = (FAR struct esp32c3_spi_priv_s *)dev; + + modifyreg32(SYSTEM_PERIP_RST_EN0_REG, 0, priv->config->clk_bit); + modifyreg32(SYSTEM_PERIP_CLK_EN0_REG, priv->config->clk_bit, 0); + + priv->frequency = 0; + priv->actual = 0; + priv->mode = SPIDEV_MODE0; + priv->nbits = 0; +} + +/**************************************************************************** + * Name: esp32c3_spibus_initialize + * + * Description: + * Initialize the selected SPI bus. + * + * Input Parameters: + * port - Port number (for hardware that has multiple SPI interfaces) + * + * Returned Value: + * Valid SPI device structure reference on success; NULL on failure + * + ****************************************************************************/ + +FAR struct spi_dev_s *esp32c3_spibus_initialize(int port) +{ + FAR struct spi_dev_s *spi_dev; + FAR struct esp32c3_spi_priv_s *priv; + irqstate_t flags; + + switch (port) + { +#ifdef CONFIG_ESP32C3_SPI2 + case ESP32C3_SPI2: + priv = &esp32c3_spi2_priv; + break; +#endif + default: + return NULL; + } + + spi_dev = (FAR struct spi_dev_s *)priv; + + flags = enter_critical_section(); + + if ((volatile int)priv->refs != 0) + { + leave_critical_section(flags); + + return spi_dev; + } + + esp32c3_spi_init(spi_dev); + + priv->refs++; + + leave_critical_section(flags); + + return spi_dev; +} + +/**************************************************************************** + * Name: esp32c3_spibus_uninitialize + * + * Description: + * Uninitialize an SPI bus. + * + * Input Parameters: + * dev - Device-specific state data + * + * Returned Value: + * Zero (OK) is returned on success. Otherwise -1 (ERROR). + * + ****************************************************************************/ + +int esp32c3_spibus_uninitialize(FAR struct spi_dev_s *dev) +{ + irqstate_t flags; + FAR struct esp32c3_spi_priv_s *priv = (FAR struct esp32c3_spi_priv_s *)dev; + + DEBUGASSERT(dev); + + if (priv->refs == 0) + { + return ERROR; + } + + flags = enter_critical_section(); + + if (--priv->refs != 0) + { + leave_critical_section(flags); + return OK; + } + + leave_critical_section(flags); + + esp32c3_spi_deinit(dev); + + nxsem_destroy(&priv->exclsem); + + return OK; +} + +#endif /* CONFIG_ESP32C3_SPI */ diff --git a/arch/risc-v/src/esp32c3/esp32c3_spi.h b/arch/risc-v/src/esp32c3/esp32c3_spi.h new file mode 100644 index 00000000000..443a0f224ee --- /dev/null +++ b/arch/risc-v/src/esp32c3/esp32c3_spi.h @@ -0,0 +1,137 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/esp32c3_spi.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_ESP32C3_SPI_H +#define __ARCH_RISCV_SRC_ESP32C3_ESP32C3_SPI_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#ifndef __ASSEMBLY__ + +#undef EXTERN +#if defined(__cplusplus) +#define EXTERN extern "C" +extern "C" +{ +#else +#define EXTERN extern +#endif + +#ifdef CONFIG_ESP32C3_SPI + +#include + +#ifdef CONFIG_ESP32C3_SPI2 +# define ESP32C3_SPI2 2 +#endif + +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ + +/**************************************************************************** + * Name: esp32c3_spibus_initialize + * + * Description: + * Initialize the selected SPI bus. + * + * Input Parameters: + * port - Port number (for hardware that has multiple SPI interfaces) + * + * Returned Value: + * Valid SPI device structure reference on success; NULL on failure + * + ****************************************************************************/ + +FAR struct spi_dev_s *esp32c3_spibus_initialize(int port); + +/**************************************************************************** + * Name: esp32c3_spi[0|1]_select and esp32c3_spi[0|1]_status + * + * Description: + * The external functions, esp32c3_spi[0|1]_select, + * esp32c3_spi[0|1]_status, and esp32c3_spi[0|1]_cmddata must be provided + * by board-specific logic. + * These are implementations of the select, status, and cmddata methods of + * the SPI interface defined by struct spi_ops_s (include/nuttx/spi/spi.h). + * All other methods (including esp32c3_spibus_initialize()) are provided + * by common ESP32-C3 logic. To use this common SPI logic on your board: + * + * 1. Provide logic in esp32c3_board_initialize() to configure SPI chip + * select pins. + * 2. Provide esp32c3_spi[0|1]_select() and esp32c3_spi[0|1]_status() + * functions in your board-specific logic. These functions will perform + * chip selection and status operations using GPIOs in the way your + * board is configured. + * 3. If CONFIG_SPI_CMDDATA is defined in your NuttX configuration file, + * then provide esp32c3_spi[0|1]_cmddata() functions in your + * board-specific logic. These functions will perform cmd/data selection + * operations using GPIOs in the way your board is configured. + * 4. Add a call to esp32c3_spibus_initialize() in your low level + * application initialization logic. + * 5. The handle returned by esp32c3_spibus_initialize() may then be used + * to bind the SPI driver to higher level logic (e.g., calling + * mmcsd_spislotinitialize(), for example, will bind the SPI driver to + * the SPI MMC/SD driver). + * + ****************************************************************************/ + +#ifdef CONFIG_ESP32C3_SPI2 +void esp32c3_spi2_select(FAR struct spi_dev_s *dev, uint32_t devid, + bool selected); +uint8_t esp32c3_spi2_status(FAR struct spi_dev_s *dev, uint32_t devid); +int esp32c3_spi2_cmddata(FAR struct spi_dev_s *dev, + uint32_t devid, + bool cmd); +#endif + +/**************************************************************************** + * Name: esp32c3_spibus_uninitialize + * + * Description: + * Uninitialize an SPI bus. + * + * Input Parameters: + * dev - Device-specific state data + * + * Returned Value: + * Zero (OK) is returned on success. Otherwise -1 (ERROR). + * + ****************************************************************************/ + +int esp32c3_spibus_uninitialize(FAR struct spi_dev_s *dev); + +#endif /* CONFIG_ESP32C3_SPI */ + +#ifdef __cplusplus +} +#endif +#undef EXTERN + +#endif /* __ASSEMBLY__ */ +#endif /* __ARCH_RISCV_SRC_ESP32C3_ESP32C3_SPI_H */ diff --git a/arch/risc-v/src/esp32c3/hardware/esp32c3_pinmap.h b/arch/risc-v/src/esp32c3/hardware/esp32c3_pinmap.h new file mode 100644 index 00000000000..54465ecdc58 --- /dev/null +++ b/arch/risc-v/src/esp32c3/hardware/esp32c3_pinmap.h @@ -0,0 +1,45 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/hardware/esp32c3_pinmap.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_PINMAP_H +#define __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_PINMAP_H + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Peripheral's fixed mapped pins by IOMUX, these GPIO pins can have better + * speed performance. + */ + +/* SPI2 */ + +#define SPI2_IOMUX_MISOPIN (2) +#define SPI2_IOMUX_MOSIPIN (7) +#define SPI2_IOMUX_CLKPIN (6) +#define SPI2_IOMUX_CSPIN (10) +#define SPI2_IOMUX_WPPIN (5) +#define SPI2_IOMUX_HDPIN (4) + +#endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_PINMAP_H */ diff --git a/arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h b/arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h index 44114f26826..c9466704965 100644 --- a/arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h +++ b/arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h @@ -76,17 +76,18 @@ /* Registers Operation */ #define REG_UHCI_BASE(i) (DR_REG_UHCI0_BASE - (i) * 0x8000) -#define REG_UART_BASE( i ) (DR_REG_UART_BASE + (i) * 0x10000 + \ +#define REG_UART_BASE(i) (DR_REG_UART_BASE + (i) * 0x10000 + \ ( (i) > 1 ? 0xe000 : 0 ) ) #define REG_UART_AHB_BASE(i) (0x60000000 + (i) * 0x10000 + \ ( (i) > 1 ? 0xe000 : 0 ) ) #define UART_FIFO_AHB_REG(i) (REG_UART_AHB_BASE(i) + 0x0) -#define REG_I2S_BASE( i ) (DR_REG_I2S_BASE + (i) * 0x1E000) +#define REG_I2S_BASE(i) (DR_REG_I2S_BASE + (i) * 0x1E000) #define REG_TIMG_BASE(i) (DR_REG_TIMERGROUP0_BASE + (i)*0x1000) #define REG_SPI_MEM_BASE(i) (DR_REG_SPI0_BASE - (i) * 0x1000) +#define REG_SPI_BASE(i) (DR_REG_SPI2_BASE) #define REG_I2C_BASE(i) (DR_REG_I2C_EXT_BASE + (i) * 0x14000) -/* Periheral Clock */ +/* Peripheral Clock */ #define APB_CLK_FREQ_ROM (40 * 1000000) #define CPU_CLK_FREQ_ROM APB_CLK_FREQ_ROM diff --git a/arch/risc-v/src/esp32c3/hardware/esp32c3_spi.h b/arch/risc-v/src/esp32c3/hardware/esp32c3_spi.h new file mode 100644 index 00000000000..9b4a021163b --- /dev/null +++ b/arch/risc-v/src/esp32c3/hardware/esp32c3_spi.h @@ -0,0 +1,2214 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/hardware/esp32c3_spi.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_SPI_H +#define __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_SPI_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include "esp32c3_soc.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* SPI_CMD_REG register + * Command control register + */ + +#define SPI_CMD_REG (DR_REG_SPI2_BASE + 0x0) + +/* SPI_USR : R/W/SC; bitpos: [24]; default: 0; + * User define command enable. An operation will be triggered when the bit + * is set. The bit will be cleared once the operation done.1: enable 0: + * disable. Can not be changed by CONF_buf. + */ + +#define SPI_USR (BIT(24)) +#define SPI_USR_M (SPI_USR_V << SPI_USR_S) +#define SPI_USR_V 0x00000001 +#define SPI_USR_S 24 + +/* SPI_UPDATE : WT; bitpos: [23]; default: 0; + * Set this bit to synchronize SPI registers from APB clock domain into SPI + * module clock domain, which is only used in SPI master mode. + */ + +#define SPI_UPDATE (BIT(23)) +#define SPI_UPDATE_M (SPI_UPDATE_V << SPI_UPDATE_S) +#define SPI_UPDATE_V 0x00000001 +#define SPI_UPDATE_S 23 + +/* SPI_CONF_BITLEN : R/W; bitpos: [17:0]; default: 0; + * Define the APB cycles of SPI_CONF state. Can be configured in CONF state. + */ + +#define SPI_CONF_BITLEN 0x0003FFFF +#define SPI_CONF_BITLEN_M (SPI_CONF_BITLEN_V << SPI_CONF_BITLEN_S) +#define SPI_CONF_BITLEN_V 0x0003FFFF +#define SPI_CONF_BITLEN_S 0 + +/* SPI_ADDR_REG register + * Address value register + */ + +#define SPI_ADDR_REG (DR_REG_SPI2_BASE + 0x4) + +/* SPI_USR_ADDR_VALUE : R/W; bitpos: [31:0]; default: 0; + * Address to slave. Can be configured in CONF state. + */ + +#define SPI_USR_ADDR_VALUE 0xFFFFFFFF +#define SPI_USR_ADDR_VALUE_M (SPI_USR_ADDR_VALUE_V << SPI_USR_ADDR_VALUE_S) +#define SPI_USR_ADDR_VALUE_V 0xFFFFFFFF +#define SPI_USR_ADDR_VALUE_S 0 + +/* SPI_CTRL_REG register + * SPI control register + */ + +#define SPI_CTRL_REG (DR_REG_SPI2_BASE + 0x8) + +/* SPI_WR_BIT_ORDER : R/W; bitpos: [26]; default: 0; + * In command address write-data (MOSI) phases 1: LSB firs 0: MSB first. Can + * be configured in CONF state. + */ + +#define SPI_WR_BIT_ORDER (BIT(26)) +#define SPI_WR_BIT_ORDER_M (SPI_WR_BIT_ORDER_V << SPI_WR_BIT_ORDER_S) +#define SPI_WR_BIT_ORDER_V 0x00000001 +#define SPI_WR_BIT_ORDER_S 26 + +/* SPI_RD_BIT_ORDER : R/W; bitpos: [25]; default: 0; + * In read-data (MISO) phase 1: LSB first 0: MSB first. Can be configured in + * CONF state. + */ + +#define SPI_RD_BIT_ORDER (BIT(25)) +#define SPI_RD_BIT_ORDER_M (SPI_RD_BIT_ORDER_V << SPI_RD_BIT_ORDER_S) +#define SPI_RD_BIT_ORDER_V 0x00000001 +#define SPI_RD_BIT_ORDER_S 25 + +/* SPI_WP_POL : R/W; bitpos: [21]; default: 1; + * Write protect signal output when SPI is idle. 1: output high, 0: output + * low. Can be configured in CONF state. + */ + +#define SPI_WP_POL (BIT(21)) +#define SPI_WP_POL_M (SPI_WP_POL_V << SPI_WP_POL_S) +#define SPI_WP_POL_V 0x00000001 +#define SPI_WP_POL_S 21 + +/* SPI_HOLD_POL : R/W; bitpos: [20]; default: 1; + * SPI_HOLD output value when SPI is idle. 1: output high, 0: output low. + * Can be configured in CONF state. + */ + +#define SPI_HOLD_POL (BIT(20)) +#define SPI_HOLD_POL_M (SPI_HOLD_POL_V << SPI_HOLD_POL_S) +#define SPI_HOLD_POL_V 0x00000001 +#define SPI_HOLD_POL_S 20 + +/* SPI_D_POL : R/W; bitpos: [19]; default: 1; + * The bit is used to set MOSI line polarity, 1: high 0, low. Can be + * configured in CONF state. + */ + +#define SPI_D_POL (BIT(19)) +#define SPI_D_POL_M (SPI_D_POL_V << SPI_D_POL_S) +#define SPI_D_POL_V 0x00000001 +#define SPI_D_POL_S 19 + +/* SPI_Q_POL : R/W; bitpos: [18]; default: 1; + * The bit is used to set MISO line polarity, 1: high 0, low. Can be + * configured in CONF state. + */ + +#define SPI_Q_POL (BIT(18)) +#define SPI_Q_POL_M (SPI_Q_POL_V << SPI_Q_POL_S) +#define SPI_Q_POL_V 0x00000001 +#define SPI_Q_POL_S 18 + +/* SPI_FREAD_QUAD : R/W; bitpos: [15]; default: 0; + * In the read operations read-data phase apply 4 signals. 1: enable 0: + * disable. Can be configured in CONF state. + */ + +#define SPI_FREAD_QUAD (BIT(15)) +#define SPI_FREAD_QUAD_M (SPI_FREAD_QUAD_V << SPI_FREAD_QUAD_S) +#define SPI_FREAD_QUAD_V 0x00000001 +#define SPI_FREAD_QUAD_S 15 + +/* SPI_FREAD_DUAL : R/W; bitpos: [14]; default: 0; + * In the read operations, read-data phase apply 2 signals. 1: enable 0: + * disable. Can be configured in CONF state. + */ + +#define SPI_FREAD_DUAL (BIT(14)) +#define SPI_FREAD_DUAL_M (SPI_FREAD_DUAL_V << SPI_FREAD_DUAL_S) +#define SPI_FREAD_DUAL_V 0x00000001 +#define SPI_FREAD_DUAL_S 14 + +/* SPI_FCMD_QUAD : R/W; bitpos: [9]; default: 0; + * Apply 4 signals during command phase 1:enable 0: disable. Can be + * configured in CONF state. + */ + +#define SPI_FCMD_QUAD (BIT(9)) +#define SPI_FCMD_QUAD_M (SPI_FCMD_QUAD_V << SPI_FCMD_QUAD_S) +#define SPI_FCMD_QUAD_V 0x00000001 +#define SPI_FCMD_QUAD_S 9 + +/* SPI_FCMD_DUAL : R/W; bitpos: [8]; default: 0; + * Apply 2 signals during command phase 1:enable 0: disable. Can be + * configured in CONF state. + */ + +#define SPI_FCMD_DUAL (BIT(8)) +#define SPI_FCMD_DUAL_M (SPI_FCMD_DUAL_V << SPI_FCMD_DUAL_S) +#define SPI_FCMD_DUAL_V 0x00000001 +#define SPI_FCMD_DUAL_S 8 + +/* SPI_FADDR_QUAD : R/W; bitpos: [6]; default: 0; + * Apply 4 signals during addr phase 1:enable 0: disable. Can be configured + * in CONF state. + */ + +#define SPI_FADDR_QUAD (BIT(6)) +#define SPI_FADDR_QUAD_M (SPI_FADDR_QUAD_V << SPI_FADDR_QUAD_S) +#define SPI_FADDR_QUAD_V 0x00000001 +#define SPI_FADDR_QUAD_S 6 + +/* SPI_FADDR_DUAL : R/W; bitpos: [5]; default: 0; + * Apply 2 signals during addr phase 1:enable 0: disable. Can be configured + * in CONF state. + */ + +#define SPI_FADDR_DUAL (BIT(5)) +#define SPI_FADDR_DUAL_M (SPI_FADDR_DUAL_V << SPI_FADDR_DUAL_S) +#define SPI_FADDR_DUAL_V 0x00000001 +#define SPI_FADDR_DUAL_S 5 + +/* SPI_DUMMY_OUT : R/W; bitpos: [3]; default: 0; + * In the dummy phase the signal level of spi is output by the spi + * controller. Can be configured in CONF state. + */ + +#define SPI_DUMMY_OUT (BIT(3)) +#define SPI_DUMMY_OUT_M (SPI_DUMMY_OUT_V << SPI_DUMMY_OUT_S) +#define SPI_DUMMY_OUT_V 0x00000001 +#define SPI_DUMMY_OUT_S 3 + +/* SPI_CLOCK_REG register + * SPI clock control register + */ + +#define SPI_CLOCK_REG (DR_REG_SPI2_BASE + 0xc) + +/* SPI_CLK_EQU_SYSCLK : R/W; bitpos: [31]; default: 1; + * In the master mode 1: spi_clk is eqaul to system 0: spi_clk is divided + * from system clock. Can be configured in CONF state. + */ + +#define SPI_CLK_EQU_SYSCLK (BIT(31)) +#define SPI_CLK_EQU_SYSCLK_M (SPI_CLK_EQU_SYSCLK_V << SPI_CLK_EQU_SYSCLK_S) +#define SPI_CLK_EQU_SYSCLK_V 0x00000001 +#define SPI_CLK_EQU_SYSCLK_S 31 + +/* SPI_CLKDIV_PRE : R/W; bitpos: [21:18]; default: 0; + * In the master mode it is pre-divider of spi_clk. Can be configured in + * CONF state. + */ + +#define SPI_CLKDIV_PRE 0x0000000F +#define SPI_CLKDIV_PRE_M (SPI_CLKDIV_PRE_V << SPI_CLKDIV_PRE_S) +#define SPI_CLKDIV_PRE_V 0x0000000F +#define SPI_CLKDIV_PRE_S 18 + +/* SPI_CLKCNT_N : R/W; bitpos: [17:12]; default: 3; + * In the master mode it is the divider of spi_clk. So spi_clk frequency is + * system/(spi_clkdiv_pre+1)/(spi_clkcnt_N+1). Can be configured in CONF + * state. + */ + +#define SPI_CLKCNT_N 0x0000003F +#define SPI_CLKCNT_N_M (SPI_CLKCNT_N_V << SPI_CLKCNT_N_S) +#define SPI_CLKCNT_N_V 0x0000003F +#define SPI_CLKCNT_N_S 12 + +/* SPI_CLKCNT_H : R/W; bitpos: [11:6]; default: 1; + * In the master mode it must be floor((spi_clkcnt_N+1)/2-1). In the slave + * mode it must be 0. Can be configured in CONF state. + */ + +#define SPI_CLKCNT_H 0x0000003F +#define SPI_CLKCNT_H_M (SPI_CLKCNT_H_V << SPI_CLKCNT_H_S) +#define SPI_CLKCNT_H_V 0x0000003F +#define SPI_CLKCNT_H_S 6 + +/* SPI_CLKCNT_L : R/W; bitpos: [5:0]; default: 3; + * In the master mode it must be equal to spi_clkcnt_N. In the slave mode it + * must be 0. Can be configured in CONF state. + */ + +#define SPI_CLKCNT_L 0x0000003F +#define SPI_CLKCNT_L_M (SPI_CLKCNT_L_V << SPI_CLKCNT_L_S) +#define SPI_CLKCNT_L_V 0x0000003F +#define SPI_CLKCNT_L_S 0 + +/* SPI_USER_REG register + * SPI USER control register + */ + +#define SPI_USER_REG (DR_REG_SPI2_BASE + 0x10) + +/* SPI_USR_COMMAND : R/W; bitpos: [31]; default: 1; + * This bit enable the command phase of an operation. Can be configured in + * CONF state. + */ + +#define SPI_USR_COMMAND (BIT(31)) +#define SPI_USR_COMMAND_M (SPI_USR_COMMAND_V << SPI_USR_COMMAND_S) +#define SPI_USR_COMMAND_V 0x00000001 +#define SPI_USR_COMMAND_S 31 + +/* SPI_USR_ADDR : R/W; bitpos: [30]; default: 0; + * This bit enable the address phase of an operation. Can be configured in + * CONF state. + */ + +#define SPI_USR_ADDR (BIT(30)) +#define SPI_USR_ADDR_M (SPI_USR_ADDR_V << SPI_USR_ADDR_S) +#define SPI_USR_ADDR_V 0x00000001 +#define SPI_USR_ADDR_S 30 + +/* SPI_USR_DUMMY : R/W; bitpos: [29]; default: 0; + * This bit enable the dummy phase of an operation. Can be configured in + * CONF state. + */ + +#define SPI_USR_DUMMY (BIT(29)) +#define SPI_USR_DUMMY_M (SPI_USR_DUMMY_V << SPI_USR_DUMMY_S) +#define SPI_USR_DUMMY_V 0x00000001 +#define SPI_USR_DUMMY_S 29 + +/* SPI_USR_MISO : R/W; bitpos: [28]; default: 0; + * This bit enable the read-data phase of an operation. Can be configured in + * CONF state. + */ + +#define SPI_USR_MISO (BIT(28)) +#define SPI_USR_MISO_M (SPI_USR_MISO_V << SPI_USR_MISO_S) +#define SPI_USR_MISO_V 0x00000001 +#define SPI_USR_MISO_S 28 + +/* SPI_USR_MOSI : R/W; bitpos: [27]; default: 0; + * This bit enable the write-data phase of an operation. Can be configured + * in CONF state. + */ + +#define SPI_USR_MOSI (BIT(27)) +#define SPI_USR_MOSI_M (SPI_USR_MOSI_V << SPI_USR_MOSI_S) +#define SPI_USR_MOSI_V 0x00000001 +#define SPI_USR_MOSI_S 27 + +/* SPI_USR_DUMMY_IDLE : R/W; bitpos: [26]; default: 0; + * spi clock is disable in dummy phase when the bit is enable. Can be + * configured in CONF state. + */ + +#define SPI_USR_DUMMY_IDLE (BIT(26)) +#define SPI_USR_DUMMY_IDLE_M (SPI_USR_DUMMY_IDLE_V << SPI_USR_DUMMY_IDLE_S) +#define SPI_USR_DUMMY_IDLE_V 0x00000001 +#define SPI_USR_DUMMY_IDLE_S 26 + +/* SPI_USR_MOSI_HIGHPART : R/W; bitpos: [25]; default: 0; + * write-data phase only access to high-part of the buffer spi_w8~spi_w15. + * 1: enable 0: disable. Can be configured in CONF state. + */ + +#define SPI_USR_MOSI_HIGHPART (BIT(25)) +#define SPI_USR_MOSI_HIGHPART_M (SPI_USR_MOSI_HIGHPART_V << SPI_USR_MOSI_HIGHPART_S) +#define SPI_USR_MOSI_HIGHPART_V 0x00000001 +#define SPI_USR_MOSI_HIGHPART_S 25 + +/* SPI_USR_MISO_HIGHPART : R/W; bitpos: [24]; default: 0; + * read-data phase only access to high-part of the buffer spi_w8~spi_w15. 1: + * enable 0: disable. Can be configured in CONF state. + */ + +#define SPI_USR_MISO_HIGHPART (BIT(24)) +#define SPI_USR_MISO_HIGHPART_M (SPI_USR_MISO_HIGHPART_V << SPI_USR_MISO_HIGHPART_S) +#define SPI_USR_MISO_HIGHPART_V 0x00000001 +#define SPI_USR_MISO_HIGHPART_S 24 + +/* SPI_SIO : R/W; bitpos: [17]; default: 0; + * Set the bit to enable 3-line half duplex communication mosi and miso + * signals share the same pin. 1: enable 0: disable. Can be configured in + * CONF state. + */ + +#define SPI_SIO (BIT(17)) +#define SPI_SIO_M (SPI_SIO_V << SPI_SIO_S) +#define SPI_SIO_V 0x00000001 +#define SPI_SIO_S 17 + +/* SPI_USR_CONF_NXT : R/W; bitpos: [15]; default: 0; + * 1: Enable the DMA CONF phase of next seg-trans operation, which means + * seg-trans will continue. 0: The seg-trans will end after the current SPI + * seg-trans or this is not seg-trans mode. Can be configured in CONF state. + */ + +#define SPI_USR_CONF_NXT (BIT(15)) +#define SPI_USR_CONF_NXT_M (SPI_USR_CONF_NXT_V << SPI_USR_CONF_NXT_S) +#define SPI_USR_CONF_NXT_V 0x00000001 +#define SPI_USR_CONF_NXT_S 15 + +/* SPI_FWRITE_QUAD : R/W; bitpos: [13]; default: 0; + * In the write operations read-data phase apply 4 signals. Can be + * configured in CONF state. + */ + +#define SPI_FWRITE_QUAD (BIT(13)) +#define SPI_FWRITE_QUAD_M (SPI_FWRITE_QUAD_V << SPI_FWRITE_QUAD_S) +#define SPI_FWRITE_QUAD_V 0x00000001 +#define SPI_FWRITE_QUAD_S 13 + +/* SPI_FWRITE_DUAL : R/W; bitpos: [12]; default: 0; + * In the write operations read-data phase apply 2 signals. Can be + * configured in CONF state. + */ + +#define SPI_FWRITE_DUAL (BIT(12)) +#define SPI_FWRITE_DUAL_M (SPI_FWRITE_DUAL_V << SPI_FWRITE_DUAL_S) +#define SPI_FWRITE_DUAL_V 0x00000001 +#define SPI_FWRITE_DUAL_S 12 + +/* SPI_CK_OUT_EDGE : R/W; bitpos: [9]; default: 0; + * the bit combined with spi_mosi_delay_mode bits to set mosi signal delay + * mode. Can be configured in CONF state. + */ + +#define SPI_CK_OUT_EDGE (BIT(9)) +#define SPI_CK_OUT_EDGE_M (SPI_CK_OUT_EDGE_V << SPI_CK_OUT_EDGE_S) +#define SPI_CK_OUT_EDGE_V 0x00000001 +#define SPI_CK_OUT_EDGE_S 9 + +/* SPI_RSCK_I_EDGE : R/W; bitpos: [8]; default: 0; + * In the slave mode, this bit can be used to change the polarity of rsck. + * 0: rsck = !spi_ck_i. 1:rsck = spi_ck_i. + */ + +#define SPI_RSCK_I_EDGE (BIT(8)) +#define SPI_RSCK_I_EDGE_M (SPI_RSCK_I_EDGE_V << SPI_RSCK_I_EDGE_S) +#define SPI_RSCK_I_EDGE_V 0x00000001 +#define SPI_RSCK_I_EDGE_S 8 + +/* SPI_CS_SETUP : R/W; bitpos: [7]; default: 1; + * spi cs is enable when spi is in prepare phase. 1: enable 0: disable. + * Can be configured in CONF state. + */ + +#define SPI_CS_SETUP (BIT(7)) +#define SPI_CS_SETUP_M (SPI_CS_SETUP_V << SPI_CS_SETUP_S) +#define SPI_CS_SETUP_V 0x00000001 +#define SPI_CS_SETUP_S 7 + +/* SPI_CS_HOLD : R/W; bitpos: [6]; default: 1; + * spi cs keep low when spi is in done phase. 1: enable 0: disable. Can be + * configured in CONF state. + */ + +#define SPI_CS_HOLD (BIT(6)) +#define SPI_CS_HOLD_M (SPI_CS_HOLD_V << SPI_CS_HOLD_S) +#define SPI_CS_HOLD_V 0x00000001 +#define SPI_CS_HOLD_S 6 + +/* SPI_TSCK_I_EDGE : R/W; bitpos: [5]; default: 0; + * In the slave mode, this bit can be used to change the polarity of tsck. + * 0: tsck = spi_ck_i. 1:tsck = !spi_ck_i. + */ + +#define SPI_TSCK_I_EDGE (BIT(5)) +#define SPI_TSCK_I_EDGE_M (SPI_TSCK_I_EDGE_V << SPI_TSCK_I_EDGE_S) +#define SPI_TSCK_I_EDGE_V 0x00000001 +#define SPI_TSCK_I_EDGE_S 5 + +/* SPI_QPI_MODE : R/W/SS/SC; bitpos: [3]; default: 0; + * Both for master mode and slave mode. 1: spi controller is in QPI mode. 0: + * others. Can be configured in CONF state. + */ + +#define SPI_QPI_MODE (BIT(3)) +#define SPI_QPI_MODE_M (SPI_QPI_MODE_V << SPI_QPI_MODE_S) +#define SPI_QPI_MODE_V 0x00000001 +#define SPI_QPI_MODE_S 3 + +/* SPI_DOUTDIN : R/W; bitpos: [0]; default: 0; + * Set the bit to enable full duplex communication. 1: enable 0: disable. + * Can be configured in CONF state. + */ + +#define SPI_DOUTDIN (BIT(0)) +#define SPI_DOUTDIN_M (SPI_DOUTDIN_V << SPI_DOUTDIN_S) +#define SPI_DOUTDIN_V 0x00000001 +#define SPI_DOUTDIN_S 0 + +/* SPI_USER1_REG register + * SPI USER control register 1 + */ + +#define SPI_USER1_REG (DR_REG_SPI2_BASE + 0x14) + +/* SPI_USR_ADDR_BITLEN : R/W; bitpos: [31:27]; default: 23; + * The length in bits of address phase. The register value shall be + * (bit_num-1). Can be configured in CONF state. + */ + +#define SPI_USR_ADDR_BITLEN 0x0000001F +#define SPI_USR_ADDR_BITLEN_M (SPI_USR_ADDR_BITLEN_V << SPI_USR_ADDR_BITLEN_S) +#define SPI_USR_ADDR_BITLEN_V 0x0000001F +#define SPI_USR_ADDR_BITLEN_S 27 + +/* SPI_CS_HOLD_TIME : R/W; bitpos: [26:22]; default: 1; + * delay cycles of cs pin by spi clock this bits are combined with + * spi_cs_hold bit. Can be configured in CONF state. + */ + +#define SPI_CS_HOLD_TIME 0x0000001F +#define SPI_CS_HOLD_TIME_M (SPI_CS_HOLD_TIME_V << SPI_CS_HOLD_TIME_S) +#define SPI_CS_HOLD_TIME_V 0x0000001F +#define SPI_CS_HOLD_TIME_S 22 + +/* SPI_CS_SETUP_TIME : R/W; bitpos: [21:17]; default: 0; + * (cycles+1) of prepare phase by spi clock this bits are combined with + * spi_cs_setup bit. Can be configured in CONF state. + */ + +#define SPI_CS_SETUP_TIME 0x0000001F +#define SPI_CS_SETUP_TIME_M (SPI_CS_SETUP_TIME_V << SPI_CS_SETUP_TIME_S) +#define SPI_CS_SETUP_TIME_V 0x0000001F +#define SPI_CS_SETUP_TIME_S 17 + +/* SPI_MST_WFULL_ERR_END_EN : R/W; bitpos: [16]; default: 1; + * 1: SPI transfer is ended when SPI RX AFIFO wfull error is valid in GP-SPI + * master FD/HD-mode. 0: SPI transfer is not ended when SPI RX AFIFO wfull + * error is valid in GP-SPI master FD/HD-mode. + */ + +#define SPI_MST_WFULL_ERR_END_EN (BIT(16)) +#define SPI_MST_WFULL_ERR_END_EN_M (SPI_MST_WFULL_ERR_END_EN_V << SPI_MST_WFULL_ERR_END_EN_S) +#define SPI_MST_WFULL_ERR_END_EN_V 0x00000001 +#define SPI_MST_WFULL_ERR_END_EN_S 16 + +/* SPI_USR_DUMMY_CYCLELEN : R/W; bitpos: [7:0]; default: 7; + * The length in spi_clk cycles of dummy phase. The register value shall be + * (cycle_num-1). Can be configured in CONF state. + */ + +#define SPI_USR_DUMMY_CYCLELEN 0x000000FF +#define SPI_USR_DUMMY_CYCLELEN_M (SPI_USR_DUMMY_CYCLELEN_V << SPI_USR_DUMMY_CYCLELEN_S) +#define SPI_USR_DUMMY_CYCLELEN_V 0x000000FF +#define SPI_USR_DUMMY_CYCLELEN_S 0 + +/* SPI_USER2_REG register + * SPI USER control register 2 + */ + +#define SPI_USER2_REG (DR_REG_SPI2_BASE + 0x18) + +/* SPI_USR_COMMAND_BITLEN : R/W; bitpos: [31:28]; default: 7; + * The length in bits of command phase. The register value shall be + * (bit_num-1). Can be configured in CONF state. + */ + +#define SPI_USR_COMMAND_BITLEN 0x0000000F +#define SPI_USR_COMMAND_BITLEN_M (SPI_USR_COMMAND_BITLEN_V << SPI_USR_COMMAND_BITLEN_S) +#define SPI_USR_COMMAND_BITLEN_V 0x0000000F +#define SPI_USR_COMMAND_BITLEN_S 28 + +/* SPI_MST_REMPTY_ERR_END_EN : R/W; bitpos: [27]; default: 1; + * 1: SPI transfer is ended when SPI TX AFIFO read empty error is valid in + * GP-SPI master FD/HD-mode. 0: SPI transfer is not ended when SPI TX AFIFO + * read empty error is valid in GP-SPI master FD/HD-mode. + */ + +#define SPI_MST_REMPTY_ERR_END_EN (BIT(27)) +#define SPI_MST_REMPTY_ERR_END_EN_M (SPI_MST_REMPTY_ERR_END_EN_V << SPI_MST_REMPTY_ERR_END_EN_S) +#define SPI_MST_REMPTY_ERR_END_EN_V 0x00000001 +#define SPI_MST_REMPTY_ERR_END_EN_S 27 + +/* SPI_USR_COMMAND_VALUE : R/W; bitpos: [15:0]; default: 0; + * The value of command. Can be configured in CONF state. + */ + +#define SPI_USR_COMMAND_VALUE 0x0000FFFF +#define SPI_USR_COMMAND_VALUE_M (SPI_USR_COMMAND_VALUE_V << SPI_USR_COMMAND_VALUE_S) +#define SPI_USR_COMMAND_VALUE_V 0x0000FFFF +#define SPI_USR_COMMAND_VALUE_S 0 + +/* SPI_MS_DLEN_REG register + * SPI data bit length control register + */ + +#define SPI_MS_DLEN_REG (DR_REG_SPI2_BASE + 0x1c) + +/* SPI_MS_DATA_BITLEN : R/W; bitpos: [17:0]; default: 0; + * The value of these bits is the configured SPI transmission data bit + * length in master mode DMA controlled transfer or CPU controlled transfer. + * The value is also the configured bit length in slave mode DMA RX + * controlled transfer. The register value shall be (bit_num-1). Can be + * configured in CONF state. + */ + +#define SPI_MS_DATA_BITLEN 0x0003FFFF +#define SPI_MS_DATA_BITLEN_M (SPI_MS_DATA_BITLEN_V << SPI_MS_DATA_BITLEN_S) +#define SPI_MS_DATA_BITLEN_V 0x0003FFFF +#define SPI_MS_DATA_BITLEN_S 0 + +/* SPI_MISC_REG register + * SPI misc register + */ + +#define SPI_MISC_REG (DR_REG_SPI2_BASE + 0x20) + +/* SPI_QUAD_DIN_PIN_SWAP : R/W; bitpos: [31]; default: 0; + * 1: spi quad input swap enable 0: spi quad input swap disable. Can be + * configured in CONF state. + */ + +#define SPI_QUAD_DIN_PIN_SWAP (BIT(31)) +#define SPI_QUAD_DIN_PIN_SWAP_M (SPI_QUAD_DIN_PIN_SWAP_V << SPI_QUAD_DIN_PIN_SWAP_S) +#define SPI_QUAD_DIN_PIN_SWAP_V 0x00000001 +#define SPI_QUAD_DIN_PIN_SWAP_S 31 + +/* SPI_CS_KEEP_ACTIVE : R/W; bitpos: [30]; default: 0; + * spi cs line keep low when the bit is set. Can be configured in CONF state. + */ + +#define SPI_CS_KEEP_ACTIVE (BIT(30)) +#define SPI_CS_KEEP_ACTIVE_M (SPI_CS_KEEP_ACTIVE_V << SPI_CS_KEEP_ACTIVE_S) +#define SPI_CS_KEEP_ACTIVE_V 0x00000001 +#define SPI_CS_KEEP_ACTIVE_S 30 + +/* SPI_CK_IDLE_EDGE : R/W; bitpos: [29]; default: 0; + * 1: spi clk line is high when idle 0: spi clk line is low when idle. + * Can be configured in CONF state. + */ + +#define SPI_CK_IDLE_EDGE (BIT(29)) +#define SPI_CK_IDLE_EDGE_M (SPI_CK_IDLE_EDGE_V << SPI_CK_IDLE_EDGE_S) +#define SPI_CK_IDLE_EDGE_V 0x00000001 +#define SPI_CK_IDLE_EDGE_S 29 + +/* SPI_SLAVE_CS_POL : R/W; bitpos: [23]; default: 0; + * spi slave input cs polarity select. 1: inv 0: not change. Can be + * configured in CONF state. + */ + +#define SPI_SLAVE_CS_POL (BIT(23)) +#define SPI_SLAVE_CS_POL_M (SPI_SLAVE_CS_POL_V << SPI_SLAVE_CS_POL_S) +#define SPI_SLAVE_CS_POL_V 0x00000001 +#define SPI_SLAVE_CS_POL_S 23 + +/* SPI_MASTER_CS_POL : R/W; bitpos: [12:7]; default: 0; + * In the master mode the bits are the polarity of spi cs line, the value is + * equivalent to spi_cs ^ spi_master_cs_pol. Can be configured in CONF state. + */ + +#define SPI_MASTER_CS_POL 0x0000003F +#define SPI_MASTER_CS_POL_M (SPI_MASTER_CS_POL_V << SPI_MASTER_CS_POL_S) +#define SPI_MASTER_CS_POL_V 0x0000003F +#define SPI_MASTER_CS_POL_S 7 + +/* SPI_CK_DIS : R/W; bitpos: [6]; default: 0; + * 1: spi clk out disable, 0: spi clk out enable. Can be configured in CONF + * state. + */ + +#define SPI_CK_DIS (BIT(6)) +#define SPI_CK_DIS_M (SPI_CK_DIS_V << SPI_CK_DIS_S) +#define SPI_CK_DIS_V 0x00000001 +#define SPI_CK_DIS_S 6 + +/* SPI_CS5_DIS : R/W; bitpos: [5]; default: 1; + * SPI CS$n pin enable, 1: disable CS$n, 0: spi_cs$n signal is from/to CS$n + * pin. Can be configured in CONF state. + */ + +#define SPI_CS5_DIS (BIT(5)) +#define SPI_CS5_DIS_M (SPI_CS5_DIS_V << SPI_CS5_DIS_S) +#define SPI_CS5_DIS_V 0x00000001 +#define SPI_CS5_DIS_S 5 + +/* SPI_CS4_DIS : R/W; bitpos: [4]; default: 1; + * SPI CS$n pin enable, 1: disable CS$n, 0: spi_cs$n signal is from/to CS$n + * pin. Can be configured in CONF state. + */ + +#define SPI_CS4_DIS (BIT(4)) +#define SPI_CS4_DIS_M (SPI_CS4_DIS_V << SPI_CS4_DIS_S) +#define SPI_CS4_DIS_V 0x00000001 +#define SPI_CS4_DIS_S 4 + +/* SPI_CS3_DIS : R/W; bitpos: [3]; default: 1; + * SPI CS$n pin enable, 1: disable CS$n, 0: spi_cs$n signal is from/to CS$n + * pin. Can be configured in CONF state. + */ + +#define SPI_CS3_DIS (BIT(3)) +#define SPI_CS3_DIS_M (SPI_CS3_DIS_V << SPI_CS3_DIS_S) +#define SPI_CS3_DIS_V 0x00000001 +#define SPI_CS3_DIS_S 3 + +/* SPI_CS2_DIS : R/W; bitpos: [2]; default: 1; + * SPI CS$n pin enable, 1: disable CS$n, 0: spi_cs$n signal is from/to CS$n + * pin. Can be configured in CONF state. + */ + +#define SPI_CS2_DIS (BIT(2)) +#define SPI_CS2_DIS_M (SPI_CS2_DIS_V << SPI_CS2_DIS_S) +#define SPI_CS2_DIS_V 0x00000001 +#define SPI_CS2_DIS_S 2 + +/* SPI_CS1_DIS : R/W; bitpos: [1]; default: 1; + * SPI CS$n pin enable, 1: disable CS$n, 0: spi_cs$n signal is from/to CS$n + * pin. Can be configured in CONF state. + */ + +#define SPI_CS1_DIS (BIT(1)) +#define SPI_CS1_DIS_M (SPI_CS1_DIS_V << SPI_CS1_DIS_S) +#define SPI_CS1_DIS_V 0x00000001 +#define SPI_CS1_DIS_S 1 + +/* SPI_CS0_DIS : R/W; bitpos: [0]; default: 0; + * SPI CS$n pin enable, 1: disable CS$n, 0: spi_cs$n signal is from/to CS$n + * pin. Can be configured in CONF state. + */ + +#define SPI_CS0_DIS (BIT(0)) +#define SPI_CS0_DIS_M (SPI_CS0_DIS_V << SPI_CS0_DIS_S) +#define SPI_CS0_DIS_V 0x00000001 +#define SPI_CS0_DIS_S 0 + +/* SPI_DIN_MODE_REG register + * SPI input delay mode configuration + */ + +#define SPI_DIN_MODE_REG (DR_REG_SPI2_BASE + 0x24) + +/* SPI_TIMING_HCLK_ACTIVE : R/W; bitpos: [16]; default: 0; + * 1:enable hclk in SPI input timing module. 0: disable it. Can be + * configured in CONF state. + */ + +#define SPI_TIMING_HCLK_ACTIVE (BIT(16)) +#define SPI_TIMING_HCLK_ACTIVE_M (SPI_TIMING_HCLK_ACTIVE_V << SPI_TIMING_HCLK_ACTIVE_S) +#define SPI_TIMING_HCLK_ACTIVE_V 0x00000001 +#define SPI_TIMING_HCLK_ACTIVE_S 16 + +/* SPI_DIN3_MODE : R/W; bitpos: [7:6]; default: 0; + * the input signals are delayed by SPI module clock cycles, 0: input + * without delayed, 1: input with the posedge of clk_apb,2 input with the + * negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF + * state. + */ + +#define SPI_DIN3_MODE 0x00000003 +#define SPI_DIN3_MODE_M (SPI_DIN3_MODE_V << SPI_DIN3_MODE_S) +#define SPI_DIN3_MODE_V 0x00000003 +#define SPI_DIN3_MODE_S 6 + +/* SPI_DIN2_MODE : R/W; bitpos: [5:4]; default: 0; + * the input signals are delayed by SPI module clock cycles, 0: input + * without delayed, 1: input with the posedge of clk_apb,2 input with the + * negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF + * state. + */ + +#define SPI_DIN2_MODE 0x00000003 +#define SPI_DIN2_MODE_M (SPI_DIN2_MODE_V << SPI_DIN2_MODE_S) +#define SPI_DIN2_MODE_V 0x00000003 +#define SPI_DIN2_MODE_S 4 + +/* SPI_DIN1_MODE : R/W; bitpos: [3:2]; default: 0; + * the input signals are delayed by SPI module clock cycles, 0: input + * without delayed, 1: input with the posedge of clk_apb,2 input with the + * negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF + * state. + */ + +#define SPI_DIN1_MODE 0x00000003 +#define SPI_DIN1_MODE_M (SPI_DIN1_MODE_V << SPI_DIN1_MODE_S) +#define SPI_DIN1_MODE_V 0x00000003 +#define SPI_DIN1_MODE_S 2 + +/* SPI_DIN0_MODE : R/W; bitpos: [1:0]; default: 0; + * the input signals are delayed by SPI module clock cycles, 0: input + * without delayed, 1: input with the posedge of clk_apb,2 input with the + * negedge of clk_apb, 3: input with the spi_clk. Can be configured in CONF + * state. + */ + +#define SPI_DIN0_MODE 0x00000003 +#define SPI_DIN0_MODE_M (SPI_DIN0_MODE_V << SPI_DIN0_MODE_S) +#define SPI_DIN0_MODE_V 0x00000003 +#define SPI_DIN0_MODE_S 0 + +/* SPI_DIN_NUM_REG register + * SPI input delay number configuration + */ + +#define SPI_DIN_NUM_REG (DR_REG_SPI2_BASE + 0x28) + +/* SPI_DIN3_NUM : R/W; bitpos: [7:6]; default: 0; + * the input signals are delayed by SPI module clock cycles, 0: delayed by 1 + * cycle, 1: delayed by 2 cycles,... Can be configured in CONF state. + */ + +#define SPI_DIN3_NUM 0x00000003 +#define SPI_DIN3_NUM_M (SPI_DIN3_NUM_V << SPI_DIN3_NUM_S) +#define SPI_DIN3_NUM_V 0x00000003 +#define SPI_DIN3_NUM_S 6 + +/* SPI_DIN2_NUM : R/W; bitpos: [5:4]; default: 0; + * the input signals are delayed by SPI module clock cycles, 0: delayed by 1 + * cycle, 1: delayed by 2 cycles,... Can be configured in CONF state. + */ + +#define SPI_DIN2_NUM 0x00000003 +#define SPI_DIN2_NUM_M (SPI_DIN2_NUM_V << SPI_DIN2_NUM_S) +#define SPI_DIN2_NUM_V 0x00000003 +#define SPI_DIN2_NUM_S 4 + +/* SPI_DIN1_NUM : R/W; bitpos: [3:2]; default: 0; + * the input signals are delayed by SPI module clock cycles, 0: delayed by 1 + * cycle, 1: delayed by 2 cycles,... Can be configured in CONF state. + */ + +#define SPI_DIN1_NUM 0x00000003 +#define SPI_DIN1_NUM_M (SPI_DIN1_NUM_V << SPI_DIN1_NUM_S) +#define SPI_DIN1_NUM_V 0x00000003 +#define SPI_DIN1_NUM_S 2 + +/* SPI_DIN0_NUM : R/W; bitpos: [1:0]; default: 0; + * the input signals are delayed by SPI module clock cycles, 0: delayed by 1 + * cycle, 1: delayed by 2 cycles,... Can be configured in CONF state. + */ + +#define SPI_DIN0_NUM 0x00000003 +#define SPI_DIN0_NUM_M (SPI_DIN0_NUM_V << SPI_DIN0_NUM_S) +#define SPI_DIN0_NUM_V 0x00000003 +#define SPI_DIN0_NUM_S 0 + +/* SPI_DOUT_MODE_REG register + * SPI output delay mode configuration + */ + +#define SPI_DOUT_MODE_REG (DR_REG_SPI2_BASE + 0x2c) + +/* SPI_DOUT3_MODE : R/W; bitpos: [3]; default: 0; + * The output signal $n is delayed by the SPI module clock, 0: output + * without delayed, 1: output delay for a SPI module clock cycle at its + * negative edge. Can be configured in CONF state. + */ + +#define SPI_DOUT3_MODE (BIT(3)) +#define SPI_DOUT3_MODE_M (SPI_DOUT3_MODE_V << SPI_DOUT3_MODE_S) +#define SPI_DOUT3_MODE_V 0x00000001 +#define SPI_DOUT3_MODE_S 3 + +/* SPI_DOUT2_MODE : R/W; bitpos: [2]; default: 0; + * The output signal $n is delayed by the SPI module clock, 0: output + * without delayed, 1: output delay for a SPI module clock cycle at its + * negative edge. Can be configured in CONF state. + */ + +#define SPI_DOUT2_MODE (BIT(2)) +#define SPI_DOUT2_MODE_M (SPI_DOUT2_MODE_V << SPI_DOUT2_MODE_S) +#define SPI_DOUT2_MODE_V 0x00000001 +#define SPI_DOUT2_MODE_S 2 + +/* SPI_DOUT1_MODE : R/W; bitpos: [1]; default: 0; + * The output signal $n is delayed by the SPI module clock, 0: output + * without delayed, 1: output delay for a SPI module clock cycle at its + * negative edge. Can be configured in CONF state. + */ + +#define SPI_DOUT1_MODE (BIT(1)) +#define SPI_DOUT1_MODE_M (SPI_DOUT1_MODE_V << SPI_DOUT1_MODE_S) +#define SPI_DOUT1_MODE_V 0x00000001 +#define SPI_DOUT1_MODE_S 1 + +/* SPI_DOUT0_MODE : R/W; bitpos: [0]; default: 0; + * The output signal $n is delayed by the SPI module clock, 0: output + * without delayed, 1: output delay for a SPI module clock cycle at its + * negative edge. Can be configured in CONF state. + */ + +#define SPI_DOUT0_MODE (BIT(0)) +#define SPI_DOUT0_MODE_M (SPI_DOUT0_MODE_V << SPI_DOUT0_MODE_S) +#define SPI_DOUT0_MODE_V 0x00000001 +#define SPI_DOUT0_MODE_S 0 + +/* SPI_DMA_CONF_REG register + * SPI DMA control register + */ + +#define SPI_DMA_CONF_REG (DR_REG_SPI2_BASE + 0x30) + +/* SPI_DMA_AFIFO_RST : WT; bitpos: [31]; default: 0; + * Set this bit to reset DMA TX AFIFO, which is used to send data out in SPI + * slave DMA controlled mode transfer. + */ + +#define SPI_DMA_AFIFO_RST (BIT(31)) +#define SPI_DMA_AFIFO_RST_M (SPI_DMA_AFIFO_RST_V << SPI_DMA_AFIFO_RST_S) +#define SPI_DMA_AFIFO_RST_V 0x00000001 +#define SPI_DMA_AFIFO_RST_S 31 + +/* SPI_BUF_AFIFO_RST : WT; bitpos: [30]; default: 0; + * Set this bit to reset BUF TX AFIFO, which is used send data out in SPI + * slave CPU controlled mode transfer and master mode transfer. + */ + +#define SPI_BUF_AFIFO_RST (BIT(30)) +#define SPI_BUF_AFIFO_RST_M (SPI_BUF_AFIFO_RST_V << SPI_BUF_AFIFO_RST_S) +#define SPI_BUF_AFIFO_RST_V 0x00000001 +#define SPI_BUF_AFIFO_RST_S 30 + +/* SPI_RX_AFIFO_RST : WT; bitpos: [29]; default: 0; + * Set this bit to reset RX AFIFO, which is used to receive data in SPI + * master and slave mode transfer. + */ + +#define SPI_RX_AFIFO_RST (BIT(29)) +#define SPI_RX_AFIFO_RST_M (SPI_RX_AFIFO_RST_V << SPI_RX_AFIFO_RST_S) +#define SPI_RX_AFIFO_RST_V 0x00000001 +#define SPI_RX_AFIFO_RST_S 29 + +/* SPI_DMA_TX_ENA : R/W; bitpos: [28]; default: 0; + * Set this bit to enable SPI DMA controlled send data mode. + */ + +#define SPI_DMA_TX_ENA (BIT(28)) +#define SPI_DMA_TX_ENA_M (SPI_DMA_TX_ENA_V << SPI_DMA_TX_ENA_S) +#define SPI_DMA_TX_ENA_V 0x00000001 +#define SPI_DMA_TX_ENA_S 28 + +/* SPI_DMA_RX_ENA : R/W; bitpos: [27]; default: 0; + * Set this bit to enable SPI DMA controlled receive data mode. + */ + +#define SPI_DMA_RX_ENA (BIT(27)) +#define SPI_DMA_RX_ENA_M (SPI_DMA_RX_ENA_V << SPI_DMA_RX_ENA_S) +#define SPI_DMA_RX_ENA_V 0x00000001 +#define SPI_DMA_RX_ENA_S 27 + +/* SPI_RX_EOF_EN : R/W; bitpos: [21]; default: 0; + * 1: spi_dma_inlink_eof is set when the number of dma pushed data bytes is + * equal to the value of spi_slv/mst_dma_rd_bytelen[19:0] in spi dma + * transition. 0: spi_dma_inlink_eof is set by spi_trans_done in + * non-seg-trans or spi_dma_seg_trans_done in seg-trans. + */ + +#define SPI_RX_EOF_EN (BIT(21)) +#define SPI_RX_EOF_EN_M (SPI_RX_EOF_EN_V << SPI_RX_EOF_EN_S) +#define SPI_RX_EOF_EN_V 0x00000001 +#define SPI_RX_EOF_EN_S 21 + +/* SPI_SLV_TX_SEG_TRANS_CLR_EN : R/W; bitpos: [20]; default: 0; + * 1: spi_dma_outfifo_empty_vld is cleared by spi slave cmd 6. 0: + * spi_dma_outfifo_empty_vld is cleared by spi_trans_done. + */ + +#define SPI_SLV_TX_SEG_TRANS_CLR_EN (BIT(20)) +#define SPI_SLV_TX_SEG_TRANS_CLR_EN_M (SPI_SLV_TX_SEG_TRANS_CLR_EN_V << SPI_SLV_TX_SEG_TRANS_CLR_EN_S) +#define SPI_SLV_TX_SEG_TRANS_CLR_EN_V 0x00000001 +#define SPI_SLV_TX_SEG_TRANS_CLR_EN_S 20 + +/* SPI_SLV_RX_SEG_TRANS_CLR_EN : R/W; bitpos: [19]; default: 0; + * 1: spi_dma_infifo_full_vld is cleared by spi slave cmd 5. 0: + * spi_dma_infifo_full_vld is cleared by spi_trans_done. + */ + +#define SPI_SLV_RX_SEG_TRANS_CLR_EN (BIT(19)) +#define SPI_SLV_RX_SEG_TRANS_CLR_EN_M (SPI_SLV_RX_SEG_TRANS_CLR_EN_V << SPI_SLV_RX_SEG_TRANS_CLR_EN_S) +#define SPI_SLV_RX_SEG_TRANS_CLR_EN_V 0x00000001 +#define SPI_SLV_RX_SEG_TRANS_CLR_EN_S 19 + +/* SPI_DMA_SLV_SEG_TRANS_EN : R/W; bitpos: [18]; default: 0; + * Enable dma segment transfer in spi dma half slave mode. 1: enable. 0: + * disable. + */ + +#define SPI_DMA_SLV_SEG_TRANS_EN (BIT(18)) +#define SPI_DMA_SLV_SEG_TRANS_EN_M (SPI_DMA_SLV_SEG_TRANS_EN_V << SPI_DMA_SLV_SEG_TRANS_EN_S) +#define SPI_DMA_SLV_SEG_TRANS_EN_V 0x00000001 +#define SPI_DMA_SLV_SEG_TRANS_EN_S 18 + +/* SPI_DMA_INT_ENA_REG register + * SPI DMA interrupt enable register + */ + +#define SPI_DMA_INT_ENA_REG (DR_REG_SPI2_BASE + 0x34) + +/* SPI_APP1_INT_ENA : R/W; bitpos: [20]; default: 0; + * The enable bit for SPI_APP1_INT interrupt. + */ + +#define SPI_APP1_INT_ENA (BIT(20)) +#define SPI_APP1_INT_ENA_M (SPI_APP1_INT_ENA_V << SPI_APP1_INT_ENA_S) +#define SPI_APP1_INT_ENA_V 0x00000001 +#define SPI_APP1_INT_ENA_S 20 + +/* SPI_APP2_INT_ENA : R/W; bitpos: [19]; default: 0; + * The enable bit for SPI_APP2_INT interrupt. + */ + +#define SPI_APP2_INT_ENA (BIT(19)) +#define SPI_APP2_INT_ENA_M (SPI_APP2_INT_ENA_V << SPI_APP2_INT_ENA_S) +#define SPI_APP2_INT_ENA_V 0x00000001 +#define SPI_APP2_INT_ENA_S 19 + +/* SPI_MST_TX_AFIFO_REMPTY_ERR_INT_ENA : R/W; bitpos: [18]; default: 0; + * The enable bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt. + */ + +#define SPI_MST_TX_AFIFO_REMPTY_ERR_INT_ENA (BIT(18)) +#define SPI_MST_TX_AFIFO_REMPTY_ERR_INT_ENA_M (SPI_MST_TX_AFIFO_REMPTY_ERR_INT_ENA_V << SPI_MST_TX_AFIFO_REMPTY_ERR_INT_ENA_S) +#define SPI_MST_TX_AFIFO_REMPTY_ERR_INT_ENA_V 0x00000001 +#define SPI_MST_TX_AFIFO_REMPTY_ERR_INT_ENA_S 18 + +/* SPI_MST_RX_AFIFO_WFULL_ERR_INT_ENA : R/W; bitpos: [17]; default: 0; + * The enable bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt. + */ + +#define SPI_MST_RX_AFIFO_WFULL_ERR_INT_ENA (BIT(17)) +#define SPI_MST_RX_AFIFO_WFULL_ERR_INT_ENA_M (SPI_MST_RX_AFIFO_WFULL_ERR_INT_ENA_V << SPI_MST_RX_AFIFO_WFULL_ERR_INT_ENA_S) +#define SPI_MST_RX_AFIFO_WFULL_ERR_INT_ENA_V 0x00000001 +#define SPI_MST_RX_AFIFO_WFULL_ERR_INT_ENA_S 17 + +/* SPI_SLV_CMD_ERR_INT_ENA : R/W; bitpos: [16]; default: 0; + * The enable bit for SPI_SLV_CMD_ERR_INT interrupt. + */ + +#define SPI_SLV_CMD_ERR_INT_ENA (BIT(16)) +#define SPI_SLV_CMD_ERR_INT_ENA_M (SPI_SLV_CMD_ERR_INT_ENA_V << SPI_SLV_CMD_ERR_INT_ENA_S) +#define SPI_SLV_CMD_ERR_INT_ENA_V 0x00000001 +#define SPI_SLV_CMD_ERR_INT_ENA_S 16 + +/* SPI_SLV_BUF_ADDR_ERR_INT_ENA : R/W; bitpos: [15]; default: 0; + * The enable bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt. + */ + +#define SPI_SLV_BUF_ADDR_ERR_INT_ENA (BIT(15)) +#define SPI_SLV_BUF_ADDR_ERR_INT_ENA_M (SPI_SLV_BUF_ADDR_ERR_INT_ENA_V << SPI_SLV_BUF_ADDR_ERR_INT_ENA_S) +#define SPI_SLV_BUF_ADDR_ERR_INT_ENA_V 0x00000001 +#define SPI_SLV_BUF_ADDR_ERR_INT_ENA_S 15 + +/* SPI_SEG_MAGIC_ERR_INT_ENA : R/W; bitpos: [14]; default: 0; + * The enable bit for SPI_SEG_MAGIC_ERR_INT interrupt. + */ + +#define SPI_SEG_MAGIC_ERR_INT_ENA (BIT(14)) +#define SPI_SEG_MAGIC_ERR_INT_ENA_M (SPI_SEG_MAGIC_ERR_INT_ENA_V << SPI_SEG_MAGIC_ERR_INT_ENA_S) +#define SPI_SEG_MAGIC_ERR_INT_ENA_V 0x00000001 +#define SPI_SEG_MAGIC_ERR_INT_ENA_S 14 + +/* SPI_DMA_SEG_TRANS_DONE_INT_ENA : R/W; bitpos: [13]; default: 0; + * The enable bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt. + */ + +#define SPI_DMA_SEG_TRANS_DONE_INT_ENA (BIT(13)) +#define SPI_DMA_SEG_TRANS_DONE_INT_ENA_M (SPI_DMA_SEG_TRANS_DONE_INT_ENA_V << SPI_DMA_SEG_TRANS_DONE_INT_ENA_S) +#define SPI_DMA_SEG_TRANS_DONE_INT_ENA_V 0x00000001 +#define SPI_DMA_SEG_TRANS_DONE_INT_ENA_S 13 + +/* SPI_TRANS_DONE_INT_ENA : R/W; bitpos: [12]; default: 0; + * The enable bit for SPI_TRANS_DONE_INT interrupt. + */ + +#define SPI_TRANS_DONE_INT_ENA (BIT(12)) +#define SPI_TRANS_DONE_INT_ENA_M (SPI_TRANS_DONE_INT_ENA_V << SPI_TRANS_DONE_INT_ENA_S) +#define SPI_TRANS_DONE_INT_ENA_V 0x00000001 +#define SPI_TRANS_DONE_INT_ENA_S 12 + +/* SPI_SLV_WR_BUF_DONE_INT_ENA : R/W; bitpos: [11]; default: 0; + * The enable bit for SPI_SLV_WR_BUF_DONE_INT interrupt. + */ + +#define SPI_SLV_WR_BUF_DONE_INT_ENA (BIT(11)) +#define SPI_SLV_WR_BUF_DONE_INT_ENA_M (SPI_SLV_WR_BUF_DONE_INT_ENA_V << SPI_SLV_WR_BUF_DONE_INT_ENA_S) +#define SPI_SLV_WR_BUF_DONE_INT_ENA_V 0x00000001 +#define SPI_SLV_WR_BUF_DONE_INT_ENA_S 11 + +/* SPI_SLV_RD_BUF_DONE_INT_ENA : R/W; bitpos: [10]; default: 0; + * The enable bit for SPI_SLV_RD_BUF_DONE_INT interrupt. + */ + +#define SPI_SLV_RD_BUF_DONE_INT_ENA (BIT(10)) +#define SPI_SLV_RD_BUF_DONE_INT_ENA_M (SPI_SLV_RD_BUF_DONE_INT_ENA_V << SPI_SLV_RD_BUF_DONE_INT_ENA_S) +#define SPI_SLV_RD_BUF_DONE_INT_ENA_V 0x00000001 +#define SPI_SLV_RD_BUF_DONE_INT_ENA_S 10 + +/* SPI_SLV_WR_DMA_DONE_INT_ENA : R/W; bitpos: [9]; default: 0; + * The enable bit for SPI_SLV_WR_DMA_DONE_INT interrupt. + */ + +#define SPI_SLV_WR_DMA_DONE_INT_ENA (BIT(9)) +#define SPI_SLV_WR_DMA_DONE_INT_ENA_M (SPI_SLV_WR_DMA_DONE_INT_ENA_V << SPI_SLV_WR_DMA_DONE_INT_ENA_S) +#define SPI_SLV_WR_DMA_DONE_INT_ENA_V 0x00000001 +#define SPI_SLV_WR_DMA_DONE_INT_ENA_S 9 + +/* SPI_SLV_RD_DMA_DONE_INT_ENA : R/W; bitpos: [8]; default: 0; + * The enable bit for SPI_SLV_RD_DMA_DONE_INT interrupt. + */ + +#define SPI_SLV_RD_DMA_DONE_INT_ENA (BIT(8)) +#define SPI_SLV_RD_DMA_DONE_INT_ENA_M (SPI_SLV_RD_DMA_DONE_INT_ENA_V << SPI_SLV_RD_DMA_DONE_INT_ENA_S) +#define SPI_SLV_RD_DMA_DONE_INT_ENA_V 0x00000001 +#define SPI_SLV_RD_DMA_DONE_INT_ENA_S 8 + +/* SPI_SLV_CMDA_INT_ENA : R/W; bitpos: [7]; default: 0; + * The enable bit for SPI slave CMDA interrupt. + */ + +#define SPI_SLV_CMDA_INT_ENA (BIT(7)) +#define SPI_SLV_CMDA_INT_ENA_M (SPI_SLV_CMDA_INT_ENA_V << SPI_SLV_CMDA_INT_ENA_S) +#define SPI_SLV_CMDA_INT_ENA_V 0x00000001 +#define SPI_SLV_CMDA_INT_ENA_S 7 + +/* SPI_SLV_CMD9_INT_ENA : R/W; bitpos: [6]; default: 0; + * The enable bit for SPI slave CMD9 interrupt. + */ + +#define SPI_SLV_CMD9_INT_ENA (BIT(6)) +#define SPI_SLV_CMD9_INT_ENA_M (SPI_SLV_CMD9_INT_ENA_V << SPI_SLV_CMD9_INT_ENA_S) +#define SPI_SLV_CMD9_INT_ENA_V 0x00000001 +#define SPI_SLV_CMD9_INT_ENA_S 6 + +/* SPI_SLV_CMD8_INT_ENA : R/W; bitpos: [5]; default: 0; + * The enable bit for SPI slave CMD8 interrupt. + */ + +#define SPI_SLV_CMD8_INT_ENA (BIT(5)) +#define SPI_SLV_CMD8_INT_ENA_M (SPI_SLV_CMD8_INT_ENA_V << SPI_SLV_CMD8_INT_ENA_S) +#define SPI_SLV_CMD8_INT_ENA_V 0x00000001 +#define SPI_SLV_CMD8_INT_ENA_S 5 + +/* SPI_SLV_CMD7_INT_ENA : R/W; bitpos: [4]; default: 0; + * The enable bit for SPI slave CMD7 interrupt. + */ + +#define SPI_SLV_CMD7_INT_ENA (BIT(4)) +#define SPI_SLV_CMD7_INT_ENA_M (SPI_SLV_CMD7_INT_ENA_V << SPI_SLV_CMD7_INT_ENA_S) +#define SPI_SLV_CMD7_INT_ENA_V 0x00000001 +#define SPI_SLV_CMD7_INT_ENA_S 4 + +/* SPI_SLV_EN_QPI_INT_ENA : R/W; bitpos: [3]; default: 0; + * The enable bit for SPI slave En_QPI interrupt. + */ + +#define SPI_SLV_EN_QPI_INT_ENA (BIT(3)) +#define SPI_SLV_EN_QPI_INT_ENA_M (SPI_SLV_EN_QPI_INT_ENA_V << SPI_SLV_EN_QPI_INT_ENA_S) +#define SPI_SLV_EN_QPI_INT_ENA_V 0x00000001 +#define SPI_SLV_EN_QPI_INT_ENA_S 3 + +/* SPI_SLV_EX_QPI_INT_ENA : R/W; bitpos: [2]; default: 0; + * The enable bit for SPI slave Ex_QPI interrupt. + */ + +#define SPI_SLV_EX_QPI_INT_ENA (BIT(2)) +#define SPI_SLV_EX_QPI_INT_ENA_M (SPI_SLV_EX_QPI_INT_ENA_V << SPI_SLV_EX_QPI_INT_ENA_S) +#define SPI_SLV_EX_QPI_INT_ENA_V 0x00000001 +#define SPI_SLV_EX_QPI_INT_ENA_S 2 + +/* SPI_DMA_OUTFIFO_EMPTY_ERR_INT_ENA : R/W; bitpos: [1]; default: 0; + * The enable bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt. + */ + +#define SPI_DMA_OUTFIFO_EMPTY_ERR_INT_ENA (BIT(1)) +#define SPI_DMA_OUTFIFO_EMPTY_ERR_INT_ENA_M (SPI_DMA_OUTFIFO_EMPTY_ERR_INT_ENA_V << SPI_DMA_OUTFIFO_EMPTY_ERR_INT_ENA_S) +#define SPI_DMA_OUTFIFO_EMPTY_ERR_INT_ENA_V 0x00000001 +#define SPI_DMA_OUTFIFO_EMPTY_ERR_INT_ENA_S 1 + +/* SPI_DMA_INFIFO_FULL_ERR_INT_ENA : R/W; bitpos: [0]; default: 0; + * The enable bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt. + */ + +#define SPI_DMA_INFIFO_FULL_ERR_INT_ENA (BIT(0)) +#define SPI_DMA_INFIFO_FULL_ERR_INT_ENA_M (SPI_DMA_INFIFO_FULL_ERR_INT_ENA_V << SPI_DMA_INFIFO_FULL_ERR_INT_ENA_S) +#define SPI_DMA_INFIFO_FULL_ERR_INT_ENA_V 0x00000001 +#define SPI_DMA_INFIFO_FULL_ERR_INT_ENA_S 0 + +/* SPI_DMA_INT_CLR_REG register + * SPI DMA interrupt clear register + */ + +#define SPI_DMA_INT_CLR_REG (DR_REG_SPI2_BASE + 0x38) + +/* SPI_APP1_INT_CLR : WT; bitpos: [20]; default: 0; + * The clear bit for SPI_APP1_INT interrupt. + */ + +#define SPI_APP1_INT_CLR (BIT(20)) +#define SPI_APP1_INT_CLR_M (SPI_APP1_INT_CLR_V << SPI_APP1_INT_CLR_S) +#define SPI_APP1_INT_CLR_V 0x00000001 +#define SPI_APP1_INT_CLR_S 20 + +/* SPI_APP2_INT_CLR : WT; bitpos: [19]; default: 0; + * The clear bit for SPI_APP2_INT interrupt. + */ + +#define SPI_APP2_INT_CLR (BIT(19)) +#define SPI_APP2_INT_CLR_M (SPI_APP2_INT_CLR_V << SPI_APP2_INT_CLR_S) +#define SPI_APP2_INT_CLR_V 0x00000001 +#define SPI_APP2_INT_CLR_S 19 + +/* SPI_MST_TX_AFIFO_REMPTY_ERR_INT_CLR : WT; bitpos: [18]; default: 0; + * The clear bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt. + */ + +#define SPI_MST_TX_AFIFO_REMPTY_ERR_INT_CLR (BIT(18)) +#define SPI_MST_TX_AFIFO_REMPTY_ERR_INT_CLR_M (SPI_MST_TX_AFIFO_REMPTY_ERR_INT_CLR_V << SPI_MST_TX_AFIFO_REMPTY_ERR_INT_CLR_S) +#define SPI_MST_TX_AFIFO_REMPTY_ERR_INT_CLR_V 0x00000001 +#define SPI_MST_TX_AFIFO_REMPTY_ERR_INT_CLR_S 18 + +/* SPI_MST_RX_AFIFO_WFULL_ERR_INT_CLR : WT; bitpos: [17]; default: 0; + * The clear bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt. + */ + +#define SPI_MST_RX_AFIFO_WFULL_ERR_INT_CLR (BIT(17)) +#define SPI_MST_RX_AFIFO_WFULL_ERR_INT_CLR_M (SPI_MST_RX_AFIFO_WFULL_ERR_INT_CLR_V << SPI_MST_RX_AFIFO_WFULL_ERR_INT_CLR_S) +#define SPI_MST_RX_AFIFO_WFULL_ERR_INT_CLR_V 0x00000001 +#define SPI_MST_RX_AFIFO_WFULL_ERR_INT_CLR_S 17 + +/* SPI_SLV_CMD_ERR_INT_CLR : WT; bitpos: [16]; default: 0; + * The clear bit for SPI_SLV_CMD_ERR_INT interrupt. + */ + +#define SPI_SLV_CMD_ERR_INT_CLR (BIT(16)) +#define SPI_SLV_CMD_ERR_INT_CLR_M (SPI_SLV_CMD_ERR_INT_CLR_V << SPI_SLV_CMD_ERR_INT_CLR_S) +#define SPI_SLV_CMD_ERR_INT_CLR_V 0x00000001 +#define SPI_SLV_CMD_ERR_INT_CLR_S 16 + +/* SPI_SLV_BUF_ADDR_ERR_INT_CLR : WT; bitpos: [15]; default: 0; + * The clear bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt. + */ + +#define SPI_SLV_BUF_ADDR_ERR_INT_CLR (BIT(15)) +#define SPI_SLV_BUF_ADDR_ERR_INT_CLR_M (SPI_SLV_BUF_ADDR_ERR_INT_CLR_V << SPI_SLV_BUF_ADDR_ERR_INT_CLR_S) +#define SPI_SLV_BUF_ADDR_ERR_INT_CLR_V 0x00000001 +#define SPI_SLV_BUF_ADDR_ERR_INT_CLR_S 15 + +/* SPI_SEG_MAGIC_ERR_INT_CLR : WT; bitpos: [14]; default: 0; + * The clear bit for SPI_SEG_MAGIC_ERR_INT interrupt. + */ + +#define SPI_SEG_MAGIC_ERR_INT_CLR (BIT(14)) +#define SPI_SEG_MAGIC_ERR_INT_CLR_M (SPI_SEG_MAGIC_ERR_INT_CLR_V << SPI_SEG_MAGIC_ERR_INT_CLR_S) +#define SPI_SEG_MAGIC_ERR_INT_CLR_V 0x00000001 +#define SPI_SEG_MAGIC_ERR_INT_CLR_S 14 + +/* SPI_DMA_SEG_TRANS_DONE_INT_CLR : WT; bitpos: [13]; default: 0; + * The clear bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt. + */ + +#define SPI_DMA_SEG_TRANS_DONE_INT_CLR (BIT(13)) +#define SPI_DMA_SEG_TRANS_DONE_INT_CLR_M (SPI_DMA_SEG_TRANS_DONE_INT_CLR_V << SPI_DMA_SEG_TRANS_DONE_INT_CLR_S) +#define SPI_DMA_SEG_TRANS_DONE_INT_CLR_V 0x00000001 +#define SPI_DMA_SEG_TRANS_DONE_INT_CLR_S 13 + +/* SPI_TRANS_DONE_INT_CLR : WT; bitpos: [12]; default: 0; + * The clear bit for SPI_TRANS_DONE_INT interrupt. + */ + +#define SPI_TRANS_DONE_INT_CLR (BIT(12)) +#define SPI_TRANS_DONE_INT_CLR_M (SPI_TRANS_DONE_INT_CLR_V << SPI_TRANS_DONE_INT_CLR_S) +#define SPI_TRANS_DONE_INT_CLR_V 0x00000001 +#define SPI_TRANS_DONE_INT_CLR_S 12 + +/* SPI_SLV_WR_BUF_DONE_INT_CLR : WT; bitpos: [11]; default: 0; + * The clear bit for SPI_SLV_WR_BUF_DONE_INT interrupt. + */ + +#define SPI_SLV_WR_BUF_DONE_INT_CLR (BIT(11)) +#define SPI_SLV_WR_BUF_DONE_INT_CLR_M (SPI_SLV_WR_BUF_DONE_INT_CLR_V << SPI_SLV_WR_BUF_DONE_INT_CLR_S) +#define SPI_SLV_WR_BUF_DONE_INT_CLR_V 0x00000001 +#define SPI_SLV_WR_BUF_DONE_INT_CLR_S 11 + +/* SPI_SLV_RD_BUF_DONE_INT_CLR : WT; bitpos: [10]; default: 0; + * The clear bit for SPI_SLV_RD_BUF_DONE_INT interrupt. + */ + +#define SPI_SLV_RD_BUF_DONE_INT_CLR (BIT(10)) +#define SPI_SLV_RD_BUF_DONE_INT_CLR_M (SPI_SLV_RD_BUF_DONE_INT_CLR_V << SPI_SLV_RD_BUF_DONE_INT_CLR_S) +#define SPI_SLV_RD_BUF_DONE_INT_CLR_V 0x00000001 +#define SPI_SLV_RD_BUF_DONE_INT_CLR_S 10 + +/* SPI_SLV_WR_DMA_DONE_INT_CLR : WT; bitpos: [9]; default: 0; + * The clear bit for SPI_SLV_WR_DMA_DONE_INT interrupt. + */ + +#define SPI_SLV_WR_DMA_DONE_INT_CLR (BIT(9)) +#define SPI_SLV_WR_DMA_DONE_INT_CLR_M (SPI_SLV_WR_DMA_DONE_INT_CLR_V << SPI_SLV_WR_DMA_DONE_INT_CLR_S) +#define SPI_SLV_WR_DMA_DONE_INT_CLR_V 0x00000001 +#define SPI_SLV_WR_DMA_DONE_INT_CLR_S 9 + +/* SPI_SLV_RD_DMA_DONE_INT_CLR : WT; bitpos: [8]; default: 0; + * The clear bit for SPI_SLV_RD_DMA_DONE_INT interrupt. + */ + +#define SPI_SLV_RD_DMA_DONE_INT_CLR (BIT(8)) +#define SPI_SLV_RD_DMA_DONE_INT_CLR_M (SPI_SLV_RD_DMA_DONE_INT_CLR_V << SPI_SLV_RD_DMA_DONE_INT_CLR_S) +#define SPI_SLV_RD_DMA_DONE_INT_CLR_V 0x00000001 +#define SPI_SLV_RD_DMA_DONE_INT_CLR_S 8 + +/* SPI_SLV_CMDA_INT_CLR : WT; bitpos: [7]; default: 0; + * The clear bit for SPI slave CMDA interrupt. + */ + +#define SPI_SLV_CMDA_INT_CLR (BIT(7)) +#define SPI_SLV_CMDA_INT_CLR_M (SPI_SLV_CMDA_INT_CLR_V << SPI_SLV_CMDA_INT_CLR_S) +#define SPI_SLV_CMDA_INT_CLR_V 0x00000001 +#define SPI_SLV_CMDA_INT_CLR_S 7 + +/* SPI_SLV_CMD9_INT_CLR : WT; bitpos: [6]; default: 0; + * The clear bit for SPI slave CMD9 interrupt. + */ + +#define SPI_SLV_CMD9_INT_CLR (BIT(6)) +#define SPI_SLV_CMD9_INT_CLR_M (SPI_SLV_CMD9_INT_CLR_V << SPI_SLV_CMD9_INT_CLR_S) +#define SPI_SLV_CMD9_INT_CLR_V 0x00000001 +#define SPI_SLV_CMD9_INT_CLR_S 6 + +/* SPI_SLV_CMD8_INT_CLR : WT; bitpos: [5]; default: 0; + * The clear bit for SPI slave CMD8 interrupt. + */ + +#define SPI_SLV_CMD8_INT_CLR (BIT(5)) +#define SPI_SLV_CMD8_INT_CLR_M (SPI_SLV_CMD8_INT_CLR_V << SPI_SLV_CMD8_INT_CLR_S) +#define SPI_SLV_CMD8_INT_CLR_V 0x00000001 +#define SPI_SLV_CMD8_INT_CLR_S 5 + +/* SPI_SLV_CMD7_INT_CLR : WT; bitpos: [4]; default: 0; + * The clear bit for SPI slave CMD7 interrupt. + */ + +#define SPI_SLV_CMD7_INT_CLR (BIT(4)) +#define SPI_SLV_CMD7_INT_CLR_M (SPI_SLV_CMD7_INT_CLR_V << SPI_SLV_CMD7_INT_CLR_S) +#define SPI_SLV_CMD7_INT_CLR_V 0x00000001 +#define SPI_SLV_CMD7_INT_CLR_S 4 + +/* SPI_SLV_EN_QPI_INT_CLR : WT; bitpos: [3]; default: 0; + * The clear bit for SPI slave En_QPI interrupt. + */ + +#define SPI_SLV_EN_QPI_INT_CLR (BIT(3)) +#define SPI_SLV_EN_QPI_INT_CLR_M (SPI_SLV_EN_QPI_INT_CLR_V << SPI_SLV_EN_QPI_INT_CLR_S) +#define SPI_SLV_EN_QPI_INT_CLR_V 0x00000001 +#define SPI_SLV_EN_QPI_INT_CLR_S 3 + +/* SPI_SLV_EX_QPI_INT_CLR : WT; bitpos: [2]; default: 0; + * The clear bit for SPI slave Ex_QPI interrupt. + */ + +#define SPI_SLV_EX_QPI_INT_CLR (BIT(2)) +#define SPI_SLV_EX_QPI_INT_CLR_M (SPI_SLV_EX_QPI_INT_CLR_V << SPI_SLV_EX_QPI_INT_CLR_S) +#define SPI_SLV_EX_QPI_INT_CLR_V 0x00000001 +#define SPI_SLV_EX_QPI_INT_CLR_S 2 + +/* SPI_DMA_OUTFIFO_EMPTY_ERR_INT_CLR : WT; bitpos: [1]; default: 0; + * The clear bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt. + */ + +#define SPI_DMA_OUTFIFO_EMPTY_ERR_INT_CLR (BIT(1)) +#define SPI_DMA_OUTFIFO_EMPTY_ERR_INT_CLR_M (SPI_DMA_OUTFIFO_EMPTY_ERR_INT_CLR_V << SPI_DMA_OUTFIFO_EMPTY_ERR_INT_CLR_S) +#define SPI_DMA_OUTFIFO_EMPTY_ERR_INT_CLR_V 0x00000001 +#define SPI_DMA_OUTFIFO_EMPTY_ERR_INT_CLR_S 1 + +/* SPI_DMA_INFIFO_FULL_ERR_INT_CLR : WT; bitpos: [0]; default: 0; + * The clear bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt. + */ + +#define SPI_DMA_INFIFO_FULL_ERR_INT_CLR (BIT(0)) +#define SPI_DMA_INFIFO_FULL_ERR_INT_CLR_M (SPI_DMA_INFIFO_FULL_ERR_INT_CLR_V << SPI_DMA_INFIFO_FULL_ERR_INT_CLR_S) +#define SPI_DMA_INFIFO_FULL_ERR_INT_CLR_V 0x00000001 +#define SPI_DMA_INFIFO_FULL_ERR_INT_CLR_S 0 + +/* SPI_DMA_INT_RAW_REG register + * SPI DMA interrupt raw register + */ + +#define SPI_DMA_INT_RAW_REG (DR_REG_SPI2_BASE + 0x3c) + +/* SPI_APP1_INT_RAW : R/W/WTC; bitpos: [20]; default: 0; + * The raw bit for SPI_APP1_INT interrupt. The value is only controlled by + * application. + */ + +#define SPI_APP1_INT_RAW (BIT(20)) +#define SPI_APP1_INT_RAW_M (SPI_APP1_INT_RAW_V << SPI_APP1_INT_RAW_S) +#define SPI_APP1_INT_RAW_V 0x00000001 +#define SPI_APP1_INT_RAW_S 20 + +/* SPI_APP2_INT_RAW : R/W/WTC; bitpos: [19]; default: 0; + * The raw bit for SPI_APP2_INT interrupt. The value is only controlled by + * application. + */ + +#define SPI_APP2_INT_RAW (BIT(19)) +#define SPI_APP2_INT_RAW_M (SPI_APP2_INT_RAW_V << SPI_APP2_INT_RAW_S) +#define SPI_APP2_INT_RAW_V 0x00000001 +#define SPI_APP2_INT_RAW_S 19 + +/* SPI_MST_TX_AFIFO_REMPTY_ERR_INT_RAW : R/W/WTC/SS; bitpos: [18]; default: + * 0; + * The raw bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt. 1: There is a + * TX BUF AFIFO read-empty error when SPI outputs data in master mode. 0: + * Others. + */ + +#define SPI_MST_TX_AFIFO_REMPTY_ERR_INT_RAW (BIT(18)) +#define SPI_MST_TX_AFIFO_REMPTY_ERR_INT_RAW_M (SPI_MST_TX_AFIFO_REMPTY_ERR_INT_RAW_V << SPI_MST_TX_AFIFO_REMPTY_ERR_INT_RAW_S) +#define SPI_MST_TX_AFIFO_REMPTY_ERR_INT_RAW_V 0x00000001 +#define SPI_MST_TX_AFIFO_REMPTY_ERR_INT_RAW_S 18 + +/* SPI_MST_RX_AFIFO_WFULL_ERR_INT_RAW : R/W/WTC/SS; bitpos: [17]; default: 0; + * The raw bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt. 1: There is a + * RX AFIFO write-full error when SPI inputs data in master mode. 0: Others. + */ + +#define SPI_MST_RX_AFIFO_WFULL_ERR_INT_RAW (BIT(17)) +#define SPI_MST_RX_AFIFO_WFULL_ERR_INT_RAW_M (SPI_MST_RX_AFIFO_WFULL_ERR_INT_RAW_V << SPI_MST_RX_AFIFO_WFULL_ERR_INT_RAW_S) +#define SPI_MST_RX_AFIFO_WFULL_ERR_INT_RAW_V 0x00000001 +#define SPI_MST_RX_AFIFO_WFULL_ERR_INT_RAW_S 17 + +/* SPI_SLV_CMD_ERR_INT_RAW : R/W/WTC/SS; bitpos: [16]; default: 0; + * The raw bit for SPI_SLV_CMD_ERR_INT interrupt. 1: The slave command value + * in the current SPI slave HD mode transmission is not supported. 0: Others. + */ + +#define SPI_SLV_CMD_ERR_INT_RAW (BIT(16)) +#define SPI_SLV_CMD_ERR_INT_RAW_M (SPI_SLV_CMD_ERR_INT_RAW_V << SPI_SLV_CMD_ERR_INT_RAW_S) +#define SPI_SLV_CMD_ERR_INT_RAW_V 0x00000001 +#define SPI_SLV_CMD_ERR_INT_RAW_S 16 + +/* SPI_SLV_BUF_ADDR_ERR_INT_RAW : R/W/WTC/SS; bitpos: [15]; default: 0; + * The raw bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt. 1: The accessing data + * address of the current SPI slave mode CPU controlled FD, Wr_BUF or Rd_BUF + * transmission is bigger than 63. 0: Others. + */ + +#define SPI_SLV_BUF_ADDR_ERR_INT_RAW (BIT(15)) +#define SPI_SLV_BUF_ADDR_ERR_INT_RAW_M (SPI_SLV_BUF_ADDR_ERR_INT_RAW_V << SPI_SLV_BUF_ADDR_ERR_INT_RAW_S) +#define SPI_SLV_BUF_ADDR_ERR_INT_RAW_V 0x00000001 +#define SPI_SLV_BUF_ADDR_ERR_INT_RAW_S 15 + +/* SPI_SEG_MAGIC_ERR_INT_RAW : R/W/WTC/SS; bitpos: [14]; default: 0; + * The raw bit for SPI_SEG_MAGIC_ERR_INT interrupt. 1: The magic value in + * CONF buffer is error in the DMA seg-conf-trans. 0: others. + */ + +#define SPI_SEG_MAGIC_ERR_INT_RAW (BIT(14)) +#define SPI_SEG_MAGIC_ERR_INT_RAW_M (SPI_SEG_MAGIC_ERR_INT_RAW_V << SPI_SEG_MAGIC_ERR_INT_RAW_S) +#define SPI_SEG_MAGIC_ERR_INT_RAW_V 0x00000001 +#define SPI_SEG_MAGIC_ERR_INT_RAW_S 14 + +/* SPI_DMA_SEG_TRANS_DONE_INT_RAW : R/W/WTC/SS; bitpos: [13]; default: 0; + * The raw bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt. 1: spi master DMA + * full-duplex/half-duplex seg-conf-trans ends or slave half-duplex + * seg-trans ends. And data has been pushed to corresponding memory. 0: + * seg-conf-trans or seg-trans is not ended or not occurred. + */ + +#define SPI_DMA_SEG_TRANS_DONE_INT_RAW (BIT(13)) +#define SPI_DMA_SEG_TRANS_DONE_INT_RAW_M (SPI_DMA_SEG_TRANS_DONE_INT_RAW_V << SPI_DMA_SEG_TRANS_DONE_INT_RAW_S) +#define SPI_DMA_SEG_TRANS_DONE_INT_RAW_V 0x00000001 +#define SPI_DMA_SEG_TRANS_DONE_INT_RAW_S 13 + +/* SPI_TRANS_DONE_INT_RAW : R/W/WTC/SS; bitpos: [12]; default: 0; + * The raw bit for SPI_TRANS_DONE_INT interrupt. 1: SPI master mode + * transmission is ended. 0: others. + */ + +#define SPI_TRANS_DONE_INT_RAW (BIT(12)) +#define SPI_TRANS_DONE_INT_RAW_M (SPI_TRANS_DONE_INT_RAW_V << SPI_TRANS_DONE_INT_RAW_S) +#define SPI_TRANS_DONE_INT_RAW_V 0x00000001 +#define SPI_TRANS_DONE_INT_RAW_S 12 + +/* SPI_SLV_WR_BUF_DONE_INT_RAW : R/W/WTC/SS; bitpos: [11]; default: 0; + * The raw bit for SPI_SLV_WR_BUF_DONE_INT interrupt. 1: SPI slave mode + * Wr_BUF transmission is ended. 0: Others. + */ + +#define SPI_SLV_WR_BUF_DONE_INT_RAW (BIT(11)) +#define SPI_SLV_WR_BUF_DONE_INT_RAW_M (SPI_SLV_WR_BUF_DONE_INT_RAW_V << SPI_SLV_WR_BUF_DONE_INT_RAW_S) +#define SPI_SLV_WR_BUF_DONE_INT_RAW_V 0x00000001 +#define SPI_SLV_WR_BUF_DONE_INT_RAW_S 11 + +/* SPI_SLV_RD_BUF_DONE_INT_RAW : R/W/WTC/SS; bitpos: [10]; default: 0; + * The raw bit for SPI_SLV_RD_BUF_DONE_INT interrupt. 1: SPI slave mode + * Rd_BUF transmission is ended. 0: Others. + */ + +#define SPI_SLV_RD_BUF_DONE_INT_RAW (BIT(10)) +#define SPI_SLV_RD_BUF_DONE_INT_RAW_M (SPI_SLV_RD_BUF_DONE_INT_RAW_V << SPI_SLV_RD_BUF_DONE_INT_RAW_S) +#define SPI_SLV_RD_BUF_DONE_INT_RAW_V 0x00000001 +#define SPI_SLV_RD_BUF_DONE_INT_RAW_S 10 + +/* SPI_SLV_WR_DMA_DONE_INT_RAW : R/W/WTC/SS; bitpos: [9]; default: 0; + * The raw bit for SPI_SLV_WR_DMA_DONE_INT interrupt. 1: SPI slave mode + * Wr_DMA transmission is ended. 0: Others. + */ + +#define SPI_SLV_WR_DMA_DONE_INT_RAW (BIT(9)) +#define SPI_SLV_WR_DMA_DONE_INT_RAW_M (SPI_SLV_WR_DMA_DONE_INT_RAW_V << SPI_SLV_WR_DMA_DONE_INT_RAW_S) +#define SPI_SLV_WR_DMA_DONE_INT_RAW_V 0x00000001 +#define SPI_SLV_WR_DMA_DONE_INT_RAW_S 9 + +/* SPI_SLV_RD_DMA_DONE_INT_RAW : R/W/WTC/SS; bitpos: [8]; default: 0; + * The raw bit for SPI_SLV_RD_DMA_DONE_INT interrupt. 1: SPI slave mode + * Rd_DMA transmission is ended. 0: Others. + */ + +#define SPI_SLV_RD_DMA_DONE_INT_RAW (BIT(8)) +#define SPI_SLV_RD_DMA_DONE_INT_RAW_M (SPI_SLV_RD_DMA_DONE_INT_RAW_V << SPI_SLV_RD_DMA_DONE_INT_RAW_S) +#define SPI_SLV_RD_DMA_DONE_INT_RAW_V 0x00000001 +#define SPI_SLV_RD_DMA_DONE_INT_RAW_S 8 + +/* SPI_SLV_CMDA_INT_RAW : R/W/WTC/SS; bitpos: [7]; default: 0; + * The raw bit for SPI slave CMDA interrupt. 1: SPI slave mode CMDA + * transmission is ended. 0: Others. + */ + +#define SPI_SLV_CMDA_INT_RAW (BIT(7)) +#define SPI_SLV_CMDA_INT_RAW_M (SPI_SLV_CMDA_INT_RAW_V << SPI_SLV_CMDA_INT_RAW_S) +#define SPI_SLV_CMDA_INT_RAW_V 0x00000001 +#define SPI_SLV_CMDA_INT_RAW_S 7 + +/* SPI_SLV_CMD9_INT_RAW : R/W/WTC/SS; bitpos: [6]; default: 0; + * The raw bit for SPI slave CMD9 interrupt. 1: SPI slave mode CMD9 + * transmission is ended. 0: Others. + */ + +#define SPI_SLV_CMD9_INT_RAW (BIT(6)) +#define SPI_SLV_CMD9_INT_RAW_M (SPI_SLV_CMD9_INT_RAW_V << SPI_SLV_CMD9_INT_RAW_S) +#define SPI_SLV_CMD9_INT_RAW_V 0x00000001 +#define SPI_SLV_CMD9_INT_RAW_S 6 + +/* SPI_SLV_CMD8_INT_RAW : R/W/WTC/SS; bitpos: [5]; default: 0; + * The raw bit for SPI slave CMD8 interrupt. 1: SPI slave mode CMD8 + * transmission is ended. 0: Others. + */ + +#define SPI_SLV_CMD8_INT_RAW (BIT(5)) +#define SPI_SLV_CMD8_INT_RAW_M (SPI_SLV_CMD8_INT_RAW_V << SPI_SLV_CMD8_INT_RAW_S) +#define SPI_SLV_CMD8_INT_RAW_V 0x00000001 +#define SPI_SLV_CMD8_INT_RAW_S 5 + +/* SPI_SLV_CMD7_INT_RAW : R/W/WTC/SS; bitpos: [4]; default: 0; + * The raw bit for SPI slave CMD7 interrupt. 1: SPI slave mode CMD7 + * transmission is ended. 0: Others. + */ + +#define SPI_SLV_CMD7_INT_RAW (BIT(4)) +#define SPI_SLV_CMD7_INT_RAW_M (SPI_SLV_CMD7_INT_RAW_V << SPI_SLV_CMD7_INT_RAW_S) +#define SPI_SLV_CMD7_INT_RAW_V 0x00000001 +#define SPI_SLV_CMD7_INT_RAW_S 4 + +/* SPI_SLV_EN_QPI_INT_RAW : R/W/WTC/SS; bitpos: [3]; default: 0; + * The raw bit for SPI slave En_QPI interrupt. 1: SPI slave mode En_QPI + * transmission is ended. 0: Others. + */ + +#define SPI_SLV_EN_QPI_INT_RAW (BIT(3)) +#define SPI_SLV_EN_QPI_INT_RAW_M (SPI_SLV_EN_QPI_INT_RAW_V << SPI_SLV_EN_QPI_INT_RAW_S) +#define SPI_SLV_EN_QPI_INT_RAW_V 0x00000001 +#define SPI_SLV_EN_QPI_INT_RAW_S 3 + +/* SPI_SLV_EX_QPI_INT_RAW : R/W/WTC/SS; bitpos: [2]; default: 0; + * The raw bit for SPI slave Ex_QPI interrupt. 1: SPI slave mode Ex_QPI + * transmission is ended. 0: Others. + */ + +#define SPI_SLV_EX_QPI_INT_RAW (BIT(2)) +#define SPI_SLV_EX_QPI_INT_RAW_M (SPI_SLV_EX_QPI_INT_RAW_V << SPI_SLV_EX_QPI_INT_RAW_S) +#define SPI_SLV_EX_QPI_INT_RAW_V 0x00000001 +#define SPI_SLV_EX_QPI_INT_RAW_S 2 + +/* SPI_DMA_OUTFIFO_EMPTY_ERR_INT_RAW : R/W/WTC/SS; bitpos: [1]; default: 0; + * 1: The current data rate of DMA TX is smaller than that of SPI. SPI will + * stop in master mode and send out all 0 in slave mode. 0: Others. + */ + +#define SPI_DMA_OUTFIFO_EMPTY_ERR_INT_RAW (BIT(1)) +#define SPI_DMA_OUTFIFO_EMPTY_ERR_INT_RAW_M (SPI_DMA_OUTFIFO_EMPTY_ERR_INT_RAW_V << SPI_DMA_OUTFIFO_EMPTY_ERR_INT_RAW_S) +#define SPI_DMA_OUTFIFO_EMPTY_ERR_INT_RAW_V 0x00000001 +#define SPI_DMA_OUTFIFO_EMPTY_ERR_INT_RAW_S 1 + +/* SPI_DMA_INFIFO_FULL_ERR_INT_RAW : R/W/WTC/SS; bitpos: [0]; default: 0; + * 1: The current data rate of DMA Rx is smaller than that of SPI, which + * will lose the receive data. 0: Others. + */ + +#define SPI_DMA_INFIFO_FULL_ERR_INT_RAW (BIT(0)) +#define SPI_DMA_INFIFO_FULL_ERR_INT_RAW_M (SPI_DMA_INFIFO_FULL_ERR_INT_RAW_V << SPI_DMA_INFIFO_FULL_ERR_INT_RAW_S) +#define SPI_DMA_INFIFO_FULL_ERR_INT_RAW_V 0x00000001 +#define SPI_DMA_INFIFO_FULL_ERR_INT_RAW_S 0 + +/* SPI_DMA_INT_ST_REG register + * SPI DMA interrupt status register + */ + +#define SPI_DMA_INT_ST_REG (DR_REG_SPI2_BASE + 0x40) + +/* SPI_APP1_INT_ST : RO; bitpos: [20]; default: 0; + * The status bit for SPI_APP1_INT interrupt. + */ + +#define SPI_APP1_INT_ST (BIT(20)) +#define SPI_APP1_INT_ST_M (SPI_APP1_INT_ST_V << SPI_APP1_INT_ST_S) +#define SPI_APP1_INT_ST_V 0x00000001 +#define SPI_APP1_INT_ST_S 20 + +/* SPI_APP2_INT_ST : RO; bitpos: [19]; default: 0; + * The status bit for SPI_APP2_INT interrupt. + */ + +#define SPI_APP2_INT_ST (BIT(19)) +#define SPI_APP2_INT_ST_M (SPI_APP2_INT_ST_V << SPI_APP2_INT_ST_S) +#define SPI_APP2_INT_ST_V 0x00000001 +#define SPI_APP2_INT_ST_S 19 + +/* SPI_MST_TX_AFIFO_REMPTY_ERR_INT_ST : RO; bitpos: [18]; default: 0; + * The status bit for SPI_MST_TX_AFIFO_REMPTY_ERR_INT interrupt. + */ + +#define SPI_MST_TX_AFIFO_REMPTY_ERR_INT_ST (BIT(18)) +#define SPI_MST_TX_AFIFO_REMPTY_ERR_INT_ST_M (SPI_MST_TX_AFIFO_REMPTY_ERR_INT_ST_V << SPI_MST_TX_AFIFO_REMPTY_ERR_INT_ST_S) +#define SPI_MST_TX_AFIFO_REMPTY_ERR_INT_ST_V 0x00000001 +#define SPI_MST_TX_AFIFO_REMPTY_ERR_INT_ST_S 18 + +/* SPI_MST_RX_AFIFO_WFULL_ERR_INT_ST : RO; bitpos: [17]; default: 0; + * The status bit for SPI_MST_RX_AFIFO_WFULL_ERR_INT interrupt. + */ + +#define SPI_MST_RX_AFIFO_WFULL_ERR_INT_ST (BIT(17)) +#define SPI_MST_RX_AFIFO_WFULL_ERR_INT_ST_M (SPI_MST_RX_AFIFO_WFULL_ERR_INT_ST_V << SPI_MST_RX_AFIFO_WFULL_ERR_INT_ST_S) +#define SPI_MST_RX_AFIFO_WFULL_ERR_INT_ST_V 0x00000001 +#define SPI_MST_RX_AFIFO_WFULL_ERR_INT_ST_S 17 + +/* SPI_SLV_CMD_ERR_INT_ST : RO; bitpos: [16]; default: 0; + * The status bit for SPI_SLV_CMD_ERR_INT interrupt. + */ + +#define SPI_SLV_CMD_ERR_INT_ST (BIT(16)) +#define SPI_SLV_CMD_ERR_INT_ST_M (SPI_SLV_CMD_ERR_INT_ST_V << SPI_SLV_CMD_ERR_INT_ST_S) +#define SPI_SLV_CMD_ERR_INT_ST_V 0x00000001 +#define SPI_SLV_CMD_ERR_INT_ST_S 16 + +/* SPI_SLV_BUF_ADDR_ERR_INT_ST : RO; bitpos: [15]; default: 0; + * The status bit for SPI_SLV_BUF_ADDR_ERR_INT interrupt. + */ + +#define SPI_SLV_BUF_ADDR_ERR_INT_ST (BIT(15)) +#define SPI_SLV_BUF_ADDR_ERR_INT_ST_M (SPI_SLV_BUF_ADDR_ERR_INT_ST_V << SPI_SLV_BUF_ADDR_ERR_INT_ST_S) +#define SPI_SLV_BUF_ADDR_ERR_INT_ST_V 0x00000001 +#define SPI_SLV_BUF_ADDR_ERR_INT_ST_S 15 + +/* SPI_SEG_MAGIC_ERR_INT_ST : RO; bitpos: [14]; default: 0; + * The status bit for SPI_SEG_MAGIC_ERR_INT interrupt. + */ + +#define SPI_SEG_MAGIC_ERR_INT_ST (BIT(14)) +#define SPI_SEG_MAGIC_ERR_INT_ST_M (SPI_SEG_MAGIC_ERR_INT_ST_V << SPI_SEG_MAGIC_ERR_INT_ST_S) +#define SPI_SEG_MAGIC_ERR_INT_ST_V 0x00000001 +#define SPI_SEG_MAGIC_ERR_INT_ST_S 14 + +/* SPI_DMA_SEG_TRANS_DONE_INT_ST : RO; bitpos: [13]; default: 0; + * The status bit for SPI_DMA_SEG_TRANS_DONE_INT interrupt. + */ + +#define SPI_DMA_SEG_TRANS_DONE_INT_ST (BIT(13)) +#define SPI_DMA_SEG_TRANS_DONE_INT_ST_M (SPI_DMA_SEG_TRANS_DONE_INT_ST_V << SPI_DMA_SEG_TRANS_DONE_INT_ST_S) +#define SPI_DMA_SEG_TRANS_DONE_INT_ST_V 0x00000001 +#define SPI_DMA_SEG_TRANS_DONE_INT_ST_S 13 + +/* SPI_TRANS_DONE_INT_ST : RO; bitpos: [12]; default: 0; + * The status bit for SPI_TRANS_DONE_INT interrupt. + */ + +#define SPI_TRANS_DONE_INT_ST (BIT(12)) +#define SPI_TRANS_DONE_INT_ST_M (SPI_TRANS_DONE_INT_ST_V << SPI_TRANS_DONE_INT_ST_S) +#define SPI_TRANS_DONE_INT_ST_V 0x00000001 +#define SPI_TRANS_DONE_INT_ST_S 12 + +/* SPI_SLV_WR_BUF_DONE_INT_ST : RO; bitpos: [11]; default: 0; + * The status bit for SPI_SLV_WR_BUF_DONE_INT interrupt. + */ + +#define SPI_SLV_WR_BUF_DONE_INT_ST (BIT(11)) +#define SPI_SLV_WR_BUF_DONE_INT_ST_M (SPI_SLV_WR_BUF_DONE_INT_ST_V << SPI_SLV_WR_BUF_DONE_INT_ST_S) +#define SPI_SLV_WR_BUF_DONE_INT_ST_V 0x00000001 +#define SPI_SLV_WR_BUF_DONE_INT_ST_S 11 + +/* SPI_SLV_RD_BUF_DONE_INT_ST : RO; bitpos: [10]; default: 0; + * The status bit for SPI_SLV_RD_BUF_DONE_INT interrupt. + */ + +#define SPI_SLV_RD_BUF_DONE_INT_ST (BIT(10)) +#define SPI_SLV_RD_BUF_DONE_INT_ST_M (SPI_SLV_RD_BUF_DONE_INT_ST_V << SPI_SLV_RD_BUF_DONE_INT_ST_S) +#define SPI_SLV_RD_BUF_DONE_INT_ST_V 0x00000001 +#define SPI_SLV_RD_BUF_DONE_INT_ST_S 10 + +/* SPI_SLV_WR_DMA_DONE_INT_ST : RO; bitpos: [9]; default: 0; + * The status bit for SPI_SLV_WR_DMA_DONE_INT interrupt. + */ + +#define SPI_SLV_WR_DMA_DONE_INT_ST (BIT(9)) +#define SPI_SLV_WR_DMA_DONE_INT_ST_M (SPI_SLV_WR_DMA_DONE_INT_ST_V << SPI_SLV_WR_DMA_DONE_INT_ST_S) +#define SPI_SLV_WR_DMA_DONE_INT_ST_V 0x00000001 +#define SPI_SLV_WR_DMA_DONE_INT_ST_S 9 + +/* SPI_SLV_RD_DMA_DONE_INT_ST : RO; bitpos: [8]; default: 0; + * The status bit for SPI_SLV_RD_DMA_DONE_INT interrupt. + */ + +#define SPI_SLV_RD_DMA_DONE_INT_ST (BIT(8)) +#define SPI_SLV_RD_DMA_DONE_INT_ST_M (SPI_SLV_RD_DMA_DONE_INT_ST_V << SPI_SLV_RD_DMA_DONE_INT_ST_S) +#define SPI_SLV_RD_DMA_DONE_INT_ST_V 0x00000001 +#define SPI_SLV_RD_DMA_DONE_INT_ST_S 8 + +/* SPI_SLV_CMDA_INT_ST : RO; bitpos: [7]; default: 0; + * The status bit for SPI slave CMDA interrupt. + */ + +#define SPI_SLV_CMDA_INT_ST (BIT(7)) +#define SPI_SLV_CMDA_INT_ST_M (SPI_SLV_CMDA_INT_ST_V << SPI_SLV_CMDA_INT_ST_S) +#define SPI_SLV_CMDA_INT_ST_V 0x00000001 +#define SPI_SLV_CMDA_INT_ST_S 7 + +/* SPI_SLV_CMD9_INT_ST : RO; bitpos: [6]; default: 0; + * The status bit for SPI slave CMD9 interrupt. + */ + +#define SPI_SLV_CMD9_INT_ST (BIT(6)) +#define SPI_SLV_CMD9_INT_ST_M (SPI_SLV_CMD9_INT_ST_V << SPI_SLV_CMD9_INT_ST_S) +#define SPI_SLV_CMD9_INT_ST_V 0x00000001 +#define SPI_SLV_CMD9_INT_ST_S 6 + +/* SPI_SLV_CMD8_INT_ST : RO; bitpos: [5]; default: 0; + * The status bit for SPI slave CMD8 interrupt. + */ + +#define SPI_SLV_CMD8_INT_ST (BIT(5)) +#define SPI_SLV_CMD8_INT_ST_M (SPI_SLV_CMD8_INT_ST_V << SPI_SLV_CMD8_INT_ST_S) +#define SPI_SLV_CMD8_INT_ST_V 0x00000001 +#define SPI_SLV_CMD8_INT_ST_S 5 + +/* SPI_SLV_CMD7_INT_ST : RO; bitpos: [4]; default: 0; + * The status bit for SPI slave CMD7 interrupt. + */ + +#define SPI_SLV_CMD7_INT_ST (BIT(4)) +#define SPI_SLV_CMD7_INT_ST_M (SPI_SLV_CMD7_INT_ST_V << SPI_SLV_CMD7_INT_ST_S) +#define SPI_SLV_CMD7_INT_ST_V 0x00000001 +#define SPI_SLV_CMD7_INT_ST_S 4 + +/* SPI_SLV_EN_QPI_INT_ST : RO; bitpos: [3]; default: 0; + * The status bit for SPI slave En_QPI interrupt. + */ + +#define SPI_SLV_EN_QPI_INT_ST (BIT(3)) +#define SPI_SLV_EN_QPI_INT_ST_M (SPI_SLV_EN_QPI_INT_ST_V << SPI_SLV_EN_QPI_INT_ST_S) +#define SPI_SLV_EN_QPI_INT_ST_V 0x00000001 +#define SPI_SLV_EN_QPI_INT_ST_S 3 + +/* SPI_SLV_EX_QPI_INT_ST : RO; bitpos: [2]; default: 0; + * The status bit for SPI slave Ex_QPI interrupt. + */ + +#define SPI_SLV_EX_QPI_INT_ST (BIT(2)) +#define SPI_SLV_EX_QPI_INT_ST_M (SPI_SLV_EX_QPI_INT_ST_V << SPI_SLV_EX_QPI_INT_ST_S) +#define SPI_SLV_EX_QPI_INT_ST_V 0x00000001 +#define SPI_SLV_EX_QPI_INT_ST_S 2 + +/* SPI_DMA_OUTFIFO_EMPTY_ERR_INT_ST : RO; bitpos: [1]; default: 0; + * The status bit for SPI_DMA_OUTFIFO_EMPTY_ERR_INT interrupt. + */ + +#define SPI_DMA_OUTFIFO_EMPTY_ERR_INT_ST (BIT(1)) +#define SPI_DMA_OUTFIFO_EMPTY_ERR_INT_ST_M (SPI_DMA_OUTFIFO_EMPTY_ERR_INT_ST_V << SPI_DMA_OUTFIFO_EMPTY_ERR_INT_ST_S) +#define SPI_DMA_OUTFIFO_EMPTY_ERR_INT_ST_V 0x00000001 +#define SPI_DMA_OUTFIFO_EMPTY_ERR_INT_ST_S 1 + +/* SPI_DMA_INFIFO_FULL_ERR_INT_ST : RO; bitpos: [0]; default: 0; + * The status bit for SPI_DMA_INFIFO_FULL_ERR_INT interrupt. + */ + +#define SPI_DMA_INFIFO_FULL_ERR_INT_ST (BIT(0)) +#define SPI_DMA_INFIFO_FULL_ERR_INT_ST_M (SPI_DMA_INFIFO_FULL_ERR_INT_ST_V << SPI_DMA_INFIFO_FULL_ERR_INT_ST_S) +#define SPI_DMA_INFIFO_FULL_ERR_INT_ST_V 0x00000001 +#define SPI_DMA_INFIFO_FULL_ERR_INT_ST_S 0 + +/* SPI_W0_REG register + * SPI CPU-controlled buffer0 + */ + +#define SPI_W0_REG (DR_REG_SPI2_BASE + 0x98) + +/* SPI_BUF0 : R/W/SS; bitpos: [31:0]; default: 0; + * data buffer + */ + +#define SPI_BUF0 0xFFFFFFFF +#define SPI_BUF0_M (SPI_BUF0_V << SPI_BUF0_S) +#define SPI_BUF0_V 0xFFFFFFFF +#define SPI_BUF0_S 0 + +/* SPI_W1_REG register + * SPI CPU-controlled buffer1 + */ + +#define SPI_W1_REG (DR_REG_SPI2_BASE + 0x9c) + +/* SPI_BUF1 : R/W/SS; bitpos: [31:0]; default: 0; + * data buffer + */ + +#define SPI_BUF1 0xFFFFFFFF +#define SPI_BUF1_M (SPI_BUF1_V << SPI_BUF1_S) +#define SPI_BUF1_V 0xFFFFFFFF +#define SPI_BUF1_S 0 + +/* SPI_W2_REG register + * SPI CPU-controlled buffer2 + */ + +#define SPI_W2_REG (DR_REG_SPI2_BASE + 0xa0) + +/* SPI_BUF2 : R/W/SS; bitpos: [31:0]; default: 0; + * data buffer + */ + +#define SPI_BUF2 0xFFFFFFFF +#define SPI_BUF2_M (SPI_BUF2_V << SPI_BUF2_S) +#define SPI_BUF2_V 0xFFFFFFFF +#define SPI_BUF2_S 0 + +/* SPI_W3_REG register + * SPI CPU-controlled buffer3 + */ + +#define SPI_W3_REG (DR_REG_SPI2_BASE + 0xa4) + +/* SPI_BUF3 : R/W/SS; bitpos: [31:0]; default: 0; + * data buffer + */ + +#define SPI_BUF3 0xFFFFFFFF +#define SPI_BUF3_M (SPI_BUF3_V << SPI_BUF3_S) +#define SPI_BUF3_V 0xFFFFFFFF +#define SPI_BUF3_S 0 + +/* SPI_W4_REG register + * SPI CPU-controlled buffer4 + */ + +#define SPI_W4_REG (DR_REG_SPI2_BASE + 0xa8) + +/* SPI_BUF4 : R/W/SS; bitpos: [31:0]; default: 0; + * data buffer + */ + +#define SPI_BUF4 0xFFFFFFFF +#define SPI_BUF4_M (SPI_BUF4_V << SPI_BUF4_S) +#define SPI_BUF4_V 0xFFFFFFFF +#define SPI_BUF4_S 0 + +/* SPI_W5_REG register + * SPI CPU-controlled buffer5 + */ + +#define SPI_W5_REG (DR_REG_SPI2_BASE + 0xac) + +/* SPI_BUF5 : R/W/SS; bitpos: [31:0]; default: 0; + * data buffer + */ + +#define SPI_BUF5 0xFFFFFFFF +#define SPI_BUF5_M (SPI_BUF5_V << SPI_BUF5_S) +#define SPI_BUF5_V 0xFFFFFFFF +#define SPI_BUF5_S 0 + +/* SPI_W6_REG register + * SPI CPU-controlled buffer6 + */ + +#define SPI_W6_REG (DR_REG_SPI2_BASE + 0xb0) + +/* SPI_BUF6 : R/W/SS; bitpos: [31:0]; default: 0; + * data buffer + */ + +#define SPI_BUF6 0xFFFFFFFF +#define SPI_BUF6_M (SPI_BUF6_V << SPI_BUF6_S) +#define SPI_BUF6_V 0xFFFFFFFF +#define SPI_BUF6_S 0 + +/* SPI_W7_REG register + * SPI CPU-controlled buffer7 + */ + +#define SPI_W7_REG (DR_REG_SPI2_BASE + 0xb4) + +/* SPI_BUF7 : R/W/SS; bitpos: [31:0]; default: 0; + * data buffer + */ + +#define SPI_BUF7 0xFFFFFFFF +#define SPI_BUF7_M (SPI_BUF7_V << SPI_BUF7_S) +#define SPI_BUF7_V 0xFFFFFFFF +#define SPI_BUF7_S 0 + +/* SPI_W8_REG register + * SPI CPU-controlled buffer8 + */ + +#define SPI_W8_REG (DR_REG_SPI2_BASE + 0xb8) + +/* SPI_BUF8 : R/W/SS; bitpos: [31:0]; default: 0; + * data buffer + */ + +#define SPI_BUF8 0xFFFFFFFF +#define SPI_BUF8_M (SPI_BUF8_V << SPI_BUF8_S) +#define SPI_BUF8_V 0xFFFFFFFF +#define SPI_BUF8_S 0 + +/* SPI_W9_REG register + * SPI CPU-controlled buffer9 + */ + +#define SPI_W9_REG (DR_REG_SPI2_BASE + 0xbc) + +/* SPI_BUF9 : R/W/SS; bitpos: [31:0]; default: 0; + * data buffer + */ + +#define SPI_BUF9 0xFFFFFFFF +#define SPI_BUF9_M (SPI_BUF9_V << SPI_BUF9_S) +#define SPI_BUF9_V 0xFFFFFFFF +#define SPI_BUF9_S 0 + +/* SPI_W10_REG register + * SPI CPU-controlled buffer10 + */ + +#define SPI_W10_REG (DR_REG_SPI2_BASE + 0xc0) + +/* SPI_BUF10 : R/W/SS; bitpos: [31:0]; default: 0; + * data buffer + */ + +#define SPI_BUF10 0xFFFFFFFF +#define SPI_BUF10_M (SPI_BUF10_V << SPI_BUF10_S) +#define SPI_BUF10_V 0xFFFFFFFF +#define SPI_BUF10_S 0 + +/* SPI_W11_REG register + * SPI CPU-controlled buffer11 + */ + +#define SPI_W11_REG (DR_REG_SPI2_BASE + 0xc4) + +/* SPI_BUF11 : R/W/SS; bitpos: [31:0]; default: 0; + * data buffer + */ + +#define SPI_BUF11 0xFFFFFFFF +#define SPI_BUF11_M (SPI_BUF11_V << SPI_BUF11_S) +#define SPI_BUF11_V 0xFFFFFFFF +#define SPI_BUF11_S 0 + +/* SPI_W12_REG register + * SPI CPU-controlled buffer12 + */ + +#define SPI_W12_REG (DR_REG_SPI2_BASE + 0xc8) + +/* SPI_BUF12 : R/W/SS; bitpos: [31:0]; default: 0; + * data buffer + */ + +#define SPI_BUF12 0xFFFFFFFF +#define SPI_BUF12_M (SPI_BUF12_V << SPI_BUF12_S) +#define SPI_BUF12_V 0xFFFFFFFF +#define SPI_BUF12_S 0 + +/* SPI_W13_REG register + * SPI CPU-controlled buffer13 + */ + +#define SPI_W13_REG (DR_REG_SPI2_BASE + 0xcc) + +/* SPI_BUF13 : R/W/SS; bitpos: [31:0]; default: 0; + * data buffer + */ + +#define SPI_BUF13 0xFFFFFFFF +#define SPI_BUF13_M (SPI_BUF13_V << SPI_BUF13_S) +#define SPI_BUF13_V 0xFFFFFFFF +#define SPI_BUF13_S 0 + +/* SPI_W14_REG register + * SPI CPU-controlled buffer14 + */ + +#define SPI_W14_REG (DR_REG_SPI2_BASE + 0xd0) + +/* SPI_BUF14 : R/W/SS; bitpos: [31:0]; default: 0; + * data buffer + */ + +#define SPI_BUF14 0xFFFFFFFF +#define SPI_BUF14_M (SPI_BUF14_V << SPI_BUF14_S) +#define SPI_BUF14_V 0xFFFFFFFF +#define SPI_BUF14_S 0 + +/* SPI_W15_REG register + * SPI CPU-controlled buffer15 + */ + +#define SPI_W15_REG (DR_REG_SPI2_BASE + 0xd4) + +/* SPI_BUF15 : R/W/SS; bitpos: [31:0]; default: 0; + * data buffer + */ + +#define SPI_BUF15 0xFFFFFFFF +#define SPI_BUF15_M (SPI_BUF15_V << SPI_BUF15_S) +#define SPI_BUF15_V 0xFFFFFFFF +#define SPI_BUF15_S 0 + +/* SPI_SLAVE_REG register + * SPI slave control register + */ + +#define SPI_SLAVE_REG (DR_REG_SPI2_BASE + 0xe0) + +/* SPI_USR_CONF : R/W; bitpos: [28]; default: 0; + * 1: Enable the DMA CONF phase of current seg-trans operation, which means + * seg-trans will start. 0: This is not seg-trans mode. + */ + +#define SPI_USR_CONF (BIT(28)) +#define SPI_USR_CONF_M (SPI_USR_CONF_V << SPI_USR_CONF_S) +#define SPI_USR_CONF_V 0x00000001 +#define SPI_USR_CONF_S 28 + +/* SPI_SOFT_RESET : WT; bitpos: [27]; default: 0; + * Software reset enable, reset the spi clock line cs line and data lines. + * Can be configured in CONF state. + */ + +#define SPI_SOFT_RESET (BIT(27)) +#define SPI_SOFT_RESET_M (SPI_SOFT_RESET_V << SPI_SOFT_RESET_S) +#define SPI_SOFT_RESET_V 0x00000001 +#define SPI_SOFT_RESET_S 27 + +/* SPI_SLAVE_MODE : R/W; bitpos: [26]; default: 0; + * Set SPI work mode. 1: slave mode 0: master mode. + */ + +#define SPI_SLAVE_MODE (BIT(26)) +#define SPI_SLAVE_MODE_M (SPI_SLAVE_MODE_V << SPI_SLAVE_MODE_S) +#define SPI_SLAVE_MODE_V 0x00000001 +#define SPI_SLAVE_MODE_S 26 + +/* SPI_DMA_SEG_MAGIC_VALUE : R/W; bitpos: [25:22]; default: 10; + * The magic value of BM table in master DMA seg-trans. + */ + +#define SPI_DMA_SEG_MAGIC_VALUE 0x0000000F +#define SPI_DMA_SEG_MAGIC_VALUE_M (SPI_DMA_SEG_MAGIC_VALUE_V << SPI_DMA_SEG_MAGIC_VALUE_S) +#define SPI_DMA_SEG_MAGIC_VALUE_V 0x0000000F +#define SPI_DMA_SEG_MAGIC_VALUE_S 22 + +/* SPI_SLV_WRBUF_BITLEN_EN : R/W; bitpos: [11]; default: 0; + * 1: SPI_SLV_DATA_BITLEN stores data bit length of master-write-to-slave + * data length in CPU controlled mode(Wr_BUF). 0: others + */ + +#define SPI_SLV_WRBUF_BITLEN_EN (BIT(11)) +#define SPI_SLV_WRBUF_BITLEN_EN_M (SPI_SLV_WRBUF_BITLEN_EN_V << SPI_SLV_WRBUF_BITLEN_EN_S) +#define SPI_SLV_WRBUF_BITLEN_EN_V 0x00000001 +#define SPI_SLV_WRBUF_BITLEN_EN_S 11 + +/* SPI_SLV_RDBUF_BITLEN_EN : R/W; bitpos: [10]; default: 0; + * 1: SPI_SLV_DATA_BITLEN stores data bit length of master-read-slave data + * length in CPU controlled mode(Rd_BUF). 0: others + */ + +#define SPI_SLV_RDBUF_BITLEN_EN (BIT(10)) +#define SPI_SLV_RDBUF_BITLEN_EN_M (SPI_SLV_RDBUF_BITLEN_EN_V << SPI_SLV_RDBUF_BITLEN_EN_S) +#define SPI_SLV_RDBUF_BITLEN_EN_V 0x00000001 +#define SPI_SLV_RDBUF_BITLEN_EN_S 10 + +/* SPI_SLV_WRDMA_BITLEN_EN : R/W; bitpos: [9]; default: 0; + * 1: SPI_SLV_DATA_BITLEN stores data bit length of master-write-to-slave + * data length in DMA controlled mode(Wr_DMA). 0: others + */ + +#define SPI_SLV_WRDMA_BITLEN_EN (BIT(9)) +#define SPI_SLV_WRDMA_BITLEN_EN_M (SPI_SLV_WRDMA_BITLEN_EN_V << SPI_SLV_WRDMA_BITLEN_EN_S) +#define SPI_SLV_WRDMA_BITLEN_EN_V 0x00000001 +#define SPI_SLV_WRDMA_BITLEN_EN_S 9 + +/* SPI_SLV_RDDMA_BITLEN_EN : R/W; bitpos: [8]; default: 0; + * 1: SPI_SLV_DATA_BITLEN stores data bit length of master-read-slave data + * length in DMA controlled mode(Rd_DMA). 0: others + */ + +#define SPI_SLV_RDDMA_BITLEN_EN (BIT(8)) +#define SPI_SLV_RDDMA_BITLEN_EN_M (SPI_SLV_RDDMA_BITLEN_EN_V << SPI_SLV_RDDMA_BITLEN_EN_S) +#define SPI_SLV_RDDMA_BITLEN_EN_V 0x00000001 +#define SPI_SLV_RDDMA_BITLEN_EN_S 8 + +/* SPI_RSCK_DATA_OUT : R/W; bitpos: [3]; default: 0; + * It saves half a cycle when tsck is the same as rsck. 1: output data at + * rsck posedge 0: output data at tsck posedge + */ + +#define SPI_RSCK_DATA_OUT (BIT(3)) +#define SPI_RSCK_DATA_OUT_M (SPI_RSCK_DATA_OUT_V << SPI_RSCK_DATA_OUT_S) +#define SPI_RSCK_DATA_OUT_V 0x00000001 +#define SPI_RSCK_DATA_OUT_S 3 + +/* SPI_CLK_MODE_13 : R/W; bitpos: [2]; default: 0; + * {CPOL, CPHA},1: support spi clk mode 1 and 3, first edge output data + * B[0]/B[7]. 0: support spi clk mode 0 and 2, first edge output data + * B[1]/B[6]. + */ + +#define SPI_CLK_MODE_13 (BIT(2)) +#define SPI_CLK_MODE_13_M (SPI_CLK_MODE_13_V << SPI_CLK_MODE_13_S) +#define SPI_CLK_MODE_13_V 0x00000001 +#define SPI_CLK_MODE_13_S 2 + +/* SPI_CLK_MODE : R/W; bitpos: [1:0]; default: 0; + * SPI clock mode bits. 0: SPI clock is off when CS inactive 1: SPI clock is + * delayed one cycle after CS inactive 2: SPI clock is delayed two cycles + * after CS inactive 3: SPI clock is alwasy on. Can be configured in CONF + * state. + */ + +#define SPI_CLK_MODE 0x00000003 +#define SPI_CLK_MODE_M (SPI_CLK_MODE_V << SPI_CLK_MODE_S) +#define SPI_CLK_MODE_V 0x00000003 +#define SPI_CLK_MODE_S 0 + +/* SPI_SLAVE1_REG register + * SPI slave control register 1 + */ + +#define SPI_SLAVE1_REG (DR_REG_SPI2_BASE + 0xe4) + +/* SPI_SLV_LAST_ADDR : R/W/SS; bitpos: [31:26]; default: 0; + * In the slave mode it is the value of address. + */ + +#define SPI_SLV_LAST_ADDR 0x0000003F +#define SPI_SLV_LAST_ADDR_M (SPI_SLV_LAST_ADDR_V << SPI_SLV_LAST_ADDR_S) +#define SPI_SLV_LAST_ADDR_V 0x0000003F +#define SPI_SLV_LAST_ADDR_S 26 + +/* SPI_SLV_LAST_COMMAND : R/W/SS; bitpos: [25:18]; default: 0; + * In the slave mode it is the value of command. + */ + +#define SPI_SLV_LAST_COMMAND 0x000000FF +#define SPI_SLV_LAST_COMMAND_M (SPI_SLV_LAST_COMMAND_V << SPI_SLV_LAST_COMMAND_S) +#define SPI_SLV_LAST_COMMAND_V 0x000000FF +#define SPI_SLV_LAST_COMMAND_S 18 + +/* SPI_SLV_DATA_BITLEN : R/W/SS; bitpos: [17:0]; default: 0; + * The transferred data bit length in SPI slave FD and HD mode. + */ + +#define SPI_SLV_DATA_BITLEN 0x0003FFFF +#define SPI_SLV_DATA_BITLEN_M (SPI_SLV_DATA_BITLEN_V << SPI_SLV_DATA_BITLEN_S) +#define SPI_SLV_DATA_BITLEN_V 0x0003FFFF +#define SPI_SLV_DATA_BITLEN_S 0 + +/* SPI_CLK_GATE_REG register + * SPI module clock and register clock control + */ + +#define SPI_CLK_GATE_REG (DR_REG_SPI2_BASE + 0xe8) + +/* SPI_MST_CLK_SEL : R/W; bitpos: [2]; default: 0; + * This bit is used to select SPI module clock source in master mode. 1: + * PLL_CLK_80M. 0: XTAL CLK. + */ + +#define SPI_MST_CLK_SEL (BIT(2)) +#define SPI_MST_CLK_SEL_M (SPI_MST_CLK_SEL_V << SPI_MST_CLK_SEL_S) +#define SPI_MST_CLK_SEL_V 0x00000001 +#define SPI_MST_CLK_SEL_S 2 + +/* SPI_MST_CLK_ACTIVE : R/W; bitpos: [1]; default: 0; + * Set this bit to power on the SPI module clock. + */ + +#define SPI_MST_CLK_ACTIVE (BIT(1)) +#define SPI_MST_CLK_ACTIVE_M (SPI_MST_CLK_ACTIVE_V << SPI_MST_CLK_ACTIVE_S) +#define SPI_MST_CLK_ACTIVE_V 0x00000001 +#define SPI_MST_CLK_ACTIVE_S 1 + +/* SPI_CLK_EN : R/W; bitpos: [0]; default: 0; + * Set this bit to enable clk gate + */ + +#define SPI_CLK_EN (BIT(0)) +#define SPI_CLK_EN_M (SPI_CLK_EN_V << SPI_CLK_EN_S) +#define SPI_CLK_EN_V 0x00000001 +#define SPI_CLK_EN_S 0 + +/* SPI_DATE_REG register + * Version control + */ + +#define SPI_DATE_REG (DR_REG_SPI2_BASE + 0xf0) + +/* SPI_DATE : R/W; bitpos: [27:0]; default: 33583648; + * SPI register version. + */ + +#define SPI_DATE 0x0FFFFFFF +#define SPI_DATE_M (SPI_DATE_V << SPI_DATE_S) +#define SPI_DATE_V 0x0FFFFFFF +#define SPI_DATE_S 0 + +#endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_SPI_H */ From e0f514171b276f0eb0ff101608af00dc5eb7f917 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Mon, 19 Apr 2021 19:06:55 -0300 Subject: [PATCH 002/739] boards/esp32c3-devkit: Add board-specific SPI functions --- .../esp32c3/esp32c3-devkit/src/Makefile | 4 ++ .../esp32c3-devkit/src/esp32c3_board_spi.c | 70 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_board_spi.c diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/src/Makefile b/boards/risc-v/esp32c3/esp32c3-devkit/src/Makefile index 82081ad5389..14ae557cc5f 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/src/Makefile +++ b/boards/risc-v/esp32c3/esp32c3-devkit/src/Makefile @@ -42,6 +42,10 @@ ifeq ($(CONFIG_DEV_GPIO),y) CSRCS += esp32c3_gpio.c endif +ifeq ($(CONFIG_ESP32C3_SPI),y) +CSRCS += esp32c3_board_spi.c +endif + ifeq ($(CONFIG_I2C_DRIVER),y) CSRCS += esp32c3_i2c.c endif diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_board_spi.c b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_board_spi.c new file mode 100644 index 00000000000..ce1a2ade591 --- /dev/null +++ b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_board_spi.c @@ -0,0 +1,70 @@ +/**************************************************************************** + * boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_board_spi.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include + +#include + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: esp32c3_spi2_status + ****************************************************************************/ + +#ifdef CONFIG_ESP32C3_SPI2 + +uint8_t esp32c3_spi2_status(FAR struct spi_dev_s *dev, uint32_t devid) +{ + uint8_t status = 0; + + return status; +} + +#endif + +/**************************************************************************** + * Name: esp32c3_spi2_cmddata + ****************************************************************************/ + +#if defined(CONFIG_ESP32C3_SPI2) && defined(CONFIG_SPI_CMDDATA) + +int esp32c3_spi2_cmddata(FAR struct spi_dev_s *dev, uint32_t devid, bool cmd) +{ + spiinfo("devid: %" PRIu32 " CMD: %s\n", devid, cmd ? "command" : + "data"); + + return -ENODEV; +} + +#endif From 2fd98c99d71b060e351ab220ae92840e236d8418 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Mon, 19 Apr 2021 19:08:30 -0300 Subject: [PATCH 003/739] boards/esp32c3-devkit: Add SPI character device driver --- .../esp32c3/esp32c3-devkit/src/Makefile | 4 ++ .../esp32c3-devkit/src/esp32c3-devkit.h | 21 ++++++ .../esp32c3-devkit/src/esp32c3_board_spidev.c | 72 +++++++++++++++++++ .../esp32c3-devkit/src/esp32c3_bringup.c | 13 ++++ 4 files changed, 110 insertions(+) create mode 100644 boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_board_spidev.c diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/src/Makefile b/boards/risc-v/esp32c3/esp32c3-devkit/src/Makefile index 14ae557cc5f..f91d70996d3 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/src/Makefile +++ b/boards/risc-v/esp32c3/esp32c3-devkit/src/Makefile @@ -46,6 +46,10 @@ ifeq ($(CONFIG_ESP32C3_SPI),y) CSRCS += esp32c3_board_spi.c endif +ifeq ($(CONFIG_SPI_DRIVER),y) +CSRCS += esp32c3_board_spidev.c +endif + ifeq ($(CONFIG_I2C_DRIVER),y) CSRCS += esp32c3_i2c.c endif diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3-devkit.h b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3-devkit.h index 81c94f70671..c55776badf1 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3-devkit.h +++ b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3-devkit.h @@ -95,6 +95,25 @@ int esp32c3_gpio_init(void); int board_wdt_init(void); #endif +/**************************************************************************** + * Name: board_spidev_initialize + * + * Description: + * Initialize SPI driver and register the /dev/spi device. + * + * Input Parameters: + * bus - The SPI bus number, used to build the device path as /dev/spiN + * + * Returned Value: + * Zero (OK) is returned on success; A negated errno value is returned + * to indicate the nature of any failure. + * + ****************************************************************************/ + +#ifdef CONFIG_SPI_DRIVER +int board_spidev_initialize(int bus); +#endif + /**************************************************************************** * Name: board_i2c_init * @@ -106,6 +125,7 @@ int board_wdt_init(void); * to indicate the nature of any failure. * ****************************************************************************/ + #ifdef CONFIG_I2C_DRIVER int board_i2c_init(void); #endif @@ -154,6 +174,7 @@ int board_bmp180_initialize(int devno, int busno); * * Description: * Initialize the SPIFLASH and register the MTD device. + * ****************************************************************************/ #ifdef CONFIG_ESP32C3_SPIFLASH diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_board_spidev.c b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_board_spidev.c new file mode 100644 index 00000000000..2320a039650 --- /dev/null +++ b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_board_spidev.c @@ -0,0 +1,72 @@ +/**************************************************************************** + * boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_board_spidev.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include + +#include + +#include "esp32c3_spi.h" + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: board_spidev_initialize + * + * Description: + * Initialize and register SPI driver for the specified SPI port. + * + ****************************************************************************/ + +int board_spidev_initialize(int port) +{ + int ret; + FAR struct spi_dev_s *spi; + + syslog(LOG_INFO, "Initializing /dev/spi%d...\n", port); + + /* Initialize SPI device */ + + spi = esp32c3_spibus_initialize(port); + if (spi == NULL) + { + syslog(LOG_ERR, "Failed to initialize SPI%d.\n", port); + return -ENODEV; + } + + ret = spi_register(spi, port); + if (ret < 0) + { + syslog(LOG_ERR, "Failed to register /dev/spi%d: %d\n", port, ret); + + esp32c3_spibus_uninitialize(spi); + } + + return ret; +} diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_bringup.c b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_bringup.c index 1e8a94443d5..e914603dbd8 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_bringup.c +++ b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_bringup.c @@ -42,6 +42,10 @@ #include "esp32c3_partition.h" #include "esp32c3-devkit.h" +#ifdef CONFIG_SPI_DRIVER +# include "esp32c3_spi.h" +#endif + #ifdef CONFIG_TIMER # include "esp32c3_tim_lowerhalf.h" #endif @@ -161,6 +165,15 @@ int esp32c3_bringup(void) } #endif +#if defined(CONFIG_SPI_DRIVER) && defined(CONFIG_ESP32C3_SPI2) + ret = board_spidev_initialize(ESP32C3_SPI2); + if (ret < 0) + { + syslog(LOG_ERR, "Failed to initialize SPI%d driver: %d\n", + ESP32C3_SPI2, ret); + } +#endif + #if defined(CONFIG_I2C_DRIVER) /* Configure I2C peripheral interfaces */ From 666d718302d8eb8e1895811d945839da16189f59 Mon Sep 17 00:00:00 2001 From: chenwen Date: Tue, 27 Apr 2021 16:56:18 +0800 Subject: [PATCH 004/739] xtensa/esp32: Fix crash issue caused by null pointer operation --- arch/xtensa/src/esp32/esp32_wifi_adapter.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/arch/xtensa/src/esp32/esp32_wifi_adapter.c b/arch/xtensa/src/esp32/esp32_wifi_adapter.c index c7e9860a687..44b014c8d2c 100644 --- a/arch/xtensa/src/esp32/esp32_wifi_adapter.c +++ b/arch/xtensa/src/esp32/esp32_wifi_adapter.c @@ -1802,8 +1802,10 @@ static int32_t esp_task_create_pinned_to_core(void *entry, (char * const *)param); if (pid > 0) { - *((int *)task_handle) = pid; - + if (task_handle != NULL) + { + *((int *)task_handle) = pid; + } #ifdef CONFIG_SMP if (core_id < CONFIG_SMP_NCPUS) { From 9d4742af007c7d3978ed93aad9bb30921d4aec89 Mon Sep 17 00:00:00 2001 From: Byron Ellacott Date: Mon, 26 Apr 2021 19:04:14 +1000 Subject: [PATCH 005/739] Add experimental support for an eZ80 toolchain using llvm and GNU binutils. An additional fix for the RTC driver to lock the RTC after setting values instead of unlocking it is included. --- .../introduction/detailed_support.rst | 14 + arch/z80/include/ez80/inttypes.h | 17 + arch/z80/include/ez80/limits.h | 6 + arch/z80/include/ez80/types.h | 12 + arch/z80/src/Makefile | 8 +- arch/z80/src/Makefile.clang | 135 +++++ arch/z80/src/ez80/Kconfig | 17 +- arch/z80/src/ez80/Make.defs | 3 + arch/z80/src/ez80/Toolchain.defs | 89 +++- arch/z80/src/ez80/clang-compat.asm | 81 +++ arch/z80/src/ez80/clang_handlers.inc | 28 + arch/z80/src/ez80/ez80F91.inc | 483 ++++++++++++++++++ arch/z80/src/ez80/ez80_getsp.asm | 2 +- arch/z80/src/ez80/ez80_io.asm | 6 +- arch/z80/src/ez80/ez80_irqcommon.asm | 10 +- arch/z80/src/ez80/ez80_reset.asm | 2 +- arch/z80/src/ez80/ez80_rtc.c | 13 +- arch/z80/src/ez80/ez80_saveusercontext.asm | 68 +-- arch/z80/src/ez80/ez80_schedulesigaction.c | 4 +- arch/z80/src/ez80/ez80_serial.c | 4 +- arch/z80/src/ez80/ez80_spi.c | 4 +- arch/z80/src/ez80/ez80_startup.asm | 15 +- arch/z80/src/ez80/ez80f91_handlers.asm | 25 +- arch/z80/src/ez80/ez80f91_init.asm | 52 +- arch/z80/src/ez80/ez80f92_init.asm | 8 +- include/nuttx/compiler.h | 37 +- libs/libc/libc.csv | 2 +- 27 files changed, 1019 insertions(+), 126 deletions(-) create mode 100644 arch/z80/src/Makefile.clang create mode 100644 arch/z80/src/ez80/clang-compat.asm create mode 100644 arch/z80/src/ez80/clang_handlers.inc create mode 100644 arch/z80/src/ez80/ez80F91.inc diff --git a/Documentation/introduction/detailed_support.rst b/Documentation/introduction/detailed_support.rst index 52855404faa..39791431f44 100644 --- a/Documentation/introduction/detailed_support.rst +++ b/Documentation/introduction/detailed_support.rst @@ -3095,7 +3095,21 @@ All three boards are based on the eZ80F091 part and all use the Zilog ZDS-II Windows command line tools. The development environment is either Windows native or Cygwin or MSYS2 under Windows. +It is also possible to compile using ``clang`` and the GNU ``binutils`` +toolchain. You must have a variant of ``clang`` that supports the eZ80, +and an install of ``binutils`` built with Z80 support. +``clang`` with eZ80 support is available as part of the Texas Instruments +CE 85+ unofficial `toolchain ` +and requires a further `patch ` +to support GNU assembler syntax. + +GNU ``binutils`` supports the Z80 family. It will require compilation with +appropriate configuration to enable support. + +C intrinsics are also required. Some may be found in the Zilog ZDS-II +distribution, requiring some modification to build with the GNU assembler. +Additional intrinsics for 64-bit support must be supplied. Zilog Z8Encore! =============== diff --git a/arch/z80/include/ez80/inttypes.h b/arch/z80/include/ez80/inttypes.h index aa651cba0a4..a68333e995f 100644 --- a/arch/z80/include/ez80/inttypes.h +++ b/arch/z80/include/ez80/inttypes.h @@ -199,6 +199,23 @@ # define UINT16_C(x) x # define UINT24_C(x) x # define UINT32_C(x) x ## ul + +# ifdef __clang__ +# define PRId64 "lld" +# define PRIi64 "lli" +# define PRIo64 "llo" +# define PRIu64 "llu" +# define PRIx64 "llx" +# define PRIX64 "llX" +# define SCNd64 "lld" +# define SCNi64 "lli" +# define SCNo64 "llo" +# define SCNu64 "llu" +# define SCNx64 "llx" +# define INT64_C(x) x ## ll +# define UINT64_C(x) x ## ull +# endif + #endif #endif /* __ARCH_Z80_INCLUDE_EZ80_INTTYPES_H */ diff --git a/arch/z80/include/ez80/limits.h b/arch/z80/include/ez80/limits.h index 4765852ea48..0be67d6fdcf 100644 --- a/arch/z80/include/ez80/limits.h +++ b/arch/z80/include/ez80/limits.h @@ -74,4 +74,10 @@ #define UPTR_MAX 16777215U #endif +#ifdef __clang__ +#define LLONG_MIN (-LLONG_MAX - 1) +#define LLONG_MAX 9223372036854775807LL +#define ULLONG_MAX 18446744073709551615ULL +#endif + #endif /* __ARCH_Z80_INCLUDE_EZ80_LIMITS_H */ diff --git a/arch/z80/include/ez80/types.h b/arch/z80/include/ez80/types.h index 2b15cf3a388..1669cd38231 100644 --- a/arch/z80/include/ez80/types.h +++ b/arch/z80/include/ez80/types.h @@ -54,6 +54,10 @@ * long - 32-bits * char - 8-bits * float - 32-bits + * + * Clang additionally supports: + * + * long long - 64-bits */ typedef signed char _int8_t; @@ -69,8 +73,16 @@ typedef unsigned int _uint24_t; typedef signed long _int32_t; typedef unsigned long _uint32_t; +#ifdef __clang__ +typedef signed long long _int64_t; +typedef unsigned long long _uint64_t; +#define __INT64_DEFINED +typedef _int64_t _intmax_t; +typedef _uint64_t _uintmax_t; +#else typedef _int32_t _intmax_t; typedef _uint32_t _uintmax_t; +#endif /* A pointer is 2 or 3 bytes, depending upon if the ez80 is in z80 * compatibility mode or not diff --git a/arch/z80/src/Makefile b/arch/z80/src/Makefile index ed7d3128826..270233b3c9a 100644 --- a/arch/z80/src/Makefile +++ b/arch/z80/src/Makefile @@ -23,10 +23,14 @@ include $(TOPDIR)/Make.defs -include chip/Make.defs -# Compiler-Dependent Make: SDCC or ZiLOG ZDS-II +# Compiler-Dependent Make: SDCC, Clang, or ZiLOG ZDS-II COMPILER = ${shell basename "$(CC)"} -ifeq ($(COMPILER),sdcc) +ifeq ($(patsubst %-clang,clang,$(COMPILER)),clang) + + include Makefile.clang + +else ifeq ($(COMPILER),sdcc) # Check for SDCC native windows build diff --git a/arch/z80/src/Makefile.clang b/arch/z80/src/Makefile.clang new file mode 100644 index 00000000000..cb18d0f9312 --- /dev/null +++ b/arch/z80/src/Makefile.clang @@ -0,0 +1,135 @@ +############################################################################ +# arch/z80/src/Makefile.clang +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +############################################################################ + +# Directories + +ARCH_SRCDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src +BOARDDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src/board + +# Tools + +CFLAGS += ${shell $(INCDIR) "$(CC)" $(ARCH_SRCDIR)$(DELIM)chip} +CFLAGS += ${shell $(INCDIR) "$(CC)" $(ARCH_SRCDIR)$(DELIM)common} +CFLAGS += ${shell $(INCDIR) "$(CC)" $(TOPDIR)$(DELIM)sched} +CFLAGS += -I. + +CPPFLAGS += -D__ASSEMBLY__ + +############################################################################ +# Files and directories + +# There should be one head source (.asm file) +# +HEAD_OBJ = $(HEAD_ASRC:$(ASMEXT)=$(OBJEXT)) +STARTUP_OBJS ?= $(HEAD_OBJ) + +# Assembly sources and objects + +ASRCS = $(CHIP_ASRCS) $(CMN_ASRCS) +AOBJS = $(ASRCS:$(ASMEXT)=$(OBJEXT)) + +CSRCS = $(CHIP_CSRCS) $(CMN_CSRCS) +COBJS = $(CSRCS:.c=$(OBJEXT)) + +# All sources and objcts + +SRCS = $(ASRCS) $(CSRCS) +OBJS = $(AOBJS) $(COBJS) + +# Sources that can have dependencies (no .asm files) + +DEPSRCS = $(CSRCS) + +VPATH = chip:common:board + +############################################################################ +# Targets + +all: $(HEAD_OBJ) libarch$(LIBEXT) + +.PHONY: board$(DELIM)libboard$(LIBEXT) + +$(AOBJS) $(HEAD_OBJ): %$(OBJEXT): %$(ASMEXT) + $(call ASSEMBLE, $<, $@) + +$(COBJS): %$(OBJEXT): %.c + $(call COMPILE, $<, $@) + +# TODO will I need the asm_mem.h hack of SDCC? + +libarch$(LIBEXT): $(OBJS) + $(call ARCHIVE, $@, $(OBJS)) + +board$(DELIM)libboard$(LIBEXT): + $(Q) $(MAKE) -C board libboard$(LIBEXT) EXTRAFLAGS="$(EXTRAFLAGS)" + +LIBPATHS += -L"$(TOPDIR)$(DELIM)staging" +LIBPATHS += -L"$(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)src$(DELIM)board" + +LDLIBS += $(patsubst %.a,%,$(patsubst lib%,-l%,$(LINKLIBS))) -lboard + +NUTTX = "$(TOPDIR)$(DELIM)nuttx$(EXEEXT)" + +nuttx$(EXEEXT): $(HEAD_OBJ) board$(DELIM)libboard$(LIBEXT) $(LINKCMD) + $(Q) echo "LD: nuttx into $(NUTTX)" + $(Q) "$(LD)" -o $(NUTTX) $(HEAD_OBJ) -T $(LINKCMD) --orphan-handling=error --print-memory-usage \ + $(LIBPATHS) "-(" $(LDLIBS) "-)" $(LDFLAGS) -Map="$(TOPDIR)$(DELIM)nuttx.map" + +.depend: Makefile chip$(DELIM)Make.defs $(DEPSRCS) $(TOPDIR)$(DELIM).config + $(Q) if [ -e board$(DELIM)Makefile ]; then \ + $(MAKE) -C board depend ; \ + fi + $(Q) $(MKDEP) --dep-path chip --dep-path common "$(CC)" -- $(CFLAGS) -- $(DEPSRCS) >Make.dep + $(Q) touch $@ + +# This is part of the top-level export target + +export_startup: board$(DELIM)libboard$(LIBEXT) $(STARTUP_OBJS) + $(Q) if [ -d "$(EXPORT_DIR)$(DELIM)startup" ]; then \ + cp -f $(STARTUP_OBJS) "$(EXPORT_DIR)$(DELIM)startup"; \ + else \ + echo "$(EXPORT_DIR)$(DELIM)startup does not exist"; \ + exit 1; \ + fi + +# Dependencies + +depend: .depend + +context:: + +clean_context:: + +clean: + $(Q) if [ -e board$(DELIM)Makefile ]; then \ + $(MAKE) -C board clean ; \ + fi + $(call DELFILE, *.map) + $(call DELFILE, libarch$(LIBEXT)) + $(call CLEAN) + +distclean: clean + $(Q) if [ -e board$(DELIM)Makefile ]; then \ + $(MAKE) -C board distclean ; \ + fi + $(call DELFILE, Make.dep) + $(call DELFILE, .depend) + +-include Make.dep diff --git a/arch/z80/src/ez80/Kconfig b/arch/z80/src/ez80/Kconfig index b22191ba308..173c1e553d3 100644 --- a/arch/z80/src/ez80/Kconfig +++ b/arch/z80/src/ez80/Kconfig @@ -50,17 +50,24 @@ config ARCH_CHIP_EZ80F93 endchoice -# The ZiLOG ZDS-II Windows toolchain is the only toolchain available for -# the ez80. -# +choice + prompt "Toolchain Selection" + default EZ80_TOOLCHAIN_ZDSII config EZ80_TOOLCHAIN_ZDSII - bool - default y + bool "ZDS-II for Windows" + depends on TOOLCHAIN_WINDOWS + +config EZ80_TOOLCHAIN_CLANG + bool "Clang for Linux, macOS, or Cygwin" + depends on EXPERIMENTAL + +endchoice choice prompt "ZDS-II Toolchain version" default EZ80_ZDSII_V533 + depends on EZ80_TOOLCHAIN_ZDSII config EZ80_ZDSII_V511 bool "ZDS-II 5.1.1" diff --git a/arch/z80/src/ez80/Make.defs b/arch/z80/src/ez80/Make.defs index 0b52f124a03..bb3034fdb4d 100644 --- a/arch/z80/src/ez80/Make.defs +++ b/arch/z80/src/ez80/Make.defs @@ -36,6 +36,7 @@ CHIP_ASRCS += ez80_saveusercontext.asm ez80_restorecontext.asm ifeq ($(CONFIG_ARCH_CHIP_EZ80F91),y) HEAD_ASRC = ez80_reset.asm CHIP_ASRCS += ez80f91_init.asm ez80f91_handlers.asm +chip/ez80f91_handlers.asm_AFLAGS := -include clang_handlers.inc endif ifeq ($(CONFIG_ARCH_CHIP_EZ80F92),y) @@ -84,3 +85,5 @@ ifeq ($(CONFIG_EZ80_EMAC),y) CHIP_CSRCS += ez80_emac.c endif endif + +AFLAGS += -Ichip diff --git a/arch/z80/src/ez80/Toolchain.defs b/arch/z80/src/ez80/Toolchain.defs index d5af13f05ea..f546288575a 100644 --- a/arch/z80/src/ez80/Toolchain.defs +++ b/arch/z80/src/ez80/Toolchain.defs @@ -18,6 +18,74 @@ # ############################################################################ +# CPU Identification + +ifeq ($(CONFIG_ARCH_CHIP_EZ80F91),y) + ARCHCPU = eZ80F91 + ARCHCPUDEF = _EZ80F91 + ARCHFAMILY = _EZ80ACCLAIM +else ifeq ($(CONFIG_ARCH_CHIP_EZ80F92),y) + ARCHCPU = eZ80F92 + ARCHCPUDEF = _EZ80F92 + ARCHFAMILY = _EZ80ACCLAIM +endif + +ifeq ($(CONFIG_EZ80_TOOLCHAIN_CLANG),y) + +# Optimization level + +ifeq ($(CONFIG_DEBUG_SYMBOLS),y) + ARCHASMOPTIMIZATION = + ARCHOPTIMIZATION = -g +else + ARCHASMOPTIMIZATION = + ARCHOPTIMIZATION = +endif + +ifeq ($(CONFIG_DEBUG_NOOPT),y) + ARCHOPTIMIZATION += -O0 +else + ARCHOPTIMIZATION += -Oz +endif + +ARCHSTDINCLUDES = + +ARCHCPUFLAGS = -Dinterrupt="__attribute__((__interrupt__))" -ffreestanding +ARCHCPUFLAGS += -ffunction-sections -fdata-sections -Wa,-march=ez80 +ARCHLIST = +ARCHWARNINGS = -Wall -Wextra -Wno-incompatible-library-redeclaration +ARCHWARNINGS += -Wno-main-return-type -Wno-unused-parameter +ARCHWARNINGS += -Wno-invalid-noreturn -Wimplicit-int-conversion +ARCHDEFINES = -D$(ARCHCPUDEF) -D"$(ARCHFAMILY)" +ARCHINCLUDES = $(ARCHSTDINCLUDES) + +ARCHASMCPUFLAGS = -Wa,-march=ez80 -xassembler-with-cpp +ARCHASMINCLUDES = -include chip/clang-compat.asm +ARCHASMLIST = +ARCHASMWARNINGS = -W + +LDFLAGS += -gc-sections + +# Tool names/paths. + +CROSSDEV = ez80-none-elf- +CC = $(CROSSDEV)clang +CPP = $(CC) -E -P -x c +STRIP = $(CROSSDEV)strip --strip-unneeded +LD = $(CROSSDEV)ld +AS = $(CROSSDEV)as +AR = $(CROSSDEV)ar -r +OBJCOPY= $(CROSSDEV)objcopy + +# File extensions + +ASMEXT = .asm +OBJEXT = .o +LIBEXT = .a +EXEEXT = .bin + +else + # These are the default directories where the ZDS-II toolchain is installed. # NOTE that short 8.3 path names are used in order to avoid spaces. On my # machine I have: @@ -76,18 +144,6 @@ else EZDSZILOGINCDIR := ${shell echo "$(WZDSZILOGINCDIR)" | sed -e "s/ /%20/g"} endif -# CPU Identification - -ifeq ($(CONFIG_ARCH_CHIP_EZ80F91),y) - ARCHCPU = eZ80F91 - ARCHCPUDEF = _EZ80F91 - ARCHFAMILY = _EZ80ACCLAIM! -else ifeq ($(CONFIG_ARCH_CHIP_EZ80F92),y) - ARCHCPU = eZ80F92 - ARCHCPUDEF = _EZ80F92 - ARCHFAMILY = _EZ80ACCLAIM! -endif - # Optimization level ifeq ($(CONFIG_DEBUG_SYMBOLS),y) @@ -104,6 +160,13 @@ else ARCHOPTIMIZATION += -promote -NOreduceopt -sdiopt -optsize endif +ARCHCPUFLAGS = -chartype:S -promote -cpu:$(ARCHCPU) -NOgenprintf -NOmodsect \ + -asmsw:" $(ARCHASMCPUFLAGS) $(EARCHASMINCLUDES) $(ARCHASMWARNINGS) $(ARCHASMOPTIMIZATION)" +ARCHLIST = -keeplst -NOlist -NOlistinc -keepasm +ARCHWARNINGS = -warn +ARCHDEFINES = -define:$(ARCHCPUDEF) -define:$(ARCHFAMILY) +ARCHINCLUDES = $(ARCHSTDINCLUDES) + # Tool names/paths. CROSSDEV = @@ -119,3 +182,5 @@ ASMEXT = .asm OBJEXT = .obj LIBEXT = .lib EXEEXT = .lod + +endif diff --git a/arch/z80/src/ez80/clang-compat.asm b/arch/z80/src/ez80/clang-compat.asm new file mode 100644 index 00000000000..c83afd2bba2 --- /dev/null +++ b/arch/z80/src/ez80/clang-compat.asm @@ -0,0 +1,81 @@ +;************************************************************************** +; arch/z80/src/ez80/clang-compat.asm +; +; Licensed to the Apache Software Foundation (ASF) under one or more +; contributor license agreements. See the NOTICE file distributed with +; this work for additional information regarding copyright ownership. The +; ASF licenses this file to you under the Apache License, Version 2.0 (the +; "License"); you may not use this file except in compliance with the +; License. You may obtain a copy of the License at +; +; http://www.apache.org/licenses/LICENSE-2.0 +; +; Unless required by applicable law or agreed to in writing, software +; distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +; WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +; License for the specific language governing permissions and limitations +; under the License. +; +;************************************************************************** + +; ZDS-II macros end with 'endmac' and the name of the macro. A preprocessor +; macro substitutes this with the GNU assembler's endm and comments out the +; macro name. +#define endmac endm ; + +; The ZDS-II assembler directive DEFINE constructs a segment. This macro +; doesn't provide a complete implementation of the DEFINE directive, but +; instead supports the use of DEFINE required for the arch build. This +; use includes a .RESET section that may be in ROM or RAM, a .STARTUP +; section that is always in ROM, and an IVECTS section that's initialized +; data for the eZ80F92 (in ROM or RAM) and uninitialized data for the +; eZ80F91. + .macro define name space align=0 + .ifc \name,.STARTUP + .section .startup,"ax",@progbits + .else + .ifc \name,.RESET + .ifc \space,ROM + .section .reset,"ax",@progbits + .else + .section .reset,"axw",@progbits + .endif + .else + .ifc \name,.IVECTS +# ifdef CONFIG_ARCH_CHIP_EZ80F91 + .section .ivects,"wx",@nobits +# else + .section .ivects,"awx",@nobits +# endif + .else + error "Unsupported define for \name" + .endif + .endif + .endif + .if \align > 0 + .balign \align + .endif + .endm + +; The segment macro ensures the SEGMENT directive matches the define macro, +; and includes the CODE segment which should be translated to be the .text +; section. + .macro segment name + .ifc \name,CODE + .section .text + .else + .ifc \name,.STARTUP + .section .startup + .else + .ifc \name,.RESET + .section .reset + .else + .ifc \name,.IVECTS + .section .ivects + .else + error "Unsupported segment \name" + .endif ; .ifc name,.IVECTS + .endif ; .ifc name,.RESET + .endif ; .ifc name,.STARTUP + .endif ; .ifc name,CODE + .endm diff --git a/arch/z80/src/ez80/clang_handlers.inc b/arch/z80/src/ez80/clang_handlers.inc new file mode 100644 index 00000000000..9dc8d4ed12c --- /dev/null +++ b/arch/z80/src/ez80/clang_handlers.inc @@ -0,0 +1,28 @@ +;************************************************************************** +; arch/z80/src/ez80/clang_handlers.inc +; +; Licensed to the Apache Software Foundation (ASF) under one or more +; contributor license agreements. See the NOTICE file distributed with +; this work for additional information regarding copyright ownership. The +; ASF licenses this file to you under the Apache License, Version 2.0 (the +; "License"); you may not use this file except in compliance with the +; License. You may obtain a copy of the License at +; +; http://www.apache.org/licenses/LICENSE-2.0 +; +; Unless required by applicable law or agreed to in writing, software +; distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +; WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +; License for the specific language governing permissions and limitations +; under the License. +; +;************************************************************************** + +irqhandler: .macro vectno + ; Save AF on the stack, set the interrupt number and jump to the + ; common reset handling logic. + ; Offset 8: Return PC is already on the stack + push af ; Offset 7: AF (retaining flags) + ld a, \vectno ; A = vector number + jp _ez80_irq_common ; Remaining RST handling is common + .endm diff --git a/arch/z80/src/ez80/ez80F91.inc b/arch/z80/src/ez80/ez80F91.inc new file mode 100644 index 00000000000..bf0fcae9f37 --- /dev/null +++ b/arch/z80/src/ez80/ez80F91.inc @@ -0,0 +1,483 @@ + +;*********************************************************************************** +; arch/z80/src/ez80/ez80f91.h +; +; Licensed to the Apache Software Foundation (ASF) under one or more +; contributor license agreements. See the NOTICE file distributed with +; this work for additional information regarding copyright ownership. The +; ASF licenses this file to you under the Apache License, Version 2.0 (the +; "License"); you may not use this file except in compliance with the +; License. You may obtain a copy of the License at +; +; http://www.apache.org/licenses/LICENSE-2.0 +; +; Unless required by applicable law or agreed to in writing, software +; distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +; WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +; License for the specific language governing permissions and limitations +; under the License. * +;*********************************************************************************** + +;*********************************************************************************** +; Included Files +;*********************************************************************************** + +; Product ID Registers ************************************************************ + +ZDI_ID_L EQU 000h +ZDI_ID_H EQU 001h +ZDI_ID_REV EQU 002h + +; Interrupt Registers ************************************************************* + +INT_P0 EQU 010h +INT_P1 EQU 011h +INT_P2 EQU 012h +INT_P3 EQU 013h +INT_P4 EQU 014h +INT_P5 EQU 015h + +; EMACC Registers ***************************************************************** + +EMAC_TEST EQU 020h ; EMAC test register * +EMAC_CFG1 EQU 021h ; EMAC configuration 1 register * +EMAC_CFG2 EQU 022h ; EMAC configuration 2 register * +EMAC_CFG3 EQU 023h ; EMAC configuration 3 register * +EMAC_CFG4 EQU 024h ; EMAC configuration 4 register * +EMAC_STAD_0 EQU 025h ; EMAC station address register 0 * +EMAC_STAD_1 EQU 026h ; EMAC station address register 1 * +EMAC_STAD_2 EQU 027h ; EMAC station address register 2 * +EMAC_STAD_3 EQU 028h ; EMAC station address register 3 * +EMAC_STAD_4 EQU 029h ; EMAC station address register 4 * +EMAC_STAD_5 EQU 02ah ; EMAC station address register 5 * +EMAC_TPTV_L EQU 02bh ; Transit pause timer value (low) * +EMAC_TPTV_H EQU 02ch ; Transit pause timer value (high) * +EMAC_IPGT EQU 02dh ; EMAC Interpacket gap register * +EMAC_IPGR1 EQU 02eh ; Non-back-to-back IPG register 1 * +EMAC_IPGR2 EQU 02fh ; Non-back-to-back IPG register 2 * +EMAC_MAXF_L EQU 030h ; EMAC maximum frame length register (low) * +EMAC_MAXF_H EQU 031h ; EMAC maximum frame length register (high) * +EMAC_AFR EQU 032h ; EMAC address filter register * +EMAC_HTBL_0 EQU 033h ; EMAC hash table register 0 * +EMAC_HTBL_1 EQU 034h ; EMAC hash table register 1 * +EMAC_HTBL_2 EQU 035h ; EMAC hash table register 2 * +EMAC_HTBL_3 EQU 036h ; EMAC hash table register 3 * +EMAC_HTBL_4 EQU 037h ; EMAC hash table register 4 * +EMAC_HTBL_5 EQU 038h ; EMAC hash table register 5 * +EMAC_HTBL_6 EQU 039h ; EMAC hash table register 6 * +EMAC_HTBL_7 EQU 03ah ; EMAC hash table register 7 * +EMAC_MIIMGT EQU 03bh ; EMACS MII management register * +EMAC_CTLD_L EQU 03ch ; PHY configuration data register (low) * +EMAC_CTLD_H EQU 03dh ; PHY configuration data register (high) * +EMAC_RGAD EQU 03eh ; PHY address register * +EMAC_FIAD EQU 03fh ; PHY unit select register * +EMAC_PTMR EQU 040h ; EMAC transmit polling timer register * +EMAC_RST EQU 041h ; EMAC reset control register * +EMAC_TLBP_L EQU 042h ; EMAC transmit lower boundary pointer (low) * +EMAC_TLBP_H EQU 043h ; EMAC transmit lower boundary pointer (high) * +EMAC_BP_L EQU 044h ; EMAC boundary pointer register (low) * +EMAC_BP_H EQU 045h ; EMAC boundary pointer register (high) * +EMAC_BP_U EQU 046h ; EMAC boundary pointer register (upper byte) * +EMAC_RHBP_L EQU 047h ; EMAC receive high boundary pointer register (low) * +EMAC_RHBP_H EQU 048h ; EMAC receive high boundary pointer register (high) * +EMAC_RRP_L EQU 049h ; EMAC receive read pointer (low) * +EMAC_RRP_H EQU 04ah ; EMAC receive read pointer (high) * +EMAC_BUFSZ EQU 04bh ; EMAC buffer size register * +EMAC_IEN EQU 04ch ; EMAC interrupt enable register * +EMAC_ISTAT EQU 04dh ; EMAC interrupt status register * +EMAC_PRSD_L EQU 04eh ; PHY read status data register (low) * +EMAC_PRSD_H EQU 04fh ; PHY read status data register (high) * +EMAC_MIISTAT EQU 050h ; EMAC MII status register * +EMAC_RWP_L EQU 051h ; EMAC receive write pointer (low) * +EMAC_RWP_H EQU 052h ; EMAC receive write pointer (high) * +EMAC_TRP_L EQU 053h ; EMAC transmit read pointer (low) * +EMAC_TRP_H EQU 054h ; EMAC transmit read pointer (high) * +EMAC_BLKSLFT_L EQU 055h ; EMAC receive blocks left register (low) * +EMAC_BLKSLFT_H EQU 056h ; EMAC receive blocks left register (high) * +EMAC_FDATA_L EQU 057h ; EMAC FIFO data register (low) * +EMAC_FDATA_H EQU 058h ; EMAC FIFO data register (high) * +EMAC_FFLAGS EQU 059h ; EMAC FIFO flags register * + +; PLL Registers ******************************************************************* + +PLL_DIV_L EQU 05ch +PLL_DIV_H EQU 05dh +PLL_CTL0 EQU 05eh +PLL_CTL1 EQU 05fh + +; Timer Registers ***************************************************************** + +TMR0_CTL EQU 060h ; RW: Timer 0 control register * +TMR0_IER EQU 061h ; RW: Timer 0 interrupt enable register * +TMR0_IIR EQU 062h ; R : Timer 0 interrupt ID register * +TMR0_DRL EQU 063h ; R : Timer 0 data register (low) * +TMR0_DRH EQU 064h ; R : Timer 0 data register (high) * +TMR0_RRL EQU 063h ; W: Timer 0 reload register (low) * +TMR0_RRH EQU 064h ; W: Timer 0 reload register (high) * + +TMR1_CTL EQU 065h ; RW: Timer 1 control register * +TMR1_IER EQU 066h ; RW: Timer 1 interrupt enable register * +TMR1_IIR EQU 067h ; R : Timer 1 interrupt ID register * +TMR1_DRL EQU 068h ; R : Timer 1 data register (low) * +TMR1_DRH EQU 069h ; R : Timer 1 data register (high) * +TMR1_RRL EQU 068h ; W: Timer 1 reload register (low) * +TMR1_RRH EQU 069h ; W: Timer 1 reload register (high) * +TMR1_CAPCTL EQU 06ah ; RW: Timer 1 input capture control register * +TMR1_CAPAL EQU 06bh ; R : Timer 1 capture input value A (low) * +TMR1_CAPAH EQU 06ch ; R : Timer 1 capture input value A (high) * +TMR1_CAPBL EQU 06dh ; R : Timer 1 capture input value B (low) * +TMR1_CAPBH EQU 06eh + +TMR2_CTL EQU 06fh ; RW: Timer 2 control register * +TMR2_IER EQU 070h ; RW: Timer 2 interrupt enable register * +TMR2_IIR EQU 071h ; R : Timer 2 interrupt ID register * +TMR2_DRL EQU 072h ; R : Timer 2 data register (low) * +TMR2_DRH EQU 073h ; R : Timer 2 data register (high) * +TMR2_RRL EQU 072h ; W: Timer 2 reload register (low) * +TMR2_RRH EQU 073h ; W: Timer 2 reload register (high) * + +TMR3_CTL EQU 074h ; RW: Timer 3 control register * +TMR3_IER EQU 075h ; RW: Timer 3 interrupt enable register * +TMR3_IIR EQU 076h ; R : Timer 3 interrupt ID register * +TMR3_DRL EQU 077h ; R : Timer 3 data register (low) * +TMR3_DRH EQU 078h ; R : Timer 3 data register (high) * +TMR3_RRL EQU 077h ; W: Timer 3 reload register (low) * +TMR3_RRH EQU 078h ; W: Timer 3 reload register (high) * +TMR3_CAPCTL EQU 07bh ; RW: Timer 3 input capture control register * +TMR3_CAPAL EQU 07ch ; R : Timer 3 capture input value A (low) * +TMR3_CAPAH EQU 07dh ; R : Timer 3 capture input value A (high) * +TMR3_CAPBL EQU 07eh ; R : Timer 3 capture input value B (low) * +TMR3_CAPBH EQU 07fh ; R : Timer 3 capture input value B (high) * +TMR3_OCCTL1 EQU 080h ; RW: Timer 3 output compare control register1 * +TMR3_OCCTL2 EQU 081h ; RW: Timer 3 output compare control register2 * +TMR3_OC0L EQU 082h ; RW: Timer 3 output compare value 0 (low) * +TMR3_OC0H EQU 083h ; RW: Timer 3 output compare value 0 (high) * +TMR3_OC1L EQU 084h ; RW: Timer 3 output compare value 1 (low) * +TMR3_OC1H EQU 085h ; RW: Timer 3 output compare value 1 (high) * +TMR3_OC2L EQU 086h ; RW: Timer 3 output compare value 2 (low) * +TMR3_OC2H EQU 087h ; RW: Timer 3 output compare value 2 (high) * +TMR3_OC3L EQU 088h ; RW: Timer 3 output compare value 3 (low) * +TMR3_OC3H EQU 089h ; RW: Timer 3 output compare value 3 (high) * + +; TMR0/1/2/3 CTL Register Bit Definitions ****************************************** + +TMRCTL_BRKSTOP EQU 080h ; Bit 7: Stop timer for debug operation * +TMRCTL_CLKSEL EQU 060h ; Bits 6-5: Timer source * +TMRCLKSEL_SYSCLK EQU 000h ; 00: System clock divided by prescaler * +TMRCLKSEL_RTC EQU 020h ; 01: Real time clock input * +TMRCLKSEL_ECF EQU 040h ; 10: Event count input, falling edge * +TMRCLKSEL_ECR EQU 060h ; 11: Event count input, rising edge * +TMRCTL_CLKDIV EQU 018h ; Bits 3-4: System clock divider * +TMRCLKDIV_4 EQU 000h ; 00: 4 * +TMRCLKDIV_16 EQU 008h ; 01: 16 * +TMRCLKDIV_64 EQU 010h ; 10: 64 * +TMRCLKDIV_256 EQU 018h ; 11: 256 * +TMRCTL_TIMCONT EQU 004h ; Bit 2: Continuous mode * +TMRCTL_RLD EQU 002h ; Bit 1: Force reload * +TMRCTL_TIMEN EQU 001h ; Bit 0: Programmable reload timer enabled * + +; TMR0/1/2/3 IER Register Bit Definitions ****************************************** + + ; Bit 7: Reserved * +TMRIER_OC3EN EQU 040h ; Bit 6: TMR3 OC3 enabled * +TMRIER_OC2EN EQU 020h ; Bit 5: TMR3 OC2 enabled * +TMRIER_OC1EN EQU 010h ; Bit 4: TMR3 OC1 enabled * +TMRIER_OC0EN EQU 008h ; Bit 3: TMR3 OC0 enabled * +TMRIER_ICBEN EQU 004h ; Bit 2: TMR1/3 capture pin enabled * +TMRIER_ICAEN EQU 002h ; Bit 1: TMR1/3 capture pin enabled * +TMRIER_EOCEN EQU 001h ; Bit 0: End of count interrupt enabled * + +; TMR0/1/2/3 IER Register Bit Definitions ****************************************** + + ; Bit 7: Reserved * +TMRIIR_OC3 EQU 040h ; Bit 6: TMR3 OC3 * +TMRIIR_OC2 EQU 020h ; Bit 5: TMR3 OC2 * +TMRIIR_OC1 EQU 010h ; Bit 4: TMR3 OC1 * +TMRIIR_OC0 EQU 008h ; Bit 3: TMR3 OC0 * +TMRIIR_ICB EQU 004h ; Bit 2: TMR1/3 capture pin * +TMRIIR_ICA EQU 002h ; Bit 1: TMR1/3 capture pin * +TMRIIR_EOC EQU 001h ; Bit 0: End of count interrupt * + +; PWM Registers ******************************************************************** + +PWM_CTL1 EQU 079h +PWM_CTL2 EQU 07ah +PWM_CTL3 EQU 07bh +PWM0R_L EQU 07ch +PWM0R_H EQU 07dh +PWM1R_L EQU 07eh +PWM1R_H EQU 07fh +PWM2R_L EQU 080h +PWM2R_H EQU 081h +PWM3R_L EQU 082h +PWM3R_H EQU 083h +PWM0F_L EQU 084h +PWM0F_H EQU 085h +PWM1F_L EQU 086h +PWM1F_H EQU 087h +PWM2F_L EQU 088h +PWM2F_H EQU 089h +PWM3F_L EQU 08ah +PWM3F_H EQU 08bh + +; WDT Registers ******************************************************************** + +WDT_CTL EQU 093h +WDT_RR EQU 094h + +; GPIO Registers ******************************************************************* + +PA_DR EQU 096h +PA_DDR EQU 097h +PA_ALT0 EQU 0a6h +PA_ALT1 EQU 098h +PA_ALT2 EQU 099h +PB_DR EQU 09ah +PB_DDR EQU 09bh +PB_ALT0 EQU 0a7h +PB_ALT1 EQU 09ch +PB_ALT2 EQU 09dh +PC_DR EQU 09eh +PC_DDR EQU 09fh +PC_ALT0 EQU 0ceh +PC_ALT1 EQU 0a0h +PC_ALT2 EQU 0a1h +PD_DR EQU 0a2h +PD_DDR EQU 0a3h +PD_ALT0 EQU 0cfh +PD_ALT1 EQU 0a4h +PD_ALT2 EQU 0a5h + +; CS Registers ********************************************************************* + +CS0_LBR EQU 0a8h +CS0_UBR EQU 0a9h +CS0_CTL EQU 0aah +CS1_LBR EQU 0abh +CS1_UBR EQU 0ach +CS1_CTL EQU 0adh +CS2_LBR EQU 0aeh +CS2_UBR EQU 0afh +CS2_CTL EQU 0b0h +CS3_LBR EQU 0b1h +CS3_UBR EQU 0b2h +CS3_CTL EQU 0b3h + +; RAMCTL reggisters **************************************************************** + +RAM_CTL EQU 0b4h +RAM_CTL0 EQU 0b4h +RAM_ADDR_U EQU 0b5h +MBIST_GPR EQU 0b6h +MBIST_EMR EQU 0b7h + +; RAMCTL bit definitions *********************************************************** + +RAMCTL_ERAMEN EQU (1 << 6) ; Bit 7: 1=On chip EMAC SRAM is enabled * +RAMCTL_GPRAMEN EQU (1 << 7) ; Bit 7: 1=On chip GP SRAM is enabled * + +; SPI Registers ******************************************************************** + +SPI_BRG_L EQU 0b8h +SPI_BRG_H EQU 0b9h +SPI_CTL EQU 0bah +SPI_SR EQU 0bbh +SPI_RBR EQU 0bch +SPI_TSR EQU 0bch + +; UART Register Offsets ************************************************************ + + ; DLAB=0: * +UART_THR EQU 000h ; W: UART Transmit holding register * +UART_RBR EQU 000h ; R : UART Receive buffer register * +UART_IER EQU 001h ; RW: UART Interrupt enable register * + ; DLAB=1: * +UART_BRG EQU 000h ; RW: UART Baud rate generator register * +UART_BRGL EQU 000h ; RW: UART Baud rate generator register (low) * +UART_BRGH EQU 001h ; RW: UART Baud rate generator register (high) * + ; DLAB=N/A: * +UART_IIR EQU 002h ; R : UART Interrupt identification register * +UART_FCTL EQU 002h ; W: UART FIFO control register * +UART_LCTL EQU 003h ; RW: UART Line control register * +UART_MCTL EQU 004h ; RW: UART Modem control register * +UART_LSR EQU 005h ; R : UART Line status register * +UART_MSR EQU 006h ; R : UART Modem status register * +UART_SPR EQU 007h ; RW: UART Scratchpad register * + +; UART0/1 Base Register Addresses ************************************************** + +UART0_BASE EQU 0c0h +UART1_BASE EQU 0d0h + +; UART0/1 Register Addresses ******************************************************* + +UART0_THR EQU UART0_BASE + UART_THR +UART0_RBR EQU UART0_BASE + UART_RBR +UART0_IER EQU UART0_BASE + UART_IER +UART0_BRG EQU UART0_BASE + UART_BRG +UART0_BRGL EQU UART0_BASE + UART_BRGL +UART0_BRGH EQU UART0_BASE + UART_BRGH +UART0_IIR EQU UART0_BASE + UART_IIR +UART0_FCTL EQU UART0_BASE + UART_FCTL +UART0_LCTL EQU UART0_BASE + UART_LCTL +UART0_MCTL EQU UART0_BASE + UART_MCTL +UART0_LSR EQU UART0_BASE + UART_LSR +UART0_MSR EQU UART0_BASE + UART_MSR +UART0_SPR EQU UART0_BASE + UART_SPR + +UART1_THR EQU UART1_BASE + UART_THR +UART1_RBR EQU UART1_BASE + UART_RBR +UART1_IER EQU UART1_BASE + UART_IER +UART1_BRG EQU UART1_BASE + UART_BRG +UART1_BRGL EQU UART1_BASE + UART_BRGL +UART1_BRGH EQU UART1_BASE + UART_BRGH +UART1_IIR EQU UART1_BASE + UART_IIR +UART1_FCTL EQU UART1_BASE + UART_FCTL +UART1_LCTL EQU UART1_BASE + UART_LCTL +UART1_MCTL EQU UART1_BASE + UART_MCTL +UART1_LSR EQU UART1_BASE + UART_LSR +UART1_MSR EQU UART1_BASE + UART_MSR +UART1_SPR EQU UART1_BASE + UART_SPR + +; UART0/1 IER register bits ******************************************************** + +UARTEIR_INTMASK EQU 01fh ; Bits 5-7: Reserved * +UARTEIR_TCIE EQU 010h ; Bit 4: Transmission complete interrupt * +UARTEIR_MIIE EQU 008h ; Bit 3: Modem status input interrupt * +UARTEIR_LSIE EQU 004h ; Bit 2: Line status interrupt * +UARTEIR_TIE EQU 002h ; Bit 1: Transmit interrupt * +UARTEIR_RIE EQU 001h ; Bit 0: Receive interrupt * + +; UART0/1 IIR register bits ******************************************************** + +UARTIIR_FSTS EQU 080h ; Bit 7: FIFO enable * + ; Bits 4-6: Reserved * +UARTIIR_INSTS EQU 00eh ; Bits 1-3: Interrupt status code * +UARTINSTS_CTO EQU 00ch ; 110: Character timeout * +UARTINSTS_TC EQU 00ah ; 101: Transmission complete * +UARTINSTS_RLS EQU 006h ; 011: Receiver line status * +UARTINSTS_RDR EQU 004h ; 010: Receive data ready or trigger level * +UARTINSTS_TBE EQU 002h ; 001: Transmisson buffer empty * +UARTINSTS_MS EQU 000h ; 000: Modem status * +UARTIIR_INTBIT EQU 001h ; Bit 0: Active interrupt source * +UARTIIR_CAUSEMASK EQU 00fh + +; UART0/1 FCTL register bits ******************************************************* + +UARTFCTL_TRIG EQU 0c0h ; Bits 6-7: UART receive FIFO trigger level * +UARTTRIG_1 EQU 000h ; 00: Receive FIFO trigger level=1 * +UARTTRIG_4 EQU 040h ; 01: Receive FIFO trigger level=4 * +UARTTRIG_8 EQU 080h ; 10: Receive FIFO trigger level=8 * +UARTTRIG_14 EQU 0c0h ; 11: Receive FIFO trigger level=14 * + ; Bit 3-5: Reserved * +UARTFCTL_CLRTXF EQU 004h ; Bit 2: Transmit enable * +UARTFCTL_CLRRXF EQU 002h ; Bit 1: Receive enable * +UARTFCTL_FIFOEN EQU 001h ; Bit 0: Enable receive/transmit FIFOs * + +; UART0/1 LCTL register bits ******************************************************* + +UARTLCTL_DLAB EQU 080h ; Bit 7: Enable access to baud rate generator * +UARTLCTL_SB EQU 040h ; Bit 6: Send break * +UARTLCTL_FPE EQU 020h ; Bit 5: Force parity error * +UARTLCTL_EPS EQU 010h ; Bit 4: Even parity select * +UARTLCTL_PEN EQU 008h ; Bit 3: Parity enable * +UARTLCTL_2STOP EQU 004h ; Bit 2: 2 stop bits * +UARTLCTL_CHAR EQU 003h ; Bits 0-2: Number of data bits * +UARTCHAR_5BITS EQU 000h ; 00: 5 data bits * +UARTCHAR_6BITS EQU 001h ; 01: 6 data bits * +UARTCHAR_7BITS EQU 002h ; 10: 7 data bits * +UARTCHAR_8BITS EQU 003h ; 11: 8 data bits * + +UARTLCTL_MASK EQU 03fh + +; UART0/1 MCTL register bits ******************************************************* + + ; Bit 7: Reserved * +UARTMCTL_POLARITY EQU 040h ; Bit 6: Invert polarity of RxD and TxD * +UARTMCTL_MDM EQU 020h ; Bit 5: Multi-drop mode enable * +UARTMCTL_LOOP EQU 010h ; Bit 4: Loopback mode enable * +UARTMCTL_OUT2 EQU 008h ; Bit 3: (loopback mode only) * +UARTMCTL_OUT1 EQU 004h ; Bit 2: (loopback mode only) * +UARTMCTL_RTS EQU 002h ; Bit 1: Request to send * +UARTMCTL_DTR EQU 001h ; Bit 0: Data termnal read * + +; UART0/1 LSR register bits ******************************************************** + +UARTLSR_ERR EQU 080h ; Bit 7: Error detected in FIFO * +UARTLSR_TEMT EQU 040h ; Bit 6: Transmit FIFO empty and idle * +UARTLSR_THRE EQU 020h ; Bit 5: Transmit FIFO empty * +UARTLSR_BI EQU 010h ; Bit 4: Break on input * +UARTLSR_FE EQU 008h ; Bit 3: Framing error * +UARTLSR_PE EQU 004h ; Bit 2: Parity error * +UARTLSR_OE EQU 002h ; Bit 1: Overrun error * +UARTLSR_DR EQU 001h ; Bit 0: Data ready * + +; UART0/1 MSR register bits ******************************************************** + +UARTMSR_DCD EQU 080h ; Bit 7: Data carrier detect * +UARTMSR_RI EQU 040h ; Bit 6: Ring indicator * +UARTMSR_DSR EQU 020h ; Bit 5: Data set ready * +UARTMSR_CTS EQU 010h ; Bit 4: Clear to send * +UARTMSR_DDCD EQU 008h ; Bit 3: Delta on DCD input * +UARTMSR_TERI EQU 004h ; Bit 2: Trailing edge change on RI * +UARTMSR_DDSR EQU 002h ; Bit 1: Delta on DSR input * +UARTMSR_DCTS EQU 001h ; Bit 0: Delta on CTS input * + +; IR Registers ******************************************************************** + +IR_CTL EQU 0bfh + +; I2C Registers ******************************************************************* + +I2C_SAR EQU 0c8h +I2C_XSAR EQU 0c9h +I2C_DR EQU 0cah +I2C_CTL EQU 0cbh +I2C_SR EQU 0cch +I2C_CCR EQU 0cdh +I2C_SRR EQU 0ceh + +; CLK Registers ******************************************************************* + +CLK_PPD1 EQU 0dbh +CLK_PPD2 EQU 0dch + +; RTC Registers ******************************************************************* + +RTC_SEC EQU 0e0h +RTC_MIN EQU 0e1h +RTC_HRS EQU 0e2h +RTC_DOW EQU 0e3h +RTC_DOM EQU 0e4h +RTC_MON EQU 0e5h +RTC_YR EQU 0e6h +RTC_CEN EQU 0e7h +RTC_ASEC EQU 0e8h +RTC_AMIN EQU 0e9h +RTC_AHRS EQU 0eah +RTC_ADOW EQU 0ebh +RTC_ACTRL EQU 0ech +RTC_CTRL EQU 0edh + +; CSBMC Registers ***************************************************************** + +CS0_BMC EQU 0f0h +CS1_BMC EQU 0f1h +CS2_BMC EQU 0f2h +CS3_BMC EQU 0f3h + +; FLASH Registers ***************************************************************** + +FLASH_KEY EQU 0f5h +FLASH_DATA EQU 0f6h +FLASH_ADDR_U EQU 0f7h +FLASH_CTRL EQU 0f8h +FLASH_FDIV EQU 0f9h +FLASH_PROT EQU 0fah +FLASH_INTC EQU 0fbh +FLASH_IRQ EQU FLASH_INTC ; compat. with ZDS-II +FLASH_PAGE EQU 0fch +FLASH_ROW EQU 0fdh +FLASH_COL EQU 0feh +FLASH_PGCTL EQU 0ffh + diff --git a/arch/z80/src/ez80/ez80_getsp.asm b/arch/z80/src/ez80/ez80_getsp.asm index 383669c3540..356271f8482 100644 --- a/arch/z80/src/ez80/ez80_getsp.asm +++ b/arch/z80/src/ez80/ez80_getsp.asm @@ -40,7 +40,7 @@ ;************************************************************************** _z80_getsp: - ld hl, #0 ; Initialize HL to zero + ld hl, 0 ; Initialize HL to zero add hl, sp ; Add the stack pointer to HL ret ; Return stack pointer in HL diff --git a/arch/z80/src/ez80/ez80_io.asm b/arch/z80/src/ez80/ez80_io.asm index ea3db8a557e..3039283f653 100644 --- a/arch/z80/src/ez80/ez80_io.asm +++ b/arch/z80/src/ez80/ez80_io.asm @@ -33,7 +33,7 @@ ; Global Symbols Expported ;************************************************************************** - CONFIG_EZ80_Z80MODE equ 0 +CONFIG_EZ80_Z80MODE equ 0 ;************************************************************************** ; Code @@ -54,7 +54,7 @@ _outp: ; Create a stack frame push ix - ld ix, #0 + ld ix, 0 add ix, sp ; Get the arguments from the stack @@ -104,7 +104,7 @@ _inp: ; Create a stack frame push ix - ld ix, #0 + ld ix, 0 add ix, sp ; Get the arguments from the stack diff --git a/arch/z80/src/ez80/ez80_irqcommon.asm b/arch/z80/src/ez80/ez80_irqcommon.asm index 92cf8b4f9b3..2562b6246d9 100644 --- a/arch/z80/src/ez80/ez80_irqcommon.asm +++ b/arch/z80/src/ez80/ez80_irqcommon.asm @@ -26,7 +26,7 @@ EZ80_C_FLAG EQU 01h ; Bit 0: Carry flag EZ80_N_FLAG EQU 02h ; Bit 1: Add/Subtract flag -EZ80_PV_FLAG EQU 04h ; Bit 2: Parity/Overflow flag +EZ80_PV_FLAG EQU 04h ; Bit 2: Parity/Overflow flag EZ80_H_FLAG EQU 10h ; Bit 4: Half carry flag EZ80_Z_FLAG EQU 40h ; Bit 5: Zero flag EZ80_S_FLAG EQU 80h ; Bit 7: Sign flag @@ -62,7 +62,7 @@ _ez80_irq_common: ; IRQ number is in A push hl ; Offset 6: HL - ld hl, #(3*3) ; HL is the value of the stack pointer before + ld hl, 3*3 ; HL is the value of the stack pointer before add hl, sp ; the interrupt occurred (3 for PC, AF, HL) push hl ; Offset 5: Stack pointer push iy ; Offset 4: IY @@ -74,16 +74,16 @@ _ez80_irq_common: ; so we can save a fake indication that will cause interrupts to restored when ; this context is restored - ld bc, #EZ80_PV_FLAG ; Parity bit. 1=parity odd, IEF2=1 + ld bc, EZ80_PV_FLAG ; Parity bit. 1=parity odd, IEF2=1 push bc ; Offset 0: I with interrupt state in parity di ; (not necessary) ; Call the interrupt decode logic. SP points to the beginning of the reg structure - ld hl, #0 ; Argument #2 is the beginning of the reg structure + ld hl, 0 ; Argument #2 is the beginning of the reg structure add hl, sp ; push hl ; Place argument #2 at the top of stack - ld bc, #0 ; BC = reset number + ld bc, 0 ; BC = reset number ld c, a ; Save the reset number in C push bc ; Argument #1 is the Reset number call _z80_doirq ; Decode the IRQ diff --git a/arch/z80/src/ez80/ez80_reset.asm b/arch/z80/src/ez80/ez80_reset.asm index a244f96870b..62995990ae3 100644 --- a/arch/z80/src/ez80/ez80_reset.asm +++ b/arch/z80/src/ez80/ez80_reset.asm @@ -69,7 +69,7 @@ _rst30: rstvector _rst38: rstvector - ds %26 + ds 026h _nmi: retn end diff --git a/arch/z80/src/ez80/ez80_rtc.c b/arch/z80/src/ez80/ez80_rtc.c index 220fa27f1a3..1a021dc5be2 100644 --- a/arch/z80/src/ez80/ez80_rtc.c +++ b/arch/z80/src/ez80/ez80_rtc.c @@ -95,11 +95,6 @@ struct alm_cbinfo_s * Private Data ****************************************************************************/ -/* Interrupt handlers attached to the ALARM EXTI */ - -static xcpt_t g_alarm_callback; -static void *g_callback_arg; - #ifdef CONFIG_RTC_ALARM /* Callback to use when an EXTI is activated */ @@ -289,7 +284,7 @@ static void set_raw_time(FAR const struct rtc_timeregs_s *rtcregs) outp(EZ80_RTC_MON, rtcregs->mon); outp(EZ80_RTC_YR, rtcregs->yr); outp(EZ80_RTC_CEN, rtcregs->cen); - rtc_unlock(); + rtc_lock(); } /**************************************************************************** @@ -306,6 +301,7 @@ static void set_raw_time(FAR const struct rtc_timeregs_s *rtcregs) * ****************************************************************************/ +#ifdef CONFIG_RTC_ALARM static void get_raw_alarm(FAR struct rtc_almregs_s *almregs) { almregs->sec = inp(EZ80_RTC_ASEC); @@ -313,6 +309,7 @@ static void get_raw_alarm(FAR struct rtc_almregs_s *almregs) almregs->hrs = inp(EZ80_RTC_AHRS); almregs->dow = inp(EZ80_RTC_ADOW); } +#endif /**************************************************************************** * Name: set_raw_alarm @@ -328,6 +325,7 @@ static void get_raw_alarm(FAR struct rtc_almregs_s *almregs) * ****************************************************************************/ +#ifdef CONFIG_RTC_ALARM static void set_raw_alarm(FAR const struct rtc_almregs_s *almregs) { rtc_unlock(); @@ -335,8 +333,9 @@ static void set_raw_alarm(FAR const struct rtc_almregs_s *almregs) outp(EZ80_RTC_AMIN, almregs->min); outp(EZ80_RTC_AHRS, almregs->hrs); outp(EZ80_RTC_ADOW, almregs->dow); - rtc_unlock(); + rtc_lock(); } +#endif /**************************************************************************** * Name: ez80_alarm_interrupt diff --git a/arch/z80/src/ez80/ez80_saveusercontext.asm b/arch/z80/src/ez80/ez80_saveusercontext.asm index 441c745ae3d..7bbada076be 100644 --- a/arch/z80/src/ez80/ez80_saveusercontext.asm +++ b/arch/z80/src/ez80/ez80_saveusercontext.asm @@ -32,50 +32,50 @@ ; Constants ;************************************************************************* - CONFIG_EZ80_Z80MODE equ 0 +CONFIG_EZ80_Z80MODE equ 0 .if CONFIG_EZ80_Z80MODE ; Register save area layout - XCPT_I equ 2*0 ; Offset 0: Saved I w/interrupt state in parity - XCPT_BC equ 2*1 ; Offset 1: Saved BC register - XCPT_DE equ 2*2 ; Offset 2: Saved DE register - XCPT_IX equ 2*3 ; Offset 3: Saved IX register - XCPT_IY equ 2*4 ; Offset 4: Saved IY register - XCPT_SP equ 2*5 ; Offset 5: Offset to SP at time of interrupt - XCPT_HL equ 2*6 ; Offset 6: Saved HL register - XCPT_AF equ 2*7 ; Offset 7: Saved AF register - XCPT_PC equ 2*8 ; Offset 8: Offset to PC at time of interrupt +XCPT_I equ 2*0 ; Offset 0: Saved I w/interrupt state in parity +XCPT_BC equ 2*1 ; Offset 1: Saved BC register +XCPT_DE equ 2*2 ; Offset 2: Saved DE register +XCPT_IX equ 2*3 ; Offset 3: Saved IX register +XCPT_IY equ 2*4 ; Offset 4: Saved IY register +XCPT_SP equ 2*5 ; Offset 5: Offset to SP at time of interrupt +XCPT_HL equ 2*6 ; Offset 6: Saved HL register +XCPT_AF equ 2*7 ; Offset 7: Saved AF register +XCPT_PC equ 2*8 ; Offset 8: Offset to PC at time of interrupt ; Stack frame - FRAME_IY equ 2*0 ; Location of IY on the stack - FRAME_IX equ 2*1 ; Location of IX on the stack - FRAME_RET equ 2*2 ; Location of return address on the stack - FRAME_REGS equ 2*3 ; Location of reg save area on stack +FRAME_IY equ 2*0 ; Location of IY on the stack +FRAME_IX equ 2*1 ; Location of IX on the stack +FRAME_RET equ 2*2 ; Location of return address on the stack +FRAME_REGS equ 2*3 ; Location of reg save area on stack - SP_OFFSET equ 2*3 +SP_OFFSET equ 2*3 .else ; Register save area layout - XCPT_I equ 3*0 ; Offset 0: Saved I w/interrupt state in parity - XCPT_BC equ 3*1 ; Offset 1: Saved BC register - XCPT_DE equ 3*2 ; Offset 2: Saved DE register - XCPT_IX equ 3*3 ; Offset 3: Saved IX register - XCPT_IY equ 3*4 ; Offset 4: Saved IY register - XCPT_SP equ 3*5 ; Offset 5: Offset to SP at time of interrupt - XCPT_HL equ 3*6 ; Offset 6: Saved HL register - XCPT_AF equ 3*7 ; Offset 7: Saved AF register - XCPT_PC equ 3*8 ; Offset 8: Offset to PC at time of interrupt .endif +XCPT_I equ 3*0 ; Offset 0: Saved I w/interrupt state in parity +XCPT_BC equ 3*1 ; Offset 1: Saved BC register +XCPT_DE equ 3*2 ; Offset 2: Saved DE register +XCPT_IX equ 3*3 ; Offset 3: Saved IX register +XCPT_IY equ 3*4 ; Offset 4: Saved IY register +XCPT_SP equ 3*5 ; Offset 5: Offset to SP at time of interrupt +XCPT_HL equ 3*6 ; Offset 6: Saved HL register +XCPT_AF equ 3*7 ; Offset 7: Saved AF register +XCPT_PC equ 3*8 ; Offset 8: Offset to PC at time of interrupt .endif ; Stack frame - FRAME_IY equ 3*0 ; Location of IY on the stack - FRAME_IX equ 3*1 ; Location of IX on the stack - FRAME_RET equ 3*2 ; Location of return address on the stack - FRAME_REGS equ 3*3 ; Location of reg save area on stack +FRAME_IY equ 3*0 ; Location of IY on the stack +FRAME_IX equ 3*1 ; Location of IX on the stack +FRAME_RET equ 3*2 ; Location of return address on the stack +FRAME_REGS equ 3*3 ; Location of reg save area on stack - SP_OFFSET equ 3*3 +SP_OFFSET equ 3*3 .endif ;************************************************************************** @@ -94,13 +94,13 @@ _ez80_saveusercontext: push ix ; Save IX and IY push iy - ld ix, #0 + ld ix, 0 add ix, sp ; IX = stack frame ; Fetch the address of the save area ld de, (ix + FRAME_REGS) ; DE = save area address - ld iy, #0 + ld iy, 0 add iy, de ; IY = save area address ; Then save the registers @@ -130,13 +130,13 @@ _ez80_saveusercontext: ; Save that stack pointer as it would be upon return in offset 5 - ld hl, #SP_OFFSET ; Value of stack pointer on return + ld hl, SP_OFFSET ; Value of stack pointer on return add hl, sp ld (iy + XCPT_SP), hl ; Index 5 SP ; HL is saved as the value 1 at offset 6 - ld hl, #1 + ld hl, 1 ld (iy + XCPT_HL), hl ; Index 2: HL on return (=1) ; AF is not preserved (offset 7) @@ -148,7 +148,7 @@ _ez80_saveusercontext: ; Return the value 0 - ld hl, #0 + ld hl, 0 pop iy pop ix diff --git a/arch/z80/src/ez80/ez80_schedulesigaction.c b/arch/z80/src/ez80/ez80_schedulesigaction.c index 47d7e50fe15..b01edd3bf02 100644 --- a/arch/z80/src/ez80/ez80_schedulesigaction.c +++ b/arch/z80/src/ez80/ez80_schedulesigaction.c @@ -102,7 +102,7 @@ static void ez80_sigsetup(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver, void up_schedule_sigaction(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver) { - sinfo("tcb=0x%p sigdeliver=0x%04x\n", tcb, (uint16_t)sigdeliver); + sinfo("tcb=0x%p sigdeliver=0x%06" PRIx32 "\n", tcb, (uint32_t)sigdeliver); /* Refuse to handle nested signal actions */ @@ -137,7 +137,7 @@ void up_schedule_sigaction(FAR struct tcb_s *tcb, sig_deliver_t sigdeliver) * disabled. */ - ez80_sigsetup(tcb, sigdeliver, IRQ_STATE()); + ez80_sigsetup(tcb, sigdeliver, (chipreg_t *)IRQ_STATE()); /* And make sure that the saved context in the TCB * is the same as the interrupt return context. diff --git a/arch/z80/src/ez80/ez80_serial.c b/arch/z80/src/ez80/ez80_serial.c index 1fbe8a41bb4..882c4372ea2 100644 --- a/arch/z80/src/ez80/ez80_serial.c +++ b/arch/z80/src/ez80/ez80_serial.c @@ -154,7 +154,7 @@ static uart_dev_t g_uart0port = }, &g_uart_ops, /* ops */ &g_uart0priv, /* priv */ - NULL, /* pollfds */ + { }, /* pollfds: all zero */ }; #endif @@ -201,7 +201,7 @@ static uart_dev_t g_uart1port = }, &g_uart_ops, /* ops */ &g_uart1priv, /* priv */ - NULL, /* pollfds */ + { }, /* pollfds */ }; #endif diff --git a/arch/z80/src/ez80/ez80_spi.c b/arch/z80/src/ez80/ez80_spi.c index f0229b9945d..aaedd87ce97 100644 --- a/arch/z80/src/ez80/ez80_spi.c +++ b/arch/z80/src/ez80/ez80_spi.c @@ -417,7 +417,7 @@ static uint32_t spi_send(FAR struct spi_dev_s *dev, uint32_t wd) return (uint32_t)0xff; } - spiinfo("cmd: %04x resp: %02x\n", wd, response); + spiinfo("cmd: %04" PRIx32 " resp: %02x\n", wd, response); return (uint32_t)response; } @@ -448,7 +448,7 @@ static void spi_exchange(FAR struct spi_dev_s *dev, size_t nwords) { FAR const uint8_t *inptr = (FAR const uint8_t *)txbuffer; - FAR uint8_t *outptr = (FAR const uint8_t *)rxbuffer; + FAR uint8_t *outptr = (FAR uint8_t *)rxbuffer; spiinfo("txbuffer: %p rxbuffer: %p nwords: %lu\n", txbuffer, rxbuffer, (unsigned long)nwords); diff --git a/arch/z80/src/ez80/ez80_startup.asm b/arch/z80/src/ez80/ez80_startup.asm index c4878e76ca1..5da9030019d 100644 --- a/arch/z80/src/ez80/ez80_startup.asm +++ b/arch/z80/src/ez80/ez80_startup.asm @@ -22,11 +22,11 @@ ; Constants ;************************************************************************** -EZ80_RAM_CTL EQU %b4 -EZ80_RAM_ADDR_U EQU %b5 +EZ80_RAM_CTL EQU 0b4h +EZ80_RAM_ADDR_U EQU 0b5h -EZ80_FLASH_ADDR_U EQU %f7 -EZ80_FLASH_CTRL EQU %f8 +EZ80_FLASH_ADDR_U EQU 0f7h +EZ80_FLASH_CTRL EQU 0f8h ;************************************************************************** ; Imported Symbols @@ -82,10 +82,13 @@ _ez80_startup: out0 (EZ80_RAM_CTL), a ; Position the IDLE task stack point at an offset of 1Kb in on-chip SRAM - ; On-chip SRAM resides at an offset of %00e000 from the RAM base address. + ; On-chip SRAM resides at an offset of 000e000h from the RAM base address. ; REVISIT: CONFIG_IDLETHREAD_STACKSIZE is not used! - ld sp, __RAM_ADDR_U_INIT_PARAM << 16 + %00e400 + ; The GNU assembler (2.36.1) cannot produce this relocation, although the + ; Z80 ELF format supports it. The instruction is instead hand assembled. + ;ld sp, __RAM_ADDR_U_INIT_PARAM << 16 + 000e400h + db 031h, 000h, 0e4h, __RAM_ADDR_U_INIT_PARAM ; Perform chip-specific initialization diff --git a/arch/z80/src/ez80/ez80f91_handlers.asm b/arch/z80/src/ez80/ez80f91_handlers.asm index 79cbc36f41e..3fec95b555b 100644 --- a/arch/z80/src/ez80/ez80f91_handlers.asm +++ b/arch/z80/src/ez80/ez80f91_handlers.asm @@ -43,14 +43,17 @@ EZ80_UNUSED EQU 64 ; Denotes an unused vector ; Define one interrupt handler +ifdef irqhandler +else irqhandler: macro vectno ; Save AF on the stack, set the interrupt number and jump to the ; common reset handling logic. - ; Offset 8: Return PC is already on the stack + ; Offset 8: Return PC is already on the stack push af ; Offset 7: AF (retaining flags) ld a, #vectno ; A = vector number - jp _ez80_irq_common ; Remaining RST handling is common + jp _ez80_irq_common ; Remaining RST handling is common endmac irqhandler +endif ;************************************************************************** ; Interrupt Vector Handlers @@ -64,7 +67,7 @@ irqhandler: macro vectno ;----------------- --- ----- ----- _ez80_handlers: irqhandler 0 ; EZ80_EMACRX_IRQ 0 0 0x040 - _handlersize equ $-_ez80_handlers +_handlersize equ $-_ez80_handlers irqhandler 1 ; EZ80_EMACTX_IRQ 1 1 0x044 irqhandler 2 ; EZ80_EMACSYS_IRQ 2 2 0x048 irqhandler 3 ; EZ80_PLL_IRQ 3 3 0x04c @@ -159,23 +162,29 @@ _ez80_initvectors: ; (24 bits) are required. A fourth byte is implemented for both ; programmability and expansion purposes." -$1: +L1: ld (iy), hl ; Store IRQ handler ld (iy+3), a ; Pad with zero to 4 bytes add hl, de ; Point to next handler - push de + push de ld de, 4 add iy, de ; Point to next entry in vector table pop de - djnz $1 ; Loop until all vectors have been written + djnz L1 ; Loop until all vectors have been written ; Select interrupt mode 2 - im 2 ; Interrupt mode 2 + im 2 ; Interrupt mode 2 ; Write the address of the vector table into the interrupt vector base - ld hl, _ez80_vectable >> 8 + ; The GNU assembler (2.36.1) cannot produce this relocation, although the + ; Z80 ELF format supports it. The instruction is instead hand assembled. + ;ld hl, _ez80_vectable >> 8 + db 021h + db _ez80_vectable >> 8 + db _ez80_vectable >> 16 + db 0 ld i, hl ret diff --git a/arch/z80/src/ez80/ez80f91_init.asm b/arch/z80/src/ez80/ez80f91_init.asm index dd4273ee1b7..2617bba53c1 100644 --- a/arch/z80/src/ez80/ez80f91_init.asm +++ b/arch/z80/src/ez80/ez80f91_init.asm @@ -28,35 +28,35 @@ ; Constants ;************************************************************************** -;PLL_DIV_L EQU %5C -;PLL_DIV_H EQU %5D -;PLL_CTL0 EQU %5E -;PLL_CTL1 EQU %5F +;PLL_DIV_L EQU 05Ch +;PLL_DIV_H EQU 05Dh +;PLL_CTL0 EQU 05Eh +;PLL_CTL1 EQU 05Fh OSC EQU 0 PLL EQU 1 RTC EQU 2 -CLK_MUX_OSC EQU %00 -CLK_MUX_PLL EQU %01 -CLK_MUX_RTC EQU %02 +CLK_MUX_OSC EQU 000h +CLK_MUX_PLL EQU 001h +CLK_MUX_RTC EQU 002h -CHRP_CTL_0 EQU %00 -CHRP_CTL_1 EQU %40 -CHRP_CTL_2 EQU %80 -CHRP_CTL_3 EQU %C0 +CHRP_CTL_0 EQU 000h +CHRP_CTL_1 EQU 040h +CHRP_CTL_2 EQU 080h +CHRP_CTL_3 EQU 0C0h -LDS_CTL_0 EQU %00 -LDS_CTL_1 EQU %04 -LDS_CTL_2 EQU %08 -LDS_CTL_3 EQU %0C +LDS_CTL_0 EQU 000h +LDS_CTL_1 EQU 004h +LDS_CTL_2 EQU 008h +LDS_CTL_3 EQU 00Ch -LCK_STATUS EQU %20 -INT_LOCK EQU %10 -INT_UNLOCK EQU %08 -INT_LOCK_EN EQU %04 -INT_UNLOCK_EN EQU %02 -PLL_ENABLE EQU %01 +LCK_STATUS EQU 020h +INT_LOCK EQU 010h +INT_UNLOCK EQU 008h +INT_LOCK_EN EQU 004h +INT_UNLOCK_EN EQU 002h +PLL_ENABLE EQU 001h ;************************************************************************** ; Global symbols used @@ -105,12 +105,12 @@ PLL_ENABLE EQU %01 _ez80_init: ; Disable internal peripheral interrupt sources - ld a, %ff + ld a, 0ffh out0 (PA_DDR), a ; GPIO out0 (PB_DDR), a out0 (PC_DDR), a out0 (PD_DDR), a - ld a, %00 + ld a, 000h out0 (PA_ALT1), a out0 (PB_ALT1), a out0 (PC_ALT1), a @@ -129,10 +129,10 @@ _ez80_init: out0 (I2C_CTL), a ; I2C out0 (EMAC_IEN), a ; EMAC out0 (FLASH_IRQ), a ; Flash - ld a, %04 + ld a, 004h out0 (SPI_CTL), a ; SPI in0 a, (RTC_CTRL) ; RTC, - and a, %be + and a, 0beh out0 (RTC_CTRL), a ; Configure external memory/io @@ -196,7 +196,7 @@ _ez80_initsysclk: ; Set charge pump and lock criteria ld a, __PLL_CTL0_INIT_PARAM - and a, %CC ; mask off reserved and clock source bits + and a, 0CCh ; mask off reserved and clock source bits out0 (PLL_CTL0), a ; Enable PLL diff --git a/arch/z80/src/ez80/ez80f92_init.asm b/arch/z80/src/ez80/ez80f92_init.asm index 1e077097d3e..5477ae491b2 100644 --- a/arch/z80/src/ez80/ez80f92_init.asm +++ b/arch/z80/src/ez80/ez80f92_init.asm @@ -67,12 +67,12 @@ _ez80_init: ; Disable internal peripheral interrupt sources - ld a, %ff + ld a, 0ffh out0 (PB_DDR), a ; GPIO out0 (PC_DDR), a out0 (PD_DDR), a - ld a, %00 + ld a, 000h out0 (PB_ALT1), a out0 (PC_ALT1), a out0 (PD_ALT1), a @@ -95,11 +95,11 @@ _ez80_init: out0 (FLASH_IRQ), a ; Flash - ld a, %04 + ld a, 004h out0 (SPI_CTL), a ; SPI in0 a, (RTC_CTRL) ; RTC, - and a, %be + and a, 0beh out0 (RTC_CTRL), a ; Configure external memory/io diff --git a/include/nuttx/compiler.h b/include/nuttx/compiler.h index 5cc45930e78..988a3d032a8 100644 --- a/include/nuttx/compiler.h +++ b/include/nuttx/compiler.h @@ -164,6 +164,13 @@ # define DSEG # define CODE +/* Define these here and allow specific architectures to override as needed */ + +# define CONFIG_HAVE_LONG_LONG 1 +# define CONFIG_HAVE_FLOAT 1 +# define CONFIG_HAVE_DOUBLE 1 +# define CONFIG_HAVE_LONG_DOUBLE 1 + /* Handle cases where sizeof(int) is 16-bits, sizeof(long) is 32-bits, and * pointers are 16-bits. */ @@ -252,6 +259,30 @@ # define CONFIG_PTR_IS_NOT_INT 1 # endif +#elif defined(_EZ80ACCLAIM) + +/* No I-space access qualifiers */ + +# define IOBJ +# define IPTR + +/* Select the large, 24-bit addressing model */ + +# undef CONFIG_SMALL_MEMORY + +/* int is 24-bits, long is 32-bits */ + +# define CONFIG_LONG_IS_NOT_INT 1 + +/* pointers are 24-bits too */ + +# undef CONFIG_PTR_IS_NOT_INT + +/* the ez80 stdlib doesn't support doubles */ + +# undef CONFIG_HAVE_DOUBLE +# undef CONFIG_HAVE_LONG_DOUBLE + #else /* No I-space access qualifiers */ @@ -270,6 +301,7 @@ /* Pointers and int are the same size (32-bits) */ # undef CONFIG_PTR_IS_NOT_INT + #endif /* ISO C11 supports anonymous (unnamed) structures and unions, added in @@ -294,11 +326,6 @@ # define CONFIG_HAVE_ANONYMOUS_UNION 1 # endif -# define CONFIG_HAVE_LONG_LONG 1 -# define CONFIG_HAVE_FLOAT 1 -# define CONFIG_HAVE_DOUBLE 1 -# define CONFIG_HAVE_LONG_DOUBLE 1 - /* Indicate that a local variable is not used */ # define UNUSED(a) ((void)(1 || (a))) diff --git a/libs/libc/libc.csv b/libs/libc/libc.csv index 8be028375f5..6166f75fd12 100644 --- a/libs/libc/libc.csv +++ b/libs/libc/libc.csv @@ -194,7 +194,7 @@ "strrchr","string.h","","FAR char *","FAR const char *","int" "strspn","string.h","","size_t","FAR const char *","FAR const char *" "strstr","string.h","","FAR char","FAR const char *","FAR const char *" -"strtod","stdlib.h","","double","FAR const char *","FAR char **" +"strtod","stdlib.h","defined(CONFIG_HAVE_DOUBLE)","double","FAR const char *","FAR char **" "strtok","string.h","","FAR char *","FAR char *","FAR const char *" "strtok_r","string.h","","FAR char *","FAR char *","FAR const char *","FAR char **" "strtol","stdlib.h","","long","FAR const char *","FAR char **","int" From cd6c29a126af068e65adf77a845ca81eb24e2cea Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Tue, 27 Apr 2021 18:06:45 -0300 Subject: [PATCH 006/739] risc-v/esp32c3: Remove redundant dependency --- arch/risc-v/src/esp32c3/Kconfig | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/risc-v/src/esp32c3/Kconfig b/arch/risc-v/src/esp32c3/Kconfig index 105eb8d6915..0ec2f14365f 100644 --- a/arch/risc-v/src/esp32c3/Kconfig +++ b/arch/risc-v/src/esp32c3/Kconfig @@ -10,7 +10,6 @@ comment "ESP32-C3 Configuration Options" choice prompt "ESP32-C3 Chip Selection" default ARCH_CHIP_ESP32C3WROOM02 - depends on ARCH_CHIP_ESP32C3 config ARCH_CHIP_ESP32C3X bool "ESP32-C3" From 1e45a9329bead046b5f78cc67a3dbeae5a0eed8e Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Tue, 27 Apr 2021 18:07:57 -0300 Subject: [PATCH 007/739] risc-v/esp32c3: Remove inconsistent usage of comment command --- arch/risc-v/src/esp32c3/Kconfig | 3 --- 1 file changed, 3 deletions(-) diff --git a/arch/risc-v/src/esp32c3/Kconfig b/arch/risc-v/src/esp32c3/Kconfig index 0ec2f14365f..3ee1f9754e5 100644 --- a/arch/risc-v/src/esp32c3/Kconfig +++ b/arch/risc-v/src/esp32c3/Kconfig @@ -40,9 +40,6 @@ config ARCH_CHIP_ESP32C3WROOM02 endchoice # ESP32-C3 Chip Selection -comment "Selected ESP32-C3 chip without embedded Flash, an external Flash memory is required." - depends on ARCH_CHIP_ESP32C3X - config ESP32C3_SINGLE_CPU bool default n From 9df217956249849060c4abe5ab9ada495661190a Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Tue, 27 Apr 2021 18:09:18 -0300 Subject: [PATCH 008/739] risc-v/esp32c3: Uniformize Kconfig alignment and styling --- arch/risc-v/src/esp32c3/Kconfig | 78 ++++++++++++++++----------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/arch/risc-v/src/esp32c3/Kconfig b/arch/risc-v/src/esp32c3/Kconfig index 3ee1f9754e5..aa0881aed77 100644 --- a/arch/risc-v/src/esp32c3/Kconfig +++ b/arch/risc-v/src/esp32c3/Kconfig @@ -73,7 +73,7 @@ config ESP32C3_FLASH_16M config ESP32C3_FLASH_DETECT bool "Auto-detect FLASH size (to be used with master esptool)" default n - help + ---help--- Auto detect flash size when flashing. Current released version of esptool doesn't support auto-detecting flash size. Use latest master from https://github.com/espressif/esptool. @@ -81,66 +81,66 @@ config ESP32C3_FLASH_DETECT choice ESP32C3_FLASH_MODE prompt "SPI FLASH mode" default ESP32C3_FLASH_MODE_DIO - help + ---help--- These options control how many I/O pins are used for communication with the attached SPI flash chip. The option selected here is then used by esptool when flashing. - config ESP32C3_FLASH_MODE_DIO - bool "Dual IO (DIO)" +config ESP32C3_FLASH_MODE_DIO + bool "Dual IO (DIO)" - config ESP32C3_FLASH_MODE_DOUT - bool "Dual Output (DOUT)" +config ESP32C3_FLASH_MODE_DOUT + bool "Dual Output (DOUT)" - config ESP32C3_FLASH_MODE_QIO - bool "Quad IO (QIO)" +config ESP32C3_FLASH_MODE_QIO + bool "Quad IO (QIO)" - config ESP32C3_FLASH_MODE_QOUT - bool "Quad Output (QOUT)" +config ESP32C3_FLASH_MODE_QOUT + bool "Quad Output (QOUT)" endchoice # ESP32C3_FLASH_MODE choice ESP32C3_FLASH_FREQ prompt "SPI FLASH frequency" default ESP32C3_FLASH_FREQ_40M - help + ---help--- SPI FLASH frequency - config ESP32C3_FLASH_FREQ_80M - bool "80 MHz" +config ESP32C3_FLASH_FREQ_80M + bool "80 MHz" - config ESP32C3_FLASH_FREQ_40M - bool "40 MHz" +config ESP32C3_FLASH_FREQ_40M + bool "40 MHz" - config ESP32C3_FLASH_FREQ_26M - bool "26 MHz" +config ESP32C3_FLASH_FREQ_26M + bool "26 MHz" - config ESP32C3_FLASH_FREQ_20M - bool "20 MHz" +config ESP32C3_FLASH_FREQ_20M + bool "20 MHz" endchoice # ESP32C3_FLASH_FREQ choice ESP32C3_CPU_FREQ prompt "CPU frequency" default ESP32C3_CPU_FREQ_160 - help + ---help--- CPU frequency to be set on application startup. config ESP32C3_CPU_FREQ_40 bool "40 MHz" - help - Set the CPU to 40 MHz. This frequency is obtained from the XTAL. + ---help--- + Set the CPU to 40 MHz. This frequency is obtained from the XTAL. config ESP32C3_CPU_FREQ_80 bool "80 MHz" - help - Set the CPU to 80 MHz. This frequency is obtained from the 480 MHz PLL. + ---help--- + Set the CPU to 80 MHz. This frequency is obtained from the 480 MHz PLL. config ESP32C3_CPU_FREQ_160 bool "160 MHz" - help - Set the CPU to 160 MHz. This frequency is obtained from the 480 MHz PLL. + ---help--- + Set the CPU to 160 MHz. This frequency is obtained from the 480 MHz PLL. -endchoice # CPU frequency +endchoice # ESP32C3_CPU_FREQ config ESP32C3_CPU_FREQ_MHZ int @@ -452,20 +452,20 @@ config ESP32C3_WLAN_PKTBUF_NUM config ESP32C3_WIFI_CONNECT_TIMEOUT int "Connect timeout by second" default 10 - help + ---help--- Max waiting time of connecting to AP. config ESP32C3_WIFI_SCAN_RESULT_SIZE int "Scan result buffer" default 4096 - help + ---help--- Maximum scan result buffer size. config ESP32C3_WIFI_SAVE_PARAM bool "Save Wi-Fi Parameters" default n depends on !DISABLE_MOUNTPOINT - help + ---help--- If you enable this option, Wi-Fi adapter parameters will be saved into the file system instead of computing them each time. @@ -482,7 +482,7 @@ config ESP32C3_WIFI_FS_MOUNTPT string "Save Wi-Fi Parameters" default "/mnt/esp/wifi" depends on ESP32C3_WIFI_SAVE_PARAM - help + ---help--- Mount point of Wi-Fi storage file system. config ESP32C3_WIFI_STA_DISCONNECT_PM @@ -500,35 +500,35 @@ menu "SPI Flash configuration" config ESP32C3_MTD_OFFSET hex "MTD base address in SPI Flash" default 0x180000 - help + ---help--- MTD base address in SPI Flash. config ESP32C3_MTD_SIZE hex "MTD size in SPI Flash" default 0x100000 - help + ---help--- MTD size in SPI Flash. config ESP32C3_SPIFLASH_DEBUG bool "Debug SPI Flash" default n depends on DEBUG_FS_INFO - help + ---help--- If this option is enabled, SPI Flash driver read and write functions will output input parameters and return values (if applicable). endmenu # ESP32C3_SPIFLASH menu "Partition Configuration" - depends on ESP32C3_PARTITION + depends on ESP32C3_PARTITION config ESP32C3_PARTITION_OFFSET - hex "Partition offset" - default "0x8000" + hex "Partition offset" + default "0x8000" config ESP32C3_PARTITION_MOUNT - string "Partition mount point" - default "/dev/esp/partition/" + string "Partition mount point" + default "/dev/esp/partition/" endmenu # ESP32C3_PARTITION From 016652f7d7546ce7a2240cb55f6ac2abdf3a26bc Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Tue, 27 Apr 2021 18:30:42 -0300 Subject: [PATCH 009/739] risc-v/esp32c3: Change ESP32C3_RT_TIMER_TASK_PRIORITY comment into help text --- arch/risc-v/src/esp32c3/Kconfig | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/arch/risc-v/src/esp32c3/Kconfig b/arch/risc-v/src/esp32c3/Kconfig index aa0881aed77..8ddec494316 100644 --- a/arch/risc-v/src/esp32c3/Kconfig +++ b/arch/risc-v/src/esp32c3/Kconfig @@ -382,7 +382,10 @@ config ESP32C3_RT_TIMER_TASK_NAME config ESP32C3_RT_TIMER_TASK_PRIORITY int "Timer task priority" - default 223 # Lower than high priority workqueue + default 223 + ---help--- + Priority level of the RT Timer task. + Must be lower than the SCHED_HPWORKPRIORITY. config ESP32C3_RT_TIMER_TASK_STACK_SIZE int "Timer task stack size" From 4d3fa83d7acf1b35c0798ed5526b8fde75a14073 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Tue, 27 Apr 2021 18:15:12 -0300 Subject: [PATCH 010/739] xtensa/esp32: Remove redundant dependency --- arch/xtensa/src/esp32/Kconfig | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/xtensa/src/esp32/Kconfig b/arch/xtensa/src/esp32/Kconfig index cb76b0dbbec..69faac03a75 100644 --- a/arch/xtensa/src/esp32/Kconfig +++ b/arch/xtensa/src/esp32/Kconfig @@ -10,7 +10,6 @@ comment "ESP32 Configuration Options" choice prompt "ESP32 Chip Selection" default ARCH_CHIP_ESP32WROVER - depends on ARCH_CHIP_ESP32 config ARCH_CHIP_ESP32S0WD bool "ESP32-S0WD" From 03c8e2d5c759ebc4ad7d4bf262a3523428fec2a3 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Tue, 27 Apr 2021 18:16:30 -0300 Subject: [PATCH 011/739] xtensa/esp32: Remove inconsistent usage of comment command --- arch/xtensa/src/esp32/Kconfig | 3 --- 1 file changed, 3 deletions(-) diff --git a/arch/xtensa/src/esp32/Kconfig b/arch/xtensa/src/esp32/Kconfig index 69faac03a75..5097acf5196 100644 --- a/arch/xtensa/src/esp32/Kconfig +++ b/arch/xtensa/src/esp32/Kconfig @@ -83,9 +83,6 @@ config ARCH_CHIP_ESP32SOLO1 endchoice # ESP32 Chip Selection -comment "Selected ESP32 chip without embedded Flash, an external Flash memory is required." - depends on ARCH_CHIP_ESP32S0WD || ARCH_CHIP_ESP32D0WD - config ESP32_SINGLE_CPU bool default n From 95a76adc90ec2629e22c49534ab291ee1c5b4bb3 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Tue, 27 Apr 2021 18:17:54 -0300 Subject: [PATCH 012/739] xtensa/esp32: Uniformize Kconfig alignment and styling --- arch/xtensa/src/esp32/Kconfig | 160 ++++++++++++++++++---------------- 1 file changed, 85 insertions(+), 75 deletions(-) diff --git a/arch/xtensa/src/esp32/Kconfig b/arch/xtensa/src/esp32/Kconfig index 5097acf5196..6723577e40b 100644 --- a/arch/xtensa/src/esp32/Kconfig +++ b/arch/xtensa/src/esp32/Kconfig @@ -110,7 +110,7 @@ config ESP32_FLASH_16M config ESP32_FLASH_DETECT bool "Auto-detect FLASH size" default y - help + ---help--- Auto detect flash size when flashing. config ESP32_PSRAM_8M @@ -138,57 +138,60 @@ config ESP32_ESP32DXWDXX choice ESP32_FLASH_MODE prompt "SPI FLASH mode" default ESP32_FLASH_MODE_DIO - help + ---help--- These options control how many I/O pins are used for communication with the attached SPI flash chip. The option selected here is then used by esptool when flashing. - config ESP32_FLASH_MODE_DIO - bool "Dual IO (DIO)" +config ESP32_FLASH_MODE_DIO + bool "Dual IO (DIO)" - config ESP32_FLASH_MODE_DOUT - bool "Dual Output (DOUT)" +config ESP32_FLASH_MODE_DOUT + bool "Dual Output (DOUT)" - config ESP32_FLASH_MODE_QIO - bool "Quad IO (QIO)" +config ESP32_FLASH_MODE_QIO + bool "Quad IO (QIO)" - config ESP32_FLASH_MODE_QOUT - bool "Quad Output (QOUT)" +config ESP32_FLASH_MODE_QOUT + bool "Quad Output (QOUT)" endchoice # ESP32_FLASH_MODE choice ESP32_FLASH_FREQ prompt "SPI FLASH frequency" default ESP32_FLASH_FREQ_40M - help + ---help--- SPI FLASH frequency - - config ESP32_FLASH_FREQ_80M - bool "80 MHz" - config ESP32_FLASH_FREQ_40M - bool "40 MHz" +config ESP32_FLASH_FREQ_80M + bool "80 MHz" - config ESP32_FLASH_FREQ_26M - bool "26 MHz" +config ESP32_FLASH_FREQ_40M + bool "40 MHz" - config ESP32_FLASH_FREQ_20M - bool "20 MHz" +config ESP32_FLASH_FREQ_26M + bool "26 MHz" + +config ESP32_FLASH_FREQ_20M + bool "20 MHz" endchoice # ESP32_FLASH_FREQ choice ESP32_DEFAULT_CPU_FREQ prompt "CPU frequency" default ESP32_DEFAULT_CPU_FREQ_240 - help + ---help--- CPU frequency to be set on application startup. - config ESP32_DEFAULT_CPU_FREQ_80 - bool "80 MHz" - config ESP32_DEFAULT_CPU_FREQ_160 - bool "160 MHz" - config ESP32_DEFAULT_CPU_FREQ_240 - bool "240 MHz" -endchoice # CPU frequency +config ESP32_DEFAULT_CPU_FREQ_80 + bool "80 MHz" + +config ESP32_DEFAULT_CPU_FREQ_160 + bool "160 MHz" + +config ESP32_DEFAULT_CPU_FREQ_240 + bool "240 MHz" + +endchoice # ESP32_DEFAULT_CPU_FREQ config ESP32_DEFAULT_CPU_FREQ_MHZ int @@ -357,14 +360,16 @@ if ESP32_SPIRAM && SMP choice prompt "How does SPIRAM share cache?" default ESP32_MEMMAP_SPIRAM_CACHE_EVENODD - help + ---help--- Selects the cache mode to CPU access the external memory. - config ESP32_MEMMAP_SPIRAM_CACHE_EVENODD - bool "Pro CPU uses even 32 byte ranges, App uses odd ones" - config ESP32_MEMMAP_SPIRAM_CACHE_LOWHIGH - bool "Pro CPU uses low 2MB ranges, App uses high ones" -endchoice # CPU frequency +config ESP32_MEMMAP_SPIRAM_CACHE_EVENODD + bool "Pro CPU uses even 32 byte ranges, App uses odd ones" + +config ESP32_MEMMAP_SPIRAM_CACHE_LOWHIGH + bool "Pro CPU uses low 2MB ranges, App uses high ones" + +endchoice # How does SPIRAM share cache? endif @@ -542,6 +547,7 @@ config ESP32_UART1_RXPIN range 0 39 if SERIAL_IFLOWCONTROL || SERIAL_OFLOWCONTROL + config ESP32_UART1_RTSPIN int "UART1 RTS Pin" default 11 @@ -553,6 +559,7 @@ config ESP32_UART1_CTSPIN range 0 39 endif # SERIAL_IFLOWCONTROL || SERIAL_OFLOWCONTROL + endif # ESP32_UART1 if ESP32_UART2 @@ -568,6 +575,7 @@ config ESP32_UART2_RXPIN range 0 39 if SERIAL_IFLOWCONTROL || SERIAL_OFLOWCONTROL + config ESP32_UART2_RTSPIN int "UART2 RTS Pin" default 7 @@ -579,6 +587,7 @@ config ESP32_UART2_CTSPIN range 0 39 endif # SERIAL_IFLOWCONTROL || SERIAL_OFLOWCONTROL + endif # ESP32_UART2 endmenu # UART configuration @@ -715,20 +724,20 @@ menu "SPI Flash configuration" config ESP32_MTD_OFFSET hex "MTD base address in SPI Flash" default 0x180000 - help + ---help--- MTD base address in SPI Flash. config ESP32_MTD_SIZE hex "MTD size in SPI Flash" default 0x100000 - help + ---help--- MTD size in SPI Flash. config ESP32_SPIFLASH_DEBUG bool "Debug SPI Flash" default n depends on DEBUG_FS_INFO - help + ---help--- Enable this option, read and write of SPI Flash will show input arguments and result. @@ -749,7 +758,8 @@ config ESP32_SPIRAM_TYPE_ESPPSRAM32 config ESP32_SPIRAM_TYPE_ESPPSRAM64 bool "ESP-PSRAM64 or LY68L6400" -endchoice #ESP32_SPIRAM_TYPE + +endchoice # ESP32_SPIRAM_TYPE config ESP32_SPIRAM_SIZE int @@ -761,8 +771,8 @@ config ESP32_SPIRAM_SIZE choice ESP32_SPIRAM_SPEED prompt "Set RAM clock speed" default ESP32_SPIRAM_SPEED_40M - help - Select the speed for the SPI RAM chip. + ---help--- + Select the speed for the SPI RAM chip. config ESP32_SPIRAM_SPEED_40M bool "40MHz clock speed" @@ -776,39 +786,39 @@ config ESP32_SPIRAM_BOOT_INIT bool "Initialize SPI RAM during startup" depends on ESP32_SPIRAM default "y" - help - If this is enabled, the SPI RAM will be enabled during initial - boot. Unless you have specific requirements, you'll want to leave - this enabled so memory allocated during boot-up can also be - placed in SPI RAM. + ---help--- + If this is enabled, the SPI RAM will be enabled during initial + boot. Unless you have specific requirements, you'll want to leave + this enabled so memory allocated during boot-up can also be + placed in SPI RAM. config ESP32_SPIRAM_IGNORE_NOTFOUND bool "Ignore PSRAM when not found" default "n" depends on ESP32_SPIRAM_BOOT_INIT && !BOOT_SDRAM_DATA - help - Normally, if psram initialization is enabled during compile time - but not found at runtime, it is seen as an error making the CPU - panic. If this is enabled, booting will complete but no PSRAM - will be available. + ---help--- + Normally, if psram initialization is enabled during compile time + but not found at runtime, it is seen as an error making the CPU + panic. If this is enabled, booting will complete but no PSRAM + will be available. config ESP32_SPIRAM_2T_MODE bool "Enable SPI PSRAM 2T mode" depends on ESP32_SPIRAM default "n" - help - Enable this option to fix single bit errors inside 64Mbit PSRAM. - Some 64Mbit PSRAM chips have a hardware issue in the RAM which - causes bit errors at multiple fixed bit positions. - Note: If this option is enabled, the 64Mbit PSRAM chip will appear - to be 32Mbit in size. - Applications will not be affected unless the use the esp_himem - APIs, which are not supported in 2T mode. + ---help--- + Enable this option to fix single bit errors inside 64Mbit PSRAM. + Some 64Mbit PSRAM chips have a hardware issue in the RAM which + causes bit errors at multiple fixed bit positions. + Note: If this option is enabled, the 64Mbit PSRAM chip will appear + to be 32Mbit in size. + Applications will not be affected unless the use the esp_himem + APIs, which are not supported in 2T mode. config ESP32_SPIRAM_BANKSWITCH_ENABLE bool "Enable bank switching for >4MiB external RAM" default n - help + ---help--- The ESP32 only supports 4MiB of external RAM in its address space. The hardware does support larger memories, but these have to be bank-switched in and out of this address space. @@ -827,7 +837,7 @@ config SPIRAM_BANKSWITCH_RESERVE depends on ESP32_SPIRAM_BANKSWITCH_ENABLE default 8 range 1 62 - help + ---help--- Select the amount of banks reserved for bank switching. Note that the amount of RAM allocatable with malloc will decrease by 32K for each page reserved here. @@ -891,15 +901,15 @@ config ESP32_WIFI_STATION_SOFTAP_COEXISTENCE endchoice # ESP32 WiFi mode config ESP32_WIFI_STATIC_RXBUF_NUM - int "WiFi static RX buffer number" + int "WiFi static RX buffer number" default 10 config ESP32_WIFI_DYNAMIC_RXBUF_NUM - int "WiFi dynamic RX buffer number" + int "WiFi dynamic RX buffer number" default 32 config ESP32_WIFI_DYNAMIC_TXBUF_NUM - int "WiFi dynamic TX buffer number" + int "WiFi dynamic TX buffer number" default 32 config ESP32_WIFI_TX_AMPDU @@ -911,7 +921,7 @@ config ESP32_WIFI_RX_AMPDU default y config ESP32_WIFI_RXBA_AMPDU_WZ - int "WiFi RX BA AMPDU windown size" + int "WiFi RX BA AMPDU windown size" default 6 config ESP32_WLAN_PKTBUF_NUM @@ -921,36 +931,36 @@ config ESP32_WLAN_PKTBUF_NUM config ESP32_WIFI_CONNECT_TIMEOUT int "Connect timeout by second" default 10 - help + ---help--- Max waiting time of connecting to AP. config ESP32_WIFI_SCAN_RESULT_SIZE int "Scan result buffer" default 4096 - help + ---help--- Maximum scan result buffer size. config ESP32_WIFI_SAVE_PARAM bool "Save WiFi Parameters" default n - help + ---help--- If you enable this option, WiFi adapter parameters will be saved into the file system instead of computing them each time. These parameters mainly contains: - - SSID - - Password - - BSSID - - PMK(compute when connecting) - - Author mode - - MAC address - - WiFi hardware configuration parameters + - SSID + - Password + - BSSID + - PMK(compute when connecting) + - Author mode + - MAC address + - WiFi hardware configuration parameters config ESP32_WIFI_FS_MOUNTPT string "Save WiFi Parameters" default "/mnt/esp/wifi" depends on ESP32_WIFI_SAVE_PARAM - help + ---help--- Mount point of WiFi storage file system. config ESP32_WIFI_STA_DISCONNECT_PM From 2b179c5ab35d26dcaf4ef8dff7fe745a169f1da2 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Tue, 27 Apr 2021 18:18:15 -0300 Subject: [PATCH 013/739] xtensa/esp32: Add missing default value for CONFIG_ESP32_GPIO_IRQ --- arch/xtensa/src/esp32/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/xtensa/src/esp32/Kconfig b/arch/xtensa/src/esp32/Kconfig index 6723577e40b..fef0c6b9000 100644 --- a/arch/xtensa/src/esp32/Kconfig +++ b/arch/xtensa/src/esp32/Kconfig @@ -502,6 +502,7 @@ endmenu # Memory Configuration config ESP32_GPIO_IRQ bool "GPIO pin interrupts" + default n ---help--- Enable support for interrupting GPIO pins From 91955be0e1629d80c2bfa0573b7624c1383ef9c2 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Tue, 27 Apr 2021 18:35:24 -0300 Subject: [PATCH 014/739] xtensa/esp32: Change ESP32_RT_TIMER_TASK_PRIORITY comment into help text --- arch/xtensa/src/esp32/Kconfig | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/arch/xtensa/src/esp32/Kconfig b/arch/xtensa/src/esp32/Kconfig index fef0c6b9000..a0a5f396aed 100644 --- a/arch/xtensa/src/esp32/Kconfig +++ b/arch/xtensa/src/esp32/Kconfig @@ -982,7 +982,10 @@ config ESP32_RT_TIMER_TASK_NAME config ESP32_RT_TIMER_TASK_PRIORITY int "Timer task priority" - default 223 # Lower than high priority workqueue + default 223 + ---help--- + Priority level of the RT Timer task. + Must be lower than the SCHED_HPWORKPRIORITY. config ESP32_RT_TIMER_TASK_STACK_SIZE int "Timer task stack size" From 7caebdd50fcb13cd865579c044297e9865f191c5 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Tue, 27 Apr 2021 10:48:00 -0300 Subject: [PATCH 015/739] arch/risc-v: Fix stack alignment according to calling convention The RISC-V Integer Calling Convention states that the stack pointer shall always be aligned to a 128-bit boundary upon procedure entry, both for RV32* and RV64* ISAs (exception to the RV32E ISA, which must follow a specific convention) --- arch/risc-v/src/bl602/bl602_head.S | 8 +++--- arch/risc-v/src/c906/c906_head.S | 8 +++--- arch/risc-v/src/common/riscv_createstack.c | 27 +++++++-------------- arch/risc-v/src/common/riscv_stackframe.c | 13 +++------- arch/risc-v/src/common/riscv_usestack.c | 26 +++++++------------- arch/risc-v/src/esp32c3/esp32c3_interrupt.S | 8 +++--- arch/risc-v/src/fe310/fe310_head.S | 8 +++--- arch/risc-v/src/k210/k210_head.S | 12 ++++----- arch/risc-v/src/litex/litex_head.S | 8 +++--- arch/risc-v/src/rv32im/riscv_vfork.c | 4 --- 10 files changed, 47 insertions(+), 75 deletions(-) diff --git a/arch/risc-v/src/bl602/bl602_head.S b/arch/risc-v/src/bl602/bl602_head.S index 040ac235cba..a1e870e36ed 100644 --- a/arch/risc-v/src/bl602/bl602_head.S +++ b/arch/risc-v/src/bl602/bl602_head.S @@ -150,16 +150,16 @@ exception_common: * Name: g_intstackalloc and g_intstacktop ************************************************************************************/ -#if CONFIG_ARCH_INTERRUPTSTACK > 3 +#if CONFIG_ARCH_INTERRUPTSTACK > 15 .bss - .align 4 + .balign 16 .global g_intstackalloc .global g_intstacktop .type g_intstackalloc, object .type g_intstacktop, object g_intstackalloc: - .skip (CONFIG_ARCH_INTERRUPTSTACK & ~3) + .skip ((CONFIG_ARCH_INTERRUPTSTACK + 8) & ~15) g_intstacktop: .size g_intstacktop, 0 - .size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~3) + .size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~15) #endif diff --git a/arch/risc-v/src/c906/c906_head.S b/arch/risc-v/src/c906/c906_head.S index e0db739248c..f183286b72e 100644 --- a/arch/risc-v/src/c906/c906_head.S +++ b/arch/risc-v/src/c906/c906_head.S @@ -264,16 +264,16 @@ exception_common: * Name: g_intstackalloc and g_intstacktop ************************************************************************************/ -#if CONFIG_ARCH_INTERRUPTSTACK > 7 +#if CONFIG_ARCH_INTERRUPTSTACK > 15 .bss - .align 8 + .balign 16 .global g_intstackalloc .global g_intstacktop .type g_intstackalloc, object .type g_intstacktop, object g_intstackalloc: - .skip ((CONFIG_ARCH_INTERRUPTSTACK + 4) & ~7) + .skip ((CONFIG_ARCH_INTERRUPTSTACK + 8) & ~15) g_intstacktop: .size g_intstacktop, 0 - .size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~7) + .size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~15) #endif diff --git a/arch/risc-v/src/common/riscv_createstack.c b/arch/risc-v/src/common/riscv_createstack.c index 2086b857cf8..f41919bad71 100644 --- a/arch/risc-v/src/common/riscv_createstack.c +++ b/arch/risc-v/src/common/riscv_createstack.c @@ -42,20 +42,13 @@ * Pre-processor Macros ****************************************************************************/ -/* RISC-V requires at least a 4-byte stack alignment. - * For floating point use, however, the stack must be aligned to 8-byte - * addresses. - */ +/* RISC-V requires a 16-byte stack alignment. */ -#if defined(CONFIG_LIBC_FLOATINGPOINT) || defined (CONFIG_ARCH_RV64GC) -# define STACK_ALIGNMENT 8 -#else -# define STACK_ALIGNMENT 4 -#endif +#define STACK_ALIGNMENT 16 /* Stack alignment macros */ -#define STACK_ALIGN_MASK (STACK_ALIGNMENT-1) +#define STACK_ALIGN_MASK (STACK_ALIGNMENT - 1) #define STACK_ALIGN_DOWN(a) ((a) & ~STACK_ALIGN_MASK) #define STACK_ALIGN_UP(a) (((a) + STACK_ALIGN_MASK) & ~STACK_ALIGN_MASK) @@ -193,18 +186,16 @@ int up_create_stack(FAR struct tcb_s *tcb, size_t stack_size, uint8_t ttype) uintptr_t top_of_stack; size_t size_of_stack; - /* RISCV uses a push-down stack: the stack grows toward lower - * addresses in memory. The stack pointer register points to the - * lowest, valid working address (the "top" of the stack). Items on - * the stack are referenced as positive word offsets from sp. + /* RISC-V uses a push-down stack: the stack grows toward lower + * addresses in memory. The stack pointer register points to the + * lowest, valid working address (the "top" of the stack). Items on + * the stack are referenced as positive word offsets from SP. */ top_of_stack = (uintptr_t)tcb->stack_alloc_ptr + stack_size; - /* The RISC-V stack must be aligned at word (4 byte) boundaries; for - * floating point use, the stack must be aligned to 8-byte addresses. - * If necessary top_of_stack must be rounded down to the next - * boundary to meet these alignment requirements. + /* The RISC-V stack must be aligned at 128-bit (16-byte) boundaries. + * If necessary top_of_stack must be rounded down to the next boundary. */ top_of_stack = STACK_ALIGN_DOWN(top_of_stack); diff --git a/arch/risc-v/src/common/riscv_stackframe.c b/arch/risc-v/src/common/riscv_stackframe.c index 5b4b7f3894d..ec6023f7007 100644 --- a/arch/risc-v/src/common/riscv_stackframe.c +++ b/arch/risc-v/src/common/riscv_stackframe.c @@ -37,20 +37,13 @@ * Pre-processor Macros ****************************************************************************/ -/* RISC-V requires at least a 4-byte stack alignment. - * For floating point use, however, the stack must be aligned to 8-byte - * addresses. - */ +/* RISC-V requires a 16-byte stack alignment. */ -#if defined(CONFIG_LIBC_FLOATINGPOINT) || defined (CONFIG_ARCH_RV64GC) -# define STACK_ALIGNMENT 8 -#else -# define STACK_ALIGNMENT 4 -#endif +#define STACK_ALIGNMENT 16 /* Stack alignment macros */ -#define STACK_ALIGN_MASK (STACK_ALIGNMENT-1) +#define STACK_ALIGN_MASK (STACK_ALIGNMENT - 1) #define STACK_ALIGN_DOWN(a) ((a) & ~STACK_ALIGN_MASK) #define STACK_ALIGN_UP(a) (((a) + STACK_ALIGN_MASK) & ~STACK_ALIGN_MASK) diff --git a/arch/risc-v/src/common/riscv_usestack.c b/arch/risc-v/src/common/riscv_usestack.c index d6debd5dcbf..68b2a89c998 100644 --- a/arch/risc-v/src/common/riscv_usestack.c +++ b/arch/risc-v/src/common/riscv_usestack.c @@ -39,20 +39,13 @@ * Pre-processor Definitions ****************************************************************************/ -/* RISC-V requires at least a 4-byte stack alignment. - * For floating point use, however, the stack must be aligned to 8-byte - * addresses. - */ +/* RISC-V requires a 16-byte stack alignment. */ -#if defined(CONFIG_LIBC_FLOATINGPOINT) || defined (CONFIG_ARCH_RV64GC) -# define STACK_ALIGNMENT 8 -#else -# define STACK_ALIGNMENT 4 -#endif +#define STACK_ALIGNMENT 16 /* Stack alignment macros */ -#define STACK_ALIGN_MASK (STACK_ALIGNMENT-1) +#define STACK_ALIGN_MASK (STACK_ALIGNMENT - 1) #define STACK_ALIGN_DOWN(a) ((a) & ~STACK_ALIGN_MASK) #define STACK_ALIGN_UP(a) (((a) + STACK_ALIGN_MASK) & ~STACK_ALIGN_MASK) @@ -112,17 +105,16 @@ int up_use_stack(FAR struct tcb_s *tcb, FAR void *stack, size_t stack_size) tcb->stack_alloc_ptr = stack; - /* RISC-V uses a push-down stack: the stack grows toward loweraddresses in - * memory. The stack pointer register, points to the lowest, valid work - * address (the "top" of the stack). Items on the stack are referenced - * as positive word offsets from sp. + /* RISC-V uses a push-down stack: the stack grows toward lower addresses in + * memory. The stack pointer register, points to the lowest, valid work + * address (the "top" of the stack). Items on the stack are referenced + * as positive word offsets from SP. */ top_of_stack = (uintptr_t)tcb->stack_alloc_ptr + stack_size; - /* The RISC-V stack must be aligned at word (4 byte) or double word - * (8 byte) boundaries. If necessary top_of_stack must be rounded down to - * the next boundary. + /* The RISC-V stack must be aligned at 128-bit (16-byte) boundaries. + * If necessary top_of_stack must be rounded down to the next boundary. */ top_of_stack = STACK_ALIGN_DOWN(top_of_stack); diff --git a/arch/risc-v/src/esp32c3/esp32c3_interrupt.S b/arch/risc-v/src/esp32c3/esp32c3_interrupt.S index fcd3e1efb0c..eedf93a00dd 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_interrupt.S +++ b/arch/risc-v/src/esp32c3/esp32c3_interrupt.S @@ -42,14 +42,14 @@ .section .noinit -#if CONFIG_ARCH_INTERRUPTSTACK > 3 - .align 4 +#if CONFIG_ARCH_INTERRUPTSTACK > 15 + .balign 16 .type g_intstackalloc, @object .type g_intstacktop, @object g_intstackalloc: - .skip (CONFIG_ARCH_INTERRUPTSTACK & ~3) + .skip ((CONFIG_ARCH_INTERRUPTSTACK + 8) & ~15) g_intstacktop: - .size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~3) + .size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~15) #endif /**************************************************************************** diff --git a/arch/risc-v/src/fe310/fe310_head.S b/arch/risc-v/src/fe310/fe310_head.S index 53790f7b471..642f3383250 100644 --- a/arch/risc-v/src/fe310/fe310_head.S +++ b/arch/risc-v/src/fe310/fe310_head.S @@ -201,16 +201,16 @@ exception_common: * Name: g_intstackalloc and g_intstacktop ************************************************************************************/ -#if CONFIG_ARCH_INTERRUPTSTACK > 3 +#if CONFIG_ARCH_INTERRUPTSTACK > 15 .bss - .align 4 + .balign 16 .global g_intstackalloc .global g_intstacktop .type g_intstackalloc, object .type g_intstacktop, object g_intstackalloc: - .skip (CONFIG_ARCH_INTERRUPTSTACK & ~3) + .skip ((CONFIG_ARCH_INTERRUPTSTACK + 8) & ~15) g_intstacktop: .size g_intstacktop, 0 - .size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~3) + .size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~15) #endif diff --git a/arch/risc-v/src/k210/k210_head.S b/arch/risc-v/src/k210/k210_head.S index e05bee4bfcf..f5bdc32ba9a 100644 --- a/arch/risc-v/src/k210/k210_head.S +++ b/arch/risc-v/src/k210/k210_head.S @@ -242,24 +242,24 @@ normal_irq: * Name: g_intstackalloc and g_intstacktop ************************************************************************************/ -#if CONFIG_ARCH_INTERRUPTSTACK > 7 +#if CONFIG_ARCH_INTERRUPTSTACK > 15 .bss - .align 8 + .balign 16 .global g_intstackalloc .global g_intstacktop .type g_intstackalloc, object .type g_intstacktop, object g_intstackalloc: #ifndef CONFIG_SMP - .skip ((CONFIG_ARCH_INTERRUPTSTACK + 4) & ~7) + .skip ((CONFIG_ARCH_INTERRUPTSTACK + 8) & ~15) #else - .skip (((CONFIG_ARCH_INTERRUPTSTACK * CONFIG_SMP_NCPUS) + 4) & ~7) + .skip (((CONFIG_ARCH_INTERRUPTSTACK * CONFIG_SMP_NCPUS) + 8) & ~15) #endif g_intstacktop: .size g_intstacktop, 0 #ifndef CONFIG_SMP - .size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~7) + .size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~15) #else - .size g_intstackalloc, ((CONFIG_ARCH_INTERRUPTSTACK * CONFIG_SMP_NCPUS) & ~7) + .size g_intstackalloc, ((CONFIG_ARCH_INTERRUPTSTACK * CONFIG_SMP_NCPUS) & ~15) #endif #endif diff --git a/arch/risc-v/src/litex/litex_head.S b/arch/risc-v/src/litex/litex_head.S index 7012f0769ce..c44e9895bfc 100644 --- a/arch/risc-v/src/litex/litex_head.S +++ b/arch/risc-v/src/litex/litex_head.S @@ -188,16 +188,16 @@ exception_common: * Name: g_intstackalloc and g_intstacktop ************************************************************************************/ -#if CONFIG_ARCH_INTERRUPTSTACK > 3 +#if CONFIG_ARCH_INTERRUPTSTACK > 15 .bss - .align 4 + .balign 16 .global g_intstackalloc .global g_intstacktop .type g_intstackalloc, object .type g_intstacktop, object g_intstackalloc: - .skip (CONFIG_ARCH_INTERRUPTSTACK & ~3) + .skip ((CONFIG_ARCH_INTERRUPTSTACK + 8) & ~15) g_intstacktop: .size g_intstacktop, 0 - .size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~3) + .size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~15) #endif diff --git a/arch/risc-v/src/rv32im/riscv_vfork.c b/arch/risc-v/src/rv32im/riscv_vfork.c index bb390faaa05..29e091b03f5 100644 --- a/arch/risc-v/src/rv32im/riscv_vfork.c +++ b/arch/risc-v/src/rv32im/riscv_vfork.c @@ -41,10 +41,6 @@ * Pre-processor Definitions ****************************************************************************/ -#ifndef CONFIG_STACK_ALIGNMENT -# define CONFIG_STACK_ALIGNMENT 4 -#endif - /**************************************************************************** * Private Functions ****************************************************************************/ From ba23526e39e9271caa5a6730aba5fce42b6ce2ae Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Fri, 23 Apr 2021 11:16:16 -0300 Subject: [PATCH 016/739] boards/esp32c3-devkit: Allocate .noinit in a dedicated section Previously it was being allocated into .bss section after the _ebss address. Although functional, this is not intuitive. --- boards/risc-v/esp32c3/esp32c3-devkit/scripts/esp32c3.ld | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/scripts/esp32c3.ld b/boards/risc-v/esp32c3/esp32c3-devkit/scripts/esp32c3.ld index 90dbd7a1750..fa3b073743a 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/scripts/esp32c3.ld +++ b/boards/risc-v/esp32c3/esp32c3-devkit/scripts/esp32c3.ld @@ -75,12 +75,16 @@ SECTIONS . = ALIGN (8); _ebss = ABSOLUTE(.); + } >dram0_0_seg - /* Uninitialized .bss */ + .noinit (NOLOAD): + { + /* This section contains data that is not initialized during load, + * or during the application's initialization sequence. + */ *(.noinit) *(.noinit.*) - } >dram0_0_seg .dram0.data : From d9f2289d309e576de08f8ac3711eb164f4f7614a Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Wed, 28 Apr 2021 07:30:24 -0300 Subject: [PATCH 017/739] boards/esp32: Allocate .noinit in a dedicated section --- boards/xtensa/esp32/esp32-devkitc/scripts/esp32_flash.ld | 7 ++++++- boards/xtensa/esp32/esp32-devkitc/scripts/esp32_iram.ld | 7 ++++++- .../xtensa/esp32/esp32-ethernet-kit/scripts/esp32_flash.ld | 7 ++++++- .../xtensa/esp32/esp32-ethernet-kit/scripts/esp32_iram.ld | 7 ++++++- .../xtensa/esp32/esp32-wrover-kit/scripts/esp32_flash.ld | 7 ++++++- boards/xtensa/esp32/esp32-wrover-kit/scripts/esp32_iram.ld | 7 ++++++- 6 files changed, 36 insertions(+), 6 deletions(-) diff --git a/boards/xtensa/esp32/esp32-devkitc/scripts/esp32_flash.ld b/boards/xtensa/esp32/esp32-devkitc/scripts/esp32_flash.ld index ae05e4481c3..b9a6f621658 100644 --- a/boards/xtensa/esp32/esp32-devkitc/scripts/esp32_flash.ld +++ b/boards/xtensa/esp32/esp32-devkitc/scripts/esp32_flash.ld @@ -94,8 +94,13 @@ SECTIONS *libarch.a:esp32_spiflash.*(.bss .bss.* COMMON) . = ALIGN(8); _ebss = ABSOLUTE(.); + } >dram0_0_seg - /* Uninitialized .bss */ + .noinit (NOLOAD): + { + /* This section contains data that is not initialized during load, + * or during the application's initialization sequence. + */ *(.noinit) } >dram0_0_seg diff --git a/boards/xtensa/esp32/esp32-devkitc/scripts/esp32_iram.ld b/boards/xtensa/esp32/esp32-devkitc/scripts/esp32_iram.ld index fb5d88e8f51..410c6cbe7d4 100644 --- a/boards/xtensa/esp32/esp32-devkitc/scripts/esp32_iram.ld +++ b/boards/xtensa/esp32/esp32-devkitc/scripts/esp32_iram.ld @@ -100,8 +100,13 @@ SECTIONS *(COMMON) . = ALIGN(8); _ebss = ABSOLUTE(.); + } >dram0_0_seg - /* Uninitialized .bss */ + .noinit (NOLOAD): + { + /* This section contains data that is not initialized during load, + * or during the application's initialization sequence. + */ *(.noinit) } >dram0_0_seg diff --git a/boards/xtensa/esp32/esp32-ethernet-kit/scripts/esp32_flash.ld b/boards/xtensa/esp32/esp32-ethernet-kit/scripts/esp32_flash.ld index 36ca15d7ecb..16a9c106ce0 100644 --- a/boards/xtensa/esp32/esp32-ethernet-kit/scripts/esp32_flash.ld +++ b/boards/xtensa/esp32/esp32-ethernet-kit/scripts/esp32_flash.ld @@ -97,8 +97,13 @@ SECTIONS *libarch.a:esp32_spiflash.*(.bss .bss.* COMMON) . = ALIGN(8); _ebss = ABSOLUTE(.); + } >dram0_0_seg - /* Uninitialized .bss */ + .noinit (NOLOAD): + { + /* This section contains data that is not initialized during load, + * or during the application's initialization sequence. + */ *(.noinit) } >dram0_0_seg diff --git a/boards/xtensa/esp32/esp32-ethernet-kit/scripts/esp32_iram.ld b/boards/xtensa/esp32/esp32-ethernet-kit/scripts/esp32_iram.ld index cb543aef637..06a79a40e92 100644 --- a/boards/xtensa/esp32/esp32-ethernet-kit/scripts/esp32_iram.ld +++ b/boards/xtensa/esp32/esp32-ethernet-kit/scripts/esp32_iram.ld @@ -100,8 +100,13 @@ SECTIONS *(COMMON) . = ALIGN(8); _ebss = ABSOLUTE(.); + } >dram0_0_seg - /* Uninitialized .bss */ + .noinit (NOLOAD): + { + /* This section contains data that is not initialized during load, + * or during the application's initialization sequence. + */ *(.noinit) } >dram0_0_seg diff --git a/boards/xtensa/esp32/esp32-wrover-kit/scripts/esp32_flash.ld b/boards/xtensa/esp32/esp32-wrover-kit/scripts/esp32_flash.ld index 20d81352d50..ac02d69dc42 100644 --- a/boards/xtensa/esp32/esp32-wrover-kit/scripts/esp32_flash.ld +++ b/boards/xtensa/esp32/esp32-wrover-kit/scripts/esp32_flash.ld @@ -97,8 +97,13 @@ SECTIONS *libarch.a:esp32_spiflash.*(.bss .bss.* COMMON) . = ALIGN(8); _ebss = ABSOLUTE(.); + } >dram0_0_seg - /* Uninitialized .bss */ + .noinit (NOLOAD): + { + /* This section contains data that is not initialized during load, + * or during the application's initialization sequence. + */ *(.noinit) } >dram0_0_seg diff --git a/boards/xtensa/esp32/esp32-wrover-kit/scripts/esp32_iram.ld b/boards/xtensa/esp32/esp32-wrover-kit/scripts/esp32_iram.ld index 137d460999f..27b6042e207 100644 --- a/boards/xtensa/esp32/esp32-wrover-kit/scripts/esp32_iram.ld +++ b/boards/xtensa/esp32/esp32-wrover-kit/scripts/esp32_iram.ld @@ -100,8 +100,13 @@ SECTIONS *(COMMON) . = ALIGN(8); _ebss = ABSOLUTE(.); + } >dram0_0_seg - /* Uninitialized .bss */ + .noinit (NOLOAD): + { + /* This section contains data that is not initialized during load, + * or during the application's initialization sequence. + */ *(.noinit) } >dram0_0_seg From 66a15a6f83e274eabad658a3fd350083063f6c88 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Wed, 28 Apr 2021 10:20:22 -0300 Subject: [PATCH 018/739] risc-v/esp32c3: Fix wrong references to ESP32 --- arch/risc-v/include/esp32c3/chip.h | 2 +- arch/risc-v/include/esp32c3/irq.h | 2 +- arch/risc-v/src/esp32c3/Kconfig | 4 ++-- arch/risc-v/src/esp32c3/esp32c3_oneshot_lowerhalf.c | 2 +- arch/risc-v/src/esp32c3/esp32c3_rt_timer.c | 4 ++-- arch/risc-v/src/esp32c3/esp32c3_spiflash.c | 2 +- arch/risc-v/src/esp32c3/esp32c3_start.h | 7 ++++--- arch/risc-v/src/esp32c3/esp32c3_tim.c | 2 +- arch/risc-v/src/esp32c3/esp32c3_tim.h | 4 ++-- arch/risc-v/src/esp32c3/esp32c3_wdt.c | 2 +- arch/risc-v/src/esp32c3/esp32c3_wdt.h | 4 ++-- arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h | 2 +- boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_boot.c | 2 +- 13 files changed, 20 insertions(+), 19 deletions(-) diff --git a/arch/risc-v/include/esp32c3/chip.h b/arch/risc-v/include/esp32c3/chip.h index 7c2bcf2f4b4..cb640d57d3e 100644 --- a/arch/risc-v/include/esp32c3/chip.h +++ b/arch/risc-v/include/esp32c3/chip.h @@ -31,7 +31,7 @@ * Pre-processor Definitions ****************************************************************************/ -/* Characterize each supported ESP32 part */ +/* Characterize each supported ESP32-C3 part */ #define ESP32C3_NGPIOS 22 /* GPIO0-21 */ diff --git a/arch/risc-v/include/esp32c3/irq.h b/arch/risc-v/include/esp32c3/irq.h index ad6634af630..a6ec2a744d8 100644 --- a/arch/risc-v/include/esp32c3/irq.h +++ b/arch/risc-v/include/esp32c3/irq.h @@ -121,7 +121,7 @@ /* CPU Interrupts. * - * The ESP32 CPU interrupt controller accepts 31 asynchronous interrupts. + * The ESP32-C3 CPU interrupt controller accepts 31 asynchronous interrupts. */ #define ESP32C3_CPUINT_MIN 1 diff --git a/arch/risc-v/src/esp32c3/Kconfig b/arch/risc-v/src/esp32c3/Kconfig index 8ddec494316..8115c55fdcd 100644 --- a/arch/risc-v/src/esp32c3/Kconfig +++ b/arch/risc-v/src/esp32c3/Kconfig @@ -15,14 +15,14 @@ config ARCH_CHIP_ESP32C3X bool "ESP32-C3" select ESP32C3_ESP32C3XXX ---help--- - ESP32 chip with a single RISC-V IMC core, no embedded Flash memory + ESP32-C3 chip with a single RISC-V IMC core, no embedded Flash memory config ARCH_CHIP_ESP32C3FX4 bool "ESP32-C3Fx4" select ESP32C3_ESP32C3XXX select ESP32C3_FLASH_4M ---help--- - ESP32 chip with a single RISC-V IMC core, 4 MB of in-package Flash memory + ESP32-C3 chip with a single RISC-V IMC core, 4 MB of in-package Flash memory config ARCH_CHIP_ESP32C3MINI1 bool "ESP32-C3-MINI-1" diff --git a/arch/risc-v/src/esp32c3/esp32c3_oneshot_lowerhalf.c b/arch/risc-v/src/esp32c3/esp32c3_oneshot_lowerhalf.c index d2c98fe7643..fa8e3e5d0c0 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_oneshot_lowerhalf.c +++ b/arch/risc-v/src/esp32c3/esp32c3_oneshot_lowerhalf.c @@ -54,7 +54,7 @@ struct esp32c3_oneshot_lowerhalf_s */ struct oneshot_lowerhalf_s lh; /* Lower half instance */ - struct esp32c3_oneshot_s oneshot; /* ESP32C3-specific oneshot state */ + struct esp32c3_oneshot_s oneshot; /* ESP32-C3-specific oneshot state */ oneshot_callback_t callback; /* Upper half Interrupt callback */ FAR void *arg; /* Argument passed to handler */ uint16_t resolution; diff --git a/arch/risc-v/src/esp32c3/esp32c3_rt_timer.c b/arch/risc-v/src/esp32c3/esp32c3_rt_timer.c index 2060407eea7..4320d731854 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_rt_timer.c +++ b/arch/risc-v/src/esp32c3/esp32c3_rt_timer.c @@ -601,7 +601,7 @@ int esp32c3_rt_timer_init(void) tim = esp32c3_tim_init(ESP32C3_RT_TIMER); if (!tim) { - tmrerr("ERROR: Failed to initialize ESP32 timer0\n"); + tmrerr("ERROR: Failed to initialize ESP32-C3 timer0\n"); return -EINVAL; } @@ -628,7 +628,7 @@ int esp32c3_rt_timer_init(void) flags = enter_critical_section(); /** - * ESP32 hardware timer configuration: + * ESP32-C3 hardware timer configuration: * - 1 counter = 1us * - Counter increase mode * - Non-reload mode diff --git a/arch/risc-v/src/esp32c3/esp32c3_spiflash.c b/arch/risc-v/src/esp32c3/esp32c3_spiflash.c index 284e59eda1f..c8a5a758463 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_spiflash.c +++ b/arch/risc-v/src/esp32c3/esp32c3_spiflash.c @@ -672,7 +672,7 @@ FAR struct mtd_dev_s *esp32c3_spiflash_alloc_mtdpart(void) ASSERT((ESP32C3_MTD_OFFSET % chip->sector_size) == 0); ASSERT((ESP32C3_MTD_SIZE % chip->sector_size) == 0); - finfo("ESP32 SPI Flash information:\n"); + finfo("ESP32-C3 SPI Flash information:\n"); finfo("\tID = 0x%" PRIx32 "\n", chip->device_id); finfo("\tStatus mask = 0x%" PRIx32 "\n", chip->status_mask); finfo("\tChip size = %" PRId32 " KB\n", chip->chip_size / 1024); diff --git a/arch/risc-v/src/esp32c3/esp32c3_start.h b/arch/risc-v/src/esp32c3/esp32c3_start.h index 8fa09558e0b..f32ba06a01f 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_start.h +++ b/arch/risc-v/src/esp32c3/esp32c3_start.h @@ -37,9 +37,10 @@ * Name: esp32c3_board_initialize * * Description: - * All ESP32 architectures must provide the following entry point. This - * entry point is called early in the initialization -- after all memory - * has been configured but before any devices have been initialized. + * All ESP32-C3 architectures must provide the following entry point. + * This entry point is called early in the initialization -- after all + * memory has been configured and mapped but before any devices have been + * initialized. * * Input Parameters: * None diff --git a/arch/risc-v/src/esp32c3/esp32c3_tim.c b/arch/risc-v/src/esp32c3/esp32c3_tim.c index 6e3dcf3888a..5acb8983e6c 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_tim.c +++ b/arch/risc-v/src/esp32c3/esp32c3_tim.c @@ -87,7 +87,7 @@ static void esp32c3_tim_ackint(FAR struct esp32c3_tim_dev_s *dev); * Private Data ****************************************************************************/ -/* ESP32C3 TIM ops */ +/* ESP32-C3 TIM ops */ struct esp32c3_tim_ops_s esp32c3_tim_ops = { diff --git a/arch/risc-v/src/esp32c3/esp32c3_tim.h b/arch/risc-v/src/esp32c3/esp32c3_tim.h index 2d427435ae6..e3a00989cff 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_tim.h +++ b/arch/risc-v/src/esp32c3/esp32c3_tim.h @@ -82,14 +82,14 @@ enum esp32c3_tim_mode_e ESP32C3_TIM_MODE_UP, }; -/* ESP32C3 TIM device */ +/* ESP32-C3 TIM device */ struct esp32c3_tim_dev_s { struct esp32c3_tim_ops_s *ops; }; -/* ESP32C3 TIM ops */ +/* ESP32-C3 TIM ops */ /* This is a struct containing the pointers to the timer operations */ diff --git a/arch/risc-v/src/esp32c3/esp32c3_wdt.c b/arch/risc-v/src/esp32c3/esp32c3_wdt.c index 2eb38acdfb9..319e0f58018 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_wdt.c +++ b/arch/risc-v/src/esp32c3/esp32c3_wdt.c @@ -99,7 +99,7 @@ static void esp32c3_wdt_ackint(struct esp32c3_wdt_dev_s *dev); * Private Data ****************************************************************************/ -/* ESP32 WDT ops */ +/* ESP32-C3 WDT ops */ struct esp32c3_wdt_ops_s esp32c3_mwdt_ops = { diff --git a/arch/risc-v/src/esp32c3/esp32c3_wdt.h b/arch/risc-v/src/esp32c3/esp32c3_wdt.h index dc0fed04364..4316d114f05 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_wdt.h +++ b/arch/risc-v/src/esp32c3/esp32c3_wdt.h @@ -94,14 +94,14 @@ enum esp32c3_wdt_stage_action_e */ }; -/* ESP32 WDT device */ +/* ESP32-C3 WDT device */ struct esp32c3_wdt_dev_s { struct esp32c3_wdt_ops_s *ops; }; -/* ESP32 WDT ops */ +/* ESP32-C3 WDT ops */ /* This is a struct containing the pointers to the wdt operations */ diff --git a/arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h b/arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h index c9466704965..dca4a1d80f1 100644 --- a/arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h +++ b/arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h @@ -146,7 +146,7 @@ #define SOC_BYTE_ACCESSIBLE_HIGH 0x3fd00000 /* Region of memory that is internal, as in on the same silicon die as the - * ESP32 CPU (excluding RTC data region, that's checked separately.) + * ESP32-C3 CPU (excluding RTC data region, that's checked separately.) * See esp_ptr_internal(). */ diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_boot.c b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_boot.c index 0db81432435..e97f7024e5d 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_boot.c +++ b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_boot.c @@ -38,7 +38,7 @@ * Name: esp32c3_board_initialize * * Description: - * All ESP32C3 architectures must provide the following entry point. + * All ESP32-C3 architectures must provide the following entry point. * This entry point is called early in the initialization -- after all * memory has been configured and mapped but before any devices have been * initialized. From 27d32f43093b6a31d7319c318a824e54dbf53452 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Fri, 23 Apr 2021 11:34:59 -0300 Subject: [PATCH 019/739] risc-v/esp32c3: Reorder register restoration on interrupt handler epiloque --- arch/risc-v/src/esp32c3/esp32c3_interrupt.S | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/arch/risc-v/src/esp32c3/esp32c3_interrupt.S b/arch/risc-v/src/esp32c3/esp32c3_interrupt.S index eedf93a00dd..25509246516 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_interrupt.S +++ b/arch/risc-v/src/esp32c3/esp32c3_interrupt.S @@ -130,7 +130,7 @@ _interrupt_handler: lw s0, 32*4(sp) /* restore mstatus */ csrw mstatus, s0 - + lw x1, 1*4(sp) /* ra */ lw x4, 4*4(sp) /* tp */ lw x5, 5*4(sp) /* t0 */ lw x6, 6*4(sp) /* t1 */ @@ -160,8 +160,6 @@ _interrupt_handler: lw x30, 30*4(sp) /* t5 */ lw x31, 31*4(sp) /* t6 */ - lw x1, 1*4(sp) /* ra */ - lw sp, 2*4(sp) /* restore original sp */ /* Return from Machine Interrupt */ From 9e7d3cff9230927125ebd0bf1d6c63ced848db85 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Fri, 23 Apr 2021 11:55:34 -0300 Subject: [PATCH 020/739] risc-v/esp32c3: Improve interrupt handler documentation --- arch/risc-v/src/esp32c3/esp32c3_interrupt.S | 29 ++++++++++++++------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/arch/risc-v/src/esp32c3/esp32c3_interrupt.S b/arch/risc-v/src/esp32c3/esp32c3_interrupt.S index 25509246516..b4ec97f579a 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_interrupt.S +++ b/arch/risc-v/src/esp32c3/esp32c3_interrupt.S @@ -69,7 +69,7 @@ _interrupt_handler: addi sp, sp, -XCPTCONTEXT_SIZE sw x1, 1*4(sp) /* ra */ - sw x3, 3*4(sp) /* gp */ + sw x3, 3*4(sp) /* gp (For register dumping on exception handler) */ sw x4, 4*4(sp) /* tp */ sw x5, 5*4(sp) /* t0 */ sw x6, 6*4(sp) /* t1 */ @@ -100,16 +100,20 @@ _interrupt_handler: sw x31, 31*4(sp) /* t6 */ addi s0, sp, XCPTCONTEXT_SIZE - sw s0, 2*4(sp) /* original SP */ + sw s0, 2*4(sp) /* Save original SP */ + + /* Save MSTATUS (Machine Status Register) */ csrr s0, mstatus - sw s0, 32*4(sp) /* mstatus */ + sw s0, 32*4(sp) + + /* Save MEPC (Machine Exception Program Counter) */ csrr s0, mepc - sw s0, 0(sp) /* exception PC */ + sw s0, 0(sp) - csrr a0, mcause /* exception cause */ - mv a1, sp /* context = sp */ + csrr a0, mcause /* Handler arg0: Exception cause */ + mv a1, sp /* Handler arg1: Context (saved registers on stack) */ #if CONFIG_ARCH_INTERRUPTSTACK > 3 lui sp, %hi(g_intstacktop) @@ -120,17 +124,24 @@ _interrupt_handler: jal x1, esp32c3_dispatch_irq - /* If context switch is needed, return a new sp */ + /* If context switch is needed, return a new SP */ mv sp, a0 - lw s0, 0(sp) /* restore mepc */ + /* Restore MEPC (Machine Exception Program Counter) */ + + lw s0, 0(sp) csrw mepc, s0 - lw s0, 32*4(sp) /* restore mstatus */ + /* Restore MSTATUS (Machine Status Register) */ + + lw s0, 32*4(sp) csrw mstatus, s0 lw x1, 1*4(sp) /* ra */ + + /* GP must not be changed after start-up due to relaxing optimization */ + lw x4, 4*4(sp) /* tp */ lw x5, 5*4(sp) /* t0 */ lw x6, 6*4(sp) /* t1 */ From edeb16123ba711872b542e9d86703b82a9fa4bda Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Fri, 23 Apr 2021 12:09:55 -0300 Subject: [PATCH 021/739] risc-v/esp32c3: Uniformize alignment for assembly instructions --- arch/risc-v/src/esp32c3/esp32c3_interrupt.S | 62 ++++++++++----------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/arch/risc-v/src/esp32c3/esp32c3_interrupt.S b/arch/risc-v/src/esp32c3/esp32c3_interrupt.S index b4ec97f579a..3b73c2c1a28 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_interrupt.S +++ b/arch/risc-v/src/esp32c3/esp32c3_interrupt.S @@ -45,7 +45,7 @@ #if CONFIG_ARCH_INTERRUPTSTACK > 15 .balign 16 .type g_intstackalloc, @object - .type g_intstacktop, @object + .type g_intstacktop, @object g_intstackalloc: .skip ((CONFIG_ARCH_INTERRUPTSTACK + 8) & ~15) g_intstacktop: @@ -138,40 +138,40 @@ _interrupt_handler: lw s0, 32*4(sp) csrw mstatus, s0 - lw x1, 1*4(sp) /* ra */ + lw x1, 1*4(sp) /* ra */ /* GP must not be changed after start-up due to relaxing optimization */ - lw x4, 4*4(sp) /* tp */ - lw x5, 5*4(sp) /* t0 */ - lw x6, 6*4(sp) /* t1 */ - lw x7, 7*4(sp) /* t2 */ - lw x8, 8*4(sp) /* s0 */ - lw x9, 9*4(sp) /* s1 */ - lw x10, 10*4(sp) /* a0 */ - lw x11, 11*4(sp) /* a1 */ - lw x12, 12*4(sp) /* a2 */ - lw x13, 13*4(sp) /* a3 */ - lw x14, 14*4(sp) /* a4 */ - lw x15, 15*4(sp) /* a5 */ - lw x16, 16*4(sp) /* a6 */ - lw x17, 17*4(sp) /* a7 */ - lw x18, 18*4(sp) /* s2 */ - lw x19, 19*4(sp) /* s3 */ - lw x20, 20*4(sp) /* s4 */ - lw x21, 21*4(sp) /* s5 */ - lw x22, 22*4(sp) /* s6 */ - lw x23, 23*4(sp) /* s7 */ - lw x24, 24*4(sp) /* s8 */ - lw x25, 25*4(sp) /* s9 */ - lw x26, 26*4(sp) /* s10 */ - lw x27, 27*4(sp) /* s11 */ - lw x28, 28*4(sp) /* t3 */ - lw x29, 29*4(sp) /* t4 */ - lw x30, 30*4(sp) /* t5 */ - lw x31, 31*4(sp) /* t6 */ + lw x4, 4*4(sp) /* tp */ + lw x5, 5*4(sp) /* t0 */ + lw x6, 6*4(sp) /* t1 */ + lw x7, 7*4(sp) /* t2 */ + lw x8, 8*4(sp) /* s0 */ + lw x9, 9*4(sp) /* s1 */ + lw x10, 10*4(sp) /* a0 */ + lw x11, 11*4(sp) /* a1 */ + lw x12, 12*4(sp) /* a2 */ + lw x13, 13*4(sp) /* a3 */ + lw x14, 14*4(sp) /* a4 */ + lw x15, 15*4(sp) /* a5 */ + lw x16, 16*4(sp) /* a6 */ + lw x17, 17*4(sp) /* a7 */ + lw x18, 18*4(sp) /* s2 */ + lw x19, 19*4(sp) /* s3 */ + lw x20, 20*4(sp) /* s4 */ + lw x21, 21*4(sp) /* s5 */ + lw x22, 22*4(sp) /* s6 */ + lw x23, 23*4(sp) /* s7 */ + lw x24, 24*4(sp) /* s8 */ + lw x25, 25*4(sp) /* s9 */ + lw x26, 26*4(sp) /* s10 */ + lw x27, 27*4(sp) /* s11 */ + lw x28, 28*4(sp) /* t3 */ + lw x29, 29*4(sp) /* t4 */ + lw x30, 30*4(sp) /* t5 */ + lw x31, 31*4(sp) /* t6 */ - lw sp, 2*4(sp) /* restore original sp */ + lw sp, 2*4(sp) /* Restore original SP */ /* Return from Machine Interrupt */ From fcd5648bcad7cc6ff78042ccac9a09844d07ab5c Mon Sep 17 00:00:00 2001 From: Dong Heng Date: Wed, 28 Apr 2021 17:51:17 +0800 Subject: [PATCH 022/739] riscv/esp32c3: Fix SPI Flash driver internal chip data address error "g_rom_flashchip" is not in fixed address between all ESP32-C3's different versions. --- arch/risc-v/src/esp32c3/esp32c3_spiflash.c | 18 ++++++++++++------ arch/risc-v/src/esp32c3/rom/esp32c3_spiflash.h | 11 +++++++++++ .../esp32c3-devkit/scripts/esp32c3_rom.ld | 1 - 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/arch/risc-v/src/esp32c3/esp32c3_spiflash.c b/arch/risc-v/src/esp32c3/esp32c3_spiflash.c index c8a5a758463..96f19ad30ff 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_spiflash.c +++ b/arch/risc-v/src/esp32c3/esp32c3_spiflash.c @@ -51,9 +51,9 @@ #define ESP32C3_MTD_SIZE CONFIG_ESP32C3_MTD_SIZE #define MTD2PRIV(_dev) ((FAR struct esp32c3_spiflash_s *)_dev) -#define MTD_SIZE(_priv) ((_priv)->chip->chip_size) -#define MTD_BLKSIZE(_priv) ((_priv)->chip->page_size) -#define MTD_ERASESIZE(_priv) ((_priv)->chip->sector_size) +#define MTD_SIZE(_priv) ((*(_priv)->data)->chip.chip_size) +#define MTD_BLKSIZE(_priv) ((*(_priv)->data)->chip.page_size) +#define MTD_ERASESIZE(_priv) ((*(_priv)->data)->chip.sector_size) #define MTD_BLK2SIZE(_priv, _b) (MTD_BLKSIZE(_priv) * (_b)) #define MTD_SIZE2BLK(_priv, _s) ((_s) / MTD_BLKSIZE(_priv)) @@ -69,7 +69,7 @@ struct esp32c3_spiflash_s /* SPI Flash data */ - esp32c3_spiflash_chip_t *chip; + const struct spiflash_legacy_data_s **data; }; /**************************************************************************** @@ -103,6 +103,12 @@ static ssize_t esp32c3_bwrite_encrypt(struct mtd_dev_s *dev, static int esp32c3_ioctl(struct mtd_dev_s *dev, int cmd, unsigned long arg); +/**************************************************************************** + * Public Data + ****************************************************************************/ + +extern const struct spiflash_legacy_data_s *rom_spiflash_legacy_data; + /**************************************************************************** * Private Data ****************************************************************************/ @@ -121,7 +127,7 @@ static struct esp32c3_spiflash_s g_esp32c3_spiflash = #endif .name = "esp32c3_spiflash" }, - .chip = &g_rom_flashchip, + .data = &rom_spiflash_legacy_data, }; static struct esp32c3_spiflash_s g_esp32c3_spiflash_encrypt = @@ -662,7 +668,7 @@ static int esp32c3_ioctl(struct mtd_dev_s *dev, int cmd, FAR struct mtd_dev_s *esp32c3_spiflash_alloc_mtdpart(void) { struct esp32c3_spiflash_s *priv = &g_esp32c3_spiflash; - esp32c3_spiflash_chip_t *chip = priv->chip; + const esp32c3_spiflash_chip_t *chip = &(*priv->data)->chip; FAR struct mtd_dev_s *mtd_part; uint32_t blocks; uint32_t startblock; diff --git a/arch/risc-v/src/esp32c3/rom/esp32c3_spiflash.h b/arch/risc-v/src/esp32c3/rom/esp32c3_spiflash.h index f7f8bcf72b3..62e32714b0e 100644 --- a/arch/risc-v/src/esp32c3/rom/esp32c3_spiflash.h +++ b/arch/risc-v/src/esp32c3/rom/esp32c3_spiflash.h @@ -143,6 +143,17 @@ typedef struct uint16_t data; } esp_rom_spiflash_common_cmd_t; +/** + * Global ROM spiflash data, as used by legacy SPI flash functions + */ + +struct spiflash_legacy_data_s +{ + esp32c3_spiflash_chip_t chip; + uint8_t dummy_len_plus[3]; + uint8_t sig_matrix; +}; + /***************************************************************************** * Public Function Prototypes *****************************************************************************/ diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/scripts/esp32c3_rom.ld b/boards/risc-v/esp32c3/esp32c3-devkit/scripts/esp32c3_rom.ld index a675427fe4e..c4cc218cf2e 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/scripts/esp32c3_rom.ld +++ b/boards/risc-v/esp32c3/esp32c3-devkit/scripts/esp32c3_rom.ld @@ -173,7 +173,6 @@ PROVIDE( Enable_QMode = 0x40000228 ); /* Data (.data, .bss, .rodata) */ PROVIDE( rom_spiflash_legacy_funcs = 0x3fcdfff4 ); PROVIDE( rom_spiflash_legacy_data = 0x3fcdfff0 ); -PROVIDE( g_rom_flashchip = 0x3fcdf730 ); PROVIDE( g_flash_guard_ops = 0x3fcdfff8 ); From 26f09cec6dfbc6b44d3b99e765d29d53d956fa52 Mon Sep 17 00:00:00 2001 From: Nathan Hartman <59230071+hartmannathan@users.noreply.github.com> Date: Wed, 28 Apr 2021 15:14:44 -0400 Subject: [PATCH 023/739] Documentation: Fix a few typos. * Documentation/contributing/documentation.rst * Documentation/guides/tasktraceuser.rst * Documentation/guides/drivers.rst * Documentation/quickstart/running.rst * Documentation/quickstart/compiling.rst * Documentation/components/drivers/character/watchdog.rst * Documentation/components/drivers/character/foc.rst * Documentation/components/nxgraphics/nxtk.rst * Documentation/applications/nsh/login.rst * Documentation/introduction/detailed_support.rst * Documentation/introduction/resources.rst * Documentation/reference/user/01_task_control.rst * Documentation/reference/os/wqueue.rst Fix some misspelled words. Many of these were caught by codespell. --- Documentation/applications/nsh/login.rst | 2 +- .../components/drivers/character/foc.rst | 2 +- .../components/drivers/character/watchdog.rst | 22 +++++++++---------- Documentation/components/nxgraphics/nxtk.rst | 4 ++-- Documentation/contributing/documentation.rst | 6 ++--- Documentation/contributing/workflow.rst | 4 ++-- Documentation/guides/tasktraceuser.rst | 4 ++-- .../introduction/detailed_support.rst | 2 +- Documentation/introduction/resources.rst | 2 +- .../arm/imxrt/boards/teensy-4.x/index.rst | 2 +- Documentation/platforms/arm/imxrt/index.rst | 12 +++++----- Documentation/platforms/arm/nrf52/index.rst | 10 ++++----- Documentation/quickstart/compiling.rst | 6 ++--- Documentation/quickstart/running.rst | 16 +++++++------- Documentation/reference/os/wqueue.rst | 2 +- .../reference/user/01_task_control.rst | 2 +- 16 files changed, 49 insertions(+), 49 deletions(-) diff --git a/Documentation/applications/nsh/login.rst b/Documentation/applications/nsh/login.rst index 6aabfc3cbbc..01d538630c1 100644 --- a/Documentation/applications/nsh/login.rst +++ b/Documentation/applications/nsh/login.rst @@ -57,7 +57,7 @@ credentials at login time: This is not very flexible since there can be only one user and the password is fixed in the FLASH image. This option is also not very secure because a malicious user could get the password by just - looking at the ``.text`` stings in the flash image. + looking at the ``.text`` strings in the flash image. #. NSH can also be configured to defer the entire user credential verification to platform-specific logic with this setting:: diff --git a/Documentation/components/drivers/character/foc.rst b/Documentation/components/drivers/character/foc.rst index 1a1612acb75..f4dd710465d 100644 --- a/Documentation/components/drivers/character/foc.rst +++ b/Documentation/components/drivers/character/foc.rst @@ -17,7 +17,7 @@ The Nuttx FOC driver is split into two parts: #. An "upper half", generic driver that provides the common FOC interface to application level code, -#. A "lower half", platform-specific driver that implemets +#. A "lower half", platform-specific driver that implements the low-level logic to implement the FOC functionality Files supporting FOC can be found in the following locations: diff --git a/Documentation/components/drivers/character/watchdog.rst b/Documentation/components/drivers/character/watchdog.rst index b4e8e53b0a3..287aa452810 100644 --- a/Documentation/components/drivers/character/watchdog.rst +++ b/Documentation/components/drivers/character/watchdog.rst @@ -65,7 +65,7 @@ Enabling the Watchdog Support and Example in ``menuconfing`` 4. Include the Debug Watchdog Feature In order to get the watchdog timer status, you need to enable it. For production code and for your application you may disable it. - + Go into menu :menuselection:`Build Setup --> Debug Options` and press :kbd:`Enter`. Then enable: - [x] Enable Debug Features @@ -79,7 +79,7 @@ The previously selected example will basically do the following: * Open the watchdog device * Set the watchdog timeout * Start the watchdog timer -* Ping (feed the dog) during the ``pingtime`` with a delay of ``pingdelay`` and print out the wdt status in case debug was enabled. +* Ping (feed the dog) during the ``pingtime`` with a delay of ``pingdelay`` and print out the wdt status in case debug was enabled. * Enter into an endless loop without pinging. It will cause the watchdog timer to reset the chip on timeout, i.e., after timer expiration. @@ -136,7 +136,7 @@ This command gets the status of the watchdog timer. It receives a writeable poin .. c:macro:: WDIOC_SETTIMEOUT -This command sets the timeout value, i.e., the value that will trigger the reset or interrupt. The argument is a ``uint32_t`` value in miliseconds. +This command sets the timeout value, i.e., the value that will trigger the reset or interrupt. The argument is a ``uint32_t`` value in milliseconds. .. c:macro:: WDIOC_CAPTURE @@ -153,12 +153,12 @@ This command registers an user callback that will be triggered on timeout. It re .. c:macro:: WDIOC_KEEPALIVE - This command resets the watchdog timer AKA '**ping**", "**kick**", "**pet**", "**feed**" the dog". + This command resets the watchdog timer AKA '**ping**", "**kick**", "**pet**", "**feed**" the dog". Enable Built in System Monitoring to reset the watchdog ------------------------------------------------------- -The auto-monitor provides an OS-internal mechanism to automatically start and repeatedly reset the watchdog. +The auto-monitor provides an OS-internal mechanism to automatically start and repeatedly reset the watchdog. To enable it, follow the next instructions: @@ -181,16 +181,16 @@ To enable it, follow the next instructions: After selecting the option you may want to configure some parameters: * **Timeout**: It is the watchdog timer expiration time in seconds. - * **Keep a live interval**: This is the interval in which the watchdog will be fed. It is in seconds. It can't be bigger than the timeout. If this interval is equal to timeout interval, than this interval will automatically change to half timeout. + * **Keep a live interval**: This is the interval in which the watchdog will be fed. It is in seconds. It can't be bigger than the timeout. If this interval is equal to timeout interval, than this interval will automatically change to half timeout. * **Keep alive by**: This is a choice to determine who is going to feed the dog. There are 4 possible choices that are described as follows. - ``Capture callback``: This choice registers a watchdog timer callback to reset the watchdog every time it expires, i.e., on timeout. + ``Capture callback``: This choice registers a watchdog timer callback to reset the watchdog every time it expires, i.e., on timeout. ``Timer callback``: This choice also uses a timer callback to reset the watchdog, but it will reset the watchdog every "keep a live interval". ``Worker callback``: This choice uses a Work Queue to reset the watchdog every "keep a live interval". This choice depends on having the Low or High Priority Work Queue enabled. - If only the High Priority Work Queue is enabled, this one will be used, otherwise Low Priority Work Queue is used. - + If only the High Priority Work Queue is enabled, this one will be used, otherwise Low Priority Work Queue is used. + So, before enabling it, go into menu :menuselection:`RTOS Features --> Work queue support` and press :kbd:`Enter`. - [x] Low priority (kernel) worker thread @@ -200,5 +200,5 @@ To enable it, follow the next instructions: Go into menu :menuselection:`Device Drivers` and enable: - [x] Power Management Support - -After selecting one of these choices, the chip will keep itself alive by one of these options. + +After selecting one of these choices, the chip will keep itself alive by one of these options. diff --git a/Documentation/components/nxgraphics/nxtk.rst b/Documentation/components/nxgraphics/nxtk.rst index 6ff4a0271b5..22378b9f1ff 100644 --- a/Documentation/components/nxgraphics/nxtk.rst +++ b/Documentation/components/nxgraphics/nxtk.rst @@ -500,9 +500,9 @@ these sub-windows to be managed more-or-less independently: :param rect: The location within the toolbar window to be retrieved. :param plane: - TSpecifies the color plane to get from. + Specifies the color plane to get from. :param dest: - TThe location to copy the memory region. + The location to copy the memory region. :param deststride: The width, in bytes, of the dest memory. diff --git a/Documentation/contributing/documentation.rst b/Documentation/contributing/documentation.rst index a430716f164..6f57b1d96f1 100644 --- a/Documentation/contributing/documentation.rst +++ b/Documentation/contributing/documentation.rst @@ -24,7 +24,7 @@ go into ``Documentation`` directory. Then, $ pip3 install pipenv $ pipenv install - $ # activate the virtual environent + $ # activate the virtual environment $ pipenv shell 2. Build documentation: @@ -82,7 +82,7 @@ sometimes Sphinx's approach is used over standard RST since it is more powerful Documentation Conventions ========================= -While RST/Sphinx provide many ways to do things, it is best to follow a given convention to mantain consistency and avoid +While RST/Sphinx provide many ways to do things, it is best to follow a given convention to maintain consistency and avoid pitfalls. For this reason, documentation changes should follow the following set of conventions. Indentation @@ -180,7 +180,7 @@ Tips Spacing ------- -If you are getting formatting errors, be sure to provide the appropiate spacing between a directive and its content. +If you are getting formatting errors, be sure to provide the appropriate spacing between a directive and its content. Generally, you should follow this format: .. code-block:: RST diff --git a/Documentation/contributing/workflow.rst b/Documentation/contributing/workflow.rst index 574c8737949..d6bf8884a3b 100644 --- a/Documentation/contributing/workflow.rst +++ b/Documentation/contributing/workflow.rst @@ -13,7 +13,7 @@ You should be aware of the following: automatically during CI to ensure conformance. Note that not all existing files in the repository are already adapted to conform to the standard as this is an ongoing effort. Thus, - if you're submitting a patch to an existing file you may have to make the file conform to the standard, even if you are not reponsible + if you're submitting a patch to an existing file you may have to make the file conform to the standard, even if you are not responsible for those standard violations. It is also appreciated that you separate any styling fixes in a separate commit from the functional changes so that these are more @@ -37,6 +37,6 @@ You should be aware of the following: - If this is from an inactive project, it may be considered for inclusion in NuttX, provided that licensing terms allow to do so and it is deemed of sufficient value to be included, considering that this code will have to be maintained in NuttX afterwards. - Note that it is undesireable to included non Apache 2.0 Licensed code inside the repository, even if the license itself allows it + Note that it is undesirable to included non Apache 2.0 Licensed code inside the repository, even if the license itself allows it (for example BSD License). diff --git a/Documentation/guides/tasktraceuser.rst b/Documentation/guides/tasktraceuser.rst index 293c3ffaaef..a04c160bbf9 100644 --- a/Documentation/guides/tasktraceuser.rst +++ b/Documentation/guides/tasktraceuser.rst @@ -109,7 +109,7 @@ After getting the trace, the following command displays the accumulated trace da nsh> trace dump -This will be get the trace results like the followings: +This will get the trace results like the following: .. code-block:: @@ -266,7 +266,7 @@ The default value is given by the kernel configuration ``CONFIG_SCHED_INSTRUMENT - ``-a`` : Disable recording the system call arguments. - ``+i`` : Enable interrupt trace. - It records the event of enter/leave interrupt handler which is occured while the tracing. + It records the event of enter/leave interrupt handler which occurred while tracing. All IRQs are recorded by default. ``trace irq`` command can filter the IRQs to be recorded. - ``-i`` : Disable interrupt trace. diff --git a/Documentation/introduction/detailed_support.rst b/Documentation/introduction/detailed_support.rst index 39791431f44..65ab05955d6 100644 --- a/Documentation/introduction/detailed_support.rst +++ b/Documentation/introduction/detailed_support.rst @@ -2464,7 +2464,7 @@ Also refer to the NuttX board file for further information about the current state of the port. NuttX-9.0 added basic support for Microchip SAME54 Xplained Pro board. -An ethernet driver was also added to the SAME5x familly. +An ethernet driver was also added to the SAME5x family. STMicro STM32 F72x/F73x ----------------------- diff --git a/Documentation/introduction/resources.rst b/Documentation/introduction/resources.rst index 0ac8cf44713..4ef40afd270 100644 --- a/Documentation/introduction/resources.rst +++ b/Documentation/introduction/resources.rst @@ -13,7 +13,7 @@ Here's a list of Apache NuttX resources that you might find helpful: * `Apache NuttX mailing list `_ – a very active mailing list, the place to get help with your application or any questions you have about NuttX. * `Apache NuttX YouTube channel `_ – Alan Carvalho de Assis's YouTube channel on NuttX. It's a source of a lot of great practical information. * `Apache NuttX Coding Standard `_ — How code should look when you submit new files or modify existing ones. - * `Apache NuttX Code Contribution Guidlines `_ — The full workflow to follow for submitting code with all the details. + * `Apache NuttX Code Contribution Guidelines `_ — The full workflow to follow for submitting code with all the details. * Git diff --git a/Documentation/platforms/arm/imxrt/boards/teensy-4.x/index.rst b/Documentation/platforms/arm/imxrt/boards/teensy-4.x/index.rst index 5745d304837..447f62e487e 100644 --- a/Documentation/platforms/arm/imxrt/boards/teensy-4.x/index.rst +++ b/Documentation/platforms/arm/imxrt/boards/teensy-4.x/index.rst @@ -96,7 +96,7 @@ This configuration can be easily changed to work with Teensy 4.0 by selecting ``CONFIG_TEENSY_40=y``. This configuration runs over LPUART1 (pins 24 and 25 on Teensy). Communication -over USB console can be turn on, but it couses problems with FlexCAN. +over USB console can be turn on, but it causes problems with FlexCAN. netnsh-4.1 ---------- diff --git a/Documentation/platforms/arm/imxrt/index.rst b/Documentation/platforms/arm/imxrt/index.rst index 6a0f9b3d4ba..f694e891608 100644 --- a/Documentation/platforms/arm/imxrt/index.rst +++ b/Documentation/platforms/arm/imxrt/index.rst @@ -69,7 +69,7 @@ range of supply voltage (rail-to-rail operation). ADC --- -ADC driver with the successive approximation analog/digital convertor. The lower-half of +ADC driver with the successive approximation analog/digital converter. The lower-half of this driver is initialize by calling :c:func:`imxrt_adcinitialize`. CAN @@ -82,7 +82,7 @@ calling :c:func:`imxrt_cannitialize()`. There is an booting option that automatically provides initialization of network interface in the early stages of booting and therefore calling :c:func:`imxrt_cannitialize()` via -board specific logic is not neccessary. This however works only when there is only one +board specific logic is not necessary. This however works only when there is only one interface in the chip. For running more interfaces (like CAN and Ethernet), network late initialization must be turn on by CONFIG_NETDEV_LATEINIT and board specific logic must call lower-half part of drivers. @@ -95,7 +95,7 @@ CMOS Sensor interface which enables the chip to connect directly to external CMO DAC --- -Digital/analog convertor for external signal is only supported in i.MX RT1170 MCU. It is 12 bit +Digital/analog converter for external signal is only supported in i.MX RT1170 MCU. It is 12 bit lower power, general purpose DAC. eLCDIF @@ -117,7 +117,7 @@ by calling :c:func:`imxrt_netnitialize`. There is an booting option that automatically provides initialization of network interface in the early stages of booting and therefore calling :c:func:`imxrt_cannitialize()` via -board specific logic is not neccessary. This however works only when there is only one +board specific logic is not necessary. This however works only when there is only one interface in the chip. For running more interfaces (like CAN and Ethernet), network late initialization must be turn on by CONFIG_NETDEV_LATEINIT and board specific logic must call lower-half part of drivers. @@ -137,7 +137,7 @@ done by :c:func:`imxrt_gpio_write` function and reading is done by :c:func:`imxr MCUs i.MX RT1060 and higher includes both standard speed GPIOs (1-5) and high speed GPIOS (6-9). Regular and high speed GPIO share the same pins (GPIO1 is with GPIO6 etc), -therefore IOMUXC_GPR_GPR26-29 registers are used to determine what modue is used for the +therefore IOMUXC_GPR_GPR26-29 registers are used to determine what module is used for the GPIO pins. @@ -160,7 +160,7 @@ Synchronous audio interface provided by I2C module. Supported in i.MX RT1015 and SPDIF ----- -Sony/Philips digital interface audio block. It is a stereo transciever that allows the +Sony/Philips digital interface audio block. It is a stereo transceiver that allows the processor to receive and transmit digital audio. Supported in i.MX RT1010 and higher. SPI diff --git a/Documentation/platforms/arm/nrf52/index.rst b/Documentation/platforms/arm/nrf52/index.rst index fee6e803270..582de9cc192 100644 --- a/Documentation/platforms/arm/nrf52/index.rst +++ b/Documentation/platforms/arm/nrf52/index.rst @@ -63,7 +63,7 @@ GPIO/GPIOTE ----------- Pins can be configured/operated using ``nrf52_gpio_*`` functions. Interrupts are -handled via the GPIOTE peripheral in one of two ways: via a GPIOTE channel or via +handled via the GPIOTE peripheral in one of two ways: via a GPIOTE channel or via PORT events. The former allows for simultaneous rising/falling edge-sensitive interrupts per-pin. However, as there are a limited number of channels (and sometimes these are used by some drivers for specific tasks), it may not always be possible to use @@ -88,7 +88,7 @@ is initialized by calling :c:func:`nrf52_adcinitialize`. I2C --- -I2C is supported both in polling and interrupt mode (via EasyDMA). +I2C is supported both in polling and interrupt mode (via EasyDMA). .. note:: The I2C peripheral does not support sending two transfers without sending a START nor RSTART. For this reason, this is supported via an internal buffer where @@ -105,7 +105,7 @@ SPI is supported both in polling and interrupt-based (via EasyDMA) mode. The lat supports arbitrarily long transfers using Nordic's list-mode EasyDMA (intermediate transfers are currently still manually started). -It is possible to use SPI without either MOSI/MISO pin defined by simply not providing +It is possible to use SPI without either MOSI/MISO pin defined by simply not providing the relevant ``BOARD_SPI*_MISO/MOSI_PIN`` definition. This implementation support power management hooks, which will disable SPI peripheral when @@ -115,7 +115,7 @@ UART ---- UART is implemented using polling. UARTE EasyDMA feature is not yet supported. -This may introduce a large number of interrupts which may be undesireable. +This may introduce a large number of interrupts which may be undesirable. PPI --- @@ -166,7 +166,7 @@ you need to call :c:func:`nrf52_sdc_initialize` on boot, which will initialize t SDC support involves registering various high-priority zero-latency interrupts and thus requires enabling BASEPRI and high-priority interrupt support. On supported boards, a sample ``sdc`` configuration -is provided with settings already set. +is provided with settings already set. Note that in this case, some peripherals (mostly those related to BLE) will be unavailable. Some PPI channels will also be ocuppied (``NRF52_PPI_NUM_CONFIGURABLE_CHANNELS`` will be set accordingly in this case). diff --git a/Documentation/quickstart/compiling.rst b/Documentation/quickstart/compiling.rst index c2a2ae48237..0aef2072a7b 100644 --- a/Documentation/quickstart/compiling.rst +++ b/Documentation/quickstart/compiling.rst @@ -21,7 +21,7 @@ a pre-existing configuration. To list all supported configurations you can do: $ ./tools/configure.sh -L | less The output is in the format ``:``. You will see that -generally all boards support the ``nsh`` configuration which is a good sarting point +generally all boards support the ``nsh`` configuration which is a good starting point since it enables booting into the interactive command line :doc:`/applications/nsh/index`. @@ -43,7 +43,7 @@ configuration system with: $ cd nuttx/ $ make menuconfig - + Modifying the configuration is covered in :doc:`configuring`. Build NuttX @@ -66,7 +66,7 @@ To clean the build, you can do: .. code-block:: console $ make clean - + .. tip:: To increase build speed (or of any other target such as ``clean``), you can diff --git a/Documentation/quickstart/running.rst b/Documentation/quickstart/running.rst index dd07a6e2987..6deb17df241 100644 --- a/Documentation/quickstart/running.rst +++ b/Documentation/quickstart/running.rst @@ -11,7 +11,7 @@ which also integrates the debugger/programmer in the board itself exposed via US connector. A good choice is a Nucleo or Discovery board from ST Microelectronics, -as there is a wide choice of suported boards for the STM32 architecture in NuttX. +as there is a wide choice of supported boards for the STM32 architecture in NuttX. Also, these boards expose an UART port over the USB connection which allows you to interact with NuttX via the interactive console without any extra hardware. For the purposes of this guide, we will use the Nucleo F103RB board. @@ -25,7 +25,7 @@ of programmers and target microcontrollers. You should note that ``openocd`` project has not made stable releases for long time and support for newer hardware will probably be only available in the -latest Git version, so it is actually recommended to install latest development +latest Git version, so it is actually recommended to install latest development version. .. tabs:: @@ -37,7 +37,7 @@ version. .. tab:: Install latest version from source .. code-block:: console - + $ git clone git://git.code.sf.net/p/openocd/code openocd $ cd openocd $ ./bootstrap @@ -46,7 +46,7 @@ version. The resulting installation will be under ``openocd/install``. You can add ``openocd/install/bin`` to your ``PATH``. - + Now, to flash the binary to your board, connect the USB cable and do: .. code-block:: console @@ -72,15 +72,15 @@ if you don't see anything): .. code-tab:: console gtkterm (GUI) $ gtkterm -s 115200 -p /dev/ttyUSB0 - + .. tip:: You may have to add yourself to the ``dialout`` group on Linux to have permission to access serial ports: - + .. code-block:: console - + $ gpasswd -a dialout - + Where ```` is your username. You will need to log out from your desktop for the change to have effect. diff --git a/Documentation/reference/os/wqueue.rst b/Documentation/reference/os/wqueue.rst index d22291bdb32..d026d32babd 100644 --- a/Documentation/reference/os/wqueue.rst +++ b/Documentation/reference/os/wqueue.rst @@ -60,7 +60,7 @@ to match the highest priority client. **Configuration Options**. -- ``CONFIG_SCHED_HPWORK``. Enables the hight priority work queue. +- ``CONFIG_SCHED_HPWORK``. Enables the high priority work queue. - ``CONFIG_SCHED_HPNTHREADS``. The number of threads in the high-priority queue's thread pool. Default: 1 - ``CONFIG_SCHED_HPWORKPRIORITY``. The execution priority of the diff --git a/Documentation/reference/user/01_task_control.rst b/Documentation/reference/user/01_task_control.rst index 3b4566f66ff..63a23be7466 100644 --- a/Documentation/reference/user/01_task_control.rst +++ b/Documentation/reference/user/01_task_control.rst @@ -199,7 +199,7 @@ Functions - Deletion of self is supported, but only because ``task_delete()`` will re-direct processing to ``exit()``. -.. :c:funcion:: int task_restart(pid_t pid) +.. :c:function:: int task_restart(pid_t pid) This function *restarts* a task. The task is first terminated and then reinitialized with same ID, priority, original entry From 27e0725a4e0fb2a0e8bbba4d5ee342a6086777b8 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Wed, 28 Apr 2021 15:31:07 -0600 Subject: [PATCH 024/739] Remove CONFIG_NET_UDP_BINDTODEVICE from DHCPC configurations CONFIG_NET_UDP_BINDTODEVICE is now selected by default if DHCPC is enabled. This change will not build without apps PR 696 --- boards/arm/cxd56xx/spresense/configs/rndis/defconfig | 1 - boards/arm/cxd56xx/spresense/configs/rndis_smp/defconfig | 1 - boards/arm/lc823450/lc823450-xgevk/configs/bt/defconfig | 1 - boards/arm/lc823450/lc823450-xgevk/configs/krndis/defconfig | 1 - boards/arm/lc823450/lc823450-xgevk/configs/rndis/defconfig | 1 - boards/arm/lpc17xx_40xx/lx_cpu/configs/nsh/defconfig | 1 - boards/sim/sim/sim/configs/rpserver/defconfig | 1 - boards/sim/sim/sim/configs/tcpblaster/defconfig | 1 - 8 files changed, 8 deletions(-) diff --git a/boards/arm/cxd56xx/spresense/configs/rndis/defconfig b/boards/arm/cxd56xx/spresense/configs/rndis/defconfig index e7a66de03ab..be516149248 100644 --- a/boards/arm/cxd56xx/spresense/configs/rndis/defconfig +++ b/boards/arm/cxd56xx/spresense/configs/rndis/defconfig @@ -105,7 +105,6 @@ CONFIG_NET_STATISTICS=y CONFIG_NET_TCP=y CONFIG_NET_TCPBACKLOG=y CONFIG_NET_UDP=y -CONFIG_NET_UDP_BINDTODEVICE=y CONFIG_NSH_ARCHINIT=y CONFIG_NSH_BUILTIN_APPS=y CONFIG_NSH_DISABLE_TELNETD=y diff --git a/boards/arm/cxd56xx/spresense/configs/rndis_smp/defconfig b/boards/arm/cxd56xx/spresense/configs/rndis_smp/defconfig index 3f783aa721a..2822555f749 100644 --- a/boards/arm/cxd56xx/spresense/configs/rndis_smp/defconfig +++ b/boards/arm/cxd56xx/spresense/configs/rndis_smp/defconfig @@ -107,7 +107,6 @@ CONFIG_NET_STATISTICS=y CONFIG_NET_TCP=y CONFIG_NET_TCPBACKLOG=y CONFIG_NET_UDP=y -CONFIG_NET_UDP_BINDTODEVICE=y CONFIG_NSH_ARCHINIT=y CONFIG_NSH_BUILTIN_APPS=y CONFIG_NSH_DISABLE_TELNETD=y diff --git a/boards/arm/lc823450/lc823450-xgevk/configs/bt/defconfig b/boards/arm/lc823450/lc823450-xgevk/configs/bt/defconfig index d92cc2f26db..d1ea5b8262a 100644 --- a/boards/arm/lc823450/lc823450-xgevk/configs/bt/defconfig +++ b/boards/arm/lc823450/lc823450-xgevk/configs/bt/defconfig @@ -103,7 +103,6 @@ CONFIG_NET_TCP_KEEPALIVE=y CONFIG_NET_TUN=y CONFIG_NET_TUN_PKTSIZE=1500 CONFIG_NET_UDP=y -CONFIG_NET_UDP_BINDTODEVICE=y CONFIG_NSH_ARCHINIT=y CONFIG_NSH_BUILTIN_APPS=y CONFIG_NSH_CMDOPT_DD_STATS=y diff --git a/boards/arm/lc823450/lc823450-xgevk/configs/krndis/defconfig b/boards/arm/lc823450/lc823450-xgevk/configs/krndis/defconfig index fcbdd4cc5c9..1816c5b24c9 100644 --- a/boards/arm/lc823450/lc823450-xgevk/configs/krndis/defconfig +++ b/boards/arm/lc823450/lc823450-xgevk/configs/krndis/defconfig @@ -107,7 +107,6 @@ CONFIG_NET_ROUTE=y CONFIG_NET_STATISTICS=y CONFIG_NET_TCP=y CONFIG_NET_UDP=y -CONFIG_NET_UDP_BINDTODEVICE=y CONFIG_NSH_ARCHINIT=y CONFIG_NSH_CMDOPT_DD_STATS=y CONFIG_NSH_DISABLE_BASENAME=y diff --git a/boards/arm/lc823450/lc823450-xgevk/configs/rndis/defconfig b/boards/arm/lc823450/lc823450-xgevk/configs/rndis/defconfig index 8735ddd4d4e..f228a0a1c2d 100644 --- a/boards/arm/lc823450/lc823450-xgevk/configs/rndis/defconfig +++ b/boards/arm/lc823450/lc823450-xgevk/configs/rndis/defconfig @@ -105,7 +105,6 @@ CONFIG_NET_STATISTICS=y CONFIG_NET_TCP=y CONFIG_NET_TCP_WRITE_BUFFERS=y CONFIG_NET_UDP=y -CONFIG_NET_UDP_BINDTODEVICE=y CONFIG_NFS=y CONFIG_NFS_STATISTICS=y CONFIG_NSH_ARCHINIT=y diff --git a/boards/arm/lpc17xx_40xx/lx_cpu/configs/nsh/defconfig b/boards/arm/lpc17xx_40xx/lx_cpu/configs/nsh/defconfig index bde277413b8..8c961c01767 100644 --- a/boards/arm/lpc17xx_40xx/lx_cpu/configs/nsh/defconfig +++ b/boards/arm/lpc17xx_40xx/lx_cpu/configs/nsh/defconfig @@ -119,7 +119,6 @@ CONFIG_NET_TCPBACKLOG=y CONFIG_NET_TCP_KEEPALIVE=y CONFIG_NET_TCP_WRITE_BUFFERS=y CONFIG_NET_UDP=y -CONFIG_NET_UDP_BINDTODEVICE=y CONFIG_NET_UDP_CHECKSUMS=y CONFIG_NFS=y CONFIG_NSH_ARCHINIT=y diff --git a/boards/sim/sim/sim/configs/rpserver/defconfig b/boards/sim/sim/sim/configs/rpserver/defconfig index f7118425b73..61c9281ec25 100644 --- a/boards/sim/sim/sim/configs/rpserver/defconfig +++ b/boards/sim/sim/sim/configs/rpserver/defconfig @@ -43,7 +43,6 @@ CONFIG_NET_TCP=y CONFIG_NET_TCPBACKLOG=y CONFIG_NET_TCP_WRITE_BUFFERS=y CONFIG_NET_UDP=y -CONFIG_NET_UDP_BINDTODEVICE=y CONFIG_NET_UDP_WRITE_BUFFERS=y CONFIG_NSH_ARCHINIT=y CONFIG_NSH_BUILTIN_APPS=y diff --git a/boards/sim/sim/sim/configs/tcpblaster/defconfig b/boards/sim/sim/sim/configs/tcpblaster/defconfig index f82b754c048..b7ff4c0e852 100644 --- a/boards/sim/sim/sim/configs/tcpblaster/defconfig +++ b/boards/sim/sim/sim/configs/tcpblaster/defconfig @@ -78,7 +78,6 @@ CONFIG_NET_TCP_WRITE_BUFFERS=y CONFIG_NET_TUN=y CONFIG_NET_TUN_PKTSIZE=1500 CONFIG_NET_UDP=y -CONFIG_NET_UDP_BINDTODEVICE=y CONFIG_NET_UDP_WRITE_BUFFERS=y CONFIG_NSH_ARCHINIT=y CONFIG_NSH_BUILTIN_APPS=y From 7332d2decf819cecc172999de1d8c0d32c18c4e9 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Wed, 28 Apr 2021 14:18:16 -0600 Subject: [PATCH 025/739] net/: Add missing packet filtering checks NuttX provides the UDP_BINDTODEVICE socket option. This is a UDP protocol-specific implementation of the semi-standard Linux SO_BINDTODEVICE socket option: "SO_BINDTODEVICE forces packets on the socket to only egress the bound interface, regardless of what the IP routing table would normally choose. Similarly only packets which ingress the bound interface will be received on the socket, packets from other interfaces will not be delivered to the socket." https://codingrelic.geekhold.com/2009/10/code-snippet-sobindtodevice.html If CONFIG_NET_UDP_BINDTODEVICE is selected and a UDP socket is bound to the device, then unrecognized packets UDP packets must not be dropped, but must be forwarded along to the bound socket unconditionally. It the typical case, this should have no impact. It does effect the applications that use DHCP and do select the UDP_BINDTODEVICE socket option. This PR replace existing improper logic in the code and also the improper attempts to fix problems from PR #3601 and PR #3598. Those changes are improper because they expose DHCP appliction dependencies in the OS, breaking modularity and independence of the OS and application. Tested with stm32f4discovery:netnsh with CONFIG_NET_UDP_BINDTODEVICE. A proper DHCP test setup is needed, however. --- include/net/if.h | 6 ++- net/devif/ipv4_input.c | 9 +++- net/devif/ipv6_input.c | 9 +++- net/udp/udp_close.c | 28 ++++++++++++- net/udp/udp_setsockopt.c | 89 ++++++++++++++++++++++++++++++---------- 5 files changed, 115 insertions(+), 26 deletions(-) diff --git a/include/net/if.h b/include/net/if.h index 44f467ae852..f68f9e9f3a9 100644 --- a/include/net/if.h +++ b/include/net/if.h @@ -44,6 +44,7 @@ #define IFF_UP (1 << 1) /* Interface is up */ #define IFF_RUNNING (1 << 2) /* Carrier is available */ #define IFF_IPv6 (1 << 3) /* Configured for IPv6 packet (vs ARP or IPv4) */ +#define IFF_BOUND (1 << 4) /* Bound to a socket */ #define IFF_NOARP (1 << 7) /* ARP is not required for this packet */ /* Interface flag helpers */ @@ -51,20 +52,23 @@ #define IFF_SET_DOWN(f) do { (f) |= IFF_DOWN; } while (0) #define IFF_SET_UP(f) do { (f) |= IFF_UP; } while (0) #define IFF_SET_RUNNING(f) do { (f) |= IFF_RUNNING; } while (0) +#define IFF_SET_BOUND(f) do { (f) |= IFF_BOUND; } while (0) #define IFF_SET_NOARP(f) do { (f) |= IFF_NOARP; } while (0) #define IFF_CLR_DOWN(f) do { (f) &= ~IFF_DOWN; } while (0) #define IFF_CLR_UP(f) do { (f) &= ~IFF_UP; } while (0) #define IFF_CLR_RUNNING(f) do { (f) &= ~IFF_RUNNING; } while (0) +#define IFF_CLR_BOUND(f) do { (f) &= ~IFF_BOUND; } while (0) #define IFF_CLR_NOARP(f) do { (f) &= ~IFF_NOARP; } while (0) #define IFF_IS_DOWN(f) (((f) & IFF_DOWN) != 0) #define IFF_IS_UP(f) (((f) & IFF_UP) != 0) #define IFF_IS_RUNNING(f) (((f) & IFF_RUNNING) != 0) +#define IFF_IS_BOUND(f) (((f) & IFF_BOUND) != 0) #define IFF_IS_NOARP(f) (((f) & IFF_NOARP) != 0) /* We only need to manage the IPv6 bit if both IPv6 and IPv4 are supported. - * Otherwise, we can save a few bytes by ignoring it. + * Otherwise, we can save a few bytes by ignoring it. */ #if defined(CONFIG_NET_IPv4) && defined(CONFIG_NET_IPv6) diff --git a/net/devif/ipv4_input.c b/net/devif/ipv4_input.c index e0227a1f996..fa45b930e90 100644 --- a/net/devif/ipv4_input.c +++ b/net/devif/ipv4_input.c @@ -297,7 +297,14 @@ int ipv4_input(FAR struct net_driver_s *dev) } else #endif - if (ipv4->proto != IP_PROTO_UDP) +#if defined(NET_UDP_HAVE_STACK) && defined(CONFIG_NET_UDP_BINDTODEVICE) + /* If the UDP protocol specific socket option UDP_BINDTODEVICE + * is selected, then we must forward all UDP packets to the bound + * socket. + */ + + if (ipv4->proto != IP_PROTO_UDP || !IFF_IS_BOUND(dev->d_flags)) +#endif { /* Not destined for us and not forwardable... Drop the * packet. diff --git a/net/devif/ipv6_input.c b/net/devif/ipv6_input.c index 168cffdbe61..2c42602b37d 100644 --- a/net/devif/ipv6_input.c +++ b/net/devif/ipv6_input.c @@ -433,7 +433,14 @@ int ipv6_input(FAR struct net_driver_s *dev) } else #endif - if (nxthdr != IP_PROTO_UDP) +#if defined(NET_UDP_HAVE_STACK) && defined(CONFIG_NET_UDP_BINDTODEVICE) + /* If the UDP protocol specific socket option UDP_BINDTODEVICE + * is selected, then we must forward all UDP packets to the bound + * socket. + */ + + if (nxthdr != IP_PROTO_UDP || !IFF_IS_BOUND(dev->d_flags)) +#endif { /* Not destined for us and not forwardable... * drop the packet. diff --git a/net/udp/udp_close.c b/net/udp/udp_close.c index 2e4722ed152..b2610ce407a 100644 --- a/net/udp/udp_close.c +++ b/net/udp/udp_close.c @@ -29,10 +29,14 @@ #include #include +#include + #include +#include #include #include "devif/devif.h" +#include "netdev/netdev.h" #include "udp/udp.h" #include "socket/socket.h" @@ -63,7 +67,7 @@ int udp_close(FAR struct socket *psock) unsigned int timeout = UINT_MAX; int ret; - /* Interrupts are disabled here to avoid race conditions */ + /* Lock the network to avoid race conditions */ net_lock(); @@ -102,6 +106,28 @@ int udp_close(FAR struct socket *psock) nerr("ERROR: udp_txdrain() failed: %d\n", ret); } +#ifdef CONFIG_NET_UDP_BINDTODEVICE + /* Is the socket bound to an interface device */ + + if (conn->boundto != 0) + { + FAR struct net_driver_s *dev; + + /* Yes, get the interface that we are bound do. NULL would indicate + * that the interface no longer exists for some reason. + */ + + dev = netdev_findbyindex(conn->boundto); + if (dev != NULL) + { + /* Clear the interface flag to unbind the device from the socket. + */ + + IFF_CLR_BOUND(dev->d_flags); + } + } +#endif + #ifdef CONFIG_NET_UDP_WRITE_BUFFERS /* Free any semi-permanent write buffer callback in place. */ diff --git a/net/udp/udp_setsockopt.c b/net/udp/udp_setsockopt.c index 880b4d92c95..bd5bd997c8f 100644 --- a/net/udp/udp_setsockopt.c +++ b/net/udp/udp_setsockopt.c @@ -29,9 +29,11 @@ #include #include +#include #include #include +#include #include #include "socket/socket.h" @@ -112,31 +114,74 @@ int udp_setsockopt(FAR struct socket *psock, int option, */ case UDP_BINDTODEVICE: /* Bind socket to a specific network device */ - if (value == NULL || value_len == 0 || - (value_len > 0 && ((FAR char *)value)[0] == 0)) - { - conn->boundto = 0; /* This interface is no longer bound */ - ret = OK; - } - else - { - int ifindex; + { + FAR struct net_driver_s *dev; - /* Get the interface index corresponding to the interface name */ + /* Check if we are are unbinding the socket */ - ifindex = netdev_nametoindex(value); - if (ifindex >= 0) - { - DEBUGASSERT(ifindex > 0 && ifindex <= MAX_IFINDEX); - conn->boundto = ifindex; - ret = OK; - } - else - { - ret = ifindex; - } - } + if (value == NULL || value_len == 0 || + (value_len > 0 && ((FAR char *)value)[0] == 0)) + { + /* Just report success if the socket is not bound to an + * interface. + */ + if (conn->boundto != 0) + { + /* Get the interface that we are bound do. NULL would + * indicate that the interface no longer exists for some + * reason. + */ + + dev = netdev_findbyindex(conn->boundto); + if (dev != NULL) + { + /* Clear the interface flag to unbind the device from + * the socket. + */ + + IFF_CLR_BOUND(dev->d_flags); + } + + conn->boundto = 0; /* This interface is no longer bound */ + } + + ret = OK; + } + + /* No, we are binding a socket to the interface. */ + + else + { + /* Find the interface device with this name */ + + dev = netdev_findbyname(value); + if (dev == NULL) + { + ret = -ENODEV; + } + + /* An interface may be bound only to one socket. */ + + else if (IFF_IS_BOUND(dev->d_flags)) + { + ret = -EBUSY; + } + else + { + /* Bind the interface to a socket */ + + IFF_SET_BOUND(dev->d_flags); + + /* Bind the socket to the interface */ + + DEBUGASSERT(dev->d_ifindex > 0 && + dev->d_ifindex <= MAX_IFINDEX); + conn->boundto = dev->d_ifindex; + ret = OK; + } + } + } break; #endif From f4089ab5289e2339a58b5c2f56aa22df4451a77a Mon Sep 17 00:00:00 2001 From: Masayuki Ishikawa Date: Thu, 29 Apr 2021 14:35:45 +0900 Subject: [PATCH 026/739] boards: sim: Remove CONFIG_NETDEV_IFINDEX=y Summary: - This commit fixes the warnings reported by the CI Impact: - None Testing: - Build only Signed-off-by: Masayuki Ishikawa --- boards/sim/sim/sim/configs/libcxxtest/defconfig | 1 - boards/sim/sim/sim/configs/module32/defconfig | 1 - boards/sim/sim/sim/configs/sotest/defconfig | 1 - boards/sim/sim/sim/configs/sotest32/defconfig | 1 - boards/sim/sim/sim/configs/vpnkit/defconfig | 1 - 5 files changed, 5 deletions(-) diff --git a/boards/sim/sim/sim/configs/libcxxtest/defconfig b/boards/sim/sim/sim/configs/libcxxtest/defconfig index 74c295a6271..3336f7e2626 100644 --- a/boards/sim/sim/sim/configs/libcxxtest/defconfig +++ b/boards/sim/sim/sim/configs/libcxxtest/defconfig @@ -50,7 +50,6 @@ CONFIG_MAX_TASKS=64 CONFIG_MM_FILL_ALLOCATIONS=y CONFIG_NET=y CONFIG_NETDB_DNSCLIENT=y -CONFIG_NETDEV_IFINDEX=y CONFIG_NETDEV_PHY_IOCTL=y CONFIG_NETDOWN_NOTIFIER=y CONFIG_NETINIT_DHCPC=y diff --git a/boards/sim/sim/sim/configs/module32/defconfig b/boards/sim/sim/sim/configs/module32/defconfig index 3d6d7cdb4f8..e724d6ab880 100644 --- a/boards/sim/sim/sim/configs/module32/defconfig +++ b/boards/sim/sim/sim/configs/module32/defconfig @@ -34,7 +34,6 @@ CONFIG_MM_FILL_ALLOCATIONS=y CONFIG_NAME_MAX=64 CONFIG_NET=y CONFIG_NETDB_DNSCLIENT=y -CONFIG_NETDEV_IFINDEX=y CONFIG_NETDEV_PHY_IOCTL=y CONFIG_NETDOWN_NOTIFIER=y CONFIG_NET_ARP_SEND=y diff --git a/boards/sim/sim/sim/configs/sotest/defconfig b/boards/sim/sim/sim/configs/sotest/defconfig index b048653ce60..363d1a0b02d 100644 --- a/boards/sim/sim/sim/configs/sotest/defconfig +++ b/boards/sim/sim/sim/configs/sotest/defconfig @@ -34,7 +34,6 @@ CONFIG_MM_FILL_ALLOCATIONS=y CONFIG_NAME_MAX=64 CONFIG_NET=y CONFIG_NETDB_DNSCLIENT=y -CONFIG_NETDEV_IFINDEX=y CONFIG_NETDEV_PHY_IOCTL=y CONFIG_NETDOWN_NOTIFIER=y CONFIG_NET_ARP_SEND=y diff --git a/boards/sim/sim/sim/configs/sotest32/defconfig b/boards/sim/sim/sim/configs/sotest32/defconfig index 9cbccccfdee..eb9136a6a7d 100644 --- a/boards/sim/sim/sim/configs/sotest32/defconfig +++ b/boards/sim/sim/sim/configs/sotest32/defconfig @@ -34,7 +34,6 @@ CONFIG_MM_FILL_ALLOCATIONS=y CONFIG_NAME_MAX=64 CONFIG_NET=y CONFIG_NETDB_DNSCLIENT=y -CONFIG_NETDEV_IFINDEX=y CONFIG_NETDEV_PHY_IOCTL=y CONFIG_NETDOWN_NOTIFIER=y CONFIG_NET_ARP_SEND=y diff --git a/boards/sim/sim/sim/configs/vpnkit/defconfig b/boards/sim/sim/sim/configs/vpnkit/defconfig index b9f76fd0460..2842dfef5a0 100644 --- a/boards/sim/sim/sim/configs/vpnkit/defconfig +++ b/boards/sim/sim/sim/configs/vpnkit/defconfig @@ -45,7 +45,6 @@ CONFIG_MAX_TASKS=64 CONFIG_MM_FILL_ALLOCATIONS=y CONFIG_NET=y CONFIG_NETDB_DNSCLIENT=y -CONFIG_NETDEV_IFINDEX=y CONFIG_NETDEV_PHY_IOCTL=y CONFIG_NETDOWN_NOTIFIER=y CONFIG_NETINIT_DHCPC=y From 940c5b69c36fd1210ada473a5665e4c83420be77 Mon Sep 17 00:00:00 2001 From: Alexander Vasiljev Date: Wed, 28 Apr 2021 10:51:50 +0300 Subject: [PATCH 027/739] stm32h7: serial: use dma tx semaphore as resource holder --- arch/arm/src/stm32h7/stm32_serial.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/arch/arm/src/stm32h7/stm32_serial.c b/arch/arm/src/stm32h7/stm32_serial.c index f747879c3a1..5ac93913381 100644 --- a/arch/arm/src/stm32h7/stm32_serial.c +++ b/arch/arm/src/stm32h7/stm32_serial.c @@ -2220,7 +2220,7 @@ static int up_dma_setup(struct uart_dev_s *dev) { priv->txdma = stm32_dmachannel(priv->txdma_channel); - nxsem_init(&priv->txdmasem, 0, 0); + nxsem_init(&priv->txdmasem, 0, 1); nxsem_set_protocol(&priv->txdmasem, SEM_PRIO_NONE); /* Enable receive Tx DMA for the UART */ @@ -3369,16 +3369,10 @@ static void up_dma_txcallback(DMA_HANDLE handle, uint8_t status, void *arg) static void up_dma_txavailable(struct uart_dev_s *dev) { struct up_dev_s *priv = (struct up_dev_s *)dev->priv; - size_t resid = 0; - - resid = stm32_dmaresidual(priv->txdma); /* Only send when the DMA is idle */ - if (resid != 0) - { - nxsem_wait(&priv->txdmasem); - } + nxsem_wait(&priv->txdmasem); uart_xmitchars_dma(dev); } From 07cde736bdae8a10cfad459920bd64724703b87e Mon Sep 17 00:00:00 2001 From: Juha Niskanen Date: Thu, 29 Apr 2021 19:32:29 +0300 Subject: [PATCH 028/739] arch: fix some printf format errors --- arch/arm/src/efm32/efm32_usbdev.c | 2 +- arch/arm/src/lpc54xx/lpc54_ethernet.c | 2 +- arch/arm/src/stm32h7/stm32_otgdev.c | 2 +- arch/arm/src/stm32l4/stm32l4_otgfsdev.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/arm/src/efm32/efm32_usbdev.c b/arch/arm/src/efm32/efm32_usbdev.c index 5b29c9ca893..b81b403e8ae 100644 --- a/arch/arm/src/efm32/efm32_usbdev.c +++ b/arch/arm/src/efm32/efm32_usbdev.c @@ -5597,7 +5597,7 @@ void arm_usbinitialize(void) ret = irq_attach(EFM32_IRQ_USB, efm32_usbinterrupt, NULL); if (ret < 0) { - uerr("ERROR: irq_attach failed\n", ret); + uerr("ERROR: irq_attach failed: %d\n", ret); goto errout; } diff --git a/arch/arm/src/lpc54xx/lpc54_ethernet.c b/arch/arm/src/lpc54xx/lpc54_ethernet.c index fa4499a178b..223dc90cd82 100644 --- a/arch/arm/src/lpc54xx/lpc54_ethernet.c +++ b/arch/arm/src/lpc54xx/lpc54_ethernet.c @@ -3048,7 +3048,7 @@ int arm_netinitialize(int intf) { /* We could not attach the ISR to the interrupt */ - nerr("ERROR: irq_attach failed: %d\n", ret); + nerr("ERROR: irq_attach failed: %d\n", ret); return -EAGAIN; } diff --git a/arch/arm/src/stm32h7/stm32_otgdev.c b/arch/arm/src/stm32h7/stm32_otgdev.c index c5e38b7a337..09f6778887a 100644 --- a/arch/arm/src/stm32h7/stm32_otgdev.c +++ b/arch/arm/src/stm32h7/stm32_otgdev.c @@ -5608,7 +5608,7 @@ void arm_usbinitialize(void) ret = irq_attach(STM32_IRQ_OTG, stm32_usbinterrupt, NULL); if (ret < 0) { - uerr("irq_attach failed\n", ret); + uerr("ERROR: irq_attach failed: %d\n", ret); goto errout; } diff --git a/arch/arm/src/stm32l4/stm32l4_otgfsdev.c b/arch/arm/src/stm32l4/stm32l4_otgfsdev.c index 93ed1a58ef5..2bfe4cef083 100644 --- a/arch/arm/src/stm32l4/stm32l4_otgfsdev.c +++ b/arch/arm/src/stm32l4/stm32l4_otgfsdev.c @@ -5725,7 +5725,7 @@ void arm_usbinitialize(void) ret = irq_attach(STM32L4_IRQ_OTGFS, stm32l4_usbinterrupt, NULL); if (ret < 0) { - uerr("irq_attach failed\n", ret); + uerr("ERROR: irq_attach failed: %d\n", ret); goto errout; } From 0a0a034a3f3b2e88c2d536fb0d6cb0a3da0fd4af Mon Sep 17 00:00:00 2001 From: "Alan C. Assis" Date: Thu, 29 Apr 2021 16:01:14 -0300 Subject: [PATCH 029/739] esp32: replace EPS32 typo with ESP32 --- Documentation/platforms/xtensa/esp32/index.rst | 2 +- arch/xtensa/include/esp32/irq.h | 10 +++++----- arch/xtensa/src/esp32/esp32_cpuint.c | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Documentation/platforms/xtensa/esp32/index.rst b/Documentation/platforms/xtensa/esp32/index.rst index c47ab0c05ea..98465240ba8 100644 --- a/Documentation/platforms/xtensa/esp32/index.rst +++ b/Documentation/platforms/xtensa/esp32/index.rst @@ -417,7 +417,7 @@ I assume that: - You did not install OpenOCD; binaries are available at openocd-esp32/src and interface scripts are in - openocd-eps32/tcl/interface + openocd-esp32/tcl/interface - I select the configuration for the Olimex ARM-USB-OCD debugger. diff --git a/arch/xtensa/include/esp32/irq.h b/arch/xtensa/include/esp32/irq.h index 7d7eee0cf30..a610a636872 100644 --- a/arch/xtensa/include/esp32/irq.h +++ b/arch/xtensa/include/esp32/irq.h @@ -355,7 +355,7 @@ #define ESP32_CPUINT_LEVELPERIPH_20 31 #define ESP32_CPUINT_NLEVELPERIPHS 21 -#define EPS32_CPUINT_LEVELSET 0x8fbe333f +#define ESP32_CPUINT_LEVELSET 0x8fbe333f #define ESP32_CPUINT_EDGEPERIPH_0 10 #define ESP32_CPUINT_EDGEPERIPH_1 22 @@ -363,10 +363,10 @@ #define ESP32_CPUINT_EDGEPERIPH_3 30 #define ESP32_CPUINT_NEDGEPERIPHS 4 -#define EPS32_CPUINT_EDGESET 0x50400400 +#define ESP32_CPUINT_EDGESET 0x50400400 #define ESP32_CPUINT_NNMIPERIPHS 1 -#define EPS32_CPUINT_NMISET 0x00004000 +#define ESP32_CPUINT_NMISET 0x00004000 #define ESP32_CPUINT_MAC 0 #define ESP32_CPUINT_TIMER0 6 @@ -380,8 +380,8 @@ #define ESP32_NCPUINTS 32 #define ESP32_CPUINT_MAX (ESP32_NCPUINTS - 1) -#define EPS32_CPUINT_PERIPHSET 0xdffe773f -#define EPS32_CPUINT_INTERNALSET 0x200188c0 +#define ESP32_CPUINT_PERIPHSET 0xdffe773f +#define ESP32_CPUINT_INTERNALSET 0x200188c0 /* Priority 1: 0-10, 12-13, 17-18 (15) * Priority 2: 19-21 (3) diff --git a/arch/xtensa/src/esp32/esp32_cpuint.c b/arch/xtensa/src/esp32/esp32_cpuint.c index fefa0a91822..b7c941c7261 100644 --- a/arch/xtensa/src/esp32/esp32_cpuint.c +++ b/arch/xtensa/src/esp32/esp32_cpuint.c @@ -170,10 +170,10 @@ static uint32_t g_intenable[1]; * devices. */ -static uint32_t g_cpu0_freeints = EPS32_CPUINT_PERIPHSET & +static uint32_t g_cpu0_freeints = ESP32_CPUINT_PERIPHSET & (~ESP32_WIRELESS_RESERVE_INT); #ifdef CONFIG_SMP -static uint32_t g_cpu1_freeints = EPS32_CPUINT_PERIPHSET & +static uint32_t g_cpu1_freeints = ESP32_CPUINT_PERIPHSET & (~ESP32_WIRELESS_RESERVE_INT); #endif @@ -465,7 +465,7 @@ int esp32_alloc_levelint(int priority) * interrupt priority. */ - intmask = g_priority[ESP32_PRIO_INDEX(priority)] & EPS32_CPUINT_LEVELSET; + intmask = g_priority[ESP32_PRIO_INDEX(priority)] & ESP32_CPUINT_LEVELSET; return esp32_alloc_cpuint(intmask); } @@ -497,7 +497,7 @@ int esp32_alloc_edgeint(int priority) * interrupt priority. */ - intmask = g_priority[ESP32_PRIO_INDEX(priority)] & EPS32_CPUINT_EDGESET; + intmask = g_priority[ESP32_PRIO_INDEX(priority)] & ESP32_CPUINT_EDGESET; return esp32_alloc_cpuint(intmask); } From abf039b74491b62283b224b7caf397f8a68cc9e4 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Fri, 23 Apr 2021 09:27:49 -0300 Subject: [PATCH 030/739] risc-v/rv32im: Set MAXOPTIMIZATION regardless of any debug options --- arch/risc-v/src/rv32im/Toolchain.defs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/arch/risc-v/src/rv32im/Toolchain.defs b/arch/risc-v/src/rv32im/Toolchain.defs index 281225685bd..4f88e099b10 100644 --- a/arch/risc-v/src/rv32im/Toolchain.defs +++ b/arch/risc-v/src/rv32im/Toolchain.defs @@ -49,6 +49,8 @@ endif ifeq ($(CONFIG_DEBUG_CUSTOMOPT),y) MAXOPTIMIZATION := $(CONFIG_DEBUG_OPTLEVEL) +else + MAXOPTIMIZATION ?= -Os endif # Generic GNU RVG toolchain @@ -67,13 +69,6 @@ ifeq ($(CONFIG_RISCV_TOOLCHAIN),GNU_RVG) endif endif -# Individual tools may limit the optimization level but, by default, the -# optimization level will be set to -Os - -ifeq ($(CONFIG_DEBUG_SYMBOLS),) -MAXOPTIMIZATION ?= -Os -endif - # Default toolchain CC = $(CROSSDEV)gcc From f8a36f10c3d3106d35684b6bd191450f56593725 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Fri, 23 Apr 2021 17:57:02 -0300 Subject: [PATCH 031/739] arch: Uniformize optimization flag setting across architectures --- arch/arm/src/arm/Toolchain.defs | 4 ++-- arch/arm/src/armv6-m/Toolchain.defs | 7 ++----- arch/arm/src/armv7-a/Toolchain.defs | 4 ++-- arch/arm/src/armv7-m/Toolchain.defs | 5 ++--- arch/arm/src/armv7-r/Toolchain.defs | 4 ++-- arch/arm/src/armv8-m/Toolchain.defs | 5 ++--- arch/avr/src/avr/Toolchain.defs | 6 ++---- arch/misoc/src/lm32/Toolchain.defs | 4 ++-- arch/misoc/src/minerva/Toolchain.defs | 6 ++++-- arch/or1k/src/mor1kx/Toolchain.defs | 3 ++- arch/risc-v/src/rv64gc/Toolchain.defs | 9 ++------- arch/xtensa/src/lx6/Toolchain.defs | 2 +- 12 files changed, 25 insertions(+), 34 deletions(-) diff --git a/arch/arm/src/arm/Toolchain.defs b/arch/arm/src/arm/Toolchain.defs index 0997ffeae0c..ca842ea6daa 100644 --- a/arch/arm/src/arm/Toolchain.defs +++ b/arch/arm/src/arm/Toolchain.defs @@ -63,6 +63,8 @@ endif ifeq ($(CONFIG_DEBUG_CUSTOMOPT),y) MAXOPTIMIZATION := $(CONFIG_DEBUG_OPTLEVEL) +else + MAXOPTIMIZATION ?= -Os endif # NuttX buildroot under Linux or Cygwin @@ -73,14 +75,12 @@ ifeq ($(CONFIG_ARM_OABI_TOOLCHAIN),y) else CROSSDEV ?= arm-nuttx-eabi- endif - MAXOPTIMIZATION ?= -Os endif # Generic GNU EABI toolchain ifeq ($(CONFIG_ARM_TOOLCHAIN),GNU_EABI) CROSSDEV ?= arm-none-eabi- - MAXOPTIMIZATION ?= -Os endif # Default toolchain diff --git a/arch/arm/src/armv6-m/Toolchain.defs b/arch/arm/src/armv6-m/Toolchain.defs index 3684668f2ca..d154b1cf015 100644 --- a/arch/arm/src/armv6-m/Toolchain.defs +++ b/arch/arm/src/armv6-m/Toolchain.defs @@ -57,6 +57,8 @@ endif ifeq ($(CONFIG_DEBUG_CUSTOMOPT),y) MAXOPTIMIZATION := $(CONFIG_DEBUG_OPTLEVEL) +else + MAXOPTIMIZATION ?= -Os endif # NuttX buildroot under Linux or Cygwin @@ -73,11 +75,6 @@ ifeq ($(CONFIG_ARMV6M_TOOLCHAIN),GNU_EABI) ARCHCPUFLAGS = -mcpu=cortex-m0 -mthumb -mfloat-abi=soft endif -# Individual tools may limit the optimizatin level but, by default, the -# optimization level will be set to -Os - -MAXOPTIMIZATION ?= -Os - # Default toolchain CC = $(CROSSDEV)gcc diff --git a/arch/arm/src/armv7-a/Toolchain.defs b/arch/arm/src/armv7-a/Toolchain.defs index 21aeca56eff..35505364792 100644 --- a/arch/arm/src/armv7-a/Toolchain.defs +++ b/arch/arm/src/armv7-a/Toolchain.defs @@ -75,6 +75,8 @@ endif ifeq ($(CONFIG_DEBUG_CUSTOMOPT),y) MAXOPTIMIZATION := $(CONFIG_DEBUG_OPTLEVEL) +else + MAXOPTIMIZATION ?= -Os endif ifeq ($(CONFIG_ENDIAN_BIG),y) @@ -91,14 +93,12 @@ ifeq ($(CONFIG_ARMV7A_OABI_TOOLCHAIN),y) else CROSSDEV ?= $(TARGET_ARCH)-nuttx-eabi- endif - MAXOPTIMIZATION ?= -Os endif # Generic GNU EABI toolchain ifeq ($(CONFIG_ARMV7A_TOOLCHAIN),GNU_EABI) CROSSDEV ?= $(TARGET_ARCH)-none-eabi- - MAXOPTIMIZATION ?= -Os endif # Default toolchain diff --git a/arch/arm/src/armv7-m/Toolchain.defs b/arch/arm/src/armv7-m/Toolchain.defs index 3745142872f..7f5626bfdc4 100644 --- a/arch/arm/src/armv7-m/Toolchain.defs +++ b/arch/arm/src/armv7-m/Toolchain.defs @@ -71,6 +71,8 @@ endif ifeq ($(CONFIG_DEBUG_CUSTOMOPT),y) MAXOPTIMIZATION := $(CONFIG_DEBUG_OPTLEVEL) +else + MAXOPTIMIZATION ?= -Os endif # Parametrization for ARCHCPUFLAGS @@ -117,14 +119,12 @@ else CROSSDEV ?= arm-nuttx-eabi- ARCHCPUFLAGS = $(TOOLCHAIN_MCPU) -mthumb $(TOOLCHAIN_MFLOAT) endif - MAXOPTIMIZATION ?= -Os endif # Generic GNU EABI toolchain ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),GNU_EABI) CROSSDEV ?= arm-none-eabi- - MAXOPTIMIZATION ?= -Os ARCHCPUFLAGS = $(TOOLCHAIN_MCPU) -mthumb $(TOOLCHAIN_MFLOAT) endif @@ -132,7 +132,6 @@ endif ifeq ($(CONFIG_ARMV7M_TOOLCHAIN),CLANG) CROSSDEV ?= arm-none-eabi- - MAXOPTIMIZATION ?= -Os ARCHCPUFLAGS = -target arm-none-eabi $(TOOLCHAIN_MCPU) $(TOOLCHAIN_MFLOAT) CC = clang CXX = clang++ diff --git a/arch/arm/src/armv7-r/Toolchain.defs b/arch/arm/src/armv7-r/Toolchain.defs index be48f2d8b82..1bedd899d30 100644 --- a/arch/arm/src/armv7-r/Toolchain.defs +++ b/arch/arm/src/armv7-r/Toolchain.defs @@ -57,6 +57,8 @@ endif ifeq ($(CONFIG_DEBUG_CUSTOMOPT),y) MAXOPTIMIZATION := $(CONFIG_DEBUG_OPTLEVEL) +else + MAXOPTIMIZATION ?= -Os endif ifeq ($(CONFIG_ENDIAN_BIG),y) @@ -73,14 +75,12 @@ ifeq ($(CONFIG_ARMV7R_OABI_TOOLCHAIN),y) else CROSSDEV ?= $(TARGET_ARCH)-nuttx-eabi- endif - MAXOPTIMIZATION ?= -Os endif # Generic GNU EABI toolchain ifeq ($(CONFIG_ARMV7R_TOOLCHAIN),GNU_EABI) CROSSDEV ?= $(TARGET_ARCH)-none-eabi- - MAXOPTIMIZATION ?= -Os endif # Default toolchain diff --git a/arch/arm/src/armv8-m/Toolchain.defs b/arch/arm/src/armv8-m/Toolchain.defs index 0ccad3895b6..4a76b539247 100644 --- a/arch/arm/src/armv8-m/Toolchain.defs +++ b/arch/arm/src/armv8-m/Toolchain.defs @@ -71,6 +71,8 @@ endif ifeq ($(CONFIG_DEBUG_CUSTOMOPT),y) MAXOPTIMIZATION := $(CONFIG_DEBUG_OPTLEVEL) +else + MAXOPTIMIZATION ?= -Os endif # Parametrization for ARCHCPUFLAGS @@ -107,14 +109,12 @@ else CROSSDEV ?= arm-nuttx-eabi- ARCHCPUFLAGS = $(TOOLCHAIN_MCPU) -mthumb $(TOOLCHAIN_MFLOAT) endif - MAXOPTIMIZATION ?= -Os endif # Generic GNU EABI toolchain ifeq ($(CONFIG_ARMV8M_TOOLCHAIN),GNU_EABI) CROSSDEV ?= arm-none-eabi- - MAXOPTIMIZATION ?= -Os ARCHCPUFLAGS = $(TOOLCHAIN_MCPU) -mthumb $(TOOLCHAIN_MFLOAT) endif @@ -122,7 +122,6 @@ endif ifeq ($(CONFIG_ARMV8M_TOOLCHAIN),CLANG) CROSSDEV ?= arm-none-eabi- - MAXOPTIMIZATION ?= -Os ARCHCPUFLAGS = $(TOOLCHAIN_MCPU) -mthumb $(TOOLCHAIN_MFLOAT) endif diff --git a/arch/avr/src/avr/Toolchain.defs b/arch/avr/src/avr/Toolchain.defs index 74e93a8cfec..493bdc0af1c 100644 --- a/arch/avr/src/avr/Toolchain.defs +++ b/arch/avr/src/avr/Toolchain.defs @@ -86,13 +86,14 @@ endif ifeq ($(CONFIG_DEBUG_CUSTOMOPT),y) MAXOPTIMIZATION := $(CONFIG_DEBUG_OPTLEVEL) +else + MAXOPTIMIZATION ?= -O2 endif # NuttX buildroot GCC toolchain under Linux or Cygwin ifeq ($(CONFIG_AVR_TOOLCHAIN),BUILDROOT) CROSSDEV ?= avr-nuttx-elf- - MAXOPTIMIZATION ?= -O2 LDFLAGS += -nostartfiles -nodefaultlibs endif @@ -100,7 +101,6 @@ endif ifeq ($(CONFIG_AVR_TOOLCHAIN),CROSSPACK) CROSSDEV ?= avr- - MAXOPTIMIZATION ?= -O2 LDFLAGS += -nostartfiles -nodefaultlibs endif @@ -108,13 +108,11 @@ endif ifeq ($(CONFIG_AVR_TOOLCHAIN),LINUXGCC) CROSSDEV ?= avr- - MAXOPTIMIZATION ?= -O2 LDFLAGS += -nostartfiles -nodefaultlibs endif ifeq ($(CONFIG_AVR_TOOLCHAIN),WINAVR) CROSSDEV ?= avr- - MAXOPTIMIZATION ?= -O2 LDFLAGS += -nostartfiles -nodefaultlibs endif diff --git a/arch/misoc/src/lm32/Toolchain.defs b/arch/misoc/src/lm32/Toolchain.defs index 5e264e833ef..79961f338b2 100644 --- a/arch/misoc/src/lm32/Toolchain.defs +++ b/arch/misoc/src/lm32/Toolchain.defs @@ -57,20 +57,20 @@ endif ifeq ($(CONFIG_DEBUG_CUSTOMOPT),y) MAXOPTIMIZATION := $(CONFIG_DEBUG_OPTLEVEL) +else + MAXOPTIMIZATION ?= -Os endif # NuttX buildroot under Linux or Cygwin ifeq ($(CONFIG_LM32_TOOLCHAIN),BUILDROOT) CROSSDEV ?= lm32-nuttx-elf- - MAXOPTIMIZATION ?= -Os endif # Generic GNU toolchain ifeq ($(CONFIG_LM32_TOOLCHAIN),GNUL) CROSSDEV ?= lm32-elf- - MAXOPTIMIZATION ?= -Os endif # Default toolchain diff --git a/arch/misoc/src/minerva/Toolchain.defs b/arch/misoc/src/minerva/Toolchain.defs index fc223bcbae7..a90f39bdc3f 100644 --- a/arch/misoc/src/minerva/Toolchain.defs +++ b/arch/misoc/src/minerva/Toolchain.defs @@ -21,8 +21,10 @@ CROSSDEV = riscv32-unknown-elf- ARCHCPUFLAGS = -march=rv32i -ifeq ($(CONFIG_DEBUG_SYMBOLS),) -MAXOPTIMIZATION ?= -Os +ifeq ($(CONFIG_DEBUG_CUSTOMOPT),y) + MAXOPTIMIZATION := $(CONFIG_DEBUG_OPTLEVEL) +else + MAXOPTIMIZATION ?= -Os endif # Default toolchain diff --git a/arch/or1k/src/mor1kx/Toolchain.defs b/arch/or1k/src/mor1kx/Toolchain.defs index 95fe2ceeee2..68b7bc7f211 100644 --- a/arch/or1k/src/mor1kx/Toolchain.defs +++ b/arch/or1k/src/mor1kx/Toolchain.defs @@ -49,6 +49,8 @@ ifeq ($(CONFIG_DEBUG_CUSTOMOPT),y) MAXOPTIMIZATION := $(CONFIG_DEBUG_OPTLEVEL) +else + MAXOPTIMIZATION ?= -O2 endif # Pick correct or1k architecture selection @@ -61,7 +63,6 @@ endif #ifeq ($(CONFIG_OR1K_TOOLCHAIN),GNU_ELF) CROSSDEV ?= or1k-elf- -MAXOPTIMIZATION ?= -O2 ARCHCPUFLAGS = -mboard=de0_nano ARCHPICFLAGS = -fpic -membedded-pic LDFLAGS += -nostartfiles -nodefaultlibs diff --git a/arch/risc-v/src/rv64gc/Toolchain.defs b/arch/risc-v/src/rv64gc/Toolchain.defs index 9614a4d323a..479ec253525 100644 --- a/arch/risc-v/src/rv64gc/Toolchain.defs +++ b/arch/risc-v/src/rv64gc/Toolchain.defs @@ -49,6 +49,8 @@ endif ifeq ($(CONFIG_DEBUG_CUSTOMOPT),y) MAXOPTIMIZATION := $(CONFIG_DEBUG_OPTLEVEL) +else + MAXOPTIMIZATION ?= -Os endif # Generic GNU RVG toolchain @@ -57,13 +59,6 @@ ifeq ($(CONFIG_RISCV_TOOLCHAIN),GNU_RVG) CROSSDEV ?= riscv64-unknown-elf- endif -# Individual tools may limit the optimization level but, by default, the -# optimization level will be set to -Os - -ifeq ($(CONFIG_DEBUG_SYMBOLS),) -MAXOPTIMIZATION ?= -Os -endif - # Default toolchain CC = $(CROSSDEV)gcc diff --git a/arch/xtensa/src/lx6/Toolchain.defs b/arch/xtensa/src/lx6/Toolchain.defs index 72181b673fb..525cb4f481c 100644 --- a/arch/xtensa/src/lx6/Toolchain.defs +++ b/arch/xtensa/src/lx6/Toolchain.defs @@ -36,7 +36,7 @@ ARCHCPUFLAGS = ifeq ($(CONFIG_DEBUG_CUSTOMOPT),y) MAXOPTIMIZATION := $(CONFIG_DEBUG_OPTLEVEL) else - MAXOPTIMIZATION := -Os + MAXOPTIMIZATION ?= -Os endif # Default toolchain From e0da0bf6bdfe9633ae5c6afbff5cdab66e4665a3 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Thu, 29 Apr 2021 14:50:30 -0300 Subject: [PATCH 032/739] arch/risc-v: Fix interrupt stack alignment --- arch/risc-v/src/bl602/bl602_head.S | 2 +- arch/risc-v/src/bl602/bl602_irq.c | 4 ++-- arch/risc-v/src/c906/c906_head.S | 4 ++-- arch/risc-v/src/c906/c906_irq.c | 4 ++-- arch/risc-v/src/common/riscv_checkstack.c | 6 +++--- arch/risc-v/src/common/riscv_initialize.c | 4 ++-- arch/risc-v/src/common/riscv_internal.h | 2 +- arch/risc-v/src/esp32c3/esp32c3_interrupt.S | 2 +- arch/risc-v/src/fe310/fe310_head.S | 2 +- arch/risc-v/src/fe310/fe310_irq.c | 4 ++-- arch/risc-v/src/k210/k210_head.S | 4 ++-- arch/risc-v/src/k210/k210_irq.c | 4 ++-- arch/risc-v/src/litex/litex_head.S | 2 +- arch/risc-v/src/litex/litex_irq.c | 4 ++-- arch/risc-v/src/rv32im/riscv_assert.c | 6 +++--- arch/risc-v/src/rv64gc/riscv_assert.c | 6 +++--- 16 files changed, 30 insertions(+), 30 deletions(-) diff --git a/arch/risc-v/src/bl602/bl602_head.S b/arch/risc-v/src/bl602/bl602_head.S index a1e870e36ed..2439e13f3e8 100644 --- a/arch/risc-v/src/bl602/bl602_head.S +++ b/arch/risc-v/src/bl602/bl602_head.S @@ -85,7 +85,7 @@ exception_common: mv a1, sp /* context = sp */ -#if CONFIG_ARCH_INTERRUPTSTACK > 3 +#if CONFIG_ARCH_INTERRUPTSTACK > 15 /* Switch to interrupt stack */ lui sp, %hi(g_intstacktop) diff --git a/arch/risc-v/src/bl602/bl602_irq.c b/arch/risc-v/src/bl602/bl602_irq.c index 4686bd828b3..5b08b018563 100644 --- a/arch/risc-v/src/bl602/bl602_irq.c +++ b/arch/risc-v/src/bl602/bl602_irq.c @@ -78,10 +78,10 @@ void up_irqinitialize(void) up_irq_save(); -#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 3 +#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 15 /* Colorize the interrupt stack for debug purposes */ - size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~3); + size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~15); riscv_stack_color((FAR void *)&g_intstackalloc, intstack_size); #endif diff --git a/arch/risc-v/src/c906/c906_head.S b/arch/risc-v/src/c906/c906_head.S index f183286b72e..0bd0f6d83e0 100644 --- a/arch/risc-v/src/c906/c906_head.S +++ b/arch/risc-v/src/c906/c906_head.S @@ -191,7 +191,7 @@ exception_common: mv a1, sp /* context = sp */ -#if CONFIG_ARCH_INTERRUPTSTACK > 7 +#if CONFIG_ARCH_INTERRUPTSTACK > 15 /* Load mhartid (cpuid) */ csrr s0, mhartid @@ -203,7 +203,7 @@ exception_common: j 4f 3: la sp, g_intstacktop - addi sp, sp, -(CONFIG_ARCH_INTERRUPTSTACK & ~7) + addi sp, sp, -(CONFIG_ARCH_INTERRUPTSTACK & ~15) 4: #endif diff --git a/arch/risc-v/src/c906/c906_irq.c b/arch/risc-v/src/c906/c906_irq.c index eae7ca814ce..4b0dff714bc 100644 --- a/arch/risc-v/src/c906/c906_irq.c +++ b/arch/risc-v/src/c906/c906_irq.c @@ -72,8 +72,8 @@ void up_irqinitialize(void) /* Colorize the interrupt stack for debug purposes */ -#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 7 - size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~7); +#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 15 + size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~15); riscv_stack_color((FAR void *)&g_intstackalloc, intstack_size); #endif diff --git a/arch/risc-v/src/common/riscv_checkstack.c b/arch/risc-v/src/common/riscv_checkstack.c index ca35375e3cf..5429696cc50 100644 --- a/arch/risc-v/src/common/riscv_checkstack.c +++ b/arch/risc-v/src/common/riscv_checkstack.c @@ -176,16 +176,16 @@ ssize_t up_check_stack_remain(void) return up_check_tcbstack_remain(this_task()); } -#if CONFIG_ARCH_INTERRUPTSTACK > 3 +#if CONFIG_ARCH_INTERRUPTSTACK > 15 size_t up_check_intstack(void) { return do_stackcheck((uintptr_t)&g_intstackalloc, - (CONFIG_ARCH_INTERRUPTSTACK & ~3)); + (CONFIG_ARCH_INTERRUPTSTACK & ~15)); } size_t up_check_intstack_remain(void) { - return (CONFIG_ARCH_INTERRUPTSTACK & ~3) - up_check_intstack(); + return (CONFIG_ARCH_INTERRUPTSTACK & ~15) - up_check_intstack(); } #endif diff --git a/arch/risc-v/src/common/riscv_initialize.c b/arch/risc-v/src/common/riscv_initialize.c index abbbe169901..bcf07ba26b3 100644 --- a/arch/risc-v/src/common/riscv_initialize.c +++ b/arch/risc-v/src/common/riscv_initialize.c @@ -53,13 +53,13 @@ * ****************************************************************************/ -#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 3 +#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 15 static inline void up_color_intstack(void) { uint32_t *ptr = (uint32_t *)&g_intstackalloc; ssize_t size; - for (size = (CONFIG_ARCH_INTERRUPTSTACK & ~3); + for (size = (CONFIG_ARCH_INTERRUPTSTACK & ~15); size > 0; size -= sizeof(uint32_t)) { diff --git a/arch/risc-v/src/common/riscv_internal.h b/arch/risc-v/src/common/riscv_internal.h index 6c1e4a033da..80d89d1678a 100644 --- a/arch/risc-v/src/common/riscv_internal.h +++ b/arch/risc-v/src/common/riscv_internal.h @@ -113,7 +113,7 @@ EXTERN uint32_t g_idle_topstack; /* Address of the saved user stack pointer */ -#if CONFIG_ARCH_INTERRUPTSTACK > 3 +#if CONFIG_ARCH_INTERRUPTSTACK > 15 EXTERN uint32_t g_intstackalloc; /* Allocated stack base */ EXTERN uint32_t g_intstacktop; /* Initial top of interrupt stack */ #endif diff --git a/arch/risc-v/src/esp32c3/esp32c3_interrupt.S b/arch/risc-v/src/esp32c3/esp32c3_interrupt.S index 3b73c2c1a28..d0cf1ba2bec 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_interrupt.S +++ b/arch/risc-v/src/esp32c3/esp32c3_interrupt.S @@ -115,7 +115,7 @@ _interrupt_handler: csrr a0, mcause /* Handler arg0: Exception cause */ mv a1, sp /* Handler arg1: Context (saved registers on stack) */ -#if CONFIG_ARCH_INTERRUPTSTACK > 3 +#if CONFIG_ARCH_INTERRUPTSTACK > 15 lui sp, %hi(g_intstacktop) addi sp, sp, %lo(g_intstacktop) #endif diff --git a/arch/risc-v/src/fe310/fe310_head.S b/arch/risc-v/src/fe310/fe310_head.S index 642f3383250..5cf81a30f1e 100644 --- a/arch/risc-v/src/fe310/fe310_head.S +++ b/arch/risc-v/src/fe310/fe310_head.S @@ -139,7 +139,7 @@ exception_common: mv a1, sp /* context = sp */ -#if CONFIG_ARCH_INTERRUPTSTACK > 3 +#if CONFIG_ARCH_INTERRUPTSTACK > 15 /* Switch to interrupt stack */ lui sp, %hi(g_intstacktop) diff --git a/arch/risc-v/src/fe310/fe310_irq.c b/arch/risc-v/src/fe310/fe310_irq.c index 7a496081467..9fb90a01068 100644 --- a/arch/risc-v/src/fe310/fe310_irq.c +++ b/arch/risc-v/src/fe310/fe310_irq.c @@ -59,8 +59,8 @@ void up_irqinitialize(void) /* Colorize the interrupt stack for debug purposes */ -#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 3 - size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~3); +#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 15 + size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~15); riscv_stack_color((FAR void *)&g_intstackalloc, intstack_size); #endif diff --git a/arch/risc-v/src/k210/k210_head.S b/arch/risc-v/src/k210/k210_head.S index f5bdc32ba9a..852c53bcf0d 100644 --- a/arch/risc-v/src/k210/k210_head.S +++ b/arch/risc-v/src/k210/k210_head.S @@ -170,7 +170,7 @@ normal_irq: mv a1, sp /* context = sp */ -#if CONFIG_ARCH_INTERRUPTSTACK > 7 +#if CONFIG_ARCH_INTERRUPTSTACK > 15 /* Load mhartid (cpuid) */ csrr s0, mhartid @@ -182,7 +182,7 @@ normal_irq: j 4f 3: la sp, g_intstacktop - addi sp, sp, -(CONFIG_ARCH_INTERRUPTSTACK & ~7) + addi sp, sp, -(CONFIG_ARCH_INTERRUPTSTACK & ~15) 4: #endif diff --git a/arch/risc-v/src/k210/k210_irq.c b/arch/risc-v/src/k210/k210_irq.c index 4c0a484db7c..293a5779e3e 100644 --- a/arch/risc-v/src/k210/k210_irq.c +++ b/arch/risc-v/src/k210/k210_irq.c @@ -80,8 +80,8 @@ void up_irqinitialize(void) /* Colorize the interrupt stack for debug purposes */ -#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 7 - size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~7); +#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 15 + size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~15); riscv_stack_color((FAR void *)&g_intstackalloc, intstack_size); #endif diff --git a/arch/risc-v/src/litex/litex_head.S b/arch/risc-v/src/litex/litex_head.S index c44e9895bfc..e9a514e5949 100644 --- a/arch/risc-v/src/litex/litex_head.S +++ b/arch/risc-v/src/litex/litex_head.S @@ -126,7 +126,7 @@ exception_common: mv a1, sp /* context = sp */ -#if CONFIG_ARCH_INTERRUPTSTACK > 3 +#if CONFIG_ARCH_INTERRUPTSTACK > 15 /* Switch to interrupt stack */ lui sp, %hi(g_intstacktop) diff --git a/arch/risc-v/src/litex/litex_irq.c b/arch/risc-v/src/litex/litex_irq.c index 150783837ab..55100dfdabd 100644 --- a/arch/risc-v/src/litex/litex_irq.c +++ b/arch/risc-v/src/litex/litex_irq.c @@ -58,8 +58,8 @@ void up_irqinitialize(void) /* Colorize the interrupt stack for debug purposes */ -#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 3 - size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~3); +#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 15 + size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~15); riscv_stack_color((FAR void *)&g_intstackalloc, intstack_size); #endif diff --git a/arch/risc-v/src/rv32im/riscv_assert.c b/arch/risc-v/src/rv32im/riscv_assert.c index a5410825090..68b8f224e7e 100644 --- a/arch/risc-v/src/rv32im/riscv_assert.c +++ b/arch/risc-v/src/rv32im/riscv_assert.c @@ -173,7 +173,7 @@ static void riscv_dumpstate(void) uint32_t sp = riscv_getsp(); uint32_t ustackbase; uint32_t ustacksize; -#if CONFIG_ARCH_INTERRUPTSTACK > 3 +#if CONFIG_ARCH_INTERRUPTSTACK > 15 uint32_t istackbase; uint32_t istacksize; #endif @@ -189,9 +189,9 @@ static void riscv_dumpstate(void) /* Get the limits on the interrupt stack memory */ -#if CONFIG_ARCH_INTERRUPTSTACK > 3 +#if CONFIG_ARCH_INTERRUPTSTACK > 15 istackbase = (uint32_t)&g_intstackalloc; - istacksize = (CONFIG_ARCH_INTERRUPTSTACK & ~3); + istacksize = (CONFIG_ARCH_INTERRUPTSTACK & ~15); /* Show interrupt stack info */ diff --git a/arch/risc-v/src/rv64gc/riscv_assert.c b/arch/risc-v/src/rv64gc/riscv_assert.c index d7a9b801ed7..6a99759a1d3 100644 --- a/arch/risc-v/src/rv64gc/riscv_assert.c +++ b/arch/risc-v/src/rv64gc/riscv_assert.c @@ -184,7 +184,7 @@ static void up_dumpstate(void) uint64_t sp = riscv_getsp(); uintptr_t ustackbase; uintptr_t ustacksize; -#if CONFIG_ARCH_INTERRUPTSTACK > 7 +#if CONFIG_ARCH_INTERRUPTSTACK > 15 uintptr_t istackbase; uintptr_t istacksize; #endif @@ -200,9 +200,9 @@ static void up_dumpstate(void) /* Get the limits on the interrupt stack memory */ -#if CONFIG_ARCH_INTERRUPTSTACK > 7 +#if CONFIG_ARCH_INTERRUPTSTACK > 15 istackbase = (uintptr_t)&g_intstackalloc; - istacksize = (CONFIG_ARCH_INTERRUPTSTACK & ~7); + istacksize = (CONFIG_ARCH_INTERRUPTSTACK & ~15); /* Show interrupt stack info */ From 7ded22fb1a0072f5ff57ad8338ce11958eb78ee8 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Thu, 29 Apr 2021 14:51:59 -0300 Subject: [PATCH 033/739] risc-v/k210: Fix SMP interrupt stack size calculation --- arch/risc-v/src/k210/k210_irq.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/arch/risc-v/src/k210/k210_irq.c b/arch/risc-v/src/k210/k210_irq.c index 293a5779e3e..20492994819 100644 --- a/arch/risc-v/src/k210/k210_irq.c +++ b/arch/risc-v/src/k210/k210_irq.c @@ -81,7 +81,12 @@ void up_irqinitialize(void) /* Colorize the interrupt stack for debug purposes */ #if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 15 - size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~15); + size_t intstack_size = 0; +#ifndef CONFIG_SMP + intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~15); +#else + intstack_size = ((CONFIG_ARCH_INTERRUPTSTACK * CONFIG_SMP_NCPUS) & ~15); +#endif riscv_stack_color((FAR void *)&g_intstackalloc, intstack_size); #endif From 4f08f43a6d9aca39f32205278547c43b5043fe02 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Thu, 29 Apr 2021 15:33:34 -0300 Subject: [PATCH 034/739] boards/esp32c3-devkit: Increase MAX_TASKS to 16 on nsh/ostest configs This fixes the barrier test from ostest application --- boards/risc-v/esp32c3/esp32c3-devkit/configs/nsh/defconfig | 2 +- boards/risc-v/esp32c3/esp32c3-devkit/configs/ostest/defconfig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/configs/nsh/defconfig b/boards/risc-v/esp32c3/esp32c3-devkit/configs/nsh/defconfig index c9f134381e5..3b767b25251 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/configs/nsh/defconfig +++ b/boards/risc-v/esp32c3/esp32c3-devkit/configs/nsh/defconfig @@ -25,7 +25,7 @@ CONFIG_IDLETHREAD_STACKSIZE=2048 CONFIG_INTELHEX_BINARY=y CONFIG_LIBC_PERROR_STDOUT=y CONFIG_LIBC_STRERROR=y -CONFIG_MAX_TASKS=8 +CONFIG_MAX_TASKS=16 CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6 CONFIG_NSH_ARCHINIT=y CONFIG_NSH_BUILTIN_APPS=y diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/configs/ostest/defconfig b/boards/risc-v/esp32c3/esp32c3-devkit/configs/ostest/defconfig index 5bb112d0940..e1d91d50df7 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/configs/ostest/defconfig +++ b/boards/risc-v/esp32c3/esp32c3-devkit/configs/ostest/defconfig @@ -25,7 +25,7 @@ CONFIG_IDLETHREAD_STACKSIZE=2048 CONFIG_INTELHEX_BINARY=y CONFIG_LIBC_PERROR_STDOUT=y CONFIG_LIBC_STRERROR=y -CONFIG_MAX_TASKS=8 +CONFIG_MAX_TASKS=16 CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6 CONFIG_NSH_ARCHINIT=y CONFIG_NSH_BUILTIN_APPS=y From 2dcd41f2ab827992654372f6df831bb0999a9fac Mon Sep 17 00:00:00 2001 From: Michal Lenc Date: Thu, 29 Apr 2021 16:34:47 +0200 Subject: [PATCH 035/739] boards/arm/stm32/nucleo-f446re: added support for PWM Signed-off-by: Michal Lenc --- boards/arm/stm32/nucleo-f446re/README.txt | 36 +++-- .../stm32/nucleo-f446re/configs/pwm/defconfig | 60 ++++++++ .../arm/stm32/nucleo-f446re/include/board.h | 3 + boards/arm/stm32/nucleo-f446re/src/Make.defs | 4 + .../stm32/nucleo-f446re/src/nucleo-f446re.h | 15 ++ .../stm32/nucleo-f446re/src/stm32_bringup.c | 10 ++ .../arm/stm32/nucleo-f446re/src/stm32_pwm.c | 132 ++++++++++++++++++ 7 files changed, 245 insertions(+), 15 deletions(-) create mode 100644 boards/arm/stm32/nucleo-f446re/configs/pwm/defconfig create mode 100644 boards/arm/stm32/nucleo-f446re/src/stm32_pwm.c diff --git a/boards/arm/stm32/nucleo-f446re/README.txt b/boards/arm/stm32/nucleo-f446re/README.txt index 8fd031d455a..8acb8c19d73 100644 --- a/boards/arm/stm32/nucleo-f446re/README.txt +++ b/boards/arm/stm32/nucleo-f446re/README.txt @@ -559,21 +559,6 @@ Configurations Functionality of CAN driver can be tested by calling application "can" in NuttShell. This application sends 100 messages over CAN 1. - lcd: - ---- - This is basically an nsh configuration (see above) with added support - of ILI9225 176x220 TFT display and test framebuffer application. - - Display connection is set to SPI 3 and pinout is following: - - CS D8 - RST D6 - RS D7 - SDA D4 - CLK D3 - - Framebuffer application can be started from terminal by typing "fb". - ihm08m1_f32 and ihm08m1_b16: ---------------------------- @@ -637,3 +622,24 @@ Configurations VBUS_RATIO = 1/VBUS_gain = 19.152 For now only 3-shunt resistors configuration is supported. + + lcd: + ---- + This is basically an nsh configuration (see above) with added support + of ILI9225 176x220 TFT display and test framebuffer application. + + Display connection is set to SPI 3 and pinout is following: + + CS D8 + RST D6 + RS D7 + SDA D4 + CLK D3 + + Framebuffer application can be started from terminal by typing "fb". + + pwm: + ---- + This is an nsh configuration (see above) with added capability of pulse width + modulation. PWM output is on Timer 3 channel 1, which is pin PA_6 (D12) on + Nucleo board. Example program can be stared by "pwm" command. diff --git a/boards/arm/stm32/nucleo-f446re/configs/pwm/defconfig b/boards/arm/stm32/nucleo-f446re/configs/pwm/defconfig new file mode 100644 index 00000000000..45caa56a794 --- /dev/null +++ b/boards/arm/stm32/nucleo-f446re/configs/pwm/defconfig @@ -0,0 +1,60 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_ARCH_FPU is not set +# CONFIG_NSH_ARGCAT is not set +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +# CONFIG_NSH_CMDPARMS is not set +# CONFIG_NSH_DISABLE_IFCONFIG is not set +# CONFIG_NSH_DISABLE_PS is not set +# CONFIG_STM32_FLASH_PREFETCH is not set +CONFIG_ARCH="arm" +CONFIG_ARCH_BOARD="nucleo-f446re" +CONFIG_ARCH_BOARD_NUCLEO_F446RE=y +CONFIG_ARCH_BUTTONS=y +CONFIG_ARCH_CHIP="stm32" +CONFIG_ARCH_CHIP_STM32=y +CONFIG_ARCH_CHIP_STM32F446R=y +CONFIG_ARCH_INTERRUPTSTACK=2048 +CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARD_LATE_INITIALIZE=y +CONFIG_BOARD_LOOPSPERMSEC=8499 +CONFIG_BUILTIN=y +CONFIG_EXAMPLES_PWM=y +CONFIG_EXAMPLES_PWM_DEVPATH="/dev/pwm2" +CONFIG_HAVE_CXX=y +CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_INTELHEX_BINARY=y +CONFIG_MAX_TASKS=16 +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_LINELEN=64 +CONFIG_NSH_READLINE=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_PWM=y +CONFIG_RAM_SIZE=131072 +CONFIG_RAM_START=0x20000000 +CONFIG_RAW_BINARY=y +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_WAITPID=y +CONFIG_SDCLONE_DISABLE=y +CONFIG_START_DAY=14 +CONFIG_START_MONTH=10 +CONFIG_START_YEAR=2014 +CONFIG_STM32_CRC=y +CONFIG_STM32_JTAG_SW_ENABLE=y +CONFIG_STM32_OTGFS=y +CONFIG_STM32_PWR=y +CONFIG_STM32_TIM3=y +CONFIG_STM32_TIM3_CH1OUT=y +CONFIG_STM32_TIM3_PWM=y +CONFIG_STM32_USART2=y +CONFIG_SYSTEM_NSH=y +CONFIG_TASK_NAME_SIZE=0 +CONFIG_TESTING_OSTEST=y +CONFIG_USART2_SERIAL_CONSOLE=y +CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/arm/stm32/nucleo-f446re/include/board.h b/boards/arm/stm32/nucleo-f446re/include/board.h index f7d9a69bf34..d5b48be1c75 100644 --- a/boards/arm/stm32/nucleo-f446re/include/board.h +++ b/boards/arm/stm32/nucleo-f446re/include/board.h @@ -380,6 +380,9 @@ #define GPIO_TIM2_CH1IN (GPIO_TIM2_CH1IN_1 | GPIO_PULLUP) #define GPIO_TIM2_CH2IN (GPIO_TIM2_CH2IN_1 | GPIO_PULLUP) +/* TIM3 configuration *******************************************************/ +#define GPIO_TIM3_CH1OUT GPIO_TIM3_CH1OUT_1 + #ifdef CONFIG_BOARD_STM32_IHM08M1 /* Configuration specific to the X-NUCLEO-IHM08M1 expansion board with diff --git a/boards/arm/stm32/nucleo-f446re/src/Make.defs b/boards/arm/stm32/nucleo-f446re/src/Make.defs index 34acbcb5f1a..736ef6b85a8 100644 --- a/boards/arm/stm32/nucleo-f446re/src/Make.defs +++ b/boards/arm/stm32/nucleo-f446re/src/Make.defs @@ -49,6 +49,10 @@ ifeq ($(CONFIG_CAN),y) CSRCS += stm32_can.c endif +ifeq ($(CONFIG_STM32_PWM),y) +CSRCS += stm32_pwm.c +endif + ifeq ($(CONFIG_LIB_BOARDCTL),y) CSRCS += stm32_appinit.c endif diff --git a/boards/arm/stm32/nucleo-f446re/src/nucleo-f446re.h b/boards/arm/stm32/nucleo-f446re/src/nucleo-f446re.h index cd15cae311e..d8b0a3ce133 100644 --- a/boards/arm/stm32/nucleo-f446re/src/nucleo-f446re.h +++ b/boards/arm/stm32/nucleo-f446re/src/nucleo-f446re.h @@ -330,4 +330,19 @@ int board_ajoy_initialize(void); int stm32_foc_setup(void); #endif +/**************************************************************************** + * Name: stm32_pwm_setup + * + * Description: + * Initialize PWM and register the PWM device. + * + * Return Value: + * OK on success; a negated errno value on failure. + * + ****************************************************************************/ + +#ifdef CONFIG_PWM +int stm32_pwm_setup(void); +#endif + #endif /* __BOARDS_ARM_STM32_NUCLEO_F401RE_SRC_NUCLEO_F446RE_H */ diff --git a/boards/arm/stm32/nucleo-f446re/src/stm32_bringup.c b/boards/arm/stm32/nucleo-f446re/src/stm32_bringup.c index e0684fc425e..fce98f1d81d 100644 --- a/boards/arm/stm32/nucleo-f446re/src/stm32_bringup.c +++ b/boards/arm/stm32/nucleo-f446re/src/stm32_bringup.c @@ -182,5 +182,15 @@ int stm32_bringup(void) } #endif +#ifdef CONFIG_PWM + /* Initialize PWM and register the PWM device */ + + ret = stm32_pwm_setup(); + if (ret < 0) + { + syslog(LOG_ERR, "ERROR: stm32_pwm_setup() failed: %d\n", ret); + } +#endif + return ret; } diff --git a/boards/arm/stm32/nucleo-f446re/src/stm32_pwm.c b/boards/arm/stm32/nucleo-f446re/src/stm32_pwm.c new file mode 100644 index 00000000000..ee2c0de44ef --- /dev/null +++ b/boards/arm/stm32/nucleo-f446re/src/stm32_pwm.c @@ -0,0 +1,132 @@ +/**************************************************************************** + * boards/arm/stm32/nucleo-f446re/src/stm32_pwm.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include + +#include +#include +#include + +#include "chip.h" +#include "arm_arch.h" +#include "stm32_pwm.h" +#include "nucleo-f446re.h" + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: stm32_pwm_setup + * + * Description: + * Initialize PWM and register the PWM device. + * + * Return Value: + * OK on success; a negated errno value on failure. + * + ****************************************************************************/ + +int stm32_pwm_setup(void) +{ +#ifdef CONFIG_PWM + struct pwm_lowerhalf_s *pwm; + int ret; + + /* Call stm32_pwminitialize() to get an instance of the PWM interface */ + +#if defined(CONFIG_STM32_TIM1_PWM) + pwm = stm32_pwminitialize(1); + if (!pwm) + { + pwmerr("ERROR: Failed to get the STM32 PWM lower half\n"); + return -ENODEV; + } + + ret = pwm_register("/dev/pwm0", pwm); + if (ret < 0) + { + pwmerr("ERROR: pwm_register failed: %d\n", ret); + return ret; + } +#endif + +#if defined(CONFIG_STM32_TIM2_PWM) + pwm = stm32_pwminitialize(2); + if (!pwm) + { + pwmerr("ERROR: Failed to get the STM32 PWM lower half\n"); + return -ENODEV; + } + + ret = pwm_register("/dev/pwm1", pwm); + if (ret < 0) + { + pwmerr("ERROR: pwm_register failed: %d\n", ret); + return ret; + } +#endif + +#if defined(CONFIG_STM32_TIM3_PWM) + pwm = stm32_pwminitialize(3); + if (!pwm) + { + pwmerr("ERROR: Failed to get the STM32 PWM lower half\n"); + return -ENODEV; + } + + ret = pwm_register("/dev/pwm2", pwm); + if (ret < 0) + { + pwmerr("ERROR: pwm_register failed: %d\n", ret); + return ret; + } +#endif + +#if defined(CONFIG_STM32_TIM4_PWM) + pwm = stm32_pwminitialize(4); + if (!pwm) + { + pwmerr("ERROR: Failed to get the STM32 PWM lower half\n"); + return -ENODEV; + } + + ret = pwm_register("/dev/pwm3", pwm); + if (ret < 0) + { + pwmerr("ERROR: pwm_register failed: %d\n", ret); + return ret; + } + +#endif + + return OK; +#else + return -ENODEV; +#endif +} From d1d4237ac76323e56b605d3df2570f69d5df0b61 Mon Sep 17 00:00:00 2001 From: Max Kriegleder Date: Sat, 1 May 2021 23:55:41 +0200 Subject: [PATCH 036/739] boards/nucleo-h743zi2: Fixed pin and color of board LED LD2 --- boards/arm/stm32h7/nucleo-h743zi2/src/nucleo-h743zi2.h | 8 ++++---- boards/arm/stm32h7/nucleo-h743zi2/src/stm32_autoleds.c | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/boards/arm/stm32h7/nucleo-h743zi2/src/nucleo-h743zi2.h b/boards/arm/stm32h7/nucleo-h743zi2/src/nucleo-h743zi2.h index 55c22ca13d1..28ea554d8f3 100644 --- a/boards/arm/stm32h7/nucleo-h743zi2/src/nucleo-h743zi2.h +++ b/boards/arm/stm32h7/nucleo-h743zi2/src/nucleo-h743zi2.h @@ -78,13 +78,13 @@ #define GPIO_LD1 (GPIO_OUTPUT | GPIO_PUSHPULL | GPIO_SPEED_50MHz | \ GPIO_OUTPUT_CLEAR | GPIO_PORTB | GPIO_PIN0) #define GPIO_LD2 (GPIO_OUTPUT | GPIO_PUSHPULL | GPIO_SPEED_50MHz | \ - GPIO_OUTPUT_CLEAR | GPIO_PORTB | GPIO_PIN7) + GPIO_OUTPUT_CLEAR | GPIO_PORTE | GPIO_PIN1) #define GPIO_LD3 (GPIO_OUTPUT | GPIO_PUSHPULL | GPIO_SPEED_50MHz | \ GPIO_OUTPUT_CLEAR | GPIO_PORTB | GPIO_PIN14) -#define GPIO_LED_GREEN GPIO_LD1 -#define GPIO_LED_BLUE GPIO_LD2 -#define GPIO_LED_RED GPIO_LD3 +#define GPIO_LED_GREEN GPIO_LD1 +#define GPIO_LED_ORANGE GPIO_LD2 +#define GPIO_LED_RED GPIO_LD3 #define GPIO_OTGFS_VBUS (GPIO_INPUT|GPIO_FLOAT|GPIO_SPEED_100MHz| \ GPIO_OPENDRAIN|GPIO_PORTA|GPIO_PIN9) diff --git a/boards/arm/stm32h7/nucleo-h743zi2/src/stm32_autoleds.c b/boards/arm/stm32h7/nucleo-h743zi2/src/stm32_autoleds.c index 4105716060e..db26e84ef56 100644 --- a/boards/arm/stm32h7/nucleo-h743zi2/src/stm32_autoleds.c +++ b/boards/arm/stm32h7/nucleo-h743zi2/src/stm32_autoleds.c @@ -50,7 +50,7 @@ static const uint32_t g_ledmap[BOARD_NLEDS] = { GPIO_LED_GREEN, - GPIO_LED_BLUE, + GPIO_LED_ORANGE, GPIO_LED_RED, }; From f08aa479271e6325932e947630d31b584b0f6ab1 Mon Sep 17 00:00:00 2001 From: Abdelatif Guettouche Date: Mon, 3 May 2021 13:46:46 +0100 Subject: [PATCH 037/739] tools/esp32/mk_qemu_img.sh: Refactor the dd commands and suppress all the status output. Signed-off-by: Abdelatif Guettouche --- tools/esp32/mk_qemu_img.sh | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tools/esp32/mk_qemu_img.sh b/tools/esp32/mk_qemu_img.sh index 357b9647921..12c9429c715 100755 --- a/tools/esp32/mk_qemu_img.sh +++ b/tools/esp32/mk_qemu_img.sh @@ -39,6 +39,10 @@ usage() { echo "" } +imgappend() { + dd of="${1}" if="${2}" bs=1 seek="$(printf '%d' ${3})" conv=notrunc status=none +} + while [ -n "${1}" ]; do case "${1}" in -b ) @@ -82,10 +86,10 @@ printf "Generating %s...\n" "${FLASH_IMG}" printf "\tBootloader: %s\n" "${BOOTLOADER_IMG}" printf "\tPartition Table: %s\n" "${PARTITION_IMG}" -dd if=/dev/zero bs=1024 count=4096 of="${FLASH_IMG}" && \ -dd if="${BOOTLOADER_IMG}" bs=1 seek="$(printf '%d' 0x1000)" of="${FLASH_IMG}" conv=notrunc && \ -dd if="${PARTITION_IMG}" bs=1 seek="$(printf '%d' 0x8000)" of="${FLASH_IMG}" conv=notrunc && \ -dd if="${NUTTX_IMG}" bs=1 seek="$(printf '%d' 0x10000)" of="${FLASH_IMG}" conv=notrunc +dd if=/dev/zero bs=1024 count=4096 of="${FLASH_IMG}" status=none +imgappend ${FLASH_IMG} ${BOOTLOADER_IMG} 0x1000 +imgappend ${FLASH_IMG} ${PARTITION_IMG} 0x8000 +imgappend ${FLASH_IMG} ${NUTTX_IMG} 0x10000 if [ ${?} -ne 0 ]; then printf "Failed to generate %s!\n" "${FLASH_IMG}" From 1ea25a83fe87e98d20c4175325476a2de5b1df66 Mon Sep 17 00:00:00 2001 From: Abdelatif Guettouche Date: Mon, 3 May 2021 13:55:27 +0100 Subject: [PATCH 038/739] tools/esp32/mk_qemu_img.sh: Group the offsets in variables. --- tools/esp32/mk_qemu_img.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tools/esp32/mk_qemu_img.sh b/tools/esp32/mk_qemu_img.sh index 12c9429c715..4dfaeae0112 100755 --- a/tools/esp32/mk_qemu_img.sh +++ b/tools/esp32/mk_qemu_img.sh @@ -23,6 +23,9 @@ SCRIPT_NAME=$(basename "${0}") BOOTLOADER_IMG="" PARTITION_IMG="" +BOOTLOADER_OFFSET=0x1000 +PARTITION_OFFSET=0x8000 +NUTTX_OFFSET=0x10000 NUTTX_IMG="nuttx.bin" FLASH_IMG="esp32_qemu_img.bin" @@ -87,9 +90,9 @@ printf "\tBootloader: %s\n" "${BOOTLOADER_IMG}" printf "\tPartition Table: %s\n" "${PARTITION_IMG}" dd if=/dev/zero bs=1024 count=4096 of="${FLASH_IMG}" status=none -imgappend ${FLASH_IMG} ${BOOTLOADER_IMG} 0x1000 -imgappend ${FLASH_IMG} ${PARTITION_IMG} 0x8000 -imgappend ${FLASH_IMG} ${NUTTX_IMG} 0x10000 +imgappend ${FLASH_IMG} ${BOOTLOADER_IMG} ${BOOTLOADER_OFFSET} +imgappend ${FLASH_IMG} ${PARTITION_IMG} ${PARTITION_OFFSET} +imgappend ${FLASH_IMG} ${NUTTX_IMG} ${NUTTX_OFFSET} if [ ${?} -ne 0 ]; then printf "Failed to generate %s!\n" "${FLASH_IMG}" From 8efec13ab077bd82269ec3bc2193ba01642fdff9 Mon Sep 17 00:00:00 2001 From: Nathan Hartman <59230071+hartmannathan@users.noreply.github.com> Date: Mon, 3 May 2021 13:00:18 -0400 Subject: [PATCH 039/739] drivers/motor - Fix CFLAGS path * drivers/motor/Make.defs b/drivers/motor/Make.defs: Fix typo in MOTOR_CFLAGS path (motr -> motor) --- drivers/motor/Make.defs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/motor/Make.defs b/drivers/motor/Make.defs index 5a05409b923..d369148d45c 100644 --- a/drivers/motor/Make.defs +++ b/drivers/motor/Make.defs @@ -28,7 +28,7 @@ endif MOTOR_DEPPATH := --dep-path motor MOTOR_VPATH := :motor -MOTOR_CFLAGS := ${shell $(INCDIR) "$(CC)" $(TOPDIR)$(DELIM)drivers$(DELIM)motr} +MOTOR_CFLAGS := ${shell $(INCDIR) "$(CC)" $(TOPDIR)$(DELIM)drivers$(DELIM)motor} DEPPATH += $(MOTOR_DEPPATH) VPATH += $(MOTOR_VPATH) From a61f70d57181ce2a2ff38f25c6080b6da9504d40 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Tue, 20 Apr 2021 08:33:01 -0700 Subject: [PATCH 040/739] inet:sockif Fix warning --- net/inet/inet_sockif.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/inet/inet_sockif.c b/net/inet/inet_sockif.c index 453507e93d9..b47cb4d3732 100644 --- a/net/inet/inet_sockif.c +++ b/net/inet/inet_sockif.c @@ -1272,7 +1272,7 @@ static ssize_t inet_sendmsg(FAR struct socket *psock, for (len = 0, iov = msg->msg_iov; iov != end; iov++) { - memcpy(buf + len, iov->iov_base, iov->iov_len); + memcpy(((unsigned char *)buf) + len, iov->iov_base, iov->iov_len); len += iov->iov_len; } From 8f8befaa25f48cbfc36aa9f5fcf064c81ac3e5a4 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Tue, 20 Apr 2021 08:16:19 -0700 Subject: [PATCH 041/739] mtd:ramtron Use inttypes in printing macros --- drivers/mtd/ramtron.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/mtd/ramtron.c b/drivers/mtd/ramtron.c index c6a7cbc1ddc..4cbe13015d6 100644 --- a/drivers/mtd/ramtron.c +++ b/drivers/mtd/ramtron.c @@ -41,6 +41,7 @@ #include #include +#include #include #include #include @@ -506,10 +507,10 @@ static inline int ramtron_readid(struct ramtron_dev_s *priv) UNUSED(manufacturer); /* Eliminate warnings when debug is off */ UNUSED(memory); /* Eliminate warnings when debug is off */ - finfo( - "RAMTRON %s of size %d bytes (mf:%02x mem:%02x cap:%02x part:%02x)\n", - priv->part->name, priv->part->size, - manufacturer, memory, capacity, part); + finfo("RAMTRON %s of size %" PRIu32 " bytes (mf:%02" PRIx16 " mem:%02" + PRIx16 " cap:%02" PRIx16 " part:%02" PRIx16 ")\n", + priv->part->name, priv->part->size, manufacturer, memory, + capacity, part); priv->sectorshift = RAMTRON_EMULATE_SECTOR_SHIFT; priv->nsectors = priv->part->size / @@ -945,7 +946,7 @@ static int ramtron_ioctl(FAR struct mtd_dev_s *dev, geo->neraseblocks = priv->nsectors; ret = OK; - finfo("blocksize: %d erasesize: %d neraseblocks: %d\n", + finfo("blocksize: %ld erasesize: %ld neraseblocks: %ld\n", geo->blocksize, geo->erasesize, geo->neraseblocks); } } From 22b719945f8fb7a86dcbd84f0e39c4e1bfd3cc45 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Tue, 20 Apr 2021 08:31:55 -0700 Subject: [PATCH 042/739] fs:cromf Use inttypes in printing macros --- fs/cromfs/fs_cromfs.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/fs/cromfs/fs_cromfs.c b/fs/cromfs/fs_cromfs.c index 71b27a22fa4..644d7823dc5 100644 --- a/fs/cromfs/fs_cromfs.c +++ b/fs/cromfs/fs_cromfs.c @@ -28,6 +28,7 @@ #include #include +#include #include #include #include @@ -509,7 +510,8 @@ static int cromfs_compare_node(FAR const struct cromfs_volume_s *fs, name = (FAR char *)cromfs_offset2addr(fs, node->cn_name); namlen = strlen(name); - finfo("Compare %s to %s[0-%u]\n", name, cpnode->segment, cpnode->seglen); + finfo("Compare %s to %s[0-%" PRIu16 "]\n", name, cpnode->segment, + cpnode->seglen); /* If the lengths of the name does not match the length of the next path * segment, then this is not the node we are looking for. @@ -952,8 +954,8 @@ static ssize_t cromfs_read(FAR struct file *filep, FAR char *buffer, src = (FAR const uint8_t *)currhdr + LZF_TYPE0_HDR_SIZE; memcpy(dest, &src[copyoffs], copysize); - finfo("blkoffs=%lu ulen=%u copysize=%u\n", - (unsigned long)blkoffs, ulen, copysize); + finfo("blkoffs=%" PRIu32 " ulen=%" PRIu16 " copysize=%u\n", + blkoffs, ulen, copysize); } else { @@ -986,10 +988,9 @@ static ssize_t cromfs_read(FAR struct file *filep, FAR char *buffer, ff->ff_ulen = decomplen; } - finfo( - "voloffs=%lu blkoffs=%lu ulen=%u ff_offset=%u copysize=%u\n", - (unsigned long)voloffs, (unsigned long)blkoffs, ulen, - ff->ff_offset, copysize); + finfo("voloffs=%" PRIu32 " blkoffs=%" PRIu32 + " ulen=%" PRIu16 " ff_offset=%" PRIu32 " copysize=%u\n", + voloffs, blkoffs, ulen, ff->ff_offset, copysize); DEBUGASSERT(ff->ff_ulen >= copysize); } else @@ -1025,10 +1026,11 @@ static ssize_t cromfs_read(FAR struct file *filep, FAR char *buffer, ff->ff_ulen = decomplen; } - finfo("voloffs=%lu blkoffs=%lu ulen=%u clen=%u ff_offset=%u " - "copyoffs=%u copysize=%u\n", - (unsigned long)voloffs, (unsigned long)blkoffs, ulen, - clen, ff->ff_offset, copyoffs, copysize); + finfo("voloffs=%" PRIu32 " blkoffs=%" PRIu32 " ulen=%" PRIu16 + " clen=%" PRIu16 " ff_offset=%" PRIu32 + " copyoffs=%u copysize=%u\n", + voloffs, blkoffs, ulen, clen, ff->ff_offset, + copyoffs, copysize); DEBUGASSERT(ff->ff_ulen >= (copyoffs + copysize)); /* Then copy to user buffer */ @@ -1254,7 +1256,7 @@ static int cromfs_readdir(struct inode *mountpt, struct fs_dirent_s *dir) * special error -ENOENT */ - finfo("Entry %d: End of directory\n", offset); + finfo("Entry %" PRIu32 ": End of directory\n", offset); return -ENOENT; } @@ -1269,7 +1271,7 @@ static int cromfs_readdir(struct inode *mountpt, struct fs_dirent_s *dir) * special error -ENOENT */ - finfo("Entry %d: End of directory\n", offset); + finfo("Entry %" PRIu32 ": End of directory\n", offset); return -ENOENT; } @@ -1284,7 +1286,7 @@ static int cromfs_readdir(struct inode *mountpt, struct fs_dirent_s *dir) /* Save the filename and file type */ name = (FAR char *)cromfs_offset2addr(fs, node->cn_name); - finfo("Entry %lu: %s\n", (unsigned long)offset, name); + finfo("Entry %" PRIu32 ": %s\n", offset, name); strncpy(dir->fd_dir.d_name, name, NAME_MAX); switch (node->cn_mode & S_IFMT) From e155af891a88c97fd27a7ea94ebf77bd9699d6f5 Mon Sep 17 00:00:00 2001 From: Brennan Ashton Date: Sun, 2 May 2021 22:16:54 -0700 Subject: [PATCH 043/739] sensor: Fix bad bit mask macro in mpu60x0 --- drivers/sensors/mpu60x0.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/sensors/mpu60x0.c b/drivers/sensors/mpu60x0.c index 35d622fc86a..84edf65f321 100644 --- a/drivers/sensors/mpu60x0.c +++ b/drivers/sensors/mpu60x0.c @@ -77,7 +77,7 @@ /* Masks and shifts @v into bit field @m */ -#define TO_BITFIELD(m,v) ((v) & MASK(m ##__WIDTH) << (m ##__SHIFT)) +#define TO_BITFIELD(m,v) (((v) & MASK(m ##__WIDTH)) << (m ##__SHIFT)) /* Un-masks and un-shifts bit field @m from @v */ From 2c91805d8ffbd40a1423075ab196610f2820b893 Mon Sep 17 00:00:00 2001 From: Brennan Ashton Date: Sun, 2 May 2021 22:17:35 -0700 Subject: [PATCH 044/739] boards/stm32f7: Add i2c and mpu60x0 support to nucleo-144 --- boards/arm/stm32f7/nucleo-144/README.txt | 2 + .../nucleo-144/configs/f767-evalos/defconfig | 5 ++ .../nucleo-144/src/stm32_appinitialize.c | 47 +++++++++++++++++++ drivers/sensors/mpu60x0.c | 25 ++++++++-- 4 files changed, 75 insertions(+), 4 deletions(-) diff --git a/boards/arm/stm32f7/nucleo-144/README.txt b/boards/arm/stm32f7/nucleo-144/README.txt index 9447b2eb3e4..4ee4da3e5fa 100644 --- a/boards/arm/stm32f7/nucleo-144/README.txt +++ b/boards/arm/stm32f7/nucleo-144/README.txt @@ -573,6 +573,8 @@ f7xx-evalos: - Configures nsh with advanced features such as autocompletion. - Configures the on-board LEDs to work with the 'leds' example app. - Configures the 'helloxx' example app. + - Adds character device for i2c1 + - Tries to register mpu60x0 IMU to i2c1 NOTES: diff --git a/boards/arm/stm32f7/nucleo-144/configs/f767-evalos/defconfig b/boards/arm/stm32f7/nucleo-144/configs/f767-evalos/defconfig index 34575a9ca76..d6af52c9888 100644 --- a/boards/arm/stm32f7/nucleo-144/configs/f767-evalos/defconfig +++ b/boards/arm/stm32f7/nucleo-144/configs/f767-evalos/defconfig @@ -31,6 +31,7 @@ CONFIG_HAVE_CXX=y CONFIG_HAVE_CXXINITIALIZE=y CONFIG_MAX_TASKS=16 CONFIG_MM_REGIONS=3 +CONFIG_MPU60X0_I2C=y CONFIG_NSH_ARCHINIT=y CONFIG_NSH_BUILTIN_APPS=y CONFIG_NSH_FILEIOSIZE=512 @@ -49,14 +50,18 @@ CONFIG_SCHED_HPWORK=y CONFIG_SCHED_LPWORK=y CONFIG_SCHED_WAITPID=y CONFIG_SDCLONE_DISABLE=y +CONFIG_SENSORS=y +CONFIG_SENSORS_MPU60X0=y CONFIG_SPI=y CONFIG_STACK_COLORATION=y CONFIG_START_DAY=30 CONFIG_START_MONTH=11 CONFIG_START_YEAR=2015 +CONFIG_STM32F7_I2C1=y CONFIG_STM32F7_SERIALBRK_BSDCOMPAT=y CONFIG_STM32F7_SERIAL_DISABLE_REORDERING=y CONFIG_STM32F7_USART_BREAKS=y +CONFIG_SYSTEM_I2CTOOL=y CONFIG_SYSTEM_NSH=y CONFIG_TASK_NAME_SIZE=0 CONFIG_USART3_SERIAL_CONSOLE=y diff --git a/boards/arm/stm32f7/nucleo-144/src/stm32_appinitialize.c b/boards/arm/stm32f7/nucleo-144/src/stm32_appinitialize.c index b851b3dade6..8177e5b548b 100644 --- a/boards/arm/stm32f7/nucleo-144/src/stm32_appinitialize.c +++ b/boards/arm/stm32f7/nucleo-144/src/stm32_appinitialize.c @@ -48,7 +48,13 @@ #include "nucleo-144.h" #include +#include +#include #include +#include + +#include "stm32_i2c.h" + #ifdef CONFIG_STM32_ROMFS #include "stm32_romfs.h" #endif @@ -97,6 +103,13 @@ int stm32f7_can_setup(void); int board_app_initialize(uintptr_t arg) { int ret; +#ifdef CONFIG_I2C + int i2c_bus; + FAR struct i2c_master_s *i2c; +#ifdef CONFIG_MPU60X0_I2C + FAR struct mpu_config_s *mpu_config; +#endif +#endif #ifdef CONFIG_FS_PROCFS /* Mount the procfs file system */ @@ -220,6 +233,40 @@ int board_app_initialize(uintptr_t arg) } #endif +#if defined(CONFIG_I2C) && defined(CONFIG_STM32F7_I2C1) + i2c_bus = 1; + i2c = stm32_i2cbus_initialize(i2c_bus); + if (i2c == NULL) + { + syslog(LOG_ERR, "ERROR: Failed to get I2C%d interface\n", i2c_bus); + } + else + { +#if defined(CONFIG_SYSTEM_I2CTOOL) + ret = i2c_register(i2c, i2c_bus); + if (ret < 0) + { + syslog(LOG_ERR, "ERROR: Failed to register I2C%d driver: %d\n", + i2c_bus, ret); + } +#endif + +#ifdef CONFIG_MPU60X0_I2C + mpu_config = kmm_zalloc(sizeof(struct mpu_config_s)); + if (mpu_config == NULL) + { + syslog(LOG_ERR, "ERROR: Failed to allocate mpu60x0 driver\n"); + } + else + { + mpu_config->i2c = i2c; + mpu_config->addr = 0x68; + mpu60x0_register("/dev/imu0", mpu_config); + } +#endif + } +#endif + UNUSED(ret); return OK; } diff --git a/drivers/sensors/mpu60x0.c b/drivers/sensors/mpu60x0.c index 84edf65f321..fb7f13aab60 100644 --- a/drivers/sensors/mpu60x0.c +++ b/drivers/sensors/mpu60x0.c @@ -693,6 +693,7 @@ static void inline mpu_unlock(FAR struct mpu_dev_s *dev) static int mpu_reset(FAR struct mpu_dev_s *dev) { + int ret; #ifdef CONFIG_MPU60X0_SPI if (dev->config.spi == NULL) { @@ -709,7 +710,12 @@ static int mpu_reset(FAR struct mpu_dev_s *dev) /* Awaken chip, issue hardware reset */ - __mpu_write_pwr_mgmt_1(dev, PWR_MGMT_1__DEVICE_RESET); + ret = __mpu_write_pwr_mgmt_1(dev, PWR_MGMT_1__DEVICE_RESET); + if (ret != OK) + { + snerr("Could not find mpu60x0!\n"); + return ret; + } /* Wait for reset cycle to finish (note: per the datasheet, we don't need * to hold NSS for this) @@ -994,6 +1000,19 @@ int mpu60x0_register(FAR const char *path, FAR struct mpu_config_s *config) priv->config = *config; + /* Reset the chip, to give it an initial configuration. */ + + ret = mpu_reset(priv); + if (ret < 0) + { + snerr("ERROR: Failed to configure mpu60x0: %d\n", ret); + + nxmutex_destroy(&priv->lock); + + kmm_free(priv); + return ret; + } + /* Register the device node. */ ret = register_driver(path, &g_mpu_fops, 0666, priv); @@ -1007,7 +1026,5 @@ int mpu60x0_register(FAR const char *path, FAR struct mpu_config_s *config) return ret; } - /* Reset the chip, to give it an initial configuration. */ - - return mpu_reset(priv); + return OK; } From b01ddef61b70453ca4e98922492247e90fb48707 Mon Sep 17 00:00:00 2001 From: Sara Souza Date: Thu, 22 Apr 2021 17:28:20 -0300 Subject: [PATCH 045/739] risc-v/esp32-c3: Adds freerun wrapper --- arch/risc-v/src/esp32c3/Kconfig | 7 + arch/risc-v/src/esp32c3/Make.defs | 4 + arch/risc-v/src/esp32c3/esp32c3_freerun.c | 354 ++++++++++++++++++ arch/risc-v/src/esp32c3/esp32c3_freerun.h | 145 +++++++ arch/risc-v/src/esp32c3/esp32c3_tim.c | 30 +- arch/risc-v/src/esp32c3/esp32c3_tim.h | 2 + .../risc-v/src/esp32c3/hardware/esp32c3_tim.h | 2 +- 7 files changed, 542 insertions(+), 2 deletions(-) create mode 100644 arch/risc-v/src/esp32c3/esp32c3_freerun.c create mode 100644 arch/risc-v/src/esp32c3/esp32c3_freerun.h diff --git a/arch/risc-v/src/esp32c3/Kconfig b/arch/risc-v/src/esp32c3/Kconfig index 8115c55fdcd..72e5090a542 100644 --- a/arch/risc-v/src/esp32c3/Kconfig +++ b/arch/risc-v/src/esp32c3/Kconfig @@ -403,6 +403,13 @@ config ESP32C3_ONESHOT Enable a wrapper around the low level timer/counter functions to support one-shot timer. +config ESP32C3_FREERUN + bool "TIM free-running wrapper" + default n + ---help--- + Enable a wrapper around the low level timer/counter functions to + support a free-running timer. + endmenu # Timer/counter Configuration endif # ESP32C3_TIMER diff --git a/arch/risc-v/src/esp32c3/Make.defs b/arch/risc-v/src/esp32c3/Make.defs index 30d217ff687..7c333a7486a 100644 --- a/arch/risc-v/src/esp32c3/Make.defs +++ b/arch/risc-v/src/esp32c3/Make.defs @@ -100,6 +100,10 @@ ifeq ($(CONFIG_ESP32C3_RT_TIMER),y) CHIP_CSRCS += esp32c3_rt_timer.c endif +ifeq ($(CONFIG_ESP32C3_FREERUN),y) +CHIP_CSRCS += esp32c3_freerun.c +endif + ifeq ($(CONFIG_ESP32C3_DISABLE_STDC_ATOMIC),) CHIP_CSRCS += esp32c3_std_atomic.c endif diff --git a/arch/risc-v/src/esp32c3/esp32c3_freerun.c b/arch/risc-v/src/esp32c3/esp32c3_freerun.c new file mode 100644 index 00000000000..635a2497f7b --- /dev/null +++ b/arch/risc-v/src/esp32c3/esp32c3_freerun.c @@ -0,0 +1,354 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/esp32c3_freerun.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "esp32c3_freerun.h" +#include "esp32c3_clockconfig.h" +#include "esp32c3_gpio.h" + +#ifdef CONFIG_ESP32C3_FREERUN + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#define MAX_TIMERS 2 +#define MAX_US_RESOLUTION 819 +#define TIMER_WIDTH 54 + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: esp32c3_freerun_handler + * + * Description: + * Timer interrupt callback. When the freerun timer counter overflows, + * this interrupt will occur. We will just increment an overflow counter. + * + * Input Parameters: + * irq - IRQ associated to that interrupt. + * arg - An opaque argument provided when the interrupt + * was registered. + * + * Returned Value: + * OK + * + ****************************************************************************/ + +#ifndef CONFIG_CLOCK_TIMEKEEPING +static int esp32c3_freerun_handler(int irq, void *context, void *arg) +{ + struct esp32c3_freerun_s *freerun = (struct esp32c3_freerun_s *) arg; + + DEBUGASSERT(freerun != NULL); + + freerun->overflow++; + ESP32C3_TIM_SETALRM(freerun->tch, true); /* Re-enables the alarm */ + ESP32C3_TIM_ACKINT(freerun->tch); /* Clear the Interrupt */ + return OK; +} +#endif /* CONFIG_CLOCK_TIMEKEEPING */ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: esp32c3_freerun_initialize + * + * Description: + * Initialize the freerun timer wrapper. + * + * Input Parameters: + * freerun - Caller allocated instance of the freerun + * state structure + * chan - Timer counter channel to be used. + * resolution - The required resolution of the timer in units of + * microseconds. NOTE that the range is restricted to + * the range of uint16_t (excluding zero). + * + * Returned Value: + * Zero (OK) is returned on success; a negated errno value is returned + * on failure. + * + ****************************************************************************/ + +int esp32c3_freerun_initialize(struct esp32c3_freerun_s *freerun, int chan, + uint16_t resolution) +{ + uint16_t pre; + int ret = OK; + + tmrinfo("chan=%d resolution=%d usecs\n", chan, resolution); + + DEBUGASSERT(freerun != NULL); + DEBUGASSERT(chan >= 0); + DEBUGASSERT(chan < MAX_TIMERS); + DEBUGASSERT(resolution > 0); + + /* We can't have a resolution bigger than this. + * The ESP32-C3 prescaler doesn't support. + * max resolution = (max prescaler * USEC_PER_SEC) / esp32c3_clk_apb_freq() + */ + + DEBUGASSERT(resolution <= MAX_US_RESOLUTION); + + freerun->tch = esp32c3_tim_init(chan); + if (freerun->tch == NULL) + { + tmrerr("ERROR: Failed to allocate TIM %d\n", chan); + ret = -EBUSY; + } + else + { + /* Initialize the remaining fields in the state structure. */ + + freerun->chan = chan; + freerun->resolution = resolution; + freerun->max_timeout = (UINT64_C(1) << (TIMER_WIDTH - 1)); + + /* Ensure timer is disabled. + * Change the prescaler divider with the timer enabled can lead to + * unpredictable results. + */ + + ESP32C3_TIM_STOP(freerun->tch); + + /* Configure clock source */ + + ESP32C3_TIM_CLK_SRC(freerun->tch, ESP32C3_TIM_APB_CLK); + + /* Calculate the suitable prescaler for a period + * for the requested resolution. + */ + + pre = esp32c3_clk_apb_freq() * resolution / USEC_PER_SEC; + + tmrinfo("pre=% "PRIu16 " clk=%d \n", pre, esp32c3_clk_apb_freq()); + + /* Configure TIMER prescaler */ + + ESP32C3_TIM_SETPRE(freerun->tch, pre); + + /* Configure TIMER mode */ + + ESP32C3_TIM_SETMODE(freerun->tch, ESP32C3_TIM_MODE_UP); + + /* Clear TIMER counter value */ + + ESP32C3_TIM_CLEAR(freerun->tch); + + /* Set the maximum timeout */ + + ESP32C3_TIM_SETALRVL(freerun->tch, freerun->max_timeout); + +#ifndef CONFIG_CLOCK_TIMEKEEPING + + /* Set the interrupt */ + + freerun->overflow = 0; + + /* Enable autoreload */ + + ESP32C3_TIM_SETARLD(freerun->tch, true); + + /* Enable TIMER alarm */ + + ESP32C3_TIM_SETALRM(freerun->tch, true); + + /* Clear Interrupt Bits Status */ + + ESP32C3_TIM_ACKINT(freerun->tch); + + /* Register the handler */ + + { + irqstate_t flags = enter_critical_section(); + ret = ESP32C3_TIM_SETISR(freerun->tch, esp32c3_freerun_handler, + freerun); + leave_critical_section(flags); + } + + if (ret == OK) + { + ESP32C3_TIM_ENABLEINT(freerun->tch); + } + +#endif + /* Finally, start the TIMER */ + + ESP32C3_TIM_START(freerun->tch); + } + + return ret; +} + +/**************************************************************************** + * Name: esp32c3_freerun_counter + * + * Description: + * Read the counter register of the free-running timer. + * + * Input Parameters: + * freerun - Caller allocated instance of the freerun state + * structure. This structure must have been previously + * initialized via a call to + * esp32c3_freerun_initialize(); + * ts - The location in which to return the time from the + * free-running timer. + * + * Returned Value: + * Zero (OK) is returned on success; a negated errno value is returned + * on failure. + * + ****************************************************************************/ + +#ifndef CONFIG_CLOCK_TIMEKEEPING + +int esp32c3_freerun_counter(struct esp32c3_freerun_s *freerun, + struct timespec *ts) +{ + uint64_t usec; + uint64_t counter; + uint64_t verify; + uint32_t overflow; + uint32_t sec; + int pending; + irqstate_t flags; + + DEBUGASSERT(freerun != NULL); + DEBUGASSERT(ts != NULL); + DEBUGASSERT(freerun->tch != NULL); + + /* Temporarily disable the overflow counter. */ + + flags = enter_critical_section(); + + overflow = freerun->overflow; + ESP32C3_TIM_GETCTR(freerun->tch, &counter); + pending = ESP32C3_TIM_CHECKINT(freerun->tch); + ESP32C3_TIM_GETCTR(freerun->tch, &verify); + + /* If an interrupt was pending before we re-enabled interrupts, + * then the overflow needs to be incremented. + */ + + if (pending) + { + ESP32C3_TIM_ACKINT(freerun->tch); + + /* Increment the overflow count and use the value of the + * guaranteed to be AFTER the overflow occurred. + */ + + overflow++; + counter = verify; + + /* Update freerun overflow counter. */ + + freerun->overflow = overflow; + } + + leave_critical_section(flags); + + tmrinfo("counter=%" PRIu64 " (%" PRIu64 ") overflow=%" PRIu32 + ", pending=%i\n", + counter, verify, overflow, pending); + + usec = (uint64_t)(((overflow * freerun->max_timeout) + counter) + * freerun->resolution); + + /* And return the value of the timer */ + + sec = (uint32_t)(usec / USEC_PER_SEC); + ts->tv_sec = sec; + ts->tv_nsec = (usec - (sec * USEC_PER_SEC)) * NSEC_PER_USEC; + + tmrinfo(" usec=%" PRIu64 " ts=(%lu, %lu)\n", + usec, (unsigned long)ts->tv_sec, (unsigned long)ts->tv_nsec); + + return OK; +} + +#endif /* CONFIG_CLOCK_TIMEKEEPING */ + +/**************************************************************************** + * Name: esp32c3_freerun_uninitialize + * + * Description: + * Stop the free-running timer and release all resources that it uses. + * + * Input Parameters: + * freerun - Caller allocated instance of the freerun state + * structure. This structure must have been previously + * initialized via a call to + * esp32c3_freerun_initialize(); + * + * Returned Value: + * Zero (OK) is returned on success; a negated errno value is returned + * on failure. + * + ****************************************************************************/ + +int esp32c3_freerun_uninitialize(struct esp32c3_freerun_s *freerun) +{ + int ret; + DEBUGASSERT(freerun != NULL); + DEBUGASSERT(freerun->tch != NULL); + + /* Stop timer */ + + ESP32C3_TIM_STOP(freerun->tch); + + /* Disable timer interrupt */ + + ESP32C3_TIM_DISABLEINT(freerun->tch); + + /* Detach handler */ + + ret = ESP32C3_TIM_SETISR(freerun->tch, NULL, NULL); + + /* Free the timer */ + + esp32c3_tim_deinit(freerun->tch); + freerun->tch = NULL; + + return ret; +} + +#endif /* CONFIG_ESP32C3_FREERUN */ diff --git a/arch/risc-v/src/esp32c3/esp32c3_freerun.h b/arch/risc-v/src/esp32c3/esp32c3_freerun.h new file mode 100644 index 00000000000..d80da590489 --- /dev/null +++ b/arch/risc-v/src/esp32c3/esp32c3_freerun.h @@ -0,0 +1,145 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/esp32c3_freerun.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_FREERUN_H +#define __ARCH_RISCV_SRC_ESP32C3_FREERUN_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +#include "esp32c3_tim.h" + +#ifdef CONFIG_ESP32C3_FREERUN + +/**************************************************************************** + * Public Types + ****************************************************************************/ + +/* The freerun client must allocate an instance of this structure and called + * esp32c3_freerun_initialize() before using the freerun facilities. The + * client should not access the contents of this structure directly since + * the contents are subject to change. + */ + +struct esp32c3_freerun_s +{ + uint8_t chan; /* The timer/counter in use */ + uint32_t overflow; /* Timer counter overflow */ + uint16_t resolution; /* Timer resolution */ + uint64_t max_timeout; /* Maximum timeout to overflow */ + FAR struct esp32c3_tim_dev_s *tch; /* Handle returned by esp32c3_tim_init() */ +}; + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +#undef EXTERN +#if defined(__cplusplus) +#define EXTERN extern "C" +extern "C" +{ +#else +#define EXTERN extern +#endif + +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ + +/**************************************************************************** + * Name: esp32c3_freerun_initialize + * + * Description: + * Initialize the freerun timer wrapper. + * + * Input Parameters: + * freerun - Caller allocated instance of the freerun + * state structure + * chan - Timer counter channel to be used. + * resolution - The required resolution of the timer in units of + * microseconds. NOTE that the range is restricted to + * the range of uint16_t (excluding zero). + * + * Returned Value: + * Zero (OK) is returned on success; a negated errno value is returned + * on failure. + * + ****************************************************************************/ + +int esp32c3_freerun_initialize(struct esp32c3_freerun_s *freerun, int chan, + uint16_t resolution); + +/**************************************************************************** + * Name: esp32c3_freerun_counter + * + * Description: + * Read the counter register of the free-running timer. + * + * Input Parameters: + * freerun - Caller allocated instance of the freerun state + * structure. This structure must have been previously + * initialized via a call to + * esp32c3_freerun_initialize(); + * ts - The location in which to return the time from the + * free-running timer. + * + * Returned Value: + * Zero (OK) is returned on success; a negated errno value is returned + * on failure. + * + ****************************************************************************/ + +int esp32c3_freerun_counter(struct esp32c3_freerun_s *freerun, + struct timespec *ts); + +/**************************************************************************** + * Name: esp32c3_freerun_uninitialize + * + * Description: + * Stop the free-running timer and release all resources that it uses. + * + * Input Parameters: + * freerun - Caller allocated instance of the freerun state + * structure. This structure must have been previously + * initialized via a call to + * esp32c3_freerun_initialize(); + * + * Returned Value: + * Zero (OK) is returned on success; a negated errno value is returned + * on failure. + * + ****************************************************************************/ + +int esp32c3_freerun_uninitialize(struct esp32c3_freerun_s *freerun); + +#undef EXTERN +#ifdef __cplusplus +} +#endif + +#endif /* CONFIG_ESP32C3_FREERUN */ +#endif /* __ARCH_RISCV_SRC_ESP32C3_FREERUN_H */ diff --git a/arch/risc-v/src/esp32c3/esp32c3_tim.c b/arch/risc-v/src/esp32c3/esp32c3_tim.c index 5acb8983e6c..db5830087c7 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_tim.c +++ b/arch/risc-v/src/esp32c3/esp32c3_tim.c @@ -34,6 +34,7 @@ #include "esp32c3_tim.h" #include "esp32c3_irq.h" +#include "esp32c3_gpio.h" /**************************************************************************** * Private Types @@ -82,6 +83,7 @@ static int esp32c3_tim_setisr(FAR struct esp32c3_tim_dev_s *dev, static void esp32c3_tim_enableint(FAR struct esp32c3_tim_dev_s *dev); static void esp32c3_tim_disableint(FAR struct esp32c3_tim_dev_s *dev); static void esp32c3_tim_ackint(FAR struct esp32c3_tim_dev_s *dev); +static int esp32c3_tim_checkint(FAR struct esp32c3_tim_dev_s *dev); /**************************************************************************** * Private Data @@ -107,7 +109,8 @@ struct esp32c3_tim_ops_s esp32c3_tim_ops = .setisr = esp32c3_tim_setisr, .enableint = esp32c3_tim_enableint, .disableint = esp32c3_tim_disableint, - .ackint = esp32c3_tim_ackint + .ackint = esp32c3_tim_ackint, + .checkint = esp32c3_tim_checkint }; #ifdef CONFIG_ESP32C3_TIMER0 @@ -654,6 +657,31 @@ static void esp32c3_tim_ackint(FAR struct esp32c3_tim_dev_s *dev) modifyreg32(TIMG_INT_CLR_TIMERS_REG(priv->id), 0, TIMG_T0_INT_CLR_M); } +/**************************************************************************** + * Name: esp32c3_tim_checkint + * + * Description: + * Check the interrupt status bit. + * + * Parameters: + * dev - Pointer to the timer driver struct. + * + * Returned Values: + * Return 1 in case of an interrupt is triggered, otherwise 0. + * + ****************************************************************************/ + +static int esp32c3_tim_checkint(FAR struct esp32c3_tim_dev_s *dev) +{ + struct esp32c3_tim_priv_s *priv = (struct esp32c3_tim_priv_s *)dev; + uint32_t reg_value; + + DEBUGASSERT(dev != NULL); + + reg_value = getreg32(TIMG_INT_ST_TIMERS_REG(priv->id)); + return ((reg_value & TIMG_T0_INT_ST_V) >> TIMG_T0_INT_ST_S); +} + /**************************************************************************** * Public Functions ****************************************************************************/ diff --git a/arch/risc-v/src/esp32c3/esp32c3_tim.h b/arch/risc-v/src/esp32c3/esp32c3_tim.h index e3a00989cff..12ad92ad6ea 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_tim.h +++ b/arch/risc-v/src/esp32c3/esp32c3_tim.h @@ -53,6 +53,7 @@ #define ESP32C3_TIM_ENABLEINT(d) ((d)->ops->enableint(d)) #define ESP32C3_TIM_DISABLEINT(d) ((d)->ops->disableint(d)) #define ESP32C3_TIM_ACKINT(d) ((d)->ops->ackint(d)) +#define ESP32C3_TIM_CHECKINT(d) ((d)->ops->checkint(d)) /**************************************************************************** * Public Types @@ -126,6 +127,7 @@ struct esp32c3_tim_ops_s CODE void (*enableint)(FAR struct esp32c3_tim_dev_s *dev); CODE void (*disableint)(FAR struct esp32c3_tim_dev_s *dev); CODE void (*ackint)(FAR struct esp32c3_tim_dev_s *dev); + CODE int (*checkint)(FAR struct esp32c3_tim_dev_s *dev); }; /**************************************************************************** diff --git a/arch/risc-v/src/esp32c3/hardware/esp32c3_tim.h b/arch/risc-v/src/esp32c3/hardware/esp32c3_tim.h index b9846d816b9..d4d080c54f8 100644 --- a/arch/risc-v/src/esp32c3/hardware/esp32c3_tim.h +++ b/arch/risc-v/src/esp32c3/hardware/esp32c3_tim.h @@ -72,7 +72,7 @@ /* Maximum value in the high 22 bits from timer counters */ #define LOW_32_MASK 0xffffffff -#define LOW_22_MASK 0x3fffff +#define LOW_22_MASK 0x003fffff #define SHIFT_32 32 #define TIMG_T0CONFIG_REG(i) (REG_TIMG_BASE(i) + 0x0000) From 3fb78a8299636f29f941c704223700dfb6362e77 Mon Sep 17 00:00:00 2001 From: raiden00pl Date: Fri, 16 Apr 2021 10:57:14 +0200 Subject: [PATCH 046/739] drivers: move the generic upper-half motor driver from drivers/power to drivers/motor --- drivers/motor/Kconfig | 50 ++++++++++++ drivers/motor/Make.defs | 6 ++ drivers/{power => motor}/motor.c | 104 ++++++++++++------------- drivers/power/Kconfig | 50 ------------ drivers/power/Make.defs | 12 --- include/nuttx/{power => motor}/motor.h | 66 ++++++++-------- include/nuttx/motor/motor_ioctl.h | 4 + 7 files changed, 145 insertions(+), 147 deletions(-) rename drivers/{power => motor}/motor.c (85%) rename include/nuttx/{power => motor}/motor.h (87%) diff --git a/drivers/motor/Kconfig b/drivers/motor/Kconfig index a6a6f2f1f6b..7c220916b42 100644 --- a/drivers/motor/Kconfig +++ b/drivers/motor/Kconfig @@ -9,6 +9,56 @@ menuconfig MOTOR if MOTOR +config MOTOR_UPPER + bool "Motor generic upper-half driver" + default n + ---help--- + Enables building of a motor generic upper half driver. + +if MOTOR_UPPER + +config MOTOR_UPPER_HAVE_POSITION + bool "Have position control" + default n + +config MOTOR_UPPER_HAVE_DIRECTION + bool "Have direction control" + default n + +config MOTOR_UPPER_HAVE_SPEED + bool "Have speed control" + default n + +config MOTOR_UPPER_HAVE_TORQUE + bool "Have torque control (rotary motors)" + default n + +config MOTOR_UPPER_HAVE_FORCE + bool "Have force control (linear motors)" + default n + +config MOTOR_UPPER_HAVE_ACCELERATION + bool "Have acceleration control" + default n + +config MOTOR_UPPER_HAVE_DECELERATION + bool "Have deceleration control" + default n + +config MOTOR_UPPER_HAVE_INPUT_VOLTAGE + bool "Have input voltage protection" + default n + +config MOTOR_UPPER_HAVE_INPUT_CURRENT + bool "Have input current protection" + default n + +config MOTOR_UPPER_HAVE_INPUT_POWER + bool "Have input power protection" + default n + +endif + source "drivers/motor/foc/Kconfig" endif # MOTOR diff --git a/drivers/motor/Make.defs b/drivers/motor/Make.defs index d369148d45c..40080e5aa90 100644 --- a/drivers/motor/Make.defs +++ b/drivers/motor/Make.defs @@ -24,6 +24,12 @@ ifeq ($(CONFIG_MOTOR_FOC),y) include motor$(DELIM)foc$(DELIM)Make.defs endif +# Add generic upper-half motor driver + +ifeq ($(CONFIG_MOTOR_UPPER),y) +CSRCS += motor.c +endif + # Include motor drivers in the build MOTOR_DEPPATH := --dep-path motor diff --git a/drivers/power/motor.c b/drivers/motor/motor.c similarity index 85% rename from drivers/power/motor.c rename to drivers/motor/motor.c index fafba7fcda1..5b18c8f20a3 100644 --- a/drivers/power/motor.c +++ b/drivers/motor/motor.c @@ -1,5 +1,5 @@ /**************************************************************************** - * drivers/power/motor.c + * drivers/motor/motor.c * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with @@ -35,7 +35,7 @@ #include #include -#include +#include #include @@ -214,7 +214,7 @@ static int motor_ioctl(FAR struct file *filep, int cmd, unsigned long arg) switch (cmd) { - case PWRIOC_START: + case MTRIOC_START: { /* Allow motor start only when some limits available * and structure is locked. @@ -222,30 +222,30 @@ static int motor_ioctl(FAR struct file *filep, int cmd, unsigned long arg) if ((motor->limits.lock == false) || ( -#ifdef CONFIG_MOTOR_HAVE_POSITION +#ifdef CONFIG_MOTOR_UPPER_HAVE_POSITION motor->limits.position <= 0.0 && #endif -#ifdef CONFIG_MOTOR_HAVE_SPEED +#ifdef CONFIG_MOTOR_UPPER_HAVE_SPEED motor->limits.speed <= 0.0 && #endif -#ifdef CONFIG_MOTOR_HAVE_TORQUE +#ifdef CONFIG_MOTOR_UPPER_HAVE_TORQUE motor->limits.torque <= 0.0 && #endif -#ifdef CONFIG_MOTOR_HAVE_FORCE +#ifdef CONFIG_MOTOR_UPPER_HAVE_FORCE motor->limits.force <= 0.0 && #endif -#ifdef CONFIG_MOTOR_HAVE_INPUT_VOLTAGE +#ifdef CONFIG_MOTOR_UPPER_HAVE_INPUT_VOLTAGE motor->limits.v_in <= 0.0 && #endif -#ifdef CONFIG_MOTOR_HAVE_INPUT_CURRENT +#ifdef CONFIG_MOTOR_UPPER_HAVE_INPUT_CURRENT motor->limits.i_in <= 0.0 && #endif -#ifdef CONFIG_MOTOR_HAVE_INPUT_POWER +#ifdef CONFIG_MOTOR_UPPER_HAVE_INPUT_POWER motor->limits.p_in <= 0.0 && #endif 1)) { - pwrerr("ERROR: motor limits data must be set" + mtrerr("Motor limits data must be set" " and locked before motor start\n"); ret = -EPERM; @@ -256,7 +256,7 @@ static int motor_ioctl(FAR struct file *filep, int cmd, unsigned long arg) if (motor->opmode == MOTOR_OPMODE_INIT) { - pwrerr("ERROR: motor operation mode not specified\n"); + mtrerr("Motor operation mode not specified\n"); ret = -EPERM; goto errout; @@ -269,43 +269,43 @@ static int motor_ioctl(FAR struct file *filep, int cmd, unsigned long arg) ret = dev->ops->start(dev); if (ret != OK) { - pwrerr("ERROR: PWRIOC_START failed %d\n", ret); + mtrerr("MTRIOC_START failed %d\n", ret); } break; } - case PWRIOC_STOP: + case MTRIOC_STOP: { /* Call stop from lower-half driver */ ret = dev->ops->stop(dev); if (ret != OK) { - pwrerr("ERROR: PWRIOC_STOP failed %d\n", ret); + mtrerr("MTRIOC_STOP failed %d\n", ret); } break; } - case PWRIOC_SET_MODE: + case MTRIOC_SET_MODE: { uint8_t mode = ((uint8_t)arg); ret = dev->ops->mode_set(dev, mode); if (ret != OK) { - pwrerr("ERROR: PWRIOC_SET_MODE failed %d\n", ret); + mtrerr("MTRIOC_SET_MODE failed %d\n", ret); } break; } - case PWRIOC_SET_LIMITS: + case MTRIOC_SET_LIMITS: { FAR struct motor_limits_s *limits = (FAR struct motor_limits_s *)((uintptr_t)arg); if (motor->limits.lock == true) { - pwrerr("ERROR: motor limits locked!\n"); + mtrerr("Motor limits locked!\n"); ret = -EPERM; goto errout; @@ -316,12 +316,12 @@ static int motor_ioctl(FAR struct file *filep, int cmd, unsigned long arg) ret = dev->ops->limits_set(dev, limits); if (ret != OK) { - pwrerr("ERROR: PWRIOC_SET_LIMITS failed %d\n", ret); + mtrerr("MTRIOC_SET_LIMITS failed %d\n", ret); } break; } - case PWRIOC_GET_STATE: + case MTRIOC_GET_STATE: { FAR struct motor_state_s *state = (FAR struct motor_state_s *)((uintptr_t)arg); @@ -329,55 +329,55 @@ static int motor_ioctl(FAR struct file *filep, int cmd, unsigned long arg) ret = dev->ops->state_get(dev, state); if (ret != OK) { - pwrerr("ERROR: PWRIOC_GET_STATE failed %d\n", ret); + mtrerr("MTRIOC_GET_STATE failed %d\n", ret); } break; } - case PWRIOC_SET_FAULT: + case MTRIOC_SET_FAULT: { uint8_t fault = ((uint8_t)arg); ret = dev->ops->fault_set(dev, fault); if (ret != OK) { - pwrerr("ERROR: PWRIOC_SET_FAULT failed %d\n", ret); + mtrerr("MTRIOC_SET_FAULT failed %d\n", ret); } break; } - case PWRIOC_GET_FAULT: + case MTRIOC_GET_FAULT: { FAR uint8_t *fault = ((FAR uint8_t *)arg); ret = dev->ops->fault_get(dev, fault); if (ret != OK) { - pwrerr("ERROR: PWRIOC_GET_FAULT failed %d\n", ret); + mtrerr("MTRIOC_GET_FAULT failed %d\n", ret); } break; } - case PWRIOC_CLEAN_FAULT: + case MTRIOC_CLEAR_FAULT: { uint8_t fault = ((uint8_t)arg); - ret = dev->ops->fault_clean(dev, fault); + ret = dev->ops->fault_clear(dev, fault); if (ret != OK) { - pwrerr("ERROR: PWRIOC_CLEAN_FAULT failed %d\n", ret); + mtrerr("MTRIOC_CLEAR_FAULT failed %d\n", ret); } break; } - case PWRIOC_SET_PARAMS: + case MTRIOC_SET_PARAMS: { FAR struct motor_params_s *params = (FAR struct motor_params_s *)((uintptr_t)arg); if (motor->param.lock == true) { - pwrerr("ERROR: motor params locked!\n"); + mtrerr("Motor params locked!\n"); ret = -EPERM; goto errout; @@ -385,42 +385,42 @@ static int motor_ioctl(FAR struct file *filep, int cmd, unsigned long arg) if ((motor->limits.lock == false) || ( -#ifdef CONFIG_MOTOR_HAVE_POSITION +#ifdef CONFIG_MOTOR_UPPER_HAVE_POSITION motor->limits.position <= 0.0 && #endif -#ifdef CONFIG_MOTOR_HAVE_SPEED +#ifdef CONFIG_MOTOR_UPPER_HAVE_SPEED motor->limits.speed <= 0.0 && #endif -#ifdef CONFIG_MOTOR_HAVE_TORQUE +#ifdef CONFIG_MOTOR_UPPER_HAVE_TORQUE motor->limits.torque <= 0.0 && #endif -#ifdef CONFIG_MOTOR_HAVE_FORCE +#ifdef CONFIG_MOTOR_UPPER_HAVE_FORCE motor->limits.force <= 0.0 && #endif -#ifdef CONFIG_MOTOR_HAVE_INPUT_VOLTAGE +#ifdef CONFIG_MOTOR_UPPER_HAVE_INPUT_VOLTAGE motor->limits.v_in <= 0.0 && #endif -#ifdef CONFIG_MOTOR_HAVE_INPUT_CURRENT +#ifdef CONFIG_MOTOR_UPPER_HAVE_INPUT_CURRENT motor->limits.i_in <= 0.0 && #endif -#ifdef CONFIG_MOTOR_HAVE_INPUT_POWER +#ifdef CONFIG_MOTOR_UPPER_HAVE_INPUT_POWER motor->limits.p_in <= 0.0 && #endif 1)) { - pwrerr("ERROR: limits must be set prior to params!\n"); + mtrerr("Limits must be set prior to params!\n"); ret = -EPERM; goto errout; } -#ifdef CONFIG_MOTOR_HAVE_DIRECTION +#ifdef CONFIG_MOTOR_UPPER_HAVE_DIRECTION /* Check direction configuration */ if (params->direction != MOTOR_DIR_CCW && params->direction != MOTOR_DIR_CW) { - pwrerr("ERROR: invalid direction value %d\n", + mtrerr("Invalid direction value %d\n", params->direction); ret = -EPERM; @@ -428,13 +428,13 @@ static int motor_ioctl(FAR struct file *filep, int cmd, unsigned long arg) } #endif -#ifdef CONFIG_MOTOR_HAVE_POSITION +#ifdef CONFIG_MOTOR_UPPER_HAVE_POSITION /* Check position configuration */ if (params->position < 0.0 || params->position > motor->limits.position) { - pwrerr("ERROR: params->position > limits.position: " + mtrerr("params->position > limits.position: " "%.2f > %.2f\n", params->position, motor->limits.position); @@ -443,13 +443,13 @@ static int motor_ioctl(FAR struct file *filep, int cmd, unsigned long arg) } #endif -#ifdef CONFIG_MOTOR_HAVE_SPEED +#ifdef CONFIG_MOTOR_UPPER_HAVE_SPEED /* Check speed configuration */ if (motor->limits.speed > 0.0 && params->speed > motor->limits.speed) { - pwrerr("ERROR: params->speed > limits.speed: %.2f > %.2f\n", + mtrerr("params->speed > limits.speed: %.2f > %.2f\n", params->speed, motor->limits.speed); ret = -EPERM; @@ -457,13 +457,13 @@ static int motor_ioctl(FAR struct file *filep, int cmd, unsigned long arg) } #endif -#ifdef CONFIG_MOTOR_HAVE_TORQUE +#ifdef CONFIG_MOTOR_UPPER_HAVE_TORQUE /* Check torque configuration */ if (motor->limits.torque > 0.0 && params->torque > motor->limits.torque) { - pwrerr("ERROR: params->torque > limits.torque: %.2f > %.2f\n", + mtrerr("params->torque > limits.torque: %.2f > %.2f\n", params->torque, motor->limits.torque); ret = -EPERM; @@ -471,13 +471,13 @@ static int motor_ioctl(FAR struct file *filep, int cmd, unsigned long arg) } #endif -#ifdef CONFIG_MOTOR_HAVE_FORCE +#ifdef CONFIG_MOTOR_UPPER_HAVE_FORCE /* Check force configuration */ if (motor->limits.force > 0.0 && params->force > motor->limits.force) { - pwrerr("ERROR: params->force > limits.force: %.2f > %.2f\n", + mtrerr("params->force > limits.force: %.2f > %.2f\n", params->force, motor->limits.force); ret = -EPERM; @@ -488,14 +488,14 @@ static int motor_ioctl(FAR struct file *filep, int cmd, unsigned long arg) ret = dev->ops->params_set(dev, params); if (ret != OK) { - pwrerr("ERROR: PWRIOC_SET_PARAMS failed %d\n", ret); + mtrerr("MTRIOC_SET_PARAMS failed %d\n", ret); } break; } default: { - pwrinfo("Forwarding unrecognized cmd: %d arg: %ld\n", cmd, arg); + mtrinfo("Forwarding unrecognized cmd: %d arg: %ld\n", cmd, arg); ret = dev->ops->ioctl(dev, cmd, arg); break; } @@ -537,7 +537,7 @@ int motor_register(FAR const char *path, FAR struct motor_dev_s *dev, DEBUGASSERT(dev->ops->fault_set != NULL); DEBUGASSERT(dev->ops->state_get != NULL); DEBUGASSERT(dev->ops->fault_get != NULL); - DEBUGASSERT(dev->ops->fault_clean != NULL); + DEBUGASSERT(dev->ops->fault_clear != NULL); DEBUGASSERT(dev->ops->ioctl != NULL); /* Initialize the motor device structure */ diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig index 5c3cf0da778..38a19941805 100644 --- a/drivers/power/Kconfig +++ b/drivers/power/Kconfig @@ -334,56 +334,6 @@ config SMPS_HAVE_EFFICIENCY endif -config DRIVERS_MOTOR - bool "Motor driver" - default n - ---help--- - Enables building of a motor upper half driver. - -if DRIVERS_MOTOR - -config MOTOR_HAVE_POSITION - bool "Have position control" - default n - -config MOTOR_HAVE_DIRECTION - bool "Have direction control" - default n - -config MOTOR_HAVE_SPEED - bool "Have speed control" - default n - -config MOTOR_HAVE_TORQUE - bool "Have torque control (rotary motors)" - default n - -config MOTOR_HAVE_FORCE - bool "Have force control (linear motors)" - default n - -config MOTOR_HAVE_ACCELERATION - bool "Have acceleration control" - default n - -config MOTOR_HAVE_DECELERATION - bool "Have deceleration control" - default n - -config MOTOR_HAVE_INPUT_VOLTAGE - bool "Have input voltage protection" - default n - -config MOTOR_HAVE_INPUT_CURRENT - bool "Have input current protection" - default n - -config MOTOR_HAVE_INPUT_POWER - bool "Have input power protection" - default n - -endif - menuconfig POWER bool "Power Management Support" default n diff --git a/drivers/power/Make.defs b/drivers/power/Make.defs index 48f6aaa147b..ed7698ff491 100644 --- a/drivers/power/Make.defs +++ b/drivers/power/Make.defs @@ -71,18 +71,6 @@ POWER_CFLAGS := ${shell $(INCDIR) "$(CC)" $(TOPDIR)$(DELIM)drivers$(DELIM)power} endif -# Add motor driver - -ifeq ($(CONFIG_DRIVERS_MOTOR),y) - -CSRCS += motor.c - -POWER_DEPPATH := --dep-path power -POWER_VPATH := :power -POWER_CFLAGS := ${shell $(INCDIR) "$(CC)" $(TOPDIR)$(DELIM)drivers$(DELIM)power} - -endif - # Add battery charger drivers ifeq ($(CONFIG_BATTERY_CHARGER),y) diff --git a/include/nuttx/power/motor.h b/include/nuttx/motor/motor.h similarity index 87% rename from include/nuttx/power/motor.h rename to include/nuttx/motor/motor.h index d2674853110..f1f5f5dff54 100644 --- a/include/nuttx/power/motor.h +++ b/include/nuttx/motor/motor.h @@ -1,5 +1,5 @@ /**************************************************************************** - * include/nuttx/power/motor.h + * include/nuttx/motor/motor.h * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with @@ -18,8 +18,8 @@ * ****************************************************************************/ -#ifndef __INCLUDE_NUTTX_DRIVERS_POWER_MOTOR_H -#define __INCLUDE_NUTTX_DRIVERS_POWER_MOTOR_H +#ifndef __INCLUDE_NUTTX_DRIVERS_MOTOR_MOTOR_H +#define __INCLUDE_NUTTX_DRIVERS_MOTOR_MOTOR_H /* The motor driver is split into two parts: * @@ -42,10 +42,10 @@ #include #include -#include +#include #include -#ifdef CONFIG_DRIVERS_MOTOR +#ifdef CONFIG_MOTOR_UPPER /**************************************************************************** * Pre-processor Definitions @@ -103,25 +103,25 @@ enum motor_direction_e struct motor_feedback_s { -#ifdef CONFIG_MOTOR_HAVE_POSITION +#ifdef CONFIG_MOTOR_UPPER_HAVE_POSITION float position; /* Current motor position */ #endif -#ifdef CONFIG_MOTOR_HAVE_SPEED +#ifdef CONFIG_MOTOR_UPPER_HAVE_SPEED float speed; /* Current motor speed */ #endif -#ifdef CONFIG_MOTOR_HAVE_TORQUE +#ifdef CONFIG_MOTOR_UPPER_HAVE_TORQUE float torque; /* Current motor torque (rotary motor) */ #endif -#ifdef CONFIG_MOTOR_HAVE_FORCE +#ifdef CONFIG_MOTOR_UPPER_HAVE_FORCE float force; /* Current motor force (linear motor) */ #endif -#ifdef CONFIG_MOTOR_HAVE_INPUT_VOLTAGE +#ifdef CONFIG_MOTOR_UPPER_HAVE_INPUT_VOLTAGE float v_in; /* Current input voltage */ #endif -#ifdef CONFIG_MOTOR_HAVE_INPUT_CURRENT +#ifdef CONFIG_MOTOR_UPPER_HAVE_INPUT_CURRENT float i_in; /* Current input current */ #endif -#ifdef CONFIG_MOTOR_HAVE_INPUT_POWER +#ifdef CONFIG_MOTOR_UPPER_HAVE_INPUT_POWER float p_in; /* Current input power */ #endif }; @@ -145,31 +145,31 @@ struct motor_limits_s bool lock; /* This bit must be set after * limits configuration. */ -#ifdef CONFIG_MOTOR_HAVE_POSITION +#ifdef CONFIG_MOTOR_UPPER_HAVE_POSITION float position; /* Maximum motor position */ #endif -#ifdef CONFIG_MOTOR_HAVE_SPEED +#ifdef CONFIG_MOTOR_UPPER_HAVE_SPEED float speed; /* Maximum motor speed */ #endif -#ifdef CONFIG_MOTOR_HAVE_TORQUE +#ifdef CONFIG_MOTOR_UPPER_HAVE_TORQUE float torque; /* Maximum motor torque (rotary motor) */ #endif -#ifdef CONFIG_MOTOR_HAVE_FORCE +#ifdef CONFIG_MOTOR_UPPER_HAVE_FORCE float force; /* Maximum motor force (linear motor) */ #endif -#ifdef CONFIG_MOTOR_HAVE_ACCELERATION +#ifdef CONFIG_MOTOR_UPPER_HAVE_ACCELERATION float acceleration; /* Maximum motor acceleration */ #endif -#ifdef CONFIG_MOTOR_HAVE_DECELERATION +#ifdef CONFIG_MOTOR_UPPER_HAVE_DECELERATION float deceleration; /* Maximum motor decelaration */ #endif -#ifdef CONFIG_MOTOR_HAVE_INPUT_VOLTAGE +#ifdef CONFIG_MOTOR_UPPER_HAVE_INPUT_VOLTAGE float v_in; /* Maximum input voltage */ #endif -#ifdef CONFIG_MOTOR_HAVE_INPUT_CURRENT +#ifdef CONFIG_MOTOR_UPPER_HAVE_INPUT_CURRENT float i_in; /* Maximum input current */ #endif -#ifdef CONFIG_MOTOR_HAVE_INPUT_POWER +#ifdef CONFIG_MOTOR_UPPER_HAVE_INPUT_POWER float p_in; /* Maximum input power */ #endif }; @@ -184,7 +184,7 @@ struct motor_params_s * if there is no need to change motor * parameter during run-time. */ -#ifdef CONFIG_MOTOR_HAVE_DIRECTION +#ifdef CONFIG_MOTOR_UPPER_HAVE_DIRECTION int8_t direction; /* Motor movement direction. We do not * support negative values for parameters, * so this flag can be used to allow movement @@ -192,22 +192,22 @@ struct motor_params_s * a given coordinate system. */ #endif -#ifdef CONFIG_MOTOR_HAVE_POSITION +#ifdef CONFIG_MOTOR_UPPER_HAVE_POSITION float position; /* Motor position */ #endif -#ifdef CONFIG_MOTOR_HAVE_SPEED +#ifdef CONFIG_MOTOR_UPPER_HAVE_SPEED float speed; /* Motor speed */ #endif -#ifdef CONFIG_MOTOR_HAVE_TORQUE +#ifdef CONFIG_MOTOR_UPPER_HAVE_TORQUE float torque; /* Motor torque (rotary motor) */ #endif -#ifdef CONFIG_MOTOR_HAVE_FORCE +#ifdef CONFIG_MOTOR_UPPER_HAVE_FORCE float force; /* Motor force (linear motor) */ #endif -#ifdef CONFIG_MOTOR_HAVE_ACCELERATION +#ifdef CONFIG_MOTOR_UPPER_HAVE_ACCELERATION float acceleration; /* Motor acceleration */ #endif -#ifdef CONFIG_MOTOR_HAVE_DECELERATION +#ifdef CONFIG_MOTOR_UPPER_HAVE_DECELERATION float deceleration; /* Motor deceleration */ #endif }; @@ -268,15 +268,15 @@ struct motor_ops_s /* Get motor state */ CODE int (*state_get)(FAR struct motor_dev_s *dev, - FAR struct motor_state_s *state); + FAR struct motor_state_s *state); /* Get current fault state */ CODE int (*fault_get)(FAR struct motor_dev_s *dev, FAR uint8_t *fault); - /* Clean fault state */ + /* Clear fault state */ - CODE int (*fault_clean)(FAR struct motor_dev_s *dev, uint8_t fault); + CODE int (*fault_clear)(FAR struct motor_dev_s *dev, uint8_t fault); /* Lower-half logic may support platform-specific ioctl commands */ @@ -331,5 +331,5 @@ int motor_register(FAR const char *path, FAR struct motor_dev_s *dev, } #endif -#endif /* CONFIG_DRIVERS_MOTOR */ -#endif /* __INCLUDE_NUTTX_DRIVERS_POWER_MOTOR_H */ +#endif /* CONFIG_MOTOR_UPPER */ +#endif /* __INCLUDE_NUTTX_DRIVERS_MOTOR_MOTOR_H */ diff --git a/include/nuttx/motor/motor_ioctl.h b/include/nuttx/motor/motor_ioctl.h index 725c51c55e6..51220643f68 100644 --- a/include/nuttx/motor/motor_ioctl.h +++ b/include/nuttx/motor/motor_ioctl.h @@ -45,5 +45,9 @@ #define MTRIOC_SET_PARAMS _MTRIOC(5) #define MTRIOC_SET_CONFIG _MTRIOC(6) #define MTRIOC_GET_INFO _MTRIOC(7) +#define MTRIOC_SET_MODE _MTRIOC(8) +#define MTRIOC_SET_LIMITS _MTRIOC(9) +#define MTRIOC_SET_FAULT _MTRIOC(10) +#define MTRIOC_GET_FAULT _MTRIOC(11) #endif /* __INCLUDE_NUTTX_MOTOR_MOTOR_IOCTL_H */ From 7b53a5fe1ced0309b2de0b002c68ee8251b17acb Mon Sep 17 00:00:00 2001 From: raiden00pl Date: Wed, 5 May 2021 08:02:14 +0200 Subject: [PATCH 047/739] stm32_adc.c: rename a struct member in struct adccmn_data_s from 'initialized' to 'refcount' --- arch/arm/src/stm32/stm32_adc.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/arch/arm/src/stm32/stm32_adc.c b/arch/arm/src/stm32/stm32_adc.c index 4bb544ea950..fe7299cb9cc 100644 --- a/arch/arm/src/stm32/stm32_adc.c +++ b/arch/arm/src/stm32/stm32_adc.c @@ -403,8 +403,8 @@ #ifdef HAVE_ADC_CMN_DATA struct adccmn_data_s { - uint8_t initialized; /* How many ADC instances are currently in use */ - sem_t lock; /* Exclusive access to common ADC data */ + uint8_t refcount; /* How many ADC instances are currently in use */ + sem_t lock; /* Exclusive access to common ADC data */ }; #endif @@ -726,7 +726,7 @@ static const struct stm32_adc_ops_s g_adc_llops = struct adccmn_data_s g_adc123_cmn = { - .initialized = 0 + .refcount = 0 }; # elif defined(HAVE_IP_ADC_V2) @@ -740,7 +740,7 @@ struct adccmn_data_s g_adc123_cmn = struct adccmn_data_s g_adc12_cmn = { - .initialized = 0 + .refcount = 0 }; # endif @@ -750,7 +750,7 @@ struct adccmn_data_s g_adc12_cmn = struct adccmn_data_s g_adc34_cmn = { - .initialized = 0 + .refcount = 0 }; # endif @@ -2863,7 +2863,7 @@ static void adc_reset(FAR struct adc_dev_s *dev) goto out; } - if (priv->cmn->initialized == 0) + if (priv->cmn->refcount == 0) #endif { /* Enable ADC reset state */ @@ -2994,7 +2994,7 @@ static int adc_setup(FAR struct adc_dev_s *dev) return ret; } - if (priv->cmn->initialized == 0) + if (priv->cmn->refcount == 0) #endif { /* Enable the ADC interrupt */ @@ -3006,7 +3006,7 @@ static int adc_setup(FAR struct adc_dev_s *dev) } #ifdef HAVE_ADC_CMN_DATA - priv->cmn->initialized += 1; + priv->cmn->refcount += 1; adccmn_lock(priv, false); #endif @@ -3062,7 +3062,7 @@ static void adc_shutdown(FAR struct adc_dev_s *dev) return; } - if (priv->cmn->initialized <= 1) + if (priv->cmn->refcount <= 1) #endif { #ifndef CONFIG_STM32_ADC_NOIRQ @@ -3096,9 +3096,9 @@ static void adc_shutdown(FAR struct adc_dev_s *dev) #ifdef HAVE_ADC_CMN_DATA /* Decrease instances counter */ - if (priv->cmn->initialized > 0) + if (priv->cmn->refcount > 0) { - priv->cmn->initialized -= 1; + priv->cmn->refcount -= 1; } adccmn_lock(priv, false); From e24af207f8954ef7e24d8191c17c6ebcc077ee27 Mon Sep 17 00:00:00 2001 From: Abdelatif Guettouche Date: Tue, 4 May 2021 18:24:51 +0100 Subject: [PATCH 048/739] esp32/hardware: Include files of the same level by their names only and remove unnecessary includes. Signed-off-by: Abdelatif Guettouche --- arch/xtensa/src/esp32/hardware/esp32_dport.h | 2 +- arch/xtensa/src/esp32/hardware/esp32_gpio.h | 2 +- arch/xtensa/src/esp32/hardware/esp32_iomux.h | 2 +- arch/xtensa/src/esp32/hardware/esp32_rtccntl.h | 2 +- arch/xtensa/src/esp32/hardware/esp32_tim.h | 3 +-- arch/xtensa/src/esp32/hardware/esp32_uart.h | 2 +- 6 files changed, 6 insertions(+), 7 deletions(-) diff --git a/arch/xtensa/src/esp32/hardware/esp32_dport.h b/arch/xtensa/src/esp32/hardware/esp32_dport.h index 16fbb0445fe..de9e1609afd 100644 --- a/arch/xtensa/src/esp32/hardware/esp32_dport.h +++ b/arch/xtensa/src/esp32/hardware/esp32_dport.h @@ -25,7 +25,7 @@ * Included Files ****************************************************************************/ -#include "hardware/esp32_soc.h" +#include "esp32_soc.h" /**************************************************************************** * Pre-processor Definitions diff --git a/arch/xtensa/src/esp32/hardware/esp32_gpio.h b/arch/xtensa/src/esp32/hardware/esp32_gpio.h index bbb65a3eaa8..f86e4c150cf 100644 --- a/arch/xtensa/src/esp32/hardware/esp32_gpio.h +++ b/arch/xtensa/src/esp32/hardware/esp32_gpio.h @@ -25,7 +25,7 @@ * Included Files ****************************************************************************/ -#include "hardware/esp32_soc.h" +#include "esp32_soc.h" /**************************************************************************** * Pre-preprocessor Definitions diff --git a/arch/xtensa/src/esp32/hardware/esp32_iomux.h b/arch/xtensa/src/esp32/hardware/esp32_iomux.h index 6587514efb8..faffffa13bd 100644 --- a/arch/xtensa/src/esp32/hardware/esp32_iomux.h +++ b/arch/xtensa/src/esp32/hardware/esp32_iomux.h @@ -25,7 +25,7 @@ * Included Files ****************************************************************************/ -#include "hardware/esp32_soc.h" +#include "esp32_soc.h" /**************************************************************************** * Pre-processor Definitions diff --git a/arch/xtensa/src/esp32/hardware/esp32_rtccntl.h b/arch/xtensa/src/esp32/hardware/esp32_rtccntl.h index c5368d4ec1e..640fab133b3 100644 --- a/arch/xtensa/src/esp32/hardware/esp32_rtccntl.h +++ b/arch/xtensa/src/esp32/hardware/esp32_rtccntl.h @@ -25,7 +25,7 @@ * Included Files ****************************************************************************/ -#include "hardware/esp32_soc.h" +#include "esp32_soc.h" /**************************************************************************** * Pre-processor Definitions diff --git a/arch/xtensa/src/esp32/hardware/esp32_tim.h b/arch/xtensa/src/esp32/hardware/esp32_tim.h index 4f8b0fc75cf..dca6de9c02c 100644 --- a/arch/xtensa/src/esp32/hardware/esp32_tim.h +++ b/arch/xtensa/src/esp32/hardware/esp32_tim.h @@ -25,8 +25,7 @@ * Included Files ************************************************************************************/ -#include -#include "hardware/esp32_soc.h" +#include "esp32_soc.h" /* Offsets relative to each timer instance memory base */ diff --git a/arch/xtensa/src/esp32/hardware/esp32_uart.h b/arch/xtensa/src/esp32/hardware/esp32_uart.h index ba14d1bcf92..73cfd872960 100644 --- a/arch/xtensa/src/esp32/hardware/esp32_uart.h +++ b/arch/xtensa/src/esp32/hardware/esp32_uart.h @@ -25,7 +25,7 @@ * Included Files ****************************************************************************/ -#include "hardware/esp32_soc.h" +#include "esp32_soc.h" /**************************************************************************** * Pre-processor Macros From f3a6d80c95cb7964b08387235f17c9c334845a24 Mon Sep 17 00:00:00 2001 From: Abdelatif Guettouche Date: Tue, 4 May 2021 18:27:12 +0100 Subject: [PATCH 049/739] esp32c3/hardware: Include files of the same level by their names only and remove unnecessary includes. Signed-off-by: Abdelatif Guettouche --- arch/risc-v/src/esp32c3/hardware/esp32c3_gpio.h | 2 +- arch/risc-v/src/esp32c3/hardware/esp32c3_interrupt.h | 2 +- arch/risc-v/src/esp32c3/hardware/esp32c3_memorymap.h | 6 ------ arch/risc-v/src/esp32c3/hardware/esp32c3_system.h | 2 +- arch/risc-v/src/esp32c3/hardware/esp32c3_systimer.h | 2 +- 5 files changed, 4 insertions(+), 10 deletions(-) diff --git a/arch/risc-v/src/esp32c3/hardware/esp32c3_gpio.h b/arch/risc-v/src/esp32c3/hardware/esp32c3_gpio.h index d05c9dafc61..588ed1bd7b4 100644 --- a/arch/risc-v/src/esp32c3/hardware/esp32c3_gpio.h +++ b/arch/risc-v/src/esp32c3/hardware/esp32c3_gpio.h @@ -25,7 +25,7 @@ * Included Files ****************************************************************************/ -#include "hardware/esp32c3_soc.h" +#include "esp32c3_soc.h" /**************************************************************************** * Pre-preprocessor Definitions diff --git a/arch/risc-v/src/esp32c3/hardware/esp32c3_interrupt.h b/arch/risc-v/src/esp32c3/hardware/esp32c3_interrupt.h index ce40a865b88..675a584e4c3 100644 --- a/arch/risc-v/src/esp32c3/hardware/esp32c3_interrupt.h +++ b/arch/risc-v/src/esp32c3/hardware/esp32c3_interrupt.h @@ -25,7 +25,7 @@ * Included Files ****************************************************************************/ -#include "hardware/esp32c3_soc.h" +#include "esp32c3_soc.h" /**************************************************************************** * Pre-processor Definitions diff --git a/arch/risc-v/src/esp32c3/hardware/esp32c3_memorymap.h b/arch/risc-v/src/esp32c3/hardware/esp32c3_memorymap.h index 51a80589ae2..c9cf552438a 100644 --- a/arch/risc-v/src/esp32c3/hardware/esp32c3_memorymap.h +++ b/arch/risc-v/src/esp32c3/hardware/esp32c3_memorymap.h @@ -21,12 +21,6 @@ #ifndef __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_MEMORYMAP_H #define __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_MEMORYMAP_H -/**************************************************************************** - * Included Files - ****************************************************************************/ - -#include - /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ diff --git a/arch/risc-v/src/esp32c3/hardware/esp32c3_system.h b/arch/risc-v/src/esp32c3/hardware/esp32c3_system.h index 8e8dd9a18ae..34ede266fb3 100644 --- a/arch/risc-v/src/esp32c3/hardware/esp32c3_system.h +++ b/arch/risc-v/src/esp32c3/hardware/esp32c3_system.h @@ -25,7 +25,7 @@ * Included Files ****************************************************************************/ -#include "hardware/esp32c3_soc.h" +#include "esp32c3_soc.h" /**************************************************************************** * Pre-processor Definitions diff --git a/arch/risc-v/src/esp32c3/hardware/esp32c3_systimer.h b/arch/risc-v/src/esp32c3/hardware/esp32c3_systimer.h index 7d32e04fb1d..ef317cb0201 100644 --- a/arch/risc-v/src/esp32c3/hardware/esp32c3_systimer.h +++ b/arch/risc-v/src/esp32c3/hardware/esp32c3_systimer.h @@ -25,7 +25,7 @@ * Included Files ****************************************************************************/ -#include "hardware/esp32c3_soc.h" +#include "esp32c3_soc.h" /**************************************************************************** * Pre-processor Definitions From afd6b262321cf6f97dac3f37a8b066c905a35d86 Mon Sep 17 00:00:00 2001 From: Sara Souza Date: Fri, 16 Apr 2021 18:35:29 -0300 Subject: [PATCH 050/739] xtensa/esp32: Replace serialout/in and fixes the fifo counter issue --- arch/xtensa/src/esp32/esp32_serial.c | 222 +++++++++++++++----- arch/xtensa/src/esp32/hardware/esp32_soc.h | 9 + arch/xtensa/src/esp32/hardware/esp32_uart.h | 22 +- 3 files changed, 196 insertions(+), 57 deletions(-) diff --git a/arch/xtensa/src/esp32/esp32_serial.c b/arch/xtensa/src/esp32/esp32_serial.c index 623c19ab686..b211074aff0 100644 --- a/arch/xtensa/src/esp32/esp32_serial.c +++ b/arch/xtensa/src/esp32/esp32_serial.c @@ -130,7 +130,7 @@ struct esp32_config_s { - const uint32_t uartbase; /* Base address of UART registers */ + const uint8_t id; /* UART id */ uint8_t periph; /* UART peripheral ID */ uint8_t irq; /* IRQ number assigned to the peripheral */ uint8_t txpin; /* Tx pin number (0-39) */ @@ -183,6 +183,10 @@ static bool esp32_txempty(struct uart_dev_s *dev); * Private Data ****************************************************************************/ +#define UART_TX_FIFO_SIZE 128 +#define UART_RX_FIFO_FULL_THRHD 112 +#define UART_RX_TOUT_THRHD_VALUE 0x02 + static const struct uart_ops_s g_uart_ops = { .setup = esp32_setup, @@ -222,7 +226,7 @@ static char g_uart2txbuffer[CONFIG_UART2_TXBUFSIZE]; #ifdef CONFIG_ESP32_UART0 static const struct esp32_config_s g_uart0config = { - .uartbase = DR_REG_UART_BASE, + .id = 0, .periph = ESP32_PERIPH_UART, .irq = ESP32_IRQ_UART, .txpin = CONFIG_ESP32_UART0_TXPIN, @@ -268,7 +272,7 @@ static uart_dev_t g_uart0port = #ifdef CONFIG_ESP32_UART1 static const struct esp32_config_s g_uart1config = { - .uartbase = DR_REG_UART1_BASE, + .id = 1, .periph = ESP32_PERIPH_UART1, .irq = ESP32_IRQ_UART1, .txpin = CONFIG_ESP32_UART1_TXPIN, @@ -314,7 +318,7 @@ static uart_dev_t g_uart1port = #ifdef CONFIG_ESP32_UART2 static const struct esp32_config_s g_uart2config = { - .uartbase = DR_REG_UART2_BASE, + .id = 2, .periph = ESP32_PERIPH_UART2, .irq = ESP32_IRQ_UART2, .txpin = CONFIG_ESP32_UART2_TXPIN, @@ -360,22 +364,106 @@ static uart_dev_t g_uart2port = ****************************************************************************/ /**************************************************************************** - * Name: esp32_serialin + * Name: esp32_reset_rx_fifo + * + * Description: + * Resets the RX FIFO. + * NOTE: We can not use rxfifo_rst to reset the hardware RX FIFO. + * + * Parameters: + * priv - Pointer to the serial driver struct. + * ****************************************************************************/ -static inline uint32_t esp32_serialin(struct esp32_dev_s *priv, int offset) +static void esp32_reset_rx_fifo(struct esp32_dev_s *priv) { - return getreg32(priv->config->uartbase + offset); + uint32_t rx_status_reg = getreg32(UART_STATUS_REG(priv->config->id)); + uint32_t fifo_cnt = REG_MASK(rx_status_reg, UART_RXFIFO_CNT); + uint32_t mem_rx_status_reg = getreg32(UART_MEM_RX_STATUS_REG + (priv->config->id)); + uint32_t rd_address = REG_MASK(mem_rx_status_reg, UART_RD_ADDRESS); + uint32_t wr_address = REG_MASK(mem_rx_status_reg, UART_WR_ADDRESS); + + while ((fifo_cnt != 0) || (rd_address != wr_address)) + { + getreg32(DR_UART_FIFO_REG(priv->config->id)); + + rx_status_reg = getreg32(UART_STATUS_REG(priv->config->id)); + fifo_cnt = REG_MASK(rx_status_reg, UART_RXFIFO_CNT); + mem_rx_status_reg = getreg32(UART_MEM_RX_STATUS_REG(priv->config->id)); + rd_address = REG_MASK(mem_rx_status_reg, UART_RD_ADDRESS); + wr_address = REG_MASK(mem_rx_status_reg, UART_WR_ADDRESS); + } } /**************************************************************************** - * Name: esp32_serialout + * Name: esp32_reset_tx_fifo + * + * Description: + * Resets the TX FIFO. + * + * Parameters: + * priv - Pointer to the serial driver struct. + * ****************************************************************************/ -static inline void esp32_serialout(struct esp32_dev_s *priv, int offset, - uint32_t value) +static void esp32_reset_tx_fifo(struct esp32_dev_s *priv) { - putreg32(value, priv->config->uartbase + offset); + modifyreg32(UART_CONF0_REG(priv->config->id), 0, UART_TXFIFO_RST_M); + modifyreg32(UART_CONF0_REG(priv->config->id), UART_TXFIFO_RST_M, 0); +} + +/**************************************************************************** + * Name: esp32_get_rx_fifo_len + * + * Description: + * Get the real value on rx fixo. + * RX_FIFO_CNT shouldn't be used alone accordingly to: + * https://www.espressif.com/sites/default/files/documentation/eco_ + * and_workarounds_for_bugs_in_esp32_en.pdf. + * So, some arithmetic with the read and write RX FIFO pointers are + * necessary. + * + * Parameters: + * priv - Pointer to the serial driver struct. + * + * Return: + * The number of bytes in RX fifo. + * + ****************************************************************************/ + +static uint32_t esp32_get_rx_fifo_len(struct esp32_dev_s *priv) +{ + uint32_t rd_address; + uint32_t wr_address; + uint32_t fifo_cnt; + uint32_t mem_rx_status_reg; + uint32_t rx_status_reg; + uint32_t len; + + mem_rx_status_reg = getreg32(UART_MEM_RX_STATUS_REG(priv->config->id)); + rd_address = ((mem_rx_status_reg & UART_RD_ADDRESS_M) + >> UART_RD_ADDRESS_S); + wr_address = ((mem_rx_status_reg & UART_WR_ADDRESS_M) + >> UART_WR_ADDRESS_S); + rx_status_reg = getreg32(UART_STATUS_REG(priv->config->id)); + fifo_cnt = ((rx_status_reg & UART_RXFIFO_CNT_M) + >> UART_RXFIFO_CNT_S); + + if (wr_address > rd_address) + { + len = wr_address - rd_address; + } + else if (wr_address < rd_address) + { + len = (wr_address + 128) - rd_address; + } + else + { + len = fifo_cnt > 0 ? 128 : 0; + } + + return len; } /**************************************************************************** @@ -389,7 +477,7 @@ static inline void esp32_restoreuartint(struct esp32_dev_s *priv, * (assuming all interrupts disabled) */ - esp32_serialout(priv, UART_INT_ENA_OFFSET, intena); + putreg32(intena, UART_INT_ENA_REG(priv->config->id)); } /**************************************************************************** @@ -408,12 +496,12 @@ static void esp32_disableallints(struct esp32_dev_s *priv, uint32_t *intena) { /* Return the current interrupt mask */ - *intena = esp32_serialin(priv, UART_INT_ENA_OFFSET); + *intena = getreg32(UART_INT_ENA_REG(priv->config->id)); } /* Disable all interrupts */ - esp32_serialout(priv, UART_INT_ENA_OFFSET, 0); + putreg32(0, UART_INT_ENA_REG(priv->config->id)); leave_critical_section(flags); } @@ -504,7 +592,7 @@ static int esp32_setup(struct uart_dev_s *dev) regval = (clkdiv >> 4) << UART_CLKDIV_S; regval |= (clkdiv & 15) << UART_CLKDIV_FRAG_S; - esp32_serialout(priv, UART_CLKDIV_OFFSET, regval); + putreg32(regval, UART_CLKDIV_REG(priv->config->id)); /* Configure UART pins * @@ -530,17 +618,22 @@ static int esp32_setup(struct uart_dev_s *dev) regval = UART_RXFIFO_FULL_INT_ENA | UART_FRM_ERR_INT_ENA | UART_RXFIFO_TOUT_INT_ENA; - esp32_serialout(priv, UART_INT_ENA_OFFSET, regval); + putreg32(regval, UART_INT_ENA_REG(priv->config->id)); - esp32_serialout(priv, UART_INT_CLR_OFFSET, 0xffffffff); + putreg32(UINT32_MAX, UART_INT_CLR_REG(priv->config->id)); + + /* Reset the RX and TX FIFO */ + + esp32_reset_rx_fifo(priv); + esp32_reset_tx_fifo(priv); /* Configure and enable the UART */ - esp32_serialout(priv, UART_CONF0_OFFSET, conf0); - regval = (112 << UART_RXFIFO_FULL_THRHD_S) | - (0x02 << UART_RX_TOUT_THRHD_S) | - UART_RX_TOUT_EN; - esp32_serialout(priv, UART_CONF1_OFFSET, regval); + putreg32(conf0, UART_CONF0_REG(priv->config->id)); + regval = (UART_RX_FIFO_FULL_THRHD << UART_RXFIFO_FULL_THRHD_S) | + (UART_RX_TOUT_THRHD_VALUE << UART_RX_TOUT_THRHD_S) | + UART_RX_TOUT_EN; + putreg32(regval, UART_CONF1_REG(priv->config->id)); #endif return OK; @@ -569,7 +662,7 @@ static void esp32_shutdown(struct uart_dev_s *dev) do { - status = esp32_serialin(priv, UART_STATUS_OFFSET); + status = getreg32(UART_STATUS_REG(priv->config->id)); } while ((status & UART_TXFIFO_CNT_M) != 0); @@ -598,11 +691,11 @@ static void esp32_shutdown(struct uart_dev_s *dev) /* Unconfigure and disable the UART */ - esp32_serialout(priv, UART_CONF0_OFFSET, 0); - esp32_serialout(priv, UART_CONF1_OFFSET, 0); + putreg32(0, UART_CONF0_REG(priv->config->id)); + putreg32(0, UART_CONF1_REG(priv->config->id)); - esp32_serialout(priv, UART_INT_ENA_OFFSET, 0); - esp32_serialout(priv, UART_INT_CLR_OFFSET, 0xffffffff); + putreg32(0, UART_INT_ENA_REG(priv->config->id)); + putreg32(UINT32_MAX, UART_INT_CLR_REG(priv->config->id)); } /**************************************************************************** @@ -734,16 +827,16 @@ static int esp32_interrupt(int cpuint, void *context, FAR void *arg) for (passes = 0; passes < 256 && handled; passes++) { handled = false; - priv->status = esp32_serialin(priv, UART_INT_RAW_OFFSET); - status = esp32_serialin(priv, UART_STATUS_OFFSET); - enabled = esp32_serialin(priv, UART_INT_ENA_OFFSET); + priv->status = getreg32(UART_INT_RAW_REG(priv->config->id)); + status = getreg32(UART_STATUS_REG(priv->config->id)); + enabled = getreg32(UART_INT_ENA_REG(priv->config->id)); /* Clear pending interrupts */ regval = (UART_RXFIFO_FULL_INT_CLR | UART_FRM_ERR_INT_CLR | UART_RXFIFO_TOUT_INT_CLR | UART_TX_DONE_INT_CLR | UART_TXFIFO_EMPTY_INT_CLR); - esp32_serialout(priv, UART_INT_CLR_OFFSET, regval); + putreg32(regval, UART_INT_CLR_REG(priv->config->id)); /* Are Rx interrupts enabled? The upper layer may hold off Rx input * by disabling the Rx interrupts if there is no place to saved the @@ -755,7 +848,7 @@ static int esp32_interrupt(int cpuint, void *context, FAR void *arg) { /* Is there any data waiting in the Rx FIFO? */ - nfifo = (status & UART_RXFIFO_CNT_M) >> UART_RXFIFO_CNT_S; + nfifo = esp32_get_rx_fifo_len(priv); if (nfifo > 0) { /* Received data in the RXFIFO! ... Process incoming bytes */ @@ -1000,6 +1093,7 @@ static int esp32_ioctl(struct file *filep, int cmd, unsigned long arg) static int esp32_receive(struct uart_dev_s *dev, unsigned int *status) { struct esp32_dev_s *priv = (struct esp32_dev_s *)dev->priv; + uint32_t rx_fifo; /* Return the error information in the saved status */ @@ -1008,8 +1102,9 @@ static int esp32_receive(struct uart_dev_s *dev, unsigned int *status) /* Then return the actual received byte */ - return (int)(esp32_serialin(priv, UART_FIFO_OFFSET) & - UART_RXFIFO_RD_BYTE_M); + rx_fifo = getreg32(DR_UART_FIFO_REG(priv->config->id)); + + return (int)(rx_fifo & UART_RXFIFO_RD_BYTE_M); } /**************************************************************************** @@ -1035,20 +1130,20 @@ static void esp32_rxint(struct uart_dev_s *dev, bool enable) */ #ifndef CONFIG_SUPPRESS_SERIAL_INTS - regval = esp32_serialin(priv, UART_INT_ENA_OFFSET); + regval = getreg32(UART_INT_ENA_REG(priv->config->id)); regval |= (UART_RXFIFO_FULL_INT_ENA | UART_FRM_ERR_INT_ENA | UART_RXFIFO_TOUT_INT_ENA); - esp32_serialout(priv, UART_INT_ENA_OFFSET, regval); + putreg32(regval, UART_INT_ENA_REG(priv->config->id)); #endif } else { /* Disable the RX interrupts */ - regval = esp32_serialin(priv, UART_INT_ENA_OFFSET); + regval = getreg32(UART_INT_ENA_REG(priv->config->id)); regval &= ~(UART_RXFIFO_FULL_INT_ENA | UART_FRM_ERR_INT_ENA | UART_RXFIFO_TOUT_INT_ENA); - esp32_serialout(priv, UART_INT_ENA_OFFSET, regval); + putreg32(regval, UART_INT_ENA_REG(priv->config->id)); } leave_critical_section(flags); @@ -1065,9 +1160,7 @@ static void esp32_rxint(struct uart_dev_s *dev, bool enable) static bool esp32_rxavailable(struct uart_dev_s *dev) { struct esp32_dev_s *priv = (struct esp32_dev_s *)dev->priv; - - return ((esp32_serialin(priv, UART_STATUS_OFFSET) - & UART_RXFIFO_CNT_M) > 0); + return esp32_get_rx_fifo_len(priv) > 0; } /**************************************************************************** @@ -1082,7 +1175,7 @@ static void esp32_send(struct uart_dev_s *dev, int ch) { struct esp32_dev_s *priv = (struct esp32_dev_s *)dev->priv; - esp32_serialout(priv, UART_FIFO_OFFSET, (uint32_t)ch); + putreg32((uint32_t)ch, AHB_UART_FIFO_REG(priv->config->id)); } /**************************************************************************** @@ -1097,20 +1190,16 @@ static void esp32_txint(struct uart_dev_s *dev, bool enable) { struct esp32_dev_s *priv = (struct esp32_dev_s *)dev->priv; irqstate_t flags; - int regval; flags = enter_critical_section(); if (enable) { - /* Set to receive an interrupt when the TX holding register register - * is empty - */ + /* Set to receive an interrupt when the TX holding register is empty */ #ifndef CONFIG_SUPPRESS_SERIAL_INTS - regval = esp32_serialin(priv, UART_INT_ENA_OFFSET); - regval |= (UART_TX_DONE_INT_ENA | UART_TXFIFO_EMPTY_INT_ENA); - esp32_serialout(priv, UART_INT_ENA_OFFSET, regval); + modifyreg32(UART_INT_ENA_REG(priv->config->id), + 0, (UART_TX_DONE_INT_ENA | UART_TXFIFO_EMPTY_INT_ENA)); /* Fake a TX interrupt here by just calling uart_xmitchars() with * interrupts disabled (note this may recurse). @@ -1123,9 +1212,8 @@ static void esp32_txint(struct uart_dev_s *dev, bool enable) { /* Disable the TX interrupt */ - regval = esp32_serialin(priv, UART_INT_ENA_OFFSET); - regval &= ~(UART_TX_DONE_INT_ENA | UART_TXFIFO_EMPTY_INT_ENA); - esp32_serialout(priv, UART_INT_ENA_OFFSET, regval); + modifyreg32(UART_INT_ENA_REG(priv->config->id), + (UART_TX_DONE_INT_ENA | UART_TXFIFO_EMPTY_INT_ENA), 0); } leave_critical_section(flags); @@ -1144,10 +1232,17 @@ static bool esp32_txready(struct uart_dev_s *dev) uint32_t txcnt; struct esp32_dev_s *priv = (struct esp32_dev_s *)dev->priv; - txcnt = (esp32_serialin(priv, UART_STATUS_OFFSET) >> UART_TXFIFO_CNT_S) & + txcnt = (getreg32(UART_STATUS_REG(priv->config->id)) >> UART_TXFIFO_CNT_S) & UART_TXFIFO_CNT_V; - return txcnt < 0x7f; + if (txcnt < (UART_TX_FIFO_SIZE -1)) + { + return true; + } + else + { + return false; + } } /**************************************************************************** @@ -1162,14 +1257,29 @@ static bool esp32_txempty(struct uart_dev_s *dev) { struct esp32_dev_s *priv = (struct esp32_dev_s *)dev->priv; - return ((esp32_serialin(priv, UART_STATUS_OFFSET) & UART_TXFIFO_CNT_M) - == 0); + return ((getreg32(UART_STATUS_REG(priv->config->id)) + & UART_TXFIFO_CNT_M) == 0); } /**************************************************************************** * Public Functions ****************************************************************************/ +/**************************************************************************** + * Name: esp32_lowsetup + * + * Description: + * Performs the low level UART initialization early in debug so that the + * serial console will be available during bootup. This must be called + * before up_serialinit. + * + ****************************************************************************/ + +void esp32_lowsetup(void) +{ + +} + /**************************************************************************** * Name: xtensa_early_serial_initialize * diff --git a/arch/xtensa/src/esp32/hardware/esp32_soc.h b/arch/xtensa/src/esp32/hardware/esp32_soc.h index f208741b619..2d2b0376ad3 100644 --- a/arch/xtensa/src/esp32/hardware/esp32_soc.h +++ b/arch/xtensa/src/esp32/hardware/esp32_soc.h @@ -244,6 +244,15 @@ #define DR_REG_PWM3_BASE 0x3ff70000 #define PERIPHS_SPI_ENCRYPT_BASEADDR DR_REG_SPI_ENCRYPT_BASE +/* Some AHB addresses can be used instead of DPORT addresses + * as a workaround for some HW bugs. + * This workaround is detailed at + * https://www.espressif.com/sites/default/files/documentation/ + * eco_and_workarounds_for_bugs_in_esp32_en.pdf + */ + +#define AHB_REG_UART_BASE 0x60000000 + /* Overall memory map */ #define SOC_DROM_LOW 0x3f400000 diff --git a/arch/xtensa/src/esp32/hardware/esp32_uart.h b/arch/xtensa/src/esp32/hardware/esp32_uart.h index 73cfd872960..cba15cb71be 100644 --- a/arch/xtensa/src/esp32/hardware/esp32_uart.h +++ b/arch/xtensa/src/esp32/hardware/esp32_uart.h @@ -32,9 +32,11 @@ ****************************************************************************/ #define REG_UART_BASE(i) (DR_REG_UART_BASE + (i) * 0x10000 + (i > 1 ? 0xe000 : 0)) +#define AHB_FIFO_BASE(i) (AHB_REG_UART_BASE + (i) * 0x10000 + (i > 1 ? 0xe000 : 0)) #define UART_FIFO_OFFSET 0x00 -#define UART_FIFO_REG(i) (REG_UART_BASE(i) + UART_FIFO_OFFSET) +#define AHB_UART_FIFO_REG(i) (AHB_FIFO_BASE(i) + UART_FIFO_OFFSET) +#define DR_UART_FIFO_REG(i) (REG_UART_BASE(i) + UART_FIFO_OFFSET) /* UART_RXFIFO_RD_BYTE : RO ;bitpos:[7:0] ;default: 8'b0 ; */ @@ -1798,6 +1800,24 @@ #define UART_MEM_RX_STATUS_V 0xFFFFFF #define UART_MEM_RX_STATUS_S 0 +/* UART_RD_ADDRESS : bitpos:[12:2] */ + +/* Description: Read address of the UART RX FIFO. (a pointer) */ + +#define UART_RD_ADDRESS 0x000007FF +#define UART_RD_ADDRESS_M ((UART_RD_ADDRESS_V) << (UART_RD_ADDRESS_S)) +#define UART_RD_ADDRESS_V 0x7FF +#define UART_RD_ADDRESS_S 2 + +/* UART_WR_ADDRESS : bitpos:[23:13] */ + +/* Description: Write address of the UART RX FIFO. (a pointer) */ + +#define UART_WR_ADDRESS 0x000007FF +#define UART_WR_ADDRESS_M ((UART_WR_ADDRESS_V) << (UART_WR_ADDRESS_S)) +#define UART_WR_ADDRESS_V 0x7FF +#define UART_WR_ADDRESS_S 13 + #define UART_MEM_CNT_STATUS_OFFSET 0x64 #define UART_MEM_CNT_STATUS_REG(i) (REG_UART_BASE(i) + UART_MEM_CNT_STATUS_OFFSET) From cce42d5f74bc58ae08a4a6f0bdb50866b0cc01d0 Mon Sep 17 00:00:00 2001 From: Sara Souza Date: Tue, 20 Apr 2021 10:28:41 -0300 Subject: [PATCH 051/739] xtensa/esp32: Reorganize the pins initialization and adds showprogress in __start --- arch/xtensa/src/esp32/esp32_serial.c | 109 ++++++++++++++------------- arch/xtensa/src/esp32/esp32_start.c | 24 ++++++ 2 files changed, 80 insertions(+), 53 deletions(-) diff --git a/arch/xtensa/src/esp32/esp32_serial.c b/arch/xtensa/src/esp32/esp32_serial.c index b211074aff0..e6cc4814581 100644 --- a/arch/xtensa/src/esp32/esp32_serial.c +++ b/arch/xtensa/src/esp32/esp32_serial.c @@ -362,12 +362,12 @@ static uart_dev_t g_uart2port = /**************************************************************************** * Private Functions ****************************************************************************/ - +#ifndef CONFIG_SUPPRESS_UART_CONFIG /**************************************************************************** * Name: esp32_reset_rx_fifo * * Description: - * Resets the RX FIFO. + * Resets the RX FIFO. * NOTE: We can not use rxfifo_rst to reset the hardware RX FIFO. * * Parameters: @@ -388,7 +388,7 @@ static void esp32_reset_rx_fifo(struct esp32_dev_s *priv) { getreg32(DR_UART_FIFO_REG(priv->config->id)); - rx_status_reg = getreg32(UART_STATUS_REG(priv->config->id)); + rx_status_reg = getreg32(UART_STATUS_REG(priv->config->id)); fifo_cnt = REG_MASK(rx_status_reg, UART_RXFIFO_CNT); mem_rx_status_reg = getreg32(UART_MEM_RX_STATUS_REG(priv->config->id)); rd_address = REG_MASK(mem_rx_status_reg, UART_RD_ADDRESS); @@ -400,7 +400,7 @@ static void esp32_reset_rx_fifo(struct esp32_dev_s *priv) * Name: esp32_reset_tx_fifo * * Description: - * Resets the TX FIFO. + * Resets the TX FIFO. * * Parameters: * priv - Pointer to the serial driver struct. @@ -412,6 +412,7 @@ static void esp32_reset_tx_fifo(struct esp32_dev_s *priv) modifyreg32(UART_CONF0_REG(priv->config->id), 0, UART_TXFIFO_RST_M); modifyreg32(UART_CONF0_REG(priv->config->id), UART_TXFIFO_RST_M, 0); } +#endif /**************************************************************************** * Name: esp32_get_rx_fifo_len @@ -442,11 +443,11 @@ static uint32_t esp32_get_rx_fifo_len(struct esp32_dev_s *priv) uint32_t len; mem_rx_status_reg = getreg32(UART_MEM_RX_STATUS_REG(priv->config->id)); - rd_address = ((mem_rx_status_reg & UART_RD_ADDRESS_M) + rd_address = ((mem_rx_status_reg & UART_RD_ADDRESS_M) >> UART_RD_ADDRESS_S); - wr_address = ((mem_rx_status_reg & UART_WR_ADDRESS_M) + wr_address = ((mem_rx_status_reg & UART_WR_ADDRESS_M) >> UART_WR_ADDRESS_S); - rx_status_reg = getreg32(UART_STATUS_REG(priv->config->id)); + rx_status_reg = getreg32(UART_STATUS_REG(priv->config->id)); fifo_cnt = ((rx_status_reg & UART_RXFIFO_CNT_M) >> UART_RXFIFO_CNT_S); @@ -458,7 +459,7 @@ static uint32_t esp32_get_rx_fifo_len(struct esp32_dev_s *priv) { len = (wr_address + 128) - rd_address; } - else + else { len = fifo_cnt > 0 ? 128 : 0; } @@ -594,26 +595,6 @@ static int esp32_setup(struct uart_dev_s *dev) regval |= (clkdiv & 15) << UART_CLKDIV_FRAG_S; putreg32(regval, UART_CLKDIV_REG(priv->config->id)); - /* Configure UART pins - * - * Internal signals can be output to multiple GPIO pads. - * But only one GPIO pad can connect with input signal - */ - - esp32_configgpio(priv->config->txpin, OUTPUT_FUNCTION_3); - esp32_gpio_matrix_out(priv->config->txpin, priv->config->txsig, 0, 0); - - esp32_configgpio(priv->config->rxpin, INPUT_FUNCTION_3); - esp32_gpio_matrix_in(priv->config->rxpin, priv->config->rxsig, 0); - -#if defined(CONFIG_SERIAL_IFLOWCONTROL) || defined(CONFIG_SERIAL_OFLOWCONTROL) - esp32_configgpio(priv->config->rtspin, OUTPUT_FUNCTION_3); - esp32_gpio_matrix_out(priv->config->rtspin, priv->config->rtssig, 0, 0); - - esp32_configgpio(priv->config->ctspin, INPUT_FUNCTION_3); - esp32_gpio_matrix_in(priv->config->ctspin, priv->config->ctssig, 0); -#endif - /* Enable RX and error interrupts. Clear and pending interrtupt */ regval = UART_RXFIFO_FULL_INT_ENA | UART_FRM_ERR_INT_ENA | @@ -670,25 +651,6 @@ static void esp32_shutdown(struct uart_dev_s *dev) esp32_disableallints(priv, NULL); - /* Revert pins to inputs and detach UART signals */ - - esp32_configgpio(priv->config->txpin, INPUT); - esp32_gpio_matrix_out(priv->config->txsig, - MATRIX_DETACH_OUT_SIG, true, false); - - esp32_configgpio(priv->config->rxpin, INPUT); - esp32_gpio_matrix_in(priv->config->rxsig, MATRIX_DETACH_IN_LOW_PIN, false); - -#if defined(CONFIG_SERIAL_IFLOWCONTROL) || defined(CONFIG_SERIAL_OFLOWCONTROL) - esp32_configgpio(priv->config->rtspin, INPUT); - esp32_gpio_matrix_out(priv->config->rtssig, - MATRIX_DETACH_OUT_SIG, true, false); - - esp32_configgpio(priv->config->ctspin, INPUT); - esp32_gpio_matrix_in(priv->config->ctssig, - MATRIX_DETACH_IN_LOW_PIN, false); -#endif - /* Unconfigure and disable the UART */ putreg32(0, UART_CONF0_REG(priv->config->id)); @@ -1232,8 +1194,8 @@ static bool esp32_txready(struct uart_dev_s *dev) uint32_t txcnt; struct esp32_dev_s *priv = (struct esp32_dev_s *)dev->priv; - txcnt = (getreg32(UART_STATUS_REG(priv->config->id)) >> UART_TXFIFO_CNT_S) & - UART_TXFIFO_CNT_V; + txcnt = (getreg32(UART_STATUS_REG(priv->config->id)) >> UART_TXFIFO_CNT_S) + & UART_TXFIFO_CNT_V; if (txcnt < (UART_TX_FIFO_SIZE -1)) { @@ -1261,6 +1223,41 @@ static bool esp32_txempty(struct uart_dev_s *dev) & UART_TXFIFO_CNT_M) == 0); } +#ifndef CONFIG_SUPPRESS_UART_CONFIG +/**************************************************************************** + * Name: esp32_config_pins + * + * Description: + * Performs the pin configuration. + * + * Parameters: + * priv - Pointer to the serial driver struct. + * + ****************************************************************************/ + +static void esp32_config_pins(struct esp32_dev_s *priv) +{ + /* Configure UART pins + * + * Internal signals can be output to multiple GPIO pads. + * But only one GPIO pad can connect with input signal + */ + + esp32_configgpio(priv->config->txpin, OUTPUT_FUNCTION_3); + esp32_gpio_matrix_out(priv->config->txpin, priv->config->txsig, 0, 0); + + esp32_configgpio(priv->config->rxpin, INPUT_FUNCTION_3); + esp32_gpio_matrix_in(priv->config->rxpin, priv->config->rxsig, 0); + +#if defined(CONFIG_SERIAL_IFLOWCONTROL) || defined(CONFIG_SERIAL_OFLOWCONTROL) + esp32_configgpio(priv->config->rtspin, OUTPUT_FUNCTION_3); + esp32_gpio_matrix_out(priv->config->rtspin, priv->config->rtssig, 0, 0); + + esp32_configgpio(priv->config->ctspin, INPUT_FUNCTION_3); + esp32_gpio_matrix_in(priv->config->ctspin, priv->config->ctssig, 0); +#endif +} + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -1269,17 +1266,23 @@ static bool esp32_txempty(struct uart_dev_s *dev) * Name: esp32_lowsetup * * Description: - * Performs the low level UART initialization early in debug so that the - * serial console will be available during bootup. This must be called - * before up_serialinit. + * Performs the pin configuration for all UARTs. + * This functions is intended to be called in the __start function. * ****************************************************************************/ void esp32_lowsetup(void) { - + esp32_config_pins(TTYS0_DEV.priv); +#ifdef TTYS1_DEV + esp32_config_pins(TTYS1_DEV.priv); +#endif +#ifdef TTYS2_DEV + esp32_config_pins(TTYS2_DEV.priv); +#endif } +#endif /* CONFIG_SUPPRESS_UART_CONFIG */ /**************************************************************************** * Name: xtensa_early_serial_initialize * diff --git a/arch/xtensa/src/esp32/esp32_start.c b/arch/xtensa/src/esp32/esp32_start.c index bc472bbdf12..236a2e8954a 100644 --- a/arch/xtensa/src/esp32/esp32_start.c +++ b/arch/xtensa/src/esp32/esp32_start.c @@ -40,6 +40,16 @@ #include "esp32_start.h" #include "esp32_spiram.h" +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#ifdef CONFIG_DEBUG_FEATURES +# define showprogress(c) up_puts(c) +#else +# define showprogress(c) +#endif + /**************************************************************************** * Public Data ****************************************************************************/ @@ -53,6 +63,10 @@ uint32_t g_idlestack[IDLETHREAD_STACKWORDS] * Public Functions ****************************************************************************/ +#ifndef CONFIG_SUPPRESS_UART_CONFIG +extern void esp32_lowsetup(void); +#endif + /**************************************************************************** * Name: __start * @@ -136,12 +150,20 @@ void IRAM_ATTR __start(void) esp32_clockconfig(); +#ifndef CONFIG_SUPPRESS_UART_CONFIG + /* Configure the UART so we can get debug output */ + + esp32_lowsetup(); +#endif + #ifdef USE_EARLYSERIALINIT /* Perform early serial initialization */ xtensa_early_serial_initialize(); #endif + showprogress("A"); + #if defined(CONFIG_ESP32_SPIRAM_BOOT_INIT) esp_spiram_init_cache(); if (esp_spiram_init() != OK) @@ -166,6 +188,8 @@ void IRAM_ATTR __start(void) esp32_board_initialize(); + showprogress("B"); + /* Bring up NuttX */ nx_start(); From 50daf242424e57b0b1a6334e8c9572761fc228d9 Mon Sep 17 00:00:00 2001 From: Sara Souza Date: Wed, 28 Apr 2021 08:36:13 -0300 Subject: [PATCH 052/739] esp32/esp32-c3: Adds two helpers to extract and include a field value --- arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h | 8 ++++++++ arch/xtensa/src/esp32/hardware/esp32_soc.h | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h b/arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h index dca4a1d80f1..efb5bf32d22 100644 --- a/arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h +++ b/arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h @@ -257,4 +257,12 @@ #define BIT(nr) (1UL << (nr)) +/* Extract the field from the register and shift it to avoid wrong reading */ + +#define REG_MASK(_reg, _field) (((_reg) & (_field##_M)) >> (_field##_S)) + +/* Helper to place a value in a field */ + +#define VALUE_TO_FIELD(_value, _field) (((_value) << (_field##_S)) & (_field##_M)) + #endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_SOC_H */ diff --git a/arch/xtensa/src/esp32/hardware/esp32_soc.h b/arch/xtensa/src/esp32/hardware/esp32_soc.h index 2d2b0376ad3..ada46e8af63 100644 --- a/arch/xtensa/src/esp32/hardware/esp32_soc.h +++ b/arch/xtensa/src/esp32/hardware/esp32_soc.h @@ -183,6 +183,14 @@ #define GET_PERI_REG_BITS2(reg, mask,shift) ((READ_PERI_REG(reg)>>(shift))&(mask)) +/* Extract the field from the register and shift it to avoid wrong reading */ + +#define REG_MASK(_reg, _field) (((_reg) & (_field##_M)) >> (_field##_S)) + +/* Helper to place a value in a field */ + +#define VALUE_TO_FIELD(_value, _field) (((_value) << (_field##_S)) & (_field##_M)) + /* Periheral Clock */ #define APB_CLK_FREQ_ROM 26 * 1000000 From 873293cc3f3ca64df2a37391abca169ff5330d92 Mon Sep 17 00:00:00 2001 From: Sara Souza Date: Wed, 28 Apr 2021 08:48:51 -0300 Subject: [PATCH 053/739] xtensa/esp32: Applies REG_MASK to extract a field value --- arch/xtensa/src/esp32/esp32_serial.c | 33 ++++++++++------------------ 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/arch/xtensa/src/esp32/esp32_serial.c b/arch/xtensa/src/esp32/esp32_serial.c index e6cc4814581..686610f4527 100644 --- a/arch/xtensa/src/esp32/esp32_serial.c +++ b/arch/xtensa/src/esp32/esp32_serial.c @@ -443,13 +443,10 @@ static uint32_t esp32_get_rx_fifo_len(struct esp32_dev_s *priv) uint32_t len; mem_rx_status_reg = getreg32(UART_MEM_RX_STATUS_REG(priv->config->id)); - rd_address = ((mem_rx_status_reg & UART_RD_ADDRESS_M) - >> UART_RD_ADDRESS_S); - wr_address = ((mem_rx_status_reg & UART_WR_ADDRESS_M) - >> UART_WR_ADDRESS_S); - rx_status_reg = getreg32(UART_STATUS_REG(priv->config->id)); - fifo_cnt = ((rx_status_reg & UART_RXFIFO_CNT_M) - >> UART_RXFIFO_CNT_S); + rd_address = REG_MASK(mem_rx_status_reg, UART_RD_ADDRESS); + wr_address = REG_MASK(mem_rx_status_reg, UART_WR_ADDRESS); + rx_status_reg = getreg32(UART_STATUS_REG(priv->config->id)); + fifo_cnt = REG_MASK(rx_status_reg, UART_RXFIFO_CNT); if (wr_address > rd_address) { @@ -611,8 +608,8 @@ static int esp32_setup(struct uart_dev_s *dev) /* Configure and enable the UART */ putreg32(conf0, UART_CONF0_REG(priv->config->id)); - regval = (UART_RX_FIFO_FULL_THRHD << UART_RXFIFO_FULL_THRHD_S) | - (UART_RX_TOUT_THRHD_VALUE << UART_RX_TOUT_THRHD_S) | + regval = VALUE_TO_FIELD(UART_RX_FIFO_FULL_THRHD, UART_RXFIFO_FULL_THRHD) | + VALUE_TO_FIELD(UART_RX_TOUT_THRHD_VALUE, UART_RX_TOUT_THRHD) | UART_RX_TOUT_EN; putreg32(regval, UART_CONF1_REG(priv->config->id)); #endif @@ -827,7 +824,7 @@ static int esp32_interrupt(int cpuint, void *context, FAR void *arg) if ((enabled & (UART_TX_DONE_INT_ENA | UART_TXFIFO_EMPTY_INT_ENA)) != 0) { - nfifo = (status & UART_TXFIFO_CNT_M) >> UART_TXFIFO_CNT_S; + nfifo = REG_MASK(status, UART_TXFIFO_CNT); if (nfifo < 0x7f) { /* The TXFIFO is not full ... process outgoing bytes */ @@ -1066,7 +1063,7 @@ static int esp32_receive(struct uart_dev_s *dev, unsigned int *status) rx_fifo = getreg32(DR_UART_FIFO_REG(priv->config->id)); - return (int)(rx_fifo & UART_RXFIFO_RD_BYTE_M); + return (int)REG_MASK(rx_fifo, UART_RXFIFO_RD_BYTE); } /**************************************************************************** @@ -1192,19 +1189,13 @@ static void esp32_txint(struct uart_dev_s *dev, bool enable) static bool esp32_txready(struct uart_dev_s *dev) { uint32_t txcnt; + uint32_t reg; struct esp32_dev_s *priv = (struct esp32_dev_s *)dev->priv; - txcnt = (getreg32(UART_STATUS_REG(priv->config->id)) >> UART_TXFIFO_CNT_S) - & UART_TXFIFO_CNT_V; + reg = getreg32(UART_STATUS_REG(priv->config->id)); + txcnt = REG_MASK(reg, UART_TXFIFO_CNT); - if (txcnt < (UART_TX_FIFO_SIZE -1)) - { - return true; - } - else - { - return false; - } + return (txcnt < (UART_TX_FIFO_SIZE - 1)); } /**************************************************************************** From 7cb7fe3f38f8db0917ebb2aecb81f90c3e122b4f Mon Sep 17 00:00:00 2001 From: raiden00pl Date: Tue, 6 Apr 2021 08:31:25 +0200 Subject: [PATCH 054/739] stm32_pwm: fixes for PULSECOUNT support 1. generate an indefinite number of pulses when info->count = 0 2. timers that don't support pulse-count shouldn't use pulse-count logic --- arch/arm/src/stm32/stm32_pwm.c | 55 ++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/arch/arm/src/stm32/stm32_pwm.c b/arch/arm/src/stm32/stm32_pwm.c index 318fb6b81dc..195f1698357 100644 --- a/arch/arm/src/stm32/stm32_pwm.c +++ b/arch/arm/src/stm32/stm32_pwm.c @@ -410,9 +410,8 @@ struct stm32_pwmtimer_s uint8_t prev; /* The previous value of the RCR (pre-loaded) */ uint8_t curr; /* The current value of the RCR (pre-loaded) */ uint32_t count; /* Remaining pulse count */ -#else - uint32_t frequency; /* Current frequency setting */ #endif + uint32_t frequency; /* Current frequency setting */ uint32_t base; /* The base address of the timer */ uint32_t pclk; /* The frequency of the peripheral * clock that drives the timer module @@ -488,10 +487,9 @@ static int pwm_configure(FAR struct pwm_lowerhalf_s *dev); #ifdef CONFIG_PWM_PULSECOUNT static int pwm_pulsecount_timer(FAR struct pwm_lowerhalf_s *dev, FAR const struct pwm_info_s *info); -#else +#endif static int pwm_timer(FAR struct pwm_lowerhalf_s *dev, FAR const struct pwm_info_s *info); -#endif #ifdef HAVE_PWM_INTERRUPT static int pwm_interrupt(FAR struct pwm_lowerhalf_s *dev); # ifdef CONFIG_STM32_TIM1_PWM @@ -509,13 +507,12 @@ static int pwm_setup(FAR struct pwm_lowerhalf_s *dev); static int pwm_shutdown(FAR struct pwm_lowerhalf_s *dev); #ifdef CONFIG_PWM_PULSECOUNT -static int pwm_start(FAR struct pwm_lowerhalf_s *dev, - FAR const struct pwm_info_s *info, - FAR void *handle); -#else +static int pwm_start_pulsecount(FAR struct pwm_lowerhalf_s *dev, + FAR const struct pwm_info_s *info, + FAR void *handle); +#endif static int pwm_start(FAR struct pwm_lowerhalf_s *dev, FAR const struct pwm_info_s *info); -#endif static int pwm_stop(FAR struct pwm_lowerhalf_s *dev); static int pwm_ioctl(FAR struct pwm_lowerhalf_s *dev, @@ -533,7 +530,11 @@ static const struct pwm_ops_s g_pwmops = { .setup = pwm_setup, .shutdown = pwm_shutdown, +#ifdef CONFIG_PWM_PULSECOUNT + .start = pwm_start_pulsecount, +#else .start = pwm_start, +#endif .stop = pwm_stop, .ioctl = pwm_ioctl, }; @@ -3376,7 +3377,6 @@ static int pwm_pulsecount_timer(FAR struct pwm_lowerhalf_s *dev, FAR struct stm32_pwmtimer_s *priv = (FAR struct stm32_pwmtimer_s *)dev; ub16_t duty = 0; uint8_t channel = 0; - uint32_t mode = 0; uint16_t outputs = 0; int ret = OK; @@ -3394,7 +3394,6 @@ static int pwm_pulsecount_timer(FAR struct pwm_lowerhalf_s *dev, duty = info->duty; channel = priv->channels[0].channel; - mode = priv->channels[0].mode; /* Disable all interrupts and DMA requests, clear all pending status */ @@ -3503,7 +3502,7 @@ errout: return ret; } -#else /* !CONFIG_PWM_PULSECOUNT */ +#endif /* CONFIG_PWM_PULSECOUNT */ /**************************************************************************** * Name: pwm_configure @@ -3795,7 +3794,6 @@ static int pwm_timer(FAR struct pwm_lowerhalf_s *dev, errout: return ret; } -#endif /* CONFIG_PWM_PULSECOUNT */ #ifdef HAVE_PWM_INTERRUPT @@ -4230,10 +4228,16 @@ static int pwm_setup(FAR struct pwm_lowerhalf_s *dev) */ #ifdef CONFIG_PWM_PULSECOUNT - ret = pwm_pulsecount_configure(dev); -#else - ret = pwm_configure(dev); + if (priv->timtype == TIMTYPE_ADVANCED) + { + ret = pwm_pulsecount_configure(dev); + } + else #endif + { + ret = pwm_configure(dev); + } + if (ret < 0) { pwmerr("failed to configure PWM %d\n", priv->timid); @@ -4331,12 +4335,19 @@ errout: ****************************************************************************/ #ifdef CONFIG_PWM_PULSECOUNT -static int pwm_start(FAR struct pwm_lowerhalf_s *dev, - FAR const struct pwm_info_s *info, - FAR void *handle) +static int pwm_start_pulsecount(FAR struct pwm_lowerhalf_s *dev, + FAR const struct pwm_info_s *info, + FAR void *handle) { FAR struct stm32_pwmtimer_s *priv = (FAR struct stm32_pwmtimer_s *)dev; + /* Generate an indefinite number of pulses */ + + if (info->count == 0) + { + return pwm_start(dev, info); + } + /* Check if a pulsecount has been selected */ if (info->count > 0) @@ -4361,7 +4372,8 @@ static int pwm_start(FAR struct pwm_lowerhalf_s *dev, return pwm_pulsecount_timer(dev, info); } -#else /* !CONFIG_PWM_PULSECOUNT */ +#endif /* CONFIG_PWM_PULSECOUNT */ + static int pwm_start(FAR struct pwm_lowerhalf_s *dev, FAR const struct pwm_info_s *info) { @@ -4403,7 +4415,6 @@ static int pwm_start(FAR struct pwm_lowerhalf_s *dev, return ret; } -#endif /* CONFIG_PWM_PULSECOUNT */ /**************************************************************************** * Name: pwm_stop @@ -4587,11 +4598,9 @@ static int pwm_stop(FAR struct pwm_lowerhalf_s *dev) flags = enter_critical_section(); -#ifndef CONFIG_PWM_PULSECOUNT /* Stopped so frequency is zero */ priv->frequency = 0; -#endif /* Disable further interrupts and stop the timer */ From b721ba05aaa0a750a81ea07b5afdfbfa9a5cbc46 Mon Sep 17 00:00:00 2001 From: raiden00pl Date: Wed, 5 May 2021 09:20:23 +0200 Subject: [PATCH 055/739] stm32_pwm.c: fix compilation warnings --- arch/arm/src/stm32/stm32_pwm.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/arch/arm/src/stm32/stm32_pwm.c b/arch/arm/src/stm32/stm32_pwm.c index 195f1698357..ae849e5e156 100644 --- a/arch/arm/src/stm32/stm32_pwm.c +++ b/arch/arm/src/stm32/stm32_pwm.c @@ -3384,7 +3384,8 @@ static int pwm_pulsecount_timer(FAR struct pwm_lowerhalf_s *dev, DEBUGASSERT(priv != NULL && info != NULL); - pwminfo("TIM%u channel: %u frequency: %u duty: %08x count: %u\n", + pwminfo("TIM%u channel: %u frequency: %" PRIx32 " duty: %08" PRIx32 + " count: %" PRIx32 "\n", priv->timid, priv->channels[0].channel, info->frequency, info->duty, info->count); @@ -3873,7 +3874,7 @@ static int pwm_interrupt(FAR struct pwm_lowerhalf_s *dev) * output. */ - pwminfo("Update interrupt SR: %04x prev: %u curr: %u count: %u\n", + pwminfo("Update interrupt SR: %04x prev: %u curr: %u count: %" PRIx32 "\n", regval, priv->prev, priv->curr, priv->count); return OK; @@ -4358,7 +4359,7 @@ static int pwm_start_pulsecount(FAR struct pwm_lowerhalf_s *dev, if (priv->timtype != TIMTYPE_ADVANCED) { - pwmerr("ERROR: TIM%u cannot support pulse count: %u\n", + pwmerr("ERROR: TIM%u cannot support pulse count: %" PRIx32 "\n", priv->timid, info->count); return -EPERM; } From a74ea51aaec716a56b1e1d5d1d2f88db60ca4e4f Mon Sep 17 00:00:00 2001 From: raiden00pl Date: Wed, 5 May 2021 09:20:52 +0200 Subject: [PATCH 056/739] drivers/timers/pwm.c: fix compilation warnings --- drivers/timers/pwm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/timers/pwm.c b/drivers/timers/pwm.c index 257ff11c1b0..0b2f02e6aca 100644 --- a/drivers/timers/pwm.c +++ b/drivers/timers/pwm.c @@ -131,7 +131,7 @@ static void pwm_dump(FAR const char *msg, FAR const struct pwm_info_s *info, #endif #ifdef CONFIG_PWM_PULSECOUNT - pwminfo(" count: %d\n", info->count); + pwminfo(" count: %" PRIx32 "\n", info->count); #endif pwminfo(" started: %d\n", started); From 9b8399effe9b5fa0d64868491f2486d4dfe2e611 Mon Sep 17 00:00:00 2001 From: Jukka Laitinen Date: Wed, 5 May 2021 13:58:33 +0300 Subject: [PATCH 057/739] lib_modfl: Use fabsl instead of fabs for long double arguments Signed-off-by: Jukka Laitinen --- libs/libc/math/lib_modfl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/libc/math/lib_modfl.c b/libs/libc/math/lib_modfl.c index 6e2260ef1bf..b28f2aa124e 100644 --- a/libs/libc/math/lib_modfl.c +++ b/libs/libc/math/lib_modfl.c @@ -42,12 +42,12 @@ #ifdef CONFIG_HAVE_LONG_DOUBLE long double modfl(long double x, long double *iptr) { - if (fabs(x) >= 4503599627370496.0) + if (fabsl(x) >= 4503599627370496.0) { *iptr = x; return 0.0; } - else if (fabs(x) < 1.0) + else if (fabsl(x) < 1.0) { *iptr = (x * 0.0); return x; From cbe3e120d51743e42b70f6891668103385b7b822 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Tue, 20 Apr 2021 07:04:07 -0700 Subject: [PATCH 058/739] stm32h7:Use inttypes in printing macros --- arch/arm/src/stm32h7/stm32_dma.c | 2 +- arch/arm/src/stm32h7/stm32_otgdev.c | 15 +++--- arch/arm/src/stm32h7/stm32_sdmmc.c | 81 +++++++++++++++++------------ arch/arm/src/stm32h7/stm32_spi.c | 19 ++++--- 4 files changed, 68 insertions(+), 49 deletions(-) diff --git a/arch/arm/src/stm32h7/stm32_dma.c b/arch/arm/src/stm32h7/stm32_dma.c index 20b74ef2aed..0c4eab7109b 100644 --- a/arch/arm/src/stm32h7/stm32_dma.c +++ b/arch/arm/src/stm32h7/stm32_dma.c @@ -2054,7 +2054,7 @@ static bool stm32_bdma_capable(FAR stm32_dmacfg_t *cfg) ((mend + 1) & (ARMV7M_DCACHE_LINESIZE - 1)) != 0) { dmainfo("stm32_dmacapable: dcache unaligned " - "maddr:0x%08" PRIx32 " mend:0x%08x\n", + "maddr:0x%08" PRIx32 " mend:0x%08" PRIx32 "\n", cfg->maddr, mend); #if !defined(CONFIG_STM32H7_DMACAPABLE_ASSUME_CACHE_ALIGNED) return false; diff --git a/arch/arm/src/stm32h7/stm32_otgdev.c b/arch/arm/src/stm32h7/stm32_otgdev.c index 09f6778887a..adea1a11d1b 100644 --- a/arch/arm/src/stm32h7/stm32_otgdev.c +++ b/arch/arm/src/stm32h7/stm32_otgdev.c @@ -25,6 +25,7 @@ #include #include +#include #include #include #include @@ -905,7 +906,7 @@ static uint32_t stm32_getreg(uint32_t addr) { /* Yes.. then show how many times the value repeated */ - uinfo("[repeats %d more times]\n", count - 3); + uinfo("[repeats %" PRId32 " more times]\n", count - 3); } /* Save the new address, value, and count */ @@ -917,7 +918,7 @@ static uint32_t stm32_getreg(uint32_t addr) /* Show the register value read */ - uinfo("%08x->%08x\n", addr, val); + uinfo("%08" PRIx32 "->%08" PRIx32 "\n", addr, val); return val; } #endif @@ -935,7 +936,7 @@ static void stm32_putreg(uint32_t val, uint32_t addr) { /* Show the register value being written */ - uinfo("%08x<-%08x\n", addr, val); + uinfo("%08" PRIx32 "->%08" PRIx32 "\n", addr, val); /* Write the value */ @@ -1289,8 +1290,8 @@ static void stm32_epin_request(FAR struct stm32_usbdev_s *priv, return; } - uinfo("EP%d req=%p: len=%d xfrd=%d zlp=%d\n", - privep->epphy, privreq, privreq->req.len, + uinfo("EP%" PRId8 " req=%p: len=%" PRId16 " xfrd=%" PRId16" zlp=%" + PRId8 "\n", privep->epphy, privreq, privreq->req.len, privreq->req.xfrd, privep->zlp); /* Check for a special case: If we are just starting a request (xfrd==0) @@ -2731,7 +2732,7 @@ static inline void stm32_epout_interrupt(FAR struct stm32_usbdev_s *priv) if ((daint & 1) != 0) { regval = stm32_getreg(STM32_OTG_DOEPINT(epno)); - uerr("DOEPINT(%d) = %08x\n", epno, regval); + uerr("DOEPINT(%d) = %08" PRIx32 "\n", epno, regval); stm32_putreg(0xff, STM32_OTG_DOEPINT(epno)); } @@ -2970,7 +2971,7 @@ static inline void stm32_epin_interrupt(FAR struct stm32_usbdev_s *priv) { if ((daint & 1) != 0) { - uerr("DIEPINT(%d) = %08x\n", + uerr("DIEPINT(%d) = %08" PRIx32 "\n", epno, stm32_getreg(STM32_OTG_DIEPINT(epno))); stm32_putreg(0xff, STM32_OTG_DIEPINT(epno)); } diff --git a/arch/arm/src/stm32h7/stm32_sdmmc.c b/arch/arm/src/stm32h7/stm32_sdmmc.c index 34369281319..37a021be48a 100644 --- a/arch/arm/src/stm32h7/stm32_sdmmc.c +++ b/arch/arm/src/stm32h7/stm32_sdmmc.c @@ -24,6 +24,7 @@ #include +#include #include #include #include @@ -742,7 +743,7 @@ static inline void stm32_setclkcr(struct stm32_dev_s *priv, uint32_t clkcr) sdmmc_putreg32(priv, regval, STM32_SDMMC_CLKCR_OFFSET); - mcinfo("CLKCR: %08x PWR: %08x\n", + mcinfo("CLKCR: %08" PRIx32 " PWR: %08" PRIx32 "\n", sdmmc_getreg32(priv, STM32_SDMMC_CLKCR_OFFSET), sdmmc_getreg32(priv, STM32_SDMMC_POWER_OFFSET)); } @@ -981,14 +982,22 @@ static void stm32_sample(struct stm32_dev_s *priv, int index) static void stm32_sdiodump(struct stm32_sdioregs_s *regs, const char *msg) { mcinfo("SDIO Registers: %s\n", msg); - mcinfo(" POWER[%08x]: %08x\n", STM32_SDMMC_POWER_OFFSET, regs->power); - mcinfo(" CLKCR[%08x]: %08x\n", STM32_SDMMC_CLKCR_OFFSET, regs->clkcr); - mcinfo(" DCTRL[%08x]: %08x\n", STM32_SDMMC_DCTRL_OFFSET, regs->dctrl); - mcinfo(" DTIMER[%08x]: %08x\n", STM32_SDMMC_DTIMER_OFFSET, regs->dtimer); - mcinfo(" DLEN[%08x]: %08x\n", STM32_SDMMC_DLEN_OFFSET, regs->dlen); - mcinfo(" DCOUNT[%08x]: %08x\n", STM32_SDMMC_DCOUNT_OFFSET, regs->dcount); - mcinfo(" STA[%08x]: %08x\n", STM32_SDMMC_STA_OFFSET, regs->sta); - mcinfo(" MASK[%08x]: %08x\n", STM32_SDMMC_MASK_OFFSET, regs->mask); + mcinfo(" POWER[%08x]: %08" PRIx8 "\n", STM32_SDMMC_POWER_OFFSET, + regs->power); + mcinfo(" CLKCR[%08x]: %08" PRIx16 "\n", STM32_SDMMC_CLKCR_OFFSET, + regs->clkcr); + mcinfo(" DCTRL[%08x]: %08" PRIx16 "\n", STM32_SDMMC_DCTRL_OFFSET, + regs->dctrl); + mcinfo(" DTIMER[%08x]: %08" PRIx32 "\n", STM32_SDMMC_DTIMER_OFFSET, + regs->dtimer); + mcinfo(" DLEN[%08x]: %08" PRIx32 "\n", STM32_SDMMC_DLEN_OFFSET, + regs->dlen); + mcinfo(" DCOUNT[%08x]: %08" PRIx32 "\n", STM32_SDMMC_DCOUNT_OFFSET, + regs->dcount); + mcinfo(" STA[%08x]: %08" PRIx32 "\n", STM32_SDMMC_STA_OFFSET, + regs->sta); + mcinfo(" MASK[%08x]: %08" PRIx32 "\n", STM32_SDMMC_MASK_OFFSET, + regs->mask); } #endif @@ -1403,7 +1412,7 @@ static void stm32_eventtimeout(wdparm_t arg) DEBUGASSERT((priv->waitevents & SDIOWAIT_TIMEOUT) != 0 || priv->wkupevent != 0); - mcinfo("sta: %08x enabled irq: %08x\n", + mcinfo("sta: %08" PRIx32 " enabled irq: %08" PRIx32 "\n", sdmmc_getreg32(priv, STM32_SDMMC_STA_OFFSET), sdmmc_getreg32(priv, STM32_SDMMC_MASK_OFFSET)); @@ -1414,7 +1423,7 @@ static void stm32_eventtimeout(wdparm_t arg) /* Yes.. wake up any waiting threads */ stm32_endwait(priv, SDIOWAIT_TIMEOUT); - mcerr("Timeout: remaining: %d\n", priv->remaining); + mcerr("Timeout: remaining: %u\n", priv->remaining); } } @@ -1712,7 +1721,7 @@ static int stm32_sdmmc_interrupt(int irq, void *context, void *arg) * Sets STM32_SDMMC_ICR_DCRCFAILC */ - mcerr("ERROR: Data block CRC failure, remaining: %d\n", + mcerr("ERROR: Data block CRC failure, remaining: %u\n", priv->remaining); stm32_endtransfer(priv, @@ -1727,7 +1736,7 @@ static int stm32_sdmmc_interrupt(int irq, void *context, void *arg) * Sets STM32_SDMMC_ICR_DTIMEOUTC */ - mcerr("ERROR: Data timeout, remaining: %d\n", + mcerr("ERROR: Data timeout, remaining: %u\n", priv->remaining); stm32_endtransfer(priv, SDIOWAIT_TRANSFERDONE | @@ -1742,7 +1751,7 @@ static int stm32_sdmmc_interrupt(int irq, void *context, void *arg) * Sets STM32_SDMMC_ICR_RXOVERRC */ - mcerr("ERROR: RX FIFO overrun, remaining: %d\n", + mcerr("ERROR: RX FIFO overrun, remaining: %u\n", priv->remaining); stm32_endtransfer(priv, SDIOWAIT_TRANSFERDONE | @@ -1757,7 +1766,7 @@ static int stm32_sdmmc_interrupt(int irq, void *context, void *arg) * Sets STM32_SDMMC_ICR_TXUNDERRC */ - mcerr("ERROR: TX FIFO underrun, remaining: %d\n", + mcerr("ERROR: TX FIFO underrun, remaining: %u\n", priv->remaining); stm32_endtransfer(priv, SDIOWAIT_TRANSFERDONE | @@ -1943,7 +1952,7 @@ static void stm32_reset(FAR struct sdio_dev_s *dev) leave_critical_section(flags); - mcinfo("CLCKR: %08x POWER: %08x\n", + mcinfo("CLCKR: %08" PRIx32 " POWER: %08" PRIx32 "\n", sdmmc_getreg32(priv, STM32_SDMMC_CLKCR_OFFSET), sdmmc_getreg32(priv, STM32_SDMMC_POWER_OFFSET)); } @@ -2212,7 +2221,8 @@ static int stm32_sendcmd(FAR struct sdio_dev_s *dev, uint32_t cmd, sdmmc_putreg32(priv, STM32_SDMMC_CMDDONE_ICR | STM32_SDMMC_RESPDONE_ICR, STM32_SDMMC_ICR_OFFSET); - mcinfo("cmd: %08x arg: %08x regval: %08x enabled irq: %08x\n", + mcinfo("cmd: %08" PRIx32 " arg: %08" PRIx32 " regval: %08" PRIx32 + " enabled irq: %08" PRIx32 "\n", cmd, arg, regval, sdmmc_getreg32(priv, STM32_SDMMC_MASK_OFFSET)); /* Write the SDIO CMD */ @@ -2486,7 +2496,8 @@ static int stm32_waitresponse(FAR struct sdio_dev_s *dev, uint32_t cmd) { if (--timeout <= 0) { - mcerr("ERROR: Timeout cmd: %08x events: %08x STA: %08x\n", + mcerr("ERROR: Timeout cmd: %08" PRIx32 " events: %08" PRIx32 + " STA: %08" PRIx32 "\n", cmd, events, sdmmc_getreg32(priv, STM32_SDMMC_STA_OFFSET)); return -ETIMEDOUT; @@ -2565,7 +2576,7 @@ static int stm32_recvshortcrc(FAR struct sdio_dev_s *dev, uint32_t cmd, (cmd & MMCSD_RESPONSE_MASK) != MMCSD_R5_RESPONSE && (cmd & MMCSD_RESPONSE_MASK) != MMCSD_R6_RESPONSE) { - mcerr("ERROR: Wrong response CMD=%08x\n", cmd); + mcerr("ERROR: Wrong response CMD=%08" PRIx32 "\n", cmd); ret = -EINVAL; } else @@ -2576,12 +2587,12 @@ static int stm32_recvshortcrc(FAR struct sdio_dev_s *dev, uint32_t cmd, regval = sdmmc_getreg32(priv, STM32_SDMMC_STA_OFFSET); if ((regval & STM32_SDMMC_STA_CTIMEOUT) != 0) { - mcerr("ERROR: Command timeout: %08x\n", regval); + mcerr("ERROR: Command timeout: %08" PRIx32 "\n", regval); ret = -ETIMEDOUT; } else if ((regval & STM32_SDMMC_STA_CCRCFAIL) != 0) { - mcerr("ERROR: CRC failure: %08x\n", regval); + mcerr("ERROR: CRC failure: %08" PRIx32 "\n", regval); ret = -EIO; } #if defined(CONFIG_DEBUG_FEATURES) @@ -2593,7 +2604,8 @@ static int stm32_recvshortcrc(FAR struct sdio_dev_s *dev, uint32_t cmd, if ((uint8_t)(respcmd & STM32_SDMMC_RESPCMD_MASK) != (cmd & MMCSD_CMDIDX_MASK)) { - mcerr("ERROR: RESCMD=%02x CMD=%08x\n", respcmd, cmd); + mcerr("ERROR: RESCMD=%02" PRIx32 " CMD=%08" PRIx32 + "\n", respcmd, cmd); ret = -EINVAL; } } @@ -2631,7 +2643,7 @@ static int stm32_recvlong(FAR struct sdio_dev_s *dev, uint32_t cmd, if ((cmd & MMCSD_RESPONSE_MASK) != MMCSD_R2_RESPONSE) { - mcerr("ERROR: Wrong response CMD=%08x\n", cmd); + mcerr("ERROR: Wrong response CMD=%08" PRIx32 "\n", cmd); ret = -EINVAL; } else @@ -2642,12 +2654,12 @@ static int stm32_recvlong(FAR struct sdio_dev_s *dev, uint32_t cmd, regval = sdmmc_getreg32(priv, STM32_SDMMC_STA_OFFSET); if (regval & STM32_SDMMC_STA_CTIMEOUT) { - mcerr("ERROR: Timeout STA: %08x\n", regval); + mcerr("ERROR: Timeout STA: %08" PRIx32 "\n", regval); ret = -ETIMEDOUT; } else if (regval & STM32_SDMMC_STA_CCRCFAIL) { - mcerr("ERROR: CRC fail STA: %08x\n", regval); + mcerr("ERROR: CRC fail STA: %08" PRIx32 "\n", regval); ret = -EIO; } } @@ -2690,7 +2702,7 @@ static int stm32_recvshort(FAR struct sdio_dev_s *dev, uint32_t cmd, (cmd & MMCSD_RESPONSE_MASK) != MMCSD_R4_RESPONSE && (cmd & MMCSD_RESPONSE_MASK) != MMCSD_R7_RESPONSE) { - mcerr("ERROR: Wrong response CMD=%08x\n", cmd); + mcerr("ERROR: Wrong response CMD=%08" PRIx32 "\n", cmd); ret = -EINVAL; } else @@ -2703,7 +2715,7 @@ static int stm32_recvshort(FAR struct sdio_dev_s *dev, uint32_t cmd, regval = sdmmc_getreg32(priv, STM32_SDMMC_STA_OFFSET); if (regval & STM32_SDMMC_STA_CTIMEOUT) { - mcerr("ERROR: Timeout STA: %08x\n", regval); + mcerr("ERROR: Timeout STA: %08" PRIx32 "\n", regval); ret = -ETIMEDOUT; } } @@ -2969,7 +2981,7 @@ static void stm32_callbackenable(FAR struct sdio_dev_s *dev, { struct stm32_dev_s *priv = (struct stm32_dev_s *)dev; - mcinfo("eventset: %02x\n", eventset); + mcinfo("eventset: %02" PRIx8 "\n", eventset); DEBUGASSERT(priv != NULL); priv->cbevents = eventset; @@ -3050,8 +3062,8 @@ static int stm32_dmapreflight(FAR struct sdio_dev_s *dev, (uintptr_t)buffer + buflen <= SRAM4_END)) { mcerr("invalid IDMA address " - "buffer:0x%08x end:0x%08x\n", - buffer, buffer + buflen - 1); + "buffer:0x%08" PRIxPTR " end:0x%08" PRIxPTR "\n", + (uintptr_t)buffer, (uintptr_t)(buffer + buflen - 1)); return -EFAULT; } } @@ -3070,7 +3082,7 @@ static int stm32_dmapreflight(FAR struct sdio_dev_s *dev, ((uintptr_t)(buffer + buflen) & (ARMV7M_DCACHE_LINESIZE - 1)) != 0)) { mcerr("dcache unaligned " - "buffer:0x%08x end:0x%08x\n", + "buffer:%p end:%p\n", buffer, buffer + buflen - 1); return -EFAULT; } @@ -3282,7 +3294,7 @@ static void stm32_callback(void *arg) /* Is a callback registered? */ DEBUGASSERT(priv != NULL); - mcinfo("Callback %p(%p) cbevents: %02x cdstatus: %02x\n", + mcinfo("Callback %p(%p) cbevents: %02" PRIx8 " cdstatus: %02" PRIx8 "\n", priv->callback, priv->cbarg, priv->cbevents, priv->cdstatus); if (priv->callback) @@ -3518,7 +3530,8 @@ void sdio_mediachange(FAR struct sdio_dev_s *dev, bool cardinslot) leave_critical_section(flags); - mcinfo("cdstatus OLD: %02x NEW: %02x\n", cdstatus, priv->cdstatus); + mcinfo("cdstatus OLD: %02" PRIx8 " NEW: %02" PRIx8 "\n", + cdstatus, priv->cdstatus); /* Perform any requested callback if the status has changed */ @@ -3561,7 +3574,7 @@ void sdio_wrprotect(FAR struct sdio_dev_s *dev, bool wrprotect) priv->cdstatus &= ~SDIO_STATUS_WRPROTECTED; } - mcinfo("cdstatus: %02x\n", priv->cdstatus); + mcinfo("cdstatus: %02" PRIx8 "\n", priv->cdstatus); leave_critical_section(flags); } #endif /* CONFIG_STM32H7_SDMMC1 || CONFIG_STM32H7_SDMMC2 */ diff --git a/arch/arm/src/stm32h7/stm32_spi.c b/arch/arm/src/stm32h7/stm32_spi.c index 4b4d2ce5de0..0d4912871f8 100644 --- a/arch/arm/src/stm32h7/stm32_spi.c +++ b/arch/arm/src/stm32h7/stm32_spi.c @@ -48,6 +48,7 @@ #include #include +#include #include #include #include @@ -1026,11 +1027,13 @@ static inline void spi_writebyte(FAR struct stm32_spidev_s *priv, #ifdef CONFIG_DEBUG_SPI_INFO static void spi_dumpregs(FAR struct stm32_spidev_s *priv) { - spiinfo("CR1: 0x%08x CFG1: 0x%08x CFG2: 0x%08x\n", + spiinfo("CR1: 0x%08" PRIx32 " CFG1: 0x%08" PRIx32 + " CFG2: 0x%08" PRIx32 "\n", spi_getreg(priv, STM32_SPI_CR1_OFFSET), spi_getreg(priv, STM32_SPI_CFG1_OFFSET), spi_getreg(priv, STM32_SPI_CFG2_OFFSET)); - spiinfo("IER: 0x%08x SR: 0x%08x I2SCFGR: 0x%08x\n", + spiinfo("IER: 0x%08" PRIx32 " SR: 0x%08" PRIx32 + " I2SCFGR: 0x%08" PRIx32 "\n", spi_getreg(priv, STM32_SPI_IER_OFFSET), spi_getreg(priv, STM32_SPI_SR_OFFSET), spi_getreg(priv, STM32_SPI_I2SCFGR_OFFSET)); @@ -1527,7 +1530,7 @@ static uint32_t spi_setfrequency(FAR struct spi_dev_s *dev, * will be faster. */ - spiinfo("Frequency %d->%d\n", frequency, actual); + spiinfo("Frequency %" PRId32 "->%" PRId32 "\n", frequency, actual); priv->frequency = frequency; priv->actual = actual; @@ -1557,7 +1560,7 @@ static void spi_setmode(FAR struct spi_dev_s *dev, enum spi_mode_e mode) uint32_t setbits = 0; uint32_t clrbits = 0; - spiinfo("mode=%d\n", mode); + spiinfo("mode=%" PRIx32 "\n", (uint32_t) mode); /* Has the mode changed? */ @@ -1697,7 +1700,7 @@ static int spi_hwfeatures(FAR struct spi_dev_s *dev, uint32_t setbits = 0; uint32_t clrbits = 0; - spiinfo("features=%08x\n", features); + spiinfo("features=%08" PRIx8 "\n", features); /* Transfer data LSB first? */ @@ -1802,11 +1805,13 @@ static uint32_t spi_send(FAR struct spi_dev_s *dev, uint32_t wd) if (priv->nbits > 8) { - spiinfo("Sent: %04x Return: %04x Status: %02x\n", wd, ret, regval); + spiinfo("Sent: %04" PRIx32 " Return: %04" PRIx32 " Status: %02" PRIx32 + "\n", wd, ret, regval); } else { - spiinfo("Sent: %02x Return: %02x Status: %02x\n", wd, ret, regval); + spiinfo("Sent: %02" PRIx32 " Return: %02" PRIx32 " Status: %02" PRIx32 + "\n", wd, ret, regval); } UNUSED(regval); From e5ceb062f9f8446127bea5ac5280aaca948ffd82 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Fri, 23 Apr 2021 12:30:57 -0700 Subject: [PATCH 059/739] stm32f7:Use inttypes in printing macro stm32f7:SDMMC Use inttypes in printing macro stm32f7:CAN Use inttypes in printing macro stm32f7:DMA Use inttypes in printing macro stm32f7:serial fix compile error from UNUSED() change --- arch/arm/src/stm32f7/stm32_can.c | 82 ++++++++++++++++------------- arch/arm/src/stm32f7/stm32_dma.c | 4 +- arch/arm/src/stm32f7/stm32_sdmmc.c | 7 +-- arch/arm/src/stm32f7/stm32_serial.c | 4 +- 4 files changed, 53 insertions(+), 44 deletions(-) diff --git a/arch/arm/src/stm32f7/stm32_can.c b/arch/arm/src/stm32f7/stm32_can.c index 31f2f80d0d4..38f3910c0cf 100644 --- a/arch/arm/src/stm32f7/stm32_can.c +++ b/arch/arm/src/stm32f7/stm32_can.c @@ -43,6 +43,7 @@ #include +#include #include #include #include @@ -322,7 +323,7 @@ static uint32_t stm32can_vgetreg(uint32_t addr) { /* Yes.. then show how many times the value repeated */ - caninfo("[repeats %d more times]\n", count - 3); + caninfo("[repeats %" PRIu32 " more times]\n", count - 3); } /* Save the new address, value, and count */ @@ -334,7 +335,7 @@ static uint32_t stm32can_vgetreg(uint32_t addr) /* Show the register value read */ - caninfo("%08x->%08x\n", addr, val); + caninfo("%08" PRIx32 "->%08" PRIx32 "\n", addr, val); return val; } @@ -383,7 +384,7 @@ static void stm32can_vputreg(uint32_t addr, uint32_t value) { /* Show the register value being written */ - caninfo("%08x<-%08x\n", addr, value); + caninfo("%08" PRIx32 "->%08" PRIx32 "\n", addr, val); /* Write the value */ @@ -445,16 +446,16 @@ static void stm32can_dumpctrlregs(FAR struct stm32_can_s *priv, /* CAN control and status registers */ - caninfo(" MCR: %08x MSR: %08x TSR: %08x\n", + caninfo(" MCR: %08" PRIx32 " MSR: %08" PRIx32 " TSR: %08" PRIx32 "\n", getreg32(priv->base + STM32_CAN_MCR_OFFSET), getreg32(priv->base + STM32_CAN_MSR_OFFSET), getreg32(priv->base + STM32_CAN_TSR_OFFSET)); - caninfo(" RF0R: %08x RF1R: %08x\n", + caninfo(" RF0R: %08" PRIx32 " RF1R: %08" PRIx32 "\n", getreg32(priv->base + STM32_CAN_RF0R_OFFSET), getreg32(priv->base + STM32_CAN_RF1R_OFFSET)); - caninfo(" IER: %08x ESR: %08x BTR: %08x\n", + caninfo(" IER: %08" PRIx32 " ESR: %08" PRIx32 " BTR: %08" PRIx32 "\n", getreg32(priv->base + STM32_CAN_IER_OFFSET), getreg32(priv->base + STM32_CAN_ESR_OFFSET), getreg32(priv->base + STM32_CAN_BTR_OFFSET)); @@ -490,31 +491,36 @@ static void stm32can_dumpmbregs(FAR struct stm32_can_s *priv, /* CAN mailbox registers (3 TX and 2 RX) */ - caninfo(" TI0R: %08x TDT0R: %08x TDL0R: %08x TDH0R: %08x\n", + caninfo(" TI0R: %08" PRIx32 " TDT0R: %08" PRIx32 " TDL0R: %08" + PRIx32 " TDH0R: %08" PRIx32 "\n", getreg32(priv->base + STM32_CAN_TI0R_OFFSET), getreg32(priv->base + STM32_CAN_TDT0R_OFFSET), getreg32(priv->base + STM32_CAN_TDL0R_OFFSET), getreg32(priv->base + STM32_CAN_TDH0R_OFFSET)); - caninfo(" TI1R: %08x TDT1R: %08x TDL1R: %08x TDH1R: %08x\n", + caninfo(" TI1R: %08" PRIx32 " TDT1R: %08" PRIx32 " TDL1R: %08" + PRIx32 " TDH1R: %08" PRIx32 "\n", getreg32(priv->base + STM32_CAN_TI1R_OFFSET), getreg32(priv->base + STM32_CAN_TDT1R_OFFSET), getreg32(priv->base + STM32_CAN_TDL1R_OFFSET), getreg32(priv->base + STM32_CAN_TDH1R_OFFSET)); - caninfo(" TI2R: %08x TDT2R: %08x TDL2R: %08x TDH2R: %08x\n", + caninfo(" TI2R: %08" PRIx32 " TDT2R: %08" PRIx32 " TDL2R: %08" + PRIx32 " TDH2R: %08" PRIx32 "\n", getreg32(priv->base + STM32_CAN_TI2R_OFFSET), getreg32(priv->base + STM32_CAN_TDT2R_OFFSET), getreg32(priv->base + STM32_CAN_TDL2R_OFFSET), getreg32(priv->base + STM32_CAN_TDH2R_OFFSET)); - caninfo(" RI0R: %08x RDT0R: %08x RDL0R: %08x RDH0R: %08x\n", + caninfo(" RI0R: %08" PRIx32 " RDT0R: %08" PRIx32 " RDL0R: %08" + PRIx32 " RDH0R: %08" PRIx32 "\n", getreg32(priv->base + STM32_CAN_RI0R_OFFSET), getreg32(priv->base + STM32_CAN_RDT0R_OFFSET), getreg32(priv->base + STM32_CAN_RDL0R_OFFSET), getreg32(priv->base + STM32_CAN_RDH0R_OFFSET)); - caninfo(" RI1R: %08x RDT1R: %08x RDL1R: %08x RDH1R: %08x\n", + caninfo(" RI1R: %08" PRIx32 " RDT1R: %08" PRIx32 " RDL1R: %08" + PRIx32 " RDH1R: %08" PRIx32 "\n", getreg32(priv->base + STM32_CAN_RI1R_OFFSET), getreg32(priv->base + STM32_CAN_RDT1R_OFFSET), getreg32(priv->base + STM32_CAN_RDL1R_OFFSET), @@ -551,7 +557,8 @@ static void stm32can_dumpfiltregs(FAR struct stm32_can_s *priv, caninfo("Filter Registers:\n"); } - caninfo(" FMR: %08x FM1R: %08x FS1R: %08x FFA1R: %08x FA1R: %08x\n", + caninfo(" FMR: %08" PRIx32 " FM1R: %08" PRIx32 " FS1R: %08" + PRIx32 " FFA1R: %08" PRIx32 " FA1R: %08" PRIx32 "\n", getreg32(priv->base + STM32_CAN_FMR_OFFSET), getreg32(priv->base + STM32_CAN_FM1R_OFFSET), getreg32(priv->base + STM32_CAN_FS1R_OFFSET), @@ -560,7 +567,7 @@ static void stm32can_dumpfiltregs(FAR struct stm32_can_s *priv, for (i = 0; i < CAN_NFILTERS; i++) { - caninfo(" F%dR1: %08x F%dR2: %08x\n", + caninfo(" F%dR1: %08" PRIx32 " F%dR2: %08" PRIx32 "\n", i, getreg32(priv->base + STM32_CAN_FIR_OFFSET(i, 1)), i, getreg32(priv->base + STM32_CAN_FIR_OFFSET(i, 2))); } @@ -589,7 +596,7 @@ static void stm32can_reset(FAR struct can_dev_s *dev) uint32_t regbit = 0; irqstate_t flags; - caninfo("CAN%d\n", priv->port); + caninfo("CAN%" PRIu8 "\n", priv->port); /* Get the bits in the AHB1RSTR register needed to reset this CAN device */ @@ -615,7 +622,7 @@ static void stm32can_reset(FAR struct can_dev_s *dev) else #endif { - canerr("ERROR: Unsupported port %d\n", priv->port); + canerr("ERROR: Unsupported port %" PRIu8 "\n", priv->port); return; } @@ -658,7 +665,8 @@ static int stm32can_setup(FAR struct can_dev_s *dev) FAR struct stm32_can_s *priv = dev->cd_priv; int ret; - caninfo("CAN%d RX0 irq: %d RX1 irq: %d TX irq: %d\n", + caninfo("CAN%" PRIu8 " RX0 irq: %" PRIu8 " RX1 irq: %" PRIu8 + " TX irq: %" PRIu8 "\n", priv->port, priv->canrx[0], priv->canrx[1], priv->cantx); /* CAN cell initialization */ @@ -666,7 +674,7 @@ static int stm32can_setup(FAR struct can_dev_s *dev) ret = stm32can_cellinit(priv); if (ret < 0) { - canerr("ERROR: CAN%d cell initialization failed: %d\n", + canerr("ERROR: CAN%" PRId8 " cell initialization failed: %d\n", priv->port, ret); return ret; } @@ -679,7 +687,7 @@ static int stm32can_setup(FAR struct can_dev_s *dev) ret = stm32can_filterinit(priv); if (ret < 0) { - canerr("ERROR: CAN%d filter initialization failed: %d\n", + canerr("ERROR: CAN%" PRIu8 " filter initialization failed: %d\n", priv->port, ret); return ret; } @@ -693,7 +701,7 @@ static int stm32can_setup(FAR struct can_dev_s *dev) ret = irq_attach(priv->canrx[0], stm32can_rx0interrupt, dev); if (ret < 0) { - canerr("ERROR: Failed to attach CAN%d RX0 IRQ (%d)", + canerr("ERROR: Failed to attach CAN%" PRIu8 " RX0 IRQ (%" PRIu8 ")", priv->port, priv->canrx[0]); return ret; } @@ -701,7 +709,7 @@ static int stm32can_setup(FAR struct can_dev_s *dev) ret = irq_attach(priv->canrx[1], stm32can_rx1interrupt, dev); if (ret < 0) { - canerr("ERROR: Failed to attach CAN%d RX1 IRQ (%d)", + canerr("ERROR: Failed to attach CAN%" PRIu8 " RX1 IRQ (%" PRIu8 ")", priv->port, priv->canrx[1]); return ret; } @@ -709,7 +717,7 @@ static int stm32can_setup(FAR struct can_dev_s *dev) ret = irq_attach(priv->cantx, stm32can_txinterrupt, dev); if (ret < 0) { - canerr("ERROR: Failed to attach CAN%d TX IRQ (%d)", + canerr("ERROR: Failed to attach CAN%" PRIu8 " TX IRQ (%" PRIu8 ")", priv->port, priv->cantx); return ret; } @@ -744,7 +752,7 @@ static void stm32can_shutdown(FAR struct can_dev_s *dev) { FAR struct stm32_can_s *priv = dev->cd_priv; - caninfo("CAN%d\n", priv->port); + caninfo("CAN%" PRIu8 "\n", priv->port); /* Disable the RX FIFO 0/1 and TX interrupts */ @@ -782,7 +790,7 @@ static void stm32can_rxint(FAR struct can_dev_s *dev, bool enable) FAR struct stm32_can_s *priv = dev->cd_priv; uint32_t regval; - caninfo("CAN%d enable: %d\n", priv->port, enable); + caninfo("CAN%" PRIu8 " enable: %d\n", priv->port, enable); /* Enable/disable the FIFO 0/1 message pending interrupt */ @@ -818,7 +826,7 @@ static void stm32can_txint(FAR struct can_dev_s *dev, bool enable) FAR struct stm32_can_s *priv = dev->cd_priv; uint32_t regval; - caninfo("CAN%d enable: %d\n", priv->port, enable); + caninfo("CAN%" PRIu8 " enable: %d\n", priv->port, enable); /* Support only disabling the transmit mailbox interrupt */ @@ -850,7 +858,7 @@ static int stm32can_ioctl(FAR struct can_dev_s *dev, int cmd, FAR struct stm32_can_s *priv; int ret = -ENOTTY; - caninfo("cmd=%04x arg=%" PRIu32 "\n", cmd, arg); + caninfo("cmd=%04x arg=%lu\n", cmd, arg); DEBUGASSERT(dev && dev->cd_priv); priv = dev->cd_priv; @@ -956,7 +964,7 @@ static int stm32can_ioctl(FAR struct can_dev_s *dev, int cmd, DEBUGASSERT(brp >= 1 && brp <= CAN_BTR_BRP_MAX); } - caninfo("TS1: %"PRId8 " TS2: %" PRId8 " BRP: %" PRIu32 "\n", + caninfo("TS1: %"PRIu8 " TS2: %" PRIu8 " BRP: %" PRIu32 "\n", bt->bt_tseg1, bt->bt_tseg2, brp); /* Configure bit timing. */ @@ -1252,8 +1260,8 @@ static int stm32can_send(FAR struct can_dev_s *dev, int dlc; int txmb; - caninfo("CAN%d ID: %d DLC: %d\n", - priv->port, msg->cm_hdr.ch_id, msg->cm_hdr.ch_dlc); + caninfo("CAN%" PRIu8 " ID: %" PRIu32 " DLC: %" PRIu8 "\n", + priv->port, (uint32_t)msg->cm_hdr.ch_id, msg->cm_hdr.ch_dlc); /* Select one empty transmit mailbox */ @@ -1414,7 +1422,7 @@ static bool stm32can_txready(FAR struct can_dev_s *dev) /* Return true if any mailbox is available */ regval = stm32can_getreg(priv, STM32_CAN_TSR_OFFSET); - caninfo("CAN%d TSR: %08" PRIx32 "\n", priv->port, regval); + caninfo("CAN%" PRIu8 " TSR: %08" PRIx32 "\n", priv->port, regval); return stm32can_txmb0empty(regval) || stm32can_txmb1empty(regval) || stm32can_txmb2empty(regval); @@ -1446,7 +1454,7 @@ static bool stm32can_txempty(FAR struct can_dev_s *dev) /* Return true if all mailboxes are available */ regval = stm32can_getreg(priv, STM32_CAN_TSR_OFFSET); - caninfo("CAN%d TSR: %08" PRIx32 "\n", priv->port, regval); + caninfo("CAN%" PRIu8 " TSR: %08" PRIx32 "\n", priv->port, regval); return stm32can_txmb0empty(regval) && stm32can_txmb1empty(regval) && stm32can_txmb2empty(regval); @@ -1752,8 +1760,8 @@ static int stm32can_bittiming(FAR struct stm32_can_s *priv) uint32_t ts1; uint32_t ts2; - caninfo("CAN%d PCLK1: %" PRId32 " baud: %" PRId32 "\n", - priv->port, STM32_PCLK1_FREQUENCY, priv->baud); + caninfo("CAN%" PRIu8 " PCLK1: %lu baud: %" PRIu32 "\n", + priv->port, (unsigned long) STM32_PCLK1_FREQUENCY, priv->baud); /* Try to get CAN_BIT_QUANTA quanta in one bit_time. * @@ -1805,7 +1813,7 @@ static int stm32can_bittiming(FAR struct stm32_can_s *priv) DEBUGASSERT(brp >= 1 && brp <= CAN_BTR_BRP_MAX); } - caninfo("TS1: %" PRId32 " TS2: %" PRId32 " BRP: %" PRId32 "\n", + caninfo("TS1: %" PRIu32 " TS2: %" PRIu32 " BRP: %" PRIu32 "\n", ts1, ts2, brp); /* Configure bit timing. This also does the following, less obvious @@ -1851,7 +1859,7 @@ static int stm32can_enterinitmode(FAR struct stm32_can_s *priv) uint32_t regval; volatile uint32_t timeout; - caninfo("CAN%d\n", priv->port); + caninfo("CAN%" PRIu8 "\n", priv->port); /* Enter initialization mode */ @@ -1952,7 +1960,7 @@ static int stm32can_cellinit(FAR struct stm32_can_s *priv) uint32_t regval; int ret; - caninfo("CAN%d\n", priv->port); + caninfo("CAN%" PRIu8 "\n", priv->port); /* Exit from sleep mode */ @@ -2035,7 +2043,7 @@ static int stm32can_filterinit(FAR struct stm32_can_s *priv) uint32_t regval; uint32_t bitmask; - caninfo("CAN%d filter: %d\n", priv->port, priv->filter); + caninfo("CAN%" PRIu8 " filter: %" PRIu8 "\n", priv->port, priv->filter); /* Get the bitmask associated with the filter used by this CAN block */ @@ -2268,7 +2276,7 @@ FAR struct can_dev_s *stm32_caninitialize(int port) { FAR struct can_dev_s *dev = NULL; - caninfo("CAN%d\n", port); + caninfo("CAN%" PRIu8 "\n", port); /* NOTE: Peripherical clocking for CAN1 and/or CAN2 was already provided * by stm32_clockconfig() early in the reset sequence. diff --git a/arch/arm/src/stm32f7/stm32_dma.c b/arch/arm/src/stm32f7/stm32_dma.c index 96a4a9ed55c..b1e30ac0e11 100644 --- a/arch/arm/src/stm32f7/stm32_dma.c +++ b/arch/arm/src/stm32f7/stm32_dma.c @@ -921,8 +921,8 @@ bool stm32_dmacapable(uintptr_t maddr, uint32_t count, uint32_t ccr) ((mend + 1) & (ARMV7M_DCACHE_LINESIZE - 1)) != 0) { dmawarn("stm32_dmacapable:" - " dcache unaligned maddr:0x%08x mend:0x%08x\n", - maddr, mend); + " dcache unaligned maddr:0x%08" PRIxPTR " mend:0x%08" + PRIx32 "\n", maddr, mend); #if !defined(CONFIG_STM32F7_DMACAPABLE_ASSUME_CACHE_ALIGNED) return false; #endif diff --git a/arch/arm/src/stm32f7/stm32_sdmmc.c b/arch/arm/src/stm32f7/stm32_sdmmc.c index e4d28aef7ba..047210e4943 100644 --- a/arch/arm/src/stm32f7/stm32_sdmmc.c +++ b/arch/arm/src/stm32f7/stm32_sdmmc.c @@ -2510,7 +2510,7 @@ static int stm32_recvshortcrc(FAR struct sdio_dev_s *dev, uint32_t cmd, (cmd & MMCSD_RESPONSE_MASK) != MMCSD_R5_RESPONSE && (cmd & MMCSD_RESPONSE_MASK) != MMCSD_R6_RESPONSE) { - mcerr("ERROR: Wrong response CMD=%08x\n", cmd); + mcerr("ERROR: Wrong response CMD=%08" PRIx32 "\n", cmd); ret = -EINVAL; } else @@ -2538,7 +2538,8 @@ static int stm32_recvshortcrc(FAR struct sdio_dev_s *dev, uint32_t cmd, if ((uint8_t)(respcmd & STM32_SDMMC_RESPCMD_MASK) != (cmd & MMCSD_CMDIDX_MASK)) { - mcerr("ERROR: RESCMD=%02x CMD=%08x\n", respcmd, cmd); + mcerr("ERROR: RESCMD=%02" PRIx32 " CMD=%08" PRIx32 "\n", + respcmd, cmd); ret = -EINVAL; } } @@ -2576,7 +2577,7 @@ static int stm32_recvlong(FAR struct sdio_dev_s *dev, uint32_t cmd, if ((cmd & MMCSD_RESPONSE_MASK) != MMCSD_R2_RESPONSE) { - mcerr("ERROR: Wrong response CMD=%08x\n", cmd); + mcerr("ERROR: Wrong response CMD=%08" PRIx32 "\n", cmd); ret = -EINVAL; } else diff --git a/arch/arm/src/stm32f7/stm32_serial.c b/arch/arm/src/stm32f7/stm32_serial.c index 6091a1807d4..fc60af8b075 100644 --- a/arch/arm/src/stm32f7/stm32_serial.c +++ b/arch/arm/src/stm32f7/stm32_serial.c @@ -3641,10 +3641,10 @@ void arm_serialinit(void) #if !defined(SERIAL_HAVE_ONLY_DMA) # if defined(SERIAL_HAVE_RXDMA) - UNUSED(g_uart_rxdma_ops); + UNUSED(&g_uart_rxdma_ops); # endif # if defined(SERIAL_HAVE_TXDMA) - UNUSED(g_uart_txdma_ops); + UNUSED(&g_uart_txdma_ops); # endif #endif From 7fb59e4f36a640fd5af8a1a5f6c84278dc9800c5 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Tue, 27 Apr 2021 04:20:59 -0700 Subject: [PATCH 060/739] kinetis:flexcan Use inttypes in printing macro --- arch/arm/src/kinetis/kinetis_flexcan.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/arch/arm/src/kinetis/kinetis_flexcan.c b/arch/arm/src/kinetis/kinetis_flexcan.c index e22cf08bf12..3bf358027eb 100644 --- a/arch/arm/src/kinetis/kinetis_flexcan.c +++ b/arch/arm/src/kinetis/kinetis_flexcan.c @@ -24,6 +24,7 @@ #include +#include #include #include #include @@ -634,7 +635,7 @@ static int kinetis_transmit(FAR struct kinetis_driver_s *priv) if (mbi == TXMBCOUNT) { - nwarn("No TX MB available mbi %i\n", mbi); + nwarn("No TX MB available mbi %" PRIu32 "\n", mbi); NETDEV_TXERRORS(&priv->dev); return 0; /* No transmission for you! */ } @@ -1654,7 +1655,7 @@ static int kinetis_initialize(struct kinetis_driver_s *priv) for (i = 0; i < RXMBCOUNT; i++) { - ninfo("Set MB%i to receive %p\n", i, &priv->rx[i]); + ninfo("Set MB%" PRIu32 " to receive %p\n", i, &priv->rx[i]); priv->rx[i].cs.edl = 0x1; priv->rx[i].cs.brs = 0x1; priv->rx[i].cs.esi = 0x0; @@ -1718,8 +1719,8 @@ static void kinetis_reset(struct kinetis_driver_s *priv) for (i = 0; i < TOTALMBCOUNT; i++) { - ninfo("MB %i %p\n", i, &priv->rx[i]); - ninfo("MB %i %p\n", i, &priv->rx[i].id.w); + ninfo("MB %" PRIu32 " %p\n", i, &priv->rx[i]); + ninfo("MB %" PRIu32 " %p\n", i, &priv->rx[i].id.w); priv->rx[i].cs.cs = 0x0; priv->rx[i].id.w = 0x0; priv->rx[i].data[0].w00 = 0x0; From 8624f9a44473b4aaa57f0beba124293681a16cda Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Tue, 27 Apr 2021 04:21:21 -0700 Subject: [PATCH 061/739] s32k1xx:flexcan Use inttypes in printing macro --- arch/arm/src/s32k1xx/s32k1xx_flexcan.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/arm/src/s32k1xx/s32k1xx_flexcan.c b/arch/arm/src/s32k1xx/s32k1xx_flexcan.c index 40c2bf2bc7e..9f8f08b36aa 100644 --- a/arch/arm/src/s32k1xx/s32k1xx_flexcan.c +++ b/arch/arm/src/s32k1xx/s32k1xx_flexcan.c @@ -636,7 +636,7 @@ static int s32k1xx_transmit(FAR struct s32k1xx_driver_s *priv) if (mbi == TXMBCOUNT) { - nwarn("No TX MB available mbi %" PRIi32 "\n", mbi); + nwarn("No TX MB available mbi %" PRIu32 "\n", mbi); NETDEV_TXERRORS(&priv->dev); return 0; /* No transmission for you! */ } @@ -1658,7 +1658,7 @@ static int s32k1xx_initialize(struct s32k1xx_driver_s *priv) for (i = 0; i < RXMBCOUNT; i++) { - ninfo("Set MB%" PRIi32 " to receive %p\n", i, &priv->rx[i]); + ninfo("Set MB%" PRIu32 " to receive %p\n", i, &priv->rx[i]); priv->rx[i].cs.edl = 0x1; priv->rx[i].cs.brs = 0x1; priv->rx[i].cs.esi = 0x0; @@ -1722,8 +1722,8 @@ static void s32k1xx_reset(struct s32k1xx_driver_s *priv) for (i = 0; i < TOTALMBCOUNT; i++) { - ninfo("MB %" PRIi32 " %p\n", i, &priv->rx[i]); - ninfo("MB %" PRIi32 " %p\n", i, &priv->rx[i].id.w); + ninfo("MB %" PRIu32 " %p\n", i, &priv->rx[i]); + ninfo("MB %" PRIu32 " %p\n", i, &priv->rx[i].id.w); priv->rx[i].cs.cs = 0x0; priv->rx[i].id.w = 0x0; priv->rx[i].data[0].w00 = 0x0; From cd603af95870d4c0b6df8fbbce3dfb15b0929c15 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Mon, 3 May 2021 10:37:57 -0700 Subject: [PATCH 062/739] stm32f7:Allow for reuse of the OTG_ID GPIO --- arch/arm/src/stm32f7/Kconfig | 13 +++++++++++++ arch/arm/src/stm32f7/stm32_otgdev.c | 6 +++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/arch/arm/src/stm32f7/Kconfig b/arch/arm/src/stm32f7/Kconfig index b8197440f81..9074db72719 100644 --- a/arch/arm/src/stm32f7/Kconfig +++ b/arch/arm/src/stm32f7/Kconfig @@ -1734,6 +1734,19 @@ config STM32F7_SYSCFG_IOCOMPENSATION The I/O compensation cell can be used only when the supply voltage ranges from 2.4 to 3.6 V. +menu "OTG Configuration" + depends on STM32F7_OTGFS + +config OTG_ID_GPIO_DISABLE + bool "Disable the use of GPIO_OTG_ID pin." + default n + ---help--- + Disables/Enabled the use of GPIO_OTG_ID pin. This allows non OTG use + cases to reuse this GPIO pin and ensure it is not set incorrectlty + during OS boot. + +endmenu + menu "U[S]ART Configuration" depends on STM32F7_USART diff --git a/arch/arm/src/stm32f7/stm32_otgdev.c b/arch/arm/src/stm32f7/stm32_otgdev.c index c7191572c19..c4e6593a386 100644 --- a/arch/arm/src/stm32f7/stm32_otgdev.c +++ b/arch/arm/src/stm32f7/stm32_otgdev.c @@ -5726,7 +5726,11 @@ void arm_usbinitialize(void) stm32_configgpio(GPIO_OTG_DM); stm32_configgpio(GPIO_OTG_DP); - stm32_configgpio(GPIO_OTG_ID); /* Only needed for OTG */ + + /* Only needed for OTG */ +# ifndef CONFIG_OTG_ID_GPIO_DISABLE + stm32_configgpio(GPIO_OTG_ID); +# endif /* SOF output pin configuration is configurable. */ From 92dba32c8c08b4512666159029cbcc189b5191d3 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Mon, 3 May 2021 10:38:10 -0700 Subject: [PATCH 063/739] stm32h7:Allow for reuse of the OTG_ID GPIO Currently Nuttx doesn't seem to be any real support for OTG. In the future when OTG is supported. This Knob can be removed and drivers can enable their pin sets based on CONFIG_OTG. (Adding CONFIG_OTG at this time would be misleading.) --- arch/arm/src/stm32h7/Kconfig | 13 +++++++++++++ arch/arm/src/stm32h7/stm32_otgdev.c | 6 +++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/arch/arm/src/stm32h7/Kconfig b/arch/arm/src/stm32h7/Kconfig index 64d518fc035..ee9b51681f5 100644 --- a/arch/arm/src/stm32h7/Kconfig +++ b/arch/arm/src/stm32h7/Kconfig @@ -843,6 +843,19 @@ config STM32H7_I2CTIMEOTICKS endmenu # "I2C Configuration" +menu "OTG Configuration" + depends on STM32H7_OTGFS + +config OTG_ID_GPIO_DISABLE + bool "Disable the use of GPIO_OTG_ID pin." + default n + ---help--- + Disables/Enabled the use of GPIO_OTG_ID pin. This allows non OTG use + cases to reuse this GPIO pin and ensure it is not set incorrectlty + during OS boot. + +endmenu + menu "SPI Configuration" depends on STM32H7_SPI diff --git a/arch/arm/src/stm32h7/stm32_otgdev.c b/arch/arm/src/stm32h7/stm32_otgdev.c index adea1a11d1b..c9ef115cdd6 100644 --- a/arch/arm/src/stm32h7/stm32_otgdev.c +++ b/arch/arm/src/stm32h7/stm32_otgdev.c @@ -5586,7 +5586,11 @@ void arm_usbinitialize(void) stm32_configgpio(GPIO_OTG_DM); stm32_configgpio(GPIO_OTG_DP); - stm32_configgpio(GPIO_OTG_ID); /* Only needed for OTG */ + + /* Only needed for OTG */ +# ifndef CONFIG_OTG_ID_GPIO_DISABLE + stm32_configgpio(GPIO_OTG_ID); +# endif /* SOF output pin configuration is configurable. */ From 534c058d934e8fe043959c6e28be318573dc819e Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Wed, 5 May 2021 15:03:23 -0300 Subject: [PATCH 064/739] spi: Adopt CPHA as the abbreviation for clock phase --- arch/arm/src/imx1/imx_spi.c | 8 ++++---- arch/arm/src/imx6/imx_ecspi.c | 8 ++++---- arch/arm/src/tiva/common/tiva_ssi.c | 8 ++++---- arch/renesas/src/rx65n/rx65n_rspi.c | 8 ++++---- arch/renesas/src/rx65n/rx65n_rspi_sw.c | 8 ++++---- arch/z80/src/ez80/ez80_spi.c | 8 ++++---- boards/arm/stm32f7/nucleo-144/Kconfig | 24 ++++++++++++------------ include/nuttx/spi/qspi.h | 8 ++++---- include/nuttx/spi/slave.h | 8 ++++---- include/nuttx/spi/spi.h | 8 ++++---- 10 files changed, 48 insertions(+), 48 deletions(-) diff --git a/arch/arm/src/imx1/imx_spi.c b/arch/arm/src/imx1/imx_spi.c index 6719c619858..d345b6b5c2f 100644 --- a/arch/arm/src/imx1/imx_spi.c +++ b/arch/arm/src/imx1/imx_spi.c @@ -826,19 +826,19 @@ static void spi_setmode(FAR struct spi_dev_s *dev, enum spi_mode_e mode) switch (mode) { - case SPIDEV_MODE0: /* CPOL=0 CHPHA=0 */ + case SPIDEV_MODE0: /* CPOL=0 CPHA=0 */ modebits = 0; break; - case SPIDEV_MODE1: /* CPOL=0 CHPHA=1 */ + case SPIDEV_MODE1: /* CPOL=0 CPHA=1 */ modebits = CSPI_CTRL_PHA; break; - case SPIDEV_MODE2: /* CPOL=1 CHPHA=0 */ + case SPIDEV_MODE2: /* CPOL=1 CPHA=0 */ modebits = CSPI_CTRL_POL; break; - case SPIDEV_MODE3: /* CPOL=1 CHPHA=1 */ + case SPIDEV_MODE3: /* CPOL=1 CPHA=1 */ modebits = CSPI_CTRL_PHA | CSPI_CTRL_POL; break; diff --git a/arch/arm/src/imx6/imx_ecspi.c b/arch/arm/src/imx6/imx_ecspi.c index 2f77640328b..0e0d166fe56 100644 --- a/arch/arm/src/imx6/imx_ecspi.c +++ b/arch/arm/src/imx6/imx_ecspi.c @@ -929,19 +929,19 @@ static void spi_setmode(FAR struct spi_dev_s *dev, enum spi_mode_e mode) switch (mode) { - case SPIDEV_MODE0: /* CPOL=0 CHPHA=0 */ + case SPIDEV_MODE0: /* CPOL=0 CPHA=0 */ modebits = 0; break; - case SPIDEV_MODE1: /* CPOL=0 CHPHA=1 */ + case SPIDEV_MODE1: /* CPOL=0 CPHA=1 */ modebits = ECSPI_CONREG_PHA; break; - case SPIDEV_MODE2: /* CPOL=1 CHPHA=0 */ + case SPIDEV_MODE2: /* CPOL=1 CPHA=0 */ modebits = ECSPI_CONREG_POL; break; - case SPIDEV_MODE3: /* CPOL=1 CHPHA=1 */ + case SPIDEV_MODE3: /* CPOL=1 CPHA=1 */ modebits = ECSPI_CONREG_PHA | ECSPI_CONREG_POL; break; diff --git a/arch/arm/src/tiva/common/tiva_ssi.c b/arch/arm/src/tiva/common/tiva_ssi.c index a0cd2952505..374801b557b 100644 --- a/arch/arm/src/tiva/common/tiva_ssi.c +++ b/arch/arm/src/tiva/common/tiva_ssi.c @@ -1250,19 +1250,19 @@ static void ssi_setmodeinternal(struct tiva_ssidev_s *priv, switch (mode) { - case SPIDEV_MODE0: /* CPOL=0 CHPHA=0 */ + case SPIDEV_MODE0: /* CPOL=0 CPHA=0 */ modebits = 0; break; - case SPIDEV_MODE1: /* CPOL=0 CHPHA=1 */ + case SPIDEV_MODE1: /* CPOL=0 CPHA=1 */ modebits = SSI_CR0_SPH; break; - case SPIDEV_MODE2: /* CPOL=1 CHPHA=0 */ + case SPIDEV_MODE2: /* CPOL=1 CPHA=0 */ modebits = SSI_CR0_SPO; break; - case SPIDEV_MODE3: /* CPOL=1 CHPHA=1 */ + case SPIDEV_MODE3: /* CPOL=1 CPHA=1 */ modebits = SSI_CR0_SPH | SSI_CR0_SPO; break; diff --git a/arch/renesas/src/rx65n/rx65n_rspi.c b/arch/renesas/src/rx65n/rx65n_rspi.c index e91c77f0363..06076bc2a2a 100644 --- a/arch/renesas/src/rx65n/rx65n_rspi.c +++ b/arch/renesas/src/rx65n/rx65n_rspi.c @@ -1841,19 +1841,19 @@ static void rspi_setmode(FAR struct spi_dev_s *dev, enum spi_mode_e mode) switch (mode) { - case SPIDEV_MODE0: /* CPOL=0 CHPHA=0 */ + case SPIDEV_MODE0: /* CPOL=0 CPHA=0 */ modebits = 0; break; - case SPIDEV_MODE1: /* CPOL=0 CHPHA=1 */ + case SPIDEV_MODE1: /* CPOL=0 CPHA=1 */ modebits = RSPI_SPCMD_PHA; break; - case SPIDEV_MODE2: /* CPOL=1 CHPHA=0 */ + case SPIDEV_MODE2: /* CPOL=1 CPHA=0 */ modebits = RSPI_SPCMD_POL; break; - case SPIDEV_MODE3: /* CPOL=1 CHPHA=1 */ + case SPIDEV_MODE3: /* CPOL=1 CPHA=1 */ modebits = RSPI_SPCMD_PHA | RSPI_SPCMD_POL; break; diff --git a/arch/renesas/src/rx65n/rx65n_rspi_sw.c b/arch/renesas/src/rx65n/rx65n_rspi_sw.c index b530043dd6e..09cbb5d9b55 100644 --- a/arch/renesas/src/rx65n/rx65n_rspi_sw.c +++ b/arch/renesas/src/rx65n/rx65n_rspi_sw.c @@ -1476,19 +1476,19 @@ static void rspi_setmode(FAR struct spi_dev_s *dev, enum spi_mode_e mode) switch (mode) { - case SPIDEV_MODE0: /* CPOL=0 CHPHA=0 */ + case SPIDEV_MODE0: /* CPOL=0 CPHA=0 */ modebits = 0; break; - case SPIDEV_MODE1: /* CPOL=0 CHPHA=1 */ + case SPIDEV_MODE1: /* CPOL=0 CPHA=1 */ modebits = RSPI_SPCMD_PHA; break; - case SPIDEV_MODE2: /* CPOL=1 CHPHA=0 */ + case SPIDEV_MODE2: /* CPOL=1 CPHA=0 */ modebits = RSPI_SPCMD_POL; break; - case SPIDEV_MODE3: /* CPOL=1 CHPHA=1 */ + case SPIDEV_MODE3: /* CPOL=1 CPHA=1 */ modebits = RSPI_SPCMD_PHA | RSPI_SPCMD_POL; break; diff --git a/arch/z80/src/ez80/ez80_spi.c b/arch/z80/src/ez80/ez80_spi.c index aaedd87ce97..90976cffd6f 100644 --- a/arch/z80/src/ez80/ez80_spi.c +++ b/arch/z80/src/ez80/ez80_spi.c @@ -274,19 +274,19 @@ static void spi_setmode(FAR struct spi_dev_s *dev, enum spi_mode_e mode) switch (mode) { - case SPIDEV_MODE0: /* CPOL=0 CHPHA=0 */ + case SPIDEV_MODE0: /* CPOL=0 CPHA=0 */ modebits = 0; break; - case SPIDEV_MODE1: /* CPOL=0 CHPHA=1 */ + case SPIDEV_MODE1: /* CPOL=0 CPHA=1 */ modebits = SPI_CTL_CPHA; break; - case SPIDEV_MODE2: /* CPOL=1 CHPHA=0 */ + case SPIDEV_MODE2: /* CPOL=1 CPHA=0 */ modebits = SPI_CTL_CPOL; break; - case SPIDEV_MODE3: /* CPOL=1 CHPHA=1 */ + case SPIDEV_MODE3: /* CPOL=1 CPHA=1 */ modebits = (SPI_CTL_CPOL | SPI_CTL_CPHA); break; diff --git a/boards/arm/stm32f7/nucleo-144/Kconfig b/boards/arm/stm32f7/nucleo-144/Kconfig index e0d39ab4796..81288711f6e 100644 --- a/boards/arm/stm32f7/nucleo-144/Kconfig +++ b/boards/arm/stm32f7/nucleo-144/Kconfig @@ -154,16 +154,16 @@ choice Sets SPI 1 clock mode config NUCLEO_SPI1_TEST_MODE0 - bool "CPOL=0 CHPHA=0" + bool "CPOL=0 CPHA=0" config NUCLEO_SPI1_TEST_MODE1 - bool "CPOL=0 CHPHA=1" + bool "CPOL=0 CPHA=1" config NUCLEO_SPI1_TEST_MODE2 - bool "CPOL=1 CHPHA=0" + bool "CPOL=1 CPHA=0" config NUCLEO_SPI1_TEST_MODE3 - bool "CPOL=1 CHPHA=1" + bool "CPOL=1 CPHA=1" endchoice # "SPI BUS 1 Clock Mode" @@ -199,16 +199,16 @@ choice Sets SPI 2 clock mode config NUCLEO_SPI2_TEST_MODE0 - bool "CPOL=0 CHPHA=0" + bool "CPOL=0 CPHA=0" config NUCLEO_SPI2_TEST_MODE1 - bool "CPOL=0 CHPHA=1" + bool "CPOL=0 CPHA=1" config NUCLEO_SPI2_TEST_MODE2 - bool "CPOL=1 CHPHA=0" + bool "CPOL=1 CPHA=0" config NUCLEO_SPI2_TEST_MODE3 - bool "CPOL=1 CHPHA=1" + bool "CPOL=1 CPHA=1" endchoice # "SPI BUS 2 Clock Mode" @@ -244,16 +244,16 @@ choice Sets SPI 3 clock mode config NUCLEO_SPI3_TEST_MODE0 - bool "CPOL=0 CHPHA=0" + bool "CPOL=0 CPHA=0" config NUCLEO_SPI3_TEST_MODE1 - bool "CPOL=0 CHPHA=1" + bool "CPOL=0 CPHA=1" config NUCLEO_SPI3_TEST_MODE2 - bool "CPOL=1 CHPHA=0" + bool "CPOL=1 CPHA=0" config NUCLEO_SPI3_TEST_MODE3 - bool "CPOL=1 CHPHA=1" + bool "CPOL=1 CPHA=1" endchoice # "SPI BUS 3 Clock Mode" diff --git a/include/nuttx/spi/qspi.h b/include/nuttx/spi/qspi.h index f3cb27d32bb..51c95476ea2 100644 --- a/include/nuttx/spi/qspi.h +++ b/include/nuttx/spi/qspi.h @@ -228,10 +228,10 @@ enum qspi_mode_e { - QSPIDEV_MODE0 = 0, /* CPOL=0 CHPHA=0 */ - QSPIDEV_MODE1, /* CPOL=0 CHPHA=1 */ - QSPIDEV_MODE2, /* CPOL=1 CHPHA=0 */ - QSPIDEV_MODE3 /* CPOL=1 CHPHA=1 */ + QSPIDEV_MODE0 = 0, /* CPOL=0 CPHA=0 */ + QSPIDEV_MODE1, /* CPOL=0 CPHA=1 */ + QSPIDEV_MODE2, /* CPOL=1 CPHA=0 */ + QSPIDEV_MODE3 /* CPOL=1 CPHA=1 */ }; /* This structure describes one command transfer */ diff --git a/include/nuttx/spi/slave.h b/include/nuttx/spi/slave.h index c6fa92c9aef..3f8b70b23ea 100644 --- a/include/nuttx/spi/slave.h +++ b/include/nuttx/spi/slave.h @@ -467,10 +467,10 @@ enum spi_smode_e { - SPISLAVE_MODE0 = 0, /* CPOL=0 CHPHA=0 */ - SPISLAVE_MODE1, /* CPOL=0 CHPHA=1 */ - SPISLAVE_MODE2, /* CPOL=1 CHPHA=0 */ - SPISLAVE_MODE3 /* CPOL=1 CHPHA=1 */ + SPISLAVE_MODE0 = 0, /* CPOL=0 CPHA=0 */ + SPISLAVE_MODE1, /* CPOL=0 CPHA=1 */ + SPISLAVE_MODE2, /* CPOL=1 CPHA=0 */ + SPISLAVE_MODE3 /* CPOL=1 CPHA=1 */ }; /* The SPI slave controller driver vtable */ diff --git a/include/nuttx/spi/spi.h b/include/nuttx/spi/spi.h index 18d4506e5b9..77650509dcc 100644 --- a/include/nuttx/spi/spi.h +++ b/include/nuttx/spi/spi.h @@ -521,10 +521,10 @@ enum spi_devtype_e enum spi_mode_e { - SPIDEV_MODE0 = 0, /* CPOL=0 CHPHA=0 */ - SPIDEV_MODE1, /* CPOL=0 CHPHA=1 */ - SPIDEV_MODE2, /* CPOL=1 CHPHA=0 */ - SPIDEV_MODE3, /* CPOL=1 CHPHA=1 */ + SPIDEV_MODE0 = 0, /* CPOL=0 CPHA=0 */ + SPIDEV_MODE1, /* CPOL=0 CPHA=1 */ + SPIDEV_MODE2, /* CPOL=1 CPHA=0 */ + SPIDEV_MODE3, /* CPOL=1 CPHA=1 */ SPIDEV_MODETI, /* CPOL=0 CPHA=1 TI Synchronous Serial Frame Format */ }; From 87eb84ad73dc05a86d254b1bdbc185f3103e94f0 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Wed, 5 May 2021 15:28:17 -0300 Subject: [PATCH 065/739] nuttx/spi: Apply some fixes to SPI Slave documentation --- include/nuttx/spi/slave.h | 152 +++++++++++++++++++------------------- 1 file changed, 76 insertions(+), 76 deletions(-) diff --git a/include/nuttx/spi/slave.h b/include/nuttx/spi/slave.h index 3f8b70b23ea..ee3121ebfc2 100644 --- a/include/nuttx/spi/slave.h +++ b/include/nuttx/spi/slave.h @@ -49,7 +49,7 @@ * * Description: * Bind the SPI slave device interface to the SPI slave controller - * interface and configure the SPI interface. Upon return, the SPI + * interface and configure the SPI interface. Upon return, the SPI * slave controller driver is fully operational and ready to perform * transfers. * @@ -62,7 +62,7 @@ * If value is below < 0, then it implies LSB first with -nbits * * Returned Value: - * none + * None. * ****************************************************************************/ @@ -73,14 +73,14 @@ * * Description: * Un-bind the SPI slave device interface from the SPI slave controller - * interface. Reset the SPI interface and restore the SPI slave - * controller driver to its initial state, + * interface. Reset the SPI interface and restore the SPI slave + * controller driver to its initial state. * * Input Parameters: * sctrlr - SPI slave controller interface instance * * Returned Value: - * none + * None. * ****************************************************************************/ @@ -90,9 +90,9 @@ * Name: SPI_SCTRLR_ENQUEUE * * Description: - * Enqueue the next value to be shifted out from the interface. This adds + * Enqueue the next value to be shifted out from the interface. This adds * the word the controller driver for a subsequent transfer but has no - * effect on any in-process or currently "committed" transfers + * effect on any in-process or currently "committed" transfers. * * Input Parameters: * sctrlr - SPI slave controller interface instance @@ -123,7 +123,7 @@ * sctrlr - SPI slave controller interface instance * * Returned Value: - * true if the output queue is full + * true if the output queue is full. * ****************************************************************************/ @@ -133,15 +133,15 @@ * Name: SPI_SCTRLR_QFLUSH * * Description: - * Discard all saved values in the output queue. On return from this - * function the output queue will be empty. Any in-progress or otherwise + * Discard all saved values in the output queue. On return from this + * function the output queue will be empty. Any in-progress or otherwise * "committed" output values may not be flushed. * * Input Parameters: * sctrlr - SPI slave controller interface instance * * Returned Value: - * None + * None. * ****************************************************************************/ @@ -177,8 +177,8 @@ * sctrlr - SPI slave controller interface instance * * Returned Value: - * Number of units of width "nbits" left in the rx queue. If the device - * accepted all the data, the return value will be 0 + * Number of units of width "nbits" left in the RX queue. If the device + * accepted all the data, the return value will be 0. * ****************************************************************************/ @@ -196,10 +196,10 @@ * selected - True: chip select is low (selected); * * Returned Value: - * none + * None. * * Assumptions: - * May be called from an interrupt handler. Processing should be as + * May be called from an interrupt handler. Processing should be as * brief as possible. * ****************************************************************************/ @@ -213,7 +213,7 @@ * This is a SPI device callback that used when the SPI device controller * driver detects any change command/data condition. * - * Normally only LCD devices distinguish command and data. For devices + * Normally only LCD devices distinguish command and data. For devices * that do not distinguish between command and data, this method may be * a stub.; For devices that do make that distinction, they should treat * all subsequent calls to enqueue() or rece() appropriately for the @@ -224,10 +224,10 @@ * data - True: Data is selected * * Returned Value: - * none + * None. * * Assumptions: - * May be called from an interrupt handler. Processing should be as + * May be called from an interrupt handler. Processing should be as * brief as possible. * ****************************************************************************/ @@ -239,13 +239,13 @@ * * Description: * This is a SPI device callback that used when the SPI device controller - * requires data be shifted out at the next leading clock edge. This + * requires data be shifted out at the next leading clock edge. This * is necessary to "prime the pump" so that the SPI controller driver * can keep pace with the shifted-in data. * * The SPI controller driver will prime for both command and data * transfers as determined by a preceding call to the device cmddata() - * method. Normally only LCD devices distinguish command and data. + * method. Normally only LCD devices distinguish command and data. * * Input Parameters: * sdev - SPI device interface instance @@ -257,7 +257,7 @@ * * Assumptions: * May be called from an interrupt handler and the response is usually - * time critical. + * time-critical. * ****************************************************************************/ @@ -269,7 +269,7 @@ * Description: * This is a SPI device callback that used when the SPI device controller * receives a new value shifted in and requires the next value to be - * shifted out. Notice that these values my be out of synchronization by + * shifted out. Notice that these values my be out of synchronization by * several words. * * Input Parameters: @@ -284,7 +284,7 @@ * * Assumptions: * May be called from an interrupt handler and in time-critical - * circumstances. A good implementation might just add the newly + * circumstances. A good implementation might just add the newly * received word to a queue, post a processing task, and return as * quickly as possible to avoid any data overrun problems. * @@ -298,12 +298,12 @@ /* There are two interfaces defined for the implementation of SPI slave: * - * 1) struct spi_sctrlr_s: Defines one interface between the SPI - * slave device and the SPI slave controller hardware. This interface + * 1) struct spi_sctrlr_s: Defines one interface between the SPI + * slave device and the SPI slave controller hardware. This interface * is implemented by the SPI slave device controller lower-half driver * and is provided to the SPI slave device driver when that driver - * is initialized. That SPI slave device initialization function is - * unique to the SPI slave implementation. The prototype is probably + * is initialized. That SPI slave device initialization function is + * unique to the SPI slave implementation. The prototype is probably * something like: * * FAR struct spi_sctrlr_s *xyz_spi_slave_initialize(int port); @@ -315,9 +315,9 @@ * appear in a header file associated with the specific SPI slave * implementation. * - * 2) struct spi_sdev_s: Defines the second interface between the SPI - * slave device and the SPI slave controller hardware. This interface - * is implemented by the SPI slave device. The slave device passes this + * 2) struct spi_sdev_s: Defines the second interface between the SPI + * slave device and the SPI slave controller hardware. This interface + * is implemented by the SPI slave device. The slave device passes this * interface to the struct spi_sctrlr_s during initialization * be calling the bind() method of the struct spi_sctrlr_s * interface. @@ -328,22 +328,22 @@ * instance of the SPI slave controller interface, struct spi_sctrlr_s. * * 2) Board-specific logic then calls up_dev_initialize() to initialize - * the SPI slave device. The board-specific logic passes the instance + * the SPI slave device. The board-specific logic passes the instance * of struct spi_sctrlr_s to support the initialization. * * 3) The SPI slave device driver creates and initializes an instance of * struct spi_sdev_s; it passes this instance to the bind() method of * of the SPI slave controller interface. * - * 4) The SPI slave controller will (1) call the slaved device's select() + * 4) The SPI slave controller will (1) call the slave device's select() * and cmddata() methods to indicate the initial state of the chip select * and any command/data selection, then (2) call the slave device's - * getdata() method to get the value that will be shifted out the SPI - * clock is detected. The kind of data returned the getdata() method - * may be contingent on the current command/data setting reported the - * device cmddata() method. The driver may enqueue additional words - * to be shifted out at any time by The calling the SPI slave - * controller's enqueue() method. + * getdata() method to get the value that will be shifted out once the SPI + * clock is detected. The kind of data returned by the getdata() method + * may be contingent on the current command/data setting reported by the + * device cmddata() method. The driver may enqueue additional words + * to be shifted out at any time by calling the SPI slave controller's + * enqueue() method. * * 5) Upon return from the bind method, the SPI slave controller will be * fully "armed" and ready to begin normal SPI data transfers. @@ -351,21 +351,21 @@ * A typical (non-DMA) data transfer proceeds as follows: * * 1) Internally, the SPI slave driver detects that the SPI chip select - * has gone low, selecting this device for data transfer. The SPI - * slave controller will notify the slave device by called its + * has gone low, selecting this device for data transfer. The SPI + * slave controller will notify the slave device by calling its * select() method. * - * 2) If a change in the command/data state changes any time before, - * during, or after the chip is selected, that new command/data state - * will reported to the device driver via the cmddata() method. + * 2) If the command/data state changes any time before, during, or after the + * chip is selected, that new command/data state will be reported to the + * device driver via the cmddata() method. * * 3) As the first word is shifted in, the command or data word obtained - * by the initial call to getdata() will be shifted out. As soon as + * by the initial call to getdata() will be shifted out. As soon as * the clock is detected, the SPI controller driver will call the * getdata() method again to get a default second word to be shifted - * out. NOTES: (1) the SPI slave device has only one word in bit + * out. NOTES: (1) the SPI slave device has only one word in bit * times to provide this value! (2) The SPI device probably cannot - * really output anything meaning until it receives a decodes the + * really output anything meaningful until it receives and decodes the * first word received from the master. * * 4) When the first word from the master is shifted in, the SPI @@ -377,8 +377,8 @@ * data from the SPI device to the master, the SPI device driver * should call the controller's enqueue() method to provide the next * value(s) to be shifted out. If the SPI device responds with this - * value before clocking begins for the next word, that that value - * will be used. Otherwise, the value obtained from getdata() in + * value before clocking begins for the next word, then that value + * will be used. Otherwise, the value obtained from getdata() in * step 3 will be shifted out. * * 5) The SPI device's receive() method will be called in a similar @@ -387,9 +387,9 @@ * For the case of bi-directional data transfer or of a uni-directional * transfer of data from the SPI device to the master, the SPI device * driver can call the enqueue() methods as it has new data to be shifted - * out. The goal of the SPI device driver for this kind of transfer is + * out. The goal of the SPI device driver for this kind of transfer is * to supply valid output data at such a rate that data underruns do not - * occur. In the event of a data underrun, the SPI slave controller + * occur. In the event of a data underrun, the SPI slave controller * driver will fallback to the default output value obtained from the * last getdata() call. * @@ -407,14 +407,14 @@ * the SPI device driver. * * 6) The activity of 5) will continue until the master raises the chip - * select signal. In that case, the SPI slave controller driver will - * again call the SPI device's select() method. At this point, the SPI - * controller driver may have several words enqueued. It will not + * select signal. In that case, the SPI slave controller driver will + * again call the SPI device's select() method. At this point, the SPI + * controller driver may have several words enqueued. It will not * discard these unless the SPI device driver calls the qflush() * method. * * Some master side implementations may simply tie the chip select signal - * to ground if there are no other devices on the SPI bus. In that case, + * to ground if there are no other devices on the SPI bus. In that case, * the initial indication of chip selected will be the only call to the * select() method that is made. * @@ -426,42 +426,42 @@ * * A typical DMA data transfer processes as follows: * To be provided -- I do not have a design in mind to support DMA on the - * Slave side. The design might be very complex because: + * Slave side. The design might be very complex because: * * 1) You need DMA buffers of fixed size, but you cannot know the size of a * transfer in advance, it could be much larger than your buffer or much - * smaller. The DMA would fail in either case. + * smaller. The DMA would fail in either case. * - * 2) You cannot setup the DMA before the transfer. In most SPI protocols, + * 2) You cannot setup the DMA before the transfer. In most SPI protocols, * the first word send is a command to read or write something following - * by a sequence of transfers to implement the write. So you have very, + * by a sequence of transfers to implement the write. So you have very, * very limited time window to setup the correct DMA to respond to the - * command. I am not certain that it can be done reliably. + * command. I am not certain that it can be done reliably. * * Inserting dummy words into the protocol between the first command word * and the remaining data transfer could allow time to set up the DMA. * * 3) I mentioned that you do not know the size of the transfer in advance. - * If you set up the DMA to terminate to soon, then you lose the last part - * of the transfer. If you set the DMA up to be too large, then you will - * get no indication when the transfer completes. + * If you set up the DMA to terminate too soon, then you lose the last + * part of the transfer. If you set the DMA up to be too large, then you + * will get no indication when the transfer completes. * * The chip select going high would be one possibility to detect the end - * of a transfer. You could cancel a DMA in progress if the CS changes, - * but I do not know if that would work. If there is only one device on + * of a transfer. You could cancel a DMA in progress if the CS changes, + * but I do not know if that would work. If there is only one device on * the SPI bus, then most board designs will save a pin and simply tie CS - * to ground. So the CS is not always a reliable indicator of when the + * to ground. So the CS is not always a reliable indicator of when the * transfer completes. * - * 4) The option is to use a timer but that would really slow down the - * transfers if each DMA has to end with a timeout. It would be faster - * non-DMA transfers. + * 4) Another option is to use a timer but that would really slow down the + * transfers if each DMA has to end with a timeout. It would be faster + * to perform non-DMA transfers. * - * If the device as a very restricted protocol, like just register reads - * and writes, then it might possible to implement DMA. However, that + * If the device has a very restricted protocol, like just register reads + * and writes, then it might be possible to implement DMA. However, that * solution would not be general and probably not an appropriate part of - * a general OS. But if the interface is unpredictable, such as reading/ - * variable amounts of data from FLASH, there is more risk. A general + * a general OS. But if the interface is unpredictable, such as reading + * variable amounts of data from FLASH, there is more risk. A general * solution might not be possible. */ @@ -491,8 +491,8 @@ struct spi_sctrlrops_s CODE size_t (*qpoll)(FAR struct spi_sctrlr_s *sctrlr); }; -/* SPI slave controller private data. This structure only defines the - * initial fields of the structure visible to the SPI device driver. The +/* SPI slave controller private data. This structure only defines the + * initial fields of the structure visible to the SPI device driver. The * specific implementation may add additional, device specific fields after * the vtable structure pointer. */ @@ -516,8 +516,8 @@ struct spi_sdevops_s FAR const void *data, size_t nwords); }; -/* SPI slave device private data. This structure only defines the initial - * fields of the structure visible to the SPI slave controller driver. The +/* SPI slave device private data. This structure only defines the initial + * fields of the structure visible to the SPI slave controller driver. The * specific implementation may add additional, device specific fields after * the vtable structure pointer. */ From 8bcef023247cb2987d5f0de4f1150361dc6bf87d Mon Sep 17 00:00:00 2001 From: Max Kriegleder Date: Sun, 2 May 2021 15:46:25 +0200 Subject: [PATCH 066/739] boards/nucleo-h743zi2: added netnsh config --- .../nucleo-h743zi2/configs/netnsh/defconfig | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 boards/arm/stm32h7/nucleo-h743zi2/configs/netnsh/defconfig diff --git a/boards/arm/stm32h7/nucleo-h743zi2/configs/netnsh/defconfig b/boards/arm/stm32h7/nucleo-h743zi2/configs/netnsh/defconfig new file mode 100644 index 00000000000..5cc2aaada66 --- /dev/null +++ b/boards/arm/stm32h7/nucleo-h743zi2/configs/netnsh/defconfig @@ -0,0 +1,89 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_STANDARD_SERIAL is not set +CONFIG_ARCH="arm" +CONFIG_ARCH_BOARD="nucleo-h743zi2" +CONFIG_ARCH_BOARD_NUCLEO_H743ZI2=y +CONFIG_ARCH_CHIP="stm32h7" +CONFIG_ARCH_CHIP_STM32H743ZI=y +CONFIG_ARCH_CHIP_STM32H7=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_ARMV7M_DCACHE=y +CONFIG_ARMV7M_DCACHE_WRITETHROUGH=y +CONFIG_ARMV7M_DTCM=y +CONFIG_ARMV7M_ICACHE=y +CONFIG_BOARD_LOOPSPERMSEC=43103 +CONFIG_BUILTIN=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_ETH0_PHY_LAN8742A=y +CONFIG_FAT_LCNAMES=y +CONFIG_FS_FAT=y +CONFIG_FS_PROCFS=y +CONFIG_FS_PROCFS_REGISTER=y +CONFIG_HAVE_CXX=y +CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_INTELHEX_BINARY=y +CONFIG_LIBM=y +CONFIG_MAX_TASKS=16 +CONFIG_MM_REGIONS=4 +CONFIG_NET=y +CONFIG_NETDB_DNSCLIENT=y +CONFIG_NETUTILS_DISCOVER=y +CONFIG_NETUTILS_TELNETD=y +CONFIG_NETUTILS_WEBCLIENT=y +CONFIG_NET_ARP_IPIN=y +CONFIG_NET_ARP_SEND=y +CONFIG_NET_BROADCAST=y +CONFIG_NET_ETH_PKTSIZE=1500 +CONFIG_NET_ICMP=y +CONFIG_NET_ICMP_SOCKET=y +CONFIG_NET_IGMP=y +CONFIG_NET_LOOPBACK=y +CONFIG_NET_ROUTE=y +CONFIG_NET_STATISTICS=y +CONFIG_NET_TCP=y +CONFIG_NET_UDP=y +CONFIG_NET_UDP_CHECKSUMS=y +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_DISABLE_IFUPDOWN=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_LINELEN=64 +CONFIG_NSH_READLINE=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_RAM_SIZE=245760 +CONFIG_RAM_START=0x20010000 +CONFIG_RAW_BINARY=y +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_HPWORK=y +CONFIG_SCHED_LPWORK=y +CONFIG_SCHED_WAITPID=y +CONFIG_SDCLONE_DISABLE=y +CONFIG_SPI=y +CONFIG_START_DAY=6 +CONFIG_START_MONTH=12 +CONFIG_START_YEAR=2011 +CONFIG_STM32H7_ETHMAC=y +CONFIG_STM32H7_OTGFS=y +CONFIG_STM32H7_PHYSR=31 +CONFIG_STM32H7_PHYSR_100FD=0x0018 +CONFIG_STM32H7_PHYSR_100HD=0x0008 +CONFIG_STM32H7_PHYSR_10FD=0x0014 +CONFIG_STM32H7_PHYSR_10HD=0x0004 +CONFIG_STM32H7_PHYSR_ALTCONFIG=y +CONFIG_STM32H7_PHYSR_ALTMODE=0x001c +CONFIG_STM32H7_USART3=y +CONFIG_SYSTEM_DHCPC_RENEW=y +CONFIG_SYSTEM_NSH=y +CONFIG_SYSTEM_PING=y +CONFIG_TASK_NAME_SIZE=0 +CONFIG_USART3_SERIAL_CONSOLE=y +CONFIG_USBHOST=y +CONFIG_USBHOST_MSC=y +CONFIG_USBHOST_MSC_NOTIFIER=y +CONFIG_USER_ENTRYPOINT="nsh_main" From 886009f15fea97a4975fb2d8547c834a48e55a82 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Thu, 6 May 2021 09:22:42 -0300 Subject: [PATCH 067/739] tools/nxstyle: Add _Atomic keyword to whitelisted words --- tools/nxstyle.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/nxstyle.c b/tools/nxstyle.c index 3fadfd59932..645a3557dbf 100644 --- a/tools/nxstyle.c +++ b/tools/nxstyle.c @@ -221,6 +221,10 @@ static const char *g_white_list[] = "_Exit", + /* Ref: stdatomic.h */ + + "_Atomic", + /* Ref: unwind-arm-common.h */ "_Unwind", From 644a0cd52573070082d2431d9e1f81a09de57fc9 Mon Sep 17 00:00:00 2001 From: Julian Oes Date: Thu, 29 Apr 2021 14:23:15 +0200 Subject: [PATCH 068/739] drivers/serial: fix Rx interrupt enable for cdcacm This is addressing an issue where Rx interrupts were not restored for cdcacm after the buffer had been filled (in a burst). The Rx interrupts were only restored after the watchdog timeout of 200ms fired. This happened because CONFIG_SERIAL_RXDMA was set, however, for the cdcacm driver this does not actually matter as it is relying on uart_enablerxint to be called via the ops table. This patch makes sure that uart_enablerxint and uart_disablerxint are always called, independent of CONFIG_SERIAL_RXDMA, relying on the ops table to be correct for the case where it should be only a no-op. --- drivers/serial/serial.c | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/drivers/serial/serial.c b/drivers/serial/serial.c index ea64a7c07ed..b33d1fa80a2 100644 --- a/drivers/serial/serial.c +++ b/drivers/serial/serial.c @@ -900,17 +900,13 @@ static ssize_t uart_read(FAR struct file *filep, else { -#ifdef CONFIG_SERIAL_RXDMA - /* Disable all interrupts and test again... - * uart_disablerxint() is insufficient for the check in DMA mode. - */ + /* Disable all interrupts and test again... */ flags = enter_critical_section(); -#else + /* Disable Rx interrupts and test again... */ uart_disablerxint(dev); -#endif /* If the Rx ring buffer still empty? Bytes may have been added * between the last time that we checked and when we disabled @@ -927,14 +923,12 @@ static ssize_t uart_read(FAR struct file *filep, /* Notify DMA that there is free space in the RX buffer */ uart_dmarxfree(dev); -#else +#endif /* Wait with the RX interrupt re-enabled. All interrupts are * disabled briefly to assure that the following operations * are atomic. */ - flags = enter_critical_section(); - /* Re-enable UART Rx interrupts */ uart_enablerxint(dev); @@ -952,7 +946,6 @@ static ssize_t uart_read(FAR struct file *filep, leave_critical_section(flags); continue; } -#endif #ifdef CONFIG_SERIAL_REMOVABLE /* Check again if the removable device is still connected @@ -1020,11 +1013,9 @@ static ssize_t uart_read(FAR struct file *filep, * the loop. */ -#ifdef CONFIG_SERIAL_RXDMA leave_critical_section(flags); -#else + uart_enablerxint(dev); -#endif } } } @@ -1037,11 +1028,9 @@ static ssize_t uart_read(FAR struct file *filep, leave_critical_section(flags); #endif -#ifndef CONFIG_SERIAL_RXDMA /* RX interrupt could be disabled by RX buffer overflow. Enable it now. */ uart_enablerxint(dev); -#endif #ifdef CONFIG_SERIAL_IFLOWCONTROL #ifdef CONFIG_SERIAL_IFLOWCONTROL_WATERMARKS From 9044594545d2f892cb08deb4e2914417b8caa5a9 Mon Sep 17 00:00:00 2001 From: Raman Gopalan Date: Thu, 6 May 2021 14:44:01 +0530 Subject: [PATCH 069/739] at32uc3_gpioirq.c: Fix typo: contex -> context --- arch/avr/src/at32uc3/at32uc3_gpioirq.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/avr/src/at32uc3/at32uc3_gpioirq.c b/arch/avr/src/at32uc3/at32uc3_gpioirq.c index e37fd3a2b51..9cfb0c2dc1a 100644 --- a/arch/avr/src/at32uc3/at32uc3_gpioirq.c +++ b/arch/avr/src/at32uc3/at32uc3_gpioirq.c @@ -211,7 +211,7 @@ static void gpio_porthandler(uint32_t regbase, int irqbase, xcpt_t handler = g_gpiohandler[irq].handler; if (handler != NULL) { - handler(irq, contex, g_gpiohandler[irq].arg); + handler(irq, context, g_gpiohandler[irq].arg); } else { From 649e680f75b3a247be98e8624e03b3c7fe0ad600 Mon Sep 17 00:00:00 2001 From: Raman Gopalan Date: Thu, 6 May 2021 14:47:56 +0530 Subject: [PATCH 070/739] avr32dev1: Suppress linker error: Placeholder for board_app_initialize() --- boards/avr/at32uc3/avr32dev1/src/Makefile | 2 + .../avr/at32uc3/avr32dev1/src/avr32_appinit.c | 71 +++++++++++++++++++ .../avr/at32uc3/avr32dev1/src/avr32_bringup.c | 57 +++++++++++++++ 3 files changed, 130 insertions(+) create mode 100644 boards/avr/at32uc3/avr32dev1/src/avr32_appinit.c create mode 100644 boards/avr/at32uc3/avr32dev1/src/avr32_bringup.c diff --git a/boards/avr/at32uc3/avr32dev1/src/Makefile b/boards/avr/at32uc3/avr32dev1/src/Makefile index b042283c046..898afb25e7c 100644 --- a/boards/avr/at32uc3/avr32dev1/src/Makefile +++ b/boards/avr/at32uc3/avr32dev1/src/Makefile @@ -27,5 +27,7 @@ endif ifeq ($(CONFIG_ARCH_BUTTONS),y) CSRCS += avr32_buttons.c endif +CSRCS += avr32_appinit.c +CSRCS += avr32_bringup.c include $(TOPDIR)/boards/Board.mk diff --git a/boards/avr/at32uc3/avr32dev1/src/avr32_appinit.c b/boards/avr/at32uc3/avr32dev1/src/avr32_appinit.c new file mode 100644 index 00000000000..e12a504afc9 --- /dev/null +++ b/boards/avr/at32uc3/avr32dev1/src/avr32_appinit.c @@ -0,0 +1,71 @@ +/**************************************************************************** + * boards/avr/at32uc3/avr32dev1/src/avr32_appinit.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include + +#include + +#include "avr32dev1.h" + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: board_app_initialize + * + * Description: + * Perform application specific initialization. This function is never + * called directly from application code, but only indirectly via the + * (non-standard) boardctl() interface using the command BOARDIOC_INIT. + * + * Input Parameters: + * arg - The boardctl() argument is passed to the board_app_initialize() + * implementation without modification. The argument has no + * meaning to NuttX; the meaning of the argument is a contract + * between the board-specific initialization logic and the + * matching application logic. The value could be such things as a + * mode enumeration value, a set of DIP switch switch settings, a + * pointer to configuration data read from a file or serial FLASH, + * or whatever you would like to do with it. Every implementation + * should accept zero/NULL as a default configuration. + * + * Returned Value: + * Zero (OK) is returned on success; a negated errno value is returned on + * any failure to indicate the nature of the failure. + * + ****************************************************************************/ + +int board_app_initialize(uintptr_t arg) +{ +#ifndef CONFIG_BOARD_LATE_INITIALIZE + /* Perform board initialization */ + + return avr32_bringup(); +#else + return OK; +#endif /* CONFIG_BOARD_LATE_INITIALIZE */ +} diff --git a/boards/avr/at32uc3/avr32dev1/src/avr32_bringup.c b/boards/avr/at32uc3/avr32dev1/src/avr32_bringup.c new file mode 100644 index 00000000000..b0d87009694 --- /dev/null +++ b/boards/avr/at32uc3/avr32dev1/src/avr32_bringup.c @@ -0,0 +1,57 @@ +/**************************************************************************** + * boards/avr/at32uc3/avr32dev1/src/avr32_bringup.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: avr32_bringup + * + * Description: + * Bring up board features + * + ****************************************************************************/ + +int avr32_bringup(void) +{ + int ret = OK; + + #warning "Not Implemented" + + return ret; +} From e5f10696541dcbd53337b90f53538a48d073b4bc Mon Sep 17 00:00:00 2001 From: Harri Luhtala Date: Fri, 7 May 2021 11:58:26 +0300 Subject: [PATCH 071/739] arch/arm/src/stm32l4/hardware/stm32l4xrxx: pinmap alternative function for SPI2 --- arch/arm/src/stm32l4/hardware/stm32l4xrxx_pinmap.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm/src/stm32l4/hardware/stm32l4xrxx_pinmap.h b/arch/arm/src/stm32l4/hardware/stm32l4xrxx_pinmap.h index 9519b9c3e7f..dbb69c87033 100644 --- a/arch/arm/src/stm32l4/hardware/stm32l4xrxx_pinmap.h +++ b/arch/arm/src/stm32l4/hardware/stm32l4xrxx_pinmap.h @@ -465,15 +465,19 @@ #define GPIO_SPI2_NSS_1 (GPIO_ALT|GPIO_AF5 |GPIO_PORTB|GPIO_PIN9) #define GPIO_SPI2_NSS_2 (GPIO_ALT|GPIO_AF5 |GPIO_PORTB|GPIO_PIN12) #define GPIO_SPI2_NSS_3 (GPIO_ALT|GPIO_AF5 |GPIO_PORTD|GPIO_PIN0) +#define GPIO_SPI2_NSS_4 (GPIO_ALT|GPIO_AF5 |GPIO_PORTI|GPIO_PIN0) #define GPIO_SPI2_SCK_1 (GPIO_ALT|GPIO_AF5 |GPIO_PORTB|GPIO_PIN10) #define GPIO_SPI2_SCK_2 (GPIO_ALT|GPIO_AF5 |GPIO_PORTB|GPIO_PIN13) #define GPIO_SPI2_SCK_3 (GPIO_ALT|GPIO_AF5 |GPIO_PORTD|GPIO_PIN1) +#define GPIO_SPI2_SCK_4 (GPIO_ALT|GPIO_AF5 |GPIO_PORTI|GPIO_PIN1) #define GPIO_SPI2_MOSI_1 (GPIO_ALT|GPIO_AF5 |GPIO_PORTB|GPIO_PIN15) #define GPIO_SPI2_MOSI_2 (GPIO_ALT|GPIO_AF5 |GPIO_PORTC|GPIO_PIN3) #define GPIO_SPI2_MOSI_3 (GPIO_ALT|GPIO_AF5 |GPIO_PORTD|GPIO_PIN4) +#define GPIO_SPI2_MOSI_4 (GPIO_ALT|GPIO_AF5 |GPIO_PORTI|GPIO_PIN3) #define GPIO_SPI2_MISO_1 (GPIO_ALT|GPIO_AF5 |GPIO_PORTB|GPIO_PIN14) #define GPIO_SPI2_MISO_2 (GPIO_ALT|GPIO_AF5 |GPIO_PORTC|GPIO_PIN2) #define GPIO_SPI2_MISO_3 (GPIO_ALT|GPIO_AF5 |GPIO_PORTD|GPIO_PIN3) +#define GPIO_SPI2_MISO_4 (GPIO_ALT|GPIO_AF5 |GPIO_PORTI|GPIO_PIN2) #define GPIO_SPI3_NSS_1 (GPIO_ALT|GPIO_AF6 |GPIO_PORTA|GPIO_PIN4) #define GPIO_SPI3_NSS_2 (GPIO_ALT|GPIO_AF6 |GPIO_PORTA|GPIO_PIN15) From 468e08c1b4ff1441cf898623782869c7daf1c947 Mon Sep 17 00:00:00 2001 From: Liio Chen Date: Tue, 22 Oct 2019 15:08:44 +0800 Subject: [PATCH 072/739] binnfmt:Fix return before close ELF fd elf_init open a elf file , if both enabled CONFIG_NSH_BUIlTAPPS and CONFIG_NSH_FILE_APPS , elf_init will read elf file in /bin directory, but that length is zero , elf_read failed return and NOT close elf fd, so this line MUST be return to errout_with_init --- binfmt/elf.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/binfmt/elf.c b/binfmt/elf.c index ccf62baf770..cf739557a83 100644 --- a/binfmt/elf.c +++ b/binfmt/elf.c @@ -220,7 +220,7 @@ static int elf_loadbinary(FAR struct binary_s *binp) if (ret != 0) { berr("Failed to initialize for load of ELF program: %d\n", ret); - goto errout; + goto errout_with_init; } /* Load the program binary */ @@ -287,7 +287,6 @@ errout_with_load: elf_unload(&loadinfo); errout_with_init: elf_uninit(&loadinfo); -errout: return ret; } From bf733f72132d387206c3ffe21fb6b2a085dd5506 Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Thu, 6 May 2021 11:34:12 -0700 Subject: [PATCH 073/739] libc/pty: Make ptsname[_r] support PSEUDOTERM_BSD config too Signed-off-by: Xiang Xiao Change-Id: I82a60ded48ea3437bd5f2b4fe328294d7077b040 --- include/cxx/cstdlib | 2 -- include/stdlib.h | 5 +---- libs/libc/stdlib/Make.defs | 6 +----- libs/libc/stdlib/lib_ptsname.c | 4 ++-- libs/libc/stdlib/lib_ptsnamer.c | 9 +++++++-- 5 files changed, 11 insertions(+), 15 deletions(-) diff --git a/include/cxx/cstdlib b/include/cxx/cstdlib index 694d33e5f66..980956301d8 100644 --- a/include/cxx/cstdlib +++ b/include/cxx/cstdlib @@ -104,10 +104,8 @@ namespace std #ifdef CONFIG_PSEUDOTERM // Pseudo-Terminals -#ifdef CONFIG_PSEUDOTERM_SUSV1 using ::ptsname; using ::ptsname_r; -#endif using ::unlockpt; #endif diff --git a/include/stdlib.h b/include/stdlib.h index f43bae48dd7..690b29448af 100644 --- a/include/stdlib.h +++ b/include/stdlib.h @@ -211,12 +211,9 @@ int posix_memalign(FAR void **, size_t, size_t); /* Pseudo-Terminals */ -#ifdef CONFIG_PSEUDOTERM_SUSV1 +#ifdef CONFIG_PSEUDOTERM FAR char *ptsname(int fd); int ptsname_r(int fd, FAR char *buf, size_t buflen); -#endif - -#ifdef CONFIG_PSEUDOTERM int unlockpt(int fd); /* int grantpt(int fd); Not implemented */ diff --git a/libs/libc/stdlib/Make.defs b/libs/libc/stdlib/Make.defs index 3cb6269538f..3d1aa3423e0 100644 --- a/libs/libc/stdlib/Make.defs +++ b/libs/libc/stdlib/Make.defs @@ -32,12 +32,8 @@ CSRCS += lib_mblen.c lib_mbtowc.c lib_wctomb.c CSRCS += lib_mbstowcs.c lib_wcstombs.c endif -ifeq ($(CONFIG_PSEUDOTERM_SUSV1),y) -CSRCS += lib_ptsname.c lib_ptsnamer.c -endif - ifeq ($(CONFIG_PSEUDOTERM),y) -CSRCS += lib_unlockpt.c +CSRCS += lib_ptsname.c lib_ptsnamer.c lib_unlockpt.c endif # Add the stdlib directory to the build diff --git a/libs/libc/stdlib/lib_ptsname.c b/libs/libc/stdlib/lib_ptsname.c index 4ed9d2ae077..170db5d7e6a 100644 --- a/libs/libc/stdlib/lib_ptsname.c +++ b/libs/libc/stdlib/lib_ptsname.c @@ -26,7 +26,7 @@ #include -#ifdef CONFIG_PSEUDOTERM_SUSV1 +#ifdef CONFIG_PSEUDOTERM /**************************************************************************** * Public Functions @@ -55,4 +55,4 @@ FAR char *ptsname(int fd) return ret < 0 ? NULL : devname; } -#endif /* CONFIG_PSEUDOTERM_SUSV1 */ +#endif /* CONFIG_PSEUDOTERM */ diff --git a/libs/libc/stdlib/lib_ptsnamer.c b/libs/libc/stdlib/lib_ptsnamer.c index f7ef41cc684..cf8343f7979 100644 --- a/libs/libc/stdlib/lib_ptsnamer.c +++ b/libs/libc/stdlib/lib_ptsnamer.c @@ -29,7 +29,7 @@ #include #include -#ifdef CONFIG_PSEUDOTERM_SUSV1 +#ifdef CONFIG_PSEUDOTERM /**************************************************************************** * Public Functions @@ -73,8 +73,13 @@ int ptsname_r(int fd, FAR char *buf, size_t buflen) * error detection. */ +#ifdef CONFIG_PSEUDOTERM_SUSV1 snprintf(buf, buflen, "/dev/pts/%d", ptyno); +#else + snprintf(buf, buflen, "/dev/ttyp%d", ptyno); +#endif + return OK; } -#endif /* CONFIG_PSEUDOTERM_SUSV1 */ +#endif /* CONFIG_PSEUDOTERM */ From b8ed17b9dad515309f59154fb3c0e0a99fbbf6ac Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Fri, 7 May 2021 00:39:08 -0700 Subject: [PATCH 074/739] libc/termios: Implement TCSADRAIN and TCSAFLUSH for tcsetattr Signed-off-by: Xiang Xiao Change-Id: If87a4931cd5a55e064f58c19a22c7ce13f538000 --- libs/libc/termios/lib_tcsetattr.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libs/libc/termios/lib_tcsetattr.c b/libs/libc/termios/lib_tcsetattr.c index e93bf584ea5..cde1c0663c6 100644 --- a/libs/libc/termios/lib_tcsetattr.c +++ b/libs/libc/termios/lib_tcsetattr.c @@ -83,10 +83,15 @@ int tcsetattr(int fd, int options, FAR const struct termios *termiosp) { - if (options == TCSANOW) + if (options != TCSANOW) { - return ioctl(fd, TCSETS, (unsigned long)termiosp); + tcdrain(fd); } - return -ENOSYS; + if (options == TCSAFLUSH) + { + tcflush(fd, TCIFLUSH); + } + + return ioctl(fd, TCSETS, (unsigned long)termiosp); } From bd8e37bb4b0adc71ad1577557e73e82c8066fc39 Mon Sep 17 00:00:00 2001 From: Dong Heng Date: Fri, 30 Apr 2021 14:14:45 +0800 Subject: [PATCH 075/739] risc-v/esp32c3: Add ESP32-C3 (G)DMA driver and testing --- arch/risc-v/src/esp32c3/Kconfig | 24 + arch/risc-v/src/esp32c3/Make.defs | 4 + arch/risc-v/src/esp32c3/esp32c3_dma.c | 516 +++ arch/risc-v/src/esp32c3/esp32c3_dma.h | 223 + .../risc-v/src/esp32c3/hardware/esp32c3_dma.h | 3898 +++++++++++++++++ .../esp32c3-devkit/configs/dma/defconfig | 32 + 6 files changed, 4697 insertions(+) create mode 100644 arch/risc-v/src/esp32c3/esp32c3_dma.c create mode 100644 arch/risc-v/src/esp32c3/esp32c3_dma.h create mode 100644 arch/risc-v/src/esp32c3/hardware/esp32c3_dma.h create mode 100644 boards/risc-v/esp32c3/esp32c3-devkit/configs/dma/defconfig diff --git a/arch/risc-v/src/esp32c3/Kconfig b/arch/risc-v/src/esp32c3/Kconfig index 72e5090a542..88990811ebb 100644 --- a/arch/risc-v/src/esp32c3/Kconfig +++ b/arch/risc-v/src/esp32c3/Kconfig @@ -237,6 +237,11 @@ config ESP32C3_SPI2 select ESP32C3_SPI select SPI +config ESP32C3_DMA + bool "General DMA (GDMA)" + default n + select ARCH_DMA + config ESP32C3_MWDT0 bool "Main System Watchdog Timer (Group 0)" default n @@ -542,4 +547,23 @@ config ESP32C3_PARTITION_MOUNT endmenu # ESP32C3_PARTITION +menu "GDMA Configuration" + depends on ESP32C3_DMA + +config ESP32C3_DMA_M2M_TEST + bool "Test GDMA M2M" + default n + +config ESP32C3_DMA_M2M_TEST_LOOPS + int "Test GDMA M2M loops" + default 256 + depends on ESP32C3_DMA_M2M_TEST + +config ESP32C3_DMA_M2M_TEST_BUFSIZE + int "Test GDMA M2M buffer size" + default 16000 + depends on ESP32C3_DMA_M2M_TEST + +endmenu # GDMA Configuration + endif # ARCH_CHIP_ESP32C3 diff --git a/arch/risc-v/src/esp32c3/Make.defs b/arch/risc-v/src/esp32c3/Make.defs index 7c333a7486a..369dcebcdaf 100644 --- a/arch/risc-v/src/esp32c3/Make.defs +++ b/arch/risc-v/src/esp32c3/Make.defs @@ -108,6 +108,10 @@ ifeq ($(CONFIG_ESP32C3_DISABLE_STDC_ATOMIC),) CHIP_CSRCS += esp32c3_std_atomic.c endif +ifeq ($(CONFIG_ESP32C3_DMA),y) +CHIP_CSRCS += esp32c3_dma.c +endif + ifeq ($(CONFIG_ESP32C3_WIRELESS),y) WIRELESS_DRV_UNPACK = esp-wireless-drivers-3rdparty WIRELESS_DRV_ID = 2b53111 diff --git a/arch/risc-v/src/esp32c3/esp32c3_dma.c b/arch/risc-v/src/esp32c3/esp32c3_dma.c new file mode 100644 index 00000000000..384c6de388d --- /dev/null +++ b/arch/risc-v/src/esp32c3/esp32c3_dma.c @@ -0,0 +1,516 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/esp32c3_dma.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "riscv_arch.h" + +#include "esp32c3_dma.h" + +#include "hardware/esp32c3_dma.h" +#include "hardware/esp32c3_soc.h" +#include "hardware/esp32c3_system.h" + +/**************************************************************************** + * Pre-processor Macros + ****************************************************************************/ + +#define REG_OFF (DMA_OUT_CONF0_CH1_REG - DMA_OUT_CONF0_CH0_REG) + +#define SET_REG(_r, _ch, _v) putreg32((_v), (_r) + (_ch) * REG_OFF) +#define GET_REG(_r, _ch, _v) getreg32((_r) + (_ch) * REG_OFF) + +#define SET_BITS(_r, _ch, _b) modifyreg32((_r) + (_ch) * REG_OFF, 0, (_b)) +#define CLR_BITS(_r, _ch, _b) modifyreg32((_r) + (_ch) * REG_OFF, (_b), 0) + +#ifndef MIN +# define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif + +#ifndef ALIGN_UP +# define ALIGN_UP(num, align) (((num) + ((align) - 1)) & ~((align) - 1)) +#endif + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static bool g_dma_chan_used[ESP32C3_DMA_CHAN_MAX]; +static sem_t g_dma_exc_sem = SEM_INITIALIZER(1); + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: esp32c3_dma_request + * + * Description: + * Request DMA channel and config it with given parameters. + * + * Input Parameters: + * periph - Peripheral for which the DMA channel request was made + * tx_prio - Interrupt priority + * rx_prio - Interrupt flags + * + * Returned Value: + * DMA channel number (>=0) if success or -1 if fail. + * + ****************************************************************************/ + +int32_t esp32c3_dma_request(enum esp32c3_dma_periph_e periph, + uint32_t tx_prio, + uint32_t rx_prio) +{ + int chan; + + DEBUGASSERT((periph < ESP32C3_DMA_PERIPH_NUM) && + (periph != ESP32C3_DMA_PERIPH_RD0) && + (periph != ESP32C3_DMA_PERIPH_RD1)); + + DEBUGASSERT(tx_prio <= ESP32C3_DMA_TX_PRIO_MAX); + DEBUGASSERT(rx_prio <= ESP32C3_DMA_RX_PRIO_MAX); + + dmainfo("periph=%" PRIu32 " tx_prio=%" PRIu32 " rx_prio=%" PRIu32 "\n", + (uint32_t)periph, tx_prio, rx_prio); + + nxsem_wait_uninterruptible(&g_dma_exc_sem); + + for (chan = 0; chan < ESP32C3_DMA_CHAN_MAX; chan++) + { + if (!g_dma_chan_used[chan]) + { + g_dma_chan_used[chan] = true; + break; + } + } + + if (chan == ESP32C3_DMA_CHAN_MAX) + { + dmaerr("No available GDMA channel for allocation\n"); + + nxsem_post(&g_dma_exc_sem); + + return ERROR; + } + + dmainfo("Allocated channel=%d\n", chan); + + if (periph == ESP32C3_DMA_PERIPH_MEM) + { + /* Enable DMA channel M2M mode */ + + SET_BITS(DMA_IN_CONF0_CH0_REG, chan, DMA_MEM_TRANS_EN_CH0_M); + + /* Just setting a valid value to the register */ + + SET_REG(DMA_OUT_PERI_SEL_CH0_REG, chan, 0); + SET_REG(DMA_IN_PERI_SEL_CH0_REG, chan, 0); + } + else + { + /* Disable DMA channel M2M mode */ + + CLR_BITS(DMA_IN_CONF0_CH0_REG, chan, DMA_MEM_TRANS_EN_CH0_M); + + /* Connect DMA TX/RX channel to a given peripheral */ + + SET_REG(DMA_OUT_PERI_SEL_CH0_REG, chan, periph); + SET_REG(DMA_IN_PERI_SEL_CH0_REG, chan, periph); + } + + SET_REG(DMA_OUT_PRI_CH0_REG, chan, tx_prio); + SET_REG(DMA_IN_PRI_CH0_REG, chan, rx_prio); + + nxsem_post(&g_dma_exc_sem); + + return chan; +} + +/**************************************************************************** + * Name: esp32c3_dma_setup + * + * Description: + * Set up DMA descriptor with given parameters. + * + * Input Parameters: + * chan - DMA channel + * tx - true: TX mode; false: RX mode + * dmadesc - DMA descriptor pointer + * num - DMA descriptor number + * pbuf - Buffer pointer + * len - Buffer length by byte + * + * Returned Value: + * Bind pbuf data bytes. + * + ****************************************************************************/ + +uint32_t esp32c3_dma_setup(int chan, bool tx, + struct esp32c3_dmadesc_s *dmadesc, uint32_t num, + uint8_t *pbuf, uint32_t len) +{ + int i; + uint32_t regval; + uint32_t bytes = len; + uint8_t *pdata = pbuf; + uint32_t data_len; + uint32_t buf_len; + + DEBUGASSERT(chan >= 0); + DEBUGASSERT(dmadesc != NULL); + DEBUGASSERT(num > 0); + DEBUGASSERT(pbuf != NULL); + DEBUGASSERT(len > 0); + + for (i = 0; i < num; i++) + { + data_len = MIN(bytes, ESP32C3_DMA_BUFLEN_MAX); + + /* Buffer length must be rounded to next 32-bit boundary. */ + + buf_len = ALIGN_UP(data_len, sizeof(uintptr_t)); + + dmadesc[i].ctrl = (data_len << ESP32C3_DMA_CTRL_DATALEN_S) | + (buf_len << ESP32C3_DMA_CTRL_BUFLEN_S) | + ESP32C3_DMA_CTRL_OWN; + dmadesc[i].pbuf = pdata; + dmadesc[i].next = &dmadesc[i + 1]; + + bytes -= data_len; + if (bytes == 0) + { + break; + } + + pdata += data_len; + } + + dmadesc[i].ctrl |= ESP32C3_DMA_CTRL_EOF; + dmadesc[i].next = NULL; + + if (tx) + { + /* Reset DMA TX channel FSM and FIFO pointer */ + + SET_BITS(DMA_OUT_CONF0_CH0_REG, chan, DMA_OUT_RST_CH0_M); + CLR_BITS(DMA_OUT_CONF0_CH0_REG, chan, DMA_OUT_RST_CH0_M); + + /* Set the descriptor link base address for TX channel */ + + regval = (uint32_t)dmadesc & DMA_OUTLINK_ADDR_CH0; + SET_BITS(DMA_OUT_LINK_CH0_REG, chan, regval); + } + else + { + /* Reset DMA RX channel FSM and FIFO pointer */ + + SET_BITS(DMA_IN_CONF0_CH0_REG, chan, DMA_IN_RST_CH0_M); + CLR_BITS(DMA_IN_CONF0_CH0_REG, chan, DMA_IN_RST_CH0_M); + + /* Set the descriptor link base address for RX channel */ + + regval = (uint32_t)dmadesc & DMA_INLINK_ADDR_CH0; + SET_BITS(DMA_IN_LINK_CH0_REG, chan, regval); + } + + return len - bytes; +} + +/**************************************************************************** + * Name: esp32c3_dma_enable + * + * Description: + * Enable DMA channel transmission. + * + * Input Parameters: + * chan - DMA channel + * tx - true: TX mode; false: RX mode + * + * Returned Value: + * None. + * + ****************************************************************************/ + +void esp32c3_dma_enable(int chan, bool tx) +{ + if (tx) + { + SET_BITS(DMA_OUT_LINK_CH0_REG, chan, DMA_OUTLINK_START_CH0_M); + } + else + { + SET_BITS(DMA_IN_LINK_CH0_REG, chan, DMA_INLINK_START_CH0_M); + } +} + +/**************************************************************************** + * Name: esp32c3_dma_disable + * + * Description: + * Disable DMA channel transmission. + * + * Input Parameters: + * chan - DMA channel + * tx - true: TX mode; false: RX mode + * + * Returned Value: + * None. + * + ****************************************************************************/ + +void esp32c3_dma_disable(int chan, bool tx) +{ + if (tx) + { + SET_BITS(DMA_OUT_LINK_CH0_REG, chan, DMA_OUTLINK_STOP_CH0_M); + } + else + { + SET_BITS(DMA_IN_LINK_CH0_REG, chan, DMA_INLINK_STOP_CH0_M); + } +} + +/**************************************************************************** + * Name: esp32c3_dma_wait_idle + * + * Description: + * Wait until transmission ends. + * + * Input Parameters: + * chan - DMA channel + * tx - true: TX mode; false: RX mode + * + * Returned Value: + * None. + * + ****************************************************************************/ + +void esp32c3_dma_wait_idle(int chan, bool tx) +{ + uint32_t regval; + uint32_t regaddr; + uint32_t waitbits; + + if (tx) + { + regaddr = DMA_OUT_LINK_CH0_REG + chan * REG_OFF; + waitbits = DMA_OUTLINK_PARK_CH0; + } + else + { + regaddr = DMA_IN_LINK_CH0_REG + chan * REG_OFF; + waitbits = DMA_INLINK_PARK_CH0; + } + + do + { + regval = getreg32(regaddr); + } + while ((waitbits & regval) == 0); +} + +/**************************************************************************** + * Name: esp32c3_dma_init + * + * Description: + * Initialize DMA driver. + * + * Input Parameters: + * None + * + * Returned Value: + * None. + * + ****************************************************************************/ + +void esp32c3_dma_init(void) +{ + modifyreg32(SYSTEM_PERIP_CLK_EN1_REG, 0, SYSTEM_DMA_CLK_EN_M); + modifyreg32(SYSTEM_PERIP_RST_EN1_REG, SYSTEM_DMA_RST_M, 0); + + modifyreg32(DMA_MISC_CONF_REG, 0, DMA_CLK_EN_M); +} + +/**************************************************************************** + * Name: esp32c3_dma_main + * + * Description: + * ESP32-C3 DMA testing example. + * + ****************************************************************************/ + +#ifdef CONFIG_ESP32C3_DMA_M2M_TEST +void esp32c3_dma_main(int argc, char *argv[]) +{ + int chan; + struct esp32c3_dmadesc_s *rx_dmadesc; + struct esp32c3_dmadesc_s *tx_dmadesc; + uint8_t *rxbuf; + uint8_t *txbuf; + bool success = true; + + const size_t bufsize = CONFIG_ESP32C3_DMA_M2M_TEST_BUFSIZE; +#if (CONFIG_ESP32C3_DMA_M2M_TEST_BUFSIZE % ESP32C3_DMA_BUFLEN_MAX) > 0 + const size_t dmadesc_num = bufsize / ESP32C3_DMA_BUFLEN_MAX + 1; +#else + const size_t dmadesc_num = bufsize / ESP32C3_DMA_BUFLEN_MAX; +#endif + + syslog(LOG_INFO, "----- BEGIN TEST -----\n"); + + rxbuf = kmm_malloc(bufsize); + if (rxbuf == NULL) + { + syslog(LOG_ERR, "Failed to malloc RX buffer\n"); + + success = false; + goto test_end; + } + + txbuf = kmm_malloc(bufsize); + if (txbuf == NULL) + { + syslog(LOG_ERR, "Failed to malloc TX buffer\n"); + kmm_free(rxbuf); + + success = false; + goto test_end; + } + + rx_dmadesc = kmm_malloc(sizeof(struct esp32c3_dmadesc_s) * dmadesc_num); + if (rx_dmadesc == NULL) + { + syslog(LOG_ERR, "Failed to malloc RX DMA descriptor\n"); + kmm_free(txbuf); + kmm_free(rxbuf); + + success = false; + goto test_end; + } + + tx_dmadesc = kmm_malloc(sizeof(struct esp32c3_dmadesc_s) * dmadesc_num); + if (txbuf == NULL) + { + syslog(LOG_ERR, "Failed to malloc TX DMA descriptor\n"); + kmm_free(rx_dmadesc); + kmm_free(txbuf); + kmm_free(rxbuf); + + success = false; + goto test_end; + } + + esp32c3_dma_init(); + + chan = esp32c3_dma_request(ESP32C3_DMA_PERIPH_MEM, 1, 1); + if (chan < 0) + { + syslog(LOG_ERR, "Request DMA channel error\n"); + + success = false; + goto test_end_cleanup; + } + + for (int i = 1; i <= CONFIG_ESP32C3_DMA_M2M_TEST_LOOPS; ++i) + { + const uint8_t watermark = i & UINT8_MAX; + size_t j = 0; + + /* Prepare buffers for DMA transfer */ + + memset(rxbuf, 0, bufsize); + memset(txbuf, watermark, bufsize); + + /* Setup DMA descriptors. + * Intentionally ignore the last byte for TX. + */ + + esp32c3_dma_setup(chan, false, rx_dmadesc, dmadesc_num, + rxbuf, bufsize); + esp32c3_dma_setup(chan, true, tx_dmadesc, dmadesc_num, + txbuf, bufsize - 1); + + /* Start DMA transfer */ + + esp32c3_dma_enable(chan, false); + esp32c3_dma_enable(chan, true); + + /* Wait for DMA transfer to complete */ + + esp32c3_dma_wait_idle(chan, true); + esp32c3_dma_wait_idle(chan, false); + + /* Verify if last byte on RX buffer is unchanged */ + + if (rxbuf[bufsize - 1] != 0) + { + success = false; + goto test_end_cleanup; + } + + /* Verify if RX buffer contains expected values */ + + for (j = 0; j < bufsize - 1; ++j) + { + if (rxbuf[j] != watermark) + { + syslog(LOG_ERR, + "DMA-M2M-TEST loop %d fail buf[%zu]=%" PRIu8 "\n", + i, j, rxbuf[j]); + + success = false; + goto test_end_cleanup; + } + } + + syslog(LOG_INFO, "DMA-M2M-TEST loop %d OK\n", i); + } + +test_end_cleanup: + kmm_free(tx_dmadesc); + kmm_free(rx_dmadesc); + kmm_free(txbuf); + kmm_free(rxbuf); + +test_end: + syslog(LOG_INFO, "----- END TEST -----\n"); + + syslog(LOG_INFO, "\n"); + + syslog(LOG_INFO, "----- RESULT: %s -----\n", + success ? "SUCCESS" : "FAILED"); +} +#endif diff --git a/arch/risc-v/src/esp32c3/esp32c3_dma.h b/arch/risc-v/src/esp32c3/esp32c3_dma.h new file mode 100644 index 00000000000..5dbb72c29a3 --- /dev/null +++ b/arch/risc-v/src/esp32c3/esp32c3_dma.h @@ -0,0 +1,223 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/esp32c3_dma.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_ESP32C3_DMA_H +#define __ARCH_RISCV_SRC_ESP32C3_ESP32C3_DMA_H + +#include +#include + +#ifndef __ASSEMBLY__ + +#undef EXTERN +#if defined(__cplusplus) +#define EXTERN extern "C" +extern "C" +{ +#else +#define EXTERN extern +#endif + +/**************************************************************************** + * Pre-processor Macros + ****************************************************************************/ + +/* DMA max data length */ + +#define ESP32C3_DMA_DATALEN_MAX (0x1000 - 4) + +/* DMA max buffer length */ + +#define ESP32C3_DMA_BUFLEN_MAX ESP32C3_DMA_DATALEN_MAX + +/* DMA channel number */ + +#define ESP32C3_DMA_CHAN_MAX (3) + +/* DMA RX MAX priority */ + +#define ESP32C3_DMA_RX_PRIO_MAX (15) + +/* DMA TX MAX priority */ + +#define ESP32C3_DMA_TX_PRIO_MAX (15) + +/* DMA descriptor */ + +#define ESP32C3_DMA_CTRL_OWN (1 << 31) /* Owned by DMA */ +#define ESP32C3_DMA_CTRL_EOF (1 << 30) /* End of frame */ +#define ESP32C3_DMA_CTRL_ERREOF (1 << 28) /* Received data error */ +#define ESP32C3_DMA_CTRL_DATALEN_S (12) /* Data length shift */ +#define ESP32C3_DMA_CTRL_DATALEN_V (0xfff) /* Data length value */ +#define ESP32C3_DMA_CTRL_BUFLEN_S (0) /* Buffer length shift */ +#define ESP32C3_DMA_CTRL_BUFLEN_V (0xfff) /* Buffer length value */ + +/**************************************************************************** + * Public Types + ****************************************************************************/ + +enum esp32c3_dma_periph_e +{ + ESP32C3_DMA_PERIPH_MEM = -1, + ESP32C3_DMA_PERIPH_SPI = 0, + ESP32C3_DMA_PERIPH_UCHI0 = 2, + ESP32C3_DMA_PERIPH_I2S = 3, + ESP32C3_DMA_PERIPH_RD0 = 4, + ESP32C3_DMA_PERIPH_RD1 = 5, + ESP32C3_DMA_PERIPH_AES = 6, + ESP32C3_DMA_PERIPH_SHA = 7, + ESP32C3_DMA_PERIPH_ADC = 8, + ESP32C3_DMA_PERIPH_NUM, +}; + +/* DMA descriptor type */ + +struct esp32c3_dmadesc_s +{ + uint32_t ctrl; /* DMA control block */ + uint8_t *pbuf; /* DMA TX/RX buffer address */ + struct esp32c3_dmadesc_s *next; /* Next DMA descriptor address */ +}; + +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ + +/**************************************************************************** + * Name: esp32c3_dma_request + * + * Description: + * Request DMA channel and config it with given parameters. + * + * Input Parameters: + * periph - Peripheral for which the DMA channel request was made + * tx_prio - Interrupt priority + * rx_prio - Interrupt flags + * + * Returned Value: + * DMA channel number (>=0) if success or -1 if fail. + * + ****************************************************************************/ + +int32_t esp32c3_dma_request(enum esp32c3_dma_periph_e periph, + uint32_t tx_prio, + uint32_t rx_prio); + +/**************************************************************************** + * Name: esp32c3_dma_setup + * + * Description: + * Set up DMA descriptor with given parameters. + * + * Input Parameters: + * chan - DMA channel + * tx - true: TX mode; false: RX mode + * dmadesc - DMA descriptor pointer + * num - DMA descriptor number + * pbuf - Buffer pointer + * len - Buffer length by byte + * + * Returned Value: + * Bind pbuf data bytes. + * + ****************************************************************************/ + +uint32_t esp32c3_dma_setup(int chan, bool tx, + struct esp32c3_dmadesc_s *dmadesc, uint32_t num, + uint8_t *pbuf, uint32_t len); + +/**************************************************************************** + * Name: esp32c3_dma_enable + * + * Description: + * Enable DMA channel transmission. + * + * Input Parameters: + * chan - DMA channel + * tx - true: TX mode; false: RX mode + * + * Returned Value: + * None. + * + ****************************************************************************/ + +void esp32c3_dma_enable(int chan, bool tx); + +/**************************************************************************** + * Name: esp32c3_dma_disable + * + * Description: + * Disable DMA channel transmission. + * + * Input Parameters: + * chan - DMA channel + * tx - true: TX mode; false: RX mode + * + * Returned Value: + * None. + * + ****************************************************************************/ + +void esp32c3_dma_disable(int chan, bool tx); + +/**************************************************************************** + * Name: esp32c3_dma_wait_idle + * + * Description: + * Wait until transmission ends. + * + * Input Parameters: + * chan - DMA channel + * tx - true: TX mode; false: RX mode + * + * Returned Value: + * None. + * + ****************************************************************************/ + +void esp32c3_dma_wait_idle(int chan, bool tx); + +/**************************************************************************** + * Name: esp32c3_dma_init + * + * Description: + * Initialize DMA driver. + * + * Input Parameters: + * None + * + * Returned Value: + * None. + * + ****************************************************************************/ + +void esp32c3_dma_init(void); + +#ifdef __cplusplus +} +#endif +#undef EXTERN + +#endif /* __ASSEMBLY__ */ +#endif /* __ARCH_RISCV_SRC_ESP32C3_ESP32C3_DMA_H */ diff --git a/arch/risc-v/src/esp32c3/hardware/esp32c3_dma.h b/arch/risc-v/src/esp32c3/hardware/esp32c3_dma.h new file mode 100644 index 00000000000..78b5746d34f --- /dev/null +++ b/arch/risc-v/src/esp32c3/hardware/esp32c3_dma.h @@ -0,0 +1,3898 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/hardware/esp32c3_dma.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_DMA_H +#define __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_DMA_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include "esp32c3_soc.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* DMA_INT_RAW_CH0_REG register + * DMA_INT_RAW_CH0_REG. + */ + +#define DMA_INT_RAW_CH0_REG (DR_REG_GDMA_BASE + 0x0) + +/* DMA_OUTFIFO_UDF_CH0_INT_RAW : R/WTC/SS; bitpos: [12]; default: 0; + * This raw interrupt bit turns to high level when level 1 fifo of Tx + * channel 0 is underflow. + */ + +#define DMA_OUTFIFO_UDF_CH0_INT_RAW (BIT(12)) +#define DMA_OUTFIFO_UDF_CH0_INT_RAW_M (DMA_OUTFIFO_UDF_CH0_INT_RAW_V << DMA_OUTFIFO_UDF_CH0_INT_RAW_S) +#define DMA_OUTFIFO_UDF_CH0_INT_RAW_V 0x00000001 +#define DMA_OUTFIFO_UDF_CH0_INT_RAW_S 12 + +/* DMA_OUTFIFO_OVF_CH0_INT_RAW : R/WTC/SS; bitpos: [11]; default: 0; + * This raw interrupt bit turns to high level when level 1 fifo of Tx + * channel 0 is overflow. + */ + +#define DMA_OUTFIFO_OVF_CH0_INT_RAW (BIT(11)) +#define DMA_OUTFIFO_OVF_CH0_INT_RAW_M (DMA_OUTFIFO_OVF_CH0_INT_RAW_V << DMA_OUTFIFO_OVF_CH0_INT_RAW_S) +#define DMA_OUTFIFO_OVF_CH0_INT_RAW_V 0x00000001 +#define DMA_OUTFIFO_OVF_CH0_INT_RAW_S 11 + +/* DMA_INFIFO_UDF_CH0_INT_RAW : R/WTC/SS; bitpos: [10]; default: 0; + * This raw interrupt bit turns to high level when level 1 fifo of Rx + * channel 0 is underflow. + */ + +#define DMA_INFIFO_UDF_CH0_INT_RAW (BIT(10)) +#define DMA_INFIFO_UDF_CH0_INT_RAW_M (DMA_INFIFO_UDF_CH0_INT_RAW_V << DMA_INFIFO_UDF_CH0_INT_RAW_S) +#define DMA_INFIFO_UDF_CH0_INT_RAW_V 0x00000001 +#define DMA_INFIFO_UDF_CH0_INT_RAW_S 10 + +/* DMA_INFIFO_OVF_CH0_INT_RAW : R/WTC/SS; bitpos: [9]; default: 0; + * This raw interrupt bit turns to high level when level 1 fifo of Rx + * channel 0 is overflow. + */ + +#define DMA_INFIFO_OVF_CH0_INT_RAW (BIT(9)) +#define DMA_INFIFO_OVF_CH0_INT_RAW_M (DMA_INFIFO_OVF_CH0_INT_RAW_V << DMA_INFIFO_OVF_CH0_INT_RAW_S) +#define DMA_INFIFO_OVF_CH0_INT_RAW_V 0x00000001 +#define DMA_INFIFO_OVF_CH0_INT_RAW_S 9 + +/* DMA_OUT_TOTAL_EOF_CH0_INT_RAW : R/WTC/SS; bitpos: [8]; default: 0; + * The raw interrupt bit turns to high level when data corresponding a + * outlink (includes one link descriptor or few link descriptors) is + * transmitted out for Tx channel 0. + */ + +#define DMA_OUT_TOTAL_EOF_CH0_INT_RAW (BIT(8)) +#define DMA_OUT_TOTAL_EOF_CH0_INT_RAW_M (DMA_OUT_TOTAL_EOF_CH0_INT_RAW_V << DMA_OUT_TOTAL_EOF_CH0_INT_RAW_S) +#define DMA_OUT_TOTAL_EOF_CH0_INT_RAW_V 0x00000001 +#define DMA_OUT_TOTAL_EOF_CH0_INT_RAW_S 8 + +/* DMA_IN_DSCR_EMPTY_CH0_INT_RAW : R/WTC/SS; bitpos: [7]; default: 0; + * The raw interrupt bit turns to high level when Rx buffer pointed by + * inlink is full and receiving data is not completed, but there is no more + * inlink for Rx channel 0. + */ + +#define DMA_IN_DSCR_EMPTY_CH0_INT_RAW (BIT(7)) +#define DMA_IN_DSCR_EMPTY_CH0_INT_RAW_M (DMA_IN_DSCR_EMPTY_CH0_INT_RAW_V << DMA_IN_DSCR_EMPTY_CH0_INT_RAW_S) +#define DMA_IN_DSCR_EMPTY_CH0_INT_RAW_V 0x00000001 +#define DMA_IN_DSCR_EMPTY_CH0_INT_RAW_S 7 + +/* DMA_OUT_DSCR_ERR_CH0_INT_RAW : R/WTC/SS; bitpos: [6]; default: 0; + * The raw interrupt bit turns to high level when detecting outlink + * descriptor error, including owner error, the second and third word error + * of outlink descriptor for Tx channel 0. + */ + +#define DMA_OUT_DSCR_ERR_CH0_INT_RAW (BIT(6)) +#define DMA_OUT_DSCR_ERR_CH0_INT_RAW_M (DMA_OUT_DSCR_ERR_CH0_INT_RAW_V << DMA_OUT_DSCR_ERR_CH0_INT_RAW_S) +#define DMA_OUT_DSCR_ERR_CH0_INT_RAW_V 0x00000001 +#define DMA_OUT_DSCR_ERR_CH0_INT_RAW_S 6 + +/* DMA_IN_DSCR_ERR_CH0_INT_RAW : R/WTC/SS; bitpos: [5]; default: 0; + * The raw interrupt bit turns to high level when detecting inlink + * descriptor error, including owner error, the second and third word error + * of inlink descriptor for Rx channel 0. + */ + +#define DMA_IN_DSCR_ERR_CH0_INT_RAW (BIT(5)) +#define DMA_IN_DSCR_ERR_CH0_INT_RAW_M (DMA_IN_DSCR_ERR_CH0_INT_RAW_V << DMA_IN_DSCR_ERR_CH0_INT_RAW_S) +#define DMA_IN_DSCR_ERR_CH0_INT_RAW_V 0x00000001 +#define DMA_IN_DSCR_ERR_CH0_INT_RAW_S 5 + +/* DMA_OUT_EOF_CH0_INT_RAW : R/WTC/SS; bitpos: [4]; default: 0; + * The raw interrupt bit turns to high level when the last data pointed by + * one outlink descriptor has been read from memory for Tx channel 0. + */ + +#define DMA_OUT_EOF_CH0_INT_RAW (BIT(4)) +#define DMA_OUT_EOF_CH0_INT_RAW_M (DMA_OUT_EOF_CH0_INT_RAW_V << DMA_OUT_EOF_CH0_INT_RAW_S) +#define DMA_OUT_EOF_CH0_INT_RAW_V 0x00000001 +#define DMA_OUT_EOF_CH0_INT_RAW_S 4 + +/* DMA_OUT_DONE_CH0_INT_RAW : R/WTC/SS; bitpos: [3]; default: 0; + * The raw interrupt bit turns to high level when the last data pointed by + * one outlink descriptor has been transmitted to peripherals for Tx channel + * 0. + */ + +#define DMA_OUT_DONE_CH0_INT_RAW (BIT(3)) +#define DMA_OUT_DONE_CH0_INT_RAW_M (DMA_OUT_DONE_CH0_INT_RAW_V << DMA_OUT_DONE_CH0_INT_RAW_S) +#define DMA_OUT_DONE_CH0_INT_RAW_V 0x00000001 +#define DMA_OUT_DONE_CH0_INT_RAW_S 3 + +/* DMA_IN_ERR_EOF_CH0_INT_RAW : R/WTC/SS; bitpos: [2]; default: 0; + * The raw interrupt bit turns to high level when data error is detected + * only in the case that the peripheral is UHCI0 for Rx channel 0. For other + * peripherals, this raw interrupt is reserved. + */ + +#define DMA_IN_ERR_EOF_CH0_INT_RAW (BIT(2)) +#define DMA_IN_ERR_EOF_CH0_INT_RAW_M (DMA_IN_ERR_EOF_CH0_INT_RAW_V << DMA_IN_ERR_EOF_CH0_INT_RAW_S) +#define DMA_IN_ERR_EOF_CH0_INT_RAW_V 0x00000001 +#define DMA_IN_ERR_EOF_CH0_INT_RAW_S 2 + +/* DMA_IN_SUC_EOF_CH0_INT_RAW : R/WTC/SS; bitpos: [1]; default: 0; + * The raw interrupt bit turns to high level when the last data pointed by + * one inlink descriptor has been received for Rx channel 0. For UHCI0, the + * raw interrupt bit turns to high level when the last data pointed by one + * inlink descriptor has been received and no data error is detected for Rx + * channel 0. + */ + +#define DMA_IN_SUC_EOF_CH0_INT_RAW (BIT(1)) +#define DMA_IN_SUC_EOF_CH0_INT_RAW_M (DMA_IN_SUC_EOF_CH0_INT_RAW_V << DMA_IN_SUC_EOF_CH0_INT_RAW_S) +#define DMA_IN_SUC_EOF_CH0_INT_RAW_V 0x00000001 +#define DMA_IN_SUC_EOF_CH0_INT_RAW_S 1 + +/* DMA_IN_DONE_CH0_INT_RAW : R/WTC/SS; bitpos: [0]; default: 0; + * The raw interrupt bit turns to high level when the last data pointed by + * one inlink descriptor has been received for Rx channel 0. + */ + +#define DMA_IN_DONE_CH0_INT_RAW (BIT(0)) +#define DMA_IN_DONE_CH0_INT_RAW_M (DMA_IN_DONE_CH0_INT_RAW_V << DMA_IN_DONE_CH0_INT_RAW_S) +#define DMA_IN_DONE_CH0_INT_RAW_V 0x00000001 +#define DMA_IN_DONE_CH0_INT_RAW_S 0 + +/* DMA_INT_ST_CH0_REG register + * DMA_INT_ST_CH0_REG. + */ + +#define DMA_INT_ST_CH0_REG (DR_REG_GDMA_BASE + 0x4) + +/* DMA_OUTFIFO_UDF_CH0_INT_ST : RO; bitpos: [12]; default: 0; + * The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt. + */ + +#define DMA_OUTFIFO_UDF_CH0_INT_ST (BIT(12)) +#define DMA_OUTFIFO_UDF_CH0_INT_ST_M (DMA_OUTFIFO_UDF_CH0_INT_ST_V << DMA_OUTFIFO_UDF_CH0_INT_ST_S) +#define DMA_OUTFIFO_UDF_CH0_INT_ST_V 0x00000001 +#define DMA_OUTFIFO_UDF_CH0_INT_ST_S 12 + +/* DMA_OUTFIFO_OVF_CH0_INT_ST : RO; bitpos: [11]; default: 0; + * The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt. + */ + +#define DMA_OUTFIFO_OVF_CH0_INT_ST (BIT(11)) +#define DMA_OUTFIFO_OVF_CH0_INT_ST_M (DMA_OUTFIFO_OVF_CH0_INT_ST_V << DMA_OUTFIFO_OVF_CH0_INT_ST_S) +#define DMA_OUTFIFO_OVF_CH0_INT_ST_V 0x00000001 +#define DMA_OUTFIFO_OVF_CH0_INT_ST_S 11 + +/* DMA_INFIFO_UDF_CH0_INT_ST : RO; bitpos: [10]; default: 0; + * The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt. + */ + +#define DMA_INFIFO_UDF_CH0_INT_ST (BIT(10)) +#define DMA_INFIFO_UDF_CH0_INT_ST_M (DMA_INFIFO_UDF_CH0_INT_ST_V << DMA_INFIFO_UDF_CH0_INT_ST_S) +#define DMA_INFIFO_UDF_CH0_INT_ST_V 0x00000001 +#define DMA_INFIFO_UDF_CH0_INT_ST_S 10 + +/* DMA_INFIFO_OVF_CH0_INT_ST : RO; bitpos: [9]; default: 0; + * The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt. + */ + +#define DMA_INFIFO_OVF_CH0_INT_ST (BIT(9)) +#define DMA_INFIFO_OVF_CH0_INT_ST_M (DMA_INFIFO_OVF_CH0_INT_ST_V << DMA_INFIFO_OVF_CH0_INT_ST_S) +#define DMA_INFIFO_OVF_CH0_INT_ST_V 0x00000001 +#define DMA_INFIFO_OVF_CH0_INT_ST_S 9 + +/* DMA_OUT_TOTAL_EOF_CH0_INT_ST : RO; bitpos: [8]; default: 0; + * The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt. + */ + +#define DMA_OUT_TOTAL_EOF_CH0_INT_ST (BIT(8)) +#define DMA_OUT_TOTAL_EOF_CH0_INT_ST_M (DMA_OUT_TOTAL_EOF_CH0_INT_ST_V << DMA_OUT_TOTAL_EOF_CH0_INT_ST_S) +#define DMA_OUT_TOTAL_EOF_CH0_INT_ST_V 0x00000001 +#define DMA_OUT_TOTAL_EOF_CH0_INT_ST_S 8 + +/* DMA_IN_DSCR_EMPTY_CH0_INT_ST : RO; bitpos: [7]; default: 0; + * The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt. + */ + +#define DMA_IN_DSCR_EMPTY_CH0_INT_ST (BIT(7)) +#define DMA_IN_DSCR_EMPTY_CH0_INT_ST_M (DMA_IN_DSCR_EMPTY_CH0_INT_ST_V << DMA_IN_DSCR_EMPTY_CH0_INT_ST_S) +#define DMA_IN_DSCR_EMPTY_CH0_INT_ST_V 0x00000001 +#define DMA_IN_DSCR_EMPTY_CH0_INT_ST_S 7 + +/* DMA_OUT_DSCR_ERR_CH0_INT_ST : RO; bitpos: [6]; default: 0; + * The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt. + */ + +#define DMA_OUT_DSCR_ERR_CH0_INT_ST (BIT(6)) +#define DMA_OUT_DSCR_ERR_CH0_INT_ST_M (DMA_OUT_DSCR_ERR_CH0_INT_ST_V << DMA_OUT_DSCR_ERR_CH0_INT_ST_S) +#define DMA_OUT_DSCR_ERR_CH0_INT_ST_V 0x00000001 +#define DMA_OUT_DSCR_ERR_CH0_INT_ST_S 6 + +/* DMA_IN_DSCR_ERR_CH0_INT_ST : RO; bitpos: [5]; default: 0; + * The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt. + */ + +#define DMA_IN_DSCR_ERR_CH0_INT_ST (BIT(5)) +#define DMA_IN_DSCR_ERR_CH0_INT_ST_M (DMA_IN_DSCR_ERR_CH0_INT_ST_V << DMA_IN_DSCR_ERR_CH0_INT_ST_S) +#define DMA_IN_DSCR_ERR_CH0_INT_ST_V 0x00000001 +#define DMA_IN_DSCR_ERR_CH0_INT_ST_S 5 + +/* DMA_OUT_EOF_CH0_INT_ST : RO; bitpos: [4]; default: 0; + * The raw interrupt status bit for the OUT_EOF_CH_INT interrupt. + */ + +#define DMA_OUT_EOF_CH0_INT_ST (BIT(4)) +#define DMA_OUT_EOF_CH0_INT_ST_M (DMA_OUT_EOF_CH0_INT_ST_V << DMA_OUT_EOF_CH0_INT_ST_S) +#define DMA_OUT_EOF_CH0_INT_ST_V 0x00000001 +#define DMA_OUT_EOF_CH0_INT_ST_S 4 + +/* DMA_OUT_DONE_CH0_INT_ST : RO; bitpos: [3]; default: 0; + * The raw interrupt status bit for the OUT_DONE_CH_INT interrupt. + */ + +#define DMA_OUT_DONE_CH0_INT_ST (BIT(3)) +#define DMA_OUT_DONE_CH0_INT_ST_M (DMA_OUT_DONE_CH0_INT_ST_V << DMA_OUT_DONE_CH0_INT_ST_S) +#define DMA_OUT_DONE_CH0_INT_ST_V 0x00000001 +#define DMA_OUT_DONE_CH0_INT_ST_S 3 + +/* DMA_IN_ERR_EOF_CH0_INT_ST : RO; bitpos: [2]; default: 0; + * The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt. + */ + +#define DMA_IN_ERR_EOF_CH0_INT_ST (BIT(2)) +#define DMA_IN_ERR_EOF_CH0_INT_ST_M (DMA_IN_ERR_EOF_CH0_INT_ST_V << DMA_IN_ERR_EOF_CH0_INT_ST_S) +#define DMA_IN_ERR_EOF_CH0_INT_ST_V 0x00000001 +#define DMA_IN_ERR_EOF_CH0_INT_ST_S 2 + +/* DMA_IN_SUC_EOF_CH0_INT_ST : RO; bitpos: [1]; default: 0; + * The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt. + */ + +#define DMA_IN_SUC_EOF_CH0_INT_ST (BIT(1)) +#define DMA_IN_SUC_EOF_CH0_INT_ST_M (DMA_IN_SUC_EOF_CH0_INT_ST_V << DMA_IN_SUC_EOF_CH0_INT_ST_S) +#define DMA_IN_SUC_EOF_CH0_INT_ST_V 0x00000001 +#define DMA_IN_SUC_EOF_CH0_INT_ST_S 1 + +/* DMA_IN_DONE_CH0_INT_ST : RO; bitpos: [0]; default: 0; + * The raw interrupt status bit for the IN_DONE_CH_INT interrupt. + */ + +#define DMA_IN_DONE_CH0_INT_ST (BIT(0)) +#define DMA_IN_DONE_CH0_INT_ST_M (DMA_IN_DONE_CH0_INT_ST_V << DMA_IN_DONE_CH0_INT_ST_S) +#define DMA_IN_DONE_CH0_INT_ST_V 0x00000001 +#define DMA_IN_DONE_CH0_INT_ST_S 0 + +/* DMA_INT_ENA_CH0_REG register + * DMA_INT_ENA_CH0_REG. + */ + +#define DMA_INT_ENA_CH0_REG (DR_REG_GDMA_BASE + 0x8) + +/* DMA_OUTFIFO_UDF_CH0_INT_ENA : R/W; bitpos: [12]; default: 0; + * The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt. + */ + +#define DMA_OUTFIFO_UDF_CH0_INT_ENA (BIT(12)) +#define DMA_OUTFIFO_UDF_CH0_INT_ENA_M (DMA_OUTFIFO_UDF_CH0_INT_ENA_V << DMA_OUTFIFO_UDF_CH0_INT_ENA_S) +#define DMA_OUTFIFO_UDF_CH0_INT_ENA_V 0x00000001 +#define DMA_OUTFIFO_UDF_CH0_INT_ENA_S 12 + +/* DMA_OUTFIFO_OVF_CH0_INT_ENA : R/W; bitpos: [11]; default: 0; + * The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt. + */ + +#define DMA_OUTFIFO_OVF_CH0_INT_ENA (BIT(11)) +#define DMA_OUTFIFO_OVF_CH0_INT_ENA_M (DMA_OUTFIFO_OVF_CH0_INT_ENA_V << DMA_OUTFIFO_OVF_CH0_INT_ENA_S) +#define DMA_OUTFIFO_OVF_CH0_INT_ENA_V 0x00000001 +#define DMA_OUTFIFO_OVF_CH0_INT_ENA_S 11 + +/* DMA_INFIFO_UDF_CH0_INT_ENA : R/W; bitpos: [10]; default: 0; + * The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt. + */ + +#define DMA_INFIFO_UDF_CH0_INT_ENA (BIT(10)) +#define DMA_INFIFO_UDF_CH0_INT_ENA_M (DMA_INFIFO_UDF_CH0_INT_ENA_V << DMA_INFIFO_UDF_CH0_INT_ENA_S) +#define DMA_INFIFO_UDF_CH0_INT_ENA_V 0x00000001 +#define DMA_INFIFO_UDF_CH0_INT_ENA_S 10 + +/* DMA_INFIFO_OVF_CH0_INT_ENA : R/W; bitpos: [9]; default: 0; + * The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt. + */ + +#define DMA_INFIFO_OVF_CH0_INT_ENA (BIT(9)) +#define DMA_INFIFO_OVF_CH0_INT_ENA_M (DMA_INFIFO_OVF_CH0_INT_ENA_V << DMA_INFIFO_OVF_CH0_INT_ENA_S) +#define DMA_INFIFO_OVF_CH0_INT_ENA_V 0x00000001 +#define DMA_INFIFO_OVF_CH0_INT_ENA_S 9 + +/* DMA_OUT_TOTAL_EOF_CH0_INT_ENA : R/W; bitpos: [8]; default: 0; + * The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt. + */ + +#define DMA_OUT_TOTAL_EOF_CH0_INT_ENA (BIT(8)) +#define DMA_OUT_TOTAL_EOF_CH0_INT_ENA_M (DMA_OUT_TOTAL_EOF_CH0_INT_ENA_V << DMA_OUT_TOTAL_EOF_CH0_INT_ENA_S) +#define DMA_OUT_TOTAL_EOF_CH0_INT_ENA_V 0x00000001 +#define DMA_OUT_TOTAL_EOF_CH0_INT_ENA_S 8 + +/* DMA_IN_DSCR_EMPTY_CH0_INT_ENA : R/W; bitpos: [7]; default: 0; + * The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt. + */ + +#define DMA_IN_DSCR_EMPTY_CH0_INT_ENA (BIT(7)) +#define DMA_IN_DSCR_EMPTY_CH0_INT_ENA_M (DMA_IN_DSCR_EMPTY_CH0_INT_ENA_V << DMA_IN_DSCR_EMPTY_CH0_INT_ENA_S) +#define DMA_IN_DSCR_EMPTY_CH0_INT_ENA_V 0x00000001 +#define DMA_IN_DSCR_EMPTY_CH0_INT_ENA_S 7 + +/* DMA_OUT_DSCR_ERR_CH0_INT_ENA : R/W; bitpos: [6]; default: 0; + * The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt. + */ + +#define DMA_OUT_DSCR_ERR_CH0_INT_ENA (BIT(6)) +#define DMA_OUT_DSCR_ERR_CH0_INT_ENA_M (DMA_OUT_DSCR_ERR_CH0_INT_ENA_V << DMA_OUT_DSCR_ERR_CH0_INT_ENA_S) +#define DMA_OUT_DSCR_ERR_CH0_INT_ENA_V 0x00000001 +#define DMA_OUT_DSCR_ERR_CH0_INT_ENA_S 6 + +/* DMA_IN_DSCR_ERR_CH0_INT_ENA : R/W; bitpos: [5]; default: 0; + * The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt. + */ + +#define DMA_IN_DSCR_ERR_CH0_INT_ENA (BIT(5)) +#define DMA_IN_DSCR_ERR_CH0_INT_ENA_M (DMA_IN_DSCR_ERR_CH0_INT_ENA_V << DMA_IN_DSCR_ERR_CH0_INT_ENA_S) +#define DMA_IN_DSCR_ERR_CH0_INT_ENA_V 0x00000001 +#define DMA_IN_DSCR_ERR_CH0_INT_ENA_S 5 + +/* DMA_OUT_EOF_CH0_INT_ENA : R/W; bitpos: [4]; default: 0; + * The interrupt enable bit for the OUT_EOF_CH_INT interrupt. + */ + +#define DMA_OUT_EOF_CH0_INT_ENA (BIT(4)) +#define DMA_OUT_EOF_CH0_INT_ENA_M (DMA_OUT_EOF_CH0_INT_ENA_V << DMA_OUT_EOF_CH0_INT_ENA_S) +#define DMA_OUT_EOF_CH0_INT_ENA_V 0x00000001 +#define DMA_OUT_EOF_CH0_INT_ENA_S 4 + +/* DMA_OUT_DONE_CH0_INT_ENA : R/W; bitpos: [3]; default: 0; + * The interrupt enable bit for the OUT_DONE_CH_INT interrupt. + */ + +#define DMA_OUT_DONE_CH0_INT_ENA (BIT(3)) +#define DMA_OUT_DONE_CH0_INT_ENA_M (DMA_OUT_DONE_CH0_INT_ENA_V << DMA_OUT_DONE_CH0_INT_ENA_S) +#define DMA_OUT_DONE_CH0_INT_ENA_V 0x00000001 +#define DMA_OUT_DONE_CH0_INT_ENA_S 3 + +/* DMA_IN_ERR_EOF_CH0_INT_ENA : R/W; bitpos: [2]; default: 0; + * The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt. + */ + +#define DMA_IN_ERR_EOF_CH0_INT_ENA (BIT(2)) +#define DMA_IN_ERR_EOF_CH0_INT_ENA_M (DMA_IN_ERR_EOF_CH0_INT_ENA_V << DMA_IN_ERR_EOF_CH0_INT_ENA_S) +#define DMA_IN_ERR_EOF_CH0_INT_ENA_V 0x00000001 +#define DMA_IN_ERR_EOF_CH0_INT_ENA_S 2 + +/* DMA_IN_SUC_EOF_CH0_INT_ENA : R/W; bitpos: [1]; default: 0; + * The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt. + */ + +#define DMA_IN_SUC_EOF_CH0_INT_ENA (BIT(1)) +#define DMA_IN_SUC_EOF_CH0_INT_ENA_M (DMA_IN_SUC_EOF_CH0_INT_ENA_V << DMA_IN_SUC_EOF_CH0_INT_ENA_S) +#define DMA_IN_SUC_EOF_CH0_INT_ENA_V 0x00000001 +#define DMA_IN_SUC_EOF_CH0_INT_ENA_S 1 + +/* DMA_IN_DONE_CH0_INT_ENA : R/W; bitpos: [0]; default: 0; + * The interrupt enable bit for the IN_DONE_CH_INT interrupt. + */ + +#define DMA_IN_DONE_CH0_INT_ENA (BIT(0)) +#define DMA_IN_DONE_CH0_INT_ENA_M (DMA_IN_DONE_CH0_INT_ENA_V << DMA_IN_DONE_CH0_INT_ENA_S) +#define DMA_IN_DONE_CH0_INT_ENA_V 0x00000001 +#define DMA_IN_DONE_CH0_INT_ENA_S 0 + +/* DMA_INT_CLR_CH0_REG register + * DMA_INT_CLR_CH0_REG. + */ + +#define DMA_INT_CLR_CH0_REG (DR_REG_GDMA_BASE + 0xc) + +/* DMA_OUTFIFO_UDF_CH0_INT_CLR : WT; bitpos: [12]; default: 0; + * Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt. + */ + +#define DMA_OUTFIFO_UDF_CH0_INT_CLR (BIT(12)) +#define DMA_OUTFIFO_UDF_CH0_INT_CLR_M (DMA_OUTFIFO_UDF_CH0_INT_CLR_V << DMA_OUTFIFO_UDF_CH0_INT_CLR_S) +#define DMA_OUTFIFO_UDF_CH0_INT_CLR_V 0x00000001 +#define DMA_OUTFIFO_UDF_CH0_INT_CLR_S 12 + +/* DMA_OUTFIFO_OVF_CH0_INT_CLR : WT; bitpos: [11]; default: 0; + * Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt. + */ + +#define DMA_OUTFIFO_OVF_CH0_INT_CLR (BIT(11)) +#define DMA_OUTFIFO_OVF_CH0_INT_CLR_M (DMA_OUTFIFO_OVF_CH0_INT_CLR_V << DMA_OUTFIFO_OVF_CH0_INT_CLR_S) +#define DMA_OUTFIFO_OVF_CH0_INT_CLR_V 0x00000001 +#define DMA_OUTFIFO_OVF_CH0_INT_CLR_S 11 + +/* DMA_INFIFO_UDF_CH0_INT_CLR : WT; bitpos: [10]; default: 0; + * Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt. + */ + +#define DMA_INFIFO_UDF_CH0_INT_CLR (BIT(10)) +#define DMA_INFIFO_UDF_CH0_INT_CLR_M (DMA_INFIFO_UDF_CH0_INT_CLR_V << DMA_INFIFO_UDF_CH0_INT_CLR_S) +#define DMA_INFIFO_UDF_CH0_INT_CLR_V 0x00000001 +#define DMA_INFIFO_UDF_CH0_INT_CLR_S 10 + +/* DMA_INFIFO_OVF_CH0_INT_CLR : WT; bitpos: [9]; default: 0; + * Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt. + */ + +#define DMA_INFIFO_OVF_CH0_INT_CLR (BIT(9)) +#define DMA_INFIFO_OVF_CH0_INT_CLR_M (DMA_INFIFO_OVF_CH0_INT_CLR_V << DMA_INFIFO_OVF_CH0_INT_CLR_S) +#define DMA_INFIFO_OVF_CH0_INT_CLR_V 0x00000001 +#define DMA_INFIFO_OVF_CH0_INT_CLR_S 9 + +/* DMA_OUT_TOTAL_EOF_CH0_INT_CLR : WT; bitpos: [8]; default: 0; + * Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt. + */ + +#define DMA_OUT_TOTAL_EOF_CH0_INT_CLR (BIT(8)) +#define DMA_OUT_TOTAL_EOF_CH0_INT_CLR_M (DMA_OUT_TOTAL_EOF_CH0_INT_CLR_V << DMA_OUT_TOTAL_EOF_CH0_INT_CLR_S) +#define DMA_OUT_TOTAL_EOF_CH0_INT_CLR_V 0x00000001 +#define DMA_OUT_TOTAL_EOF_CH0_INT_CLR_S 8 + +/* DMA_IN_DSCR_EMPTY_CH0_INT_CLR : WT; bitpos: [7]; default: 0; + * Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt. + */ + +#define DMA_IN_DSCR_EMPTY_CH0_INT_CLR (BIT(7)) +#define DMA_IN_DSCR_EMPTY_CH0_INT_CLR_M (DMA_IN_DSCR_EMPTY_CH0_INT_CLR_V << DMA_IN_DSCR_EMPTY_CH0_INT_CLR_S) +#define DMA_IN_DSCR_EMPTY_CH0_INT_CLR_V 0x00000001 +#define DMA_IN_DSCR_EMPTY_CH0_INT_CLR_S 7 + +/* DMA_OUT_DSCR_ERR_CH0_INT_CLR : WT; bitpos: [6]; default: 0; + * Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt. + */ + +#define DMA_OUT_DSCR_ERR_CH0_INT_CLR (BIT(6)) +#define DMA_OUT_DSCR_ERR_CH0_INT_CLR_M (DMA_OUT_DSCR_ERR_CH0_INT_CLR_V << DMA_OUT_DSCR_ERR_CH0_INT_CLR_S) +#define DMA_OUT_DSCR_ERR_CH0_INT_CLR_V 0x00000001 +#define DMA_OUT_DSCR_ERR_CH0_INT_CLR_S 6 + +/* DMA_IN_DSCR_ERR_CH0_INT_CLR : WT; bitpos: [5]; default: 0; + * Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt. + */ + +#define DMA_IN_DSCR_ERR_CH0_INT_CLR (BIT(5)) +#define DMA_IN_DSCR_ERR_CH0_INT_CLR_M (DMA_IN_DSCR_ERR_CH0_INT_CLR_V << DMA_IN_DSCR_ERR_CH0_INT_CLR_S) +#define DMA_IN_DSCR_ERR_CH0_INT_CLR_V 0x00000001 +#define DMA_IN_DSCR_ERR_CH0_INT_CLR_S 5 + +/* DMA_OUT_EOF_CH0_INT_CLR : WT; bitpos: [4]; default: 0; + * Set this bit to clear the OUT_EOF_CH_INT interrupt. + */ + +#define DMA_OUT_EOF_CH0_INT_CLR (BIT(4)) +#define DMA_OUT_EOF_CH0_INT_CLR_M (DMA_OUT_EOF_CH0_INT_CLR_V << DMA_OUT_EOF_CH0_INT_CLR_S) +#define DMA_OUT_EOF_CH0_INT_CLR_V 0x00000001 +#define DMA_OUT_EOF_CH0_INT_CLR_S 4 + +/* DMA_OUT_DONE_CH0_INT_CLR : WT; bitpos: [3]; default: 0; + * Set this bit to clear the OUT_DONE_CH_INT interrupt. + */ + +#define DMA_OUT_DONE_CH0_INT_CLR (BIT(3)) +#define DMA_OUT_DONE_CH0_INT_CLR_M (DMA_OUT_DONE_CH0_INT_CLR_V << DMA_OUT_DONE_CH0_INT_CLR_S) +#define DMA_OUT_DONE_CH0_INT_CLR_V 0x00000001 +#define DMA_OUT_DONE_CH0_INT_CLR_S 3 + +/* DMA_IN_ERR_EOF_CH0_INT_CLR : WT; bitpos: [2]; default: 0; + * Set this bit to clear the IN_ERR_EOF_CH_INT interrupt. + */ + +#define DMA_IN_ERR_EOF_CH0_INT_CLR (BIT(2)) +#define DMA_IN_ERR_EOF_CH0_INT_CLR_M (DMA_IN_ERR_EOF_CH0_INT_CLR_V << DMA_IN_ERR_EOF_CH0_INT_CLR_S) +#define DMA_IN_ERR_EOF_CH0_INT_CLR_V 0x00000001 +#define DMA_IN_ERR_EOF_CH0_INT_CLR_S 2 + +/* DMA_IN_SUC_EOF_CH0_INT_CLR : WT; bitpos: [1]; default: 0; + * Set this bit to clear the IN_SUC_EOF_CH_INT interrupt. + */ + +#define DMA_IN_SUC_EOF_CH0_INT_CLR (BIT(1)) +#define DMA_IN_SUC_EOF_CH0_INT_CLR_M (DMA_IN_SUC_EOF_CH0_INT_CLR_V << DMA_IN_SUC_EOF_CH0_INT_CLR_S) +#define DMA_IN_SUC_EOF_CH0_INT_CLR_V 0x00000001 +#define DMA_IN_SUC_EOF_CH0_INT_CLR_S 1 + +/* DMA_IN_DONE_CH0_INT_CLR : WT; bitpos: [0]; default: 0; + * Set this bit to clear the IN_DONE_CH_INT interrupt. + */ + +#define DMA_IN_DONE_CH0_INT_CLR (BIT(0)) +#define DMA_IN_DONE_CH0_INT_CLR_M (DMA_IN_DONE_CH0_INT_CLR_V << DMA_IN_DONE_CH0_INT_CLR_S) +#define DMA_IN_DONE_CH0_INT_CLR_V 0x00000001 +#define DMA_IN_DONE_CH0_INT_CLR_S 0 + +/* DMA_INT_RAW_CH1_REG register + * DMA_INT_RAW_CH1_REG. + */ + +#define DMA_INT_RAW_CH1_REG (DR_REG_GDMA_BASE + 0x10) + +/* DMA_OUTFIFO_UDF_CH1_INT_RAW : R/WTC/SS; bitpos: [12]; default: 0; + * This raw interrupt bit turns to high level when level 1 fifo of Tx + * channel 1 is underflow. + */ + +#define DMA_OUTFIFO_UDF_CH1_INT_RAW (BIT(12)) +#define DMA_OUTFIFO_UDF_CH1_INT_RAW_M (DMA_OUTFIFO_UDF_CH1_INT_RAW_V << DMA_OUTFIFO_UDF_CH1_INT_RAW_S) +#define DMA_OUTFIFO_UDF_CH1_INT_RAW_V 0x00000001 +#define DMA_OUTFIFO_UDF_CH1_INT_RAW_S 12 + +/* DMA_OUTFIFO_OVF_CH1_INT_RAW : R/WTC/SS; bitpos: [11]; default: 0; + * This raw interrupt bit turns to high level when level 1 fifo of Tx + * channel 1 is overflow. + */ + +#define DMA_OUTFIFO_OVF_CH1_INT_RAW (BIT(11)) +#define DMA_OUTFIFO_OVF_CH1_INT_RAW_M (DMA_OUTFIFO_OVF_CH1_INT_RAW_V << DMA_OUTFIFO_OVF_CH1_INT_RAW_S) +#define DMA_OUTFIFO_OVF_CH1_INT_RAW_V 0x00000001 +#define DMA_OUTFIFO_OVF_CH1_INT_RAW_S 11 + +/* DMA_INFIFO_UDF_CH1_INT_RAW : R/WTC/SS; bitpos: [10]; default: 0; + * This raw interrupt bit turns to high level when level 1 fifo of Rx + * channel 1 is underflow. + */ + +#define DMA_INFIFO_UDF_CH1_INT_RAW (BIT(10)) +#define DMA_INFIFO_UDF_CH1_INT_RAW_M (DMA_INFIFO_UDF_CH1_INT_RAW_V << DMA_INFIFO_UDF_CH1_INT_RAW_S) +#define DMA_INFIFO_UDF_CH1_INT_RAW_V 0x00000001 +#define DMA_INFIFO_UDF_CH1_INT_RAW_S 10 + +/* DMA_INFIFO_OVF_CH1_INT_RAW : R/WTC/SS; bitpos: [9]; default: 0; + * This raw interrupt bit turns to high level when level 1 fifo of Rx + * channel 1 is overflow. + */ + +#define DMA_INFIFO_OVF_CH1_INT_RAW (BIT(9)) +#define DMA_INFIFO_OVF_CH1_INT_RAW_M (DMA_INFIFO_OVF_CH1_INT_RAW_V << DMA_INFIFO_OVF_CH1_INT_RAW_S) +#define DMA_INFIFO_OVF_CH1_INT_RAW_V 0x00000001 +#define DMA_INFIFO_OVF_CH1_INT_RAW_S 9 + +/* DMA_OUT_TOTAL_EOF_CH1_INT_RAW : R/WTC/SS; bitpos: [8]; default: 0; + * The raw interrupt bit turns to high level when data corresponding a + * outlink (includes one link descriptor or few link descriptors) is + * transmitted out for Tx channel 1. + */ + +#define DMA_OUT_TOTAL_EOF_CH1_INT_RAW (BIT(8)) +#define DMA_OUT_TOTAL_EOF_CH1_INT_RAW_M (DMA_OUT_TOTAL_EOF_CH1_INT_RAW_V << DMA_OUT_TOTAL_EOF_CH1_INT_RAW_S) +#define DMA_OUT_TOTAL_EOF_CH1_INT_RAW_V 0x00000001 +#define DMA_OUT_TOTAL_EOF_CH1_INT_RAW_S 8 + +/* DMA_IN_DSCR_EMPTY_CH1_INT_RAW : R/WTC/SS; bitpos: [7]; default: 0; + * The raw interrupt bit turns to high level when Rx buffer pointed by + * inlink is full and receiving data is not completed, but there is no more + * inlink for Rx channel 1. + */ + +#define DMA_IN_DSCR_EMPTY_CH1_INT_RAW (BIT(7)) +#define DMA_IN_DSCR_EMPTY_CH1_INT_RAW_M (DMA_IN_DSCR_EMPTY_CH1_INT_RAW_V << DMA_IN_DSCR_EMPTY_CH1_INT_RAW_S) +#define DMA_IN_DSCR_EMPTY_CH1_INT_RAW_V 0x00000001 +#define DMA_IN_DSCR_EMPTY_CH1_INT_RAW_S 7 + +/* DMA_OUT_DSCR_ERR_CH1_INT_RAW : R/WTC/SS; bitpos: [6]; default: 0; + * The raw interrupt bit turns to high level when detecting outlink + * descriptor error, including owner error, the second and third word error + * of outlink descriptor for Tx channel 1. + */ + +#define DMA_OUT_DSCR_ERR_CH1_INT_RAW (BIT(6)) +#define DMA_OUT_DSCR_ERR_CH1_INT_RAW_M (DMA_OUT_DSCR_ERR_CH1_INT_RAW_V << DMA_OUT_DSCR_ERR_CH1_INT_RAW_S) +#define DMA_OUT_DSCR_ERR_CH1_INT_RAW_V 0x00000001 +#define DMA_OUT_DSCR_ERR_CH1_INT_RAW_S 6 + +/* DMA_IN_DSCR_ERR_CH1_INT_RAW : R/WTC/SS; bitpos: [5]; default: 0; + * The raw interrupt bit turns to high level when detecting inlink + * descriptor error, including owner error, the second and third word error + * of inlink descriptor for Rx channel 1. + */ + +#define DMA_IN_DSCR_ERR_CH1_INT_RAW (BIT(5)) +#define DMA_IN_DSCR_ERR_CH1_INT_RAW_M (DMA_IN_DSCR_ERR_CH1_INT_RAW_V << DMA_IN_DSCR_ERR_CH1_INT_RAW_S) +#define DMA_IN_DSCR_ERR_CH1_INT_RAW_V 0x00000001 +#define DMA_IN_DSCR_ERR_CH1_INT_RAW_S 5 + +/* DMA_OUT_EOF_CH1_INT_RAW : R/WTC/SS; bitpos: [4]; default: 0; + * The raw interrupt bit turns to high level when the last data pointed by + * one outlink descriptor has been read from memory for Tx channel 1. + */ + +#define DMA_OUT_EOF_CH1_INT_RAW (BIT(4)) +#define DMA_OUT_EOF_CH1_INT_RAW_M (DMA_OUT_EOF_CH1_INT_RAW_V << DMA_OUT_EOF_CH1_INT_RAW_S) +#define DMA_OUT_EOF_CH1_INT_RAW_V 0x00000001 +#define DMA_OUT_EOF_CH1_INT_RAW_S 4 + +/* DMA_OUT_DONE_CH1_INT_RAW : R/WTC/SS; bitpos: [3]; default: 0; + * The raw interrupt bit turns to high level when the last data pointed by + * one outlink descriptor has been transmitted to peripherals for Tx channel + * 1. + */ + +#define DMA_OUT_DONE_CH1_INT_RAW (BIT(3)) +#define DMA_OUT_DONE_CH1_INT_RAW_M (DMA_OUT_DONE_CH1_INT_RAW_V << DMA_OUT_DONE_CH1_INT_RAW_S) +#define DMA_OUT_DONE_CH1_INT_RAW_V 0x00000001 +#define DMA_OUT_DONE_CH1_INT_RAW_S 3 + +/* DMA_IN_ERR_EOF_CH1_INT_RAW : R/WTC/SS; bitpos: [2]; default: 0; + * The raw interrupt bit turns to high level when data error is detected + * only in the case that the peripheral is UHCI0 for Rx channel 1. For other + * peripherals, this raw interrupt is reserved. + */ + +#define DMA_IN_ERR_EOF_CH1_INT_RAW (BIT(2)) +#define DMA_IN_ERR_EOF_CH1_INT_RAW_M (DMA_IN_ERR_EOF_CH1_INT_RAW_V << DMA_IN_ERR_EOF_CH1_INT_RAW_S) +#define DMA_IN_ERR_EOF_CH1_INT_RAW_V 0x00000001 +#define DMA_IN_ERR_EOF_CH1_INT_RAW_S 2 + +/* DMA_IN_SUC_EOF_CH1_INT_RAW : R/WTC/SS; bitpos: [1]; default: 0; + * The raw interrupt bit turns to high level when the last data pointed by + * one inlink descriptor has been received for Rx channel 1. For UHCI0, the + * raw interrupt bit turns to high level when the last data pointed by one + * inlink descriptor has been received and no data error is detected for Rx + * channel 1. + */ + +#define DMA_IN_SUC_EOF_CH1_INT_RAW (BIT(1)) +#define DMA_IN_SUC_EOF_CH1_INT_RAW_M (DMA_IN_SUC_EOF_CH1_INT_RAW_V << DMA_IN_SUC_EOF_CH1_INT_RAW_S) +#define DMA_IN_SUC_EOF_CH1_INT_RAW_V 0x00000001 +#define DMA_IN_SUC_EOF_CH1_INT_RAW_S 1 + +/* DMA_IN_DONE_CH1_INT_RAW : R/WTC/SS; bitpos: [0]; default: 0; + * The raw interrupt bit turns to high level when the last data pointed by + * one inlink descriptor has been received for Rx channel 1. + */ + +#define DMA_IN_DONE_CH1_INT_RAW (BIT(0)) +#define DMA_IN_DONE_CH1_INT_RAW_M (DMA_IN_DONE_CH1_INT_RAW_V << DMA_IN_DONE_CH1_INT_RAW_S) +#define DMA_IN_DONE_CH1_INT_RAW_V 0x00000001 +#define DMA_IN_DONE_CH1_INT_RAW_S 0 + +/* DMA_INT_ST_CH1_REG register + * DMA_INT_ST_CH1_REG. + */ + +#define DMA_INT_ST_CH1_REG (DR_REG_GDMA_BASE + 0x14) + +/* DMA_OUTFIFO_UDF_CH1_INT_ST : RO; bitpos: [12]; default: 0; + * The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt. + */ + +#define DMA_OUTFIFO_UDF_CH1_INT_ST (BIT(12)) +#define DMA_OUTFIFO_UDF_CH1_INT_ST_M (DMA_OUTFIFO_UDF_CH1_INT_ST_V << DMA_OUTFIFO_UDF_CH1_INT_ST_S) +#define DMA_OUTFIFO_UDF_CH1_INT_ST_V 0x00000001 +#define DMA_OUTFIFO_UDF_CH1_INT_ST_S 12 + +/* DMA_OUTFIFO_OVF_CH1_INT_ST : RO; bitpos: [11]; default: 0; + * The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt. + */ + +#define DMA_OUTFIFO_OVF_CH1_INT_ST (BIT(11)) +#define DMA_OUTFIFO_OVF_CH1_INT_ST_M (DMA_OUTFIFO_OVF_CH1_INT_ST_V << DMA_OUTFIFO_OVF_CH1_INT_ST_S) +#define DMA_OUTFIFO_OVF_CH1_INT_ST_V 0x00000001 +#define DMA_OUTFIFO_OVF_CH1_INT_ST_S 11 + +/* DMA_INFIFO_UDF_CH1_INT_ST : RO; bitpos: [10]; default: 0; + * The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt. + */ + +#define DMA_INFIFO_UDF_CH1_INT_ST (BIT(10)) +#define DMA_INFIFO_UDF_CH1_INT_ST_M (DMA_INFIFO_UDF_CH1_INT_ST_V << DMA_INFIFO_UDF_CH1_INT_ST_S) +#define DMA_INFIFO_UDF_CH1_INT_ST_V 0x00000001 +#define DMA_INFIFO_UDF_CH1_INT_ST_S 10 + +/* DMA_INFIFO_OVF_CH1_INT_ST : RO; bitpos: [9]; default: 0; + * The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt. + */ + +#define DMA_INFIFO_OVF_CH1_INT_ST (BIT(9)) +#define DMA_INFIFO_OVF_CH1_INT_ST_M (DMA_INFIFO_OVF_CH1_INT_ST_V << DMA_INFIFO_OVF_CH1_INT_ST_S) +#define DMA_INFIFO_OVF_CH1_INT_ST_V 0x00000001 +#define DMA_INFIFO_OVF_CH1_INT_ST_S 9 + +/* DMA_OUT_TOTAL_EOF_CH1_INT_ST : RO; bitpos: [8]; default: 0; + * The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt. + */ + +#define DMA_OUT_TOTAL_EOF_CH1_INT_ST (BIT(8)) +#define DMA_OUT_TOTAL_EOF_CH1_INT_ST_M (DMA_OUT_TOTAL_EOF_CH1_INT_ST_V << DMA_OUT_TOTAL_EOF_CH1_INT_ST_S) +#define DMA_OUT_TOTAL_EOF_CH1_INT_ST_V 0x00000001 +#define DMA_OUT_TOTAL_EOF_CH1_INT_ST_S 8 + +/* DMA_IN_DSCR_EMPTY_CH1_INT_ST : RO; bitpos: [7]; default: 0; + * The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt. + */ + +#define DMA_IN_DSCR_EMPTY_CH1_INT_ST (BIT(7)) +#define DMA_IN_DSCR_EMPTY_CH1_INT_ST_M (DMA_IN_DSCR_EMPTY_CH1_INT_ST_V << DMA_IN_DSCR_EMPTY_CH1_INT_ST_S) +#define DMA_IN_DSCR_EMPTY_CH1_INT_ST_V 0x00000001 +#define DMA_IN_DSCR_EMPTY_CH1_INT_ST_S 7 + +/* DMA_OUT_DSCR_ERR_CH1_INT_ST : RO; bitpos: [6]; default: 0; + * The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt. + */ + +#define DMA_OUT_DSCR_ERR_CH1_INT_ST (BIT(6)) +#define DMA_OUT_DSCR_ERR_CH1_INT_ST_M (DMA_OUT_DSCR_ERR_CH1_INT_ST_V << DMA_OUT_DSCR_ERR_CH1_INT_ST_S) +#define DMA_OUT_DSCR_ERR_CH1_INT_ST_V 0x00000001 +#define DMA_OUT_DSCR_ERR_CH1_INT_ST_S 6 + +/* DMA_IN_DSCR_ERR_CH1_INT_ST : RO; bitpos: [5]; default: 0; + * The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt. + */ + +#define DMA_IN_DSCR_ERR_CH1_INT_ST (BIT(5)) +#define DMA_IN_DSCR_ERR_CH1_INT_ST_M (DMA_IN_DSCR_ERR_CH1_INT_ST_V << DMA_IN_DSCR_ERR_CH1_INT_ST_S) +#define DMA_IN_DSCR_ERR_CH1_INT_ST_V 0x00000001 +#define DMA_IN_DSCR_ERR_CH1_INT_ST_S 5 + +/* DMA_OUT_EOF_CH1_INT_ST : RO; bitpos: [4]; default: 0; + * The raw interrupt status bit for the OUT_EOF_CH_INT interrupt. + */ + +#define DMA_OUT_EOF_CH1_INT_ST (BIT(4)) +#define DMA_OUT_EOF_CH1_INT_ST_M (DMA_OUT_EOF_CH1_INT_ST_V << DMA_OUT_EOF_CH1_INT_ST_S) +#define DMA_OUT_EOF_CH1_INT_ST_V 0x00000001 +#define DMA_OUT_EOF_CH1_INT_ST_S 4 + +/* DMA_OUT_DONE_CH1_INT_ST : RO; bitpos: [3]; default: 0; + * The raw interrupt status bit for the OUT_DONE_CH_INT interrupt. + */ + +#define DMA_OUT_DONE_CH1_INT_ST (BIT(3)) +#define DMA_OUT_DONE_CH1_INT_ST_M (DMA_OUT_DONE_CH1_INT_ST_V << DMA_OUT_DONE_CH1_INT_ST_S) +#define DMA_OUT_DONE_CH1_INT_ST_V 0x00000001 +#define DMA_OUT_DONE_CH1_INT_ST_S 3 + +/* DMA_IN_ERR_EOF_CH1_INT_ST : RO; bitpos: [2]; default: 0; + * The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt. + */ + +#define DMA_IN_ERR_EOF_CH1_INT_ST (BIT(2)) +#define DMA_IN_ERR_EOF_CH1_INT_ST_M (DMA_IN_ERR_EOF_CH1_INT_ST_V << DMA_IN_ERR_EOF_CH1_INT_ST_S) +#define DMA_IN_ERR_EOF_CH1_INT_ST_V 0x00000001 +#define DMA_IN_ERR_EOF_CH1_INT_ST_S 2 + +/* DMA_IN_SUC_EOF_CH1_INT_ST : RO; bitpos: [1]; default: 0; + * The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt. + */ + +#define DMA_IN_SUC_EOF_CH1_INT_ST (BIT(1)) +#define DMA_IN_SUC_EOF_CH1_INT_ST_M (DMA_IN_SUC_EOF_CH1_INT_ST_V << DMA_IN_SUC_EOF_CH1_INT_ST_S) +#define DMA_IN_SUC_EOF_CH1_INT_ST_V 0x00000001 +#define DMA_IN_SUC_EOF_CH1_INT_ST_S 1 + +/* DMA_IN_DONE_CH1_INT_ST : RO; bitpos: [0]; default: 0; + * The raw interrupt status bit for the IN_DONE_CH_INT interrupt. + */ + +#define DMA_IN_DONE_CH1_INT_ST (BIT(0)) +#define DMA_IN_DONE_CH1_INT_ST_M (DMA_IN_DONE_CH1_INT_ST_V << DMA_IN_DONE_CH1_INT_ST_S) +#define DMA_IN_DONE_CH1_INT_ST_V 0x00000001 +#define DMA_IN_DONE_CH1_INT_ST_S 0 + +/* DMA_INT_ENA_CH1_REG register + * DMA_INT_ENA_CH1_REG. + */ + +#define DMA_INT_ENA_CH1_REG (DR_REG_GDMA_BASE + 0x18) + +/* DMA_OUTFIFO_UDF_CH1_INT_ENA : R/W; bitpos: [12]; default: 0; + * The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt. + */ + +#define DMA_OUTFIFO_UDF_CH1_INT_ENA (BIT(12)) +#define DMA_OUTFIFO_UDF_CH1_INT_ENA_M (DMA_OUTFIFO_UDF_CH1_INT_ENA_V << DMA_OUTFIFO_UDF_CH1_INT_ENA_S) +#define DMA_OUTFIFO_UDF_CH1_INT_ENA_V 0x00000001 +#define DMA_OUTFIFO_UDF_CH1_INT_ENA_S 12 + +/* DMA_OUTFIFO_OVF_CH1_INT_ENA : R/W; bitpos: [11]; default: 0; + * The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt. + */ + +#define DMA_OUTFIFO_OVF_CH1_INT_ENA (BIT(11)) +#define DMA_OUTFIFO_OVF_CH1_INT_ENA_M (DMA_OUTFIFO_OVF_CH1_INT_ENA_V << DMA_OUTFIFO_OVF_CH1_INT_ENA_S) +#define DMA_OUTFIFO_OVF_CH1_INT_ENA_V 0x00000001 +#define DMA_OUTFIFO_OVF_CH1_INT_ENA_S 11 + +/* DMA_INFIFO_UDF_CH1_INT_ENA : R/W; bitpos: [10]; default: 0; + * The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt. + */ + +#define DMA_INFIFO_UDF_CH1_INT_ENA (BIT(10)) +#define DMA_INFIFO_UDF_CH1_INT_ENA_M (DMA_INFIFO_UDF_CH1_INT_ENA_V << DMA_INFIFO_UDF_CH1_INT_ENA_S) +#define DMA_INFIFO_UDF_CH1_INT_ENA_V 0x00000001 +#define DMA_INFIFO_UDF_CH1_INT_ENA_S 10 + +/* DMA_INFIFO_OVF_CH1_INT_ENA : R/W; bitpos: [9]; default: 0; + * The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt. + */ + +#define DMA_INFIFO_OVF_CH1_INT_ENA (BIT(9)) +#define DMA_INFIFO_OVF_CH1_INT_ENA_M (DMA_INFIFO_OVF_CH1_INT_ENA_V << DMA_INFIFO_OVF_CH1_INT_ENA_S) +#define DMA_INFIFO_OVF_CH1_INT_ENA_V 0x00000001 +#define DMA_INFIFO_OVF_CH1_INT_ENA_S 9 + +/* DMA_OUT_TOTAL_EOF_CH1_INT_ENA : R/W; bitpos: [8]; default: 0; + * The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt. + */ + +#define DMA_OUT_TOTAL_EOF_CH1_INT_ENA (BIT(8)) +#define DMA_OUT_TOTAL_EOF_CH1_INT_ENA_M (DMA_OUT_TOTAL_EOF_CH1_INT_ENA_V << DMA_OUT_TOTAL_EOF_CH1_INT_ENA_S) +#define DMA_OUT_TOTAL_EOF_CH1_INT_ENA_V 0x00000001 +#define DMA_OUT_TOTAL_EOF_CH1_INT_ENA_S 8 + +/* DMA_IN_DSCR_EMPTY_CH1_INT_ENA : R/W; bitpos: [7]; default: 0; + * The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt. + */ + +#define DMA_IN_DSCR_EMPTY_CH1_INT_ENA (BIT(7)) +#define DMA_IN_DSCR_EMPTY_CH1_INT_ENA_M (DMA_IN_DSCR_EMPTY_CH1_INT_ENA_V << DMA_IN_DSCR_EMPTY_CH1_INT_ENA_S) +#define DMA_IN_DSCR_EMPTY_CH1_INT_ENA_V 0x00000001 +#define DMA_IN_DSCR_EMPTY_CH1_INT_ENA_S 7 + +/* DMA_OUT_DSCR_ERR_CH1_INT_ENA : R/W; bitpos: [6]; default: 0; + * The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt. + */ + +#define DMA_OUT_DSCR_ERR_CH1_INT_ENA (BIT(6)) +#define DMA_OUT_DSCR_ERR_CH1_INT_ENA_M (DMA_OUT_DSCR_ERR_CH1_INT_ENA_V << DMA_OUT_DSCR_ERR_CH1_INT_ENA_S) +#define DMA_OUT_DSCR_ERR_CH1_INT_ENA_V 0x00000001 +#define DMA_OUT_DSCR_ERR_CH1_INT_ENA_S 6 + +/* DMA_IN_DSCR_ERR_CH1_INT_ENA : R/W; bitpos: [5]; default: 0; + * The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt. + */ + +#define DMA_IN_DSCR_ERR_CH1_INT_ENA (BIT(5)) +#define DMA_IN_DSCR_ERR_CH1_INT_ENA_M (DMA_IN_DSCR_ERR_CH1_INT_ENA_V << DMA_IN_DSCR_ERR_CH1_INT_ENA_S) +#define DMA_IN_DSCR_ERR_CH1_INT_ENA_V 0x00000001 +#define DMA_IN_DSCR_ERR_CH1_INT_ENA_S 5 + +/* DMA_OUT_EOF_CH1_INT_ENA : R/W; bitpos: [4]; default: 0; + * The interrupt enable bit for the OUT_EOF_CH_INT interrupt. + */ + +#define DMA_OUT_EOF_CH1_INT_ENA (BIT(4)) +#define DMA_OUT_EOF_CH1_INT_ENA_M (DMA_OUT_EOF_CH1_INT_ENA_V << DMA_OUT_EOF_CH1_INT_ENA_S) +#define DMA_OUT_EOF_CH1_INT_ENA_V 0x00000001 +#define DMA_OUT_EOF_CH1_INT_ENA_S 4 + +/* DMA_OUT_DONE_CH1_INT_ENA : R/W; bitpos: [3]; default: 0; + * The interrupt enable bit for the OUT_DONE_CH_INT interrupt. + */ + +#define DMA_OUT_DONE_CH1_INT_ENA (BIT(3)) +#define DMA_OUT_DONE_CH1_INT_ENA_M (DMA_OUT_DONE_CH1_INT_ENA_V << DMA_OUT_DONE_CH1_INT_ENA_S) +#define DMA_OUT_DONE_CH1_INT_ENA_V 0x00000001 +#define DMA_OUT_DONE_CH1_INT_ENA_S 3 + +/* DMA_IN_ERR_EOF_CH1_INT_ENA : R/W; bitpos: [2]; default: 0; + * The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt. + */ + +#define DMA_IN_ERR_EOF_CH1_INT_ENA (BIT(2)) +#define DMA_IN_ERR_EOF_CH1_INT_ENA_M (DMA_IN_ERR_EOF_CH1_INT_ENA_V << DMA_IN_ERR_EOF_CH1_INT_ENA_S) +#define DMA_IN_ERR_EOF_CH1_INT_ENA_V 0x00000001 +#define DMA_IN_ERR_EOF_CH1_INT_ENA_S 2 + +/* DMA_IN_SUC_EOF_CH1_INT_ENA : R/W; bitpos: [1]; default: 0; + * The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt. + */ + +#define DMA_IN_SUC_EOF_CH1_INT_ENA (BIT(1)) +#define DMA_IN_SUC_EOF_CH1_INT_ENA_M (DMA_IN_SUC_EOF_CH1_INT_ENA_V << DMA_IN_SUC_EOF_CH1_INT_ENA_S) +#define DMA_IN_SUC_EOF_CH1_INT_ENA_V 0x00000001 +#define DMA_IN_SUC_EOF_CH1_INT_ENA_S 1 + +/* DMA_IN_DONE_CH1_INT_ENA : R/W; bitpos: [0]; default: 0; + * The interrupt enable bit for the IN_DONE_CH_INT interrupt. + */ + +#define DMA_IN_DONE_CH1_INT_ENA (BIT(0)) +#define DMA_IN_DONE_CH1_INT_ENA_M (DMA_IN_DONE_CH1_INT_ENA_V << DMA_IN_DONE_CH1_INT_ENA_S) +#define DMA_IN_DONE_CH1_INT_ENA_V 0x00000001 +#define DMA_IN_DONE_CH1_INT_ENA_S 0 + +/* DMA_INT_CLR_CH1_REG register + * DMA_INT_CLR_CH1_REG. + */ + +#define DMA_INT_CLR_CH1_REG (DR_REG_GDMA_BASE + 0x1c) + +/* DMA_OUTFIFO_UDF_CH1_INT_CLR : WT; bitpos: [12]; default: 0; + * Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt. + */ + +#define DMA_OUTFIFO_UDF_CH1_INT_CLR (BIT(12)) +#define DMA_OUTFIFO_UDF_CH1_INT_CLR_M (DMA_OUTFIFO_UDF_CH1_INT_CLR_V << DMA_OUTFIFO_UDF_CH1_INT_CLR_S) +#define DMA_OUTFIFO_UDF_CH1_INT_CLR_V 0x00000001 +#define DMA_OUTFIFO_UDF_CH1_INT_CLR_S 12 + +/* DMA_OUTFIFO_OVF_CH1_INT_CLR : WT; bitpos: [11]; default: 0; + * Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt. + */ + +#define DMA_OUTFIFO_OVF_CH1_INT_CLR (BIT(11)) +#define DMA_OUTFIFO_OVF_CH1_INT_CLR_M (DMA_OUTFIFO_OVF_CH1_INT_CLR_V << DMA_OUTFIFO_OVF_CH1_INT_CLR_S) +#define DMA_OUTFIFO_OVF_CH1_INT_CLR_V 0x00000001 +#define DMA_OUTFIFO_OVF_CH1_INT_CLR_S 11 + +/* DMA_INFIFO_UDF_CH1_INT_CLR : WT; bitpos: [10]; default: 0; + * Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt. + */ + +#define DMA_INFIFO_UDF_CH1_INT_CLR (BIT(10)) +#define DMA_INFIFO_UDF_CH1_INT_CLR_M (DMA_INFIFO_UDF_CH1_INT_CLR_V << DMA_INFIFO_UDF_CH1_INT_CLR_S) +#define DMA_INFIFO_UDF_CH1_INT_CLR_V 0x00000001 +#define DMA_INFIFO_UDF_CH1_INT_CLR_S 10 + +/* DMA_INFIFO_OVF_CH1_INT_CLR : WT; bitpos: [9]; default: 0; + * Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt. + */ + +#define DMA_INFIFO_OVF_CH1_INT_CLR (BIT(9)) +#define DMA_INFIFO_OVF_CH1_INT_CLR_M (DMA_INFIFO_OVF_CH1_INT_CLR_V << DMA_INFIFO_OVF_CH1_INT_CLR_S) +#define DMA_INFIFO_OVF_CH1_INT_CLR_V 0x00000001 +#define DMA_INFIFO_OVF_CH1_INT_CLR_S 9 + +/* DMA_OUT_TOTAL_EOF_CH1_INT_CLR : WT; bitpos: [8]; default: 0; + * Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt. + */ + +#define DMA_OUT_TOTAL_EOF_CH1_INT_CLR (BIT(8)) +#define DMA_OUT_TOTAL_EOF_CH1_INT_CLR_M (DMA_OUT_TOTAL_EOF_CH1_INT_CLR_V << DMA_OUT_TOTAL_EOF_CH1_INT_CLR_S) +#define DMA_OUT_TOTAL_EOF_CH1_INT_CLR_V 0x00000001 +#define DMA_OUT_TOTAL_EOF_CH1_INT_CLR_S 8 + +/* DMA_IN_DSCR_EMPTY_CH1_INT_CLR : WT; bitpos: [7]; default: 0; + * Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt. + */ + +#define DMA_IN_DSCR_EMPTY_CH1_INT_CLR (BIT(7)) +#define DMA_IN_DSCR_EMPTY_CH1_INT_CLR_M (DMA_IN_DSCR_EMPTY_CH1_INT_CLR_V << DMA_IN_DSCR_EMPTY_CH1_INT_CLR_S) +#define DMA_IN_DSCR_EMPTY_CH1_INT_CLR_V 0x00000001 +#define DMA_IN_DSCR_EMPTY_CH1_INT_CLR_S 7 + +/* DMA_OUT_DSCR_ERR_CH1_INT_CLR : WT; bitpos: [6]; default: 0; + * Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt. + */ + +#define DMA_OUT_DSCR_ERR_CH1_INT_CLR (BIT(6)) +#define DMA_OUT_DSCR_ERR_CH1_INT_CLR_M (DMA_OUT_DSCR_ERR_CH1_INT_CLR_V << DMA_OUT_DSCR_ERR_CH1_INT_CLR_S) +#define DMA_OUT_DSCR_ERR_CH1_INT_CLR_V 0x00000001 +#define DMA_OUT_DSCR_ERR_CH1_INT_CLR_S 6 + +/* DMA_IN_DSCR_ERR_CH1_INT_CLR : WT; bitpos: [5]; default: 0; + * Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt. + */ + +#define DMA_IN_DSCR_ERR_CH1_INT_CLR (BIT(5)) +#define DMA_IN_DSCR_ERR_CH1_INT_CLR_M (DMA_IN_DSCR_ERR_CH1_INT_CLR_V << DMA_IN_DSCR_ERR_CH1_INT_CLR_S) +#define DMA_IN_DSCR_ERR_CH1_INT_CLR_V 0x00000001 +#define DMA_IN_DSCR_ERR_CH1_INT_CLR_S 5 + +/* DMA_OUT_EOF_CH1_INT_CLR : WT; bitpos: [4]; default: 0; + * Set this bit to clear the OUT_EOF_CH_INT interrupt. + */ + +#define DMA_OUT_EOF_CH1_INT_CLR (BIT(4)) +#define DMA_OUT_EOF_CH1_INT_CLR_M (DMA_OUT_EOF_CH1_INT_CLR_V << DMA_OUT_EOF_CH1_INT_CLR_S) +#define DMA_OUT_EOF_CH1_INT_CLR_V 0x00000001 +#define DMA_OUT_EOF_CH1_INT_CLR_S 4 + +/* DMA_OUT_DONE_CH1_INT_CLR : WT; bitpos: [3]; default: 0; + * Set this bit to clear the OUT_DONE_CH_INT interrupt. + */ + +#define DMA_OUT_DONE_CH1_INT_CLR (BIT(3)) +#define DMA_OUT_DONE_CH1_INT_CLR_M (DMA_OUT_DONE_CH1_INT_CLR_V << DMA_OUT_DONE_CH1_INT_CLR_S) +#define DMA_OUT_DONE_CH1_INT_CLR_V 0x00000001 +#define DMA_OUT_DONE_CH1_INT_CLR_S 3 + +/* DMA_IN_ERR_EOF_CH1_INT_CLR : WT; bitpos: [2]; default: 0; + * Set this bit to clear the IN_ERR_EOF_CH_INT interrupt. + */ + +#define DMA_IN_ERR_EOF_CH1_INT_CLR (BIT(2)) +#define DMA_IN_ERR_EOF_CH1_INT_CLR_M (DMA_IN_ERR_EOF_CH1_INT_CLR_V << DMA_IN_ERR_EOF_CH1_INT_CLR_S) +#define DMA_IN_ERR_EOF_CH1_INT_CLR_V 0x00000001 +#define DMA_IN_ERR_EOF_CH1_INT_CLR_S 2 + +/* DMA_IN_SUC_EOF_CH1_INT_CLR : WT; bitpos: [1]; default: 0; + * Set this bit to clear the IN_SUC_EOF_CH_INT interrupt. + */ + +#define DMA_IN_SUC_EOF_CH1_INT_CLR (BIT(1)) +#define DMA_IN_SUC_EOF_CH1_INT_CLR_M (DMA_IN_SUC_EOF_CH1_INT_CLR_V << DMA_IN_SUC_EOF_CH1_INT_CLR_S) +#define DMA_IN_SUC_EOF_CH1_INT_CLR_V 0x00000001 +#define DMA_IN_SUC_EOF_CH1_INT_CLR_S 1 + +/* DMA_IN_DONE_CH1_INT_CLR : WT; bitpos: [0]; default: 0; + * Set this bit to clear the IN_DONE_CH_INT interrupt. + */ + +#define DMA_IN_DONE_CH1_INT_CLR (BIT(0)) +#define DMA_IN_DONE_CH1_INT_CLR_M (DMA_IN_DONE_CH1_INT_CLR_V << DMA_IN_DONE_CH1_INT_CLR_S) +#define DMA_IN_DONE_CH1_INT_CLR_V 0x00000001 +#define DMA_IN_DONE_CH1_INT_CLR_S 0 + +/* DMA_INT_RAW_CH2_REG register + * DMA_INT_RAW_CH2_REG. + */ + +#define DMA_INT_RAW_CH2_REG (DR_REG_GDMA_BASE + 0x20) + +/* DMA_OUTFIFO_UDF_CH2_INT_RAW : R/WTC/SS; bitpos: [12]; default: 0; + * This raw interrupt bit turns to high level when level 1 fifo of Tx + * channel 2 is underflow. + */ + +#define DMA_OUTFIFO_UDF_CH2_INT_RAW (BIT(12)) +#define DMA_OUTFIFO_UDF_CH2_INT_RAW_M (DMA_OUTFIFO_UDF_CH2_INT_RAW_V << DMA_OUTFIFO_UDF_CH2_INT_RAW_S) +#define DMA_OUTFIFO_UDF_CH2_INT_RAW_V 0x00000001 +#define DMA_OUTFIFO_UDF_CH2_INT_RAW_S 12 + +/* DMA_OUTFIFO_OVF_CH2_INT_RAW : R/WTC/SS; bitpos: [11]; default: 0; + * This raw interrupt bit turns to high level when level 1 fifo of Tx + * channel 2 is overflow. + */ + +#define DMA_OUTFIFO_OVF_CH2_INT_RAW (BIT(11)) +#define DMA_OUTFIFO_OVF_CH2_INT_RAW_M (DMA_OUTFIFO_OVF_CH2_INT_RAW_V << DMA_OUTFIFO_OVF_CH2_INT_RAW_S) +#define DMA_OUTFIFO_OVF_CH2_INT_RAW_V 0x00000001 +#define DMA_OUTFIFO_OVF_CH2_INT_RAW_S 11 + +/* DMA_INFIFO_UDF_CH2_INT_RAW : R/WTC/SS; bitpos: [10]; default: 0; + * This raw interrupt bit turns to high level when level 1 fifo of Rx + * channel 2 is underflow. + */ + +#define DMA_INFIFO_UDF_CH2_INT_RAW (BIT(10)) +#define DMA_INFIFO_UDF_CH2_INT_RAW_M (DMA_INFIFO_UDF_CH2_INT_RAW_V << DMA_INFIFO_UDF_CH2_INT_RAW_S) +#define DMA_INFIFO_UDF_CH2_INT_RAW_V 0x00000001 +#define DMA_INFIFO_UDF_CH2_INT_RAW_S 10 + +/* DMA_INFIFO_OVF_CH2_INT_RAW : R/WTC/SS; bitpos: [9]; default: 0; + * This raw interrupt bit turns to high level when level 1 fifo of Rx + * channel 2 is overflow. + */ + +#define DMA_INFIFO_OVF_CH2_INT_RAW (BIT(9)) +#define DMA_INFIFO_OVF_CH2_INT_RAW_M (DMA_INFIFO_OVF_CH2_INT_RAW_V << DMA_INFIFO_OVF_CH2_INT_RAW_S) +#define DMA_INFIFO_OVF_CH2_INT_RAW_V 0x00000001 +#define DMA_INFIFO_OVF_CH2_INT_RAW_S 9 + +/* DMA_OUT_TOTAL_EOF_CH2_INT_RAW : R/WTC/SS; bitpos: [8]; default: 0; + * The raw interrupt bit turns to high level when data corresponding a + * outlink (includes one link descriptor or few link descriptors) is + * transmitted out for Tx channel 2. + */ + +#define DMA_OUT_TOTAL_EOF_CH2_INT_RAW (BIT(8)) +#define DMA_OUT_TOTAL_EOF_CH2_INT_RAW_M (DMA_OUT_TOTAL_EOF_CH2_INT_RAW_V << DMA_OUT_TOTAL_EOF_CH2_INT_RAW_S) +#define DMA_OUT_TOTAL_EOF_CH2_INT_RAW_V 0x00000001 +#define DMA_OUT_TOTAL_EOF_CH2_INT_RAW_S 8 + +/* DMA_IN_DSCR_EMPTY_CH2_INT_RAW : R/WTC/SS; bitpos: [7]; default: 0; + * The raw interrupt bit turns to high level when Rx buffer pointed by + * inlink is full and receiving data is not completed, but there is no more + * inlink for Rx channel 2. + */ + +#define DMA_IN_DSCR_EMPTY_CH2_INT_RAW (BIT(7)) +#define DMA_IN_DSCR_EMPTY_CH2_INT_RAW_M (DMA_IN_DSCR_EMPTY_CH2_INT_RAW_V << DMA_IN_DSCR_EMPTY_CH2_INT_RAW_S) +#define DMA_IN_DSCR_EMPTY_CH2_INT_RAW_V 0x00000001 +#define DMA_IN_DSCR_EMPTY_CH2_INT_RAW_S 7 + +/* DMA_OUT_DSCR_ERR_CH2_INT_RAW : R/WTC/SS; bitpos: [6]; default: 0; + * The raw interrupt bit turns to high level when detecting outlink + * descriptor error, including owner error, the second and third word error + * of outlink descriptor for Tx channel 2. + */ + +#define DMA_OUT_DSCR_ERR_CH2_INT_RAW (BIT(6)) +#define DMA_OUT_DSCR_ERR_CH2_INT_RAW_M (DMA_OUT_DSCR_ERR_CH2_INT_RAW_V << DMA_OUT_DSCR_ERR_CH2_INT_RAW_S) +#define DMA_OUT_DSCR_ERR_CH2_INT_RAW_V 0x00000001 +#define DMA_OUT_DSCR_ERR_CH2_INT_RAW_S 6 + +/* DMA_IN_DSCR_ERR_CH2_INT_RAW : R/WTC/SS; bitpos: [5]; default: 0; + * The raw interrupt bit turns to high level when detecting inlink + * descriptor error, including owner error, the second and third word error + * of inlink descriptor for Rx channel 2. + */ + +#define DMA_IN_DSCR_ERR_CH2_INT_RAW (BIT(5)) +#define DMA_IN_DSCR_ERR_CH2_INT_RAW_M (DMA_IN_DSCR_ERR_CH2_INT_RAW_V << DMA_IN_DSCR_ERR_CH2_INT_RAW_S) +#define DMA_IN_DSCR_ERR_CH2_INT_RAW_V 0x00000001 +#define DMA_IN_DSCR_ERR_CH2_INT_RAW_S 5 + +/* DMA_OUT_EOF_CH2_INT_RAW : R/WTC/SS; bitpos: [4]; default: 0; + * The raw interrupt bit turns to high level when the last data pointed by + * one outlink descriptor has been read from memory for Tx channel 2. + */ + +#define DMA_OUT_EOF_CH2_INT_RAW (BIT(4)) +#define DMA_OUT_EOF_CH2_INT_RAW_M (DMA_OUT_EOF_CH2_INT_RAW_V << DMA_OUT_EOF_CH2_INT_RAW_S) +#define DMA_OUT_EOF_CH2_INT_RAW_V 0x00000001 +#define DMA_OUT_EOF_CH2_INT_RAW_S 4 + +/* DMA_OUT_DONE_CH2_INT_RAW : R/WTC/SS; bitpos: [3]; default: 0; + * The raw interrupt bit turns to high level when the last data pointed by + * one outlink descriptor has been transmitted to peripherals for Tx channel + * 2. + */ + +#define DMA_OUT_DONE_CH2_INT_RAW (BIT(3)) +#define DMA_OUT_DONE_CH2_INT_RAW_M (DMA_OUT_DONE_CH2_INT_RAW_V << DMA_OUT_DONE_CH2_INT_RAW_S) +#define DMA_OUT_DONE_CH2_INT_RAW_V 0x00000001 +#define DMA_OUT_DONE_CH2_INT_RAW_S 3 + +/* DMA_IN_ERR_EOF_CH2_INT_RAW : R/WTC/SS; bitpos: [2]; default: 0; + * The raw interrupt bit turns to high level when data error is detected + * only in the case that the peripheral is UHCI0 for Rx channel 2. For other + * peripherals, this raw interrupt is reserved. + */ + +#define DMA_IN_ERR_EOF_CH2_INT_RAW (BIT(2)) +#define DMA_IN_ERR_EOF_CH2_INT_RAW_M (DMA_IN_ERR_EOF_CH2_INT_RAW_V << DMA_IN_ERR_EOF_CH2_INT_RAW_S) +#define DMA_IN_ERR_EOF_CH2_INT_RAW_V 0x00000001 +#define DMA_IN_ERR_EOF_CH2_INT_RAW_S 2 + +/* DMA_IN_SUC_EOF_CH2_INT_RAW : R/WTC/SS; bitpos: [1]; default: 0; + * The raw interrupt bit turns to high level when the last data pointed by + * one inlink descriptor has been received for Rx channel 2. For UHCI0, the + * raw interrupt bit turns to high level when the last data pointed by one + * inlink descriptor has been received and no data error is detected for Rx + * channel 2. + */ + +#define DMA_IN_SUC_EOF_CH2_INT_RAW (BIT(1)) +#define DMA_IN_SUC_EOF_CH2_INT_RAW_M (DMA_IN_SUC_EOF_CH2_INT_RAW_V << DMA_IN_SUC_EOF_CH2_INT_RAW_S) +#define DMA_IN_SUC_EOF_CH2_INT_RAW_V 0x00000001 +#define DMA_IN_SUC_EOF_CH2_INT_RAW_S 1 + +/* DMA_IN_DONE_CH2_INT_RAW : R/WTC/SS; bitpos: [0]; default: 0; + * The raw interrupt bit turns to high level when the last data pointed by + * one inlink descriptor has been received for Rx channel 2. + */ + +#define DMA_IN_DONE_CH2_INT_RAW (BIT(0)) +#define DMA_IN_DONE_CH2_INT_RAW_M (DMA_IN_DONE_CH2_INT_RAW_V << DMA_IN_DONE_CH2_INT_RAW_S) +#define DMA_IN_DONE_CH2_INT_RAW_V 0x00000001 +#define DMA_IN_DONE_CH2_INT_RAW_S 0 + +/* DMA_INT_ST_CH2_REG register + * DMA_INT_ST_CH2_REG. + */ + +#define DMA_INT_ST_CH2_REG (DR_REG_GDMA_BASE + 0x24) + +/* DMA_OUTFIFO_UDF_CH2_INT_ST : RO; bitpos: [12]; default: 0; + * The raw interrupt status bit for the OUTFIFO_UDF_L1_CH_INT interrupt. + */ + +#define DMA_OUTFIFO_UDF_CH2_INT_ST (BIT(12)) +#define DMA_OUTFIFO_UDF_CH2_INT_ST_M (DMA_OUTFIFO_UDF_CH2_INT_ST_V << DMA_OUTFIFO_UDF_CH2_INT_ST_S) +#define DMA_OUTFIFO_UDF_CH2_INT_ST_V 0x00000001 +#define DMA_OUTFIFO_UDF_CH2_INT_ST_S 12 + +/* DMA_OUTFIFO_OVF_CH2_INT_ST : RO; bitpos: [11]; default: 0; + * The raw interrupt status bit for the OUTFIFO_OVF_L1_CH_INT interrupt. + */ + +#define DMA_OUTFIFO_OVF_CH2_INT_ST (BIT(11)) +#define DMA_OUTFIFO_OVF_CH2_INT_ST_M (DMA_OUTFIFO_OVF_CH2_INT_ST_V << DMA_OUTFIFO_OVF_CH2_INT_ST_S) +#define DMA_OUTFIFO_OVF_CH2_INT_ST_V 0x00000001 +#define DMA_OUTFIFO_OVF_CH2_INT_ST_S 11 + +/* DMA_INFIFO_UDF_CH2_INT_ST : RO; bitpos: [10]; default: 0; + * The raw interrupt status bit for the INFIFO_UDF_L1_CH_INT interrupt. + */ + +#define DMA_INFIFO_UDF_CH2_INT_ST (BIT(10)) +#define DMA_INFIFO_UDF_CH2_INT_ST_M (DMA_INFIFO_UDF_CH2_INT_ST_V << DMA_INFIFO_UDF_CH2_INT_ST_S) +#define DMA_INFIFO_UDF_CH2_INT_ST_V 0x00000001 +#define DMA_INFIFO_UDF_CH2_INT_ST_S 10 + +/* DMA_INFIFO_OVF_CH2_INT_ST : RO; bitpos: [9]; default: 0; + * The raw interrupt status bit for the INFIFO_OVF_L1_CH_INT interrupt. + */ + +#define DMA_INFIFO_OVF_CH2_INT_ST (BIT(9)) +#define DMA_INFIFO_OVF_CH2_INT_ST_M (DMA_INFIFO_OVF_CH2_INT_ST_V << DMA_INFIFO_OVF_CH2_INT_ST_S) +#define DMA_INFIFO_OVF_CH2_INT_ST_V 0x00000001 +#define DMA_INFIFO_OVF_CH2_INT_ST_S 9 + +/* DMA_OUT_TOTAL_EOF_CH2_INT_ST : RO; bitpos: [8]; default: 0; + * The raw interrupt status bit for the OUT_TOTAL_EOF_CH_INT interrupt. + */ + +#define DMA_OUT_TOTAL_EOF_CH2_INT_ST (BIT(8)) +#define DMA_OUT_TOTAL_EOF_CH2_INT_ST_M (DMA_OUT_TOTAL_EOF_CH2_INT_ST_V << DMA_OUT_TOTAL_EOF_CH2_INT_ST_S) +#define DMA_OUT_TOTAL_EOF_CH2_INT_ST_V 0x00000001 +#define DMA_OUT_TOTAL_EOF_CH2_INT_ST_S 8 + +/* DMA_IN_DSCR_EMPTY_CH2_INT_ST : RO; bitpos: [7]; default: 0; + * The raw interrupt status bit for the IN_DSCR_EMPTY_CH_INT interrupt. + */ + +#define DMA_IN_DSCR_EMPTY_CH2_INT_ST (BIT(7)) +#define DMA_IN_DSCR_EMPTY_CH2_INT_ST_M (DMA_IN_DSCR_EMPTY_CH2_INT_ST_V << DMA_IN_DSCR_EMPTY_CH2_INT_ST_S) +#define DMA_IN_DSCR_EMPTY_CH2_INT_ST_V 0x00000001 +#define DMA_IN_DSCR_EMPTY_CH2_INT_ST_S 7 + +/* DMA_OUT_DSCR_ERR_CH2_INT_ST : RO; bitpos: [6]; default: 0; + * The raw interrupt status bit for the OUT_DSCR_ERR_CH_INT interrupt. + */ + +#define DMA_OUT_DSCR_ERR_CH2_INT_ST (BIT(6)) +#define DMA_OUT_DSCR_ERR_CH2_INT_ST_M (DMA_OUT_DSCR_ERR_CH2_INT_ST_V << DMA_OUT_DSCR_ERR_CH2_INT_ST_S) +#define DMA_OUT_DSCR_ERR_CH2_INT_ST_V 0x00000001 +#define DMA_OUT_DSCR_ERR_CH2_INT_ST_S 6 + +/* DMA_IN_DSCR_ERR_CH2_INT_ST : RO; bitpos: [5]; default: 0; + * The raw interrupt status bit for the IN_DSCR_ERR_CH_INT interrupt. + */ + +#define DMA_IN_DSCR_ERR_CH2_INT_ST (BIT(5)) +#define DMA_IN_DSCR_ERR_CH2_INT_ST_M (DMA_IN_DSCR_ERR_CH2_INT_ST_V << DMA_IN_DSCR_ERR_CH2_INT_ST_S) +#define DMA_IN_DSCR_ERR_CH2_INT_ST_V 0x00000001 +#define DMA_IN_DSCR_ERR_CH2_INT_ST_S 5 + +/* DMA_OUT_EOF_CH2_INT_ST : RO; bitpos: [4]; default: 0; + * The raw interrupt status bit for the OUT_EOF_CH_INT interrupt. + */ + +#define DMA_OUT_EOF_CH2_INT_ST (BIT(4)) +#define DMA_OUT_EOF_CH2_INT_ST_M (DMA_OUT_EOF_CH2_INT_ST_V << DMA_OUT_EOF_CH2_INT_ST_S) +#define DMA_OUT_EOF_CH2_INT_ST_V 0x00000001 +#define DMA_OUT_EOF_CH2_INT_ST_S 4 + +/* DMA_OUT_DONE_CH2_INT_ST : RO; bitpos: [3]; default: 0; + * The raw interrupt status bit for the OUT_DONE_CH_INT interrupt. + */ + +#define DMA_OUT_DONE_CH2_INT_ST (BIT(3)) +#define DMA_OUT_DONE_CH2_INT_ST_M (DMA_OUT_DONE_CH2_INT_ST_V << DMA_OUT_DONE_CH2_INT_ST_S) +#define DMA_OUT_DONE_CH2_INT_ST_V 0x00000001 +#define DMA_OUT_DONE_CH2_INT_ST_S 3 + +/* DMA_IN_ERR_EOF_CH2_INT_ST : RO; bitpos: [2]; default: 0; + * The raw interrupt status bit for the IN_ERR_EOF_CH_INT interrupt. + */ + +#define DMA_IN_ERR_EOF_CH2_INT_ST (BIT(2)) +#define DMA_IN_ERR_EOF_CH2_INT_ST_M (DMA_IN_ERR_EOF_CH2_INT_ST_V << DMA_IN_ERR_EOF_CH2_INT_ST_S) +#define DMA_IN_ERR_EOF_CH2_INT_ST_V 0x00000001 +#define DMA_IN_ERR_EOF_CH2_INT_ST_S 2 + +/* DMA_IN_SUC_EOF_CH2_INT_ST : RO; bitpos: [1]; default: 0; + * The raw interrupt status bit for the IN_SUC_EOF_CH_INT interrupt. + */ + +#define DMA_IN_SUC_EOF_CH2_INT_ST (BIT(1)) +#define DMA_IN_SUC_EOF_CH2_INT_ST_M (DMA_IN_SUC_EOF_CH2_INT_ST_V << DMA_IN_SUC_EOF_CH2_INT_ST_S) +#define DMA_IN_SUC_EOF_CH2_INT_ST_V 0x00000001 +#define DMA_IN_SUC_EOF_CH2_INT_ST_S 1 + +/* DMA_IN_DONE_CH2_INT_ST : RO; bitpos: [0]; default: 0; + * The raw interrupt status bit for the IN_DONE_CH_INT interrupt. + */ + +#define DMA_IN_DONE_CH2_INT_ST (BIT(0)) +#define DMA_IN_DONE_CH2_INT_ST_M (DMA_IN_DONE_CH2_INT_ST_V << DMA_IN_DONE_CH2_INT_ST_S) +#define DMA_IN_DONE_CH2_INT_ST_V 0x00000001 +#define DMA_IN_DONE_CH2_INT_ST_S 0 + +/* DMA_INT_ENA_CH2_REG register + * DMA_INT_ENA_CH2_REG. + */ + +#define DMA_INT_ENA_CH2_REG (DR_REG_GDMA_BASE + 0x28) + +/* DMA_OUTFIFO_UDF_CH2_INT_ENA : R/W; bitpos: [12]; default: 0; + * The interrupt enable bit for the OUTFIFO_UDF_L1_CH_INT interrupt. + */ + +#define DMA_OUTFIFO_UDF_CH2_INT_ENA (BIT(12)) +#define DMA_OUTFIFO_UDF_CH2_INT_ENA_M (DMA_OUTFIFO_UDF_CH2_INT_ENA_V << DMA_OUTFIFO_UDF_CH2_INT_ENA_S) +#define DMA_OUTFIFO_UDF_CH2_INT_ENA_V 0x00000001 +#define DMA_OUTFIFO_UDF_CH2_INT_ENA_S 12 + +/* DMA_OUTFIFO_OVF_CH2_INT_ENA : R/W; bitpos: [11]; default: 0; + * The interrupt enable bit for the OUTFIFO_OVF_L1_CH_INT interrupt. + */ + +#define DMA_OUTFIFO_OVF_CH2_INT_ENA (BIT(11)) +#define DMA_OUTFIFO_OVF_CH2_INT_ENA_M (DMA_OUTFIFO_OVF_CH2_INT_ENA_V << DMA_OUTFIFO_OVF_CH2_INT_ENA_S) +#define DMA_OUTFIFO_OVF_CH2_INT_ENA_V 0x00000001 +#define DMA_OUTFIFO_OVF_CH2_INT_ENA_S 11 + +/* DMA_INFIFO_UDF_CH2_INT_ENA : R/W; bitpos: [10]; default: 0; + * The interrupt enable bit for the INFIFO_UDF_L1_CH_INT interrupt. + */ + +#define DMA_INFIFO_UDF_CH2_INT_ENA (BIT(10)) +#define DMA_INFIFO_UDF_CH2_INT_ENA_M (DMA_INFIFO_UDF_CH2_INT_ENA_V << DMA_INFIFO_UDF_CH2_INT_ENA_S) +#define DMA_INFIFO_UDF_CH2_INT_ENA_V 0x00000001 +#define DMA_INFIFO_UDF_CH2_INT_ENA_S 10 + +/* DMA_INFIFO_OVF_CH2_INT_ENA : R/W; bitpos: [9]; default: 0; + * The interrupt enable bit for the INFIFO_OVF_L1_CH_INT interrupt. + */ + +#define DMA_INFIFO_OVF_CH2_INT_ENA (BIT(9)) +#define DMA_INFIFO_OVF_CH2_INT_ENA_M (DMA_INFIFO_OVF_CH2_INT_ENA_V << DMA_INFIFO_OVF_CH2_INT_ENA_S) +#define DMA_INFIFO_OVF_CH2_INT_ENA_V 0x00000001 +#define DMA_INFIFO_OVF_CH2_INT_ENA_S 9 + +/* DMA_OUT_TOTAL_EOF_CH2_INT_ENA : R/W; bitpos: [8]; default: 0; + * The interrupt enable bit for the OUT_TOTAL_EOF_CH_INT interrupt. + */ + +#define DMA_OUT_TOTAL_EOF_CH2_INT_ENA (BIT(8)) +#define DMA_OUT_TOTAL_EOF_CH2_INT_ENA_M (DMA_OUT_TOTAL_EOF_CH2_INT_ENA_V << DMA_OUT_TOTAL_EOF_CH2_INT_ENA_S) +#define DMA_OUT_TOTAL_EOF_CH2_INT_ENA_V 0x00000001 +#define DMA_OUT_TOTAL_EOF_CH2_INT_ENA_S 8 + +/* DMA_IN_DSCR_EMPTY_CH2_INT_ENA : R/W; bitpos: [7]; default: 0; + * The interrupt enable bit for the IN_DSCR_EMPTY_CH_INT interrupt. + */ + +#define DMA_IN_DSCR_EMPTY_CH2_INT_ENA (BIT(7)) +#define DMA_IN_DSCR_EMPTY_CH2_INT_ENA_M (DMA_IN_DSCR_EMPTY_CH2_INT_ENA_V << DMA_IN_DSCR_EMPTY_CH2_INT_ENA_S) +#define DMA_IN_DSCR_EMPTY_CH2_INT_ENA_V 0x00000001 +#define DMA_IN_DSCR_EMPTY_CH2_INT_ENA_S 7 + +/* DMA_OUT_DSCR_ERR_CH2_INT_ENA : R/W; bitpos: [6]; default: 0; + * The interrupt enable bit for the OUT_DSCR_ERR_CH_INT interrupt. + */ + +#define DMA_OUT_DSCR_ERR_CH2_INT_ENA (BIT(6)) +#define DMA_OUT_DSCR_ERR_CH2_INT_ENA_M (DMA_OUT_DSCR_ERR_CH2_INT_ENA_V << DMA_OUT_DSCR_ERR_CH2_INT_ENA_S) +#define DMA_OUT_DSCR_ERR_CH2_INT_ENA_V 0x00000001 +#define DMA_OUT_DSCR_ERR_CH2_INT_ENA_S 6 + +/* DMA_IN_DSCR_ERR_CH2_INT_ENA : R/W; bitpos: [5]; default: 0; + * The interrupt enable bit for the IN_DSCR_ERR_CH_INT interrupt. + */ + +#define DMA_IN_DSCR_ERR_CH2_INT_ENA (BIT(5)) +#define DMA_IN_DSCR_ERR_CH2_INT_ENA_M (DMA_IN_DSCR_ERR_CH2_INT_ENA_V << DMA_IN_DSCR_ERR_CH2_INT_ENA_S) +#define DMA_IN_DSCR_ERR_CH2_INT_ENA_V 0x00000001 +#define DMA_IN_DSCR_ERR_CH2_INT_ENA_S 5 + +/* DMA_OUT_EOF_CH2_INT_ENA : R/W; bitpos: [4]; default: 0; + * The interrupt enable bit for the OUT_EOF_CH_INT interrupt. + */ + +#define DMA_OUT_EOF_CH2_INT_ENA (BIT(4)) +#define DMA_OUT_EOF_CH2_INT_ENA_M (DMA_OUT_EOF_CH2_INT_ENA_V << DMA_OUT_EOF_CH2_INT_ENA_S) +#define DMA_OUT_EOF_CH2_INT_ENA_V 0x00000001 +#define DMA_OUT_EOF_CH2_INT_ENA_S 4 + +/* DMA_OUT_DONE_CH2_INT_ENA : R/W; bitpos: [3]; default: 0; + * The interrupt enable bit for the OUT_DONE_CH_INT interrupt. + */ + +#define DMA_OUT_DONE_CH2_INT_ENA (BIT(3)) +#define DMA_OUT_DONE_CH2_INT_ENA_M (DMA_OUT_DONE_CH2_INT_ENA_V << DMA_OUT_DONE_CH2_INT_ENA_S) +#define DMA_OUT_DONE_CH2_INT_ENA_V 0x00000001 +#define DMA_OUT_DONE_CH2_INT_ENA_S 3 + +/* DMA_IN_ERR_EOF_CH2_INT_ENA : R/W; bitpos: [2]; default: 0; + * The interrupt enable bit for the IN_ERR_EOF_CH_INT interrupt. + */ + +#define DMA_IN_ERR_EOF_CH2_INT_ENA (BIT(2)) +#define DMA_IN_ERR_EOF_CH2_INT_ENA_M (DMA_IN_ERR_EOF_CH2_INT_ENA_V << DMA_IN_ERR_EOF_CH2_INT_ENA_S) +#define DMA_IN_ERR_EOF_CH2_INT_ENA_V 0x00000001 +#define DMA_IN_ERR_EOF_CH2_INT_ENA_S 2 + +/* DMA_IN_SUC_EOF_CH2_INT_ENA : R/W; bitpos: [1]; default: 0; + * The interrupt enable bit for the IN_SUC_EOF_CH_INT interrupt. + */ + +#define DMA_IN_SUC_EOF_CH2_INT_ENA (BIT(1)) +#define DMA_IN_SUC_EOF_CH2_INT_ENA_M (DMA_IN_SUC_EOF_CH2_INT_ENA_V << DMA_IN_SUC_EOF_CH2_INT_ENA_S) +#define DMA_IN_SUC_EOF_CH2_INT_ENA_V 0x00000001 +#define DMA_IN_SUC_EOF_CH2_INT_ENA_S 1 + +/* DMA_IN_DONE_CH2_INT_ENA : R/W; bitpos: [0]; default: 0; + * The interrupt enable bit for the IN_DONE_CH_INT interrupt. + */ + +#define DMA_IN_DONE_CH2_INT_ENA (BIT(0)) +#define DMA_IN_DONE_CH2_INT_ENA_M (DMA_IN_DONE_CH2_INT_ENA_V << DMA_IN_DONE_CH2_INT_ENA_S) +#define DMA_IN_DONE_CH2_INT_ENA_V 0x00000001 +#define DMA_IN_DONE_CH2_INT_ENA_S 0 + +/* DMA_INT_CLR_CH2_REG register + * DMA_INT_CLR_CH2_REG. + */ + +#define DMA_INT_CLR_CH2_REG (DR_REG_GDMA_BASE + 0x2c) + +/* DMA_OUTFIFO_UDF_CH2_INT_CLR : WT; bitpos: [12]; default: 0; + * Set this bit to clear the OUTFIFO_UDF_L1_CH_INT interrupt. + */ + +#define DMA_OUTFIFO_UDF_CH2_INT_CLR (BIT(12)) +#define DMA_OUTFIFO_UDF_CH2_INT_CLR_M (DMA_OUTFIFO_UDF_CH2_INT_CLR_V << DMA_OUTFIFO_UDF_CH2_INT_CLR_S) +#define DMA_OUTFIFO_UDF_CH2_INT_CLR_V 0x00000001 +#define DMA_OUTFIFO_UDF_CH2_INT_CLR_S 12 + +/* DMA_OUTFIFO_OVF_CH2_INT_CLR : WT; bitpos: [11]; default: 0; + * Set this bit to clear the OUTFIFO_OVF_L1_CH_INT interrupt. + */ + +#define DMA_OUTFIFO_OVF_CH2_INT_CLR (BIT(11)) +#define DMA_OUTFIFO_OVF_CH2_INT_CLR_M (DMA_OUTFIFO_OVF_CH2_INT_CLR_V << DMA_OUTFIFO_OVF_CH2_INT_CLR_S) +#define DMA_OUTFIFO_OVF_CH2_INT_CLR_V 0x00000001 +#define DMA_OUTFIFO_OVF_CH2_INT_CLR_S 11 + +/* DMA_INFIFO_UDF_CH2_INT_CLR : WT; bitpos: [10]; default: 0; + * Set this bit to clear the INFIFO_UDF_L1_CH_INT interrupt. + */ + +#define DMA_INFIFO_UDF_CH2_INT_CLR (BIT(10)) +#define DMA_INFIFO_UDF_CH2_INT_CLR_M (DMA_INFIFO_UDF_CH2_INT_CLR_V << DMA_INFIFO_UDF_CH2_INT_CLR_S) +#define DMA_INFIFO_UDF_CH2_INT_CLR_V 0x00000001 +#define DMA_INFIFO_UDF_CH2_INT_CLR_S 10 + +/* DMA_INFIFO_OVF_CH2_INT_CLR : WT; bitpos: [9]; default: 0; + * Set this bit to clear the INFIFO_OVF_L1_CH_INT interrupt. + */ + +#define DMA_INFIFO_OVF_CH2_INT_CLR (BIT(9)) +#define DMA_INFIFO_OVF_CH2_INT_CLR_M (DMA_INFIFO_OVF_CH2_INT_CLR_V << DMA_INFIFO_OVF_CH2_INT_CLR_S) +#define DMA_INFIFO_OVF_CH2_INT_CLR_V 0x00000001 +#define DMA_INFIFO_OVF_CH2_INT_CLR_S 9 + +/* DMA_OUT_TOTAL_EOF_CH2_INT_CLR : WT; bitpos: [8]; default: 0; + * Set this bit to clear the OUT_TOTAL_EOF_CH_INT interrupt. + */ + +#define DMA_OUT_TOTAL_EOF_CH2_INT_CLR (BIT(8)) +#define DMA_OUT_TOTAL_EOF_CH2_INT_CLR_M (DMA_OUT_TOTAL_EOF_CH2_INT_CLR_V << DMA_OUT_TOTAL_EOF_CH2_INT_CLR_S) +#define DMA_OUT_TOTAL_EOF_CH2_INT_CLR_V 0x00000001 +#define DMA_OUT_TOTAL_EOF_CH2_INT_CLR_S 8 + +/* DMA_IN_DSCR_EMPTY_CH2_INT_CLR : WT; bitpos: [7]; default: 0; + * Set this bit to clear the IN_DSCR_EMPTY_CH_INT interrupt. + */ + +#define DMA_IN_DSCR_EMPTY_CH2_INT_CLR (BIT(7)) +#define DMA_IN_DSCR_EMPTY_CH2_INT_CLR_M (DMA_IN_DSCR_EMPTY_CH2_INT_CLR_V << DMA_IN_DSCR_EMPTY_CH2_INT_CLR_S) +#define DMA_IN_DSCR_EMPTY_CH2_INT_CLR_V 0x00000001 +#define DMA_IN_DSCR_EMPTY_CH2_INT_CLR_S 7 + +/* DMA_OUT_DSCR_ERR_CH2_INT_CLR : WT; bitpos: [6]; default: 0; + * Set this bit to clear the OUT_DSCR_ERR_CH_INT interrupt. + */ + +#define DMA_OUT_DSCR_ERR_CH2_INT_CLR (BIT(6)) +#define DMA_OUT_DSCR_ERR_CH2_INT_CLR_M (DMA_OUT_DSCR_ERR_CH2_INT_CLR_V << DMA_OUT_DSCR_ERR_CH2_INT_CLR_S) +#define DMA_OUT_DSCR_ERR_CH2_INT_CLR_V 0x00000001 +#define DMA_OUT_DSCR_ERR_CH2_INT_CLR_S 6 + +/* DMA_IN_DSCR_ERR_CH2_INT_CLR : WT; bitpos: [5]; default: 0; + * Set this bit to clear the IN_DSCR_ERR_CH_INT interrupt. + */ + +#define DMA_IN_DSCR_ERR_CH2_INT_CLR (BIT(5)) +#define DMA_IN_DSCR_ERR_CH2_INT_CLR_M (DMA_IN_DSCR_ERR_CH2_INT_CLR_V << DMA_IN_DSCR_ERR_CH2_INT_CLR_S) +#define DMA_IN_DSCR_ERR_CH2_INT_CLR_V 0x00000001 +#define DMA_IN_DSCR_ERR_CH2_INT_CLR_S 5 + +/* DMA_OUT_EOF_CH2_INT_CLR : WT; bitpos: [4]; default: 0; + * Set this bit to clear the OUT_EOF_CH_INT interrupt. + */ + +#define DMA_OUT_EOF_CH2_INT_CLR (BIT(4)) +#define DMA_OUT_EOF_CH2_INT_CLR_M (DMA_OUT_EOF_CH2_INT_CLR_V << DMA_OUT_EOF_CH2_INT_CLR_S) +#define DMA_OUT_EOF_CH2_INT_CLR_V 0x00000001 +#define DMA_OUT_EOF_CH2_INT_CLR_S 4 + +/* DMA_OUT_DONE_CH2_INT_CLR : WT; bitpos: [3]; default: 0; + * Set this bit to clear the OUT_DONE_CH_INT interrupt. + */ + +#define DMA_OUT_DONE_CH2_INT_CLR (BIT(3)) +#define DMA_OUT_DONE_CH2_INT_CLR_M (DMA_OUT_DONE_CH2_INT_CLR_V << DMA_OUT_DONE_CH2_INT_CLR_S) +#define DMA_OUT_DONE_CH2_INT_CLR_V 0x00000001 +#define DMA_OUT_DONE_CH2_INT_CLR_S 3 + +/* DMA_IN_ERR_EOF_CH2_INT_CLR : WT; bitpos: [2]; default: 0; + * Set this bit to clear the IN_ERR_EOF_CH_INT interrupt. + */ + +#define DMA_IN_ERR_EOF_CH2_INT_CLR (BIT(2)) +#define DMA_IN_ERR_EOF_CH2_INT_CLR_M (DMA_IN_ERR_EOF_CH2_INT_CLR_V << DMA_IN_ERR_EOF_CH2_INT_CLR_S) +#define DMA_IN_ERR_EOF_CH2_INT_CLR_V 0x00000001 +#define DMA_IN_ERR_EOF_CH2_INT_CLR_S 2 + +/* DMA_IN_SUC_EOF_CH2_INT_CLR : WT; bitpos: [1]; default: 0; + * Set this bit to clear the IN_SUC_EOF_CH_INT interrupt. + */ + +#define DMA_IN_SUC_EOF_CH2_INT_CLR (BIT(1)) +#define DMA_IN_SUC_EOF_CH2_INT_CLR_M (DMA_IN_SUC_EOF_CH2_INT_CLR_V << DMA_IN_SUC_EOF_CH2_INT_CLR_S) +#define DMA_IN_SUC_EOF_CH2_INT_CLR_V 0x00000001 +#define DMA_IN_SUC_EOF_CH2_INT_CLR_S 1 + +/* DMA_IN_DONE_CH2_INT_CLR : WT; bitpos: [0]; default: 0; + * Set this bit to clear the IN_DONE_CH_INT interrupt. + */ + +#define DMA_IN_DONE_CH2_INT_CLR (BIT(0)) +#define DMA_IN_DONE_CH2_INT_CLR_M (DMA_IN_DONE_CH2_INT_CLR_V << DMA_IN_DONE_CH2_INT_CLR_S) +#define DMA_IN_DONE_CH2_INT_CLR_V 0x00000001 +#define DMA_IN_DONE_CH2_INT_CLR_S 0 + +/* DMA_AHB_TEST_REG register + * DMA_AHB_TEST_REG. + */ + +#define DMA_AHB_TEST_REG (DR_REG_GDMA_BASE + 0x40) + +/* DMA_AHB_TESTADDR : R/W; bitpos: [5:4]; default: 0; + * reserved + */ + +#define DMA_AHB_TESTADDR 0x00000003 +#define DMA_AHB_TESTADDR_M (DMA_AHB_TESTADDR_V << DMA_AHB_TESTADDR_S) +#define DMA_AHB_TESTADDR_V 0x00000003 +#define DMA_AHB_TESTADDR_S 4 + +/* DMA_AHB_TESTMODE : R/W; bitpos: [2:0]; default: 0; + * reserved + */ + +#define DMA_AHB_TESTMODE 0x00000007 +#define DMA_AHB_TESTMODE_M (DMA_AHB_TESTMODE_V << DMA_AHB_TESTMODE_S) +#define DMA_AHB_TESTMODE_V 0x00000007 +#define DMA_AHB_TESTMODE_S 0 + +/* DMA_MISC_CONF_REG register + * DMA_MISC_CONF_REG. + */ + +#define DMA_MISC_CONF_REG (DR_REG_GDMA_BASE + 0x44) + +/* DMA_CLK_EN : R/W; bitpos: [3]; default: 0; + * reg_clk_en + */ + +#define DMA_CLK_EN (BIT(3)) +#define DMA_CLK_EN_M (DMA_CLK_EN_V << DMA_CLK_EN_S) +#define DMA_CLK_EN_V 0x00000001 +#define DMA_CLK_EN_S 3 + +/* DMA_ARB_PRI_DIS : R/W; bitpos: [2]; default: 0; + * Set this bit to disable priority arbitration function. + */ + +#define DMA_ARB_PRI_DIS (BIT(2)) +#define DMA_ARB_PRI_DIS_M (DMA_ARB_PRI_DIS_V << DMA_ARB_PRI_DIS_S) +#define DMA_ARB_PRI_DIS_V 0x00000001 +#define DMA_ARB_PRI_DIS_S 2 + +/* DMA_AHBM_RST_INTER : R/W; bitpos: [0]; default: 0; + * Set this bit, then clear this bit to reset the internal ahb FSM. + */ + +#define DMA_AHBM_RST_INTER (BIT(0)) +#define DMA_AHBM_RST_INTER_M (DMA_AHBM_RST_INTER_V << DMA_AHBM_RST_INTER_S) +#define DMA_AHBM_RST_INTER_V 0x00000001 +#define DMA_AHBM_RST_INTER_S 0 + +/* DMA_DATE_REG register + * DMA_DATE_REG. + */ + +#define DMA_DATE_REG (DR_REG_GDMA_BASE + 0x48) + +/* DMA_DATE : R/W; bitpos: [31:0]; default: 33587792; + * register version. + */ + +#define DMA_DATE 0xFFFFFFFF +#define DMA_DATE_M (DMA_DATE_V << DMA_DATE_S) +#define DMA_DATE_V 0xFFFFFFFF +#define DMA_DATE_S 0 + +/* DMA_IN_CONF0_CH0_REG register + * DMA_IN_CONF0_CH0_REG. + */ + +#define DMA_IN_CONF0_CH0_REG (DR_REG_GDMA_BASE + 0x70) + +/* DMA_MEM_TRANS_EN_CH0 : R/W; bitpos: [4]; default: 0; + * Set this bit 1 to enable automatic transmitting data from memory to + * memory via DMA. + */ + +#define DMA_MEM_TRANS_EN_CH0 (BIT(4)) +#define DMA_MEM_TRANS_EN_CH0_M (DMA_MEM_TRANS_EN_CH0_V << DMA_MEM_TRANS_EN_CH0_S) +#define DMA_MEM_TRANS_EN_CH0_V 0x00000001 +#define DMA_MEM_TRANS_EN_CH0_S 4 + +/* DMA_IN_DATA_BURST_EN_CH0 : R/W; bitpos: [3]; default: 0; + * Set this bit to 1 to enable INCR burst transfer for Rx channel 0 + * receiving data when accessing internal SRAM. + */ + +#define DMA_IN_DATA_BURST_EN_CH0 (BIT(3)) +#define DMA_IN_DATA_BURST_EN_CH0_M (DMA_IN_DATA_BURST_EN_CH0_V << DMA_IN_DATA_BURST_EN_CH0_S) +#define DMA_IN_DATA_BURST_EN_CH0_V 0x00000001 +#define DMA_IN_DATA_BURST_EN_CH0_S 3 + +/* DMA_INDSCR_BURST_EN_CH0 : R/W; bitpos: [2]; default: 0; + * Set this bit to 1 to enable INCR burst transfer for Rx channel 0 reading + * link descriptor when accessing internal SRAM. + */ + +#define DMA_INDSCR_BURST_EN_CH0 (BIT(2)) +#define DMA_INDSCR_BURST_EN_CH0_M (DMA_INDSCR_BURST_EN_CH0_V << DMA_INDSCR_BURST_EN_CH0_S) +#define DMA_INDSCR_BURST_EN_CH0_V 0x00000001 +#define DMA_INDSCR_BURST_EN_CH0_S 2 + +/* DMA_IN_LOOP_TEST_CH0 : R/W; bitpos: [1]; default: 0; + * reserved + */ + +#define DMA_IN_LOOP_TEST_CH0 (BIT(1)) +#define DMA_IN_LOOP_TEST_CH0_M (DMA_IN_LOOP_TEST_CH0_V << DMA_IN_LOOP_TEST_CH0_S) +#define DMA_IN_LOOP_TEST_CH0_V 0x00000001 +#define DMA_IN_LOOP_TEST_CH0_S 1 + +/* DMA_IN_RST_CH0 : R/W; bitpos: [0]; default: 0; + * This bit is used to reset DMA channel 0 Rx FSM and Rx FIFO pointer. + */ + +#define DMA_IN_RST_CH0 (BIT(0)) +#define DMA_IN_RST_CH0_M (DMA_IN_RST_CH0_V << DMA_IN_RST_CH0_S) +#define DMA_IN_RST_CH0_V 0x00000001 +#define DMA_IN_RST_CH0_S 0 + +/* DMA_IN_CONF1_CH0_REG register + * DMA_IN_CONF1_CH0_REG. + */ + +#define DMA_IN_CONF1_CH0_REG (DR_REG_GDMA_BASE + 0x74) + +/* DMA_IN_CHECK_OWNER_CH0 : R/W; bitpos: [12]; default: 0; + * Set this bit to enable checking the owner attribute of the link + * descriptor. + */ + +#define DMA_IN_CHECK_OWNER_CH0 (BIT(12)) +#define DMA_IN_CHECK_OWNER_CH0_M (DMA_IN_CHECK_OWNER_CH0_V << DMA_IN_CHECK_OWNER_CH0_S) +#define DMA_IN_CHECK_OWNER_CH0_V 0x00000001 +#define DMA_IN_CHECK_OWNER_CH0_S 12 + +/* DMA_INFIFO_STATUS_CH0_REG register + * DMA_INFIFO_STATUS_CH0_REG. + */ + +#define DMA_INFIFO_STATUS_CH0_REG (DR_REG_GDMA_BASE + 0x78) + +/* DMA_IN_BUF_HUNGRY_CH0 : RO; bitpos: [27]; default: 0; + * reserved + */ + +#define DMA_IN_BUF_HUNGRY_CH0 (BIT(27)) +#define DMA_IN_BUF_HUNGRY_CH0_M (DMA_IN_BUF_HUNGRY_CH0_V << DMA_IN_BUF_HUNGRY_CH0_S) +#define DMA_IN_BUF_HUNGRY_CH0_V 0x00000001 +#define DMA_IN_BUF_HUNGRY_CH0_S 27 + +/* DMA_IN_REMAIN_UNDER_4B_CH0 : RO; bitpos: [26]; default: 1; + * reserved + */ + +#define DMA_IN_REMAIN_UNDER_4B_CH0 (BIT(26)) +#define DMA_IN_REMAIN_UNDER_4B_CH0_M (DMA_IN_REMAIN_UNDER_4B_CH0_V << DMA_IN_REMAIN_UNDER_4B_CH0_S) +#define DMA_IN_REMAIN_UNDER_4B_CH0_V 0x00000001 +#define DMA_IN_REMAIN_UNDER_4B_CH0_S 26 + +/* DMA_IN_REMAIN_UNDER_3B_CH0 : RO; bitpos: [25]; default: 1; + * reserved + */ + +#define DMA_IN_REMAIN_UNDER_3B_CH0 (BIT(25)) +#define DMA_IN_REMAIN_UNDER_3B_CH0_M (DMA_IN_REMAIN_UNDER_3B_CH0_V << DMA_IN_REMAIN_UNDER_3B_CH0_S) +#define DMA_IN_REMAIN_UNDER_3B_CH0_V 0x00000001 +#define DMA_IN_REMAIN_UNDER_3B_CH0_S 25 + +/* DMA_IN_REMAIN_UNDER_2B_CH0 : RO; bitpos: [24]; default: 1; + * reserved + */ + +#define DMA_IN_REMAIN_UNDER_2B_CH0 (BIT(24)) +#define DMA_IN_REMAIN_UNDER_2B_CH0_M (DMA_IN_REMAIN_UNDER_2B_CH0_V << DMA_IN_REMAIN_UNDER_2B_CH0_S) +#define DMA_IN_REMAIN_UNDER_2B_CH0_V 0x00000001 +#define DMA_IN_REMAIN_UNDER_2B_CH0_S 24 + +/* DMA_IN_REMAIN_UNDER_1B_CH0 : RO; bitpos: [23]; default: 1; + * reserved + */ + +#define DMA_IN_REMAIN_UNDER_1B_CH0 (BIT(23)) +#define DMA_IN_REMAIN_UNDER_1B_CH0_M (DMA_IN_REMAIN_UNDER_1B_CH0_V << DMA_IN_REMAIN_UNDER_1B_CH0_S) +#define DMA_IN_REMAIN_UNDER_1B_CH0_V 0x00000001 +#define DMA_IN_REMAIN_UNDER_1B_CH0_S 23 + +/* DMA_INFIFO_CNT_CH0 : RO; bitpos: [7:2]; default: 0; + * The register stores the byte number of the data in L1 Rx FIFO for Rx + * channel 0. + */ + +#define DMA_INFIFO_CNT_CH0 0x0000003F +#define DMA_INFIFO_CNT_CH0_M (DMA_INFIFO_CNT_CH0_V << DMA_INFIFO_CNT_CH0_S) +#define DMA_INFIFO_CNT_CH0_V 0x0000003F +#define DMA_INFIFO_CNT_CH0_S 2 + +/* DMA_INFIFO_EMPTY_CH0 : RO; bitpos: [1]; default: 1; + * L1 Rx FIFO empty signal for Rx channel 0. + */ + +#define DMA_INFIFO_EMPTY_CH0 (BIT(1)) +#define DMA_INFIFO_EMPTY_CH0_M (DMA_INFIFO_EMPTY_CH0_V << DMA_INFIFO_EMPTY_CH0_S) +#define DMA_INFIFO_EMPTY_CH0_V 0x00000001 +#define DMA_INFIFO_EMPTY_CH0_S 1 + +/* DMA_INFIFO_FULL_CH0 : RO; bitpos: [0]; default: 1; + * L1 Rx FIFO full signal for Rx channel 0. + */ + +#define DMA_INFIFO_FULL_CH0 (BIT(0)) +#define DMA_INFIFO_FULL_CH0_M (DMA_INFIFO_FULL_CH0_V << DMA_INFIFO_FULL_CH0_S) +#define DMA_INFIFO_FULL_CH0_V 0x00000001 +#define DMA_INFIFO_FULL_CH0_S 0 + +/* DMA_IN_POP_CH0_REG register + * DMA_IN_POP_CH0_REG. + */ + +#define DMA_IN_POP_CH0_REG (DR_REG_GDMA_BASE + 0x7c) + +/* DMA_INFIFO_POP_CH0 : R/W/SC; bitpos: [12]; default: 0; + * Set this bit to pop data from DMA FIFO. + */ + +#define DMA_INFIFO_POP_CH0 (BIT(12)) +#define DMA_INFIFO_POP_CH0_M (DMA_INFIFO_POP_CH0_V << DMA_INFIFO_POP_CH0_S) +#define DMA_INFIFO_POP_CH0_V 0x00000001 +#define DMA_INFIFO_POP_CH0_S 12 + +/* DMA_INFIFO_RDATA_CH0 : RO; bitpos: [11:0]; default: 2048; + * This register stores the data popping from DMA FIFO. + */ + +#define DMA_INFIFO_RDATA_CH0 0x00000FFF +#define DMA_INFIFO_RDATA_CH0_M (DMA_INFIFO_RDATA_CH0_V << DMA_INFIFO_RDATA_CH0_S) +#define DMA_INFIFO_RDATA_CH0_V 0x00000FFF +#define DMA_INFIFO_RDATA_CH0_S 0 + +/* DMA_IN_LINK_CH0_REG register + * DMA_IN_LINK_CH0_REG. + */ + +#define DMA_IN_LINK_CH0_REG (DR_REG_GDMA_BASE + 0x80) + +/* DMA_INLINK_PARK_CH0 : RO; bitpos: [24]; default: 1; + * 1: the inlink descriptor's FSM is in idle state. 0: the inlink + * descriptor's FSM is working. + */ + +#define DMA_INLINK_PARK_CH0 (BIT(24)) +#define DMA_INLINK_PARK_CH0_M (DMA_INLINK_PARK_CH0_V << DMA_INLINK_PARK_CH0_S) +#define DMA_INLINK_PARK_CH0_V 0x00000001 +#define DMA_INLINK_PARK_CH0_S 24 + +/* DMA_INLINK_RESTART_CH0 : R/W/SC; bitpos: [23]; default: 0; + * Set this bit to mount a new inlink descriptor. + */ + +#define DMA_INLINK_RESTART_CH0 (BIT(23)) +#define DMA_INLINK_RESTART_CH0_M (DMA_INLINK_RESTART_CH0_V << DMA_INLINK_RESTART_CH0_S) +#define DMA_INLINK_RESTART_CH0_V 0x00000001 +#define DMA_INLINK_RESTART_CH0_S 23 + +/* DMA_INLINK_START_CH0 : R/W/SC; bitpos: [22]; default: 0; + * Set this bit to start dealing with the inlink descriptors. + */ + +#define DMA_INLINK_START_CH0 (BIT(22)) +#define DMA_INLINK_START_CH0_M (DMA_INLINK_START_CH0_V << DMA_INLINK_START_CH0_S) +#define DMA_INLINK_START_CH0_V 0x00000001 +#define DMA_INLINK_START_CH0_S 22 + +/* DMA_INLINK_STOP_CH0 : R/W/SC; bitpos: [21]; default: 0; + * Set this bit to stop dealing with the inlink descriptors. + */ + +#define DMA_INLINK_STOP_CH0 (BIT(21)) +#define DMA_INLINK_STOP_CH0_M (DMA_INLINK_STOP_CH0_V << DMA_INLINK_STOP_CH0_S) +#define DMA_INLINK_STOP_CH0_V 0x00000001 +#define DMA_INLINK_STOP_CH0_S 21 + +/* DMA_INLINK_AUTO_RET_CH0 : R/W; bitpos: [20]; default: 1; + * Set this bit to return to current inlink descriptor's address, when there + * are some errors in current receiving data. + */ + +#define DMA_INLINK_AUTO_RET_CH0 (BIT(20)) +#define DMA_INLINK_AUTO_RET_CH0_M (DMA_INLINK_AUTO_RET_CH0_V << DMA_INLINK_AUTO_RET_CH0_S) +#define DMA_INLINK_AUTO_RET_CH0_V 0x00000001 +#define DMA_INLINK_AUTO_RET_CH0_S 20 + +/* DMA_INLINK_ADDR_CH0 : R/W; bitpos: [19:0]; default: 0; + * This register stores the 20 least significant bits of the first inlink + * descriptor's address. + */ + +#define DMA_INLINK_ADDR_CH0 0x000FFFFF +#define DMA_INLINK_ADDR_CH0_M (DMA_INLINK_ADDR_CH0_V << DMA_INLINK_ADDR_CH0_S) +#define DMA_INLINK_ADDR_CH0_V 0x000FFFFF +#define DMA_INLINK_ADDR_CH0_S 0 + +/* DMA_IN_STATE_CH0_REG register + * DMA_IN_STATE_CH0_REG. + */ + +#define DMA_IN_STATE_CH0_REG (DR_REG_GDMA_BASE + 0x84) + +/* DMA_IN_STATE_CH0 : RO; bitpos: [22:20]; default: 0; + * reserved + */ + +#define DMA_IN_STATE_CH0 0x00000007 +#define DMA_IN_STATE_CH0_M (DMA_IN_STATE_CH0_V << DMA_IN_STATE_CH0_S) +#define DMA_IN_STATE_CH0_V 0x00000007 +#define DMA_IN_STATE_CH0_S 20 + +/* DMA_IN_DSCR_STATE_CH0 : RO; bitpos: [19:18]; default: 0; + * reserved + */ + +#define DMA_IN_DSCR_STATE_CH0 0x00000003 +#define DMA_IN_DSCR_STATE_CH0_M (DMA_IN_DSCR_STATE_CH0_V << DMA_IN_DSCR_STATE_CH0_S) +#define DMA_IN_DSCR_STATE_CH0_V 0x00000003 +#define DMA_IN_DSCR_STATE_CH0_S 18 + +/* DMA_INLINK_DSCR_ADDR_CH0 : RO; bitpos: [17:0]; default: 0; + * This register stores the current inlink descriptor's address. + */ + +#define DMA_INLINK_DSCR_ADDR_CH0 0x0003FFFF +#define DMA_INLINK_DSCR_ADDR_CH0_M (DMA_INLINK_DSCR_ADDR_CH0_V << DMA_INLINK_DSCR_ADDR_CH0_S) +#define DMA_INLINK_DSCR_ADDR_CH0_V 0x0003FFFF +#define DMA_INLINK_DSCR_ADDR_CH0_S 0 + +/* DMA_IN_SUC_EOF_DES_ADDR_CH0_REG register + * DMA_IN_SUC_EOF_DES_ADDR_CH0_REG. + */ + +#define DMA_IN_SUC_EOF_DES_ADDR_CH0_REG (DR_REG_GDMA_BASE + 0x88) + +/* DMA_IN_SUC_EOF_DES_ADDR_CH0 : RO; bitpos: [31:0]; default: 0; + * This register stores the address of the inlink descriptor when the EOF + * bit in this descriptor is 1. + */ + +#define DMA_IN_SUC_EOF_DES_ADDR_CH0 0xFFFFFFFF +#define DMA_IN_SUC_EOF_DES_ADDR_CH0_M (DMA_IN_SUC_EOF_DES_ADDR_CH0_V << DMA_IN_SUC_EOF_DES_ADDR_CH0_S) +#define DMA_IN_SUC_EOF_DES_ADDR_CH0_V 0xFFFFFFFF +#define DMA_IN_SUC_EOF_DES_ADDR_CH0_S 0 + +/* DMA_IN_ERR_EOF_DES_ADDR_CH0_REG register + * DMA_IN_ERR_EOF_DES_ADDR_CH0_REG. + */ + +#define DMA_IN_ERR_EOF_DES_ADDR_CH0_REG (DR_REG_GDMA_BASE + 0x8c) + +/* DMA_IN_ERR_EOF_DES_ADDR_CH0 : RO; bitpos: [31:0]; default: 0; + * This register stores the address of the inlink descriptor when there are + * some errors in current receiving data. Only used when peripheral is UHCI0. + */ + +#define DMA_IN_ERR_EOF_DES_ADDR_CH0 0xFFFFFFFF +#define DMA_IN_ERR_EOF_DES_ADDR_CH0_M (DMA_IN_ERR_EOF_DES_ADDR_CH0_V << DMA_IN_ERR_EOF_DES_ADDR_CH0_S) +#define DMA_IN_ERR_EOF_DES_ADDR_CH0_V 0xFFFFFFFF +#define DMA_IN_ERR_EOF_DES_ADDR_CH0_S 0 + +/* DMA_IN_DSCR_CH0_REG register + * DMA_IN_DSCR_CH0_REG. + */ + +#define DMA_IN_DSCR_CH0_REG (DR_REG_GDMA_BASE + 0x90) + +/* DMA_INLINK_DSCR_CH0 : RO; bitpos: [31:0]; default: 0; + * The address of the current inlink descriptor x. + */ + +#define DMA_INLINK_DSCR_CH0 0xFFFFFFFF +#define DMA_INLINK_DSCR_CH0_M (DMA_INLINK_DSCR_CH0_V << DMA_INLINK_DSCR_CH0_S) +#define DMA_INLINK_DSCR_CH0_V 0xFFFFFFFF +#define DMA_INLINK_DSCR_CH0_S 0 + +/* DMA_IN_DSCR_BF0_CH0_REG register + * DMA_IN_DSCR_BF0_CH0_REG. + */ + +#define DMA_IN_DSCR_BF0_CH0_REG (DR_REG_GDMA_BASE + 0x94) + +/* DMA_INLINK_DSCR_BF0_CH0 : RO; bitpos: [31:0]; default: 0; + * The address of the last inlink descriptor x-1. + */ + +#define DMA_INLINK_DSCR_BF0_CH0 0xFFFFFFFF +#define DMA_INLINK_DSCR_BF0_CH0_M (DMA_INLINK_DSCR_BF0_CH0_V << DMA_INLINK_DSCR_BF0_CH0_S) +#define DMA_INLINK_DSCR_BF0_CH0_V 0xFFFFFFFF +#define DMA_INLINK_DSCR_BF0_CH0_S 0 + +/* DMA_IN_DSCR_BF1_CH0_REG register + * DMA_IN_DSCR_BF1_CH0_REG. + */ + +#define DMA_IN_DSCR_BF1_CH0_REG (DR_REG_GDMA_BASE + 0x98) + +/* DMA_INLINK_DSCR_BF1_CH0 : RO; bitpos: [31:0]; default: 0; + * The address of the second-to-last inlink descriptor x-2. + */ + +#define DMA_INLINK_DSCR_BF1_CH0 0xFFFFFFFF +#define DMA_INLINK_DSCR_BF1_CH0_M (DMA_INLINK_DSCR_BF1_CH0_V << DMA_INLINK_DSCR_BF1_CH0_S) +#define DMA_INLINK_DSCR_BF1_CH0_V 0xFFFFFFFF +#define DMA_INLINK_DSCR_BF1_CH0_S 0 + +/* DMA_IN_PRI_CH0_REG register + * DMA_IN_PRI_CH0_REG. + */ + +#define DMA_IN_PRI_CH0_REG (DR_REG_GDMA_BASE + 0x9c) + +/* DMA_RX_PRI_CH0 : R/W; bitpos: [3:0]; default: 0; + * The priority of Rx channel 0. The larger of the value, the higher of the + * priority. + */ + +#define DMA_RX_PRI_CH0 0x0000000F +#define DMA_RX_PRI_CH0_M (DMA_RX_PRI_CH0_V << DMA_RX_PRI_CH0_S) +#define DMA_RX_PRI_CH0_V 0x0000000F +#define DMA_RX_PRI_CH0_S 0 + +/* DMA_IN_PERI_SEL_CH0_REG register + * DMA_IN_PERI_SEL_CH0_REG. + */ + +#define DMA_IN_PERI_SEL_CH0_REG (DR_REG_GDMA_BASE + 0xa0) + +/* DMA_PERI_IN_SEL_CH0 : R/W; bitpos: [5:0]; default: 63; + * This register is used to select peripheral for Rx channel 0. 0:SPI2. 1: + * reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: + * ADC_DAC. + */ + +#define DMA_PERI_IN_SEL_CH0 0x0000003F +#define DMA_PERI_IN_SEL_CH0_M (DMA_PERI_IN_SEL_CH0_V << DMA_PERI_IN_SEL_CH0_S) +#define DMA_PERI_IN_SEL_CH0_V 0x0000003F +#define DMA_PERI_IN_SEL_CH0_S 0 + +/* DMA_OUT_CONF0_CH0_REG register + * DMA_OUT_CONF0_CH0_REG. + */ + +#define DMA_OUT_CONF0_CH0_REG (DR_REG_GDMA_BASE + 0xd0) + +/* DMA_OUT_DATA_BURST_EN_CH0 : R/W; bitpos: [5]; default: 0; + * Set this bit to 1 to enable INCR burst transfer for Tx channel 0 + * transmitting data when accessing internal SRAM. + */ + +#define DMA_OUT_DATA_BURST_EN_CH0 (BIT(5)) +#define DMA_OUT_DATA_BURST_EN_CH0_M (DMA_OUT_DATA_BURST_EN_CH0_V << DMA_OUT_DATA_BURST_EN_CH0_S) +#define DMA_OUT_DATA_BURST_EN_CH0_V 0x00000001 +#define DMA_OUT_DATA_BURST_EN_CH0_S 5 + +/* DMA_OUTDSCR_BURST_EN_CH0 : R/W; bitpos: [4]; default: 0; + * Set this bit to 1 to enable INCR burst transfer for Tx channel 0 reading + * link descriptor when accessing internal SRAM. + */ + +#define DMA_OUTDSCR_BURST_EN_CH0 (BIT(4)) +#define DMA_OUTDSCR_BURST_EN_CH0_M (DMA_OUTDSCR_BURST_EN_CH0_V << DMA_OUTDSCR_BURST_EN_CH0_S) +#define DMA_OUTDSCR_BURST_EN_CH0_V 0x00000001 +#define DMA_OUTDSCR_BURST_EN_CH0_S 4 + +/* DMA_OUT_EOF_MODE_CH0 : R/W; bitpos: [3]; default: 1; + * EOF flag generation mode when transmitting data. 1: EOF flag for Tx + * channel 0 is generated when data need to transmit has been popped from + * FIFO in DMA + */ + +#define DMA_OUT_EOF_MODE_CH0 (BIT(3)) +#define DMA_OUT_EOF_MODE_CH0_M (DMA_OUT_EOF_MODE_CH0_V << DMA_OUT_EOF_MODE_CH0_S) +#define DMA_OUT_EOF_MODE_CH0_V 0x00000001 +#define DMA_OUT_EOF_MODE_CH0_S 3 + +/* DMA_OUT_AUTO_WRBACK_CH0 : R/W; bitpos: [2]; default: 0; + * Set this bit to enable automatic outlink-writeback when all the data in + * tx buffer has been transmitted. + */ + +#define DMA_OUT_AUTO_WRBACK_CH0 (BIT(2)) +#define DMA_OUT_AUTO_WRBACK_CH0_M (DMA_OUT_AUTO_WRBACK_CH0_V << DMA_OUT_AUTO_WRBACK_CH0_S) +#define DMA_OUT_AUTO_WRBACK_CH0_V 0x00000001 +#define DMA_OUT_AUTO_WRBACK_CH0_S 2 + +/* DMA_OUT_LOOP_TEST_CH0 : R/W; bitpos: [1]; default: 0; + * reserved + */ + +#define DMA_OUT_LOOP_TEST_CH0 (BIT(1)) +#define DMA_OUT_LOOP_TEST_CH0_M (DMA_OUT_LOOP_TEST_CH0_V << DMA_OUT_LOOP_TEST_CH0_S) +#define DMA_OUT_LOOP_TEST_CH0_V 0x00000001 +#define DMA_OUT_LOOP_TEST_CH0_S 1 + +/* DMA_OUT_RST_CH0 : R/W; bitpos: [0]; default: 0; + * This bit is used to reset DMA channel 0 Tx FSM and Tx FIFO pointer. + */ + +#define DMA_OUT_RST_CH0 (BIT(0)) +#define DMA_OUT_RST_CH0_M (DMA_OUT_RST_CH0_V << DMA_OUT_RST_CH0_S) +#define DMA_OUT_RST_CH0_V 0x00000001 +#define DMA_OUT_RST_CH0_S 0 + +/* DMA_OUT_CONF1_CH0_REG register + * DMA_OUT_CONF1_CH0_REG. + */ + +#define DMA_OUT_CONF1_CH0_REG (DR_REG_GDMA_BASE + 0xd4) + +/* DMA_OUT_CHECK_OWNER_CH0 : R/W; bitpos: [12]; default: 0; + * Set this bit to enable checking the owner attribute of the link + * descriptor. + */ + +#define DMA_OUT_CHECK_OWNER_CH0 (BIT(12)) +#define DMA_OUT_CHECK_OWNER_CH0_M (DMA_OUT_CHECK_OWNER_CH0_V << DMA_OUT_CHECK_OWNER_CH0_S) +#define DMA_OUT_CHECK_OWNER_CH0_V 0x00000001 +#define DMA_OUT_CHECK_OWNER_CH0_S 12 + +/* DMA_OUTFIFO_STATUS_CH0_REG register + * DMA_OUTFIFO_STATUS_CH0_REG. + */ + +#define DMA_OUTFIFO_STATUS_CH0_REG (DR_REG_GDMA_BASE + 0xd8) + +/* DMA_OUT_REMAIN_UNDER_4B_CH0 : RO; bitpos: [26]; default: 1; + * reserved + */ + +#define DMA_OUT_REMAIN_UNDER_4B_CH0 (BIT(26)) +#define DMA_OUT_REMAIN_UNDER_4B_CH0_M (DMA_OUT_REMAIN_UNDER_4B_CH0_V << DMA_OUT_REMAIN_UNDER_4B_CH0_S) +#define DMA_OUT_REMAIN_UNDER_4B_CH0_V 0x00000001 +#define DMA_OUT_REMAIN_UNDER_4B_CH0_S 26 + +/* DMA_OUT_REMAIN_UNDER_3B_CH0 : RO; bitpos: [25]; default: 1; + * reserved + */ + +#define DMA_OUT_REMAIN_UNDER_3B_CH0 (BIT(25)) +#define DMA_OUT_REMAIN_UNDER_3B_CH0_M (DMA_OUT_REMAIN_UNDER_3B_CH0_V << DMA_OUT_REMAIN_UNDER_3B_CH0_S) +#define DMA_OUT_REMAIN_UNDER_3B_CH0_V 0x00000001 +#define DMA_OUT_REMAIN_UNDER_3B_CH0_S 25 + +/* DMA_OUT_REMAIN_UNDER_2B_CH0 : RO; bitpos: [24]; default: 1; + * reserved + */ + +#define DMA_OUT_REMAIN_UNDER_2B_CH0 (BIT(24)) +#define DMA_OUT_REMAIN_UNDER_2B_CH0_M (DMA_OUT_REMAIN_UNDER_2B_CH0_V << DMA_OUT_REMAIN_UNDER_2B_CH0_S) +#define DMA_OUT_REMAIN_UNDER_2B_CH0_V 0x00000001 +#define DMA_OUT_REMAIN_UNDER_2B_CH0_S 24 + +/* DMA_OUT_REMAIN_UNDER_1B_CH0 : RO; bitpos: [23]; default: 1; + * reserved + */ + +#define DMA_OUT_REMAIN_UNDER_1B_CH0 (BIT(23)) +#define DMA_OUT_REMAIN_UNDER_1B_CH0_M (DMA_OUT_REMAIN_UNDER_1B_CH0_V << DMA_OUT_REMAIN_UNDER_1B_CH0_S) +#define DMA_OUT_REMAIN_UNDER_1B_CH0_V 0x00000001 +#define DMA_OUT_REMAIN_UNDER_1B_CH0_S 23 + +/* DMA_OUTFIFO_CNT_CH0 : RO; bitpos: [7:2]; default: 0; + * The register stores the byte number of the data in L1 Tx FIFO for Tx + * channel 0. + */ + +#define DMA_OUTFIFO_CNT_CH0 0x0000003F +#define DMA_OUTFIFO_CNT_CH0_M (DMA_OUTFIFO_CNT_CH0_V << DMA_OUTFIFO_CNT_CH0_S) +#define DMA_OUTFIFO_CNT_CH0_V 0x0000003F +#define DMA_OUTFIFO_CNT_CH0_S 2 + +/* DMA_OUTFIFO_EMPTY_CH0 : RO; bitpos: [1]; default: 1; + * L1 Tx FIFO empty signal for Tx channel 0. + */ + +#define DMA_OUTFIFO_EMPTY_CH0 (BIT(1)) +#define DMA_OUTFIFO_EMPTY_CH0_M (DMA_OUTFIFO_EMPTY_CH0_V << DMA_OUTFIFO_EMPTY_CH0_S) +#define DMA_OUTFIFO_EMPTY_CH0_V 0x00000001 +#define DMA_OUTFIFO_EMPTY_CH0_S 1 + +/* DMA_OUTFIFO_FULL_CH0 : RO; bitpos: [0]; default: 0; + * L1 Tx FIFO full signal for Tx channel 0. + */ + +#define DMA_OUTFIFO_FULL_CH0 (BIT(0)) +#define DMA_OUTFIFO_FULL_CH0_M (DMA_OUTFIFO_FULL_CH0_V << DMA_OUTFIFO_FULL_CH0_S) +#define DMA_OUTFIFO_FULL_CH0_V 0x00000001 +#define DMA_OUTFIFO_FULL_CH0_S 0 + +/* DMA_OUT_PUSH_CH0_REG register + * DMA_OUT_PUSH_CH0_REG. + */ + +#define DMA_OUT_PUSH_CH0_REG (DR_REG_GDMA_BASE + 0xdc) + +/* DMA_OUTFIFO_PUSH_CH0 : R/W/SC; bitpos: [9]; default: 0; + * Set this bit to push data into DMA FIFO. + */ + +#define DMA_OUTFIFO_PUSH_CH0 (BIT(9)) +#define DMA_OUTFIFO_PUSH_CH0_M (DMA_OUTFIFO_PUSH_CH0_V << DMA_OUTFIFO_PUSH_CH0_S) +#define DMA_OUTFIFO_PUSH_CH0_V 0x00000001 +#define DMA_OUTFIFO_PUSH_CH0_S 9 + +/* DMA_OUTFIFO_WDATA_CH0 : R/W; bitpos: [8:0]; default: 0; + * This register stores the data that need to be pushed into DMA FIFO. + */ + +#define DMA_OUTFIFO_WDATA_CH0 0x000001FF +#define DMA_OUTFIFO_WDATA_CH0_M (DMA_OUTFIFO_WDATA_CH0_V << DMA_OUTFIFO_WDATA_CH0_S) +#define DMA_OUTFIFO_WDATA_CH0_V 0x000001FF +#define DMA_OUTFIFO_WDATA_CH0_S 0 + +/* DMA_OUT_LINK_CH0_REG register + * DMA_OUT_LINK_CH0_REG. + */ + +#define DMA_OUT_LINK_CH0_REG (DR_REG_GDMA_BASE + 0xe0) + +/* DMA_OUTLINK_PARK_CH0 : RO; bitpos: [23]; default: 1; + * 1: the outlink descriptor's FSM is in idle state. 0: the outlink + * descriptor's FSM is working. + */ + +#define DMA_OUTLINK_PARK_CH0 (BIT(23)) +#define DMA_OUTLINK_PARK_CH0_M (DMA_OUTLINK_PARK_CH0_V << DMA_OUTLINK_PARK_CH0_S) +#define DMA_OUTLINK_PARK_CH0_V 0x00000001 +#define DMA_OUTLINK_PARK_CH0_S 23 + +/* DMA_OUTLINK_RESTART_CH0 : R/W/SC; bitpos: [22]; default: 0; + * Set this bit to restart a new outlink from the last address. + */ + +#define DMA_OUTLINK_RESTART_CH0 (BIT(22)) +#define DMA_OUTLINK_RESTART_CH0_M (DMA_OUTLINK_RESTART_CH0_V << DMA_OUTLINK_RESTART_CH0_S) +#define DMA_OUTLINK_RESTART_CH0_V 0x00000001 +#define DMA_OUTLINK_RESTART_CH0_S 22 + +/* DMA_OUTLINK_START_CH0 : R/W/SC; bitpos: [21]; default: 0; + * Set this bit to start dealing with the outlink descriptors. + */ + +#define DMA_OUTLINK_START_CH0 (BIT(21)) +#define DMA_OUTLINK_START_CH0_M (DMA_OUTLINK_START_CH0_V << DMA_OUTLINK_START_CH0_S) +#define DMA_OUTLINK_START_CH0_V 0x00000001 +#define DMA_OUTLINK_START_CH0_S 21 + +/* DMA_OUTLINK_STOP_CH0 : R/W/SC; bitpos: [20]; default: 0; + * Set this bit to stop dealing with the outlink descriptors. + */ + +#define DMA_OUTLINK_STOP_CH0 (BIT(20)) +#define DMA_OUTLINK_STOP_CH0_M (DMA_OUTLINK_STOP_CH0_V << DMA_OUTLINK_STOP_CH0_S) +#define DMA_OUTLINK_STOP_CH0_V 0x00000001 +#define DMA_OUTLINK_STOP_CH0_S 20 + +/* DMA_OUTLINK_ADDR_CH0 : R/W; bitpos: [19:0]; default: 0; + * This register stores the 20 least significant bits of the first outlink + * descriptor's address. + */ + +#define DMA_OUTLINK_ADDR_CH0 0x000FFFFF +#define DMA_OUTLINK_ADDR_CH0_M (DMA_OUTLINK_ADDR_CH0_V << DMA_OUTLINK_ADDR_CH0_S) +#define DMA_OUTLINK_ADDR_CH0_V 0x000FFFFF +#define DMA_OUTLINK_ADDR_CH0_S 0 + +/* DMA_OUT_STATE_CH0_REG register + * DMA_OUT_STATE_CH0_REG. + */ + +#define DMA_OUT_STATE_CH0_REG (DR_REG_GDMA_BASE + 0xe4) + +/* DMA_OUT_STATE_CH0 : RO; bitpos: [22:20]; default: 0; + * reserved + */ + +#define DMA_OUT_STATE_CH0 0x00000007 +#define DMA_OUT_STATE_CH0_M (DMA_OUT_STATE_CH0_V << DMA_OUT_STATE_CH0_S) +#define DMA_OUT_STATE_CH0_V 0x00000007 +#define DMA_OUT_STATE_CH0_S 20 + +/* DMA_OUT_DSCR_STATE_CH0 : RO; bitpos: [19:18]; default: 0; + * reserved + */ + +#define DMA_OUT_DSCR_STATE_CH0 0x00000003 +#define DMA_OUT_DSCR_STATE_CH0_M (DMA_OUT_DSCR_STATE_CH0_V << DMA_OUT_DSCR_STATE_CH0_S) +#define DMA_OUT_DSCR_STATE_CH0_V 0x00000003 +#define DMA_OUT_DSCR_STATE_CH0_S 18 + +/* DMA_OUTLINK_DSCR_ADDR_CH0 : RO; bitpos: [17:0]; default: 0; + * This register stores the current outlink descriptor's address. + */ + +#define DMA_OUTLINK_DSCR_ADDR_CH0 0x0003FFFF +#define DMA_OUTLINK_DSCR_ADDR_CH0_M (DMA_OUTLINK_DSCR_ADDR_CH0_V << DMA_OUTLINK_DSCR_ADDR_CH0_S) +#define DMA_OUTLINK_DSCR_ADDR_CH0_V 0x0003FFFF +#define DMA_OUTLINK_DSCR_ADDR_CH0_S 0 + +/* DMA_OUT_EOF_DES_ADDR_CH0_REG register + * DMA_OUT_EOF_DES_ADDR_CH0_REG. + */ + +#define DMA_OUT_EOF_DES_ADDR_CH0_REG (DR_REG_GDMA_BASE + 0xe8) + +/* DMA_OUT_EOF_DES_ADDR_CH0 : RO; bitpos: [31:0]; default: 0; + * This register stores the address of the outlink descriptor when the EOF + * bit in this descriptor is 1. + */ + +#define DMA_OUT_EOF_DES_ADDR_CH0 0xFFFFFFFF +#define DMA_OUT_EOF_DES_ADDR_CH0_M (DMA_OUT_EOF_DES_ADDR_CH0_V << DMA_OUT_EOF_DES_ADDR_CH0_S) +#define DMA_OUT_EOF_DES_ADDR_CH0_V 0xFFFFFFFF +#define DMA_OUT_EOF_DES_ADDR_CH0_S 0 + +/* DMA_OUT_EOF_BFR_DES_ADDR_CH0_REG register + * DMA_OUT_EOF_BFR_DES_ADDR_CH0_REG. + */ + +#define DMA_OUT_EOF_BFR_DES_ADDR_CH0_REG (DR_REG_GDMA_BASE + 0xec) + +/* DMA_OUT_EOF_BFR_DES_ADDR_CH0 : RO; bitpos: [31:0]; default: 0; + * This register stores the address of the outlink descriptor before the + * last outlink descriptor. + */ + +#define DMA_OUT_EOF_BFR_DES_ADDR_CH0 0xFFFFFFFF +#define DMA_OUT_EOF_BFR_DES_ADDR_CH0_M (DMA_OUT_EOF_BFR_DES_ADDR_CH0_V << DMA_OUT_EOF_BFR_DES_ADDR_CH0_S) +#define DMA_OUT_EOF_BFR_DES_ADDR_CH0_V 0xFFFFFFFF +#define DMA_OUT_EOF_BFR_DES_ADDR_CH0_S 0 + +/* DMA_OUT_DSCR_CH0_REG register + * DMA_OUT_DSCR_CH0_REG. + */ + +#define DMA_OUT_DSCR_CH0_REG (DR_REG_GDMA_BASE + 0xf0) + +/* DMA_OUTLINK_DSCR_CH0 : RO; bitpos: [31:0]; default: 0; + * The address of the current outlink descriptor y. + */ + +#define DMA_OUTLINK_DSCR_CH0 0xFFFFFFFF +#define DMA_OUTLINK_DSCR_CH0_M (DMA_OUTLINK_DSCR_CH0_V << DMA_OUTLINK_DSCR_CH0_S) +#define DMA_OUTLINK_DSCR_CH0_V 0xFFFFFFFF +#define DMA_OUTLINK_DSCR_CH0_S 0 + +/* DMA_OUT_DSCR_BF0_CH0_REG register + * DMA_OUT_DSCR_BF0_CH0_REG. + */ + +#define DMA_OUT_DSCR_BF0_CH0_REG (DR_REG_GDMA_BASE + 0xf4) + +/* DMA_OUTLINK_DSCR_BF0_CH0 : RO; bitpos: [31:0]; default: 0; + * The address of the last outlink descriptor y-1. + */ + +#define DMA_OUTLINK_DSCR_BF0_CH0 0xFFFFFFFF +#define DMA_OUTLINK_DSCR_BF0_CH0_M (DMA_OUTLINK_DSCR_BF0_CH0_V << DMA_OUTLINK_DSCR_BF0_CH0_S) +#define DMA_OUTLINK_DSCR_BF0_CH0_V 0xFFFFFFFF +#define DMA_OUTLINK_DSCR_BF0_CH0_S 0 + +/* DMA_OUT_DSCR_BF1_CH0_REG register + * DMA_OUT_DSCR_BF1_CH0_REG. + */ + +#define DMA_OUT_DSCR_BF1_CH0_REG (DR_REG_GDMA_BASE + 0xf8) + +/* DMA_OUTLINK_DSCR_BF1_CH0 : RO; bitpos: [31:0]; default: 0; + * The address of the second-to-last inlink descriptor x-2. + */ + +#define DMA_OUTLINK_DSCR_BF1_CH0 0xFFFFFFFF +#define DMA_OUTLINK_DSCR_BF1_CH0_M (DMA_OUTLINK_DSCR_BF1_CH0_V << DMA_OUTLINK_DSCR_BF1_CH0_S) +#define DMA_OUTLINK_DSCR_BF1_CH0_V 0xFFFFFFFF +#define DMA_OUTLINK_DSCR_BF1_CH0_S 0 + +/* DMA_OUT_PRI_CH0_REG register + * DMA_OUT_PRI_CH0_REG. + */ + +#define DMA_OUT_PRI_CH0_REG (DR_REG_GDMA_BASE + 0xfc) + +/* DMA_TX_PRI_CH0 : R/W; bitpos: [3:0]; default: 0; + * The priority of Tx channel 0. The larger of the value, the higher of the + * priority. + */ + +#define DMA_TX_PRI_CH0 0x0000000F +#define DMA_TX_PRI_CH0_M (DMA_TX_PRI_CH0_V << DMA_TX_PRI_CH0_S) +#define DMA_TX_PRI_CH0_V 0x0000000F +#define DMA_TX_PRI_CH0_S 0 + +/* DMA_OUT_PERI_SEL_CH0_REG register + * DMA_OUT_PERI_SEL_CH0_REG. + */ + +#define DMA_OUT_PERI_SEL_CH0_REG (DR_REG_GDMA_BASE + 0x100) + +/* DMA_PERI_OUT_SEL_CH0 : R/W; bitpos: [5:0]; default: 63; + * This register is used to select peripheral for Tx channel 0. 0:SPI2. 1: + * reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: + * ADC_DAC. + */ + +#define DMA_PERI_OUT_SEL_CH0 0x0000003F +#define DMA_PERI_OUT_SEL_CH0_M (DMA_PERI_OUT_SEL_CH0_V << DMA_PERI_OUT_SEL_CH0_S) +#define DMA_PERI_OUT_SEL_CH0_V 0x0000003F +#define DMA_PERI_OUT_SEL_CH0_S 0 + +/* DMA_IN_CONF0_CH1_REG register + * DMA_IN_CONF0_CH1_REG. + */ + +#define DMA_IN_CONF0_CH1_REG (DR_REG_GDMA_BASE + 0x130) + +/* DMA_MEM_TRANS_EN_CH1 : R/W; bitpos: [4]; default: 0; + * Set this bit 1 to enable automatic transmitting data from memory to + * memory via DMA. + */ + +#define DMA_MEM_TRANS_EN_CH1 (BIT(4)) +#define DMA_MEM_TRANS_EN_CH1_M (DMA_MEM_TRANS_EN_CH1_V << DMA_MEM_TRANS_EN_CH1_S) +#define DMA_MEM_TRANS_EN_CH1_V 0x00000001 +#define DMA_MEM_TRANS_EN_CH1_S 4 + +/* DMA_IN_DATA_BURST_EN_CH1 : R/W; bitpos: [3]; default: 0; + * Set this bit to 1 to enable INCR burst transfer for Rx channel 1 + * receiving data when accessing internal SRAM. + */ + +#define DMA_IN_DATA_BURST_EN_CH1 (BIT(3)) +#define DMA_IN_DATA_BURST_EN_CH1_M (DMA_IN_DATA_BURST_EN_CH1_V << DMA_IN_DATA_BURST_EN_CH1_S) +#define DMA_IN_DATA_BURST_EN_CH1_V 0x00000001 +#define DMA_IN_DATA_BURST_EN_CH1_S 3 + +/* DMA_INDSCR_BURST_EN_CH1 : R/W; bitpos: [2]; default: 0; + * Set this bit to 1 to enable INCR burst transfer for Rx channel 1 reading + * link descriptor when accessing internal SRAM. + */ + +#define DMA_INDSCR_BURST_EN_CH1 (BIT(2)) +#define DMA_INDSCR_BURST_EN_CH1_M (DMA_INDSCR_BURST_EN_CH1_V << DMA_INDSCR_BURST_EN_CH1_S) +#define DMA_INDSCR_BURST_EN_CH1_V 0x00000001 +#define DMA_INDSCR_BURST_EN_CH1_S 2 + +/* DMA_IN_LOOP_TEST_CH1 : R/W; bitpos: [1]; default: 0; + * reserved + */ + +#define DMA_IN_LOOP_TEST_CH1 (BIT(1)) +#define DMA_IN_LOOP_TEST_CH1_M (DMA_IN_LOOP_TEST_CH1_V << DMA_IN_LOOP_TEST_CH1_S) +#define DMA_IN_LOOP_TEST_CH1_V 0x00000001 +#define DMA_IN_LOOP_TEST_CH1_S 1 + +/* DMA_IN_RST_CH1 : R/W; bitpos: [0]; default: 0; + * This bit is used to reset DMA channel 1 Rx FSM and Rx FIFO pointer. + */ + +#define DMA_IN_RST_CH1 (BIT(0)) +#define DMA_IN_RST_CH1_M (DMA_IN_RST_CH1_V << DMA_IN_RST_CH1_S) +#define DMA_IN_RST_CH1_V 0x00000001 +#define DMA_IN_RST_CH1_S 0 + +/* DMA_IN_CONF1_CH1_REG register + * DMA_IN_CONF1_CH1_REG. + */ + +#define DMA_IN_CONF1_CH1_REG (DR_REG_GDMA_BASE + 0x134) + +/* DMA_IN_CHECK_OWNER_CH1 : R/W; bitpos: [12]; default: 0; + * Set this bit to enable checking the owner attribute of the link + * descriptor. + */ + +#define DMA_IN_CHECK_OWNER_CH1 (BIT(12)) +#define DMA_IN_CHECK_OWNER_CH1_M (DMA_IN_CHECK_OWNER_CH1_V << DMA_IN_CHECK_OWNER_CH1_S) +#define DMA_IN_CHECK_OWNER_CH1_V 0x00000001 +#define DMA_IN_CHECK_OWNER_CH1_S 12 + +/* DMA_INFIFO_STATUS_CH1_REG register + * DMA_INFIFO_STATUS_CH1_REG. + */ + +#define DMA_INFIFO_STATUS_CH1_REG (DR_REG_GDMA_BASE + 0x138) + +/* DMA_IN_BUF_HUNGRY_CH1 : RO; bitpos: [27]; default: 0; + * reserved + */ + +#define DMA_IN_BUF_HUNGRY_CH1 (BIT(27)) +#define DMA_IN_BUF_HUNGRY_CH1_M (DMA_IN_BUF_HUNGRY_CH1_V << DMA_IN_BUF_HUNGRY_CH1_S) +#define DMA_IN_BUF_HUNGRY_CH1_V 0x00000001 +#define DMA_IN_BUF_HUNGRY_CH1_S 27 + +/* DMA_IN_REMAIN_UNDER_4B_CH1 : RO; bitpos: [26]; default: 1; + * reserved + */ + +#define DMA_IN_REMAIN_UNDER_4B_CH1 (BIT(26)) +#define DMA_IN_REMAIN_UNDER_4B_CH1_M (DMA_IN_REMAIN_UNDER_4B_CH1_V << DMA_IN_REMAIN_UNDER_4B_CH1_S) +#define DMA_IN_REMAIN_UNDER_4B_CH1_V 0x00000001 +#define DMA_IN_REMAIN_UNDER_4B_CH1_S 26 + +/* DMA_IN_REMAIN_UNDER_3B_CH1 : RO; bitpos: [25]; default: 1; + * reserved + */ + +#define DMA_IN_REMAIN_UNDER_3B_CH1 (BIT(25)) +#define DMA_IN_REMAIN_UNDER_3B_CH1_M (DMA_IN_REMAIN_UNDER_3B_CH1_V << DMA_IN_REMAIN_UNDER_3B_CH1_S) +#define DMA_IN_REMAIN_UNDER_3B_CH1_V 0x00000001 +#define DMA_IN_REMAIN_UNDER_3B_CH1_S 25 + +/* DMA_IN_REMAIN_UNDER_2B_CH1 : RO; bitpos: [24]; default: 1; + * reserved + */ + +#define DMA_IN_REMAIN_UNDER_2B_CH1 (BIT(24)) +#define DMA_IN_REMAIN_UNDER_2B_CH1_M (DMA_IN_REMAIN_UNDER_2B_CH1_V << DMA_IN_REMAIN_UNDER_2B_CH1_S) +#define DMA_IN_REMAIN_UNDER_2B_CH1_V 0x00000001 +#define DMA_IN_REMAIN_UNDER_2B_CH1_S 24 + +/* DMA_IN_REMAIN_UNDER_1B_CH1 : RO; bitpos: [23]; default: 1; + * reserved + */ + +#define DMA_IN_REMAIN_UNDER_1B_CH1 (BIT(23)) +#define DMA_IN_REMAIN_UNDER_1B_CH1_M (DMA_IN_REMAIN_UNDER_1B_CH1_V << DMA_IN_REMAIN_UNDER_1B_CH1_S) +#define DMA_IN_REMAIN_UNDER_1B_CH1_V 0x00000001 +#define DMA_IN_REMAIN_UNDER_1B_CH1_S 23 + +/* DMA_INFIFO_CNT_CH1 : RO; bitpos: [7:2]; default: 0; + * The register stores the byte number of the data in L1 Rx FIFO for Rx + * channel 1. + */ + +#define DMA_INFIFO_CNT_CH1 0x0000003F +#define DMA_INFIFO_CNT_CH1_M (DMA_INFIFO_CNT_CH1_V << DMA_INFIFO_CNT_CH1_S) +#define DMA_INFIFO_CNT_CH1_V 0x0000003F +#define DMA_INFIFO_CNT_CH1_S 2 + +/* DMA_INFIFO_EMPTY_CH1 : RO; bitpos: [1]; default: 1; + * L1 Rx FIFO empty signal for Rx channel 1. + */ + +#define DMA_INFIFO_EMPTY_CH1 (BIT(1)) +#define DMA_INFIFO_EMPTY_CH1_M (DMA_INFIFO_EMPTY_CH1_V << DMA_INFIFO_EMPTY_CH1_S) +#define DMA_INFIFO_EMPTY_CH1_V 0x00000001 +#define DMA_INFIFO_EMPTY_CH1_S 1 + +/* DMA_INFIFO_FULL_CH1 : RO; bitpos: [0]; default: 1; + * L1 Rx FIFO full signal for Rx channel 1. + */ + +#define DMA_INFIFO_FULL_CH1 (BIT(0)) +#define DMA_INFIFO_FULL_CH1_M (DMA_INFIFO_FULL_CH1_V << DMA_INFIFO_FULL_CH1_S) +#define DMA_INFIFO_FULL_CH1_V 0x00000001 +#define DMA_INFIFO_FULL_CH1_S 0 + +/* DMA_IN_POP_CH1_REG register + * DMA_IN_POP_CH1_REG. + */ + +#define DMA_IN_POP_CH1_REG (DR_REG_GDMA_BASE + 0x13c) + +/* DMA_INFIFO_POP_CH1 : R/W/SC; bitpos: [12]; default: 0; + * Set this bit to pop data from DMA FIFO. + */ + +#define DMA_INFIFO_POP_CH1 (BIT(12)) +#define DMA_INFIFO_POP_CH1_M (DMA_INFIFO_POP_CH1_V << DMA_INFIFO_POP_CH1_S) +#define DMA_INFIFO_POP_CH1_V 0x00000001 +#define DMA_INFIFO_POP_CH1_S 12 + +/* DMA_INFIFO_RDATA_CH1 : RO; bitpos: [11:0]; default: 2048; + * This register stores the data popping from DMA FIFO. + */ + +#define DMA_INFIFO_RDATA_CH1 0x00000FFF +#define DMA_INFIFO_RDATA_CH1_M (DMA_INFIFO_RDATA_CH1_V << DMA_INFIFO_RDATA_CH1_S) +#define DMA_INFIFO_RDATA_CH1_V 0x00000FFF +#define DMA_INFIFO_RDATA_CH1_S 0 + +/* DMA_IN_LINK_CH1_REG register + * DMA_IN_LINK_CH1_REG. + */ + +#define DMA_IN_LINK_CH1_REG (DR_REG_GDMA_BASE + 0x140) + +/* DMA_INLINK_PARK_CH1 : RO; bitpos: [24]; default: 1; + * 1: the inlink descriptor's FSM is in idle state. 0: the inlink + * descriptor's FSM is working. + */ + +#define DMA_INLINK_PARK_CH1 (BIT(24)) +#define DMA_INLINK_PARK_CH1_M (DMA_INLINK_PARK_CH1_V << DMA_INLINK_PARK_CH1_S) +#define DMA_INLINK_PARK_CH1_V 0x00000001 +#define DMA_INLINK_PARK_CH1_S 24 + +/* DMA_INLINK_RESTART_CH1 : R/W/SC; bitpos: [23]; default: 0; + * Set this bit to mount a new inlink descriptor. + */ + +#define DMA_INLINK_RESTART_CH1 (BIT(23)) +#define DMA_INLINK_RESTART_CH1_M (DMA_INLINK_RESTART_CH1_V << DMA_INLINK_RESTART_CH1_S) +#define DMA_INLINK_RESTART_CH1_V 0x00000001 +#define DMA_INLINK_RESTART_CH1_S 23 + +/* DMA_INLINK_START_CH1 : R/W/SC; bitpos: [22]; default: 0; + * Set this bit to start dealing with the inlink descriptors. + */ + +#define DMA_INLINK_START_CH1 (BIT(22)) +#define DMA_INLINK_START_CH1_M (DMA_INLINK_START_CH1_V << DMA_INLINK_START_CH1_S) +#define DMA_INLINK_START_CH1_V 0x00000001 +#define DMA_INLINK_START_CH1_S 22 + +/* DMA_INLINK_STOP_CH1 : R/W/SC; bitpos: [21]; default: 0; + * Set this bit to stop dealing with the inlink descriptors. + */ + +#define DMA_INLINK_STOP_CH1 (BIT(21)) +#define DMA_INLINK_STOP_CH1_M (DMA_INLINK_STOP_CH1_V << DMA_INLINK_STOP_CH1_S) +#define DMA_INLINK_STOP_CH1_V 0x00000001 +#define DMA_INLINK_STOP_CH1_S 21 + +/* DMA_INLINK_AUTO_RET_CH1 : R/W; bitpos: [20]; default: 1; + * Set this bit to return to current inlink descriptor's address, when there + * are some errors in current receiving data. + */ + +#define DMA_INLINK_AUTO_RET_CH1 (BIT(20)) +#define DMA_INLINK_AUTO_RET_CH1_M (DMA_INLINK_AUTO_RET_CH1_V << DMA_INLINK_AUTO_RET_CH1_S) +#define DMA_INLINK_AUTO_RET_CH1_V 0x00000001 +#define DMA_INLINK_AUTO_RET_CH1_S 20 + +/* DMA_INLINK_ADDR_CH1 : R/W; bitpos: [19:0]; default: 0; + * This register stores the 20 least significant bits of the first inlink + * descriptor's address. + */ + +#define DMA_INLINK_ADDR_CH1 0x000FFFFF +#define DMA_INLINK_ADDR_CH1_M (DMA_INLINK_ADDR_CH1_V << DMA_INLINK_ADDR_CH1_S) +#define DMA_INLINK_ADDR_CH1_V 0x000FFFFF +#define DMA_INLINK_ADDR_CH1_S 0 + +/* DMA_IN_STATE_CH1_REG register + * DMA_IN_STATE_CH1_REG. + */ + +#define DMA_IN_STATE_CH1_REG (DR_REG_GDMA_BASE + 0x144) + +/* DMA_IN_STATE_CH1 : RO; bitpos: [22:20]; default: 0; + * reserved + */ + +#define DMA_IN_STATE_CH1 0x00000007 +#define DMA_IN_STATE_CH1_M (DMA_IN_STATE_CH1_V << DMA_IN_STATE_CH1_S) +#define DMA_IN_STATE_CH1_V 0x00000007 +#define DMA_IN_STATE_CH1_S 20 + +/* DMA_IN_DSCR_STATE_CH1 : RO; bitpos: [19:18]; default: 0; + * reserved + */ + +#define DMA_IN_DSCR_STATE_CH1 0x00000003 +#define DMA_IN_DSCR_STATE_CH1_M (DMA_IN_DSCR_STATE_CH1_V << DMA_IN_DSCR_STATE_CH1_S) +#define DMA_IN_DSCR_STATE_CH1_V 0x00000003 +#define DMA_IN_DSCR_STATE_CH1_S 18 + +/* DMA_INLINK_DSCR_ADDR_CH1 : RO; bitpos: [17:0]; default: 0; + * This register stores the current inlink descriptor's address. + */ + +#define DMA_INLINK_DSCR_ADDR_CH1 0x0003FFFF +#define DMA_INLINK_DSCR_ADDR_CH1_M (DMA_INLINK_DSCR_ADDR_CH1_V << DMA_INLINK_DSCR_ADDR_CH1_S) +#define DMA_INLINK_DSCR_ADDR_CH1_V 0x0003FFFF +#define DMA_INLINK_DSCR_ADDR_CH1_S 0 + +/* DMA_IN_SUC_EOF_DES_ADDR_CH1_REG register + * DMA_IN_SUC_EOF_DES_ADDR_CH1_REG. + */ + +#define DMA_IN_SUC_EOF_DES_ADDR_CH1_REG (DR_REG_GDMA_BASE + 0x148) + +/* DMA_IN_SUC_EOF_DES_ADDR_CH1 : RO; bitpos: [31:0]; default: 0; + * This register stores the address of the inlink descriptor when the EOF + * bit in this descriptor is 1. + */ + +#define DMA_IN_SUC_EOF_DES_ADDR_CH1 0xFFFFFFFF +#define DMA_IN_SUC_EOF_DES_ADDR_CH1_M (DMA_IN_SUC_EOF_DES_ADDR_CH1_V << DMA_IN_SUC_EOF_DES_ADDR_CH1_S) +#define DMA_IN_SUC_EOF_DES_ADDR_CH1_V 0xFFFFFFFF +#define DMA_IN_SUC_EOF_DES_ADDR_CH1_S 0 + +/* DMA_IN_ERR_EOF_DES_ADDR_CH1_REG register + * DMA_IN_ERR_EOF_DES_ADDR_CH1_REG. + */ + +#define DMA_IN_ERR_EOF_DES_ADDR_CH1_REG (DR_REG_GDMA_BASE + 0x14c) + +/* DMA_IN_ERR_EOF_DES_ADDR_CH1 : RO; bitpos: [31:0]; default: 0; + * This register stores the address of the inlink descriptor when there are + * some errors in current receiving data. Only used when peripheral is UHCI0. + */ + +#define DMA_IN_ERR_EOF_DES_ADDR_CH1 0xFFFFFFFF +#define DMA_IN_ERR_EOF_DES_ADDR_CH1_M (DMA_IN_ERR_EOF_DES_ADDR_CH1_V << DMA_IN_ERR_EOF_DES_ADDR_CH1_S) +#define DMA_IN_ERR_EOF_DES_ADDR_CH1_V 0xFFFFFFFF +#define DMA_IN_ERR_EOF_DES_ADDR_CH1_S 0 + +/* DMA_IN_DSCR_CH1_REG register + * DMA_IN_DSCR_CH1_REG. + */ + +#define DMA_IN_DSCR_CH1_REG (DR_REG_GDMA_BASE + 0x150) + +/* DMA_INLINK_DSCR_CH1 : RO; bitpos: [31:0]; default: 0; + * The address of the current inlink descriptor x. + */ + +#define DMA_INLINK_DSCR_CH1 0xFFFFFFFF +#define DMA_INLINK_DSCR_CH1_M (DMA_INLINK_DSCR_CH1_V << DMA_INLINK_DSCR_CH1_S) +#define DMA_INLINK_DSCR_CH1_V 0xFFFFFFFF +#define DMA_INLINK_DSCR_CH1_S 0 + +/* DMA_IN_DSCR_BF0_CH1_REG register + * DMA_IN_DSCR_BF0_CH1_REG. + */ + +#define DMA_IN_DSCR_BF0_CH1_REG (DR_REG_GDMA_BASE + 0x154) + +/* DMA_INLINK_DSCR_BF0_CH1 : RO; bitpos: [31:0]; default: 0; + * The address of the last inlink descriptor x-1. + */ + +#define DMA_INLINK_DSCR_BF0_CH1 0xFFFFFFFF +#define DMA_INLINK_DSCR_BF0_CH1_M (DMA_INLINK_DSCR_BF0_CH1_V << DMA_INLINK_DSCR_BF0_CH1_S) +#define DMA_INLINK_DSCR_BF0_CH1_V 0xFFFFFFFF +#define DMA_INLINK_DSCR_BF0_CH1_S 0 + +/* DMA_IN_DSCR_BF1_CH1_REG register + * DMA_IN_DSCR_BF1_CH1_REG. + */ + +#define DMA_IN_DSCR_BF1_CH1_REG (DR_REG_GDMA_BASE + 0x158) + +/* DMA_INLINK_DSCR_BF1_CH1 : RO; bitpos: [31:0]; default: 0; + * The address of the second-to-last inlink descriptor x-2. + */ + +#define DMA_INLINK_DSCR_BF1_CH1 0xFFFFFFFF +#define DMA_INLINK_DSCR_BF1_CH1_M (DMA_INLINK_DSCR_BF1_CH1_V << DMA_INLINK_DSCR_BF1_CH1_S) +#define DMA_INLINK_DSCR_BF1_CH1_V 0xFFFFFFFF +#define DMA_INLINK_DSCR_BF1_CH1_S 0 + +/* DMA_IN_PRI_CH1_REG register + * DMA_IN_PRI_CH1_REG. + */ + +#define DMA_IN_PRI_CH1_REG (DR_REG_GDMA_BASE + 0x15c) + +/* DMA_RX_PRI_CH1 : R/W; bitpos: [3:0]; default: 0; + * The priority of Rx channel 1. The larger of the value, the higher of the + * priority. + */ + +#define DMA_RX_PRI_CH1 0x0000000F +#define DMA_RX_PRI_CH1_M (DMA_RX_PRI_CH1_V << DMA_RX_PRI_CH1_S) +#define DMA_RX_PRI_CH1_V 0x0000000F +#define DMA_RX_PRI_CH1_S 0 + +/* DMA_IN_PERI_SEL_CH1_REG register + * DMA_IN_PERI_SEL_CH1_REG. + */ + +#define DMA_IN_PERI_SEL_CH1_REG (DR_REG_GDMA_BASE + 0x160) + +/* DMA_PERI_IN_SEL_CH1 : R/W; bitpos: [5:0]; default: 63; + * This register is used to select peripheral for Rx channel 1. 0:SPI2. 1: + * reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: + * ADC_DAC. + */ + +#define DMA_PERI_IN_SEL_CH1 0x0000003F +#define DMA_PERI_IN_SEL_CH1_M (DMA_PERI_IN_SEL_CH1_V << DMA_PERI_IN_SEL_CH1_S) +#define DMA_PERI_IN_SEL_CH1_V 0x0000003F +#define DMA_PERI_IN_SEL_CH1_S 0 + +/* DMA_OUT_CONF0_CH1_REG register + * DMA_OUT_CONF0_CH1_REG. + */ + +#define DMA_OUT_CONF0_CH1_REG (DR_REG_GDMA_BASE + 0x190) + +/* DMA_OUT_DATA_BURST_EN_CH1 : R/W; bitpos: [5]; default: 0; + * Set this bit to 1 to enable INCR burst transfer for Tx channel 1 + * transmitting data when accessing internal SRAM. + */ + +#define DMA_OUT_DATA_BURST_EN_CH1 (BIT(5)) +#define DMA_OUT_DATA_BURST_EN_CH1_M (DMA_OUT_DATA_BURST_EN_CH1_V << DMA_OUT_DATA_BURST_EN_CH1_S) +#define DMA_OUT_DATA_BURST_EN_CH1_V 0x00000001 +#define DMA_OUT_DATA_BURST_EN_CH1_S 5 + +/* DMA_OUTDSCR_BURST_EN_CH1 : R/W; bitpos: [4]; default: 0; + * Set this bit to 1 to enable INCR burst transfer for Tx channel 1 reading + * link descriptor when accessing internal SRAM. + */ + +#define DMA_OUTDSCR_BURST_EN_CH1 (BIT(4)) +#define DMA_OUTDSCR_BURST_EN_CH1_M (DMA_OUTDSCR_BURST_EN_CH1_V << DMA_OUTDSCR_BURST_EN_CH1_S) +#define DMA_OUTDSCR_BURST_EN_CH1_V 0x00000001 +#define DMA_OUTDSCR_BURST_EN_CH1_S 4 + +/* DMA_OUT_EOF_MODE_CH1 : R/W; bitpos: [3]; default: 1; + * EOF flag generation mode when transmitting data. 1: EOF flag for Tx + * channel 1 is generated when data need to transmit has been popped from + * FIFO in DMA + */ + +#define DMA_OUT_EOF_MODE_CH1 (BIT(3)) +#define DMA_OUT_EOF_MODE_CH1_M (DMA_OUT_EOF_MODE_CH1_V << DMA_OUT_EOF_MODE_CH1_S) +#define DMA_OUT_EOF_MODE_CH1_V 0x00000001 +#define DMA_OUT_EOF_MODE_CH1_S 3 + +/* DMA_OUT_AUTO_WRBACK_CH1 : R/W; bitpos: [2]; default: 0; + * Set this bit to enable automatic outlink-writeback when all the data in + * tx buffer has been transmitted. + */ + +#define DMA_OUT_AUTO_WRBACK_CH1 (BIT(2)) +#define DMA_OUT_AUTO_WRBACK_CH1_M (DMA_OUT_AUTO_WRBACK_CH1_V << DMA_OUT_AUTO_WRBACK_CH1_S) +#define DMA_OUT_AUTO_WRBACK_CH1_V 0x00000001 +#define DMA_OUT_AUTO_WRBACK_CH1_S 2 + +/* DMA_OUT_LOOP_TEST_CH1 : R/W; bitpos: [1]; default: 0; + * reserved + */ + +#define DMA_OUT_LOOP_TEST_CH1 (BIT(1)) +#define DMA_OUT_LOOP_TEST_CH1_M (DMA_OUT_LOOP_TEST_CH1_V << DMA_OUT_LOOP_TEST_CH1_S) +#define DMA_OUT_LOOP_TEST_CH1_V 0x00000001 +#define DMA_OUT_LOOP_TEST_CH1_S 1 + +/* DMA_OUT_RST_CH1 : R/W; bitpos: [0]; default: 0; + * This bit is used to reset DMA channel 1 Tx FSM and Tx FIFO pointer. + */ + +#define DMA_OUT_RST_CH1 (BIT(0)) +#define DMA_OUT_RST_CH1_M (DMA_OUT_RST_CH1_V << DMA_OUT_RST_CH1_S) +#define DMA_OUT_RST_CH1_V 0x00000001 +#define DMA_OUT_RST_CH1_S 0 + +/* DMA_OUT_CONF1_CH1_REG register + * DMA_OUT_CONF1_CH1_REG. + */ + +#define DMA_OUT_CONF1_CH1_REG (DR_REG_GDMA_BASE + 0x194) + +/* DMA_OUT_CHECK_OWNER_CH1 : R/W; bitpos: [12]; default: 0; + * Set this bit to enable checking the owner attribute of the link + * descriptor. + */ + +#define DMA_OUT_CHECK_OWNER_CH1 (BIT(12)) +#define DMA_OUT_CHECK_OWNER_CH1_M (DMA_OUT_CHECK_OWNER_CH1_V << DMA_OUT_CHECK_OWNER_CH1_S) +#define DMA_OUT_CHECK_OWNER_CH1_V 0x00000001 +#define DMA_OUT_CHECK_OWNER_CH1_S 12 + +/* DMA_OUTFIFO_STATUS_CH1_REG register + * DMA_OUTFIFO_STATUS_CH1_REG. + */ + +#define DMA_OUTFIFO_STATUS_CH1_REG (DR_REG_GDMA_BASE + 0x198) + +/* DMA_OUT_REMAIN_UNDER_4B_CH1 : RO; bitpos: [26]; default: 1; + * reserved + */ + +#define DMA_OUT_REMAIN_UNDER_4B_CH1 (BIT(26)) +#define DMA_OUT_REMAIN_UNDER_4B_CH1_M (DMA_OUT_REMAIN_UNDER_4B_CH1_V << DMA_OUT_REMAIN_UNDER_4B_CH1_S) +#define DMA_OUT_REMAIN_UNDER_4B_CH1_V 0x00000001 +#define DMA_OUT_REMAIN_UNDER_4B_CH1_S 26 + +/* DMA_OUT_REMAIN_UNDER_3B_CH1 : RO; bitpos: [25]; default: 1; + * reserved + */ + +#define DMA_OUT_REMAIN_UNDER_3B_CH1 (BIT(25)) +#define DMA_OUT_REMAIN_UNDER_3B_CH1_M (DMA_OUT_REMAIN_UNDER_3B_CH1_V << DMA_OUT_REMAIN_UNDER_3B_CH1_S) +#define DMA_OUT_REMAIN_UNDER_3B_CH1_V 0x00000001 +#define DMA_OUT_REMAIN_UNDER_3B_CH1_S 25 + +/* DMA_OUT_REMAIN_UNDER_2B_CH1 : RO; bitpos: [24]; default: 1; + * reserved + */ + +#define DMA_OUT_REMAIN_UNDER_2B_CH1 (BIT(24)) +#define DMA_OUT_REMAIN_UNDER_2B_CH1_M (DMA_OUT_REMAIN_UNDER_2B_CH1_V << DMA_OUT_REMAIN_UNDER_2B_CH1_S) +#define DMA_OUT_REMAIN_UNDER_2B_CH1_V 0x00000001 +#define DMA_OUT_REMAIN_UNDER_2B_CH1_S 24 + +/* DMA_OUT_REMAIN_UNDER_1B_CH1 : RO; bitpos: [23]; default: 1; + * reserved + */ + +#define DMA_OUT_REMAIN_UNDER_1B_CH1 (BIT(23)) +#define DMA_OUT_REMAIN_UNDER_1B_CH1_M (DMA_OUT_REMAIN_UNDER_1B_CH1_V << DMA_OUT_REMAIN_UNDER_1B_CH1_S) +#define DMA_OUT_REMAIN_UNDER_1B_CH1_V 0x00000001 +#define DMA_OUT_REMAIN_UNDER_1B_CH1_S 23 + +/* DMA_OUTFIFO_CNT_CH1 : RO; bitpos: [7:2]; default: 0; + * The register stores the byte number of the data in L1 Tx FIFO for Tx + * channel 1. + */ + +#define DMA_OUTFIFO_CNT_CH1 0x0000003F +#define DMA_OUTFIFO_CNT_CH1_M (DMA_OUTFIFO_CNT_CH1_V << DMA_OUTFIFO_CNT_CH1_S) +#define DMA_OUTFIFO_CNT_CH1_V 0x0000003F +#define DMA_OUTFIFO_CNT_CH1_S 2 + +/* DMA_OUTFIFO_EMPTY_CH1 : RO; bitpos: [1]; default: 1; + * L1 Tx FIFO empty signal for Tx channel 1. + */ + +#define DMA_OUTFIFO_EMPTY_CH1 (BIT(1)) +#define DMA_OUTFIFO_EMPTY_CH1_M (DMA_OUTFIFO_EMPTY_CH1_V << DMA_OUTFIFO_EMPTY_CH1_S) +#define DMA_OUTFIFO_EMPTY_CH1_V 0x00000001 +#define DMA_OUTFIFO_EMPTY_CH1_S 1 + +/* DMA_OUTFIFO_FULL_CH1 : RO; bitpos: [0]; default: 0; + * L1 Tx FIFO full signal for Tx channel 1. + */ + +#define DMA_OUTFIFO_FULL_CH1 (BIT(0)) +#define DMA_OUTFIFO_FULL_CH1_M (DMA_OUTFIFO_FULL_CH1_V << DMA_OUTFIFO_FULL_CH1_S) +#define DMA_OUTFIFO_FULL_CH1_V 0x00000001 +#define DMA_OUTFIFO_FULL_CH1_S 0 + +/* DMA_OUT_PUSH_CH1_REG register + * DMA_OUT_PUSH_CH1_REG. + */ + +#define DMA_OUT_PUSH_CH1_REG (DR_REG_GDMA_BASE + 0x19c) + +/* DMA_OUTFIFO_PUSH_CH1 : R/W/SC; bitpos: [9]; default: 0; + * Set this bit to push data into DMA FIFO. + */ + +#define DMA_OUTFIFO_PUSH_CH1 (BIT(9)) +#define DMA_OUTFIFO_PUSH_CH1_M (DMA_OUTFIFO_PUSH_CH1_V << DMA_OUTFIFO_PUSH_CH1_S) +#define DMA_OUTFIFO_PUSH_CH1_V 0x00000001 +#define DMA_OUTFIFO_PUSH_CH1_S 9 + +/* DMA_OUTFIFO_WDATA_CH1 : R/W; bitpos: [8:0]; default: 0; + * This register stores the data that need to be pushed into DMA FIFO. + */ + +#define DMA_OUTFIFO_WDATA_CH1 0x000001FF +#define DMA_OUTFIFO_WDATA_CH1_M (DMA_OUTFIFO_WDATA_CH1_V << DMA_OUTFIFO_WDATA_CH1_S) +#define DMA_OUTFIFO_WDATA_CH1_V 0x000001FF +#define DMA_OUTFIFO_WDATA_CH1_S 0 + +/* DMA_OUT_LINK_CH1_REG register + * DMA_OUT_LINK_CH1_REG. + */ + +#define DMA_OUT_LINK_CH1_REG (DR_REG_GDMA_BASE + 0x1a0) + +/* DMA_OUTLINK_PARK_CH1 : RO; bitpos: [23]; default: 1; + * 1: the outlink descriptor's FSM is in idle state. 0: the outlink + * descriptor's FSM is working. + */ + +#define DMA_OUTLINK_PARK_CH1 (BIT(23)) +#define DMA_OUTLINK_PARK_CH1_M (DMA_OUTLINK_PARK_CH1_V << DMA_OUTLINK_PARK_CH1_S) +#define DMA_OUTLINK_PARK_CH1_V 0x00000001 +#define DMA_OUTLINK_PARK_CH1_S 23 + +/* DMA_OUTLINK_RESTART_CH1 : R/W/SC; bitpos: [22]; default: 0; + * Set this bit to restart a new outlink from the last address. + */ + +#define DMA_OUTLINK_RESTART_CH1 (BIT(22)) +#define DMA_OUTLINK_RESTART_CH1_M (DMA_OUTLINK_RESTART_CH1_V << DMA_OUTLINK_RESTART_CH1_S) +#define DMA_OUTLINK_RESTART_CH1_V 0x00000001 +#define DMA_OUTLINK_RESTART_CH1_S 22 + +/* DMA_OUTLINK_START_CH1 : R/W/SC; bitpos: [21]; default: 0; + * Set this bit to start dealing with the outlink descriptors. + */ + +#define DMA_OUTLINK_START_CH1 (BIT(21)) +#define DMA_OUTLINK_START_CH1_M (DMA_OUTLINK_START_CH1_V << DMA_OUTLINK_START_CH1_S) +#define DMA_OUTLINK_START_CH1_V 0x00000001 +#define DMA_OUTLINK_START_CH1_S 21 + +/* DMA_OUTLINK_STOP_CH1 : R/W/SC; bitpos: [20]; default: 0; + * Set this bit to stop dealing with the outlink descriptors. + */ + +#define DMA_OUTLINK_STOP_CH1 (BIT(20)) +#define DMA_OUTLINK_STOP_CH1_M (DMA_OUTLINK_STOP_CH1_V << DMA_OUTLINK_STOP_CH1_S) +#define DMA_OUTLINK_STOP_CH1_V 0x00000001 +#define DMA_OUTLINK_STOP_CH1_S 20 + +/* DMA_OUTLINK_ADDR_CH1 : R/W; bitpos: [19:0]; default: 0; + * This register stores the 20 least significant bits of the first outlink + * descriptor's address. + */ + +#define DMA_OUTLINK_ADDR_CH1 0x000FFFFF +#define DMA_OUTLINK_ADDR_CH1_M (DMA_OUTLINK_ADDR_CH1_V << DMA_OUTLINK_ADDR_CH1_S) +#define DMA_OUTLINK_ADDR_CH1_V 0x000FFFFF +#define DMA_OUTLINK_ADDR_CH1_S 0 + +/* DMA_OUT_STATE_CH1_REG register + * DMA_OUT_STATE_CH1_REG. + */ + +#define DMA_OUT_STATE_CH1_REG (DR_REG_GDMA_BASE + 0x1a4) + +/* DMA_OUT_STATE_CH1 : RO; bitpos: [22:20]; default: 0; + * reserved + */ + +#define DMA_OUT_STATE_CH1 0x00000007 +#define DMA_OUT_STATE_CH1_M (DMA_OUT_STATE_CH1_V << DMA_OUT_STATE_CH1_S) +#define DMA_OUT_STATE_CH1_V 0x00000007 +#define DMA_OUT_STATE_CH1_S 20 + +/* DMA_OUT_DSCR_STATE_CH1 : RO; bitpos: [19:18]; default: 0; + * reserved + */ + +#define DMA_OUT_DSCR_STATE_CH1 0x00000003 +#define DMA_OUT_DSCR_STATE_CH1_M (DMA_OUT_DSCR_STATE_CH1_V << DMA_OUT_DSCR_STATE_CH1_S) +#define DMA_OUT_DSCR_STATE_CH1_V 0x00000003 +#define DMA_OUT_DSCR_STATE_CH1_S 18 + +/* DMA_OUTLINK_DSCR_ADDR_CH1 : RO; bitpos: [17:0]; default: 0; + * This register stores the current outlink descriptor's address. + */ + +#define DMA_OUTLINK_DSCR_ADDR_CH1 0x0003FFFF +#define DMA_OUTLINK_DSCR_ADDR_CH1_M (DMA_OUTLINK_DSCR_ADDR_CH1_V << DMA_OUTLINK_DSCR_ADDR_CH1_S) +#define DMA_OUTLINK_DSCR_ADDR_CH1_V 0x0003FFFF +#define DMA_OUTLINK_DSCR_ADDR_CH1_S 0 + +/* DMA_OUT_EOF_DES_ADDR_CH1_REG register + * DMA_OUT_EOF_DES_ADDR_CH1_REG. + */ + +#define DMA_OUT_EOF_DES_ADDR_CH1_REG (DR_REG_GDMA_BASE + 0x1a8) + +/* DMA_OUT_EOF_DES_ADDR_CH1 : RO; bitpos: [31:0]; default: 0; + * This register stores the address of the outlink descriptor when the EOF + * bit in this descriptor is 1. + */ + +#define DMA_OUT_EOF_DES_ADDR_CH1 0xFFFFFFFF +#define DMA_OUT_EOF_DES_ADDR_CH1_M (DMA_OUT_EOF_DES_ADDR_CH1_V << DMA_OUT_EOF_DES_ADDR_CH1_S) +#define DMA_OUT_EOF_DES_ADDR_CH1_V 0xFFFFFFFF +#define DMA_OUT_EOF_DES_ADDR_CH1_S 0 + +/* DMA_OUT_EOF_BFR_DES_ADDR_CH1_REG register + * DMA_OUT_EOF_BFR_DES_ADDR_CH1_REG. + */ + +#define DMA_OUT_EOF_BFR_DES_ADDR_CH1_REG (DR_REG_GDMA_BASE + 0x1ac) + +/* DMA_OUT_EOF_BFR_DES_ADDR_CH1 : RO; bitpos: [31:0]; default: 0; + * This register stores the address of the outlink descriptor before the + * last outlink descriptor. + */ + +#define DMA_OUT_EOF_BFR_DES_ADDR_CH1 0xFFFFFFFF +#define DMA_OUT_EOF_BFR_DES_ADDR_CH1_M (DMA_OUT_EOF_BFR_DES_ADDR_CH1_V << DMA_OUT_EOF_BFR_DES_ADDR_CH1_S) +#define DMA_OUT_EOF_BFR_DES_ADDR_CH1_V 0xFFFFFFFF +#define DMA_OUT_EOF_BFR_DES_ADDR_CH1_S 0 + +/* DMA_OUT_DSCR_CH1_REG register + * DMA_OUT_DSCR_CH1_REG. + */ + +#define DMA_OUT_DSCR_CH1_REG (DR_REG_GDMA_BASE + 0x1b0) + +/* DMA_OUTLINK_DSCR_CH1 : RO; bitpos: [31:0]; default: 0; + * The address of the current outlink descriptor y. + */ + +#define DMA_OUTLINK_DSCR_CH1 0xFFFFFFFF +#define DMA_OUTLINK_DSCR_CH1_M (DMA_OUTLINK_DSCR_CH1_V << DMA_OUTLINK_DSCR_CH1_S) +#define DMA_OUTLINK_DSCR_CH1_V 0xFFFFFFFF +#define DMA_OUTLINK_DSCR_CH1_S 0 + +/* DMA_OUT_DSCR_BF0_CH1_REG register + * DMA_OUT_DSCR_BF0_CH1_REG. + */ + +#define DMA_OUT_DSCR_BF0_CH1_REG (DR_REG_GDMA_BASE + 0x1b4) + +/* DMA_OUTLINK_DSCR_BF0_CH1 : RO; bitpos: [31:0]; default: 0; + * The address of the last outlink descriptor y-1. + */ + +#define DMA_OUTLINK_DSCR_BF0_CH1 0xFFFFFFFF +#define DMA_OUTLINK_DSCR_BF0_CH1_M (DMA_OUTLINK_DSCR_BF0_CH1_V << DMA_OUTLINK_DSCR_BF0_CH1_S) +#define DMA_OUTLINK_DSCR_BF0_CH1_V 0xFFFFFFFF +#define DMA_OUTLINK_DSCR_BF0_CH1_S 0 + +/* DMA_OUT_DSCR_BF1_CH1_REG register + * DMA_OUT_DSCR_BF1_CH1_REG. + */ + +#define DMA_OUT_DSCR_BF1_CH1_REG (DR_REG_GDMA_BASE + 0x1b8) + +/* DMA_OUTLINK_DSCR_BF1_CH1 : RO; bitpos: [31:0]; default: 0; + * The address of the second-to-last inlink descriptor x-2. + */ + +#define DMA_OUTLINK_DSCR_BF1_CH1 0xFFFFFFFF +#define DMA_OUTLINK_DSCR_BF1_CH1_M (DMA_OUTLINK_DSCR_BF1_CH1_V << DMA_OUTLINK_DSCR_BF1_CH1_S) +#define DMA_OUTLINK_DSCR_BF1_CH1_V 0xFFFFFFFF +#define DMA_OUTLINK_DSCR_BF1_CH1_S 0 + +/* DMA_OUT_PRI_CH1_REG register + * DMA_OUT_PRI_CH1_REG. + */ + +#define DMA_OUT_PRI_CH1_REG (DR_REG_GDMA_BASE + 0x1bc) + +/* DMA_TX_PRI_CH1 : R/W; bitpos: [3:0]; default: 0; + * The priority of Tx channel 1. The larger of the value, the higher of the + * priority. + */ + +#define DMA_TX_PRI_CH1 0x0000000F +#define DMA_TX_PRI_CH1_M (DMA_TX_PRI_CH1_V << DMA_TX_PRI_CH1_S) +#define DMA_TX_PRI_CH1_V 0x0000000F +#define DMA_TX_PRI_CH1_S 0 + +/* DMA_OUT_PERI_SEL_CH1_REG register + * DMA_OUT_PERI_SEL_CH1_REG. + */ + +#define DMA_OUT_PERI_SEL_CH1_REG (DR_REG_GDMA_BASE + 0x1c0) + +/* DMA_PERI_OUT_SEL_CH1 : R/W; bitpos: [5:0]; default: 63; + * This register is used to select peripheral for Tx channel 1. 0:SPI2. 1: + * reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: + * ADC_DAC. + */ + +#define DMA_PERI_OUT_SEL_CH1 0x0000003F +#define DMA_PERI_OUT_SEL_CH1_M (DMA_PERI_OUT_SEL_CH1_V << DMA_PERI_OUT_SEL_CH1_S) +#define DMA_PERI_OUT_SEL_CH1_V 0x0000003F +#define DMA_PERI_OUT_SEL_CH1_S 0 + +/* DMA_IN_CONF0_CH2_REG register + * DMA_IN_CONF0_CH2_REG. + */ + +#define DMA_IN_CONF0_CH2_REG (DR_REG_GDMA_BASE + 0x1f0) + +/* DMA_MEM_TRANS_EN_CH2 : R/W; bitpos: [4]; default: 0; + * Set this bit 1 to enable automatic transmitting data from memory to + * memory via DMA. + */ + +#define DMA_MEM_TRANS_EN_CH2 (BIT(4)) +#define DMA_MEM_TRANS_EN_CH2_M (DMA_MEM_TRANS_EN_CH2_V << DMA_MEM_TRANS_EN_CH2_S) +#define DMA_MEM_TRANS_EN_CH2_V 0x00000001 +#define DMA_MEM_TRANS_EN_CH2_S 4 + +/* DMA_IN_DATA_BURST_EN_CH2 : R/W; bitpos: [3]; default: 0; + * Set this bit to 1 to enable INCR burst transfer for Rx channel 2 + * receiving data when accessing internal SRAM. + */ + +#define DMA_IN_DATA_BURST_EN_CH2 (BIT(3)) +#define DMA_IN_DATA_BURST_EN_CH2_M (DMA_IN_DATA_BURST_EN_CH2_V << DMA_IN_DATA_BURST_EN_CH2_S) +#define DMA_IN_DATA_BURST_EN_CH2_V 0x00000001 +#define DMA_IN_DATA_BURST_EN_CH2_S 3 + +/* DMA_INDSCR_BURST_EN_CH2 : R/W; bitpos: [2]; default: 0; + * Set this bit to 1 to enable INCR burst transfer for Rx channel 2 reading + * link descriptor when accessing internal SRAM. + */ + +#define DMA_INDSCR_BURST_EN_CH2 (BIT(2)) +#define DMA_INDSCR_BURST_EN_CH2_M (DMA_INDSCR_BURST_EN_CH2_V << DMA_INDSCR_BURST_EN_CH2_S) +#define DMA_INDSCR_BURST_EN_CH2_V 0x00000001 +#define DMA_INDSCR_BURST_EN_CH2_S 2 + +/* DMA_IN_LOOP_TEST_CH2 : R/W; bitpos: [1]; default: 0; + * reserved + */ + +#define DMA_IN_LOOP_TEST_CH2 (BIT(1)) +#define DMA_IN_LOOP_TEST_CH2_M (DMA_IN_LOOP_TEST_CH2_V << DMA_IN_LOOP_TEST_CH2_S) +#define DMA_IN_LOOP_TEST_CH2_V 0x00000001 +#define DMA_IN_LOOP_TEST_CH2_S 1 + +/* DMA_IN_RST_CH2 : R/W; bitpos: [0]; default: 0; + * This bit is used to reset DMA channel 2 Rx FSM and Rx FIFO pointer. + */ + +#define DMA_IN_RST_CH2 (BIT(0)) +#define DMA_IN_RST_CH2_M (DMA_IN_RST_CH2_V << DMA_IN_RST_CH2_S) +#define DMA_IN_RST_CH2_V 0x00000001 +#define DMA_IN_RST_CH2_S 0 + +/* DMA_IN_CONF1_CH2_REG register + * DMA_IN_CONF1_CH2_REG. + */ + +#define DMA_IN_CONF1_CH2_REG (DR_REG_GDMA_BASE + 0x1f4) + +/* DMA_IN_CHECK_OWNER_CH2 : R/W; bitpos: [12]; default: 0; + * Set this bit to enable checking the owner attribute of the link + * descriptor. + */ + +#define DMA_IN_CHECK_OWNER_CH2 (BIT(12)) +#define DMA_IN_CHECK_OWNER_CH2_M (DMA_IN_CHECK_OWNER_CH2_V << DMA_IN_CHECK_OWNER_CH2_S) +#define DMA_IN_CHECK_OWNER_CH2_V 0x00000001 +#define DMA_IN_CHECK_OWNER_CH2_S 12 + +/* DMA_INFIFO_STATUS_CH2_REG register + * DMA_INFIFO_STATUS_CH2_REG. + */ + +#define DMA_INFIFO_STATUS_CH2_REG (DR_REG_GDMA_BASE + 0x1f8) + +/* DMA_IN_BUF_HUNGRY_CH2 : RO; bitpos: [27]; default: 0; + * reserved + */ + +#define DMA_IN_BUF_HUNGRY_CH2 (BIT(27)) +#define DMA_IN_BUF_HUNGRY_CH2_M (DMA_IN_BUF_HUNGRY_CH2_V << DMA_IN_BUF_HUNGRY_CH2_S) +#define DMA_IN_BUF_HUNGRY_CH2_V 0x00000001 +#define DMA_IN_BUF_HUNGRY_CH2_S 27 + +/* DMA_IN_REMAIN_UNDER_4B_CH2 : RO; bitpos: [26]; default: 1; + * reserved + */ + +#define DMA_IN_REMAIN_UNDER_4B_CH2 (BIT(26)) +#define DMA_IN_REMAIN_UNDER_4B_CH2_M (DMA_IN_REMAIN_UNDER_4B_CH2_V << DMA_IN_REMAIN_UNDER_4B_CH2_S) +#define DMA_IN_REMAIN_UNDER_4B_CH2_V 0x00000001 +#define DMA_IN_REMAIN_UNDER_4B_CH2_S 26 + +/* DMA_IN_REMAIN_UNDER_3B_CH2 : RO; bitpos: [25]; default: 1; + * reserved + */ + +#define DMA_IN_REMAIN_UNDER_3B_CH2 (BIT(25)) +#define DMA_IN_REMAIN_UNDER_3B_CH2_M (DMA_IN_REMAIN_UNDER_3B_CH2_V << DMA_IN_REMAIN_UNDER_3B_CH2_S) +#define DMA_IN_REMAIN_UNDER_3B_CH2_V 0x00000001 +#define DMA_IN_REMAIN_UNDER_3B_CH2_S 25 + +/* DMA_IN_REMAIN_UNDER_2B_CH2 : RO; bitpos: [24]; default: 1; + * reserved + */ + +#define DMA_IN_REMAIN_UNDER_2B_CH2 (BIT(24)) +#define DMA_IN_REMAIN_UNDER_2B_CH2_M (DMA_IN_REMAIN_UNDER_2B_CH2_V << DMA_IN_REMAIN_UNDER_2B_CH2_S) +#define DMA_IN_REMAIN_UNDER_2B_CH2_V 0x00000001 +#define DMA_IN_REMAIN_UNDER_2B_CH2_S 24 + +/* DMA_IN_REMAIN_UNDER_1B_CH2 : RO; bitpos: [23]; default: 1; + * reserved + */ + +#define DMA_IN_REMAIN_UNDER_1B_CH2 (BIT(23)) +#define DMA_IN_REMAIN_UNDER_1B_CH2_M (DMA_IN_REMAIN_UNDER_1B_CH2_V << DMA_IN_REMAIN_UNDER_1B_CH2_S) +#define DMA_IN_REMAIN_UNDER_1B_CH2_V 0x00000001 +#define DMA_IN_REMAIN_UNDER_1B_CH2_S 23 + +/* DMA_INFIFO_CNT_CH2 : RO; bitpos: [7:2]; default: 0; + * The register stores the byte number of the data in L1 Rx FIFO for Rx + * channel 2. + */ + +#define DMA_INFIFO_CNT_CH2 0x0000003F +#define DMA_INFIFO_CNT_CH2_M (DMA_INFIFO_CNT_CH2_V << DMA_INFIFO_CNT_CH2_S) +#define DMA_INFIFO_CNT_CH2_V 0x0000003F +#define DMA_INFIFO_CNT_CH2_S 2 + +/* DMA_INFIFO_EMPTY_CH2 : RO; bitpos: [1]; default: 1; + * L1 Rx FIFO empty signal for Rx channel 2. + */ + +#define DMA_INFIFO_EMPTY_CH2 (BIT(1)) +#define DMA_INFIFO_EMPTY_CH2_M (DMA_INFIFO_EMPTY_CH2_V << DMA_INFIFO_EMPTY_CH2_S) +#define DMA_INFIFO_EMPTY_CH2_V 0x00000001 +#define DMA_INFIFO_EMPTY_CH2_S 1 + +/* DMA_INFIFO_FULL_CH2 : RO; bitpos: [0]; default: 1; + * L1 Rx FIFO full signal for Rx channel 2. + */ + +#define DMA_INFIFO_FULL_CH2 (BIT(0)) +#define DMA_INFIFO_FULL_CH2_M (DMA_INFIFO_FULL_CH2_V << DMA_INFIFO_FULL_CH2_S) +#define DMA_INFIFO_FULL_CH2_V 0x00000001 +#define DMA_INFIFO_FULL_CH2_S 0 + +/* DMA_IN_POP_CH2_REG register + * DMA_IN_POP_CH2_REG. + */ + +#define DMA_IN_POP_CH2_REG (DR_REG_GDMA_BASE + 0x1fc) + +/* DMA_INFIFO_POP_CH2 : R/W/SC; bitpos: [12]; default: 0; + * Set this bit to pop data from DMA FIFO. + */ + +#define DMA_INFIFO_POP_CH2 (BIT(12)) +#define DMA_INFIFO_POP_CH2_M (DMA_INFIFO_POP_CH2_V << DMA_INFIFO_POP_CH2_S) +#define DMA_INFIFO_POP_CH2_V 0x00000001 +#define DMA_INFIFO_POP_CH2_S 12 + +/* DMA_INFIFO_RDATA_CH2 : RO; bitpos: [11:0]; default: 2048; + * This register stores the data popping from DMA FIFO. + */ + +#define DMA_INFIFO_RDATA_CH2 0x00000FFF +#define DMA_INFIFO_RDATA_CH2_M (DMA_INFIFO_RDATA_CH2_V << DMA_INFIFO_RDATA_CH2_S) +#define DMA_INFIFO_RDATA_CH2_V 0x00000FFF +#define DMA_INFIFO_RDATA_CH2_S 0 + +/* DMA_IN_LINK_CH2_REG register + * DMA_IN_LINK_CH2_REG. + */ + +#define DMA_IN_LINK_CH2_REG (DR_REG_GDMA_BASE + 0x200) + +/* DMA_INLINK_PARK_CH2 : RO; bitpos: [24]; default: 1; + * 1: the inlink descriptor's FSM is in idle state. 0: the inlink + * descriptor's FSM is working. + */ + +#define DMA_INLINK_PARK_CH2 (BIT(24)) +#define DMA_INLINK_PARK_CH2_M (DMA_INLINK_PARK_CH2_V << DMA_INLINK_PARK_CH2_S) +#define DMA_INLINK_PARK_CH2_V 0x00000001 +#define DMA_INLINK_PARK_CH2_S 24 + +/* DMA_INLINK_RESTART_CH2 : R/W/SC; bitpos: [23]; default: 0; + * Set this bit to mount a new inlink descriptor. + */ + +#define DMA_INLINK_RESTART_CH2 (BIT(23)) +#define DMA_INLINK_RESTART_CH2_M (DMA_INLINK_RESTART_CH2_V << DMA_INLINK_RESTART_CH2_S) +#define DMA_INLINK_RESTART_CH2_V 0x00000001 +#define DMA_INLINK_RESTART_CH2_S 23 + +/* DMA_INLINK_START_CH2 : R/W/SC; bitpos: [22]; default: 0; + * Set this bit to start dealing with the inlink descriptors. + */ + +#define DMA_INLINK_START_CH2 (BIT(22)) +#define DMA_INLINK_START_CH2_M (DMA_INLINK_START_CH2_V << DMA_INLINK_START_CH2_S) +#define DMA_INLINK_START_CH2_V 0x00000001 +#define DMA_INLINK_START_CH2_S 22 + +/* DMA_INLINK_STOP_CH2 : R/W/SC; bitpos: [21]; default: 0; + * Set this bit to stop dealing with the inlink descriptors. + */ + +#define DMA_INLINK_STOP_CH2 (BIT(21)) +#define DMA_INLINK_STOP_CH2_M (DMA_INLINK_STOP_CH2_V << DMA_INLINK_STOP_CH2_S) +#define DMA_INLINK_STOP_CH2_V 0x00000001 +#define DMA_INLINK_STOP_CH2_S 21 + +/* DMA_INLINK_AUTO_RET_CH2 : R/W; bitpos: [20]; default: 1; + * Set this bit to return to current inlink descriptor's address, when there + * are some errors in current receiving data. + */ + +#define DMA_INLINK_AUTO_RET_CH2 (BIT(20)) +#define DMA_INLINK_AUTO_RET_CH2_M (DMA_INLINK_AUTO_RET_CH2_V << DMA_INLINK_AUTO_RET_CH2_S) +#define DMA_INLINK_AUTO_RET_CH2_V 0x00000001 +#define DMA_INLINK_AUTO_RET_CH2_S 20 + +/* DMA_INLINK_ADDR_CH2 : R/W; bitpos: [19:0]; default: 0; + * This register stores the 20 least significant bits of the first inlink + * descriptor's address. + */ + +#define DMA_INLINK_ADDR_CH2 0x000FFFFF +#define DMA_INLINK_ADDR_CH2_M (DMA_INLINK_ADDR_CH2_V << DMA_INLINK_ADDR_CH2_S) +#define DMA_INLINK_ADDR_CH2_V 0x000FFFFF +#define DMA_INLINK_ADDR_CH2_S 0 + +/* DMA_IN_STATE_CH2_REG register + * DMA_IN_STATE_CH2_REG. + */ + +#define DMA_IN_STATE_CH2_REG (DR_REG_GDMA_BASE + 0x204) + +/* DMA_IN_STATE_CH2 : RO; bitpos: [22:20]; default: 0; + * reserved + */ + +#define DMA_IN_STATE_CH2 0x00000007 +#define DMA_IN_STATE_CH2_M (DMA_IN_STATE_CH2_V << DMA_IN_STATE_CH2_S) +#define DMA_IN_STATE_CH2_V 0x00000007 +#define DMA_IN_STATE_CH2_S 20 + +/* DMA_IN_DSCR_STATE_CH2 : RO; bitpos: [19:18]; default: 0; + * reserved + */ + +#define DMA_IN_DSCR_STATE_CH2 0x00000003 +#define DMA_IN_DSCR_STATE_CH2_M (DMA_IN_DSCR_STATE_CH2_V << DMA_IN_DSCR_STATE_CH2_S) +#define DMA_IN_DSCR_STATE_CH2_V 0x00000003 +#define DMA_IN_DSCR_STATE_CH2_S 18 + +/* DMA_INLINK_DSCR_ADDR_CH2 : RO; bitpos: [17:0]; default: 0; + * This register stores the current inlink descriptor's address. + */ + +#define DMA_INLINK_DSCR_ADDR_CH2 0x0003FFFF +#define DMA_INLINK_DSCR_ADDR_CH2_M (DMA_INLINK_DSCR_ADDR_CH2_V << DMA_INLINK_DSCR_ADDR_CH2_S) +#define DMA_INLINK_DSCR_ADDR_CH2_V 0x0003FFFF +#define DMA_INLINK_DSCR_ADDR_CH2_S 0 + +/* DMA_IN_SUC_EOF_DES_ADDR_CH2_REG register + * DMA_IN_SUC_EOF_DES_ADDR_CH2_REG. + */ + +#define DMA_IN_SUC_EOF_DES_ADDR_CH2_REG (DR_REG_GDMA_BASE + 0x208) + +/* DMA_IN_SUC_EOF_DES_ADDR_CH2 : RO; bitpos: [31:0]; default: 0; + * This register stores the address of the inlink descriptor when the EOF + * bit in this descriptor is 1. + */ + +#define DMA_IN_SUC_EOF_DES_ADDR_CH2 0xFFFFFFFF +#define DMA_IN_SUC_EOF_DES_ADDR_CH2_M (DMA_IN_SUC_EOF_DES_ADDR_CH2_V << DMA_IN_SUC_EOF_DES_ADDR_CH2_S) +#define DMA_IN_SUC_EOF_DES_ADDR_CH2_V 0xFFFFFFFF +#define DMA_IN_SUC_EOF_DES_ADDR_CH2_S 0 + +/* DMA_IN_ERR_EOF_DES_ADDR_CH2_REG register + * DMA_IN_ERR_EOF_DES_ADDR_CH2_REG. + */ + +#define DMA_IN_ERR_EOF_DES_ADDR_CH2_REG (DR_REG_GDMA_BASE + 0x20c) + +/* DMA_IN_ERR_EOF_DES_ADDR_CH2 : RO; bitpos: [31:0]; default: 0; + * This register stores the address of the inlink descriptor when there are + * some errors in current receiving data. Only used when peripheral is UHCI0. + */ + +#define DMA_IN_ERR_EOF_DES_ADDR_CH2 0xFFFFFFFF +#define DMA_IN_ERR_EOF_DES_ADDR_CH2_M (DMA_IN_ERR_EOF_DES_ADDR_CH2_V << DMA_IN_ERR_EOF_DES_ADDR_CH2_S) +#define DMA_IN_ERR_EOF_DES_ADDR_CH2_V 0xFFFFFFFF +#define DMA_IN_ERR_EOF_DES_ADDR_CH2_S 0 + +/* DMA_IN_DSCR_CH2_REG register + * DMA_IN_DSCR_CH2_REG. + */ + +#define DMA_IN_DSCR_CH2_REG (DR_REG_GDMA_BASE + 0x210) + +/* DMA_INLINK_DSCR_CH2 : RO; bitpos: [31:0]; default: 0; + * The address of the current inlink descriptor x. + */ + +#define DMA_INLINK_DSCR_CH2 0xFFFFFFFF +#define DMA_INLINK_DSCR_CH2_M (DMA_INLINK_DSCR_CH2_V << DMA_INLINK_DSCR_CH2_S) +#define DMA_INLINK_DSCR_CH2_V 0xFFFFFFFF +#define DMA_INLINK_DSCR_CH2_S 0 + +/* DMA_IN_DSCR_BF0_CH2_REG register + * DMA_IN_DSCR_BF0_CH2_REG. + */ + +#define DMA_IN_DSCR_BF0_CH2_REG (DR_REG_GDMA_BASE + 0x214) + +/* DMA_INLINK_DSCR_BF0_CH2 : RO; bitpos: [31:0]; default: 0; + * The address of the last inlink descriptor x-1. + */ + +#define DMA_INLINK_DSCR_BF0_CH2 0xFFFFFFFF +#define DMA_INLINK_DSCR_BF0_CH2_M (DMA_INLINK_DSCR_BF0_CH2_V << DMA_INLINK_DSCR_BF0_CH2_S) +#define DMA_INLINK_DSCR_BF0_CH2_V 0xFFFFFFFF +#define DMA_INLINK_DSCR_BF0_CH2_S 0 + +/* DMA_IN_DSCR_BF1_CH2_REG register + * DMA_IN_DSCR_BF1_CH2_REG. + */ + +#define DMA_IN_DSCR_BF1_CH2_REG (DR_REG_GDMA_BASE + 0x218) + +/* DMA_INLINK_DSCR_BF1_CH2 : RO; bitpos: [31:0]; default: 0; + * The address of the second-to-last inlink descriptor x-2. + */ + +#define DMA_INLINK_DSCR_BF1_CH2 0xFFFFFFFF +#define DMA_INLINK_DSCR_BF1_CH2_M (DMA_INLINK_DSCR_BF1_CH2_V << DMA_INLINK_DSCR_BF1_CH2_S) +#define DMA_INLINK_DSCR_BF1_CH2_V 0xFFFFFFFF +#define DMA_INLINK_DSCR_BF1_CH2_S 0 + +/* DMA_IN_PRI_CH2_REG register + * DMA_IN_PRI_CH2_REG. + */ + +#define DMA_IN_PRI_CH2_REG (DR_REG_GDMA_BASE + 0x21c) + +/* DMA_RX_PRI_CH2 : R/W; bitpos: [3:0]; default: 0; + * The priority of Rx channel 2. The larger of the value, the higher of the + * priority. + */ + +#define DMA_RX_PRI_CH2 0x0000000F +#define DMA_RX_PRI_CH2_M (DMA_RX_PRI_CH2_V << DMA_RX_PRI_CH2_S) +#define DMA_RX_PRI_CH2_V 0x0000000F +#define DMA_RX_PRI_CH2_S 0 + +/* DMA_IN_PERI_SEL_CH2_REG register + * DMA_IN_PERI_SEL_CH2_REG. + */ + +#define DMA_IN_PERI_SEL_CH2_REG (DR_REG_GDMA_BASE + 0x220) + +/* DMA_PERI_IN_SEL_CH2 : R/W; bitpos: [5:0]; default: 63; + * This register is used to select peripheral for Rx channel 2. 0:SPI2. 1: + * reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: + * ADC_DAC. + */ + +#define DMA_PERI_IN_SEL_CH2 0x0000003F +#define DMA_PERI_IN_SEL_CH2_M (DMA_PERI_IN_SEL_CH2_V << DMA_PERI_IN_SEL_CH2_S) +#define DMA_PERI_IN_SEL_CH2_V 0x0000003F +#define DMA_PERI_IN_SEL_CH2_S 0 + +/* DMA_OUT_CONF0_CH2_REG register + * DMA_OUT_CONF0_CH2_REG. + */ + +#define DMA_OUT_CONF0_CH2_REG (DR_REG_GDMA_BASE + 0x250) + +/* DMA_OUT_DATA_BURST_EN_CH2 : R/W; bitpos: [5]; default: 0; + * Set this bit to 1 to enable INCR burst transfer for Tx channel 2 + * transmitting data when accessing internal SRAM. + */ + +#define DMA_OUT_DATA_BURST_EN_CH2 (BIT(5)) +#define DMA_OUT_DATA_BURST_EN_CH2_M (DMA_OUT_DATA_BURST_EN_CH2_V << DMA_OUT_DATA_BURST_EN_CH2_S) +#define DMA_OUT_DATA_BURST_EN_CH2_V 0x00000001 +#define DMA_OUT_DATA_BURST_EN_CH2_S 5 + +/* DMA_OUTDSCR_BURST_EN_CH2 : R/W; bitpos: [4]; default: 0; + * Set this bit to 1 to enable INCR burst transfer for Tx channel 2 reading + * link descriptor when accessing internal SRAM. + */ + +#define DMA_OUTDSCR_BURST_EN_CH2 (BIT(4)) +#define DMA_OUTDSCR_BURST_EN_CH2_M (DMA_OUTDSCR_BURST_EN_CH2_V << DMA_OUTDSCR_BURST_EN_CH2_S) +#define DMA_OUTDSCR_BURST_EN_CH2_V 0x00000001 +#define DMA_OUTDSCR_BURST_EN_CH2_S 4 + +/* DMA_OUT_EOF_MODE_CH2 : R/W; bitpos: [3]; default: 1; + * EOF flag generation mode when transmitting data. 1: EOF flag for Tx + * channel 2 is generated when data need to transmit has been popped from + * FIFO in DMA + */ + +#define DMA_OUT_EOF_MODE_CH2 (BIT(3)) +#define DMA_OUT_EOF_MODE_CH2_M (DMA_OUT_EOF_MODE_CH2_V << DMA_OUT_EOF_MODE_CH2_S) +#define DMA_OUT_EOF_MODE_CH2_V 0x00000001 +#define DMA_OUT_EOF_MODE_CH2_S 3 + +/* DMA_OUT_AUTO_WRBACK_CH2 : R/W; bitpos: [2]; default: 0; + * Set this bit to enable automatic outlink-writeback when all the data in + * tx buffer has been transmitted. + */ + +#define DMA_OUT_AUTO_WRBACK_CH2 (BIT(2)) +#define DMA_OUT_AUTO_WRBACK_CH2_M (DMA_OUT_AUTO_WRBACK_CH2_V << DMA_OUT_AUTO_WRBACK_CH2_S) +#define DMA_OUT_AUTO_WRBACK_CH2_V 0x00000001 +#define DMA_OUT_AUTO_WRBACK_CH2_S 2 + +/* DMA_OUT_LOOP_TEST_CH2 : R/W; bitpos: [1]; default: 0; + * reserved + */ + +#define DMA_OUT_LOOP_TEST_CH2 (BIT(1)) +#define DMA_OUT_LOOP_TEST_CH2_M (DMA_OUT_LOOP_TEST_CH2_V << DMA_OUT_LOOP_TEST_CH2_S) +#define DMA_OUT_LOOP_TEST_CH2_V 0x00000001 +#define DMA_OUT_LOOP_TEST_CH2_S 1 + +/* DMA_OUT_RST_CH2 : R/W; bitpos: [0]; default: 0; + * This bit is used to reset DMA channel 2 Tx FSM and Tx FIFO pointer. + */ + +#define DMA_OUT_RST_CH2 (BIT(0)) +#define DMA_OUT_RST_CH2_M (DMA_OUT_RST_CH2_V << DMA_OUT_RST_CH2_S) +#define DMA_OUT_RST_CH2_V 0x00000001 +#define DMA_OUT_RST_CH2_S 0 + +/* DMA_OUT_CONF1_CH2_REG register + * DMA_OUT_CONF1_CH2_REG. + */ + +#define DMA_OUT_CONF1_CH2_REG (DR_REG_GDMA_BASE + 0x254) + +/* DMA_OUT_CHECK_OWNER_CH2 : R/W; bitpos: [12]; default: 0; + * Set this bit to enable checking the owner attribute of the link + * descriptor. + */ + +#define DMA_OUT_CHECK_OWNER_CH2 (BIT(12)) +#define DMA_OUT_CHECK_OWNER_CH2_M (DMA_OUT_CHECK_OWNER_CH2_V << DMA_OUT_CHECK_OWNER_CH2_S) +#define DMA_OUT_CHECK_OWNER_CH2_V 0x00000001 +#define DMA_OUT_CHECK_OWNER_CH2_S 12 + +/* DMA_OUTFIFO_STATUS_CH2_REG register + * DMA_OUTFIFO_STATUS_CH2_REG. + */ + +#define DMA_OUTFIFO_STATUS_CH2_REG (DR_REG_GDMA_BASE + 0x258) + +/* DMA_OUT_REMAIN_UNDER_4B_CH2 : RO; bitpos: [26]; default: 1; + * reserved + */ + +#define DMA_OUT_REMAIN_UNDER_4B_CH2 (BIT(26)) +#define DMA_OUT_REMAIN_UNDER_4B_CH2_M (DMA_OUT_REMAIN_UNDER_4B_CH2_V << DMA_OUT_REMAIN_UNDER_4B_CH2_S) +#define DMA_OUT_REMAIN_UNDER_4B_CH2_V 0x00000001 +#define DMA_OUT_REMAIN_UNDER_4B_CH2_S 26 + +/* DMA_OUT_REMAIN_UNDER_3B_CH2 : RO; bitpos: [25]; default: 1; + * reserved + */ + +#define DMA_OUT_REMAIN_UNDER_3B_CH2 (BIT(25)) +#define DMA_OUT_REMAIN_UNDER_3B_CH2_M (DMA_OUT_REMAIN_UNDER_3B_CH2_V << DMA_OUT_REMAIN_UNDER_3B_CH2_S) +#define DMA_OUT_REMAIN_UNDER_3B_CH2_V 0x00000001 +#define DMA_OUT_REMAIN_UNDER_3B_CH2_S 25 + +/* DMA_OUT_REMAIN_UNDER_2B_CH2 : RO; bitpos: [24]; default: 1; + * reserved + */ + +#define DMA_OUT_REMAIN_UNDER_2B_CH2 (BIT(24)) +#define DMA_OUT_REMAIN_UNDER_2B_CH2_M (DMA_OUT_REMAIN_UNDER_2B_CH2_V << DMA_OUT_REMAIN_UNDER_2B_CH2_S) +#define DMA_OUT_REMAIN_UNDER_2B_CH2_V 0x00000001 +#define DMA_OUT_REMAIN_UNDER_2B_CH2_S 24 + +/* DMA_OUT_REMAIN_UNDER_1B_CH2 : RO; bitpos: [23]; default: 1; + * reserved + */ + +#define DMA_OUT_REMAIN_UNDER_1B_CH2 (BIT(23)) +#define DMA_OUT_REMAIN_UNDER_1B_CH2_M (DMA_OUT_REMAIN_UNDER_1B_CH2_V << DMA_OUT_REMAIN_UNDER_1B_CH2_S) +#define DMA_OUT_REMAIN_UNDER_1B_CH2_V 0x00000001 +#define DMA_OUT_REMAIN_UNDER_1B_CH2_S 23 + +/* DMA_OUTFIFO_CNT_CH2 : RO; bitpos: [7:2]; default: 0; + * The register stores the byte number of the data in L1 Tx FIFO for Tx + * channel 2. + */ + +#define DMA_OUTFIFO_CNT_CH2 0x0000003F +#define DMA_OUTFIFO_CNT_CH2_M (DMA_OUTFIFO_CNT_CH2_V << DMA_OUTFIFO_CNT_CH2_S) +#define DMA_OUTFIFO_CNT_CH2_V 0x0000003F +#define DMA_OUTFIFO_CNT_CH2_S 2 + +/* DMA_OUTFIFO_EMPTY_CH2 : RO; bitpos: [1]; default: 1; + * L1 Tx FIFO empty signal for Tx channel 2. + */ + +#define DMA_OUTFIFO_EMPTY_CH2 (BIT(1)) +#define DMA_OUTFIFO_EMPTY_CH2_M (DMA_OUTFIFO_EMPTY_CH2_V << DMA_OUTFIFO_EMPTY_CH2_S) +#define DMA_OUTFIFO_EMPTY_CH2_V 0x00000001 +#define DMA_OUTFIFO_EMPTY_CH2_S 1 + +/* DMA_OUTFIFO_FULL_CH2 : RO; bitpos: [0]; default: 0; + * L1 Tx FIFO full signal for Tx channel 2. + */ + +#define DMA_OUTFIFO_FULL_CH2 (BIT(0)) +#define DMA_OUTFIFO_FULL_CH2_M (DMA_OUTFIFO_FULL_CH2_V << DMA_OUTFIFO_FULL_CH2_S) +#define DMA_OUTFIFO_FULL_CH2_V 0x00000001 +#define DMA_OUTFIFO_FULL_CH2_S 0 + +/* DMA_OUT_PUSH_CH2_REG register + * DMA_OUT_PUSH_CH2_REG. + */ + +#define DMA_OUT_PUSH_CH2_REG (DR_REG_GDMA_BASE + 0x25c) + +/* DMA_OUTFIFO_PUSH_CH2 : R/W/SC; bitpos: [9]; default: 0; + * Set this bit to push data into DMA FIFO. + */ + +#define DMA_OUTFIFO_PUSH_CH2 (BIT(9)) +#define DMA_OUTFIFO_PUSH_CH2_M (DMA_OUTFIFO_PUSH_CH2_V << DMA_OUTFIFO_PUSH_CH2_S) +#define DMA_OUTFIFO_PUSH_CH2_V 0x00000001 +#define DMA_OUTFIFO_PUSH_CH2_S 9 + +/* DMA_OUTFIFO_WDATA_CH2 : R/W; bitpos: [8:0]; default: 0; + * This register stores the data that need to be pushed into DMA FIFO. + */ + +#define DMA_OUTFIFO_WDATA_CH2 0x000001FF +#define DMA_OUTFIFO_WDATA_CH2_M (DMA_OUTFIFO_WDATA_CH2_V << DMA_OUTFIFO_WDATA_CH2_S) +#define DMA_OUTFIFO_WDATA_CH2_V 0x000001FF +#define DMA_OUTFIFO_WDATA_CH2_S 0 + +/* DMA_OUT_LINK_CH2_REG register + * DMA_OUT_LINK_CH2_REG. + */ + +#define DMA_OUT_LINK_CH2_REG (DR_REG_GDMA_BASE + 0x260) + +/* DMA_OUTLINK_PARK_CH2 : RO; bitpos: [23]; default: 1; + * 1: the outlink descriptor's FSM is in idle state. 0: the outlink + * descriptor's FSM is working. + */ + +#define DMA_OUTLINK_PARK_CH2 (BIT(23)) +#define DMA_OUTLINK_PARK_CH2_M (DMA_OUTLINK_PARK_CH2_V << DMA_OUTLINK_PARK_CH2_S) +#define DMA_OUTLINK_PARK_CH2_V 0x00000001 +#define DMA_OUTLINK_PARK_CH2_S 23 + +/* DMA_OUTLINK_RESTART_CH2 : R/W/SC; bitpos: [22]; default: 0; + * Set this bit to restart a new outlink from the last address. + */ + +#define DMA_OUTLINK_RESTART_CH2 (BIT(22)) +#define DMA_OUTLINK_RESTART_CH2_M (DMA_OUTLINK_RESTART_CH2_V << DMA_OUTLINK_RESTART_CH2_S) +#define DMA_OUTLINK_RESTART_CH2_V 0x00000001 +#define DMA_OUTLINK_RESTART_CH2_S 22 + +/* DMA_OUTLINK_START_CH2 : R/W/SC; bitpos: [21]; default: 0; + * Set this bit to start dealing with the outlink descriptors. + */ + +#define DMA_OUTLINK_START_CH2 (BIT(21)) +#define DMA_OUTLINK_START_CH2_M (DMA_OUTLINK_START_CH2_V << DMA_OUTLINK_START_CH2_S) +#define DMA_OUTLINK_START_CH2_V 0x00000001 +#define DMA_OUTLINK_START_CH2_S 21 + +/* DMA_OUTLINK_STOP_CH2 : R/W/SC; bitpos: [20]; default: 0; + * Set this bit to stop dealing with the outlink descriptors. + */ + +#define DMA_OUTLINK_STOP_CH2 (BIT(20)) +#define DMA_OUTLINK_STOP_CH2_M (DMA_OUTLINK_STOP_CH2_V << DMA_OUTLINK_STOP_CH2_S) +#define DMA_OUTLINK_STOP_CH2_V 0x00000001 +#define DMA_OUTLINK_STOP_CH2_S 20 + +/* DMA_OUTLINK_ADDR_CH2 : R/W; bitpos: [19:0]; default: 0; + * This register stores the 20 least significant bits of the first outlink + * descriptor's address. + */ + +#define DMA_OUTLINK_ADDR_CH2 0x000FFFFF +#define DMA_OUTLINK_ADDR_CH2_M (DMA_OUTLINK_ADDR_CH2_V << DMA_OUTLINK_ADDR_CH2_S) +#define DMA_OUTLINK_ADDR_CH2_V 0x000FFFFF +#define DMA_OUTLINK_ADDR_CH2_S 0 + +/* DMA_OUT_STATE_CH2_REG register + * DMA_OUT_STATE_CH2_REG. + */ + +#define DMA_OUT_STATE_CH2_REG (DR_REG_GDMA_BASE + 0x264) + +/* DMA_OUT_STATE_CH2 : RO; bitpos: [22:20]; default: 0; + * reserved + */ + +#define DMA_OUT_STATE_CH2 0x00000007 +#define DMA_OUT_STATE_CH2_M (DMA_OUT_STATE_CH2_V << DMA_OUT_STATE_CH2_S) +#define DMA_OUT_STATE_CH2_V 0x00000007 +#define DMA_OUT_STATE_CH2_S 20 + +/* DMA_OUT_DSCR_STATE_CH2 : RO; bitpos: [19:18]; default: 0; + * reserved + */ + +#define DMA_OUT_DSCR_STATE_CH2 0x00000003 +#define DMA_OUT_DSCR_STATE_CH2_M (DMA_OUT_DSCR_STATE_CH2_V << DMA_OUT_DSCR_STATE_CH2_S) +#define DMA_OUT_DSCR_STATE_CH2_V 0x00000003 +#define DMA_OUT_DSCR_STATE_CH2_S 18 + +/* DMA_OUTLINK_DSCR_ADDR_CH2 : RO; bitpos: [17:0]; default: 0; + * This register stores the current outlink descriptor's address. + */ + +#define DMA_OUTLINK_DSCR_ADDR_CH2 0x0003FFFF +#define DMA_OUTLINK_DSCR_ADDR_CH2_M (DMA_OUTLINK_DSCR_ADDR_CH2_V << DMA_OUTLINK_DSCR_ADDR_CH2_S) +#define DMA_OUTLINK_DSCR_ADDR_CH2_V 0x0003FFFF +#define DMA_OUTLINK_DSCR_ADDR_CH2_S 0 + +/* DMA_OUT_EOF_DES_ADDR_CH2_REG register + * DMA_OUT_EOF_DES_ADDR_CH2_REG. + */ + +#define DMA_OUT_EOF_DES_ADDR_CH2_REG (DR_REG_GDMA_BASE + 0x268) + +/* DMA_OUT_EOF_DES_ADDR_CH2 : RO; bitpos: [31:0]; default: 0; + * This register stores the address of the outlink descriptor when the EOF + * bit in this descriptor is 1. + */ + +#define DMA_OUT_EOF_DES_ADDR_CH2 0xFFFFFFFF +#define DMA_OUT_EOF_DES_ADDR_CH2_M (DMA_OUT_EOF_DES_ADDR_CH2_V << DMA_OUT_EOF_DES_ADDR_CH2_S) +#define DMA_OUT_EOF_DES_ADDR_CH2_V 0xFFFFFFFF +#define DMA_OUT_EOF_DES_ADDR_CH2_S 0 + +/* DMA_OUT_EOF_BFR_DES_ADDR_CH2_REG register + * DMA_OUT_EOF_BFR_DES_ADDR_CH2_REG. + */ + +#define DMA_OUT_EOF_BFR_DES_ADDR_CH2_REG (DR_REG_GDMA_BASE + 0x26c) + +/* DMA_OUT_EOF_BFR_DES_ADDR_CH2 : RO; bitpos: [31:0]; default: 0; + * This register stores the address of the outlink descriptor before the + * last outlink descriptor. + */ + +#define DMA_OUT_EOF_BFR_DES_ADDR_CH2 0xFFFFFFFF +#define DMA_OUT_EOF_BFR_DES_ADDR_CH2_M (DMA_OUT_EOF_BFR_DES_ADDR_CH2_V << DMA_OUT_EOF_BFR_DES_ADDR_CH2_S) +#define DMA_OUT_EOF_BFR_DES_ADDR_CH2_V 0xFFFFFFFF +#define DMA_OUT_EOF_BFR_DES_ADDR_CH2_S 0 + +/* DMA_OUT_DSCR_CH2_REG register + * DMA_OUT_DSCR_CH2_REG. + */ + +#define DMA_OUT_DSCR_CH2_REG (DR_REG_GDMA_BASE + 0x270) + +/* DMA_OUTLINK_DSCR_CH2 : RO; bitpos: [31:0]; default: 0; + * The address of the current outlink descriptor y. + */ + +#define DMA_OUTLINK_DSCR_CH2 0xFFFFFFFF +#define DMA_OUTLINK_DSCR_CH2_M (DMA_OUTLINK_DSCR_CH2_V << DMA_OUTLINK_DSCR_CH2_S) +#define DMA_OUTLINK_DSCR_CH2_V 0xFFFFFFFF +#define DMA_OUTLINK_DSCR_CH2_S 0 + +/* DMA_OUT_DSCR_BF0_CH2_REG register + * DMA_OUT_DSCR_BF0_CH2_REG. + */ + +#define DMA_OUT_DSCR_BF0_CH2_REG (DR_REG_GDMA_BASE + 0x274) + +/* DMA_OUTLINK_DSCR_BF0_CH2 : RO; bitpos: [31:0]; default: 0; + * The address of the last outlink descriptor y-1. + */ + +#define DMA_OUTLINK_DSCR_BF0_CH2 0xFFFFFFFF +#define DMA_OUTLINK_DSCR_BF0_CH2_M (DMA_OUTLINK_DSCR_BF0_CH2_V << DMA_OUTLINK_DSCR_BF0_CH2_S) +#define DMA_OUTLINK_DSCR_BF0_CH2_V 0xFFFFFFFF +#define DMA_OUTLINK_DSCR_BF0_CH2_S 0 + +/* DMA_OUT_DSCR_BF1_CH2_REG register + * DMA_OUT_DSCR_BF1_CH2_REG. + */ + +#define DMA_OUT_DSCR_BF1_CH2_REG (DR_REG_GDMA_BASE + 0x278) + +/* DMA_OUTLINK_DSCR_BF1_CH2 : RO; bitpos: [31:0]; default: 0; + * The address of the second-to-last inlink descriptor x-2. + */ + +#define DMA_OUTLINK_DSCR_BF1_CH2 0xFFFFFFFF +#define DMA_OUTLINK_DSCR_BF1_CH2_M (DMA_OUTLINK_DSCR_BF1_CH2_V << DMA_OUTLINK_DSCR_BF1_CH2_S) +#define DMA_OUTLINK_DSCR_BF1_CH2_V 0xFFFFFFFF +#define DMA_OUTLINK_DSCR_BF1_CH2_S 0 + +/* DMA_OUT_PRI_CH2_REG register + * DMA_OUT_PRI_CH2_REG. + */ + +#define DMA_OUT_PRI_CH2_REG (DR_REG_GDMA_BASE + 0x27c) + +/* DMA_TX_PRI_CH2 : R/W; bitpos: [3:0]; default: 0; + * The priority of Tx channel 2. The larger of the value, the higher of the + * priority. + */ + +#define DMA_TX_PRI_CH2 0x0000000F +#define DMA_TX_PRI_CH2_M (DMA_TX_PRI_CH2_V << DMA_TX_PRI_CH2_S) +#define DMA_TX_PRI_CH2_V 0x0000000F +#define DMA_TX_PRI_CH2_S 0 + +/* DMA_OUT_PERI_SEL_CH2_REG register + * DMA_OUT_PERI_SEL_CH2_REG. + */ + +#define DMA_OUT_PERI_SEL_CH2_REG (DR_REG_GDMA_BASE + 0x280) + +/* DMA_PERI_OUT_SEL_CH2 : R/W; bitpos: [5:0]; default: 63; + * This register is used to select peripheral for Tx channel 2. 0:SPI2. 1: + * reserved. 2: UHCI0. 3: I2S0. 4: reserved. 5: reserved. 6: AES. 7: SHA. 8: + * ADC_DAC. + */ + +#define DMA_PERI_OUT_SEL_CH2 0x0000003F +#define DMA_PERI_OUT_SEL_CH2_M (DMA_PERI_OUT_SEL_CH2_V << DMA_PERI_OUT_SEL_CH2_S) +#define DMA_PERI_OUT_SEL_CH2_V 0x0000003F +#define DMA_PERI_OUT_SEL_CH2_S 0 + +#endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_DMA_H */ diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/configs/dma/defconfig b/boards/risc-v/esp32c3/esp32c3-devkit/configs/dma/defconfig new file mode 100644 index 00000000000..dc5ca2abbd9 --- /dev/null +++ b/boards/risc-v/esp32c3/esp32c3-devkit/configs/dma/defconfig @@ -0,0 +1,32 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +CONFIG_ARCH="risc-v" +CONFIG_ARCH_BOARD="esp32c3-devkit" +CONFIG_ARCH_BOARD_ESP32C3_DEVKIT=y +CONFIG_ARCH_CHIP="esp32c3" +CONFIG_ARCH_CHIP_ESP32C3=y +CONFIG_ARCH_CHIP_ESP32C3WROOM02=y +CONFIG_ARCH_INTERRUPTSTACK=1536 +CONFIG_ARCH_RISCV=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARD_LOOPSPERMSEC=15000 +CONFIG_BUILTIN=y +CONFIG_ESP32C3_DMA=y +CONFIG_ESP32C3_DMA_M2M_TEST=y +CONFIG_IDLETHREAD_STACKSIZE=2048 +CONFIG_INTELHEX_BINARY=y +CONFIG_LIBC_PERROR_STDOUT=y +CONFIG_LIBC_STRERROR=y +CONFIG_MAX_TASKS=8 +CONFIG_PREALLOC_TIMERS=0 +CONFIG_RAW_BINARY=y +CONFIG_START_DAY=29 +CONFIG_START_MONTH=11 +CONFIG_START_YEAR=2019 +CONFIG_UART0_SERIAL_CONSOLE=y +CONFIG_USER_ENTRYPOINT="esp32c3_dma_main" From 90a4e8d718c269ac110289ea0fac368abe78ef54 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Fri, 30 Apr 2021 14:22:06 -0300 Subject: [PATCH 076/739] risc-v/esp32c3: Fix DMA channels' interrupt IDs --- arch/risc-v/include/esp32c3/irq.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/arch/risc-v/include/esp32c3/irq.h b/arch/risc-v/include/esp32c3/irq.h index a6ec2a744d8..d7aff5ecccc 100644 --- a/arch/risc-v/include/esp32c3/irq.h +++ b/arch/risc-v/include/esp32c3/irq.h @@ -29,6 +29,8 @@ # include #endif +#include + /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ @@ -95,8 +97,8 @@ #define ESP32C3_PERIPH_ICACHE_SYNC0 42 #define ESP32C3_PERIPH_APB_ADC 43 #define ESP32C3_PERIPH_DMA_CH0 44 -#define ESP32C3_PERIPH_DMA_CH0 45 -#define ESP32C3_PERIPH_DMA_CH0 46 +#define ESP32C3_PERIPH_DMA_CH1 45 +#define ESP32C3_PERIPH_DMA_CH2 46 #define ESP32C3_PERIPH_RSA 47 #define ESP32C3_PERIPH_AES 48 #define ESP32C3_PERIPH_SHA 49 @@ -186,8 +188,8 @@ #define ESP32C3_IRQ_ICACHE_SYNC0 (ESP32C3_IRQ_FIRSTPERIPH + ESP32C3_PERIPH_ICACHE_SYNC0) #define ESP32C3_IRQ_APB_ADC (ESP32C3_IRQ_FIRSTPERIPH + ESP32C3_PERIPH_APB_ADC) #define ESP32C3_IRQ_DMA_CH0 (ESP32C3_IRQ_FIRSTPERIPH + ESP32C3_PERIPH_DMA_CH0) -#define ESP32C3_IRQ_DMA_CH0 (ESP32C3_IRQ_FIRSTPERIPH + ESP32C3_PERIPH_DMA_CH0) -#define ESP32C3_IRQ_DMA_CH0 (ESP32C3_IRQ_FIRSTPERIPH + ESP32C3_PERIPH_DMA_CH0) +#define ESP32C3_IRQ_DMA_CH1 (ESP32C3_IRQ_FIRSTPERIPH + ESP32C3_PERIPH_DMA_CH1) +#define ESP32C3_IRQ_DMA_CH2 (ESP32C3_IRQ_FIRSTPERIPH + ESP32C3_PERIPH_DMA_CH2) #define ESP32C3_IRQ_RSA (ESP32C3_IRQ_FIRSTPERIPH + ESP32C3_PERIPH_RSA) #define ESP32C3_IRQ_AES (ESP32C3_IRQ_FIRSTPERIPH + ESP32C3_PERIPH_AES) #define ESP32C3_IRQ_SHA (ESP32C3_IRQ_FIRSTPERIPH + ESP32C3_PERIPH_SHA) From c45e03b75f4f5b099cbc2a455f4b2f2c5ee1b904 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Wed, 5 May 2021 12:26:29 -0700 Subject: [PATCH 077/739] stm32f7:SDMMC:Use 250 Ms Data path timeout, regardless of Card Clock frequency --- arch/arm/src/stm32f7/stm32_sdmmc.c | 60 +++++++++++++++++++++++------- 1 file changed, 46 insertions(+), 14 deletions(-) diff --git a/arch/arm/src/stm32f7/stm32_sdmmc.c b/arch/arm/src/stm32f7/stm32_sdmmc.c index 047210e4943..1ce89cca5f7 100644 --- a/arch/arm/src/stm32f7/stm32_sdmmc.c +++ b/arch/arm/src/stm32f7/stm32_sdmmc.c @@ -49,6 +49,7 @@ #include "stm32_dtcm.h" #include "stm32_dma.h" #include "stm32_gpio.h" +#include "stm32_rcc.h" #include "stm32_sdmmc.h" #if defined(CONFIG_STM32F7_SDMMC1) || defined(CONFIG_STM32F7_SDMMC2) @@ -130,6 +131,11 @@ # else # undef CONFIG_STM32F7_SDMMC1_DMAPRIO # endif +# if STM32_RCC_DCKCFGR2_SDMMCSRC == RCC_DCKCFGR2_SDMMCSEL_48MHZ +# define STM32_SDMMC1_CLK UINT32_C(48000000) +# else +# define STM32_SDMMC1_CLK STM32_SYSCLK_FREQUENCY +# endif #endif #ifdef CONFIG_STM32F7_SDMMC2 @@ -143,6 +149,11 @@ # else # undef CONFIG_STM32F7_SDMMC2_DMAPRIO # endif +# if STM32_RCC_DCKCFGR2_SDMMCSRC == RCC_DCKCFGR2_SDMMCSEL_48MHZ +# define STM32_SDMMC2_CLK UINT32_C(48000000) +# else +# define STM32_SDMMC2_CLK STM32_SYSCLK_FREQUENCY +# endif #endif #undef HAVE_SDMMC_SDIO_MODE @@ -214,9 +225,9 @@ #define SDMMC_CMDTIMEOUT (100000) #define SDMMC_LONGTIMEOUT (0x7fffffff) -/* Big DTIMER setting */ +/* DTIMER setting */ -#define SDMMC_DTIMER_DATATIMEOUT (0x003d0900) /* 250 ms @ 16 MHz */ +#define SDMMC_DTIMER_DATATIMEOUT_MS 250 /* DMA channel/stream configuration register settings. The following * must be selected. The DMA driver will select the remaining fields. @@ -368,6 +379,7 @@ struct stm32_dev_s uint32_t base; int nirq; + uint32_t sdio_clk; #ifdef CONFIG_MMCSD_SDIOWAIT_WRCOMPLETE uint32_t d0_gpio; #endif @@ -625,6 +637,7 @@ struct stm32_dev_s g_sdmmcdev1 = }, .base = STM32_SDMMC1_BASE, .nirq = STM32_IRQ_SDMMC1, + .sdio_clk = STM32_SDMMC1_CLK, #ifdef CONFIG_MMCSD_SDIOWAIT_WRCOMPLETE .d0_gpio = SDMMC1_SDIO_PULL(GPIO_SDMMC1_D0), #endif @@ -684,6 +697,7 @@ struct stm32_dev_s g_sdmmcdev2 = }, .base = STM32_SDMMC2_BASE, .nirq = STM32_IRQ_SDMMC2, + .sdio_clk = STM32_SDMMC2_CLK, #ifdef CONFIG_MMCSD_SDIOWAIT_WRCOMPLETE .d0_gpio = SDMMC2_SDIO_PULL(GPIO_SDMMC2_D0), #endif @@ -1223,9 +1237,26 @@ static uint8_t stm32_log2(uint16_t value) static void stm32_dataconfig(struct stm32_dev_s *priv, uint32_t timeout, uint32_t dlen, uint32_t dctrl) { - uint32_t regval = 0; + uint32_t clkdiv; + uint32_t regval; + uint32_t sdio_clk = priv->sdio_clk; - /* Enable data path */ + /* Enable data path using a timeout scaled to the SD_CLOCK (the card + * clock). + */ + + regval = sdmmc_getreg32(priv, STM32_SDMMC_CLKCR_OFFSET); + clkdiv = (regval & STM32_SDMMC_CLKCR_CLKDIV_MASK) >> + STM32_SDMMC_CLKCR_CLKDIV_SHIFT; + + if ((regval & STM32_SDMMC_CLKCR_BYPASS) == 0) + { + sdio_clk = sdio_clk / (2 + clkdiv); + } + + /* Convert Timeout in Ms to SD_CLK counts */ + + timeout = timeout * (sdio_clk / 1000); sdmmc_putreg32(priv, timeout, STM32_SDMMC_DTIMER_OFFSET); /* Set DTIMER */ sdmmc_putreg32(priv, dlen, STM32_SDMMC_DLEN_OFFSET); /* Set DLEN */ @@ -1271,8 +1302,11 @@ static void stm32_datadisable(struct stm32_dev_s *priv) /* Reset DTIMER */ - sdmmc_putreg32(priv, SDMMC_DTIMER_DATATIMEOUT, STM32_SDMMC_DTIMER_OFFSET); - sdmmc_putreg32(priv, 0, STM32_SDMMC_DLEN_OFFSET); /* Reset DLEN */ + sdmmc_putreg32(priv, UINT32_MAX, STM32_SDMMC_DTIMER_OFFSET); + + /* Reset DLEN */ + + sdmmc_putreg32(priv, 0, STM32_SDMMC_DLEN_OFFSET); /* Reset DCTRL DTEN, DTDIR, DTMODE, DMAEN, and DBLOCKSIZE fields */ @@ -2254,8 +2288,8 @@ static int stm32_recvsetup(FAR struct sdio_dev_s *dev, FAR uint8_t *buffer, dblksize = stm32_log2(priv->blocksize) << STM32_SDMMC_DCTRL_DBLOCKSIZE_SHIFT; - stm32_dataconfig(priv, SDMMC_DTIMER_DATATIMEOUT * ((nbytes + 511) >> 9), - nbytes, dblksize | STM32_SDMMC_DCTRL_DTDIR); + stm32_dataconfig(priv, SDMMC_DTIMER_DATATIMEOUT_MS, nbytes, + dblksize | STM32_SDMMC_DCTRL_DTDIR); /* And enable interrupts */ @@ -2310,8 +2344,7 @@ static int stm32_sendsetup(FAR struct sdio_dev_s *dev, FAR const dblksize = stm32_log2(priv->blocksize) << STM32_SDMMC_DCTRL_DBLOCKSIZE_SHIFT; - stm32_dataconfig(priv, SDMMC_DTIMER_DATATIMEOUT * ((nbytes + 511) >> 9), - nbytes, dblksize); + stm32_dataconfig(priv, SDMMC_DTIMER_DATATIMEOUT_MS, nbytes, dblksize); /* Enable TX interrupts */ @@ -3061,8 +3094,8 @@ static int stm32_dmarecvsetup(FAR struct sdio_dev_s *dev, dblksize = stm32_log2(priv->blocksize) << STM32_SDMMC_DCTRL_DBLOCKSIZE_SHIFT; - stm32_dataconfig(priv, SDMMC_DTIMER_DATATIMEOUT * ((buflen + 511) >> 9), - buflen, dblksize | STM32_SDMMC_DCTRL_DTDIR); + stm32_dataconfig(priv, SDMMC_DTIMER_DATATIMEOUT_MS, buflen, + dblksize | STM32_SDMMC_DCTRL_DTDIR); /* Configure the RX DMA */ @@ -3165,8 +3198,7 @@ static int stm32_dmasendsetup(FAR struct sdio_dev_s *dev, dblksize = stm32_log2(priv->blocksize) << STM32_SDMMC_DCTRL_DBLOCKSIZE_SHIFT; - stm32_dataconfig(priv, SDMMC_DTIMER_DATATIMEOUT * ((buflen + 511) >> 9), - buflen, dblksize); + stm32_dataconfig(priv, SDMMC_DTIMER_DATATIMEOUT_MS, buflen, dblksize); /* Configure the TX DMA */ From 3e49d49cd950699d2b6358b11f51b5d633cfc0a8 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Thu, 6 May 2021 09:17:57 -0700 Subject: [PATCH 078/739] stm32h7:SDMMC:Use 250 Ms Data path timeout, regardless of Card Clock frequency --- arch/arm/src/stm32h7/stm32_sdmmc.c | 65 +++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 15 deletions(-) diff --git a/arch/arm/src/stm32h7/stm32_sdmmc.c b/arch/arm/src/stm32h7/stm32_sdmmc.c index 37a021be48a..c813eb87a71 100644 --- a/arch/arm/src/stm32h7/stm32_sdmmc.c +++ b/arch/arm/src/stm32h7/stm32_sdmmc.c @@ -167,7 +167,21 @@ #define FIFO_SIZE_IN_BYTES 64 -/* Friendly CLKCR bit re-definitions ****************************************/ +/* Friendly Clock source & CLKCR bit re-definitions *************************/ + +/* If not set in board use default pll1_q_ck clock is selected as + * kernel peripheral clock (default after reset) + */ + +#if !defined(STM32_RCC_D1CCIPR_SDMMCSEL) +# define STM32_RCC_D1CCIPR_SDMMCSEL RCC_D1CCIPR_SDMMC_PLL1 +#endif + +#if STM32_RCC_D1CCIPR_SDMMCSEL == RCC_D1CCIPR_SDMMC_PLL1 +# define STM32_SDMMC_CLK STM32_PLL1Q_FREQUENCY +#else +# define STM32_SDMMC_CLK STM32_PLL2R_FREQUENCY +#endif #define STM32_CLKCR_RISINGEDGE (0) #define STM32_CLKCR_FALLINGEDGE STM32_SDMMC_CLKCR_NEGEDGE @@ -208,9 +222,9 @@ #define SDMMC_CMDTIMEOUT (100000) #define SDMMC_LONGTIMEOUT (0x7fffffff) -/* Big DTIMER setting */ +/* DTIMER setting */ -#define SDMMC_DTIMER_DATATIMEOUT (6250000) /* 250 ms @ 25 MHz */ +#define SDMMC_DTIMER_DATATIMEOUT_MS 250 /* Block size for multi-block transfers */ @@ -1080,7 +1094,10 @@ static uint8_t stm32_log2(uint16_t value) static void stm32_dataconfig(struct stm32_dev_s *priv, uint32_t timeout, uint32_t dlen, bool receive) { - uint32_t dctrl = 0; + uint32_t clkdiv; + uint32_t regval; + uint32_t dctrl; + uint32_t sdio_clk = STM32_SDMMC_CLK; DEBUGASSERT((sdmmc_getreg32(priv, STM32_SDMMC_IDMACTRLR_OFFSET) & STM32_SDMMC_IDMACTRLR_IDMAEN) == 0); @@ -1140,7 +1157,26 @@ static void stm32_dataconfig(struct stm32_dev_s *priv, uint32_t timeout, /* Enable data path */ - /* Set DTIMER */ + /* Set DTIMER + * + * Enable data path using a timeout scaled to the SD_CLOCK (the card + * clock). + */ + + regval = sdmmc_getreg32(priv, STM32_SDMMC_CLKCR_OFFSET); + clkdiv = (regval & STM32_SDMMC_CLKCR_CLKDIV_MASK) >> + STM32_SDMMC_CLKCR_CLKDIV_SHIFT; + + /* CLKDIV_ of 0x000: is Bypass */ + + if (clkdiv != 0) + { + sdio_clk = sdio_clk / (2 * clkdiv); + } + + /* Convert Timeout in Ms to SD_CLK counts */ + + timeout = timeout * (sdio_clk / 1000); sdmmc_putreg32(priv, timeout, STM32_SDMMC_DTIMER_OFFSET); @@ -1174,8 +1210,11 @@ static void stm32_datadisable(struct stm32_dev_s *priv) /* Reset DTIMER */ - sdmmc_putreg32(priv, SDMMC_DTIMER_DATATIMEOUT, STM32_SDMMC_DTIMER_OFFSET); - sdmmc_putreg32(priv, 0, STM32_SDMMC_DLEN_OFFSET); /* Reset DLEN */ + sdmmc_putreg32(priv, UINT32_MAX, STM32_SDMMC_DTIMER_OFFSET); + + /* Reset DLEN */ + + sdmmc_putreg32(priv, 0, STM32_SDMMC_DLEN_OFFSET); /* Reset DCTRL DTEN, DTDIR, DTMODE, and DBLOCKSIZE fields */ @@ -2305,8 +2344,7 @@ static int stm32_recvsetup(FAR struct sdio_dev_s *dev, FAR uint8_t *buffer, /* Then set up the SDIO data path */ - stm32_dataconfig(priv, SDMMC_DTIMER_DATATIMEOUT * ((nbytes + 511) >> 9), - nbytes, true); + stm32_dataconfig(priv, SDMMC_DTIMER_DATATIMEOUT_MS, nbytes, true); /* Workaround the FIFO data available issue */ @@ -2380,8 +2418,7 @@ static int stm32_sendsetup(FAR struct sdio_dev_s *dev, FAR const /* Then set up the SDIO data path */ - stm32_dataconfig(priv, SDMMC_DTIMER_DATATIMEOUT * ((nbytes + 511) >> 9), - nbytes, false); + stm32_dataconfig(priv, SDMMC_DTIMER_DATATIMEOUT_MS, nbytes, false); /* Enable TX interrupts */ @@ -3163,8 +3200,7 @@ static int stm32_dmarecvsetup(FAR struct sdio_dev_s *dev, /* Then set up the SDIO data path */ - stm32_dataconfig(priv, SDMMC_DTIMER_DATATIMEOUT * ((buflen + 511) >> 9), - buflen, true); + stm32_dataconfig(priv, SDMMC_DTIMER_DATATIMEOUT_MS, buflen, true); /* Configure the RX DMA */ @@ -3255,8 +3291,7 @@ static int stm32_dmasendsetup(FAR struct sdio_dev_s *dev, /* Then set up the SDIO data path */ - stm32_dataconfig(priv, SDMMC_DTIMER_DATATIMEOUT * ((buflen + 511) >> 9), - buflen, false); + stm32_dataconfig(priv, SDMMC_DTIMER_DATATIMEOUT_MS, buflen, false); /* Configure the TX DMA */ From 17b786399cc271af02c837a0b69ffe3c17509b11 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Thu, 6 May 2021 09:24:31 -0700 Subject: [PATCH 079/739] stm32:SDIO:Use 250 Ms Data path timeout, regardless of Card Clock frequency --- arch/arm/src/stm32/stm32_sdio.c | 47 ++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/arch/arm/src/stm32/stm32_sdio.c b/arch/arm/src/stm32/stm32_sdio.c index 898e32bf12f..5c78d79dc47 100644 --- a/arch/arm/src/stm32/stm32_sdio.c +++ b/arch/arm/src/stm32/stm32_sdio.c @@ -153,7 +153,7 @@ # define SDIO_CLKCR_EDGE SDIO_CLKCR_RISINGEDGE #endif -/* Mode dependent settings. These depend on clock devisor settings that must +/* Mode dependent settings. These depend on clock divisor settings that must * be defined in the board-specific board.h header file: SDIO_INIT_CLKDIV, * SDIO_MMCXFR_CLKDIV, and SDIO_SDXFR_CLKDIV. */ @@ -172,9 +172,12 @@ #define SDIO_CMDTIMEOUT (100000) #define SDIO_LONGTIMEOUT (0x7fffffff) -/* Big DTIMER setting */ +/* DTIMER setting */ -#define SDIO_DTIMER_DATATIMEOUT (0x000fffff) +/* Assuming Max timeout in bypass 48 Mhz */ + +#define IP_CLCK_FREQ UINT32_C(48000000) +#define SDIO_DTIMER_DATATIMEOUT_MS 250 /* DMA channel/stream configuration register settings. The following * must be selected. The DMA driver will select the remaining fields. @@ -1016,9 +1019,24 @@ static uint8_t stm32_log2(uint16_t value) static void stm32_dataconfig(uint32_t timeout, uint32_t dlen, uint32_t dctrl) { - uint32_t regval = 0; + uint32_t clkdiv; + uint32_t regval; + uint32_t sdio_clk = IP_CLCK_FREQ; - /* Enable data path */ + /* Enable data path using a timeout scaled to the SD_CLOCK (the card + * clock). + */ + + regval = getreg32(STM32_SDIO_CLKCR); + clkdiv = (regval & SDIO_CLKCR_CLKDIV_MASK) >> SDIO_CLKCR_CLKDIV_SHIFT; + if ((regval & SDIO_CLKCR_BYPASS) == 0) + { + sdio_clk = sdio_clk / (2 + clkdiv); + } + + /* Convert Timeout in Ms to SD_CLK counts */ + + timeout = timeout * (sdio_clk / 1000); putreg32(timeout, STM32_SDIO_DTIMER); /* Set DTIMER */ putreg32(dlen, STM32_SDIO_DLEN); /* Set DLEN */ @@ -1049,10 +1067,15 @@ static void stm32_datadisable(void) { uint32_t regval; - /* Disable the data path */ + /* Disable the data path */ - putreg32(SDIO_DTIMER_DATATIMEOUT, STM32_SDIO_DTIMER); /* Reset DTIMER */ - putreg32(0, STM32_SDIO_DLEN); /* Reset DLEN */ + /* Reset DTIMER */ + + putreg32(UINT32_MAX, STM32_SDIO_DTIMER); + + /* Reset DLEN */ + + putreg32(0, STM32_SDIO_DLEN); /* Reset DCTRL DTEN, DTDIR, DTMODE, DMAEN, and DBLOCKSIZE fields */ @@ -1992,7 +2015,7 @@ static int stm32_recvsetup(FAR struct sdio_dev_s *dev, FAR uint8_t *buffer, dblocksize = stm32_log2(nbytes) << SDIO_DCTRL_DBLOCKSIZE_SHIFT; } - stm32_dataconfig(SDIO_DTIMER_DATATIMEOUT, nbytes, + stm32_dataconfig(SDIO_DTIMER_DATATIMEOUT_MS, nbytes, dblocksize | SDIO_DCTRL_DTDIR); /* And enable interrupts */ @@ -2057,7 +2080,7 @@ static int stm32_sendsetup(FAR struct sdio_dev_s *dev, dblocksize = stm32_log2(nbytes) << SDIO_DCTRL_DBLOCKSIZE_SHIFT; } - stm32_dataconfig(SDIO_DTIMER_DATATIMEOUT, nbytes, dblocksize); + stm32_dataconfig(SDIO_DTIMER_DATATIMEOUT_MS, nbytes, dblocksize); /* Enable TX interrupts */ @@ -2800,7 +2823,7 @@ static int stm32_dmarecvsetup(FAR struct sdio_dev_s *dev, dblocksize = stm32_log2(buflen) << SDIO_DCTRL_DBLOCKSIZE_SHIFT; } - stm32_dataconfig(SDIO_DTIMER_DATATIMEOUT, buflen, + stm32_dataconfig(SDIO_DTIMER_DATATIMEOUT_MS, buflen, dblocksize | SDIO_DCTRL_DTDIR); /* Configure the RX DMA */ @@ -2880,7 +2903,7 @@ static int stm32_dmasendsetup(FAR struct sdio_dev_s *dev, dblocksize = stm32_log2(buflen) << SDIO_DCTRL_DBLOCKSIZE_SHIFT; } - stm32_dataconfig(SDIO_DTIMER_DATATIMEOUT, buflen, dblocksize); + stm32_dataconfig(SDIO_DTIMER_DATATIMEOUT_MS, buflen, dblocksize); /* Configure the TX DMA */ From a1c4ba379f21f5fc952712264a54e53680c6d35c Mon Sep 17 00:00:00 2001 From: Diego Herranz Date: Fri, 7 May 2021 23:41:43 +0100 Subject: [PATCH 080/739] drivers/sensors/hdc1008: add missing break It was not possible to use the HDC1008_MEAS_T_AND_RH operation mode since it was running the default case too. --- drivers/sensors/hdc1008.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/sensors/hdc1008.c b/drivers/sensors/hdc1008.c index 8023e47d2f1..ac4c706af58 100644 --- a/drivers/sensors/hdc1008.c +++ b/drivers/sensors/hdc1008.c @@ -299,6 +299,7 @@ static int hdc1008_set_operational_mode(struct hdc1008_dev_s *priv, case HDC1008_MEAS_T_AND_RH: { reg |= HDC1008_CONFIGURATION_MODE; + break; } default: From f547883747242ddf0a1633b70d7a08e788e46f9f Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Fri, 7 May 2021 14:10:28 -0300 Subject: [PATCH 081/739] tools/nxstyle: Extend check to any URI scheme --- tools/nxstyle.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tools/nxstyle.c b/tools/nxstyle.c index 645a3557dbf..3105e3ff700 100644 --- a/tools/nxstyle.c +++ b/tools/nxstyle.c @@ -1862,10 +1862,9 @@ int main(int argc, char **argv, char **envp) else if (line[n + 1] == '/') { - /* Check for "http://" or "https://" */ + /* Check for URI schemes, e.g. "http://" or "https://" */ - if ((n < 5 || strncmp(&line[n - 5], "http://", 7) != 0) && - (n < 6 || strncmp(&line[n - 6], "https://", 8) != 0)) + if (n == 0 || strncmp(&line[n - 1], "://", 3) != 0) { ERROR("C++ style comment", lineno, n); n++; From 87375ae2aca2a818ac4e285e2ff0102bbf7427a5 Mon Sep 17 00:00:00 2001 From: Simon Piriou Date: Sat, 8 May 2021 15:14:31 +0200 Subject: [PATCH 082/739] fs/eventfd: add EVENT_FD_POLL as a Kconfig dependency for EVENT_FD_NPOLLWAITERS --- fs/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/fs/Kconfig b/fs/Kconfig index 02b9f769452..e8f8b295614 100644 --- a/fs/Kconfig +++ b/fs/Kconfig @@ -82,6 +82,7 @@ config EVENT_FD_POLL config EVENT_FD_NPOLLWAITERS int "Number of eventFD poll waiters" default 2 + depends on EVENT_FD_POLL ---help--- Maximum number of threads that can be waiting on poll() From db517cc2293ea53bebd9730d20ed35db46c08b3b Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Thu, 6 May 2021 10:57:42 -0700 Subject: [PATCH 083/739] include/spawn.h: Add POSIX_SPAWN_SETSID definition Signed-off-by: Xiang Xiao Change-Id: I7ad654a1cb9b74a9f27f52c88fffa8b487a48f33 --- include/spawn.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/spawn.h b/include/spawn.h index 517daaab5b4..c999f1ba386 100644 --- a/include/spawn.h +++ b/include/spawn.h @@ -53,6 +53,7 @@ #define POSIX_SPAWN_SETSCHEDULER (1 << 3) /* 1: Set task's scheduler policy */ #define POSIX_SPAWN_SETSIGDEF (1 << 4) /* 1: Set default signal actions */ #define POSIX_SPAWN_SETSIGMASK (1 << 5) /* 1: Set sigmask */ +#define POSIX_SPAWN_SETSID (1 << 7) /* 1: Create the new session(glibc specific) */ /**************************************************************************** * Type Definitions From 56d0fbf68ebcb99506d7aef3ab4e1249aa1ae0cb Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Sun, 9 May 2021 14:05:03 +0800 Subject: [PATCH 084/739] nuttx/fs/fs.h: Correct the comment for the return value of nx_dup2 Signed-off-by: Xiang Xiao --- include/nuttx/fs/fs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/nuttx/fs/fs.h b/include/nuttx/fs/fs.h index 44385981277..ec497b2af3d 100644 --- a/include/nuttx/fs/fs.h +++ b/include/nuttx/fs/fs.h @@ -795,7 +795,7 @@ int file_dup2(FAR struct file *filep1, FAR struct file *filep2); * applications. * * Returned Value: - * Zero (OK) is returned on success; a negated errno value is return on + * fd2 is returned on success; a negated errno value is return on * any failure. * ****************************************************************************/ From 8af9d396678cdea143468630f9c32ed3ae0ebffe Mon Sep 17 00:00:00 2001 From: Nathan Hartman <59230071+hartmannathan@users.noreply.github.com> Date: Wed, 5 May 2021 22:18:49 -0400 Subject: [PATCH 085/739] Documentation, comments: Minor improvements and typos fixed --- .../reference/user/04_message_queue.rst | 91 +++++++++---------- arch/arm/src/kinetis/kinetis_dma.c | 6 +- arch/arm/src/kinetis/kinetis_dma.h | 6 +- arch/arm/src/kinetis/kinetis_pindump.c | 2 +- arch/arm/src/kl/kl_dma.h | 6 +- arch/arm/src/kl/kl_dumpgpio.c | 2 +- arch/arm/src/lc823450/lc823450_dma.c | 6 +- arch/arm/src/lpc17xx_40xx/lpc17_40_ethernet.c | 4 +- arch/arm/src/lpc17xx_40xx/lpc17_40_gpdma.c | 6 +- arch/arm/src/lpc17xx_40xx/lpc17_40_gpdma.h | 6 +- arch/arm/src/lpc43xx/lpc43_gpdma.c | 6 +- arch/arm/src/lpc43xx/lpc43_gpdma.h | 6 +- arch/arm/src/lpc43xx/lpc43_spifi.c | 2 +- arch/arm/src/lpc43xx/lpc43_spifi.h | 2 +- arch/arm/src/nuc1xx/nuc_dumpgpio.c | 2 +- arch/arm/src/nuc1xx/nuc_gpio.h | 2 +- arch/arm/src/s32k1xx/s32k1xx_pindump.c | 2 +- arch/arm/src/stm32/stm32_dma_v1mux.c | 8 +- arch/arm/src/stm32h7/stm32_dma.c | 6 +- arch/arm/src/stm32h7/stm32_dma.h | 6 +- arch/arm/src/stm32l4/stm32l4_dma.h | 6 +- arch/arm/src/stm32l4/stm32l4xrxx_dma.c | 6 +- arch/arm/src/xmc4/xmc4_dma.h | 6 +- arch/mips/src/pic32mx/pic32mx.h | 6 +- arch/x86/src/qemu/qemu.h | 6 +- boards/arm/sama5/sama5d3-xplained/README.txt | 2 +- boards/arm/sama5/sama5d3x-ek/README.txt | 2 +- boards/renesas/m16c/skp16c26/README.txt | 2 +- include/nuttx/nx/nxfonts.h | 4 +- libs/libc/semaphore/sem_setprotocol.c | 2 +- libs/libc/time/lib_asctime.c | 2 +- libs/libc/time/lib_asctimer.c | 2 +- libs/libc/time/lib_ctime.c | 2 +- libs/libc/time/lib_ctimer.c | 2 +- libs/libnx/nxfonts/nxfonts_cache.c | 2 +- sched/mqueue/mq_initialize.c | 2 +- sched/mqueue/mq_rcvinternal.c | 4 +- sched/mqueue/mq_receive.c | 2 +- sched/mqueue/mq_sndinternal.c | 2 +- sched/mqueue/mq_timedreceive.c | 2 +- 40 files changed, 118 insertions(+), 123 deletions(-) diff --git a/Documentation/reference/user/04_message_queue.rst b/Documentation/reference/user/04_message_queue.rst index 22877039b47..d5d6b8ebe08 100644 --- a/Documentation/reference/user/04_message_queue.rst +++ b/Documentation/reference/user/04_message_queue.rst @@ -19,11 +19,10 @@ handlers may send messages via named message queues. .. c:function:: mqd_t mq_open(const char *mqName, int oflags, ...) - Establishes a connection between a named - message queue and the calling task. After a successful call of - mq_open(), the task can reference the message queue using the address - returned by the call. The message queue remains usable until it is - closed by a successful call to mq_close(). + Establishes a connection between a named message queue and the calling + task. After a successful call of mq_open(), the task can reference the + message queue using the address returned by the call. The message queue + remains usable until it is closed by a successful call to mq_close(). :param mqName: Name of the queue to open :param oflags: Open flags. These may be any combination of: @@ -65,10 +64,10 @@ handlers may send messages via named message queues. .. c:function:: int mq_close(mqd_t mqdes) - Used to indicate that the calling task - is finished with the specified message queued mqdes. The mq_close() - deallocates any system resources allocated by the system for use by this - task for its message queue. + Used to indicate that the calling task is finished with the specified + message queued ``mqdes``. The ``mq_close()`` deallocates any system + resources allocated by the system for use by this task for its message + queue. If the calling task has attached a notification request to the message queue via this ``mqdes`` (see ``mq_notify()``), this attachment will be @@ -104,10 +103,10 @@ handlers may send messages via named message queues. .. c:function:: int mq_send(mqd_t mqdes, const void *msg, size_t msglen, int prio) - Adds the specified message, ``msg``, to - the message queue, ``mqdes``. The ``msglen`` parameter specifies the - length of the message in bytes pointed to by ``msg``. This length must - not exceed the maximum message length from the ``mq_getattr()``. + Adds the specified message, ``msg``, to the message queue, ``mqdes``. + The ``msglen`` parameter specifies the length of the message in bytes + pointed to by ``msg``. This length must not exceed the maximum message + length from the ``mq_getattr()``. If the message queue is not full, ``mq_send()`` will place the ``msg`` in the message queue at the position indicated by the ``prio`` argument. @@ -125,14 +124,14 @@ handlers may send messages via named message queues. However, it behaves differently when called from the interrupt level: - It does not check the size of the queue. It will always post the - message, even if there is already too many messages in queue. This is + message, even if there are already too many messages in queue. This is because the interrupt handler does not have the option of waiting for the message queue to become non-full. - It doesn't allocate new memory (because you cannot allocate memory - from an interrupt handler). Instead, there are are pool of - pre-allocated message structures that may be used just for sending - messages from interrupt handlers. The number of such pre-allocated - messages is a configuration parameter. + from an interrupt handler). Instead, there is a pool of pre-allocated + message structures that may be used just for sending messages from + interrupt handlers. The number of such pre-allocated messages is set + by the ``PREALLOC_MQ_IRQ_MSGS`` configuration parameter. :param mqdes: Message queue descriptor. :param msg: Message to send. @@ -157,10 +156,10 @@ handlers may send messages via named message queues. .. c:function:: int mq_timedsend(mqd_t mqdes, const char *msg, size_t msglen, int prio, \ const struct timespec *abstime); - Adds the specified message, ``msg``, to - the message queue, ``mqdes``. The ``msglen`` parameter specifies the - length of the message in bytes pointed to by ``msg``. This length must - not exceed the maximum message length from the ``mq_getattr()``. + Adds the specified message, ``msg``, to the message queue, ``mqdes``. + The ``msglen`` parameter specifies the length of the message in bytes + pointed to by ``msg``. This length must not exceed the maximum message + length from the ``mq_getattr()``. If the message queue is not full, ``mq_timedsend()`` will place the ``msg`` in the message queue at the position indicated by the ``prio`` @@ -203,12 +202,11 @@ handlers may send messages via named message queues. .. c:function:: ssize_t mq_receive(mqd_t mqdes, void *msg, size_t msglen, int *prio) - Receives the oldest of the highest - priority messages from the message queue specified by ``mqdes``. If the - size of the buffer in bytes, ``msgLen``, is less than the ``mq_msgsize`` - attribute of the message queue, ``mq_receive()`` will return an error. - Otherwise, the selected message is removed from the queue and copied to - ``msg``. + Receives the oldest of the highest priority messages from the message + queue specified by ``mqdes``. If the size of the buffer in bytes, + ``msgLen``, is less than the ``mq_msgsize`` attribute of the message + queue, ``mq_receive()`` will return an error. Otherwise, the selected + message is removed from the queue and copied to ``msg``. If the message queue is empty and ``O_NONBLOCK`` was not set, ``mq_receive()`` will block until a message is added to the message @@ -223,8 +221,8 @@ handlers may send messages via named message queues. :param msg: Buffer to receive the message. :param msglen: Size of the buffer in bytes. :param prio: If not NULL, the location to store message priority. - :return: One success, the length of the selected message in - bytes is returned. On failure, -1 (``ERROR``) is returned and the + :return: On success, the length of the selected message in bytes is + returned. On failure, -1 (``ERROR``) is returned and the ```errno`` <#ErrnoAccess>`__ is set appropriately: - ``EAGAIN`` The queue was empty and the ``O_NONBLOCK`` flag was set @@ -241,12 +239,11 @@ handlers may send messages via named message queues. .. c:function:: ssize_t mq_timedreceive(mqd_t mqdes, void *msg, size_t msglen, \ int *prio, const struct timespec *abstime); - Receives the oldest of the highest - priority messages from the message queue specified by ``mqdes``. If the - size of the buffer in bytes, ``msgLen``, is less than the ``mq_msgsize`` - attribute of the message queue, ``mq_timedreceive()`` will return an - error. Otherwise, the selected message is removed from the queue and - copied to ``msg``. + Receives the oldest of the highest priority messages from the message + queue specified by ``mqdes``. If the size of the buffer in bytes, + ``msgLen``, is less than the ``mq_msgsize`` attribute of the message + queue, ``mq_timedreceive()`` will return an error. Otherwise, the + selected message is removed from the queue and copied to ``msg``. If the message queue is empty and ``O_NONBLOCK`` was not set, ``mq_timedreceive()`` will block until a message is added to the message @@ -270,8 +267,8 @@ handlers may send messages via named message queues. :param prio: If not NULL, the location to store message priority. :param abstime: The absolute time to wait until a timeout is declared. - :return: One success, the length of the selected message in - bytes is returned. On failure, -1 (``ERROR``) is returned and the + :return: On success, the length of the selected message in bytes is + returned. On failure, -1 (``ERROR``) is returned and the ```errno`` <#ErrnoAccess>`__ is set appropriately: - ``EAGAIN``: The queue was empty and the ``O_NONBLOCK`` flag was set @@ -289,11 +286,10 @@ handlers may send messages via named message queues. .. c:function:: int mq_notify(mqd_t mqdes, FAR const struct sigevent *notification) - If the ``notification`` input parameter is not - ``NULL``, this function connects the task with the message queue such - that the specified signal will be sent to the task whenever the message - changes from empty to non-empty. One notification can be attached to a - message queue. + If the ``notification`` input parameter is not ``NULL``, this function + connects the task with the message queue such that the specified signal + will be sent to the task whenever the message queue changes from empty + to non-empty. One notification can be attached to a message queue. If ``notification``; is ``NULL``, the attached notification is detached (if it was held by the calling task) and the queue is available to @@ -337,9 +333,8 @@ handlers may send messages via named message queues. .. c:function:: int mq_setattr(mqd_t mqdes, const struct mq_attr *mqStat, \ struct mq_attr *oldMqStat); - Sets the attributes associated with the - specified message queue "mqdes." Only the "O_NONBLOCK" bit of the - "mq_flags" can be changed. + Sets the attributes associated with the specified message queue "mqdes." + Only the "O_NONBLOCK" bit of the "mq_flags" can be changed. If ``oldMqStat`` is non-null, mq_setattr() will store the previous message queue attributes at that location (just as would have been returned by @@ -357,8 +352,8 @@ handlers may send messages via named message queues. .. c:function:: int mq_getattr(mqd_t mqdes, struct mq_attr *mqStat) - Gets status information and attributes - associated with the specified message queue. + Gets status information and attributes associated with the specified + message queue. :param mqdes: Message queue descriptor :param mqStat: Buffer in which to return attributes. The returned diff --git a/arch/arm/src/kinetis/kinetis_dma.c b/arch/arm/src/kinetis/kinetis_dma.c index 13aec599f70..75b6dab2dc7 100644 --- a/arch/arm/src/kinetis/kinetis_dma.c +++ b/arch/arm/src/kinetis/kinetis_dma.c @@ -222,9 +222,9 @@ void weak_function arm_dma_initialize(void) * gives the caller exclusive access to the DMA channel. * * Returned Value: - * One success, this function returns a non-NULL, void* DMA channel - * handle. NULL is returned on any failure. This function can fail only - * if no DMA channel is available. + * On success, this function returns a non-NULL, void* DMA channel handle. + * NULL is returned on any failure. This function can fail only if no DMA + * channel is available. * ****************************************************************************/ diff --git a/arch/arm/src/kinetis/kinetis_dma.h b/arch/arm/src/kinetis/kinetis_dma.h index f352080b5c3..96b13e7b9cd 100644 --- a/arch/arm/src/kinetis/kinetis_dma.h +++ b/arch/arm/src/kinetis/kinetis_dma.h @@ -150,9 +150,9 @@ void kinetis_dmainitialize(void); * dir - transfer direction * * Returned Value: - * One success, this function returns a non-NULL, void * DMA channel - * handle. NULL is returned on any failure. This function can fail only - * if no DMA channel is available. + * On success, this function returns a non-NULL, void* DMA channel handle. + * NULL is returned on any failure. This function can fail only if no DMA + * channel is available. * ****************************************************************************/ diff --git a/arch/arm/src/kinetis/kinetis_pindump.c b/arch/arm/src/kinetis/kinetis_pindump.c index 4c245dac289..efc3bcaaec3 100644 --- a/arch/arm/src/kinetis/kinetis_pindump.c +++ b/arch/arm/src/kinetis/kinetis_pindump.c @@ -78,7 +78,7 @@ static const char g_portchar[KINETIS_NPORTS] = * * Description: * Dump all GPIO registers associated with the provided pin description - * along with a descriptive messasge. + * along with a descriptive message. * ****************************************************************************/ diff --git a/arch/arm/src/kl/kl_dma.h b/arch/arm/src/kl/kl_dma.h index a8c7e7017c8..1a6dfc43929 100644 --- a/arch/arm/src/kl/kl_dma.h +++ b/arch/arm/src/kl/kl_dma.h @@ -111,9 +111,9 @@ void kl_dmainitilaize(void); * gives the caller exclusive access to the DMA channel. * * Returned Value: - * One success, this function returns a non-NULL, void* DMA channel - * handle. NULL is returned on any failure. This function can fail only - * if no DMA channel is available. + * On success, this function returns a non-NULL, void* DMA channel handle. + * NULL is returned on any failure. This function can fail only if no DMA + * channel is available. * ****************************************************************************/ diff --git a/arch/arm/src/kl/kl_dumpgpio.c b/arch/arm/src/kl/kl_dumpgpio.c index 826c10f0638..da842828115 100644 --- a/arch/arm/src/kl/kl_dumpgpio.c +++ b/arch/arm/src/kl/kl_dumpgpio.c @@ -82,7 +82,7 @@ static const char g_portchar[KL_GPIO_NPORTS] = * * Description: * Dump all GPIO registers associated with the provided pin description - * along with a descriptive messasge. + * along with a descriptive message. * ****************************************************************************/ diff --git a/arch/arm/src/lc823450/lc823450_dma.c b/arch/arm/src/lc823450/lc823450_dma.c index ab417aadcde..195700c2ffe 100644 --- a/arch/arm/src/lc823450/lc823450_dma.c +++ b/arch/arm/src/lc823450/lc823450_dma.c @@ -495,9 +495,9 @@ void lc823450_dmareauest_dir(DMA_HANDLE handle, uint8_t dmarequest, int m2p) * gives the caller exclusive access to the DMA channel. * * Returned Value: - * One success, this function returns a non-NULL, void* DMA channel - * handle. NULL is returned on any failure. This function can fail only - * if no DMA channel is available. + * On success, this function returns a non-NULL, void* DMA channel handle. + * NULL is returned on any failure. This function can fail only if no DMA + * channel is available. * ****************************************************************************/ diff --git a/arch/arm/src/lpc17xx_40xx/lpc17_40_ethernet.c b/arch/arm/src/lpc17xx_40xx/lpc17_40_ethernet.c index 27befee53b8..b194b550cae 100644 --- a/arch/arm/src/lpc17xx_40xx/lpc17_40_ethernet.c +++ b/arch/arm/src/lpc17xx_40xx/lpc17_40_ethernet.c @@ -655,9 +655,9 @@ static int lpc17_40_transmit(struct lpc17_40_driver_s *priv) *txdesc = TXDESC_CONTROL_INT | TXDESC_CONTROL_LAST | TXDESC_CONTROL_CRC | (priv->lp_dev.d_len - 1); - /* Copy the packet data into the Tx buffer assignd to this descriptor. It + /* Copy the packet data into the Tx buffer assigned to this descriptor. It * should fit because each packet buffer is the MTU size and breaking up - * largerTCP messasges is handled by higher level logic. The hardware + * larger TCP message is handled by higher level logic. The hardware * does, however, support breaking up larger messages into many fragments, * however, that capability is not exploited here. * diff --git a/arch/arm/src/lpc17xx_40xx/lpc17_40_gpdma.c b/arch/arm/src/lpc17xx_40xx/lpc17_40_gpdma.c index 7d506676ee8..6029cb9a126 100644 --- a/arch/arm/src/lpc17xx_40xx/lpc17_40_gpdma.c +++ b/arch/arm/src/lpc17xx_40xx/lpc17_40_gpdma.c @@ -367,9 +367,9 @@ void lpc17_40_dmaconfigure(uint8_t dmarequest, bool alternate) * gives the caller exclusive access to the DMA channel. * * Returned Value: - * One success, this function returns a non-NULL, void* DMA channel - * handle. NULL is returned on any failure. This function can fail only - * if no DMA channel is available. + * On success, this function returns a non-NULL, void* DMA channel handle. + * NULL is returned on any failure. This function can fail only if no DMA + * channel is available. * ****************************************************************************/ diff --git a/arch/arm/src/lpc17xx_40xx/lpc17_40_gpdma.h b/arch/arm/src/lpc17xx_40xx/lpc17_40_gpdma.h index 128be9848d3..a6db12cb304 100644 --- a/arch/arm/src/lpc17xx_40xx/lpc17_40_gpdma.h +++ b/arch/arm/src/lpc17xx_40xx/lpc17_40_gpdma.h @@ -149,9 +149,9 @@ void lpc17_40_dmaconfigure(uint8_t dmarequest, bool alternate); * gives the caller exclusive access to the DMA channel. * * Returned Value: - * One success, this function returns a non-NULL, void* DMA channel - * handle. NULL is returned on any failure. This function can fail only - * if no DMA channel is available. + * On success, this function returns a non-NULL, void* DMA channel handle. + * NULL is returned on any failure. This function can fail only if no DMA + * channel is available. * ****************************************************************************/ diff --git a/arch/arm/src/lpc43xx/lpc43_gpdma.c b/arch/arm/src/lpc43xx/lpc43_gpdma.c index 2d45d74b026..c2586c206a4 100644 --- a/arch/arm/src/lpc43xx/lpc43_gpdma.c +++ b/arch/arm/src/lpc43xx/lpc43_gpdma.c @@ -366,9 +366,9 @@ void lpc43_dmaconfigure(uint8_t dmarequest, uint8_t dmasrc) * gives the caller exclusive access to the DMA channel. * * Returned Value: - * One success, this function returns a non-NULL, void* DMA channel - * handle. NULL is returned on any failure. This function can fail only - * if no DMA channel is available. + * On success, this function returns a non-NULL, void* DMA channel handle. + * NULL is returned on any failure. This function can fail only if no DMA + * channel is available. * ****************************************************************************/ diff --git a/arch/arm/src/lpc43xx/lpc43_gpdma.h b/arch/arm/src/lpc43xx/lpc43_gpdma.h index deaabc38d5d..ebd925961ff 100644 --- a/arch/arm/src/lpc43xx/lpc43_gpdma.h +++ b/arch/arm/src/lpc43xx/lpc43_gpdma.h @@ -114,9 +114,9 @@ extern "C" * gives the caller exclusive access to the DMA channel. * * Returned Value: - * One success, this function returns a non-NULL, void* DMA channel - * handle. NULL is returned on any failure. This function can fail only - * if no DMA channel is available. + * On success, this function returns a non-NULL, void* DMA channel handle. + * NULL is returned on any failure. This function can fail only if no DMA + * channel is available. * ****************************************************************************/ diff --git a/arch/arm/src/lpc43xx/lpc43_spifi.c b/arch/arm/src/lpc43xx/lpc43_spifi.c index 3eec0eb21b7..1e5df209678 100644 --- a/arch/arm/src/lpc43xx/lpc43_spifi.c +++ b/arch/arm/src/lpc43xx/lpc43_spifi.c @@ -1146,7 +1146,7 @@ static inline int lpc43_rominit(FAR struct lpc43_dev_s *priv) * None * * Returned Value: - * One success, a reference to the initialized MTD device instance is + * On success, a reference to the initialized MTD device instance is * returned; NULL is returned on any failure. * ****************************************************************************/ diff --git a/arch/arm/src/lpc43xx/lpc43_spifi.h b/arch/arm/src/lpc43xx/lpc43_spifi.h index 86b9c44f0ec..e0ea6a65918 100644 --- a/arch/arm/src/lpc43xx/lpc43_spifi.h +++ b/arch/arm/src/lpc43xx/lpc43_spifi.h @@ -102,7 +102,7 @@ extern "C" * None * * Returned Value: - * One success, a reference to the initialized MTD device instance is + * On success, a reference to the initialized MTD device instance is * returned; NULL is returned on any failure. * ****************************************************************************/ diff --git a/arch/arm/src/nuc1xx/nuc_dumpgpio.c b/arch/arm/src/nuc1xx/nuc_dumpgpio.c index ddbebf05f78..1509c4c0139 100644 --- a/arch/arm/src/nuc1xx/nuc_dumpgpio.c +++ b/arch/arm/src/nuc1xx/nuc_dumpgpio.c @@ -78,7 +78,7 @@ static const char g_portchar[NUC_GPIO_NPORTS] = * * Description: * Dump all GPIO registers associated with the provided pin description - * along with a descriptive messasge. + * along with a descriptive message. * ****************************************************************************/ diff --git a/arch/arm/src/nuc1xx/nuc_gpio.h b/arch/arm/src/nuc1xx/nuc_gpio.h index bc0cc19b134..a3c0745b6b2 100644 --- a/arch/arm/src/nuc1xx/nuc_gpio.h +++ b/arch/arm/src/nuc1xx/nuc_gpio.h @@ -227,7 +227,7 @@ bool nuc_gpioread(gpio_cfgset_t pinset); * * Description: * Dump all GPIO registers associated with the provided pin description - * along with a descriptive messasge. + * along with a descriptive message. * ****************************************************************************/ diff --git a/arch/arm/src/s32k1xx/s32k1xx_pindump.c b/arch/arm/src/s32k1xx/s32k1xx_pindump.c index aee347af224..c5aaf22fb39 100644 --- a/arch/arm/src/s32k1xx/s32k1xx_pindump.c +++ b/arch/arm/src/s32k1xx/s32k1xx_pindump.c @@ -78,7 +78,7 @@ static const char g_portchar[S32K1XX_NPORTS] = * * Description: * Dump all GPIO registers associated with the provided pin description - * along with a descriptive messasge. + * along with a descriptive message. * ****************************************************************************/ diff --git a/arch/arm/src/stm32/stm32_dma_v1mux.c b/arch/arm/src/stm32/stm32_dma_v1mux.c index 809831b4d23..b9245d95f9c 100644 --- a/arch/arm/src/stm32/stm32_dma_v1mux.c +++ b/arch/arm/src/stm32/stm32_dma_v1mux.c @@ -1066,13 +1066,13 @@ void weak_function arm_dma_initialize(void) * in hardware/stm32g4xxxx_dmamux.h * * Returned Value: - * One success, this function returns a non-NULL, void* DMA channel - * handle. NULL is returned on any failure. This function can fail only - * if no DMA channel is available. + * On success, this function returns a non-NULL, void* DMA channel handle. + * NULL is returned on any failure. This function can fail only if no DMA + * channel is available. * * Assumptions: * - The caller does not hold he DMA channel. - * - The caller can wait for the DMA channel to be freed if it is no + * - The caller can wait for the DMA channel to be freed if it is not * available. * ****************************************************************************/ diff --git a/arch/arm/src/stm32h7/stm32_dma.c b/arch/arm/src/stm32h7/stm32_dma.c index 0c4eab7109b..154e8fdb32a 100644 --- a/arch/arm/src/stm32h7/stm32_dma.c +++ b/arch/arm/src/stm32h7/stm32_dma.c @@ -2270,9 +2270,9 @@ void weak_function arm_dma_initialize(void) * in chip/stm32h7xxxxxxx_dmamux.h * * Returned Value: - * One success, this function returns a non-NULL, void* DMA channel - * handle. NULL is returned on any failure. This function can fail only - * if no DMA channel is available. + * On success, this function returns a non-NULL, void* DMA channel handle. + * NULL is returned on any failure. This function can fail only if no DMA + * channel is available. * * Assumptions: * - The caller does not hold he DMA channel. diff --git a/arch/arm/src/stm32h7/stm32_dma.h b/arch/arm/src/stm32h7/stm32_dma.h index 9843b9d2db8..03ff83dde15 100644 --- a/arch/arm/src/stm32h7/stm32_dma.h +++ b/arch/arm/src/stm32h7/stm32_dma.h @@ -125,9 +125,9 @@ extern "C" * in chip/stm32h7xxxxxxx_dmamux.h * * Returned Value: - * One success, this function returns a non-NULL, void* DMA channel - * handle. NULL is returned on any failure. This function can fail only - * if no DMA channel is available. + * On success, this function returns a non-NULL, void* DMA channel handle. + * NULL is returned on any failure. This function can fail only if no DMA + * channel is available. * * Assumptions: * - The caller does not hold he DMA channel. diff --git a/arch/arm/src/stm32l4/stm32l4_dma.h b/arch/arm/src/stm32l4/stm32l4_dma.h index 7834f50967a..58d756623fe 100644 --- a/arch/arm/src/stm32l4/stm32l4_dma.h +++ b/arch/arm/src/stm32l4/stm32l4_dma.h @@ -199,9 +199,9 @@ DMA_HANDLE stm32l4_dmachannel(unsigned int chan); * hardware/stm32l4xrxx_dmamux.h * * Returned Value: - * One success, this function returns a non-NULL, void* DMA channel - * handle. NULL is returned on any failure. This function can fail only - * if no DMA channel is available. + * On success, this function returns a non-NULL, void* DMA channel handle. + * NULL is returned on any failure. This function can fail only if no DMA + * channel is available. * * Assumptions: * - The caller does not hold he DMA channel. diff --git a/arch/arm/src/stm32l4/stm32l4xrxx_dma.c b/arch/arm/src/stm32l4/stm32l4xrxx_dma.c index b45a1f74266..228e14aa48f 100644 --- a/arch/arm/src/stm32l4/stm32l4xrxx_dma.c +++ b/arch/arm/src/stm32l4/stm32l4xrxx_dma.c @@ -1022,9 +1022,9 @@ void weak_function arm_dma_initialize(void) * in hardware/stm32l4xrxx_dmamux.h * * Returned Value: - * One success, this function returns a non-NULL, void* DMA channel - * handle. NULL is returned on any failure. This function can fail only - * if no DMA channel is available. + * On success, this function returns a non-NULL, void* DMA channel handle. + * NULL is returned on any failure. This function can fail only if no DMA + * channel is available. * * Assumptions: * - The caller does not hold he DMA channel. diff --git a/arch/arm/src/xmc4/xmc4_dma.h b/arch/arm/src/xmc4/xmc4_dma.h index ee8e05eb8c7..dd11f4ef786 100644 --- a/arch/arm/src/xmc4/xmc4_dma.h +++ b/arch/arm/src/xmc4/xmc4_dma.h @@ -110,9 +110,9 @@ void xmc4_dmainitilaize(void); * gives the caller exclusive access to the DMA channel. * * Returned Value: - * One success, this function returns a non-NULL, void* DMA channel - * handle. NULL is returned on any failure. This function can fail only - * if no DMA channel is available. + * On success, this function returns a non-NULL, void* DMA channel handle. + * NULL is returned on any failure. This function can fail only if no DMA + * channel is available. * ****************************************************************************/ diff --git a/arch/mips/src/pic32mx/pic32mx.h b/arch/mips/src/pic32mx/pic32mx.h index 9deff0bdf8c..ca5e8bcbc00 100644 --- a/arch/mips/src/pic32mx/pic32mx.h +++ b/arch/mips/src/pic32mx/pic32mx.h @@ -477,9 +477,9 @@ void pic32mx_dmainitilaize(void); * caller exclusive access to the DMA channel. * * Returned Value: - * One success, this function returns a non-NULL, void* DMA channel handle. NULL - * is returned on any failure. This function can fail only if no DMA channel is - * available. + * On success, this function returns a non-NULL, void* DMA channel handle. + * NULL is returned on any failure. This function can fail only if no DMA + * channel is available. * ************************************************************************************/ diff --git a/arch/x86/src/qemu/qemu.h b/arch/x86/src/qemu/qemu.h index 21f074a5c12..1e607482876 100644 --- a/arch/x86/src/qemu/qemu.h +++ b/arch/x86/src/qemu/qemu.h @@ -284,9 +284,9 @@ void i486_dmainitilaize(void); * gives the caller exclusive access to the DMA channel. * * Returned Value: - * One success, this function returns a non-NULL, void* DMA channel - * handle. NULL is returned on any failure. This function can fail only - * if no DMA channel is available. + * On success, this function returns a non-NULL, void* DMA channel handle. + * NULL is returned on any failure. This function can fail only if no DMA + * channel is available. * ****************************************************************************/ diff --git a/boards/arm/sama5/sama5d3-xplained/README.txt b/boards/arm/sama5/sama5d3-xplained/README.txt index 8c68bacc3d9..964e258370f 100644 --- a/boards/arm/sama5/sama5d3-xplained/README.txt +++ b/boards/arm/sama5/sama5d3-xplained/README.txt @@ -2247,7 +2247,7 @@ CAN Usage Only messages that have IDs that match the CONFIG_SAMA5_CANn_ADDRn when both the received and the configured address are masked by CONFIG_SAMA5_CANn_MASKn - will be accepted. For example, if the mask is all ones, then only messasges + will be accepted. For example, if the mask is all ones, then only messages with exact address matches will be accepted; if the mask is all zeroes than any address will be accepted. diff --git a/boards/arm/sama5/sama5d3x-ek/README.txt b/boards/arm/sama5/sama5d3x-ek/README.txt index 45559b1d95c..0dc33d34579 100644 --- a/boards/arm/sama5/sama5d3x-ek/README.txt +++ b/boards/arm/sama5/sama5d3x-ek/README.txt @@ -2384,7 +2384,7 @@ CAN Usage Only messages that have IDs that match the CONFIG_SAMA5_CANn_ADDRn when both the received and the configured address are masked by CONFIG_SAMA5_CANn_MASKn - will be accepted. For example, if the mask is all ones, then only messasges + will be accepted. For example, if the mask is all ones, then only messages with exact address matches will be accepted; if the mask is all zeroes than any address will be accepted. diff --git a/boards/renesas/m16c/skp16c26/README.txt b/boards/renesas/m16c/skp16c26/README.txt index b30b3d407ba..99cbb7fd149 100644 --- a/boards/renesas/m16c/skp16c26/README.txt +++ b/boards/renesas/m16c/skp16c26/README.txt @@ -27,7 +27,7 @@ boards/renesas/m16c/skp16c26/README.txt c:\Hew3\Tools\KPIT Cummins\GNUM16CM32C-ELF\v0901\m32c-elf\bin\m32c-elf-ld.exe: BFD (GNU Binutils) 2.19-GNUM16CM32C_v0901 assertion fail /home/kpit/fsfsrc/binutils-2.19/bfd/elf32-m32c.c:482 -It is possible that this error messasge my be telling me -- a very roundabout way -- +It is possible that this error message may be telling me -- a very roundabout way -- that I have exceeded the FLASH region, but I think that unlikely (it is difficult to know if the link does not complete gracefully). diff --git a/include/nuttx/nx/nxfonts.h b/include/nuttx/nx/nxfonts.h index 9988e86e469..16bb00e9303 100644 --- a/include/nuttx/nx/nxfonts.h +++ b/include/nuttx/nx/nxfonts.h @@ -490,7 +490,7 @@ extern "C" * fontid: Identifies the font set to get * * Returned Value: - * One success, a non-NULL font handle is returned. + * On success, a non-NULL font handle is returned. * ****************************************************************************/ @@ -638,7 +638,7 @@ void nxf_cache_disconnect(FCACHE fhandle); * Zero (OK) is returned if the metrics were * * Returned Value: - * One success, a non-NULL font handle is returned. + * On success, a non-NULL font handle is returned. * ****************************************************************************/ diff --git a/libs/libc/semaphore/sem_setprotocol.c b/libs/libc/semaphore/sem_setprotocol.c index 762232b086d..f1418740bda 100644 --- a/libs/libc/semaphore/sem_setprotocol.c +++ b/libs/libc/semaphore/sem_setprotocol.c @@ -47,7 +47,7 @@ * TASK A TASK B * nxsem_init(sem, 0, 0); * nxsem_wait(sem); - * snxem_post(sem); + * nxsem_post(sem); * Awakens as holder * * In this case priority inheritance can interfere with the operation of diff --git a/libs/libc/time/lib_asctime.c b/libs/libc/time/lib_asctime.c index 6bdb9084aae..5504b037e17 100644 --- a/libs/libc/time/lib_asctime.c +++ b/libs/libc/time/lib_asctime.c @@ -42,7 +42,7 @@ * tp - Pointer to the time to be converted. * * Returned Value: - * One success a pointer to the string is returned; on failure, NULL is + * On success, a pointer to the string is returned; on failure, NULL is * returned. * ****************************************************************************/ diff --git a/libs/libc/time/lib_asctimer.c b/libs/libc/time/lib_asctimer.c index fc9712ad1fa..6db2480e809 100644 --- a/libs/libc/time/lib_asctimer.c +++ b/libs/libc/time/lib_asctimer.c @@ -63,7 +63,7 @@ static const char * const g_mon_name[12] = * buf - A user provided buffer to receive the 26 character time string. * * Returned Value: - * One success, the pointer to the 'buf' is returned; on failure, NULL is + * On success, the pointer to the 'buf' is returned; on failure, NULL is * returned. * ****************************************************************************/ diff --git a/libs/libc/time/lib_ctime.c b/libs/libc/time/lib_ctime.c index 0dc8d5ead7e..7f0c335829c 100644 --- a/libs/libc/time/lib_ctime.c +++ b/libs/libc/time/lib_ctime.c @@ -42,7 +42,7 @@ * timep - The current time represented as seconds since the epoch. * * Returned Value: - * One success a pointer to the string is returned; on failure, NULL is + * On success, a pointer to the string is returned; on failure, NULL is * returned. * ****************************************************************************/ diff --git a/libs/libc/time/lib_ctimer.c b/libs/libc/time/lib_ctimer.c index 54f188ab97c..55b4eac1b03 100644 --- a/libs/libc/time/lib_ctimer.c +++ b/libs/libc/time/lib_ctimer.c @@ -47,7 +47,7 @@ * buf - A user provided buffer to receive the 26 character time string. * * Returned Value: - * One success, the pointer to the 'buf' is returned; on failure, NULL is + * On success, the pointer to the 'buf' is returned; on failure, NULL is * returned. * ****************************************************************************/ diff --git a/libs/libnx/nxfonts/nxfonts_cache.c b/libs/libnx/nxfonts/nxfonts_cache.c index e7a83439d56..a08ceeecc79 100644 --- a/libs/libnx/nxfonts/nxfonts_cache.c +++ b/libs/libnx/nxfonts/nxfonts_cache.c @@ -878,7 +878,7 @@ void nxf_cache_disconnect(FCACHE fhandle) * Zero (OK) is returned if the metrics were * * Returned Value: - * One success, a non-NULL font handle is returned. + * On success, a non-NULL font handle is returned. * ****************************************************************************/ diff --git a/sched/mqueue/mq_initialize.c b/sched/mqueue/mq_initialize.c index a95d05b45a7..2c0febe1114 100644 --- a/sched/mqueue/mq_initialize.c +++ b/sched/mqueue/mq_initialize.c @@ -114,7 +114,7 @@ mq_msgblockalloc(FAR sq_queue_t *queue, uint16_t nmsgs, * Name: nxmq_initialize * * Description: - * This function initializes the messasge system. This function must + * This function initializes the message system. This function must * be called early in the initialization sequence before any of the * other message interfaces execute. * diff --git a/sched/mqueue/mq_rcvinternal.c b/sched/mqueue/mq_rcvinternal.c index bfc53b44de2..a7b278822b2 100644 --- a/sched/mqueue/mq_rcvinternal.c +++ b/sched/mqueue/mq_rcvinternal.c @@ -59,7 +59,7 @@ * msglen - Size of the buffer in bytes * * Returned Value: - * One success, zero (OK) is returned. A negated errno value is returned + * On success, zero (OK) is returned. A negated errno value is returned * on any failure: * * EPERM Message queue opened not opened for reading. @@ -108,7 +108,7 @@ int nxmq_verify_receive(FAR struct mqueue_inode_s *msgq, * received message. * * Returned Value: - * One success, zero (OK) is returned. A negated errno value is returned + * On success, zero (OK) is returned. A negated errno value is returned * on any failure. * * Assumptions: diff --git a/sched/mqueue/mq_receive.c b/sched/mqueue/mq_receive.c index ad86568bffc..6eea8853589 100644 --- a/sched/mqueue/mq_receive.c +++ b/sched/mqueue/mq_receive.c @@ -203,7 +203,7 @@ ssize_t nxmq_receive(mqd_t mqdes, FAR char *msg, size_t msglen, * prio - If not NULL, the location to store message priority. * * Returned Value: - * One success, the length of the selected message in bytes is returned. + * On success, the length of the selected message in bytes is returned. * On failure, -1 (ERROR) is returned and the errno is set appropriately: * * EAGAIN The queue was empty, and the O_NONBLOCK flag was set diff --git a/sched/mqueue/mq_sndinternal.c b/sched/mqueue/mq_sndinternal.c index 449aec3a394..90864c9f520 100644 --- a/sched/mqueue/mq_sndinternal.c +++ b/sched/mqueue/mq_sndinternal.c @@ -62,7 +62,7 @@ * prio - The priority of the message * * Returned Value: - * One success, 0 (OK) is returned. On failure, a negated errno value is + * On success, 0 (OK) is returned. On failure, a negated errno value is * returned. * * EINVAL Either msg or msgq is NULL or the value of prio is invalid. diff --git a/sched/mqueue/mq_timedreceive.c b/sched/mqueue/mq_timedreceive.c index a0213825ab4..3db255b9f53 100644 --- a/sched/mqueue/mq_timedreceive.c +++ b/sched/mqueue/mq_timedreceive.c @@ -336,7 +336,7 @@ ssize_t nxmq_timedreceive(mqd_t mqdes, FAR char *msg, size_t msglen, * abstime - the absolute time to wait until a timeout is declared. * * Returned Value: - * One success, the length of the selected message in bytes is returned. + * On success, the length of the selected message in bytes is returned. * On failure, -1 (ERROR) is returned and the errno is set appropriately: * * EAGAIN The queue was empty, and the O_NONBLOCK flag was set From abcb67a292762d73ef8a23ed3a6c1d072730e00c Mon Sep 17 00:00:00 2001 From: Juha Niskanen Date: Mon, 10 May 2021 21:05:32 +0300 Subject: [PATCH 086/739] Remove final remaining CONFIG_DISABLE_SIGNALS and CONFIG_DISABLE_SIGNAL --- arch/arm/src/cxd56xx/cxd56_gnss.c | 26 +++--------- arch/arm/src/cxd56xx/cxd56_icc.c | 2 - arch/arm/src/cxd56xx/cxd56_scu.c | 41 +------------------ arch/renesas/src/rx65n/rx65n_sigdeliver.c | 2 - arch/x86_64/include/intel64/irq.h | 2 - .../x86_64/src/intel64/up_schedulesigaction.c | 16 -------- arch/x86_64/src/intel64/up_sigdeliver.c | 19 +-------- .../kernel/lpc17_40_userspace.c | 2 - .../lpc4088-quickstart/README.txt | 3 -- .../kernel/lpc17_40_userspace.c | 2 - boards/arm/lpc17xx_40xx/lx_cpu/README.txt | 3 -- 11 files changed, 9 insertions(+), 109 deletions(-) diff --git a/arch/arm/src/cxd56xx/cxd56_gnss.c b/arch/arm/src/cxd56xx/cxd56_gnss.c index eea3027bf0b..8325b89aa0b 100644 --- a/arch/arm/src/cxd56xx/cxd56_gnss.c +++ b/arch/arm/src/cxd56xx/cxd56_gnss.c @@ -132,14 +132,12 @@ extern int fw_pm_sleepcpu(int cpuid, int mode); * Private Types ****************************************************************************/ -#ifndef CONFIG_DISABLE_SIGNAL struct cxd56_gnss_sig_s { uint8_t enable; int pid; FAR struct cxd56_gnss_signal_info_s info; }; -#endif struct cxd56_gnss_shared_info_s { @@ -163,8 +161,7 @@ struct cxd56_gnss_dev_s struct file cepfp; FAR void * cepbuf; FAR struct pollfd *fds[CONFIG_CXD56_GNSS_NPOLLWAITERS]; -#if !defined(CONFIG_DISABLE_SIGNAL) && \ - (CONFIG_CXD56_GNSS_NSIGNALRECEIVERS != 0) +#if CONFIG_CXD56_GNSS_NSIGNALRECEIVERS != 0 struct cxd56_gnss_sig_s sigs[CONFIG_CXD56_GNSS_NSIGNALRECEIVERS]; #endif struct cxd56_gnss_shared_info_s shared_info; @@ -1459,8 +1456,7 @@ static int cxd56_gnss_set_signal(FAR struct file *filep, unsigned long arg) { int ret = 0; -#if !defined(CONFIG_DISABLE_SIGNAL) && \ - (CONFIG_CXD56_GNSS_NSIGNALRECEIVERS != 0) +#if CONFIG_CXD56_GNSS_NSIGNALRECEIVERS != 0 FAR struct inode *inode; FAR struct cxd56_gnss_dev_s *priv; FAR struct cxd56_gnss_signal_setting_s *setting; @@ -1533,10 +1529,7 @@ static int cxd56_gnss_set_signal(FAR struct file *filep, unsigned long arg) _success: _err: nxsem_post(&priv->devsem); -#endif -/* if !defined(CONFIG_DISABLE_SIGNAL) && - * (CONFIG_CXD56_GNSS_NSIGNALRECEIVERS != 0) - */ +#endif /* CONFIG_CXD56_GNSS_NSIGNALRECEIVERS != 0 */ return ret; } @@ -2257,9 +2250,6 @@ static void cxd56_gnss_read_backup_file(FAR int *retval) cxd56_cpu1sigsend(CXD56_CPU1_DATA_TYPE_BKUPFILE, 0); } -#if !defined(CONFIG_DISABLE_SIGNAL) && \ - (CONFIG_CXD56_GNSS_NSIGNALRECEIVERS != 0) - /**************************************************************************** * Name: cxd56_gnss_common_signalhandler * @@ -2276,6 +2266,7 @@ static void cxd56_gnss_read_backup_file(FAR int *retval) * ****************************************************************************/ +#if CONFIG_CXD56_GNSS_NSIGNALRECEIVERS != 0 static void cxd56_gnss_common_signalhandler(uint32_t data, FAR void *userdata) { @@ -2312,11 +2303,7 @@ static void cxd56_gnss_common_signalhandler(uint32_t data, nxsem_post(&priv->devsem); } - -#endif -/* if !defined(CONFIG_DISABLE_SIGNAL) && - * (CONFIG_CXD56_GNSS_NSIGNALRECEIVERS != 0) - */ +#endif /* CONFIG_CXD56_GNSS_NSIGNALRECEIVERS != 0 */ /**************************************************************************** * Name: cxd56_gnss_default_sighandler @@ -2418,8 +2405,7 @@ static void cxd56_gnss_default_sighandler(uint32_t data, FAR void *userdata) nxsem_post(&priv->devsem); -#if !defined(CONFIG_DISABLE_SIGNAL) && \ - (CONFIG_CXD56_GNSS_NSIGNALRECEIVERS != 0) +#if CONFIG_CXD56_GNSS_NSIGNALRECEIVERS != 0 cxd56_gnss_common_signalhandler(data, userdata); #endif } diff --git a/arch/arm/src/cxd56xx/cxd56_icc.c b/arch/arm/src/cxd56xx/cxd56_icc.c index 66c8c1c81ab..806056c85dc 100644 --- a/arch/arm/src/cxd56xx/cxd56_icc.c +++ b/arch/arm/src/cxd56xx/cxd56_icc.c @@ -239,7 +239,6 @@ static int icc_irqhandler(int cpuid, uint32_t word[2]) * process. */ -#ifndef CONFIG_DISABLE_SIGNAL if (priv->pid != INVALID_PROCESS_ID) { union sigval value; @@ -247,7 +246,6 @@ static int icc_irqhandler(int cpuid, uint32_t word[2]) value.sival_ptr = priv->sigdata; nxsig_queue(priv->pid, priv->signo, value); } -#endif return OK; } diff --git a/arch/arm/src/cxd56xx/cxd56_scu.c b/arch/arm/src/cxd56xx/cxd56_scu.c index 88d25afceb7..0e9cc31d31b 100644 --- a/arch/arm/src/cxd56xx/cxd56_scu.c +++ b/arch/arm/src/cxd56xx/cxd56_scu.c @@ -196,10 +196,9 @@ struct cxd56_scudev_s uint8_t oneshot; /* Bitmap for Oneshots */ sem_t oneshotwait[3]; /* Semaphore for wait oneshot sequence is done */ -#ifndef CONFIG_DISABLE_SIGNAL + struct ev_notify_s event[3]; /* MATHFUNC event notify */ struct wm_notify_s wm[14]; /* Watermark notify */ -#endif int currentreq; }; @@ -274,7 +273,6 @@ static void seq_setdecimation(int wid, uint8_t ratio, uint8_t leveladj, uint8_t forcethrough); static int seq_setwatermark(FAR struct seq_s *seq, int fifoid, FAR struct scufifo_wm_s *wm); -#ifndef CONFIG_DISABLE_SIGNAL static void convert_firsttimestamp(struct scutimestamp_s *tm, uint16_t interval, uint16_t sample, uint16_t adjust); @@ -282,7 +280,6 @@ static void latest_timestamp(struct scufifo_s *fifo, uint32_t interval, struct scutimestamp_s *tm, uint16_t *samples); static void seq_gettimestamp(struct scufifo_s *fifo, struct scutimestamp_s *tm); -#endif static int seq_oneshot(int bustype, int slave, FAR uint16_t *inst, uint32_t nr_insts, FAR uint8_t *buffer, int len); @@ -1478,10 +1475,8 @@ static void seq_handlefifointr(FAR struct cxd56_scudev_s *priv, { uint32_t bit; int i; -#ifndef CONFIG_DISABLE_SIGNAL struct wm_notify_s *notify; union sigval value; -#endif if ((intr & 0x007ffe00) == 0) { @@ -1498,7 +1493,6 @@ static void seq_handlefifointr(FAR struct cxd56_scudev_s *priv, putreg32(bit, SCU_INT_CLEAR_MAIN); -#ifndef CONFIG_DISABLE_SIGNAL notify = &priv->wm[i]; if (notify->ts) @@ -1510,7 +1504,6 @@ static void seq_handlefifointr(FAR struct cxd56_scudev_s *priv, value.sival_ptr = notify->ts; nxsig_queue(notify->pid, notify->signo, value); -#endif } } } @@ -1530,10 +1523,8 @@ static void seq_handlemathfintr(FAR struct cxd56_scudev_s *priv, uint32_t bit; uint32_t rise; uint32_t fall; -#ifndef CONFIG_DISABLE_SIGNAL struct ev_notify_s *notify; int detected = 0; -#endif rise = (intr >> 6) & 0x7; fall = (intr >> 28) & 0x7; @@ -1545,16 +1536,14 @@ static void seq_handlemathfintr(FAR struct cxd56_scudev_s *priv, for (i = 0, bit = 1; i < 3; i++, bit <<= 1) { -#ifndef CONFIG_DISABLE_SIGNAL notify = &priv->event[i]; -#endif + /* Detect rise event */ if (rise & bit) { putreg32(bit << 6, SCU_INT_CLEAR_MAIN); -#ifndef CONFIG_DISABLE_SIGNAL /* Get rise event occurred timestamp */ if (notify->arg) @@ -1567,7 +1556,6 @@ static void seq_handlemathfintr(FAR struct cxd56_scudev_s *priv, } detected = 1; -#endif } /* Detect fall event */ @@ -1576,7 +1564,6 @@ static void seq_handlemathfintr(FAR struct cxd56_scudev_s *priv, { putreg32(bit << 28, SCU_INT_CLEAR_MAIN); -#ifndef CONFIG_DISABLE_SIGNAL /* Get fall event occurred timestamp */ if (notify->arg) @@ -1589,10 +1576,8 @@ static void seq_handlemathfintr(FAR struct cxd56_scudev_s *priv, } detected = 1; -#endif } -#ifndef CONFIG_DISABLE_SIGNAL if (detected) { union sigval value; @@ -1603,7 +1588,6 @@ static void seq_handlemathfintr(FAR struct cxd56_scudev_s *priv, nxsig_queue(notify->pid, notify->signo, value); detected = 0; } -#endif } } @@ -2232,9 +2216,7 @@ static int seq_seteventnotifier(FAR struct scufifo_s *fifo, int riseint; int fallint; int mid; -#ifndef CONFIG_DISABLE_SIGNAL irqstate_t flags; -#endif DEBUGASSERT(fifo && ev); @@ -2247,7 +2229,6 @@ static int seq_seteventnotifier(FAR struct scufifo_s *fifo, mid = fifo->mid; -#ifndef CONFIG_DISABLE_SIGNAL /* Save signal number and target PID */ flags = enter_critical_section(); @@ -2256,7 +2237,6 @@ static int seq_seteventnotifier(FAR struct scufifo_s *fifo, priv->event[mid].arg = ev->arg; priv->event[mid].fifo = fifo; leave_critical_section(flags); -#endif thresh = count0 = count1 = delaysample = 0; riseint = fallint = 0; @@ -2306,8 +2286,6 @@ static int seq_seteventnotifier(FAR struct scufifo_s *fifo, return OK; } -#ifndef CONFIG_DISABLE_SIGNAL - /**************************************************************************** * Name: seq_setwatermark * @@ -2481,9 +2459,6 @@ static void seq_gettimestamp(struct scufifo_s *fifo, convert_firsttimestamp(tm, interval, sample, adjust); } -#else -#define seq_setwatermark(seq, fifoid, wm) (-ENOSYS) -#endif /**************************************************************************** * Name: seq_setfifomode @@ -2498,22 +2473,16 @@ static void seq_setfifomode(FAR struct seq_s *seq, int fifoid, int enable) FAR struct scufifo_s *fifo = seq_getfifo(seq, fifoid); uint32_t val; irqstate_t flags; -#ifndef CONFIG_DISABLE_SIGNAL FAR struct cxd56_scudev_s *priv = &g_scudev; FAR struct wm_notify_s *notify = &priv->wm[fifo->rid]; bool iswtmk = false; -#endif - - DEBUGASSERT(fifo); scuinfo("FIFO mode %d wid %d\n", enable, fifo->wid); -#ifndef CONFIG_DISABLE_SIGNAL if (notify->ts) { iswtmk = true; } -#endif flags = enter_critical_section(); @@ -2535,15 +2504,12 @@ static void seq_setfifomode(FAR struct seq_s *seq, int fifoid, int enable) val = 0x1 << (fifo->rid + 9); putreg32(val, SCU_INT_DISABLE_ERR_0); -#ifndef CONFIG_DISABLE_SIGNAL - /* disable almostfull interrupt */ if (iswtmk) { putreg32(val, SCU_INT_DISABLE_MAIN); } -#endif } else { @@ -2557,8 +2523,6 @@ static void seq_setfifomode(FAR struct seq_s *seq, int fifoid, int enable) val = 0x1 << (fifo->rid + 9); putreg32(val, SCU_INT_ENABLE_ERR_0); -#ifndef CONFIG_DISABLE_SIGNAL - /* enable almostfull interrupt */ if (iswtmk) @@ -2566,7 +2530,6 @@ static void seq_setfifomode(FAR struct seq_s *seq, int fifoid, int enable) val = 0x1 << (fifo->rid + 9); putreg32(val, SCU_INT_ENABLE_MAIN); } -#endif } leave_critical_section(flags); diff --git a/arch/renesas/src/rx65n/rx65n_sigdeliver.c b/arch/renesas/src/rx65n/rx65n_sigdeliver.c index 2b288dc72d9..3303abf57f9 100644 --- a/arch/renesas/src/rx65n/rx65n_sigdeliver.c +++ b/arch/renesas/src/rx65n/rx65n_sigdeliver.c @@ -67,7 +67,6 @@ void up_sigdeliver(void) { -#ifndef CONFIG_DISABLE_SIGNALS struct tcb_s *rtcb = this_task(); uint32_t regs[XCPTCONTEXT_REGS]; sig_deliver_t sigdeliver; @@ -127,5 +126,4 @@ void up_sigdeliver(void) board_autoled_off(LED_SIGNAL); up_fullcontextrestore(regs); -#endif } diff --git a/arch/x86_64/include/intel64/irq.h b/arch/x86_64/include/intel64/irq.h index e820f48b23e..903654e1ebe 100644 --- a/arch/x86_64/include/intel64/irq.h +++ b/arch/x86_64/include/intel64/irq.h @@ -172,7 +172,6 @@ struct xcptcontext * to be processed. */ -#ifndef CONFIG_DISABLE_SIGNALS void *sigdeliver; /* Actual type is sig_deliver_t */ /* These are saved copies of instruction pointer and EFLAGS used during @@ -182,7 +181,6 @@ struct xcptcontext uint64_t saved_rip; uint64_t saved_rflags; uint64_t saved_rsp; -#endif /* Register save area */ diff --git a/arch/x86_64/src/intel64/up_schedulesigaction.c b/arch/x86_64/src/intel64/up_schedulesigaction.c index dce91a6477c..c072b21f438 100644 --- a/arch/x86_64/src/intel64/up_schedulesigaction.c +++ b/arch/x86_64/src/intel64/up_schedulesigaction.c @@ -35,20 +35,6 @@ #include "up_internal.h" #include "up_arch.h" -#ifndef CONFIG_DISABLE_SIGNALS - -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -/**************************************************************************** - * Private Data - ****************************************************************************/ - -/**************************************************************************** - * Private Functions - ****************************************************************************/ - /**************************************************************************** * Public Functions ****************************************************************************/ @@ -179,5 +165,3 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) } } } - -#endif /* !CONFIG_DISABLE_SIGNALS */ diff --git a/arch/x86_64/src/intel64/up_sigdeliver.c b/arch/x86_64/src/intel64/up_sigdeliver.c index 4275ce31f06..723c7a572a3 100644 --- a/arch/x86_64/src/intel64/up_sigdeliver.c +++ b/arch/x86_64/src/intel64/up_sigdeliver.c @@ -37,20 +37,6 @@ #include "up_internal.h" #include "up_arch.h" -#ifndef CONFIG_DISABLE_SIGNALS - -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -/**************************************************************************** - * Private Data - ****************************************************************************/ - -/**************************************************************************** - * Private Functions - ****************************************************************************/ - /**************************************************************************** * Public Functions ****************************************************************************/ @@ -72,7 +58,7 @@ void up_sigdeliver(void) uint64_t regs_area[XCPTCONTEXT_REGS + 2]; uint64_t *regs; - /* align regs to 16byte boundary for SSE instrucitons */ + /* Align regs to 16 byte boundary for SSE instructions. */ regs = (uint64_t *)(((uint64_t)(regs_area) + 15) & (~(uint64_t)15)); @@ -144,6 +130,3 @@ void up_sigdeliver(void) board_autoled_off(LED_SIGNAL); up_fullcontextrestore(regs); } - -#endif /* !CONFIG_DISABLE_SIGNALS */ - diff --git a/boards/arm/lpc17xx_40xx/lpc4088-devkit/kernel/lpc17_40_userspace.c b/boards/arm/lpc17xx_40xx/lpc4088-devkit/kernel/lpc17_40_userspace.c index 3e7a9d4a01e..4298a0fa843 100644 --- a/boards/arm/lpc17xx_40xx/lpc4088-devkit/kernel/lpc17_40_userspace.c +++ b/boards/arm/lpc17xx_40xx/lpc4088-devkit/kernel/lpc17_40_userspace.c @@ -100,9 +100,7 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Signal handler trampoline */ -#ifndef CONFIG_DISABLE_SIGNALS .signal_handler = up_signal_handler, -#endif /* User-space work queue support (declared in include/nuttx/wqueue.h) */ diff --git a/boards/arm/lpc17xx_40xx/lpc4088-quickstart/README.txt b/boards/arm/lpc17xx_40xx/lpc4088-quickstart/README.txt index 4db4bba4e3b..44d36da0f2f 100644 --- a/boards/arm/lpc17xx_40xx/lpc4088-quickstart/README.txt +++ b/boards/arm/lpc17xx_40xx/lpc4088-quickstart/README.txt @@ -413,9 +413,6 @@ Configuration Directories CONFIG_LPC17_40_GPIOIRQ=y : GPIO interrupt support CONFIG_LPC17_40_SSP1=y : Enable support for SSP1 - RTOS Features: - CONFIG_DISABLE_SIGNALS=n : Signals are required - Library Support: CONFIG_SCHED_WORKQUEUE=y : Work queue support required diff --git a/boards/arm/lpc17xx_40xx/lpc4088-quickstart/kernel/lpc17_40_userspace.c b/boards/arm/lpc17xx_40xx/lpc4088-quickstart/kernel/lpc17_40_userspace.c index e7aac7431a5..2af012c309f 100644 --- a/boards/arm/lpc17xx_40xx/lpc4088-quickstart/kernel/lpc17_40_userspace.c +++ b/boards/arm/lpc17xx_40xx/lpc4088-quickstart/kernel/lpc17_40_userspace.c @@ -100,9 +100,7 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Signal handler trampoline */ -#ifndef CONFIG_DISABLE_SIGNALS .signal_handler = up_signal_handler, -#endif /* User-space work queue support (declared in include/nuttx/wqueue.h) */ diff --git a/boards/arm/lpc17xx_40xx/lx_cpu/README.txt b/boards/arm/lpc17xx_40xx/lx_cpu/README.txt index 747163cbff4..8bd9a4b8c77 100644 --- a/boards/arm/lpc17xx_40xx/lx_cpu/README.txt +++ b/boards/arm/lpc17xx_40xx/lx_cpu/README.txt @@ -309,9 +309,6 @@ CONFIGURATION CONFIG_GPIO_IRQ=y : GPIO interrupt support CONFIG_LPC17_SSP1=y : Enable support for SSP1 - RTOS Features: - CONFIG_DISABLE_SIGNALS=n : Signals are required - Library Support: CONFIG_SCHED_WORKQUEUE=y : Work queue support required From 9b4014d04821b28d653694ee5ffd0aaab841b826 Mon Sep 17 00:00:00 2001 From: Raman Gopalan Date: Sun, 9 May 2021 17:48:54 +0530 Subject: [PATCH 087/739] avr32dev1: USART1 RX: Reassign pin --- boards/avr/at32uc3/avr32dev1/include/board.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boards/avr/at32uc3/avr32dev1/include/board.h b/boards/avr/at32uc3/avr32dev1/include/board.h index 11723677e2b..89862b3adea 100644 --- a/boards/avr/at32uc3/avr32dev1/include/board.h +++ b/boards/avr/at32uc3/avr32dev1/include/board.h @@ -123,7 +123,7 @@ /* Pin muliplexing selecion *************************************************/ -#define PINMUX_USART1_RXD PINMUX_USART1_RXD_1 +#define PINMUX_USART1_RXD PINMUX_USART1_RXD_2 #define PINMUX_USART1_TXD PINMUX_USART1_TXD_1 /* LED definitions **********************************************************/ From 6ebc1b27faf69f854a07ab83a1bae9593a5c2933 Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Mon, 10 May 2021 01:22:41 +0800 Subject: [PATCH 088/739] libc/pwd: Add NSS_BUFLEN_PASSWD macro Signed-off-by: Xiang Xiao Change-Id: I739679038b2004cc45d78f540831ba81b088a586 --- include/pwd.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/include/pwd.h b/include/pwd.h index c222128926a..d390f30c4a5 100644 --- a/include/pwd.h +++ b/include/pwd.h @@ -34,6 +34,12 @@ * Pre-processor Definitions ****************************************************************************/ +#ifdef CONFIG_LIBC_PASSWD_LINESIZE +# define NSS_BUFLEN_PASSWD CONFIG_LIBC_PASSWD_LINESIZE +#else +# define NSS_BUFLEN_PASSWD 256 +#endif + /**************************************************************************** * Public Type Definitions ****************************************************************************/ From 60c1b64747deb76ecdb0a2b551acc7febd3c67eb Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Sun, 9 May 2021 19:32:46 +0800 Subject: [PATCH 089/739] libc/getopt: Remove GETOPT_INIITIALIZER macro since nobody reference it Signed-off-by: Xiang Xiao --- include/nuttx/lib/getopt.h | 14 -------------- libs/libc/unistd/lib_getopt_common.c | 9 --------- 2 files changed, 23 deletions(-) diff --git a/include/nuttx/lib/getopt.h b/include/nuttx/lib/getopt.h index f155648b4fd..9eb7b3abc6b 100644 --- a/include/nuttx/lib/getopt.h +++ b/include/nuttx/lib/getopt.h @@ -29,20 +29,6 @@ #include -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -#define GETOPT_INIITIALIZER() = \ - { \ - NULL, \ - 0, \ - 1, \ - '?' \ - NULL, \ - false \ - } - /**************************************************************************** * Public Types ****************************************************************************/ diff --git a/libs/libc/unistd/lib_getopt_common.c b/libs/libc/unistd/lib_getopt_common.c index 750a596f730..cd9e481260d 100644 --- a/libs/libc/unistd/lib_getopt_common.c +++ b/libs/libc/unistd/lib_getopt_common.c @@ -29,15 +29,6 @@ #include "unistd.h" -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -#undef optarg -#undef opterr -#undef optind -#undef optopt - /**************************************************************************** * Prive Functions ****************************************************************************/ From 276fa2ff1ce6724d3fb0e3d90582f1960239748f Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Fri, 7 May 2021 05:09:33 -0700 Subject: [PATCH 090/739] drivers/serial: Change the default value of SERIAL_NPOLLWAITERS to 4 since the console is normally opened three time as stdin, stdout and stderr and remove the dependence on STANDARD_SERIAL because other type of serial drivers also support the poll through the same codebase. Signed-off-by: Xiang Xiao Change-Id: Ie68322c4647cc838b295491329969869d6ba310b --- drivers/serial/Kconfig | 5 ++--- include/nuttx/serial/serial.h | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index 2dd39d73816..df266481ba3 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig @@ -91,11 +91,10 @@ config STANDARD_SERIAL config SERIAL_NPOLLWAITERS int "Number of poll threads" - default 2 - depends on STANDARD_SERIAL + default 4 ---help--- Maximum number of threads than can be waiting for POLL events. - Default: 2 + Default: 4 config SERIAL_IFLOWCONTROL bool diff --git a/include/nuttx/serial/serial.h b/include/nuttx/serial/serial.h index c258f189a1a..5d2435df4c8 100644 --- a/include/nuttx/serial/serial.h +++ b/include/nuttx/serial/serial.h @@ -45,7 +45,7 @@ /* Maximum number of threads than can be waiting for POLL events */ #ifndef CONFIG_SERIAL_NPOLLWAITERS -# define CONFIG_SERIAL_NPOLLWAITERS 2 +# define CONFIG_SERIAL_NPOLLWAITERS 4 #endif /* RX flow control */ From df7bd125f82f4017c2a80c5773524e38519533f9 Mon Sep 17 00:00:00 2001 From: Abdelatif Guettouche Date: Wed, 12 May 2021 10:28:01 +0100 Subject: [PATCH 091/739] boards/risc-v/esp32c3: Convert the README.txt to the new Documentation. Signed-off-by: Abdelatif Guettouche --- .../ESP32-C3-DevKitC-02-v1.1.png | Bin 0 -> 1227567 bytes .../ESP32-C3-DevKitM-1-v1.0.png | Bin 0 -> 1529086 bytes .../esp32c3/boards/esp32c3-devkit/index.rst | 97 ++++++++++++ .../platforms/risc-v/esp32c3/index.rst | 98 ++++++++++++ .../risc-v/esp32c3/esp32c3-devkit/README.txt | 147 ------------------ 5 files changed, 195 insertions(+), 147 deletions(-) create mode 100644 Documentation/platforms/risc-v/esp32c3/boards/esp32c3-devkit/ESP32-C3-DevKitC-02-v1.1.png create mode 100644 Documentation/platforms/risc-v/esp32c3/boards/esp32c3-devkit/ESP32-C3-DevKitM-1-v1.0.png create mode 100644 Documentation/platforms/risc-v/esp32c3/boards/esp32c3-devkit/index.rst create mode 100644 Documentation/platforms/risc-v/esp32c3/index.rst delete mode 100644 boards/risc-v/esp32c3/esp32c3-devkit/README.txt diff --git a/Documentation/platforms/risc-v/esp32c3/boards/esp32c3-devkit/ESP32-C3-DevKitC-02-v1.1.png b/Documentation/platforms/risc-v/esp32c3/boards/esp32c3-devkit/ESP32-C3-DevKitC-02-v1.1.png new file mode 100644 index 0000000000000000000000000000000000000000..88a89947554ac61afe272698176b2d71e814eab4 GIT binary patch literal 1227567 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 z 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

0*SE(o0m~lfk*!PVHjpI)j>;ll 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

Di80(akd#4nFVyC{nc8X04gvLsKF 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

sN#twB$ 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

2Rm6Mz0 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 Iel-gEKTVKVasU7T literal 0 HcmV?d00001 diff --git a/Documentation/platforms/risc-v/esp32c3/boards/esp32c3-devkit/ESP32-C3-DevKitM-1-v1.0.png b/Documentation/platforms/risc-v/esp32c3/boards/esp32c3-devkit/ESP32-C3-DevKitM-1-v1.0.png new file mode 100644 index 0000000000000000000000000000000000000000..ad0c387cc734104a08aace9c67a215f6b00d6e43 GIT binary patch literal 1529086 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 z zuHsy~1Hapr4sOIkh7T>Dn+X5{yjR<*dpxa%Sjy`3Wgq>6g4~#i1M|os~ zm`2Z>8#Do}7CghoD4Q!}f91;rMP~y7r7&A7%Ym70J=e-rwG83+|>%fkMR>o^&m;OzNr)Qq`cgayGjSt#!k4}E39?~Q8o z{N*>lg%@6W5vPkOE?m9@&8P&3R3=OO(wBY(@BZLTj7Brmjt@O9Bo}U;Rss#-M2)J7 z?Tb&U22;T`DHG`35}=vML>|t_w{gBK;U^?G8+; z3W$>TAX7F{2@5|(JQ>05^~Hb8L$09N39)cZJo(~BaqIX5*RS8k#-NMAa46r8Br#F5 z5N596GK6IZQb2nQ%AQZfyI5rzy1g}=fAS*s-@Gc}@uWZUyQWjt>{XB*38A^twMF5$a96yXw1*F|fQqK=os*kv|dIa|UR^kJB`$brQ($0^g= zK%g4a(FmK{J0gD*dASD6W{2V-q)>g%UY>pk?a` zAw&GQgcg`G&7z%x`$nb5sH#9hv<)+p@A0B4)aSsWic`lzm*9JGT;)1qW3^|Ra)v1G zo6%U{hKi8P{L@^W8mN{b_{$N=BlFcFff!Zd(^fDr(wKG4ll)dT`j~^t=F4n8$Jw)2 zu(N#@`zJHpys@vM1F8&JT{iG6Mb-5^U6cbimp5_#$`xF``~-H+ox?kCy@lP~Q~{I> z3l41(G*G0eQmJr~R?VSXC906#+^Kw~EGWgx>DUcWt?6{hUfd8usZ7eJQe=_pNb9@V z4g>cw!WKB%0sNrM7^Qqg5%)!W1ura7FY=@_(wv;Kl;! zfj>%@=WUp)PM(_h$i|W<5*|#b0JEV?DJU3ptu-=6MYmc#3>V(nbR-yU9%{sREsJU@ zMO;B$I$Lt3nrr5{7aec)XK=GI*XL) ztt2IlL_|7hQdrmb5&Xhpo&+sZ{=qSP3~v zN+hV5H326{b**3%e5IwOT=1m0@!hh7%$Q2BX{}jE%mR5)3w11`_fo5I?d==*Tc7{D zOnl2QlWr^NSP}|q7+6eB@%`N+eC*sg+`M-x|DP4u@_vv=$9IP`G`gmwt4Xj8Kc=cc z%D`l1>hOP;HPTug-bta(4IR%t`HW0-S3$Hyy7PwP>%hl1PWN z67Q8>7f8xlrcHU2BI5VL>B6*4bh}-&>`aP37DOxxcrR5A%*Agxf{Lz7Tjhe$DUzGw z6>}xCD@S|KL0h60Qq*B8jg_F~AskKN*)7b&0*R)w6Z!pFZ>>SgfJwGQL_(ucK(jm! z+1Txn{5Ff7??sBz&?Q^VAeP>+xeT4LEDv{l+!aX z?0Z;V4@LIOJfmd}#N$Xg4Gjfj8LV{>6@+~h7@X3UH~hL5r;FhyF-ysrqL9dVWZXVV(-Qc)I9K-4(?3vU~Qu-@7txF zb8uW+U_(TYhsz~u$B@ImrWpuHt?Uof8ab=sw0t3227?}IL&MSG32c%>;{sm0hj(w@ z5&tGDzRL7v>J}|#=&$$0i#VT6(P<`C@;XThE~runMdqq4VmQMADnpYN)^r-daZMyy zCX5P1?>&I^}Tl_B%1}UE(hHTSvW_#w}x;!MQbpCXIWU^+QGea zj&51Yb67}Vy@QNv+cc8zpW%9#j!xmXThe?H|Ds_^o}pgqm>f^AefhF{*7MO6EteSm z5O%MRtcbvvGeRCJ!;q$4J28ODhfq{S}a2G7!mExbx;=ZP9PI6-4A4v zlTH;t#%#A`J;=s0fQ1?-Vw4@$iqgyPGbzCIrn#<*h=ppB;!pqh_i+38kb#Cc8HH&1 z9!?KbZez)&T3SexlQ9>iVatJ@V4#e9V(G|~oMG=O1d;!pD%v6kZ|MrwRLNQ>Uu{F} zO;lBAO<*+FWbWJa6;~^g1!d7;sD6gOoBORHo1L6Hq$V7voI2lh%AyHR6FQ^BWeWyX5siR3%BI5Jbt45?>i<(APM+5l?PL7T-9Zyjd3%vH( z&*9RAKHlBg#f`~W3f{Kw!!VSetkq)l!c5j%-*s{O)=dOK2cLTWqgdi2*Q9`km3Y)d3RgDA|DsSiB95sL z*_AR1Q?`f(-zxq;W5Q$9DOpPKh^+uU> zpr&ICY%WYG6j)4?mR7}v>hzlL@1m6tVYT@1{BOyE%B%ae`uhX0OTpx`>eF?V&&H3B z`7D#uQ=IJHRb5bBg(*|PsRGV*QLZwWRr9ST`$rdV5}z+K$z%#8g33ba_z6QP6uv#9 zG?W=?wIR6dOv~hT)jV{RqK_0hq8wOI;a-)<1dWDtjTwHft)zN}3E#4D8b^5h<}N<6 zy^gaR>#C4vj6p>qr=fCu(n`T_7)0tAGEH+d6I!0j=F3bxe%AckS)HIJ0WnNPQlwcm z;>8SZ&=TKF8ABW9oVHr7$X1t= zRQzk*wuN+-%0z>Qw1kI+6qu7VDPBeaM9Tru3j!fcE*DF9oGA9%sNz^;Qp9AZQ6m01 zp3M@imM$(2?lA+H9R+P`*)61Xgc&C%;?;3rP%df2G#FvNNRcg0(d)KFzQf>c$}B?( z!PNxD!f@p@$}s4+rD!cOLq#(f!06}%{k4`zLHRz>lW19@G&8T6&FZ4E7WZUD5A^-p&07*naRA2@IzXPAsvBJigwM+QH+iy!}diVM@ zJo)VNf@be``$B2#bOtyXA7QOKfJxI3&9ttGj^RtTpVKn&&b8Zk`XkQ~?TRFg739Y- z<)B7Sm1*=OM7efseEQXoN%Lv%=1pv!9m2F7%x9rICgD6Hc#uOOAqk1RKV_N7fsAWa zA)dq>fz!k0#s=Pf>kYJ+Y3BRzJs*>}#6S7({(HE77yclCWw{tnCs;-W^0<^xeO=!~ zyVFAwEmiI#(cc73nWhvJgY7K@Yc1>^o*-~NEM`Y|;@RgAozCRGvy3)IHxJ=jhwyrV z987s1AK#rLoQ3FjP31|WztMI@3eJPPOy)gb8a+i;;0IT~2dCXZUM#Wu-ka#R2IAOk zuWzAPsENKw33{dcUyH>QL92~;u@vtfy;&Ni3XTh{GQ@*b(pzYH0&-#Fa(eFs{mpIs z;O(mjI*zQ(xBsvA;M;u(lZIraEs)L<^tZPJxHTJ3vA*7hE5*7d*?h%fgh6+J&R~eq z{yn6#IV!&;lFR#7E!sGlEOD*q4OCVnAxDG38p>M37k}n&;7fn+@8RmVe+!PkCIyjd zII89$|HC#c1l~~X!>%f}^0`{SU8l(cHI)X0g$b`^vg8~~rkxT(ja)V1Oj*1YWJIDp z=*>l=)-W2zvnT$irF41K?;*Iw6l{GiecKRoNp5LDe)jRT&E>b6!g$DmPF42)b&!%7%zNI6vbm)N?)?v}E z=h=!rDT<{GRjS?}PKay9qUcIRL1j}wS#aP9V?dEdR1;KdWd5e#L!b|!hjRe|t+8pZ zKVpe|*sn*0+6V07A>aljGRMbKNb%x$ooV;0i<<8uRdbcHDGFE+QL|nY`9n$eDy4sg zn~>eYSOsDla@Z$^*3j{Qo=8s;VNJFp7+gIgbYv;obIKwlSlei*k(^AhK;$;iWR^A-JaeHiHd)lFYs^W2Xu0`6T@(zsEj=j+>?SyriF^3Z#TkBu&Q>s-LWnt3tI=IGDymw8j6IOP)_7b?1h`!?Wo6 zIn89=4X08hI2E-_5?7*20@z)?AM_0|3ym9)071}9h72X0WVVi_qxzvis0v25e#AqE z`(dV)dfkn`P5rxU-fv1M)SvGk9!rN)7h)ISw*%46(^oW`%+%D1zCmWpcYrnik`sxB_x(1aaEx!gvxjwCLtQ027Dxa@LgHzfi`rLrOhJnCmWbm8%%B6`P}w!9 ztw>$`Jml}t>kyR~B@-MUO(ZACs15k8B@!ZT>Qpw-+<$!iHf~55YlQ#@X%V+3xCF=aB<(Rmi{DSHD#fSfSHAc$=Cepe4fsCVZC}E+^H@X92~Jug zJ{pNi*u^m%o*)N+UQyvo@=5o4V*i> zBfeM$1h2O}93R|4R_TpgNHTE z9PCPyZs+0-;21dByNAu~9%jcOdV`h(u%Em1xV(c{qXB z>LPF*Om~lQV{(jN_}MR@-5Fr-)^!AfP2kMBT6;|sHE(!Lh2>MaNeV94oYT>vfV2i{ zJz3|efbd!YOo_K}@b!Q5d-#>V`(Geg#25se%(kV88HW?ZlLgK_^DN%^%kSd(7hb~2 z{vBwZ2EBIB*D6>n_B|VArU}6{&r+oG1?;sAbT-$Kp$lVB}rp2dh*+{DV) zlvM^Al&^^VbxCO~l;BZU2YdRxY-C|Qlu>^Vv*Xg&abL1nZlwY`4-pQ<4) zvXMkjFYiZELgn?c_R|$)iu6``ce!_J@K9@xOzWIxY9_ltVTtFC0sJym^Ax*Iru_9D)7dvYEUvSZUo91Lv9&zmsRo@C&{ z#J!^;uYSvvi5D3FD#x_Ee;#^pSz=GHgzRfbgO9Np ze6B2>3hu#$B37$>(CUFwr&K%uK6o5wSXSdEK0!50_<;|4U09hd5>)!sC{b3EMN*gp zm|hp-=~#Y-%^6L9Ww$w#nJIG+TC^7JQ>%DcqpSCOBEs0Qs1a%-y(;2MQ<5warFc+ZN&h&ZGb=@fphQl(c7-lY zyi`v`e(C8dt)B~(3Sd@0s|de2^3+!wOjd~$$*2r43N|YgI-Mgu9uBM2f$vyifYwV( zI(JGUpU5FtcuIMQ&?sPLGfd{G)O`#-Evkjct>_6etrqk=mfz)+XeSRs_dqX;#merN+pu+ZdsIrp+juVdeU%Eh1l;6#gsfbEgFjVKT3DH!>>+JpU z40VOB?PGZ1Jifnm6(>hiRAD4%0tWWxshXk|5^l$jxgAWjC#K+6nu zm1DUe#qJ(1ZUrc^3ezeSz=Fmm1@GtF7B~QfHthJ)e-uwhN}ZcmSbAwXlov0Uj>ipty55NqpeSf&XEfsc02$8<46l_b){2zo7K(-@lNV6m8i0?yHC zj58Zu>6Y`krS?KV9?QiXuInLQ%+c!)5Jn5U@aku=cJ3^`_6L86Pk;K8q8@0sJNSh! zz6yV^EnYGL2#RDOghWn`+TAXqaE5Nbi=&f!xOw*wmma%}*))b3*YaM)(<#nxoWr~C zyobQ|<-p3qh|>$Mv0;+n`n7lQ{EHvQ$;nt=v#*o*>%gpQq(vcX^PR(e^m;vPZVqwp z-URR6xDLnkWfH{cOt;s7orhxnx$x%VN}5wV0Pf$rfhb+#;_xvnCS&ZJ zKZiHJ^KC$PMM5Zzt&RuPLR0cN#vKedH?V%Dhv{^Rvlq^zv$KORV$i%Ngi^}Xv{HxP z?#tfuu}^&p@pyul^cq*5ct#WogUwBtY%C

@#T+$r=zZXCet?Lx?~h25YYm*Rgf} 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

mS(VEC8&9TiYIl(%{tu74Zw)VBJ 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

gCsDC+c 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%0ApIGa9PmS=JZGeYP7M2Ft2bh-q+gBJ2s9}6ji1@ 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

83J7&z-M2tLP;~{`x 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 z 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

tEWf!yH z^Low4eeZi8zWIIcmjN)%rS9zSFGC@ySlV4e+(sfNgBHcsKuM;^hqfAfd%Z~nLch?lRwfLbHuL`~@wE2#_$xVEpK zxerTAE6Oh4@{lHnFsu?4<_5CSPfHoLagb8lDwf6b>{*Dn(6_mtSQQo9Vwe(_Ax1!D zAVWN(Py_6QG+-2xiOC`GBpFHkfCQOW3@sN)m4qaBP^Cy5*87*S&Cy{5+2HAv{svgUj@#b zegc30`#y&A_g#=|5H6a`<&bGnkBw-as!ii$neK5yt1zaHZ8&m>BHz7K(7sIn0}tybmhprC=zH<}%P->J|L!NTxxIsp zjgzzd9KM@y-t$=K0=AwG(t(e;K+qQbs?jQNm+Y+26Ef5I8l*rSrZPRy-$@UpwVRxZ zH5kPc>>upoOHV(I`Svm%e_IXjeD@>pDo?<63@LUwHQU+U!D}}+Q6^(F8V%T9Rp>Vd zogsQri18#uZ#cx;E?vL{aZv=`^Uim|EE04(BRuuebGUQ+4i=Ucv9ho(&DQqy*YMmk z&tPk7ONA}dInSNiG?2Zdf`1L!Y?Z+X&xHdO98GR~-EX7HpyY8V4aG;l>m#^u>bx}I zoT{o!7zg#BCNw%zvYKq1t;T)B!*efraQ?b+uLus9H>D}@A+7G&8+=#-+Us_Sbx$EU!#Onx(M)h-&sC`L$^ zFH1QAcDmbBp6T6}xL(D>4?hUEQbj=nfMQC))!H&$3-R7@oV%x!Q-cb;0a@dQP0b={ zrdb|qB!O)Wo3`laUU~!4BqH~~L!3_Fx^wUgV{}^V#6F=I@L~hw8JN)6A$`?9GpZ$9(Qnaf-`C*CK`l(x6&mxg)@Y zWNMkJz?18t^{0Q^bL8q!JULC;dG(m4t2lb|S#bSb=h~Vg2iD9f@$0>vG@-tFP{nmq z!s}I&K;4sH@h}WWa6MX&t8?*VKmKF*w(t5*DGtByhrb`YTQ?AnCpg&ZquN{q35q}Y zlm7$au#bin2x`ahdkz9B6-Q|qd5ue*A!j>s4;0go=0Z^m`R}W1D~KkU7#UF0niZyg zHgg$X)#^>u8Vwu@tr&RALl5B{Z+|B;bByl(0E~PaClQ)+O`KR+mz=&=U%rZGo_P`b zhh1p~xh}!1hy!XN`Z>igpz9*zPUaT_cwQaziyhP&Z7~bsela@iViek#pK~zSH<4E| zoVjpTXpg;K2jkIL-1Mf=6{K>FqZDU1&f)_f{19G#^))>6*}uW42t`Au98?QoX~0Ou zC6`%qY=Cm%e=4mhsbQqN7KW>{q!^|>5hv7|U&TWYJS2<{9?go6(*r8z_x!lHFNGq=VHEvLqa_X`n|qSsNR{rR@gS7Tju6@{VK5yj87i&VnKr&5HO zna>oxXRvdc33^2>s0<_-Ct=tU`ON0u^Q&-N3%=dbbYolA8#`Cp)=V^HBYfeDUy`+U zTtu*%ZB#uU4b#Jj!RSUI1}?*4Pjtk!dLW;rW>M#72&!aO>k^cn%5Y1?LvR4>`ws5E zbO9B|#xM@?SI>MIeZ+X@{SVyn}q1CAv>Xh1T(Ga?*a%+uds5Mcw?E^-xB(iVTn?72NsvvH| z(Eztzza!B}d`^~6E}|~_wF;Wemb`~#^ySK7xK!hCK_^>tO{}l2A<6rwH7wK@D!?^J zBj|h`^QC*oH{NmYE_f3jR#_1(R*@aTEMr8Zc=zgtp@Uv-d75Rq)Q)6UnY(rEqhZJuHQhK z(Tt@)IVw;(;`JtZGp^G>5oQ?NzKy^B;up|hj@8?rK=ag^OJ_bSGQ* z#CQGx*4LJ1-#MnBev}9erBSWPcP8(h7R_8}d;KBm3k$O8thMJ*ZPWyvIqY=td;j4- z;n#oV*MXXe*dJpJ^N6P&mRgfw5Z$EZv}pX4xt=9iFt!vd{XCJ+u)2C4Z+-Mptgo$0 z78)~g#KEMA=so}dAOJ~3K~#&^%TN~Gbe)=R5-3+@H@}3QYJ-@<(1E*!(n*v?p$$M) zFf!57;dp{)U)aWPed>47JJ=TOR92b5PaTO#P$n3b*l{xriCUq|iZlf?pJ~XX5Y1f_ zM2}rH^%U8fX`;2%#QMq#C}a8a&wd{FKYTwf-M1myqJw0N&8-6*-q=GO0UDJSRXa#0 zL$I7;rjEt1>L~@!QS{W~Icmq7G$Iqc89CKvQOGuLl8=PY#!1RrQkO{y7PmL-%emIk3LBWc9=zDW|nt9UXr;dR9%mhZ2c$BEoG zc^=9?{a_wm-NZsIKv)bg+@D~`h9Y)E|0#J~MS<3G3!Y^ON--Fin3yqq&q1Iw0IjqJ ziI^g4En3I|o|9wW%H@1|ntsJ__c-ngEl>ToD*RaJFm^y1K~L$+=%F+7D%8Uf>dR6+ zMHv;O<)!jW+PGV@rq(P|U5D5e8*JCfXGo&!MiSs2O46W(lctNS*LUQ1f94ner`hYY z+AW+sd0NbB``sR1e(@>}4>Qz^Rlpn|8^rLc4xFY9yD~K|A{|=kUzLj?B$`B!oPu#8 z8EQ-G_`r9(7i&QiPd|4Dpa0@lP~5zR8lP4-kfzf2YH+L+?W&9Aiz|4~dmhHOe(Q&E z>D(nW=Nd@k1pSbOo-KNuGiTXEHKoY>jZgkt{Hss>0-~WUROTY4J$Zsq*5eS4Rg>JU zhFO8XIER&o=5g-AeK>#q658{1X`Xs}ee|OV+N}Vs)-qhjN59|0a5%>Q`WwHF$>dc8 z-UbTG$0*E12V++}eDo9Fix0o=TjW{)vnL<{}PZW}aBBPvgfe zgm80H@(CrB!Ekk+q$~PIe|`>oy<5@%FD$lX2p~G9GRNZb3GD7#c=%Ea^?3(_F@0@DK38&7S7K0u(#1I4xnz2zJ$wDMqjy4UiOj`aAvEADR+nmg~)?jmHV>B7z%FS1?6_r<^bCSQ;?}NbbPw zw-M4s(NED7ohqqwL!oYXb_Lz>Pzrq7wDa7YY_!mG3miBee6u3ja5h>5)=44dKp@M; z@M(}jYQrcLTAX3kWmssLialXZHKEf$dB=jED*>}2q9}bipXH)bz%P82GnadkU1;j1 z@b>l{S>yQJGycch8)ICrqF3>R;b0XN28PIxsa{{g;`~YYbRzUU42O{nDEaJ|p^Knh z#n$E)kn}O!-^H~K#L$MzN6ibcd3}W8Fu=!u=!fvp5C1(uRqs20KmLn<_S5KZ?#rGT zM+3a)iT7je)M;_l%ya-ZhXRHkw6eZgZqMO?`|raK|KJbccR%@S=#IPa>WeVl76U6J za{skmc4)kVV+O!m&_8J>gDPDSWM*ki3MF8 zqT3zeg;!q|`s?cQJQkZRWb=!7J-Lo>r0Bb?#**Y9?(gp6nL96IVX1}39=?dVR%0d) z;aZuCq(p^g*PC@1n?A~H3~z28XG{lQI=qcTa~Yv^uSCCh+-ua{ln0Ajx;;`qBx2Tl z00L0Ut0!@L{8h}&eMkaK74=YwRwWJJvZO#Ubz**=CNmVxG7Oo(u}CMsS~LkLMIUYWL{pw7S2AKrzzz@HD|@F0hGyesT#RLqjSox*px!{aNHAod#%rH2y7Oh$y!?HX*$9Fh{Rkqqtqj_6g>r5%C zDK0N26Zq8gXs5?GE`(m;=K-vsBIp1o=vfp=<3We8?adv0`KzDD^2$7xRuGLoXh{tNF-AsdDa06g9QtHbeuEax!XL@LbhYw^kQq!Z+?sq_9B6 z!ouRbG|7(WzjP)V?*pB(AP!Xg%upIc4TP%eZ%$D=QzLiftjU|YzcE`3W+@Z&ue|s& zKKr>ZVZYPC;qJa5ySzv9VKhTis8fOC0ii0hBwUz${oIg=H_sKPzowWe7^3H)8&MkW4U3?sbU!XkEh3)j&pA&@derQ&}N(My^#wHpOy;>nM0%6z+2z?Anv<(Ki1dJ$h{$GYppJ33ehNpxEVjyUt)c>Q(sheNq{X{d8*Wgb{>F;bEd++%F?zq>e zy$KJ)$yAouq(p7iL#w@rRnx=C<`Q-X4(_|~7Ac|&LDOQPW)yll&Bdlnl;Hu34-u6M zvR1-iq0h}#^4Y4`-`ht*A$&=$w6B{Bh&?!w2yu0qBtn5?(?ZcZ1;Qn!Su3Wzwlss5 zwx~BSvn-ZiVJOEt(jq?apM4OY`t46*IEXP9JF;jpvqt>Zh-|SqD*~9-)PZj5;cm~w z^^yEMm;Xy852`>~xf8|RNJbL)1lO;_ zElg}~Z{d}ft{`zrtS+=AC+w>)+{VB8<=+(h>8meX#&3W6Pq4DKj72s^CZt)pv)jem z>H?NqsyGZs6C8|tqHXJSx?(+ia(x|hwFZXa7~7qFeDSFl@YSz=Ra`H{R7AYCQ=tVm z%o+xPBMyc%K`@b`n}=9+mf^Q*s5TamWnCoEt~j`5zJu#m@8Hir_Y~GoZ{ftsDjb>K zm6E+R8upQnCrHc+@;Je8(iOy@=6c8&&RJSW%UGH?wpyb&fs>R%t1R*{dcy(C$VKEO zm<(e4{-1vq2iFe-LXoVb!bZP8Leo)~hs{R7Cfm*>u7HiFX?V)|nsmZk7vWk5U`Wv% zAv7M58-)%gt8mDA!nU;;lc&9+Y5O9*{9&!O^vx0(2gu} z&tw)f1@Nfhxa;tg-h(#fq|&mvP=V`)au2mqm^8Iuj+V~sD|4kuVgW=~zecNtW}|^{ z+>?9AG+aRxIWdY~pbL5Z;`NL1!PDAJ zi%(-yvmgyI2Qg;_KC~@%BJ?AbLy{paGq{95j1W!>qAy-KZSqUcQ2 zEX9%B(_D{NRu{3hx`LNC2eM`twkzTFzSes(;9OjQtr*RQkEO*W(c+K_DbBkrMCp78 z-7IGr0VOH+oAo-*pWeW$SDr<~ZJ-)7(c9ma26t^`1t%7lmCLVTV7}FcH{V2ZWe0{? zh3TX+Afjg0Mg*s*NRcW!V(8(Rt@yKSHf&$%5LNJX9mC#443gx^6l#z+6n98Vnjs=s zK|oxtib=kQys+e2?(J<$Q#u-rQS$?7a>e*+GJz9#$f6PQbQh!15U*anCOKqoX`;?7 zt)wR!Qm(l|*xA~ayiaC~(TOpMMoOb-n9_=-&_*I*u5##Ti~~z@O(mSZ zDA4Z@P@)5)tO`BP5fx_$D|AG6buzMp_D^DXMYPBkr&U)5k0EpZY(@i& zWliy8Vznbd!l3DoVmx$=W<1UQn?1j?Sbz+nVYOet1>#N0OMWs#=zo<`*Gsrs+cQ58)x;$6EP8a_POWr*dq^O{p1<6nl(Wp zSJ#*Dj(0wZKlsf5iOa9;AQ(5$s5a4@Ulpmv-rgQ|wp*BMFG#!%oBd>xqE&0a4Ls$H z39hHPZem?Q`bgC`pbX9!{6Z!)huaaKCmH^bd|Jh+Q+2E_t;2AXA=(2Ai`Y1ORGKA5(~}y&Y#2Mk3NRITYAdnIkP_#oBga5EmdxYqK_h-&l1|9 zDFSPg-19us;l`Mmh|m>`ThtgTx5{=Df->sIFk%)Gq2AsYrd*Q(oF7pFkL?^uK1SH> zAd7R{iErcS&%c1Eo?_$VBDOaVF^cEW#sG2d;_0Vfz|+rc(;gFvhClx`WmjjbQ#O*Cvfh}8C22&W3$8{9OCBnEi~YYEp-}) z7>q~oZ6Dz{5;6;|m&-E4=H?dq-94nPgZ^@eORY<|bM*@L_I8nnrNlB6i1FuxA%5$V zzp8XV)i$cDb4U{lNp}nsBS12iT&)$N{(^iKS2ZexpVAN*rgA3L@kR$o^{dOLE@5|c zh`K$G6Q|at;i4Fyg(|b8ges^?M#)Bc<6-LSrF#kWX9 z*~FX_&U9X6zL8J5S)Sq5%U5yx_HCuN7)LURHY7RoG5S~fKpv1Z7d zN!=ZtJxSkkEHPJ+22AVHcxTa)d;QcY47;A_g?fWfXkWDQ=j;29tuz;oCE>Kn@5dBp zJdS%^2JtoHAQ^(_nigBjPfXE{~W8jZt3>-s(-U zX;HaC^4xe8Jo4}b{Ke7=MqQPQCpePrAaJVU$~f1a7i|iMTDk8Fg2f`0jVd*RiO^rE zBW1HzMX%pOx7U}3iH$>6`reG?_@4F(X`{&l(3<%kyni;KL_1w4xjdsmJr^`h@AjbtEv1 zNmtelo1q;;D_qwCmE*-+t?B;5hKTuP%3WAB>3pto{XEU{yhY!MaXz0ABevvB2nTADXF%`4-%HZ=lP$SRpiQ#TF=vqp`m zth%?yNNrcn5p$^p#iC~kn<9f0@l5tNUfn|H@a1B@q)d5u4Rc$qnTD8sDIK2mhWx>) zi!KqN+_w>hnZVr@{@l%kH6odxxeD0Mn4!rof?>@?hB4O#LDEZDQ6icu{;yI|_g0#^ za=%@=coEOPpfq@$gAUG}J|ow-qSw~FgM(@5fz_q93@D>g>#oIx5%|b=d=P*5zyBtH z9v-~^0R+vOVtQ!fvX@@DiJ$+ae~B-B@vpGdJdGd!Z~tq&?;Vd}X<-4)Mh(vC6KJom zqVvU9aQea-L3VkvhoiB$1IwDmJ#{!no+X$JW8As%Iu@6gabkH*u>?57WZVFC(Y7)u zi;{^j1cX{DhH9DoTr{kCit)IQ6RR6If8jh9m*@5OG0|+bhgKmlr!EW`a1jPz2h72xYww?36J?|3-@2Th-{qV z)vK3LZ4}sOEg&!pEN~*NO%o)i!?2+l5-?;sGj(P>vdotaQVcf?;muQ2d+XLMbbB2! zD;T&vB+IK(0I{&4Ll`qkCgX`T6I=vWmX^hSHcm469d4RLlqkl>Y?Id%H(B)ZV+E6f z_*Yg}@R1LF5B}|MeO{)ardg4RmBWUl;8bp`A_Ew3D!*q6jY_4Fm|`#O5*>8Z^nB_q z=Q04<_u-P7z^2b@;Pi=ASaycJ%^i$;Au2va$2ECP7P?|q5ymKqM%ut+6yb0(z@+G+ zvuy&~LtI=rfsNHQeC*@@81H%V5_Sg@Y+iW@zw`TF!XN(G%Xsz=KdmkAA%*?kAjjds z7M_3k3VL6CT7FtzJ}vYKC%uhydojJT3}!`X{-S2{AiG1 zr`tiYul&Z_ON)5$i6?M#=PIsz{>vK6pv_wV%kzP8M}3rP8whNS$Ew+rrffXXP1m&X z@+2=#I@aUv{BrO$SAcW}!fj(v`tC%z|K-5$^~>`6bEi*A!5={#Ze&#g5*q}U4nXpK(aGqmkeyAx#L?Tic^n+3d{^J z0I`GnDn=VgS(0s0k!8tN%C=l_oY=04D^99XNt{ZeIEpKZ<+5Wbk}O-+YElv@i4qBl zA^{K}_8H7RbN8)p@8_I8eU?r=?|1snkdjia${$oXhXrCV)6=*6EZ_IO@3WB_$!t67 zbJ(PHIvv=i3$vu5R8=&kl~X6+c|G`EUw$56=Vis^I8cbuw;mFK#aInN6=M_}8zs|) z?U<7FBTa_Y5IcK+lnUBGnv>{zOcR!tmm-EuRzc{WvkR%53pos!Z8U7ss4pdYEvx~W zHE5~IHI!?wa`b5YlHNm6jWg3B+n3ZK(c;?0Jm&R9+*!Ya58{K_E5A9CV{?5EFTeDX z6sC=05hjroW|f(?Sb7W1nrmK?8HsTD$eYTH$5y5zqj4bTEfu|{GB2WLiI~w~9HCNa zp-`@3H0r1VTGw#UIS|buDOFt4(s&{bkroaPss8ytKG2_yMVVbfFVEux3hD zpkcTYD?lwRFN`(|b|9VA162R)Vw!YdnFZ`0?5dz(YR&i>zPMn+&{T#XwQiv$eyeb6 zCDhAva2*F}IhJAIWDKF%-r2p5VK>5uo_!K4YbViKT0xSV;<;~p1=}}wFjrkd81!I? zYX;w~084iz?3-cqeC`eELdA^3!FW12rqo7>LeTR@Ud$~J>VnFp)Qc81xqmra9Qoey zy~S-vzsI<7Ld~^Zg@(~_24)1+&}hsnlT;d+FhZN=g=WWlKaY{D0j7jh&z_yJqWE*z zsm&sEGzol0<`}2~tqXTQfHZq~d0NcO_lNiFL?6KNbyg z#qW*)TK2?}f=E0~|8YOzM31LoDYZ^Np&!hmSb&qFV&_1fn^FbfsW2?HTPr`^pM zK9XU9@BHAi_=o@FPr*Cr;_0U!LakoObci|lVT6D2^S^^X{^K{%W9WaWhF|`L&)~wD zH7wH@Mi@bPEX^&U!w`2bMsL!CY31NBw~VK0s!OQ-d}%@UkC8bo z2`Y{)!zwmW{D;?=jn>eM#TnM;Ih|;T0t0@SBAy!P4t?a^yfAWjUvu3h3QY8u=;Ox5 z9h7QS)XEF+f)H~=JZ5D+jRBgjVKm#hLfRKamRIyAr!0@`AKeb-pKfe8r z`;FQ=@DN=Dx#*l4>!cixQJQna$9}PL>X`BvOL3tlP;AT+5zOXfAsXP*U{bq z{OJHupus5Q@%RVckA^po*KWUrzx?UHh;!#2!iPTaF`0cmK)Tw6v(O3)c-nzIHmqEU$6 zpf8&z>ns-NdAoqepMDo=l{vir`m18;{6l~7Q+V{@3$nR%dPBT*`37!WzJ^n$PhpYM zaz-K)4NN@1k0)r&)iKShEHW#ZqC?lpH!kC=Z>?h*PjLFgNjQxX?1F=WX`!DC;p%yu zT`QqbY9eQs5se3ub;Kg(rI#<`^>19k>G={$wI+1a!HqYs;q^2$apGKT^2(#*S{o5GJ}suY@B(YuAN+!-}};+{{Tb3FUAO@E)|O= z;+!sYyhI`qCQ5U|f+f;O9HGQRSy@NvaW7 zChf7SC>2Twd=I9XS9yoJj$k~Jg2=KI+9(tFNQL!kqak`$PSCT!8^B8gMD)z@0$j-O8mx$Y+phKx59L7Q}y9YI! z(YR;m8Vg&ZE;*iO8%dbRnzd9kaCB!IVtLa%p(>pM5`%fI?d*toHdN6w#6&2*}} z+WztY03ZNKL_t(ZGen(GnhOMhjV0XPM6p=HV9>+i!8UrMLvd|wR$3AZF!Y((reW>m zJT!eO8qfW0rKj3&kFj)uj>3I;2AMC%fd|ntalE4m6qyeXo(0k`$a8Etx;Vs&23VfY z*)5bx^&r<2sRUKep0zOapjny>3HWDwdwc5o%+NN*PM8+bbfoCW)MvUCOs%4vN9t5d zrLv$3Y|tkD6o!>z;C1oA_rDuYUVK7w70LHJb$SIayz(M$UA~1ue}H16Cimea2_=}i zGH>p-!H*LOWnv#1MAJ4Wawjzty)O|s1lHsD+#*rQFOnVoF59;R8O#q6C_9;CRE zCTbusvy_*%EX(8M<3ogw>n(%88JWT?OHzIX5zkDV1VK*pEa-nK2px5nhMhgjnsSWg zK51t$BOLVdS?BuA{eNq3ALgTmxb_|+da~S3G1U}`N=o_R#1k66L=R1KXjLot>!1D} z#9;)d;)wQChRT>q-s8sBCj4N83m48{qSG@;wi|ZU?QoWwF{9JS$S)O?|J4G;~D8xL*bS7~W`%Xd1~mm;IT!o_-)} zGyf?U3#c`kvK|fweH3|{lEiAX#@U|16J72-vT6EoHFP7w$D9bCC~8z;{_jH{Qg;Go(@ zI2~hkVF{I5RSId+vA+EBOZf7a|41^z=1WOa%$pF8Vfx$M5umuBTSLi zP2F1&}uY9)8UOmgqn|wPd$Pk z{ozleUae#Fecy$p#YMF0HKj|;%uSwn_+bg|whcp?YPr7r^JFT`xSUJJQ5ymg8$68R z`<})p4@VN3ZRIT~Fs3<0vxu@BKH4k0ZaE8yo(Ki2AB1RCm+;*m{V0lh4$JckQpn!8 zaT_mv?d$l$AAJ$8UAYOnP=#%z7!AA7CJb3-!~@Y9A35Zaqz>}tNQ&*~o>1vHyH}7Z zD{|O6+=`2z{-^&ZR+d*pm%u4+voVjkWf!(tL#0?lhdFk89V8P|NODXFQ(DH%5}z4# znFt@!z^VMX*>P`!rjA5hDFrQKBM~LaVw}GYZ3Ny3`+E^gPT8~UFj6VQkuqF3>bB8r z%n1TRjaifpK8|A{k`a8*!~sSy;zR7LuOqcIDTrtgLz-k7YJ&8zfTb<8vgcQynTR*1 z+Xwv!M#Rr)BTP8NNU&Z3XIVNpyIOx%@2byCdocI~qc+ZilCd0OfwwOmS^hrU+U-5mdBn7Z5cftomv_+OtjU9UdT!DnbR=3B5#_=6(jU|K89&c?iJ0<<9C1WEBMfRKBO8{ zy4j{7u3f#2fAWw2CH~}(pTpXN=TNOxVcL;|8c(w#n8=+d@$Sj93dD3n6}z)zBq)d` zjcqCvz8ngSDG5!KYb6A9VvHDuTR_>@rIG4&JlJMW1%k&h+Tl?CzMZe2*sw6ySVYM# zpj^tKI=6_=e(8AtUyz?)Ybped_pNTl;z0LLvkKEOF%Bn~L@5eHa3mvB$NHTO z875q~@Hm#27er5I7>@X6b-`x~L8q(U?K*-vX6^_kXRXI2c7;3?p zCRAX_5QWW7gs~Vis7c~jf}Lm2u`MqA4kg2IoT@krhN*cRo52mj$eS?BdBgz;(qm~9 zt&py{q>fggnHEarlF-qtag4@VL$Wtl)=p!txrlrrf1KAzcEsY^S#nd`*V6c-VnMruLG%iFc76aD#bFE7nkImY;El#O^IOUVHt`= zLOrkyNTVqTeL zUj?$WX0a_+@>ZGB9Oul^euz?-{+j3KwUeYl<{Y;t}UZ()r1nI8LCK>+L5S;;bI&_LUAO&+#ie(7>3kQ6F-D&<}%y# zNH!^=jgi=!N77Ur9&Y2=zw`sRaQYPTMHjYZNRH2i^C!giIw*VMXi1F<3$O0cAr@M7 zeBXC}Hy(NHVWFW>w-M_J=I0(pzta=3dcIIZ(Y2L6AeoAD-e3N~@56^bbOw){JBPew z%Yv%TgPJDt`Yg}4aQ>kOuyg%7ywF#s2gRZ|WEJ%~27K?lqG3`uNOvpl%@3WsfCtW; z79q0GNpo4VF`eEM$f?6(9#po$NrS^*n~=>!`0rW76PZwK&Pf5PR%)uL;}uCW86)qd zR0TELnWjoPL2}rgpr)HBQ?I~HJImGMapBwpB6fb@+*urUNBG)Hm+|(cm%&IkcF!8o zkBoL_-#)5T$VKnhXI_VFk_JOI1jmR5G7!);zG`mtyX?Nz1e+sroEL51`-Ez-9DEG5#Pj zHHeV3dvb5{nn;hqN{?Vs>Z9at%j7!nhw2_BI-+GdtTYyb12)oD8q2*!qZ8Z7XH>!z zX5`5Gu<)7%M6+n-IqDvDp}Dp=_}SBfygv(nzPlg#@M#P*PQ=bzh30Ca8{~WW;TT0~ zA^9A~i5jw`%6XGUMARxR&Mm>MRm2SvS%FFfh_vHl4HT57&zA7q6jdU{-cU4q!6<~I zg)oVRXu6ozh_l@EuAYensc8LTHKxj9oAhqcPvQ9Ms{4vI;X*A`VawE&%oPn3>>3)CDti4x<=|Fug{I1X@9yr% zy;-L-UA`#VHMdd}GZ3NxImJ=O-~O>5$1nbG{|CGwH7<47VwFCYcmzlxZa^;;gjxw2O-?a0&%98w+p?<+}s2jGj*YA^$OLWwk%DO>As!$@fx@y=sY} z3oe}>CBHHYt|S$n7fR1%O&P=ZWv#Ga*oABuk*Gla>>3uh)(U#=WEq>&%uHd5yyd`3 zZO&vw6U2f((G>DQwg@%Pq>8!)Lp~4pv}V0=>~d_H8Cstvc6C-r;h9A@?mDi>9{ zNKzyBXXOvh#!p;7X}-h1$9wSN#fPN%;&tuy_Awr(*?wUhXCU5t2z{1aT=pp@nRXD_ z=isKnCR(CGEL+wReoty6!>`i z#+IxL^;#X(Y7yN^h=tX%$$Lbtucq8{rZ5@CNOCFs!BEV!NS7W53HqY}YGqU9wzByqmETa! zG|h%~_V+{!%t7_sVhd|$=Om&aH?^>L&_<(Hme)u3=*?!*6yAg3B#@{jGI}=dT$go) zmth!%@JB=3Kkgs*8?|@fQLH#H8B820?Gh;!q*=t#P>dF20UQUgjJzyZLcw5wV=fgG zfYc(A2f5KClT-y?=b#oXp)jgY+WLG0z3!pF^V|$gbAlwDV4>MUxmZLRPQ)(xZ~e9Z z1kb+zX*8P+Db}QS$SnD#(K6KLJI$tk%9cMTrXI@3L{T7#(llFhViHi00A@`#?3g6N z#FZEV&+kbgIyJ_)v%igT=iY@%&$gsI?h30~LU`oyoge!i{Eff$xAEZGsx&R|#+@x3Y;_P%OkrA$0_LHO#Dd*F?1;HX zs5#XCOQs2(H zPomc!q1tF-a4^F48#`#_%Ysbt+Dg8Uz#;)4p{c5Qo7qECla?eSm_|`D?l7UYt|)GE zY+#CZ14lbP>|%_>i-iixX1<&AV4^J6(RrPYo-ral5qo^z`@9x$Hj(7OgGB>TS?ZEh zwWG`^v>7c=&&lruL@G5~=qHSC;HQ<0vLrJUNg@nVUyL#&zX-}=nHFP%QHb0qgjS%X zdc`G+FT#I+aI6N|c^}hKWW5q0niQ z7-2LKy&SI(DM6k;k*R*{4>62GncB1PqE5vix6;Y#%_p{@!|OS0$h+%>+m{^)n#!N$#f{n5H%K?Qz!!z{s4_(e>8q!E*xKD7^*>{-qF+$ zF!PGfBsA13MXa>yND~{5RhBSmvjCLsdA#S@cjMuQFN)Te$R-1MUAHJ!-PKwht@*i( zj()c!U!7l(e-F|=+`=eJG6{&1KSb zBGfuz?wN`?Ay1bvmfv8$B{D#jXbm-r@aJ zDX!eQi6gHoZmO{#W2)JR^$B)%chH{DprKc1Zk(^P-S%r-BMREIm}zMZDDJ$0q2XmqwY8D&r9`^ z7z*)|im}&VjKke+6%S=ZP3k zr;=Tl>QjVqDDfrS2dIhU(3?+^NLZA%98haC^0ZXwlNSRo{!`~GqN zxZkL~0}mF#Zi&Vh1Lf!!D`z0rt!Im6qC~#&SoS}<+KOPE<+aFiQYlCjlBEiMF7=!o ziS=xzWmCEm3&X)s3W33qhn$hX(v&uU`9fR}msXaru&|I>iz_1oDY6qqLBLFkl5Of{`bEdfAjGt&>oC%&>5mxX<&5N z#p2Q;iZvHgi$#itqE(Wnh!fShW*ya56ZJ}2iVUSenM!k8$-6M^iSWs(C*XjOd!b40 zefIfTI2E`Vq!xOEE}nn>>v;b8=keTEUWGq7K<55r7!Xkcs@?7tO^QOTWDd4&USfQ(XOcDq8&EL zhgqPsANUv!0vwHoLZ9O`mDi*i@-D5vd7mY?b>#*Qh9ew$5mrvFV6K`+j>Z;KRdg*c zE?{YHPEf(7Y2jf_$Hj{e;;Sz|hrZXtLbVFRbTJ|IGBuTwf)m6r%$l@W-dL=*c;;C7 zBS8x3$Tps&Le#2Pv+vFO zPlD$~d!UM5&5+VX-h=l_7>+X3K)n~yWn}q^cF{qYCURZ1R2c)z>U}myjNCHVB_UFD zT}z>IJkPUu0>hj+T5_73$WUW-bw%vsJG~>Zndax<>voU4gNk!{L##0B5cgGCka^Nt@-$#p2$oG%it)=`ZfN9Cs1c^qYSF-oqabr8ypr z6P#+yVQYI2!_6Ih^@T5Et22^d?6=;~&|Cz%115l-L}JnyWh6@@t%+0%!`4Q*%OaH$ z8NoP`;Z&*QX70C2KP!kF8%sVzQG%1p3wYq%Io!N@U4~=Isb0gyix=?WkA6(vgUAr` zrf5zg$Vg5Tv_T3~?VC+cM1upMR<5YRA7NIoPsDJ7lu+Iu4_&x``Bn?1QW0;y^{TA* zm2yoP6!2LQ#Cw)vrv@``z43^JP^7CN3XK)iUZkF{ zYggaKwVM%2I-?XSh%^Ixcdp~Dx84x?;X>gG>ZuOqIdAoEibrju(Lx$TDq_Y9#r2Z= zSI$+`TkZ#DmfZ*$hL&V_w7Yu)HM@ZKJo7Bx`|hXl#V`D!n2H2mB>E&HXTo%C$@1gA zkxp?BnwGi6vZ+p0DaHGGnwebDeNnQ`@|vKZ6}N;i^<=n44XZfgrnAufNac5#dghc& zq)H*kr0W{&R^nJ12YwEXrfyDZ^|Ip81nP=20dK6auw4g!dPtgljF}mL;8jJ z8zm}RjIFEud`)T5w3)^(Cq_avF{+kJBCVL^QBHy}qHzS>QV|CEd=uw{ zNBG?DeF1;rV;{rv!n_(3^7)epj#!z6r5f6UJ}zIsiG%hI@|7GG=N56;K0p{9AsCmj zv$v0GsU(A)&Y+J=H?HE`xpUIYrD+k3W)s>ZMc@TOzvMM;HJW%=$;HOj2E4#Sx69ZU zm4T|97(?imAp=-(i5z(17Cr3uF{ZH)_iS<8G-XZP+!@NFB5@!&2up#3?smJ6S6+J^ zZ@uz19)I!-78e&$t~61rm8FIfh6?G+`FzH_(IhL;4~Bwta?rwSxwpS3Y$skzsS1og zXA!)Ad|Ms&8?|@fVbFDsT5VGUhcF%)6ypheEyBcaqn0kf$mNBa!um0%6Ge+;Qx=qs z#vZw;AZ*BVBBZX+#fpn5DGQ{bg;5}rGNE?#>priO`rPnyn^wHg<9L(FcU4 z#b8#tBGICksDy6aos`dz8)OVT34@+FPG$%Hn+y1G?4wfR%@-mT>wFu2)DwZfZR_|u z|M}m*r@r?upj530#mF)h@*x>DX)0md(v(7>P0HmmCoX9$Iv5^F{Sg;J>e1FW`{;~E zSV(dRSzi)Cf`^1oOMxnyInkBIQlmj)fahO&1;6rhzm3qRHpoGUA_iM2U-g+6Q=T70mGw+4w1=!lz61#5Zpuq@56W8nXVVHM$D>PkkY|_ID zl1=2~ODI=Y@%l@z;u|l0UGN4L9vkcH*xkMZJ8$CT>Ny+@JfY4w)v7dosf00;7BvsM z<>11}WjKb0VGgKSwxWizcycwAOh-1XNtj||a}(?PfzXo*%r!HWO?T^oc`Q_1^lo3n zTW_xe)*Pbh6wUbp%Bcm{DWG1j;o~3wC~TsZF|%SUp&Krpn8(`k8Em}u76wNnm_;o^ z;YM(n4HpJ#BA?DI+Os388<>~GhHE(L!=@|UG?i<{d?kbh(8493SF~GB+*t^Do{w_5 z@@Mk-&109tyXRdsDQe<^ah=OCn6ub1XXg(wem03A@5#wGZKVuL$3xdS(fwTZ8pA))m z8W;!@58*hF@L_(g$tXmsC4xk;2(hfPoY#p=)fIg$uh|$+sWY;mCsWvth1JzH>5>lG zds*}6idKccrlmX`J2^!@;*iGC;1EI3U0ALyh6O5aVHblV<_|^knU#)*CM5~HNM#5W z=pbq6g7j%Jtq=dae(d<%v*}Azy9wAeG4#+zhTL0MZoY{xJpcQ6XSffJ8GT zs$gkhUS7vst$+02|1a|MOVxr3-8BL+4uS-tM}ltb4ti+s^bwy+B-Wu`na3-yyd?Ji zYykPXsS%@GXkvMF9#J$#w==?*zw!-v?}B4z`bS6+N+yPR&%Hhyx*Z&~ac5%#MZ1i$ z261+sQtvrUMKPGCW|K|4H34EPJ8x51jw{A8;zm3h223<*#HJaATY`{tmY|KPZHw-a z4JI4X!6=YSPmktGxdeM~5E%zZBLm4KMr-8+95auwJH~KKj5tQV&`_Gv!B`d$F@A6i zm}!bZn4*vi?_m?*L#i=;o?-A2Y%`F1$aW0bOQU`t9R%1T?Hn^Tyj?&Dr8Kx$Z_bF-X!UD;W{%WCna}U1R#V`E) zui%kq9z`=>g~d?!32&?kMpV^}fj94Ltk zFlrWt;Rt(owo$58;CF`^wQvMGEuh=)%RsMK8X;Mjm-oVWPW0HdQW^7e^Mdjc%{}b4 zC0nu6?T7);cAF+`n#cllJ&&A`6E=cB?4cKh2>k$sd|s%sY|uDpt=C)d{Rv)q>2*05 zXHGAn)oP;EnpeT=qmeX$M3RZb&ZHnoMxPeleB@#19pPXvM5)|FpmlI`=m|^W{&D}f z->AJ4k5obN$n*tiG{HnGK+mOuc1a$ZP}in1J)cc$IEmq(S*E45CrNy4CNUB5`9$(P zv|KI|pigBo*KYR&2_v0he!eA2Wlq^?B*GBmYuB&i)Y(&Fq(Q+ki_K|ndMuI^mU%`S zoH1yCS#}#T!x1H%-Pzv57(Fx%TQ=}iQ^XF^t!RwVnp?z&KloA1&(F&um=lf5R5Vs; zK2_5xZPoxP8tAMUWMFTSeGaHtZYgw+I>XG$-xS({2@B)M7y4XS!bPG003ZNKL_t)! zT2WTHnb`rADZ2-4{M^6(MQm(t;N;nP*m)NuChqQe5<5mAHS3$b-J2-3R>UoCZS5o) zr4|Nvb^%8dq>fauK`#_qs%2X+j2xW2;?2txQwrJ`hIlC_2*L@1{h=Uisi_dgZa9z) zarNYi6m>*H=9d;xcB>dnJS!RgZSy{m9@+$VOUx%S3a$nFzFbyLd?H&mw5HqXkY$8p1SS<9>6wzoXNGom8*`W9O zU73`VIzs(|mZ*?up%dyfZlM07A(P}QFgqGY7Sq)9AMzoK9<*nSxB5 z(}^I!j%}jWsEMA$ODA&wuz4xkuIR`N!;wO9Jnl)c<43CCp(zOIF1Djdlg4|SPKuhQ znx{x!=fJiN(XtS|&gGb&cYyWv+ZYTYp@^y}EOk{=xp!1;r^$074sdY<%XDCsHTnKT z<7rO8ze|LHG*>}yP4&fSk3h%Fa^|qt6@wyIXpJ1k5Jk!{xV)^+1&faPxhDFxTb zk+>Gno|-b7T~+8M3PD{~;6~4gSbOzTm*t^Vk`5 zaP`Hnq1u|qKl<?A{1~xa>F*m;? zpP^VVrC1|nxQ`w@=ErfEVY-MVkX<3ITp!EDlDNoGzbQ0HMk^Exc>0+~Q6ox1OK($` z0RxeT&5aE#uPmY09pJ?mUl1LbHzZ9rLEg<_m>T%T*Zu_MVuFXxKZTpy5x(&6e;bcn zSVOto5KSeo4Jo{FNIfUuhk;zjuYUa{te#p!Fb?tdrMK|(;0%g|RMwm% zRWTXIT2DS-S|U#o2U03C+JvcDC=?m0f48Lwg)Xo1rnr_%j6&r&91AJf zLllmnYYZH-R4995$~vMuspz=q2y9eS*old78e)>Fds#Bg*oCJ2Ik8Y1#hoypSLR5f z3(HV*(PD*?A9`@u#`SC0aQf^?DWrLg4ao#lF)``vK4u6!wTtxa5H#DAb!g^%iEN-F zbXj3+sA1HAw7HOx(?fY#lFl;4zUA(o<;uw*DJR1xTj+(Upqf(|yg<+~?rSrRZ<=LN z@(~gZx?O-}M1o?EMsg=f9-5{pw2te~!a@TF?Jf?yAwo>DCM~1MW{={miI>_U7P^b9 zF+}r;y47km0<{P5GymeBtep1&y?X^}!H@C_u4lOLm(V9w5yPB)B>lj`4@jeFbm5`V~y95>8w=4FqG9%2hZ< zUb08))siq?4)^!P;n52_$dwA1Z_ddY$$OTP3+h9Oi1B>%Mtyjrp^$I(clWS+;Gx-E zK(SIm=tmg!2N*H#ZX64Bk&!6Wv2Snh%J(joOK=JfsD?1xujVT zS)o=!(^ROh??>3!*rM$K=H{ECMIv(MNF$|VZoY-#jU%C5i9NWk!*z-XM&7Z;V&*70 zo5)Ju&{P#+ssK<88(j)N_q$&ZeOax#%otUuge4mlGsG~8a5(NEH#Lqk;MhFz-zr}X zV)<>f99(=TRVv&s_6G8$P=kE^RV?CqVWh(?m+Z*QDnjmeN;ZrwMmY6Ka*%bvr^pQ4LBsl+9Mx$C8o9Ld_~u?-Pmc!)0^C>t!3zbEf32 zj3*P6ZJMtPVdPy@GzacN6`{~zeV{dms%@bc2a+ix$X5bP#`}O)MW^c{97UqZB0A(0 zY*>sBSSe$D{R&2r4^tFD4TO1`uC(y@iSy`_4yZXoE4u#rH3Z!uzUx1l;$4+8%B3Re z)gm5$@)2CW@;WBok?{M2(1YJi#DJ#f4~~sPBy?1cQAYoi>OlTQQ;$d+$aU5tAKim} zOp?2SZ)EuB%t)%$RKRehrVKe|lrl4vLK4VwhS=Nz-$JL;GKx{06;~>}))eb&^*N@R zqCDD#iP-9&JM{oI4t9{XcjdFLomdol646N4t;s!4Bx-wm3;yAO6lHccb*AeYDLRT$ zI2LMS0Kz~$zq46Ev1rTp;dGVLXf_ZJo;oX^>(;GJB#8>YwXA};r_IQAWqCQ0$+)9=DZ zzWW1Ws{HigpM^Bi-MZe-WqFcqC}d3h15 zjpnf_6SAgeuRWmT5G|V7R1Ij+J}zClijl8jWpNejcXqI~v5tdL55|P1F)kAHG3rdvXf4`=k+t_r*sg0GfCwUk#n zs4zmwZ3y#$%y;VY48C`o6GSA^ZD>7(qT>NFouI(%ut(JMkdrUX}m5e6}Je`6F9O?0G5G|u#^CX9F}0r+B>pSPrmEbA&>#0y8z;KI-X z8K^15)|RHL(QrlENNp?6C+|hlqLXAONH3oor4x%XRIMlsjDk&Spf7Yi>I(CE@z`!8 z76YmcW$s8vy{ve`{Bp^4a} zkC6F*amq7rl`!faDB6l{;(t8MU#MX=4z5gJI1gRilglM)hk$P){&$k zj02@tqkir^?|mA(dxv=Nf%A9wDTc3yk>mpEnmU&pvX2?T;&p{uONwo`e}vn2?qJx9 zu)17VF-T#EpZNR#)zSYCO4|F!|HtEgqxKFwa+&cw|4m)dsF&c@RtIMovgjq~4USNv z!*8wtk;!W@tg&{KgRabEK>?ssX zrR^e(&@c8FCr--y$YMj}&Q|V%$S94`=S-&7^aXWj)T~r#d!%O)@==g z{T^O;egg}0Eu6pjAZ)9OlPBi!%u^5GwHF@5&8x4#_Xe;_hUi-+<6zbsDR;4Z=!i4H z#Ib$+R715`#i_LwR9r`zk4GMP1n15@Afjy=U);KN2mkD6eildFLlvkiy0Yy3%|Cl- zjb9{o`<(c8Ovra48da+_F)|};Zf;_0YYT(X04J7K;1(-c z(5*tlW<{JIbrFwLJ{o=X85tdEfT3eLqs;Fxr-O(}3OuHB>O=n6}O_S!IO{LJ`avCn}mixq<+iwt-@~ zigLLqYrf+?rVvvz#w3ifyj%jsTi>-Nnw{u4u{frj3A9MgnOvC{XtnX|Z&G zG>yC%y~uiHD03QJ2A_#ILndNpOk)mRLeH61M&k(?Byrwm6;Lmf#jrx+Wx~viC_DIT zqEnhY8&laI1krbFiM5b5z#rdp&vQVVh<>nIaO9aHCEnCau=5t&d0f2%7-Wz~9FLeLqrQ?)cotAnAz-jFBo``wVfUmRN$i z^GeH%4Eg4>LrSXX^zu5Mdg^IB_4rfh_PXeFj!-IBM5oXDkgs8$+C&%zhB!*L+Xq-# zUd7NGNzId2$?eKLnLjtX5$e>z*XuGMrjxd0+Eq%ZH(ac)t<0clX=3*ecLc??^EEM8 zp^GtxD@ht)5_{0iJbIlWdi^%G*4t>-6}y4=x$)=hQ}>T=zvF(R_6|HI;S}LSlf{+= z2IOIG1JhNI)_%~wgD6N*ugpncW}*iek2v+DBbgF;GiyXNAZe`JmXJHPMpg;=3Vk94 z;MC$8<`!3k`dBGCDr}Q_Fuo=cHIL|lb~e^ACFM=GM2A7TiY+!&GjZB93%OQW1TC}Y z=fNiN(wkd&`|?#RuUv#%C}ecE5L#M>O)3lVBi+UI>o>4=as{<|J)<@Px3{s!%A~i1ymJvi`>1n}xMZ2Z9dvch~WO5B??4 z)URwiuuCRFFTl>x26DLqG}}RVK=-#Cw4@}>u_nQ=1EDqXJP_g3Qy)PTie4xV2dFk0 z-~}(|3o^B%iNSR0+MK!cBZh3k9_2#_{qO{Mke!by!Z`7;SjG}dIP)TBfR^eNAcv@C*T=l zY#r?4jThg>OJBT#i|?yT_;ZfM$kZ0`^R;VltE|3UPMXi9#U|$F7I67GUH=jlQzar1 zLz+Cz)U(DTluelhfhK3f7i)M;&+Lyi6YqQWQGE2H-+_}SPl`1;slc^z&3oYg6zOYVU-d=^&rlKy>e>P8Hs>4VODd60qi_$^~R^CR*^)ReeV6L~Z z!-+8U6>Ns4NmgK|2tA;ucja@A2Xw2P84QdR@@7s^synC^N^t0wYMMeJ+iSN`@k&xq zx+PmRjez8pO~L^EXpF#55bDV>nnAjzM2FZ0v?Mc2$a3v?tt0KOO@lbn39=bw<{GIK zu4yt7dwy*?LOkkX0#6F^dk;43q$zU9vw3?1S1w(~m8}=BveHDO%Ent6=fpvPk)c9_ zrGzVin5?u>X>5$iE)Pre6 zVl|)A7GKU+D%ULzdeG9CcIH9x|dG7FV^B??gvRK z42OEz5+;BG)Rc2C2Sr@hc(0SfXtJOlyO?O9YN&}Q*+XDb5}NnyP`4_zq!A1UqBUyR z4P3dtE}`zU+vih8jn9SCXVAO$DmK=yBTXFynu$ik!Qik>15`ObS}vAng7-V71PO77J`yi!d{d|#CqOL zp_K|KxvJ6NfYHtz4ZXmZ<|qgv*&}!x>Y2qnsq7ODPVTwyB29;DPq9|6qEI_6`wWqw z;n;(#seu1jOQdP%fM)NYqlOuJ2%l!ENhkvy8gr!H1S78}=a)kviQ$P|(FccYCaI}Q zRA@X0nhZyGI9M3RC^qXbEn5aelTm=dWPm6g%DTwc)4*$*BeEQdArc7~jL0*QJqO8D z?y;FcPMSU2Z0gF@s?fUGgz#e48PicJh{n&*43)2EtAP&b))HYd7$YC&F%B#gsL^#A zbV)%`cR-nYY{j6hRl!IV#Wz$m%^*G!BONEP5k?{6U>A8u1xS}t4a4?8nV)c&-RZ!g z@fK;bx{hk8fydtU7}nNKNIvMUw<%^RW;rK|c%@oH!7busxr|z~iC(X(G^puq?CeK^ zGWLfa2JKBjMIFXv3?_*D5S4NTt@(NMyM1i$?+DW&iWX(>+uZD-TDC>zK+~A5J9n_S zw5H6Yf+70dEsSUmW~kVoFrJD7>8r0@LT5+{rD}RL?-1eeKA3j@P{;j7?HzbTaguZM z1#x>!!ce%(cj6f5kw-}<R!6uBgU!=S`?0^b{9n#&2zFP-MZ zP(;>Wq7V91oEf<=QxMEVe>KvHQKSwioZw)0Uz#0qv}d8$ zvY=#_ij;vA%gqoC~Ry z<0Ss-?OXW2f8iH#^R;c%OD3F^rc6Nj-SY;E7!5l+TZmpwap8gUn4e!jQNlJS^4;kO z73r?BAr_luT@Vybe~GNkbZ(yS&|>3BL2=@5fL5)KBC5LnkFn zb7ONKfAEOLFp`{JDjVc!F4QU!yPp)DV^l|CZB~cs&5va>B6=aAe5MrfFx}xXHRF~7bzxSX0eSF7_7ik_2Ybp9wNl5)H3yEt z;%ST_Ly~pXNGMa3RG!m?W(D)DI-EvHbR}VIppv&FR)URNv7zXE{rv-&Jr7W$9 zqRi77^*TG)tPyQlrd#P;Lk(WSMD88Y^U)T2(!rEEUS{`AGs>gLjWoEnDMJ(9XWi}q zoiM;~$b0v0xd{9P|h!dv) zO;2RNlrOlnDnU$2rk<1MWqI`kq98`R>7xsEzS4wY@#?)sL07Wd=z6R26V)@!&*yT0 z7BQf=EV*_e1~Lfa6ra}ehTTUTIbwJ*^mdVYCN{Tsu(rCQoaWM4sPK?$Sw|cXh4z>? zi|G4ZiLjU*)U2giB$&ZPq8n){x*M)n>}0N8ej7(eZ8V#6nZ3J(zxG#t7&l*Q z;@WF3;!7_-{~xdklalAD37O8W#>;+>$lbnriKU}tCkT1ZVvK63hKCzXEX>c#z1yco zZJLOw3bOm(Fd4=?R=Pbt_c`V4*-vL-@ORO9?ioDa-1iJ46>S{EP$U}*+2*mUB*T)u zsE07;$XY~Hnp&n>Sv{N5jHOUo^z5Fe83(hwNGf3VTN1{|r0U9WXq-r+#?L)l4+RZQ z644X$bG2$sxYU`#z$8pW_p8=9rPuSs5iwBcwqe82B8=lu_INFe@Zp+5bS_&NMF&60 z%#?^K^#??d~4Z{+IROAQ2Sk`V*u%{W)C+i=c8A;^SaQ+On?K%{n;;hG$HMA$#N3a8dUmqWQu z2mAYnc;Uqtu(^2$k3RY^zT-Q-3vXY!fpEBiYE?aty`Yb^lc&&b@4y>yD7*>Ft|6B* zB>=qL*~S}}UPF7Q2e(v3F!lstv>jW~jPD=c_6P1aYVXV=G6p?b^MmekMVI_QjALML z+r!$)CDim72kURc4FG51H1wJwB2Dj%&2ok7GqsgfbSH!~wL_LYjDBw9Pb1 zr08PKk8P(i4WuYHNE2~q8%;(y*tmhFV`K5;X}IOGEX023K})7E3#1Ds_gFipf__Pp zrYQj#3t&<=-hAx_KKJi`4~@zq8nq^p+!&ELm2l(4K0*+ra19&f*udV#A>RD@Yj6uy zoH((H-q6GC%bO?|Ej;qXDr$`ioT4fuONs<4DG&K>6fY0(rhUFn$1mzem-cYGA@efBA( zMVhMXM>;8aKy1!uDCoTh-PUxyg5I!?R=5m{PJh}F>a{%bg+K~Z?!hcLpZnrhaOJgE z5mta&$we_JAYdh652W!S?M^uz+Q;-qMWs&n85Q+zF%%36W(5+0cxFy6>XA=&Nvy70qY!4$L6=UmNsN+d z%6;r)8FnfMFjd1LQmT+*l*A~ey8LX$C9oh1Lrv(v>aJe+001BWNklqe0En%yKq6xc=}ttyU{&EG^4*C>32e^{S$?I+}d0R11ZMsp(@?(Au=F zx6unj8q!gnC>Gm~KKled_RJF~H>$wAhUNJN9-UvokNx%k5-)!Kb7=kGN3gz~B4-9* znnLgB5VlzrbYVITq325Sd?6i5vFN1%hQSVo;i{~mg<27s6-a!6se!UNCr*x$wlB|iy*UpAhBQGZR@YQewReE^Ye&#yU(6^N|};JEY=s%}y#v z#b=iG#g8(a+h`B&K-; z!aR3mosDJfO;n7Bog&ZhX6g{fDky(ukD?H6TZSoG-h_ytlNjxzF8aeZ%&G|=0mj{t zeD6dXiY`v4u2RfPa@aqNBzMnF+A!iedXpn)RwQvBB)SG2wH8EVQJ^IIBb(r8#E);I zWETJXDS< zl4rQGwtz~lB11Hy#>KLW)9C`5RTrE4hq87Kmlknqp)P?QhZmNxdpJR{UJ+V59Vb8W ziSI_S?4UsntEOXZ?KEojvc&vs-MWUu&D)6mLxkfIa&&QaOvF(aQ_aEdjZM6E=^FOi z0}RMWNkh0Gx|~BAxDt_b|G0nPexvrzJo0wI({qN%WjM9ew226jcPSnp>TruSVE+i) zcizM_iZO4kAz!JB1ve+*gxpihQf_LTRMCQ;^cGE7^m1ZES|n|0bwf?+iQ>%ii^!?& z(RtAG@Z2B#A0J*uz(xnhG&J_OHri)XHx@t$Vxs__=@e?{Itf zCZ2k94Vu}{qHa}qC5uSz40KQAFK^wsgEdHTKB+TBLKdkwu& zN8GX&7UxhcHbl44sJ6tUMslWdIk7SRozMO*q9hb|E4~$f24vDZg=s4j3r?Hq9Qe7< z|AFWU&#Ybm!A>?ww7e0-Vyaxkl6&%)gld}|sWfoP7>7jb8nq5DkNxPR10l%V*UkFYR8P9H~2^kxP~RG|ecY z44t7ihg0%fHW&a&QSR6~Uxrs5FiIGP}$^=4V})u?YHD*eVAx6tc# zRdrO4VWiIfyOmPHZVK#(8+4S*TU3}(ACckkQV>9e1cdYqC#iJ&lm)^4~s*%|8jdG5JqRovA@skCIs^vPGA z!Qc3~&*NYHtN#;U`Muv!0o+<|AUK@qb@sQ5#GY~=F{kP+L#S* zVP_c0q-A}*gEVDM({A;uG340}#&!<_u3~7NSrnNBXR?qTJJw*s9y`iE7n= zv&C6lK6eGb{C9o@S-nKZYbe`}=S-NVOJgcp>(>;o5~w*Lg41jF6~)3Pl!zG{ucQ4D z_D_yb5_6?9Oy&p)-+B>M7 zva0iDamfji+yTj43%SC`n%HYveD5MvaMmfurW`=H`@9IJ|gVDsdvv5%s;1{Td` zXX%nk7K+R!DkRTP&Kp9u42!@*uhm7lnj@kK7xM~Tt8$by+IOyDTMoW)6+2Q?`nkG! zpSB5tUr?`!m`aP*YN|n$)|B+zFw}i)HvFZ#FcG~|nT0{tXj;bCMI={96^C_kCU?w5 zxP4k!GMib15G?e{e2zJQ=JyeCONv-)D^F~N(#xMUN!1h@2U*g0C%AX#7{|wlI+uH` zI-Ht=>F@+rT*p(-K8Jp9p!>kjs^43|>R^r5FG9i392{Wh;l8Z?HwPUwJr7r(zJkM@ z6GVA}ey@j(jSXD9ctHaU)<9{Jm~(@4>NHZL$~tQ{8HzIQ)qRA~5oVJk>>nNCgBu69 zyElSmb&!O0pa_-}T;LFY_O_Hn!l)W{jn3Re;ULrIA-9R_&kdk^s0PiPWWCuxF%C`67<*WGHzxtoy%(-)h-!4;+2ciQQTX1JtN9izz2{kP%+jDOE*RJ2d zpZ?ibaB=%8RyMm5x^u#4)IfzMc03qTbHa&Y#(MqkJJ+%E@DZpNo{vVF0do9UMATgc z6|Eyx0Zg=oLAISf@aX<6{K@cvXh}Q=gOeFLZd-Qhma0Efs44tAvXpV8HjNQEHCy8R zWA`pvnsBx_>xb9u;Nk8*Zd|{Ct5>gzMj|Sc?cl{1KaH>a&e!nFbDvg&#zK$>TQClh zhBc%vn7?+$cV-h1yle&Lz_KtaSsWyQ|G)IbiN zfkf-gs^HM23^ZF!CXojkJ`~hJVWj&h>ImUXUEp&>s4qEo}^(=G`i@z`5M$^{;)oHd778$NzzpjG+>gB5n>s?=8l|F;h zf2ZDo@0()f)coW0O7qhOFhqvNa=WW^Pfm#C%u?&sUQ!|X9RihHOARXr6D*GS8z!zR zTI0hVgQzh}iLJ1en;_V*az-5JMTumy={3h~zCil=n#ZaN|rxuZ_ zO$J!AULmciUIo#b^-@PMnjlME(RvC}r81GM$iPD0$Poob7`X@yQf%F~i#0n&`9d-+2#dXo;ScT0Vi4O3xG{E+VX_U2JUy@Lf~L zS+;}qc85GJBfJknSWclr%yUjTurAqiE*%{kGAn@af<}evh0+J+c}WIXZew_e8||JJ|8h4WA2^FQ}R_%$1wy#{Uu)Gew^y9DK3om~H&pmTVdSSbQ zR~u!Ci)Yr*^KvfG07sIb^LLdC0RWtlXGpO=nXRq+gi( zDkGn~DRW_Nq6@mRF-n;$#=~{`$gH^rkh=FR4~=vKeyxoxoiB4Nmm$s7N65V=q9Bkz z*v-t|Q`D*m6k~X%dtljc;~XLN8KoKQiFO)S!vg*=n$&Qf!se}deR}_vD_Sv|Y?q&R zUSK}Ykxep$#RzfSLMV&Q2;bU!4O!_T`solazVxCpS*g2iv>R&NT8@K_!76UQ|32Qm z_7?J|FX77h%UD_MV{7A_?i*P?L{YilYhBpJQ9GE;QIsKq*$C6giC)`$62huy*q`5) zLC)^Z0dC#=01pmkqBu_EuGx|qn#1SHG4xnj#Xh-y^%Y=^mcLP+?uA7$H4>S9|Q>E66cJWQBvSYv^rh zK1W$Zh*RT@X;%fgT{sfaA0CcOHW(Y#yg;Mbg5w$?cj1gQIp&q*sSpR+^`dr4nxe*M zZGC{7-?;_bYQu6T$RcQ(NOP0x@4t_lyu-0>grhIVwwi=gvckbZ+{rk9j^`e@CJ9lo1VuPwMpiYk0@$u+~{%B}T zgjG;y2?+HO3%!(8Y2*wd zP^iF+CXsGd9@57C-b^5euV;<$+l;^+6P4cacvA%H*i)|LCc`-PFq?JHp$EaW7Gn5 zjt*MJi_fkpW`NBi9a10eJjD46XR*GqA%vWCQR-4?w4)GcR;Dp;{^BcgMWCt6KmBL_JHGzfHxcab zRW>vx(snND&1UrdyP*kQ(>WA5){79kmj=x%q>Z#A&l?~6i9)Pzo; z7tUs?Q&%qGZ~upX9SOCF$gx7Cl-Bi*eX7xoBB79-idxNE zLt`4cgAzIA(lN+utqQ}-D>poYbY={Dwi*U`LWXX)k0>4C_U#Yw;!Dq~A!HL`RSuAg zrcA%TTs(@_azke0RxFbE=uBBr>)}*i$8$_h8|GWMu8xL7j88%wO-87iF43oRmi!k zMyJv8B@>`o5@T$tC9a~paE#k4wTMT@#~O}u&tNkmWJ_^nHj>2bt3+$KcXBwx^CU|W zq*a5k7;?!TzSR<4bTm3r&A{hELqo1-o{x*CifD3?sScp_%ytU}rW4J}%)u=b(70Wi zdrNIuy|6?>C7YmD<<)t)`FHDbuC)bk;Pa3t4=T(+QQzoh+r;xcP9ZsASINXi#MsY(MY};v} z*J@)N#>gJtF$d_m6}caEI@}yf6oDn{c%n|-wg)G&@cz9UxH-KcyYa29O+#m#PSNgk zRB+V1x|+Jt;UU7K1DqTk>foUu{cGR&hH`nfx3^`_U!p?Ks*`|+3Tc+_-@J`iU;Q?| z^2h%M-~QI?_=zw46gqtuQx&S*m_y8MRE^dIE_ErWBe&|Pky1jvRB2(w_K`AZHYp5c zlNu-KHey*f&)Cq`s*{imlc>~&-u9b7+rsQ*BAeuPlL2EEDvdaN9=^1{_g%Q0?$vA+ zs|~k~vu8JiI3ADousX0YXxbR`TgYpPrj)x6?qYqtjc#j2Q}~d%YRMF~yJ`%I(?kUm zkrWSJ<;7X)u{ilnO!Fkcw(Tgyl>}Dg`pT>rEBlKL5)T|AIz*Dfbf!aI)DzKy zOmRj>OuHVVWA}A%5=9N-xf){{7ZAa-^AgFlL=?n8XNohc&tiM~947OToTp0a6Ig&G zb+{h2RRJ~!8+hgE&mbE**uDM$=nnMSSuDA(33p|IyP&(WS?~D+Jc=gpBiA(Z61)d+ z_yNh29V$#<8|vfosyKK_9wUlEIrq`bBE4V3{{9HBzy3WHC@f5j5r%1+nqD8SPp8C* zoVN^0a{6OA9ac?HQREEma$afVO!2a4nq|rD=Cb=1kL$5Zxj_-BHs*VIpo*4i`&G?q z?7J;FMY@$MTdLQxK>YZ8_U zw%t%OW9Xx?hB=Lbh8;4>iCE>y^J-E~{GqAm80 zkF{nxt&XB0PR2t_j{*%?JgcilyjG!bj7liyC1#Tp`_`_k`d3%`2!aNN!&v$}r;x44 zV*$YnEYHySNXgWUJe|VvI!pQ=T~QbJfG>NVr)W0XNSW=HB>2gn{1T4R81KGw4cG3! zhj{AXowsh|(St*r?QG)wi=Rc`8(>1QAA%|yYSE;{r_@iP1XYJmnsm$RCr{@{0iPgehQ08KgQNdfgc9>eidxt6-s z@N2QI7Z=^}LZzMs@SFmzx`kfa#rMAdCI;&rT)Fx@Hda>Pc+^SN#GW9nSI?wfz%A=2 z9YfQWc}HH+_iKgBuntBO%;HF)!;}ZmM2q?}L$QP+6n1vTIM@r2mL5vPyH1H@87~-e(w#TrKVq$)pio5%bBa-iO62zjBNdok$XaEI%n(dZ+fiORIfg`|0i+mx$iPA88Cly<_Si_Z@V7nw<>cq#2@`cgl_^=1XIjc@fK%l1b=6 zI;R9rO?T>cWsFjwV;n0{M=>XSjLyru4**h7GjXuv^C2az4#b+I3j5g^-u3z@1xesVpz z@T5`uxL$?HGODJ>++5|JWC2rJHn*796T!XUqkH}g+=DSnzk@pu-o-2&C{O0hnafz& z*wmyZpNG<})fsYG%h9GKEe}g(s>~x}>)mXbgK%$#7$pu44^&jY`T93;|7Z`N{N&4U zEFUZV9-jZi3(68vz;=F`d&W3{ci(*rfB46LfH&T_fxU;vxOaaSKk*Y^LaSpTjz&7| z%?9jH0bvS~v=D{F;aN>otuVZC77_gS-11OHA-y61J20N-g)3*vVzGibX^Rt4YuMCK zljB;x3gDL4HhDM6V;dibm~o6?|3prYi|MYo{=SRZJiewLwYg`Z**1=+MOq>)VO(@Q7|o9ha7 zVJGMMhO)y@ZWc1dV;U-IE~#}}T+0k5*Vc5LlW&ID(jAh>6b%LVx}&*qa9dbna0*Ok z(WcunaRX_thzVv#G5?26hUYcWZnrD#s4*{L7`g1u^Hc^1qVlzTL`AAxF;7l;=KXPC zpqwhp&^tZX$HvAPG+RA1!cbFuh44D2+2!ztS%St{(>2rVl=Mxe-F{b z#m34uo__Xubh{ln$DQm>wC7D`2bCUl@!98Uw)sN6`s1(Y^kTz8%F{fU3IRzKer)n1 zsm_)2V$JB>q{&epnQ4B6tXjqlMZv+94vJ<6LcSD}l3;)TMBlKvwu1Gw-l;CA3W#R0 zOG+|Ps9Md$m5`Od0U1&K1(QJ_RrTNbwfvequh3GfzRXG^dXgt53zN+nso%3O!i}8= zxbgliyz%|FIHwX?Y+G5iz0$tLWKB?W#^zkQ&`Q@QQ>m(X^=uoRMjuv@Yi}a8kp>;V z^Si%;{^mtEVT#yEa5SaCMTUOE!p6WuR!@;06+pLxX=+Oo+NT9nFN2er+^_qSiJERA zE^%mdOI_`S5t@w_B0eYXDvpjr*j9mYe24@;kDqwubAVgm-1Zi>w>GhJ`xeHtj7ExR z^*n5>Z{g`nml5%2{m~yOLyp;Wi?w1qo+#)-3_Z9ogBgS1r&^Ch*x0~na8<%&3G(qEs+N$h zouk+&bdET+QYd001BWNkl+Z&Ud;PWg{Fv97)=6@ywrDtZ@r0UPBwAn z>UpefTtKbcMuIs$xc-;08(rMJy@TzG7t!vn>J3sz-|-#v*SlER=)!Nx*z*A2>EnUi&KK(gSK8UChL2I=-DmHoO5cSx3^Z?hdzk_eQ`fWVAvxnW` zJ{}zGV70r2^XISP`4>I~H|L=`(&1!Txzhb@j{#x@iqz;r$R49X2RCFM4BC#_e5D0q z1cuk1H!!!->JW$*8Og>%*)bw_cN)R%7zB!_O~Y%6PRGM-A$F!V$tfCY(B{(#f?%$q zi$xXuYMkvpFSu33)k7@ zv(La{!CpA1)3LK~6>zgW;aV-dCsOAqYA4mhTCm&fihcJ{nqr)af+Ng@A9Rh{s#u>b(IN)TF6{hy*b0%e z06*y~Zi0WttTva0JU!uxe5tp{EaR?b7Ebfjq=NJsx>{;bn;Yy?sGOnxIJpTh=VA+k zIV?65j%N%xXw$dsHJM#>`c{lRwT8d260_B^VP#1MMwU zpYK$N8yf&-<$d@2Z($x6Sl?K~`Li4PI{q9!mn`Hb^SQ83&vnr7J>3uPH;?$9iO_is zbbB4SweodP!$@i$Djm|C&ALruq%HBUh-{$%lV;+rRV*}p6*BM6J z_BkE>s%o0d14gRQ*dly5$Ij6%3VVtUYVZiRc{N-;dk$C6UdH#Gx8d0h6j2D*Zpavd zdw+Xt3!B^9xOZ@9jHP61Gee_kVU)T;6gB*jQ>25`&0%F$)i}AZVwzoWfM_h{shgT+ z5#|aQCu^jQ(QyK}6Qj{%z9)6XR;hsvnGHPFn{ET!+Ow!YHA(J+8lINF=FD_S)fW+0=fOl;y!7+XQt z=6RqjIYw4kp3w)|(yaNI933crrPnlP>xhvXi(J);x)@It0I7dZW3!iMWv2VVd#C-` zDKzk9qbYQ?MonF*Jyy@CPsB9Qxnvc-Vj%_|&CC+i+?qi&Eo&K;KjWyEi=!c zPck%#G?pin+j*#q5SfQZV4h<-i}3n)U&q$=MVvi<4&m)vNH=^E?zXEVP&EjIu9Mp=(u-$bd1-&{dIip^{?W_JMZA`?On9oCRVrC@u`miuUL_MT7h{hA7_;C}gxyEU7;q-`_i#Uo5-6S?4uM{nFB45b>bYRx1XynJQ;xTlD zhutFnmIz8n3u(WuY#+CpVmf|X`V&$zSjgzTnS@>AO6YJ(XTv2mCCBnNu=u22ffSXq zTj%A3x3|Bm!l~cw$}z3P=~O$I1VRv2R<^2qEt63t+R6`Eb~Ilg`bRBd%`V`%O*J2) zmXR*TEWA9$$>apz`OY`+@Bi%o!R2S3$9y-&xxqO!nHN=?2yG;7h-VVp+R1E=h}mt4 zjmwvx!O#8TFQUjJ1k))JX4}+C(XvPvVOi<94FnN&O%se~b(}x<47$w@e)fx>#n=Dk z@1hxJ81y$_&0W!AI<21Gv!?uIiPhB=p%CMk#Xzhu-e{C8sXnB&av0!NUCpBCV?kH| zn?Pj0qfRf4VAEx-Oi?iJh69Vt6z*)e*_^O2QZue%1(ngwDLUsWfYtnS_Es`=M;%Osz2|b^))zx)1P{+q7$dV~$NhIS0(sdbxzO}i9jm<4h;>WWTf!;f#3fg)tEZVYs zIX|e*u{!M)5rJq-5KldX2p1Qk?iCCD&*sjr=2J?x~3kAAYuWNH-9s36bzV_;0pxg1$ zUE4y3)XvxpW0-Sj#~GqggvLfsj*v8uaQwQEv^X+4C1x3(y|jsQ8ync$-^cI&!5`rD z@4byLeetKX?nktMw=E%|@4f#%-lyTfY>bu03NEa#qwcxr^}0BC_z2&7?@jF8yoar` z7tp1BxaVt4(S%{|{s`mI5r#*HSZn(@3QzF&{?31bFaG$C3H7^q=K;R)_BHGs>?18g z6iKEv_s0A8u#rYMci|!@JBF5R+e#HcmZ)$~@nJd^pHrHQ$jP;yAhZmMNcUF+ra53i zKFg;_trEwF#~7ZRV9L*(a8|vIQ4(V?h>+Sgrqh%e1PJzri*XICj*n4rWSmCv5XrEI zDKp)osTp8)R*=kN3`yT(WuNchT>l~>Hg+vbXfNISnvFURkB@P5G{VVb1i#_JZ#I#{ z$9TB+Q2O9i&%>GRZ8+E7Gcgga*|Ru6<5AVHJU#DTy={<0%>!j?Yxc7gOVceZ`XZgM z7F>_zw}U83gzOi_S959T!S&8(nE%XuPQ%5Pp*AwNi_HxOj2!kc6q(OD(Orh%6Llhw zP=+o<%92z~bzWtc@iXaoEjcZQfpKcg)!d+R*|qd@7#>}agj_71$(qh>bGCX*^Ahg+ z94HcLOQQtdpkucfA_Z*`}e3k{LYT6GgVu zYwHXQ8TaEhjMhBQs=-9A^DRv{F zOR?&$X`?6IiA5wQ$(hS(R~xm|#qPr+B*O*{#sOL#4`+I-(wc?2h1S3nad$ts1J})P z>sE%A)iQY{;`CdZz&E>X^g2BZ1_L>qt!!+A`_r9!_YrW?PcwiVYS0+KeCOsJeDk}n zVHOQR{HWVn$KUv=PXe_bk}{EHFU2KsFq5EK8C4Tk*4uT5(?hf2HZ2==Yz~ABX8MI9 z(m_$P3_U{grb^2;(Z4NS`8eSXpmiKAXxlj^+!t-bpC40Zzd+4Rk$)ma`ZiPEO!98+wgwBFI-~AaXjM zV0L(n*S`5WMh7#5TXQ`3ndkAPzxi``1AKARfy&O((6v}-@Ry^80be+JXx zA?Bgc9;OyGAPpgEJb;)T=r&idGT20`)4*(+qTem#+U3ghEfb}$ zw)6t1q1AU)obzC8w;deb+edG;sp)PU|KRgx3Us4Ebfr`@;(F4=B03_TxR@7)?lYZE z^*wBMTLU6CJvgzCW@_4Vk7ge%0*Fe_Q(3G#a^zYh19>XG=6Ur(Y;)gLi>3^hFR?I4 zUbO$B(%I&p#)Iz$^&y z>R)^l-}~0L@zhh#Y+NsK1gxu{{boHUo+*S?99(a6wy9Sgli9i4g??QIXk zlK>BI-%;T|2}3l7J;ak3!Dxt1ql?4I1c%2n?ZGQO7boKr?B6}X*S`1)&U6O2cHZoph;g; zpjmIj=W|VJwA04BJJ)e;YYSia;^&duFDfT%a$>=x`C>+ik? zv^eCc;pq5CNYR_`?BJcZZee%t5SuG0*4I~*)fXI2@UQ>mPw=U8=kW0GNbg&XRAmst zwb9j@2yx-!1$28|>^%HH?vXkhIJBudLen0<_^kVuLH(!iv&vqqfXiWTL9{%>oWt6>57(|CEScw)NlPg9NkX68x)4Od z`weGBCNZscQ@^7u&A#M1ZIs;StvPDB53ko!Q|snNnMeSvkldgp6R3HRib2${>M}_I z8^UBHJ@uT%DrCjP%pOeSJlZTg?Q2;Gw44@3WTD^(4X&PCKbqH*M(tyG5z$!fGraLo zmilzHYSHC|aJew-4t9_MI4w-5l-^CC7Cg}tj zCsGVmBvpqE3TZW-tHW)5wU3Rnmob@5aqH&$816m7!$*%W3u2){+)`UD52MKp&8~}X z(?=91%7Y@XFqwzi*fP>Nc(~UyHBj2YbDE)esb&;adxoccZysx*9t+uH(^AMhvb~$DlWm%Nc2yMCrz3Qo=}g z@^qjZ4UvTg#mbzzSx%L|RaV8e(X34;WAytg5`72rnVPx5U{kcmc`(DxTh~?0e(E!y z!o|y1u)Vd7%jYlRwYT3;kh#tFnP^m{m-0kSYN65YVgKMBuKnd6%4pX(0JfTPIZGpI zDe7qYJp}0(H44e|5VbNxnJ3Z}6w@L6HjCE;8D_BUx;{73-D=h;(n*W{e$Q3dE77Qx zl|C%Dz{&B63UD4^bizVxiex!Ly2gr`pQWtZEochP>FE4$hW4gs0%9M#DE8)G>o1>2 zG!Mo3Uw~)4&&+DdAJfknDo-`BEvw&M7;14zC7oq5mH7MFeDN>$BN<(`^e{CQ1o=mF zZfxY(1X>G2Ji5VA3r0f%O}cGqLK#Rs93IOueLNiNeRq2;ea+c(=R|Rv&1aY(gzI=F ze~dI*%N4Cjuba9?q*(+vuNolg zU#sbDR=H3T-DRU)+D5;YB$1kAQhVvJ>3Y8IWs;Rbr`Ti`ZVlOCA?tC4NfV>BZ8eD2 zcvfXKrmFev1>7kLWW3BmbC=xF4~M;`(*HnBb&!S_cr8pxFHUB7>E%!2nWvu;Ws_Q4 z-}CYFKmRj$>BXxUkLK7uvx!%~^A|Xr>`Tbc&y>H9hJ~}Rkb^#7fj)1Iz zrfZ>5p_nsLi1{pAu5^5E5yNM=2wf=amYiYJ%H?$#TrT&&REQ*p8{9KSlL=;%87`hb zgJ1r|{|L`N|0(oV8$uPLun@AsqQ28}q)X+;KQCRBHCfM~>Dr<(=UJjPKOO~IlYY}N zMjq5xmSztL17k~HcWRhTLmd6&3vk!el&CBlo zA&!oYwNErU#&I_{lT7#(>Q<}XFC8eShlkR>5jj@3`a?9rAKFVRof+xYGU1_iJ!Js4 z$-g9Bl0z1&vWMhnVg`Q3mDKa9;TZ>KI%jJlUq}}&SMAgMIySVbDWq$2l%-}&bY1i3 zg(qf0l%(kNS6~+nE0?ZUClH%X4~Vl;!Pmsv91Q_1 zp?47+_)e)NlxQs12z9Ojp<9L~gR7i}+!(CMsTPAgdolr0{T zKGGo3L^Jn1%x3q|Z4#RAqt#uL`N1Tf=|Hq=4Foin2&EX&E=8Rh0uQ4sfaM(GV6=|+ zZr{W4aH!^sLfvk66<#yd)S0|)M+ORn=1l{}0R4HKA($KsX<@-3f`c2wO&6l1LWQkO zfiDl()H54ot0 zy4Q6Y4t5?qM8Ca(jTTX`2(G;%_e*Nz8oiEDZqb3V@DUeXSf!6F8Y3LF5gd$wdMpG@ zCvw9$8Zy+|&~WOaSYEsK7EVs4@Yb6s5UFsd`(~uq;TxM|=QJ0{tqLv{LT#&uxZp5i zj_04hswVogpZg-RB*2;NGr0WpQ!*=ILHzL14*uxNe}b=lxFdVFhfT&yUd=QI|-XlVA6RWH)*~!uX{6%g4dN9**`#DzIhRAX5_? z^LT_fY@Rx}ch78f0Wm7p;X% z?;|W5V^*OsM?+hy%nLg87Wyq$T2CICcR*=bPL#$F5EgCw3q%v=^-72=i>^W?< z`1{R3BGcfd)wf{B4q`j|kn1h?QmNI%B4xUJL)qbkZ1|C>=vn7*sIhxhlp+ zuE-odU!==sdXLoQrh45;Er892kne4t!l6z){UP*|C)bbU^`uez7+x&iyQD!;ClVOP zzEgYe%oG)}UFYePA|{P5Z>ccMXnS9bWLrKQoAApiE!_*-Y$7tCNDb9Nc{Bz|NTN`> zrQ>O!@JB~Fl$H)aZaLj{TY=0pYtUsiba;+}32_;;TLaV>6dS}YeNGj**rSSX{K@Ab4~tCg^*CL%x01s zJSSG>;H;1c{(OtZ2b`uSB#OXft1cYXO5Nk6n&{IUBcPc@X59a5r^NpLE*>6FFy4KD zyr?6|EeuaGtgfx$%H@mFl`-duC|kd~B6=j7PeZdY=$WRe%L$-u?656Em*Zr1V{1)X z2`mD{HN_p{jqiRJqwyiGT;0?`es|{{-hcmXJbE;P-$|qmqz<9R!DVIwjG3Fm2!b$8 zkc|%z9>&NVRSxi49kf?AMI*CCcC%Dy*PEW9XU=0p!4b+yf_ylaVG2K2+WF^xA)}Sy z@JLR7gZ?V+-M^1}H}9gbPS9PYGp4KQAuk5>X0v=5I&Aca#+sg50n+UnJSfu~)9Dd@ z>ZkrH{?R}B@A2-t@1ezPqGk&hE?!#dB%XcdIb1k*Ss~>6I}9B5G>xWSi;abJjx`A3 z;6-P$EY6J{sk+={z;$l4lsZ(c59uBszeqvNWPay9W)Em`e7Iio^c2D6`=mb7Nb60; z8qGuogT4$!6h6z)Yt+=#934G`?KBXF1rCQt2u8*Pz}EV8&2%|Wgi;)jM`~h8p%leZ z6ebtlm!8w}MqS9k-X8W2Mi?DcNTj`dxe8YWL)+(BMf)t28&?*lP&C?pS|1VI_1PD(Qa$muEBb)}>qPbb*l-IcXJQQ*gers?vwOdZH-+KX}- z!kMBs(+&PGqPDpBY&P4S(EtD-07*naRNAe&$y4HI>>G53pZVi-J%+GTzr)4nYzd_Zl;M2odKTdblzm@zl`8qS)EeyjBjhTH{97M9E;Bn!sv) z&UIzjnf-DR@n9BDq%%XPG|vs&T|Ol&ilw2hP#R+nlj(Q8^wKBsxzBt`xp9gGuuXoQ z)+`aRDpPIYoT+#LoO=D3e$6y)wPlZ1YQLl-W}#fWqH5Y|=5u5g9?=~(?HL^feeI*I zCh+-J>UjC(&)}Qix-P9{-LHu*tMehRf|)C$Dp!SkYII@E7Mh*5sC=Z(KmPO^YV?A( zXAD*rI;w(N;W(`f{7o@m_bfd#S#fHdW1a_tc=68;50A0)=tMd&gLGTS!;zY}2M-?L zsi&S2D#p*9hBDL9(5y!eZYYt+lchG6sJ+an7!2*zVcXT8JLYUQ&khF)w$>HbI^7e= z;^3!D-TI?PyNENR^CZoh)NOCIkA~lbO+ypQtQ8_~aviN2)#-eOPN%8;H!n`#D>dET zl9p};W{cDg>eI`|9f5hDxG$xTp&kT_@mKd9rA>qqB$(x`n5ud?JOUzgsA5Bid>#iKGZHr}K*)M#JM>?_+t zPKpQ|)LT77nS<$s?n#fN5lCI4Uxf-_9;nJ(DlJV71q2kSm|&dPhs-9idZ<&6l4R0( z9j6mb-8kh=(+NuW@EZ=Y!iAH1s4=M5=0+Nd2BHZ#DUX>(Vrq!srLfDE8Wv7jNsWw` z8{z5X$Z*U?!U7-9{h7*$KY&?bl#A3F3&H{1$9)B5`*@`a`@A zq#Yg33^IP>JKw|2n>R#{q-DM97TDR@5q-2QeQoNL=Xtgv(9x-|C^{xPi_KD4;?~Xk zc;Ur{D1UU{WOGQN%Z;fWfiI!zSj%(+{GZ6^rQkq+O{gD&jYhcz3iS(r0-tpNIkhrzi^ zqA-2$dvD;<#i#IRU;U=YA1f=Xs3!%6G;g7V-XewP2z`IWG&7Z(9*d3zqDIOGC$I1` z?CuWnOTY9VYjXT!KlVA?y?0v()*|c~RWbODZ+%Ne8XIaBH$`O{gG%p#h9l~rE>dnu z1wwHeH2wp&lhr!3fB4qeP;2iB4J|Zau$T7pt}r#TmfcF&UsQ$*c5Z$jGqZ?Dl13N= zGaMcssX&-bhH|BB*mXIK&E^w5pJ6eU@r~Q?F=vtH4Y)~$O&wcILTdtuXUC|9vw z4~r}Qta%g*!S-OR=q>40Qr>1HHB0LvCsj5zg^rqpD6NJaju3c_N329P)-(~I$y*j$ z3IeCrgRvN0s{zlB;bnbFO))!(P{b26Jx>cY_zXm5VPlzBBNUma4EH-!u?pr2f8gHh zUZxJLC_}67ps>40qhrwD^Zj?JYnidv|Ruy(m zB&E*1mU|5cJVhjjIXSgj5m4HuKW}syD5jy5f}WWs6-hKBAYi*Ghdre03s zOmtFG9mj`>Tq}v-Pw31znW5ip;v@`E*S^T2J<$Lvb8|SPsdBd~49caXC)Y;i#L9<6 z6%x#LMF@`gUHQ^dpJ;KT;mGuW?^&=#T-A-9ucDp+Wke(~GYF<>*0PFb9-3XXX|%&7 zKR;6S8chxVgl=%XxEb=qqU;87XyNGaPZ|iPC3R z){rIC=BA>(=TV3-icMx1^FaB2*znpl1VOB3;BYchd_A`Md{d@oj}{InXWrmhFhw7Aylc|*S|wIYN?fUe~upu1?%`r-HJ$@L?5J!#ZF zh8GJBZX$G~GXW^4p|AXN7J9Z<*M~>54sH-uWicIwN)y&b&41@qkpg$yFO(~i|G(2}BVv{lo!Qb1#+A1~K$<2SNYXKD z6XZ!n^@~kWOpb;$4?I9B8sfsqZ=p|7;Z{^SAa_BTG{i*W4n)gJ=QL(Tb6#48FZW)9 zRMB~^DqSjy#OXAjh9d2*bK1QXIGyTNgIj8@Tsbe1t6yNkMs_m7{heJ{^+Ys06f3ao z6If+SV(d8H!=0T8{@trzMz7n$(W3+1f0_Z%-HDTB9_IZ0Fia?I(s8sfwcw;W(Pv3J z|H-Wx9_-x4_ud-d@|p8!`dfJQ)vx2d-TP?GyEqxoVAq=JL|N?n{)YKELf^6xONx2yE`iAye1oROO(BIF@9uwT}_X<2D8Vs9K08@+4nse zef0Y+eD$k;j;Eh~RtV$ya~E;#owso3-fax}12mdV?CtHTxg!;c7UQIIDaUAD8H;e5 z>6(cxi`Rzr;igOlRz>kD7WVy*AwM6zSO>^Glv)cS3t3v_9_5Q4D0fq?R}D}|h>3EO zhXqr}auQusC=6dG9TFi5*;FPWlliesJ9yv|X=3h?iLap8-Ze;4o??7JW13_AbFmpAuY#ZT@TOchz`Z#EH)DqE_4-eG@g;em}Ss&79nh6Xb2;}@PEJlvsjZJySycdsOcZj<&@q+yR=r1quG!U7 ze)@gfi{?pyM!lo|eD&h9xO49=?(gj2>L;#Zr8ii9Es^ZqM~@U`apmeoc=f`V3Bfqo zlJ-nMpT%6Z;JjA7JJ}42i8_n0MXJ8^b~FgEO1*z(JJ$F)k;-S8S4?+4zE%ER!x+!B zODf2NsVV9sG96-L)Q}gbH+-3q1f|i^>T6w8PIvqzwkU4+At)DVyBhY$WWf{tjdW(M z_A*;q>YK}{kPin=!;o+XdI10--*uKg$aI_sTS$kW_{}zs2VrBa6aNKT^+BP6dD?m!>Xh0=F7&5uZdiQ ztQdhEXRK`4xRP5~u<90Cu2XF{jwBBm>D+YUZt*_H%UGEw*OTi>qxLbpT*t1$EK@Vh zp{61&VJR=fT-qlx$85?9R8Ff2ohMszngkfrgoU#bMd&s&X_awBEddW?W#Hs>@xy)E zs272LcAYL#EZV58aiPPSguqFXqLzDby+%dR2+U#Rx+q(9>7|OYvNC2PVwZ4@7_HJ` z=cF_Q@Cq_UuP(z40dh;l$}MLLOsi4<(zSUT5QP1 zk!$fg_!XjaRaUiM!rnx55Hm#1+6tS{# z#PdWJ#+pSQ&&INlH%0ZlLOX~U6)5>V?i{|fSTnjYAWvB>G6Xk7%W^QwGn_n1;kPW@ zfA9d`O5PIH&U2cWCS#N=w&Ixy+Ad9@WZbDTQGq0KUY>LOYC~Zq)v6Jv*yycFvzG1+ zl}*=j`)FEqG~EJ87@$SRy2uAYQ*;q+@{lwi&xhsK)o^F|1ZisH{s+5=(;ZP; zYAjx;$)jeFFNA^3v5ii*11qi}n?=azm{qSY(IBq%G_Rp+*G&Mlo8qnauHoK;4@9$@ zhXLMt|83Y=P19fY)pfTaEhY6g^OKpH8&Mv;igLuFAkN`%SMYYxz0e`*qEuXnD<cID!DD%vi5D6bi@Oa7MxHf8ut@}mma7PsB+&C_3FRJPF@jf@|E!3&| ziDTt`@m`bq#Kt0yebfs8hst#yV0K- zdYLP9D@I!Qu&q)$pe#sG?}unLEzD{CKio&HFx0oQ%5l1Xe+R$y8^4cxJI7dIWW;(0 zaX2+b1@BUa61ggM?E zaZw{V)6mRNEC&RrP6Iu=ZtiPn7$u=}O|*O9 zS=ew3%u)mGNJ`+^=(n2aw$?BUrlNYY0ZP@VLDXim?L=^683Kk)I6ja zI*UfnGL5M6X6xo>IL;z-@x#sFVlc+x+JgGHxMIgV^&V>}CxcZmNsSJg)ScOiQ%LEY z$>%W-Wk4jEXLSZ}<Dm0U#2`K)Fc!Z=a$ zPo&XGBV+Q8U=giQu;Ix$rK77`s0K|`4ZD1d z&SmsJq&t${!6_6s(r%mj7c;@HDELOJ=K7){675Ny9DdzZwoW0sVO=h3i=wpN@Gu|6 zXnS4#5K{7BX84#Kj?r}sGc_wrPKf=uHieV(xR9;1bhL??oGGh@Xob+RLe6eQ#aXwj zCUfzknY}_3jm>6WoKCq!&!CH2T72X)UHtyq@?8rtAd-@1=ywM~z|`zWC{d!n(j~bQ zlSu$?!(YzQ=w3ynEsBn{Nn2Kh1ZBq2PpRE(YCIP~Fpj*R5d|jg`g5FJep#Y z#@?5oYBBKMOe#fy(-D{_w!>iRR)YuGW^5sy)t`ZRqipJl| z!fWBJV47~z#B;A(n2khXgx;!ybQYuGcF`NGz^||4{H04O4%u8EAD!U-gZudB|LlLo z8*kshYWs{nxAAC%x>rNpKBY!-VUV7d%jn^w$Dy$S=j&!s$$OWCbAzI$W@T9k?tA+=J(0;^oosm%VB zYanG76|=kw6^F~3SGpO~4%>8LV(Y9(60?^UrJ=tsF1k~?c5e1IW;;3dl7jg7l~uGf zGBgaS>+!v|sETtl0Hc9IFbb=)sHG+ql}QMPB)|3LuVZ-sHEf@I37`J-r-fj)?JGD; zcktl;E_P=Rf!r4Y8pIqZFo_<(()mTCzAO?v+&Nax+qte|5L4wYdd6AQ2j)>?q|iW>A(o@yl)*+dd^699FU?hM z&H{#mhap0S7Du7(fyr!KG!DjKBBps2siQR_uC;2Pun;8?jt-CYJ2y60s^MF?)Sq&2 z5(IPYaU5hBdUuI0{P>UKi(mM0{KcPt6@o<)eXBex>g$0%nJ?9XnfOJTh;fH^7{X=_g=x4rRR0n z+WG90ZoZwnrzc>5!H@*N1d7=bLDE$!+eNulDp`JDS+Zw55F?>%9M z|Np*krA~*sbnyT(hw(f)WiFcvB}2S9APLRwFyww&+MtL{7|&zS-Bn$I(t+wO`EC8^ z8Z$F1@>eKaDf1I|SCY;gMHr2&o}yEweoq;fJ{)w0n#~diw@Ig;Y*wrtU-@{AjCe$7 zm!SwXnOFp?P%GAgc;{o|X4lp_abHS712N?wZ=gDnZT~E2NBJjwN;dNua$u zPDAvDBL&DmJ)RzT+Ngank2vb%^mLA)77Q~7j{X2go|lZ zaN(+Pws;po6{$#!vSm`fKI^lVW{ zo5muKw9_Lt6^OA(r^#}u=EnC&Xcq+*G|h@G0rlLy-@=JQxcQ9G)TjFLX*zbAq;uVk zQPXA!nm(#{hNMZ+-x*_ARL+W?=bjFFY^EQ>^M|Oi6umL+I2Q1mF^2xGY0+4K1v92c z3q|!f@vZ1gd4jqgni&F?7$w&bCu21EF^1U$!*){$DL2KMk&l~t z)XddcFUuL);tc-y860IZ3>|HrnmdNT2Hdpk8l$wY2Hl*h8fM)}xE^sb+ZP(IEv^m_`E?)MXv0}cloT;AJ8Ims}&e}Z6{pda)# zA&(NOhjLuLc@yK&0FMsO@c8jW;&|pr@!90}j^+V2uMDK`p|dQD_r)T?!Qlz~c%VE( zIV=tam`*E{ZKwi;1fHd{qTU#7@r+6%R@2ZTAp+IIpfL7bImvOPXaXA?aTtWqFw0Qx zY?-5In?3j-98;aD25zySS;SZxHt9aXK74B1(h_BsB5i1TV*{d{-5yR)rug)4|8p#x z0FNF`@wriMJS382x07mYRa2(r0QwuPGV6tpBEt&kLR>RM=;)UXNW5XuFqvw#fpT5h#f zm7xxL@aqB%oohSus5}?-jv?LD2XjEfoVKc-!*5#UK@oVQ$x)9%%MQ_ER0NS(_5sWZ z6Z?@G;xIZl3Q-+cO3PL|+IYNLPXkMHZWaiVKK!JS6J6-gARE*$ih&JDB04C?Skxf; z1G-HnDmWEx9-h*>edXRb&nw)0`wYM)_I9u9xuUsFK57t7OWfSMgqwf!XYtZUe+=*v z{Ka>^ia-AJ?_+v=ieYaT{l14s44EnK(^>H}HhXF}etynMA<%Y_NOW`*($=E_Rp9&=> zV$R`VvlOg}VH=A2=mo|MTGSpk_)J9Z*@|jJbdj}(%{6Han#ebu7uSBCGcs&)8&EY^ zXw9Cxp_e`j9b;)6Lk+&u9rMoaM~Nt))Xj0IP=vsAIv2f@*@@(uo`K9DuKAT2twg2r z>^S^POB;+)Tiqz4r;&y&V~i1lxQjqY+NK*QH&q~%j4=mvy3VV)Gki3Si$!J> z96vU>iqo%f@QHB+l@2TjI#)=TD=aObWSw9%tN^> zG@0&nSB;w87R&%89dNN+V78cw9z%37`<;6^uVaMlB^l|A(LHZkbMIGdch z$b))?c*&8E6=`57R7x63S)8ByF4=g^l7Dr#(O8E1jb4h)txfEXb}`ybvA@5Mvq#6c zbLSnM2Q}F91t$4a_VhFf@oV$YELCvZWSl=oO6;{OH*od#uGw)T#G{AzF*~c}0N7+1 zX4wprdo!V9M1mSuv~%+xj5cxe*(*o~A?D$UTrwwz3ruF2!s_$+nJA{0_Alf1?OWJ7 zIOarS)Bpe=07*naRKzm-4vvqOMsakGesmq2i%#k5_mI^>)Q^u(u(7d){oR3(HX?>; zKSZ@?Q7}&`jO{r>ql_R%L2PWTzVUT@?b~na{vY(V@Z68SfM;&q z!2I#4P^-eBr8G>aJMGPy`h*DY%8l{~`V?t{l0!A7c_H1ZQITqmyjgkIVguBrzxsxC zaqcoF3Olc*Z&45(%G9kF3Lme^3yY{((o`r&rD_UAIy7aj0YgLNgCe;)ks(4uCIk@_ zxtBJgYUst(iT{@?7^gFxDDGM?S8ryfX7F$1nfl$MH))|I66e+|^LwU-_k< z!*Blj-$xwBNRz%k;OWT;JTFv{{Rf}^UHs;M@E_vcckklbt&!~FdA~8wt;L2ReV!+m z&Zd{j(5aZtP&OmyI2`KyptFK^W*V%%YZQ_a1RZ_8UPpCoC|Qa*;{M7+R=SQv@?+n0 zetgAzJ~!5dL&u49@jglua|RstO)ppEg`A(M>w9o;Uu#Q5w_O>(#A@8AZ{^y=dvB8u zAWcY)PjEx#Oo6*c`FTBru`kQ5E>n~!o@$2LcN#h~JWA8PUXPkJbHA0jv<56R<>6qW z^nGW{G3!pjDvCh+B}1s2YNZP&YDIIc#Tk*TtM+%Ht&O^`SdWzFW-3HmefMbQT4j9a zT+F@q{3bNbz2%%Wnno-yJg>aw)F4uSCPgk$(9DKLWUpA(TjKO+X8&*BH<4bh%&Rrt z#rgkdYg=}lY1DGYbf-bistnwhezCQ|2cLPeYM8?ovuP9;!Jaw}Sv;Ek4?Ux# z3>FL2S>PJ#r^nOdX`}XmJnFjkX45H(vP8TV*z3Ec)?XKy2LAi{)&(wmgcD(`F~OAl zANuF^Nv)Y8!0kb706ot_Iu$(a@{{;6*a#>~hK&*3lA6*PfHX!gTQdg1nps1s>FdnV zzo_quWFnx$J70`wUtV8iH@Me{RwZ7zDlo93mnjexeN8M2y4CToJ!*sOwIk|GR3?^= z-c+eM|{ElVHwi9(3>V@ktzz_*4 zf1>8cT&jCQgUWV+>9oPH*GUi=E;>Ra&uG&(G<5!BY#OtzDWt9{^oX|c7qS{<=*hHz zT{)crNtvw+X3&JvaA-4esY;xzr@kjW2b;Qbb%#1?p6De{Tt|Av1tT>t%3sP&ljE;6 zmFB?bv*2q=WYknuzUZa(WI-)Hdby8s;c3gy+NF4mNikEQ;I9?C`tH0J ziKzBUA)x%9gs6=BnTRL{2New5Rt}zpTJz4yry1s+>245j;@Y)qayCm2?jxV&7^VYU zxpWy}Kf$BN2YC1}(qM$2W5x_a7ES%0o~6U%V-+5ypJ9J*7rXn{h32+6K(X`@4+hxo z#h9L)!Rti|rd|}e3ItIfqX;{DyYM_})EaD!u49_cmAf{Z9V6P?!s+A)-}~O17>zb% zDbD8c;lV>ahyA|ATLisEAP0hlq14QU;{=+f2E`IVx{WyMpY*_k>c#~`6CtV;g6#}sLJQ^BB%KIbc=2wKMlUrDj|vwy7bTpbh`TP)`E_K0M71F) z$k}3!dXzAkSw+#m{qOube&?V5pUC|&*c+w82*X~8qj&DXYsc_;-H8_aX2JcWP`_!M z#k|X;Qw+cwZJR|C2VT677=8_BZVVA)6uO%?|~=jL$a zD9P6R(Ot1vEHT>bgV-a7Ij8dzOtLdHr^ooQANfh#e)a{uciWocX?JVOkVSXhE?v63 z8W{e@Z~j9yYVX`V#m3GQTjQbLH*Y4`*&E{awHxTUeTf6HYghKQ2L#;Pnh2Xb2Xi7Z zp)KpwBv~pl0>oPLeV+((jI!;kaZ`g5_NB93_!bAFj}r$7GIL2ZbBYFO5IV=g0m^2M zC9lJu z)P`#nX7!RKgy^?=v(o~P507n7M*Nh+uQtb{lLz>y|6!dMW}$UM-JB?#cm9lV6xce{ z%#4j98;&%I^krmU#7%BA=h}uEA>%V#eNeiHp6)3uU3}c!Ymh3RF+mj>tAaz7)`fhp zo>kTXrL9kt0K`G6Mw-;qUN<&h6)9Ayt}kkKzjxYZ-wT}Cjs0FAq%}v*D2SS@8(-`m zkzX0@v7D$e)u}8iw8hi%{OMuG(>vh3#$`|_+$Npp^{UwJ5D6{H-H(^1gR86hLb0>nplO|rOnYMcogq#% zW6%=DDO(cT)GD%OMoobxYmw=Me5}wx$m+yJ6tFgFZGmnIWeTi?7e}&&7bib59ZBh^ zc%owX4E`Me%|J50%Y=ejjPb@8Cx?&SX{eP|#)UgpMjdmK0xkU9D7Zlq9iXm^g_qm{ zn|jrt)|ytg5(~q*7#iiVSv70?e08DZP5n$I*DxP`<7u)iAgnOM2=U!vn_^Ga<-Q7^ z5|6a-bE4=q9+r#J9P<1|lS|oIv}P+weIY0Jv&9_ce2%1RsD0zv^RyAIYlRF}X#H4J zrl1ND3_{TuyQx3#5oVCFXXcbJ@Gp8LckXbZLo&tpCnZ+8q_yBq=@c#ZsMcpOjpBNK z9;+laay5DTUVyyLF`u2Ok!QnG&1=)>l{sRfaDFP=`)X=B1ECyhw(K5cqt<0aq4YKF zj@Is1>Vlf}zw_6%5fF`bHkpZHoMDRH{autrjmd0|>C_sr5k}bG+n2Ef`_K95q#Iy6 z#5!MT=jd=pLM`pu6R(FksfW_Jg}8M2GLms058izj`5n@oN*Ngd77!lhRzPRP5_vXP z<4oGv*7g_&2k+u=HbI#um`>01K36Ya#+bQh{l1zpekmen%4G|zD9E#dap4lZ)7azi z(L-$Sk1!fFm>y4%H-XcSd6vUiWfshy_R&uVI`=d_;JrdK1|p`NnTF+P0tlFr@l{Pu6-zyDwVr}zBy&D$SF94rv^8<|m{ zXCdBjx>gcx3w^iuQUNS@+adP;+5n=vZ`}IZivAsIU{SgCQmBlO3(x7#+`ZsTYh>=^ zv^>`6h8kAHaiVjQW#{W_09$i?hg5gNCSsK8V`*CAd*)nNcR7{3=L>{`Sod?$3)j%h z&L||3QHWRvQI4$a&Oxa)xGN5Bm$rf4SVlIyZv6eCZp5}$@m!fJFlp-r+hCt} zNi2qkPs@H9MD#)-Px{^FNmKZ9R5Ef|nWC2Z!KzV?eOr&JqH+$e5%#vXaB2Sv?!NmL zj*lNB?T_)17he(!gr+f%9^Dh|lBQ78*<H?df^p;DQGu3V=n#Fc6n zQce^oa40`Hv2kE=2Q;VZ^t;AVdGA3aHc47+Zf+uX=mUr|47QzD^QR(qTyVC#q3=%0^9 zlvNh_@ETwDN}U(8W(_ft|vls%|MLoA>}D@{U@8Koa$o^ z$%f*6Q3Xi328!;%dN0#ZEDSeMG4kVSj@r}19Zwsz58x3t?QuEH(eoTF#2pkB7hHe7z|hG{5<9?HfWyV%shw`<$j5%j?AsBtS>}KndPwkMTe%TA*A~p^L%K4 zkp-0Rtd>O;Gj+2P&5I34S2`sE#A|*Y?u|ITCvCGXT{X!lCL74etdG>Zq1a0P1B8=mvQ^K8|cNf*Y2U0 z4Dj;DpOItV;mk*$$YIhLB1f7Ci=t|&`Ew*1Ve51)z9y{{lWX8w^uSQ2rV3@dPgCM?^F&^C<9IHtJ)@*Q60idDx0d;k(>`XDUOsO7AWD1 zilHL&F&OvJr`2ziBA=ZhTeR4q1|T~{U5(&3DXQrNQ87ReN67pF9xax`r6F*I(YEMr zNufCDpMF$m^4^av9JOW`QDfHkaP+kyfMCUc(G@s=|KiV*A)fqJe4f?$vPP|s88I#1c9C6Kpd!$fkX9;@#nw%WNOhJ6# zjA+!T!t@R*peqr!V9;hLny`+*(7|GvBhJ~#+{1j?U^=lNXClx<#iq+C(*71U2U8UD zOw>gSqBcVS7GptBqrbh0{oPB-Aj|7Bm%!np@H5=G{|+|h8+hx%Jsh7LuNt1vy@sEZ zE^7}sJ!0tb6qhzjJoD@=1Op%YIrF`);Bb0M0u znJ5;`jPWXCTF5u~DhEtM9XWtDtLB47Ov<=aMQ@rv4qo!2)*vtuy)T7NeW9p<3mLYw zCQ>tp*Tcu~g96ACltqQnutd7dFr!vah@st69E2?Mxr+DAjcu)!qGY!1MP^CaU{ssS zDbd8JJeCnge=tBo^AqNJ3FYu`Wq${kZeK-Ho}z6+4ISfNAnGWaU46IE=!tQf!_T?? z#z+Dht|zPQk_~?M32Hf{h6;`6))l(RW+|A{_6-fkdUPxg zkKfaC>(dFBhWJ(O!q**N6_!&+DMjIC)IGAY<+Ngan53kF!S)Xg!#J`a!`1>DD;}J%hQnQJQBct?i^Pqbf|4jvzisW-^TNWQ( zFeDe6j`|3v)5;W7OOz*Z^fEgnst%oa+D)nvnM)Y?K6N*_B1MGO+CmT9H>IjiR@>nNj7`EFx(It|~)$#jC3 zUwjt3+q<@5c;=G0zqjqIhK-I?Dwj?I5(MdarjmVtdNpO2VZwX+4jq9j_F1_!&JrDK z+CI9&vHRusApMS;p2s3f;a+a~@0qrx3~D4{Dtc13C~Q+zE?KLFfzxf$H3HX&3sv;( z8dI;pf`WR(Vm{M^QWMeU>x&dW3DdWfKP&yJxXzNX5IsJMRZ20rrQM=)EQA)B2^|Jb&L{*%ALhK$r_ zI*E0tN>#Tid^m}gJ8N0U2~)J)NiK`$?d<_BU%re>``g$prZ_pyaC$h!>vrTyR(N|H*e$4owsm2pX;8X`zD7ObW7XW*%LMR-n;J#fz?5pQqsfD_708? zkIe1I9YmXn8r4r2UPR$UMOA*CWg(7xV@#H( z_!r;)4(9a||M7qEkMJWu{^JOGJ!Jpo9Dn|$FW{}WzKvh|*Z&?iHg@nge&N^98)ir_ zRHH;@7b(Mhy;y^X$i-V&))&!eztfTOdGS4?w|S9@Gv75baU84ywuziYd`30(4-C=A zIeM1}%rkQk{axURYUK;zh@?TadnG`k=#*GZl-AJ|D*faWqgGmfqGpvBmP~;2_$$Vb zFywfO*tu=;cf7X2IE^qEZ_D51Y~ILNA&Gig575=LHFKsKnHhEKSf%p67LAZiO~hf2 z(Cb)~SR!C$7jFRIY`QSLGn=cx+;!pzjOC(eE35j=jx6q8KH_ocwJLnmiGRhuV#@*Xg?XC zTpS6V322bP=C0?XS9o)8=Z3b!M2K<=bG?<`C6tZ|T?*q?Zd(^&0K7 zy?)PhxXkOS1LRdMU0fQch@%+SZ`?raMYwu(U#~$#ZP4FDIE}Eov+oLjL#AYxUz9Q} zN_u_AqyV-z#(FIqJlON2EHz&|S6i!S-%sSsJ;nto`ecvLsn_#`DrL$sgJM>EXDng} zTZ3qjXlTLOf;p9J42iUJZDA0;Sodk-u1`0_Ek#GxTp~1@B>yhaeQUzyN|ygmHYd&M zevejq&h!1m20ZR3RgbJGV8zrhDm&Wqyu`+>$*bJVC*lG4owP6HzE~y=tm#ZFSHRp} znR6SOyD0}0T~1+0jVJR`8RZh#UZUnTx9`oy&o0YF%A{ZAP7VU)luE9-vb}tIJUyN^ zY9GkMbJp=XGTIQ?G}9QURCgT)L$4QDdvIdxFON$|V(j5m%f`HF_JT;C1xPOMU;iox(Ls>&7 zie4|M%>ac}%t(3)@+9e0$A+9|Dx+(tHx$K#*IG`5yjvB|(5m5MW5A}5)Vi&$9zOPo z52M%H#KFO1cx8bHk51%_=cMfT#;ae)UiBgD-M)cS=GKHg_b=952f@X{ws8mvoR&e3 zj!v`SmyLpp*<^9ztKV%~6^46zd)VKl4h`7fyR7R`j;5GqbDW&yCL(`us0Ns}`Wf?z zT&5c-Tr6C8e(0)3YipVTs5taT*x86&(RXOJ(2k7dSmVRZ&<~+vxX4=9reIIC=C)aRHr11w>Q@h4-3IuaeP z6VvO4E_;Z2&HyR2hnWHL-7|T9)qFi~r9VSI8lvvSn4gqb)D3?5mwySr@^AcWW{Tnt zB8+$M-ouqESMkli`W}Y;Z5$qb6WjZjRzDMjiJGxy)jBq!T$0vC{wg)XDwkZ7R`epI zwb8!AH6x?0C^r4mLpzo48zCgxH0o*L%xjBWV9;?# zvE=>ALOZ9Ci;JI75lUrZX$S&`LA*~GD9xfjJEh6YnarqsndKP5Bf}NXGSp~>!bZPG zU%euZZ+!2Y_{*>V6+YSPYppEGB|h`YH*oLd5uV-XAsUXbNd%*WbdUM` z)Sgv-wufA!h3X{onRijAL z+0Vy$AG5MR^d#&iQQUf9FEuYTofdqYTPTBJr>&5bDzMfP>{! z?wQiSb&q_BgoxIktu{t58KXJi6NQ z{XF}*fW~5>vVq)i8Fml5Mz{;vwlXC_lSmk-ccwPAY)b_Co-W|LIj2lA(~!Z8ioB?D zxzF+*lQZ`FIkP=IejtyhjoJtB;8eG$&+Qq`k3a=1A9Ohga?=!=ksCS_dWMo|5vV0* zCf7QMj9YEfq`-6OM#+pIu^uU} zAB})I(&nf+VyO4__O6|0Ul^Z?YGxtv`}C4jMW%7ZJ%!cYd+<84+zObDWK%SaD2(kr zya~!_i7K!_P@*uQ{{*5GN1~1Kpo3Q3(KhL#ShkvA3pwLdvN=Lo&X6zdOxMj4@7#H7 z^-|m0moOZTurU~@U}z&Nh*?zk2Pv}oQu+qZ>l$&RyHVTJ((x-Ms%4uzo4A5>sd=j6 zPzEuzkNJ`o#sOMd95+_Ds_0sq_H{Z&B0!->(fz>X(ct?`21B8*x_-Xt0K0~Y_bJaC zZO~bGec}^8iQBiXszDzOV(eYHiM@1;o&C#r=kO7J>!1A&{@^oz>cGlCG)$S_ut9ga zG&(1$;SNmCXlSx??1}=Uae}=u6!RK4-Ot`qR)G?%?sJHvq2^G>GJ*tl3|MD(-X{R zGfeUVJ<@iTh4d4=o!CSXk)1E+s2ND_^oDE>zxUSn;P)fThHGM!RR-S;6qxHp8g6&Z zs9U4{jrX+>t;k1jkf6+RQO=s?0UkVffP44u$v}mHwfsLQ6xyzr=gz0u-Zd-TmcMoe zxK8Dz>Dt(Egwfiz6If=QbW~X`?T#JiMVQbl&v&kweKnm`vD6@kYs}C8;x7pGxNwJs zA-1+Q@$lhe{NC?=7O%hg7M{61GG|XObS|u!C{i5$KdFi1y~N^>_eB~z1k7n2bAH~| z1{K|epTin2^i11C!vYsOfHnQ@dCuke*=d{3$u?ZE2(%tnnVyl3Cdr|OD9NSesD;k3 zfPb!P8^$b9p{L73WUe*AD@kiX>2y7nLeQ(kHz`|Dqd7h^%^^P<^B)&;71(fVy82@} z`GpNuNx#N4M9CqL$9o1snK#odJj%~dGDnJ8ftk5$jz=Rs1D?~FEei>8H2@+47bkrU zlunM08!&qo4NmoDvaL|Gc)LHp=e|b(`dT}c1{ zAOJ~3K~#Lddp>RX<>wK_mNkKI`HyrDZoAdlbFmI`2@W-|>!ngGhSTKcGtqNNQI3(i;a7!Z(8tr` z>4B$>+6VJU!vy2;7?a5Xyod#khnRU(u*pBto{?Qj^E$Gi$3R3f#%fAWM1FPN+6F}X zW^KNK1kHd~o1 zXi2q50t=_6NkvlzPL$k3jgI=1BM%a!J)0{vqBhnT_EOs{QfBx>O7w4(k!70=C$wEd z$IYF~Wxc2nFk`E1MUgm|onbQ?Ac~GLih+}pLtNV1v*{-_d@PV~j5vPAG#p8aJfBJL z@^JnDK`=mF&+!-!@cgYG!iQeCfrk$tA&T};rxoTiB0B?=-W)qS`^rwsGTR(0-!}6o z97!)R9Qkg##*pF!39aDAo49#%Ul~59kMHBoy9d%NZ0~O3SO3PR@UfR)!sSbs@a}^{ zeB~=&!O`>-$45svDI4@!%WUBW+s<+<7CAQ3zNVg=X&)i!cl7`{2AF443F@1(9MiCr zGiSXVNTU@rrL=CR*%HIczC`Lt zRjBzc%>C^L@8I6?16e-PeqYw~L>j3*42YPSma3`(SDV$Vpz(9WiPrLTS}X9z8+TCE zncTie)naJ$jEyu4cQ)I+&*zyMP5wR`M^P!40kYy)1x)ACie>;WDD>RUW*MSpf*K5@ zpVA@(jc4%_o@YhYa=Abl4viAVCXiIyy2QrDWelPWr`bf;bT+f*kIn1Ug>IuYa|epy z$Aba#e1WuYjm*i(neO|#oSSAz$P2@A%{i@lPh_o)WhSJ-mR7tqLfKm9x@PN8qG3s` z$$GhH2oJ+w`Z7KueRgMK8y9jzTth%dym#I@!tudew5n*h)%j>kzf_bV;vh3xaoD&5 ztVEXkjw;-D8)S_sjD6TtGYw}HVO(1V861s@clDgX=(SbHb$N=ELnS^63u}eO#sHP`%8cz`&1@SDt9bG_9z7A7>8_hrvk-6^rYs5>&TyDuULGwT^FHZ?qSMag*lG=MmWOD96AU*taOLJrESCk^ zz|(mpk~Df@M}JO7sT+bNLW6(tS3ZSreCvNeJfy2@B@-kDZXe7S`1ngdg}?oG{~oSf zx};`!yfwnV`w#vOKJ(32ae6YrwM&dci7=m?8XY?{28wLuNfT^Z<>OTzHIzoV=kCA_ zhe$W`MS1UfqC6&;*JfgpIuMxb1r8~B9%zJ$GJzO$h&VI$fU4JsFgPO}>lUAkvxU4a^zTn$RqaJ_GI?x-gW zWeFN$$4`_Iy5ZRQM9R)tHo2p14_40>8(KP_GBzNLhI$UA!R>|}jp?T)TWuQbY;7Uu zxg&*C5jP>iIzuhPuSx@?(|jo!C>yG>Y2Gv1BlVHG#VIPJwLKuA-^bFuWv|X<>Y{;X z(;^{iMP_>)qEK>1W_faDB;<~Ri`cnYmf4xm(t_6b#p*u>td~Zpk#-tCg$DU~E6D3>{>(CM}yDTV0RTOW~!q|7PVWYE0f!hdn)h zFpsB=+6VBUhKQo}e!maj?;|e_GUqgL$YAR8UhBePnj2>V5}0`b{O|9criESzhG|zK zS1_EX`ak&_7SzaLt>~A8&=Q zm=-QjXsJ0V8qv@Kv5C^D@Qz$o3@Iq<4IL-Jky*_LLYq=i6PDAtHmv{Wo8QDwz56zv zd-i$NdE~Mm9iL$kZ=*lxs|XqoH}Uq}zrZIx`BD7(KlsPEcI}qvaG(3!=kZ5>@I{Qr z35Hv~CY85t+|aqW`OJp^FUI3Xhq!g?ifsI)WeK=J(C8%6d7+-lv`pp@Wn6p@SvEu9 zRane-asBoUT)p-jZr;3({k^N$-#1O&;h_bje)fxhjycb1lwosggyDEkF$yx@@a=xE zU9&~r_c0Ah5Y+QhA1BQm)6)=48Hh(4W_Exaqph2moIJ$kcn{+%yXfz3BitULccuyf z)7hD66B|Rpo_qE-{@Ty{4F2+KU&EVkzJ8%3XMsdY5cNo!DwiE{+Wm}gW(C~rhuq97 zY;9~vIDd9_s%B(=|B6uvrEodF^G;6BWM$2%H=C{`dSXeVhR{Eccc8nc-o0s7`i2hk zQ<_ajYw85%Z7X`pd|ry0I&YRL^7U-AiF5xlhtjID#>qmZae;c-{inHs<~YumsM}0N zKYmzZ;`vz6&6J2a9aA}x_aeL3eamBOTC=_9@5y{dDvv;o6Ym#3w@G5=J&klF#R?hB z6`UNd&I9is=Kir-Sh{A6#TWG@NuCPH<^9TMln6gxYmqHAG3Ee-jWZ|RY-&i+lopnG zfTID9r&Cd$INa%qOBO~%YMB+cG6HhVM~id1mh`BFX(^*8uB9|@p$R?4;}K4>*=kMk zo}dEoUSXlNe|bwRfbEfGP08Y&ZgjrV2(6$J^MH*>tAg6^()!Oy)mDU3%Y(`V>AO5E z=L%5Eo3S*O11XG=>4A+PU>E_>mna&#`{n)hC#*P;(U|qSTukYt*94-4@mhs$ zZ4JYoSQU{w*D~|y25#Bz)M)M>pxxNQ)vMQWaBze?udrBV7rq}G=)==9Rj2*&Kx@);GS_|E%C)k> z_U5k4cGPThxWs17Iqt~?*=sQvj*!HCY;16#Ac8!mvkV0m*ccB{EapODKlbq-!Hds- z2z{>m@GweZeBz@o;2ND<@4be8Z-A_9rST2Q3`LXb+2#8cjiF`@*G(F%B!LEuGWc>P zR=lr!E(fh#Luwj_@^A>!IG0h6*?U5yYdrs<=kU>wz92oA^yG|6>Gws6?p@u(?*3Jj zMT0m^)ue527w;KHXjs!UI6OKMrE~krCaSVP(xZE;T|YKl4J=1fwlAUOrzJ6spBU)O zK}{viAn#8@)XZ^F5jI(_dyV_BOociYi)+e))jj0Pi4`t3r*XNYUfb%v%(BuN$Ix>9 zv^SBVgMo%`JwMi(@xDQ72ROlxhu0t2fo$yV3F|EIXsxYwRG zdj-`-YmSv=52=F2GKrMCF0iw|W)T`(Sah|`tO{W+wy8GjTtQ%B0>w+4A}ZxyK?E}8 zIB)1+T>N?{?OK3TG%uP+EojI24?Xh&o_*m(1YwLX zeCD$XT)uMs5>6k_(H|$cN=xUvck$9oA67=oU_8Ldorf#8t1Kj1S7I_d!!zMEJpba4 zV3=_GzJ$%KJtU)Tw1Y_K)?joMP0^xRE|6tY+2uh>hw6TY3Y3_xLLZCHd0J9+XSMGU+ zU{gcIrVFlsUDwBT?vD!oEewrLT0}81a5;!g#y0 z=wgZNRLO19}+8nNSL8l$AT+W>#Pl=z2a@z9~ zEJ^w7uB&$*Nl`l_lT8{218h^QG4w@y3Ajg}Axc8--3#o@)vpe&6X+mxUsS#kxf8m)dj``CPsK^2cWFVjI@k8vfvPmpan} z+sHfHZ8~LDsAfy}qapmF!fg2f>1Y>Q{UL_qu{Kd^Xa2kY`oG2Q_5j1-0QB7QAi8j>c_Qgh|>W8@gk&hq|DwAWdvxmXvb>!I$v&At-0Z7sz zmetbCHhKZl(HNVTu8CID7Nv|c(q0df(}`^KZ{GX}UjE3-*xTR7;YS`L?F}%QoT|t& zTjI_szfse#c!aW$<6C#rscEaN=%FotKP93}Jzp+Y&dKx)y*S3(ckkejzwl-3Z(qgh z)d{}*r7z>he)PwcTgE&vR)jJL>86@ZD@~+-(XIddIboAV%_KjY96n8lCo>&q{-S3< z)V4qqaF+O*g11ILHYDTX(-TET?UkjzqpP9QUOKDr)f3kONiQ}uOhXM9km^v!j)uub zm$c^1&25Z!6C|J(a6=6i2NDVtj^-#u@hvpCX(}HNA3xAFcYo&CXWme$9 zgL}Af>lU7S?m46>?ZOjG&q&joJNl*3fl#+t)=TV!+wOZ2-5H^(mTHC{9v_GrO1&cg zP0bf@^0JVpB7(1g8fW3F!^)p<@pv(-H3UcmR+i7f@ zI@gHIcTSLvcOFSlJ+b~W!%Wz2Yba>rRp<0a_x=$bC|S|w9WLVjUM_~`$bjdtyUw{3 z&hW{1%|j#hLTbJY3ZD;F4TUspyv|i&sv38m*gWvQG{b~*7f+eqC`ZyJ_U_ZSwR8T}gdd3=EH91l5ki6a@O zuzB6u-oiASV43GS$Nc<*(Gb1<5Xj&-XUhkryIcOmb(OeHLNW1lFeWx@vwnrHNgEn2oV_4(r zyCH8NTBi*}YH1rAH(Z)8t+^v=#YU3DoFrK&{()iJWo{^IXbZpAe1_et+$oJ-UArcE zH4R%k*l1TP_ebBY*NwTfR%SwG&v@%Buh#s${LYTwM_XB*TjK_r9TL`|X_eEEp~Es+ zy9B2FZ=DfUw}!9u%t_J(Bf1Tzb+JmGUa#rQw-O`OM>5&6zsj>r=XYc&By#e7dOSVw zv{Cz@9v+e~MlL&V=QY7%Cw4R<(S0febb6F~lNJ8X&`1pu`y4fC6vpOehYmR(J}RQYk#F%Yuj3GXFQhe_nUdSOf~oKvUzS6vM^`Zw3;!um<4O}rgPdw z;~F-jKUu*uv2CH8v5M%y0BmF7Ev*9(P^vS4WPA%?UNkGBwSE^uZ08g_=e==DZM&k94l z@ZlHnkN)w0j(cyujb~qY9;5LHU;NTvX%aY&cC<;q`_8Gj_|96-nFFNo(=kSAA6_uV zvVgK`mXA)ctcF5!iunXn{}Besriy2;jS!B<*tzyR!d@TYrET1M_W&gC{$crxRu+R+{xXI|lszzOl4b%xu7%*0@QT-2=D z#Ig`0?JVk9GsFgncJ4gyzx7+cgJ1d8U&UlP(R#<6!Pj1W6aVCY`zQE|FMb#4a1*^j zh(WTA$=v9Y99TtbMgSb}lijmX&}?f~IM_+_o*H104k+hCu5qQ1Iu0VL z$~UXsG?7+{bmI9U$FS&0)0n0WUjE^i<-Ezk2HlKlEAKUh?!%}ylO{Sh#)Pz!8o}8d z-}&Y@aP!Jdp{GOvMMw1;Eb{_qrzaXv^#?-)K`Z2Dx>(@s!&3AR3mU#6a1nKzU{^fA79~SL-B^>>{VDaDrt)1mAKQ8@V!9 zdhN}P4dn9{*&;(UiV?=WHMG9L#>SYwgy;|UF=Je1BV;z0Z!NrrAikq` z)7FwhiH!lGI8g&Rs{wAmhvFJS{Tos8Y*C5@6!(Do?9hx> zgl30kToO3?Ih`8=7a7n!>wI>W4T=cHB+#%VL=zec2uBsJ*orqrxPSE1zk_)lZgg}3DNyR{GtcCarGVL@!cq4<~7w zq1EeCBR7K$R8bcy?{Q1@I zyML(N^yr+=U7BsSkgw3tx%c^w3eJ|Z6LdT07aF=qsDzLNq;k?E2c1nC4>nz&`~2rr zWKQb>8{=I(IGEw_qlc#1Au}mR)z}`~e}D%E2l(?Z{wc zou1mnc({WXU!b*o-_U}@GVpr6SYLUWAmv3G|dK}`~r9C|V;zzZyy!^3G$OZ8q{`>zC-gx5;oE_zI806;9%so=R%E=je z-1r9}PUa`@y#*2x?rOwdr6wR>mhedXstf5Zf^mwft%azO(tkWX#FgD0H_>l!baH~t ztt}ZQP^Uur6^p37{atbKISg$YbN-?s1dHP?95j%SyhcD}cyoTQvsmOLp47?dY=VP_ z2YCC=s~Gl&*uQiI!^^vP>E>;`RoubX@4kuoy?biX;EMlsl(`#1*pR}evsIf*`}HIm zEfi*ziF9#Uvfgs-;eq+-RotEDN&f( z?ggTsrl|~UO3Y@ju62Egs@%JmVOmU(u<;z!NPn$c$+C zXqzEPbJ5{Y=0KjN<;s0v+ow(?7L{tRS}F&dAt zwY!6_eDxLl#^3qd__0s@qJ~j__~}2!8?U~Dx8HeNc~(FEvp*--&Cs_PYf+3i43cv# zo7g4%I>3^KKhCR$|6Y{mxlUns&em!t-?`caYkIZDGC~ZgtgY#fJZ}|hU-3M4j&g4B z?saQux89bOi@JF7XfEhF-~VV=G^Lvt=QLi_}-Jh+1W`P}tW(on{ zUlpmopIA(QA2_Y8%WMnncWHw4`0=r*%JbPFZd~8R*4FmQTAueHhc-kGcwbaF5fw8X zCkP2G_#s~T>X$JdZ!2q%+Pjm}LoBidj!%|YPLFZ@#uZ$?dP~Mj^RqcV^Z7r+c-TkM z@9R73nuH;STSMG=_l|U}-JZ%lk!T&YM2s_Gc>8pguL78>E@)Wn1y63J@w`Dw0}L7o z@j7u2rF$lujiN^7GiW+rfvbj0+91H$T&?c+KpNl%uf6svZd|*De7V%VF`v)X$WrIY z=9o;AL4ROPP?ckMYtzu+wpk%uaK<7$pK?!aN=zmT;Hu>T_R`21W7KAOzh=a{!eLt= zOMC>I17wenQDm7Kb?(1y(_FmI9MzG?X5H2b@s`_fo-1->I-7wK#>P>4`Tt}BLLKa4 zX$%Gq4RYV&E2tNvb$t-)xd@{a9_tZCLgfE{h>!N6N^LR?f}|V$m@8-P^uKoR);4so zC*u3Q8qYWNbNt<4g-Qh-+U}WI9 z@^Ix(RW0OH)+kt$8}Z`YBHAtP9QJ3O1+;$4{U@i@AvFMo(wRs;xmcN$J!QZ=N#DWB zdfIG{v?-VNess`U6#>5GfUVa4#`F+@HlSJ*y~fcYGnkz=RMA^CnIgL)^M`OB*JO_G{O!;)`m!DuotP*xpM=+9*kH z;UsUlJVY!CX@Zt@Y}<56QsU#+wG}NC#}A7H`RNSNj*n5?S8-D|8Kzl=WSPrqf3&e} zQ*)O~#N%T>@=^TgkNyN+`Qqo*%nXGzM(zn`u1|t~IZ-flIi162zK#cMj7Jy|ouUI} z;K^w;i8kRCsRj6^Ly752uf~@?dk4dQf$h@Kl%|E+s9I6&3Z|bF<%;qaw-q8U zG&k3vl_Ph5G{R!~00;LUVPkU(*ETO>l-e_PJbi#cxQ+Yw@8H!}XILz#zqG+f#wIzZ zrfaQeq!CX&v*#`-aeR7=H{W~{FaFRAqP!8cp{=*SyNzU?%SwG`dmFpEyYBmyY7V1b zgsk*&vX~)Zb{+-#QEX3;*IwBb zIaj1-n@+DAX1OyEhATpMuA<*wn}OOy#MoFw<@xKBu2GUM)4`_Q*sUt(`s{`v`l|*` z?1jcCdPF~4Iryx2(!VLlmJB%97Dw#_!|JH{ZZl zzVZrw^b3; z`WotHtR3l@7p~#QKlyVwJ)GlP-})A!B**33H&HQ%5+$~i6j^@&uZ(c_E~)30^qp+p zxMtRbIUKSog9##oFcd~V=XYAd=}NO?HGcC11;xyHYQGT*o;qeru53(qkNM3Cp`kXb zAi^YP;U&KN#+wL7sVLpl=W$=%;_#+5YkcB@5Ftdveo`*nn4RJa~m|8v~36QKanmS&sW6U|@JGpcMDb}+>&2Nx58e-Jm znwD6`9*t@M<_|KmLE-w9a(j?)XjA*hl9^mLdD4o;?E5vGMuY`Q^c!Cdt_Bo*cIn#` zWEfMA=NpShgBH4H;v(fxWU-SAz!}#o)Tw0h}fpnt;?u#iTzX<^`ImeI-~(i%FrhVIp=wYa~VJj7ry781asj6vGWXQM+M8#Pi9A3n^n z(c3qwqi?9<+SOEXz$_kU`kez&PuiQYpt=~vgm_p!OTA(ypl zqzt*{Sb>~Pu2bIh6TJ2490vGMc z&5b#83~QcFRV;*@y0;A;9X!HlV*~S}$H+9=wUE_;zm2@~vA45_<}{OAne3fup3z&+ z)>=R3!4rS)n=YYtUOO6uI!}J{Sx7x_kZ_X%4&DHDA;B zYMCxnfeVaxlUNQW7)z16Amf#zU~7T7jXPO7G+j0P)RxTWGP*FzafBcaG&N4?=9ZP1FESO| zqz-cpnl2s-eUvFd6k%gH#Psn3d7Ue(i#o=>P{mRca%=2@RS}juSH12!@ZMmYPZ0Y<1IF%jc|gEpQYKO7*b z!qrOaN&A?YLuMFY!pysFOBM^lQ;2@|S*eBe*Qny15d;6(Po1}V651N8BG~9%WI)JS zFNs8XR(yz$0{5aG}>I%hVY0T@_l-HO^>>gCdWt&WkG5)9WI=1phF;=aosHs`yCExMZIm}jlPhsqobHy*JgM1L z?gos$_IaApl#S=sFaW1OSieUV=11$r=%ofr)A@0pEiucM#u{PCGPGuYI$M~_EC-6U z?b~ICVEdguvvJSS`Ou+p+R*d!V0BX9zuyqZKZg&wa)ds{<4x0qbpvB((VKKxhon2U zmc3wWbf9~N*LxKg>0GUeBxdtW5lE#^%5@=%Xy_kluk|AidJ`MO3WdwS2tkWhsx$)_ z^i$-EOj<&+IkIN1bv=m&YhKw;k012oX`}W5JSt^xj4{ts#F7EcEsupP_iCsnt}0WG zJ>7@TR1^%D*+Y-2vT~uaM&D3h;OD6Nu8?FQ(oIL510T8Lq{(4LQL;rWaJf|#oe|@i zMrJ|)x}lnLrsKk+kVcz>qbC2|xm+uJzcU;Ox@i?NUlM1M);JBz0zIx?{nWB>+|(`L zn*}jSZkmzV?-RXgqCOHv4^dy@3hrXn&>5Q2OMDc$ZB(pfm}50c65PCU1J8Zr7M^+j z8PRb_PrG(?PjsL1>Y;tk4I!sa59-FtzIEHsm>`QBQ%+3GLNs(_gZ6>MOfN`iHEQ#eeHjpTVF} z``vuDz}Noj+lG`DxkA8od17BQ9GyvjAK4_qtKa$_uJ4X9UTh)Y)cNo&9KCZN`x_(d zT;IiD$49lGz`elP>=VzF3aJK3;Y9|@q( zP#tff*W5%H9w7^snkj^euvr3y-D8|M^F9gE#u?cZHoacXctWsf3*mCL$W@^=#Oh?*g{-*cblwXgtY zvtU-2Mih4lM{f3hVgnPR zpm5FE`cW&opaJ?UiqDX4U&iw<{t&KRzM+8a?DPc7Wht#D2Lti(1j}NHE0=qiFB`n` z&K)$f8R~{;OT3~gb7&LCLwojIgM07Zn@GRuo;+ zEsvq35{1h`p*Kgvx@4gM>$N1VC-@=1Cr+U4we;qSEu<)ljwIW$ok%gQRFZPVaq=Tk%87p@sVJ#bDofc_ z{^hb0sYI4#k`^gh5=Dm+1+EZ45C8!TfWfTy&Rx&ir%&&x=l#Au_sjrP%H^sAF{fFq z0S5P;rI+t}-}l*M;vLAH(t6#~YwWGVz&nj@hMXJ}ZVL@P`%QEIsq@G>7sPR(Kp zgY+@PD)WxtbrwrNdY%yNn!%Wd4|Hx0`{P{C5ukWD4F0*Ax zb3zIU?bBoCa&@6YCkjfr;DlWqS!%*+gz)?(vNV;o-!0_PL}i5X{Do#IsD0KiQCf=f z#=T~(vx1##Zz6f(A#@roITx;P085@=qV%DTK^F-b?5 zj86mQ0oHn}(xgE*;}ylm#yjhl9=h--ZoKiT(EZI!86c&34Bt^m;lz&Tl*u?ANTyhl z+LA@a1}SLT@P`1d+;(SN1M(b+r9#zfkg(LbK4ivD5sP_CJ<8>tk%gWZhRDyR znV3G4p}@SjA}#c~U5`7Ip3)dcD0x3SO_3`K~FO;%nC1(n~&u)9d&18GJ* z?jb~@O&5U|i$+tLN7u$^v@aU>B-xj1ygwW&S7|GOZRPOe5cW)&z&2z!o?{&C!Ywy+ zqp7|#nGQjdnWog*#j@6T4mFek8b$BjT&CVX{$D)qH)`+3qbfx>OaZke)3i!a3+K|3 zN{SsF6Fr|)&za2&Q&&S2C} z#@UWPr<3J{q8d7Sv*CtcRJB1#rgFAR%xQ%89kaNn+#lO}ez5TdHBUPV2QZtA?2sJL%R?Hc!JV&$H#B@4D zUL@kIxQM7x^TdL@+3=;ItBnGL2Bqu%%rh}66RZTlI2uS{#ZcXyNyIHt0$9Vf4MA?` zRLSW$%}QEs6MySJ{0x5eProHpRYU8qh&qUM_JW?04R6B80b0!y!Jx=KR#ZpB^k5m< z<&GO~Rn7y0YiBy%2MH-6vDP=i&^GT7(*TFp-?iYljk&!!2NTrBG1%N*Kx}^4AsP#z z7-taCVx={krP8K2b;b@KI7gXR(9w-qO7~7~ISqCeES-(T$*_brR|;{{Hv2V-SfkP^ zx9;$@taq50%YES~Iv&qYGi;&NY>DP#GNmpu5+eX{==4oA!*Fh`pX7AkYadcj6GQez40n~ z#~S##pZPhsBOCwVbN^WXZiKhCu3^ay5Ff+{yPgWkCQ9nm6zLKL2OCUCOAC~~dfrsl zpZZ{?)mR9wRQKFmW2f_)i0-E2O!RY%_{hY6L>K8qC~}npR@Sa0b}j{b!orc}v>6LU zUr~3nLrWDgi>F>!iu4?IsSH<=TEk{5_t>mbNMMvrRcf0sGt>Dxlh>}eEN)ZAzc?z0 zThq!pK;pgC;QjBpigl4@NV0mgK}58cDY&$iKNhk_m@JHRL#h`x+XDW3>Bfx2xI zvv{H${OC;kop0flS6;$kkO*TTj#E_3>Pq-C4!ocg)DK!CNIoew)s{BuBPv}#A1YhU zMj~-AnOq(_h@}yw1CMEWXf-X2N4vPSwWVm;WF{CuD^$bBv`|6Y9G283Afh*{3gvFh zl#5VNz>~6efXd~5mwY>#+DMbeM=G6L_?z0ozg%FR(1|kEjE`tC#WRcQ#g*8h;DVg9*^g_(MfBHO`|Y%WXAlT+G?F3)v{HAPu} zUsHuQR|V26RRaQ|t=h5Gv|Q!#tOJ}OPKSo<5kz81Rfl#`l<;bYI#R`|QF()w3^zQ_ zfFYshr3@DjO;lWtk)>cWus!l{3w^1Yl+`gO*lC4g-(%c z6BDh?*9}^IEK<@iZ_;e1A*cYW9OaBwN|OdnCCf2Eldfy^dofoC&G|X1L`zUNbcJ%B z)QTaYL8gf;*u!Xo6O#8bmcZoY?vfOYq-k)t%4X@Lx=|_N6|LrZV(4XDB=q z+mivjup_1kw6QjdTqv2Ot+6?B9RIHP)7?QIQFI->r3d7{)rsRV;Y>$MYT_6tPoKu) zr!T{CN;F$-DJ(k6>u6nWAZ#?yY%I$;V6nfkwvO`;y+=0kN@s_~=}cL#>+2yJ8nc*x z4i+c1hJh1R(^1W5k`3Y5K4!^8Q9$cPUraN~`FY3+H3Z-W$tGqz9s;v5;CHaMbqfVi zu2lVQx4Q~2Xka5;LNYC7s>{5(qR8>iG_`vU@x92zJx)aFg%Y?s^>bm(kmZJQEhXF7 zD^ME|)~J_c2WpsF!qbe+}seYzV966E#h38;< z`vBjKUx4eB7)KGZNhQ~qrZLgv6%{hAk!}`GX{;JFUJo`?@xuEr+SN3xTH_o(AMoPoR*26>0xQv#jw+o^FYdP4i}p@u3`J;fo{fqeNFB$ z4U)Sd(e97N+pZed9XeaqKW$kpAf~xc2q$P`*nbOYF~i^g-+mLH`sAmO&SLy$|NVb~ zYu7e~w#KN3-~H?#;-7xy^Vr>;pwVkc=q=YQQf?Dd1$+?`Eos;kvEYr7ST*wM!^H5T4H zuSuED3tH|4WGYNq$j2$v8P8O_fW@%wTp?8{FiCSvlO32?gVzm&Nx-2ET^XerD0tt^ z;Bf7#N;DWB;kPjvPDIZm%w@jEEQTd!7(S|LAz6|_old5hG2=3g#gQ=+TYGEnTxnPe zl~h{P96>9P9MDM;!Oj(3kBEpF*qBZo+`hdDL!Mhh{@11XhTldbiDeC=*=I;M$0A0+ z5c^rCvjXW<=?aa!w3T+0xV4+N<~J{$n8l3CQlE#09;6A9ML@k0a|d1d89p>A$~-}l zjdADJE%c)Zxv3llX$T@ZL_UwXfkxQDsK1BJtxc@1^n}JN`#oI*&3Z7Tb^xNLufF*@ zj-dz3$dK2@U0f3+^tyx>27=m(iHq#YiPC*Z6KNxvq!>?gBoaGf!zyP?`%vcW7-_;;&^ zYZGHX*OvV@T{)@KEamkwU(tAZ&VAcNn(JXP8*8#Qh|I;1oJ^i?Mvw60(c#t)IABs* zH4goFR+~-@PbxK)5z)66F9g1$(J)hYd&N7Og^3Y}s}KNFWuMWmw=Nhh-&KXI zE}RTm+)b@@E2Ic4^!t=GmCULW&dPbQAg^VZ+DJp@a>_1TPpfk+z?Opf9)^c zIiHLgcZtHe*(g1iDH^R_uO~Te@pO!GR>Ac`Y51tgXwYKcfVi0%db57zrPlzg&mH{? zTTei1yoQvz92k`u&OY)WeBYLRo>#5u`7m7Cms9LtVdvH+PM{=q&9 zj1dM6Da>-xvutXL90YElrmqrNkV(NIPGnUqS|(Li7~(4(-?bxVvR(EZU3m;30i+h?b zK9{wAB4fxqZO0d!3Z1!m#-c;2`uz2GmV4g%b4KO&o)qTujRu&GBh@&vSWF!xMuwuV zU~zsAOCwT5fswl^a9CrR^`WxVY7J+7Us~`T6LB)d)wiz7RGGT3PP>DY*6wKx-=oQh zkHknZnq_E}YD(e-0er_56pj%Yq=NBvNc&RmX!?8@%5HytXqYi!z_G0cG4=T=?s6u~ z1hJ=cAvIO|``a>TdHSi3;*+2Fq%`*YPNy2@aqReMSzjpB|IL5!S-k%GRh&6@QW_nx zDku#Z+|VVW5aeGCmN;avM0Zyzov)>|GDT8qoBKLMOG3Yp6*F;}OR|b3KboSkV|a0Z zQrz1-F`F=5ryfNJ&z7sHIEO-+aVSe9$zqV}p-dEXrlh6TOF_-ddit*J2N~em=3Gx> zY9<*QETU+pVISUa`rb24r3I#zkb?%UpVYO9^C6|hRVJ)oQw$C(R2-(5HE?1|lm{C{ zI*JB)3(HH(5}bT67$6@H;84F*sA9C$3^0o_IhTR&$$Rp>c%Ee#=c#8x+K0f`LmpKy zb5C>heP9;~on|)UbUKyAqty%%${MTCVCt$&34n)agwsU*E-96keK;EM=&Z=#^eoY6 ziXP}uhwU!7UurknywG%g)0X!jqNsS#N@HnQwop9Nc!na)(9jnCnJ}Ym#fYGOj!0#| z&!^Cu$s|Iv-NeB`U)E02hh5JV>NKM!IFQ@EvyIWHk2D@(b^Qc3Ha4W$}n2Z!qYw1Erh9H@9 zr)D}XGXhA~M&)uzq>TtZ86IM^!v=2_$+IaA)AvlS?q%!nwDX#d8AVO1x?Ue811>pS zD)W0CDHj$=_1q|Zs3J$+NT@z zFqMWg=}#~iNAeCE>&tlX;U{tO%o)7*y^o>Q>f-3e26p<}xN~O*j_>09#q%-@&87v; zoKMl;*+N!Lac6Ua>*KyWip`*lj3zRyVK}cdc^}8x4c1l;t@n=~`2+VGwRh){6)Jc+ zmAoLeOw!Gf8;NUcy^1(?S>jxmaFQgZ3loi2sl~9=w$h{;knH7UsXtYexKJY^tIu>G%nG3xujT3a5 zZS0N?@Z~Rm89Sps9)Is+IDP3+?CtE}#phqf*(1l$TcL&T@2?dhlHf%Cf}5#S0h3M8Wla*(@i~1b_QK`OoF0 z*nhKW<%E*v353jIA>CH8IZvsNAX}eW3^+(<1x!tEw3IC(7F^E-Q8O0zZe7rGqTjF! zJo4xxc<}N$ae+L0{t_NIcUg*9A_&)S+`>QlNBq)bvL(mUtam#3G+yFc@h161A6(pnqaC!28%XF^Uqof3|Z@ zp$C#NR(cHEO)*U(BqJ4+olPy3T_oS8A*ehlr3!hJ{05=?ISb+Xi%4Hh0g|<9M$?oQ z%F;!gB!WDgJ$GKAh;pbfV5MmT4)zD=p6s9~7PZXl3nSt>einWQMz1uHKTbWBg^S8P-zXx$`!Sc)Ohyz#2^y1;u# z)+dH4%S9KuWNq|t_u8OMd6Wngxvkev$(t&LHYYae7ON7A-rzy{ zVZ-x~Mu{3s6%J;T0S-oYu(!iFfdMXEd>Dqon3qbZ=F@46>pNR$EFDEVY{R8q&yHn~ zz+r(jR-}|hP`P7D5i43Mr=*!mfZVV!t!i>j2vnXvUxB2irS&~1*Ch~Iu}~lRvuuG1 zPiai8mVDQ$QUkzygNL$JB32Zb`maz{&eW;Dho@`v=<+>OYMb3v(3H_y8Y# z`e__HdR*-lRzuu&w@9BwjMJx1p|?yUm^BU^U&mWlui?rM zzK`?g9~6TxgApt1U0?-|^v&A+auE%;2a za83tlU&qwT`KmRqY5RZh!^uo_GE5$qH7p7BRj}rP*yP!l znWnT=6$0NC?zf=}kNGyd(9n5x^Jb~@)bMRog7mRy4zWL-;pXkz*q`+A*H2!=nUkmS zKmQLufrA?}{KjwnCZhg6R##RH^Rv&))78*g}m zdd-puRaszlmg z=RALo`dSWKvJCBRAiAG}Xa^5J{NOuWS+ydN&U^X62jIJ_DxjCzx-6UPVN_E7-OpjY zb`^_%0X5}blqj0D#eJnRlGrqpl1bVwbxt$tXY9on(bt0%GT%qe3@rvvS-z})r4HgY zOs;)_W0a zXj)3|BiBf42p5bf<=N$s%C{AC$9%J`ogJ8FPuK&_>Iw#RAoLxJda7CTo9?j3j$ly>`XzwB(z4HU2T*_s-IU=&NZ8ZP%{W9Q6ROB z8GOtY#KKTv@yN9pJGXpkNK7M<_es(OLn3EkL)K3Td#-@Jg9C)Nh2dZaN7qjYf=K7& zYj3@dDBnTgw{h(FQ5gskRb&2PfA0V-GCG6vGSH<#22F@~OYoj*wOz5>k7xD1UZ}l$ znh2$y&7#aqs86$V<@#tUWK!5Y!qzEe+D5IHP{#G%%)P?Vdo2GL^@sAgRC8SF7{x-u z+uwF>3iTYy|JjWB)OIVa934YFv(Ct5?V%iIh47jwN`I{xE;NZ(^qHiPGcdfW^sq;1 zYQshoD`$^kZMlb5tF0X!3v}8i@u3fX2<=u6hE*bPJuEM;pwS4$#0@$Oo)qhDyNgz< zBfqOqLqoe`8#sOHEI!%n$S~phwO8=M_rHhz{o6Qm@{}OOVc5ia_XIq~_rS!?x4wf+ zo=wsx9nrouL-QR5x%ZDB_2Yh{_AWfC$~23aqc==N6%!e*7EUAAVMw+z<}h>R>R3~) zGE*BB)b7@q9t?64DO4GyjVhC=o?e!kZ>i~o`e(T8WzGZ{H9|}s;_DO&fiSbFASN_A zq2Swb9W+U|D04IlVrRZ88fDp;K*`u*SbkFpg?054@H6X*h}+dnheJXO;H^sQp9&vs zhKkN=N{Xu{#M$A5j+?Pbp?A$K=XY_GSV+(aYQ_RvsEzzAOG{n!Moajw|K8uj#_=O~ z^wPu9JpI7BiP6;w4Btc+a3iMv$-~~A1mF0>XR)%;5#83_-W~=A2bi$ZDIg0o1?znK zt8d)Icb|P8`v<#%atXRnL}CiC*reG`Asab$C;ZH`OJ7}Gm1+4)&%Tbmtvzfkoxt%^ zCk45gL@Azo?s?o9-^PjF3GD5Uar@dW*bNs;y$*~*J4*`9MV;kX`2EUcV{7vOzx{(9lyA<=q``e4AfQ##6_QNqY= zI0>~z34Yj7N`YdiJJ`&0Ib6=EeneV1SmF1#7O6i1YU?2T5{C#=VvE%`H*d$u=Ea{x zHPBLs3MZ3%|}>`6sG#S*U5g+(ZztTDkv$xks7M2MuW?LkT6f%t&x$OY6Rv zcV^k;J2zg1GE<^nHjpST8>ywVF}8~92lBBV!&QpjonYReb9J31>U@}@HB!Yci%~{4 zxw*oC*o>K_zxay_C}l3MOC_6NEYb}5$cq__z!fCDX&+`_vJoN0n|lde>=GijRPf~n zl7n6BIVQqZj!p;!NdrkfPN0_ zyGb8S5)(-S=-S->97REA@6c`w-8!DcQdn2aI zxM>jr88u@WB+{6l&9sHW$s925wI#biQ=bzt#Lxp3wh37!bUZOy(UAsh%2FMmZP$5# z{Flm;b@R%bH_-4sv|Ak<*;rQQTUmxKsgw=i#Ob353Kx-t*C*)tYskG+_FS${G@Igg z+uc9F_Q4L0t(}JDFn?81^sKivMpT2Q@VG~m5gM>D&St`lAjRF6jMhX9E?l~H=JjyO zfm>x_;KRWEh=W`XP3SJo^}-F5fs)yfhOIvy&hz!+R5>3SI!>Y<+ATcU3X#iW*`XL; z;lP&rnERI}gRfFFp`JxUr;&1~)f8Vo7-sJ25<&-XrwOXKfaxW0Y)=f1*4Njtwz2{* z=*myhAZcZFRrcDI-YQNUKOuvTI2y~(bD$73LW#AgiVA7NmvuxMZBrQ{(fEjalIL9aU?>|+wml#A3XLuX?}@{xQf zssgj3$k7jSPlaR$CQMp1vv43qjh4mPp|*$xf~6Y>`E#BtRwxbEf?h{aA_0#TB&XRf zFf|p0sIp7=DKrg<#Z4*!k|nL0y%x}GvY8fS>vlvpuF$*!0Ou$k(%+fv-_?d{-Czj+hi`sTB^ zwYf{C5c;F3{0#GtnA4OLi^aa0LRPpN>FIP@g2r*vxOw|6T)lQ1X7Npl0=T(z6|<=d zwKbM3Y;`uVapbsYG&YVNkxip6$Vhi3SKh30;lN99vS~{Z{oHe#aLoi|lmpbICCs!N z$^CL=@+xN85dED2PA{!u=4I$~Hl!h7(GpT;L0Yc%8BqLTMx{-xAj^Mj70zhhU>8!wu6?g)I)zlX-lU&M8s>@x}t} z@m?gblJiTNAvbMjfkRBK0^L{3d2qWL9x^`}4BO%{K8mvO} zK-8AhNLnVjX_kK8ayh4#XiYM4GPGSwIlX$?*1D{;i<};2h>=PmNK+yK`<}vosEJ}N zT4h3mq;W|ewNN@K8oebciW;GZ)zxK;rz0F}-oa>`V=y{E6iuYr;rp;)tZGvqO=Vt0 zrX-8X)H=C^hN7m6)(tKZErzX&p@!p04wHpt^j25iaSCgm~;!oJFis9ggk78x?;$W^-v$RoDSsMX?6t^59XI+-o82`}5%MhI$ z+cW!~A%I*@PoX+Q{zSuNt6Vu61r?eqrV3S3M$5Z(o`rJAgXq@ozEAmkv1C4GqGzov z<+vxnCaJQi3R;sUR5v;G^^mnNS8lz$UpO!0v(B}2e=txih^{A&k8$F{^jx{-3BE~DFS2`&HV+PeHcjXuk? zkj9n))myLML~76EJKnl^M@)96vmu`QvnzPu;)6JI_VnRiZo3kBq6Ry$3`ZqC!FJ`d zO9ozzv)U$HSLurDd`DxRGpGziNOTc*=Edf3zCOC5Rc0*6t z6_+1=P_*b-q1IL2yGxyAOrxRvT&LZZ?8V4)1PQFfY-}QXv2AhfFy_xD4Zb)>l16Pd zm7i7vI799;x=J_0hBRyZ_b3`5nZ+25XE3uqM#DY1Cm*={1iW4YSFXN}JGT-H4k9cs z+rn&7b=fPmiGV)~RIU=s15XDUOZHEoia|3M zB#u81yF@FrNs*RzPYe!hN6;@$e+bd51yf}`6{RUqeADg8k{M@Xgl$hmu5VqrA}4B) zC0O_eIWYFY?H$%8Vj#)W_PaoRS#dtD8tJ#!wekxQ) zOD5K&C0Z=V(_FbsTB=X=0!L^qq*6^&6}HT6CUZ@UMlpH}m$U(gOS#ZbaxvE6Ld%Vai#7vYv(!bNxR_#qRlkMd)I+nQg0vC&m`rxW*npPz z4D__J1mlc(LPIeu86L2Z@RgYZ`SQ%G%Pm-LCe2Ne`O1d46p4g7Od5_Tu?V$%&df$Y z-hZPf8&!D1L6j&|fp+M~9ZUuj`v%5LH3&%t<$vOfAYFL+rY(YhPS&qnc@t+YJbD&1;unB27$I2Qdq!IG5`{RJlZ~bf61MiW1wa&m{;=lBq`4Q#v*I zENm)S@E5)`3|7OD3AGBSFQq}@G#9#HuB1pdrLm)l@EL_oW2YLhHq z97>&dswVob%3jJcH9(m;vWU+6y24Q=O+joUwiNAa9&AkdooKmALF_oVC`hxeE%DiS ziTkNHZ@l>Xd7`vRmJUiM@{iV-}ki?W=`#C>{~!wuIg zg@|$X)z)YP8xw|`*Y~45ZGI@|JsT(vB9cVuwJiIPUUu&xYp${=kth>D(HlueMiC)7 zC~;6mXoi_k$42HJ;@A;Xg7?;)(LRi+DM%uzo|7rB?QCB0v-k~NSM+5gc{XEl7bbEl z20dO|42i^PSlkgap#_S!lUdAXCxXZs>hn348VqqLC)V&%NE`4wZ48o4^ccjIIq=L9 zy=I8PEESZq5*G?j2Yb5`OJaGAxoMW&ZOYzDH$OUyE+|eHtmpMAL0Yne8>3r88D3?91wW-UV1jru#@=v%TRSgf z)E{Aguf#(aKY*aE-fMq<49jyBLNrPc`hmFTivJB`Q!E?POz9&XXCy-miPbPm_$Jp3 zN7fBtsQ3Z0I8wtSO9j`Xh|yw%O)`@`rpQwX%TM{WQwwo9!(ccPL~1rw+N;D%5YJTo zp=hFsHsw;LWVYogqpnn&QPE*o+#BftY@!Y2QaUrq)EOxj0jal{1BrS~Gt6d%3}aab zF|@tm1`>hr_!Cd!#L1KB1R?Km+2donsgha4*Js#ylEUR+##UNf7?os*4#vE`AzH0a z5JrRAS3$cfP4_R6rnxX5_*_%Az@eroIshB3))In78|iF{S(;$l@1s8|MK{^**|>P_ z5zO*FZoK(2OtT^PvKMr4dvXV1ct1z&{-KWhjoQ2L;KarXX28f4#7a#y3$24u<^!DE zjYbD(_>Nf1j`sG|7jbN~+a35;D7N!NThe3(H)zO$TnOjBlnMFT+A6Bb(e7^v8no4Q zn;7k>z{hhJP9a!v@Kb-`BY1#j8{2pAXD|N%zx|uPCBNTWJ&M)U6$D{`(e43my!sZh zaw1%CuicbvAg>W(Jei=kw2U|zXq_3PDX2j}7K>Fkesdpz16l9!3k*(v|`ai)VkO#>Sm3fK{nG0{eywZ*fF%$ z%`gyzt~76ST?zsRDZ@$~50jw*(_?UKu6`YvI1k2EiKPZz2is7wWgZNBSKias6GPPW zA+wPBPfg<$ZI%B>!xdFjsU|gDJ1ux@fTfn{q1VhLmudH48`-23%}zyQ^D;&l zhKOjl-)sw-G98oBqO}G^sWm|m;{?7(#sVmwh{zvVst}v9kiugcPcUr&y;fJWP1KKc zm%38GGb7E_#mJ3UU&V!|E=Y02-=D@Y4)*&PO(qCeJlR}%zHQIJbUYSQ6VbqH#%7Dtf+8aaaQ!?92CW5Zq^~RIZL^r zNq9Af8G_O&69_gVb4OF1Gp7(MUeQXwdlQt>R_C4f5p|8GhF@nKG!&*F6hu_ZB9XOJ?kAUQ2Zb=Rfs2wU z!cwdnk+_Cx-1z+yQi2_6Uie;g<6|Ss@8?-6Tcf^WVIx2^ie)_zlp)u~N~U=iB4%m2 zg+fRU?-9{2v5{N=+T?5#^y6UQ?&Oq(`$W?#iPY5Z&Hc!+RR}T%Tv>r=qKj{{jb_k< z=ao1(IKV8O3Sv`41uB8#Gx!0GMhr!XUH}iK@k}+ASt;uXk?3x(i%FEh3_TPQ67Pvd zI&8MI#z__E4DuGFoD}yWmivyMokcPYJ1oIJGR(%CqI2uEdzv;1j3#513&!VA+?F9u zj-;ovnaxNYHWj)vi`021s>?l^O(PMuG%4i2=cO8|xTeyz^8T$j6qzQnZbfl~C>mpw zWr*XkX#E;N8_&NO;=;-~L~e@L-+T$>o{P?@HCO?Y{(OYFGT+$R-^b3@ZP>0Ulw{j% zAxma5)S(#(^?Y1MgGL}!=?tk1?}QpCt~Gj4snN+y%LUrqu3V#br;TVll3|sE!xw6Z zDPh)mEc>`)YscPF4U?F?O51x5)hH`a8+;`iHCex0XYN=^VueCMwegom$>`=P)>?4_ zuN~@hnyGBKY$nug4nEYtN}1Xa*{a8}rC9DaB#V@qFq%*u+1P;Nx}s%t!w!~LdQwYq zP?4p+XwGDfrAwqXVN&kJjyNyVFp2w{<2Gd&z(F#9o*8beUHDlj17NLElm;Tv6e@!l z4%qmOi6(Q6nXdH2B;@(;y@2x#(kPp_cYTI5s(jGT8OHFOj|om56Q&9>go~6X31w`oH}zx3OPdRZV-r7_EV2N zietx5$pXd6=~$AzCVIMT-?ip1)EZ)YFZ_U<6t8DdrpP)S zozGOjZLMK#(pQT#jYGT;ZMxSHDVXW0K2Z{yBeUiz>37B;Y|S~BpD;K`!{!@zM4aAf zg-Y~K4Ot})079{wB>R#fDTgOlga;KY$*;&a0+Ub&e703ZNKL_t*Idz8e;Xy{VLu*^V;KcX!S>irrm$xnLw z;U5O5>n166fKKdVFp6>K>tDzBUwlCtvS#Sv%=#HbgA}*7Zt4wkCKGEmifT%$g11!x z$093Hnv%+u>z^;!DrB6vOH-GM;~PJVQJ`?Z?nN40ZIV>8 zVG9qrl_;v9+-3E|T{WvbCesO;%`W01M%WCna`^&o-@1l>_M5+jZs=hz173aURlId$ z8+&^LeBkM)(CZ#WRve(1O~veh_qUT3h)Z>S0?!aFEbT{W<}(p}r-)>v(Ud$pGZb{w z$Q4zU?OaBLoHRY(5+e98%dliALl%#S56_vYjYf!MH`{O$I`K`VfK|cOmZ;Y}QqGy< zWpnDEXt%{2V`=3IIah3?$MFO{si`G11}88=OP;fg5B2{8B8Ix@w3Jas!*(!D3XC~~ zX?F>?sAY)^_Ec2|vQ!yZ2p-OLQLlX8GY+(T4?z*a3}RW^`B?_#0h)n_UXMeS0^8fb zet#rGf+{y*G#sJC6PzZh#y!tz6f#6)#6vvUN0C(UeM-7$4nq9IB*0vY9jsSs3ZzZ{!Qc_4+o zWwm7}S0n+_Jd%7mUav-JAt-HJy}E_?W{$F(VKky_Ai?A&PxTlmLwJ=ZrXiNQgyoG5 zxeuMHE81%bgpT__;KD0YWc;2kJsmA^Wp>4!!^U!}jX3g<<`bAyPniLVDiMvc?*t%s zw=`nW=_Lq7Gv;~e92K<70I3tfciKp7ttBP9B_87-o?-dOszfo!^Y3!7XCb#@(abUq zqq^(n^i;%z=<3xoE-0^4z%77Oo9GZempC9J*GF2hdXB@CX-B0Wu96#Mw3WU zI!YUUlP+DWf}BvuTJyAtu6V95G@SmyfjAcShhr=)E#ZCddmldisZZ-dNll=_up`ae zx4!WMeDC`&;>k| znH2ZWKmUEqqFo$6e;NP&um2sa9ovv8-GmeRED@{ss6WR3Z~!x}aP9g{eD-sn#ooaV z{N^&&x;6rvg%{>p4^9EIN`=8v|0J7<195RoX>n~B*gxpw3%~nCOlJGAtu{Q@MmZzJ zXQnfJCW4C4u6#zM!eU;XjdBvp1YEQZq%?VI@~-GmX6-XAMjX_e@Vt^0)>@VVp_dbD6GZYl|&dv_vBt_r{(u~suvC2zK;t5KpG1nl~+BBszIBYa5 zv8|?=h9gr?>IA6K+TOZ@8N+iO8&`kuCd$|rN-WXiPNypyC$n&%O*e{#5xtb-x;Sta z%sj-8F)QX;4Hj`M8l=JUl>3FHL#!3zWD9lAG47!@)oE%~rbP8x2PQfYaRpQQIkCu& z)zE;nI~IS^(6L(Oq+Z@DndcNKts5yl+CD!?L?>lthG=;#?eO|eq1yKzb;ejlK!?}m z9(tD0G0V66jVV2rHo!1d$hBoCO|0S6qL4yU1S`>3EH<~iE~U_Q_3O#xJr|UrMkb}G zS$t1RDZ6+s)H$@~PHr?`;2Ol&kesg@6>+_O_kx`Rf>X0VyVtAHL?=q3{{+S-C*!Lr}v&^$UQ`NK*u#P zp)QG*aouwq(b*(MiH;cxy*Vm!S@+9)QJY-KgufEaoFz2S zAoO6z4kGf|xsD1rQb~8t+vv|n#0s%GPYM-0o-m-;0on*;cwp1KgC&7xIw-W%(HUx{ ztP4cjg&M{Nngyr9ti(k0tIC106kSp^8Y2q>#FGU32b&0jHa2=a4EzH9-7%0x^4TpN zcR6M`4hADkCSweTQ;f&kn9bh#JJrY2Pk&4(?V;-+rwfI)f|qBj$Z`DG2?_A0 z)`{^Gqv;4w{e{Qy?B|}rvu`Aby(P5E5bd@kc_7JSM1zq+QH*8HILXm&*`kw;q5`F@ zkZa}&vf1#0P=*K8Kh5$fCZkfGUB*BV^<#WNlf%z(gz-3%J%U3i#%4Hyr`$+QR}ixi z|1OKsY=&~Z6U#%)$c0o5aCfE=R@mOV{7wVOZcDk2nYq?+SyI~3m}hV>fSHzp$+8Y8 z9S6hl1npK6eH7Twr?|R%8{c^5Px0+v-{*Z_0UR4qBzzEbuHOvnlMx;j^t8wNhoOGTI_n*UFny zO99_isFoS{2yA7HM7=B5Kcc3t6-egmL^u#?ji;_sG~di(3mV!)Cdc-jP29S*2|Ks( z_y^uA!)$8dZC6pu3z3gdr^jojTs}>498G0-!+L>hFLh>K#t5N6)^lTlYO9QeRJJOg zA9-daq}-6tU9$qDwOd}n1DDzOjq&=`H}T=8AI8b!7cjWc$4jr?!gy?pB*eUTN_YSG zkv;A=YVX3sv`bmIZ95kVMS%_qCsqE8qY-*tPUQ>)?EuG5uZpu+Hi^(5j?h_Z&z-LN zqaj-D4o;sriw7=02%kus>!H2|4r*QMwDHMb{EPVXCqIsJXHMh9(G5ZVxXIFt z!qG}^76vQ|T!UG06+Zn7pTuW>`wMvCdoQBVZlUd2h?4!e9e$xF{3U6BoJ8gY`caG* zUwIwJH%`bx{l?X|5J#jpzJjm+$u1svWEEl1gx_mmMuD{BVK?rJ3md1UEM(&($8?l| z)cbrI%Vyz9v0w-#BnT|wp64=6XNHe*e>-$kC?$`EQ#mg8Zab95=HO0@aesoOQOZOU zNgy?RgHt)rM1&XzgKcTR+n$HXjUhVi7S)D=2u=G_L8e^4Cyf+oB}rOgZ!*K|V2p4y z!-o!@GF1w zGkDL#7o{L(gGM*4L4R9<&Z#A1NVjl1#ZbnF)yU+&DRda^ArizJAQ0>C$uvj9cTrd= zW>pT?^2F?;$uR3tjM7%R1e3*SKE`B{Aq-n`@3FC)AEjzQBvXs{MK%*%Cmlp<1dr!4 zpNA?ts-vrEk)|VhLfP=eMPMdPTK$=8B+E2afOk2y#8AOezpR@yM_eC?nDV6yiCxq8 zuMSR!&J(g6b4~%{Ju9K)3j`Py46N+zX~AFUhPS41DoRj+qB7^j#=S=_6ry(^)s!kS z!4hhc8WhxKA~igwD4Cib$ZSH=bqilMk*cOknhW8%{9@i(k612uLO0jKca+K%^OIMsAIaF~x7J&}3M4_~f=}S1VSdYgM zCZ!EKvk+0QmdP{*?EvtJMAOE77$GuUq4Djfu^?==9|}@%z|5>-3M=%*K!brNF7LB| zbm|B>hjM`__e7R>7{!S=k+#Dw`f(rQ=?vY~5Ex~16C5rVrF}0T>`Sv})^y6E6g^Z4 z8^tt5vk@XQON50fO}JcVqrikkYJVip^U#uytcqB%Nl%3SIlqm{LbRyWc!rl>dJ}{3 z4#JfseDudZjI-w+Ks+t+gYR9z?q($oxZNNnRz))~?7WywL?_j3cJROh58(X8;}W6r z?4SJ^W;4=wr!v4{Lv;DU2eG?1l&q|V*_L~b-?-UWl3_~*MTtLs`mD~jQx2`?&z!`A zk3WRlU%QB{?JM~HGrzZRj(C5J=jRLa(2E*{)@o-rfz@cjF*Ep$7FJp(V0s}M9$j#! zI2iAP+>U0eiDr8uS%RylPr?klaGe0rc3*T|w$J#DK%5cH%#qAHA~R083foCgB`O+* zZius~A+a)nlOd)Kd#oZFf?!Nxlh84n)Nq!uQ2KXw_c7ew!QKu7mIwDdg}z=}3S9rb zi$@=N0NrC9?0q-JTi^RWITQ8M`sbTkTmiZpr*QJv2|Vz~V@QHfq#H6&V%$guOlhXX zFmf!c^>m=TE4so{PR^vICb2MTO3#tCg|dSr8p&Gj6^;xecphd&3@geNJ4ahwa}S_X zYr6-cT0)Y{)CZeWl6*WDT~qwuZ-^cmjj3?_l@N zKGs%GVs-5pZ1Wpf?k*$R9=}6y&Hdv?^|;@ty$g?0!go!XFjiHj*Gip;#toE{)5Z*^ z&!0q|COA0Q#(OS2ft9u6xODk4+O3vMCM%gtd4jId@|ulB?H1f2-@s^eLud&qTTPAhGVOlVG+oTH1Ut8H zN* z@k!a#&smLB&NhxNeKuY^E9bY+h8UM~-{VRC?2i}iUr%niR#>O%;Dro>~$FBYT0baj)1JA$m z2L9lye~hdBO>~+8hSLc)dP^8?^)cAGg;S@_;C&zc7`#@1H3L{#U&EhFkiq7GIt^~1r5Pe+!SF+4VoGUNj6yjU666ux zNh6SEgj$|}CJd&7>0~C;*H)_~$Rgdjl$g6%Xi!QW4sJ;UXx@`C2t6365w-eoI0+>M z=!euNi}`9agsIF@_cBTc2bpdgb8V?=z6vG8uXLa_!>Kh?K%Epn08vlZSAoT%my=?+ zkmr?%n5iQtXg(sQ9AszFA}@47ZI~sE61X|t~YB(MQ8-FCO(?l<*w8nqtbU0 z(eb3ww1_4$V~f;U8JaA%0@=K>OT$!;(~G@maR~naQ<+ zcFENZv%uTRSf%#Hqagxa=zKH4*47;ihmn|$NMa9nXMrpQ05hPOZ$tN;4EAmF?kBXy$%kBFG&vL>dmZk>skeq#k*F=_q>Lo|rvM zCL?h*mGFA5C1tM6eBR-(w3{x6QC!Q#po0ygVS>`1Njk+~cMq9q;riAMp#k&R+TFeN zukAj!ved<=|H{9G#~*wQvssSc`e%QL&wuWp!WqZtQm4b>m577mVYSzTAGGkXPkbDY zJ@y_PJ-QChZ^-k+OT^}pLq+DY@$(U#`O=qvAOFpN``<}u|HkS`#Za&+G27uizP^4$ z_A#1>*oK9b{+H z;$niXZ;3u`b9e{SGJ!uD;rbglFu?VNriRVl6bJIpu3q4u$HtjUc<)nBqSkPspDX|93e%7t-V;Dt96g&TMcYc1DIY1tS-XNX`z)i>DlG9 zVIaY+;cXPV`%nqyA)a{RaeVOoKPFKEbS6&S5S?xtk3RA^uJ2Fqr7wR0$B!)G7k>WJ zICJI#{@P#vck#XFUPiKe4c~a_3IL7}EaFEFQ zGnM!SW&ygQffZ+4)0M#|uQ4SZWO{I2l~qQJXJV|bui)&Nv$$~aJWifGhDnrQe z*4j~nt0F)&rLwG)A(EjqyMTJn^&@L|mAOGeY_Zzi$;h`dOBg{y(p^nRA_^=6Uxx`Ww!f7#X$rou@VMOYNM(ykme`}Z;I>ul6rC-ADe(@`~a^)&EPIgqmDQH80lJt;< zEgLFzZX0Vo{NgWs8V@{t8OM)qpw$fJXCnxOo0N zmU>5EPEGvAKlz7%86ogo1PpRBoWtN*x)>%A9IuJ9N6(4@3emQc$4}sI{OVuAFaOFf z;mXZzeDO=akK4E3!v4Xw1f$;CPjPYey~xWLFTHjJvuuLPPksoW`qdFrEBUtLDwS=gFR zaP5^H{NCsPB{nv?c+Z1pvAn_Qtc%d|#Yt?X+d*@wjn$=&&{TO1#LPiv^h!uyoUfz+ z`ot{3U;gyZV(a=gmb)%&-$A44BATQqqf|D%)f30iTkayzR_>jZt}1TR9K-QgZd4*B zNl~B^Ht^=HJ-qPJODOUw`)@dATLEQN4%;b_vyop|aq5O=QD4P^w$V^dh*XM|%wF;) zVjbVlGeollF6ncbCHlfN9U_X<=c7xTs#BGyoK!^=hfa6%LmVed$uq)TO>I0GhnB%P&u_lxJCo@YjdE%%ppc=}C2qi8Dt|i?bw=TCU~e*%)0blyx#Nwc*D+_FFZgjuQxq zz<(}EK4%^#lNfh)Zer`sj(qX8lSgoTV;%i#+sI}qmd{+kgAZKBrQQm9M?;iWh;dQ~ z)qQnk4VTVez-p%rdMfVh9bh_`pwnq$X?Yo~PJor=HddE=SY2P2=X{owxP1ORI*nya z$GeyoO!F#`l&LiT%mIA#sV8yi@;R&@UB~j$s-P=;2H9vCm7-)yxHxa73i!k)eiFa- zU;Y}}%{7#zg@jFO0WmPLS|&Q3#@v)g?seP5skL>S_;?RbJ^3(f!x8sY?s25yGBm++ zY+2VPqeSu{ZQDR)kOAV#iA{?HjJtM91Cw!#(J;n#l%bl8#UzQY#=Ta6R=bIVg8}}J z&;JYj!56=R-}$|Nfe$_YAv}EP6i!|`iW|3ofNwwheOR*@rsElkW)HKXz<7V4?$K5g z=Z~!6gYUTvGhD%Vkm7|`|1XS(IZCUC!Wm*X9-y4X(zJB~A7?-GV|e;QkK<>5=Hobh z{4|<=AOkSQY!rqItE#Zn?qGK`!TXVW~k}n*4AyT1|`m%I3mo8 zlG%`n(yDTg6jLdkvnC{i(!ti&5QB6d{eEAx$s0%3;Oy^Xb^SQH;i_oA>ou0H#q{hg z(@Nq|+<;o#63e|6F|_b)Foi85UgM z6IaJsmLndI&>uwD+}uRJe}Hr6PvPw8v*_4uxxc8tPLo_^Q&y#DkEyR^gbC@9DU@}; z3IaEzb~%0K3|_f%9Jg+6V|AsA%aBTJw z8?vGH*4A_g)|>qSvcyEMw=4}R(GX6UX~oMu{rH)qc=VwQIEY55#Fejt zVFxg*Qkhm{j2)nTu!FVkGF;!qv_Hn?<`xFg7`JZT#vlCQAK{HRUXsm*Vs|18bL_xU z=n8cs+!ScLPHo1@#wvd5BR_@rJ^G|rf~Qr1V@Zk=z2mra;gnD<&TOoSlN2c?+#sn9 zA`P<<__9gzT(KCZNjM#(>QFkN%6O#+r7xX3g|lZ)V5uDlD#rJr@d|U6n3YB&6_2@S zt}5#5tRllTvE1znRgN1Nr;fLFcJPI-eH+g|_ner)aXL;EtJ!Lyj0=?J3|64DFw{6D z6wy1%#6^Okg)(OeT1JD#swujN+I2n8wX0Y*H^*R+l2?D8?S_u%vTL1LO`TF&oZ7Wa z{#%_HXeuN}P_1GyX3jhm*lQ$7{j4pNXh7u%n&!gq)OPYUB9T>6GbD9@Zykdmw(m`)v%BZ0(L06YDcu>bQ)R_9 z7gA6tdX;B+DvokQ4dr>yRHT69$63Byqk!fNNsQftTlm1!KaT(X@Bfc7*kQxV>Gdan z{u6>EUw>;0fBLm=;h%r`%h(_6qq)&iUw5uqB;`>JvrN5?MMQ`7HzVpV=gKr>&HT(~ zK7%KocvKwa=x!=*u`n=5XVTOS^AZ7vQLze?Zs;sFMxTUX8x2w}+4p;nTu-{)(iA3{ zaxBMyf6_fuOtMJg6pn5jL9^3FJo&%bd+%V$&g(w#cT?ZcIli1HC*%wwkQ78pq%9Dl zSCnj7yGj z8k^!Ea)mP2BKOh{I)=>}&!<#Dp(J^s-Rood>Qz)KJ9zx@$MNG&Jb|f0b9^2h3XhJg z`)OS@tr)K@A?dvQkYhhW*6RrhD7jA30FdG~g6R36fde6VioBPlM+o_mV++V0oJPG- zgW?Wg#lV9l)<_NpIC$tF78e)A^`>W57WbscLJPT}S7js0y9&|mbul$H#f83Z#9+oW zM$m{_*p1$o+%RLR&imJZ9B!jQ#ngC7#EOvaQj+#^=c3_YPz?F0Am>B64U}kj5Jbob ze=^dx1_64cO&f5z001BWNklV8VQFd-xm=FdaVZLZ7a{VJFk^&_8B@onKXMN|*XAaTo&k-uvceman$7X( zei{N~!)7-OB+M;NgR2QPL#0*~;pQ}yAUb%c z!H~pIEpP|e-L120V!hVHEf1c;Pk!!m9L;m>+6w;YKmQ)N@FT97h^K|o67Q#qieS*; z^G?hSiiXH$a>!+~u;Pix=SbzXn00Jn80lmENLLv~dSPNWNN_x#e-#`H*!t4O2s7fIQeo=w!;>nj&g zD&~>RB``Lg!rCr{hTm+|ZXV*e*{FR8kN$uJBlK_&VA}>E6 zoyGarR*=q*;nnYc4L|zWop|`JTd*`c$%VsMDTPNq{s>-q^>u_^Q&5~V9eRv5qXhhZ zhYdw!qls+JLQEI)XKElNhz*-I<*_jpg)l9OTHf9yF4SpLAhQq>L{oq%eP4P_n9HCz zS%T+x**mWQIT7zL(Axx zN#>C-jS#$Wv6b$?Wv$a;P&mV(2i6NY{;=4=He2(=2|* z_BUxfS@vC~I_sLlaSKC4n|u;Ozr*L1I(ttMO{YKbMUzJ25FQLT0);2*d-^}eL15|7 zQyKJDH<80M{_)TK0uNUZ1v=B8$?0h}ZAjrl%MoNyL+^U+VZo-8M#> zAh{RPkOF*G$!=c!iN|H^?(E=+PktN^KKv0JJ92;a3rIRWZU73InesEIUw z`+xg4c;vzRkxQjn+e^7sauoVIWKHl;PKtgShFsWl1Nc564V$ho-5R6dU`Yyjc*mY6 zs*G$Zj=SzV33)rf^5#V(j2XCcnRS2Hod!p-&^=4fglN)3(ST^WSlei>Lr$WRt7)^= z!SdBNaA4*ma1-=wk&e-Xia2^T8}Gh*0maEVOigQus|J6Uj%{;uNuQC{Y8rkS6pIrL z4Z`7YK^;cCgyLL?UXjlapCw6HqEf&%4f~j_673a3H$fVzid2kpe!cZVS!|Osv=od_6j}a32p&C4LD+#T`P^DV z^0|2;8ZNC(wANBRMAx1eB1TMQb2g$nH=9i!R&;wd);H_ec6zKs4uU$`4F&aP8Ro8q zq)UcY5_HLhMC*d%g0?!+!_gp-w5OUX1_I&eJPGDQAvcce%jbE3x-dO~Ba1q|`K=l- zG5!CGdiCb<|NU{ZQTs3+64(-+778m7hn1kf#3rT^bI2uo=VWjp^BGHlDck_(7b!^)9^q)^~ue%Z;I-89Z4fA1tCCJp9NHp;Rb|bHv#vV&kJC zjFBpY`?9Qp(Z)!dB+(++eq4?wvE0bWh+A^xAeiACHdP-sA^{4y98Z5^C^1jou2@X?LtHjrW3b<690)`DyG!VW?It&&<3sj1W8Vc=J#nn)lMn;q! z;XEZpn>C>#m#$vJ7ys~S9C+|J4o^>t@5I?=66aan*xJVL{@1?(f+jxw=%cvn_S-Ny zK8AX;iK}Zj_!?xhX;kY?eEr#P;pxBlD!RRv(4zSvJB87Ekzocmy&U{4@x33Nem*4Wrz}p8|C{SoDn9wOmD^e zUP{PJWWvb>zdMNHBS?Qi(O7h@`mUJPi>zw#-$^P@)Fo92w)5St1eoz@A~-wmm%GV8YJStXrDIHEP~9Ye|@ zHDD5lI=fK-_E3AahbRv31wlc=C`_6@r?8Y4g)t2}h}K7p17aG~P-SHG{RivNWEC?r zz%8dva^c%+cVJi<@tLRzj~YOQ!^1sz)YOnZkg2DF>Z&JFtZ9kGE!=hYU6>>amMU~B z6go}_0-+FO#~u$YCK$_-Kw4;>4EGi6+|@{;cn+dQV2GI}5Fy@S2#I14xY!m&KmDi7 zSddiAjE}>+TSHsvqp|BCp4VXnW)#2R!HVtOAdyOl$OK7+71tmI2{gOgd=9_y zjnhnXY;@|d(ixsTIQ=eP)193%p8V>Qxa)xjIV{^!VmzRr^XoAUG(@lOvHcP?%Ee4- zG;rk48(l;>`tGB~RoX*G5Ly3==0#jHI`2c2j$2kqG_iM`I)rOC*7;iP)*6_e*xP&P zx}??NBO(498dwhZ9Nu50;Sh1(Lo@srKK&wpl2AiJYKclsjaw)>JpS%t8I-u$tGBwS zY+pkmm*;arh$#>A!hjhQG{jY;7@NkBzHfN%4_puHYoIH5~nW+*Rft`KxJT7lnar@i>EFD}zd`!k;cRqw;M`y5fc!`I_ zJUok=_~^$UWoOL)_#ggvlq=iFS{Zbj9psA%2IJ|R(`U@(@*IUhgGbT^vn6+H zZP>1lT#TN59X&rpB5iU8E7AVrR(cPOjD{V<-%aQp8TD}Bdoqh`X`Hj&bT#(3?lCuy zADrW6qxK;@lxXp#S+A;i7*J!SYM3fbVW#9GIZ1gSr`W`Uv?U=oW>G+G)Kr9FINDSd zX~>Hr1CBVmL~Ke(tv|YscGWkU6MHeBZvYaLr=IQQNSk8 z!nBy6s7S&oj+%(!=EFauxmn7@XFvA@-a7jnTD#<)NSyibY6oH}$0G4mY8rp6Ih z<0$2`7@wTQ8{Y|#&!>=xS*+>l)6||Um31BW-TMek!{UvTn_1cjL$T5Hdk$0e;+DmQ z>oA*3)GmT56+&phs0ic0OF|#%kL%&a^>tKhHT3HpqzgrUy%JXtPpgn!8L^ZJqpu?d zVgGD9b)>Bn8<0rD&3RbZMRX$CpjE!ULj6PZIXR+)R;pDDC<`Z%Kq`@hscTWtvuGA* zqQ2W|;?m`H{MjG>CEh)A8LwY`3-`{>;L&^T76o`1VsmpFfAy7b;pwmZH5zsegL(_i zR-1K$?M@dLE?vgz^;I^os5TqeT)TmM+(IsHa9SJ>4je*Y6dv8iqWe;gY_7#YI;rpV zwW7~jt+tRWkcUUKT<R3)X`C~E;_{h`awU^c7^Zh3Vn!(0}k?zK1UEWvNYVF z27sCwH%eA!*FO2ZkSE764Wg)NDi#%?6ZDqhOqKZQ?W{VD8x8{f#}!NG)l6@YaumhOx3eYWMU>fNyTcphkPN1>DdVm z5cVRMxbDD#LIt*I@$b|asT9o^e~k$6kcR()Jr0>jV3Ht@TA*Pc7joe9&Ta>$v4_sSD9p%5i>Us;nma# zu~`kBBgx0|+7=u;#BA2U*yJSJ*AItpbPk#=f$G~m8-q}ErZGiaKXSRWOcR5FkAAnq zO%g|x#A1k<8V@>YU8D1A>M9zQUA+GG8FU-B12~4su~KC4C5gr^LR^LnhGByyeu($} zGirXBrq}9VeQOh)o-G^~yIsUo33|qa5wjrsDh5zc%*0sxcV%-6U-&OiVyWQZ@WKKT z=`4Ef9(JoWIJN^{4Ori5`zriy4Q4EXL^93KN3Yw(%P*Z__u~19DU6R5`I)C&PeQCz z&EU^S8aL5Y`uNws{%`TokKc`KK8sk)K%ZG1HMEFs-?CB6Wf=|AV-`wzp(kUzdjZd4 zc47ke-*YGGKl3wq{+rLB@AmjUOXYP$2A_PSi+Mihgl2WRee`=h-luhvEkwgW%HI?E zeGz*>&ka3ey!`qS8#!;)>K&4(mCY@pwh>aDf(PCp08=Y<&-L?bSBztY29K*%; zp=v6sT@@A~E39Lo&%3?7gJ!jjrfp;G#x^dzd5))W6ueE7HL~<=waIbH;VC0guo`Lu z1I~~k+uo~mWGw#7oN?_&vtx5hbU`mruXK zMKKkQFau%M@d3@u(6A)*|8{+u$PIh1E#**OBfg8+TwVXYuNi(1ITE$D!e^RssIWvNF zknSkg57D((qD(_sRhfEBh6~MR8}~l=08*(e=PC-b8u7jy5fb!790O}k1$~Z+L86h% zQ3FPQCuEY4K}JzYd*_F&S5+0EfeYOb^=1Q?cWQX+{0;0}c^yCd4}J=>^HYLuOK7>Q zG6NxADj=xe5Z8rTZem5~!zN9Qo+of+?}vN$Dy^@(l^W{x2JX1!P813mfx1wW9fW9i z`dHgqXMOGV))sbay9i~CZmUB3(BF((uYN zn>EbM&LESIqv<+qlWxdy{OAwghuO&!NLm?8l#1B8vI<$w^1hQv#j&_B2Sc;4ymAo( zH$b6O#CExj-D(-DvFl8apPxGjGp2Ck@N>U3hkx>`pBFSi3eJ|m&Wh!o4IU7jy5$r* zM6xM~ESx$OX%CU2$LZZG%lN}DeFNh`6^}jfI3B$B4or?uFdB1hbptmxws?QqTHC}n zIfrU7OrUKGRnrP;vyQF+gYNm%;V~^zs9uEx&8QR(2#@lbbi_@>4 zW>c5q_!v@w2d~>gFXc1czrW+4qsB3vY2)J$eHz~_xAB#)eiKt>g@-n&sTn-=$IoMJ z^CDEGhtlFf$fk;3Hwh2x9IsLso8b(=Uaf{fyN_n8iiaP(2kBG-Yg?PBbrqzNG7e8o z^14F$>r~1>0|h+xiH~4@ev0c9+Dubn9Qj;M(2WCua?+reqEML4&kUDvG_)iw_<_ZF zJo@kh+^EsBJu@>4$R2FJ$Jceh?!JO{NmlukIV*}H32{R-Y0?lG-Zxm1h}tQMVKWWB zyLJbSW|#MkdVM$2;JQ#_CO-AaPq8C)-|lgyBdz)UzKdKYi}6evI=MX$JZOf>YyvVl zqk+i?sSP7)Fb!cPL60uv#~`VG*X^T}&hsR6 zRNI9>qtn6ig%y1D>)%2tH;2O~#WR_b$%8 zeG%ONXzun|gshvw^1tcy(d$tVwu5SU9c_~w*BT;EEs$7qq__rpnvZkmF5*jn^aUtN z63aKXvAR=+u9Llg21h327(cv(Ty7S%b_IbwK)2@M^ed;ax^@F@-2o`nI;r8O9{;C>>C$xa$yOrfd@ZHf!FK!?ce;rV3icCUcQVg>vhBvDI8mv zM?68{ygrJ-5rFyf9)zuAjJ8f9H!3`TZZ_;GkcEvpn zB?_>PCKgomaQ@dmhe`480ftizM$@EWHk!xxe_yhps_$#+2qodZCt%IU{yt)4LNL6Q z{Jmz5&<`>%@ZEvP67o$hE)X?#G?C?hR|nh|(a*vtxrsJ$UvW8qjWl!gGli(h`;rwE(>1mXJ{UKzgPpxfLmf5t82#zf zb*tji+74cN<-2hEeY|w$B{cedoPO>ZeELT}4a+ic`a3V;h1cIgWw!#q(Sa>#C}c~3 z-$B3Gf^2C}kVm)YA`=(U8M@^oVJb-GGYDi0&2Tz}a87g@==X#!%pKUM zZf~Pe*~0GbI<#~VL9LHkzmN6GRb04mF}n65dSfDK;mWyH>~zxDDp!GQ8P_hpgR@_M z9nU@W3cyhV0A75R86dN>_d(HGSeiP8M!yT&=^|q#(P|7(%*`WCjfvyI9(Z{B+BS~N z=dd&$u*8%al9s39fxGWOE}!LR4kJCA#P=xK`mb$Ncql{~awk+_$P$XhB(Iy?)P!P9 zr)zlR&=S`@uIHf7^j{76Y#xnro$r5c#(3~b#vVOpF0clWm>#yx>=R8Bx;)<-@L-Cv zTuEa_aY%$Vce^&~wKlr_9vV)M_YgUkK`E(Xes+d6)Iw$wGBuk1P&@=(8#>QP!$3T4 z3h6=UkI*zSXJeF<_Z~$Ix@8HeY(X$Bq>$HoGVzL=-zUBP=J5k}+-%f7gas*Fr-3|1OQ#?yj|!tQi}!^{F=Dl|iBWF)~MzY$kn6hI*x6F38hE#L>X&F+L0 z>ey}f;d({PFNn}*8hFub6g37f=rN^?C`wuiY8lg0)9fsFbZG&9@3Sf@J9TWX zyp5F`s|a3x1M{=vEcT^^?BK#A#>NY{^Y9E$(B`MIFm;`$jO}g@b}--|N@_SQE63+8 zl`@e|We_)oBN-!(lqKibc=O^#{HtI2*Qm8Bm?$2F{(Jx=O~eNdT5=0P4cKfqV0S8T zdjpUwddDdvn=K%r8%QLIY?Y9<#ze@mtfJlSK~Gv-Ad-FWjT;+Ws8Ys~C_;61-J`;j znp!G0o_qcUZ0&ZiRjy;F)5C;nLO~p_#JiXrE1+eKW4p2pzuCiVehI}=0SgQBXju*1 zsMqk?8}A@R_sv9!b7hE9dU^Rep8V_Q(e8B6YRT|59qqmYB?xi7yn-9=tfG`kuSD@u z001BWNklIL8P%1I16dQ5a~q%d@tvbk*mMOQ-sYn{O=PQ zCktmw`sXl1%n$Y&LnX@a;s!Tj8j{YBbT;3gdMRxF8Mz8&{$6~LHe;w&Q{;%(8H~`s z_a8w7;VJu?IEg~2U0JwuO2cz1&?ll1E0k5Jh@3)hz_<<(8cDi;1gYqQ8neA42tEMq z3=rkW2?G`yUeOh%94#_k$flDxefmXw=7~=;T{gskC*5Q=L5Rc)&%T8J`}h8U5jCPP z3xv|=by5xJy@X9Tt!wPAOVr{h;-OF47G^B?$ma??;T}<710U5!1Hbt@zk?T_e3pj{ zh3OpYR^azA2owZORZz&3HXOGF%}qc{=tw0jtkvs)Vqi99v3+-kV(P0tW@i@Q=8OD& zUwiFM7?APvYyS{aATm*eaO{5{K z5cN(Q=PzHufBM27p|8ZTTUi6-7-r_@(d%^Z_M11*XtZ(Qzyfx*wsG#_MYOk8hQAP7 zt7lo95LeRZq6Y;{_`Zy7^q?gjOiiRv@3c_61We4%Bb%SZx$_q=lNd)jlSZxG!~$8f zpSy^&fA*I+clInE`Piel<-`HBdIP-u${Ad{bcHFai5xjFdpx|N=nT?nYe5gPn&kVR zb2{N771J;`w*(|JhI)^?D| zOk-jCIJT;*h$0^0+dj(eDyB+#BogCr)d2!UN2O84=@*~DPyhUX%S;h+G@g?u(Xcfn z&AsbGh-SjnF+DXAQGunA;R@@&C7CIqYa2WG##7(M@x#-wGesPkBo>H+(!>P6&u*iM zTC0w1JjJLf=~8za5*#_;XPIb}gfPa38ds_*Lh-BzlBkR5KHvoFFdWrKf`BZLce?*1 ziD=DaogYIYZgEqWi7Ct&7%LPw_@0neYW^xaJFK6iwc&}@}4=tvx{ zOpElu_pw#o#TUQw7pN|mA)6BPVgjkqMP;iGJ>j6=tU;IZ7}qmUlX(O-iPJUMeuwS% zb)7UCWd3iWk3Q!XH9EV9Clhd;4myF0X5B;9XhVr;Ta*W;D1Dep9J1=c>AKLm4oYJw zD1ID8s|dt&w*1!QB;26N;lq@rB_*anJ>Eib28FRH4*yJ+($I*ussa5@7ma31n2`iv zDo?%9hSLndqkK4+%H%NUHqhzyQA(81adr_`HN=zz0=JL05>&2{ZX?f zjb1-I*kp!3p$zOZ&+wwALwz4gwAU#5{8<7&dQ!-mFK`6aC-&a|X4pVEtilSo5T}{F z9W}cAOmox*A!Rnxu897Oee_51{6}UUsv?><4wcgc#Ze+UXHTpljP^w-X%6WcBgB#2 zAAMeH_^bLN0}=ZgI4v0Fy+s*S`wD2%_mR%lCr%iWqWPt)v7vR$z8p8~Yt&R%^c>%N z1e~2{WKv8?Bkfr(tDv4ZrwvzryeG-~*?SN#~e_ zK))uG#X6;iD*7^zh|C!{#)O1|YJgs&!LOOHa?q1WE}n#Yp%{Q&UR}r6|Kgk6{LD>H z;6Q#FTFyjkXAPIGP?&L>2Ma)*?==cAro8$_O?j-Ea?t5@!12##b>p&hhW?-<}D$}hPEf)6Y z1mgBxGN`iHGJWsd3v{E==wSWoYd|cGyN}(=MfMx7{SB_JUf@^d;zG_Rg(7LC^&~WF7M0xwoMsEHwu7^0&!SW);+KEs z@3W5S?8O(czFtAvn#SMx(NEy;kwa|grN(0L7!Vn7{6f95fzz+QfM>q?O|)#E&qET7&I(h5+_Ou)$Kh><3p zVIX3u^m$#@WkY1N$2>UI9^`nAL*Z|^?QVSjBlqAV4?GM*O`_TD;LX=g<8Pk+LtNd; zLPi5W{rKbf#HSvCY38xMUdK-PakzF1gPw(zohx|pr6xMnb@Xao*lHVb#8KVY!1Tl% z<_Z&{IaU;IY>q8VMEYalqHHQMjUaGsYYX*8k13KO4^L=0d2oUdm3j?l&cBI^Z@-Ss zR0;PSI)tBm>^3AQmO$08v01_2y!bqVdIJV@OqWV%RjSZ4DZvyNh|Dr-0<+m1(_CpN zI-usM*nBJ%l7Aj0~!X8f>#OG101Nt)pk21{_3not>ISy}F6zYuAt~ zWU*T=V`FEXqaui+KX82P)XP|2UdO$6-@$`x(%JFa9E!YInIi&}Jr4mk+6*{@P2xBv zu*T3-6D+a3dE7j3vr+qS9<%`wRnKwTJn8j9A4c4SX{AA43A88@svxpI{D}Lk@BpQ^Zbx2aX+} z-yXmY9au&hS68lLtG0uC?l_Et^9xMr<0&NzW96YxEpqh=nRdVt&axcwv1O!_Y20(q zaoB?%8ucdP`2tkA3tbb&0`H!C7s)~r6LS+-oSj2VqrlVz?z{g0rsw`4wsuxg7@NRY zz6hBF?Noel7_$Z=rbSs(AtQii&tJlq{^A=bS9V#KLep^Kku&W}*O4#garxX?w3=;U zegUy)PmGUay>T74FW!wriUMSJsM5ua@){Q<_3kcu-5zqKEUE6{k{FqGVaG+UM-;aK zXR`%R(di6W7+kmO&?xYkit9m-eCgR;iZgCxi#G#z&_d61&`s#b>JFAy8c0|%q{i|n z@3`o-T3BAbfUW99MptGhjv!u0AXO;B_8n|&Z6HINmKU<+Gff9!8px(oNX6r*4H zxe2&li&|CQ;KP^^(M5+6JLhR^ z7c=~X!#uF}Yv4u=+9;##y}Ru2_0kAABx4naQ9MS=h?41uW^VNBgGiFH?|m2-i|y+W zgFX5tp(^B>_@2g7+Sl=f!_Vw<1E$KNNv1|nikfAjT2shYOpdWVzv~aLmkiku*?8}# z7mDu}j?M#}GomrG#|~3E_v_)rzq85FzNU7#UMW%jAK7^mY9*XYWudzwtyv}mUy)(= zU6^s5!|^Fo@ad<&hSjZA?Cv(Ov3>)RW?}W}yHH{!+;`Vq$fR{R{ti?*1COTg(P_KC-_a^(`nZ${?Ika>Sx}ve;FQWT$ zXbUeKAn75@LEde#8>}R&FykibPJ{K7@<{g>4sRn7k{*+hP~)7{D9(L2YFy}f+1joE zDB!@68Kz;iI*zc^SK@f=LGj+&X7hH1tzGgHDHcifI!PM*S{LkF>Z{YP-&;uXYn4aW~1 zL5@%sH5NS)64TpA$GWqfKyJK%`|f@ifApm<A~|R~>}*QImUub`T`_R# z)?>K;zWdo}ScZmp-+*%0oj7uA4i~Pskw{B8Hg^yQ4lc1qD?|7C*$sq278BzK@v+p$ zaNzJ7KL6AI1ib~IxR`+<(`Qa$x8A|!tCv})NeC1TY2rp~Wc^R~mZcLil|ZGujWgf9 zfLz){iuNf<>>o@;m1W#{>L|WaEaA-SuVCf+F5Z6oyQr4m#BcoCuR}8|oV!uRm;d@N z;8vP=_@0N*ZMR`2l4$g+ye6gMDqj;?o(b8ajJ|>GM-G%?-DYj5KM=zJ3o|n! z$Bqr72CRP<9wH$Rmt{7O!3bFtrfeEojSjZ9H#tU0*WYKOd-M2#J#IE?AHstk`iY4N z)H~PVc0$Oe4qp~x*74kg$nf#p$ktooqK~ZF$qA6NQUrV^vYsNRLfYK>eV|gQqTBDV zxkV=^1>J&dJg$O9QEOF_NT z!rIOXY@7Vz($HNG_uYR#Jg0}g+l4=%9HkEIP8WSgWep73^jby$*VNGO^`XitNUp#m zS4R}UOdV4wr=^LpY=LkSxP8FVL(CWR@XZ{~te(Nz>gCamT1-wLos6MV@8H%WCn(Ac zfumu!;vk=iq1OvwS{7Qq1FBEBu#-eHu&_9TUf)Hl=Ri)9Cai^o0iI$zZWoz^jxM2O z1EFaodYIA=;K;6Ud^1ee_fc@K%l$|QH>SWFxUe-KL5M`4LRM{_@&-Wg488)*0MD=u@HG(fylRtnlwbg*Y6*021HwQ_uiLLDau1@ z3q9E$k`{2`q(){Y;+FN8(#$9uqgB)`Dx#4Z_~LiT!uW)W85)RCIT1GuHUjC9U4HcL z+}Qc*_s|GG=wSC(3N@#5Pf-Mc0^g?c)P_d1X4hvLj|u~>>|l?yNm>pQj@^Z-=p5V{ z?2AAc>i+m#LuK9T@cT2;1JR^&&@%tsXB`N~fJC2r=z2%z(ILk|a)8{|3v%=b-EZh| zt{dsP2&JWGiVzJgX0b+Tz1_m>^fAN}CJrs#$|yr9yXbZr>>@~6kgnpvRO4uQ4z#$2 zq@tnYG*}1A4U9s1(iY+=9f2!jty;zAW|`^K)CkixC+%6i+y*d>6Z6MmYH7X>?Ts5q z&1Z1>xtIA|Hd{@kGbz?cZES3yPPFO1huUVH-DwXToJXZn#y|V#{|+y{_zos>W0+W& zf)aR0B(v;l8AMSb*yj+bjF*tUv4x=TK~56w)Pv>G^A$DRs>L~hf__f=PmgirM!y4H zN+V6wQ8LMihG_iWob{N4Hc-&2^kMfJIC;;l_%HwT4{_&Rw~emF#dE&|cR=fT39-1! z`W$KyDFoc^IcT&TeECmb!GHSVZ{ql|Sr~c-S|B6nORR4lrnM8YlIQ$8;WkX)lk(Y4 zpMC{r&b*3bJjqP}<>HavhxV1~dIjezE3D1^;ros;4f_wDdI=|Qy%W>LB7Y}ZC+M~L zLLc{K$Y5UnL_D&lovc{*rLAv->tE+Oecr$*<+B=(G|qD96RVSsjP zfUp~Iu>0Xt3s^WX4!hq+xm-c7Gk_8ckZxZ@tu{Ezau^*TOQTE*SVYf_%eb^! z$BQq&i}6AN^GmbB#3rUiW@Hj3N;&+CU-?CR`O8yyaixWCKKB&UZ>hOq)vY39`SlG< zq$N1*HnPb$T8$Pn0bE}&Sz@U;Lf6Av-#w33qsuyCT1^R=E#(wJTXsE0m3i15^x;Os zMa>Y`+;wdps?wSgMn*}!dV>etaLK`Ooa|G1P^73PRN5~{ULn)^*h5mcuyk;Noihb} zG2|h^pxcF{h+Iq_K1uQ@z@4* zu^%}>`M$7%CwD*!(%jzM#w({U<3Ie?Z@@~$acJ%!y1QNINgaXeF?D6&cA*m5;fV%` zohE$`mXW|jE{BuHj-Z&!!SM&ERLdAI>Dbuaf)o1q{O5leCr=*3<;yELeflK?Y7Yxj z2Uv(K$NFg64am+EYV9_ZSQ7Dg3jKBfPnUVJOSP7&^`VmcnB#LK00n(gQ?Xmy;b7~j zf(FZsVY-xonJus_aMNkyfBE;nikZn7cy0`~+hQ}7b8oHU8_zt0?ea1VWdboXgWXyg zdOU%k#4EqN4OglQsmK+>z;(Z!14$qAmEkYvb^UG18h{%XRi5fID zik2YMVhD15FI_Kuk0FP~xkb@yHHo!Za;S)GF4xvxY4;I^j^3`io%474>{7&e$YV!g7Eu@@aVtk4+b!)sHczQh1>{jmvxL& z_E6ly^z?*S`#3<@gWC_G#`h3U(o`X)uwIn3tIRg&i}r?oMxWY{#f{MJchGAIQwq+7 zl*RcXlyQ5vic8DaFg90$nY8#j(ppAl87FUF#KhDDBP~RC;@E;P#MpQ#qCEwonbkB# zA`Tu}#83UyPvFHDUqz)-!NlAoqlIxZj$E?9uMHySIz-Q~-)cwbCh3(0=a`0PZiENR z5e?Y$g>^rofdipEgr3Sw5B5jsXc!Ljwa64>7nyt-SIRe#^OBgIn|#l8n3-Ed5Gef2 z5PCr|2nnKw#zcHZsqe8l$NJV9KKVl*ftgg9y+PLhgn9@>L+lkZlX>KdQ)o9DNDYLU z4h@Y+->b@H)*jKtCU-qEZb2Oc$fOcz>3v+hwt;4&38Z8k$SlDO;;3{Qu!zpx4A8P2 zey*t56FNyT%1BY5r;2l5l?n7K9xbfki+K2CcgBi&jZOmKJ(c9ICS6` z4^@Z)I5R^H$2NMs3}oJeX^%>xWo>hlyW6N>Y&_3wh9DH@MxeBmO{uUngKC!Z7cSrn ztM6j^&>a5$KX?L@Q)5U(j?20vV{vvGKlbCF#^Bqp;h{(V1wQk@Ev!HGIqW{(!gwyv%POP+dy!-AuxOnj#Bchbqde>cdG8I;*>{#20Y6pL0W#govuv4Iyi$~b>^87Ge(#Vx0f;K;!vLMKI8 zL23+|5rfksZBmcXzSmwkhfC)#;f1fifW?Uk4lnLB96{}(rq_1iD>Y;MCW!a%mO6^V|OhpZ$p+<3*m#E*j+qJ2+7e z(?mXtvH63@mx@f4*x1;_Zli&8RfNKZ!StQ<9ufyh}3np`Z9c0iM~k;9=%fxhp1ocEiFyq^-ug)5b{F;^6>)xzQz*iGf~@C!k+oanq*k`wZGBOD^CEz7l=s;q;U( z;~g12U)buCp$Rp7uCGHd+Cp|=99s0VubpDU^tBQFk%|(cLQ~;D3XqZE3F$_t;f0#WeWJh@jn#N9`lD7l_My?nMl7dJt$&+32wG1LRnA9fNPIS%eS=l&2$j?4zw z>2uiVlY&h&8iI<%SPM55eEsNi_k46!2X>F#|8#g=Laj_jVrsQEH}?EqOb_+hsTF}} z@(F>^j5srL+qMTy5<%y_9Kebha6IPoqDMwQ-7YM|;QB2_?~A1=ZnCKPrGWH{H#Twp z?aO%ZSV|UPXb;!C3CD0h{)V~j~O1Bwj^m%|8qi4o~H;4=k zB+;yyvUrXxE6Egi(iXk+%JXQpTO0=y-R&@~B$|yjHwhaXD{R+(^2AAKF_qB~!&FhJ zY$B#4apblo`28-HSJu(#ucO&*VQPL!wEi4jp&)6cF_3-MZ^aS;XST_X1D6Ixe4FSP z1Th5E+y(*q)JO$Ml)HdDh@q65fT1MdciLR|%eFvksVTG!1C>sTS)vzx-~a$107*na zR1+}@^p+ItHrjaM+h=iNN<*=f!oV}IU2DT6vn{vJ12obZQxpR^>C!VwIahSAQq)P( zuwYG2!>}w~?@1F&u_Mcy8@Tezh?&^~BLr`Jti)$7tta?(RxCiE1Y*F#lav7u zD2b9w*?jRHU@9sX?_J8&q$Y!wT6#96E`m_wMwZGqHbG)%+Zf;1wDmW3YdCuR0FEA8 z;y9QyZ@-2Yo_P)rKKM}%QqC8$$V(X%b4BupM&Jq;%#S{L2MUuJoIHAn%`%46WW%KO zfsmvoy3HC7GGxO+CS_rEb{^MP*V&wl96)t5iCog+bArfuIS53o1~pyhuAIlpP8rE; z2KU@|3udRMIK-W3e=%Lf;`9`L`R{%bfvO;F=$uvOg%V8FMAFrfvJzah((r>Cu{b#j zdvzWpnyOfzg}z^gOK8^?4O}bS{D`|(tV@y{M0)mshkJ^uW8g^~TSTi)uUADf8HaA9 zc-TVMh?=}UEy7I+om7_D9YjM{!x-;prLiK?i4>;B@_760cUVVDu@Ll>4?H`1J`@a- z6hr>3Hr#HHuRqa4x7QnNYGY~{C`#*tALg6K58QFHQTq@cx^4`H6H(fkJvIl^ zQLuhv2iI1vqQ2gOOgVAs4Ej!&Mf61V)Knh{OGD^%p%^Ax%ExpAWY-XXFvCM@MnMgB8-hRGPx9AYs$t;Qs$arFp5B?GnS#@ z=+XqcQuR7@F0fQjzo!Xp&QkDL(&%IUHm zP*9fQ$mB9i-)%PP2s*+pnZ5%RX@md~8m7n^WZDqv+U#@b;Hf{+6jhDy@4)dz9h-Uiz526uD0%arDR!#XHx+jbFiS8VE=gZtg zDtk_vt}osLqBEfLt@!VCcN`XfL*tP5J3VqIy5uRg)kwZ z!4Nh4fWwXU0D6wtK#8JVM5;bFkf}7S*#n`;;~?G?E-hE_)o(nF|L!M?tnD=-6q0D> z7q6_4s)wIB(vl^U@zL|3$6O5j9#&V^arZ4pF*B3J=6VXA>|%0qn)eLb^-yh9U|K%k z=G)~mQUjIu6_fT6Z_k;O&?eHY$!>rOQRO`yMcsg5D7NTVklh+F>)Cqy3NP+ds z*HEq3c`cImu{;J_8`uIl^3Gv=d>s9d8qXCDIi}}{3@NA)SXo(Rvy20Y859b6jFn1^ zym9AD3ng8Mi+zDWy>(3>M}gH&-bkty3x8CGIBl$ ze8i-vtCr>Wh*YIeVeOP3h<#m(m=8i{h0&nGiYvm%!u7DSx{Qq*H&7}T`Fjmf9tsEV zbZqpxHZr*^CZ{Km&L(-Fx*xx%*C#U;>xUDZ?IqSNGSDK8;q|pk=-4&1(Z_?Q9)YD# zG6RNQM}g?|-a4NvGANs0m_w~q#UK6Ym+<_n-@y}~{V|+4cmPKimyon9ZrE}e6(J#m zQZy(F!7LM6#|>?-uHfe>a-Kz0FU1*QbNM{dAc5ovJLNJ5bSDyN5q3^=Q3O#At<3iZ zqr-le*BPpBSkp#~3mSY;<7CCrQ#u?$(`|QQX(l(hl-EaVMKYOU4L&&$(|K<ATw=QCAVvYs2vMS7FX@c!b1BAZIi!2o&Y=KJ*KYzfJJ%!TlT?cl% z%iL+24v96BwBI=0u=aHVNOHzgQq483lEbS?uUo5c9|6p|^E1@KfD4_u2k zRGG7}L`WpNIYoLjM0|DHv<12*Y;oJ&K3;wO4JZR0NlO>OyLOkqt04<&iZ@U&QJh7) z--nsf&{wNmfJaci0<)z|$tbnOCS9UX&S9|<&q)> z_10KJq4<$|p-(y=m(LS%>!}!EY6UeWVTj^b4qJ8&^LC37Aj3$YRNF+^6 zOfO-#PSltz4Ao>OO?NOrET*zHtX!$0T&p0aTWB9V6p;OJ;IXlV7xtjDZbN1?hI%HA z=h@unG6e*Y?K%aLlR1Z?3^g(l`oi?isQIDHFjeRoNe9AesA%J*m#Yrok>twnb7aLB%zFv$rR>jizo--0Uf9~P&{){kwy)3c5YlM;wi(2l2`a`3{kp_&+ zX;iKwX#yMPDXbd>Vk=rOa!VW@J{5yW4G9(_`V?w0dc8_he+7zn7TJ58$>_C8^m|>OQFd8zIj@esohChyEb z*pYMIfcs^pLK597Y9>V>H6o3n$~rz;f4rf~W+1ayB{i+=_!u>3`x~;Mkp%s0zo7`7 znPF{0?`KB(MMgNt0-K0^)NGhCeTf!G$sK_E$hxfdA zO!Wv{C1j8g2BLWlHE%3ymV`dEUf;p=p#$)I6^U#PPRGO7p8Xb19zTTH@d?)0ZfxzK zvD1Q<2$9!wta;=>ZjO%eaNkECz{_v^3BLXO8<;K?Sijck?GnR~84@4tZhKj z6aNo;ZyIY!dY*?pwO5@w``z#DzP-%!>?B2MI9w!}6e)^;O-Gg$IY=S}kqu=tWXA!b z{7n!zKb*t{l+6enB!Fy4vMo!rL{VJCMVuLuni3 zkmnAXt1b8q566dFNV9cm=2lmir3f!e#(6k$zC`Jz(YLr~En%tCl}7A-!<~6^7{_Cn zVF9$bmhpU2#Fd_V9-mPN&DxSCn$%vN3%64?bh4IumLSA5tm1$vHVav0oH@Eqof}eQ zQ6f$FGzxKWlO|DJG#YBJW0THigwKFpYS0T6L^Xs zB(ANjz$^;9bL%#ad;2&(0DkS4ejfGOC0VkZLc?qnqE&_D^I4<;3$sk4et>U%<9SR6 z6Krqq;6qP6h4UNdq^7X!dni25V>}!ot(Br*4Uz;2-)FNBTDkCh%k!K4@P+OsV9W)$hDvMZF)LDr_oka$+D3Awj>ILRm9kve$dD6 z-Y$|!1g~OijHi|%56F%=A|JA%4Q zdOca3S?KjoPGPR-5^Bl3l+^anZu)Stx_tHy2aV=BENg~#s}A39;M%S4L7T>~mb=*W zH}JlvuAtwT;P$PzWx`7B6pL-&^-$0dK*(*Xu+TM?^`=+NrR}-s8Vy8r0JB&G4q&^= z4xR+l8N)3dSF*k~HqHt6J)BLEnYq~NvUudr><><*QBA}=BUSnw7HNiRPBLmuiUKu< zfuRMa@eI){#AMWm*YL$Am>UMCdz>cs`zNS35;XlL+?s#JoFY|{N6h=J$sI?dUB|`C zj|lBjue4S~VHhat*BkOVh*C*bZ04xkEX$D36f?BCD5`r3v2wqkQfMf7cZE33aUVmW zA%#NHxZzO;7KEV$#X5Db(!@Y0d63CJDSaxsK@gL)sD{V-S(B!InWM;Z#A$@eG*C4k zyf&Opl4@5o;MpFg@l+XX01w#m|G0w=Z)YBPY5stlVOGTwFg}9KDmPurQj=R!iiyNZ z5tFM>?K7HXm3gMV$^EevYRc>=`w%IViGI!p8Y~of?WD0G8VBnv5S)4zBgeZuAQct* z>~|^`5`Io~e+t-^R^_u*DA;{^wX|xU7|6==kZ6Ql={)inKXmXJc1#PI1XdgJ{_52P zpZ9X!tfgfpMRvp@$hqh8`0hjHqbcemuc!R=vo%HO6w_Ixq6G?I{&cWWF)dG?Q@Y{7 zFj4nf*p7Z61}SM63$=^|pCR;9P4dimOvkC12!+yYCQ<;;*f26epy2xI$bw3`w*XAY z@X?RI5C873{IX2@kHQJQdHou0-gry0+}OBtjhti?*rZ|UQ+(uOAD3s7q0}t4CX)eX zX(-JZDO}A?8w>5W(AB~$#_7osu3r5f+**cKd*KYpm4F3mHmireR2NdQB*It~<+g)D zpW~`Ibkli2v&aT+{_g5ZI4mX!qtWz-?uY1C;mDwAJUK+Y-p1!Y|JU&3lTQf!_W0xw zI%7*Agq4*AEOk1#bomne%1lBKe?!CH{m=g<{_#Khd$@b|4&Hq0Ei_s_T+f5; zXyO7$ebqbL`{*CP^(79i|e`%tRuAEm!Dg&!E%V<21s%XQ5K)& zi3-iya>QL%G@@eps=<q8rcm5KEXk%A5&`wUdTYKe4H%JLNP8aB#3M zd2e35DGj~)bG6neOI0WIa~WyxivBdl8Il|jv* z-&d>-%@8;3&wch6gc?iSxbXU74Ob_j2|i&-*4Iq?+iZ|NwBhQJhVf0|lCFI04? zTtw8FgwSe|^TABC&Vrh()fkIgAthv;XaP;bIf#S1zGZ_XP<#9Uh~_ zfbYRjvbPM+!1mTQ7M3=#yFG;EDQBiZcnWuBpw?;1)Yva-(CD;vdVs;s0B#=P!o_EB z>Cwl;HSq575vEa$EH$y*@-UtRQoyB-%6XZlv1F%|%1>Ax1YY~&yN5W*kMRCR3$qiz zt+y)lE5|e(qjz#5*P_!|M(=PWvtG;rOjwyOloJ-?Eau*Aoj*T}cOh)N_JR)5_z}urg{X_9 z?h4AsdszOE?(N84Gh% zMXBV|6}q6IM0ebpB?#9%J8pi>ENId=I*BPei**(*@S}}G9yr9kGFQz$6W>T-n~wol zv>7^l{)!hvOl=d{&?l~OXcn7=FR}hW+ zm^lns9>Ml>V>}ri*(#Xg~D~3ZE1vPP%{~xO1OmYG({uJf!Z&8`cruQ z>hDXTsTE55nIXY&G==RHs&KDR8k_fH5@ME|VwyE!TOl01uFy+TLYbw>!3*!VW61sE z9xe{`5n(72|q-6lZY|7ryJ->`7GqBNV!14!{_Kli z$I;fyINI9!5f6r;P-MF%w9$qYV>n6GyJWXuBs1ia=jK*l8&vx0 z!gIf~+5BjA_$@`@%-jrJtAV54eRNx0_(cOKA_T)JUi$tk825C1^s`Un!i7h%(rhBl zX1KMrgB#y}2i=VYz*g>`VHPSTjMsoiSIiLN!CfTNqz~JI9)W>+q>IXT3o=! zrX|rEG6dIhXcJ|glth`_bIuD5gC-$4Ok0)5{evF1cMmWfE@18AGS+QdnsH$XWF_pH zg*XV2(LhDCbDkQac&;>NY*t(Cu3{e)s!5|^PZUp4gayKBg58~6?DZlv;KFNgm}@E( zz{BGw{=maV?Y()h0b-+3NH!D%J?o`IEN08F^Ax>)52hQVrnjLta?z(q&W|)>kPZMY&8lv(gZ)7BhT?$9-&XZwY_?@%KLkLw{Nd zC{iw{Ba#2sQ~>Tg4@A^*)uzvYVon@c2vOY6>GGGq`V~Z&2}N--oucX0rLYLIQV=)N zuLh^5(2^Ycdsl^OQ5X}YyU;DPiW;V452GN*ZUWi_ zLt~0ZE?$OZItZc=`^VdeCaIh+U7Z+oS>$wt3gJ4I=rsIVLxNhj@7%`P;uX1{LJ2BT zG;5CJcEzbOSCMAC8jG?>?GH~RI>DGFsCSoTQFr~u8GVe?Pf{OA^Fmb|ec_8=P=!mu z%peQ8-@x(hJ-qnBRXp$YxsQc7m$5sG`5aJ-Q|M@Qd?`Fc$LJ^lJ_iUajO82+>kN6h zcPO-yXG9cLrIuB?r&8&;^r{&Wvx(|jkV@v&>(EPA#X=XfYJRXUI8&SzN>d?v%_5f^ zHsjuDs;{*S`T6Dp{Yz1ORplZ%r#%`*B^c9Tl=sj(76wErIUp$nQBt%l$>)&`t5^Xq8*++@fD-v92qWWYUt@Q!82-ss_%KR$4qdZN`--YSVNapxFkVe&$h}PJR|| zy|FEYW=R8)x%AMapK2y(3BMtc-V~WoH}5}EX^csa%*C4jxYxt8Pkj*2J@*kofjEdc z$LW2ZNioLvAs7TO;z+W>0zQ1>6ie%-Al{DWh&Irv(fKY$r=vn_OC43%ZY-Q%(#<~k zsn6nDFTaA}ZiqOHVR|jNt}kLt>SOLV!4XYTtBJIj%DTn1(erEsvGoAnTJ>F+zsaI{ z%Bo;`-4euMj{Jxla8;nw{T1d=namUgmKVB`aW)uk!CP!$_vkjCR^YUvFr9c$*Fb}a9P2e>a$G z#(~PgQ|B8@rea`Zbz0J}&2^M~{RAb;r`Xt7MWcHO3rj7bw6f`vaQ(?dTBE$skce$N zkZ?%EOfA>L{YN5>fm7J7k5;2DJ0wvrx|edDBSIu5#DaorpsR#()HTE$iIF2kR#Q&9 zDmG2*mPkdG`AKCAG)LNL;<3>3G3*V{J3ST6<;BYvaOv`6K@g+vi>)e5F_Q|UF;#4!5~Wta^;7hB zVq7}sAk2t9D|9(caty->nhi%9_wi(muYKd2_}ZIa#m9d7v$%ME1D-R+-K}G6?Yx0* ztF4~dqLkW#&#>kAXIGm;LB2D>Vo5^v)Dx*REeS<`=bc+ZR zEs@49ddD83OCEf?hUv*&+LFOoeGGwd8Jb;3oe+Fhc`S2Lh%z-THFSa6XW>i=FXna8 ziKr}0Xk{sZjVTwYXey11U6kVb6;eA91i1FSJLp_o#ND^=p!mcm#O9xkO&n#C;iEO2 zDgvOav`6}xh?>7Ac{HV{g0Q=@jqUBbxODCr6hxBjCeoll0}f`h068KAha<^78fY=x z7I5^|+p@`XdupHCgi-0QCgT7vAG`$M6puZ+iNF2p|1m!Hu@6J1Ltd83xjedl1%J_d z1=H3knu~ReX94V{4Ugt=(-cXqj=0Q}aJy7Z&(7|a6f~{1CFn~YoLLQZSVGBUk-6Ad z!`p{%31T%G44~O5@`O{yspu(8nQ8*FB0_3dm|%)!YXMnRF`cFvI;jaw;{-ev*TG0; z=Q*zE4%&r{GNx9{5bBg4Cqk_uZHKnRw&^_3iLmT=wEGmkjPD8^%t03?!wFogiAg?2 z!pxp9mqziii;p57pJ2ktY}A39#^@DCs1F)Q3mcBP0L;dsIiO>8nHC6L9buUun@xrK zMT%`f6iH81wvX085rxn*h=Zr?*MJF|o|>QwnYDfj?EnBE07*naRF+`Ef~1_H;Kq~H z;F89ZF-&}jBAUuzfQVjZDY2R*rUwQlV6K-7uP6~E1!8xGdR`NaL4C1~C!cyo8t$M! zMKCTfpqU1#Vra;4~Y&@zzp*n{YBIp;lgoK#8o3wtEfW_Q|Y|~C9HH`Q|5O`bb*ajObbkD(3lMt&y-!a zl`cVV3}NKV#A4WQ818nj6w&%|&&Rt0-*@)Uuw^#nZtkJC*Zw-5SCu z6|`N#$}1axVtBUU$v~tuV`!0&)JRm;6F*lJoh1X%$W7V*yH(B}pTC-5gJr~bz@Q&L zbfXS~^rLbL1Lt7490E}L(>VLQ_aD;qRx-Sr#jBwxNm7K8@|LOW^;jz;`a#bJaLg8F zu_+<_y9ckL*=gdZ9{(`v{RIu=dfCL3EPmn=dKt*BY!J!p960J9-3c=eWtUOyym zt$v27=)s2QSZ&oHwYpfpkYiq$8f^(M^;hW4Y41nMrEHD4EqBK@bm1`RK*u|&t zo#VHWP90oadj>mu2ZH9b9S>u1)g7blbYV7>*-DmcXm@PPQr_1Sbh_zWopwe`Ej1Rm zM~DV1FqcfE_6Xa(46}R)(`!g`KL{q`visP=8kRb3W0t&8dJ?JU&1t~GA!>D7a_8EMo>1IY z7nfxyG@Xv+z0qtA%j#;N6lIvqCWx~V&7wpQ2Ga2IdX$AG1^4MmfO=yAR@#Bc?9WKIDkgj&dV*&!{pYF^j`NgiEUh~wwM!4WJh z!d*y3=s2BBp<5j2#mI~hDedkP9Se;nj1>b*OKlZNLA^TTE?{AAHbkz+@M!?WVIv17 zWdzU7kj5G6x{VdTiS{{aN{4vojaPAa<84gK2@*D7J_jQ?EL%g&jK#u1ng%c?Lm3(s znTa^IF&;HchXXh=^@-8i`%K5ReV)oi(IzbeT<=2c=V1vbf zCUGFrj78ssUZ^3*;P8~&pXds$m;**r23n`nBjn>;7$#3V{s_`wh|@hjN2{VerDP(> zN67LR(C z9i`jp^>z`>=#E&x4Y)bCVdSPPzO^dx-l#TS(!q!lXpSY*F^ccSVxMB%G(p`b?X8AM z{}^Si7H^HkOyNm$M>f-++^jA|-t zh9`y8s5is*$sV>(w(!;)FXQniE{V2+q)g_-Eq1&3sSiFX7T$3(5<6;YJ&1HIEG&v+ zcNiU=-G5%cAc+Ls>-Y`S>K-gJ5ae-mI>cx+z|zL56vW)^!(fKvqZ1f*ftKTmWqMYH zpK{{AvbZAsl;~tMQ;asKX;D=+FI6g2Od~VkyB3Oy5-5&zz7N;8i)z z_I}t%!|M8~3dZI9l{z9rN2u#)H9C0uiO2Bh#S4O@@*Dp8-~K!Jr~mWsC{!WM#rZRx z7UH7F+$g;&_BAPhvMRrcbf8#}3DG-|no~1nGCZ43;F`K14xH2q3Vf!e%0=773^_f_ zFrr0q^%+sB`|Z_TnN(AfCK|rEE{;tdo1;XbwvsbOw1$K-yF|0uM0;}$c9bET#E6++ zR^)IE7gc^XvdTU2M@=U6cMH5qnr!5wX2{t{8%N;?5 zNzvtfqj3y*q;p*(r~U?uD$_(PIc7HK@1IK4HIc3YPHO>~6iB(e$NU2t5)e7B@@ZwQ z=nqHgRn7{SSt{3s*Mu&lEX25mm*UQ8z;pexbxw&SDS%Hh!2&WS7M z)Sz^v&Dq~IdB$J`2wCjr3T`9XFd7Zzd(r`TWBnZbdL3aDD($Q5JfO?s@x7N` zlOdZ|v(WDi)S#=?5(LJWYsNId_iFOPYn6sdGTo$w;D5Ii)wOyAbv02_dsVg9%;k?N zyjz|wX}mh3dDN=-0h~ndH{`rs$vD$R&cPuV zU01p1QIod1uq+O2O@3w86(bBL z2;yVRq8Uz3kMYv0*KqZvyJ8mRJ4{Xq;oF|9LwHxT%){d+`*`>yya$h@Ol4E6*B526 z;Re9fc>i#KrtV1avs>4tu<6gnXqGM6_-SIH04JJ^Xfm}e*bqgr=p$@flf{Tl6vI3H znu}Juqb6c`0l)6TFiYXcbLvEW!q0r>Ib6Sa9o^;vJf|)TFgJaN%Te zR23wWM=OP#DcZ1?zxO)6|JpTdZa$7ivkl8nh1YF+1`N`wk|`F~I{5it_zXVr=?|mX zZc4dFyW}KJ<@=FBS##!sTn!(LuHeqz4*texe-3`5A;{CbR^Zew)__rTD$a#7(!kO> znr#!oun-5#R-+-CQiUUKvX$M^vb#Z*NVjYLO$Jlt}5<;O#BnX0uDo|KZ zmKma1iUq?_^t4hFRFXw^7!^Q`Mh%W~@to6D3bE%>%~+nRycr8QAhD?XYEKNPmnz zUQvX2ey$iOP}52LEhmV0jQJixQJ4nHE=D(+kqf942FV4Z>+CiI91`+F4xA|8Vt>n;ya=tP+Vd#onU=c+48elC;g!eH$U*q69{KS0CQ>XYrb-KBnqqyv~(m|Cf}R%$hl)L@5lb`zPg_b=^I-UW4QL63TjVxP#D-QS%m1 z);lt7weM4*iWvc?s+=lCp=^Yar1R^7rbviwIY+|)qvj!;Fg(&mx7|e$jIk&pj#AOd>1%M5boI6`hPK1lSzSr|_of;jxPsaBzHt(|#ZJifTwW31#NXpf{4@ zaWoiVsZve%s7cVPaXzoPWM>iGWD9Cih(6DsD%3=gE?rs*)2|`ZON@>V zvHrySv0jF8Ov}dA~A#K8I*6wAsRnJwoO*+y5y9bB3xL8-H z3N?(R%F(u3D0I~+%AY9>3@wl4JiRepBaU?CBhKcE!M4KTH>6pSNwYK@4vM6x^l7FbKSiY#)5}zznRcUrEN0U@ zt@K)zj?1_YMWbMxjSgKEtKeiQdMj&Y5{`1wOzFzyQR?{rpW1*qn&fC_?vCZV_t#4A z#|g5y6&gx`r!+_EAEiYrL~~VGCsiXf*9$2PXkMuW=Rb6wt3~HU!9X9No$2ztWPBb? zoVnGdsi_JWDj*oZQj!?fsfv)A)Vv<6tw5%&}3dgl!7AD50q15oQUI>-il>DOD zq|;qf8cCxtE5tsNOUk(9IJT5Rkr@*VdM`pm5_4Xt!jZ0UMJVVjshn z%St2m^pj8Hi6@q!>(sj)VO&w4G(*LQ7!^f(G!8I|_eD44dcNFWhIKRk;{k1{Ug-?^ zABBoj;JRR2I-Y#$3OcQpd@a$fqEs%!ewUYIipew(U0`=*N%F%M7P^?Ng;>C%3h+%5 zar_f1yyM6-E9MSGE=%OyyL)*1)=gYmIVW0PHi>lqyL)qnyW2asxOrZRYB5`Y(ztOQ z8V*Moj3!mvr6EsJTcXDj zwuk4cbpaXNT3y~@d6qRpblOP}{m^?J@aOYhrb?@-S4|kNAqT?pzhb_Epc+i6AW8kc zRU|7^Oo1{~DV1hc&i$+`k*q(x(mdzlBwLDOa9D(*ef6{g^i$$r>Gh6fSd(M{HrCf= zuQY9?f97Xklf7|n6HT`c%XZ~2S$2+Yql0FvqcntNCZ0^ZC$ngPIMI;gks1aefll)! zGG?L)Zg0JXovkBW-@1u$FMw{hvDkFPS6~vvXth;_T_NT)iJ-j?kB0{yHfrz9gAdq1G(#sx1MI{WTwBM=>MG#Im>%?Sbaa3s^KowV0@kB*SXy3&XV#Rn6R92* z>rQ>+C54Tl^BaKLcSrUs_o^C~tc)nQH&Km=MzR_d|%dev# zzn|Zx_YCDcDpH? z$Xu62Edn=6u32G}z_c`>$Z)ae_ouM;2iI?5JnUh8wS!BWS48AY*YJarF^-0}vH930 z2D1XJr{OfQ;QNRpT4x{1`LKABY$ef5__EkfnSF#9cDoL98slWtLoiKHvrR-#5xw33Q48XXHXfhCl2Bw-hntcc7s?b>8VgGk*E!qs zq2&fvA9){qzp086QaVX@AzexA+)+g@07#i zQFx3!Ho_ocS3^3BvAEK~dI5~4Lu_v!VLM{HLKnJOO4~8819TD!OPG0;!N?sXh7kJT zq7KuoAx>wKD@VPQWw+4EQ+NvZK}w{@Qm%@H>A-6F@R;3}`zYK1D$K$YCrd>ynw`Dh zQt-o8nk%U0!W6@u@~lM=lZMQbj62bK5|tt)(5T&4E@(nqJv+)2dZ-GQB6o$hrw)NU z&ghbCb~W7-1gg9*Q%s5rOVM?N1}UhfE1C*s4{{2grjF=N;~o{qmWWwISz6ldPha^oSW7ZLcikApk9{u zjdWoCC!cHH%B!zm$45Wmd5r;Yc*MIW=V6oB0LU&Qnn;`4K@NBHCEa8QhUcyYY_bAeS3#oD>a^`qsj$1M#$?<~b5P9?zyYJU+yDI>Oq@1+=JTqNa5`!BPJd zPSeD%{H%_=8eOX>srzEFHN+-y?0*BhFHPOE`wLTAVtW^^kQ{z8iJI1w`rG3|)w zls)SKV;S2hnZSmoH&1(0CMkU8B#$vw`D#i+5yOfd8M4sNvq-ZlT0yzU3bTeoOCwfV zJ!K6nhE?1rGELD+B~C?fN|mWc8h;SSGKi&>f0_<4=>^!u7PcBKtS+yMCVm>Aw@iuxV2XJgx(5$>db&4`S3-+CkC&;;Z5SHh%M|Z#^#=_EyOb?Ytpc12(rP{0| zoSF220lxd)m+||*_j`Esi7TkrxJV9_a}-Q?joR5HjRhyaFSAJKQ`stQHrQi(WX3L|2u~Le&;fieMDV{@jL4xjkx2 zR@-p8O?Yly^2f}|(w7>sD4HNj6O2a#3DG9k{x81u0>1T)Z==;Rv2o5vm<>?qV?m@A zx(g~hr*h%sro7bd;J^N_eiOg-4+hAS3F4WF4v{s@N1TUJfRiRjgAd2E#LPyfo1F3` zF=k1Eu)NEj7ysr z(6>^YzP*iESZ%OTDRl@@3AR-EaDYb3Rh-MJx#SR`s5DzerJv%&k(4~!A!m$$|1 zO2qf>{bP5D-=Qy;3A(B_$vL`oH}S#-!q%HUH2U7&OVEAR?E#N@cjPy z{QFgnma>|!{*DBu8x=Lt$MJpu&r^*=Ap+cc0t|SwuJy~N+FBaOTE zkMa=1VGpmq_9Bwf!N%G;R+bmhsx>haT^H9s1H(}tSKqjW3r{|S4?OjLKnvh{bnlD> zEn_Uo+c$4u|L6c0H!sM#^TG?SqObzMYGOE?pom>WQ6Ghsh)us-Qw<2lLrg_ynj;Ch zrfV>)CN@_#@WrqED}41E-@@v~niS*AxBP=Id>Lf5tt_u0OJf;%aIO5~FMkQA2gjHU zN4UGYBb2jV?*v(9N(l6mk6*&lQd4N`2@4SxpfA9mixN#BF;I71?P>a^| zTX^~9m(l7r@yU-rC-6Gff)j?oJPNJ`b}H)BOQPq`z4)n(HlGK7RoXx-OPLr&-75#(5NXcadi* zXOzu`dT$k~MP!ACEgYXY2RvgX-N@2qE7Q(&w358RjPd z+VZZe?6N|NanaI3A=`SzAkeEILw+VU1j+%&K*nqoN^j@ug|1j198!d_${*xVh#Jgk z9K-Q_SwAO}5zeolhszk5YM)kbwffxmg6GTX-ObVOpURgkF0`?sy?I9+Yrn(o5u7Prz<&q-9B4&HW zi8Rl1Hq8$&jaBT1o(e4$m7b4in#2MyD^k;?#^C-zmd7|w5d zsCjd2WHim%QVz`vi_5q`6CmHmU@}2C8cGx1TJK^Kgo4Z+hbHo5B*P^`Pth925mIj3i%GFfMcf;L@$GmL>HD#L3+Jtk$?Q&@$mS`IvzG^@40oe#)6*jn zelJWGu)cOqWeAnPBpHfWe=_SMnFSaP0>sgxOj?;8;@4|}Ugfg_0Vzp(C{4uHwYSmm z-7|d@r-*FixanoNqAt?LHyDl3JMH1*@C18DJ-qhnHGJjEUlCeCYQ{p9p{SSE)|^%< zL@1VpoDEbwEpYSp9r*2zxNVh{*nBVw@CSeVHT=c5pU3I$5zb#&f#sAqJ(}RS7ou+4 zxUhT$k1lQCgHJt!XC8l_G?9x7IW9l-2yWhd9dWAUGFhxk=&WIdin2gN&{mT~X$=Y; z(;!AN(_zOt?5>R_>KIOAy!5>ngx`OBaw4$+CnqP^-rdFN=^pBBA7z%K(QKhnTfjRz zTc|<9m`F*c1ncAR7&UQkD}?!n`w$h51vA~l!F~^KzIqKSt4m;+d*{|W@H;Ie$qa|P zH}KZ>HYO5QtD|>N;9vdGA7JmDZG7g_pGR*T$fR)^hp@B^k36!8X1gH;1&dss-$J{E z&wcJ^u=YE@jo<&nZ{VxXe@SSGR#D1^Yw9JeTD2@N4kpwEt%$5bD1mLq!hiS={!58M zxOo18IKh4Am23DX|MZ_>V{sY3_;b(V(qmUZtA+9D5XoeOZmogExsEMS`Y~!9awA1b^khb7O{L39CxGdv zD8&3?Mn#Pj;(4k{hI!_fdEe$I_aM5D!f06Hc4^SSg`we`&Kj zqq>s}S|*yM+_FiVi)4aqR>d=mAL(_<5Qfo!Wn{4Eu9)8oqZZATagWN#^JHVe2!ym^ zM2cO&yV#jBkxtl@50tHXb&yt;>!G@Cpu;P_xBC2if5oj^q5^(=QE;zdD8!vi*XONY zEc!aWYsFbR8LNF`Mh6wZ*JSF7Z8s*@&?X;h6FgS^$XG1Na*yJ|?Wrix-YShQui z*qwX41TCT@qY#L|oKz_4G)_!vF03pRcfpg%NQ&q?cX!2r zD5vpFk)l;=VeQhop!dV!saS{;8RI&^L6lk_fh$)Y!QS2;e)pgMbA03@KO?TW|Mm-i zit~$Wa9vHPcZYk2*xKE$GQ@t=;Z_g2I$o>({SSZpx3P5`!CNly^*{SEUi;b&JoeND z48tiLp*tJ0AKZQO4vx2uVOQ>()UR!C@5;J;=k9I%;M$wwmO36EVVcgcQon#Jk8g_8 zWe{zNu5}!YVED`Ev<1?{7yjkH#@_y+xDne)iMMaQAp^CgwN0VD4@X0+cCMh?XflQl z!yv@MEXOPxW7)1tE}UlCXpkc4DMkl#6zSmWt~POMTd2)qyn6Eu+P6ak-Cm(K>9647H-_WzuT ziSDixX2s6-Hm+aaQtR(D1v+sRYOhRZBV@fkImqR~g%*3_Ks1hct z#721sY3gJUIjHaKyAy1zofEpOYowl`GG^>VD##QaE=eh!j3<~*)bmH$DNS?A>Ybe?5Le@DI)ql! z&(Z|u113^^=cT9u$O7ac73v;@5Rj>10~=pbJVs9E>rkdlbzSJV57@do@KB?A_nEaAYh zONomV0qn!$C;q_0M(w?M_zeTyr6q)u7?VjXMMy>gw4-Be#3;rl#&_=Ga*^TuWgk9W z^%iX;lLEcNLmclP;r#gl8oNG%ae!9W7XEy_(L$zaSXo|&y=q`*XGf-~G*W1{8wlf> zh=S=vNY_6)Hmxl!V|Y5j>iT-6rO?jw1l)|Md7wykc-qIUYgh5w_g}%VKgMgc)O6xaedL^89W|HNhAT&7}1ltwlhf}_zqkSCr&Y{(6iWr%b>Z8+By!QGJ@WOY# zgO%n2ihb&1N|<^L3(IY^nB#&zUcGu%HC}YOBf8>Ji*W(3zWQA$I&=!bnSaEFlbQ-a z3hS^f^UPK3a5%u-o!c;sLM*(69)cW$!3baclRuVMhJTM$9g71F2>15xA}y!l+9VqT z1DXAr6!ApWgzGQ)RxvD2JQ)bCE5t)rrp!wC9LBi1wS%qR0hZUhvXJ-V94)^I->+f! z_#NDMa~sFU16;cFD2&1r0sGUBToH;}T2J7mj?iSOH`rKPlk2Ki&S+(+CY<$}hi5HYYvKu;gbKG*gJO2k19u)vWUCIJwQ!xxM_o zgXim*YQimz6@7|M@cuXd{(!^P=Y~H*UqNC!po)qG=6tbk`wP_|aOWD6O-boGk6>7`x!|Au! zofokf^C%~D6=1GuICFfQ>tvKx?d-!Sm&d9>6kGdH8H%v5CPOme_l9yDv}NElPf#o6 zc`_u+%{(irDiNr>ONM61yGbJgy-*FDxZWD(0|qQovU1w(8)7BS2AZM6d>04(6XjBQ zhAfuyIZabJ9g4<8+#=^X#(MR2Y|>QqD4Ixd-|Ee#XmA*oWoXvx^4t$+1G#>rpX-(*g`25sXfJm}r%LpV;rSPqFXPci zE@63jS!`Jr!(|-Y?FmXqN5ELZsdZ@SmZHO5a*FzNx0720?9AT5oJWB}|r^b)N!Z^n1X&-lQ zZ(;ERPfHm8Gzdgz#0KQ(_(6UJoS=7ra{5g0rxFL*DUO zG{pMF6*QX-VYp2CeVq1=vAnn>Lsqfqm$g$(E0xAgul9GHpKk--ag+KTb zT1`&x=uYa1fet?i4a$VZ%(cxm#BKV_E2k_mI5|PXb%pICtChIaDvF}(QG=>NyipOf z1qG{gwz_8^)q_u-I(taEQ3wr`vmYJUkvYYVX0L+gZT} zpLrSwcMs&lNr-sgc#9#tq18<}TT*HS}WVrnFGgv!+4(HB4hI-4# zESQNndKye&>juVQi2b7z9QTg#<{MXWxV4WrZ@h_Sy@S@u5}MsLWKoDX8e>wVVr^U$ zO+l6%w?Hh$BgzHM_qtMyy!3+`SlPIO3!AwVIYP5J8sOSrzJ{NA@=0{+EwQ~d%p5-1 z{8n8F)f-E2HgqvqDXIw}zptmeSZG;QfyXJAfjAjf#s{Vt25|aElM+rA_fAGqn9)=v zI0=OpKTQji=@?mJ%JefxC-8JzD3e0xpkrfZOU4u3!v^Cq;^PTiw*foPK&-RKLn(qM zmL~IU2lknHg6M!u9~07V4s{HT0s2Q1I5i)I*ATZmP7%Wqcjh*peDop|^Toj`^)Vq0 z79e>vbLw1Up^aDGdJ~`QeNqfWSg4$B!fAqDZ-hVkx8KC+QGjzD3!;_I0}LY;-Jwv+ zJg-4d1`LA)$uN`*Abx04K-X55mE&g#akM&tWb>p%Z<_|BWJ;(898?(D;GE9bhJj!_y)vK-iC7z$zF zeRYhQARRga(Hs{A8xap-e+Yeb6;D3?gfx9uuV2O2zy5XDaD`6DAxW#XhG(DsSVhl^ zaO=jNG>MPB?-KsT=l=_Q;Qh~FV{=0pM*T`4>;?kKWD1CZiD{^KmOMi#u`i0sSL(W; zA#DCRpnLYo58*%iPyQZegE4f6(|ujuqd}aaVOW@^A?$hMZYgRhhi@E!Idu4>2Fh@7 zbaX6;g)EO^!)~F}m3A|fh=7cj2P;lZF)}>Wm^WZz5@kpt4kii-5uc+naX&?3@)IR8 zh{>QDGe_EPrMm;#&6`CfhU9QsspQWh`cpqC^ zLua9jG@r_#Z#12t(WnU`#OICA<}@E5k8;#nb#>n~g=RPEtJsZh0$!^0;2eM!sZczV zcp{N2&9)`$2XAbma4ESyahOO0NPTuuxrSs!nqtT^#z9jo6w_3>Xx`^qNw-WfR~A}! z0Z%k|KE`PwW-YZUvWA(F8Ce{W0o~0j1R65j8pW!KZq{oEXZ#Zzb+e)N!6^r9N&}i? zuEb8HT*E9EhGPg7)$$uC=v*z6Ax{Qcj@6XxMYF2DH4$E?C>eQ>1Q;iVyt`!)|3uWg z50C%v<6)!r9z6V70~_n-CA()d+LZ!Ard5uPnXPm*GCb_hFpEzSHgm+Q0h(SDjfM}; zs0qJ&JeptXT8x?O}eGcwwfe z%QmpoUclk7hwC?PN-r5@89w;_C(!8BVKrPl)@*MXLK5z=esdqCym6)J_rYBb{51rj1GW`76ti?!_xu0t|i}}KQFyc|3aD_ z^@(U?-Dd2f9cuvq8U5pD6($E1GG`Fbq zaur~uoATU6Q6dyUzB6oOY4S3iPT*KRvOIxlf?6Y_T!I$g2j z=j52&XkH^C>!b`ZpQ~lnq{!!a)@!lQP?d;(2FI}x(ov9fZfZbyA2T&NW|PbIN~lhe zdecnJRMn{58(mqRd+gLrDW`}o@g1aD$#~oo^9Hxd;}WMwMJleYJtR+xYmZ)0!%{WF zKRefaPA?^WsR-2IgOl)j8z2Ap&*F1`^|P>RF1qKI(YtekJktknyGtU zCd$l-Ewp4+>AB==5#7ox8^cL}gZ*73)WWsf==b_))N7#2dN7+Q(}_mAYUE92{y?J< z!@?7fJ&n)(!l%WNkqwzNA`M^O3mP%8$tx@7gK|aGE8s`{np#dVQPMTB*#FS`YclYg z9-oRPmf`wzwY8+F&SlucgE1Ehfl=B-$&AX?e{*PtIpRu6VO(V^GUw2Aq$wZ@PW~6) zVaISVk6q+!MFuU>KW9?ZrWNvo+!30yY26Pq=z{Jk!KFf4EmPU!L_|!^Ac?ZlSt@;T zln{0Eu)Nw;8ERn+-77@PD8mBF61pj^`a{vzGZhXA zhX-k9$o?-n&p4KWqp3#Wg`(IAYC z$J@CBt(rMXIyU@97>Wa>FO>Xsw)YrY@!@+mS)+;f$yq^iTnC@`x1 zfie|luV$u_gmBo*wVT6rh|8-XYZr4t9yC0%WgRKRj44*A=|kq@!=pMLHfry|gB)uX zsaZn%-y!OCQ>wAD;P1r}yvPN1#uWQ#h-91~nfe$sM^cb3t}bJ>)lr2Gr)^Nh>?9sy z>zy%nw)SOF=ORuaD<`2`FjrSD;MpfO@%k%Qad>hJ-?#Ak4_*`9$?nl1pr_c~Ignu7 zW_>{w&&;4H3N)L`u$LSJgCm4Rjx5kr^sOF9DP(E)@}E+S#hH(y*|H!FLsJ_yGz1aw z{EIJQuRp+Jk6yx?ufB%cukA>IIve+85folNQuOs0wXiAl56e-(!7qRR`*`d6E;iN{ zF`FgQm}piGzh( zfKY;s3rh+-<^E@>;;y196r3(Qu4rhof;5g&iUCKO10h|(=7vh@TcN~7hLwsoY8DkR z8co@($yui^W}H$p7ox}l7-<`^u8;sdBrPM5shq_EI|>nGHhks=NoG@yIvl)x^DZ_w zFNtH@WESDtTet8h|K^YI$~Rv|;y7q8(nMs4EG$%kWRB5kEx_?S_=_G6wgcpGCPm+j z2uLu&>)-tz{*Q2o$1gvEn%BYYon3tSi{FG_Z)33k4lZB3jPIZ9p?BvlFp3fA5mx<0 z>?dQ4k0uf}&H;O@XZYD?KY*phMR>N0pL*sAeB;GS_j()zKwjrw${ z8FRU1_2Czh4`pVUjkAPoP9JC)-Tt-;K;xSjbc7xE>Yh2kn zfR%JHzp$c$zuWDj&Z38nk{hAXnghDFSnND>vR>+P6LI>#8Ivw92d2QZ>V4%(+OQflMs%>&l;=ns8kw41^6BDR$X>l zxVhH{h|n@OD>DcuwMo?R$uxu-l|X7SBt#}zyt}|KA6JnbD-_OxPxm5i=be8+;a8Nx`)&8q7Qynej@sj69hj#t8K} zU#_Xl=AtnN3a3t;t1PQDYg#EKC#8=>Fgj{{Sz3 z>sxsB?YGP|OGJTd>f8yp_76M2cH$-`ur@y_21LO z+%cfYfi75kLfU0fUq;L~8P_p!O@qruA+$nN)dbzC9!-2Esk52B54m#^#a3XmZ=y;3 zyl9g{#L5+8A7K~a_I9BK%1}vt4Zt+WDl2gxrdln?$-KTYHV31_!1%mC)ohsN5Rr{u z#^?|q-ASmsv|Mf?fHBZecz?-8w?9_!^m3(TqA#Yo8p@P3W11JyL~ESDS}Pg~TDT7r zyzvGNPd<+)AN>&aO1lW?5KQ#Mb(OD{S|$^Z%_ueCyIVWhzJ3egz!z;i$!mw#9h)>0 zl5ZV0NJJmG*KlAXB(zkL&Na{H;H}xnV}rtZWTB)+uSLD1!qa2Z{9!cF`Luk~P~X12 zkM;Ev(!_rG4`||I<9j~$qwvcWHR*ZLWR~)hp@ywzL;5&K`UP7H+s`tXJz;nuSE>=^1zf-$^6vzEW?LByKL!lOj?n$P)C6T)pSE6ZG+ReNfMzuh|yJsNiKWzPPL_pwO2LSB3!y?}W9RRBvM}arcZU=7`(0TDcl$l~d6DY` zQ?&SMtSr&kP=r>qki=c)3e>65{+oyrr-S3LkIiSkj;Eh{78Ozt$6XbdNo=9yMVhv9 zGp0TuvkdByTiLmGvpg*t}45Lv}DPJozVeZ$a&Oz~ni zrxR;ysMIQ`R|0rtPxP;vQ^vTxhf2lQ#$y+PA{HDtv{yHqN21AU#ZXUKOgbf#Sw)nG zihJ4-vly_f0^Pf_QF}!=upAeCOPqO9aQf-A*uY#6Xebjkby#2r`d)om`&)9IA|r_f zI*VMM%QvoEMlbGRZDRwkym<|mUwsqdPTM%vIiB=Wt`#6lLgm5LgWxb*jmMzh7gaS* zLgQX$S-5uN2424M8XTMMdmC~Vy>{g$D&-1X?Bkhdzk!Rlui?tu*Kn*n2Q*8lWC5(z z8uEUQXq=(aDC5TN4vuXs;mpZXx|Y^gmvQXqQM~2L7hSqOZgMPueb-n_U5MrI6oB9zVWM04rnGB=kfpE?jWNycVA1Bz@SQUlps^YP5F3S39m zk7W%}DkX>&Mqfb|=gK59Szm@8GaB?ztRky$SK{h??>WzS5XeHH3v_AtL|)AOJ~3K~!jfXjoZ!VNk3_S^Atw@eoH%n(pszTMeYBKK&m0 zS&V9B4!3u9aB^)O{Q(=;sdQ9{8d6J$Wc|n#w{G|FdjBRmlL)^32u`+|di^wyMGc|> z0_m8QmMi3J=U@+WeodNIlMe?trCgdj+QART2|Q}@CMD#tk5PPp8#iy^^tlaXAT7+# zsXSjoJaL1svMjdHZg^QKu6&8aJ+BsM-_mKYsMnj#!V z#-*riCgj=FykDN!Oem^Z581Rx3sb}a_(h%-kp!OOS6`==(?LH9;o3f|ya+)i(l8$5 z#?2e3R_j6}S&%p8fHy8(#_sMu);Erb@~8B!Qt2My<#g7d6=oMK&iPM77W@5y3UfMH za{b%f+R?tVxVR)^sl*v`!eOjftg4X5qGm46+a2|wQ(Rvq%hO=WDzXA;*5MTfN)6w* z{_?z+ypo1?LcddcX0oZzmQAL*MlvGlrF%=1yvPp3U5%Q5$JZ2PHxT;NkIh~~WQh>~ zrav`k*LJ6ecBhRcA?;ITd5LBx?P{vVoJL1l?`Y978p=ue<(FT=-rlb6*Nvm5VIexm z98S{7p-e!=x5WAmh={)S`s+Bk@tD@BYSmYi0S9}t1WZ!)W|@!tELQPZ zqZqgB8}@<*rKtv<`g&(Wm^>Aol;5w|FS&hJexr35l_K|BJ;3PS%mYk5D%k~x?vsU4 zQA*_4#Uau>`)>|^DQqsJxW(|H$n%7Gk3>z`)VX5ea9_$%^8VefzxR)SzmEHj+I#S@ z$ft0a<6~jP?IhTR-tw=W$4`y{KFAX~AG zoX8W!^$g+dJ5=Q$?Z$}5A%a$hSKj<4!Xe$dMhbTvVx%e6!u&e=aa)C^;oqCESy^l6 zK$H(;NuPU$Yn~Si87IKDJ2@0Pr>>z?C9{cao)^mz^#L)mnAX)k>O|$j7~?$0%G`qJ z40}X7!jW7o85%0;M?TR6J&kN6RwnvIcNii`jLE@L%?A_FqD~KX!#7RV1meE$Z|)eQ zg=sF$%3QUAr_P^AVT8zvq@&Rn z;uu##!bpBTm0^Gc?8P$7v?-0uwO_hgz4=`xNg1Qqxbh)0V(+mvLd6PTQ|KIqGHOv1 zJPi2|>E>*c#m%-CSvbMY>o;-j;@b!sD>y(K{ml$3HK1{%g?3^ox6Cc*M1fyJ81_-C z`O1A8_6F#-yDH+TPm8IMv~$t+{L~Z&5gjP~1P>lPiKUfQ99gcRv)@Id(#HqS&ZAMa zF(g%LY{^ZOMTA``p)-ilKG?$M)@{*^m@idvJS?v+YU5`>U(L!fEGRJ4|5aQdA~F_5 zDqvQYmL-;d;M@cF)^p#Gu>6iSd@SUXbUE74$7+UrX?J)(RsC{7fi%qtbpk9rrgh_(0G_?hXslv&koHl<0^(tca*0&T19XxBDq$=` zgnU}X++1B^@(iJ9G(litG|KVJGhfGO)V*s#dJ+DURV*(b!}dWRUVRb${-sx5h3`yJqkfK!w;P)xI5caKsGVVIC`ai?4r^9Ho13~G zN{P``2?g~GVVMJpet!>9Ho@A`8Y+znTn@=-WFb=)V@Nch{*<&&tBffDsSye~pf9>! zmd7gTlH6p1+|Vs23UW72gc`h*O7Q7`H%W2O?c&nwZ{e-Wd+=)!>QxVKzDeDr zjnk)3iC%7V&|xJ=Mkenr#6VeuJTavrR>Ei_jb4j({XVHbOCJ3HIBvAK_U zIL6wMqiULk(2?%O>_y`uqP3u5JD5xYEC-87CKI%WZIr8wOW=1=c(KcY);%ov>3vc0 zX`*5VC2}w=P~oJMVK^L#zDR8%O?%SNG686%yXe;ebc z&QS8G9U#R+4T0sNY}GKKQ&V0sQ)+HjPGlC}+{bV*z~#XhC2L8qll1#&)m)@;ik+=3 zCTb!anZQX(JtmV-Xi6@P$OL5u7RQks`%rMhN%5e~x^ZAC-Dz-K=dOW~RWx1ZgYuCK z5#4L=OSh57V}zp!QClM-g{4-fZR-t!cv1lDyC7Us6 zP$?6lP>(kIe46}HJ4FPJ**`9Ek^CLhhN)@Na=Jkor@lmvZ)RScCT1hCxG6A)$7dnp zVl*6S%FZG>ne4!!>4fdW_7{+iV_gqZJ4b)iMa8WnZG>p|57emUwK+3Y)h3jSx<7Nz zQiKAhn@&mEfh?QADtUT;ocdFX!{<&Wfu@*5pIpC#gT1TR**U7;5_zY&+h; z%P+sK_hoRs>!^AyJox_i>)teIaW1_h3y5T#;MT3%*lNFZ&*HLnas%tjO+>L}8bF$l zkgYTtx&}_{K zVGx2=?&cgMamF|H?SfS&mSYm_;iQHu5NK zWB5U|jLV~0F04B@DV_Tg4qbA+AEH^Lb@IoKoHjk2Jaz&lX3<$bCSD2AI5doa%%Gy> zTG?=FVWIog{FSby%lgCeCr_;fB*u`sGx3G0}2c?pW^=e%-Ue9%hw_!=;r4FSeb`NTD}-1-<%V^R#HlgtjE3+|1b;L<2g%ghvNE%x?kjWnfL*IKHI{b27lJHSku>a$$d{cgFz`*QR}Dtonwg zyS!W$N;X5h_@`JdC4-#K?1A}zCCiv2u_0lO=nP7=i#>vMK-I5EpGE^N<6fDG!DFbV z(4b`$CCDbJ*bZ!Tw71>Wu#-U&cwS*Z<7gPcMvK>(Rk*|!rhd3&AG*~hFR4O!G*qyFp zB4&JE-{QT%>vCEc9C^BCC(3m*_b8O5T9@%n9^B7RyMNp{?l)@h!NYdlZWJ+WdIZO- z!3sudhDdz!!cswvjy0tsEM-Z6PyylqkzDEO(mr@jU4nQs4bnJQlV3NVNSng-IZ1u9 z`TI3dBjJpZ4EJP~;QKia`hB=gRnuQPPLL&a=?!MczpJ5Gf*$$uX)GEZv#cbRLV+9{@!?qFwHdGeDaeY)p`Hc*Pp@FE4!Myc>y(S1AO)O z|LC3^C9hn?=@SovGLs~;5%J0xccopZV1&JR5B}T;Ny$Ob(%e}_0G`jyvLUhg#fz^X zrrV!Y)~3nLiPOdHty|c&;;>*~4?sJqx?Kgb$y84E=Z{8Yly6 zYmEjv$kE>1#fbSkrIOL$B#DZsO7W~LN~pDC;WTw(P|O!$sEoT_zlT%Dj^okCAHrw% zz5~y`#O5J`MMM|Ia+?SXX5xKOi!6!HN#`VejZf zPMrHF{^sBLtEjcg`26qv7XF8y{-03CA{uiw6+7j;f#Yk7SX^92)K9R~TEfr#!~Yc* z&YjSEzHsJe@t^+We}P+Kon<) zvm!Ss%`^lcRgXHxdUcBBr6XuI<`7OIY;EtLJBaWrzxJEBbp5s(c+|=maw48h;qlt1 zGY6v{V$Wz${8>IS&yPP9mKp(Duuieo*beGxj=CR+T1a~1?OR(o*gg;n zU=u+~qT;cc1|@gO(4hFUFxd!vS;&*}S*tjhSfQLE%W;fJO!EQ@p-B%wl1$-RB^BEi z`fw(`avUuu!!S-zwd=V4_I3Qs-~MU!qWxYUSzP5T2-eibq-R3?>G(;chT3NT#1fPC zb$^gPdT#wV<`x{Rw`xfJI@;luj6U)(M(WYfBbF8?8ih#h(5&y$Cg%lpYb?{KP>hIr zk&DR2wOUxEXQDM~2s5c-XMu zMs2v9)ddbpWYVN91a*F%fi4}pxE6_U31oHy(^zrl!&eQAx{8v9F+m*1l?^@j3pRZi zalqBY=8ZNE4)(CRwr<}3%veT$TE*uupJ{u0OYV-HK_v9^+`0481m`)e`TNKw12l4j zsMCBX)z|15t=)90I0`mlQzknz3vx^+(n*1crqZY8$}c2>I5AqSWY)aLn7Ig1yXYsz zx<7SNSoxhHFYAxoO;rO?i%Mf;(l_nmj^k;w1Y+8HJu|dRr417bCknh_E%80Nc~!$n zOnf+86zJ&dj^NT$@{d8n*rai2kjeBWMVQ*CQpAde8S=RCAzLQREk!^i;Rx}#qng0U zErf{~Vni0RTL)-4bvW^C;C}zOf81}>-jhd`B_&Q;WEbt+J6R!>C&?$`@XHO-GE=N< zYC;{;!p_{L1DU9MGmBRLDwc8bx_86QbAf%UDvf!01yQpz@Hcn}ShAr8d-T+KnXx`3)*MYrvuQm$e` z4Ub#`jYcT2Eu4DrC_ek6KZt++OaBY@4h~RjH8ovNQd3m15ko#cq^&U4fQ?$tML0DM zj(l&fQ_%;vI7&-wRLZ{SVl!wjk>Q0o(&Fz0m0nZ4IHdU4Myt`pcYN1J@wxB&6L@>` z244B*w~S!lb)*k`^Nlx6lUBBIa^)DVUcZV-G{Wnbp1bSpmSN+V&hel8z7N83r`R11 zaJ$nH4J}|gm-4+JS3|kg#gjwSk2c<{Ij>*6DO~BXr=G;HKg8DN7}21Q42H6|vUU!C z`Op5xu<8}uc=JvC;y?b!h(>$3_|nUG@X3d@ISTp3RDbq{L$tdcolDQN4b{%|f?AT<<|T7c1bgx~m`-!ge|tp!{-e;!NgYuLJR9gW(ODIz7>Hos50DVsoExBI;w zF1~hA*-)f$()Ez2sfsk@3ftv%`q3vojOP3zp8fh4@WVgy<9Oarrg;cYpoA zKD-WDBtQP-$MDi~7t!u@kmW-ayhH|%99f5Nxp?rwhj8TVF{~b0IeZ;zX{fKOR~o1^ zY*=oU%sK99fn7k}c;eOg?@p+w}!( zbq-`svez9e6LK65)l^xBQM%9s-R3$&>fJa~lmZ(drEC}W70QC5;Sp()Y%*Zp7q3HJ z3o%_WX*!@a&>+w^JNtNZXA7+ySeu*Ebu}1_$f84*n?V)xo6;;aTAETO#GVd=3-gR9 z84D#${R|5W4J@rJVsC4JC>g<}(~e~{XF;tlYV&O3AH|Un`ASg5?#`Y}U*34_1&nyl z-n*RY+9{)g2qxof33V(u6P!Eqpl<7`(?Y8FjIoda4p3&_Ep=<{q=yO5U7E{?XfWxZ z6ZJ5NMso1v^*d;9zH1AeZym>j4?T)Tqb97{IPqEV9dkW!jZ{t}HAVI;fRM=2$e5p) zWMG+wB+AWV2z_2ysT&tzp%?luV<;nCps1{_zH2_l$sJJ-xxS5x*cQ=0179wVNNJ|y z>6+y0@*XB?R;$*;fCy?0oIQ6It1D}0w?}B!>NrSZT)Ol+PMtbw0DDnBQz32w*w~mb z2Q5i(^Xd(KUa}Jw7v|w-^XQKX2|$h_3cyjLXenIX(sK=|`$EmQ4 zQdQ-F=(NxyEF>ih)u3$7WtyT|HX8D3P%Rqj9P4XGuzTw&p8dwt`2O$zp@Q}}70O7Y zvt$`WkpIj*?b7QP@$?HXV7om*ceI5w53FFZwv3&ff!0#$*79jf`cMu+Y52uKtdP=@ zX^wba3eB{x6J5RK!J_CTu$?Y6CZ6a8mC$D{^kcezud2({-Rn@uk% zw$g)53yr8y**i7J;qR~+CDm}2=U5zx^ogDcB`+1a@u`n|VxknRcOYRLN^;^Yx8TfZ z=uEesYmJ{c797tuYk=IwVxht`p^^6rSu$)QiOQv9(-`MbS>(hi?jQFL+;7z0qepHu zCN_n_DKow5NRzg1@=-7)0}*)^6f-A+><-d!4977db{4>sd^QaZWPl-N9Sz;m8WPt8 zGAiaoGWwuc{JB!CB0-2|v#cr5+}v7W9h=JOj*CAvCJKa{W(uU7$Wl8~t`voV(m5G+dxER;X4z1H^WKqh?*zc84VewWVb$-bf-GfA|gdgSNdkj&V7_$JA-s5W{mXyuuYs-M?qlNGO#J6F2 zZeBs(Cz=oA#jWc&2)Za|F&3Huo__94oIZI*xpRX-AOGl|{1X1?OV8nBkA4*A9yq0f zg4Dp+i?m^%x$qEPyLbyf^;3TpZjc~M$D&g*qi4RgA~T6@ziUEQX-Pk(He(GBeCjOz zx(Au;1D3V0&{P8ygFF=%I&Et=}oo|K`vAb^IT{{EzUHf9a=i`^Fg@ zSt=o~wlL~5w% z<%Wu6ZME9qn5$zNcJ8r0++qS>MiSa+&HFM3*g0s6YULM(2>lK;bl@}Ka)0Hv@p(Cq^`nt0z{oHB=L?M0moOaWB$PkzWYZ%d-yw!M*|+( z-djRW66q8N*zW8jfAvKSd%K!4({g`yJoh>q@FvRq6nPnaQhlcf*xhC5@p-)Ou_v&y zGI!`-$RnsjP4j3t#QfX>hT)!QiAge)_GhcRh3|U&`ww4(_sYurB6jvRHN2TJXAl;; zTYY@<>93*W=Qw*|8Ap$87;4uPis!&AAl$AM6e*e(>|@y7#Ompjc=Ltl5Jh8DD-AvN z_N`6qbrNhW`xp;Ku*wY7cQ97CdW@%Ec@{6e`aHbAGX+-S7Z%*E20IBIDm@oV)W}M( zA7d0|$o&eOsfRE%Xf9nEMN!I$4wohB*AX$7u`D!9=tORc#kyO))0)$S8D4P}qo`t!k22hXCa8{7@hj1%I&lv%dqen_O^^en3Xr$+|08aJ4T4M?A zL5zlPqZcP|E$Uuu6}Y)Y(}$}0K7CV|#z|L*Xdc=!F{yeP27O-O6GTI^#(wJ4-;3kN zmvQOZo49%PHXb;27H8Ja;l$}vICK6uF5i3wS1#YeZ~WTlanQSgovST8{KU7TJse5% zn~wVE9)u{RP4xXC+<1te35iuB`JrH*Wpz^?-3u`AS^h!vZ7Qs?Jv z7t1sZa$@)sgSe)N4L5R;kOG+wk(Mm1oH&a|Klp@+tC+lj_doh5Zr*$qU-`;caQeh4 z%+1e7q zd9g9u%3WiqGfjPc{>10dHG#tjlGK=F*tsvmkxIG7ty#zMc=v zSJncIuBQ6ToaNN!N@j z7SL85X_|Kc03ZNKL_t)iNZpzrlYLQ=nN`bQ=5X9j)L(FCDo zVXk)M|Hnn{{p0`3alcV}4<4jqrBj2J&8FonJX5)~#mW*f7Ra-NE;GHdX46Sg^CP(- z=F`H|Bh68oOfjVoteYt8*D5AI#=R?(uEG5GOiz{+f1g>=qY%RycdXfjiqlL^sij3r zoFYux*8eD;ClU~o?9GLn#f)VrgT|6KDc)ZO%SnYg&GJRE%vK*}LVAr*S6MB0Uin>L z-t1r8La0t^Bq=R&$#j6da3n2^Z5d(k?*6{QUNw1l985`jvMsDE23T2MQlT&{C;_|+^gE@E+M zSuUX5EKi>~BJTge!2y~Mq}f_tS~(Pg6OH`Oe)2!ZpZ||WXzzBhyt07p+qcmBB&K4@qDqd)TF_y@o6_ppC$fUxes52|Wfhz@YWp6TKkJYK6eV0+%X zNFQ>i^j*0=qS)y8zHV-A8f}C)K4X*RRcL|;rj_*9sSuweV(@MsrIIn?X;iDIZ~U3qzsvSFb9o#F6(}*ReTBc-+1j!pz?d@T)u|Z{1Uo@ z9_9+_p9UL@Hz=ONDcQ;eynOjGZd+zDzj^aE-oADX3yW3QPRY2w+9qh3Iu_DtXsN%o zwFl1$aPr(~1k{C27}F47%89aLAVirx$R*7yN4c^J2DZ)zR1twX<@@G-@dtzn^(7R^x^ZUR6MLM&trLM zUdBtwIKoRWT*Qz3sUN}BSH6xq-jC|?Qen)Z@>)hL%DSvq<%l}&A7J&!9O7h0_f11t zcrFfl16IB=)EcKT%Jl800M#;UsWR{w@*Woq1$Tm}<%0r%TBC(=6iY9~aBrjCo)&R6 zKxZ%j%I4mcDMXTMsOMIEB-scHb4zGetGIdNCQbVkcFp7D$z!^g{_x9Rg6{>`zP*jz z!8YpEI#Mr3(_coVQo=YIR(PZ6EB5`dzM+QEvoz>+)M@RTnUsj4=)e2wH(q{Qdnt7FQRsu)2ygAK}L4 z+ZuLoouodFxoz;u2XcESj+`4N~Grd`1%OT74*bJ5JI}`{O$l{q7h9uMc zosAkB!y(*q17#MIa#<|2Ukui@A|X}&C^nNbl=0lRp2tHM&SU+^I%?Ibp+VZVXeYhh z1L-*Yr9`2x$4{)`{f|9`(Uy$3s+O8-FGSAD6DAee{arHT`{wfz>Z zyxGB5pZ+(}Go3qr0S}*j49&R)_WRoyO?r6W!%t#)ZUJw+^c?>3fAe=}3=cnVA*NuP z5e&5Qb__*^w2X%yJO{r_jn|&S^va%#&;QQP(N`^Ifi z8fyyyR*xK2M&ICIgh_N6qwxh5G@jekd6!jn(GVqtxk0TyuW2S*Xy7k5LDiX$(r15#)RIstT5AoFkusOR*0p z$m9c-T4r;b#3|g=SYC@!!bxVeBFd$CyO|m;?!#nys|GR zRECbSiQ&(V9XpFxUb%=5ec+?g-@J91^v^CT!3HubmF_V`9k=)T$lkbwcxxZ$PM<}) z)4^P=fi#)mo3FiyXp*5tyKCDvg-xDf>(-X?3P19(Pv9d@eOOc5gU$%8W($vAcnrwK zm|I(iZ%3~ERRe4O8$5e^{Vp0S3mEk>#dzGfc@0O_Hgx_r)=!#y zRyOEkHAYRhfxW#hTr0o_XNBq5>3TTsXd2)~dK}H$(LcS8$UVHw4D1 zjir?)9yod$x36z%Xma-KX?SED_%2$tIfb=z2;h46(#QVVfB#q1s12eq1_y1-ZLH(g zK^u+A2p|6B$1%6^K78T#|CuHn!%iQKxt8dQqh1An?Z5hO(QGy`9*r=%Fh-}{7jix~ z*AgQ^7VO1w_JIfRhew~rCqMp!xcc@sK6d1k@+HIW2$4I%Fd5;&3lHI=AN>&e`#pU9 z*_UwXwM$qzQo*1-5FPSJYY~C%W0M1l%!FQ7-9)Ps3w<%p3OYXv;Yp!&(>|4Ca9V8Y zA~iQ`Tu7Z|s5muV?cNaW{T^z|$swJUG+eq>+6o2tL|uRLt;^Wny{YGIwN^C*d-Cy* zs|m6yb(!0&pE-u*$r|93vz2w>$k*=RHuPc{Za+q4kCNYv?kLCBo zA&z$8X&`0@b4O_s#i5ZJfi#pG?F2b$9Ll)4Os9B{iRkN$ioM&_@2UAoD-u*G--`ju zzG1`Eo2yt{KaN_Xj(%@|hUK81Ptl;sh@In!)-u{#9ke?`oH%t7y>3s2B(27p98|5U ztEP`Z)@fYAuoojsER6aVyk--%z!(fk`!`9kyWK`)vrJSI30pK;d6FGw{Oib6YZr8r znz-stBS0wrw$XCLiE&P1P2^hkp^Yx>eT!btJohw5Nw)0i9d{?u5wpYhKC|&p3lwgK zwDG?k`;H5krF@#Hd4H3vNOg1MmMI58%V^yAT06VDxcK_3ns}W&dR&DlA7>o3Z1{l( z*Dk4`U#isb)KeeFhd=o3()}>lnvF;}3ejn|G3X89lvzkEi?7eg>BG@^be`ai|Ey+#M&s+sglRH11nnL320~>0j z`5pV7i~X%_+`fGqy9c|Nug@!_n8%PAI(uz}lwZGc4NraI1GsSEJc3G9&C_sfibodB zj$1oKGUc2YMTb*;Hi`9GRRaJbBUj#jQ^p^ws~g4FRMONp8b{I_QLiAHoanW-j61sh zK{1sq1_y=f7A?u;JXUCOh-OY_<^Zly8!4VAN#*26goD~1Zp;jY<}@5dP7Vv}@+`Wc z2v;}P@f684Rj9QBDU@x)p$3Y=&RkEVt0kGCPmwO$>2#Dm)M_;F^w+ zuXo{LMdzR~H?P-kG^&~`Uw`{;thUy0^5_X^7_MKrf>&R89-n{i>o{}r7+il{<_e61 z?;P|{qhm>6ka6l>Xz@Ovc}5-~nnXChc1-sS!)S?My0mgHl@N|b*xlQ~!9iCju{nh_Fr3EM#=K;G^SH%qEFN(@SAGjUU~Heo%b78x3RjqjP9_9QNNE$C0CFybIw?h zcG?}lOR=?m>+rg`dFuu?j&H!W%Es+4NzkeV7!Jqq{1$fhwnQtgG9zv>Kzpx)FMauo zII^~aczhs=m-3=HOcIj7z;fRdMMW`W^2jU`6~~Z#HuThME;KPohoV)nv1&BtfvSsP z-d7XBdzR=XC)Cm)&NVPst*bG0%PmdAv%|%Z*IJ>cDb^w8*d>!xg9v7VjmHBO?TZTw zYJQblnJ0MT`ZXY{D({d(no%@HbF~SQo|?55;7-t5Ttv(DasJF{96NDRj(#D(*IplM z8}rB}4t8lLA9-laHE`*TOF|Q9!XV8P*Ilkv>K>tJ6gmtpFE6PWfBf;s@TpII5^HNK zIv?$JrnQ@ETj`If@#y~fH-7rB;Aj5UFKdv;wT%y>w&_3oGk+S#Po2V(Pi)|)|Hl7_ za5T}7h)vAd^XE{n)wO0bUrVmLmLp4gI+nVP+PhwBZFL#I7_Q%x_GuK45R|KG(xPyT z<0p>e2fzEXIM{9D`t>cm^3qFaA9!fg#?lWi*XOagxTwJe2PXX8d^$4C7WX6#c!0R* zwG(X}qz1>Z$2lekT`?0#U*llHn0us{Cb^Iy-WR@C5{)$-B`8_0^jW0cGV-I$Y`J_Y zIy8fi^So1_D4FgTyKsRVkGuNQF8e~4>0B`$_c7@8rBj@rZ%JFmwv2C&x?@-s7_~K&Tv}R^{%<($>m2k4 z9fd;E5XBf`mSFo1_BlXFGNIpE!?*wz8KSn67UnciL*&dH80pL#PE3G%u`VbZ-?il9 zH6^#vwhoyyDD-81P)Ee*jhLUqDd?ECs)95zVf%Lfi1@0uDYb>rj72 zBuvQNI~ppjTeb;*=e?L7R!ru1S?AC(Qm4TVB+`&>PtON<%u2-MuB^8E$G`8#{YLFQ zcu+*TyG=@-rJ|PyorzLTceBx5PGV*{G@B@q(m;w3HzAU&%I^de{$JkrY|Jdfi#%-7 zG{Y+B3hv=zY8JUtB}XG@a5q8Au4{9pSpbay+!@Qr3_rya*HKUj;-W}4NJo13$^N+I z(k}X@ntx)D}q{GR&y|6c~R0BBfk~sT=VNbT*G$vp{ z!-j3zoWk=g)N1u2=+;3_N4mflT}qCSq{B>%DN487L#LZyuHoyucIzG{Dkw{8{un5{ zyFWy8rHV=gSa|GV9Nk#O_06kD=8O$B8>TC-UB;*vX(C#mui(Vl6R1>cnjrGIKK_Xh zniCu6#=rnZ#{mrs#)Xae6bp@-=$Fwb#?Ib>9P9YG*=SaRnh;AfaU{Jg)HSPs+2R^u z5cBTtHe9B!mn$gc67^i zgEaEHo+PrBA2R6LG7$_d>3{eq8!vP3=6h z&QQVf^ZcektT>O3%7T-Md6As4)C>a zynv&}j>2;*D#~c@T@C_$=WeBfUgrS2w|3C>fuQYRW8*k}@t1y4rX=0o0M@jk^?*eM zub-G^Ikg20h8doJ{uMZvuA^ECktW7S;?|8W`eBB8;3D&5*^85D?S&z%Ql>1(y9*P$ zplqhpPQuW-Nuy?{KJ~JdN==PS9QP4tt{OrORu~&$yI5H8aqOYfD$Z|h?j7bO(aobrr{*K5%V& z7Y{#i8pkBglJif_&Om<0wX3ThjG%?L2vW1W(dUC_0yRKRAHT00>KdI};jnaLL@dF$pakyf;qD3hR0Pi|>jh@#^butFhxcQmX0r?god5bv457ZrY5R2OV=X};zZ*8hAht}}NxYj>|n#^JVPrp_{Lv4ohS~jMX*r^l-#_jjxZkL~H;-^U zl5W9uN}7bBK#hn92=xf>ZMuXmSVq`TA_Ygz(pIqm{ksp&@{&XM#XH$-c|LQCEU1dJ z0BdG5Ikt*eJ-(Ey5t5VRBt{4a!|_NOI?_2Tie8+8a$w~7hkrM(GcC}oBDci+?M@?@ z&QLx>53!3}Et5k-8jR7<<)XP+vfnlcjLE1;i<96Q<~oMq7%iu!O@pPQLw|hll}nV9z5K%Bf~di4a9Lzfc+G~8w#PiL zbV+^ZR8+2CQ%eO03smM6@sjivFl$hSNj%0N8)122MVgmPD3y!N&6{c(%0Yr>zY!pt zTtKJO6-AE;6D%xxq=_w5WcHKky0`HMU;0DXL5gQI2DULuO@>*uQbQaL(P|pan_Y4d zWih_~m9NM(5Yq|PPpspM&-@-r^Ub_~ixE>Fn3@A>WQUm(69t%nS|rvoHQo0!A4fM9U|Sw;+`J)+ z@+6``NLBP}DaJw;%?c#u9Ia_SQ&zR=(Sr6je-FC``Z}wJE+vo!7B<+yP$A! zo%XBq(%tg0T#tzKd7?4r`g3JGk*zI+ekFciXVP@Q{^ zt5>f}yOwl(p)3c(K9VTLa56-&P{qRhqFFb~K0fgN$M9o6^27N1fA^oE>JD-A)T-7v z4*dAuc>htgO8qL`{Sx}TlQ2p-L6Q`n}XRY}q7bQ-0V(X9|U$50fW6kr4ifvKo zqX}G*w@n5hW~Nw&*_bAuj13JNwzSBAWGHi*c8m+F@1q(t5r<>+dJ}XG_C=v1Rhvz2 z78_qtHn+`kphkz+X$({EJ9<@v)YytAFw{N{Nb@2il|Q3~lY=r_`+q7#jrG8txu-$w zl&qGRhKMK)_wCF?_-lRLrM@+Ai_9=r*Lt&A)!wkbPwMhSH%Qg0n!%H0SPlF+Ip|XJka9jDU=alA*tQ&MeQ&LPL7p-1JYAiOg5{{jhoVXzf|- z;l}BwI6-+@Adk5i7>pgTlNhn06jHGXN`;nRfz?TTcpb7PqU*HM0vG^~3{INsbKir4 ziDD2CSz@GYuhcT?g!b{J;fZ-4RAp01JpgHLc zDs|--(b0|~c-P5Mt~61r%^^-FxUqQyi}Q;rR=K#dNuVx_#U;bTxiC+nTnLi^u}VgO z>{+5$-Bn|mbMJZhq0jvQo_q0+u(#7UjTNTY+uy}-JXDcIbRvyXtSu~H937zHyI5Lm zqFSq=lui-Un~2*PjvYS=ck1G;SKr1`vIdv>E!sfKO>1V>V!r9-+%jrzT_{?KVYb?2 zGayRgEAwUon?m_&6%Rb}VJywB%N_C6ix;uAvxg6T@MGu?dTP|9t9ZxfVlm))Wx0Wt zV5aXJ4un}``23|(VQp=}4`?%)!J+1;7#3voJTDn&HZ2g|Aq#$PYE?()-b^V8>iQTa zGc5v;vry1qth)++Xp^1LK`nNrwWzi%Ohcl<2k=-Nk_r?@q6Y;Gb&V1{`^kg)cX14TN!kTFuAp+uK-J zUBccD^>D7a*Mb23{*Ia;3Y)t9K3Rye!_P;2rV(PyRr03ZNK zL_t)^5J@tx+`@a##hry1SrTd}Hj&bY86|5~UW4e~fREFR; z-@C11+YEmclboA^bbI>%<#GdFt%ho~iS2eQL^Nvy*T&Zkia-}&*Od{O-#{wNpil8;pMK-@)tn2DB8=!Mx|H1%Su?UULb0uw8Ple;pLU?D#BAsv=IjV3MeeGIxO_74s)9;P^T{%kSCE%rN_ z`?w8$IY`q10<>fUlN6>OlyZ1+f=QmE>=?5RdhxRNw-fVO)R2iw!=`_T%$;ZeByBQT zAcc{dTqb)XB#vzgTbcwR(9oDoXT+!<*qGtJ({yG+1Cw(`G*3FlJHykvk37G#M&*{# z1oF9KHs+2QsYkBS^B?YgT&s%>kv$~0w^VCZs(e>6fppb+)*%X-b2t+kRPFw8|G@o5 z?Y(&@43pCp*E-y#MMEPUhT*Dlc$hO{J8t0)MaUoUO1261ysO)qQ5J>m`TGMDDUzzwsXT56u%pls-E z%Jr&Zb#)b|PMyJxn^#0xB=zR{&FiSRzMfw0joO&*bZbswgresxl?rQO7nBrf;^{dv zqfrIWTACmmy+SEB0j4b26f>cWxkN&E{z94!^}P_Wp#C5)gxxA~fOj>GEObha$;dJR zv7Vux66xfG+;P=-lirHrUSxyJ%%I)99^6e%r{|;-iSx9`@$>cjM52sH-ZcV$8|X}l zc=-~i3vEMOgly-C#}jE@l-lYAxOU?j_IDB-P|IO2!L?&GEXiaHzeWq}2qotCIkS78 z^d}#kc8X@p79!(1z6n*0&B#UhLar%fs*WptU%BGzJmiY-a7Ec-z87^9Zh9tuxjC$HEyzt~7LTK=D_B|VD9eh}F(a;lt}UNh ztkKBO@J0iK@d&xv&C2l+*>3X7eDjarS0M9sNaKa zAIJRs0uJ`}We7pqDu)W)L8xm#O(N46maIc9)GVVb%Epv(X$_~1;KJgZK@f_2CCMge zclV^1oLgDMr$6%<4WFb_oMu|rhz@eta(75FW-DqMywo;wfuaDPq!HkhrFYE>2h-U)bN{%1;C`d_-aJ^y zRk`sFV_BZlf_oIT4f<7xVP#!y8_h*raG9B}7FyX|rFb#PN#4;gB|facxN~?!ZBkb# zm_$GtVc%IK?*2`_*371szaA$hGS($qmVPEmKOaO6;EY2mk2IC{$TDLE!YcNBIIN7OY8G07)d z;OWfdxJLKJ4V0)73lLhX8}o%2lO$3`4L440mhW2p?;Ixnu8f>93T(;|2q`n)W=WmP zTbHk*7xi(JZp6-Nae3#kyMxE+iK=y&=!ws8#AS`#;J+?3WS3v99FB_S$wtN%%CnT?CRv$Zhs`Nw zX!ySb0NHFQ_?3u(a3ous?93d6h@c9b*jBa@HTx`p?Vt#&1vO7~#A#pCS;ht&Qg4Yy z#UUJqKvTfaP;lyEoD{y5sqr%Rm@&h!C%$srI2lzrm5tDgNu8?5J<%{&O@k4V8kLUW zR)Itglg6DCxrb3~?hlI&U}o5@W+ExfF#N30e8$uR)i5TiQJuo)^_*rn>>PZPnW$_g zxvFJ|$A&u0B6ph8l*ZRXDZZDpA`N&PgESEp=X~@kwmmFb=9P4paNq` z5cn=qJBOz)&kTELD5Gcv4J(WlItNNLCzy?F{vY<<^jWg=J`a2PtbKaBefK+eHViNe z1^`Kbi%b!;7Rn?gMYgqAPVyy{M6o|)sq!C?d`Xp)N~M(KLtNR)O5#PfBdJ``R!U@( z7PXK70WKg2f>;KaeeTxXx3|-0Pd(53p1yYmP*VPeisne*+?l&|pXGgjzu&X*`b8?h zyGU9l;x^{+DKV7i1rbO#XPy}fFpyRa#++3X9T`12=1~LaGB{RmJVq9KmdfpDK*CHd z(x6I@G^0R8RFdREg?x+FK;{k;8AKc&+|x5nWUR@khIUJh;@RCTEJhWuMQU41&HFGu zmbuRxuYXtisI-`(>90tiD*9Z5&Fg{2>#LhSf^Zj4Ui>6d>LU3bb2A{RCv+whxuN@2 zG(~Et(hT?R-@}D7=j75y^jiZG$3dsn!h^jb*4Ns2^w955sO;?_$)?EWfzZ4C_l`8g zA%%>y!OLf^0r)NSnh~yFx{Rl;Z)2s~6`Jzk!F>d7QxtQau=Et|i%&448^n%S%oGzc zALj5^TW}6TG<)l44riF%eIKL29G*o1g}k_=lJ8*U{3hWUrV7ENQ` zM8*OKl62sl%~5n+bMKI<7Br0;F^83+W+t|YE~FV`sCHb__Uk>#w~^{4G$f>@zcjTp zx>ERcie?nZg|IArA@pp9$p5B*#MqEVZUI0#ogFur6}hbylB5( z6ne&Lq}cO9FzJKui$)iI%NRhh@ggFddj(o@$~D&aj+Y_LeW5%hKX&LwdZ^MP%XWq2 ze*VSJW3|7I|NVdcUA*$jH!&RViQ>Gwu_DtaVVPBhBnU_X;&blsoWi4YE7BIkK6FjN$zk*&U3TWJEBX#Dm9B>C8pyc<4LE zfNBaO8L17|U>mf&cApgk$-^oC7VRH={`kC^r~uX{Jvh$T48=q%g%C$44COFOhshFk1F+;~`wb)3kePzR5ZQ$gC^ZpP-Qs=tLZM7I z7L@J>{Yg}0)ZbRxzb`*`^7=`=U`#-rqbBnW*T*7B?cYu2*ok`1OdO*yw489$yl~SB zn+7#I1qUsU()b4I>rCcOVqCdPS5!k%B1*XodUDEYG;Hz!^<$BpZo4xxVbk|oYjqgC z2PfgB=p%<(h&Q))WN8h1?Ko}bgrBdsZJW3gn5R1Rr?Ik^mI7Ny=c#eoB0|?+F_!ye z&7>)AzI$JK25wf<$rRgXRz&I9qaAp&FD(J5)GTPIh1%HM)cs;?`%k9d`+J9IE{UqHJZ*~zUnFQ7q(=NK2Xs=#{vv$ zq2i*`Y9k3;X|#wmh^p`SXh!X&K8=62n~|uZqx%oAxw#_h3xh>@59jk(8>^78ATsCC zUuc?{X*%s|^82CptPmhaC=Jhxbc{u*d?~L975{9^lj2mXDzc& zny-RNw%w;Pu&7^X_|CFHHU*ZeA_TSdvtu<#MQvAK8ka{0%Sk!!Tc_4tx~E>-vgoKD z1rC=i&oZ-<_|iw5*yo3u5Z^dv^7+W~4>@P{P4k(gvzo(cZ;^?vNQxXM^p0H3BBL2) zW+EFZ7F(V<-{$sl?0sb4ul>ORuOH8&7hB2|>^V9?`(2xhq&!IbvV=t2kBf@BoQJ2~ zIw$tMdsaJTGG^=IJ=H)-uZQQ%nHOKNbVw$Co5 z@oaGsDvc@6y$5^f-VAU&K1S4aaBk}|CbJ1v`)f!m+JrAq#I6h~Ha2$g+Uwtw+w1-N z_p!EdQ4}oCnj_IEHnUL~Y}PpNp$6#fx8A{1=buyqytcZfwStBD>#x5hl)B$veTafp zpZ`lwUPO1TgPA`^*pwA7Zr;6PZ=*^m?d9uFpb18dgt&0&9M0@)pxF%MrZ*gp@x~9{ zz`5;nay$*)1|Fpbcz%G5?GEznSk9S;`-euyMzF`y;#kBxwn?iIIWAAfq;2|!u3q0O znHV3Yk$Lp-<}=JZGUD8o-5*VhZ|S3?Q@f$g6H%Y>bcWH0>(mS`ryjX!TIf2u*6U$? zt%HN31FfqKInHK^SqU9qYrW$dq?O-OF2nE5eOg&o0NrQF9O=NK`c7>C(=a+J4rq`| z14x8>t|4Cpzuh698BS^T7{-{?O?Z9%%w9rmTuaor!ZkI38V=tvaT2+4apw1t<-uVC zpDVuB#lmF9vB8xl+{(dZxTTfZ(Qufqu?6XUrC}j(jUY|(;NS>XuUx>z3+H5>wYu8H zO=drCb=9a*J1IN+s?wjlzGUG9&8DemOjszAJVw|Km#)51z1KQsJz^6y4NJK5Oar@y zvn&FnzZXSNFr>*HC6mNFkEY&m?2s-iWlg2~FOZJ;6fIE$STo>I&ShSrQlR+B`t#^P zq}-*REDVI2!scnla^UoguS{8qvC**mCLH$zl~h)ic6gLq!?s{KNFuvoLBkdIae4mu zFvsIN;Ujpkxk;>5FALOUa)hwwAw30eQK!}{qYu3JsIXSELYE%ds2{PB%`7@brhZ)k zvJhc(T48CDcm#|iO(8p_ny6c&OvynlZ<0 zQ#Dsa=_1!f#7#ssL#2P4OlL@wDf;0Wvg{sK+&&6g0EbQFvzgGlgZ(|7$9B-haC{_3 zGUwtMH6&c5MT2xJeb4D>9*Yz0>(pK?GsjGkv9{I{vc~$1+O%@Y^0%SaMihe1ZY|=5 zv|y&4y5nQ5vxUu-RU{5|j42b9Q4;0oMwlEQr5+@S&_ZUsUd#+(*Xq%l?T)OlGUfR2lDGL%J z8;e9mz`~7;b+mQr$|-gCW%P!Dz8kkQ?>W1qZOXqMG(l13;>r_Bm0PzQD_r|^;EEaSs8 zsIdhB8)uOAXKldiEIoLIEb`_0QJ#qPA6iSYLR871u*He7OR(?rw2N9TtdC6)HMJ#{ z=EG)VYWm(~k>u1)u`Ial+i@GN20YTTxb@Y3m?|Wst@b8(M0x94Y7=RTNh31@kzU6b z`^1jche{11EzdIz8d$s*rHL)6?6pf3FOZ0G2-mDj=hn|7YWFZ3%&@V#re2i##I@CR z%tv#C{Z+KOZCrZx3Yx79-QFgm<_21!gT4Da&jal4Y@y*tdhTc}RhB1Ic53rBw!2si znDciZdxz(>PPP@FQQ`1#h)yp=x7*iqefr>Ry zuJuIW+B>*~jnz8VLj*@j}v_=oYyhQxuS z5Dh~i*V`oh9wQjL>1@CuCVcNX^{5t zh1AL{Qy@3G_!~6qnO|S7rr`rT>0b zo|u5hp^AtEow_oUj%JX9n)-LrY?XGxlNvn;?1^Cn8ge1?;oPo>%jMBqIojdS4{;?D>_D>(C+ro zNDD0T0zu_tkfDBnrUH!XLjl~JP?nY6uXJmUDFD47(?pt1aMRegTV-!{UOF{V~hp|*xcRGR53n| zjn*U#v9Y#>SHJ%X{`z~2#aHwpp%jaG&=!@rJ&f?r_EUB!h zv-BDbY;3H-^&8TOg)1fof!DvjuZ%leu3%o?LSb|=u*kEqX*g_wQ}_R>uWUXKKW01w zku4U8NxDGTY#Hhy(Uh_r z*J}XHNG~1bzU6VPH_BD?HBLRlzUzNrh+>{yHpKq2)-%R2Cps4D)oLm<3)#9!W5dRV zUxpu~20OITE{tWhV<@-FOvC?|gD7Ic^QxS`51t$ryfwncujTLaqhRU0MnjhT!_Hl4 z8nnu~ct*-3K?z?IgCj;4jg)7!A z(dap!dg`iP9~&{AhpMz_PM+vFl=%xaiJcYW_!@>t7e>c3nH*z%eajTPajZaWK1T+< zuO1R=QjeHpglukdni#vWwY4n`7Lft2rL!qbJQlcr`#x^Ga}%HZ%*PZ{K!k8G8et=9 zBh6-*98dH-Jjpfxk#kOmTVMh=Xd+1qRNk>(N8lSX9BN&8A5_+qFhyVG1`E_*H zR&joJ7aJSvi1JdD^1$8$yvo&YHNwA_@bE> z+V|RRPhsKP+dH@wKhV$SUhM{_GQf&bl1$8Jbp!m#pZtk(7rWH=CJmIu+{C}|oM<@eAWdSV@T5_5 zDlwU=yBiVury9E z9*?kpa3Grh@nVkRc&MQ8<-*o>(LH+s8@(N@(=l~z8(Fr{nyn!iOJ8EZM6^-f$c=MDwnWA%I~k+rB4Ey)CcHbiG~(3S>-PHJ32 zCu0ZktWZuGb9wsfU956CJ)gqQTumkC@epoOVLCWOp0?pMd=>tUQvR@eHN&SE)}9UUIRZw8{)&=s%M4)Nrba}qfdO&ZS*;FO-iyQB7bAz$-+h*r0Q zYtKD{k3IXG!ea05v+)|rB!W>53>fbB`*`6;KaJ1+#HZl`b)1# zi_za$)9(qGw}yH!Y@E|vTbM8e`sNSs3QKD=LX?$@CY$5LIF+(l=DCy6MQk?4Jk2e= zjnom-v^oBVbWo=c4j~jK++h$P=HpT*Pd;te-1XINXBcA0W#5C|fa{q=O72 zeKmu?8*+AAg`{2KvHm@ZTauab9w)Nk8J~L_W`F8A<9U(gb7)Y~Q)>f1N4H8UDg7`P zwJ3B=wvebyG(9QH9R4W(GtGcg+p;x?CEOn4@-aG!(28^8*>yI7VAjSky8? z0~0+BAAazeWmDznuFN4=n6W9M3CJV!D4B=k&H_$YSgayM%AraE6R;f*ts_IDI2QvWtyNSJ4p1tc!xxreSG4XPvY69uVJ30%Gu)c6H&KA z-Co$n*48=8HmH`3RBxq^ez&h8xUf`M<9r*z_u7_@K+~cILZ=VkPccd+qNCAKl|zU5 zEWu=UgfcyYqHO4MkGknF!-}uT4{Jm?!FV{u@$nGr!44;Bn2tw!{|^TD5$6kR?`|nP zpMmzb?%l!4*=x9d?ODWmin}*&126u_2d>k%zV$K=4v%nQhmgiXiPZk0!eI0O*Ps6s zHdfX|zvWfFe=x$Y{geM2Uw!GDxcbBvp15#HQ4!<80He`FYlMQDld;T(cy5xi`Vj01 zD4V{V964;{Q`YR6L7$si%k|t7%{_^MY7rxFLzAuM(kRE*vp9_ptm4iza-kFAxSXTo z@+bC8ki2&i>mdI^YcEgYI-k%*l1WobZCRty#NpupW&Q>x=F8jW001BWNklJQVfRL@@m!YzPrB{0Tu65&!yyefGexJcIpd8UctjOj8rB)>Q>ouXk2j9N z3%vBruVbPJk)e=b{yT?#)Ui$IN+~8{h50bk&*`;H{Djsk#_%+n`n@{0T&EoqZ^EG= zDZ$3nEJQph5p_Cv`}H?4pNyAxU8fb{>h)*v8~^Cnah!Y{QDUghdk1@X>&7kZrO&_c zY5d6L%Q(BSW2k^$j$)DH=IAEg`QaVhy?YynZ1^(|ySr-$3m3D+SiiSN_ED+o1L&z`3XTBXtWj8^&qUou^v=X4L;?$MEtMv`O)0 z9vjlf)W^ri@_2kFd;|{$iK-E4mTLQb6h1elpK@szOE0ak{J;oW)U@7@cb6m*Eewf{CONc0M1=JkN4gipx^H-eH1w< z@2zw+Nw1Owy|pH8-MNFCw{Bwp?g75`XJ0pg-kysyXU-sWT5?DnO%4>sz4hc7xP{5O zI~WYGzPgHJ;p6CF4?)k9;RI<;&hnlLFqurTv$ciKeeOlP`Nms#^UXJ9U=q(_tgrU) z+{ZtrNqwikfo|6q6}8>$BF&C*64Dy!fL(g_hrwsY@=TCey~H!@fDbw|fWs zc<=W6LIc#4<(W3qI!{pc)Tbs0vT)}_)5D3@>O%mT+&Y`qO~vvVk+#GX#oCk|^K*z! z3gtYdX*ekiPi|V}`km6vl-4!1v|3K?+3`bqvWJh->M81(OJ*BF1KxN-hFK6)nQ>iZ zxUc7*pl_sLaiY&DF<*+l)}m$qI)^l8zH!RS+)TPv1}(GxlkIh_b$ev+5QJMIvrHq0I zq|;%s%C%%No#KfrJNWF6{)mu<@pOXK)m)7owOO=(_Y``|p34~M)KDM|qkj2s{t|xs z_y2e~!6$-j*c7guHhEAxwboz9U{(kX>vdO5(ED_%wd~53%Q$;}M?bf+H15;)>&=^Y z@!sIiaP`7ZVSBfW`@3q@}3mbKLtY^<->_DDE7n&X?Vz9Piz ziAzsPCr9d6$uMo^&XF=q`}TGl)A8iwS>%0Ln*XZ8=(Jo?8u@Q}&O%F3qQNIH9|=%vWeNtU-^4kQ`{lGM*Btv^4o%d_Ws^;-@fs>8}hGlf#rw zr-#bRSNkT2#Fgrvy@vnZEYhQ821qqAcT=r>#c zT5I^@#pDXI8h*J!i7W(B=DZJ$(C{FX6p+Zy+9L*t@?6uT7d< zfj8fN3s^AsC&F}oh|y$-gZ(M4JoOCvtIWT-kNF};;B271+QXFeq@*ds1x{WW?oITs z)#~6|-+BezZWqVaJ?-XTe~IkA{PHUb^mbarB1UkWEBai#xQSagN1|5UxwWU|CK zMXHT?p3e3CZMSZcfx(>vW3%1usW8cs1)?&-oZ@>HK{*}DPI@C2UPMArH*pcKbo&u0 zRk`dhyhj?Q(z-9|XR0fgxmq^9i z)CZdSHLgL@{H~%KPF|OxF&7MP_A+ySYS>#-7i}>|+{X4By1#WUVnn%bTsp&OS(Nzp zy^=oXSd=fPn1dc3<;lCNoJ7<-r_+T`cS?TG!ekneKIMc7^4LKZ`G`*Sf0+=50#+!4 zd7hzFb`&d+!8t+qxhi-eaf~IJrip)K=#R0SCr=y~`CTCgE^2fMtrYQ^cOs@;4m<%t! z{1O73L8sM|Ml;EpSliiA0WZ3wJqKuRW9>|Y2gCaq9*@wD+R6>|TcIK|Nd2U1?1RAp z4h|1waKfRWvfQQ`Lk{yA9>z1Gdcexcx|*#x z9$`+DWS%asTfP{}V&8G1giU4I6j`^%rf zxpU`*x-H#585&c zw!5<7$z`5o*7}-RWQS*sOzx(h@142_JhKKQ#(1qL9PN8FPU0ZO$XqiZHJO|=#^N)0 z`SNA_l`s4Rrn4#j;HzK3EKbmGJ4i^=Z-@AFC+pguM@Xvk%?jD`2T_15cHoA-gw_=Gk~+cv)L2?a zMp3JB!!2i17S9qaAv#)#XO1o4Dtj)N-{#r(RvI#SEe5t6aTAK{F8u{a@AL{^Kb9MI zBY*hLC&EJy6c#hos2Tl9f!QQpx8ztZBbj$#szhHM5rX_Kx5*dRoL;G|c0v)x$J& z7AD8@<&^w*JeDB+{(}RAjgE{EXkp#yIJkH30Nb4%T|YAKNe85M;9zu!Md}F6Yp^iL z_YfBo73Ptw_UAg6+%V}9$O7d%-+9e!w4sNR7RaQTI3@1hzlS1OXquZ*$X)JX!JH!M zyrM%CafDf1BA`|Aq7I&RgaR;&PB~w$$?S5`z}`MB{v#$kXj0#4H4!oAC!V4a`l1QR z^Go7>s{ydCYAjk4d(oxyv5gsvR?il!b*5lh8(=Iat-Mbxt&&BRHO+Z+fjrU1&|sxB zuYuPQt%vTXq)OFvKYE-FsQ-|sN1x-Q7Rke(bnA?<4|($VJuI$s-@G49v`^&})|eBG zZV27!oU?Ev#k%1s7?|h->4TdaJtWpZhM%vGfJQsgOPYVEHL49Yo{rItoH{slHwER1 zk%=!9z)Yyw7%)(q=tVgl$O@gNB~gF%Whz8y({CriZojZ{j$A zfbsqXGkGZ2L}BI|h-V9})g0oeBd;^MYA3&*kKt&5*GI>A$av%L z{px>%?|kRmSYNr0GiR@1G9F_v8Y_Gp{ul>?k&4^QB2oKCV`+G4EaA8f4T4gd&6Fmd zMF#jZUI=^~&r2=&zGF0kY-(xTDY_v4bVJ26REve&n9N!cnk>Zm4AVtyh9eE*Ohav< zkU1jvi-iUm8Yc4D2v44V*G487M??peWA8V9O;OmaE@~dzaN2D>D`DA|e+2JEYU?-{ zERz)ED=@xdUJ!9N_bDG(Hk3{tpiF!X#m;T+3h||LGu=N|`T_O_F>c?!iP0#Qu@y5K zRrFgHO25B`o%IbNcyVmrYmp?P(3;_yaa25a?wp>{y}domr?GT*4Q}#9ZU?xLSz}4H zcHE^C7}p7!z(|!&c1JhD_SP00Czign%#P4$8=E7sBzS#jLb5mzRhlT;FZ}hN#rl~| zoLOI&DT#@lSrRKw{)f^4-^XgtQ&ag1Kl24R^Af-L5C1V9+|O|7$~n012P+w)%RT9y z*;F%PM@v^}_CeMi4eL-^Dl*44?u&VXcu|UuU%L~R4HFfRB@9eYv48JfX}iyzyNJPX zh&O-uw(%_rrzo8@(RRs1DJ_Y*kZDe7*6D`He+vRfxrtS?g;u|WFeR*s71a-QIy39JEHew5rQz3Q^kjGtgIC;%lfZs*3 z$kFve92avl;mk8_s$7(h=_J?`E(dQ8_^n;cojYjZ655?JXtygYkfF zXP#XCAV8kZ;2}j2Zos1rc^0F|06NFB8%S!MC!5B~Hw(D7dgs#iS^Eka`#ec99n1v4!p7{ zv?iIek?HFO%Zdg<2A^hhJ3L0x+rr(!A*&O(O;gY|!@ja(zznWtis^&<=ykS{(ao{Z z#DEsl?ifBB!15;CRtp#h$eaS9-xI%o9uH*8xZdkyHXftXYM_WSo$L7`!FZbBty>u; z^A4JMf{tg*XAZJTI!!O0z{_P*VN7yPxd`freDVyf-Lb*0D8MK3QkJ%OfHBi3t;M|t z1e(k*ki^H@yt7C>Lv60DLsyK=2V!{ANrtFM{|rN+ObMnk80nZCT6oI&i!{YnP&`fo z>NSIKj#cy+NX(q$q#PT6l(`3|lc7vPl#$V|QTxcEv*omqmlN~)HNAme$2d4?%-p&t zsb4$MCnrIY%+T=rDjwl-l;L5@j6{u zQS+DaKAL59ga9e8p3rSglxy=J< zTW3*E?P*b1la+>Ti9+lv3EGd;rqGcs9js6vOl0#?9A{;B=d~{ot$E z?6x(b??xUz_xVqwxzfi=fBK5_a_um}MsF2v5nz%Wa39>E2#axY7rTe9gd=43j1eGyZ>0uSwsD-k7q>N8K@LA>~ zbefo?BMlgo!AMj!^pTXu@Tu913^M0iRG3XBrXK3>Eux_9_6oK(`Uu;OT>gU6)7sWl zCg==VwT6CgMeEJId;4mXN~eve8B1f#VM(vo#Y)sc<`)<(X4<0#*--=zkx}k!032_YBI-rckap! zIJKFGRNT(9rg4o8saOq6w5kHM7ebhLA)Adz4!uQH;&66=a(EZbl@2C;tN`&w;E4^y z3&8s2=D`oxLgL(~e-uCSr7z*il`Cj>3<7Ipnw6-)YK#cgp%8VF$XA^mN^0hnOBeCw zFaHD{4957%@BJad!%V1}BQ35$4hzD)%u%!YTvF}3y&e#o=m}3T+h!I_M14LU!!I)# z3ptUC^q6Q^s?B3MJu>Uo5V&>gRSX7$hw8=O{lf`1cUIK%Z$%;Iw@XC*1tPbF^q8?*65>pDVTj*mUoR^6tkrF6>n>|N;^gR`*qARf zOI$>vZ4~et9$MW9*(edUfq}6LB1I9ArWxXngXw63)^HAocEc^|O(M7qnT|6RT||SD z+)$gCl}UtyMW$nQfXq%>D6}*~XLSXOcwr0p97lrzhH0YE*3g}aSD!}u5i!A4kNo(naFUeHAlt)Oc7 z7>|xsBy>A%wEKN@<0F~N5IJHo$!o@sr;|B0E_Sf8;>q@aXPfj*qA4!XDLMGD`Av*l zr?#h5_QH$I7%;HtV*y+G@v@)|TP>Y0R>XD;kSGtoYdqXF4687 z0|dS|0#{z(VoZur8KMye%0?pdN?IBQfXBJ+XEs@%{p{z^idwoJ`$q%#UPGo9on@|8 zvDAc^>@GveAw7+nv(tBQE)5rKi&pC^J=BK%+`N+$VaP*{?$QnsQ_QnJcTwc|c=U7i z-)o$@&Nt(Pmd{i1A+BGK9zyvP4ByrSCbL3zHIPINsNX0|V~Ay-uRTGorP(3ZM3#-9 zcZx7+9#Ydtv1pASk*?{vbt<93{caCu&YY#25$^BpAs!zip2w`(^z75sP@%FG<$_!q zeG_)gY$GMhC%R57JQM=W<~BBkJ+qRsSq49Xj5DrZy^f1jj$7|Nz|H;l&7>ZsJn))RwO2W$yof` zwbL3zl-3oNQ}-Itp*!6hZ@q=xOBYb(Irff@@SX4d0AKx=U%`cbTTNq?W?Em~efwR! zH5p(wEu}rlavK$4S3n{aVY`W<*TH5dQez(#0mkJFP8^%&HanG{W$$KD0Qq|Ixt@_J z&kM=Kj>(jwHGHus(IcXR9K+E*?%WyS?%q2HJALfk8{p&5J%{rKGe*#(&UiKb--G`wuWm z2YC9~r_c^oka{JO(F{&rDRU~BAK{57p1{BPi@zw%D`}%q1zgL6`J4^YOz~XFV8k^R@vyGHT(|f| zq~=?8^D^qgQHEt~^BYfgv(k!7sY4CDP$AeX=o_$TZ2CAF zPW1kgBtz(y=(M{SPf{7>(0O+;%4Og}CI-KTHvjAEPh)L$1GshHg$j7<&)M`rCNQkKqT3GbGa3dEwR>-|}GWd4r+ z`l@jU<-Sk>@7%gCbet~86YHSN#!|FMRv8UoG91W+1inQG{#UXW=)W)O1 z7}+96k~8wggC7{yO|#k4z1(d#jq`Ct^Q-gt$)A1^Uw!Et%VCs4$_w)%UFMr*iO@-C z|L}}%c$r_Bp&9isPsYY1sf5|b(8S@<5G(C4On|K)%CUn>Ou z-o3l{!FS)lZ~xx!;>n9E7%W`$TAM=I@9bxATcHrmcsm4B3LA)O1&fpiocV-+e4S?CqHuf;k`VijC|Gs3~) z0}SS4jPFk{x_{rkk~X%_oWW|pkB%RTV$%*=%EO`ofZvH^JwHB5RNS#iWx>WGJ_}QL zWmj|}V~t%PO-kH3*u%lW0AxGzT96LX$Xx86J&UW?E+egmxOMkk+&Fv{S9h;s)!S9^ z)1bp6GupgL4Q#^=G^MWOg4aYrJ)hx?$W^f_=J1FrvazZh43iP2^F*018>^e}4t^-~ zQcX!^nl<*cgT)9J@-^e|w_xd-A!WE3FQ4xsEFHw0l$KLuiyCWLEYZ9yGm~j90v`2TUp603s%Gus zuw#Kn5WAoEv3t6S3zi=lU7eMMJFd;sazv@M4-nkAKtXh_IPu@l?4}v05J(O6(TR*` z|CBkobP{v}6Lm0usFC!n)xIdkv5(p~PR%Iq{j4dfpA$}0oW^oh4Ry_p=G0O84=Hg8 zReP~-0(0ymn0> zVNn`tH1$Z#Gn`tD7>hol*UCe4Lh$luMQF@B;#^CWmaM7CaPmFVTyi+m@>?p#8bN|E zXxmV1^SUb*D{h6nD&ghiCUY>+k?(AIoJhMxwAM`)GB2VLK|dg>R-w#ilpE5_53SXv z3b$I@W0<|>JUOSHE3I|~Fp1|v-TM6%Bx7J@bp=2FrJu%6z4&>oc6-V+++N+p-}(1K z{PX|mAIiXDJfC9y{8_Y_)D$}y4r94XLd7nu0Zc=~BzB!MuIF)wF5Sqz3=y3SmGwtA zOT(s+)TT6!em)%|6JX-hMk%o8}H8TS(F|oUo6b=eDs( z3LFd$(Pm@fbcNXcjbHkkc;d;Y$RAWA^X#Q7Xl<>VyN_l_X^9J0c5!s~wjwyvxM4!m z83OJ#b#Jk#bhy^GSKt;iHRrR`RY9M{s@=-I001BWNklmp5!!5OotHkN6mR0vpzW-dU@8=WG=&$ z(P)MgvGz3vl*2ZRA%{0z<7~@yXv(2s=pk}AkV%Ba8z3 z%r~u@YXTW5y0Pr+Yc*@A;C&MT!3K->?mO??BIJhEtz8`KkCZ*i|70d&Pf?b%vAy{e zzVzuA5O$hs;<#oU42QUR>jB<->n0xD9AJNb1L=4T&CUS+&I($M6}KOkM^13DwYfQx&cbXDA4W@7gJOdOh3F5fGXg-8XN?#Y~ zU%!N%_F1fy4(9P3H*VbqdOkL~Tc~KeUMA@DXy;JjXn2Gu+{G~wtI$0>rh z)DO{eIiRRfD;A_OU{Dog*Uupdtq3{8#M+E#@8jZza(Zs4A43LkE< z0gN*pwG=c)Ad2a-DM~2*W_D1DGOS(YP8ta!jgUK_MVSgSZH(zcrQ9&m^o)S|=B@WN zE4Hg@(8jU#R zQdobKTf{N7^cW(GyoXH&Phshi#A4h$z`Y9H+diOKZauG zjMbngW+xr-GJBd>2oDB_c=emFz~AWV`u4hg>GJq9s72En#&ydvohFNMYSFj`@eH>@ z&lEenmb{-`4=MF!GMuoXwyvxEKqAxBq7XUAG>mEJo(V#~miCzE$GT3kxYK}#S#6kL zeSH<5{Pd@=zOf-)up~|m2hTru8CO64aooCp13RVBC{kb9Yz9cOp4?L9_(n7^4CN{r z%8}AE@I=5;_7V(vnB_=9gJ3xJy`$Dx!sIG(U9E&7nRtZA3yhAXGCEH-1$_OyR}CVk zs6rKiPUIm?GG*M+aE6U+k`1uFvWlPh(wFocmNIZ~aQ&%k3QcAgA2wXH`)y>?nIbsY zm@s04mHcEj#w?x+A#|*bl#qW8LfQe+oK{H{qIL^W8DfqxKL7d8%dL{@ybSgm4w`{4 zt9~}&CPUQdwkl~1bFF!K-B{Z;%s%<{zslT~9I_BCB|>B~5V=+w^C^>=$03kUmr)MJ za56}#jdudSsbNyA{W61B$R8LF*US(3k)G^t4lMh@I1R7$`&#$h%xI}e%invjr@zxd zaWGpT&lWm&u3f84h`QB=XN5%zjY(LN7_B+O#P1xAkWWjUyV;m~1`SVqX^{0^8VqhP z>`=}afswxHg=XIqQ%AZ}GpI<@7*rn804H-Y?HFc=>k7@wEW4uLTh;fcG}nA8_2WNgr?g{*62(Z zh!-=hyU8LEqU{A^c-}hh+8&*YtMWd&1QrSSw|`BtUzw1*RNlf z3p1Y&v6UXt7js|U+TO%-&pd}O{N#)1bbAV^Uv2l)So8HT>gOBZ_!@4$a~Jy=*)knD z)bgHj!vulT5!zQ<6R_56wzaiIFRK%x2IMeP^}@H)iP)kPmIm2b%R_IGU*iN`e@n0n%3^K zY>sx*aODv%@V)nL={0`&3qOk=`@)NO`V&{Ny|#gNyM?wNVKI#{7*Fu_JMZE*fB*l) zpZ&}4Vls?z_Iw{LQrc+YJM8Pda>B*pu2r-xfhCauFO4}pZp$bj^aFHRG?0Q~{VzCy zTk&`B^;f@v=U?~?n*9Q2x31vI`DaxKwS%@aa}H)IHX4lpfzyQ3DCH7J5XJ;rufYp? z2pG`mcu2E}u9x0@1K6M6M>fwf9u{(uqCRjwJH~7gqnDb@xF(udZFf*|1NCz>J8e0* zneUp|V?k?T%**T1^hFl<6K`;%Gj>c#*x9DJi=H>%c1oB^YGI%};25u!TRt6|XW)i{&iU<=koJVWB6-qAE#d14>Vt zDmDy6>z3)$_V@6+rdE8OVP@~=(&QTDJ`(DwXuQJ-er}dj&j!u&dia*&D_W$}J#{_I z;oDc`NpmxYPkj`x(J4nc{;V)+qM+bLeHyvEg~_LC=0Ft!`4mnTE)A+>3g9@)?>B2f zhWab=My_D(Fd>>pH1`Nu*2AMQt8CI>O?iA9pv^TYHQDh-3o2Z@(#0Sm&A{en5J^j$ zP6}NXZ!JPTiP31TDwpe8!O1% zsic#0T0GB9p;u`-K_}>%W{pFVc1Vm%Xch^=bVsZ;jJYz8Aap>;n$}5A4Vzce+TFv^ zV1)TGscVteR!8>yCa9jzeQSLU{;daq-&QO(hf7%&$vV8yc{6myBymtCV~l4Z+-8oL zSxRVQ&IY(Fgs71jku!VGs4D?#S8~_HH)O_%vV5pbDKR5rS!C$s=A5+2uFzYL4AMmu z%3sldj;Ju#6htl}zl)w9qrD#Do%i3>npHJul2PH!8$ZCEJ8$Fqr=G&RY9S~h4eQD< zLp&I&S@VN7kdNgMYp9wzayntU1m^>(tXYbN4eDRJh(-N2g9TE})EJhskHr3Pil`T& z*@-kv^Lic3;Zmz$bQ2(#pcd3#wC-uuaLHyC~oECq6d>L z02^l96hYq%RydeofzB3VQaIMG3ex3OGTd>+I`LdXpEC`3ZU`sVQeEo@^Sr_)`fIB= zv%4V%!{EU_l6j2LBF3G?2;R&zP~7(x1+{M#nt2n6GeeOuEV*3fZ_KLQB*8|x^&jy3OVfXEpZ$iXJ!!eqni`8BeS!WY2X^+9)WkeRNSToIyf0JcC$zf*A@ zt7~frf7>{F3s8~c0CDLms z&1(|Vu`pK3EPhXv6(=uG#jtNOp)^M3D=I6K6|~gy6!1br-{LVDnm}JJs=xFLe+|!G zyN+|`&d3RiKS!3nFf^RqG{eR7XVF{hAxIJf!)Hv4A`AHOPX z!(j?9r(r#;s!~(Gfc$yKmpd63;i_uD^V zxBnJC^};8y(&^#GkAD$=|JVKj-gxyUE>^YA(&+aw-w;hlNa#pQ(lpmk=cM^ z>Q3?m5nU>qk?iw%uSb5Z zp?ck}$v3pQZ)!%Yg?Pidud-O{wA+}B_ThUwLZ|t4qvMgu^m0R)l^EyURLBz>tAI{5 zq0MRIc`FvmB;&KrXWJ?2SOZ5*C6SS;G{|~AL|}%N-j45}6?M?^BkLd=Sk%)IP0a-5 zH)NbbLlcI3Gwk1WCh(&K$2X^V=^HQMcr=0+wUIV}m%j6Lbh;~s&IdMkGliei41wJ< zDWuc!3~4#m8bcJtcUnSK*bFCRC2-Azi~icWjCp3GiR|_N>`%XeU-~z`gw2f&y(jKx zZ{L1^Z-4(?_??!yPfLS73+*p*d)L~*iCb#eP*`l8NMmiCQ`%=HPE+Zso4#pI+fhsT zcYIBahARp$2Muf{_$OEHLg)Blwl$G$jz&*KDe9MUrtvuiM7PRu}DV zDCb~O>4Y?rjNgo8Xu;<-PD`P|jin~i?CnCN%VIe%5;Da~-ZL*`ZDk#A&E6Nv$R>?z z>-qEBSY6$~cyf#}O{HjZ6g4p&9iibrELR|PIbEcPXQ_$p34PTZj-|zuI_TvO8$*{C zVPm!)-;W{;!T{%XHgV_9ee_o%QIm}smpzR{&q{-kGEbCC(eZSFn|lNN_P_WlzW3_4 zu)emg;l_o{CowJuLRO=87h&LHG|6#1ALDoauiwKbfATNk$+MR#zO+4hCjl`{IxNBwqO3XYl1OepxxAE8U*7w0y<={wlh? zHBnaY?Cqh&^`qHTcI}Kgiw?%%tIq?%%T_mVWyNt&Qd4P-rRc&t%-eAwf0qxKOz zjPM_3)}H$kY{*L7&z2#*VHt{7zFbQ^L*Fw_VU?z_EVfy+DM%5aa>RszbhfUU2u%jRAUkj*o) zHK?J^(V@_D@!3zkfSsLl`2HJj;|K4&iQ#N0O2f5lAH$9JZ;GGJAF#;BW|Eo~+9+50 zp(c+|vssC5L%Q9%qbbgveM-eL?RTrnSS*)ShDA>2yHwO4LTRKS z()o+L&`!t+YFE^o$%5{E3l;GF&W_$cgEW)L0)3}c(MLBaryt?yc!;x$Gngd_cFwG0 zb9D`ge_yuEwALnSS1_!0ypNJoOy5(}oiUU)PgGDiA@6}E92Gm}&QWfXtkhF!5RS)* z@|VK3HSC_k9nejpl(@^dOp z6g}58hAe7XfN&Z<6MYS6aZ{$FShGS}6c|p1c;j2&!F)PIFK8joju0k}(5Ad$?oWFW zmWNlFx#Ou+9OOiul-*aVVLPe4V!8S$hC#+84Z$@kfcmMrv+Ex^pz&lj%||bqjsH4gq-cv+^1AOQRPmJz0w{(y1~Gv&tYjjz!jZ?se8`gVPAHxxI6LyX;@!=^;NiQEe#Q9WE2EM)21r=$K#Rcz9zKX$67B`W0jHyIGgD@ zM8yo_Fp!t1p2>x?bg|Pt#Osh6dwQr?Zo^GxaEbzz*3J^s>^pt~PMKhEtAuklkjW6};<+esaC8Ur#T+~RRav^f^Y#r4kB8XGG7N8z(DZ$b zvk}6!an$qBljAK-f*c!@z;HjVt(706QG^;QFj|G-z`e+5dXhzqZ@&7+YD!`0qbcK7 zDhIc3-@$sXhoI%C@J`A|2%Myw$wc=$8$>p{b(2<{dL}e5%$0zSDClEe%|$8nXtu>{ zML#rF{B8rjQ!YmqY&c~0QUTqzgJI@digAW0Q2HR8GL}&kcLD-cW#lRE$|p6m$mG6C z#M2FHDL|&CbTY}2O-ybZ9qW~km%CbXyPku={sgxMdl-)v=&~VeG}#5Jne6r2`nm_B z0rn0KRJ8AG_T+rLcmJO5s|lC6VuY2Ip6(MiF0Z`wGSY;h^}e)HGZ||c(;qgTLJ+wo zrN@{s%)QqT1^P5SUQ~KElZ)IM5xFub<5{B{CDAxGzI;EIpEzgY4Jw`wE(tt02C-De zHjTlU3AfcZQ8%H7gV7XUf9Yi${NPV9y?7lfKCl?hkgR8D%~G^F875QGD0>*(xuw_k z?hp1+ez9R=SX^|PZ8g0-dTxNJA_y3jve0mq1DZd1^{W`|nFj5}7e9|*`ITS6m%j8x zQFpm7)|7i*e6G7IE3Wpg!QcQv+sB0qPiSC+$`z{0Of|)KEKEKh-y&Tv;`ZI!+}5zx>!a80q0{Z6$~}y;IaYf;Jayqoy!(UK@akJ{U@|^H)LxUmw?4Q& zW!d9K?eSrb$Bo)Y@L0sB8gz%-#GDhiu{p@K1V+bLWv z-ZZhU%;n6`Dr8v752tQSfmpmqqfb(EKiVD1!l=1(m{s! zaD+GCe^-uP&s^BW=J_j#rT=LlD@O?ZIj%kNm(Xr+WADhE`}Lh|jBW5Gr|0kAx{2qW zx+cnJ`J_RB=-9Q@U)NN1JY3-J-3Mr{dNy2@9$}ess*aA1bRUpj)@>RWQBJejz|z7z zvj~jNB(2?@0+-G|DHk(k2HE?7u59gC4CEZb2dAt<$~-Y*~BYCqaF}6q`~TSx|q%vih3xl*2zeqrnho*3MzJH$fgUPtcL^2`u8q!jR6AnV+eErY6HY zXC~K7-ZU)kx-AtS%+u@S>*)7e=tU6*dq)_L53nAFc;Wfy@!Yd7;P$=Sc;0enJ2KbyNhO-VEf#8^t&7Q;?MpV zp1gKV2-tUD`#yf{pZ+?&@<(6A6PvrZu(pZF3o)3CHL<4yEZG5dKyqEFOXtZZl*l)8 zx55as*;Ltkv}~uYiO!eb`S!Q*^fOlwblS!+sBGZtFTIBJ{tcXa`Wl+;ww@{K(x$Ux z6e;trZetqHu(7_OLVG+aFgl#${=wnH^j9~))k{xe^U7spi%f$6r>4Kv8Ids5M>X;> z>86YlVeaA(ckbTRT7G7AO?PrkbCoQ?X!h_r-i3=#eC$iuKD&)L&5%qdXt!F}-QC6J z#-^@yD-1CsI`2E!-`_*v|3B=#X_RE=c^>xMt!~|0dv$m9K0Q7A3pgOwC15+Fr_ z6tz;4LoJjPS)r0+CsGcNBH31Kof9i`B>8Bu;v*%pqQsGI_MQJKRrgJRFURsQAx$%4MT?Ftec!Fo6yz?H=bz6zwR~=_ z0KKc|`a}v%{U+nWki0%antvuz&@njvCRPHQR&VGlLzLKuk%f$pfx2XqQJar_9%wJNS$y@5u(E3TF@)QuGScPq_yazwGp z5+f>31a+!h#NlIyM8h8H9+-j8y_M_#gbiR=87wW&$#-JoHaFv9r_BzyE zN=Dp(Ds<)x8&`gGC9t4nt`?4WWaYsLj-1WM)yVPRsidb=0kl3_iIJh@P66cZPwf za#avHp+v{J{5kJi=HPKXU>(7~w_OKrDKE7h@AE?k4q^4k3hZagc#mT*CBUdh>vE4#GYh!w0YQItY#gBg++c(zn{0q;c z(O5?mS*Xp{khk+F$nYnf0MSm@(_zsiPo_?uOfy}hgg%R3BMUvy#M;;!wPCwCv1<+^ z7PSh+vJ6drj}z`uzl-nvdmqBRcb}AvF{Ev@H%6n?La*HsdwFKRaKmG9m*<92EF)LQ zqm*~0;jENPIDFs$UO4|X?A+Lb;nRUh6`Y1qJAPCX$RM4vh}A95FC!&tYV>fP#Ue zb9cfm6tOTf1JiZT8GC4SI`I51^7#NIrwYT!V!Bwu6f!6|1$6s8XdDvvM`$tRTGL@? zGAI2W5)3gwtyaXDGpA%ax3^VC#)+}J)q`EkA#3{BUT@-yUw#F(*$T>) zicnN|u2^glvD9S4?+M?3VQC7(c!=Jxhg>#?Zl{ko&R@hcUw#e8POrk(ecXBCII5M3 z6xw3W!r*Yx=P8OcW*=A$23s)6ABOS@^yKn9k?N`$tCXxN5rmn5T! zbkKyM!KnZ|u<~$&ksxSPYgk!R1omNSDxwj6ranx7wnVazf|N!|tqLd7qtp(XPOM^G zt?6m8XGz|fZU#c5%9e{*SxJ!uI(hbW70x^MG0qs6a@Eos4o8AsiD3^5!;z^P6)9I@ zaeJfNm^|+VUaLR`6};!!^wMoF6LX#DVs?H3XU^Us#pu>XQ<^HLP=z1%a7sUl6DLmL z!FwM;r`N&n{qFDK^5u)r%^`flRiUr+Gc;|nTIbf#9e9GaO%6*UC48Z`9Xz%SJySxf zvkA{{BOFBVx^*nL4yI47;O^7+;_Z*TQ=ZQkzVZT^9S?`fhS1}-Cw)vc zXv0v4&9y2RqgXBrRkGFS#K;$N68}N!qtLKD|B+lCJz{0{IBo5H&^aT}Qk;%#K5u*5yO6JC@R?6OEy%*l-?)Gi zrw$`y=i!zMLMu1=1{$q8R#y(F>`qNXtx}Nh%7$Zkc^U&hfVRo?-4kSxu7$4cAPGjY zUd8)VJbj<(kfbIiHiNwfW1;nWk&j}ofL<^b2U2Q`gbJH0s3?05I1NX1f?W;?+zL#i ziLu`mT^olbWL4;~Vg?L|k_8O0)-a0t$Pke#x1ra-ebV#wLL;6la=p92XLRHcQgj1iC4)8Y5ph5^})Bd-l+wRcvo<3)((AJ&(w+arMF#Sp$$Z zk!*;l1>>=|HHL5Lu!%m}D%hTSKyNsd{mGTQLS6Fu4%Uvq%&w!^8DM9-B?c^vsG$K5 z1IdLpt1Ht-kuFST98n}gpJJ(ufD~+fD7t#b3J~d2qFvWh#tR3iZmfx~G~*r0u8q>c zCH&s6{Zm}{k;`bddMG&wN;IJwwc!s9tZ%K!ejsl+3bAr{8Si-TUTON-L~?JLsc@ex z!Vl^gGya3?(l~~h3vhj-jqB@cICozdXC^DCUOJG3@(AGXvQgu@L+vO3H`ygTuZ~;9 zwaZuGn65Bu?m2l6_I8^%fAu_yY%=o;^6bRiWB%^>#O>od=(ydey#)_G^t#Zf5~V*$ zCrs4r2*o3T(50p-C3rn0gm!fYzOO97$>pJQ6%+DXjiv~76mcOEs@dG^oM;jj7MHQI zvI5H*p}Thy=g+@^`yaRyKlfk#1N^}EepnW2eir74{QkfCef-8h{|z*oJAda1D_7@n zt=uBqIUp#p1LSi$^sJ%;iOU_Udntk}v45uCfmE)cPd!MYv|Wag{wy$He%naVwCDsi zU7iz4OeI&A$ss9_Do7!bvrW?h7LnYDH3oVn^u{QP#d~!;#&ofaNaF-OLCImUl);VK z92ywo#^wg}a#f1Q1U{}@yDFQm#4p6^vvKqAX=0HvaP|5+e*2&O5BT99{3&d0?_$&+ zVtaQT)k*<_z=PKr;n^>L9e3aVPRvYI@u^RJ8ee?+Q#f|y9-+u|+b!gaC0GU>{ybd2 zejWGuBZY>E_9jAmw}sDs`E%H89z!SY;I-qgpi-_vA1h>r8XLwf$dN#X2<>K5(YH)X z?x#k3fM)2SOUKM+2Qz9eEGWQQzlT!Zl13p+>ie#6TI#H(94b}NHK*A`Kl!=X%xk75 z=m-0Xp`R%84Lgew-AqG82_A(Ehz}(o*J9|p6$-i+2>nWJwA7!Fp{r@;ev>ALc5|sz ze}2o-sVm1x+7cLHECUIm%(b~W`RmQCP1JY$7^n0{PP8+rPBiuvolHB(!z0^z4w01&P`#uGA~Ut8}oB7 zK2K}}rKu?l`!}m@eNvd1Dzgp~JTlEOW6o2j+r!U(?8C^I8m?a3z-ONLG>)GC=2m8mP{u$ zX|y<})0;E`o-Z0e$99p?bAm`xapgK$I2l`<5KFlNPMwG`vvQ9(%k~*4JT}l6ckti+ z_rHYu&)f;ianS2{_{Iw_;_0WJKy|u`Qm%+Q9(pehuU2q$ZV9#?<0CsA+<)KOaPH-o zao3$QD3bzZDC3QkjjgisM9*r%adcTjKJsH9!Blw`|L9kL1v|TSoO|hIoPXmDLAcng z&^hi$e*7n~a$p&iQW<~or+kBWugs(sUg0MH%H?N{ruHlD%_y6Mv0^$7-mQYZ95U zv9Ttog3uGG^R+FZ{0C`vnUIb3NyeyJ8Axm9@J7(Ctg@yjO3aXNnamiLs7ugp&C;7HC{G zQxR0gqdz8N!Iz<@NaC2opx=D(vRM@wz-NW%OQBlE>gp;wosO(w>l-)FZ0*T297nd$ zYI%@~x3kk0?PoBGgbp6Zu5yVcgC&zeper|48OOC-7<)d})-H>Q1_=aQqqz@D-W=D( z)Xd0=lzxrphx9)(R%jx^=a^Y=ZpPhjg0j@*>JyExCVL{wm})7(I8?cJ`D_NqR}SF# z(g6&;k!T4gj>c@1f+RsUlTp)Xe7cq<;7hC(JMv<4zoDjQAwy5WsHI4GcKmN0DfVd*}cN)BG5i?UOa zXznuUw<>brrq4abI)#}IS8 zGALDDOcj?T;ilj4@YkRGByKdD`0#t*iDM`4#`4@ETxSYzKXVqJJN^&WHEjf*jgno(LUjceGt#&)(~deV zI&`ROrKj`?X3AL%s+FK%L#A{zqoA8+k;q~=mPmuiYdOe@9rxOmi@5ud2Qe5#&>~=y z^ps8;)#)iDx`x5fMcdxkThzSFKyxQ5nBp(Zqz#SaYi9tJ$DU{eV~`-GwHI4Z8mq1p^3AV!TO~u zSYN*aJG4=6G$gZ%mj9ftHrjNA>;vPh6jii4%iCUFx%r&%EIDM zVs~2&HTd5|!@^+}Lpl{Qtczu(sodn0D@odP%HKHYr%8=8ka~UiEG7o9Vx=)8m5ll& zF?SgD(C&6|$B9$OW^<@jmvLif1E=Taas22}tgIfE2{2J2ejbVPunN#)E6sc(!j)i3 zcT)$_lrS2{$~!BZv;PSbmt|@)SlcX=SP<}5Cia6z#b3FFpa}YC7G)O~o z_=bWuvyi>}q5E;<*b#LPb0DJ|sLhn|?svTdpZgDg1uRw38~T!*@aT8H8_SCeLjU5L zP;gzW%-2xOmvHaH4@pya>v47t_{CrPZ}EG-^DohCH83+>y(NZXa!9%yvW_LRyLxj2 zoxLXRzT*sBH;Y572XXhEr=-}WzR5H*vTsOaN?JJn+&}n-(x`QIM(8v{9ZS3G3AN?(`B)^xQF@9lA1_A(D`4 zZ)#U#=&_>fMq^(&$r?9VtE93;vdN_p0G{kX5~qR45m#U_OHFCpVpw4*rV97jt83TN z=$%xz{Afe(kK;%zC{MLsVh2S!9PH5F$NX|SELto39_TzumqVh#}fSdj9T!~tn)ZPdup zG=;gcwzi2*tA(6mTGT@xnFC zO*v@Qdl)tb!Y-lil2pSWXyeH0D$d^bz%9>DilR}QD)&ez`z_bAQM$(PzUA7@W|`Dd z38m6abaOUg-`0S@Y zjlnp?5@H!{oVnv3?B4hrI5rVE2y?+S{|>7C?c+P@xZS9|1rLgeEm_bk#JYA+AUJQ~wt8EAPVLW99v+RWS09%RA75)cQPYDf1A~osqIQjk`|X zDMcme2x}V~c;Vb@_^p5O+gLfef)mRJFyMCNW>CpEa7eNo=g?^SxVCl;fAzO*Jk%TF zLytWUH=B`3`_jU^Oj(r{Na>~6d>FbifFS>WEcz!+P?&J2rg&^}+4z#aMePa^uRg;= z3l5f+7H&G~rT-QrEm1}VVkD9za&Aa_kWGQ88+8$WsETyDwDG$~YTC-zE2h(bekNwX zu&ArAZ{fAIHSD#TIFcN~(DQ}P=Vo&-V}SS4y(M<#Q$6 zar(4;4&aQu#|zK@I)395{}`iD6+z&tIAsc~-5fTyZ-~Kwm1+Zfg8{Byzb1jdY@k^< z^+!F}u`5M^BZyNZE?O{{{X{)uPR=ex;CZR( zifY&?sUcl5h=Y9!)5O#+2!dOLrSZ+bfO7nch}b#G8BCdxs5~*TL>Ue-Q=7xW`~igH z2=nzt%+AcBL~RR;DcY|ms%TqUTEfWxqF4+ijA?cqrF#m4Z;BaL&X-Cz5vWLx;ZP96 zMzbMKbERShXYPFfEFOHZzM{u7Di%nBA^8L-IVEnyK=__&gaJzVH1XM0>Y^7tUW*bWU;F z3{o^&mqM7=j)nroQc;THZm)~J-~a?vF&b zE?>EZ-Y}5BZ5j#?g*^A_tC*jy$z-1Af^M=nbP##h6&hNSI*Q(U{QQ6U)A+65{1;*x zHPHrzat}u`u(`zLX%$zp^3rkD*BxHiUNR?s~yF<@z?xHA&@ zV@4qx8W~C_>KQ}orp%!X4X3Ve?BM#wHrBT4=np(WeAS+yBN&B3wV#@v#iNhCJ9Rvr z912O}+RfTVvN-+VUI;8yL;H9Y*tL-_MQ`wL9hikP3DlV|sh3$Np~3tO`9<(#}kFx)R@0!lv!EskU#4K8ZZUVMg48+T`K84j8!A*jPtlriy?5>;DMz z3k#^^OQPH2Le}YZF$%{xapz>7lQ_HAtD=G=K zb2h1(v^l4yO;Cps{O%BQOEW^vM7l_Jdmeu4cmH=Vpy$Z+VYs9oQB%WGp7y*EEf;LS zSwy|v#h0(Yia0cIWPTMVPaHvYunZ!kD6Oot- zB{ei+#YS^mHo)zzhG=7Gr9V@41sSsK@D@kG zL^e1P&?hSUX%c5}>+$m+`zdMEf{2q-N6zUW=po18)M6ghY*h*XzGuHbkU~T^Y;*@9 z%y1~z-v|s8O&2mOMkIm6mbhpaqzISLQQA}MD#MOp*$K@7*q{u@g8pVpF7z-)ue$@w zDZ{j>P(?AYKT_MNeiQ49HL+; z+KMG8gH*0eUzG`R!t2DQ%nJmqGt;JC?!)xFO0&qxtFB?lj5nHn=&DiB&4GBCIA&3< zIg!rZSl#cUa|G{MU+FAjO`2diL4K5)e^52UcXjuTCc@CVB^aBr3$d)&qNy8<<#l7L zD0EX^BNlRW043T@d+TL;S|eqWRZ1?$fJO|w++YPi|e?_ztrXW z(ZW1Tiy`V|b$ujj!RFQmmKK+#AmRNi)8h%uC|Wcz`STZK`mbD7`MErKCS|CXC?r(B zC8?Qf`q5)6(9uStBSJlNn4vYuz%;TlP!gjhDLQ>I#92LDMzvZHO4-$G*RZ&-C}H3n z=*-vVP_J+A$AL@^DbkG$j;uTi$F%^vsG2@sN6}rx(@#B%fB)ov!1U}Kv`hw!fOON~ zugLF7C^_@^oNPf@4N;~mE{dU`r>gi?kA;~wQjCT%1VM{^Qktpx%*i0m=&DBD(XyB? z&0ye$ICAtDzW$l#;K75H=l~-$sKI^tA`TrogxTC2x={xMTGyMtazTv8a_@`%JYiD= zf_{o#FvbKk&w}(FS@p2As zAGZ(OZq(kI2ch&ruB0CRB()MI)q$lVt#HFc9H2NEG#wk&=^5Bo5g&T@_u+lt_c#t8 zKCDEsae`*6g?6hg8#s{)+N~?wUTU^nnQC&=6{ja%@v$eoYC*bEw987Jx-z;7drVT7 zKW_fIev^mIC6T!y|N3A3uXx{g|0I6sM?Z$EuRn)T(8lRw4=9>T*n{UsigPX+wOHPt znM~6&GnlGWgnG$3nT6lXY!z!5VK^FyK-$ik=nXxLMqTtHNO0sJ?xEXnV`FO_UH`C5 z+zYh2ANeww%-ANJtR+PSQ4A}iHbjcOStN@djofv~mP?c<*vUw-Bo2|bn$ohVW09?z zAZGYX^3sxhXF;L5kdrKQA-ln*ZlE&1zBbO&9WICc_0 z@lzkggLj<~N5swThM;Llb|^>)H|sm^zEd@zy0Jew$WMV6DguZ)(Uj&WYD+g3!162#Yi2yL^j3c+v4p8Da~w~MCUr3> zfD{rrCG4m3T+Wf}s(wC}?@FYTh9zuB=%{HDAa$a0V$(E*4RWFo9(fM>eRR7W(d95=gLz(+sp|gudgklT;4`253`Twr zi}Ob%eA*ktN_)t2Dc0y?F@}*C5e-6ja&c?++7tP6U4?fO+T>UDJbZEW7y#p>z1 zP^skQIU}@IDCF?vXP?E{`|g)`j7e2XM1_V)N@p4GJAu|}bI2fv&2C!-Uh7K3W{QDK ztn_iICfKGX%*=>+3#mnwTgtpq~xC*Yokjr~ej*R+k0QE0xNU$HX-~ z3i_z;+&~yxC{E>&cS|Y|AHca+UJ=8PNz<-RLeA|;PTnCL3@q7TTG<3gR~O{|i{xH5C2!30J9z!Vc{JM{7#UMs z`k0etnaa9EXp@>++i6x~+7=_-lq;<4C#ImYSq^W~fOaDByrwGZP_2()6sPF6p-eaA zxl~TH+#hI^B>~lw;SkpfBExCa$>cCK17Q*f!cGL5U*2`|l8qWA3W=A!1!>bnt?_s) zO{2;j!<#Z%6_T4G`bO$>sjJsz*n2rwlJ#ED^n!z(-3E5*d&*^#&Z*+=Ok*BL5LcvY zB=^XTja`Z0c>e3p!1dcgPrmD&ccEOK!L^NR_!_n6-2r;LeO$Wu4D7jOZ27)OIlQZ{ zBkX&y^V0|%6LF|xb88p*jEw`!i)ig`W1J+|+if6I%HZ(PLwMw&M+G%oyM9IZr(~sM zZCCb2HcfnXJ=O$~oenc}jQueNk+SI*6O{BhB)ya8L~Q(_0@R8AagF63$Nh^@6#TB4 z428E!*T!0kbpy476QdrXwPvVMuAo#bVtRTSt1Bx~r?F0%n_Uo^`1#8(W5j{sZH?OP zBRy{432(u}HEc{Vh%u7|v=Jg>1U<;Ya%jOF!-!p!?E>Pd42snyoIHIB58QheXV1JH zc?p6XNrn$6N_2Z-V}?9Nyo$QI3{^BBL7LJ z^boPLE{hj8O`G}(O>w)a3tO%(;yDEP>T_R2fp+v(7DLmA?6Ap0#@=m$M`V-KZ5NgT*X+o7#J-Lu7d*n4O9RRh*kI;=wcbpxN4m>lEcP zaT@9k2N?Ms`7B}ftZj;(vYEw0McSPJyc?Pg*MnTRpc`U`ddTjSsepi6{W1w z>8i==ZZZ_sOk-{ho>WJQ70ZY)vXmH}vqly}RvP-7rU%381_+IT6s%UNF_Tc>Skag~ z!xyHKpmS^#4DnVJ&5@K=S?ctneG7d|8m;sYdQiG>hGs0EgFzQ;CY9wkzpE~%&@C!E zZ)#E45RqCKv9VBUbXBkka>wE!kV4!SN~f(d3lT~&AkCUSRywwUx1XuT{3cF(`Ds}6 zmCHr3!6$vV+wRLyWUsgKmJQ zd1D)g4oqWdc2S<8=3WOIm#$*4*TX_}8Z|NmV!CYhBooTtx4M>eJe2YUxvp$7B__ff zi_0Hb26ATY9CEgWc9)dhCWd}b#UUgLo#6e|9?;N%;qy~6{T{JE4Q%A}0xrJ#Ix>>k zWg=rJ=M*Bpbh6|>gK!TEb4TE2Ezw1KjXgxsXrIO>1Br|(EW@-(C!2z^3D?pENhUp% z1tw{GJO;f!+H}z?(lBL+T#6=64u0;#M~>m#OJ7C58N-^1MRP0iN*3xw!kA~c+d#9| z!qHQ6*xJ~_eRrxnsrpVE>){PFcH6KE4yFnPVK@*$o*a`sqEf2DHmC8*#V_F0=@u-< z7WAe!oRa3{yWag?ED%vMbWE4Zc>KZp@&6VolBd-l44{Wu)G8HRVHTty(vV`7O<|yf z%_^6SW=u2_iB)rvE#;y6CcGpRhfh-Lrm|J!NrOvNh;^-0k(iQV)|Ej`*2uterr@;$ zT5Mxd*(XhpgH zW-C8m(F{!=7)A2vao^(bz>}Rx>7O~Y;C&MLZF!bGEk-7`g|aPc9GwL-V`Rr!Fr^Ut zX>*1;Uz&{!Kdan3v1sqqk)lO|z6{Aml-SwEK2?~s^7+}rIIvVk(J9E^Z|*d3b!|gY z4#OBm&PGVoQ6D4pM~KWsh6Rb(-5Zk2Den^*_#Z#+_9KtP? zF*9r9?QeevmTL1d)NAf_;pFRB5Yr(|0`NH)aNMj6^b#&KP=m}U^blJrmO;rr0vSSW zZEeZ<%NLo2S47rw)$mcyX#$-(S$)zN1LH&&!za=-!$=dE2({C~P-1h=wIlEay*_YY z83&KvffrtQ4v)O^yD(c@!0PG%UwQWP*y``#Q0?G}SB!`AYFLfP6oaX13 zM3=#ZgW3|J9nxf|N?gzfB3e_WvTOvx73XBuRAweZ&4am*$Rw%$N+Cc>bs_mFx}^e8 z(@pzle(q76y6bQ8!4EzT;0=7^WglnGoPf=Zi!`L1Ez>E!x0-5?rGSA>U8R@EElkbyyw5 z_M34MnXnPf2tzRrC{I@2Z>jS|(Z`X}SWe zZ?2=`b!6gx=8pT6VTWO)1}dt-m8tmT^Q2?WQo+Ro51z%l-uZUPs$s`89QzpbJ-qy) zDkhw49>K`Rfx|08*LwEZFJkrJNkNlTpgHa1$5PA>ho0!D7{$Q9+ud#85C8CgllNjs zZ`R2Qf~6Z7l-w*rYUKQpd____XmD`XJ$IwNZ6Q~-QLlTF$7ZKq*=#Tv_DzjsrRGRx z6*T~YhvM$WILg1RTj7B|ieiw@Tmx+HZ6axI851wl$_ zjl`<`)rubOmQOw$yl0X z%eqCMmO3Qz?arDRuDH1x}Hh%wi ze>crY11yJO%VWtr)F)Q_(xj#L_bni=A$e_(=G*srxP0}ptR)LGbNJ+6{tbfRpWqih z`VkyGdp}0HE^A80$Vjs_8VqF6WMncJj|_ANLwUwhg$)F*NWUr9F$PpilM?$P?B|-s z>r~(C0bvGTc;b0@-YfX~A9@^7RK+KsxP*4EE16_|8Y@t(Rm4;kX57%8L&R;q(b?*(Cg1adC8 zMw@0NcM6v)uGdNz$)-cC6Fg&kySrRrvAfqmvpIz0%!os368HD>DM#^+48fG4Mv_L? zcv5QKdFm+UYcmocuj$G{q+n%m_TDr2%V%Byv_MP0koENBsgtNK%u9wT@98NggXcm< zV2p75*dfXLOA-yA{`8lzv$ZS6B1F$0d*1`N>-1d`QccI>y?O(MVnOahI(3$c)wJG8 zq*>#AsUljT5Ps+)lXZ~G>ZyKkC`=tESoRKD z`={>zG6c%!ozzG~7o9YRLv)#yCfIRs=->*z_TraN-`&D}_dSgF%rD^C7oWh(PhLf* z-TRj3>h|%SdE9Q)-hv0MS~Cpov~!4qP2>|-Woj5YraBe8bnf%GjtD>hJs-hGf8jnX zEZ!px8R;;jr*Hw_LMICZgFFj45xCM`o(K<{3O8#@o|4${rl>M&W{ zM1umQ2bpM{L};t)DOEBS8}*6xt)dD5l_?h=_`v(chL`r% zTD8y2R53HNfH*dBW37q)2-w@}VRvsAyVtjH?TvMO@ArK#vbijt`^IzF>x{5?;3!J- zWsI6VI00=(ZPEYvLxx_*&`b-Xp$B>m(L^d6C})%%2Gqu zRZ%3afxOKS=OS9Wie~0Adc)Llr*#yARsqjm0D|5QzVh5>(QPy^lbeBAj8V*#;g5Ub z?AY{r(%fiS14Ggj?L5jwd;i)+9t+`|6u?Bf>6%DS5oTKr10N&JfSD~wGpA|FfzAs< zY_=L0k2)}eX_SpJwmS_eh>O)KDwPrrA32Uvp&-wXJcC-=5Exs&>x$H9XKu`;(P&(=o0fxUVQyUiAIWeY{E zf`k_GvP|E!E>SB^26fK>DiN{>PzpxaLs`rx46Z^#X|BP?4p43ashi{Sd<`2r+Zgo& zw065FjSa-hiJ0vuV}(CL=^wc_*DAofD_l=&7irs?c&MT85-51K@#HL;CiIEH?APrWuPwC^{=p{RPM7;+ug+o%pi0^O0b;~$(sEqf#@4Mx> z`P$2uv9q~@e9l6yLi>6XrHq4x`5NLRgY{NNWDM=A8`22JqY<1+5xVZCsCcDZ)04ZY!^ zM`MoE2t@54i()KOH1CA&soPOW0TRTf1|y%t>gozstQi>?mU50l5MvFqQ&V{4q5GvV zuFOm$n{zPsW2|igSJ!qCcVEToQUUM&?q9(D_rG1%{|j$iM(@U^n18WB&X}$sYD6jf zou0gR#x#Y>od}IN#>P$qv$HnxbSvf{#;3suB_5=xMi_R-=s8`)V_jmCykTFt=dw16 zGD6Q5_uXDwHGHv$>eLd(K^A5vl)ON(rLwZJH)-jBVsUW+$4)CFMWjW%Wu9Kd65y8|Ep zC%=THl`1kBYO%($=$48lY0|j4bL!(bwxBqYi4rHuXrPoql+aahlm{#s~R z_Kbt6av5R2CpRI{KAjN)IhEDILm?Ozj8X>o+*@X74NS{Okvzy0Y@&{!!GfS3lp(PZ z(p6bP1d0tOi(8+T=z5Hz<0`~1Qm6^3NX$@+#AM_qkKJ-CDUv5O{bc%X(|AHpU8!zC z9FRKQ2~~$~orZx@xhw^8xmc9XOSeDa{}Z(YQa8Yx8o!A?aBFK@xiA{0O#dK;BN0aa z2M+rwD!czWoEjz@9?MWhn04TZe>ZVDx>MCY21DHUHJUL=TNQAkfNHUfUbl|{DWVYrpEK$2#4Vur|#$s69Dz z=BQZm@9nl#=8_Z1a7eUXV%e`~RYEahMi$R=I@#tuD0(B(gR@!rjx2VQ)ajESh?+Cz zCDrC?@>yDR9*iu^&(DhkVzn@hsf8R0MjivNCDc=IFGP$0@c~#hJ5|OdActCP6z5Y<1 z(?Y2XZ|F-nyOVR^xOvH$;@Y#gxP*`V#82WAzwu|7o~cMaBN1w(Hs8{$v60YY38?0| zp$j9|8?N&&J^!kh^7yfi+VleA$lQ0{yyYQ)lXXz9*I^mTQI4?=zF$=~>66ST20`=7 z#HoIVC^KoEEYy2lZ13*K{mQk8=>4th*1i+2p<{dR8kP2g>H2_J@{Ur45tFs?AVNW(Xt35e}Da)Jjc|caUV2|3=9V1 zPww3~U18afNwflmSBln1h{>{zTe3<`DW(xjsIqT1N-<=u0OBFz986ieNIw-^KXu?W zvlhI;2;8y->0_hry3$Z0i4?s#R*2w80C(jq+-Ni~RmJ0YtC-?6Kp$29p zB>R(Pk#yi!o3*2`}CV67R5pirTjs;c!rq~=18m65Y(~N z>Y~53iwEvKh7-q6ixV~1Fb*P(RMV%YF360%==TN~bozp>3ZkY@3`RmU_v*4{EiO)> zRGL;S9}cQwWgNoikDAb2ZX{Z>LVj{ye0lzR-JYBywH6QHI=#atfKv-8O3OK&n0x_x|SAGaH|x8ji~T2tWjp>`Bq zCMG(PhhC`TBai<$zW?w41P-pQ?wfy1dIdHlTvUi4Xla(0-yfxre^&Gi)J?Ex;ldyk z4n+HUv^aGOWaC6C48_!3jJCISrSPI%{iOMtn2NA~lVTgRgqN%8r_eX#9 z$D~oav2zU%uilSvID)AcVCXSg-7YG{Sqb!f;nj0EdygwlltMq$GO!FyEU+mPOSCwB zMQvZmF69%g$ED$l(P*{hZ5xdtzW&T5n4Fj=Dl~N85`F*Bfu3qw`8|^K)oBPJw7%{L zGc%+=I_L%-D9IQ_!~I!xf?NDV_}kpDX>Fgeg?G-sWYft>To@`%j45=-M17a!X16y= z=|R2m9%gD)(ckfWa{@{&PruWLWjiWtRdRL4@R&Om=~8@(GaM&{L?|>rwd>|JvoQ3B zfHo8(l7f@P;pKV!>7V_XLWJ}z`h%vh^tc&XzKOMKb;-=)9QOQc=W*eMS8(A%6Smof zmDOeA7RNlIVL?|3^hK{??#D5Rv546I=MX0&5q4Lrj%Wy&*)wW);p>5*k-Xm7On}%6 zmBPZMF^2)$()ku?Bj!^khyt;NfHc7nxlrAgs(HnJX4a&@zV)DP#ndCwUdUy;MT^G6 z6cZ6Wwaz90V(!~KM?yc#@7uvoiY>WU;t-l|3jH#luj2U08MM6tE?wCab4lH`U|M;M z0_6^AbILoW@Sk*I)rd+MZ*Ln`nsTgZ%CT-hc8_giuemGD+GsR>(`WXF9(WmePYC6# z9XrQC%u{hn{xUqq5Ylw&gI^U9}>{io^ zFzh3+^J2&{x3r4cxp{ewe91+n;^5Vb7jfY50dc^qR0`=jrdFv~bjXnmYhuZo@V{G6tsaP}5_83Nh5HIm#yLFuUp^_0^do45(;wSWGJ z(hYq@iRSBbJ@r#Po2{t)VhWT*GF*s!G4B@|H))joo;}Z(b5GQoM<&c5%CYf_Fdpuq z>*vww>>-H{%AhZA*(l_5vR`n7;TTSzsk>8}|`b%7oRL;_<|QDk*B9OEz}LY!vd1;`?c zOroXI2u+YHMuBj_xOV*lzWBs*$P_F*{NNce#<{k>gMa%UpTbwa@(PyTv4lpmg9FRa zzWI?vaOmcKwi@4iYp0Gut0B*$T_~z&)w1^2e7bEG3XV|6`Po~k36AFtWpL{h6uTwX zlxfsh++ZbDH4Ukbq!Cp5U#|783=7#H?(8&i=+FV!_M8kE1a*v*ETK{=A&B~@xivH! z4Q#J%VP*z!Y+$$E!OC(@?v*&r!PLa~hU-WVg<@7@3^aP$-q@Aljj4b09ew-wPCafn zYHz_Kj6$7g1{Vq=Ehx?G2&HNsm6^=SIR6Q!XE#;Ma#xbITL#f=*#(KB5{ ztYgs)u|XqpHWsReCX+30-qBcvy$%MU{49&E5p>D2*{km%UvOn&JhA`9EiQ#DW?1BK zLM>c-O}XrGYCh>`&fIrWezx7bj;Fs88|?Pe2y_-}q6mmb~3 zk=0W$Z4I%ON3%Xa;5U%9HRxP8x!J-(F!V6!4WVVNbmJJ}^4bk}u_wjQYcFiT=;c(c zR0#k8AOJ~3K~&K1G5_r5s7}QC_r zfSN>#pM8CVOII#qx3LE^G4RDNe+B1Wei^N%2RG}WQg&stnM|ssCyHV@Z?2mWZI(2o zrm4i#CJS5*In%-X?3CDCbJLTJay*uwD_5o^Qz_Jk%88LkicKn(qWzg^?i}pY=aCcZ zgi!$uNLB^)ez6pP`)OnlFrm#;KGtdTwSS1qX&?pRO*NXP(CE}aN0-m=t*_5wH#STR zhdo%c^T=j0s5u!7dVv(0%pHPg@**iPe0D=gfFzih^awVJe5oi+0|69qtz$tbPL_I# zG^^o+Xztk9*ea}9Qc|N(oK)Ey8+lvlS#uRJ@SrBK@5X3%JEC>cO+&KKayjPN=@Jsl zH34bJHQz&!EE1HWL_*n>3!yCthm|_-@%iQuNemQp13O!rSSwz``ucUb7Mya^nUUI0 zqN|afk-t+m)mCbrV#sqbS+_W7;-6FRCqjRy+MJ>AETEWIM~xWK>49a*JvbT#vNlnV zON(uth(M~{3da*f)*xIX&$u+egMlcWvN>DmXh;zg<@|c{P(uY(w5w+}k;1Iq?h7*L z`yq0qM32YF79IKA)b3rr{05F4JpsqgfC`|oHiB+u#9397d&x+{#5FN@dg-MX)jfF2 zdxz;zM_gu!#!K@MOJhod4;fz2>C+EUohswn)+QXQjOFF2)HO~^k$#0T6Om_Vw_Tlq zS2_NWhwgiT6^esdz2l@ zJt%t=2a9Py{eEmlJaMdyQX~?{W;Ds_Bl2yfwz^X5>&gu=kjyh5Zfdxq=%u<8$diYk z&WyJxh9p!vHx3^-1jyKi*uiHlVA$Og z=8R|(lNfuAhI|G(y^`+R?{|geK%=m!shaF7%=jx;t7vsvSgKTIKVx27j5qbN=?7IT zfXUKDYN(b(!UQlh16pdzq$t<7YJJu32%|(Zh0X}vT#tkFd{LLl^?)oCVVtnGFo2nA zS(-l%LcjdXS8%EG8vgdl8rU&^^@WRg`Nlfl|DN~Y#L7_=swH{m`7HCk=WsSon7x;X4sa-XS)%-o z8dqWog-kj4 ziJn?UD-#laR$9fg5Gds;_}EYWBL3k2_$~C>>v;Zaui@CSQ}Ckh^`Um!)%L*~La{2leeOpxy(@ zM^Sa=aB$j!oy$o^OcU zb>kM+W0Hn3Ct_=C2wFyp8}pqMN|&UQ!9>m#7i1~egs`ut=TC!UW{{g*#1zV6{VVhg zC^t#cC8wt}V-XS4GiPq-rOu1YMxt_0 zp-gn8qx(7%+|-ODR5>cgyorGR+a0PQQemsiFZ<>~hUlCf>u+xK_+$3OZaPxVknyA- zNcIOQf^bGU%K0MNtu0haHWrSZg5CBo7!P1)iWnF^Tx!9HYEW<#=EdxWNbpGG8SA6d zVUAIR=~7X`)gz$=XVLe3s$p-hflj9h!*ntBxsMY+QO__%UV}FwphCN5z-(%P zAIF{qr+bX{C#|{bN#l<+Tz-dU0zoJZgOlTQJwz0gz}~?gxIkqLeaqaZ$CmQ5ilWI`yUuuZTwSHX3^)3^s4DLxh>{!?22?(;SUd zP&b=sqT_q@9n8-y%5$$GKoV&tZw`4>BgJMs2sG4YUC~)_U8B)we9I24+*uvyB}X}^ z7FE7Ah~3ToTxw4< zHhP1;_Z>6^vRAiw2#?x>PAQ2wotTG zD7u!$fy{``F(WAV#*H4HKmQfX%;Yh*cnHP$RXqA#2k?Q%zY8aqR!}aKh4sThj^_{M zoQ6XWeSeH@=;5_juj8xFzl1@1fU@JFXB((3uRu%b>B>2GjIE7zjK}vNPF#t0QF?vl zBFwdd|CguC!nI^Snw^=&D51n7L^cDVP?Ew};4IArfK@VA={Lo)0)Uu=;}=7sA1*5 z6(YWUe8(QQ8@0FK5yxTR`2(3anqmO1qgd5(;9w0e-2gmufN?OA$xS4UnzkR%$UG~7 z@zZ=ARk*5jn6Kl-2X!5@1sKJfStVQuY2RHkMyGc~Iw zQp_Rpf$#g^|Hs~&#!8l+=V8y;>eOC!*S_67-96LO-LrFMD2k*++9D-uGh3vqMAjNo7G*7g6pA86YADXaA&0Yarl+^N-&?n~ zQ>V@zJkR&ly|;&yA>>CeF#7;R54-QJI(6!t?|a|(**=aBeb*15+34e7aDcaVW+>-% zteka`&-XDnim`Wl4;AS{(?X5LqYpoVCm(+h^L&Q!d?p9DG%4`%b2o9gGe-~)kWt_B zjv*BrRXRJe=`?PMW|GF$brJBb?c1$Mw{-3C$MEpAhtO%at^T7rramq>`MfR^zWaV~ z{2i1s60w>x&$vRGEIPwhuNJRV8D4%19cdHzKiZSelN4KfoA}x*Z)nk{*$Lb_l8g>q z`&hkjPNBe)c%a;-2CEbYYQ`CiJ&PtnOvl9>gPj3YLSi0;nmuEJe>obxH!fF5E zaEMQQ@{>r8=5p(A)f)(^30o&*af!?|lpj-Y*9}dS*N+or&t&d#0(CzhLTQ|JDcDplyk&?%Xx5 zfX9dJ$>h}Ng~x*qTgKeQtzz88LSZI7M`8axFtnWMj5hp-c>J-)@YuD7aO37p6q6$r zRy*Seb!ub+N2VaGh#lk4kEBQ$Zx56cQR#Mf6QM!%b{oT^5$eslP$olpHM&DyQ?D6H zFH&#ROc=BLFb$HF=7}-taeW~aj!S>XR9z*_E>`=?xOn*?6_B@Y+`#V6E%dr39GkSH z%B~mYAlFzMmYXu)`X{eH{jq0zoO%T&C!m=7tf+Dy$_y>2LD zqGs1>$IY5)(oA#3_vClyB)MMq=;#Q!W3GX8KNii1q9defjQ;W}md>ogcMlPlCou>- zTHUq^HtL~BPgJIqRC!kK=$3XsP+3Y_s3F3^;817**9iwk2Rj%K5j1NH=D3PrB8_3_ zOK-Wgc?bOthfizz9HeUo^`;t$G*6AwCmf5kd(s^CdX`RgdWgU%6r!eOj(T8FU49?q z(HPrX+n7!!SY11V$_sJz>J==ntZCh#u2_06hnnXCx9;4+Z~oS=tFUBZ3rglwWmr42 zj<$8dc?_Ljb{8#mrWG#lZ)Prcvfk)^nO z>n48ZcYjCwLU$=doF8Cyc^Pf?g;NjrZJgKh!0T|~{26@t#h38lLsv0A*f!`j*Q_Yk zz=`zNIW4dN%_UUcq~jwi`S*7_ zyz=(~W|3MNZQvQLo8tsxtaw7312uN3w3j}-IfSk<7xK)R4ZNPj7)~d8HXYx5&up6b z=Td74NH&xiTFTTYks%gy>L%3gl9J61qH1X0=Ka3Baz^(KzYnig$9OhDPrzAmS5wP1 zmpODaK4C*DXJUIDCJbeIj&rK5a%wh;mq0l@%=ya!+7xOeOT@H5XzC&!NK7K<9LRn$pJR+Y~kp} z+c=Cf>|l!PU)j;{pw$vR0!yna=(IZ8=epgV+!}d3Nw-`Kd!W2LgPcwCnNVt;5ucB= zbl_Az*3YbCI2~a&P0jGyhU6;)t*oRwc8=g#TSk@DE;gf^(zTsLC@Zz*Y&*%)2B;hXFb z=dMPM1@aGk-}mBw_@!UKfBv8SBMi1@SZf0liq@kTUc<%re)q@l!$0^jZE~c-%`?h* za!t!Tr^0X?32k7AW!(lM6WL?nYv@+ebNRIZNm}6br|;mme&Y+c@wI0$n;jzT8JZ6D zBAKPoz|xwuaB>>B;P5jPnIwXp7!Q!ZuSrN@wsRI9At1FslWuvz{Sz5 z!06}*pZ@e8BhFK-c9zkgy>T9E(Abpb-)C6W+-xPAB3UP=~mZ9!F7J3b@rT5+$5B1Uu zO-QNdj(WDahDp4Kh?XsMSqo&-=pD@jS{hEG0-?=+vQ)L8+0f*jnRbk}SUG7)$J6ioAXb;x5wXGRGpEkj@3YXP8|N#pyr#lj7UD!_oe;0S_Bsxy zBb;4Z$I8mG*0b?&gin9^k1(Ak82xZ0${WAeU-_+Hlc~%4nPs6`%dH0D=~xB{I0>88mgV>Ya3~t#Z`519PilJu) zKfG_*G;-MG7SjF^UD0zPkywT^XV!7!#!b7=P)nPNEus6D_W89OwdD|Ak)h$Z7$5E7 z+_{TruP$k*N_t&A4B)S;X}O0wwN~jqCZjeQ%(0}6WEhwXRJ~sTCuqQP zGn9^JoK9;l-_qu#Im(PnIMB&+)Ed6k>Ltg@zbwn`I#PZUH6X0UJw(5APO%o%!c4?* zFczh{gZmzM5I_50{>OOg=?BnX>mAdSsTHFfoNMVM$?(!Eckqed|0BHm=Cg?Rw~!si z7#6^Gae%YEi@3jcQ555xl+bC2!<~tw8Ps{kajGV{zuecFLi#UnGd|x%?%Jl&G49LE zfn^S2-9w|ryH!u$d!kn*1~MO14l+Rf#}NIm&?-8JvSH(FddFj z^Xk~y*};_uFUg^m?>85f+lOB>u{4#4`y;&6X}TD`*g^B0Y!c4ZJCuG`8H zvw33W!o?7d-5jf9^amo8q^#5JgyLaA+|+A2G? zUg`BrgIYPFvG}rLFEn|r+nln>u{4h=z~x6@#r0RF+Bief3!9;wp?G-GU6{Log*S^e z>ZkTa2b*X@zSx*}U3U)-aF|DUU;NbFw@!8PnPnV6L=Go*)tcne>fJhBd6qJ|FwU+P zyd2IRcMlMBdics$Ucg&}*AcX6{$U$Tvu(hyC5Xm{XtYfj>hA8YP^D>>;H~i+`k8La zldgirQ(o3k(BOpDV5DW{p+wTuA##(EK95b`aIEV#pU*HzUcu3>{KF8`nkw?S+2p|# z^CUnJk|t}MGy>%J=u8lcbWng+-qCgvI>LS^bA&gmY`fuLpdXEaV>F_l>| zl0som+3zpLjmq}2+V^93&c*dT_5Tgho1)!fAS@%0Gof_8g;?20vJlD3y9+;EJ5nV{ zdh(3FrEthNcOl*c3 z?@^ivDNNJU7QCkEER~DsTL-_1&{-N>Y^<&0E3aQir)jQ3mPPQgKt?}7ZE!vi&jY&`iDk&0~$Z#)@_8-Nu?FK!WQgR;b&tpczbYc9q%N}A z<#{B$hMp&Cbm7D@TY{yy(cXVn7BV^7+1rzQn~W3qEHg8Yfys4Wlsh)a3ew%rG1;G? z-fH93SDr=3>7d?fn&)BJ#d>>1Iwrcv_0Oyza9he6BcfJswB$5N>N0&ziHH@B$yVch zhYq!ag8|%DAD{o+=WzS{CA2~hd17*za<9VLnG4b>zWmBp^?N%z+j!;+e~zu`4xW1Q zXur~|$((Iqd>ny!JGs7l1*%yHuH}7ya!jJyQ596cX_dcwxElH0hv}(a7;ea_S zFitYObz=w5zwkT`#&;0RhCo!{h@1EP5ZhS~M>}7@1FI`IcX0##l|C}E5y}EHn{CFX zhieDd8eWHHn;D_ZdaGIY%JewC#WbFk=#hMW>h&0V`}@bC>SAFy9IhIZkxt7X&kVvI z4v*{*w=HChh;qA8mkiSoZRMVs z$i3tExYww?3lF(U(Mmt8aCk7s*|sSNI2CF)JEkC+%`l5ol-UffU+2WSGQFW~S zP|=eX5@h=ehom&a?$$QG_WW1G@ve<0*w{ELiepd+wVtqHHug%6ewn8+4l6Hcmv(&G8a%mjX#HG-MZ`iG2rgHo+@j`Z_kQUBr}ORmaxXW^!oK|jkR9BT-|FN(3bs7y<1tn|&#mD&`im`#@9_;uu?La5e$GQeX`T*1Yq4tC$(1T~C7 zSja_^7RoG?t749l2na2e^Blto(Tx&;+Z3{b@C*_+0*HczhOV|SuHes+YNX<$h-A)i z_U!#Qb0)^h+Esn$jpZ)fWP;)7P>2*MXtWpR>x^b&G@Bh1(=j6W2&v7>Qv{(|Vor3E zo}vB0v*sKIzvOh&FIuQ^co5AHk25p^(qW5ZdwlA3T+4FObxaC5K#G!7%aAAY<7Q9| zmd*3ydvIe8!;W+_tgC#zrsegq$R>R$Gn00Ak&niv-J41DPAkMRY#aM+OM4U*k@rpR zNP`onEC8A+!nrBmx_$%YWTL#fjg>wQ?`-47_AMb4F1Lc{HwaFI_)mTvylo|bJ7hn^)Ex|Y@%6)pc!I91T_pa#K{5% z%q3_Ap>%zYpTaF`h@uSRY=o7nqXL1{n~`-m<5l7Bg^7neNZ_Gn!|V%7LCo~?z6?1E zV=`fl2Tbs*$&;$pS}JS|8kS*5dv{vh6S(kw%v1APq+}6Qo6jdE^RFm`n(=<)I!5G` zMQ>3gdVht~ve~DORylWto?D_|c~Kb};Od%+-e@|)Fp0E=Wlj@**hgCI8RL+oRKY7f zr)O*|sTqouUFfON%xSPu3zZeNzdaY~m|BbfhR0BB22hWYqKm9b)I@k;A9*=L$wGTP z2AnP?1p{(T(c1Exc;ny}jz)WGh$FdmPNeOZ)1I918;xr>ngUpOC2?jl=B{xv8a@6&Z5B>t=67tg54CY7WG#x)6CGUq)0G5 zG^p<&8luQc#2gNk#w}6JU!#V9^VvT^K;VZ?J81&O+KmenWG@uED&WUvm_l<5KB`6L z!fn_F#|w|wRUzcW)!i1VB-QYUh+NaJV>&uQk`9EFEdrk-y2_Rfg`ZQ0)bFn$pmQxV z?dUMehTALE1LJp~4S;7DSAOJ~3K~y?i z>Hm_Tkb`rr=1L#RLY`3&vm}DoY$?BvF21}j4?Xc19)IvEn)RBRE17d~UDrL&>({hY zdSA?vg(KpHi|6sk<5zM0`VH-E983^hrvY!^5&3hGlyuh(O~j4woAt}?SFYF!0enlv zG!YqE367gIu~vLDeDi(Nq|Fz*zOv_X)C*t|SRSz5&^XYzx&JnBsfQ1L=t*pBtm$4} zNCp&L@iR`Q z5P8;5fm7GuBabs23^viI_p!3!q2KGu*oEl$cvj-(_ND@|JxLHe8)-z^drd=3URRzY zBT{rOWvX1#(I`UA?IL%gZ-Gkp-tkvG?lo%f!h@47B3ZIGpCzK1^!m%1%w(cFrYdHr zH4uf2IyB{^ImbeLSn7~T#Xq5Q868`pf|SM0d*1UNltE2STol?aoFdyDlQlw`q;YPn zP!Ae7*gFv2(dbN|#b)u}un1mt?37iBsD2zCP@PPXIPw0D@A!T^^UTY*wS5N=w9UlhD+jFxTDgOYw2WR7ONZnUq*@f8dE{NngB8I7QO>bhD7I6Hu7HhcDWe1q;~iKun1 zknfZ2#mbF_9kYee%eN!1{-wE ztV-8teBfgq#qi}yY8q6@7fXW-g&rHWF@m6jR%qD;q@$INnpDz8QMt!DOnyJ|#FV?9 z50~ag%BV{9?;MEn9-fScGEZSfTAW6>dE+Juhl8RNVZAO?u-mQ)_2Zy}mveA*Ta7@s zYpCPf`+FFUC+N27D3S)E*hPcCKw2HqDg{L+Xf%8wr;~96H!RU@cTC}K1ERSfQ2Q5z zU32^RGx!XuPE0}H>9jB|NfR527T7IY*2Ka?D{RTYg0y@x0dlR!xp5_=UMMpNJx(DF zzG6>|6AT;KX45#D3hnVq^p=)nsIkyJE-c;)>U?{FDWs3@NnLcUy~SNXJmI zmy(~s}T2#Ak-*GF)8^snL3+(#~xo}5xWGr~pP4X7T2SF?%j zr=DKXOr2cx%F~A;D;61&u0he+tOaU}D}y4|eANR)F}X%(aU|4!!Jwhx5chOuNv>a5 zJ;~j}DHh6c-dcrjyNTw5Aue59k=C>3`Nu!cri|yBB=5r$SFYlp{o+5hpRT~?KmU2$ ze|`ggqifayI-8Ozs%O>64T#DUQRFq`_ryJ(Yy~#beEwveUzziXrW3T<9SwEDhJ#`n zYwcv@NLcUbc_2!@$gQPIBcIzME7jODhvXAR3{d*#e9}R@T#buE}!c zmeQ!P@L%LuadTo3WN1d!aTCX>+r!tcqSfsfJAGSx0sC=g zfX%HPy!P5nY;3IK_S<{fEU&-$GRE++++D-D2k*l_{^`GiZo47+7Ww|P+NCLmHsZ3t z?#>X;J@+bZzw$NIf(D{uiqP!}iCft7nx-F+;Jj!WzfzAKmNpqA2&O+R+hv){bsCq1}+@@=q zSfOV*e3y#L%-#b)nXo}hG_BNoyA3pbk5&@~#i53*ky%q0PsSsfU}wg~g9Y)_&FEo| zkcEgHNcjFYE^TTqj)7mkesB_Kn|pvihe!I54LzsZV!hunO%9tx*TeGiDxxUSrmT&* zEHFAa#Npu>(<3M(otts5-$QGug-5Pj#E<;YN3q(hq!hFVcWy#*PIR89-a%gefk!z@Bvxhfi{+bUG-&JATWpe-Yt(}s|P ztf;JQw`-^2Kx6}f^_|0@u^ecSzQ^WJ;TeHxm@_-LnXy_g7yTdKBhY$+cgW_wQ^>Q{ zs-Q61#)UaRyN(76uH2vjMAQmftOve}{i6ePdm&oAC0q(SXw+7*vp2-BV1TlxhJ4}X zm}L`X5H_2PGVsuDui}uX>moFl^hVNw^Esm76iGBit<$rVN>e5h*`t`urE4hfza#|e zC6pjY^t$x)Gt`?V8iLgK#6ZKxTCIhE2salb zB4-Rz_FOc}3JFbe7#MFzB5=^;9WE<-vIR&*&hh|(Zw6vStJ0MELI|ybTi9nd*J~e5 zkI=3+ta%GW)kPAaOnn4iL!t7SwM^%}I3w1iCdjt~j>Q^Lha2Ps`BB!~ABquT?lBIV0yY09Q34BUF?GTm zK85b-=kW9zY6HQ&7GgOO7jk=46KmI62Ah*M>>6s14J3zjhsa~)tg1#hmT)`AteZtM z#wdlF=b>2-Es@n|*I-Ra3bzsk^pQud;h`s=z;n-h5tU!Z!NHzA=L0M)Euqz_&}yxq zs#3*h)M{ugxNceD?cE)0z4R(pH#&Ia+M~MG z(`bg*-@FOWZ=)8LdQR>g_YT}^)ZV=ZmlDF_oRab=(_HR%Svl4Okxd#AHQH`dQO=S< zNLK0C=FCzGXch06Ne-vg+)yN(olLc852+l&Lg6#BMwr2*iC5rYX?YoI zYki?@jy1zD&W5gCe5>R9rRwx>j?Lp@Q9gBCxpE1u+8GrCL?c+Fv>K*?Anow0FTI5S z^MCykP#Bj$cpY5(;0N*O7cCOzI&!n6n^j^aYzl_Wa`f9Btgo$Nr?suZgVS9%$+5e=hqcQ+gxsx9 z^`hEzG<7xkF^g!dh24nRpiI~-(TkwwsSqe_MwdY%jbkJa2E(%GOJX}owa$9IURRBZ zj4*N|M3UQ>YY+t%QKW#8s#h^!TVK9?0k;%d;FmZ-Dc*6=(1Q9z8cWa>iyD)!zVubx z-W%ZhTX%4@cN0G3wHW8=)(V^r*y{^`%-m;dFj;B#O26B+1y@!8MemDgXz z=9@RMc`(H4@~S9bbRz3_dYBa>O>IlLU=lSnw%d*|{TABemj(f2)6!pQU}Lq1t=&Dv zY;f4qYITqda?yQ^E1(U1W-xWDiCHm`8H^fj>2Fed{R|?<&&~#|RAyq1*?5Lp-Ixy1 z?1=88`}<=x#&Z2cuKTs-FSI|TlJP$9RWurEt6>71))p?PtFUNCWt)O_SQm=G24v_? zET!3cp1{S?_z0s>OL>Fe`#1g;HqKnY|MJg&1+TsSY4qCG-L7&q={L=i$&>4LTNqR0 zQluuDAc-+$$ghkunYA{RS&qqvaxqV1tqq|qgkhg~g#^PIq39ViNN{E?@JX4YhOD#= ztI_>cY8JRA6{mEPTB}@RJ#UYw{X^CEFkgPb?G@l1wi+|7DJ$^1Cq=we(oM`53qB09$YMM#qn?

ol6mG;@*1iJ@dyrRbovd=K0O71^>7H0W{c`eo4= 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

LN{*8a&6W|aVLSS}1N<}`{F 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 z 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

%_wa^x>Kbux53bY0C*Qx1ybu+b~eEu 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 gpio -o 1 /dev/gpout0 + nsh> gpio -o 1 /dev/gpout1 + + nsh> gpio -o 0 /dev/gpout0 + nsh> gpio -o 0 /dev/gpout1 + +We can use the interrupt pin to send a signal when the interrupt fires:: + + nsh> gpio -w 14 /dev/gpint2 + +The pin is configured as a rising edge interrupt, so after issuing the +above command, connect it to 3.3V. + +watchdog +-------- + +This configuration tests the watchdog timers. It includes the 2 MWDTS, +adds driver support, registers the WDTs as devices and includes the watchdog +example application. + +To test it, just run the following command:: + + nsh> wdog -i /dev/watchdogX + +Where X is the watchdog instance. + +watcher +------- + +This configuration tests the watchdog timers in the capture mode. +It includes the 2 MWDTS, adds driver support, registers the WDTs as devices +and includes the watcher and watched example applications. + +To test it, just run the following command:: + + nsh> watcher + nsh> watched + diff --git a/Documentation/platforms/risc-v/esp32c3/index.rst b/Documentation/platforms/risc-v/esp32c3/index.rst new file mode 100644 index 00000000000..0cc66d48c6b --- /dev/null +++ b/Documentation/platforms/risc-v/esp32c3/index.rst @@ -0,0 +1,98 @@ +================== +Espressif ESP32-C3 +================== + +The ESP32-C3 is an ultra-low-power and highly integrated SoC with a RISC-V +core and supports 2.4 GHz Wi-Fi and Bluetooth Low Energy. + +* Address Space + - 800 KB of internal memory address space accessed from the instruction bus + - 560 KB of internal memory address space accessed from the data bus + - 1016 KB of peripheral address space + - 8 MB of external memory virtual address space accessed from the instruction bus + - 8 MB of external memory virtual address space accessed from the data bus + - 480 KB of internal DMA address space +* Internal Memory + - 384 KB ROM + - 400 KB SRAM (16 KB can be configured as Cache) + - 8 KB of SRAM in RTC +* External Memory + - Up to 16 MB of external flash +* Peripherals + - 35 peripherals +* GDMA + - 7 modules are capable of DMA operations. + +ESP32-C3 Toolchain +================== + +A generic RISC-V toolchain can be used to build ESP32-C3 projects. +SiFive's toolchain can be downloaded from: https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.3.0-2019.08.0-x86_64-linux-ubuntu14.tar.gz + +Second stage bootloader and partition table +=========================================== + +The NuttX port for now relies on IDF's second stage bootloader to carry on some hardware +initializations. The binaries for the bootloader and the partition table can be found in +this repository: https://github.com/espressif/esp-nuttx-bootloader +That repository contains a dummy IDF project that's used to build the bootloader and +partition table, these are then presented as Github assets and can be downloaded +from: https://github.com/espressif/esp-nuttx-bootloader/releases +Download ``bootloader-esp32c3.bin`` and ``partition-table-esp32c3.bin`` and place them +in a folder, the path to this folder will be used later to program them. This +can be: ``../esp-bins`` + +Building and flashing +===================== + +First make sure that ``esptool.py`` is installed. This tool is used to convert +the ELF to a compatible ESP32 image and to flash the image into the board. +It can be installed with: ``pip install esptool``. + +Configure the NUttX project: ``./tools/configure.sh esp32c3-devkit:nsh`` +Run ``make`` to build the project. Note that the conversion mentioned above is +included in the build process. +The `esptool.py` command to flash all the binaries is:: + + esptool.py --chip esp32c3 --port /dev/ttyUSBXX --baud 921600 write_flash 0x0 bootloader.bin 0x8000 partition-table.bin 0x10000 nuttx.bin + +However, this is also included in the build process and we can build and flash with:: + + make download ESPTOOL_PORT= ESPTOOL_BINDIR=../esp-bins + +Where ```` is typically ``/dev/ttyUSB0`` or similar and ``../esp-bins`` is +the path to the folder containing the bootloader and the partition table +for the ESP32-C3 as explained above. +Note that this step is required only one time. Once the bootloader and partition +table are flashed, we don't need to flash them again. So subsequent builds +would just require: ``make download ESPTOOL_PORT=/dev/ttyUSBXX`` + +Peripheral Support +================== + +The following list indicates the state of peripherals' support in NuttX: + +========== ======= ===== +Peripheral Support NOTES +========== ======= ===== +GPIO Yes +UART Yes +SPI Yes +I2C Yes +DMA Yes +Wifi Yes +SPIFLASH Yes +Timers Yes +Watchdog Yes +RTC No +RNG Yes +AES No +eFuse No +ADC No +Bluetooth No +LED_PWM No +SHA No +RSA No +========== ======= ===== + + diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/README.txt b/boards/risc-v/esp32c3/esp32c3-devkit/README.txt deleted file mode 100644 index 1e6c8c8bdf5..00000000000 --- a/boards/risc-v/esp32c3/esp32c3-devkit/README.txt +++ /dev/null @@ -1,147 +0,0 @@ -README for the Espressif ESP32-C3 DevKit -======================================= - - The ESP32-C3 DevKit is an entry-level development board equipped with either - an ESP32-C3-WROOM-02 or an ESP32-C3-MINI-1. - ESP32-C3-WROOM-02 and ESP32-C3-MINI-1 are SoMs based on the RISC-V ESP32-C3 CPU. - - Most of the I/O pins are broken out to the pin headers on both sides for easy - interfacing. Developers can either connect peripherals with jumper wires or - mount ESP32-C3 DevKit on a breadboard. - -ESP32-C3 Features -================= - The ESP32-C3 is an ultra-low-power and highly integrated SoC with a RISC-V - core and supports 2.4 GHz Wi-Fi and Bluetooth Low Energy. - - * Address Space - - 800 KB of internal memory address space accessed from the instruction bus - - 560 KB of internal memory address space accessed from the data bus - - 1016 KB of peripheral address space - - 8 MB of external memory virtual address space accessed from the instruction bus - - 8 MB of external memory virtual address space accessed from the data bus - - 480 KB of internal DMA address space - * Internal Memory - - 384 KB ROM - - 400 KB SRAM (16 KB can be configured as Cache) - - 8 KB of SRAM in RTC - * External Memory - - Up to 16 MB of external flash - * Peripherals - - 35 peripherals - * GDMA - - 7 modules are capable of DMA operations. - -ESP32-C3 Toolchain -================== - -The configurations provided are using a generic RISC-V toolchain to build ESP32-C3 projects. -It can be downloaded from: https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.3.0-2019.08.0-x86_64-linux-ubuntu14.tar.gz - -Second stage bootloader and partition table -=========================================== - -The NuttX port for now relies on IDF's second stage bootloader to carry on some hardware -initializations. The binaries for the bootloader and the partition table can be found in -this repository: https://github.com/espressif/esp-nuttx-bootloader -That repository contains a dummy IDF project that's used to build the bootloader and -partition table, these are then presented as Github assets and can be downloaded -from: https://github.com/espressif/esp-nuttx-bootloader/releases -Download bootloader-esp32c3.bin and partition-table-esp32c3.bin and place them -in a folder, the path to this folder will be used later to program them. This -can be: "../esp-bins" - -Buttons and LEDs -================ - - Buttons - ------- - There are two buttons labeled Boot and RST. The RST button is not available - to software. It pulls the chip enable line that doubles as a reset line. - - The BOOT button is connected to IO9. On reset it is used as a strapping - pin to determine whether the chip boots normally or into the serial - bootloader. After reset, however, the BOOT button can be used for software - input. - - LEDs - ---- - There is one on-board LED that indicates the presence of power. - Another WS2812 LED is connected to GPIO8 and is available for software. - -Configurations -============== - - nsh - --- - - Basic configuration to run the NuttShell (nsh). - - gpio - ____ - - This is a test for the GPIO driver. It uses GPIO1 and GPIO2 as outputs and - GPIO9 as an interrupt pin. - - At the nsh, we can turn the outputs on and off with the following: - nsh> gpio -o 1 /dev/gpout0 - nsh> gpio -o 1 /dev/gpout1 - - nsh> gpio -o 0 /dev/gpout0 - nsh> gpio -o 0 /dev/gpout1 - - We can use the interrupt pin to send a signal when the interrupt fires: - nsh> gpio -w 14 /dev/gpint2 - - The pin is configured as a rising edge interrupt, so after issuing the - above command, connect it to 3.3V. - - watchdog - -------- - - This configuration tests the watchdog timers. It includes the 2 MWDTS, - adds driver support, registers the WDTs as devices and includes the watchdog - example application. - - To test it, just run the following command: - - `nsh> wdog -i /dev/watchdogX` - - Where X ix the watchdog instance. - - watcher - ------- - - This configuration tests the watchdog timers in the capture mode. - It includes the 2 MWDTS, adds driver support, registers the WDTs as devices - and includes the watcher and watched example applications. - - To test it, just run the following command: - - ``` - nsh> watcher - nsh> watched - ``` - -Building and flashing -===================== - -First make sure that `esptool.py` is installed. This tool is used to convert -the ELF to a compatible ESP32 image and to flash the image into the board. -It can be installed with: `pip install esptool`. - -Configure the NUttX project: `./tools/configure.sh esp32c3-devkit:nsh` -If the project isn't clean, please run `make distclean` before configure.sh or -run configure.sh with -E option. -Run `make` to build the project. Note that the conversion mentioned above is -included in the build process. -The esptool.py command to flash all the binaries is `esptool.py --chip esp32c3 ---port /dev/ttyUSBXX --baud 921600 write_flash 0x0 bootloader.bin 0x8000 partition-table.bin 0x10000 nuttx.bin` -However, this is also included in the build process and we can use build and flash with: -`make download ESPTOOL_PORT=/dev/ttyUSBXX ESPTOOL_BINDIR=../esp-bins` -The "../esp-bins" path is the path to the folder containing the bootloader and the -partition table for the ESP32-C3 as explained above. -Note that this step is required only one time. Once the bootloader and partition -table are flashed, we don't need to flash them again. So subsequent builds -would just require: `make download ESPTOOL_PORT=/dev/ttyUSBXX` - From 5bd970df4fcb937798ad7ae25996cd0e54b9bf63 Mon Sep 17 00:00:00 2001 From: Abdelatif Guettouche Date: Wed, 12 May 2021 10:40:36 +0100 Subject: [PATCH 092/739] Documentation/esp32c3: Explain debugging with OpenOCD. Signed-off-by: Abdelatif Guettouche --- .../platforms/risc-v/esp32c3/index.rst | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/Documentation/platforms/risc-v/esp32c3/index.rst b/Documentation/platforms/risc-v/esp32c3/index.rst index 0cc66d48c6b..8c8026f47cd 100644 --- a/Documentation/platforms/risc-v/esp32c3/index.rst +++ b/Documentation/platforms/risc-v/esp32c3/index.rst @@ -67,6 +67,35 @@ Note that this step is required only one time. Once the bootloader and partitio table are flashed, we don't need to flash them again. So subsequent builds would just require: ``make download ESPTOOL_PORT=/dev/ttyUSBXX`` +Debugging with OpenOCD +====================== + +Download and build OpenOCD from Espressif, that can be found in +https://github.com/espressif/openocd-esp32 + +If you have an ESP32-C3 ECO3, no external JTAG is required to debug, the ESP32-C3 +integrates a USB-to-JTAG adapter. + +OpenOCD can then be used:: + + openocd -c 'set ESP_RTOS none' -f board/esp32c3_builtin.cfg + +For versions prior to ESP32-C3 ECO3, an external JTAG adapter is needed. +It can be connected as follows:: + + TMS -> GPIO4 + TDI -> GPIO5 + TCK -> GPIO6 + TDO -> GPIO7 + +Furthermore, an efuse needs to be burnt to be able to debug:: + + espefuse.py -p burn_efuse DIS_USB_JTAG + +OpenOCD can then be used:: + + openocd -c 'set ESP_RTOS none' -f board/esp32c3-ftdi.cfg + Peripheral Support ================== From 3156aa7532c5097c96f3394071904c7f91723e33 Mon Sep 17 00:00:00 2001 From: Tanushree Baindur Date: Sat, 8 May 2021 13:49:38 -0500 Subject: [PATCH 093/739] Apps Issue #246: Replace romdisk_register() with boardctl(BOARDIOC_ROMDISK) C file changes: examples/bastest/bastest_main.c, examples/elf/elf_main.c, examples/module/module_main.c, examples/posix_spawn/spawn_main.c, examples/romfs/romfs_main.c, examples/sotest/sotest_main.c, examples/unionfs/unionfs_main.c Corresponding defconfig files added/modified to test above changes: new file: boards/sim/sim/sim/configs/bastest/defconfig new file: boards/sim/sim/sim/configs/elf/defconfig modified: boards/sim/sim/sim/configs/module/defconfig new file: boards/sim/sim/sim/configs/posix_spawn/defconfig new file: boards/sim/sim/sim/configs/romfs/defconfig modified: boards/sim/sim/sim/configs/sotest/defconfig modified: boards/sim/sim/sim/configs/unionfs/defconfig modified: boards/sim/sim/sim/configs/module32/defconfig modified: boards/sim/sim/sim/configs/sotest32/defconfig --- boards/sim/sim/sim/configs/bastest/defconfig | 63 +++++++++++++++++++ boards/sim/sim/sim/configs/elf/defconfig | 59 +++++++++++++++++ boards/sim/sim/sim/configs/module/defconfig | 3 +- boards/sim/sim/sim/configs/module32/defconfig | 3 +- .../sim/sim/sim/configs/posix_spawn/defconfig | 60 ++++++++++++++++++ boards/sim/sim/sim/configs/romfs/defconfig | 59 +++++++++++++++++ boards/sim/sim/sim/configs/sotest/defconfig | 3 +- boards/sim/sim/sim/configs/sotest32/defconfig | 3 +- boards/sim/sim/sim/configs/unionfs/defconfig | 1 + 9 files changed, 250 insertions(+), 4 deletions(-) create mode 100644 boards/sim/sim/sim/configs/bastest/defconfig create mode 100644 boards/sim/sim/sim/configs/elf/defconfig create mode 100644 boards/sim/sim/sim/configs/posix_spawn/defconfig create mode 100644 boards/sim/sim/sim/configs/romfs/defconfig diff --git a/boards/sim/sim/sim/configs/bastest/defconfig b/boards/sim/sim/sim/configs/bastest/defconfig new file mode 100644 index 00000000000..30ad75d1740 --- /dev/null +++ b/boards/sim/sim/sim/configs/bastest/defconfig @@ -0,0 +1,63 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +CONFIG_ARCH="sim" +CONFIG_ARCH_BOARD="sim" +CONFIG_ARCH_BOARD_SIM=y +CONFIG_ARCH_CHIP="sim" +CONFIG_ARCH_SIM=y +CONFIG_BOARDCTL_APP_SYMTAB=y +CONFIG_BOARDCTL_POWEROFF=y +CONFIG_BOARD_LOOPSPERMSEC=0 +CONFIG_BOOT_RUNFROMEXTSRAM=y +CONFIG_BUILTIN=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DEV_LOOP=y +CONFIG_DEV_ZERO=y +CONFIG_EXAMPLES_BASTEST=y +CONFIG_EXAMPLES_BASTEST_DEVMINOR=6 +CONFIG_EXAMPLES_BASTEST_DEVPATH="/dev/ram6" +CONFIG_EXAMPLES_HELLO=y +CONFIG_FAT_LCNAMES=y +CONFIG_FAT_LFN=y +CONFIG_FSUTILS_PASSWD=y +CONFIG_FSUTILS_PASSWD_READONLY=y +CONFIG_FS_BINFS=y +CONFIG_FS_FAT=y +CONFIG_FS_PROCFS=y +CONFIG_FS_ROMFS=y +CONFIG_IDLETHREAD_STACKSIZE=4096 +CONFIG_INTERPRETERS_BAS=y +CONFIG_LIBC_EXECFUNCS=y +CONFIG_LIBC_STRERROR=y +CONFIG_LIBM=y +CONFIG_LIB_ENVPATH=y +CONFIG_MAX_TASKS=64 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_ARCHROMFS=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_CONSOLE_LOGIN=y +CONFIG_NSH_FATDEVNO=2 +CONFIG_NSH_FILE_APPS=y +CONFIG_NSH_MOTD=y +CONFIG_NSH_MOTD_STRING="MOTD: username=admin password=Administrator" +CONFIG_NSH_READLINE=y +CONFIG_NSH_ROMFSDEVNO=1 +CONFIG_NSH_ROMFSETC=y +CONFIG_PATH_INITIAL="/bin" +CONFIG_POSIX_SPAWN_PROXY_STACKSIZE=2048 +CONFIG_READLINE_TABCOMPLETION=y +CONFIG_SCHED_HAVE_PARENT=y +CONFIG_SCHED_ONEXIT=y +CONFIG_SCHED_WAITPID=y +CONFIG_SDCLONE_DISABLE=y +CONFIG_START_MONTH=6 +CONFIG_START_YEAR=2008 +CONFIG_SYSTEM_NSH=y +CONFIG_USERMAIN_STACKSIZE=4096 +CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/sim/sim/sim/configs/elf/defconfig b/boards/sim/sim/sim/configs/elf/defconfig new file mode 100644 index 00000000000..20dad3ee6d1 --- /dev/null +++ b/boards/sim/sim/sim/configs/elf/defconfig @@ -0,0 +1,59 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +CONFIG_ARCH="sim" +CONFIG_ARCH_BOARD="sim" +CONFIG_ARCH_BOARD_SIM=y +CONFIG_ARCH_CHIP="sim" +CONFIG_ARCH_SIM=y +CONFIG_BOARDCTL_APP_SYMTAB=y +CONFIG_BOARDCTL_POWEROFF=y +CONFIG_BOARDCTL_ROMDISK=y +CONFIG_BOARD_LOOPSPERMSEC=0 +CONFIG_BOOT_RUNFROMEXTSRAM=y +CONFIG_BUILTIN=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DEV_LOOP=y +CONFIG_DEV_ZERO=y +CONFIG_ELF=y +CONFIG_EXAMPLES_ELF=y +CONFIG_EXAMPLES_ELF_DEVMINOR=6 +CONFIG_EXAMPLES_ELF_DEVPATH="/dev/ram6" +CONFIG_EXAMPLES_HELLO=y +CONFIG_EXECFUNCS_HAVE_SYMTAB=y +CONFIG_EXECFUNCS_SYSTEM_SYMTAB=y +CONFIG_FAT_LCNAMES=y +CONFIG_FAT_LFN=y +CONFIG_FSUTILS_PASSWD=y +CONFIG_FSUTILS_PASSWD_READONLY=y +CONFIG_FS_FAT=y +CONFIG_FS_PROCFS=y +CONFIG_FS_ROMFS=y +CONFIG_HOST_X86=y +CONFIG_IDLETHREAD_STACKSIZE=4096 +CONFIG_LIBC_STRERROR=y +CONFIG_LIB_ENVPATH=y +CONFIG_MAX_TASKS=64 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILE_APPS=y +CONFIG_NSH_MOTD=y +CONFIG_NSH_MOTD_STRING="MOTD: username=admin password=Administrator" +CONFIG_NSH_READLINE=y +CONFIG_PATH_INITIAL="/bin" +CONFIG_POSIX_SPAWN_PROXY_STACKSIZE=2048 +CONFIG_READLINE_TABCOMPLETION=y +CONFIG_SCHED_HAVE_PARENT=y +CONFIG_SCHED_ONEXIT=y +CONFIG_SCHED_WAITPID=y +CONFIG_SDCLONE_DISABLE=y +CONFIG_START_MONTH=6 +CONFIG_START_YEAR=2008 +CONFIG_SYSTEM_NSH=y +CONFIG_USERMAIN_STACKSIZE=4096 +CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/sim/sim/sim/configs/module/defconfig b/boards/sim/sim/sim/configs/module/defconfig index 60eca11a696..e5495d19cc4 100644 --- a/boards/sim/sim/sim/configs/module/defconfig +++ b/boards/sim/sim/sim/configs/module/defconfig @@ -13,6 +13,7 @@ CONFIG_ARCH_CHIP="sim" CONFIG_ARCH_SIM=y CONFIG_BINFMT_DISABLE=y CONFIG_BOARDCTL_POWEROFF=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=0 CONFIG_BOOT_RUNFROMEXTSRAM=y CONFIG_BUILTIN=y @@ -25,9 +26,9 @@ CONFIG_EXAMPLES_MODULE_DEVPATH="/dev/ram4" CONFIG_FSUTILS_PASSWD=y CONFIG_FSUTILS_PASSWD_READONLY=y CONFIG_FS_ROMFS=y -CONFIG_HOST_MACOS=y CONFIG_IOB_NOTIFIER=y CONFIG_LIBC_DLFCN=y +CONFIG_LIBC_STRERROR=y CONFIG_LIB_ENVPATH=y CONFIG_MAX_TASKS=64 CONFIG_MM_FILL_ALLOCATIONS=y diff --git a/boards/sim/sim/sim/configs/module32/defconfig b/boards/sim/sim/sim/configs/module32/defconfig index e724d6ab880..94c69b2ee52 100644 --- a/boards/sim/sim/sim/configs/module32/defconfig +++ b/boards/sim/sim/sim/configs/module32/defconfig @@ -13,6 +13,7 @@ CONFIG_ARCH_CHIP="sim" CONFIG_ARCH_SIM=y CONFIG_BINFMT_DISABLE=y CONFIG_BOARDCTL_POWEROFF=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=0 CONFIG_BOOT_RUNFROMEXTSRAM=y CONFIG_BUILTIN=y @@ -25,9 +26,9 @@ CONFIG_EXAMPLES_MODULE_DEVPATH="/dev/ram4" CONFIG_FSUTILS_PASSWD=y CONFIG_FSUTILS_PASSWD_READONLY=y CONFIG_FS_ROMFS=y -CONFIG_HOST_MACOS=y CONFIG_IOB_NOTIFIER=y CONFIG_LIBC_DLFCN=y +CONFIG_LIBC_STRERROR=y CONFIG_LIB_ENVPATH=y CONFIG_MAX_TASKS=64 CONFIG_MM_FILL_ALLOCATIONS=y diff --git a/boards/sim/sim/sim/configs/posix_spawn/defconfig b/boards/sim/sim/sim/configs/posix_spawn/defconfig new file mode 100644 index 00000000000..debe0e7cfac --- /dev/null +++ b/boards/sim/sim/sim/configs/posix_spawn/defconfig @@ -0,0 +1,60 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +CONFIG_ARCH="sim" +CONFIG_ARCH_BOARD="sim" +CONFIG_ARCH_BOARD_SIM=y +CONFIG_ARCH_CHIP="sim" +CONFIG_ARCH_SIM=y +CONFIG_BOARDCTL_APP_SYMTAB=y +CONFIG_BOARDCTL_POWEROFF=y +CONFIG_BOARDCTL_ROMDISK=y +CONFIG_BOARD_LOOPSPERMSEC=0 +CONFIG_BOOT_RUNFROMEXTSRAM=y +CONFIG_BUILTIN=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DEV_LOOP=y +CONFIG_DEV_ZERO=y +CONFIG_ELF=y +CONFIG_EXAMPLES_HELLO=y +CONFIG_EXAMPLES_POSIXSPAWN=y +CONFIG_EXAMPLES_POSIXSPAWN_DEVMINOR=8 +CONFIG_EXAMPLES_POSIXSPAWN_DEVPATH="/dev/ram8" +CONFIG_EXECFUNCS_HAVE_SYMTAB=y +CONFIG_EXECFUNCS_SYSTEM_SYMTAB=y +CONFIG_FAT_LCNAMES=y +CONFIG_FAT_LFN=y +CONFIG_FSUTILS_PASSWD=y +CONFIG_FSUTILS_PASSWD_READONLY=y +CONFIG_FS_FAT=y +CONFIG_FS_PROCFS=y +CONFIG_FS_ROMFS=y +CONFIG_HOST_X86=y +CONFIG_IDLETHREAD_STACKSIZE=4096 +CONFIG_LIBC_EXECFUNCS=y +CONFIG_LIBC_STRERROR=y +CONFIG_LIB_ENVPATH=y +CONFIG_MAX_TASKS=64 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILE_APPS=y +CONFIG_NSH_MOTD=y +CONFIG_NSH_MOTD_STRING="MOTD: username=admin password=Administrator" +CONFIG_NSH_READLINE=y +CONFIG_PATH_INITIAL="/mnt/romfs" +CONFIG_POSIX_SPAWN_PROXY_STACKSIZE=2048 +CONFIG_READLINE_TABCOMPLETION=y +CONFIG_SCHED_HAVE_PARENT=y +CONFIG_SCHED_ONEXIT=y +CONFIG_SCHED_WAITPID=y +CONFIG_SDCLONE_DISABLE=y +CONFIG_START_MONTH=6 +CONFIG_START_YEAR=2008 +CONFIG_SYSTEM_NSH=y +CONFIG_USERMAIN_STACKSIZE=4096 +CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/sim/sim/sim/configs/romfs/defconfig b/boards/sim/sim/sim/configs/romfs/defconfig new file mode 100644 index 00000000000..48095e3dcb0 --- /dev/null +++ b/boards/sim/sim/sim/configs/romfs/defconfig @@ -0,0 +1,59 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +CONFIG_ARCH="sim" +CONFIG_ARCH_BOARD="sim" +CONFIG_ARCH_BOARD_SIM=y +CONFIG_ARCH_CHIP="sim" +CONFIG_ARCH_SIM=y +CONFIG_BOARDCTL_APP_SYMTAB=y +CONFIG_BOARDCTL_POWEROFF=y +CONFIG_BOARD_LOOPSPERMSEC=0 +CONFIG_BOOT_RUNFROMEXTSRAM=y +CONFIG_BUILTIN=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DEV_LOOP=y +CONFIG_DEV_ZERO=y +CONFIG_EXAMPLES_HELLO=y +CONFIG_EXAMPLES_ROMFS=y +CONFIG_FAT_LCNAMES=y +CONFIG_FAT_LFN=y +CONFIG_FSUTILS_PASSWD=y +CONFIG_FSUTILS_PASSWD_READONLY=y +CONFIG_FS_BINFS=y +CONFIG_FS_FAT=y +CONFIG_FS_PROCFS=y +CONFIG_FS_ROMFS=y +CONFIG_IDLETHREAD_STACKSIZE=4096 +CONFIG_LIBC_EXECFUNCS=y +CONFIG_LIBC_STRERROR=y +CONFIG_LIB_ENVPATH=y +CONFIG_MAX_TASKS=64 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_ARCHROMFS=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_CONSOLE_LOGIN=y +CONFIG_NSH_FATDEVNO=2 +CONFIG_NSH_FILE_APPS=y +CONFIG_NSH_MOTD=y +CONFIG_NSH_MOTD_STRING="MOTD: username=admin password=Administrator" +CONFIG_NSH_READLINE=y +CONFIG_NSH_ROMFSDEVNO=6 +CONFIG_NSH_ROMFSETC=y +CONFIG_PATH_INITIAL="/bin" +CONFIG_POSIX_SPAWN_PROXY_STACKSIZE=2048 +CONFIG_READLINE_TABCOMPLETION=y +CONFIG_SCHED_HAVE_PARENT=y +CONFIG_SCHED_ONEXIT=y +CONFIG_SCHED_WAITPID=y +CONFIG_SDCLONE_DISABLE=y +CONFIG_START_MONTH=6 +CONFIG_START_YEAR=2008 +CONFIG_SYSTEM_NSH=y +CONFIG_USERMAIN_STACKSIZE=4096 +CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/sim/sim/sim/configs/sotest/defconfig b/boards/sim/sim/sim/configs/sotest/defconfig index 363d1a0b02d..f38c951c5ee 100644 --- a/boards/sim/sim/sim/configs/sotest/defconfig +++ b/boards/sim/sim/sim/configs/sotest/defconfig @@ -13,6 +13,7 @@ CONFIG_ARCH_CHIP="sim" CONFIG_ARCH_SIM=y CONFIG_BINFMT_DISABLE=y CONFIG_BOARDCTL_POWEROFF=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=0 CONFIG_BOOT_RUNFROMEXTSRAM=y CONFIG_BUILTIN=y @@ -25,9 +26,9 @@ CONFIG_EXAMPLES_SOTEST_DEVPATH="/dev/ram3" CONFIG_FSUTILS_PASSWD=y CONFIG_FSUTILS_PASSWD_READONLY=y CONFIG_FS_ROMFS=y -CONFIG_HOST_MACOS=y CONFIG_IOB_NOTIFIER=y CONFIG_LIBC_DLFCN=y +CONFIG_LIBC_STRERROR=y CONFIG_LIB_ENVPATH=y CONFIG_MAX_TASKS=64 CONFIG_MM_FILL_ALLOCATIONS=y diff --git a/boards/sim/sim/sim/configs/sotest32/defconfig b/boards/sim/sim/sim/configs/sotest32/defconfig index eb9136a6a7d..8903ef62a73 100644 --- a/boards/sim/sim/sim/configs/sotest32/defconfig +++ b/boards/sim/sim/sim/configs/sotest32/defconfig @@ -13,6 +13,7 @@ CONFIG_ARCH_CHIP="sim" CONFIG_ARCH_SIM=y CONFIG_BINFMT_DISABLE=y CONFIG_BOARDCTL_POWEROFF=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=0 CONFIG_BOOT_RUNFROMEXTSRAM=y CONFIG_BUILTIN=y @@ -25,9 +26,9 @@ CONFIG_EXAMPLES_SOTEST_DEVPATH="/dev/ram3" CONFIG_FSUTILS_PASSWD=y CONFIG_FSUTILS_PASSWD_READONLY=y CONFIG_FS_ROMFS=y -CONFIG_HOST_MACOS=y CONFIG_IOB_NOTIFIER=y CONFIG_LIBC_DLFCN=y +CONFIG_LIBC_STRERROR=y CONFIG_LIB_ENVPATH=y CONFIG_MAX_TASKS=64 CONFIG_MM_FILL_ALLOCATIONS=y diff --git a/boards/sim/sim/sim/configs/unionfs/defconfig b/boards/sim/sim/sim/configs/unionfs/defconfig index 6bf932b87a0..963331d8549 100644 --- a/boards/sim/sim/sim/configs/unionfs/defconfig +++ b/boards/sim/sim/sim/configs/unionfs/defconfig @@ -26,6 +26,7 @@ CONFIG_FS_ROMFS=y CONFIG_FS_UNIONFS=y CONFIG_IDLETHREAD_STACKSIZE=4096 CONFIG_LIBC_EXECFUNCS=y +CONFIG_LIBC_STRERROR=y CONFIG_LIB_ENVPATH=y CONFIG_MAX_TASKS=64 CONFIG_NSH_ARCHINIT=y From 16667930cba1265dee2e7a5ef7cf92cc6d954d21 Mon Sep 17 00:00:00 2001 From: chenwen Date: Wed, 28 Apr 2021 18:40:56 +0800 Subject: [PATCH 094/739] risc-v/esp32c3: Support ESP32-C3 PM standby and sleep --- arch/risc-v/src/esp32c3/Make.defs | 9 + arch/risc-v/src/esp32c3/esp32c3_idle.c | 129 +- arch/risc-v/src/esp32c3/esp32c3_pm.c | 1266 ++++++++++ arch/risc-v/src/esp32c3/esp32c3_pm.h | 155 ++ .../risc-v/src/esp32c3/esp32c3_pminitialize.c | 55 + arch/risc-v/src/esp32c3/esp32c3_rtc.c | 2099 +++++++++++++++++ arch/risc-v/src/esp32c3/esp32c3_rtc.h | 437 ++++ .../src/esp32c3/hardware/apb_ctrl_reg.h | 73 + arch/risc-v/src/esp32c3/hardware/bb_reg.h | 49 + .../risc-v/src/esp32c3/hardware/esp32c3_soc.h | 38 + .../src/esp32c3/hardware/esp32c3_uart.h | 21 + arch/risc-v/src/esp32c3/hardware/extmem_reg.h | 57 + arch/risc-v/src/esp32c3/hardware/fe_reg.h | 50 + arch/risc-v/src/esp32c3/hardware/nrx_reg.h | 52 + .../src/esp32c3/hardware/regi2c_bbpll.h | 75 + .../risc-v/src/esp32c3/hardware/regi2c_ctrl.h | 69 + .../src/esp32c3/hardware/regi2c_dig_reg.h | 59 + .../src/esp32c3/hardware/regi2c_lp_bias.h | 40 + .../risc-v/src/esp32c3/hardware/spi_mem_reg.h | 46 + boards/risc-v/esp32c3/esp32c3-devkit/Kconfig | 32 + .../esp32c3-devkit/configs/pm/defconfig | 47 + .../esp32c3-devkit/scripts/esp32c3_rom.ld | 4 +- 22 files changed, 4859 insertions(+), 3 deletions(-) create mode 100644 arch/risc-v/src/esp32c3/esp32c3_pm.c create mode 100644 arch/risc-v/src/esp32c3/esp32c3_pm.h create mode 100644 arch/risc-v/src/esp32c3/esp32c3_pminitialize.c create mode 100644 arch/risc-v/src/esp32c3/esp32c3_rtc.c create mode 100644 arch/risc-v/src/esp32c3/esp32c3_rtc.h create mode 100644 arch/risc-v/src/esp32c3/hardware/apb_ctrl_reg.h create mode 100644 arch/risc-v/src/esp32c3/hardware/bb_reg.h create mode 100644 arch/risc-v/src/esp32c3/hardware/extmem_reg.h create mode 100644 arch/risc-v/src/esp32c3/hardware/fe_reg.h create mode 100644 arch/risc-v/src/esp32c3/hardware/nrx_reg.h create mode 100644 arch/risc-v/src/esp32c3/hardware/regi2c_bbpll.h create mode 100644 arch/risc-v/src/esp32c3/hardware/regi2c_ctrl.h create mode 100644 arch/risc-v/src/esp32c3/hardware/regi2c_dig_reg.h create mode 100644 arch/risc-v/src/esp32c3/hardware/regi2c_lp_bias.h create mode 100644 arch/risc-v/src/esp32c3/hardware/spi_mem_reg.h create mode 100644 boards/risc-v/esp32c3/esp32c3-devkit/configs/pm/defconfig diff --git a/arch/risc-v/src/esp32c3/Make.defs b/arch/risc-v/src/esp32c3/Make.defs index 369dcebcdaf..a65498be289 100644 --- a/arch/risc-v/src/esp32c3/Make.defs +++ b/arch/risc-v/src/esp32c3/Make.defs @@ -112,6 +112,15 @@ ifeq ($(CONFIG_ESP32C3_DMA),y) CHIP_CSRCS += esp32c3_dma.c endif +ifeq ($(CONFIG_PM),y) +ifneq ($(CONFIG_ARCH_CUSTOM_PMINIT),y) +CHIP_CSRCS += esp32c3_pminitialize.c +endif +CHIP_CSRCS += esp32c3_pm.c +endif + +CHIP_CSRCS += esp32c3_rtc.c + ifeq ($(CONFIG_ESP32C3_WIRELESS),y) WIRELESS_DRV_UNPACK = esp-wireless-drivers-3rdparty WIRELESS_DRV_ID = 2b53111 diff --git a/arch/risc-v/src/esp32c3/esp32c3_idle.c b/arch/risc-v/src/esp32c3/esp32c3_idle.c index 079bfd4a4ef..2807612f0a7 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_idle.c +++ b/arch/risc-v/src/esp32c3/esp32c3_idle.c @@ -28,19 +28,142 @@ #include #include "esp32c3.h" +#include "esp32c3_pm.h" /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ +/* Values for the RTC Alarm to wake up from the PM_STANDBY mode + * (which corresponds to ESP32-C3 stop mode). If this alarm expires, + * the logic in this file will wakeup from PM_STANDBY mode and + * transition to PM_SLEEP mode (ESP32-C3 standby mode). + */ + +#ifdef CONFIG_PM +#ifndef CONFIG_PM_ALARM_SEC +# define CONFIG_PM_ALARM_SEC 15 +#endif + +#ifndef CONFIG_PM_ALARM_NSEC +# define CONFIG_PM_ALARM_NSEC 0 +#endif + +#ifndef CONFIG_PM_SLEEP_WAKEUP_SEC +# define CONFIG_PM_SLEEP_WAKEUP_SEC 20 +#endif + +#ifndef CONFIG_PM_SLEEP_WAKEUP_NSEC +# define CONFIG_PM_SLEEP_WAKEUP_NSEC 0 +#endif + +#define PM_IDLE_DOMAIN 0 /* Revisit */ +#endif + /**************************************************************************** * Private Functions ****************************************************************************/ /**************************************************************************** - * Public Functions + * Name: up_idlepm + * + * Description: + * Perform IDLE state power management. + * ****************************************************************************/ +#ifdef CONFIG_PM +static void up_idlepm(void) +{ + static enum pm_state_e oldstate = PM_NORMAL; + enum pm_state_e newstate; + irqstate_t flags; + int ret; + + /* Decide, which power saving level can be obtained */ + + newstate = pm_checkstate(PM_IDLE_DOMAIN); + + /* Check for state changes */ + + if (newstate != oldstate) + { + flags = spin_lock_irqsave(NULL); + + /* Perform board-specific, state-dependent logic here */ + + _info("newstate= %d oldstate=%d\n", newstate, oldstate); + + /* Then force the global state change */ + + ret = pm_changestate(PM_IDLE_DOMAIN, newstate); + if (ret < 0) + { + /* The new state change failed, revert to the preceding state */ + + pm_changestate(PM_IDLE_DOMAIN, oldstate); + } + else + { + /* Save the new state */ + + oldstate = newstate; + } + + spin_unlock_irqrestore(NULL, flags); + + /* MCU-specific power management logic */ + + switch (newstate) + { + case PM_NORMAL: + break; + + case PM_IDLE: + break; + + case PM_STANDBY: + { + /* Enter Force-sleep mode */ + + esp32c3_pmstandby(CONFIG_PM_ALARM_SEC * 1000000 + + CONFIG_PM_ALARM_NSEC / 1000); + } + break; + + case PM_SLEEP: + { + /* Enter Deep-sleep mode */ + + esp32c3_pmsleep(CONFIG_PM_SLEEP_WAKEUP_SEC * 1000000 + + CONFIG_PM_SLEEP_WAKEUP_NSEC / 1000); + } + break; + + default: + break; + } + } + else + { + if (oldstate == PM_NORMAL) + { + /* Relax normal operation */ + + pm_relax(PM_IDLE_DOMAIN, PM_NORMAL); + } + +#ifdef CONFIG_WATCHDOG + /* Announce the power management state change to feed watchdog */ + + pm_changestate(PM_IDLE_DOMAIN, PM_NORMAL); +#endif + } +} +#else +# define up_idlepm() +#endif + /**************************************************************************** * Name: up_idle * @@ -69,5 +192,9 @@ void up_idle(void) asm("WFI"); + /* Perform IDLE mode power management */ + + up_idlepm(); + #endif } diff --git a/arch/risc-v/src/esp32c3/esp32c3_pm.c b/arch/risc-v/src/esp32c3/esp32c3_pm.c new file mode 100644 index 00000000000..e1957d7b6f8 --- /dev/null +++ b/arch/risc-v/src/esp32c3/esp32c3_pm.c @@ -0,0 +1,1266 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/esp32c3_pm.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include +#include + +#ifdef CONFIG_PM + +#include +#include +#include +#include +#include + +#include "chip.h" +#include "riscv_arch.h" + +#include "hardware/esp32c3_rtccntl.h" +#include "hardware/esp32c3_system.h" +#include "hardware/esp32c3_syscon.h" +#include "hardware/esp32c3_soc.h" +#include "hardware/esp32c3_uart.h" +#include "hardware/esp32c3_gpio.h" + +#include "esp32c3_attr.h" +#include "esp32c3_rtc.h" +#include "esp32c3_clockconfig.h" +#include "esp32c3_pm.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* If light sleep time is less than that, don't power down flash */ + +#define FLASH_PD_MIN_SLEEP_TIME_US 2000 + +/* Minimal amount of time we can sleep for. */ + +#define LIGHT_SLEEP_MIN_TIME_US 200 + +#define RTC_MODULE_SLEEP_PREPARE_CYCLES (6) + +#ifndef MAX +#define MAX(a,b) a > b ? a : b +#endif + +/* Time from VDD_SDIO power up to first flash read in ROM code */ + +#define VDD_SDIO_POWERUP_TO_FLASH_READ_US (700) + +/* Extra time it takes to enter and exit light sleep and deep sleep */ + +#define LIGHT_SLEEP_TIME_OVERHEAD_US (37) + +#ifdef CONFIG_ESP32C3_CPU_FREQ_MHZ +#define DEFAULT_CPU_FREQ_MHZ CONFIG_ESP32C3_CPU_FREQ_MHZ +#else +#define DEFAULT_CPU_FREQ_MHZ (160) +#endif + +#define DEFAULT_SLEEP_OUT_OVERHEAD_US (105) +#define DEEP_SLEEP_TIME_OVERHEAD_US (250 + 100 * 240 / DEFAULT_CPU_FREQ_MHZ) + +#define DEEP_SLEEP_WAKEUP_DELAY 0 + +#define RTC_VDDSDIO_TIEH_1_8V 0 /* TIEH field value for 1.8V VDDSDIO */ +#define RTC_VDDSDIO_TIEH_3_3V 1 /* TIEH field value for 3.3V VDDSDIO */ + +#define RTC_GPIO_TRIG_EN BIT(2) /* GPIO wakeup */ +#define RTC_TIMER_TRIG_EN BIT(3) /* Timer wakeup */ +#define RTC_WIFI_TRIG_EN BIT(5) /* Wi-Fi wakeup (light sleep only) */ +#define RTC_UART0_TRIG_EN BIT(6) /* UART0 wakeup (light sleep only) */ +#define RTC_UART1_TRIG_EN BIT(7) /* UART1 wakeup (light sleep only) */ +#define RTC_BT_TRIG_EN BIT(10) /* BT wakeup (light sleep only) */ +#define RTC_XTAL32K_DEAD_TRIG_EN BIT(12) +#define RTC_USB_TRIG_EN BIT(14) +#define RTC_BROWNOUT_DET_TRIG_EN BIT(16) + +/**************************************************************************** + * Private Types + ****************************************************************************/ + +/* Power down options */ + +enum esp32c3_sleep_pd_option_e +{ + /* Power down the power domain in sleep mode */ + + ESP_PD_OPTION_OFF, + + /* Keep power domain enabled during sleep mode */ + + ESP_PD_OPTION_ON, + + /* Keep power domain enabled in sleep mode if it is needed + * by one of the wakeup options, otherwise power it down. + */ + + ESP_PD_OPTION_AUTO +}; + +/* Power domains which can be powered down in sleep mode. */ + +enum esp32c3_sleep_pd_domain_e +{ + ESP_PD_DOMAIN_RTC_PERIPH = 0, /* RTC IO, sensors */ + ESP_PD_DOMAIN_RTC_SLOW_MEM, /* RTC slow memory */ + ESP_PD_DOMAIN_RTC_FAST_MEM, /* RTC fast memory */ + ESP_PD_DOMAIN_XTAL, /* XTAL oscillator */ + ESP_PD_DOMAIN_CPU, /* CPU core */ + ESP_PD_DOMAIN_MAX /* Number of domains */ +}; + +enum esp32c3_periph_module_e +{ + PERIPH_LEDC_MODULE = 0, + PERIPH_UART0_MODULE, + PERIPH_UART1_MODULE, + PERIPH_USB_DEVICE_MODULE, + PERIPH_I2C0_MODULE, + PERIPH_I2S1_MODULE, + PERIPH_TIMG0_MODULE, + PERIPH_TIMG1_MODULE, + PERIPH_UHCI0_MODULE, + PERIPH_RMT_MODULE, + PERIPH_SPI_MODULE, + PERIPH_SPI2_MODULE, + PERIPH_TWAI_MODULE, + PERIPH_RNG_MODULE, + PERIPH_WIFI_MODULE, + PERIPH_BT_MODULE, + PERIPH_WIFI_BT_COMMON_MODULE, + PERIPH_BT_BASEBAND_MODULE, + PERIPH_BT_LC_MODULE, + PERIPH_RSA_MODULE, + PERIPH_AES_MODULE, + PERIPH_SHA_MODULE, + PERIPH_HMAC_MODULE, + PERIPH_DS_MODULE, + PERIPH_GDMA_MODULE, + PERIPH_SYSTIMER_MODULE, + PERIPH_SARADC_MODULE, + PERIPH_MODULE_MAX +}; + +/* Internal structure which holds all requested deep sleep parameters. */ + +struct esp32c3_sleep_config_s +{ + enum esp32c3_sleep_pd_option_e pd_options[ESP_PD_DOMAIN_MAX]; + uint64_t sleep_duration; + uint32_t wakeup_triggers : 15; + uint32_t ext1_trigger_mode : 1; + uint32_t ext1_rtc_gpio_mask : 18; + uint32_t ext0_trigger_level : 1; + uint32_t ext0_rtc_gpio_num : 5; + uint32_t gpio_wakeup_mask : 6; + uint32_t gpio_trigger_mode : 6; + uint32_t sleep_time_adjustment; + uint32_t ccount_ticks_record; + uint32_t sleep_time_overhead_out; + uint32_t rtc_clk_cal_period; + uint64_t rtc_ticks_at_sleep_start; + void *cpu_pd_mem; +}; + +/* Structure describing vddsdio configuration. */ + +struct esp32c3_rtc_vddsdio_config_s +{ + uint32_t force : 1; /* If 1, use configuration from RTC registers; + * if 0, use EFUSE/bootstrapping pins. + */ + uint32_t enable : 1; /* Enable VDDSDIO regulator */ + uint32_t tieh : 1; /* Select VDDSDIO voltage. One of + * RTC_VDDSDIO_TIEH_1_8V, RTC_VDDSDIO_TIEH_3_3V + */ + uint32_t drefh : 2; /* Tuning parameter for VDDSDIO regulator */ + uint32_t drefm : 2; /* Tuning parameter for VDDSDIO regulator */ + uint32_t drefl : 2; /* Tuning parameter for VDDSDIO regulator */ +}; + +/**************************************************************************** + * Private Function Prototypes + ****************************************************************************/ + +static inline uint32_t esp32c3_periph_ll_get_rst_en_mask + (enum esp32c3_periph_module_e periph, bool enable); +static uint32_t IRAM_ATTR esp32c3_periph_ll_get_rst_en_reg( + enum esp32c3_periph_module_e periph); +static uint32_t IRAM_ATTR esp32c3_periph_ll_get_clk_en_reg( + enum esp32c3_periph_module_e periph); +static inline uint32_t esp32c3_periph_ll_get_clk_en_mask( + enum esp32c3_periph_module_e periph); +static inline bool IRAM_ATTR esp32c3_periph_ll_periph_enabled( + enum esp32c3_periph_module_e periph); +static inline void esp32c3_uart_tx_wait_idle(uint8_t uart_no); +static void IRAM_ATTR esp32c3_flush_uarts(void); +static void IRAM_ATTR esp32c3_suspend_uarts(void); +static void IRAM_ATTR esp32c3_resume_uarts(void); +static void esp32c3_timer_wakeup_prepare(void); +static uint32_t esp32c3_get_power_down_flags(void); +static void IRAM_ATTR esp32c3_set_vddsdio_config( + struct esp32c3_rtc_vddsdio_config_s config); +static int IRAM_ATTR esp32c3_get_vddsdio_config( + struct esp32c3_rtc_vddsdio_config_s *config); +static int IRAM_ATTR esp32c3_light_sleep_inner(uint32_t pd_flags, + uint32_t time_us, struct esp32c3_rtc_vddsdio_config_s config); +static int IRAM_ATTR esp32c3_sleep_start(uint32_t pd_flags); + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static struct esp32c3_sleep_config_s s_config = +{ + .pd_options = + { ESP_PD_OPTION_AUTO, ESP_PD_OPTION_AUTO, + ESP_PD_OPTION_AUTO, ESP_PD_OPTION_AUTO, + ESP_PD_OPTION_AUTO + }, + .ccount_ticks_record = 0, + .sleep_time_overhead_out = DEFAULT_SLEEP_OUT_OVERHEAD_US, + .wakeup_triggers = 0 +}; + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/* Set the real CPU ticks per us to the ets, + * so that ets_delay_us will be accurate. + */ + +extern void ets_update_cpu_frequency(uint32_t ticks_per_us); + +/* Pauses execution for us microseconds. */ + +extern void esp_rom_delay_us(uint32_t us); + +/**************************************************************************** + * Name: esp32c3_periph_ll_get_rst_en_mask + * + * Description: + * Get system reset bit through periph module + * + * Input Parameters: + * periph - Periph module (one of enum esp32c3_periph_module_e values) + * enable - Whether hardware acceleration is enabled + * + * Returned Value: + * System reset bit + * + ****************************************************************************/ + +static inline uint32_t esp32c3_periph_ll_get_rst_en_mask + (enum esp32c3_periph_module_e periph, bool enable) +{ + switch (periph) + { + case PERIPH_SARADC_MODULE: + return SYSTEM_APB_SARADC_RST; + + case PERIPH_RMT_MODULE: + return SYSTEM_RMT_RST; + + case PERIPH_LEDC_MODULE: + return SYSTEM_LEDC_RST; + + case PERIPH_UART0_MODULE: + return SYSTEM_UART_RST; + + case PERIPH_UART1_MODULE: + return SYSTEM_UART1_RST; + + case PERIPH_I2C0_MODULE: + return SYSTEM_I2C_EXT0_RST; + + case PERIPH_I2S1_MODULE: + return SYSTEM_I2S1_RST; + + case PERIPH_TIMG0_MODULE: + return SYSTEM_TIMERGROUP_RST; + + case PERIPH_TIMG1_MODULE: + return SYSTEM_TIMERGROUP1_RST; + + case PERIPH_UHCI0_MODULE: + return SYSTEM_UHCI0_RST; + + case PERIPH_SYSTIMER_MODULE: + return SYSTEM_SYSTIMER_RST; + + case PERIPH_GDMA_MODULE: + return SYSTEM_DMA_RST; + + case PERIPH_SPI_MODULE: + return SYSTEM_SPI01_RST; + + case PERIPH_SPI2_MODULE: + return SYSTEM_SPI2_RST; + + case PERIPH_TWAI_MODULE: + return SYSTEM_TWAI_RST; + + case PERIPH_HMAC_MODULE: + return SYSTEM_CRYPTO_HMAC_RST; + + case PERIPH_AES_MODULE: + if (enable == true) + { + /* Clear reset on digital signature, + * otherwise AES unit is held in reset also. + */ + + return (SYSTEM_CRYPTO_AES_RST | SYSTEM_CRYPTO_DS_RST); + } + + /* Don't return other units to reset, + * as this pulls reset on RSA & SHA units, respectively. + */ + + return SYSTEM_CRYPTO_AES_RST; + + case PERIPH_SHA_MODULE: + if (enable == true) + { + /* Clear reset on digital signature and HMAC, + * otherwise SHA is held in reset + */ + + return (SYSTEM_CRYPTO_SHA_RST | + SYSTEM_CRYPTO_DS_RST | SYSTEM_CRYPTO_HMAC_RST); + } + + /* Don't assert reset on secure boot, + * otherwise AES is held in reset + */ + + return SYSTEM_CRYPTO_SHA_RST; + + case PERIPH_RSA_MODULE: + if (enable == true) + { + /* also clear reset on digital signature, + * otherwise RSA is held in reset + */ + + return (SYSTEM_CRYPTO_RSA_RST | SYSTEM_CRYPTO_DS_RST); + } + + /* don't reset digital signature unit, + * as this resets AES also. + */ + + return SYSTEM_CRYPTO_RSA_RST; + + case PERIPH_DS_MODULE: + return SYSTEM_CRYPTO_DS_RST; + + default: + return 0; + } +} + +/**************************************************************************** + * Name: esp32c3_periph_ll_get_rst_en_reg + * + * Description: + * Get system reset register through periph module + * + * Input Parameters: + * periph - Periph module (one of enum esp32c3_periph_module_e values) + * + * Returned Value: + * System reset register + * + ****************************************************************************/ + +static uint32_t IRAM_ATTR esp32c3_periph_ll_get_rst_en_reg( + enum esp32c3_periph_module_e periph) +{ + switch (periph) + { + case PERIPH_RNG_MODULE: + case PERIPH_WIFI_MODULE: + case PERIPH_BT_MODULE: + case PERIPH_WIFI_BT_COMMON_MODULE: + case PERIPH_BT_BASEBAND_MODULE: + case PERIPH_BT_LC_MODULE: + return SYSTEM_WIFI_RST_EN_REG; + + case PERIPH_HMAC_MODULE: + case PERIPH_DS_MODULE: + case PERIPH_AES_MODULE: + case PERIPH_RSA_MODULE: + case PERIPH_SHA_MODULE: + case PERIPH_GDMA_MODULE: + return SYSTEM_PERIP_RST_EN1_REG; + + default: + return SYSTEM_PERIP_RST_EN0_REG; + } +} + +/**************************************************************************** + * Name: esp32c3_periph_ll_get_clk_en_reg + * + * Description: + * Get module clock register through periph module + * + * Input Parameters: + * periph - Periph module (one of enum esp32c3_periph_module_e values) + * + * Returned Value: + * Module clock register + * + ****************************************************************************/ + +static uint32_t IRAM_ATTR esp32c3_periph_ll_get_clk_en_reg( + enum esp32c3_periph_module_e periph) +{ + switch (periph) + { + case PERIPH_RNG_MODULE: + case PERIPH_WIFI_MODULE: + case PERIPH_BT_MODULE: + case PERIPH_WIFI_BT_COMMON_MODULE: + case PERIPH_BT_BASEBAND_MODULE: + case PERIPH_BT_LC_MODULE: + return SYSTEM_WIFI_CLK_EN_REG; + + case PERIPH_HMAC_MODULE: + case PERIPH_DS_MODULE: + case PERIPH_AES_MODULE: + case PERIPH_RSA_MODULE: + case PERIPH_SHA_MODULE: + case PERIPH_GDMA_MODULE: + return SYSTEM_PERIP_CLK_EN1_REG; + + default: + return SYSTEM_PERIP_CLK_EN0_REG; + } +} + +/**************************************************************************** + * Name: esp32c3_periph_ll_get_clk_en_mask + * + * Description: + * Get module clock bit through periph module + * + * Input Parameters: + * periph - Periph module (one of enum esp32c3_periph_module_e values) + * + * Returned Value: + * Module clock bit + * + ****************************************************************************/ + +static inline uint32_t esp32c3_periph_ll_get_clk_en_mask( + enum esp32c3_periph_module_e periph) +{ + switch (periph) + { + case PERIPH_SARADC_MODULE: + return SYSTEM_APB_SARADC_CLK_EN; + + case PERIPH_RMT_MODULE: + return SYSTEM_RMT_CLK_EN; + + case PERIPH_LEDC_MODULE: + return SYSTEM_LEDC_CLK_EN; + + case PERIPH_UART0_MODULE: + return SYSTEM_UART_CLK_EN; + + case PERIPH_UART1_MODULE: + return SYSTEM_UART1_CLK_EN; + + case PERIPH_I2C0_MODULE: + return SYSTEM_I2C_EXT0_CLK_EN; + + case PERIPH_I2S1_MODULE: + return SYSTEM_I2S1_CLK_EN; + + case PERIPH_TIMG0_MODULE: + return SYSTEM_TIMERGROUP_CLK_EN; + + case PERIPH_TIMG1_MODULE: + return SYSTEM_TIMERGROUP1_CLK_EN; + + case PERIPH_UHCI0_MODULE: + return SYSTEM_UHCI0_CLK_EN; + + case PERIPH_SYSTIMER_MODULE: + return SYSTEM_SYSTIMER_CLK_EN; + + case PERIPH_SPI_MODULE: + return SYSTEM_SPI01_CLK_EN; + + case PERIPH_SPI2_MODULE: + return SYSTEM_SPI2_CLK_EN; + + case PERIPH_TWAI_MODULE: + return SYSTEM_TWAI_CLK_EN; + + case PERIPH_GDMA_MODULE: + return SYSTEM_DMA_CLK_EN; + + case PERIPH_AES_MODULE: + return SYSTEM_CRYPTO_AES_CLK_EN; + + case PERIPH_SHA_MODULE: + return SYSTEM_CRYPTO_SHA_CLK_EN; + + case PERIPH_RSA_MODULE: + return SYSTEM_CRYPTO_RSA_CLK_EN; + + case PERIPH_HMAC_MODULE: + return SYSTEM_CRYPTO_HMAC_CLK_EN; + + case PERIPH_DS_MODULE: + return SYSTEM_CRYPTO_DS_CLK_EN; + + case PERIPH_RNG_MODULE: + return SYSTEM_WIFI_CLK_RNG_EN; + + case PERIPH_WIFI_MODULE: + return SYSTEM_WIFI_CLK_WIFI_EN_M; + + case PERIPH_BT_MODULE: + return SYSTEM_WIFI_CLK_BT_EN_M; + + case PERIPH_WIFI_BT_COMMON_MODULE: + return SYSTEM_WIFI_CLK_WIFI_BT_COMMON_M; + + case PERIPH_BT_BASEBAND_MODULE: + return SYSTEM_BT_BASEBAND_EN; + + case PERIPH_BT_LC_MODULE: + return SYSTEM_BT_LC_EN; + + default: + return 0; + } +} + +/**************************************************************************** + * Name: esp32c3_periph_ll_periph_enabled + * + * Description: + * Whether the current Periph module is enabled + * + * Input Parameters: + * periph - Periph module (one of enum esp32c3_periph_module_e values) + * + * Returned Value: + * Periph module is enabled or not + * + ****************************************************************************/ + +static inline bool IRAM_ATTR esp32c3_periph_ll_periph_enabled( + enum esp32c3_periph_module_e periph) +{ + return ((getreg32(esp32c3_periph_ll_get_rst_en_reg(periph)) & + esp32c3_periph_ll_get_rst_en_mask(periph, false)) == 0) && + ((getreg32(esp32c3_periph_ll_get_clk_en_reg(periph)) & + esp32c3_periph_ll_get_clk_en_mask(periph)) != 0); +} + +/**************************************************************************** + * Name: esp32c3_uart_tx_wait_idle + * + * Description: + * Wait until uart tx full empty and the last char send ok. + * + * Input Parameters: + * uart_no - 0 for UART0, 1 for UART1, 2 for UART2 + * + * Returned Value: + * None + * + ****************************************************************************/ + +static inline void IRAM_ATTR esp32c3_uart_tx_wait_idle(uint8_t uart_no) +{ + uint32_t status; + do + { + status = getreg32(UART_STATUS_REG(uart_no)); + } + while ((status & (UART_ST_UTX_OUT_M | UART_TXFIFO_CNT_M)) != 0); +} + +/**************************************************************************** + * Name: esp32c3_flush_uarts + * + * Description: + * Wait until UART0/UART1 tx full empty and the last char send ok + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void IRAM_ATTR esp32c3_flush_uarts(void) +{ + int i; + + for (i = 0; i < ESP32C3_NUARTS; ++i) + { + if (esp32c3_periph_ll_periph_enabled(PERIPH_UART0_MODULE + i)) + { + esp32c3_uart_tx_wait_idle(i); + } + } +} + +/**************************************************************************** + * Name: esp32c3_suspend_uarts + * + * Description: + * Suspend UART0/UART1 output + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void IRAM_ATTR esp32c3_suspend_uarts(void) +{ + int i; + uint32_t uart_fsm = 0; + + for (i = 0; i < ESP32C3_NUARTS; ++i) + { + if (!esp32c3_periph_ll_periph_enabled(PERIPH_UART0_MODULE + i)) + { + continue; + } + + modifyreg32(UART_FLOW_CONF_REG(i), 0, UART_FORCE_XOFF); + do + { + uart_fsm = REG_GET_FIELD(UART_STATUS_REG(i), UART_ST_UTX_OUT); + } + while (!(uart_fsm == UART_FSM_IDLE || + uart_fsm == UART_FSM_TX_WAIT_SEND)); + } +} + +/**************************************************************************** + * Name: esp32c3_resume_uarts + * + * Description: + * Re-enable UART0/UART1/UART2 output + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void IRAM_ATTR esp32c3_resume_uarts(void) +{ + int i; + + for (i = 0; i < ESP32C3_NUARTS; ++i) + { + if (!esp32c3_periph_ll_periph_enabled(PERIPH_UART0_MODULE + i)) + { + continue; + } + + REG_CLR_BIT(UART_FLOW_CONF_REG(i), UART_FORCE_XOFF); + REG_SET_BIT(UART_FLOW_CONF_REG(i), UART_FORCE_XON); + REG_CLR_BIT(UART_FLOW_CONF_REG(i), + UART_SW_FLOW_CON_EN | UART_FORCE_XON); + REG_SET_BIT(UART_ID_REG(i), UART_UPDATE); + } +} + +/**************************************************************************** + * Name: esp32c3_get_power_down_flags + * + * Description: + * Get power domains that can be powered down + * + * Input Parameters: + * None + * + * Returned Value: + * Power domains + * + ****************************************************************************/ + +static uint32_t esp32c3_get_power_down_flags(void) +{ + uint32_t pd_flags = 0; + + s_config.pd_options[ESP_PD_DOMAIN_RTC_FAST_MEM] = ESP_PD_OPTION_ON; + + if (s_config.pd_options[ESP_PD_DOMAIN_RTC_PERIPH] == ESP_PD_OPTION_AUTO) + { + if (s_config.wakeup_triggers & RTC_GPIO_TRIG_EN) + { + s_config.pd_options[ESP_PD_DOMAIN_RTC_PERIPH] = + ESP_PD_OPTION_ON; + } + else + { + s_config.pd_options[ESP_PD_DOMAIN_RTC_PERIPH] = + ESP_PD_OPTION_OFF; + } + } + + if (s_config.cpu_pd_mem == NULL) + { + s_config.pd_options[ESP_PD_DOMAIN_CPU] = ESP_PD_OPTION_ON; + } + + if (s_config.pd_options[ESP_PD_DOMAIN_XTAL] == ESP_PD_OPTION_AUTO) + { + s_config.pd_options[ESP_PD_DOMAIN_XTAL] = ESP_PD_OPTION_OFF; + } + + /* Prepare flags based on the selected options */ + + if (s_config.pd_options[ESP_PD_DOMAIN_RTC_FAST_MEM] != ESP_PD_OPTION_ON) + { + pd_flags |= RTC_SLEEP_PD_RTC_FAST_MEM; + } + + if (s_config.pd_options[ESP_PD_DOMAIN_RTC_PERIPH] != ESP_PD_OPTION_ON) + { + pd_flags |= RTC_SLEEP_PD_RTC_PERIPH; + } + + if (s_config.pd_options[ESP_PD_DOMAIN_CPU] != ESP_PD_OPTION_ON) + { + pd_flags |= RTC_SLEEP_PD_CPU; + } + + return pd_flags; +} + +/**************************************************************************** + * Name: esp32c3_timer_wakeup_prepare + * + * Description: + * Configure timer to wake-up + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void IRAM_ATTR esp32c3_timer_wakeup_prepare(void) +{ + int64_t ticks; + int64_t sleep_duration = (int64_t)s_config.sleep_duration - + (int64_t) s_config.sleep_time_adjustment; + if (sleep_duration < 0) + { + sleep_duration = 0; + } + + ticks = esp32c3_rtc_time_us_to_slowclk(sleep_duration, + s_config.rtc_clk_cal_period); + esp32c3_rtc_sleep_set_wakeup_time(s_config.rtc_ticks_at_sleep_start + + ticks); +} + +/**************************************************************************** + * Name: esp32c3_set_vddsdio_config + * + * Description: + * Set new VDDSDIO configuration using RTC registers. + * + * Input Parameters: + * New VDDSDIO configuration + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void IRAM_ATTR esp32c3_set_vddsdio_config( + struct esp32c3_rtc_vddsdio_config_s config) +{ + uint32_t val = 0; + val |= (config.force << RTC_CNTL_SDIO_FORCE_S); + val |= (config.enable << RTC_CNTL_XPD_SDIO_REG_S); + val |= (config.drefh << RTC_CNTL_DREFH_SDIO_S); + val |= (config.drefm << RTC_CNTL_DREFM_SDIO_S); + val |= (config.drefl << RTC_CNTL_DREFL_SDIO_S); + val |= (config.tieh << RTC_CNTL_SDIO_TIEH_S); + val |= RTC_CNTL_SDIO_PD_EN; + putreg32((uint32_t)val, RTC_CNTL_SDIO_CONF_REG); +} + +/**************************************************************************** + * Name: esp32c3_get_vddsdio_config + * + * Description: + * Get current VDDSDIO configuration. + * + * Input Parameters: + * Incoming parameter address of VDDSDIO configuration to be saved + * + * Returned Value: + * Zero (OK) is returned on success. + * + ****************************************************************************/ + +static int IRAM_ATTR esp32c3_get_vddsdio_config( + struct esp32c3_rtc_vddsdio_config_s *config) +{ + struct esp32c3_rtc_vddsdio_config_s *result = config; + uint32_t strap_reg; + uint32_t sdio_conf_reg = getreg32(RTC_CNTL_SDIO_CONF_REG); + + result->drefh = (sdio_conf_reg & RTC_CNTL_DREFH_SDIO_M) + >> RTC_CNTL_DREFH_SDIO_S; + result->drefm = (sdio_conf_reg & RTC_CNTL_DREFM_SDIO_M) + >> RTC_CNTL_DREFM_SDIO_S; + result->drefl = (sdio_conf_reg & RTC_CNTL_DREFL_SDIO_M) + >> RTC_CNTL_DREFL_SDIO_S; + + if (sdio_conf_reg & RTC_CNTL_SDIO_FORCE) + { + /* Get configuration from RTC */ + + result->force = 1; + result->enable = (sdio_conf_reg & RTC_CNTL_XPD_SDIO_REG_M) + >> RTC_CNTL_XPD_SDIO_REG_S; + result->tieh = (sdio_conf_reg & RTC_CNTL_SDIO_TIEH_M) + >> RTC_CNTL_SDIO_TIEH_S; + + return OK; + } + + /* Otherwise, VDD_SDIO is controlled by bootstrapping pin */ + + strap_reg = getreg32(GPIO_STRAP_REG); + result->force = 0; + result->tieh = (strap_reg & BIT(5)) ? RTC_VDDSDIO_TIEH_1_8V + : RTC_VDDSDIO_TIEH_3_3V; + result->enable = 1; + + return OK; +} + +/**************************************************************************** + * Name: esp32c3_sleep_start + * + * Description: + * Enter low power mode. + * + * Input Parameters: + * Power domains + * + * Returned Value: + * 0 is returned on success or a negated errno value is returned + * + ****************************************************************************/ + +static int IRAM_ATTR esp32c3_sleep_start(uint32_t pd_flags) +{ + int result; + struct esp32c3_cpu_freq_config_s cpu_freq_config; + bool deep_sleep = pd_flags & RTC_SLEEP_PD_DIG; + + /* Stop UART output so that output is not lost due to APB frequency change. + * For light sleep, suspend UART output — it will resume after wakeup. + * For deep sleep, wait for the contents of UART FIFO to be sent. + */ + + if (deep_sleep) + { + esp32c3_flush_uarts(); + } + else + { + esp32c3_suspend_uarts(); + } + + /* Save current frequency and switch to XTAL */ + + esp32c3_rtc_clk_cpu_freq_get_config(&cpu_freq_config); + esp32c3_rtc_cpu_freq_set_xtal(); + + /* Enter sleep */ + + esp32c3_rtc_sleep_init(pd_flags); + + esp32c3_rtc_sleep_low_init(s_config.rtc_clk_cal_period); + + /* Set state machine time for light sleep */ + + if (deep_sleep == false) + { + esp32c3_rtc_sleep_low_init(s_config.rtc_clk_cal_period); + } + + /* Configure timer wakeup */ + + if ((s_config.wakeup_triggers & RTC_TIMER_TRIG_EN) + && s_config.sleep_duration > 0) + { + esp32c3_timer_wakeup_prepare(); + } + + if (deep_sleep) + { + /* Otherwise, need to call the dedicated soc function for this */ + + result = esp32c3_rtc_deep_sleep_start(s_config.wakeup_triggers, 0); + } + else + { + result = esp32c3_rtc_sleep_start(s_config.wakeup_triggers, 0, 1); + } + + /* Restore CPU frequency */ + + esp32c3_rtc_clk_cpu_freq_set_config(&cpu_freq_config); + + if (!deep_sleep) + { + s_config.ccount_ticks_record = esp32c3_cpu_cycle_count(); + } + + REG_CLR_BIT(RTC_CNTL_RETENTION_CTRL_REG, RTC_CNTL_RETENTION_EN); + + /* Re-enable UART output */ + + esp32c3_resume_uarts(); + + return result; +} + +/**************************************************************************** + * Name: esp32c3_light_sleep_inner + * + * Description: + * Enter low power mode, then wait for flash to be ready on wakeup + * + * Input Parameters: + * pd_flags - Power domains + * time_us - Time to wait for spi_flash become ready + * config - VDDSDIO configuration + * + * Returned Value: + * 0 is returned on success or a negated errno value is returned + * + ****************************************************************************/ + +static int IRAM_ATTR esp32c3_light_sleep_inner(uint32_t pd_flags, + uint32_t time_us, struct esp32c3_rtc_vddsdio_config_s config) +{ + /* Enter sleep */ + + int err = esp32c3_sleep_start(pd_flags); + + /* If VDDSDIO regulator was controlled by RTC registers before sleep. + * restore the configuration. + */ + + if (config.force) + { + esp32c3_set_vddsdio_config(config); + } + + /* If SPI flash was powered down, wait for it to become ready. */ + + if (pd_flags & RTC_SLEEP_PD_VDDSDIO) + { + /* Wait for the flash chip to start up. */ + + esp_rom_delay_us(time_us); + } + + return err; +} + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: esp32c3_sleep_enable_timer_wakeup + * + * Description: + * Configure wake-up interval + * + * Input Parameters: + * time_in_us - Configure wake-up time interval + * + * Returned Value: + * None + * + ****************************************************************************/ + +void esp32c3_sleep_enable_timer_wakeup(uint64_t time_in_us) +{ + s_config.wakeup_triggers |= RTC_TIMER_TRIG_EN; + s_config.sleep_duration = time_in_us; +} + +/**************************************************************************** + * Name: esp32c3_light_sleep_start + * + * Description: + * Enter light sleep mode + * + * Input Parameters: + * None + * + * Returned Value: + * 0 is returned on success or a negated errno value is returned + * + ****************************************************************************/ + +int esp32c3_light_sleep_start(void) +{ + int ret = OK; + irqstate_t flags; + uint32_t pd_flags; + uint32_t flash_enable_time_us; + uint32_t vddsdio_pd_sleep_duration; + struct esp32c3_rtc_vddsdio_config_s vddsdio_config; + uint32_t rtc_cntl_xtl_buf_wait_cycles; + uint32_t sleep_time_overhead_in; + uint32_t ccount_at_sleep_start; + + flags = enter_critical_section(); + + s_config.ccount_ticks_record = esp32c3_cpu_cycle_count(); + s_config.rtc_ticks_at_sleep_start = esp32c3_rtc_time_get(); + ccount_at_sleep_start = esp32c3_cpu_cycle_count(); + sleep_time_overhead_in = (ccount_at_sleep_start - + s_config.ccount_ticks_record) / (esp32c3_clk_cpu_freq() / 1000000ULL); + + /* Decide which power domains can be powered down */ + + pd_flags = esp32c3_get_power_down_flags(); + + s_config.rtc_clk_cal_period = + esp32c3_rtc_clk_cal(RTC_CAL_RTC_MUX, RTC_CLK_SRC_CAL_CYCLES); + + /* Adjustment time consists of parts below: + * 1. Hardware time waiting for internal 8M oscilate clock and XTAL; + * 2. Hardware state swithing time of the rtc main state machine; + * 3. Code execution time when clock is not stable; + * 4. Code execution time which can be measured; + */ + + rtc_cntl_xtl_buf_wait_cycles = esp32c3_rtc_time_us_to_slowclk( + RTC_CNTL_XTL_BUF_WAIT_SLP_US, s_config.rtc_clk_cal_period); + + s_config.sleep_time_adjustment = LIGHT_SLEEP_TIME_OVERHEAD_US + + sleep_time_overhead_in + s_config.sleep_time_overhead_out + + esp32c3_rtc_time_slowclk_to_us(rtc_cntl_xtl_buf_wait_cycles + + RTC_CNTL_CK8M_WAIT_SLP_CYCLES + RTC_CNTL_WAKEUP_DELAY_CYCLES, + s_config.rtc_clk_cal_period); + + /* Decide if VDD_SDIO needs to be powered down; + * If it needs to be powered down, adjust sleep time. + */ + + flash_enable_time_us = VDD_SDIO_POWERUP_TO_FLASH_READ_US + + DEEP_SLEEP_WAKEUP_DELAY; + + /* When SPIRAM is disabled in menuconfig, the minimum sleep time of the + * system needs to meet the sum below: + * 1. Wait time for the flash power-on after waking up; + * 2. The execution time of codes between RTC Timer get start time + * with hardware starts to switch state to sleep; + * 3. The hardware state switching time of the rtc state machine during + * sleep and wake-up. This process requires 6 cycles to complete. + * The specific hardware state switching process and the cycles + * consumed are rtc_cpu_run_stall(1), cut_pll_rtl(2), cut_8m(1), + * min_protect(2); + * 4. All the adjustment time which is + * s_config.sleep_time_adjustment below. + */ + + vddsdio_pd_sleep_duration = MAX(FLASH_PD_MIN_SLEEP_TIME_US, + flash_enable_time_us + LIGHT_SLEEP_MIN_TIME_US + + s_config.sleep_time_adjustment + esp32c3_rtc_time_slowclk_to_us( + RTC_MODULE_SLEEP_PREPARE_CYCLES, s_config.rtc_clk_cal_period)); + + if (s_config.sleep_duration > vddsdio_pd_sleep_duration) + { + pd_flags |= RTC_SLEEP_PD_VDDSDIO; + if (s_config.sleep_time_overhead_out < flash_enable_time_us) + { + s_config.sleep_time_adjustment += flash_enable_time_us; + } + } + else + { + if (s_config.sleep_time_overhead_out > flash_enable_time_us) + { + s_config.sleep_time_adjustment -= flash_enable_time_us; + } + } + + esp32c3_get_vddsdio_config(&vddsdio_config); + + /* Enter sleep, then wait for flash to be ready on wakeup */ + + ret = esp32c3_light_sleep_inner(pd_flags, flash_enable_time_us, + vddsdio_config); + s_config.sleep_time_overhead_out = (esp32c3_cpu_cycle_count() - + s_config.ccount_ticks_record) / (esp32c3_clk_cpu_freq() / 1000000ULL); + + leave_critical_section(flags); + + return ret; +} + +/**************************************************************************** + * Name: esp32c3_pminit + * + * Description: + * Initialize force sleep parameters. + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +void esp32c3_pminit(void) +{ + /* Initialize RTC parameters */ + + esp32c3_rtc_init(); + esp32c3_rtc_clk_set(); +} + +/**************************************************************************** + * Name: esp32c3_pmstandby + * + * Description: + * Enter force sleep. + * + * Input Parameters: + * time_in_us - force sleep time interval + * + * Returned Value: + * None + * + ****************************************************************************/ + +void esp32c3_pmstandby(uint64_t time_in_us) +{ + /* don't power down XTAL — powering it up takes different time on. */ + + fflush(stdout); + esp32c3_sleep_enable_timer_wakeup(time_in_us); + esp32c3_light_sleep_start(); +} + +/**************************************************************************** + * Name: esp32c3_deep_sleep_start + * + * Description: + * Enter deep sleep mode + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +void IRAM_ATTR esp32c3_deep_sleep_start(void) +{ + uint32_t pd_flags; + + /* record current RTC time */ + + s_config.rtc_ticks_at_sleep_start = esp32c3_rtc_time_get(); + + /* Decide which power domains can be powered down */ + + pd_flags = esp32c3_get_power_down_flags(); + s_config.rtc_clk_cal_period = getreg32(RTC_SLOW_CLK_CAL_REG); + + /* Correct the sleep time */ + + s_config.sleep_time_adjustment = DEEP_SLEEP_TIME_OVERHEAD_US; + + /* Enter deep sleep */ + + esp32c3_sleep_start(RTC_SLEEP_PD_DIG | RTC_SLEEP_PD_VDDSDIO | pd_flags); + + /* Because RTC is in a slower clock domain than the CPU, it + * can take several CPU cycles for the sleep mode to start. + */ + + while (1); +} + +/**************************************************************************** + * Name: esp32c3_pmsleep + * + * Description: + * Enter deep sleep. + * + * Input Parameters: + * time_in_us - deep sleep time interval + * + * Returned Value: + * None + * + ****************************************************************************/ + +void esp32c3_pmsleep(uint64_t time_in_us) +{ + fflush(stdout); + esp32c3_sleep_enable_timer_wakeup(time_in_us); + esp32c3_deep_sleep_start(); +} + +#endif /* CONFIG_PM */ \ No newline at end of file diff --git a/arch/risc-v/src/esp32c3/esp32c3_pm.h b/arch/risc-v/src/esp32c3/esp32c3_pm.h new file mode 100644 index 00000000000..7081b0496d9 --- /dev/null +++ b/arch/risc-v/src/esp32c3/esp32c3_pm.h @@ -0,0 +1,155 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/esp32c3_pm.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_ESP32C3_PM_H +#define __ARCH_RISCV_SRC_ESP32C3_ESP32C3_PM_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#ifndef __ASSEMBLY__ + +#undef EXTERN +#if defined(__cplusplus) +#define EXTERN extern "C" +extern "C" +{ +#else +#define EXTERN extern +#endif + +#ifdef CONFIG_PM + +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ + +/**************************************************************************** + * Name: esp32c3_sleep_enable_timer_wakeup + * + * Description: + * Configure wake-up interval + * + * Input Parameters: + * time_in_us - Configure wake-up time interval + * + * Returned Value: + * None + * + ****************************************************************************/ + +void esp32c3_sleep_enable_timer_wakeup(uint64_t time_in_us); + +/**************************************************************************** + * Name: esp32c3_light_sleep_start + * + * Description: + * Enter sleep mode + * + * Input Parameters: + * None + * + * Returned Value: + * 0 is returned on success or a negated errno value is returned + * + ****************************************************************************/ + +int esp32c3_light_sleep_start(void); + +/**************************************************************************** + * Name: esp32c3_pminit + * + * Description: + * Initialize force sleep parameters. + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +void esp32c3_pminit(void); + +/**************************************************************************** + * Name: esp32c3_pmstandby + * + * Description: + * Enter force sleep time interval. + * + * Input Parameters: + * time_in_us - force sleep time interval + * + * Returned Value: + * None + * + ****************************************************************************/ + +void esp32c3_pmstandby(uint64_t time_in_us); + +/**************************************************************************** + * Name: esp32c3_deep_sleep_start + * + * Description: + * Enter deep sleep mode + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +void esp32c3_deep_sleep_start(void); + +/**************************************************************************** + * Name: esp32c3_pmsleep + * + * Description: + * Enter deep sleep. + * + * Input Parameters: + * time_in_us - deep sleep time interval + * + * Returned Value: + * None + * + ****************************************************************************/ + +void esp32c3_pmsleep(uint64_t time_in_us); + +#endif /* CONFIG_PM */ + +#ifdef __cplusplus +} +#endif +#undef EXTERN + +#endif /* __ASSEMBLY__ */ +#endif /* __ARCH_RISCV_SRC_ESP32C3_ESP32C3_PM_H */ diff --git a/arch/risc-v/src/esp32c3/esp32c3_pminitialize.c b/arch/risc-v/src/esp32c3/esp32c3_pminitialize.c new file mode 100644 index 00000000000..ad1e87a02ce --- /dev/null +++ b/arch/risc-v/src/esp32c3/esp32c3_pminitialize.c @@ -0,0 +1,55 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/esp32c3_pminitialize.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include + +#include "esp32c3_pm.h" + +#ifdef CONFIG_PM + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: xtensa_pminitialize + * + * Description: + * Initialize the power management subsystem. + * + ****************************************************************************/ + +void riscv_pminitialize(void) +{ + /* Initialize RTC parameters */ + + esp32c3_pminit(); + + /* Then initialize the NuttX power management subsystem proper */ + + pm_initialize(); +} + +#endif /* CONFIG_PM */ diff --git a/arch/risc-v/src/esp32c3/esp32c3_rtc.c b/arch/risc-v/src/esp32c3/esp32c3_rtc.c new file mode 100644 index 00000000000..f1947a6ac1f --- /dev/null +++ b/arch/risc-v/src/esp32c3/esp32c3_rtc.c @@ -0,0 +1,2099 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/esp32c3_rtc.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include + +#include "riscv_arch.h" + +#include "hardware/esp32c3_rtccntl.h" +#include "hardware/esp32c3_soc.h" +#include "hardware/esp32c3_system.h" +#include "hardware/esp32c3_tim.h" +#include "hardware/apb_ctrl_reg.h" +#include "hardware/bb_reg.h" +#include "hardware/nrx_reg.h" +#include "hardware/fe_reg.h" +#include "hardware/regi2c_lp_bias.h" +#include "hardware/regi2c_dig_reg.h" +#include "hardware/regi2c_bbpll.h" +#include "hardware/regi2c_ctrl.h" +#include "hardware/extmem_reg.h" +#include "hardware/spi_mem_reg.h" + +#include "esp32c3_rtc.h" +#include "esp32c3_clockconfig.h" +#include "esp32c3_attr.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#define OTHER_BLOCKS_POWERUP 1 +#define OTHER_BLOCKS_WAIT 1 + +#define STR2(X) #X +#define STR(X) STR2(X) + +#define MHZ (1000000) + +/* Lower threshold for a reasonably-looking calibration value for a 32k XTAL. + * The ideal value (assuming 32768 Hz frequency) + * is 1000000/32768*(2**19) = 16*10^6. + */ + +#define MIN_32K_XTAL_CAL_VAL 15000000L +#define DELAY_FAST_CLK_SWITCH 3 +#define DELAY_SLOW_CLK_SWITCH 300 +#define DELAY_8M_ENABLE 50 + +/* Indicates that this 32k oscillator gets input from external oscillator, + * rather than a crystal. + */ + +#define EXT_OSC_FLAG BIT(3) + +/* Number of cycles to wait from the 32k XTAL oscillator to + * consider it running. Larger values increase startup delay. + * Smaller values may cause false positive detection + * (i.e. oscillator runs for a few cycles and then stops). + */ + +#define SLOW_CLK_CAL_CYCLES 1024 + +#define RTC_FAST_CLK_FREQ_8M 8500000 + +/* With the default value of CK8M_DFREQ, + * 8M clock frequency is 8.5 MHz +/- 7%. + */ + +#define RTC_FAST_CLK_FREQ_APPROX 8500000 + +#define RTC_PLL_FREQ_320M 320 +#define RTC_PLL_FREQ_480M 480 + +#define RTC_SLOW_CLK_FREQ_90K 90000 +#define RTC_SLOW_CLK_FREQ_8MD256 (RTC_FAST_CLK_FREQ_APPROX / 256) +#define RTC_SLOW_CLK_FREQ_32K 32768 + +#define RTC_SLOW_CLK_X32K_CAL_TIMEOUT_THRES(cycles) (cycles << 12) +#define RTC_SLOW_CLK_8MD256_CAL_TIMEOUT_THRES(cycles) (cycles << 12) +#define RTC_SLOW_CLK_150K_CAL_TIMEOUT_THRES(cycles) (cycles << 10) + +/* Number of fractional bits in values returned by rtc_clk_cal */ + +#define RTC_CLK_CAL_FRACT 19 + +/* set sleep_init default param. */ + +#define RTC_CNTL_DBG_ATTEN_LIGHTSLEEP_DEFAULT 3 +#define RTC_CNTL_DBG_ATTEN_DEEPSLEEP_DEFAULT 15 +#define RTC_CNTL_DBG_ATTEN_MONITOR_DEFAULT 0 +#define RTC_CNTL_BIASSLP_MONITOR_DEFAULT 0 +#define RTC_CNTL_BIASSLP_SLEEP_DEFAULT 1 +#define RTC_CNTL_PD_CUR_MONITOR_DEFAULT 0 +#define RTC_CNTL_PD_CUR_SLEEP_DEFAULT 1 +#define RTC_CNTL_DG_VDD_DRV_B_SLP_DEFAULT 254 + +#define RTC_CK8M_ENABLE_WAIT_DEFAULT 5 + +/* Approximate mapping of voltages to RTC_CNTL_DBIAS_WAK, + * RTC_CNTL_DBIAS_SLP, RTC_CNTL_DIG_DBIAS_WAK, + * RTC_CNTL_DIG_DBIAS_SLP values. Valid if RTC_CNTL_DBG_ATTEN is 0. + */ + +#define RTC_CNTL_DBIAS_SLP 0 +#define RTC_CNTL_DBIAS_0V90 13 +#define RTC_CNTL_DBIAS_0V95 16 +#define RTC_CNTL_DBIAS_1V00 18 +#define RTC_CNTL_DBIAS_1V05 20 +#define RTC_CNTL_DBIAS_1V10 23 +#define RTC_CNTL_DBIAS_1V15 25 +#define RTC_CNTL_DBIAS_1V20 28 +#define RTC_CNTL_DBIAS_1V25 30 +#define RTC_CNTL_DBIAS_1V30 31 + +#define DIG_DBIAS_XTAL RTC_CNTL_DBIAS_1V10 +#define DIG_DBIAS_2M RTC_CNTL_DBIAS_1V00 + +#define DIG_DBIAS_80M RTC_CNTL_DBIAS_1V20 +#define DIG_DBIAS_160M RTC_CNTL_DBIAS_1V20 + +/* Default initializer for esp32c3_rtc_sleep_config_s + * This initializer sets all fields to "reasonable" values + * (e.g. suggested for production use) based on a combination + * of RTC_SLEEP_PD_x flags. + */ + +#define RTC_SLEEP_CONFIG_DEFAULT(sleep_flags) { \ + .lslp_mem_inf_fpu = 0, \ + .rtc_mem_inf_follow_cpu = ((sleep_flags) & RTC_SLEEP_PD_RTC_MEM_FOLLOW_CPU) ? 1 : 0, \ + .rtc_fastmem_pd_en = ((sleep_flags) & RTC_SLEEP_PD_RTC_FAST_MEM) ? 1 : 0, \ + .rtc_slowmem_pd_en = ((sleep_flags) & RTC_SLEEP_PD_RTC_SLOW_MEM) ? 1 : 0, \ + .rtc_peri_pd_en = ((sleep_flags) & RTC_SLEEP_PD_RTC_PERIPH) ? 1 : 0, \ + .wifi_pd_en = ((sleep_flags) & RTC_SLEEP_PD_WIFI) ? 1 : 0, \ + .bt_pd_en = ((sleep_flags) & RTC_SLEEP_PD_BT) ? 1 : 0, \ + .cpu_pd_en = ((sleep_flags) & RTC_SLEEP_PD_CPU) ? 1 : 0, \ + .dig_peri_pd_en = ((sleep_flags) & RTC_SLEEP_PD_DIG_PERIPH) ? 1 : 0, \ + .deep_slp = ((sleep_flags) & RTC_SLEEP_PD_DIG) ? 1 : 0, \ + .wdt_flashboot_mod_en = 0, \ + .dig_dbias_wak = RTC_CNTL_DBIAS_1V10, \ + .dig_dbias_slp = RTC_CNTL_DBIAS_SLP, \ + .rtc_dbias_wak = RTC_CNTL_DBIAS_1V10, \ + .rtc_dbias_slp = RTC_CNTL_DBIAS_SLP, \ + .vddsdio_pd_en = ((sleep_flags) & RTC_SLEEP_PD_VDDSDIO) ? 1 : 0, \ + .deep_slp_reject = 1, \ + .light_slp_reject = 1 \ +}; + +#define X32K_CONFIG_DEFAULT() { \ + .dac = 3, \ + .dres = 3, \ + .dgm = 3, \ + .dbuf = 1, \ +} + +/* Initializer for struct esp32c3_rtc_sleep_pu_config_s + * which sets all flags to the same value + */ + +#define RTC_SLEEP_PU_CONFIG_ALL(val) {\ + .dig_fpu = (val), \ + .rtc_fpu = (val), \ + .cpu_fpu = (val), \ + .i2s_fpu = (val), \ + .bb_fpu = (val), \ + .nrx_fpu = (val), \ + .fe_fpu = (val), \ + .sram_fpu = (val), \ + .rom_ram_fpu = (val), \ +} + +#define RTC_INIT_CONFIG_DEFAULT() { \ + .wifi_powerup_cycles = OTHER_BLOCKS_POWERUP, \ + .wifi_wait_cycles = OTHER_BLOCKS_WAIT, \ + .bt_powerup_cycles = OTHER_BLOCKS_POWERUP, \ + .bt_wait_cycles = OTHER_BLOCKS_WAIT, \ + .cpu_top_powerup_cycles = OTHER_BLOCKS_POWERUP, \ + .cpu_top_wait_cycles = OTHER_BLOCKS_WAIT, \ + .dg_wrap_powerup_cycles = OTHER_BLOCKS_POWERUP, \ + .dg_wrap_wait_cycles = OTHER_BLOCKS_WAIT, \ + .dg_peri_powerup_cycles = OTHER_BLOCKS_POWERUP, \ + .dg_peri_wait_cycles = OTHER_BLOCKS_WAIT, \ +} + +/* Default initializer of struct esp32c3_rtc_config_s. + * This initializer sets all fields to "reasonable" values + * (e.g. suggested for production use). + */ + +#define RTC_CONFIG_DEFAULT() {\ + .ck8m_wait = RTC_CNTL_CK8M_WAIT_DEFAULT, \ + .xtal_wait = RTC_CNTL_XTL_BUF_WAIT_DEFAULT, \ + .pll_wait = RTC_CNTL_PLL_BUF_WAIT_DEFAULT, \ + .clkctl_init = 1, \ + .pwrctl_init = 1, \ + .rtc_dboost_fpd = 1, \ + .xtal_fpu = 0, \ + .bbpll_fpu = 0, \ + .cpu_waiti_clk_gate = 1, \ + .cali_ocode = 0\ +} + +/**************************************************************************** + * Private Types + ****************************************************************************/ + +/* This is almost the same as esp32c3_rtc_slow_freq_e, except that we define + * an extra enum member for the external 32k oscillator. For convenience, + * lower 2 bits should correspond to esp32c3_rtc_slow_freq_e values. + */ + +enum esp32c3_slow_clk_sel_e +{ + /* Internal 90 kHz RC oscillator */ + + SLOW_CLK_RTC = RTC_SLOW_FREQ_RTC, + + /* External 32 kHz XTAL */ + + SLOW_CLK_32K_XTAL = RTC_SLOW_FREQ_32K_XTAL, + + /* Internal 8 MHz RC oscillator, divided by 256 */ + + SLOW_CLK_8MD256 = RTC_SLOW_FREQ_8MD256, + + /* External 32k oscillator connected to 32K_XP pin */ + + SLOW_CLK_32K_EXT_OSC = RTC_SLOW_FREQ_32K_XTAL | EXT_OSC_FLAG +}; + +/* RTC FAST_CLK frequency values */ + +enum esp32c3_rtc_fast_freq_e +{ + RTC_FAST_FREQ_XTALD4 = 0, /* Main XTAL, divided by 4 */ + RTC_FAST_FREQ_8M = 1, /* Internal 8 MHz RC oscillator */ +}; + +struct esp32c3_x32k_config_s +{ + uint32_t dac : 6; + uint32_t dres : 3; + uint32_t dgm : 3; + uint32_t dbuf: 1; +}; + +/* Power down flags for rtc_sleep_pd function */ + +struct esp32c3_rtc_sleep_pu_config_s +{ + uint32_t dig_fpu : 1; /* Set to 1 to power UP digital part in sleep */ + uint32_t rtc_fpu : 1; /* Set to 1 to power UP RTC memories in sleep */ + uint32_t cpu_fpu : 1; /* Set to 1 to power UP digital memories and + * CPU in sleep + */ + uint32_t i2s_fpu : 1; /* Set to 1 to power UP I2S in sleep */ + uint32_t bb_fpu : 1; /* Set to 1 to power UP WiFi in sleep */ + uint32_t nrx_fpu : 1; /* Set to 1 to power UP WiFi in sleep */ + uint32_t fe_fpu : 1; /* Set to 1 to power UP WiFi in sleep */ + uint32_t sram_fpu : 1; /* Set to 1 to power UP SRAM in sleep */ + uint32_t rom_ram_fpu : 1; /* Set to 1 to power UP ROM/IRAM0_DRAM0 in sleep */ +}; + +struct esp32c3_rtc_init_config_s +{ + uint16_t wifi_powerup_cycles : 7; + uint16_t wifi_wait_cycles : 9; + uint16_t bt_powerup_cycles : 7; + uint16_t bt_wait_cycles : 9; + uint16_t cpu_top_powerup_cycles : 7; + uint16_t cpu_top_wait_cycles : 9; + uint16_t dg_wrap_powerup_cycles : 7; + uint16_t dg_wrap_wait_cycles : 9; + uint16_t dg_peri_powerup_cycles : 7; + uint16_t dg_peri_wait_cycles : 9; +}; + +/* RTC power and clock control initialization settings */ + +struct esp32c3_rtc_priv_s +{ + uint32_t ck8m_wait : 8; /* Number of rtc_fast_clk cycles to + * wait for 8M clock to be ready + */ + uint32_t xtal_wait : 8; /* Number of rtc_fast_clk cycles to + * wait for XTAL clock to be ready + */ + uint32_t pll_wait : 8; /* Number of rtc_fast_clk cycles to + * wait for PLL to be ready + */ + uint32_t clkctl_init : 1; /* Perform clock control related initialization */ + uint32_t pwrctl_init : 1; /* Perform power control related initialization */ + uint32_t rtc_dboost_fpd : 1; /* Force power down RTC_DBOOST */ + uint32_t xtal_fpu : 1; + uint32_t bbpll_fpu : 1; + uint32_t cpu_waiti_clk_gate : 1; + uint32_t cali_ocode : 1; /* Calibrate Ocode to make bangap voltage more precise. */ +}; + +/* sleep configuration for rtc_sleep_init function */ + +struct esp32c3_rtc_sleep_config_s +{ + uint32_t lslp_mem_inf_fpu : 1; /* force normal voltage in sleep mode */ + uint32_t rtc_mem_inf_follow_cpu : 1; /* keep low voltage in sleep mode */ + uint32_t rtc_fastmem_pd_en : 1; /* power down RTC fast memory */ + uint32_t rtc_slowmem_pd_en : 1; /* power down RTC slow memory */ + uint32_t rtc_peri_pd_en : 1; /* power down RTC peripherals */ + uint32_t wifi_pd_en : 1; /* power down WiFi */ + uint32_t bt_pd_en : 1; /* power down BT */ + uint32_t cpu_pd_en : 1; /* power down CPU, but not + * restart when lightsleep. + */ + uint32_t dig_peri_pd_en : 1; /* power down digital peripherals */ + uint32_t deep_slp : 1; /* power down digital domain */ + uint32_t wdt_flashboot_mod_en : 1; /* enable WDT flashboot mode */ + uint32_t dig_dbias_wak : 5; /* set bias for digital domain, + * in active mode + */ + uint32_t dig_dbias_slp : 5; /* set bias for digital domain, + * in sleep mode + */ + uint32_t rtc_dbias_wak : 5; /* set bias for RTC domain, in active mode */ + uint32_t rtc_dbias_slp : 5; /* set bias for RTC domain, in sleep mode */ + uint32_t vddsdio_pd_en : 1; /* power down VDDSDIO regulator */ + uint32_t deep_slp_reject : 1; + uint32_t light_slp_reject : 1; +}; + +/**************************************************************************** + * Private Function Prototypes + ****************************************************************************/ + +static void IRAM_ATTR esp32c3_rtc_sleep_pu( + struct esp32c3_rtc_sleep_pu_config_s cfg); +static inline bool esp32c3_clk_val_is_valid(uint32_t val); +static uint32_t IRAM_ATTR esp32c3_rtc_clk_cal_internal( + enum esp32c3_rtc_cal_sel_e cal_clk, uint32_t slowclk_cycles); +static void IRAM_ATTR esp32c3_rtc_clk_32k_enable(bool enable); +static void IRAM_ATTR esp32c3_rtc_clk_8m_enable( + bool clk_8m_en, bool d256_en); +static uint32_t IRAM_ATTR esp32c3_rtc_clk_slow_freq_get_hz(void); +static void IRAM_ATTR esp32c3_select_rtc_slow_clk( + enum esp32c3_slow_clk_sel_e slow_clk); +static void IRAM_ATTR esp32c3_rtc_clk_fast_freq_set( + enum esp32c3_rtc_fast_freq_e fast_freq); +static uint32_t IRAM_ATTR esp32c3_rtc_sleep_finish(uint32_t + lslp_mem_inf_fpu); +static void IRAM_ATTR esp32c3_rtc_clk_apb_freq_update(uint32_t apb_freq); +static void IRAM_ATTR esp32c3_wait_dig_dbias_valid(uint64_t rtc_cycles); +static void IRAM_ATTR esp32c3_rtc_update_to_xtal(int freq, int div); +static void IRAM_ATTR esp32c3_rtc_clk_bbpll_disable(void); +static void IRAM_ATTR esp32c3_rtc_clk_set_xtal_wait(void); +static void IRAM_ATTR esp32c3_rtc_bbpll_configure( + enum esp32c3_rtc_xtal_freq_e xtal_freq, int pll_freq); +static void IRAM_ATTR esp32c3_rtc_clk_cpu_freq_to_8m(void); +static void IRAM_ATTR esp32c3_rtc_clk_cpu_freq_to_pll_mhz( + int cpu_freq_mhz); + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/* Pauses execution for us microseconds */ + +extern void esp_rom_delay_us(uint32_t us); + +/* Set the real CPU ticks per us to the ets, so that ets_delay_us + * will be accurate. Call this function when CPU frequency is changed. + */ + +extern void ets_update_cpu_frequency(uint32_t ticks_per_us); + +/**************************************************************************** + * Name: esp32c3_rtc_sleep_pu + * + * Description: + * Configure whether certain peripherals are powered down in deep sleep. + * + * Input Parameters: + * cfg - power down flags as esp32c3_rtc_sleep_pu_config_s structure + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void IRAM_ATTR esp32c3_rtc_sleep_pu( + struct esp32c3_rtc_sleep_pu_config_s cfg) +{ + REG_SET_FIELD(RTC_CNTL_DIG_PWC_REG, + RTC_CNTL_LSLP_MEM_FORCE_PU, cfg.dig_fpu); + REG_SET_FIELD(RTC_CNTL_PWC_REG, RTC_CNTL_FASTMEM_FORCE_LPU, cfg.rtc_fpu); + REG_SET_FIELD(APB_CTRL_FRONT_END_MEM_PD_REG, + APB_CTRL_DC_MEM_FORCE_PU, cfg.fe_fpu); + REG_SET_FIELD(APB_CTRL_FRONT_END_MEM_PD_REG, + APB_CTRL_PBUS_MEM_FORCE_PU, cfg.fe_fpu); + REG_SET_FIELD(APB_CTRL_FRONT_END_MEM_PD_REG, + APB_CTRL_AGC_MEM_FORCE_PU, cfg.fe_fpu); + REG_SET_FIELD(BBPD_CTRL, BB_FFT_FORCE_PU, cfg.bb_fpu); + REG_SET_FIELD(BBPD_CTRL, BB_DC_EST_FORCE_PU, cfg.bb_fpu); + REG_SET_FIELD(NRXPD_CTRL, NRX_RX_ROT_FORCE_PU, cfg.nrx_fpu); + REG_SET_FIELD(NRXPD_CTRL, NRX_VIT_FORCE_PU, cfg.nrx_fpu); + REG_SET_FIELD(NRXPD_CTRL, NRX_DEMAP_FORCE_PU, cfg.nrx_fpu); + REG_SET_FIELD(FE_GEN_CTRL, FE_IQ_EST_FORCE_PU, cfg.fe_fpu); + REG_SET_FIELD(FE2_TX_INTERP_CTRL, FE2_TX_INF_FORCE_PU, cfg.fe_fpu); + if (cfg.sram_fpu) + { + REG_SET_FIELD(APB_CTRL_MEM_POWER_UP_REG, + APB_CTRL_SRAM_POWER_UP, APB_CTRL_SRAM_POWER_UP); + } + else + { + REG_SET_FIELD(APB_CTRL_MEM_POWER_UP_REG, + APB_CTRL_SRAM_POWER_UP, 0); + } + + if (cfg.rom_ram_fpu) + { + REG_SET_FIELD(APB_CTRL_MEM_POWER_UP_REG, + APB_CTRL_ROM_POWER_UP, APB_CTRL_ROM_POWER_UP); + } + else + { + REG_SET_FIELD(APB_CTRL_MEM_POWER_UP_REG, + APB_CTRL_ROM_POWER_UP, 0); + } +} + +/**************************************************************************** + * Name: esp32c3_rtc_clk_fast_freq_set + * + * Description: + * Select source for RTC_FAST_CLK. + * + * Input Parameters: + * fast_freq - Clock source (one of enum esp32c3_rtc_fast_freq_e values) + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void IRAM_ATTR esp32c3_rtc_clk_fast_freq_set( + enum esp32c3_rtc_fast_freq_e fast_freq) +{ + REG_SET_FIELD(RTC_CNTL_CLK_CONF_REG, + RTC_CNTL_FAST_CLK_RTC_SEL, fast_freq); + esp_rom_delay_us(DELAY_FAST_CLK_SWITCH); +} + +/**************************************************************************** + * Name: esp32c3_clk_val_is_valid + * + * Description: + * Values of RTC_XTAL_FREQ_REG and RTC_APB_FREQ_REG are + * stored as two copies in lower and upper 16-bit halves. + * These are the routines to work with such a representation. + * + * Input Parameters: + * val - register value + * + * Returned Value: + * true: Valid register value. + * false: Invalid register value. + * + ****************************************************************************/ + +static inline bool esp32c3_clk_val_is_valid(uint32_t val) +{ + return (val & 0xffff) == ((val >> 16) & 0xffff) + && val != 0 && val != UINT32_MAX; +} + +/**************************************************************************** + * Name: esp32c3_rtc_clk_cal_internal + * + * Description: + * Clock calibration function used by rtc_clk_cal and rtc_clk_cal_ratio + * + * Input Parameters: + * cal_clk - which clock to calibrate + * slowclk_cycles - number of slow clock cycles to count. + * + * Returned Value: + * Number of XTAL clock cycles within the given number of slow clock cycles + * + ****************************************************************************/ + +static uint32_t IRAM_ATTR esp32c3_rtc_clk_cal_internal( + enum esp32c3_rtc_cal_sel_e cal_clk, uint32_t slowclk_cycles) +{ + uint32_t cal_val; + uint32_t expected_freq; + uint32_t us_time_estimate; + int dig_32k_xtal_state; + enum esp32c3_rtc_slow_freq_e slow_freq; + if (cal_clk == RTC_CAL_RTC_MUX) + { + slow_freq = REG_GET_FIELD(RTC_CNTL_CLK_CONF_REG, + RTC_CNTL_ANA_CLK_RTC_SEL); + if (slow_freq == RTC_SLOW_FREQ_32K_XTAL) + { + cal_clk = RTC_CAL_32K_XTAL; + } + else if (slow_freq == RTC_SLOW_FREQ_8MD256) + { + cal_clk = RTC_CAL_8MD256; + } + } + + /* Enable requested clock (150k clock is always on) */ + + dig_32k_xtal_state = REG_GET_FIELD(RTC_CNTL_CLK_CONF_REG, + RTC_CNTL_DIG_XTAL32K_EN); + + if (cal_clk == RTC_CAL_32K_XTAL && !dig_32k_xtal_state) + { + REG_SET_FIELD(RTC_CNTL_CLK_CONF_REG, RTC_CNTL_DIG_XTAL32K_EN, 1); + } + + if (cal_clk == RTC_CAL_8MD256) + { + modifyreg32(RTC_CNTL_CLK_CONF_REG, 0, RTC_CNTL_DIG_CLK8M_D256_EN); + } + + /* Prepare calibration */ + + REG_SET_FIELD(TIMG_RTCCALICFG_REG(0), TIMG_RTC_CALI_CLK_SEL, cal_clk); + + /* There may be another calibration process already running during we + * call this function, so we should wait the last process is done. + */ + + if ((getreg32(TIMG_RTCCALICFG2_REG(0)) & TIMG_RTC_CALI_TIMEOUT) == 0) + { + if (getreg32(TIMG_RTCCALICFG_REG(0)) & TIMG_RTC_CALI_START_CYCLING) + { + while ((getreg32(TIMG_RTCCALICFG_REG(0)) & + TIMG_RTC_CALI_RDY) == 0); + } + } + + modifyreg32(TIMG_RTCCALICFG_REG(0), TIMG_RTC_CALI_START_CYCLING, 0); + REG_SET_FIELD(TIMG_RTCCALICFG_REG(0), TIMG_RTC_CALI_MAX, slowclk_cycles); + + /* Set timeout reg and expect time delay */ + + if (cal_clk == RTC_CAL_32K_XTAL) + { + REG_SET_FIELD(TIMG_RTCCALICFG2_REG(0), TIMG_RTC_CALI_TIMEOUT_THRES, + RTC_SLOW_CLK_X32K_CAL_TIMEOUT_THRES(slowclk_cycles)); + expected_freq = RTC_SLOW_CLK_FREQ_32K; + } + else if (cal_clk == RTC_CAL_8MD256) + { + REG_SET_FIELD(TIMG_RTCCALICFG2_REG(0), TIMG_RTC_CALI_TIMEOUT_THRES, + RTC_SLOW_CLK_8MD256_CAL_TIMEOUT_THRES(slowclk_cycles)); + expected_freq = RTC_SLOW_CLK_FREQ_8MD256; + } + else + { + REG_SET_FIELD(TIMG_RTCCALICFG2_REG(0), TIMG_RTC_CALI_TIMEOUT_THRES, + RTC_SLOW_CLK_150K_CAL_TIMEOUT_THRES(slowclk_cycles)); + expected_freq = RTC_SLOW_CLK_FREQ_90K; + } + + us_time_estimate = (uint32_t) (((uint64_t) slowclk_cycles) * + MHZ / expected_freq); + + /* Start calibration */ + + modifyreg32(TIMG_RTCCALICFG_REG(0), TIMG_RTC_CALI_START, 0); + modifyreg32(TIMG_RTCCALICFG_REG(0), 0, TIMG_RTC_CALI_START); + + /* Wait for calibration to finish up to another us_time_estimate */ + + esp_rom_delay_us(us_time_estimate); + while (1) + { + if (getreg32(TIMG_RTCCALICFG_REG(0)) & TIMG_RTC_CALI_RDY) + { + cal_val = REG_GET_FIELD(TIMG_RTCCALICFG1_REG(0), + TIMG_RTC_CALI_VALUE); + break; + } + + if (getreg32(TIMG_RTCCALICFG2_REG(0)) & TIMG_RTC_CALI_TIMEOUT) + { + cal_val = 0; + break; + } + } + + modifyreg32(TIMG_RTCCALICFG_REG(0), TIMG_RTC_CALI_START, 0); + REG_SET_FIELD(RTC_CNTL_CLK_CONF_REG, + RTC_CNTL_DIG_XTAL32K_EN, dig_32k_xtal_state); + if (cal_clk == RTC_CAL_8MD256) + { + modifyreg32(RTC_CNTL_CLK_CONF_REG, RTC_CNTL_DIG_CLK8M_D256_EN, 0); + } + + return cal_val; +} + +/**************************************************************************** + * Name: esp32c3_rtc_clk_32k_enable + * + * Description: + * Enable or disable 32 kHz XTAL oscillator + * + * Input Parameters: + * enable - true to enable, false to disable + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void IRAM_ATTR esp32c3_rtc_clk_32k_enable(bool enable) +{ + struct esp32c3_x32k_config_s cfg = X32K_CONFIG_DEFAULT(); + if (enable) + { + REG_SET_FIELD(RTC_CNTL_EXT_XTL_CONF_REG, + RTC_CNTL_DAC_XTAL_32K, cfg.dac); + REG_SET_FIELD(RTC_CNTL_EXT_XTL_CONF_REG, + RTC_CNTL_DRES_XTAL_32K, cfg.dres); + REG_SET_FIELD(RTC_CNTL_EXT_XTL_CONF_REG, + RTC_CNTL_DGM_XTAL_32K, cfg.dgm); + REG_SET_FIELD(RTC_CNTL_EXT_XTL_CONF_REG, + RTC_CNTL_DBUF_XTAL_32K, cfg.dbuf); + modifyreg32(RTC_CNTL_EXT_XTL_CONF_REG, 0, + RTC_CNTL_XPD_XTAL_32K); + } + else + { + modifyreg32(RTC_CNTL_EXT_XTL_CONF_REG, RTC_CNTL_XPD_XTAL_32K, + RTC_CNTL_XTAL32K_XPD_FORCE); + } +} + +/**************************************************************************** + * Name: esp32c3_rtc_clk_8m_enable + * + * Description: + * Enable or disable 8 MHz internal oscillator + * + * Input Parameters: + * clk_8m_en - true to enable 8MHz generator, false to disable + * d256_en - true to enable /256 divider, false to disable + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void IRAM_ATTR esp32c3_rtc_clk_8m_enable(bool clk_8m_en, bool d256_en) +{ + if (clk_8m_en) + { + modifyreg32(RTC_CNTL_CLK_CONF_REG, RTC_CNTL_ENB_CK8M, 0); + + /* no need to wait once enabled by software */ + + REG_SET_FIELD(RTC_CNTL_TIMER1_REG, RTC_CNTL_CK8M_WAIT, + RTC_CK8M_ENABLE_WAIT_DEFAULT); + esp_rom_delay_us(DELAY_8M_ENABLE); + } + else + { + modifyreg32(RTC_CNTL_CLK_CONF_REG, 0, RTC_CNTL_ENB_CK8M); + REG_SET_FIELD(RTC_CNTL_TIMER1_REG, RTC_CNTL_CK8M_WAIT, + RTC_CNTL_CK8M_WAIT_DEFAULT); + } + + /* d256 should be independent configured with 8M + * Maybe we can split this function into 8m and dmd256 + */ + + if (d256_en) + { + modifyreg32(RTC_CNTL_CLK_CONF_REG, RTC_CNTL_ENB_CK8M_DIV, 0); + } + else + { + modifyreg32(RTC_CNTL_CLK_CONF_REG, 0, RTC_CNTL_ENB_CK8M_DIV); + } +} + +/**************************************************************************** + * Name: esp32c3_rtc_clk_slow_freq_get_hz + * + * Description: + * Get the approximate frequency of RTC_SLOW_CLK, in Hz + * + * Input Parameters: + * None + * + * Returned Value: + * slow_clk_freq - RTC_SLOW_CLK frequency, in Hz + * + ****************************************************************************/ + +static uint32_t IRAM_ATTR esp32c3_rtc_clk_slow_freq_get_hz(void) +{ + enum esp32c3_rtc_slow_freq_e slow_clk_freq = + esp32c3_rtc_clk_slow_freq_get(); + switch (slow_clk_freq) + { + case RTC_SLOW_FREQ_RTC: + return RTC_SLOW_CLK_FREQ_90K; + + case RTC_SLOW_FREQ_32K_XTAL: + return RTC_SLOW_CLK_FREQ_32K; + + case RTC_SLOW_FREQ_8MD256: + return RTC_SLOW_CLK_FREQ_8MD256; + } + + return 0; +} + +/**************************************************************************** + * Name: esp32c3_select_rtc_slow_clk + * + * Description: + * Selects an clock source for RTC. + * + * Input Parameters: + * slow_clk - RTC SLOW_CLK frequency values + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void IRAM_ATTR esp32c3_select_rtc_slow_clk( + enum esp32c3_slow_clk_sel_e slow_clk) +{ + uint32_t cal_val = 0; + int retry_32k_xtal = 3; + uint64_t cal_dividend; + enum esp32c3_rtc_slow_freq_e rtc_slow_freq = slow_clk & + RTC_CNTL_ANA_CLK_RTC_SEL_V; + do + { + if (rtc_slow_freq == RTC_SLOW_FREQ_32K_XTAL) + { + /* 32k XTAL oscillator needs to be enabled and running before + * it can be used. Hardware doesn't have a direct way of checking + * if the oscillator is running. Here we use rtc_clk_cal function + * to count the number of main XTAL cycles in the given number of + * 32k XTAL oscillator cycles. If the 32k XTAL has not started up, + * calibration will time out, returning 0. + */ + + if (slow_clk == SLOW_CLK_32K_XTAL || + slow_clk == SLOW_CLK_32K_EXT_OSC) + { + esp32c3_rtc_clk_32k_enable(true); + } + + if (SLOW_CLK_CAL_CYCLES > 0) + { + cal_val = esp32c3_rtc_clk_cal(RTC_CAL_32K_XTAL, + SLOW_CLK_CAL_CYCLES); + if (cal_val == 0 || cal_val < MIN_32K_XTAL_CAL_VAL) + { + if (retry_32k_xtal-- > 0) + { + continue; + } + + rtc_slow_freq = RTC_SLOW_FREQ_RTC; + } + } + } + else if (rtc_slow_freq == RTC_SLOW_FREQ_8MD256) + { + esp32c3_rtc_clk_8m_enable(true, true); + } + + esp32c3_rtc_clk_slow_freq_set(rtc_slow_freq); + if (SLOW_CLK_CAL_CYCLES > 0) + { + /* 32k XTAL oscillator has some frequency drift at startup. Improve + * calibration routine to wait until the frequency is stable. + */ + + cal_val = esp32c3_rtc_clk_cal(RTC_CAL_RTC_MUX, + SLOW_CLK_CAL_CYCLES); + } + else + { + cal_dividend = (1ULL << RTC_CLK_CAL_FRACT) * 1000000ULL; + cal_val = (uint32_t) (cal_dividend / + esp32c3_rtc_clk_slow_freq_get_hz()); + } + } + while (cal_val == 0); + + putreg32((uint32_t)cal_val, RTC_SLOW_CLK_CAL_REG); +} + +/**************************************************************************** + * Name: esp32c3_rtc_sleep_finish + * + * Description: + * Wake up from sleep. + * + * Input Parameters: + * lslp_mem_inf_fpu - If non-zero then the low power config + * is restored immediately on wake + * + * Returned Value: + * non-zero if sleep was rejected by hardware + * + ****************************************************************************/ + +static uint32_t IRAM_ATTR esp32c3_rtc_sleep_finish(uint32_t lslp_mem_inf_fpu) +{ + uint32_t reject; + struct esp32c3_rtc_sleep_pu_config_s pu_cfg = RTC_SLEEP_PU_CONFIG_ALL(1); + + /* In deep sleep mode, we never get here */ + + reject = REG_GET_FIELD(RTC_CNTL_INT_RAW_REG, RTC_CNTL_SLP_REJECT_INT_RAW); + modifyreg32(RTC_CNTL_INT_CLR_REG, 0, + RTC_CNTL_SLP_REJECT_INT_CLR | RTC_CNTL_SLP_WAKEUP_INT_CLR); + + /* restore config if it is a light sleep */ + + if (lslp_mem_inf_fpu) + { + esp32c3_rtc_sleep_pu(pu_cfg); + } + + return reject; +} + +/**************************************************************************** + * Name: esp32c3_rtc_clk_apb_freq_update + * + * Description: + * Store new APB frequency value into RTC_APB_FREQ_REG + * + * Input Parameters: + * apb_freq - New APB frequency, in Hz + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void IRAM_ATTR esp32c3_rtc_clk_apb_freq_update(uint32_t apb_freq) +{ + uint32_t val = ((apb_freq >> 12) & UINT16_MAX) | + (((apb_freq >> 12) & UINT16_MAX) << 16); + putreg32(val, RTC_APB_FREQ_REG); +} + +/**************************************************************************** + * Name: esp32c3_wait_dig_dbias_valid + * + * Description: + * Wait digtial dbias valid + * + * Input Parameters: + * rtc_cycles - RTC count + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void IRAM_ATTR esp32c3_wait_dig_dbias_valid(uint64_t rtc_cycles) +{ + enum esp32c3_rtc_slow_freq_e slow_clk_freq = + esp32c3_rtc_clk_slow_freq_get(); + enum esp32c3_rtc_cal_sel_e cal_clk = RTC_CAL_RTC_MUX; + if (slow_clk_freq == RTC_SLOW_FREQ_32K_XTAL) + { + cal_clk = RTC_CAL_32K_XTAL; + } + else if (slow_clk_freq == RTC_SLOW_FREQ_8MD256) + { + cal_clk = RTC_CAL_8MD256; + } + + esp32c3_rtc_clk_cal(cal_clk, rtc_cycles); +} + +/**************************************************************************** + * Name: esp32c3_rtc_update_to_xtal + * + * Description: + * Switch to XTAL frequency, does not disable the PLL + * + * Input Parameters: + * freq - XTAL frequency + * div - REF_TICK divider + * + * Returned Value: + * none + * + ****************************************************************************/ + +static void IRAM_ATTR esp32c3_rtc_update_to_xtal(int freq, int div) +{ + int origin_soc_clk = REG_GET_FIELD(SYSTEM_SYSCLK_CONF_REG, + SYSTEM_SOC_CLK_SEL); + int origin_div_cnt = REG_GET_FIELD(SYSTEM_SYSCLK_CONF_REG, + SYSTEM_PRE_DIV_CNT); + ets_update_cpu_frequency(freq); + + /* lower the voltage */ + + if (freq <= 2) + { + REGI2C_WRITE_MASK(I2C_DIG_REG, + I2C_DIG_REG_EXT_DIG_DREG, DIG_DBIAS_2M); + } + else + { + REGI2C_WRITE_MASK(I2C_DIG_REG, + I2C_DIG_REG_EXT_DIG_DREG, DIG_DBIAS_XTAL); + } + + if ((DPORT_SOC_CLK_SEL_XTAL == origin_soc_clk) + && (origin_div_cnt > 0)) + { + esp32c3_wait_dig_dbias_valid(2); + } + + /* Set divider from XTAL to APB clock. + * Need to set divider to 1 (reg. value 0) first. + */ + + REG_SET_FIELD(SYSTEM_SYSCLK_CONF_REG, SYSTEM_PRE_DIV_CNT, 0); + REG_SET_FIELD(SYSTEM_SYSCLK_CONF_REG, SYSTEM_PRE_DIV_CNT, div - 1); + + /* No need to adjust the REF_TICK. + * Switch clock source. + */ + + REG_SET_FIELD(SYSTEM_SYSCLK_CONF_REG, + SYSTEM_SOC_CLK_SEL, DPORT_SOC_CLK_SEL_XTAL); + esp32c3_rtc_clk_apb_freq_update(freq * MHZ); +} + +/**************************************************************************** + * Name: esp32c3_rtc_clk_bbpll_disable + * + * Description: + * disable BBPLL. + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void IRAM_ATTR esp32c3_rtc_clk_bbpll_disable(void) +{ + modifyreg32(RTC_CNTL_OPTIONS0_REG, 0, RTC_CNTL_BB_I2C_FORCE_PD | + RTC_CNTL_BBPLL_FORCE_PD | RTC_CNTL_BBPLL_I2C_FORCE_PD); +} + +/**************************************************************************** + * Name: esp32c3_rtc_clk_set_xtal_wait + * + * Description: + * Set XTAL wait cycles by RTC slow clock's period + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void IRAM_ATTR esp32c3_rtc_clk_set_xtal_wait(void) +{ + uint32_t slow_clk_period; + + /* the `xtal_wait` time need 1ms, so we need calibrate slow clk period, + * and `RTC_CNTL_XTL_BUF_WAIT` depend on it. + */ + + uint32_t xtal_wait_1ms = 100; + enum esp32c3_rtc_slow_freq_e slow_clk_freq = + esp32c3_rtc_clk_slow_freq_get(); + enum esp32c3_rtc_cal_sel_e cal_clk = RTC_CAL_RTC_MUX; + if (slow_clk_freq == RTC_SLOW_FREQ_32K_XTAL) + { + cal_clk = RTC_CAL_32K_XTAL; + } + else if (slow_clk_freq == RTC_SLOW_FREQ_8MD256) + { + cal_clk = RTC_CAL_8MD256; + } + + slow_clk_period = esp32c3_rtc_clk_cal(cal_clk, 2000); + if (slow_clk_period) + { + xtal_wait_1ms = (1000 << RTC_CLK_CAL_FRACT) / slow_clk_period; + } + + REG_SET_FIELD(RTC_CNTL_TIMER1_REG, RTC_CNTL_XTL_BUF_WAIT, xtal_wait_1ms); +} + +/**************************************************************************** + * Name: esp32c3_rtc_bbpll_configure + * + * Description: + * Configure main XTAL frequency values according to pll_freq. + * + * Input Parameters: + * xtal_freq - XTAL frequency values + * pll_freq - PLL frequency values + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void IRAM_ATTR esp32c3_rtc_bbpll_configure( + enum esp32c3_rtc_xtal_freq_e xtal_freq, int pll_freq) +{ + uint8_t div_ref; + uint8_t div7_0; + uint8_t dr1; + uint8_t dr3; + uint8_t dchgp; + uint8_t dcur; + uint8_t dbias; + uint8_t i2c_bbpll_lref; + uint8_t i2c_bbpll_div_7_0; + uint8_t i2c_bbpll_dcur; + + modifyreg32(I2C_MST_ANA_CONF0_REG, + I2C_MST_BBPLL_STOP_FORCE_HIGH, 0); + modifyreg32(I2C_MST_ANA_CONF0_REG, 0, I2C_MST_BBPLL_STOP_FORCE_LOW); + if (pll_freq == RTC_PLL_FREQ_480M) + { + /* Set this register to let the digital part know 480M PLL is used */ + + modifyreg32(SYSTEM_CPU_PER_CONF_REG, 0, SYSTEM_PLL_FREQ_SEL); + + /* Configure 480M PLL */ + + switch (xtal_freq) + { + case RTC_XTAL_FREQ_40M: + { + div_ref = 0; + div7_0 = 8; + dr1 = 0; + dr3 = 0; + dchgp = 5; + dcur = 3; + dbias = 2; + } + break; + + case RTC_XTAL_FREQ_32M: + { + div_ref = 1; + div7_0 = 26; + dr1 = 1; + dr3 = 1; + dchgp = 4; + dcur = 0; + dbias = 2; + } + break; + + default: + { + div_ref = 0; + div7_0 = 8; + dr1 = 0; + dr3 = 0; + dchgp = 5; + dcur = 3; + dbias = 2; + } + break; + } + + REGI2C_WRITE(I2C_BBPLL, I2C_BBPLL_MODE_HF, 0x6b); + } + else + { + /* Clear this register to let the digital part know 320M PLL is used */ + + modifyreg32(SYSTEM_CPU_PER_CONF_REG, SYSTEM_PLL_FREQ_SEL, 0); + + /* Configure 320M PLL */ + + switch (xtal_freq) + { + case RTC_XTAL_FREQ_40M: + { + div_ref = 0; + div7_0 = 4; + dr1 = 0; + dr3 = 0; + dchgp = 5; + dcur = 3; + dbias = 2; + } + break; + + case RTC_XTAL_FREQ_32M: + { + div_ref = 1; + div7_0 = 6; + dr1 = 0; + dr3 = 0; + dchgp = 5; + dcur = 3; + dbias = 2; + } + break; + + default: + { + div_ref = 0; + div7_0 = 4; + dr1 = 0; + dr3 = 0; + dchgp = 5; + dcur = 3; + dbias = 2; + } + break; + } + + REGI2C_WRITE(I2C_BBPLL, I2C_BBPLL_MODE_HF, 0x69); + } + + i2c_bbpll_lref = (dchgp << I2C_BBPLL_OC_DCHGP_LSB) | (div_ref); + i2c_bbpll_div_7_0 = div7_0; + i2c_bbpll_dcur = (2 << I2C_BBPLL_OC_DLREF_SEL_LSB) + | (1 << I2C_BBPLL_OC_DHREF_SEL_LSB) | dcur; + REGI2C_WRITE(I2C_BBPLL, I2C_BBPLL_OC_REF_DIV, i2c_bbpll_lref); + REGI2C_WRITE(I2C_BBPLL, I2C_BBPLL_OC_DIV_7_0, i2c_bbpll_div_7_0); + REGI2C_WRITE_MASK(I2C_BBPLL, I2C_BBPLL_OC_DR1, dr1); + REGI2C_WRITE_MASK(I2C_BBPLL, I2C_BBPLL_OC_DR3, dr3); + REGI2C_WRITE(I2C_BBPLL, I2C_BBPLL_OC_DCUR, i2c_bbpll_dcur); + REGI2C_WRITE_MASK(I2C_BBPLL, I2C_BBPLL_OC_VCO_DBIAS, dbias); +} + +/**************************************************************************** + * Name: esp32c3_rtc_clk_cpu_freq_to_8m + * + * Description: + * Switch CPU frequency to 8 Mhz. + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void IRAM_ATTR esp32c3_rtc_clk_cpu_freq_to_8m(void) +{ + int origin_soc_clk = REG_GET_FIELD(SYSTEM_SYSCLK_CONF_REG, + SYSTEM_SOC_CLK_SEL); + int origin_div_cnt = REG_GET_FIELD(SYSTEM_SYSCLK_CONF_REG, + SYSTEM_PRE_DIV_CNT); + ets_update_cpu_frequency(8); + REGI2C_WRITE_MASK(I2C_DIG_REG, I2C_DIG_REG_EXT_DIG_DREG, + DIG_DBIAS_XTAL); + if ((DPORT_SOC_CLK_SEL_XTAL == origin_soc_clk) + && (origin_div_cnt > 4)) + { + esp32c3_wait_dig_dbias_valid(2); + } + + REG_SET_FIELD(SYSTEM_SYSCLK_CONF_REG, SYSTEM_PRE_DIV_CNT, 0); + REG_SET_FIELD(SYSTEM_SYSCLK_CONF_REG, SYSTEM_SOC_CLK_SEL, + DPORT_SOC_CLK_SEL_8M); + esp32c3_rtc_clk_apb_freq_update(RTC_FAST_CLK_FREQ_8M); +} + +/**************************************************************************** + * Name: esp32c3_rtc_clk_cpu_freq_to_pll_mhz + * + * Description: + * Switch to one of PLL-based frequencies. + * + * Input Parameters: + * cpu_freq_mhz - CPU frequency + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void IRAM_ATTR esp32c3_rtc_clk_cpu_freq_to_pll_mhz( + int cpu_freq_mhz) +{ + int origin_soc_clk = REG_GET_FIELD(SYSTEM_SYSCLK_CONF_REG, + SYSTEM_SOC_CLK_SEL); + int origin_cpuperiod_sel = REG_GET_FIELD(SYSTEM_CPU_PER_CONF_REG, + SYSTEM_CPUPERIOD_SEL); + int dbias = DIG_DBIAS_80M; + int per_conf = DPORT_CPUPERIOD_SEL_80; + if (cpu_freq_mhz == 160) + { + dbias = DIG_DBIAS_160M; + per_conf = DPORT_CPUPERIOD_SEL_160; + } + else + { + ASSERT(cpu_freq_mhz != 80); + } + + REGI2C_WRITE_MASK(I2C_DIG_REG, I2C_DIG_REG_EXT_DIG_DREG, dbias); + if ((origin_soc_clk == DPORT_SOC_CLK_SEL_XTAL) + || (origin_soc_clk == DPORT_SOC_CLK_SEL_8M) + || (((origin_soc_clk == DPORT_SOC_CLK_SEL_PLL) + && (0 == origin_cpuperiod_sel)))) + { + esp32c3_wait_dig_dbias_valid(2); + } + + REG_SET_FIELD(SYSTEM_CPU_PER_CONF_REG, SYSTEM_CPUPERIOD_SEL, per_conf); + REG_SET_FIELD(SYSTEM_SYSCLK_CONF_REG, SYSTEM_PRE_DIV_CNT, 0); + REG_SET_FIELD(SYSTEM_SYSCLK_CONF_REG, SYSTEM_SOC_CLK_SEL, + DPORT_SOC_CLK_SEL_PLL); + esp32c3_rtc_clk_apb_freq_update(80 * MHZ); + ets_update_cpu_frequency(cpu_freq_mhz); +} + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: esp32c3_rtc_clk_xtal_freq_get + * + * Description: + * Get main XTAL frequency + * + * Input Parameters: + * None + * + * Returned Value: + * XTAL frequency (one of enum esp32c3_rtc_xtal_freq_e values) + * + ****************************************************************************/ + +enum esp32c3_rtc_xtal_freq_e IRAM_ATTR + esp32c3_rtc_clk_xtal_freq_get(void) +{ + /* We may have already written XTAL value into RTC_XTAL_FREQ_REG */ + + uint32_t xtal_freq_reg = getreg32(RTC_XTAL_FREQ_REG); + if (!esp32c3_clk_val_is_valid(xtal_freq_reg)) + { + return RTC_XTAL_FREQ_40M; + } + + return (xtal_freq_reg & UINT16_MAX); +} + +/**************************************************************************** + * Name: esp32c3_rtc_clk_slow_freq_set + * + * Description: + * Select source for RTC_SLOW_CLK + * + * Input Parameters: + * slow_freq - clock source (one of esp32c3_rtc_slow_freq_e values) + * + * Returned Value: + * None + * + ****************************************************************************/ + +void IRAM_ATTR esp32c3_rtc_clk_slow_freq_set( + enum esp32c3_rtc_slow_freq_e slow_freq) +{ + REG_SET_FIELD(RTC_CNTL_CLK_CONF_REG, RTC_CNTL_ANA_CLK_RTC_SEL, slow_freq); + + /* Why we need to connect this clock to digital? Or maybe this clock + * should be connected to digital when xtal 32k clock is enabled instead? + */ + + REG_SET_FIELD(RTC_CNTL_CLK_CONF_REG, RTC_CNTL_DIG_XTAL32K_EN, + (slow_freq == RTC_SLOW_FREQ_32K_XTAL) ? 1 : 0); + + /* The clk_8m_d256 will be closed when rtc_state in SLEEP, + * so if the slow_clk is 8md256, clk_8m must be force power on + */ + + REG_SET_FIELD(RTC_CNTL_CLK_CONF_REG, RTC_CNTL_CK8M_FORCE_PU, + (slow_freq == RTC_SLOW_FREQ_8MD256) ? 1 : 0); + esp32c3_rtc_clk_set_xtal_wait(); + esp_rom_delay_us(DELAY_SLOW_CLK_SWITCH); +} + +/**************************************************************************** + * Name: esp32c3_rtc_clk_slow_freq_get + * + * Description: + * Get the RTC_SLOW_CLK source + * + * Input Parameters: + * None + * + * Returned Value: + * Currently selected clock source + * (one of enum esp32c3_rtc_slow_freq_e values) + * + ****************************************************************************/ + +enum esp32c3_rtc_slow_freq_e IRAM_ATTR esp32c3_rtc_clk_slow_freq_get(void) +{ + return REG_GET_FIELD(RTC_CNTL_CLK_CONF_REG, RTC_CNTL_ANA_CLK_RTC_SEL); +} + +/**************************************************************************** + * Name: esp32c3_rtc_clk_cal + * + * Description: + * Measure RTC slow clock's period, based on main XTAL frequency + * + * Input Parameters: + * cal_clk - clock to be measured + * slowclk_cycles - number of slow clock cycles to average + * + * Returned Value: + * Average slow clock period in microseconds, Q13.19 fixed point format + * or 0 if calibration has timed out + * + ****************************************************************************/ + +uint32_t IRAM_ATTR esp32c3_rtc_clk_cal(enum esp32c3_rtc_cal_sel_e cal_clk, + uint32_t slowclk_cycles) +{ + enum esp32c3_rtc_xtal_freq_e xtal_freq; + uint64_t xtal_cycles; + uint64_t divider; + uint64_t period_64; + uint32_t period; + + xtal_freq = esp32c3_rtc_clk_xtal_freq_get(); + xtal_cycles = esp32c3_rtc_clk_cal_internal(cal_clk, slowclk_cycles); + divider = ((uint64_t)xtal_freq) * slowclk_cycles; + period_64 = ((xtal_cycles << RTC_CLK_CAL_FRACT) + divider / 2 - 1) + / divider; + period = (uint32_t)(period_64 & UINT32_MAX); + + return period; +} + +/**************************************************************************** + * Name: esp32c3_rtc_clk_set + * + * Description: + * Set RTC CLK frequency. + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +void esp32c3_rtc_clk_set() +{ + esp32c3_rtc_clk_fast_freq_set(RTC_FAST_FREQ_8M); + esp32c3_select_rtc_slow_clk(RTC_SLOW_FREQ_RTC); +} + +/**************************************************************************** + * Name: esp32c3_rtc_init + * + * Description: + * Initialize RTC clock and power control related functions. + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +void IRAM_ATTR esp32c3_rtc_init() +{ + struct esp32c3_rtc_priv_s cfg = RTC_CONFIG_DEFAULT(); + struct esp32c3_rtc_init_config_s rtc_init_cfg = RTC_INIT_CONFIG_DEFAULT(); + + /* If this pd_cfg is set to 1, all memory won't + * enter low power mode during light sleep. + * If this pd_cfg is set to 0, all memory will + * enter low power mode during light sleep + */ + + struct esp32c3_rtc_sleep_pu_config_s pu_cfg = RTC_SLEEP_PU_CONFIG_ALL(0); + REGI2C_WRITE_MASK(I2C_DIG_REG, I2C_DIG_REG_XPD_DIG_REG, 0); + REGI2C_WRITE_MASK(I2C_DIG_REG, I2C_DIG_REG_XPD_RTC_REG, 0); + modifyreg32(RTC_CNTL_ANA_CONF_REG, RTC_CNTL_PVTMON_PU, 0); + esp32c3_rtc_clk_set_xtal_wait(); + REG_SET_FIELD(RTC_CNTL_TIMER1_REG, RTC_CNTL_PLL_BUF_WAIT, cfg.pll_wait); + REG_SET_FIELD(RTC_CNTL_TIMER1_REG, RTC_CNTL_CK8M_WAIT, cfg.ck8m_wait); + REG_SET_FIELD(RTC_CNTL_TIMER5_REG, RTC_CNTL_MIN_SLP_VAL, + RTC_CNTL_MIN_SLP_VAL_MIN); + + /* set default powerup & wait time */ + + REG_SET_FIELD(RTC_CNTL_TIMER3_REG, RTC_CNTL_WIFI_POWERUP_TIMER, + rtc_init_cfg.wifi_powerup_cycles); + REG_SET_FIELD(RTC_CNTL_TIMER3_REG, RTC_CNTL_WIFI_WAIT_TIMER, + rtc_init_cfg.wifi_wait_cycles); + REG_SET_FIELD(RTC_CNTL_TIMER3_REG, RTC_CNTL_BT_POWERUP_TIMER, + rtc_init_cfg.bt_powerup_cycles); + REG_SET_FIELD(RTC_CNTL_TIMER3_REG, RTC_CNTL_BT_WAIT_TIMER, + rtc_init_cfg.bt_wait_cycles); + REG_SET_FIELD(RTC_CNTL_TIMER4_REG, RTC_CNTL_CPU_TOP_POWERUP_TIMER, + rtc_init_cfg.cpu_top_powerup_cycles); + REG_SET_FIELD(RTC_CNTL_TIMER4_REG, RTC_CNTL_CPU_TOP_WAIT_TIMER, + rtc_init_cfg.cpu_top_wait_cycles); + REG_SET_FIELD(RTC_CNTL_TIMER4_REG, RTC_CNTL_DG_WRAP_POWERUP_TIMER, + rtc_init_cfg.dg_wrap_powerup_cycles); + REG_SET_FIELD(RTC_CNTL_TIMER4_REG, RTC_CNTL_DG_WRAP_WAIT_TIMER, + rtc_init_cfg.dg_wrap_wait_cycles); + REG_SET_FIELD(RTC_CNTL_TIMER6_REG, RTC_CNTL_DG_PERI_POWERUP_TIMER, + rtc_init_cfg.dg_peri_powerup_cycles); + REG_SET_FIELD(RTC_CNTL_TIMER6_REG, RTC_CNTL_DG_PERI_WAIT_TIMER, + rtc_init_cfg.dg_peri_wait_cycles); + + /* Reset RTC bias to default value (needed if waking up from deep sleep) */ + + REGI2C_WRITE_MASK(I2C_DIG_REG, I2C_DIG_REG_EXT_RTC_DREG_SLEEP, + RTC_CNTL_DBIAS_1V10); + REGI2C_WRITE_MASK(I2C_DIG_REG, I2C_DIG_REG_EXT_RTC_DREG, + RTC_CNTL_DBIAS_1V10); + if (cfg.clkctl_init) + { + /* clear CMMU clock force on */ + + modifyreg32(EXTMEM_CACHE_MMU_POWER_CTRL_REG, + EXTMEM_CACHE_MMU_MEM_FORCE_ON, 0); + + /* clear tag clock force on */ + + modifyreg32(EXTMEM_ICACHE_TAG_POWER_CTRL_REG, + EXTMEM_ICACHE_TAG_MEM_FORCE_ON, 0); + + /* clear register clock force on */ + + modifyreg32(SPI_MEM_CLOCK_GATE_REG(0), SPI_MEM_CLK_EN, 0); + modifyreg32(SPI_MEM_CLOCK_GATE_REG(1), SPI_MEM_CLK_EN, 0); + } + + if (cfg.pwrctl_init) + { + modifyreg32(RTC_CNTL_CLK_CONF_REG, RTC_CNTL_CK8M_FORCE_PU, 0); + + /* cancel xtal force pu if no need to force power up + * cannot cancel xtal force pu if pll is force power on + */ + + if (!(cfg.xtal_fpu | cfg.bbpll_fpu)) + { + modifyreg32(RTC_CNTL_OPTIONS0_REG, RTC_CNTL_XTL_FORCE_PU, 0); + } + else + { + modifyreg32(RTC_CNTL_OPTIONS0_REG, 0, RTC_CNTL_XTL_FORCE_PU); + } + + /* force pd APLL */ + + modifyreg32(RTC_CNTL_ANA_CONF_REG, RTC_CNTL_PLLA_FORCE_PU, 0); + modifyreg32(RTC_CNTL_ANA_CONF_REG, 0, RTC_CNTL_PLLA_FORCE_PD); + + /* open sar_i2c protect function to avoid sar_i2c + * reset when rtc_ldo is low. + */ + + modifyreg32(RTC_CNTL_ANA_CONF_REG, RTC_CNTL_I2C_RESET_POR_FORCE_PD, 0); + + /* cancel bbpll force pu if setting no force power up */ + + if (!cfg.bbpll_fpu) + { + modifyreg32(RTC_CNTL_OPTIONS0_REG, RTC_CNTL_BBPLL_FORCE_PU | + RTC_CNTL_BBPLL_I2C_FORCE_PU | RTC_CNTL_BB_I2C_FORCE_PU, 0); + } + else + { + modifyreg32(RTC_CNTL_OPTIONS0_REG, 0, RTC_CNTL_BBPLL_FORCE_PU | + RTC_CNTL_BBPLL_I2C_FORCE_PU | RTC_CNTL_BB_I2C_FORCE_PU); + } + + modifyreg32(RTC_CNTL_REG, RTC_CNTL_REGULATOR_FORCE_PU | + RTC_CNTL_DBOOST_FORCE_PU, 0); + if (cfg.rtc_dboost_fpd) + { + modifyreg32(RTC_CNTL_REG, 0, RTC_CNTL_DBOOST_FORCE_PD); + } + else + { + modifyreg32(RTC_CNTL_REG, RTC_CNTL_DBOOST_FORCE_PD, 0); + } + + /* If this mask is enabled, all soc memories + * cannot enter power down mode. + * We should control soc memory power down mode from RTC, + * so we will not touch this register any more. + */ + + modifyreg32(SYSTEM_MEM_PD_MASK_REG, SYSTEM_LSLP_MEM_PD_MASK, 0); + esp32c3_rtc_sleep_pu(pu_cfg); + modifyreg32(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_DG_WRAP_FORCE_PU | + RTC_CNTL_WIFI_FORCE_PU | RTC_CNTL_BT_FORCE_PU | + RTC_CNTL_CPU_TOP_FORCE_PU | RTC_CNTL_DG_PERI_FORCE_PU , 0); + + modifyreg32(RTC_CNTL_DIG_ISO_REG, RTC_CNTL_DG_WRAP_FORCE_NOISO | + RTC_CNTL_WIFI_FORCE_NOISO | RTC_CNTL_BT_FORCE_NOISO | + RTC_CNTL_CPU_TOP_FORCE_NOISO | RTC_CNTL_DG_PERI_FORCE_NOISO , 0); + + /* cancel digital PADS force no iso */ + + if (cfg.cpu_waiti_clk_gate) + { + modifyreg32(SYSTEM_CPU_PER_CONF_REG, + SYSTEM_CPU_WAIT_MODE_FORCE_ON, 0); + } + else + { + modifyreg32(SYSTEM_CPU_PER_CONF_REG, 0, + SYSTEM_CPU_WAIT_MODE_FORCE_ON); + } + + /* if SYSTEM_CPU_WAIT_MODE_FORCE_ON == 0 , + * the cpu clk will be closed when cpu enter WAITI mode. + */ + + modifyreg32(RTC_CNTL_DIG_ISO_REG, RTC_CNTL_DG_PAD_FORCE_UNHOLD | + RTC_CNTL_DG_PAD_FORCE_NOISO, 0); + } +} + +/**************************************************************************** + * Name: esp32c3_rtc_time_get + * + * Description: + * Get current value of RTC counter. + * + * Input Parameters: + * None + * + * Returned Value: + * current value of RTC counter + * + ****************************************************************************/ + +uint64_t IRAM_ATTR esp32c3_rtc_time_get(void) +{ + uint64_t rtc_time; + + modifyreg32(RTC_CNTL_TIME_UPDATE_REG, 0, RTC_CNTL_TIME_UPDATE); + rtc_time = getreg32(RTC_CNTL_TIME0_REG); + rtc_time |= ((uint64_t) getreg32(RTC_CNTL_TIME1_REG)) << 32; + + return rtc_time; +} + +/**************************************************************************** + * Name: esp32c3_rtc_time_us_to_slowclk + * + * Description: + * Convert time interval from microseconds to RTC_SLOW_CLK cycles. + * + * Input Parameters: + * time_in_us - Time interval in microseconds + * slow_clk_period - Period of slow clock in microseconds + * + * Returned Value: + * number of slow clock cycles + * + ****************************************************************************/ + +uint64_t IRAM_ATTR esp32c3_rtc_time_us_to_slowclk(uint64_t time_in_us, + uint32_t period) +{ + /* Overflow will happen in this function if time_in_us >= 2^45, + * which is about 400 days. TODO: fix overflow. + */ + + return (time_in_us << RTC_CLK_CAL_FRACT) / period; +} + +/**************************************************************************** + * Name: esp32c3_rtc_time_slowclk_to_us + * + * Description: + * Convert time interval from RTC_SLOW_CLK to microseconds + * + * Input Parameters: + * rtc_cycles - Time interval in RTC_SLOW_CLK cycles + * period - Period of slow clock in microseconds + * + * Returned Value: + * time interval in microseconds + * + ****************************************************************************/ + +uint64_t IRAM_ATTR esp32c3_rtc_time_slowclk_to_us(uint64_t rtc_cycles, + uint32_t period) +{ + return (rtc_cycles * period) >> RTC_CLK_CAL_FRACT; +} + +/**************************************************************************** + * Name: esp32c3_rtc_cpu_freq_set_xtal + * + * Description: + * Switch CPU clock source to XTAL + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +void IRAM_ATTR esp32c3_rtc_cpu_freq_set_xtal(void) +{ + int freq_mhz = (int) esp32c3_rtc_clk_xtal_freq_get(); + esp32c3_rtc_update_to_xtal(freq_mhz, 1); + esp32c3_rtc_clk_bbpll_disable(); +} + +/**************************************************************************** + * Name: esp32c3_rtc_sleep_init + * + * Description: + * Prepare the chip to enter sleep mode + * + * Input Parameters: + * flags - sleep mode configuration + * + * Returned Value: + * None + * + ****************************************************************************/ + +void IRAM_ATTR esp32c3_rtc_sleep_init(uint32_t flags) +{ + struct esp32c3_rtc_sleep_config_s cfg = RTC_SLEEP_CONFIG_DEFAULT(flags); + struct esp32c3_rtc_sleep_pu_config_s pu_cfg = RTC_SLEEP_PU_CONFIG_ALL(1); + if (cfg.lslp_mem_inf_fpu) + { + esp32c3_rtc_sleep_pu(pu_cfg); + } + + if (cfg.wifi_pd_en) + { + modifyreg32(RTC_CNTL_DIG_PWC_REG, 0, RTC_CNTL_WIFI_PD_EN); + } + else + { + modifyreg32(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_WIFI_PD_EN, 0); + } + + if (cfg.bt_pd_en) + { + modifyreg32(RTC_CNTL_DIG_PWC_REG, 0, RTC_CNTL_BT_PD_EN); + } + else + { + modifyreg32(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_BT_PD_EN, 0); + } + + if (cfg.cpu_pd_en) + { + modifyreg32(RTC_CNTL_DIG_PWC_REG, 0, RTC_CNTL_CPU_TOP_PD_EN); + } + else + { + modifyreg32(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_CPU_TOP_PD_EN, 0); + } + + if (cfg.dig_peri_pd_en) + { + modifyreg32(RTC_CNTL_DIG_PWC_REG, 0, RTC_CNTL_DG_PERI_PD_EN); + } + else + { + modifyreg32(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_DG_PERI_PD_EN, 0); + } + + REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_DBG_ATTEN_MONITOR, + RTC_CNTL_DBG_ATTEN_MONITOR_DEFAULT); + REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_BIAS_SLEEP_MONITOR, + RTC_CNTL_BIASSLP_MONITOR_DEFAULT); + REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_BIAS_SLEEP_DEEP_SLP, + RTC_CNTL_BIASSLP_SLEEP_DEFAULT); + REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_PD_CUR_MONITOR, + RTC_CNTL_PD_CUR_MONITOR_DEFAULT); + REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_PD_CUR_DEEP_SLP, + RTC_CNTL_PD_CUR_SLEEP_DEFAULT); + if (cfg.deep_slp) + { + REGI2C_WRITE_MASK(I2C_ULP, I2C_ULP_IR_FORCE_XPD_CK, 0); + modifyreg32(RTC_CNTL_REG, RTC_CNTL_REGULATOR_FORCE_PU, 0); + + /* It's only a temporary configuration to set dbg 0 to make + * deepsleep run successfully when in high temperature. + * We will restore it to RTC_CNTL_DBG_ATTEN_DEEPSLEEP_DEFAULT + * when ECO chip come back. TODO ESP32-C3 IDF-2568 + */ + + REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_DBG_ATTEN_DEEP_SLP, 0); + modifyreg32(RTC_CNTL_DIG_PWC_REG, 0, RTC_CNTL_DG_WRAP_PD_EN); + modifyreg32(RTC_CNTL_ANA_CONF_REG, RTC_CNTL_CKGEN_I2C_PU | + RTC_CNTL_PLL_I2C_PU | RTC_CNTL_RFRX_PBUS_PU | RTC_CNTL_TXRF_I2C_PU, 0); + } + else + { + modifyreg32(RTC_CNTL_BIAS_CONF_REG, 0, RTC_CNTL_DG_VDD_DRV_B_SLP_EN); + REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_DG_VDD_DRV_B_SLP, + RTC_CNTL_DG_VDD_DRV_B_SLP_DEFAULT); + modifyreg32(RTC_CNTL_REG, 0, RTC_CNTL_REGULATOR_FORCE_PU); + modifyreg32(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_DG_WRAP_PD_EN, 0); + REG_SET_FIELD(RTC_CNTL_BIAS_CONF_REG, RTC_CNTL_DBG_ATTEN_DEEP_SLP, + RTC_CNTL_DBG_ATTEN_LIGHTSLEEP_DEFAULT); + } + + /* enable VDDSDIO control by state machine */ + + REG_CLR_BIT(RTC_CNTL_SDIO_CONF_REG, RTC_CNTL_SDIO_FORCE); + REG_SET_FIELD(RTC_CNTL_SDIO_CONF_REG, RTC_CNTL_SDIO_PD_EN, + cfg.vddsdio_pd_en); + REGI2C_WRITE_MASK(I2C_DIG_REG, I2C_DIG_REG_EXT_RTC_DREG_SLEEP, + cfg.rtc_dbias_slp); + REGI2C_WRITE_MASK(I2C_DIG_REG, I2C_DIG_REG_EXT_RTC_DREG, + cfg.rtc_dbias_wak); + REGI2C_WRITE_MASK(I2C_DIG_REG, I2C_DIG_REG_EXT_DIG_DREG_SLEEP, + cfg.dig_dbias_slp); + REGI2C_WRITE_MASK(I2C_DIG_REG, I2C_DIG_REG_EXT_DIG_DREG, + cfg.dig_dbias_wak); + REG_SET_FIELD(RTC_CNTL_SLP_REJECT_CONF_REG, RTC_CNTL_DEEP_SLP_REJECT_EN, + cfg.deep_slp_reject); + REG_SET_FIELD(RTC_CNTL_SLP_REJECT_CONF_REG, RTC_CNTL_LIGHT_SLP_REJECT_EN, + cfg.light_slp_reject); + + /* gating XTAL clock */ + + REG_CLR_BIT(RTC_CNTL_CLK_CONF_REG, RTC_CNTL_XTAL_GLOBAL_FORCE_NOGATING); +} + +/**************************************************************************** + * Name: esp32c3_rtc_deep_sleep_start + * + * Description: + * Enter deep sleep mode. + * + * Input Parameters: + * wakeup_opt - bit mask wake up reasons to enable + * reject_opt - bit mask of sleep reject reasons. + * + * Returned Value: + * non-zero if sleep was rejected by hardware + * + ****************************************************************************/ + +uint32_t IRAM_ATTR esp32c3_rtc_deep_sleep_start(uint32_t wakeup_opt, + uint32_t reject_opt) +{ + /* Values used to set the SYSTEM_RTC_FASTMEM_CONFIG_REG value */ + + const unsigned CRC_START_ADDR = 0; + const unsigned CRC_LEN = 0x7ff; + + REG_SET_FIELD(RTC_CNTL_WAKEUP_STATE_REG, RTC_CNTL_WAKEUP_ENA, wakeup_opt); + putreg32(reject_opt, RTC_CNTL_SLP_REJECT_CONF_REG); + + /* Calculate RTC Fast Memory CRC (for wake stub) & go to deep sleep + * Because we may be running from RTC memory as stack, we can't easily + * call any functions to do this (as registers will spill to stack, + * corrupting the CRC). Instead, load all the values we need into registers + * then use register ops only to calculate the CRC value, write it to the + * RTC CRC value register, and immediately go into deep sleep. + */ + + asm volatile( + + /* Start CRC calculation */ + + "sw %1, 0(%0)\n" + "or t0, %1, %2\n" + "sw t0, 0(%0)\n" + + /* Wait for the CRC calculation to finish */ + + ".Lwaitcrc:\n" + "fence\n" + "lw t0, 0(%0)\n" + "li t1, "STR(SYSTEM_RTC_MEM_CRC_FINISH)"\n" + "and t0, t0, t1\n" + "beqz t0, .Lwaitcrc\n" + "not %2, %2\n" + "and t0, t0, %2\n" + "sw t0, 0(%0)\n" + "fence\n" + "not %2, %2\n" + + /* Store the calculated value in RTC_MEM_CRC_REG */ + + "lw t0, 0(%3)\n" + "sw t0, 0(%4)\n" + "fence\n" + + /* Set register bit to go into deep sleep */ + + "lw t0, 0(%5)\n" + "or t0, t0, %6\n" + "sw t0, 0(%5)\n" + "fence\n" + + /* Wait for sleep reject interrupt (never finishes if successful) */ + + ".Lwaitsleep:" + "fence\n" + "lw t0, 0(%7)\n" + "and t0, t0, %8\n" + "beqz t0, .Lwaitsleep\n" + + : + : + "r" (SYSTEM_RTC_FASTMEM_CONFIG_REG), + "r" ((CRC_START_ADDR << SYSTEM_RTC_MEM_CRC_START_S) + | (CRC_LEN << SYSTEM_RTC_MEM_CRC_LEN_S)), + "r" (SYSTEM_RTC_MEM_CRC_START), + "r" (SYSTEM_RTC_FASTMEM_CRC_REG), + "r" (RTC_MEMORY_CRC_REG), + "r" (RTC_CNTL_STATE0_REG), + "r" (RTC_CNTL_SLEEP_EN), + "r" (RTC_CNTL_INT_RAW_REG), + "r" (RTC_CNTL_SLP_REJECT_INT_RAW | RTC_CNTL_SLP_WAKEUP_INT_RAW) + : "t0", "t1" + ); + + return esp32c3_rtc_sleep_finish(0); +} + +/**************************************************************************** + * Name: esp32c3_rtc_sleep_start + * + * Description: + * Enter force sleep mode. + * + * Input Parameters: + * wakeup_opt - bit mask wake up reasons to enable + * reject_opt - bit mask of sleep reject reasons. + * + * Returned Value: + * non-zero if sleep was rejected by hardware + * + ****************************************************************************/ + +uint32_t IRAM_ATTR esp32c3_rtc_sleep_start(uint32_t wakeup_opt, + uint32_t reject_opt, uint32_t lslp_mem_inf_fpu) +{ + REG_SET_FIELD(RTC_CNTL_WAKEUP_STATE_REG, RTC_CNTL_WAKEUP_ENA, wakeup_opt); + REG_SET_FIELD(RTC_CNTL_SLP_REJECT_CONF_REG, + RTC_CNTL_SLEEP_REJECT_ENA, reject_opt); + + /* Start entry into sleep mode */ + + modifyreg32(RTC_CNTL_STATE0_REG, 0, RTC_CNTL_SLEEP_EN); + + while ((getreg32(RTC_CNTL_INT_RAW_REG) & + (RTC_CNTL_SLP_REJECT_INT_RAW | RTC_CNTL_SLP_WAKEUP_INT_RAW)) == 0); + + return esp32c3_rtc_sleep_finish(lslp_mem_inf_fpu); +} + +/**************************************************************************** + * Name: esp32c3_rtc_clk_cpu_freq_set_config + * + * Description: + * Set CPU frequency configuration. + * + * Input Parameters: + * config - CPU frequency configuration + * + * Returned Value: + * None + * + ****************************************************************************/ + +void IRAM_ATTR esp32c3_rtc_clk_cpu_freq_set_config( + const struct esp32c3_cpu_freq_config_s *config) +{ + uint32_t soc_clk_sel = REG_GET_FIELD(SYSTEM_SYSCLK_CONF_REG, + SYSTEM_SOC_CLK_SEL); + if (config->source == RTC_CPU_FREQ_SRC_XTAL) + { + esp32c3_rtc_update_to_xtal(config->freq_mhz, config->div); + if (soc_clk_sel == DPORT_SOC_CLK_SEL_PLL) + { + esp32c3_rtc_clk_bbpll_disable(); + } + } + else if (config->source == RTC_CPU_FREQ_SRC_PLL) + { + if (soc_clk_sel != DPORT_SOC_CLK_SEL_PLL) + { + modifyreg32(RTC_CNTL_OPTIONS0_REG, RTC_CNTL_BB_I2C_FORCE_PD | + RTC_CNTL_BBPLL_FORCE_PD | RTC_CNTL_BBPLL_I2C_FORCE_PD, 0); + esp32c3_rtc_bbpll_configure(esp32c3_rtc_clk_xtal_freq_get(), + config->source_freq_mhz); + } + + esp32c3_rtc_clk_cpu_freq_to_pll_mhz(config->freq_mhz); + } + else if (config->source == RTC_CPU_FREQ_SRC_8M) + { + esp32c3_rtc_clk_cpu_freq_to_8m(); + if (soc_clk_sel == DPORT_SOC_CLK_SEL_PLL) + { + esp32c3_rtc_clk_bbpll_disable(); + } + } +} + +/**************************************************************************** + * Name: esp32c3_rtc_sleep_low_init + * + * Description: + * Low level initialize for rtc state machine waiting + * cycles after waking up. + * + * Input Parameters: + * slowclk_period - Re-calibrated slow clock period + * + * Returned Value: + * None + * + ****************************************************************************/ + +void IRAM_ATTR esp32c3_rtc_sleep_low_init(uint32_t slowclk_period) +{ + /* Set 5 PWC state machine times to fit in main state machine time */ + + REG_SET_FIELD(RTC_CNTL_TIMER1_REG, RTC_CNTL_PLL_BUF_WAIT, + RTC_CNTL_PLL_BUF_WAIT_SLP_CYCLES); + REG_SET_FIELD(RTC_CNTL_TIMER1_REG, RTC_CNTL_XTL_BUF_WAIT, + esp32c3_rtc_time_us_to_slowclk( + RTC_CNTL_XTL_BUF_WAIT_SLP_US, slowclk_period)); + REG_SET_FIELD(RTC_CNTL_TIMER1_REG, RTC_CNTL_CK8M_WAIT, + RTC_CNTL_CK8M_WAIT_SLP_CYCLES); +} + +/**************************************************************************** + * Name: esp32c3_rtc_clk_cpu_freq_get_config + * + * Description: + * Get the currently used CPU frequency configuration. + * + * Input Parameters: + * None + * + * Returned Value: + * CPU clock configuration structure + * + ****************************************************************************/ + +void IRAM_ATTR esp32c3_rtc_clk_cpu_freq_get_config( + struct esp32c3_cpu_freq_config_s *out_config) +{ + uint32_t div = 3; + uint32_t freq_mhz = 160; + uint32_t source_freq_mhz = RTC_PLL_FREQ_480M; + enum esp32c3_rtc_cpu_freq_src_e source = RTC_CPU_FREQ_SRC_PLL; + uint32_t soc_clk_sel = REG_GET_FIELD(SYSTEM_SYSCLK_CONF_REG, + SYSTEM_SOC_CLK_SEL); + switch (soc_clk_sel) + { + case DPORT_SOC_CLK_SEL_XTAL: + { + source = RTC_CPU_FREQ_SRC_XTAL; + div = REG_GET_FIELD(SYSTEM_SYSCLK_CONF_REG, + SYSTEM_PRE_DIV_CNT) + 1; + source_freq_mhz = (uint32_t) esp32c3_rtc_clk_xtal_freq_get(); + freq_mhz = source_freq_mhz / div; + } + break; + + case DPORT_SOC_CLK_SEL_PLL: + { + uint32_t cpuperiod_sel = REG_GET_FIELD(SYSTEM_CPU_PER_CONF_REG, + SYSTEM_CPUPERIOD_SEL); + uint32_t pllfreq_sel = REG_GET_FIELD(SYSTEM_CPU_PER_CONF_REG, + SYSTEM_PLL_FREQ_SEL); + source = RTC_CPU_FREQ_SRC_PLL; + source_freq_mhz = (pllfreq_sel) ? + RTC_PLL_FREQ_480M : RTC_PLL_FREQ_320M; + if (cpuperiod_sel == DPORT_CPUPERIOD_SEL_80) + { + div = (source_freq_mhz == RTC_PLL_FREQ_480M) ? 6 : 4; + freq_mhz = 80; + } + else if (cpuperiod_sel == DPORT_CPUPERIOD_SEL_160) + { + div = (source_freq_mhz == RTC_PLL_FREQ_480M) ? 3 : 2; + div = 3; + freq_mhz = 160; + } + else + { + ASSERT(0); + } + } + break; + + case DPORT_SOC_CLK_SEL_8M: + { + source = RTC_CPU_FREQ_SRC_8M; + source_freq_mhz = 8; + div = 1; + freq_mhz = source_freq_mhz; + } + break; + + default: + ASSERT(0); + } + + *out_config = (struct esp32c3_cpu_freq_config_s) + { + .source = source, + .source_freq_mhz = source_freq_mhz, + .div = div, + .freq_mhz = freq_mhz + }; +} + +/**************************************************************************** + * Name: esp32c3_rtc_sleep_set_wakeup_time + * + * Description: + * Set target value of RTC counter for RTC_TIMER_TRIG_EN wakeup source. + * + * Input Parameters: + * t - value of RTC counter at which wakeup from sleep will happen. + * + * Returned Value: + * None + * + ****************************************************************************/ + +void IRAM_ATTR esp32c3_rtc_sleep_set_wakeup_time(uint64_t t) +{ + putreg32(t & UINT32_MAX, RTC_CNTL_SLP_TIMER0_REG); + putreg32((uint32_t)(t >> 32), RTC_CNTL_SLP_TIMER1_REG); + modifyreg32(RTC_CNTL_INT_CLR_REG, 0, RTC_CNTL_MAIN_TIMER_INT_CLR_M); + modifyreg32(RTC_CNTL_SLP_TIMER1_REG, 0, RTC_CNTL_MAIN_TIMER_ALARM_EN_M); +} diff --git a/arch/risc-v/src/esp32c3/esp32c3_rtc.h b/arch/risc-v/src/esp32c3/esp32c3_rtc.h new file mode 100644 index 00000000000..ab5fdec4f6d --- /dev/null +++ b/arch/risc-v/src/esp32c3/esp32c3_rtc.h @@ -0,0 +1,437 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/esp32c3_rtc.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_ESP32C3_RTC_H +#define __ARCH_RISCV_SRC_ESP32C3_ESP32C3_RTC_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include "hardware/esp32c3_soc.h" + +#ifndef __ASSEMBLY__ + +#undef EXTERN +#if defined(__cplusplus) +#define EXTERN extern "C" +extern "C" +{ +#else +#define EXTERN extern +#endif + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Cycles for RTC Timer clock source (internal oscillator) calibrate */ + +#define RTC_CLK_SRC_CAL_CYCLES (10) + +/* Various delays to be programmed into power control state machines */ + +#define RTC_CNTL_XTL_BUF_WAIT_SLP_US (250) +#define RTC_CNTL_PLL_BUF_WAIT_SLP_CYCLES (1) +#define RTC_CNTL_CK8M_WAIT_SLP_CYCLES (4) +#define RTC_CNTL_WAKEUP_DELAY_CYCLES (5) + +#define RTC_SLOW_CLK_CAL_REG RTC_CNTL_STORE1_REG +#define RTC_BOOT_TIME_LOW_REG RTC_CNTL_STORE2_REG +#define RTC_BOOT_TIME_HIGH_REG RTC_CNTL_STORE3_REG +#define RTC_XTAL_FREQ_REG RTC_CNTL_STORE4_REG +#define RTC_APB_FREQ_REG RTC_CNTL_STORE5_REG +#define RTC_ENTRY_ADDR_REG RTC_CNTL_STORE6_REG +#define RTC_RESET_CAUSE_REG RTC_CNTL_STORE6_REG +#define RTC_MEMORY_CRC_REG RTC_CNTL_STORE7_REG + +#define RTC_SLEEP_PD_DIG BIT(0) /* Deep sleep */ +#define RTC_SLEEP_PD_RTC_PERIPH BIT(1) /* Power down RTC peripherals */ +#define RTC_SLEEP_PD_RTC_SLOW_MEM BIT(2) /* Power down RTC SLOW memory */ +#define RTC_SLEEP_PD_RTC_FAST_MEM BIT(3) /* Power down RTC FAST memory */ + +/* RTC FAST and SLOW memories are automatically + * powered up and down along with the CPU + */ + +#define RTC_SLEEP_PD_RTC_MEM_FOLLOW_CPU BIT(4) +#define RTC_SLEEP_PD_VDDSDIO BIT(5) /* Power down VDDSDIO regulator */ +#define RTC_SLEEP_PD_WIFI BIT(6) /* Power down Wi-Fi */ +#define RTC_SLEEP_PD_BT BIT(7) /* Power down BT */ +#define RTC_SLEEP_PD_CPU BIT(8) /* Power down CPU when in light-sleep */ +#define RTC_SLEEP_PD_DIG_PERIPH BIT(9) /* Power down DIG peripherals */ + +/**************************************************************************** + * Public Types + ****************************************************************************/ + +/* Clock source to be calibrated using rtc_clk_cal function */ + +enum esp32c3_rtc_cal_sel_e +{ + RTC_CAL_RTC_MUX = 0, /* Currently selected RTC SLOW_CLK */ + RTC_CAL_8MD256 = 1, /* Internal 8 MHz RC oscillator, divided by 256 */ + RTC_CAL_32K_XTAL = 2 /* External 32 kHz XTAL */ +}; + +/* CPU clock source */ + +enum esp32c3_rtc_cpu_freq_src_e +{ + RTC_CPU_FREQ_SRC_XTAL, /* XTAL */ + RTC_CPU_FREQ_SRC_PLL, /* PLL (480M or 320M) */ + RTC_CPU_FREQ_SRC_8M, /* Internal 8M RTC oscillator */ + RTC_CPU_FREQ_SRC_APLL /* APLL */ +}; + +/* Possible main XTAL frequency values. + * Enum values should be equal to frequency in MHz. + */ + +enum esp32c3_rtc_xtal_freq_e +{ + RTC_XTAL_FREQ_32M = 32, + RTC_XTAL_FREQ_40M = 40, +}; + +/* RTC SLOW_CLK frequency values */ + +enum esp32c3_rtc_slow_freq_e +{ + RTC_SLOW_FREQ_RTC = 0, /* Internal 150 kHz RC oscillator */ + RTC_SLOW_FREQ_32K_XTAL = 1, /* External 32 kHz XTAL */ + RTC_SLOW_FREQ_8MD256 = 2, /* Internal 8 MHz RC oscillator, divided by 256 */ +}; + +/* CPU clock configuration structure */ + +struct esp32c3_cpu_freq_config_s +{ + /* The clock from which CPU clock is derived */ + + enum esp32c3_rtc_cpu_freq_src_e source; + uint32_t source_freq_mhz; /* Source clock frequency */ + uint32_t div; /* Divider, freq_mhz = source_freq_mhz / div */ + uint32_t freq_mhz; /* CPU clock frequency */ +}; + +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ + +/**************************************************************************** + * Name: esp32c3_rtc_clk_xtal_freq_get + * + * Description: + * Get main XTAL frequency + * + * Input Parameters: + * None + * + * Returned Value: + * XTAL frequency (one of enum esp32c3_rtc_xtal_freq_e values) + * + ****************************************************************************/ + +enum esp32c3_rtc_xtal_freq_e esp32c3_rtc_clk_xtal_freq_get(void); + +/**************************************************************************** + * Name: esp32c3_rtc_clk_slow_freq_get + * + * Description: + * Get the RTC_SLOW_CLK source + * + * Input Parameters: + * None + * + * Returned Value: + * Currently selected clock source + * (one of enum esp32c3_rtc_slow_freq_e values) + * + ****************************************************************************/ + +enum esp32c3_rtc_slow_freq_e esp32c3_rtc_clk_slow_freq_get(void); + +/**************************************************************************** + * Name: esp32c3_rtc_clk_slow_freq_set + * + * Description: + * Select source for RTC_SLOW_CLK + * + * Input Parameters: + * slow_freq - clock source (one of esp32c3_rtc_slow_freq_e values) + * + * Returned Value: + * None + * + ****************************************************************************/ + +void esp32c3_rtc_clk_slow_freq_set(enum esp32c3_rtc_slow_freq_e slow_freq); + +/**************************************************************************** + * Name: esp32c3_rtc_clk_set + * + * Description: + * Set RTC CLK frequency. + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +void esp32c3_rtc_clk_set(void); + +/**************************************************************************** + * Name: esp32c3_rtc_init + * + * Description: + * Initialize RTC clock and power control related functions. + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +void esp32c3_rtc_init(void); + +/**************************************************************************** + * Name: esp32c3_rtc_time_get + * + * Description: + * Get current value of RTC counter. + * + * Input Parameters: + * None + * + * Returned Value: + * current value of RTC counter + * + ****************************************************************************/ + +uint64_t esp32c3_rtc_time_get(void); + +/**************************************************************************** + * Name: esp32c3_rtc_time_us_to_slowclk + * + * Description: + * Convert time interval from microseconds to RTC_SLOW_CLK cycles. + * + * Input Parameters: + * time_in_us - Time interval in microseconds + * slow_clk_period - Period of slow clock in microseconds + * + * Returned Value: + * number of slow clock cycles + * + ****************************************************************************/ + +uint64_t esp32c3_rtc_time_us_to_slowclk(uint64_t time_in_us, + uint32_t period); + +/**************************************************************************** + * Name: esp32c3_rtc_cpu_freq_set_xtal + * + * Description: + * Switch CPU clock source to XTAL + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +void esp32c3_rtc_cpu_freq_set_xtal(void); + +/**************************************************************************** + * Name: esp32c3_rtc_sleep_init + * + * Description: + * Prepare the chip to enter sleep mode + * + * Input Parameters: + * flags - sleep mode configuration + * + * Returned Value: + * None + * + ****************************************************************************/ + +void esp32c3_rtc_sleep_init(uint32_t flags); + +/**************************************************************************** + * Name: esp32c3_rtc_sleep_start + * + * Description: + * Enter force sleep mode. + * + * Input Parameters: + * wakeup_opt - bit mask wake up reasons to enable + * reject_opt - bit mask of sleep reject reasons. + * + * Returned Value: + * non-zero if sleep was rejected by hardware + * + ****************************************************************************/ + +uint32_t esp32c3_rtc_sleep_start(uint32_t wakeup_opt, uint32_t reject_opt, + uint32_t lslp_mem_inf_fpu); + +/**************************************************************************** + * Name: esp32c3_rtc_clk_cal + * + * Description: + * Measure RTC slow clock's period, based on main XTAL frequency + * + * Input Parameters: + * cal_clk - clock to be measured + * slowclk_cycles - number of slow clock cycles to average + * + * Returned Value: + * Average slow clock period in microseconds, Q13.19 fixed point format + * or 0 if calibration has timed out + * + ****************************************************************************/ + +uint32_t esp32c3_rtc_clk_cal(enum esp32c3_rtc_cal_sel_e cal_clk, + uint32_t slowclk_cycles); + +/**************************************************************************** + * Name: esp32c3_rtc_time_slowclk_to_us + * + * Description: + * Convert time interval from RTC_SLOW_CLK to microseconds + * + * Input Parameters: + * rtc_cycles - Time interval in RTC_SLOW_CLK cycles + * period - Period of slow clock in microseconds + * + * Returned Value: + * time interval in microseconds + * + ****************************************************************************/ + +uint64_t esp32c3_rtc_time_slowclk_to_us(uint64_t rtc_cycles, + uint32_t period); + +/**************************************************************************** + * Name: esp32c3_rtc_deep_sleep_start + * + * Description: + * Enter deep sleep mode. + * + * Input Parameters: + * wakeup_opt - bit mask wake up reasons to enable + * reject_opt - bit mask of sleep reject reasons. + * + * Returned Value: + * non-zero if sleep was rejected by hardware + * + ****************************************************************************/ + +uint32_t esp32c3_rtc_deep_sleep_start(uint32_t wakeup_opt, + uint32_t reject_opt); + +/**************************************************************************** + * Name: esp32c3_rtc_clk_cpu_freq_set_config + * + * Description: + * Set CPU frequency configuration. + * + * Input Parameters: + * config - CPU frequency configuration + * + * Returned Value: + * None + * + ****************************************************************************/ + +void esp32c3_rtc_clk_cpu_freq_set_config( + const struct esp32c3_cpu_freq_config_s *config); + +/**************************************************************************** + * Name: esp32c3_rtc_sleep_low_init + * + * Description: + * Low level initialize for rtc state machine waiting + * cycles after waking up. + * + * Input Parameters: + * slowclk_period - Re-calibrated slow clock period + * + * Returned Value: + * None + * + ****************************************************************************/ + +void esp32c3_rtc_sleep_low_init(uint32_t slowclk_period); + +/**************************************************************************** + * Name: esp32c3_rtc_clk_cpu_freq_get_config + * + * Description: + * Get the currently used CPU frequency configuration. + * + * Input Parameters: + * None + * + * Returned Value: + * CPU clock configuration structure + * + ****************************************************************************/ + +void esp32c3_rtc_clk_cpu_freq_get_config( + struct esp32c3_cpu_freq_config_s *out_config); + +/**************************************************************************** + * Name: esp32c3_rtc_sleep_set_wakeup_time + * + * Description: + * Set target value of RTC counter for RTC_TIMER_TRIG_EN wakeup source. + * + * Input Parameters: + * t - value of RTC counter at which wakeup from sleep will happen. + * + * Returned Value: + * None + * + ****************************************************************************/ + +void esp32c3_rtc_sleep_set_wakeup_time(uint64_t t); + +#ifdef __cplusplus +} +#endif +#undef EXTERN + +#endif /* __ASSEMBLY__ */ +#endif /* __ARCH_RISCV_SRC_ESP32C3_ESP32C3_RTC_H */ diff --git a/arch/risc-v/src/esp32c3/hardware/apb_ctrl_reg.h b/arch/risc-v/src/esp32c3/hardware/apb_ctrl_reg.h new file mode 100644 index 00000000000..1800a5cd49a --- /dev/null +++ b/arch/risc-v/src/esp32c3/hardware/apb_ctrl_reg.h @@ -0,0 +1,73 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/hardware/apb_ctrl_reg.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_HARDWARE_APB_CTRL_REG_H_ +#define __ARCH_RISCV_SRC_ESP32C3_HARDWARE_APB_CTRL_REG_H_ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include "esp32c3_soc.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#define APB_CTRL_FRONT_END_MEM_PD_REG (DR_REG_APB_CTRL_BASE + 0x09C) + +#define APB_CTRL_MEM_POWER_UP_REG (DR_REG_APB_CTRL_BASE + 0x0AC) + +/* APB_CTRL_DC_MEM_FORCE_PU : R/W ;bitpos:[4] ;default: 1'b1 ; */ + +#define APB_CTRL_DC_MEM_FORCE_PU (BIT(4)) +#define APB_CTRL_DC_MEM_FORCE_PU_M (BIT(4)) +#define APB_CTRL_DC_MEM_FORCE_PU_V 0x1 +#define APB_CTRL_DC_MEM_FORCE_PU_S 4 + +/* APB_CTRL_PBUS_MEM_FORCE_PU : R/W ;bitpos:[2] ;default: 1'b1 ; */ + +#define APB_CTRL_PBUS_MEM_FORCE_PU (BIT(2)) +#define APB_CTRL_PBUS_MEM_FORCE_PU_M (BIT(2)) +#define APB_CTRL_PBUS_MEM_FORCE_PU_V 0x1 +#define APB_CTRL_PBUS_MEM_FORCE_PU_S 2 + +/* APB_CTRL_AGC_MEM_FORCE_PU : R/W ;bitpos:[0] ;default: 1'b1 ; */ + +#define APB_CTRL_AGC_MEM_FORCE_PU (BIT(0)) +#define APB_CTRL_AGC_MEM_FORCE_PU_M (BIT(0)) +#define APB_CTRL_AGC_MEM_FORCE_PU_V 0x1 +#define APB_CTRL_AGC_MEM_FORCE_PU_S 0 + +/* APB_CTRL_SRAM_POWER_UP : R/W ;bitpos:[5:2] ;default: ~4'b0 ; */ + +#define APB_CTRL_SRAM_POWER_UP 0x0000000F +#define APB_CTRL_SRAM_POWER_UP_M ((APB_CTRL_SRAM_POWER_UP_V)<<(APB_CTRL_SRAM_POWER_UP_S)) +#define APB_CTRL_SRAM_POWER_UP_V 0xF +#define APB_CTRL_SRAM_POWER_UP_S 2 + +/* APB_CTRL_ROM_POWER_UP : R/W ;bitpos:[1:0] ;default: ~2'b0 ; */ + +#define APB_CTRL_ROM_POWER_UP 0x00000003 +#define APB_CTRL_ROM_POWER_UP_M ((APB_CTRL_ROM_POWER_UP_V)<<(APB_CTRL_ROM_POWER_UP_S)) +#define APB_CTRL_ROM_POWER_UP_V 0x3 +#define APB_CTRL_ROM_POWER_UP_S 0 + +#endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_APB_CTRL_REG_H_ */ diff --git a/arch/risc-v/src/esp32c3/hardware/bb_reg.h b/arch/risc-v/src/esp32c3/hardware/bb_reg.h new file mode 100644 index 00000000000..262814eeeb6 --- /dev/null +++ b/arch/risc-v/src/esp32c3/hardware/bb_reg.h @@ -0,0 +1,49 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/hardware/bb_reg.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_HARDWARE_BB_REG_H_ +#define __ARCH_RISCV_SRC_ESP32C3_HARDWARE_BB_REG_H_ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include "esp32c3_soc.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Some of the baseband control registers. + * PU/PD fields defined here are used in sleep related functions. + */ + +#define BBPD_CTRL (DR_REG_BB_BASE + 0x0054) +#define BB_FFT_FORCE_PU (BIT(3)) +#define BB_FFT_FORCE_PU_M (BIT(3)) +#define BB_FFT_FORCE_PU_V 1 +#define BB_FFT_FORCE_PU_S 3 + +#define BB_DC_EST_FORCE_PU (BIT(1)) +#define BB_DC_EST_FORCE_PU_M (BIT(1)) +#define BB_DC_EST_FORCE_PU_V 1 +#define BB_DC_EST_FORCE_PU_S 1 + +#endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_BB_REG_H_ */ diff --git a/arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h b/arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h index efb5bf32d22..9e1ba5b2379 100644 --- a/arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h +++ b/arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h @@ -264,5 +264,43 @@ /* Helper to place a value in a field */ #define VALUE_TO_FIELD(_value, _field) (((_value) << (_field##_S)) & (_field##_M)) +#define DPORT_CPUPERIOD_SEL_80 0 +#define DPORT_CPUPERIOD_SEL_160 1 + +#define DPORT_SOC_CLK_SEL_XTAL 0 +#define DPORT_SOC_CLK_SEL_PLL 1 +#define DPORT_SOC_CLK_SEL_8M 2 + +/* Write value to register */ + +#define REG_WRITE(_r, _v) (*(volatile uint32_t *)(_r)) = (_v) + +/* Read value from register */ + +#define REG_READ(_r) (*(volatile uint32_t *)(_r)) + +/* Get bit or get bits from register */ + +#define REG_GET_BIT(_r, _b) (*(volatile uint32_t*)(_r) & (_b)) + +/* Set bit or set bits to register */ + +#define REG_SET_BIT(_r, _b) (*(volatile uint32_t*)(_r) |= (_b)) + +/* Clear bit or clear bits of register */ + +#define REG_CLR_BIT(_r, _b) (*(volatile uint32_t*)(_r) &= ~(_b)) + +/* Get field from register, + * used when _f is not left shifted by _f##_S + */ + +#define REG_GET_FIELD(_r, _f) ((REG_READ(_r) >> (_f##_S)) & (_f##_V)) + +/* Set field to register, + * used when _f is not left shifted by _f##_S + */ + +#define REG_SET_FIELD(_r, _f, _v) (REG_WRITE((_r),((REG_READ(_r) & ~((_f##_V) << (_f##_S)))|(((_v) & (_f##_V))<<(_f##_S))))) #endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_SOC_H */ diff --git a/arch/risc-v/src/esp32c3/hardware/esp32c3_uart.h b/arch/risc-v/src/esp32c3/hardware/esp32c3_uart.h index e31343ecfc9..511104ff112 100644 --- a/arch/risc-v/src/esp32c3/hardware/esp32c3_uart.h +++ b/arch/risc-v/src/esp32c3/hardware/esp32c3_uart.h @@ -2182,4 +2182,25 @@ #define UART_REG_UPDATE_V 0x00000001 #define UART_REG_UPDATE_S 31 +/* ESP32-C3 have 2 UART: UART0-1 */ + +#define ESP32C3_NUARTS 2 + +/* UART has an extra TX_WAIT_SEND state when the + * FIFO is not empty and XOFF is enabled. + */ + +#define SOC_UART_SUPPORT_FSM_TX_WAIT_SEND (1) +#define UART_FSM_IDLE (0x0) +#define UART_FSM_TX_WAIT_SEND (0xf) + +/* Software write 1 would synchronize registers into UART Core clock + * domain and would be cleared by hardware after synchronization is done. + */ + +#define UART_UPDATE (BIT(31)) +#define UART_UPDATE_M (BIT(31)) +#define UART_UPDATE_V 0x1 +#define UART_UPDATE_S 31 + #endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_UART_H */ \ No newline at end of file diff --git a/arch/risc-v/src/esp32c3/hardware/extmem_reg.h b/arch/risc-v/src/esp32c3/hardware/extmem_reg.h new file mode 100644 index 00000000000..88ce7f7c10c --- /dev/null +++ b/arch/risc-v/src/esp32c3/hardware/extmem_reg.h @@ -0,0 +1,57 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/hardware/extmem_reg.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_HARDWARE_EXTMEM_REG_H_ +#define __ARCH_RISCV_SRC_ESP32C3_HARDWARE_EXTMEM_REG_H_ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include "esp32c3_soc.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#define EXTMEM_CACHE_MMU_POWER_CTRL_REG (DR_REG_EXTMEM_BASE + 0x0AC) +#define EXTMEM_ICACHE_TAG_POWER_CTRL_REG (DR_REG_EXTMEM_BASE + 0x008) + +/* EXTMEM_CACHE_MMU_MEM_FORCE_ON : R/W ;bitpos:[0] ;default: 1'b1. + * The bit is used to enable clock gating to save + * power when access mmu memory 0: enable 1: disable + */ + +#define EXTMEM_CACHE_MMU_MEM_FORCE_ON (BIT(0)) +#define EXTMEM_CACHE_MMU_MEM_FORCE_ON_M (BIT(0)) +#define EXTMEM_CACHE_MMU_MEM_FORCE_ON_V 0x1 +#define EXTMEM_CACHE_MMU_MEM_FORCE_ON_S 0 + +/* EXTMEM_ICACHE_TAG_MEM_FORCE_ON : R/W ;bitpos:[0] ;default: 1'b1. + * description: The bit is used to close clock gating of icache tag memory. + * 1: close gating 0: open clock gating. + */ + +#define EXTMEM_ICACHE_TAG_MEM_FORCE_ON (BIT(0)) +#define EXTMEM_ICACHE_TAG_MEM_FORCE_ON_M (BIT(0)) +#define EXTMEM_ICACHE_TAG_MEM_FORCE_ON_V 0x1 +#define EXTMEM_ICACHE_TAG_MEM_FORCE_ON_S 0 + +#endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_EXTMEM_REG_H_ */ diff --git a/arch/risc-v/src/esp32c3/hardware/fe_reg.h b/arch/risc-v/src/esp32c3/hardware/fe_reg.h new file mode 100644 index 00000000000..97e60498493 --- /dev/null +++ b/arch/risc-v/src/esp32c3/hardware/fe_reg.h @@ -0,0 +1,50 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/hardware/fe_reg.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_HARDWARE_FE_REG_H_ +#define __ARCH_RISCV_SRC_ESP32C3_HARDWARE_FE_REG_H_ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include "esp32c3_soc.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Some of the RF frontend control registers. + * PU/PD fields defined here are used in sleep related functions. + */ + +#define FE_GEN_CTRL (DR_REG_FE_BASE + 0x0090) +#define FE_IQ_EST_FORCE_PU (BIT(5)) +#define FE_IQ_EST_FORCE_PU_M (BIT(5)) +#define FE_IQ_EST_FORCE_PU_V 1 +#define FE_IQ_EST_FORCE_PU_S 5 + +#define FE2_TX_INTERP_CTRL (DR_REG_FE2_BASE + 0x00f0) +#define FE2_TX_INF_FORCE_PU (BIT(10)) +#define FE2_TX_INF_FORCE_PU_M (BIT(10)) +#define FE2_TX_INF_FORCE_PU_V 1 +#define FE2_TX_INF_FORCE_PU_S 10 + +#endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_FE_REG_H_ */ diff --git a/arch/risc-v/src/esp32c3/hardware/nrx_reg.h b/arch/risc-v/src/esp32c3/hardware/nrx_reg.h new file mode 100644 index 00000000000..68a55cc47e9 --- /dev/null +++ b/arch/risc-v/src/esp32c3/hardware/nrx_reg.h @@ -0,0 +1,52 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/hardware/nrx_reg.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_HARDWARE_NRX_REG_H_ +#define __ARCH_RISCV_SRC_ESP32C3_HARDWARE_NRX_REG_H_ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include "esp32c3_soc.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Some of the Wi-Fi RX control registers. + * PU/PD fields defined here are used in sleep related functions. + */ + +#define NRXPD_CTRL (DR_REG_NRX_BASE + 0x00d4) +#define NRX_RX_ROT_FORCE_PU (BIT(5)) +#define NRX_RX_ROT_FORCE_PU_M (BIT(5)) +#define NRX_RX_ROT_FORCE_PU_V 1 +#define NRX_RX_ROT_FORCE_PU_S 5 +#define NRX_VIT_FORCE_PU (BIT(3)) +#define NRX_VIT_FORCE_PU_M (BIT(3)) +#define NRX_VIT_FORCE_PU_V 1 +#define NRX_VIT_FORCE_PU_S 3 +#define NRX_DEMAP_FORCE_PU (BIT(1)) +#define NRX_DEMAP_FORCE_PU_M (BIT(1)) +#define NRX_DEMAP_FORCE_PU_V 1 +#define NRX_DEMAP_FORCE_PU_S 1 + +#endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_NRX_REG_H_ */ diff --git a/arch/risc-v/src/esp32c3/hardware/regi2c_bbpll.h b/arch/risc-v/src/esp32c3/hardware/regi2c_bbpll.h new file mode 100644 index 00000000000..375dc1a4cde --- /dev/null +++ b/arch/risc-v/src/esp32c3/hardware/regi2c_bbpll.h @@ -0,0 +1,75 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/hardware/regi2c_bbpll.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_HARDWARE_REGI2C_BBPLL_H_ +#define __ARCH_RISCV_SRC_ESP32C3_HARDWARE_REGI2C_BBPLL_H_ + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Register definitions for digital PLL (BBPLL). This file lists + * register fields of BBPLL, located on an internal configuration bus. + */ + +#define I2C_BBPLL 0x66 +#define I2C_BBPLL_HOSTID 0 + +#define I2C_BBPLL_MODE_HF 4 +#define I2C_BBPLL_MODE_HF_MSB 1 +#define I2C_BBPLL_MODE_HF_LSB 1 + +#define I2C_BBPLL_OC_DCUR 6 +#define I2C_BBPLL_OC_DCUR_MSB 2 +#define I2C_BBPLL_OC_DCUR_LSB 0 + +#define I2C_BBPLL_OC_DR1 5 +#define I2C_BBPLL_OC_DR1_MSB 2 +#define I2C_BBPLL_OC_DR1_LSB 0 + +#define I2C_BBPLL_OC_DR3 5 +#define I2C_BBPLL_OC_DR3_MSB 6 +#define I2C_BBPLL_OC_DR3_LSB 4 + +#define I2C_BBPLL_OC_VCO_DBIAS 9 +#define I2C_BBPLL_OC_VCO_DBIAS_MSB 1 +#define I2C_BBPLL_OC_VCO_DBIAS_LSB 0 + +#define I2C_BBPLL_OC_DCHGP 2 +#define I2C_BBPLL_OC_DCHGP_MSB 6 +#define I2C_BBPLL_OC_DCHGP_LSB 4 + +#define I2C_BBPLL_OC_DLREF_SEL 6 +#define I2C_BBPLL_OC_DLREF_SEL_MSB 7 +#define I2C_BBPLL_OC_DLREF_SEL_LSB 6 + +#define I2C_BBPLL_OC_DHREF_SEL 6 +#define I2C_BBPLL_OC_DHREF_SEL_MSB 5 +#define I2C_BBPLL_OC_DHREF_SEL_LSB 4 + +#define I2C_BBPLL_OC_REF_DIV 2 +#define I2C_BBPLL_OC_REF_DIV_MSB 3 +#define I2C_BBPLL_OC_REF_DIV_LSB 0 + +#define I2C_BBPLL_OC_DIV_7_0 3 +#define I2C_BBPLL_OC_DIV_7_0_MSB 7 +#define I2C_BBPLL_OC_DIV_7_0_LSB 0 + +#endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_REGI2C_BBPLL_H_ */ \ No newline at end of file diff --git a/arch/risc-v/src/esp32c3/hardware/regi2c_ctrl.h b/arch/risc-v/src/esp32c3/hardware/regi2c_ctrl.h new file mode 100644 index 00000000000..24807b3f1f9 --- /dev/null +++ b/arch/risc-v/src/esp32c3/hardware/regi2c_ctrl.h @@ -0,0 +1,69 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/hardware/regi2c_ctrl.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_HARDWARE_REGI2C_CTRL_H_ +#define __ARCH_RISCV_SRC_ESP32C3_HARDWARE_REGI2C_CTRL_H_ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include "esp32c3_soc.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Analog function control register */ + +#define I2C_MST_ANA_CONF0_REG 0x6000E040 +#define I2C_MST_BBPLL_STOP_FORCE_HIGH (BIT(2)) +#define I2C_MST_BBPLL_STOP_FORCE_LOW (BIT(3)) + +/* ROM functions which read/write internal control bus */ + +extern uint8_t rom_i2c_readreg(uint8_t block, uint8_t host_id, + uint8_t reg_add); +extern uint8_t rom_i2c_readreg_mask(uint8_t block, uint8_t host_id, + uint8_t reg_add, uint8_t msb, uint8_t lsb); +extern void rom_i2c_writereg(uint8_t block, uint8_t host_id, + uint8_t reg_add, uint8_t data); +extern void rom_i2c_writereg_mask(uint8_t block, uint8_t host_id, + uint8_t reg_add, uint8_t msb, uint8_t lsb, uint8_t data); + +/* Convenience macros for the above functions, these use register + * definitions from regi2c_bbpll.h/regi2c_dig_reg.h/regi2c_lp_bias.h/ + * regi2c_bias.h header files. + */ + +#define REGI2C_WRITE_MASK(block, reg_add, indata) \ + rom_i2c_writereg_mask(block, block##_HOSTID, reg_add, reg_add##_MSB, reg_add##_LSB, indata) + +#define REGI2C_READ_MASK(block, reg_add) \ + rom_i2c_readreg_mask(block, block##_HOSTID, reg_add, reg_add##_MSB, reg_add##_LSB) + +#define REGI2C_WRITE(block, reg_add, indata) \ + rom_i2c_writereg(block, block##_HOSTID, reg_add, indata) + +#define REGI2C_READ(block, reg_add) \ + rom_i2c_readreg(block, block##_HOSTID, reg_add) + +#endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_REGI2C_CTRL_H_ */ diff --git a/arch/risc-v/src/esp32c3/hardware/regi2c_dig_reg.h b/arch/risc-v/src/esp32c3/hardware/regi2c_dig_reg.h new file mode 100644 index 00000000000..027f4250a2d --- /dev/null +++ b/arch/risc-v/src/esp32c3/hardware/regi2c_dig_reg.h @@ -0,0 +1,59 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/hardware/regi2c_dig_reg.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_HARDWARE_REGI2C_DIG_REG_H_ +#define __ARCH_RISCV_SRC_ESP32C3_HARDWARE_REGI2C_DIG_REG_H_ + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Register definitions for digital to get rtc voltage & digital voltage + * by setting rtc_dbias_Wak & dig_dbias_wak or by analog self-calibration. + */ + +#define I2C_DIG_REG 0x6D +#define I2C_DIG_REG_HOSTID 0 + +#define I2C_DIG_REG_EXT_RTC_DREG 4 +#define I2C_DIG_REG_EXT_RTC_DREG_MSB 4 +#define I2C_DIG_REG_EXT_RTC_DREG_LSB 0 + +#define I2C_DIG_REG_EXT_RTC_DREG_SLEEP 5 +#define I2C_DIG_REG_EXT_RTC_DREG_SLEEP_MSB 4 +#define I2C_DIG_REG_EXT_RTC_DREG_SLEEP_LSB 0 + +#define I2C_DIG_REG_EXT_DIG_DREG 6 +#define I2C_DIG_REG_EXT_DIG_DREG_MSB 4 +#define I2C_DIG_REG_EXT_DIG_DREG_LSB 0 + +#define I2C_DIG_REG_EXT_DIG_DREG_SLEEP 7 +#define I2C_DIG_REG_EXT_DIG_DREG_SLEEP_MSB 4 +#define I2C_DIG_REG_EXT_DIG_DREG_SLEEP_LSB 0 + +#define I2C_DIG_REG_XPD_RTC_REG 13 +#define I2C_DIG_REG_XPD_RTC_REG_MSB 2 +#define I2C_DIG_REG_XPD_RTC_REG_LSB 2 + +#define I2C_DIG_REG_XPD_DIG_REG 13 +#define I2C_DIG_REG_XPD_DIG_REG_MSB 3 +#define I2C_DIG_REG_XPD_DIG_REG_LSB 3 + +#endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_REGI2C_DIG_REG_H_ */ diff --git a/arch/risc-v/src/esp32c3/hardware/regi2c_lp_bias.h b/arch/risc-v/src/esp32c3/hardware/regi2c_lp_bias.h new file mode 100644 index 00000000000..40298635437 --- /dev/null +++ b/arch/risc-v/src/esp32c3/hardware/regi2c_lp_bias.h @@ -0,0 +1,40 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/hardware/regi2c_lp_bias.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_HARDWARE_REGI2C_LP_BIAS_H_ +#define __ARCH_RISCV_SRC_ESP32C3_HARDWARE_REGI2C_LP_BIAS_H_ + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Register definitions for analog to calibrate o_code for getting a more + * precise voltage. This file lists register fields of low power dbais, + * located on an internal configuration bus. + */ + +#define I2C_ULP 0x61 +#define I2C_ULP_HOSTID 0 + +#define I2C_ULP_IR_FORCE_XPD_CK 0 +#define I2C_ULP_IR_FORCE_XPD_CK_MSB 2 +#define I2C_ULP_IR_FORCE_XPD_CK_LSB 2 + +#endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_REGI2C_LP_BIAS_H_ */ diff --git a/arch/risc-v/src/esp32c3/hardware/spi_mem_reg.h b/arch/risc-v/src/esp32c3/hardware/spi_mem_reg.h new file mode 100644 index 00000000000..0e479a684ab --- /dev/null +++ b/arch/risc-v/src/esp32c3/hardware/spi_mem_reg.h @@ -0,0 +1,46 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/hardware/spi_mem_reg.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_HARDWARE_SPI_MEM_REG_H_ +#define __ARCH_RISCV_SRC_ESP32C3_HARDWARE_SPI_MEM_REG_H_ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include "esp32c3_soc.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#define SPI_MEM_CMD_REG(i) (REG_SPI_MEM_BASE(i) + 0x000) +#define SPI_MEM_CLOCK_GATE_REG(i) (REG_SPI_MEM_BASE(i) + 0x0DC) + +/* SPI_MEM_CLK_EN : R/W ;bitpos:[0] ;default: 1'b1. + * Register clock gate enable signal. 1: Enable. 0: Disable. + */ + +#define SPI_MEM_CLK_EN (BIT(0)) +#define SPI_MEM_CLK_EN_M (BIT(0)) +#define SPI_MEM_CLK_EN_V 0x1 +#define SPI_MEM_CLK_EN_S 0 + +#endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_SPI_MEM_REG_H_ */ diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/Kconfig b/boards/risc-v/esp32c3/esp32c3-devkit/Kconfig index 6259575c555..e26862b59bd 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/Kconfig +++ b/boards/risc-v/esp32c3/esp32c3-devkit/Kconfig @@ -5,6 +5,38 @@ if ARCH_BOARD_ESP32C3_DEVKIT +if PM + +config PM_ALARM_SEC + int "PM_STANDBY delay (seconds)" + default 15 + depends on PM + ---help--- + Number of seconds to wait in PM_STANDBY before going to PM_STANDBY mode. + +config PM_ALARM_NSEC + int "PM_STANDBY delay (nanoseconds)" + default 0 + depends on PM + ---help--- + Number of additional nanoseconds to wait in PM_STANDBY before going to PM_STANDBY mode. + +config PM_SLEEP_WAKEUP_SEC + int "PM_SLEEP delay (seconds)" + default 20 + depends on PM + ---help--- + Number of seconds to wait in PM_SLEEP. + +config PM_SLEEP_WAKEUP_NSEC + int "PM_SLEEP delay (nanoseconds)" + default 0 + depends on PM + ---help--- + Number of additional nanoseconds to wait in PM_SLEEP. + +endif # PM + config ESP32C3_DEVKIT_RUN_IRAM bool "Run from IRAM" default n diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/configs/pm/defconfig b/boards/risc-v/esp32c3/esp32c3-devkit/configs/pm/defconfig new file mode 100644 index 00000000000..72139d461e8 --- /dev/null +++ b/boards/risc-v/esp32c3/esp32c3-devkit/configs/pm/defconfig @@ -0,0 +1,47 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_NSH_ARGCAT is not set +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +# CONFIG_NSH_CMDPARMS is not set +CONFIG_ARCH="risc-v" +CONFIG_ARCH_BOARD="esp32c3-devkit" +CONFIG_ARCH_BOARD_ESP32C3_DEVKIT=y +CONFIG_ARCH_CHIP="esp32c3" +CONFIG_ARCH_CHIP_ESP32C3=y +CONFIG_ARCH_CHIP_ESP32C3WROOM02=y +CONFIG_ARCH_INTERRUPTSTACK=1536 +CONFIG_ARCH_RISCV=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARD_LOOPSPERMSEC=15000 +CONFIG_BUILTIN=y +CONFIG_DEV_ZERO=y +CONFIG_FS_PROCFS=y +CONFIG_IDLETHREAD_STACKSIZE=2048 +CONFIG_INTELHEX_BINARY=y +CONFIG_LIBC_PERROR_STDOUT=y +CONFIG_LIBC_STRERROR=y +CONFIG_MAX_TASKS=8 +CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_READLINE=y +CONFIG_NSH_STRERROR=y +CONFIG_PM=y +CONFIG_PM_GOVERNOR_EXPLICIT_RELAX=y +CONFIG_PM_GOVERNOR_GREEDY=y +CONFIG_PREALLOC_TIMERS=0 +CONFIG_RAW_BINARY=y +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_WAITPID=y +CONFIG_START_DAY=29 +CONFIG_START_MONTH=11 +CONFIG_START_YEAR=2019 +CONFIG_SYSTEM_NSH=y +CONFIG_UART0_SERIAL_CONSOLE=y +CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/scripts/esp32c3_rom.ld b/boards/risc-v/esp32c3/esp32c3-devkit/scripts/esp32c3_rom.ld index c4cc218cf2e..55dc5f3f767 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/scripts/esp32c3_rom.ld +++ b/boards/risc-v/esp32c3/esp32c3-devkit/scripts/esp32c3_rom.ld @@ -1815,9 +1815,9 @@ rom_get_i2c_read_mask = 0x40001948; rom_get_pwctrl_correct = 0x4000194c; rom_get_rf_gain_qdb = 0x40001950; rom_i2c_readreg = 0x40001954; -rom_i2c_readreg_Mask = 0x40001958; +rom_i2c_readreg_mask = 0x40001958; rom_i2c_writereg = 0x4000195c; -rom_i2c_writereg_Mask = 0x40001960; +rom_i2c_writereg_mask = 0x40001960; rom_index_to_txbbgain = 0x40001964; rom_iq_est_disable = 0x40001968; rom_iq_est_enable = 0x4000196c; From 42232fa98e2a81116d8aed90c547a9e043348357 Mon Sep 17 00:00:00 2001 From: Abdelatif Guettouche Date: Wed, 12 May 2021 13:40:50 +0100 Subject: [PATCH 095/739] Documentation/esp32c3: Fix the OpenOCD board. Signed-off-by: Abdelatif Guettouche --- Documentation/platforms/risc-v/esp32c3/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/platforms/risc-v/esp32c3/index.rst b/Documentation/platforms/risc-v/esp32c3/index.rst index 8c8026f47cd..3a9c9ca13b8 100644 --- a/Documentation/platforms/risc-v/esp32c3/index.rst +++ b/Documentation/platforms/risc-v/esp32c3/index.rst @@ -78,7 +78,7 @@ integrates a USB-to-JTAG adapter. OpenOCD can then be used:: - openocd -c 'set ESP_RTOS none' -f board/esp32c3_builtin.cfg + openocd -c 'set ESP_RTOS none' -f board/esp32c3-builtin.cfg For versions prior to ESP32-C3 ECO3, an external JTAG adapter is needed. It can be connected as follows:: From 77bb23182763c128acc57ead69ba500f8dd4a0c9 Mon Sep 17 00:00:00 2001 From: Abdelatif Guettouche Date: Wed, 12 May 2021 13:41:40 +0100 Subject: [PATCH 096/739] Documentation/esp32c3-devkit: Fix the name of the ESP32-C3 DevkitM image. --- .../platforms/risc-v/esp32c3/boards/esp32c3-devkit/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/platforms/risc-v/esp32c3/boards/esp32c3-devkit/index.rst b/Documentation/platforms/risc-v/esp32c3/boards/esp32c3-devkit/index.rst index 85d01fff1c2..180245a3c90 100644 --- a/Documentation/platforms/risc-v/esp32c3/boards/esp32c3-devkit/index.rst +++ b/Documentation/platforms/risc-v/esp32c3/boards/esp32c3-devkit/index.rst @@ -18,7 +18,7 @@ mount ESP32-C3 DevKit on a breadboard. ESP32-C3-DevKitC-02 - - .. figure:: ESP32-C3-DevKitM-v1.0.png + - .. figure:: ESP32-C3-DevKitM-1-v1.0.png :align: center ESP32-C3-DevKitM-1 From 1856a85b2850a49065e8869ccc952fb98dd02c34 Mon Sep 17 00:00:00 2001 From: Michal Lenc Date: Wed, 28 Apr 2021 22:54:05 +0200 Subject: [PATCH 097/739] Documentation/platforms: added documentation for imxrt10xx boards --- .../arm/imxrt/boards/imxrt1020-evk/index.rst | 97 +++++ .../arm/imxrt/boards/imxrt1050-evk/index.rst | 208 ++++++++++ .../arm/imxrt/boards/imxrt1060-evk/index.rst | 272 +++++++++++++ .../arm/imxrt/boards/imxrt1064-evk/index.rst | 272 +++++++++++++ boards/arm/imxrt/imxrt1020-evk/README.txt | 167 -------- boards/arm/imxrt/imxrt1050-evk/README.txt | 297 -------------- boards/arm/imxrt/imxrt1060-evk/README.txt | 363 ------------------ boards/arm/imxrt/imxrt1064-evk/README.txt | 363 ------------------ 8 files changed, 849 insertions(+), 1190 deletions(-) create mode 100644 Documentation/platforms/arm/imxrt/boards/imxrt1020-evk/index.rst create mode 100644 Documentation/platforms/arm/imxrt/boards/imxrt1050-evk/index.rst create mode 100644 Documentation/platforms/arm/imxrt/boards/imxrt1060-evk/index.rst create mode 100644 Documentation/platforms/arm/imxrt/boards/imxrt1064-evk/index.rst delete mode 100644 boards/arm/imxrt/imxrt1020-evk/README.txt delete mode 100644 boards/arm/imxrt/imxrt1050-evk/README.txt delete mode 100644 boards/arm/imxrt/imxrt1060-evk/README.txt delete mode 100644 boards/arm/imxrt/imxrt1064-evk/README.txt diff --git a/Documentation/platforms/arm/imxrt/boards/imxrt1020-evk/index.rst b/Documentation/platforms/arm/imxrt/boards/imxrt1020-evk/index.rst new file mode 100644 index 00000000000..67e53f43d6b --- /dev/null +++ b/Documentation/platforms/arm/imxrt/boards/imxrt1020-evk/index.rst @@ -0,0 +1,97 @@ +=============== +i.MX RT1020 EVK +=============== + +`i.MX RT1020 EVK `_ +is an evaluation kit by NXP company. This kit uses the i.MX RT1020 crossover MCU in LQFP144 package with Arm Cortex M7 core. + +Features +======== + +- Processor + - MIMXRT1021DAG5A processor +- Memory + - 256 Mb SDRAM memory + - 64 Mb QSPI Flash + - TF socket for SD card +- Display and Audio + - Audio CODEC + - 4-pole audio headphone jack + - External speaker connection + - Microphone +- Connectivity + - Micro USB host and OTG connectors + - Ethernet (10/100T) connector + - CAN transceivers + - Arduino® interface + +Serial Console +============== + +The EVK default console is on LPUART1, which is multiplexed onto +the debug port (either OpenSDA or SEGGER JLink). + +It runs at 115200,n,8,1. + +LEDs and Buttons +================ + +LEDs +---- + +There is one user accessible LED status indicator located on the 1020-EVK, +USERLED. The function of the LEDs include: + +- D3: Power (Green) & Overpower (Red) +- D5: User LED (Green) GPIO_AD_B0_05 +- D15: RST LED (Red) + +This LED is not used by the board port unless CONFIG_ARCH_LEDS is +defined. In that case, the usage by the board port is defined in +include/board.h and src/imxrt_autoleds.c. The LED is used to encode +OS-related events as documented in board.h + +================ ======================= ===== +SYMBOL Meaning LED +================ ======================= ===== +LED_STARTED NuttX has been started OFF +LED_HEAPALLOCATE Heap has been allocated OFF +LED_IRQSENABLED Interrupts enabled OFF +LED_STACKCREATED Idle stack created ON +LED_INIRQ In an interrupt N/C +LED_SIGNAL In a signal handler N/C +LED_ASSERTION An assertion failed N/C +LED_PANIC The system has crashed FLASH +================ ======================= ===== + +Thus if the LED is statically on, NuttX has successfully booted and is, +apparently, running normally. If the LED is flashing at approximately +2Hz, then a fatal error has been detected and the system has halted. + + +Buttons +------- + +This IMXRT board has three external buttons + +- SW2 (IRQ88, ONOFF) Not on a GPIO, No muxing +- SW3 (IRQ88, POR) Not on a GPIO, No muxing +- SW4 (IRQ88, USER) Wakeup, GPIO5-0 + +Configurations +============== + +netnsh +------ + +This configuration is similar to the nsh configuration except that is +has networking enabled, both IPv4 and IPv6. This NSH configuration is +focused on network-related testing. + +nsh +--- + +Configures the NuttShell (nsh) located at examples/nsh. This NSH +configuration is focused on low level, command-line driver testing. +Built-in applications are supported, but none are enabled. This +configuration does not support a network. diff --git a/Documentation/platforms/arm/imxrt/boards/imxrt1050-evk/index.rst b/Documentation/platforms/arm/imxrt/boards/imxrt1050-evk/index.rst new file mode 100644 index 00000000000..1bbc7dc118c --- /dev/null +++ b/Documentation/platforms/arm/imxrt/boards/imxrt1050-evk/index.rst @@ -0,0 +1,208 @@ +=============== +i.MX RT1050 EVK +=============== + +`i.MX RT1050 EVK `_ +is an evaluation kit by NXP company. This kit uses the i.MX RT1050 crossover MCU with Arm Cortex M7 core. + +Features +======== + +- Processor + - MIMXRT1052DVL6A processor +- Memory + - 256 Mb SDRAM memory + - 512 Mb Hyper Flash + - Footprint for QSPI Flash + - TF socket for SD card +- Display and Audio + - Parallel LCD connector + - Camera connector + - Audio CODEC + - 4-pole audio headphone jack + - External speaker connection + - Microphone + - SPDIF connector +- Connectivity + - Micro USB host and OTG connectors + - Ethernet (10/100T) connector + - CAN transceivers + - Arduino® interface + +Serial Console +============== + +Virtual console port provided by OpenSDA: + +- UART1_TXD GPIO_AD_B0_12 LPUART1_TX +- UART1_RXD GPIO_AD_B0_13 LPUART1_RX + +Arduino RS-232 Shield: + +- J22 D0 UART_RX/D0 GPIO_AD_B1_07 LPUART3_RX +- J22 D1 UART_TX/D1 GPIO_AD_B1_06 LPUART3_TX + +LEDs and buttons +================ + +LEDs +---- + +There are four LED status indicators located on the EVK Board. The +functions of these LEDs include: + +- Main Power Supply(D3) + - Green: DC 5V main supply is normal. + - Red: J2 input voltage is over 5.6V. + - Off: The board is not powered. +- Reset RED LED(D15) +- OpenSDA LED(D16) +- USER LED(D18) + +Only a single LED, D18, is under software control. It connects to +GPIO_AD_B0_09 which is shared with JTAG_TDI and ENET_RST + +This LED is not used by the board port unless CONFIG_ARCH_LEDS is +defined. In that case, the usage by the board port is defined in +include/board.h and src/imxrt_autoleds.c. The LED is used to encode +OS-related events as follows: + +================ ======================= ===== +SYMBOL Meaning LED +================ ======================= ===== +LED_STARTED NuttX has been started OFF +LED_HEAPALLOCATE Heap has been allocated OFF +LED_IRQSENABLED Interrupts enabled OFF +LED_STACKCREATED Idle stack created ON +LED_INIRQ In an interrupt N/C +LED_SIGNAL In a signal handler N/C +LED_ASSERTION An assertion failed N/C +LED_PANIC The system has crashed FLASH +================ ======================= ===== + +Thus if the LED is statically on, NuttX has successfully booted and is, +apparently, running normally. If the LED is flashing at approximately +2Hz, then a fatal error has been detected and the system has halted. + +Buttons +------- + +There are four user interface switches on the MIMXRT1050 EVK Board: + +- SW1: Power Switch (slide switch) +- SW2: ON/OFF Button +- SW3: Reset button +- SW8: User button + +Only the user button is available to the software. It is sensed on the +WAKEUP pin which will be pulled low when the button is pressed. + +Configurations +============== + +knsh +---- + +This is identical to the nsh configuration below except that NuttX +is built as a protected mode, monolithic module and the user applications +are built separately. It is recommends to use a special make command; +not just 'make' but make with the following two arguments: + +.. code-block:: console + + $ make pass1 pass2 + +In the normal case (just 'make'), make will attempt to build both user- +and kernel-mode blobs more or less interleaved. This actual works! +However, for me it is very confusing so I prefer the above make command: +Make the user-space binaries first (pass1), then make the kernel-space +binaries (pass2) + +NOTES: + +At the end of the build, there will be several files in the top-level +NuttX build directory: + +PASS1: + - nuttx_user.elf - The pass1 user-space ELF file + - nuttx_user.hex - The pass1 Intel HEX format file (selected in defconfig) + - User.map - Symbols in the user-space ELF file + +PASS2: + - nuttx - The pass2 kernel-space ELF file + - nuttx.hex - The pass2 Intel HEX file (selected in defconfig) + - System.map - Symbols in the kernel-space ELF file + +The J-Link programmer will except files in .hex, .mot, .srec, and .bin +formats. + +Combining .hex files. If you plan to use the .hex files with your +debugger or FLASH utility, then you may need to combine the two hex +files into a single .hex file. Here is how you can do that. + +The 'tail' of the nuttx.hex file should look something like this +(with my comments added beginning with #): + +.. code-block:: console:: + + $ tail nuttx.hex + #xx xxxx 00 data records + ... + :10 C93C 00 000000000040184000C2010000000000 90 + :10 C94C 00 2400080000801B4000C01B4000001C40 5D + :10 C95C 00 00401C4000000C4050BF0060FF000100 74 + #xx xxxx 05 Start Linear Address Record + :04 0000 05 6000 02C1 D4 + #xx xxxx 01 End Of File record + :00 0000 01 FF + +Use an editor such as vi to remove the 05 and 01 records. + +The 'head' of the nuttx_user.hex file should look something like +this (again with my comments added beginning with #): + +.. code-block:: console:: + + $ head nuttx_user.hex + #xx xxxx 04 Extended Linear Address Record + :02 0000 04 6020 7A + #xx xxxx 00 data records + :10 0000 00 8905206030002060F2622060FC622060 80 + :10 0010 00 0000242008002420080024205C012420 63 + :10 0020 00 140024203D0020603100206071052060 14 + ... + +Nothing needs to be done here. The nuttx_user.hex file should +be fine. + +Combine the edited nuttx.hex and un-edited nuttx_user.hex +file to produce a single combined hex file: + +.. code-block:: console:: + + $ cat nuttx.hex nuttx_user.hex >combined.hex + +Then use the combined.hex file with the to write the FLASH image. +If you do this a lot, you will probably want to invest a little time +to develop a tool to automate these steps. + +STATUS: This configuration was added on 8 June 2018 primarily to assure +that all of the components are in place to support the PROTECTED mode +build. This configuration, however, has not been verified as of this +writing. + + +netnsh +------ + +This configuration is similar to the nsh configuration except that is +has networking enabled, both IPv4 and IPv6. This NSH configuration is +focused on network-related testing. + +nsh +--- + +Configures the NuttShell (nsh) located at examples/nsh. This NSH +configuration is focused on low level, command-line driver testing. +Built-in applications are supported, but none are enabled. This +configuration does not support a network. diff --git a/Documentation/platforms/arm/imxrt/boards/imxrt1060-evk/index.rst b/Documentation/platforms/arm/imxrt/boards/imxrt1060-evk/index.rst new file mode 100644 index 00000000000..0d7e7d3eef5 --- /dev/null +++ b/Documentation/platforms/arm/imxrt/boards/imxrt1060-evk/index.rst @@ -0,0 +1,272 @@ +=============== +i.MX RT1060 EVK +=============== + +`i.MX RT1060 EVK `_ +is an evaluation kit by NXP company. This kit uses the i.MX RT1060 crossover MCU with Arm Cortex M7 core. + +Features +======== + +- Processor + - MIMXRT1062DVL6A processor +- Memory + - 1 Mb OCRAM memory + - 256 Mb SDRAM memory + - 512 Mb Hyper Flash - Populated but 0 ohm DNP + - 64 Mb QSPI Flash + - TF socket for SD card +- Display and Audio + - Parallel LCD connector + - Camera connector + - Audio CODEC + - 4-pole audio headphone jack + - External speaker connection + - Microphone + - SPDIF connector +- Connectivity + - Micro USB host and OTG connectors + - Ethernet (10/100T) connector + - CAN transceivers (including one CAN FD) + - Arduino® interface +- Sensors + - FXOS8700CQ 6-Axis Ecompass (3-Axis Mag, 3-Axis Accel) + +Serial Console +============== + +Virtual console port provided by OpenSDA: + +- UART1_TXD GPIO_AD_B0_12 LPUART1_TX +- UART1_RXD GPIO_AD_B0_13 LPUART1_RX + +Arduino RS-232 Shield: + +- J22 D0 UART_RX/D0 GPIO_AD_B1_07 LPUART3_RX +- J22 D1 UART_TX/D1 GPIO_AD_B1_06 LPUART3_TX + +LEDs and buttons +================ + +LEDs +---- + +There are four LED status indicators located on the EVK Board. The +functions of these LEDs include: + +- Main Power Supply(D3) + - Green: DC 5V main supply is normal. + - Red: J2 input voltage is over 5.6V. + - Off: The board is not powered. +- Reset RED LED(D21) +- OpenSDA LED(D20) +- USER LED(D18) + +Only a single LED, D18, is under software control. It connects to +GPIO_AD_B0_09 which is shared with JTAG_TDI and ENET_RST + +This LED is not used by the board port unless CONFIG_ARCH_LEDS is +defined. In that case, the usage by the board port is defined in +include/board.h and src/imxrt_autoleds.c. The LED is used to encode +OS-related events as follows: + +================ ======================= ===== +SYMBOL Meaning LED +================ ======================= ===== +LED_STARTED NuttX has been started OFF +LED_HEAPALLOCATE Heap has been allocated OFF +LED_IRQSENABLED Interrupts enabled OFF +LED_STACKCREATED Idle stack created ON +LED_INIRQ In an interrupt N/C +LED_SIGNAL In a signal handler N/C +LED_ASSERTION An assertion failed N/C +LED_PANIC The system has crashed FLASH +================ ======================= ===== + +Thus if the LED is statically on, NuttX has successfully booted and is, +apparently, running normally. If the LED is flashing at approximately +2Hz, then a fatal error has been detected and the system has halted. + +Buttons +------- + +There are five user interface switches on the MIMXRT1050 EVK Board: + +- SW1: Power Switch (slide switch fir power from J2) +- SW2: ON/OFF Button +- SW3: Power-on Reset button state forces to reset the system power except SNVS domain +- SW9: Reset button +- SW8: User button GPIO5-00 + +Only the user button is available to the software. It is sensed on the +WAKEUP pin which will be pulled low when the button is pressed. + + +J-Link External Debug Probe +=========================== + +Install the J-Link Debug Host Tools and make sure they are in your search path. + +Attach a J-Link 20-pin connector to J21. Check that jumpers J47 and J48 are +off (they are on by default when boards ship from the factory) to ensure SWD +signals are disconnected from the OpenSDA microcontroller. + +Configurations +============== + +can +--- + +This is an nsh configuration (see below) with added support of CAN driver. +FlexCAN3 is chosen as default, the change can be made at System type peripheral +selection. Please note that only FlexCAN3 and FlexCAN2 is available on this board. + +Bitrate and sample point can be also changed at System type peripheral selection, +basic values are 1 MHz for bitrate and 0.80 for sample point. The FlexCAN driver +for imxrt runs at 80 MHz clock frequency. + +The configuration also includes CAN utilities as candump and cansend. + +canfd +----- + +This is an nsh configuration (see below) with added support of CAN_FD driver. +FlexCAN3 is chosen as default, please note that only FlexCAN3 is capable of +providing CAN_FD support. + +Bitrate and sample point can be also changed at System type peripheral selection, +basic values are 1 MHz for bitrate and 0.80 for sample point for arbitration phase +and 4 MHz (bitrate) and 0.90 (sample point) for data phase. The FlexCAN driver +for imxrt runs at 80 MHz clock frequency. + +The configuration also includes CAN utilities as candump and cansend. + +knsh +---- + +This is identical to the nsh configuration below except that NuttX +is built as a protected mode, monolithic module and the user applications +are built separately. It is recommends to use a special make command; +not just 'make' but make with the following two arguments: + +.. code-block:: console + + $ make pass1 pass2 + +In the normal case (just 'make'), make will attempt to build both user- +and kernel-mode blobs more or less interleaved. This actual works! +However, for me it is very confusing so I prefer the above make command: +Make the user-space binaries first (pass1), then make the kernel-space +binaries (pass2) + +NOTES: + +At the end of the build, there will be several files in the top-level +NuttX build directory: + +PASS1: + - nuttx_user.elf - The pass1 user-space ELF file + - nuttx_user.hex - The pass1 Intel HEX format file (selected in defconfig) + - User.map - Symbols in the user-space ELF file + +PASS2: + - nuttx - The pass2 kernel-space ELF file + - nuttx.hex - The pass2 Intel HEX file (selected in defconfig) + - System.map - Symbols in the kernel-space ELF file + +The J-Link programmer will except files in .hex, .mot, .srec, and .bin +formats. + +Combining .hex files. If you plan to use the .hex files with your +debugger or FLASH utility, then you may need to combine the two hex +files into a single .hex file. Here is how you can do that. + +The 'tail' of the nuttx.hex file should look something like this +(with my comments added beginning with #): + +.. code-block:: console:: + + $ tail nuttx.hex + #xx xxxx 00 data records + ... + :10 C93C 00 000000000040184000C2010000000000 90 + :10 C94C 00 2400080000801B4000C01B4000001C40 5D + :10 C95C 00 00401C4000000C4050BF0060FF000100 74 + #xx xxxx 05 Start Linear Address Record + :04 0000 05 6000 02C1 D4 + #xx xxxx 01 End Of File record + :00 0000 01 FF + +Use an editor such as vi to remove the 05 and 01 records. + +The 'head' of the nuttx_user.hex file should look something like +this (again with my comments added beginning with #): + +.. code-block:: console:: + + $ head nuttx_user.hex + #xx xxxx 04 Extended Linear Address Record + :02 0000 04 6020 7A + #xx xxxx 00 data records + :10 0000 00 8905206030002060F2622060FC622060 80 + :10 0010 00 0000242008002420080024205C012420 63 + :10 0020 00 140024203D0020603100206071052060 14 + ... + +Nothing needs to be done here. The nuttx_user.hex file should +be fine. + +Combine the edited nuttx.hex and un-edited nuttx_user.hex +file to produce a single combined hex file: + +.. code-block:: console:: + + $ cat nuttx.hex nuttx_user.hex >combined.hex + +Then use the combined.hex file with the to write the FLASH image. +If you do this a lot, you will probably want to invest a little time +to develop a tool to automate these steps. + +STATUS: This configuration was added on 8 June 2018 primarily to assure +that all of the components are in place to support the PROTECTED mode +build. This configuration, however, has not been verified as of this +writing. + +netnsh +------ + +This configuration is similar to the nsh configuration except that is +has networking enabled, both IPv4 and IPv6. This NSH configuration is +focused on network-related testing. + +nsh +--- + +Configures the NuttShell (nsh) located at examples/nsh. This NSH +configuration is focused on low level, command-line driver testing. +Built-in applications are supported, but none are enabled. This +configuration does not support a network. + +lvgl +---- + +Configures the Littlev graphic library (lvgl) demo located under +examples/lvgldemo. This configuration needs the optional LCD model +RK043FN02H-CT from NXP. The LCD panel comes with the integrated +capacitive touchscreen sensor FT5336GQQ connected to the LPI2C1 bus, +address 0x38. NuttX support such touchscreen device via the driver +ft5x06 (drivers/input/ft5x06.c). At the moment only the polling +method is available, the board features an interrupt line connected +to the touchscreen sensor IC. + +IMXRT1060 MCU provides the integrated LCD driver. + +The LCD panel features: + - size 4.3" + - resolution 480×272 RGB + - backlight driver + - dimensions [mm]: 105.5 (W) x 67.2(H) x 4.35(D) Max. + +To run the lvgl demo please type "lvgldemo" at nsh prompt:: + + nsh> lvgldemo diff --git a/Documentation/platforms/arm/imxrt/boards/imxrt1064-evk/index.rst b/Documentation/platforms/arm/imxrt/boards/imxrt1064-evk/index.rst new file mode 100644 index 00000000000..17613f66509 --- /dev/null +++ b/Documentation/platforms/arm/imxrt/boards/imxrt1064-evk/index.rst @@ -0,0 +1,272 @@ +=============== +i.MX RT1064 EVK +=============== + +`i.MX RT1064 EVK `_ +is an evaluation kit by NXP company. This kit uses the i.MX RT1064 crossover MCU with Arm Cortex M7 core. + +Features +======== + +- Processor + - MIMXRT1066DVL6A processor +- Memory + - 1 Mb OCRAM memory + - 256 Mb SDRAM memory + - 512 Mb Hyper Flash - Populated but 0 ohm DNP + - 64 Mb QSPI Flash + - TF socket for SD card +- Display and Audio + - Parallel LCD connector + - Camera connector + - Audio CODEC + - 4-pole audio headphone jack + - External speaker connection + - Microphone + - SPDIF connector +- Connectivity + - Micro USB host and OTG connectors + - Ethernet (10/100T) connector + - CAN transceivers + - Arduino® interface +- Sensors + - FXOS8700CQ 6-Axis Ecompass (3-Axis Mag, 3-Axis Accel) + +Serial Console +============== + +Virtual console port provided by OpenSDA: + +- UART1_TXD GPIO_AD_B0_12 LPUART1_TX +- UART1_RXD GPIO_AD_B0_13 LPUART1_RX + +Arduino RS-232 Shield: + +- J22 D0 UART_RX/D0 GPIO_AD_B1_07 LPUART3_RX +- J22 D1 UART_TX/D1 GPIO_AD_B1_06 LPUART3_TX + +LEDs and buttons +================ + +LEDs +---- + +There are four LED status indicators located on the EVK Board. The +functions of these LEDs include: + +- Main Power Supply(D3) + - Green: DC 5V main supply is normal. + - Red: J2 input voltage is over 5.6V. + - Off: The board is not powered. +- Reset RED LED(D21) +- OpenSDA LED(D20) +- USER LED(D18) + +Only a single LED, D18, is under software control. It connects to +GPIO_AD_B0_09 which is shared with JTAG_TDI and ENET_RST + +This LED is not used by the board port unless CONFIG_ARCH_LEDS is +defined. In that case, the usage by the board port is defined in +include/board.h and src/imxrt_autoleds.c. The LED is used to encode +OS-related events as follows: + +================ ======================= ===== +SYMBOL Meaning LED +================ ======================= ===== +LED_STARTED NuttX has been started OFF +LED_HEAPALLOCATE Heap has been allocated OFF +LED_IRQSENABLED Interrupts enabled OFF +LED_STACKCREATED Idle stack created ON +LED_INIRQ In an interrupt N/C +LED_SIGNAL In a signal handler N/C +LED_ASSERTION An assertion failed N/C +LED_PANIC The system has crashed FLASH +================ ======================= ===== + +Thus if the LED is statically on, NuttX has successfully booted and is, +apparently, running normally. If the LED is flashing at approximately +2Hz, then a fatal error has been detected and the system has halted. + +Buttons +------- + +There are five user interface switches on the MIMXRT1050 EVK Board: + +- SW1: Power Switch (slide switch fir power from J2) +- SW2: ON/OFF Button +- SW3: Power-on Reset button state forces to reset the system power except SNVS domain +- SW9: Reset button +- SW8: User button GPIO5-00 + +Only the user button is available to the software. It is sensed on the +WAKEUP pin which will be pulled low when the button is pressed. + + +J-Link External Debug Probe +=========================== + +Install the J-Link Debug Host Tools and make sure they are in your search path. + +Attach a J-Link 20-pin connector to J21. Check that jumpers J47 and J48 are +off (they are on by default when boards ship from the factory) to ensure SWD +signals are disconnected from the OpenSDA microcontroller. + +Configurations +============== + +can +--- + +This is an nsh configuration (see below) with added support of CAN driver. +FlexCAN3 is chosen as default, the change can be made at System type peripheral +selection. Please note that only FlexCAN3 and FlexCAN2 is available on this board. + +Bitrate and sample point can be also changed at System type peripheral selection, +basic values are 1 MHz for bitrate and 0.80 for sample point. The FlexCAN driver +for imxrt runs at 80 MHz clock frequency. + +The configuration also includes CAN utilities as candump and cansend. + +canfd +----- + +This is an nsh configuration (see below) with added support of CAN_FD driver. +FlexCAN3 is chosen as default, please note that only FlexCAN3 is capable of +providing CAN_FD support. + +Bitrate and sample point can be also changed at System type peripheral selection, +basic values are 1 MHz for bitrate and 0.80 for sample point for arbitration phase +and 4 MHz (bitrate) and 0.90 (sample point) for data phase. The FlexCAN driver +for imxrt runs at 80 MHz clock frequency. + +The configuration also includes CAN utilities as candump and cansend. + +knsh +---- + +This is identical to the nsh configuration below except that NuttX +is built as a protected mode, monolithic module and the user applications +are built separately. It is recommends to use a special make command; +not just 'make' but make with the following two arguments: + +.. code-block:: console + + $ make pass1 pass2 + +In the normal case (just 'make'), make will attempt to build both user- +and kernel-mode blobs more or less interleaved. This actual works! +However, for me it is very confusing so I prefer the above make command: +Make the user-space binaries first (pass1), then make the kernel-space +binaries (pass2) + +NOTES: + +At the end of the build, there will be several files in the top-level +NuttX build directory: + +PASS1: + - nuttx_user.elf - The pass1 user-space ELF file + - nuttx_user.hex - The pass1 Intel HEX format file (selected in defconfig) + - User.map - Symbols in the user-space ELF file + +PASS2: + - nuttx - The pass2 kernel-space ELF file + - nuttx.hex - The pass2 Intel HEX file (selected in defconfig) + - System.map - Symbols in the kernel-space ELF file + +The J-Link programmer will except files in .hex, .mot, .srec, and .bin +formats. + +Combining .hex files. If you plan to use the .hex files with your +debugger or FLASH utility, then you may need to combine the two hex +files into a single .hex file. Here is how you can do that. + +The 'tail' of the nuttx.hex file should look something like this +(with my comments added beginning with #): + +.. code-block:: console:: + + $ tail nuttx.hex + #xx xxxx 00 data records + ... + :10 C93C 00 000000000040184000C2010000000000 90 + :10 C94C 00 2400080000801B4000C01B4000001C40 5D + :10 C95C 00 00401C4000000C4050BF0060FF000100 74 + #xx xxxx 05 Start Linear Address Record + :04 0000 05 6000 02C1 D4 + #xx xxxx 01 End Of File record + :00 0000 01 FF + +Use an editor such as vi to remove the 05 and 01 records. + +The 'head' of the nuttx_user.hex file should look something like +this (again with my comments added beginning with #): + +.. code-block:: console:: + + $ head nuttx_user.hex + #xx xxxx 04 Extended Linear Address Record + :02 0000 04 6020 7A + #xx xxxx 00 data records + :10 0000 00 8905206030002060F2622060FC622060 80 + :10 0010 00 0000242008002420080024205C012420 63 + :10 0020 00 140024203D0020603100206071052060 14 + ... + +Nothing needs to be done here. The nuttx_user.hex file should +be fine. + +Combine the edited nuttx.hex and un-edited nuttx_user.hex +file to produce a single combined hex file: + +.. code-block:: console:: + + $ cat nuttx.hex nuttx_user.hex >combined.hex + +Then use the combined.hex file with the to write the FLASH image. +If you do this a lot, you will probably want to invest a little time +to develop a tool to automate these steps. + +STATUS: This configuration was added on 8 June 2018 primarily to assure +that all of the components are in place to support the PROTECTED mode +build. This configuration, however, has not been verified as of this +writing. + +netnsh +------ + +This configuration is similar to the nsh configuration except that is +has networking enabled, both IPv4 and IPv6. This NSH configuration is +focused on network-related testing. + +nsh +--- + +Configures the NuttShell (nsh) located at examples/nsh. This NSH +configuration is focused on low level, command-line driver testing. +Built-in applications are supported, but none are enabled. This +configuration does not support a network. + +lvgl +---- + +Configures the Littlev graphic library (lvgl) demo located under +examples/lvgldemo. This configuration needs the optional LCD model +RK043FN02H-CT from NXP. The LCD panel comes with the integrated +capacitive touchscreen sensor FT5336GQQ connected to the LPI2C1 bus, +address 0x38. NuttX support such touchscreen device via the driver +ft5x06 (drivers/input/ft5x06.c). At the moment only the polling +method is available, the board features an interrupt line connected +to the touchscreen sensor IC. + +IMXRT1064 MCU provides the integrated LCD driver. + +The LCD panel features: + - size 4.3" + - resolution 480×272 RGB + - backlight driver + - dimensions [mm]: 105.5 (W) x 67.2(H) x 4.35(D) Max. + +To run the lvgl demo please type "lvgldemo" at nsh prompt:: + + nsh> lvgldemo diff --git a/boards/arm/imxrt/imxrt1020-evk/README.txt b/boards/arm/imxrt/imxrt1020-evk/README.txt deleted file mode 100644 index df3277180c7..00000000000 --- a/boards/arm/imxrt/imxrt1020-evk/README.txt +++ /dev/null @@ -1,167 +0,0 @@ -README -====== - -README for NuttX port to the IMXRT1020-EVK, an IMXRT1020 based -board with various capabilities, featuring the NXP -IMXRT1021DAG5A CPU. - - o Processor - - - MIMXRT1021DAG5A processor - - o Memory - - - 256 Mb SDRAM memory - - 64 Mb QSPI Flash - - TF socket for SD card - - o Display and Audio - - - Audio CODEC - - 4-pole audio headphone jack - - External speaker connection - - Microphone - - o Connectivity - - - Micro USB host and OTG connectors - - Ethernet (10/100T) connector - - CAN transceivers - - Arduino® interface - -Serial Console -============== - - The EVK default console is on LPUART1, which is multiplexed onto - the debug port (either OpenSDA or SEGGER JLink). - - It runs at 115200,n,8,1. - -LEDs and Buttons -================ - - There is one user accessible LED status indicator located on the 1020-EVK, - USERLED. The function of the LEDs include: - - D3: Power (Green) & Overpower (Red) - D5: User LED (Green) GPIO_AD_B0_05 - D15: RST LED (Red) - - This LED is not used by the board port unless CONFIG_ARCH_LEDS is - defined. In that case, the usage by the board port is defined in - include/board.h and src/imxrt_autoleds.c. The LED is used to encode - OS-related events as documented in board.h - - --------------------------------------------------- - SYMBOL Meaning USERLED - --------------------------------------------------- - - LED_STARTED NuttX has been started OFF - LED_HEAPALLOCATE Heap has been allocated OFF - LED_IRQSENABLED Interrupts enabled OFF - LED_STACKCREATED Idle stack created ON - LED_INIRQ In an interrupt N/C - LED_SIGNAL In a signal handler N/C - LED_ASSERTION An assertion failed N/C - LED_PANIC The system has crashed FLASH - LED_IDLE Not used - - In addition the LED is illuminated during an interrupt. - - This IMXRT board has three external buttons - - 1. SW2 (IRQ88, ONOFF) Not on a GPIO, No muxing - 2. SW3 (IRQ88, POR) Not on a GPIO, No muxing - 3. SW4 (IRQ88, USER) Wakeup, GPIO5-0 - -Configurations -============== - - Information Common to All Configurations - ---------------------------------------- - - Each i.MX RT 1020 configuration is maintained in a sub-directory and - can be selected as follow: - - tools/configure.sh [OPTIONS] imxrt1020-evk: - - Where typical options are -l to configure to build on Linux or -c to - configure for Cygwin under Linux. 'tools/configure.sh -h' will show - you all of the options. - - Before building, make sure the PATH environment variable include the - correct path to the directory than holds your toolchain binaries. - - And then build NuttX by simply typing the following. At the conclusion of - the make, the nuttx binary will reside in an ELF file called, simply, nuttx. - - make - - The that is provided above as an argument to the tools/configure.sh - must be is one of the following. - - NOTES: - - 1. These configurations use the mconf-based configuration tool. To - change any of these configurations using that tool, you should: - - a. Build and install the kconfig-mconf tool. See nuttx/README.txt - see additional README.txt files in the NuttX tools repository. - - b. Execute 'make menuconfig' in nuttx/ in order to start the - reconfiguration process. - - 2. Unless stated otherwise, all configurations generate console - output on UART1 (i.e. the multiplexed OpenSDA/JLink serial port). - - 3. All of these configurations are set up to build under Windows using the - "GNU Tools for ARM Embedded Processors" that is maintained by ARM - (unless stated otherwise in the description of the configuration). - - https://developer.arm.com/open-source/gnu-toolchain/gnu-rm - - That toolchain selection can easily be reconfigured using - 'make menuconfig'. Here are the relevant current settings: - - Build Setup: - CONFIG_HOST_WINDOWS=y : Window environment - CONFIG_WINDOWS_CYGWIN=y : Cywin under Windows - - System Type -> Toolchain: - CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIW=y : GNU ARM EABI toolchain - -Configuration sub-directories ------------------------------ - - netnsh: - - This configuration is similar to the nsh configuration except that is - has networking enabled, both IPv4 and IPv6. This NSH configuration is - focused on network-related testing. - - NOTES: - - 1. LED support is disabled because there is a conflict between the LED - GPIO and PHY pin usage. - - 2. Telnet is enabled. But since both IPv4 and IPv6 are enabled, it - will default to IPv6. That means that to connect a Telnet session - from a PC, you will need to use the IPv6 address which by defaault - is: - - telnet fc00::2 - - Or, disable IPv4 support so that only IPv4 addressing is used. - - 3. The network monitor is not enabled in this configuration. As a - result, the Ethernet cable must be connected when the board is - powered up. Otherwise, it will stall for a long period of time - before the NSH prompt appears and you will not be able to used - the board. - - nsh: - - Configures the NuttShell (nsh) located at examples/nsh. This NSH - configuration is focused on low level, command-line driver testing. - Built-in applications are supported, but none are enabled. This - configuration does not support a network. diff --git a/boards/arm/imxrt/imxrt1050-evk/README.txt b/boards/arm/imxrt/imxrt1050-evk/README.txt deleted file mode 100644 index 0d4fbec8891..00000000000 --- a/boards/arm/imxrt/imxrt1050-evk/README.txt +++ /dev/null @@ -1,297 +0,0 @@ -README -====== - - This README file provides information about the port of NuttX to the NXP - i.MXRT evaluation kit, MIMXRT1050-EVKB. This board features the - MIMXRT1052DVL6A MCU. Some of the features of this board include: - - o Processor - - - MIMXRT1052DVL6A processor - - o Memory - - - 256 Mb SDRAM memory - - 512 Mb Hyper Flash - - Footprint for QSPI Flash - - TF socket for SD card - - o Display and Audio - - - Parallel LCD connector - - Camera connector - - Audio CODEC - - 4-pole audio headphone jack - - External speaker connection - - Microphone - - SPDIF connector - - o Connectivity - - - Micro USB host and OTG connectors - - Ethernet (10/100T) connector - - CAN transceivers - - Arduino® interface - -Contents -======== - - o Serial Console - o LEDs and buttons - o Configurations - - Configuration sub-directories - -Serial Console -============== - - Virtual console port provided by OpenSDA: - - UART1_TXD GPIO_AD_B0_12 LPUART1_TX - UART1_RXD GPIO_AD_B0_13 LPUART1_RX - - Arduino RS-232 Shield: - - J22 D0 UART_RX/D0 GPIO_AD_B1_07 LPUART3_RX - J22 D1 UART_TX/D1 GPIO_AD_B1_06 LPUART3_TX - -LEDs and buttons -================ - - LEDs - ---- - - There are four LED status indicators located on the EVK Board. The - functions of these LEDs include: - - - Main Power Supply(D3) - Green: DC 5V main supply is normal. - Red: J2 input voltage is over 5.6V. - Off: The board is not powered. - - Reset RED LED(D15) - - OpenSDA LED(D16) - - USER LED(D18) - - Only a single LED, D18, is under software control. It connects to - GPIO_AD_B0_09 which is shared with JTAG_TDI and ENET_RST - - This LED is not used by the board port unless CONFIG_ARCH_LEDS is - defined. In that case, the usage by the board port is defined in - include/board.h and src/imxrt_autoleds.c. The LED is used to encode - OS-related events as follows: - - ------------------- ----------------------- ------ - SYMBOL Meaning LED - ------------------- ----------------------- ------ - LED_STARTED NuttX has been started OFF - LED_HEAPALLOCATE Heap has been allocated OFF - LED_IRQSENABLED Interrupts enabled OFF - LED_STACKCREATED Idle stack created ON - LED_INIRQ In an interrupt N/C - LED_SIGNAL In a signal handler N/C - LED_ASSERTION An assertion failed N/C - LED_PANIC The system has crashed FLASH - - Thus if the LED is statically on, NuttX has successfully booted and is, - apparently, running normally. If the LED is flashing at approximately - 2Hz, then a fatal error has been detected and the system has halted. - - Buttons - ------- - - There are four user interface switches on the MIMXRT1050 EVK Board: - - - SW1: Power Switch (slide switch) - - SW2: ON/OFF Button - - SW3: Reset button - - SW8: User button - - Only the user button is available to the software. It is sensed on the - WAKEUP pin which will be pulled low when the button is pressed. - -Configurations -============== - - Information Common to All Configurations - ---------------------------------------- - Each i.MX RT 10050 configuration is maintained in a sub-directory and - can be selected as follow: - - tools/configure.sh [OPTIONS] imxrt1050-evk: - - Where typical options are -l to configure to build on Linux or -c to - configure for Cygwin under Linux. 'tools/configure.sh -h' will show - you all of the options. - - Before building, make sure the PATH environment variable include the - correct path to the directory than holds your toolchain binaries. - - And then build NuttX by simply typing the following. At the conclusion of - the make, the nuttx binary will reside in an ELF file called, simply, nuttx. - - make - - The that is provided above as an argument to the tools/configure.sh - must be is one of the following. - - NOTES: - - 1. These configurations use the mconf-based configuration tool. To - change any of these configurations using that tool, you should: - - a. Build and install the kconfig-mconf tool. See nuttx/README.txt - see additional README.txt files in the NuttX tools repository. - - b. Execute 'make menuconfig' in nuttx/ in order to start the - reconfiguration process. - - 2. Unless stated otherwise, all configurations generate console - output on UART3 (i.e., for the Arduino serial shield). - - 3. All of these configurations are set up to build under Windows using the - "GNU Tools for ARM Embedded Processors" that is maintained by ARM - (unless stated otherwise in the description of the configuration). - - https://developer.arm.com/open-source/gnu-toolchain/gnu-rm - - That toolchain selection can easily be reconfigured using - 'make menuconfig'. Here are the relevant current settings: - - Build Setup: - CONFIG_HOST_WINDOWS=y : Window environment - CONFIG_WINDOWS_CYGWIN=y : Cywin under Windows - - System Type -> Toolchain: - CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIW=y : GNU ARM EABI toolchain - -Configuration sub-directories ------------------------------ - - knsh: - - This is identical to the nsh configuration below except that NuttX - is built as a protected mode, monolithic module and the user applications - are built separately. It is recommends to use a special make command; - not just 'make' but make with the following two arguments: - - make pass1 pass2 - - In the normal case (just 'make'), make will attempt to build both user- - and kernel-mode blobs more or less interleaved. This actual works! - However, for me it is very confusing so I prefer the above make command: - Make the user-space binaries first (pass1), then make the kernel-space - binaries (pass2) - - NOTES: - - 1. At the end of the build, there will be several files in the top-level - NuttX build directory: - - PASS1: - nuttx_user.elf - The pass1 user-space ELF file - nuttx_user.hex - The pass1 Intel HEX format file (selected in defconfig) - User.map - Symbols in the user-space ELF file - - PASS2: - nuttx - The pass2 kernel-space ELF file - nuttx.hex - The pass2 Intel HEX file (selected in defconfig) - System.map - Symbols in the kernel-space ELF file - - The J-Link programmer will except files in .hex, .mot, .srec, and .bin - formats. - - 2. Combining .hex files. If you plan to use the .hex files with your - debugger or FLASH utility, then you may need to combine the two hex - files into a single .hex file. Here is how you can do that. - - a. The 'tail' of the nuttx.hex file should look something like this - (with my comments added beginning with #): - - $ tail nuttx.hex - #xx xxxx 00 data records - ... - :10 C93C 00 000000000040184000C2010000000000 90 - :10 C94C 00 2400080000801B4000C01B4000001C40 5D - :10 C95C 00 00401C4000000C4050BF0060FF000100 74 - #xx xxxx 05 Start Linear Address Record - :04 0000 05 6000 02C1 D4 - #xx xxxx 01 End Of File record - :00 0000 01 FF - - Use an editor such as vi to remove the 05 and 01 records. - - b. The 'head' of the nuttx_user.hex file should look something like - this (again with my comments added beginning with #): - - $ head nuttx_user.hex - #xx xxxx 04 Extended Linear Address Record - :02 0000 04 6020 7A - #xx xxxx 00 data records - :10 0000 00 8905206030002060F2622060FC622060 80 - :10 0010 00 0000242008002420080024205C012420 63 - :10 0020 00 140024203D0020603100206071052060 14 - ... - - Nothing needs to be done here. The nuttx_user.hex file should - be fine. - - c. Combine the edited nuttx.hex and un-edited nuttx_user.hex - file to produce a single combined hex file: - - $ cat nuttx.hex nuttx_user.hex >combined.hex - - Then use the combined.hex file with the to write the FLASH image. - If you do this a lot, you will probably want to invest a little time - to develop a tool to automate these steps. - - STATUS: This configuration was added on 8 June 2018 primarily to assure - that all of the components are in place to support the PROTECTED mode - build. This configuration, however, has not been verified as of this - writing. - - netnsh: - - This configuration is similar to the nsh configuration except that is - has networking enabled, both IPv4 and IPv6. This NSH configuration is - focused on network-related testing. - - NOTES: - - 1. LED support is disabled because there is a conflict between the LED - GPIO and PHY pin usage. - - 2. Telnet is enabled. But since both IPv4 and IPv6 are enabled, it - will default to IPv6. That means that to connect a Telnet session - from a PC, you will need to use the IPv6 address which by defaault - is: - - telnet fc00::2 - - Or, disable IPv4 support so that only IPv4 addressing is used. - - 3. The network monitor is not enabled in this configuration. As a - result, the Ethernet cable must be connected when the board is - powered up. Otherwise, it will stall for a long period of time - before the NSH prompt appears and you will not be able to used - the board. - - The following configuration options should be added to your - configuration in order to use the network monitor: - - CONFIG_IMXRT_ENET_PHYINIT=y - CONFIG_IMXRT_GPIO1_0_15_IRQ=y - CONFIG_IMXRT_GPIO_IRQ=y - CONFIG_NETDEV_IOCTL=y - CONFIG_NETDEV_PHY_IOCTL=y - CONFIG_NSH_NETINIT_MONITOR=y - CONFIG_NSH_NETINIT_RETRYMSEC=2000 - CONFIG_NSH_NETINIT_SIGNO=18 - CONFIG_NSH_NETINIT_THREAD=y - CONFIG_NSH_NETINIT_THREAD_PRIORITY=80 - CONFIG_NSH_NETINIT_THREAD_STACKSIZE=1568 - - nsh: - - Configures the NuttShell (nsh) located at examples/nsh. This NSH - configuration is focused on low level, command-line driver testing. - Built-in applications are supported, but none are enabled. This - configuration does not support a network. diff --git a/boards/arm/imxrt/imxrt1060-evk/README.txt b/boards/arm/imxrt/imxrt1060-evk/README.txt deleted file mode 100644 index 2cf84946602..00000000000 --- a/boards/arm/imxrt/imxrt1060-evk/README.txt +++ /dev/null @@ -1,363 +0,0 @@ -README -====== - - This README file provides information about the port of NuttX to the NXP - i.MXRT evaluation kit, MIMXRT1060-EVK. This board features the - MIMXRT1062DVL6A MCU. Some of the features of this board include: - - o Processor - - - MIMXRT1062DVL6A processor - - o Memory - - - 1 Mb OCRAM memory - - 256 Mb SDRAM memory - - 512 Mb Hyper Flash - Populated but 0 ohm DNP - - 64 Mb QSPI Flash - - TF socket for SD card - - o Display and Audio - - - Parallel LCD connector - - Camera connector - - Audio CODEC - - 4-pole audio headphone jack - - External speaker connection - - Microphone - - SPDIF connector - - o Connectivity - - - Micro USB host and OTG connectors - - Ethernet (10/100T) connector - - CAN transceivers - - Arduino® interface - - o Sensors - - - FXOS8700CQ 6-Axis Ecompass (3-Axis Mag, 3-Axis Accel) - -Contents -======== - - o Serial Console - o LEDs and buttons - o J-Link External Debug Probe - o Configurations - - Configuration sub-directories - -Serial Console -============== - - Virtual console port provided by OpenSDA: - - UART1_TXD GPIO_AD_B0_12 LPUART1_TX - UART1_RXD GPIO_AD_B0_13 LPUART1_RX - - Arduino RS-232 Shield: - - J22 D0 UART_RX/D0 GPIO_AD_B1_07 LPUART3_RX - J22 D1 UART_TX/D1 GPIO_AD_B1_06 LPUART3_TX - -LEDs and buttons -================ - - LEDs - ---- - - There are four LED status indicators located on the EVK Board. The - functions of these LEDs include: - - - Main Power Supply(D3) - Green: DC 5V main supply is normal. - Red: J2 input voltage is over 5.6V. - Off: The board is not powered. - - Reset RED LED(D21) - - OpenSDA LED(D20) - - USER LED(D18) - - Only a single LED, D18, is under software control. It connects to - GPIO_AD_B0_09 which is shared with JTAG_TDI and ENET_RST - - This LED is not used by the board port unless CONFIG_ARCH_LEDS is - defined. In that case, the usage by the board port is defined in - include/board.h and src/imxrt_autoleds.c. The LED is used to encode - OS-related events as follows: - - ------------------- ----------------------- ------ - SYMBOL Meaning LED - ------------------- ----------------------- ------ - LED_STARTED NuttX has been started OFF - LED_HEAPALLOCATE Heap has been allocated OFF - LED_IRQSENABLED Interrupts enabled OFF - LED_STACKCREATED Idle stack created ON - LED_INIRQ In an interrupt N/C - LED_SIGNAL In a signal handler N/C - LED_ASSERTION An assertion failed N/C - LED_PANIC The system has crashed FLASH - - Thus if the LED is statically on, NuttX has successfully booted and is, - apparently, running normally. If the LED is flashing at approximately - 2Hz, then a fatal error has been detected and the system has halted. - - Buttons - ------- - - There are four user interface switches on the MIMXRT1050 EVK Board: - - - SW1: Power Switch (slide switch fir power from J2) - - SW2: ON/OFF Button - - SW3: Power-on Reset button state forces to reset the system power except - SNVS domain - - SW9: Reset button - - SW8: User button GPIO5-00 - - Only the user button is available to the software. It is sensed on the - WAKEUP pin which will be pulled low when the button is pressed. - - -J-Link External Debug Probe -=========================== - - Install the J-Link Debug Host Tools and make sure they are in your search path. - - Attach a J-Link 20-pin connector to J21. Check that jumpers J47 and J48 are - off (they are on by default when boards ship from the factory) to ensure SWD - signals are disconnected from the OpenSDA microcontroller. - -Configurations -============== - - Information Common to All Configurations - ---------------------------------------- - Each i.MX RT 1060 configuration is maintained in a sub-directory and - can be selected as follow: - - tools/configure.sh [OPTIONS] imxrt1060-evk: - - Where typical options are -l to configure to build on Linux or -c to - configure for Cygwin under Linux. 'tools/configure.sh -h' will show - you all of the options. - - Before building, make sure the PATH environment variable include the - correct path to the directory than holds your toolchain binaries. - - And then build NuttX by simply typing the following. At the conclusion of - the make, the nuttx binary will reside in an ELF file called, simply, nuttx. - - make - - The that is provided above as an argument to the tools/configure.sh - must be is one of the following. - - NOTES: - - 1. These configurations use the mconf-based configuration tool. To - change any of these configurations using that tool, you should: - - a. Build and install the kconfig-mconf tool. See nuttx/README.txt - see additional README.txt files in the NuttX tools repository. - - b. Execute 'make menuconfig' in nuttx/ in order to start the - reconfiguration process. - - 2. Unless stated otherwise, all configurations generate console - output on UART3 (i.e., for the Arduino serial shield). - - 3. All of these configurations are set up to build under Windows using the - "GNU Tools for ARM Embedded Processors" that is maintained by ARM - (unless stated otherwise in the description of the configuration). - - https://developer.arm.com/open-source/gnu-toolchain/gnu-rm - - That toolchain selection can easily be reconfigured using - 'make menuconfig'. Here are the relevant current settings: - - Build Setup: - CONFIG_HOST_WINDOWS=y : Window environment - CONFIG_WINDOWS_CYGWIN=y : Cywin under Windows - - System Type -> Toolchain: - CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIW=y : GNU ARM EABI toolchain - -Configuration sub-directories ------------------------------ - - can: - - This is an nsh configuration (see below) with added support of CAN driver. - FlexCAN3 is chosen as default, the change can be made at System type peripheral - selection. Please note that only FlexCAN3 and FlexCAN2 is available on this board. - - Bitrate and sample point can be also changed at System type peripheral selection, - basic values are 1 MHz for bitrate and 0.80 for sample point. The FlexCAN driver - for imxrt runs at 80 MHz clock frequency. - - The configuration also includes CAN utilities as candump and cansend. - - canfd: - - This is an nsh configuration (see below) with added support of CAN_FD driver. - FlexCAN3 is chosen as default, please note that only FlexCAN3 is capable of - providing CAN_FD support. - - Bitrate and sample point can be also changed at System type peripheral selection, - basic values are 1 MHz for bitrate and 0.80 for sample point for arbitration phase - and 4 MHz (bitrate) and 0.90 (sample point) for data phase. The FlexCAN driver - for imxrt runs at 80 MHz clock frequency. - - The configuration also includes CAN utilities as candump and cansend. - - knsh: - - This is identical to the nsh configuration below except that NuttX - is built as a protected mode, monolithic module and the user applications - are built separately. It is recommends to use a special make command; - not just 'make' but make with the following two arguments: - - make pass1 pass2 - - In the normal case (just 'make'), make will attempt to build both user- - and kernel-mode blobs more or less interleaved. This actual works! - However, for me it is very confusing so I prefer the above make command: - Make the user-space binaries first (pass1), then make the kernel-space - binaries (pass2) - - NOTES: - - 1. At the end of the build, there will be several files in the top-level - NuttX build directory: - - PASS1: - nuttx_user.elf - The pass1 user-space ELF file - nuttx_user.hex - The pass1 Intel HEX format file (selected in defconfig) - User.map - Symbols in the user-space ELF file - - PASS2: - nuttx - The pass2 kernel-space ELF file - nuttx.hex - The pass2 Intel HEX file (selected in defconfig) - System.map - Symbols in the kernel-space ELF file - - The J-Link programmer will except files in .hex, .mot, .srec, and .bin - formats. - - 2. Combining .hex files. If you plan to use the .hex files with your - debugger or FLASH utility, then you may need to combine the two hex - files into a single .hex file. Here is how you can do that. - - a. The 'tail' of the nuttx.hex file should look something like this - (with my comments added beginning with #): - - $ tail nuttx.hex - #xx xxxx 00 data records - ... - :10 C93C 00 000000000040184000C2010000000000 90 - :10 C94C 00 2400080000801B4000C01B4000001C40 5D - :10 C95C 00 00401C4000000C4050BF0060FF000100 74 - #xx xxxx 05 Start Linear Address Record - :04 0000 05 6000 02C1 D4 - #xx xxxx 01 End Of File record - :00 0000 01 FF - - Use an editor such as vi to remove the 05 and 01 records. - - b. The 'head' of the nuttx_user.hex file should look something like - this (again with my comments added beginning with #): - - $ head nuttx_user.hex - #xx xxxx 04 Extended Linear Address Record - :02 0000 04 6020 7A - #xx xxxx 00 data records - :10 0000 00 8905206030002060F2622060FC622060 80 - :10 0010 00 0000242008002420080024205C012420 63 - :10 0020 00 140024203D0020603100206071052060 14 - ... - - Nothing needs to be done here. The nuttx_user.hex file should - be fine. - - c. Combine the edited nuttx.hex and un-edited nuttx_user.hex - file to produce a single combined hex file: - - $ cat nuttx.hex nuttx_user.hex >combined.hex - - Then use the combined.hex file with the to write the FLASH image. - If you do this a lot, you will probably want to invest a little time - to develop a tool to automate these steps. - - STATUS: This configuration was added on 8 June 2018 primarily to assure - that all of the components are in place to support the PROTECTED mode - build. This configuration, however, has not been verified as of this - writing. - - netnsh: - - This configuration is similar to the nsh configuration except that is - has networking enabled, both IPv4 and IPv6. This NSH configuration is - focused on network-related testing. - - NOTES: - - 1. LED support is disabled because there is a conflict between the LED - GPIO and PHY pin usage. - - 2. Telnet is enabled. But since both IPv4 and IPv6 are enabled, it - will default to IPv6. That means that to connect a Telnet session - from a PC, you will need to use the IPv6 address which by defaault - is: - - telnet fc00::2 - - Or, disable IPv4 support so that only IPv4 addressing is used. - - 3. The network monitor is not enabled in this configuration. As a - result, the Ethernet cable must be connected when the board is - powered up. Otherwise, it will stall for a long period of time - before the NSH prompt appears and you will not be able to used - the board. - - The following configuration options should be added to your - configuration in order to use the network monitor: - - CONFIG_IMXRT_ENET_PHYINIT=y - CONFIG_IMXRT_GPIO1_0_15_IRQ=y - CONFIG_IMXRT_GPIO_IRQ=y - CONFIG_NETDEV_IOCTL=y - CONFIG_NETDEV_PHY_IOCTL=y - CONFIG_NSH_NETINIT_MONITOR=y - CONFIG_NSH_NETINIT_RETRYMSEC=2000 - CONFIG_NSH_NETINIT_SIGNO=18 - CONFIG_NSH_NETINIT_THREAD=y - CONFIG_NSH_NETINIT_THREAD_PRIORITY=80 - CONFIG_NSH_NETINIT_THREAD_STACKSIZE=1568 - - nsh: - - Configures the NuttShell (nsh) located at examples/nsh. This NSH - configuration is focused on low level, command-line driver testing. - Built-in applications are supported, but none are enabled. This - configuration does not support a network. - - lvgl: - - Configures the Littlev graphic library (lvgl) demo located under - examples/lvgldemo. This configuration needs the optional LCD model - RK043FN02H-CT from NXP. The LCD panel comes with the integrated - capacitive touchscreen sensor FT5336GQQ connected to the LPI2C1 bus, - address 0x38. NuttX support such touchscreen device via the driver - ft5x06 (drivers/input/ft5x06.c). At the moment only the polling - method is available, the board features an interrupt line connected - to the touchscreen sensor IC. - - IMXRT1062 MCU provides the integrated LCD driver. - - The LCD panel features: - - size 4.3" - - resolution 480×272 RGB - - backlight driver - - dimensions [mm]: 105.5 (W) x 67.2(H) x 4.35(D) Max. - - To run the lvgl demo please type "lvgldemo" at nsh prompt: - - nsh> lvgldemo diff --git a/boards/arm/imxrt/imxrt1064-evk/README.txt b/boards/arm/imxrt/imxrt1064-evk/README.txt deleted file mode 100644 index 0947793acf7..00000000000 --- a/boards/arm/imxrt/imxrt1064-evk/README.txt +++ /dev/null @@ -1,363 +0,0 @@ -README -====== - - This README file provides information about the port of NuttX to the NXP - i.MXRT evaluation kit, MIMXRT1064-EVK. This board features the - MIMXRT1064DVL6A MCU. Some of the features of this board include: - - o Processor - - - MIMXRT1066DVL6A processor - - o Memory - - - 1 Mb OCRAM memory - - 256 Mb SDRAM memory - - 512 Mb Hyper Flash - Populated but 0 ohm DNP - - 64 Mb QSPI Flash - - TF socket for SD card - - o Display and Audio - - - Parallel LCD connector - - Camera connector - - Audio CODEC - - 4-pole audio headphone jack - - External speaker connection - - Microphone - - SPDIF connector - - o Connectivity - - - Micro USB host and OTG connectors - - Ethernet (10/100T) connector - - CAN transceivers - - Arduino® interface - - o Sensors - - - FXOS8700CQ 6-Axis Ecompass (3-Axis Mag, 3-Axis Accel) - -Contents -======== - - o Serial Console - o LEDs and buttons - o J-Link External Debug Probe - o Configurations - - Configuration sub-directories - -Serial Console -============== - - Virtual console port provided by OpenSDA: - - UART1_TXD GPIO_AD_B0_12 LPUART1_TX - UART1_RXD GPIO_AD_B0_13 LPUART1_RX - - Arduino RS-232 Shield: - - J22 D0 UART_RX/D0 GPIO_AD_B1_07 LPUART3_RX - J22 D1 UART_TX/D1 GPIO_AD_B1_06 LPUART3_TX - -LEDs and buttons -================ - - LEDs - ---- - - There are four LED status indicators located on the EVK Board. The - functions of these LEDs include: - - - Main Power Supply(D3) - Green: DC 5V main supply is normal. - Red: J2 input voltage is over 5.6V. - Off: The board is not powered. - - Reset RED LED(D21) - - OpenSDA LED(D20) - - USER LED(D18) - - Only a single LED, D18, is under software control. It connects to - GPIO_AD_B0_09 which is shared with JTAG_TDI and ENET_RST - - This LED is not used by the board port unless CONFIG_ARCH_LEDS is - defined. In that case, the usage by the board port is defined in - include/board.h and src/imxrt_autoleds.c. The LED is used to encode - OS-related events as follows: - - ------------------- ----------------------- ------ - SYMBOL Meaning LED - ------------------- ----------------------- ------ - LED_STARTED NuttX has been started OFF - LED_HEAPALLOCATE Heap has been allocated OFF - LED_IRQSENABLED Interrupts enabled OFF - LED_STACKCREATED Idle stack created ON - LED_INIRQ In an interrupt N/C - LED_SIGNAL In a signal handler N/C - LED_ASSERTION An assertion failed N/C - LED_PANIC The system has crashed FLASH - - Thus if the LED is statically on, NuttX has successfully booted and is, - apparently, running normally. If the LED is flashing at approximately - 2Hz, then a fatal error has been detected and the system has halted. - - Buttons - ------- - - There are four user interface switches on the MIMXRT1050 EVK Board: - - - SW1: Power Switch (slide switch fir power from J2) - - SW2: ON/OFF Button - - SW3: Power-on Reset button state forces to reset the system power except - SNVS domain - - SW9: Reset button - - SW8: User button GPIO5-00 - - Only the user button is available to the software. It is sensed on the - WAKEUP pin which will be pulled low when the button is pressed. - - -J-Link External Debug Probe -=========================== - - Install the J-Link Debug Host Tools and make sure they are in your search path. - - Attach a J-Link 20-pin connector to J21. Check that jumpers J47 and J48 are - off (they are on by default when boards ship from the factory) to ensure SWD - signals are disconnected from the OpenSDA microcontroller. - -Configurations -============== - - Information Common to All Configurations - ---------------------------------------- - Each i.MX RT 1064 configuration is maintained in a sub-directory and - can be selected as follow: - - tools/configure.sh [OPTIONS] imxrt1064-evk: - - Where typical options are -l to configure to build on Linux or -c to - configure for Cygwin under Linux. 'tools/configure.sh -h' will show - you all of the options. - - Before building, make sure the PATH environment variable include the - correct path to the directory than holds your toolchain binaries. - - And then build NuttX by simply typing the following. At the conclusion of - the make, the nuttx binary will reside in an ELF file called, simply, nuttx. - - make - - The that is provided above as an argument to the tools/configure.sh - must be is one of the following. - - NOTES: - - 1. These configurations use the mconf-based configuration tool. To - change any of these configurations using that tool, you should: - - a. Build and install the kconfig-mconf tool. See nuttx/README.txt - see additional README.txt files in the NuttX tools repository. - - b. Execute 'make menuconfig' in nuttx/ in order to start the - reconfiguration process. - - 2. Unless stated otherwise, all configurations generate console - output on UART3 (i.e., for the Arduino serial shield). - - 3. All of these configurations are set up to build under Windows using the - "GNU Tools for ARM Embedded Processors" that is maintained by ARM - (unless stated otherwise in the description of the configuration). - - https://developer.arm.com/open-source/gnu-toolchain/gnu-rm - - That toolchain selection can easily be reconfigured using - 'make menuconfig'. Here are the relevant current settings: - - Build Setup: - CONFIG_HOST_WINDOWS=y : Window environment - CONFIG_WINDOWS_CYGWIN=y : Cywin under Windows - - System Type -> Toolchain: - CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIW=y : GNU ARM EABI toolchain - -Configuration sub-directories ------------------------------ - - can: - - This is an nsh configuration (see below) with added support of CAN driver. - FlexCAN3 is chosen as default, the change can be made at System type peripheral - selection. Please note that only FlexCAN3 and FlexCAN2 is available on this board. - - Bitrate and sample point can be also changed at System type peripheral selection, - basic values are 1 MHz for bitrate and 0.80 for sample point. The FlexCAN driver - for imxrt runs at 80 MHz clock frequency. - - The configuration also includes CAN utilities as candump and cansend. - - canfd: - - This is an nsh configuration (see below) with added support of CAN_FD driver. - FlexCAN3 is chosen as default, please note that only FlexCAN3 is capable of - providing CAN_FD support. - - Bitrate and sample point can be also changed at System type peripheral selection, - basic values are 1 MHz for bitrate and 0.80 for sample point for arbitration phase - and 4 MHz (bitrate) and 0.90 (sample point) for data phase. The FlexCAN driver - for imxrt runs at 80 MHz clock frequency. - - The configuration also includes CAN utilities as candump and cansend. - - knsh: - - This is identical to the nsh configuration below except that NuttX - is built as a protected mode, monolithic module and the user applications - are built separately. It is recommends to use a special make command; - not just 'make' but make with the following two arguments: - - make pass1 pass2 - - In the normal case (just 'make'), make will attempt to build both user- - and kernel-mode blobs more or less interleaved. This actual works! - However, for me it is very confusing so I prefer the above make command: - Make the user-space binaries first (pass1), then make the kernel-space - binaries (pass2) - - NOTES: - - 1. At the end of the build, there will be several files in the top-level - NuttX build directory: - - PASS1: - nuttx_user.elf - The pass1 user-space ELF file - nuttx_user.hex - The pass1 Intel HEX format file (selected in defconfig) - User.map - Symbols in the user-space ELF file - - PASS2: - nuttx - The pass2 kernel-space ELF file - nuttx.hex - The pass2 Intel HEX file (selected in defconfig) - System.map - Symbols in the kernel-space ELF file - - The J-Link programmer will except files in .hex, .mot, .srec, and .bin - formats. - - 2. Combining .hex files. If you plan to use the .hex files with your - debugger or FLASH utility, then you may need to combine the two hex - files into a single .hex file. Here is how you can do that. - - a. The 'tail' of the nuttx.hex file should look something like this - (with my comments added beginning with #): - - $ tail nuttx.hex - #xx xxxx 00 data records - ... - :10 C93C 00 000000000040184000C2010000000000 90 - :10 C94C 00 2400080000801B4000C01B4000001C40 5D - :10 C95C 00 00401C4000000C4050BF0060FF000100 74 - #xx xxxx 05 Start Linear Address Record - :04 0000 05 6000 02C1 D4 - #xx xxxx 01 End Of File record - :00 0000 01 FF - - Use an editor such as vi to remove the 05 and 01 records. - - b. The 'head' of the nuttx_user.hex file should look something like - this (again with my comments added beginning with #): - - $ head nuttx_user.hex - #xx xxxx 04 Extended Linear Address Record - :02 0000 04 6020 7A - #xx xxxx 00 data records - :10 0000 00 8905206030002060F2622060FC622060 80 - :10 0010 00 0000242008002420080024205C012420 63 - :10 0020 00 140024203D0020603100206071052060 14 - ... - - Nothing needs to be done here. The nuttx_user.hex file should - be fine. - - c. Combine the edited nuttx.hex and un-edited nuttx_user.hex - file to produce a single combined hex file: - - $ cat nuttx.hex nuttx_user.hex >combined.hex - - Then use the combined.hex file with the to write the FLASH image. - If you do this a lot, you will probably want to invest a little time - to develop a tool to automate these steps. - - STATUS: This configuration was added on 8 June 2018 primarily to assure - that all of the components are in place to support the PROTECTED mode - build. This configuration, however, has not been verified as of this - writing. - - netnsh: - - This configuration is similar to the nsh configuration except that is - has networking enabled, both IPv4 and IPv6. This NSH configuration is - focused on network-related testing. - - NOTES: - - 1. LED support is disabled because there is a conflict between the LED - GPIO and PHY pin usage. - - 2. Telnet is enabled. But since both IPv4 and IPv6 are enabled, it - will default to IPv6. That means that to connect a Telnet session - from a PC, you will need to use the IPv6 address which by defaault - is: - - telnet fc00::2 - - Or, disable IPv4 support so that only IPv4 addressing is used. - - 3. The network monitor is not enabled in this configuration. As a - result, the Ethernet cable must be connected when the board is - powered up. Otherwise, it will stall for a long period of time - before the NSH prompt appears and you will not be able to used - the board. - - The following configuration options should be added to your - configuration in order to use the network monitor: - - CONFIG_IMXRT_ENET_PHYINIT=y - CONFIG_IMXRT_GPIO1_0_15_IRQ=y - CONFIG_IMXRT_GPIO_IRQ=y - CONFIG_NETDEV_IOCTL=y - CONFIG_NETDEV_PHY_IOCTL=y - CONFIG_NSH_NETINIT_MONITOR=y - CONFIG_NSH_NETINIT_RETRYMSEC=2000 - CONFIG_NSH_NETINIT_SIGNO=18 - CONFIG_NSH_NETINIT_THREAD=y - CONFIG_NSH_NETINIT_THREAD_PRIORITY=80 - CONFIG_NSH_NETINIT_THREAD_STACKSIZE=1568 - - nsh: - - Configures the NuttShell (nsh) located at examples/nsh. This NSH - configuration is focused on low level, command-line driver testing. - Built-in applications are supported, but none are enabled. This - configuration does not support a network. - - lvgl: - - Configures the Littlev graphic library (lvgl) demo located under - examples/lvgldemo. This configuration needs the optional LCD model - RK043FN02H-CT from NXP. The LCD panel comes with the integrated - capacitive touchscreen sensor FT5336GQQ connected to the LPI2C1 bus, - address 0x38. NuttX support such touchscreen device via the driver - ft5x06 (drivers/input/ft5x06.c). At the moment only the polling - method is available, the board features an interrupt line connected - to the touchscreen sensor IC. - - IMXRT1062 MCU provides the integrated LCD driver. - - The LCD panel features: - - size 4.3" - - resolution 480×272 RGB - - backlight driver - - dimensions [mm]: 105.5 (W) x 67.2(H) x 4.35(D) Max. - - To run the lvgl demo please type "lvgldemo" at nsh prompt: - - nsh> lvgldemo From d6227623b78ea213a8627edbbdbcfebc357b12ea Mon Sep 17 00:00:00 2001 From: Michal Lenc Date: Thu, 29 Apr 2021 17:41:11 +0200 Subject: [PATCH 098/739] Documentation/platforms: fix docs style and add photo for imxrt1060-evk board Signed-off-by: Michal Lenc --- .../arm/imxrt/boards/imxrt1020-evk/index.rst | 20 ++- .../arm/imxrt/boards/imxrt1050-evk/index.rst | 125 +++-------------- .../imxrt1060-evk/imxrt1060-evk-front.jpg | Bin 0 -> 109235 bytes .../arm/imxrt/boards/imxrt1060-evk/index.rst | 132 ++++-------------- .../arm/imxrt/boards/imxrt1064-evk/index.rst | 39 +++--- 5 files changed, 88 insertions(+), 228 deletions(-) create mode 100644 Documentation/platforms/arm/imxrt/boards/imxrt1060-evk/imxrt1060-evk-front.jpg diff --git a/Documentation/platforms/arm/imxrt/boards/imxrt1020-evk/index.rst b/Documentation/platforms/arm/imxrt/boards/imxrt1020-evk/index.rst index 67e53f43d6b..922e062ea0f 100644 --- a/Documentation/platforms/arm/imxrt/boards/imxrt1020-evk/index.rst +++ b/Documentation/platforms/arm/imxrt/boards/imxrt1020-evk/index.rst @@ -3,7 +3,7 @@ i.MX RT1020 EVK =============== `i.MX RT1020 EVK `_ -is an evaluation kit by NXP company. This kit uses the i.MX RT1020 crossover MCU in LQFP144 package with Arm Cortex M7 core. +is an evaluation kit by NXP company. This kit uses the i.MX RT1020 crossover MCU in LQFP144 package with ARM Cortex M7 core. Features ======== @@ -42,9 +42,13 @@ LEDs There is one user accessible LED status indicator located on the 1020-EVK, USERLED. The function of the LEDs include: -- D3: Power (Green) & Overpower (Red) -- D5: User LED (Green) GPIO_AD_B0_05 -- D15: RST LED (Red) +=== ============ ====== +Pin Description Colour +=== ============ ====== +D3 Power Supply Green +D5 User LED Green +D15 Reset LED Red +=== ============ ====== This LED is not used by the board port unless CONFIG_ARCH_LEDS is defined. In that case, the usage by the board port is defined in @@ -74,9 +78,11 @@ Buttons This IMXRT board has three external buttons -- SW2 (IRQ88, ONOFF) Not on a GPIO, No muxing -- SW3 (IRQ88, POR) Not on a GPIO, No muxing -- SW4 (IRQ88, USER) Wakeup, GPIO5-0 +=== ============== ======================== +SW2 (IRQ88, ONOFF) Not on a GPIO, No muxing +SW3 (IRQ88, POR) Not on a GPIO, No muxing +SW4 (IRQ88, USER) Wakeup, GPIO5-0 +=== ============== ======================== Configurations ============== diff --git a/Documentation/platforms/arm/imxrt/boards/imxrt1050-evk/index.rst b/Documentation/platforms/arm/imxrt/boards/imxrt1050-evk/index.rst index 1bbc7dc118c..ad90ec80e52 100644 --- a/Documentation/platforms/arm/imxrt/boards/imxrt1050-evk/index.rst +++ b/Documentation/platforms/arm/imxrt/boards/imxrt1050-evk/index.rst @@ -3,7 +3,7 @@ i.MX RT1050 EVK =============== `i.MX RT1050 EVK `_ -is an evaluation kit by NXP company. This kit uses the i.MX RT1050 crossover MCU with Arm Cortex M7 core. +is an evaluation kit by NXP company. This kit uses the i.MX RT1050 crossover MCU with ARM Cortex M7 core. Features ======== @@ -34,13 +34,17 @@ Serial Console Virtual console port provided by OpenSDA: -- UART1_TXD GPIO_AD_B0_12 LPUART1_TX -- UART1_RXD GPIO_AD_B0_13 LPUART1_RX +========= ============= ========== +UART1_TXD GPIO_AD_B0_12 LPUART1_TX +UART1_RXD GPIO_AD_B0_13 LPUART1_RX +========= ============= ========== Arduino RS-232 Shield: -- J22 D0 UART_RX/D0 GPIO_AD_B1_07 LPUART3_RX -- J22 D1 UART_TX/D1 GPIO_AD_B1_06 LPUART3_TX +=== == ======= ============= ========== +J22 D0 UART_RX GPIO_AD_B1_07 LPUART3_RX +J22 D1 UART_TX GPIO_AD_B1_06 LPUART3_TX +=== == ======= ============= ========== LEDs and buttons ================ @@ -51,13 +55,14 @@ LEDs There are four LED status indicators located on the EVK Board. The functions of these LEDs include: -- Main Power Supply(D3) - - Green: DC 5V main supply is normal. - - Red: J2 input voltage is over 5.6V. - - Off: The board is not powered. -- Reset RED LED(D15) -- OpenSDA LED(D16) -- USER LED(D18) +=== ============ +Pin Description +=== ============ +D3 Power Supply +D15 Reset LED +D16 OpenSDA +D18 User LED +=== ============ Only a single LED, D18, is under software control. It connects to GPIO_AD_B0_09 which is shared with JTAG_TDI and ENET_RST @@ -89,10 +94,10 @@ Buttons There are four user interface switches on the MIMXRT1050 EVK Board: -- SW1: Power Switch (slide switch) -- SW2: ON/OFF Button -- SW3: Reset button -- SW8: User button + - SW1: Power Switch (slide switch) + - SW2: ON/OFF Button + - SW3: Reset button + - SW8: User button Only the user button is available to the software. It is sensed on the WAKEUP pin which will be pulled low when the button is pressed. @@ -105,92 +110,8 @@ knsh This is identical to the nsh configuration below except that NuttX is built as a protected mode, monolithic module and the user applications -are built separately. It is recommends to use a special make command; -not just 'make' but make with the following two arguments: - -.. code-block:: console - - $ make pass1 pass2 - -In the normal case (just 'make'), make will attempt to build both user- -and kernel-mode blobs more or less interleaved. This actual works! -However, for me it is very confusing so I prefer the above make command: -Make the user-space binaries first (pass1), then make the kernel-space -binaries (pass2) - -NOTES: - -At the end of the build, there will be several files in the top-level -NuttX build directory: - -PASS1: - - nuttx_user.elf - The pass1 user-space ELF file - - nuttx_user.hex - The pass1 Intel HEX format file (selected in defconfig) - - User.map - Symbols in the user-space ELF file - -PASS2: - - nuttx - The pass2 kernel-space ELF file - - nuttx.hex - The pass2 Intel HEX file (selected in defconfig) - - System.map - Symbols in the kernel-space ELF file - -The J-Link programmer will except files in .hex, .mot, .srec, and .bin -formats. - -Combining .hex files. If you plan to use the .hex files with your -debugger or FLASH utility, then you may need to combine the two hex -files into a single .hex file. Here is how you can do that. - -The 'tail' of the nuttx.hex file should look something like this -(with my comments added beginning with #): - -.. code-block:: console:: - - $ tail nuttx.hex - #xx xxxx 00 data records - ... - :10 C93C 00 000000000040184000C2010000000000 90 - :10 C94C 00 2400080000801B4000C01B4000001C40 5D - :10 C95C 00 00401C4000000C4050BF0060FF000100 74 - #xx xxxx 05 Start Linear Address Record - :04 0000 05 6000 02C1 D4 - #xx xxxx 01 End Of File record - :00 0000 01 FF - -Use an editor such as vi to remove the 05 and 01 records. - -The 'head' of the nuttx_user.hex file should look something like -this (again with my comments added beginning with #): - -.. code-block:: console:: - - $ head nuttx_user.hex - #xx xxxx 04 Extended Linear Address Record - :02 0000 04 6020 7A - #xx xxxx 00 data records - :10 0000 00 8905206030002060F2622060FC622060 80 - :10 0010 00 0000242008002420080024205C012420 63 - :10 0020 00 140024203D0020603100206071052060 14 - ... - -Nothing needs to be done here. The nuttx_user.hex file should -be fine. - -Combine the edited nuttx.hex and un-edited nuttx_user.hex -file to produce a single combined hex file: - -.. code-block:: console:: - - $ cat nuttx.hex nuttx_user.hex >combined.hex - -Then use the combined.hex file with the to write the FLASH image. -If you do this a lot, you will probably want to invest a little time -to develop a tool to automate these steps. - -STATUS: This configuration was added on 8 June 2018 primarily to assure -that all of the components are in place to support the PROTECTED mode -build. This configuration, however, has not been verified as of this -writing. - +are built separately. For further information about compiling and +running this configuration please refer to imxrt1064-evk documentation. netnsh ------ diff --git a/Documentation/platforms/arm/imxrt/boards/imxrt1060-evk/imxrt1060-evk-front.jpg b/Documentation/platforms/arm/imxrt/boards/imxrt1060-evk/imxrt1060-evk-front.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b0335a38b6511b9cb82fbdbb522df801e299938d GIT binary patch literal 109235 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

^Q@mQ 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ÉsylHCf?+i_6&U_dD+> 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≦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%0DiLHrXr_i)p_jl}b}f zLnP^8YQOaBua=^Thb3p~-hw+VW2zLbt|7;@JMp2h=y7wsKHb%fgWbRRtpI4B2YNPJ z_k?3x$o(R}e59g*t0R)!U>@MS2kRQs<>2_Zx9OS$yUecA>26*~gc7?SUNU{zsDH)6 z&};5$`r;uzxw2xjpJKaG@%G&F$npxb6hcyud@&|?zVQ$^oSc>EPmL1LZOC0$6RXB4 zJ%GK-+^KGv_$W*~T+TPK;R*LYKh>O+*_mMaar;W8fRH zHB&{pU~-MoF7{b)n`H-t$Kq_Fz#DIokKUubfz}B!impgvf74Wu7`sFzj_@`?! z4|t=j^7G#XAe)xYa5G2N=yJ1tJc#BQw8GWiH)I9E=8rlYJBvKfss~KE6LD>C6E*q7 ztarm{VpaARXl$i*mJuQND`D;)qPN`|NbZ%xwE2fL)3~P0|`9VKq>xewOH$9Km~uXGWSr z5T4Oelg2>&1DbMK2+9##pp0TcY@MHxmC+DJ7Uw&3@$j{?&nJS;$#>RVAwx88QLGe2 zGV0i$(RxWD`$;1g>W}0|5P;t_KTKQE#7<_yr38|0Tq+#+$I1eenpNrbW#reW!|@~P z#Mh84*i_5RqGSRi|38OZ>=v`D4XNv7j4H=~(g^$=MiKUM1J50dZb>oWeVSwQo6t-E z1lA~_uSB(LUZlu9Plv_z5So;%I9?MfPwC%i?+|2e#zRvhWZ})yZW1(L6y@m8chJ^R zh1V&LLjyE$IlqB_!VPqN{yS7Q7~; z%5qfgPs&?R?2>TQUORdlHBB&d#`^rc&}>IhcWoywME>beni(c-Dqopp*1AAZ;qbx~er}6gHS@IPbcyr@w7Kn} zxrK?=Hr@80OC5ICIQ<%0NIfQ9b7EGie0X^$P{-1}U5`qf+B(0{!RQ(?vTBoKRtY`j zD=GlNY9D)l_f{+Z&`W-!<_=#wceJP&EQ&s^bkKc}-!8?pP(h>&+1hGF5;q$xiefi8 za8Z8@<9*fChw3AS+;|4u#$Kd7o~C811j*57GCJ)dY*aj}t+eq!Bb2jtx0)AyrD$$X zyYM4Df44OXquunI!6LYN(@^=vC);c40qpFBM*ls1Cl!QN3IZ+E+Y#2;u7zOVZ~L^p zmQgl#K-@R?IzT!UL>r{U{V`(5O8WZc@1GjhYU;uWPeLF0v>K6qP7%ekVVJM}n@kA8 zZ6A`P%WYrkYaIPlu$DqPwNe22xPmN+JnFKvP;GSFuJbhwGEJ~L-0!fN`-JH;i_$7BSxg6^@a-^*TpC*K*aR^RarnOIbDZd9 zan{p8@QWD0zuo1F$DB@seRi+DYIP?r#>4NX+%n`B;3x-2&4E7Ox$bKQZ6#Kv8r zsgx3cf+?TYceWhY#*Ujr?D+bkc?5{40r|$Lx2O~n1#hYRh!ut>?!n@_!5?XxnRUm9|;W@L6~3Y5kD@%7(tqcc9;yuOs% zA1~n_OC@AipEU~zVw!`mT;md9EpW|G9Rs%B7GbEkvika$7l?M;h;&oax0OX#obJ@a z_|7Ss;Wves?x!(Rm)RK2p;etNQQPxV(Ao&+CXR8VHS3kZU-XLB_+^}Gz2+^f%0Uc0 zFAp!Jd`~@>|E{GRj;^#DTyMxsQ~~1B=Aeg)NbIOLAE-7BoaahkN(=%`tq_!AoYT@W zEA64W-mL^$!eTUI4J#-Yt>QQNBu#p+7qkOQf(T&8>8WTzDFR8 z)fP#i#2v&S$sx|bL=pQ7Y;x}-M)5Q)`==R89Z@G@)Qo;baQ(=OttF^yE~9y3VGZHV zn}~v}JD-a_COIoey-yk_29r0|s~Vv&c>Ty$D<^3Rn5o5)B$0&06E@}m9S6{x`-CDT zBrY$^))-;X3%DvRK4vQ=Oj*hFzyiYec)Ll1MMYG^MV#tJHf*#{S&TwmqAtZ8(EYVo z-;46)2U$+>HOXO_t$KgxI9Y3kU(YqVeyH6{r5CM4+n`i|OQtiLBI`J~U{@3zIDByy zaZxmo0P5K1MEcQ{UOdj!k~^vmv*KQfAdFAvW6wyD4@iPlyp9%Yo?{U1?TSvWMA26Y zEfM9o9_T%90{Kc(CBjtxtSHvu{Nm%=wu%IGFkIvU8QujhdL@jy7x0f`nn-$Z`KAB;zRdi?a@cYvL_n>jf#xBBUjMCbB?0yJ1F(8-h zWwfOv7J10sCS)c-?c1084>IpimfGE=vIGn}$TG!-ipwVG_o?2xeU-S-b5H$QB+2bI z&eP5i-t;BS%Gvne$C~?o3Y5iK;6Eh~dz}VMg&_Qx9~8qK`ix5Ciz1M$r#=xnJ7z=K z7+UEsRqyw6*ykyQ)2CgH*Wt~J(?d!&ix8G&zL|836peyqd3#^6HhgihgyPCiQM@91 z^-;^pqD0H6?T#ECX1hsWjcdMf%I&D z@Skv3@k*VicaGq5<9rjcv^Ek6o!h2g+AYe7`DRbaxmKI^neXNi16IQ0ksBcvEMa4L zzcuSsoUGMlca`-@*zd@T7h9Lv>(6!4LB@{O>s=vNgZoVmXl}LA7}@o7;dfLNLEPxA zJG9yVPV)Hb@Q}a7<%DRgO5XH*y#|Nke!|IOm-MvmJGPYe`~|IO(bp_ApLfNxFBkk2 ziwm{sU8~ANz~6-!2vE$|#7j9k)T_0y_K-EIoBSd4q-So_Eieu#?B0j zKq|?^>SUM~Fwlq!`Tk#Ej`GL|eT=>y4_ou#p(TTfjjB@|<5Xg7iD1I-h(%0jLk4cv zclx}SEiUsnF;jAA_dnX+SVo!F#6-!(9J`Deaue{5s}^>}9_9hq9_miM8kS3?qix@i2kiLaJQU|$$DrwUc`Yfqm&as59z=YuSzZH`_79mKJv-82&&}-xzKHqJm zF@1_I&fy22uS0TQdp%Vt0}X{fcAm9jZExQCV(@IDz(*bUI_}3mcRo6~iZsPf>(%j+ zhi1DCf4*^`sXJW_Kf`?1pn4H*J)W4G3lv1)t>ESiG0zlur>{#?o++f@!?<}}?t?0( z&bARspVc|;eMUi}f80;;{CBzR2sxLHCeW1W;HjQRsSJuSes`+Ra9DhJih}>OjM`C;V3olIHaA$Sl*Id0(a0NN&*cKK$f(qL2ZlY@hfCQNTvADhZ(p6>l6S)8v~NiEGiigSSO#WIF|vGE5ujx$N6;=Ne1ER2X6(~p42u9$At4FpzKF)^E&8cxc z5%MGL?U@azBSzK#${;Iaf4PQw%mKLAs=#~7cY5F*YnopGfkkXpEIGrHx5i0%s1DIz z*BGx}rZYNJcCrKv^?36(zrgrK6g(gDH4^vX!?2#VV2a-V%5GV> zzlVEX@CP+Pd)Y#o@(x~eRl=iY$w@}qeS(1b_niNR7_9F?`|^G zF;Q?K_l<}vjV@%kamFo~-I2xf6*UzhKOw-)e-}JlW6sf#`tubC>#`f=SWC52HQ&va zy8U4f37ue_-Ez=g6nTy7P1ktaxMMn71eURcV|dM=YQumuBaNM^TpHu3>dsqK!bwfT z!(MZ!`@(~i-qBcGhBJ+>iF`cH7iI1l@aNqP1?%P4g52nsra@g+{jYU3@AHrz8I>Qd1o6rbn|6&r?rTCwl zc$E?~IXA+Y@w{8Ik8xgVBmBDQgki?>8CFVljA)pNFad z#67RfUUbG)7)HhEcHH9@#=nkmzjsO8X$juR-z_&7>UtU87RN6aDQT0Scv)S zdyiGk#Bq{_2apftQQG}}A?BWwfIE7=^J~NBV0eii!9#H$!-(Z>Q;wWXf36xUAeS|h zK`QLIrkF9I%n)0WW6q8uiXP^$PdUbTEK|Q|acH91lEpy;Yjw(j-ts_di_4fa!5^7f z*8zAgpR#H#a1Ezgb8AsafY-+BFWzwRJo@}c<+-{MPCR($h8jT6q7mFj$o~bgo%tUD zG%=E7G-2egSt^xI!$-zpU71`To)soaO|`a94Ny0%h>u6;!lho?fV2EL5i4`Vc>Rrt z6WKh)`!L_0ZE%?<9;$dtlFTvRuXjhp4Zux-VW90V?w{u@geaVdoR4oCHB^S#)dO235q5I+t*|?9f6@D8+O#!v2W_4zZ>lSP z>@>75Z+bjt-Tpb47d~Vy+$>t?N8UhK#<(84A>1MSRQk%?(WKA@&BZjI=5lg>UJxWA zC8~(bM7}-mpMz5~cmpGEeh=NcA&jan4REl#BkTJ@B}TrFXa6-PyE$Eq)D^6!BsE(v zK8(F5O#=E>g0|kzo8N{g19ESHOel7Q5@M9#T#`Y+_3N_|;~{xS)OWg;<%W4X0BB*@ z(Tnz8@SCwRB15Wlk59Qc2xRU=etdb?t+8tt3#~*Y^}WPwd72ttXfS3LdFkB0p!dBq zzmOtnShKDJhPk!GzLqeQM@q8rkw%$_UaE>-V)^WJkH7xqr1rJ`Wt?|2l)$WwY^VDI zdMWebBaWOqun3zarr1sO&7V7Fmdu&7jrf_HnVUgb;Dv#9X6IpAbL(3vXN!^{W5F zg8*0NzN4n9?cs_fz<%et@N)TjrHfQfyS>g#^6A@m^8o>gOuP=x4>E;x5MF?+@%44I z%1=p;EH(qAKktUEwdxU9pO^g-Sl;=W=4qUF84-{Nmgog;W=G!&VEvF)1YGV)WU=LO zD5lO-k%}J2AtwmQ=Gdq^84FYUQT7!SC=)_Dhi_qPD((mO_q1Di*lV=|=2Oz2SsO1l z^E{2cd*ZF1(;i2YGYmZo?q7}~-=_1se7J;Tvukvqc$~YyWgJw=O3O=EQuimz8MmvA zrCH_%uQM{1Dmzmp?%k^R@h6q!tIq|fbF(zqk;dJLWJI4RFfdoXXqyvedY!?MG>^Xm zomp9#O?*(RtEZF60sixZJwY#+7PeMMEpJCyS^kt3;$;7sU&_*wryPCYT&w{b4%1W? z%mqIL(Q((-8-r_qCB5#5{-GPJl4VpaLPDVG@#lP3`D)!dfR|VqKV-T-IFV`bAl7}pQI;cb)GL0ZV7ZPe{{4JVR*3*a(tYc2=ehEG8C1IATZU{3i+ z<|wno&EpCnB(>0I9vvKY1SybAt}gqZjoAv~rk}h6PZqVyo)k|GYNiW&6NrhqMe9gY zrYQi%=~V$UI9UQW!&a7<;o;~5drlz|ITkiH&Y36K(O{&ZgVaqTO(kikEmpChh-^-7 zSxr`n8W2*ngZhvb;EP5*hOXI+89b#}lJHhDkrf&gK}em8!2(2DS%hu@0OmIS$io_% z%qbk@zRPfWkJ|!<^It{M-h+;x?y|I7d-2@`17@KkU0Wu}x*WOXVCE!f^w`n}dXJQQ zKS|o8l#dPQxbJF)$gvRdWTi6jnOd<<3tdx4gx{Z;*Vgc&PeDH71C@fnp#{od9$nOI z-JTjOfWim%&G=S8eoTJrX}LT%Hy@MY6`Iw#*BWep)Pt(yvyWNB(`Rq6ZW}c%IWjh4 zurY>0M^`XQeQd6gDy{H$UbK;D69OIX}^#(q=rk2Eqo;jiaRLAskcu+q zX%Qr6ty~_*DLG^-mjiVzOyc<*l|}ei2W{d_$qtGx;S?HWpbjOEE$SB@K>u$H5})Fq zURHt3DN8vXpL`S4EqTgl=V#U0*Uhut@XeO{DE2d``)#Q9shj>`&*m~92p`Wa_QBOI z_v-Azw`)SnE;qM9n7RjtM_Vn~TowL7#+<$P0ZtZv+w{FYVMWKg@@S;L-;9b!>;jd)L?4C;?T@-B_n+~17Uo%7f91-|m$s*hP8?>EnSJGJhvJXOI% z7uPvo?(Z7gM1(}uz4_DQ_G`zOYchPNe1a)%gWx-9`t=3`E+^+Bu6Zbsvo8S!j7 zQVwKFh1ab!cC3cJG0l-1SK^z9U-V}e1?1kL++>xY|b zi<87h#`T}6bX31t>%J!+Cr*T4u)K~)JMl|Wloc{%M10>E0&>Iztg-(=f+pu@ zqbdjC=%CLA95KLL6(?=`EYwD-ld0!%DPwy>o_a~8r%WG z>!E&gn1w!vfB2=zTUi@@4@0EE9u}wr5?Xsb0aPjaG^}EkbE1U0%QH*VVl&5l&-|XO zV`JfcSV{}yc-{_MRmRs#6RZ?vpYb+?f7aGwEsdz;Q`XL5S1ED^CMFpE^}%-l^Jb0B zTND-UArj4op@Esj>JL(x4-5~kXPp}xtfZdTBx6LnBWWL%YH&`~Q?mbh3X}W55EfcI z*;1DUqjluB63TsWk`&2!AONsO@G(gR=(XE@s}VBbiB#Txfe(*TU+f@@gdO(Mrh7fQ z*eo~VdSZ$AiQYll1DDO$J71*8yUU(~CugVqzfAZ$8=;CJAP}`XAt#Mx_MzPydcT@E zySf-}-Tb8F`2EzyV717`ItoH@SBsWoGo(`Okc}kFpQQ#{;0I?tvbc)Aa`Cxt1%PL< z)|>qB!9|I%IbX9D4#bj{P=vb$xGi|8$-`l9MGz&3+I`PhG^+g}ZoPkGhF!%8*DU$E z`rK44o~o=cdvdJV*20F}C$`@`QK;y$W;Z{6*fcs$IbH}iG;uc<3Sl4x0)ppZM7%U$%h?DUSms= zVh9^!wK>!`M@mkZHDyUcL%HKCJKFB4M55sew^1Z|JM>3p>S{&1oKi)#!)aV35|ae3 z1Hb3s5Ds)oD&K(3T8GTnZ*OPaONf(bL%Voi(9{*%{PrG*9y|n~J;o5j;W`jX{}J@M z+#9nWLe3)~7h}zBxGu+04poEZ5e%ehW$wn(qIs7gg{yHE(K86bXN+QyC1xxTSqcZY z&`6uE!Q*+gh7WG?+h6xg6SI?k-BRRR8mJl+0|%e{Vc?s^g2F^-?+3`j)ZaKGP6pfVd$5Jfxes?Q)(y|68b{$leHw_3)dyW@Pw4| zn-P?*_j~!{RiCmV+JA^18Y6w!Q`Z~x4vbPuaa*=#%gEMsNp%P~9~t<%hG)xJ^Yc#Q zy6Bxm0sFY=?Zl=k%VG=)=XVpvus@bE_lrpU0woX_+9O^gU4&QimB z3^WcHk1(*xK#Hq{k)xOkb5t!Pri?NtGZWQTKWH8oAUuNs_ zrtUCxHMgbLAu8|2Nj}w6R{Qhc1`Z)VmSIjj6S5tzLJ@XAb{}e~9a8YS&RJH7{V5C1 zbL}9_$52fRUq=$?43yZbTvEf()N7E$R*Vd6+h_ud&^2Q1Anx~B1E0(X<{Vfb|Iq(gN&^Ot$W z=W~V--fQ(2z9$1|{LM)X_^pK?kP3J%!7ppa*Zq?`xR|O)((N2C#rLt^IrY}Y2@@(!Dhj50&~tVjeauNdaP+SiJbAMPd@x#~a4JNwc6@6Jgyro*mp(YJWL@nkxwQ1%iJ)hr4+|yWmGs2y=28@qUAx!Sqe!-N5B}e`viT4G~DP zrp)g$!RI*oYzOSOXZf62Xl*m#wO1{Ak51w9g5Yb!_7c=}Kb({`UXb(x<|ESC^l}Ju zQiMw>Ubioua7h-_O=!lj@|yc{fcO7=XV8i3V-bp<42`Wxe$Q{m%zK6%!+L+M`vOTL zT8Yu_6(y--tjWm8&?0{R-)?X1{|w_P-j&GYGJBJ5qU+zi6L~&V^z}R*^p(KQEYA|v z=j8(454uIQ-;cx7qw^%;;uBMAeq_zAG&<^#lwORobiv?kYr^PMaw#)Qq|wPYz|v#M z$bNG)DzNoIiy>frz5Eq-xrEsA7L2oJZxBCeRVzNionqI2yX2RDDOM~Fiq!Ql^b&X0@{0&E*t?>V?Q zqEaT`&in~*=MJ(M08wkqPaB_(?uQlBByAS9HUi>Qr+ZpWHY<^BBPkPNwgWEr&>yWQ zwJ4-M5p?dAE?1mS(qPv*&$&@0^&Bj`|DMqn)_70*Xy7(gf-5W^zh7P5{7De1P9CjdLxz*n zIKbw3Y|r-;eJsk^B2Kvs zm8hs0n!9RPIRQ472fKvcNP-%R&Iz$L&iQJ%4SWgK2BUVYp0){(sLv~k01|uW1tJ9A z-fnNuocCu+QAqKTiw*4ePLz_k@6Xy%atKD*&?%6A>`&c!*SZ7t`#(Xgoa5|K6kT|^Jiw! zrYa!L+YkGO%m+{K19>Mq_O9@j~Q4Z!6`<}B+r z@o`F88qW$4v>Gb>Nb%L%n5#@rB)rxLZMhEgRaX@O=aM=>*08qW_py4pfxA04Sw==d z1mWnC;A2IlFS?S(7sn$4Elo-GA&!9;3k#4x??L~lcJ3Rng_qge{qODmA8s_w3_mhA z;{BJKX4R7~2zZ-YSW5P~ll6qF)9jw<$l4`>qCJB?_^C1ltf+bt4*YmC*03LO#`%WX z%1vr|M}GuyU8v?%`#Q&$4#lr1w^~U7GYs`^5RT{grlitD zxJC8|6EDUp-E>ekZr|XH5en9wemM_{{AX8GABh^9VHJn*EHVahi4oYUirATYSHOV& z*Q|h@Um)oHIiYGi^6(K?3ejvSXGrHBEJu)=b`$?F6LjqNh3k8IQ_%Y3wrF=xY|c0~t{UY-7;lLy z{x~}5U{Z7*a@Ghss37sfsMkx=#;+9LUbC=!Ryh;XE9T=G!$nPbU#r}OkyZwfFB5Un z8{d)utGl_m8m_MiFErM!18;eFdKb=z;}s-snt@^Nr`mr!Y{VoL78%rn9?O}%KHK!P z(~;bRMw$LLi#|X9*`G7o^dgL(bG(dQH)H2L^HKlTf)hygQy2KN(5$*@Q zcBL$#z!4*)Y&81cyMQD(SVWEUHMSsi7!Q$wG$ELOn90|9MJ&pxmKx2{Upo2uZ&=OQ zWu+IWYuZU!N?9N_-ZIuSmV~N|es-Mzrhm5UM5PWtdM7>IRQFm({ho0cA4&^C^4c1Lp5A)eWX=i|MZOUj6RVj*l0knS zx32da85Du0lND#zDVdRg#kXNe#jAcp4&K{C;E9WuRaJVCP=Wb6lo-7e1@1^=$X{B+h*3F?qQ-IX;xK0f&&jJr~*KkyW zNMJoAL!4nPqM(m1t>2Lpy=#5k(WV;?x`ddDK5u6|?^4{u!)zVoPnZZ(&3o7L`gTR7 zy7$j29Ji$RL2`%`N$n?bwMM0L8^h@&6226OnIPwxrYuTw9I`8EZ^QCrJ#P(b9J8AH zsHuRifqg8K?(BhC1InkM@qMtLw`hLdvKDUyTk7`34j7NDPv5w=QcW;ign=5Vi-v+#^ zJvc@)@Us1Y8z;xoA1=QHP%_!z*j*oDlC;$q<4F3-LRxXTC`RQ5tQ%|paQ9^9EMs0x zU@Jt5LK!39MR5fOR1r~Rd}B)El_(c_-nL1i$M)-|=%_nQo2+cZ^>nqZREqWIEzhpa zC-Z&ESGTt|SineH+$sW*VuNB+es8{JeCZ23n?CJ_7)8o+0yiHq}_duF8WI}SpZlZusDM-I>v z#+D00-;miWY9MGmFnIlzipAt35phfC->g@@sY48SftpZxfQ~gUKR9E3YR%tWl|-wl zxe|2#)oVN4H=?>^2p{DmA zrK=NF38mOWn zKNpt&fZ!rKi$8vM_1yJUK3GsEQ(hnsKSUF#hJ?klgrU}=B*Ms;0ZcI%+R=j9kq@8H z2lDbl%nEp&0^)~Rx~UPQ7f1G~%kYwTys|wfjT=98%VUt#o%EG?W6_Lrcs}eXW2`ns zElqLu|M(47vzh)K$i%y*%3yVk$f4RlfRfv^pa<4ZrHb6m0EzHI@bXWV}ukf{R%vWNXw1iSGGl% z#-c2K!@Oq<=oC~%sj?Hf-WIjXF4DgnUYC+%2{6y{9vdqocp)s)?|y}izXB2y2^fiM z7Q3t^tpE-+_t`n5SoU7Um}VOvTSr1@9H>)q5wFoLOKFh$`ugpIt9ZH{az#Fh%G?|* zS*Rj;j`?=!da>lTUE_-$KYBn9;>J4^Gga~eKMp4-^YlZDjhT(0M32(uKfAxV7N6e4 zbPirPT`!uU6mSULDQ;fuMwaahq>4Rd^TKLW7t{dRy?-Ttn3^DRx-*1Hv0Bpb7gd=! z+n-JCD9V?^@$PF z4&=i@6HROz{{x3pzVWT?=^h15%+kmWbGj?*;pZiO;_~eJQk+LD+kDbIQt91_>}EuW zP)!zy&A|CC3bb>0xE^$dDF{9HxfIsY^+{uBkKLBk({_32(~>KN+(cB!6Y zGP!s+U!8e3nyrNfuU@aVCzQx)HGb~aO&>nDsSZ!rB>&mhw3=dXj@iP!O}}2MVvEOv z6+?)J`85b!tLhY)k0t>&8Z|rnzI6RWbKJ9v6-c8q%zjvjHwxofoD>5 zoCY_}`icNu81$QznJz)r&-HE(2WnoMFPEyeD6a$3Su%9d8akXOt^Vo{e>?OL)k{_E<$rsCJ0-*RQ^jzCU(Fl@|jaKt8 zx~;Y6>kb|@+Mfs6FbPd5TF;L0=8k5e#0961U+>?4juE?Fj=v=T>P=4`6SI03Fi(@a z%?BN`TxsMoF^+3@tMFYXcXqDP%pZ1c=O3_ z6Y_v2yH|4fB5xFEW0ji(v<@|I!(R|}TYf#e7&Wm!yx%A1d}4q5iksni7--BNQ<{HT z1rsly=aa&_6Ev8d(>UTSZI-|#Q{~~|4=3@bA=s7c2cQrnP3;Vm?jK<9%Z%0M#Q{r; zA}=qii5kG&b0t_5`~lj$!40-i)icD8-q|R?A|2-mWwhV!ESb-fSq~}tcLz@Aug0Di zycl|q5A*X0LcOmE)?pA;+s6X)0vXS8(EHTPl%9o!_r8Q?*cV7A?)hbz-)msJg*lX# z9Sb@GZ8(uNV9EDWsTfM)=)4fMhiQz9k$xV1;ia#y9` ztJ)v7=rQ(d{Hb-Z+F@#8q5O#Qr?Kz@c{{RRVy#g&sx>y{80=#DeidGtgBE`ki0eCf zdS?}qRxYWh*`Y&cCtGLF5~RfN+eNq(CCK|OW&8<++;@*ZUC5gN`aqE0W{;@AQPmhhU0$0mC2)D&ATPLFbRmc z>eG8m{j3|F=9n2+$8xM!k-RphMI*f-?c;cngkx}3Z-E+yK7V*%C)WVm_dm7yZ)xj1 zU9Ct3)YS}a^Yd7v_45dHuY>Ht4521rPo|^Al|D21jFhLcHrqn{rWo;)wZ)A%6t5S- zo9IaPmvfW_W`s&Q%v3{dmNpLiRl^2t10oq|nLJB3H>EVbJM8W3rsiXE4x}FfCKne2 zEn429U!J^bVF{J^8ai~gyykT@^Vm<10h6Xgh$FN0%s0b>`F&vb)Uf<__riYou*?X8 z-gjBhYL%&w9|s_V{y85~@RbaDE|am3kRCF{aFU~jBtK(oE!CIZAq2g!zAw^2ZXB4n zF`qfxEJzmtCoM^xWAU*g%m`UPD~$$F+wEX(bVRWN;!Wn^ZZGSFrk{m~(#&Nm=A?P*$e@xR-;x?x0d_kWEBngn_N&$IxE>PkVnAI@u7)AN1FH zUp7NdIJ@-cIcr2THT+|bN$(>BA*eNO5!Jm6O!;E;Mb?*O!YCZa@`d}1PY!iOv}?ZD9N z2BIRziNIR#W7;2%6b89pZ9el|4bZ@G3(`8RaFrq<@KoTpYCmL~;@Rz07^&|Qvy3q; z@8al>WOrwL?IwU9$*yusY z{dO@nb2j{EM+w+`LVVJ^XHkK3BJA1cbVT+BHPO{f^1)ulCR0 zzDSXTer;C^wzE+bZ-~}oq-s#b{65R#3H5(Zulh%^bdtZ0m61WVP-)C{bd+=AHWsc! z6OL@d5-vL2z}ML6!}DH7dk|kw4vE5ZACxXUTx;Nic>Dm|+Q@!hm}<}T-p9D9bG-vP zw;vaNw?C$w{K~`c(a;!m4gHEph#)c{>Q)q+&KBgGNjxGVSzXfraewb zKyb?YYpNcF&r zqUXLDh@!^TuB_U8qe}jwlb%f4pD(9=Qvb_GmBn%O#}3gfU6H8|A%B@^z`W$h+?j33 zdIP!3wL)E4#VF;@Pr!=8T49!rapbX6D2q$JpjPlPwlJaM>|8;ES~6DfH-8@V*d`8WDrG(%%c~upoK{1i3iHJx~3ZqmZ4=rJ7LNuZ*8R~?12i$=?JXxL0Hk=-6 zv_Kz3pAz`*NOl=V)K9&6iLT@nxi4$jR_!f>(}&yy`z~e8$bmX*cs4$EZ&GYfrwcL6 zxL{4lO-sj%Sj+@k&24QT;MJ09je0OMwE`$PIVE`Ps?GgK=;NiFYod2{G)L~@#wmvh zYx;$-QgcWEBipi86ZGJcqHj+Ol0rYhtpD<^0O@nC>rctA=0x#1+E+1uEt0Qh?mM%k zNkw16+k*!4@m}ugUwCfLmcrX_kF)yWKonE2Yd0SRvQx5!DklmgTfN@93$m$M^l{?D z?c3bi+>B>@lVzuiqZ3`%)Et7Rr}bB!lJz!Z`tO-t==#r282Zh>6S}H0hBIZysMjV! zBHH_~@U?&q3aT^_zqA%k%c6OYi3N`q+Ob2C-+GWB#__E`gW5eb9ij!1^M&z9c?)>QgN8NO-VwT#j;4 zmx_$!05RA1qsE8teQ3IJixy!PQJp%UttXj!xCFF)Tr|!7%QR7Lf-~JkwLF2FC->70 z_D4jpP=54LwqD0x`vRZ!l^LoYg?PtpkHn8$Bf zEK_Ts{O+F7-dtinseKD~EJ80x-1T-}oU8?jS$n(?tPnU0{nJ3Ykwb!C!dn ze!QC$sV|LExDk01Yi_&!&eU(+IxT2~`TtS%7Hn;X>$Y_jC|W2M++B*h7in>5aVZ23 z?oKII+^x7n(ctbH+#L$RiW3MB^knV*eb-s%PrP|D?>Wa{fBz}2wpTS%#(zYR^Itj- z@K(@EDHJ_o`V5Vwv0_#rXwi_C@1J#E9HOc#;Dh^#Sg<5pj9uH!*11fq$?dfrnIHT} zfkSCoj!0H44s%YO9DOuXfekQOgW^`_9lATZWM3phG5RMKXV`)QR1#Ic@0iwCy6U`%Yq%xqUy|BQzIA9j z{h516kroAj7?I%I@uNpy;G>YxB=?$N-BdmI-aGAYFpl>H6%L>?UL3hCymtpWAumR8 zbjc&+sDnNW_MbVvzqpg*p|Lp*7uT*f=vy7ylon3s5gvKZ{t?KZ!9w!EM?BuL?TGOR z3t(*9Zq1R**y1UV;tU{M^Mb{a3H|uJOJ={>Jjm~&vhz^y;UOXZI4jZD%G<Lj0HQM{ja4!G==# z2Dhr`jL{V{`JYO5OToC0hT{DYPH;Xlg0hS384uf{$>XGND6yB(x>)ppaB-ZY}o} zBFa^NPt0xn$@qp)$SaV%IV1>4vTugL?x)O>)xn2My_x<|l02wzdt;8UueLnNg#~G4Yl6QIl zs~9z2`Yp2|a>ppphw+)-b~~F(#m-?z$Q^+R{g_+Sp0^!SjnLGABBI}wWzsX~R^QW6 z9QRbulBqUoOS=GeI{g`6g=T>7+V`|h#uqDUz_q@ z9~=kR6{Z;(^j<(qoK9AhCtQqHkrvbG2y%V?9>rkoC1bEB`C{fna6zWNP*`FWfv||T za64T!uZPm)#8$Mx#`fmHSmWpY;rk}J`e5`3I;s1J zI8g_jwwcI1x;!Vx{yP~YD7`+ii5C49kJH!^#LY3<(9?faA)7R9ktevwnIMK7BQ?8& z&@O$epu`5B3KAX{rW}&LQ++YI)Z9ZH4^ux*OzTOxG(n7+oleGD9=Ze9E1E;QLge0; zCxWxQgd9pawhl_(MyTTj>9ifN;d_tnx#ulnX1IdJ=wA?Pjdw07nQPS?IVZj;1H(pnFU|(aU zPL~O}UWWc(;Ima?j9JlO4P;LElS{%5if(YXS4n&4`+%j)Dz9Ky_}wc|63^w!oM*e( z$>(GZYxuW`y2y@>4#f5KHQB5PO8I{+CZq|_z5#vy=XK+oL#29sDd6D$7giK0AtEk% zr)Fy1>1J-OONch6qH1blLniB0K9a#s{7FWJ7T;MH@*#H7*v8tL{N(twxz@yRlXTVn z^m!2JmvqjOSXr0ql91HV*Dn{7;GOfitAtXvdtW@Ljw`F48c*#1)M);a&Vu8Z6}`UE zhTB2fq&qBL=oY;0|an7Ii&GfBSx48>x)zQv;!QTf(L()>68^LuSd?p1Plfg z2QECCdtNjHX;H@)R=>>Ifx<0ONl|zpRviXa1@op(Rtxk4^KC$^+!$*sQUqd`C06_+ zWoTgSSX66gdBR_Tj?hygWVK-SqlgVaX?b|V%KBe--cZg!Oh@c@j*j302jACC)rQi{ zS@oSRknifGgeU=L$Q0zVo7TcCb=%Ml8*{Bc-D9J7dxyys{Lvq#{fuh6ar54Oy&0`b zBFdH_$l+o647hXW#Y6mMldZszmx9lM%d7fO$zEb}L=eBMT;^=gZmAwfX^*|pzxaGB zk)Nj1AKDo$2n)o?10K2mXE+%Z^ZoYF3mVV7kuL5upWdoTD9Y&~!ST^?uNVYjXU~MM+MdOU~VArMhDg0S;*I z1<|w?QGa|G4sbK@wR>nlXU*8P;4U&X>dDDJeBxarL2$C z2}ea*s%lI`=W9`iG%SZ)0pF_K8UuL9xbGMy|A-p?VY^P0)?+2RLdxS!;aGy6JJ$6# zNQN2~H=6wN9%5RA$vm~Dsv1=}2?w@E^cWf%>iDl0IqcneJEKfpU9x0sGdW?{HZ|b1 zp&)K;Z7s<;WGA>Yr0>w7;yY>j8~G)}#$$#A?P1q@IDD$83gj*he5{G;{eso%?X7TG z8q$-hq%n+e@V$r}3z&!zjnmMAN{Z=$%z&#E(LZ`eM{j|C@&NkP{0X)c6RnJoc;UR( zC;ja_EXzg7d9mGqs4S042*}3%(+|=5kJZYQLiodqU;bRds6-tP)GJmyKRoKY*BV-5 z8g)g@JtP6B+%SLg^NlE!#Z9tkNBFY-?d+WHF#E~V%bFe;oXh_!c8viy_99YNlIkU| zQGd14A5)z-2(?$4e`ClTt?3yvU#dBmR}448%yej94p_2vNA)Su%A`cKZ8HuD>^iB- zDN`H~AWhKq>ar*{Jcm48AsE_^S|xiN$!Gkp4{l%1f4e9plCZ8|;*OBz-xAHMd0Nma zo+it`iKs^&Q*yDmSr*#?x>fu!|As%vmQ8s&`9bc`q??Ms6szvXy^VJI)6)wkgTw#I ztjE~LNXX}0o4gbL$su{FH7W1!1$mxQ+ z(HELDr?`^^FeAl;cEOk=kJpP;fewO_j z4b_HALLwTBpd%6H-<}JvyG?yQdJYXKoalFNFOR+L&>BRN%2zn<4pv7Ik{J&5)KVbS zCaKDWe5-?s<8O_h<We(A*@V8y?FA6DA&EF&!d*vxc2S0dQer|}DCe`Ep_eU(h(r9fIl-sY5JYsd1Be@ulZBe_AUV5^}re4!y`)3}(Kk1bLZYDOWaoZ!tJ+$v={;XC=z z00#PJg7F{pP^z}Y1rUq&5I=s)o{99Q7L_^SUd*M?$45yeW)bsSqON8vcNOeX>p{!* zg^u5heU%G!y-oda868r?pD%|3c37haFo){+)tDm^V%F5^NvB752o$Fq__q%9Nfph_ zzLDD}24hH73rU0C$>fV-Q@$uDdPKZ@p z-99OMmT2l4G`j*Uk*9|sH*HIS>yuTxTFq%xx~t5*^@eLhDbH36F7an!;TEnj(G+FT z?anjQ5tm&z#JhIOg7u=OWwFS4gMx-l*){%TNvT`XlU24`n9s|Vp0 z&iwKj!8J-)L@M`2Z>~$_mf_<8qXZllCVurGvE1lXAPPRa-#rg76!d@Ctuo-gp@tn# zy8IUW)at`HIOue8$X9hU7)Nb*nS?8hZEo$32c&HRS9Xz0T!-HPpR= z(1Vr?h4_<)hpd@8dogTs(I1U_C^LyJQEybeV)$EhC|3C$z?4^Z(2jNv+%PMZ#bPwO z?XA|vVYgAVdyknjjF`)#q3+p#UxU)B{(rcyPZ)9r$i5##et#Cz zdD}b5m_n$JxNq0W79A;)r6bypGt3;Y5s$ns7M|m4`0nY9zO3{P&d&aeDaw^9Sb>SI z=tfTz4+6K-33&Y5r}}_=z4<&@A**vTyEacNAGx{lge4rIz@bgwqf~ptHh0ekwI~!n zquFmGNBVMcRj2SJ@EKJ^gApe7TL1RaFMy}{kFUa--xUGWcGl6F?jy}qv}Sbpa*9A& zEv?k}&tueoE2V()k<2xy_8UDjYnfgpkP#;KAZz|;&*8A^)-*u;SNFW;2=D-%(tQL8 zMrAoqg7Ule#t17mo88a<8j#pQ5-+u|_pzbiKj)DYA^S1kowc?)`-*E6i)IK--JO^N z!PD<5QnYT_LasZ-ZI_?lTkKm-FMkc%i?L{jPq-Bl*2VQ`ptCYt6>KpbLdDH2Bs@l>#1b2cxbSeOjniPB(t^1JPAj4brJB3VVp{{t&)( zvS`#D0Y{pghZEV;rIoD#l#e@>;F~hbi{8bq;7CSQnx>CoC!_*@`y>!93n&02rA7P~DUr(d z;b=g_{2U!@MlCRu!~5l|nc z(){YiVSrZE@BQlnC~>p^{XJNu#QN-HZHX&JxQtv(BR4V51P5Xqd- z83YfSbEZbs*2H)Q*{GQ3AtE;2>3$+QlIeZ*SB4;&`=cePoqzh*vLrXg7a;i^z4^#cK>9y6!luIe*>($ok`Q{`xloR zfXQf=Ir}{UsL<$qgB3$xaJKHSH{@M1t$#3P;aG`~JWwP1C(M*U;5V*DGgnqrNd!fH zG;;z^DDUPdtJ;1Js3M)Hde_B`G`l^OjA*mm@Bw%`Y(*zbobAi`%que4!UQ$$;a5va zF;|!bdRt)6YSuCBMHHqNhUAx)o(SV;q5I4qc}iPVs`-QZMv9{!mz17X+n!%wOFYC) z|6M5>C2kh80@n3|)5qxqo76*VRFEsC6hE@+i35-A9cvNy?zB*>8J+?%RxS=*T0@;C zk~04kU)<_nu`E=t+c0Hd?-z*)2FIh-Md7!7J6t%O4@C|&s!VO^T`dhSbMEgYB4Zzx zCaG3h-?4_gsmk%fg<|MVI8Z#OK0gEuHsm?YC{YATe}Q{ficgR9J|y1Ep~SEFKFxh= zCqkasDeAXAd2WQj8usKbR#@&Ouj16J0zt*6G1#`Nt$@`gctLejGAuWyK6T6)_6_uA zijn`mN2;0&T5B`y2_A% zspC(lDZhimGW(E>ZvFu#Wq_rAVsf5yQDNhS^f=EN9}RohJmZs7k?yD=eQ4w$y~8cL za4Fj5RlRV(aTQwwQc^UVlrKJ9!;!7270qe)vmO!hSjim~`ls!uOp8%8h??~^2kOrY z3+EBppYiS0@R7ep{|bD*^L{Ye_R4eMb=no;7A9+Wr%7t*N*8Y?C3q~uM8*YR@`hMd z9cV^|C)ue*%sY*1ZyxMWk4_tuf|>mxHDq@E(>kfz?J=0@GOoOFR`_|gST5rXLb^T6 z2Za<3?q7-%tFaa-@xOWwJP}*Dm5P*WZ06%QK#pZ^{SQ5y*P>bN-d8jLJz^;QP>DE= zxLWY`NDLpB)^uXSn4yP9(gv5|0<4(mhHhI7>CD;Hxy-+@W7 zkKC;=E64ZZC5~{2TUDjzu|DKOf)S~iW@IEWfNaMPx9hHjav(9*?lnCY zO^;w(dvO04rvLtpakm)+!?-@?sEW7oY$HO|A1434Rt+ObfQH0t#7=GY>_uh4a@WdQ z(bK*QQTmW93RozWTNx^e6i_k9gG3*e57=RbgGUz(y?N(wD_-CH1xjBN{eWj(So%cm zpZ|(_dN;XBz5hQ8>|e&$nj*E*4fy@3G`-+H0fo@}$fNiEe@Z05SMW z(Rv5gY|rEOD?WFQF0Pmk6m35W7&!}uk@Zpqe8Vh1#M^;0FBz#WCL?|;d(rpp~jk6iiUouxqA&Dx@ zc0|J73nq?#3GEF8gA9bjYorYod+HfD>C+__Adt7rxmgzjQ9J#*MmriQ0|gqc72mB* zP>|WEaQPlHo2r?Yw&GjQT?iH(QEl;9T;LxrouH~cwBMwMO5w%lel9R+&Xn$LW#*NQ zjVQ-<3a^Dah^59UOGROm1=dmPirNr=l(GsEM-lu$#^THI`vYYi?M<&yoK#OZJR0_=$Oa};B0d6b^D4#mXFF$`bM z|7C%PT)dHMHis0Te!pOPi%fm1HjFVi}zoJW23HI z%RtE6v59dLS6^)A85u1~fVSD%>G45d;$*-p{cEvcR)OlRB}L=VCY|oP4XiZHVMKr_^x%ngJ+P$ANgKMaDa7Z5a*Bf;r>uxYn*H7)v zhms11@%A2@MSRnAF$I#+=T$xZaUN@XcNDl=w0Ym0AOrq0{5&>R z$enr8XSOktN4E_`z%{cB{Jcf}nzfXnM1Yw8ZEhU5kN(#^4Lk#O4h*0UZXc zmqCJ$H;zk`-w5y01q~ckArO-S_nGe6r>^k+Y4Mk%iV&Hlazz<;{h$q_ltXo@sxFra zY@gIx5*mStCV=%RG;MO)|Lu4&)5eL;??y9H#K`uc#SNw6eO8K!0($<%E+*Pr4)lMs z3m!Yo)Xy9`9>XWJNU^O8i}K`x`2&Hpu1~G)JA6jG?np~UM5lC>l{&q_uNyw1Rs;C_ zK+(8NDA2^jDZKvAK+K8AMIe%t4L9r{CIR#xG_Xo?$&(eKc|@2pqZARQ_jBq>*f=!9 zU;%OG4}Mw7OI>HV%o|0&w9-zlt2lTYJ+{h?A4xbeg-oX3qS#}7e?$g#H%L@D6F0vv zc{<{=rno-Sf^W>@RPY5@o#&N`a?N@rN3X-G@Qw^iY(`E2+Yx^zNKW14%MW9%1Rf&bE@Yo+bJ2B5t1r;RzVsf}}% ztCb2>$lBUmUk^t*xAVX)1glMUJn6z*{Dbb`$9@^Pgq9Y-n7W09#^)4iGC>EM&cu=u znt}Hwc&P-DQfRhsIX^2tX?x{&34eB}jZuAHt=o2canF48Wm~8zK2U~|Jlf3@b`ka- z%ljPObw{$=I`&kyE4qcWX&}@eAkQa@(@Pzspd$QGj?O3`<3u0PS@+rV=@~Q`$f(l> z<(kf!jodOPjZzpQ@z3Czi=$6D^bk)Kb*3(Wt87bU^xmq9Qs@7v(3n2x*-5D`D|;u> zWY=Rq<8V3XM)tb$+=V8Yt*%A6y&H6q?b$ExZGo>reyUGJ_9j34c5ON#p#Rt=(rVZN z9?p7cWK=GRVBOq&lbjC;z?9gnO8V}qZZt2ul0;uf!07!|+PaIhRCu)7;if;?E*;+Q zw<^-MEA}D7DLV(rjMYl1usS;ZErX@S=pC-ne0(kGr7=; zp0Fk8%tpwc&-UB?x;IuV_xT3JvO%3G$|yagcJDv`XOUhWZ=xD^{lM1pzX8V6Y^tEt z9cjG(RQOJ}NLZsjE*>5NM?fJ`i|SayhXbT&xq&VXc4}K9fI|WnWA5DUi^7XaWlv$3 zwU}TN8Ko3QyOf<3jrP?kHJsRqNC96#)LJn@b17eXRsUVuld*2g;L`5L#Z8==fTi<@ zC_=2OY52OONBQl>VeRHiTY1?Df+gj}s`YMt`B)QI+n-P#Num8FWYbaq)@L8r)uS=q zBI1Qww=+i{TrI-x+L0o9nW2Av_uF-4{>x7a{G8_I;h=S|_R9(8s=U3ajfKFD`|IyF zr{s-W=Nt}Vl69y(w_B%8ZSH@o2Bus8MCGCW>lS#ZW>jGjs_|*u!-fC99TOV&&)hr*hl5`C_W^GWsg=em;Yy z3dF;ch9F7H0N>+cGYVq1M#9$wSrz`)_rI62uX#vJXzwO&TK4~qnto;oIG}W14}y)K zXNaE8bMottr|oa!FR0l#Ci30Auqt2T_-{jFx274fsSLDHRX_fCuz9y=ulyJ1X~&$6 z&1`yV$u=A7Zi^#U2k@$JPM6h8JKGx;-sOAfC-1-eSCcY>RU45lm3_Pz8hTAB;eO2M zVAyuu)88wdQ|(^KKzyDK6EhyBC5r??Q?dwaeM~LTQzvtz`N6;9w6|i-9ht#&%$Vka zI(%4j=+6g6D45J-u8k#8U9E{kxuRk_c1-l;(g&OzV;MHm8*SV=dl93>NlE_F2v({P ztwO@m$lGbM^MZznST#wC?zcSM!%80__`c6WWx@3}*)qb~nqSntL~r1(K=F7<4$hF0 z-WNwoldneI_Dx3b3pptIZpSjcgqVZPpF8DGFsIp%+S5kpF1A71;6J4?GmRfh@O_0v zMAX`TN?O0Wa7^>7x7iRXXIl+<;8-dNJ<0ye3AA92yz;264fs&Xfb)D1HGsBiL>arZ z9Er}E{-tEy>tu(O`R{lJW`mXWS$|&GW>{7jMc-U68!~A4&{S7$78v{n5mynQn6 zi74U(I$NP#=yWi9l`t@V^xY?%8KKuC`~oNWF6O4JOc>K{IZJqDyYW-4odQXjVX4Xy zjM%kBDH{+f{%U0|ad=2F9wd=5`CH@j7YpVL^R)yiA+lI~Q9U`6m-&trISWb*)pWtw zhGR{6rE#k{Y}68T94+VyT84xfap0>hPT7X8i+WiL<pzVVy6xN-i_Sr6w;1#;@CpKMBEypR)$9*mttJ$AuGLi~?1Q}_V>wW5_ z?!TR8NNG&r|BuI#v*Y2_mx`ki$?hjc$yWee0GrR3*a9Zefae z{xcVKlK3fd^ujK zBH`?{|4g7~MoBIH44X{0F}h{topM=a$wR;*S|6A;+f|;=Gbw01HIMyA@r2P8+(Axk zHy<+vw4H9cGKj`nWAzFi?WVKXhTZ9i@6ZWn=!ETZQfn;!RMz((Jt4prB*CF=;teUf z5Ls$0O#-MZ$b2BR4g1Xhlqz2s#n#CDxf)`}9#?FU zWa%CKwrHLK#}4z4=cyN>D&A#qk6pjUj2}=W{d%b>+qU|~IPTFi2 zTzx4(1_l3UgWwMjqUI_+{N}%!1OcYr&ghpTg$=5Gs&1pD7NYik|Jr%Yzb1eUnLumv zi2)vG%hAOPT34<&31k@$gM%+SN&=8JVX8}>Q!r<*T8Od8KE;&|BhJQ-HwbYl&n8`p%Qk4rLaJ|v8r;vru{1@D<71)s%X zOVqxni%-;d{AV)G_Gkjt2HokSK}=O|o#1zFzVML6&jR0iu0N2&Gjh14#AqJoEU3*u zB>v?N!3F#vYd>o7={-IZn%`wFlEGs_a=};{gf@1CP^#GB#lg=R93*E_8cgNeSKmYJN@%p~K;Xe3cZsYq7Q(%3S+^aL{s6*Jm@205- z(j-wBEk;GFOWEp7H)?xa!zs(CAA7FvTRi@rALkpy?05e*&HkJ$WWqwEO4g`Ms|(V2 z22loFXX5)s z*uMIh|D7|Sd;N#zB^tOa{cSsZLB!zF0%@nBAQN|e!EQI6^laX)JmDwO9Pn`7Tg9H* z#ufysP2|FMRsT%A(V42}a0R|#M#w(wBG|ms)^ZKLSkAgv`6l?BE#DI9E46*k#e-)M}))VHk6Eqht|_k|)#{L$po{1}l}Hqz*SuBV9`zkdfv zlALXk3>R!-adusiEM6?0-0~4ITaWL>7KH@M#zRUHlQ{4EY6rdeeih%nXk8&a504cK zk;guhk*Ps3zJ*r*6?i&V_B0(g5Rt9P3!wGCvkXA59Dgt@9LKEK90%BE<-+KR=$-|~ z>&zfR3*{b%oX7`LvZSr4{I?5fm`Xdf#q^-y$&;pd6Lrv8ON`o1s1;NDdvw&Ni|+38 zfTybxiAs8t|L#aXrO5C_`TlRODAw`eR^ec-LE9f$%DakvqC}X@@Q4fl^yN4IvZLV- zxL*{2T1s5Le3LKriS!8Et{17e80rXLAWlfvtC)Lp64r{}3(M6IRCz32Y}pqkzwMqd zw3N8klt3iLio+k^&dHkux6sbL z1yJT0+jcVmEq#VtrSp-{-bgq|L(0gE&q66GxPY*83V(}F#f$1B^W>D1l{mOONy?*R zUMq7(S`LF5NeRVdU>pM1q}A~MHj&YbID4g0j?%$*5bZs^{QeVA6tinGOi~atM7xVe zs89H@crFzTf!^d6b!6QlH&wgpeRw3Kzm-xm#?6&X2(iOz(iDKy$%7Ba?OW~esSl;) z4w8zzVF^T@yOrf?m{!bid~AJJq=o#GK}u@z)YnOII&wGuwlF)}ir9>j$E)L4r)>Cf zi9es)1kP4pjR0No1(81&Ys|r()CIFKhG7>^s(vW(Iy^BQ*EA~a2(0?1rti;rw9Pz% zKd>^~q3JjQZ+aYmh`u%Gbi_qx-B_NFtg}@8I~s5&MkTjz=gvxgLi2h)7tu9lLHO)br4Vd{=j_HRk zVW?-s!`YzZJR(gyO6%I7#w$ag_#t?R1j#asjH05qb+$%v%l;;MKkV*0CtssCmTn0d z)4(fRBk7$Mwz$ky5JmqdtC>W*5?I)Td*n{ujSX}Eh$kI!yV2_UQhU>Dpf_DO$P$Yt z9_?_OnzxCsprNu)T8=Sg#-i|@O~H%RTqw$%dv!I+(V~a`!8Q}3bUVHniwvfg`10$< zLfI!m?dpx*3l9~lk#syo@=pA1L4se%&I76$91A|D95M&7fkZfCn?oG+n@M-5)9WQrrOIWh$!ewz}$ z?8>P>l2mkI9V{9A$ip?!`b#F=IR984fQ?~W2Y3k2!N^e+=HyuRYKAo~=v<=W@2!oH z+u>2Q)v$4zk~zS4%CU~_r`M(j!@7Id*tB5p=45FV7!m}1oQ2)qQzrHhof=W}E&{&gb4JocwRry7eA|Bp1PwP>65=8wNgl_V_-J zC1y%$M{f-2$7r3I-YT9POs%{hlgXGQ)Fdi0Sr;GTHWAswV--Ar+@?8@2B>Hra^2T&p~? ziE|sN>-KBbel~Gl&&-u8#k@$rRit>xe9fD4ktGfz(d5>M5EL@1Q+`_*k7-Pk1^e>| zMa~}A@Qf}fDVWS&w;_Ijzk#b# zi7US)B;3Lfc9&vmObQBao47L8$*hZZ6u#88Zs;-dx4`xYl@HFAt)s53klZN8wu3kE z?6qF7L!;UuZfqf#$Eu=md_BEYWZ~6X&~sT1U~1;MSe!-xK~cAjdGO!v7io6!d4r?@ zDHJ9sv9Cn_j)4v8)8t!uYlo;BxGEd?=2PCQ8(nX|yWB>e0|xyFj@nkv$ACE0Tmpfq zMk2B+mAT>uAnxx&*~rf%Pi$^Mc@VG;MRV3g(BmKBzF1?1A0oNB>t|8YO0|1rPJ3u7 zfcdtvWyypE`>)T%&+$Z?oNS?~tTf>@Xd>1F{)er@#Z^CE{;Jt&>=Da|uZAZsd%JoLCZ+ELyXm^=m{&wky` ze4M1uOa%}#3rnhRy4$Rl_)UBXyNe>IDT}{3AkCtiBN-j9zL>yTeSt!iy4#^Xc6APZ z0F_L!@6N8rvJOF-aSAedr8OjtkTdob=w!YZTPj9Lip)u zTSq+rEEwrX_eqw~PZwA3nT17VBgPE3+UCQbe7wqeNVB2+%?(;YIB44^n%NFEg@Oa? z8UzDWmfygu_YCa{%kz#6X#Kgb+10eTskbkh?XEB4B*uTK6w1;9X3UiqLR;TXux}S= z!EAmVVMn6p!*pYh(T*OD+V3T%KGodOM9W)b5?RGF7%9+L1+%=p{#-O--*;rH|7}ECWI-B0<;l45eDsm6@?tgHAYhvyGTk91??z7_+ckO7w zgFQ1Ey-~*=p>lD<8XUE+rq#~O3&-Pd>L;d!9n)_j{PD2m?1C!IO8B>}ZLR&9Ycu5o zj79u+TEcMOB{^>OzD<#8_4(;}vV(;=nIhP@5)XVvQq3V>;%jS(RQ(<_kwZeBW~V32 z4bLr3HptRMGi#_x%nsMQBc4N(@p^k@N zwKbATf>+RKyTLu?CZL;dZgby`)!bV-t-izgf~FJ66$yFxlj@SsU*XiD@H<&>(dI+0 z?9-O$M+tEiy&~I6y{W;^F(byeMX^wx98ZZuq2i~%5|3~Fk1(nW4t7_{z*wsuXZ@Dq zmj&+jZJyfPdXEKI)%;IOH~C$uFeT@1GvVDJ|C?4Pq_jZjTTSPz%m|0Tq@WNdV()?p zFUTK*6&-CK1eshYM&ad~do0=gw#n(R(Y~C8s`cL#yRP}%kFadxr(NUg#|4MSl-b|^ z6D3I#bkaUtJ3NCjyPVnmMKTmExuA68>o5C6z z_$Kpk{7O$A5Rnqja7aTyys~9Leu0ajVl?NDwe`^_Z3oIdi`|#U1E;jH1wONc25tTy z96HbWl-4@2D-_u|CPu&%9QAATr$UTgIxkpWcar+(v_3w?RuI_XaRf|DjbAo$% z`z7|4{KhBrK8om2b)v`>uYg$>7c}pzu#Tt<^c-Utq>VZ9)v7qJC{|WF3-C|-x7`7% z-A4KK0r7-9=RjTqX0!J(Z+^{kqYM%{T7rLU|IwU%bnCei*!^jy^qw7Lp_o= z6~3#6Pt(L0QkF0j8SY^PlP-&h2DBr4yI(!pZAwN^m+M_b`RisU1Wi?zL}cKRK-%ISp|+D@s!vEA|m*I=m58RTK-g$w}6Pe=$gg55CK(7XJo~;sol|J z|Gfa;p{NGV-rgR#zW$AyYJDDn^oG1=V<>y@@5$=zO3s5kreVjAJ!DA@rQTXfUg~R7 zx5jaq<_>v9XB@5(snwfp=48%=8J(}2pS`R@mHpfOyS7TKaQXU;^AvH!?!-l}A7ZKW znYIQvp8@uUg4QPEeAtVXXG5wF9nXYf86Gs+!{Et2i?pWmr+!0H^tl%9zYr@{^M$K15AZrDW5T>R=^SF48$2<>>S7$3NAHRN^80>-|h!tmuy4plj(Mo6B^aek5$fmDa!F|X4ShcbxL%>&o*>?gLEraQ1b>kw1Av5Td(E_XQy8~?MLZIKu zD)c8oI!O=@N-vEzENYTISj`+pvP%=?SI$wqoI>QaOWVvzWuz*a06n#0+-R1kuJ~$E zjw#Udr|ic{#}9TO+r(7Nx9#;v7|C9-*70f+rSkYhB>#JKz+R8!Fu#C8=dj|}lgQw{ z#?O|XR>PtScBsh*Lyflz1$Q^Pwx^ZZM79F5l(Z4Kq;MUQyhtf@Qq>#3be!&x_SoG~bC$_Y98m zD{?iMQJf&A@C8D3K^c%P>uz~|eJf+p&t@?@@x52nBxW>P-`(WsIxFc!d`{kv>^1J2 zUhxcLHs>Gl>*x&dCAl_tm*ms8+aEd_yw<8lEc@jb30nfGfaSM0QfjdW)t-Ix)HR@s zn2nTlS>x8)SWiW}T8|wf1_9Bt=Yw=79RTFvGOOF{vsZiTTve`5T5?W`6Zc=ZUul4T zjYj%{bIN7pqR@Nzj~p2BeAD{js+fl>R1kQl2f+Z8UX7`1sf(g#p3Ur(CBxdw{J$HH z*=HaWe8}GxV14qcns!zycLG3tD}dfMf&py|g6*B!AFIBTZ_DB!TeHRshBl45j|IKiezj zV}(-Sy999dZOgaNolZltYat`b)+OHU;aiMIXl{$?Win|83A` z?Rsq9G^uLGaB!4&8>asIs`AH!$LRjHUFbM_>EzgHzKGB#X*$I(Z>;rY`byF z2HX+(i$9k?L!X=PW}mM&tDZJ)yb6~Ef_eu7uIqAEvXvR1b3UCBwKp_Gn=w#ZWXy2n zv~}~Xn-}6QM_y)=(l?ML${yjs+ZJBsS!IeYMuZMBMD`|`>e;ESwS!Tk$znO%eesDL zRK7=F%`@~i#&D1cyS^8%Cfz?ob!+z2<+J)gJdj9et6)=^{f&<5;^h#h`7epG7!oboL74X! zWjB=FVd5}i^aei9`v%UC79E@y*GgS8rs)x%BB(4ynhLBL=fH4WD z^Yg5n+hpU%fevJW*ro;I5z^Ds)B1skBf!en{cgXb^SlS~Z#mTQWAGDso6}P-AXDg$ zWQV=xW~%S{_^y&v@No~6mO&OKs%(~&sPPs36LXjnxbQqyqe2n4KXzhrKK*Li6Cdn} zDJ-x31(k;icP#QPdNg}Ab;u<9?=63O|Ba}aiP@t&jHn@>;Qwtjr*Vp`P)m0>w1P%-PH&pR#R0}QG7me;_vvtFJ zm&m_~creMN&l>3SUr5cJ^_0hJ;^{Rv6kGU(#iF-Hg0l<}K`7H}2PzSb_3qnK1!qIo zK{%@xflbKNVwN^&sp;&+9l!lRsIorTe-@?Kz-^1r&qzsC8F{dN(-an3(_Hh5%1g?G zAuJ4)%l(lirS7xl-j@=(pdiDe!NU}19fdFQb<=9{ola7VePuO&|7 zO~dzO=zt={ochZ${QGzSQgD<%&BRS6(a?!!;q2e;>K*J`zVfRJ^UD}5t!W(akA`m$u>HWaX|h~PEtdC_RMY?F6hbfC5W{;lS@Vh^J^*b$GN zk9%H2Y*El{Kk&#CZK%FiD$6QEI8A3`h2na1f!qh|vT0Irfk;mra=JgHuc)!V(E5nq z0M2vF(7&b_jQNj2VcCAN%Al>+S!;TFCU7)$^21rGy55BDk`IqrDR!gkcawqn`~Ghk zujy{g&fjwmw66CABwEq9!Mnrg7J^#0G&-V4nipSh|## z#RImx{fbq@^TIWDeM4hwr;6u+U+1fxMd!#@m^gYij zE2R~lZ93>oM4Prly1}+YVzh6uaI*Xjl1andz1w3+eHfktNEtTBF9I}=?hdn#_4XVI zAt4jfU%!W{C9}#3N}bWWBpKVK=1J0j`Nsilfh?rW5SJ2jy2`ahP5;?MLF?&#yqp0v zdR98$R@R#RU0fS7RY-j?%aLJO6{U2jy+z|yRJTehbj@45DSXF&E+4_1)@+AST4I$CHlx!;QxbhW}+a5ykGXC(w%#MGV$@2(R)AG#@V?&&t><2lA? zTh>$_>Ls%7UXPaRxP)5p0rDH924r2Pz<7mOQIf~6#Xu(qy_(4OAu6T!t0s<)=*zSA zPw8>Rm@x%SO&IIsSqBGJ@-m8bm7no@^^pDCH&Mo;j~xD7PqbeSfnwT}BsZniw2*1hpF>7GP+02> zQj@nhuHxJd^i?4^r%xTI5KXC$pZfxRkN=0Nvy6%=V57B)fJ%$fp@4uQBHbV$Akxy^ zISk#Y(lH=NNS8IsBml=txFoRx%Sd z+6->vChBK{lbL6gbiGb0a)>ape@PCIA7}K4Yp^Mi-~xv*UGspNBa|VP5^Y2ZT99{x zirvbG_1>3?(X%8c7!Gd4ucIlc8LheuTdfEL&Yh&ayhQhC_ef1??d!w%vc~WT&v+G$ zs`&qGDfr-|I2^RJUDjr~o&LD>Ye;_2DBD%r6TXZ$72YG&p?;C9ZD?zP=YK}uJ}j~6 z$y-(3KrO#t?tj8;ydAFGEjIJ|FcgyhfwGUfAa(uA@nL28JUL-Z@wKcQmK&0xO3t^oAraxLvpLknFFMxK?}m-s6QO zSN?%lF*~r@4LusGYGE7=xZ$0x1QyD=h}6GUj*~(>ifXI-6YE`x8!S=3oZEbB%K|T=}JRD)W&h_*k zh-~n0%2rU)rofMe2zgIFBCD8<@4f5WPT?a+!}I`$-q_nZx;Ovh4gWX9c34NhF=x#G zU!OKclqkh7VeG5`-T9U|aS=@k*XgN<#LF3&RGc#UI>T#j^Vm6)W4;lJeT(wmd)e7X8HE^ z{fGBQdJn*~(AS6wDLR`=y*6oSvra2-bJ|-G)f$QhC1OD7U=im(vN-v%F+^_LiJ>#(!|Fq*5dbIl?jajCZ9yR z{4fF5FYWKFs!!D)O_I@mdDCFMOS?x)$XFehDfJF`U)7wJYccKfxVW=R@`T{TIwrC1 z&kL}kn;XSXy=MkGttq;~I8Cp1^xE%~_l24Y2=3!$hxi?R<c|N3*M~S{-Oq7|qL1LMf~-+&O1DO z$JaFAnwq4|{p_!th}8b$E_;UvW`^ij9bTL~r@yqjlb*AFK~ENrtZhxFd;Y7I?j8Vu zJ;CrqRB;(E1JYRTOE%@f&Bd3;-D~fxx3}Zhy~)Mv&_dst(bumU>(K2DiZ(|*I(Kx% zk?JkK%}l2g3;iw*csFZpw_hA4G9Fu7)6>8_V}<66@!%NCS?8}oX9Z6PbXSD+o^ z)~tOcbGyKYv@>TGW`TGnw>8UxGPh#A+U!(v@1M(lzbWyYZ5Y`gc}h%8Qs7O|!DCru zl%S}156!e7kT@a8?p$Z|CccN=3wa&0sI;Eo-DhyR@`(f(W`Ogt#OGB_pl>xAe>B{~ zl%6#&8tvFR$)Fo0TF^bxJRn6Kr0^(tb5UlP|K6h5~d-r z{%qBHm{4y8j_V3SxRXAW=LC7zRuodsU!Yi9FNep-H({$sX6s(m7SbCRd?(?Lq(Usz zMW3%$@jD)XUAbs!wRw#(P8!*3`+Wb*82#UNhMoS5u?+?K4>STlb13 zuu+;uR{zXw;<5lat6x$qrH;BcJyw(c#!wm=vif?xHEQ}F>3C%`7~~`7eS4PAy6m5! zxPVDm4Ox%fq?Wj`oeZU4{&YtHX1Nf!=X|^!$Vi5I)_S=kT%ICg@`qUwr=)De>akTz zBgCaA5FL}wR;*X+k6g0j_7WzkGSYzUH^#3(l}y2Ow4(wgs$kxMYJKn&)eJJpDwLO) zW+WldIGYe%Y72~7yAAg;wOx4^n@!8MI5+yflX4?1w}u|bc_vipB^paN*L%qe60Hl5 z|6(IlJ}KmR%oD~&Ip-*kP+h)$L*kz|`78#?>RFz3#^`=)Jk` zjJFLYQfyYkNBI@zs2*XZ<%ZC?IlWkN#!cgxbqOWvY3YWg$fbM!un-hUvq!e>RvHe} z*&yXkb=;4!(sJUP$k-5gL&eAg0)Bh$rfaV#y+FUzp(ysAx#ZI>O7GG*r@Gtb(Y$}R zmoFHh1=SCbj6fd@-j%PQbl*)5htmW!dafXHUtCORwPiIb!nO*{jc$``Nu)PH34>IQ zZP3OK8@gn-vkXZU2~*k7_8+H^DeX83tAz*)aMOBHcy>Ze&3m1tzk4`7pVA$s@Z?pZ z_!Bwxqkmaw(G0S$-*Ud{O!EVH?-&eSd@$u{`xd!H%!Tv&spX5U8lvzn#oKo`K#2|S zDe75~8Y8ro*tEz5FhM^wHet+~qo3smoMrEK22+3KbBN;U#1<7j0h8r);88|iT?FMz zdYNNQkNGXe&3HmHVFc!%`d`0!|E|*nA_lPHrP9jbt%`FU1b+5X;G^Y%U!kI(tBFg` zyT=f1fSfGq`I&Zu+(gxz6E^~?^gp#H1BJr)Zze^S^1{|X#%6gSD=h$$zCu_i)T4tj zPpM$&-7gA$lv``B&C-CNqv5(!Jjc#*Juz)V;LCtzf>~d=S*kb@VZi8g6pT+jn9+8# zt}Xb~?QQpHQq>6U@1({_!+QjxRk{v8zAb(J6Kfe}i~0bY5WXBjmWR8}TUg_UHj32#;8Rj;*3SRC`s&Nu+EFz+N{_r>!{!H{7Wu*ra(4NkE zHmZfWhu9DBWGryhWhbGp9WwfMYWo2!pmF$N#Ss2KoHhtjg;psu#9&=E3b9`M6q9wZs zBy(B6i`=Yj8KTfdG6zHONJ00ick>pQ0`I#%M?p>sO^$t7SP^MibW>t#R@pZ@ekkXl z!uwyrmAI%Ia3rDFciwN~Pr$*pq>VhuK3Py_v~gzgC=%KvWEMYM#?Q~fnPe^T0nwnb zy-(75oTzLQm0SdXU$Gb1*da-cF3!&E@9Zc8IUKAV<&aaXrPID-fgU_Bo-Mvr0dCy} z%D5Tw8M{fOehJ)Zxn8;qXd$#>m!Td|3*$-5C6o+M6M&}V5?WyZPq_>m6VqA*n!H@> z&KEm7gBckbg#Ge{^j>^5n>zbR5&L$L>%S$UtN{SqJ z23-!)4zzC4C2u;HZ`N8b_gj;SmTJBK4kSd<3|jJft|N$+AuZL7X0!%c&}zNVX9yZv zeWO$z-C^A%f9HU|_@h*(q9=@k zRW$s=GG-`Ma0wGSp1aySZ;<{HcEMN`d$$<4v^;TB1|lXx_`XJpp3Oe|qo-f{P1oD= zTb@w5Mx&v?Hs07h1u1A`ZU^O_otf&2OA+;`Z90aXR(-=Ezf8yEH+N}81@FjAOwXEc zi&=E^V6w>wtm6@m;fK1l3-uSby$^=GJmQ}L6y(eDUt4i{@Gl)`@k8p1(Q9e4=1)mZ zj8Yt(EtFd-t%n2f%b2vB+-iP9-!G6JWU2k&_LQ<9{A5<)Y94PdDI*d8Bub^{up^1U z^K30hDD&w6@2Luv2e;6|bsr2kI==3?iQxCUn>VQ`=qI}lHM!C9+mOkwOi{_Kb-GZDdsEj+|0tSmt7OQ{RAg5TdwvD$uns@P267Ddz0G{hsIBlh=a zK6BNk3-R;u(Yp-J51jLThrftWh<&_D{|^8+H(tjbVXyNH@Fov@ZW_4Xya=C~4LKe% z_PZsbZ4h3Q=gav8Cw=ztrFLHh!u5lb4}=q?LhdBbl*}sf*$7O#YMsbdmoZuM4oN!; zxDY=I1k8K1l^ZwOri`|jb*9X!XL-p`&q{Ge9iJcmz@b43=%_Tlei|xiM`iw|NB6;q z`i+^;N#@O)P*#gPz8Jx}j~|~y%twK2sKZD<2jSlk%IxcMWfBv&(2snR%)b7ky%K<@ zpp%ynV4x=gv_7mH(jGhCag%4%>Z#XFxi}jV-|)+*dZ?qxNXQGG?Chv+pq9wG<|1gz zssSlq!DT~PhZ^U|dPWALhb9teOH?!JC-2~r7>{T;KcZvpCuotbwkj7XAkJg^5(zjM zdcd#U0|0|-=Fb_0EO*0L1zD}Pwj4ZtJJM(q?r9I{TB3zpHBi-nW^O*qpmTg|k998| zxVd@pz<0+*)cG`IT9DtsxcYix_qRacNtnmk0W^I1_F>$=!%U~ZVMk+_W$+%ySFasE zT6z3&t{$e5XWLZIJVnf!mO2#VL2mxYx|4dmgvBn@dz%Llq+?@h+p$jwYTTdzomO$o z&N_p5*RGQ_{NF#;1=5Lso&tPzLW}Q5xORL-!onS&aYeUuBKuZ59dEY9F7o!;evOim zDDP=-+`cQD4H;m1heOv~%--Dv5}5x8Vjeb=a(Qg#TbDV$x`Z!E~bMB zp9J2u+?hQ#n=zgZ00FaG!s!p_WTa-d5^h|qS^-T-I?J?uO#Q^3$Lkw8`b}bVUp~f| zvF0qUEOxd&`&q@&SDV0#7K z2|q{ITr>E$buJ3*{C2cG?ZbIXH>0Tn_Rd$h_{iGZ&DAN>d5*n82Q8|!Tt&T{a&ne2 z5O~sGuHUdl`@1lkQxWSP-tv>HM{r?Wmw+oqEB=c}o`UpR9e)9;9Y&1kI~zPdM#|9O z|80(B~H?I0ebsO2|Xv~qx{ax6n1YlqAh=D zhRP)p+_QC*y>i~-6h-)`F#d+v!Pf8OQAZ?!9mjh!*>~-&(80C#TO9Ebd?6G|f=hpA zo+wopi{c(~4gTw^K0q-#`)!<;=`U?w=47{`{ zBP<-3@gYx&-`Mwxfciq!`e!SDUS`I})oOZkWM?(J*1=K{wN2hUKD<%@qd%4BHb3BD z#PRF@xEZ9Nn#ytx-#_)im;U-A<(hcK$7|pu?_06V zEGCGGT;lA^p8DI*zf4eo2R>VTOmLiTZl$>SJ<$ilAy zLC7{Xb$yMlAC4QU_dTly0~U4F zjVuINxAzx9$qeR>kfENsTyJW7eAaNXYr~h$q=rd!P^CdP*8;g-xN#kuM=DcU-(L!n zE(fj=mpXm9t{f{wiLFl zWB`~)p6w!1nBq^9n*CsuBy>WRc_M!@=n}b(7tw)rZ_@Q{P!kiU%T9KVwyaSEXEHW{ z8+dM->`V8?%@nR#r`wt!GiGwPG?K1h`5f(<9s@wUGnp84t=GuKS*;4=jF-Pbv<3q{$F zZBttNFLu)HoQ5=&6%9?ZBC*D@TBiVC?OY!&zm2~546ma9Pn{)wH2R-BLq6827%3>+ zl8bG<8Hmnq_S{@pR~$T91YDk_O(!)09qt9pC)*V(q{Q(?oLcF-P;nUyQ4u+AMBk=R`N>s z$@WD?;Muflrs!=?@4p^7V%buQqpL7$WK`FT&XC)YH`H z2lNw%7!K-n`3Sc|YK&!f3r|bShe&dbxHED-n|jIj!S)Am692H9sOyrxi(f3Il5=Ls zF%(oY)kUbgI-;odu@=&wv%}K9&d*PqUtjqdQb$zbzOj-za~t6q_^TAyU9u-~Y6tOm z?5`d?32YHVFvc(^y`0z1E^#Y(D@WInD^Oq#U!1m6rl&vOM@s@KTKy-EFY7L)ZVDcT zQZly6`4u9Qp$stW(Zy`m`~hUVpWE-Y0X=&NIe|7*mwEn01u$Of`C)>yYu`%8s;cU4 zvaS-i1!~*6Db_XL>?wMl-6)VKOYlqBPv!?}gSk6)be@szS@a5No8DLuHuSurh;gLq z3}7ofxSs3%N-#{?o>P_EKPs~QUW0#j(4tPO_Fs<-auR>Qno`ip%ydJBy}Rt#)PIqJ zQ%FMaR2}g(Acy1EFVb@46s4z!m5yuqgMDxuLI!`ntf0{}iC@8Bwn%NsL(r6bpavlT zET~_*?brH?NB*Gv zI(D^p*@~nI*}OJW#$Tv$-bb#Ah_by~D9 zZ%qcB93H+toR(ZzPMd0R%#t{MS-wph6U2_Atiq@E2TlJYLQ`hJaNy1wHRGUVNxQy? zFWBbd&h!_>s1gX&@cR5NoB=|xJvv*5-SFZxB8MCtd_W#BR*uK3U$5PJ^};hh^f#_7 zm^oVZU}E!$drYqsiZFA+iHX+YKww}`v6k$9+qlI6-R}~o>O1l4#gG1%ryNjd)2j^m zOzk=D$c*;BVd2?fPI~y%91`zvOLL-xPl7qWlR}waKm6+O#;e7yFz_&DF|c>>yld2d z!5&G2+GG?%`@1g7kj$gHio~ynB_V&EH^^96=6`ubr;(3j_%4=b`E-s3j9O8SkBOGk zx2jyAUJzhdS?u0ZRKd?Z0Zw)<%vP+-cUr=31O(c;Z!z`VfHm!9H7BnOA+ug|lg_?V zwG95bPhzCx?OqDd(zRpa3r9YbCZJUngJn-58p zkG(i`Z{VGtJF!{Z8J@d2ou>ahC3h%~Wy+hWooK(v&>1PW^=yS%gim~mrWj=oR^55j(M-WtdXb6ZcQ#F}IP&M1PGb`vo7{={A3DTp(=Gjl-Yg~W) z{^E^ls!1rhxbx*8)y_!r-XX{0#bW2F;ePv*E}!GGVj38>{8oUU$Cj(re;EF?=Ug|` zI?X_V3ERXGt>zfJD|1sFyBSkYgNSHyw?NVB8=JJd)1ZexzZ<4>Vba1qDf@U2M)9&n@kF}ou7Jlm6sTV@pwbHTs6=a^dHic7NKY=?O z*0P|+!9JcmnmtDTlCZx1r1tPFQ4By>t}N`9gmrO8^ex4$6}qc(Sn1QE~MYo4o2!y zepD%rx|8d-i^j|yu*npi>>sN5XyOaCT`T!N#Fo3BpCC#qs%|4l#l1ArDfRX=oJreX zNAQb|ynDk|JVDjyKf_zLy1=|4P%F$Uir!rz^L$U zzR>4l`R?Qaz|K23OA7G0zg>z{o;suC2|rq$#!v;1aP02;Q}nNkP+AE`C!c4DVP&5w zBpJNxWpGqR6J;{}d9w`HEo(U$h>pJt+i4d{%v^dPK&3FS1_1f0|!NoW| zM~%GZm&9SA9INpHCFmgP`e}*)e8UnVQJ>`o!ij6F!C~w!yDIi$CB6^oM#s=X6X$!* zDC@jv>wAA^3weOK@7xE%5yS$Iy!#WRJ+Dd<_alSHk_S{!z&Z$9S|c zsrVn{{FUHgh%ed8gGUn-yZhGWHeC9fm@Jp#U+jy{Ew!NWYy&n6DuOl!rWIRfCl@^o z{0!XaiShfiGg9Bi3n1lwK@2)_ZL??Aw_7i2Z(+;W>S4=d&O#4JT=cqLzplk0n2`!O zuMc5WWdptuwGao}0lo@iU_&PrnUDr0b>z9PsOQY>xnj^d0epH6wXTFM;gcU;YO)Wy z>ut5*XpjYzRd{sXbxf4N?Qmi4z#-RAB1M5(+suV+m0vAkW@2rTzbMFBp-{-Y_{D-? z9jwBpzCPJW;&Q@m@g!Br!%wx2el}<SZi6Hpu^QrTtjt z;y+8V|Lw=JznR+jO;_9uRD8a>l*Deop*;BSTTF4teWQWo=|Df_-JQnrEnKqR{~Q#q zU7eb|4<5ERUa_(H2lPc*-&00XcE8AW#V&d19HT;YB>qr0oJODR_KinHt!4G^j^me` z!0vuDbkAj{W>CRyC%OryZI*=W+y+c^^&tL%!%(;&P}Qqh{Jf7Ij+nL-=)A$AbtgQ1=m7R4E_`=S(-4@EU)~%^u~wC?DVF zXeF4O&!;A;X8uAay8PFN@^W8Vqd92<^}x?eldA^<4_u4`7Ax&b zzy56o-cO9n?Ju8Y7iE*BE5U8WYP7YgtbodP*C?Anc-r+9YOi2WKv=*!^wFvW_V)D( zeSQ)3>mqc^h5Gf_cHrC|>}r1(ebW$5l1&RUOSh-Qs|D>V)6&pXw*z#5E-oXiJz@Jd zrCf;PwS+5#WjMO2H#xcHeC?vek-Rgd>{n{tv&|okU*-1epude+c2~_GJiwkRe3sHI zPU;}q|MV~_9~Td>{Nr8YQI%Y7!8X+t?JQ@^Lq#ETd_NZL{T`AS&p^D2fi}#K-?(8H z&i{nnhf|wm1!LB|?`1>yfwZWan*D=}yYxLI7y>a0SgcOciv39HnD-JspHU5U?--1j z{@0|Ok+gt-o6`a~C{Ai9>Ns0pLdF})UPjHs$Hh%EuZibCRj>WDg!Be&z%`|v2R<9z z07vwxTa~)RbM4eXvNeYMm4FLL%j;M=vdj$!2lJtqpwe!lWg`(D5%ZT?A-hY}WzLzS z@AZL?=rl{?(v$nkW>Fp0n_W0m2EWIPL;-&%?IaaNb#&dBv1=1eS871EgMcB4W4BiO z%-d^J13F+n>-H)I=;AsH71Rz`m{sq>n0}HI*3-#`j>Hm!yqdjLZc3s1IpasD8UN_O zOZ>RJ`cpsOjdd==ZC5?y?z~l;_@x;@XK@;3t?l=es5Rl`UC4H9i}?L;D+TkttK}S4 zYEXAGckcu3-NVz8m8R$Jg5|+Z7mn$v+4t8o|BnoA5aLnsNz3jECpehTWhw zucL0S^B2)apj@#<;a=lYsq5a*bgl8RPLc(i?8{R&hl`d)nn4f69&+s$qaTJx5M$E> z0)pJ;^GMl#7TZ7c8ws2%#U%rFWXuC!J;%eivLU&OHVf@}K{*Ds4c1y~kkq56%k)@` zp9K5d-7n6P(P2(7e0IUS9}&`HJ22989`*8gF!tiA$C_kZg)gMIL3Uibl^%9tjHHlef_}24RdS!W;U8Cx9g~J zZ)N@U_)~hD`wF}2rNC8nz8n4K z8-@qc`$*O1B*b6qSqnQM8zG_NkbX>%QJX{3(>D5NoAJInD%U}?(Z6*K2y=P&f;QXD6`PFPbE%HRy~yca@=;(B0l)TR;}=Na85WyZJ!oo3|jG- zj24p|8jpCn*sw6dkA)3Lvz6^Qd3gAWT#r?dLQG`wuhIt_cwdZ&8<&S8t#PF;I|@XQ zFcY7D_V7-;g5h(F$^|z)fbAY}g7+`#H_WKzt9e=N$rXoW++_o<=^%7U` z`>^V$ts_I-+?fdB$@+Qdh03qKoZ6`rydgmPgPr$Es zvf;QDoTVq9@LDd{DT!AWFMF>U?4Rf@WgUQ5yw30q<6qd(+mnsZc~fO2=G4M6MV6M5 zoreQc3;wAgO5-x{avp#$-?_2PziY1yPDt%c_D1` zSH^)0W2WA-A5P-#&2S5|1>ARim!h?wB|GRgX71?vhdt_LQZ&uky|z0U`%2yEzelU# z<&*65sw@Q-hL1@msPm}El#wG@xEgCmXlAEv?(a|frM92~0r|vo0qQ!LG<-%s3>k9I z@xo_taAKPa=f}m4vTa%259>YEPvO{0vM0??oC%zqLh1dFBtjhWpV8yt~Ar?H}sv)5%HG>Le5jR!}A9!hNd)x$#A8W#Hzx88=USN;+rCZqz29gB=#QT z5qaFMDD(lA>klaXdh@LmB0JNyF*}|vBcp2A>bW1ed)ZI!=0>i1?>|>;T|gjQi|PtX zSt;0w!D)y0%G2sDwz`d z#F+#H!ozlh0zA;1xTTrUpYZb!$i3x)GqW1_Gy6I?;Ty58Ckw;6m%F1Omr8DzGE`+}FQFbbO6bkNJ1ec;EC3zP&SCThp=o=^OJU02I z%DbT3nV`jc7k*%HZ1VrpXgrClg%1MvX979(m*$M`PnxTRG%c9!{Sr$gL7e2ptrIqm zax|+sUst!Zq&RBFDnl(^_Jo(^%vD^R-;Cq3ESoYtrU!*tWP=tKhI7~hhtJWpl~-GG zFlS(wb@H?1azO3EK%-HE_Y&MSnj%ha_*6P}LQtK)suc^6wD5~NfEKD6LzZvXE`V=4 zeY$WZ6-jV}@SY_S>};vQof(WYcpUH5Y%2y#g5Bft4}?~iJFib&%E$!k1fHQTc_n#8 zCE(v6%|Q9sB{MIHV`IP7Zc0?oC9mUxm^+FX-~gzhY`yjv9CAM2lT+K#)M-d~g<_el zhA@e~8!Osj{=^-!mbF+;CH3)V?x!a(wds!qGG-BET&Q1MjqiG1M%qitJ;isAvK8~* z@qvm1KMFX&9@S`W2Px%T;ovj}j<{LznH7Hqt-fz_Y=b0afIy)7M=c_0wP0NY9DWQ< z7({ICl^|gDN8VEiz8)gwry#{7Q8Jb_Zj$c1a<=T+&1wF7$a1S$MGGbhT#=hIUz@-1*JAiMI;q8I3EJz*Sh_cooO>91!wvO&&w9-=|ae)qHbn@moXlO3QcIaz>~ zmfEFLAdK#XuGxFVbsEA{Dw;jok1ybeMvgvsVisO8{k!OszrvmmWSyDxw#8X|AAovt z!a8U}d2BApt^aJBQ4Ug+F|`%x?22}mzAKewLms@B7Ns$_MmOXyd-6}|N@MI%yEO!Y zc#FCDxw-01BKCk#D}#Y@-KB4yzTW-TJb*B6iB!i!PtEd*#`Uh%&Tv%UelNHlYF?}f z#waVR&98?XFj6^h|B8)ujGl%gx~390ryUc0gt+~;4VJ4J#jrm=YMK={*3wSRR&`yr z13CmnL6NTC-;#8?iYOE*ctYd@*lx|O^)@#RQxVg1HeO=Kf6o|1?1KfJW(SwAlZWkx zI6^qCP(7asHEDRyL2t-WzK)e6=PEk?lBI2;=ltoYbOfms0x^<{!CnDum6H#f>h0!{ z2Jo?2+wiz$GuQ=vP4T6yqQKvq_XCt!cTgguWJ2;FhsehXk%`mO{1|G)H3>uY`BGqM z!uuv4qy2#Mx2uLiEH@sC(ct%-b89y-eLs#Cpnnf%rsV2}L&UF}3sF~R94$DRALqz+ zTA-Q<4TILuYlvLEsCxV?V76_8D|Oy`-gaB)a}zNa`k zH#GGJ9Hqj+kB1_5as<|S0}Wh^I`%7dG;sr6fKFV#t%U;K1p zihn0Q+4O3zwLPAEo)*sT<8#;t6ezx2ziA*ixcMabHbulgrS&Rg{d3sKlFNI{>-(>3 zD}EXG$wcVOmqcA1ojOP)-1#8NRw;5pD(K?_9w&-7k~7cjPZW@W9vb2*YwC`E%ARJ; zhwB=Eg)0%y079%gHO7^BVL{GJg&w4^y<)bqHw#qj9=zKhx1Dr#6n}fv3h4RC!ypPh zOBn;RNAgQH#c&nBqfqp`;_^+D)m9-3mqo%p4LO8gT?5c84rG`R{7tD^vMB9jo1P_; zuA;NYWwx1{3(ABTYHcQmTb5T$W^~^)Rog>4{0sm!0jCy>=j${qH<`(8*_F?2wSn?k zj~hzj0+Fo}?RwmF;W9;c-@POrQUQu4tM)JAJH_D31~*RT##acn?0e_vhX<9<( z1y{kFt$I=DTFRUHnz`l2XF7ZlIKy8*6rP<|dy6npQ+sR^G6j6XF3F)asE|a%;zApi zZn%OoU44$fqQP;dMaQ8XSDfjm13o7Q&QRh$C>_B4CN+j!JFWtSiyClw=)v+vSOvH z>-ur^hbZ!g{<(oa2fufEu^$3S2lAfZHBa{$+XITO=?9L)9)7(qVmX#}+<5Ol{Kw5b zK|XWbw>;N=gF^M~TGHEe_*K#Yk6{^3DMvmOc?djjkHh{XLM=I|23&KT z56xh^TvKtu+yH-N&ZrBQ9`@0a@msb@ama%>nu{mjQX@hk^L}-}%pEE;7z< zxZUK)zq35(_NmUvd#rO@HIy@_RE8l9Tb9;$i3YDs9Ibag zT}0wvltLY_pHc!2#V_U~^RFF@n!FE&to+tdZ_-~niq=|RcU0Vzcz8kPyjqU7Jr7W_ zAaGsBWo3PdNA6ZuLARAb-v(!V5ri1*#{seC8qa2&>%x?{GCgs)N`oXsyqLcymmFYE zFr6e=$tADR=DF3?6X3d_{9U2B%RXiNOdsAUVT<**hbpF&FzWA*1xCg3PoG@%s?fgp$gVd_7WVpO_s_z~UayCa zRTknX-}jprzlzzjrziQPh&Zcc5&_>c1)RS~`(Nx-F^Iw^U->Rn ziigL|6)UCy?E=T2A@gLXwMa+CaLTpbpe8JrdaT`Y)aaL>GS?)CRpxL*sVB>;FCLh9 zxqI!x21NAr%bZM8rUm$B?O!_;BmNGLj0$JxQ*e|6iz?Kw_p{3+cE4oN|5 zhDX{O^lrFk6Kg-QJ-fIv`b_HUnAD7{bDIpbL?v24G;kXS-VA76Y!Y^;XgLi?r)o3@ z;7V^fm9$C~lW;Rrs`bGOC*TuH)}S*Y31W6Bg*J?ZriIv|l(gVS3ho0cjQW~%G}Sv{ z8){*%(;Xw|b>Gu*$DR*OM&1&H0(Y#NPho11}ZnIpN2ryw4MUs zt?2K~&d2;Pm$NkfDOS`1V03=q<|o9{{Vjd0>^-@AdE?m1`>+ucI4qM~gV&*O|x*KgTakzYX9 z+Nb|R)74LKg>6PA$xkz?gGZ8MtY-R7lD?Ym)K!!wK6Bd9>G0`!r|EI`JJ%1 zb-tkU<09z8eu4~_dk6#n!L;XUhio=^7G_L-;fd?j^bFA6p)0K1u(oNV`})4prnCrL zQ;59*G)g)Efk60j>pTs=AfbsUfVPxc(kmT`OIAeiu)4R?R8gQKu3USQwm{%@i!9)T z_qSuMo*w7@pC*5JczFH{Fw+h2@%rN2%eG2bNML)v`M)t|vBdz6si8q1~$ef!b{Z+`Cd@tcToz0GbW3d+%+1kQLy z&*c~!`W&y_jS#VmK5^ikivl+r)ZQkbW7V)o)nlEdw&ZBw*-Yr8p66HWO~ph)8A;!{ z!zt(V(ti==IwA(jJCorQl397+f@%BbdAM7;t2Gg?Rc8(_J38_*CHzMI@v}ALKeP)O zoeG^qUnAcfptHM099uJR* zBLT;}_HxbqlJ}7wZEK*yE??XeuCetn+c+1i8=<@J!oF|i>+g!>3xB9gSyWPAZF|35 zE;TtFo%z=BGM3;lHQR#ga=?Wcc6H@2bHK3L*e@cAC{yr{kC^c_?nzyv@*6m*o_=j> z@Wm~y>r;ma9zJiO&cFwV6ypXrACmf3!s=s3`vMKC*pHSk@(E-38<2_JbswjPGqs^; zHSJvvF#?~4534_y3lw84vl6cqJqW&@(+MtwcZkKEBy2yqz#N-6^{b*H2JO*pJAfUkrA@yEj5BA9{k5z^a~0l)!q3A4!K8f zG)3ji2qRXaB1ovd<;rYi(`so!;^GF{zVE6Bu#Ab7i3w32=n7J55!ZiDPIa>7zRciB zlncGO#*MY;OS`JwV(vHhV*O^mLqyY+`%5^<=u${{?N3PX3mYge{BusnTPl4I=A4;V z5~Lo?1#c?Sb}+W#M3)>QOX7ozOvv z^zHEyzK!B4`P^gGTiF$i=Yj%M{oiDJy2la|L3rIQX$TZY>?z-79_RPCAa=%s4NP|A zu7VefduoZ{=gZWrtU3U5KEt;_MZicD=c*UZUE!xy34fm==a}KL{NE6=e#U;!4IGPp z|02GYYa=auo17wk!6`rn9O&)dE@$JKX7URlW}`xuIsFf1gvLhPqa?DS#r+D`_g%Pc zcwE`v=*N&@;BjgQPU9oWK)fcJ^+jz)XNoWOj>5i&IsAMDNvwU4S2lbpQC!X_^Q;iK z00vGjxPZiA$S83iUZ5&fXB1bCus? zw9AQK*Z=a36Rjes>m$w14q@zx+@Xy3wugdi)~h=GNK8!o{%6krub4WV#NGUO{GZ3b zy;a`Un`oSho0S5Se$FAmDvKCiJnqw+n9^beO!;`uCta6N%BY>sz=2s%V^u-QQAv?3 zx!rti1Q1Ch1B*JM-09wYW1#z|F0x8kl9`y~TArbPFrm0;05oR~wPhP6nsZg*LZ!2J ztB*YnX5zYPG0kful5Cm$<&BmqbNaoe0y?H#$c1 zYCtpeD(8xy8vM!RnH-c1dy+`HV`j+R)Udkg&D(~$@_d{e6f4Y1O?qOA5yyez& z7v-|`Q8c<8-$MV9pxE2y57H6=`BXSUY%i?Hax>Nc{bqT~@TJnPu@SLL)2Sww#pn6j zOe`3>Bmd)L57M9oC#@!wn?e0M$DpCzdxSQ1OTNB`*%MD0L9=NM4~FDPdJ#>*Ju!sr z%)&~n#lr^Mi}Qc{)7{`gNIR?bKdr#f;Ze?ryNIz$i&`BccF0WVZ(XC`C+tnq*SjRE zapc7z;fS8fI%uQ4o0}WM&mb4G@#GZVcN`UWKSn*gUgg}GI+Rhw3OG2p_rZBjk|Um~ z8X%$NeCbrMT{hqt_A`^CGKfe!J!;-nz)3J%{(ZUuG;7gszcc&V3WgPDgvJ~qvSOsN^8X}l^N2%!vHis)*v7J}$&5M8S zA4^TZMhLlOTNQ3`UE~c zU3&C9z%oVrG(bkaPWBYFD~YWpG7>6id`8n6vUoBELuJV?SwWQd?@!Kk*9?9W=L{0o z_f#Rr_dP;sl-Xpgw78tr5dvTe0(*cON?NgxR#0Ux-7h2q_+>`l0FaJ$Mofs)Jz#ZQ zs%#(J2HIo74qk@F%zbKZzmC3g>CSkNBC4ZX3fbkngeW=Jn!D7fn7hVb{}cT_E1uE5Ij zSnasPZ|Ox(g13Rzr)is8{~W}#$7g{>*wrB*I=zPg@y{uS9&~18zQ=sAcvw8nl=tM> z4QRS)IzpZ%ou(PBFpjG3vGeqVU*bC!FA&@8xt#;ORO@bjmhys5YH`gX;ek&s5DOGE@gO1h;Lq@`P$VTPO;8tLxtlI|Ef1Z3#$AqJ#7hmOtj?*0Cr{U_X? z?scv6JdULloG7^s=8#$Y!|nfeZQDb_>x6*l{mkrNt=&pf32QzF0TtP+@bfVo?4v5~ zv}@-5cOULCJmn07l?3R>n>Lh;2umhjM+)w%$%t7~zAr~mZ_-=g%>ORffhN-Amy`d4KKSsI7?wP{U$ zNLIFY|1RK+PrM_${#}s2`)Lb3o+~Du>hJd@VxV7S4_6kTKNNlr&QjQpy2w7y^t+1- zs5X6znUs{1QdT;ss(1@@{&hy%K)*)+Og+KBj!vCk-=r_akPx}*S@7_#!K0z%p)>5z zIj#hj*MPKu?e}TWB`b_(h!?^J@q{lCVTl z#XSB+Oo%a|=Km}_YhNDjgPn)VBVU`WM?D_yGnqCqp-;(d{He*83=+81JNS5_=y#u1 zCpLMFFkxzWHjw{89&e3g{cGRl2LYx41&)?;n(bGqI4B(cUE~6N{IC)2IChrzxo0Vb z@Np7vU1`8`wmRbM>;~8+2S$zmP3QAJje(HB8ZUiU`J?-#IuH6v*u0v6rc_Pc2inQ2 zYOz<2J>v3%BR{NYf>Jm1XZS*UR*DL$4Uvd3A<{yPbUB^}N!~N|x`6MFmhU(6c!xT| zVQ0VLA-ovEsUbgJ?*=4h$BaS3E1SN{?p2l{66a!y<>hLV85r}TMf=dqm;!~;Njm}G z!7+r_L2Ebw2<5kXBI<9j`tFsGvfh=E82UbLT-4Z0&uo%>ddEia{Y+YR2=eBtA@7~a z;zDd2Du|#F`AWyRJXHSzJBXc(MvFS@_e<4_tQ5PDDJvVQ;Tb z6avLVR7i;qL$K;#umXtxNl2izKf) zp0O~Z`uq?sdeuurBqZ7XZp*&U-VLl%!W&}7w%>atq1R_VQ9C2Otj07>^`otviwwtd zFn90znvvg(0pOa{XYQ1$g~8TQv%3d>SaKIpoBTa<#$@EaRAE4YJ8qiZ@FG%h;Q1YQ zCDE$_13*SaCanUKx*^mAwsME_trg{o`Ad!hXW69EXzQx*RoGXIePqihrGFS%rss&E zICwegxwg7@H1eEF05??mFDn=I>W@o|&so=BHXP!$?4^^!$8VLR3072hdZ4%X`@q8; zpttt-J2CoQgS4LEOw=$6J1ZyvdZR|ayk+%fLQAHUO*hV?sbDwK`&6$3MU`f1YAWh| zbadY~Cw?RMSk$^x{J;IJ|Ac`r2TaxnpHRoUsc!B*uW}-jvJtG&xTA*3gtosLbr>foI;Y@r`vXq^1cX zo#m`cEtx4*baS4@H@ZC1t*%@vXaKGGD=g38&Q7TLD;0nBqs^JXT`b|BTwN`ar1|2W zk|wziF$6t?;O1S8$L^-4o1;)aHa!iUifye7FWS~jB3ki%3rr&kYiTOgi)+|v;-84> zx&|R~Y`>q{0e42fvK!aDw{HnpjX=-AvbpVhiN}vCU{jbeRX{iqBo)7ws;HgMBI|l+ z6hTb)5Pv`EeG>%)3$9_yj!b2wQa7N7xBXBJseWM|A6oJB`dMt=z!BfAltlv6BOq57 z?)%HV%YYv3h_;7`%Y!>s@v6H;f3+fzeZ4wusHC|AI<0}J$0A`}p41wZ@pt4D4@<=4 zX<{0muQM6@A zBC_FI!tHg!8>Vdh?I4lTJ(`fE=8b%!L3w75!Rbhw-tQR(Ugu9)|`f0&>H3f(Z z$kYNFrV!A=d5$j(eW7CJs}_^3Fl9rD86vj0Zrfovu(#lodib2IjJ|Ut5yZ>n%`9)A z^auga#-={703%9;P?DGI36h&{Zf+?nhE1#O$ZpYuTkPNEYe@M?86NGP`YIOT@!R3M zCXX+sTD1rr#-P88N&TYy@3A(CI9?(}$%~qLj(6`=x)JX4JpZHl>iNX- zyeTHAqkA`X;ZxdRi*H9ui@`mx;iULmi^ECm@OMSmWJH4G%xUh~;UVaDYVD)(`bYt2a zh>bzAeMD0&!oI0TG8+S?D?{^ zh_J>3E;v^00mk2p5&R^Qv7m-8-WC>x zhd~Jz)QSa3rFJ$oafQnB!zV;k?R-{oYjI+kdwXe#gBFVtLDl)@bHZ4w zN*TX(;uq2QpRFyA&Hd~>bp3L!yNUtRI5C2_F4s>PPE_a7^*)zW;pgMg4V!sZ#>;Nd zynZLqfko%>FEi--93Pt$teag_pWs}w9p7f_{1b?w<%(~0UGo#JP4t9|6kp-dQ@{hv7v8`1FFq z6x7ds@-UQ?1t>MDO7%>8tz42_Psl$<&>WP}Jd2F}!yG=uY-R8d4(LbQ{1I7vjKT$5 zl`VaQnroa^sO|YTj!u@Ld6fBM%4J1y*KPL*f9YPJ0(kw#?foLnou&IuV0MK;1Z>w720RQwY9Fah52 z#GrjIsg|99yT}6_!?Ss*|`WX+HrV( zj5}hwh)K}PxIz*z;3h;`F>JT z(mi<)-0ZJgotWi)sMFqN;&G{CKlG#voz;Flc++5pk_Tg%NI^buR!`Xo({JT&umzI7 zmOK@h)0qYVo2h{{+?>fGMN4LNGX#AusYjrg_CmjZn4trr)!uWYw~o<$qFY(C)oV@mD9d|C;qf%Z&f|WGxf<)TcTh0U z=#2(B`cjMGr3=?qx}3PWb_Z8;p2tQ{lgcM%;7HHBj{-`be4J-N>kHvs>5;2jE>d&Jx%{(-6Ru9&Ji$w_UM4k)3g<9Ko2*3 z+nQ6YCM*qE@!dh@+ZaZUKD;lq=DB{3^K;Itljj7_u2n#2@!ziB^eCNXpJT7Ih_d>< zAkH?dBPLgR@O);DkIkv&^~mTW@(kQt!V6<9N&n<^;Ixe0$iGFv!*ErPL! zN5Jt)tf79+N6Umarig7_%a* zF-E2z?3X!$;Yuc!VFQ}0cNY9?vKDl&k-WjNM7rh9GQ_)_klMx^LjhwZ5;gxuy<$bsMHE(E2k({^ehVP&YVso50n@9nj)t@U+MwU!H*%nu&ARdShqA~?66LrNje zbvkmEEl-7e7#ik|;VO@FwL^fUt2KPO9RJ0V;lZDC) zC09PCFD)!K4SWm@h#OkyJh~1&XE7H)ZuD4oSav6IlpKWB$Lh?fCQh20B%C;B;&1(& z{SaHxsE|L2yFMa-A!gcWFwQEd^5)TG>U0To(#ZPFz^A;1Yl5!hOaidGU)z)~bF%xC zfNFxk{E8B_Sb;b!N7z#Y~LZVe@ZWbP07j!~p)t?Z6 zQL(ka-YAa;J8d2vI}Y*3x}{dPe$o%U`kly@%PJZXuR`$oVND#95e%j;%QJ1fz;cP0 zkAuk8i8JbcTF3UnU^-v_OwLneMBYs6dhF%C9V53dMR)sqiM-w7sef2wrdWO~YVmY4 zE0)2R;R`wYGS8itT8mYftZFu8O_QNRXb+@WSFyIIQ7P_j5|UmXT-wNb5-`TliAl z%#9m#vB<6>sVulz;$@~>)8JJ_B~bwnIU0q98HVXsW?MM64y75Lqn^iy_Fo*Ut}ghw zc&_9w|IshvOT-QEaYZB;fygP!WiU*4S%Gm~Brp)kcb%a4=Y-ZCG-nt&uKl2gL z7R4hiGxy?rLyqsZ=+5(g&!l0{p~ zMN^!bg;%G=2M}UvSVAu~&2jOU?mBv)H~qpye=yB*%OGE!60;^_dHGScOZISmz-a!? z$0tv7nL$FCPI?w3sI#06rQA4=z>i`4^=s6a^QVY9jLZGJy}SOiu!UVK*E@s>4`<(x zqB{`4rU({U5DfeM>I|R83h(V5l6rKGYIYMSVHffAv?4?kRb$8ZWJ`6oU*4tLZg?<2 zqg7nL+fnBe=P&1q6VXHvLq*Mc4;x3J<5FwV=Z*CG9d~|~Y_$TW_o7SfAnhTmLzNHk zS339sp_0CzP+mU9<9?^a)xVgrjtMP$Z}riXtqJYl<~;W4Ru@;E*jHsQ%MXk83n;z* zwzs=qA5!g*q;XeK9-;7I$x;rV&cRE{kmw!aMEb>)IV&rk=&7a z-;JlaF2C}cGFHAB0}Y_SVPb~*#j4&P->Ub0w>~aLqAH;*a>en~m?SPKPkW(et}gm8 zZK*0h>Se!5h4G|hvf}4*O%wCG(k0LB$cu5@BI!kQP#AmEn@r&j&xmySP>UJS(zkud z{xfXU0l!o;A%W~2u(py22jV4rY2wJ@vdIh%)QJ_Zu*<*g*cFfWA~hh*G%Rxip&OR{ zdbv%I&BH{qy5|5X_Ti6&uOHBce-S68tkA6q_tsfGs2F@h;q)?7|5)6Kc0(QT6y8Ap zCVP{=VkdvCyvYwa+~W|G-%+4|#J*IKrTcb7<#G})PP_7|-Hzl6GFSZW4)tjFap4H_ zn1@j)7wYf??wOu_-kXDWBMu8IpbVZDXEV0Ba3kMi``)R-&}dP_So;D zDc<@y1ke6x`R<_q`W43eo$l1P2{y4ql?@>w6jW1`vVI2#`5viqll?(!Cl%ej2U1x# zt_$wRRc)vH>KAtn9Y0ya)OE>fT66&~%W1aFfWQe03qd^(8E0iVFmY2D?#aV$!*Sn{ z0h(vM9auK9!LH9J_RivN z4$olrZ)O*@I1I@tXlr)zeSuD9zh+_9sAB&aRfj=~M96OWsjDC4b-VY^pHor$B`PUU zWcz~HWB=tsH5!_5uNT`~%3vPE!d|Vl3E0iz4e}aC(yw%As4;Q^F;(Z$L;P8kum?D-Vm1G-;Pih%z*3z5Mstr>!^j~vc6PpWVfW4Ih;qe-VB0+n zYIGWoapo$OXW1{MIumpZXVfPZ+}o(IR6;k-Sos7+S6gVcoX~ObQ4+8_@jj z9@Qr`^)+zzN8SF7#o#_rX2!l@0c#T~BBy&4SyAE`@S;uHOSkQA)v&4ttF zK$<@PXzUJ_CjVphZgb1hLTlC*@)0`tb=AZQRau)iyL>ioRMnDo7mYVM^z_Ad!jNm! zmMt5%-9lQb4NZq|l@ra6rso2)S+7;`Pqn*q#c#ILxL#~M=)d}Nujj*+-NtM&pZ`zk zjqr}@n;yW=LzUNWb{E>uKGG^T#=SK0WsO*hD#>!wAicL>A`wRC8XLnO@WFR#`V``E z$BZYGQypG=q)YN;(BDGVmGQ&z`7@IT<15au0<-$^wh=~-j zsV1RaeK00RmZ&+07>Z5!77@lLxYG$p)Y>Bvo&Va zF1~3Jeo=DhR&2-!4ZxyyGyab@-l?H#Y_#ilxFp3>uT()MyqPGau`k$p5g&y zcj}w_M$eN?`fK6~ z7dkMn7^);I7`|eXKK;cs0sfdo>;U6PucVG&JdY6iBY3c$Ry~&F#lSEts@8QVdJ9DQ z%fGpy zY3pTScxv?*dsm@$`|kKe_+WdSn4P~@PG)i-52P~<8E;H=|+%*wd4-Gh**BnM}!5j}Q*S~Iq)XE;0=V~8OrB|t@5B9i%=(IeSh zmfZ<~5m6(LvIxN#}z(!L6^z= zd$m&RIT8C2x%v!dZS2~a?&LM0JmE^Rv*%SoMw^S`XktRC+MaknIo=zhk?4Tdqbfru zhC2DpyHjVHBXc*Vu~fkdXFc6nIn&fIa-{ZOH8Ai->Glxi+TV{p+%1ze_+r#e`tx*8 ztJ^;x==|2>rnd?3Ambw6`%LfRJnNwyOQ00|t!o3q*I}-ZqS3uLOr15z-C%?7muwY1 z;3Mms{^Nd^x+avD1TbjR=GSD8BqAHyJI4|H>xLIpT!o?H{^P^v3@l{<@QpA%j>c)o za&)26;J{uaWfxn-+rM7W(O>s|k2iErA-tITLr+o}^Zbj$xRWAYK3B#Kzsi00u z%8m-y=G1;`M@xYk?}b8^dxxm~5wOcLVcL3mXP1x`rS#yJ^t2N0*BJz`DaO+nQI)3q zUllsKFC7X^SQ-F_yDn?YF6yVPfTJS44)m>+>BN8%oJxhP`Q%s(=o27Xaz z6F)zcMZ{AVK3m7~#HhsI)q)x|EIqE=kCYx7%cR7YcRVP)Kdi6!-)xYfTKL;p#kcW7^>8`7cCcSo z^4~!Na2{0%a$jN%BxS3tB2cyDApI;~N3TIV>V3zHv8LuNd9rxSfj)j=kqdm>xjz*K z?ZQokrGsv6%^q^LLK=2E%@{~)>G1{O76_IwF0HD3m2ia9Ck1%%*u>-Q9}Q@(PZuIE z=uwtSO{2X2hsG5?madkM5d4ahvXo1M)xjuKKcvg%07Xr= zu*bNyC_qGi1{_fG*Ex+GJlThySrOz{SC;NFa}+<%|W_bkMf zl^y9EdFpVPICPGl(^1f>c9e*|6v3Vk33+v53;)n_%aF$pwwobM`keTcZ+?3!-E*r2 zS#KK{4Fg}Sw1}G>-LG@Z6~OQIj2_V3cl5k%ny$Y^kimIjKy#V<&Zf8N-rpAHxHd4l z%rcJ3inRp&Vg6|nO4;7Ap+{4rPtwifYI77Gs!JV@QnWB=m;8RgId2A`nE<}nuNTTs z(Yhzr8eRAc3#+daSi?4rcY~cIgkpji6n8P*T!^GX)fy5UN`BuA2c25IY}Xw@7FQg6v@jXm(H@6AhSG$gD+hJjo;Hn!J)sKaG5o(+qM zK;*pWK+Jj0+FZ1QS&$H7hiUlb;`$472VCp(GkZBERIzmASDjt3didG%^z07#FBFD} z4}weXAJqK4L1mK-XTNFb$?Pk>aE%Z{w*P&VTv(;6R1^uLcL(PcRcoZJId}>jK0}!D zJ4)~*)gLa4A%{1{UvmzX;4$y7T2tbVsuL(m%jUc%s~%VDXMjZXE^gB*fA~})lv|Rg zxuH4x_ftvK(L1f%Hj!cVH~yyx_e#g}UWdP}FQRTh-#t|pyO|^&G@C>m&=TNm1vkO6 zzx<@1kX&9KK35*BcOmh)z<9~f$-~(1D{1X2!f>n+LW_#U8SUIUJHWvkAZ^u1g&6W$ z;Iqg+ylKOB2AZ?!gib|40lkrWP|ZxD4(&i+3?jophcpE^u=ek8TKXDMKdWDIu&{=} zGiHR`G0H0PhYJefw);0E!})qMsY-L6P}=%Yj|X+gt>>i<&(caG@JWSa+Hg>7Du=JF zP%>a4H#$GI;qlz`%3}duY4$^l&)-iGO@iMAL`&K#bvf`K59iUh-F& z`yrkCk)p(^RrgFPqK82*w)!k_)E{r6rU+V#u1<(+IMRqADPfk&dG$Hi|Hg3l(J`&{Fqyoe}#XfkNM zycO@>>0m(YYrY3(+5jeRD8}_UfpMm$d|YBBg2tUtt`}o`P7L6mF4#4C;83j}jG!|~_G^K$XkhKbIGI{qQpi={KoNe396RC43rjc2lDRf)LHO6||$l|}UfpI~{h z-#CrVbFQ>r0nO0NJFKhLgX{ZI0-wxlqlde`Zg1tekKS8@KB3;Yzrw~iZ&Ma;3_C%%}rJK z)+_LGUNUwpkq-UTRY6klW(D`FXIcKD^;fz=8gF)?q)+Q}fx5V-v3_M?ZMIe+HRmE6 zhQ4I~1SAgxyt!VFeYYkPzkFT%yOKkDO$9?3)kbUO%#`#v-dic9AVpae-P{zkN-|#_ zHR{>C#hZwb{?MtUdZS{@e3Bs{C_=n*g$?}Z`D@}b%^KCa&~dgu{PM-bTe@UrtA-g; z%HGx)V`<8M8(?R8%|{&`E^a_lC9*1vA7mq13=>(J5Wji7Imc-s03GLtr$YI1IW;tG zQ!NOMI$qPW(oWA=m+NY<-N-w<37DzTjmqDpvULC{?F}*72>}ZpTyke37rhESS0+1* zmA%#{A!`#lw{6}R9f-c3xEaK!`8+|ed3h0Er8Ygs{7$5GSM_>~@NzLV((}jw-ZWw) z&7-UdU`x3$*c8A&TUKKb@?@3Fc^R=4 z!W+KjqP0OMn#H)FsdhhXk~aZ@AO&$Apn^?7JvNn+{E65 z%rKO}5U@Z|d*hCtcsMc!NfKHUwEz(&tpe#l=^C*<94ZXvC(n$S%(7c{ll)ef`gBw4>usp zO($}}!=k??#kv-Z`&_Ty;G3@D#J3@w+JGgk0nBrr5BqaI2KBij&_h7oE~4%}3n^mh zG}xIHV!#-ZTGj1;3}eQdQ|xH3|HpCbzgN15PY-)C)}v@Jm^J1?y4kVf-z_lvPhrHr zUoS8Fhu+b3E5*ub_#<0VO5&GP=Vn0@*OP|nCeYzceh?tn87Ims{5SJ~ib{^laR!da z%n=O5i=_D#`%DHW6i3TU)t7bAS0aZmrs`7UCKwE^Z#lJlk`yI)?CB+3OmT}>jVyaY zuKs4!*VJ3AF?91eu9ZX(Adl@w+R?sTtKJ7Jk#=g|dGli_f^ef`IA3e%Xej2(ykcb* zsZE3Uxp-4CpZZgum+pG8OdB&Dx{V!r-L=)LQdG|xdcu|3?pn)-Mg@n-;erW+F3;}J zZyCSL@9_IPNnfdN?dU#>;=lSMJgQ&a6j$#&3=)ET%Q-d~dZpT5;Le=pF{TGlNSh@I zUk=Z!V4YU>T;$AloHO`pwPW>uKM=M%HV*tryVuSd1%bEy7RmeM5}Z+c{HEpZtC9=q zr`Qq7^b=$b{~RlV=)w8&$<@&JvXETTO4!pMpZ|=a1?pW0WW%4ITg+7?iLdx*%EL=&E=~h8H(fBJqL;2Ng((+E6?ESI+qv4>@y#UmrMq zcbbJ5q~ln#78TYH)@_Ud`WtxeSjHB+{$wVRiA5kk|622Vz%^|cO8L14F(RM%2= z`KQr^_WPiN$e>J4$!+3`I0H{h(A_SeH zZfpK5CBl7wcPt)nbUooRyzTUSmN9r{x*{0?9gCnIlNQQw^!NgZXM5S``{tP?$*y=! zrJAE)rjnk5UQ5Ixb*+mC5HB~Zyd?R6R=}9pv>Sq&_?V<{dwF;U@xC*qgL%r~7avVR zR`)4d9M%FO!o!2bJ}_!&R9w+7O_V$80&VsK8>0ALwiDq2%tC%Yv+T+`CRpV{pHo|J zXZZ=q%t23^x^Yck8oC@Fba4{mrYm)@^k%p=Y9c+_pF`aaTXP>*D6aR$KZ_`4yW*OG zsx-4c(%$__;yvMRRP7YrC{jyUHQDO9tsACe<(Me@sps;8N&r8*!#j#sfqnB-hl+*@ zwm;!}wmh_0Mit5hT6_Za{0UA8v zuHDMoqZOVI^;V~oh$q<7=5GlfHsorI{dNTt32a#MTKre+b~Jl2le$4BTh7*LmGiqx}d-U(9lHt-IZ+ zMU3c4Wg`v>DJOCNc758jLRhe=_nu@@WZA|YGZo0#@cUYDe@H5^0`z0P7~sVBIgNM( zuwUU$SKTXq`cZFEC+9lZ6nY#Rj7?XHvUX9a{u<(6;4`%PB#iJM~_Y;f0YA8W*1eXI6PNg zSqYVeI2!>23_F`9eXN3gplAYhc_#}i0%UN7vsY`|aNZN&AdJe8n`&J0?^qP=)$J^w z^)HL~6!E~Zy-(TPZdK%rCLlK5*2cDma>H-A==DPYPZ0t02~%Cvn{3fBc07Mf`Bq;a zmJf)Pt01b`3d*feQ|iN=oodSRN6z!0=&ON}_6g|CKWRnLp=zEl1Vv2mR|0Em8hjuD zJT`gau9m+*kP1ofm5+}kq4z{rF{jHntaYm#m`6Wu2)4Z4DO0g2K|XNgtf7bSQXpV+ z1Xzxvoh9Jq?+*WK9tKD3eat7Ww6j_^8rNRwiz`yR5qhETLL$GmaZ9k_U%xV`cff35 z~WT5K-*&L|FR?Wece{mho^NK+ z;q47kR@pQ=%}VBXh6luvZ#DhWL3@EsrODyRg>C z-~oNy`{7%dHJk#kd^xsXhhw@*pI0A0ywhDsL2^-c;|S11W2E->r$YZ`E@AHfTE9~F ze$YtEFmUc|EWyS->-&jPy#B-J{Jkws*XjFrC7Z*6aIjS&vtq7nKhvt@9E?0L6(Sm<6cXKT`5l zUnCcL9S|O&^j+5wwQ8lTML(ZW0?qE4-E1BFfI18{E$t9yRjm$YaL5-fKR&d-+E%?? z8TA;OB~e}Vh2G-9!p?{2RmX8jAB)1Eu2$HXoHL)obWK;blZyb!fTQi(zfuIE z7wN|X#tHww1FDkqds27b|JK@{vHH-q}!ccU3pr{cTxa zi3vRZk~A8h_Po)oapJbcJ(+g1Ir{HeRCEbJ_Acj5zsb#lT3Km-&|R(Y<@}n}d_|V& zw1#HhoU4muhA<;Zgu&ney`8||>;6}R!-{%#b`3x+bjxSqj{KlV#PN2~5l_VQd*I3n zQOiLErtRgbsb*Rk6#cp+OCqG2dH?-tx+Lc*9ooNft8I?Z!G>oYoVNMAvOOpuk}GYr zQjfi3_ns5^jTD!6g-&W1Q~Xu|a<@cRH|RHe05H0vX@Q(#*2fIK>><&7j*@w~zHz2C z-Tc}@u4m&CbWb=2eI!-l`g&6NGT)MsIU*z~j8&_2@hjFC0i2Q;8=IHWVT~>jtXxVJ z4x=irXAY_fa6rWsT-g~^vBqHG$hVrFcOB<`+NFbAX>p#lP2wNLWD@gbI2se!6(Wcw z)j)b8T{^`YiAwn%K_!#vV$5sL!maC^fK2{p6*IrtDk~PooJVTrN%Zt}>o>kHmrQAf zze|WAqy!%wF0tTjeDwIMT`YPowKi0tw=Ix19Qxp(zp6hR-(LDDtB2lr0c$)m=5%qs z*305{vCB8wf{z{1X8+Kt7~ zfwERE(>nVyoC?47;L(*1Jf3R#j4^oEw*>MeW5`=!N3_o`?(Q= zCXklhqWxXuVk1c5jJqPbCnq=$e`2SOijkhj3bQ#daWSTQha}f`xnwZ~Gr-lveE375 zMVU>@zzyWU@%jYLTB)tB*U8WyK-;i>cXn^}P`tTqAKHYUOVOR!J23+QB7Y&FnOKkSiQKM$4H`0C4 zy#19&H{0Qv2=&IVw^-Cicaq{L9JCjnki3l3(?xSK^gsNuX_=U4yyjYYb3w~2wyv)8 z){!)ZhaUMiT;D6oN&Wr8d;YzOlAV|z2MKszov{2P&iZ;TPL8gTR3@ASlM}<@iL#UMvKchD1 zjKc;uH1Yeao|kJUDH(ie+wjS#kXUcAm2qa5Ufl_JvMudsiRPlwho=d<9UNjVn?prU z8+rMr6hIX^8Qbj@^>FO4xI}}#U|C-y5~%@!nJMW->mZs3hjDaIT_TXpdxios&8NPB zCEd*s*}hcPz4HDpjP)YH`*wlP^B^|=b-G{L)RkNYUGSj<^L2iJtI-)D%6Rqxt$uGs zVvmB{-Vc5ZD}_9qe|uU=*4xTD6;2TUONs6z`3Hn{y~CP|*jmhdF)(VgMN zWmFD((2g7AgXIVcqd09q$K(7A>hj&qVL|Pglav5+u!hUv6}!haNqf;;g{Gn8x!t#s zp%9A#5te~EGbIbI(spzyH879#SKorAKII*oj?oBVl5T~ks%!bpw`9LpkE*=xPEFxZDEzw=wL@&M8fD}w53SFwqDybfgO=IB(s&c zb$U5Z6UR4Bey0M-Aj~h16jxi;^M1T)_ImBYEwUFi*x}T1t|4C;*?cnVfL}2$IMN&h z?ioQeHiFP2IOGnVd3{po+il$wc7d)73j4&Q4Dm;5eLlu)M)Y^nMcJNv=_DK+OnFe_+lrr=<<^R}x*X;6 zrO+qwYk#3Xp4VbCsY?88DPZDk@r0E*->LnQE6;l&7AcrEt8etDSeIf3mYJ1mQFxw> zho>|*G!!d5C^26a<(XcmEtUC}U7S=jPZn0c@GOKF9pWlYl_?(&3~l#6 zda%?u?QVS`s3BlmBTIo9jmdt%=SZ8Z3RFHRY+5=)Rp#CVXG~by6W|6~4L4RL*S0=U z48@(Psgsb6o2rav5sN|e8NLz)fWoF`S9RrHOB4M@%lJI%iRato(9u#Z=V-(4(- zaJWdd?)c;C#nCa_dH0RK>z@Ty!=LiUP`jC=fCRQ-oVen^#K(^*wpX>w%Z9T(*u5kj z4|^SkCsZ9LREBo{T{S)Ba5kM}1HudcgUEq>ww7J;HljMtnK~ZfPRbpC+D6s>3Ws=% z9z_V&OH-@?55v}ZiaysN)__lLpJwNQyFH8D^4Re&MdMf5!l%Cn7kEk8Bm2^d>g zvCf|t`PEf_g|TwY0mD{Z9ZWjmmKGjlg!fj#Kjyz!rX7fS%*_GiuZ|W63S{EI^%_Lg z{rwK&9KtabD5omukPS$?9|J0Cj1B*?iu*y7{Hcjs;N5mPwj+GR!jTF%vJ-YpGr{ zF#$Sg?dKsGY~!!Ovh=XqJ)~?GV$}QsM~VfTHl7Rg{e9^2t3@Dz|L|C*9JGhIL_ zl~J+!$Ic(c_7hx?y|MZS2U%uecj97Q{#G}g8^3paHt1xVKbm;J=8P`C;0q*~S-yev~bh8A(&5 z;g>7VTC?9Qe)p^5Y$GYsN06a8-$pr4%_}QGsX|)pcqr)zV6o z|iA2};Q1}Sq_&6DSc~Jdy)XM9LTdBA6+9BBA z&he|41Ewb4rDsvYN}00if0%WL=4RYvdTPemR_Cmm2)kTG(>*_Sf807MSxD%TDj)RO zEU-9YO-Flb@Ty8#M_YqhNweN1?Z~a5ZG(b3AYuaiW$WFl1Z_`c6o#Wmic$awrl7^H z{oQ3#JGyC{iZ;a5)p{HnOWU*t+FOQ>jkKSX4C51&P>+j?^l8g-?xHvKyUtC8bj^$+ zQ~)tqlyB|w&}s~T7fZ*&YrB?8ds%~~3EiGrt)cAB8|H5D@fn}f3C;`GpGg^Ye(T>} z13N_3WhU4COUrPd3h_upa*+Qc(&+^qpbEAx?O>`OTln27Z;}_ zoZMm>)0VYB5f;C5#<$`k=s3|&K>VSz8g8U(MyaX|7YSaTZ8N zW`#cYjKl30uJPd!vKASM^z1;{w3jMQ&-0Ei064@g=dZt&CffcAe3zhi;god~Eqbwf ziAYBvlZ$E-rR6=`dI|#BZ@IYl;guTVlxe~mmH}|9c@`K}HeMXD`o;gD>Mh@*e51B) zkx~#4kS-DFZje$^QMzO3ZWtIEly0P@>qqy%P(yb&Lo;;4&>hb__x8qif4lyG>%%(N zI*xt6yfHvlwgc{e=j+4nJZ0wi2NS8pL0$LmH@XhSLl%9Giy-4pfzPPKjJtNuNmNlH zOiD;-fNAEHdjz$BrtcWZB71^fjfYfKMgQV)Jtlk;ikW>6%U(z&$XdhL9RZ0-_o+As!ykM=Pj+Ry^Bj}<%FiOuOll)KL`) z-Y>dTz@lDzr(6L#ic~G85l=b$0)0cMvwsmBMJeWwp6}z2-;WkKQ&GiK3D&9&kBu*d9l*pbzejf~_5R zdnS@c3%Vu94apbsiGgW*XEwZlqj{T$+xWSz_%cz%v2f-J_dG|%kx*ve(24pJB|#kpV2gRuMIA1s!1k%XR;yQTIp^LpAfHZL!rESPtv zdUiJBv=bVzSm05CP$Kcx9+7njvT#5e?#Xk|O zM-r4f$MhR*LQgzr;NDqJeOmTjzig|tlgwCg9n$L=*3*+RELs&AQ@da7NIBtBamfy_ zP!@G^+XER1I1({K|2CQt;cD31v!@{-Vkj8lX|*ddvagA-K%pei6QLA)it(Xsf_)#Fypgo@kYv!EQW>71%*bk=>j)W z%G=>-hIH1% zqU<>Z2mAxht>>)`?-P1^dO8JJg=O3P%;Mz>^kS@^L&U)StH;!7spe=;)4mdp78NLgrufFLWkVNOQFkWtUNeOij~JA2PWqXu!qzWKQp;8c|-m-u(yUeI?K5=f0_njtVMu&H=G?Q zhIkS`F+~D&YHE<`2gwKLERkH9g_`%EpSd1y&2u_Fwjx5{vS(3~l^?K3WpsZm*P4er!B*fDY{tL{v#T4@AREkpagnnj{(QM^S&?6eHq8{D}QoVT|Ycan)We&tVafi%4Q6!TA$ZIXgt|Qj5PDo#1g->YV*vpZU^z#rqrTYbpe$V|#ZR)N3NR z>8xL>ZHgGOe>{I5*_ovJ(R`OYxOB6Z=$5G>peuqZ6vePBG%M-+Y$SS`ylBy5QE?f` z3VWGux7!~R_r89B*H}J3#@bn&2H2NnPM}F|94~cd>sG|}aq)F#Csp1_Htl2ak5f`N zo=jDBU9d#0ceNr)=Lq{?N$Nv#=_-FU@-F9qHoM~H&ACd}D*37(MScjkx0uaK{s`rX z$H?Wnxc{!Dfcpe{rAz}bb|<|PE}M~ZFH?--B9ag7;tl#z@KA>u$mLodd#YKZVSJ{& zjLg@U=QjNiq)P@EoGV`)HEI}FGP%(=vPgx8PPr<$4&42_x^hd_V_)n#kI1GOIq7oa z$LlT1?k+w=YC-gdfPUVcNd^<_Aw7#`Q&%HemG2gNE)zYB0H)>ONQ$;Y!SrFW-69}J z%+kvR_pxxQdK1H(-LkPef8v$sX4nUVAfnly=_-r6NwVYm`-5bqDwFbEFhK{deW8snA{)mD%=0`5D2yXxGa0qa?2 zijZt-WyZQNaxA|gLu#nfPRkfPTab`8h(ReRYdz>0WH^-npf;UYUmTbHttl|#f zC8gzcte%421*!}-Z!FyD?C|OJ#9aX?C;!RHY6()UH?r+piB>`I2)zv%d$nDmoy$g4NwEK6= z;{?^b@*Qs45v(U zA`OID-cnELHCd}DT0wXKs7+81;9q8ar)`Q|LVec-pJa4rb;qs8V0=o$4hl{(MZHI% zMRJrL67mxklS?>ttLQ;K;+r(ck59^V-P5afnu`!6Wr zVJ-05(<`(??v(j4;@6Iy#yei7*toKjcLdQaDt9|0d;-xzPFb$1p&=^ zDh=BmHq{9Iq~#Sad<`xP3?5?x-;Yr)Y-dErL@$i4r;E$hWs4_^bC~W69#1*GTHT)N z2iyn;e2)9I)X~iEJ} zRA>T8u8cck;aEB?;EgGA7y~(;R43Pq>n#=6MTI`i9i|V>Pf_a7iaI$sm6nViTpGL6 z$rf#orp2ua5jTP3tp!@^xn^&x`^5W#H8<&KA~W zR|>`Qy6-)1yHLfC6JF{7mQn7LkDGyc5JKvxcL{!7QVuzExqjUuiqp*@A!HH+yukQZ zrmTJbpJG0|#V&v7#d#vCF5bqV0V zo)d2@m$SwE2eUk{WkmeV)gj1+>~dztI^~ms_tE;piZNQow}eRS;WQ}B-o*ySVc2Fv zxS4SBy?avX;GZs(jyF@*TFmFW+`iI&8m7p=ZTRm?mhHP-uq%F6i0W71s~5M!gHd<` z!6W*q#TT2~$aTj5*5mvyEqA;BCBIujs)wkz(yzE5M|=Xl;boa|ba{k4UI=$Y=5#0* z4!?T(u$|ak{vZMud0+j(Aw_&W7955lxoR9Od7$v}(lRHK!s-w&h%D%5Uy(ON26L^G5l0X0DSoS2m1$aI0 z;1yg+t}k%;ceM+B=d=V0@QYa9<-vaI{^ZI!9W1%fIx6)5S2uGAm$_q|oh09*7;av! zL3?J4u48cde|i`iLW1NZOTcLd_U$`%4no-j1Rb~9nvOxbyR(8is z&r))!lAf&yxOtXN3ZH5_Iwc!YW@!kCo{gf&X8kN^CC34^@m!SkzjQXMUcLFQ+o_VU zbn>?h`yOxQ9{;rv)|-@lv#z;v>p>q%-+DKR%BEc;Ajh-;{*+@jR)2LYY~{Xu@f&7V zORex`(fmZZ7_9hPGgqb$HiwhP?QTSniQY^yb`^W0Gxdr32_V_N>1KU6bAQoSFr1u_ zVK~HQ#h&UM_=P9tV#0aeRLqqqA7XkX9gd^XE&!YF#_x2 zm1iGKl3?6k#7Zz76_=L>C4Vg!6;U#Upc?{+n`!2NWH_Y$`sAg)t>($U?djT^VQ)b% zwMO=>fai+{`rV>O@`VO zFTyAB6;qC~%ih(h@^Ew3_d#VONL30y;JlXzVj%Tf`J{PUQ&8WUK*l=PMdfo&2eyc2 zz~ZN3`_&PE>K0+)98tfQXOYhbb}L?ug2i08{HAQ_D2^#6w}{O}kO6@HGFP|EQhs9% zTEvp51!p1~I2`(xWnT`(d_IuxbYb;$=P}y-rYxKMfi3ZmN`HAhgK@0rV@|;a{-KpU zcxT4~`tS@zw!feLwK^ZvDJUs;W^=_D?G-Dxzm@oIb<)&Ch9q_ma%74fMr`g}<1Trx z{XSmwpP1Umpr9eI6EyH%aKJSH`dm?oBcbHZ*%Uj3kgK+7E43$A8AEfoj_|o_%_Gd5 z1*S-4G!*)6n)j#SlHn~;H2ZlD8V=W=h&cKLK-koi(@{; z|K_DS7g)7;Z=+Z-AyLP94=QLglv4BYL7uNZo5K+^=dSm=^MsRU!K*KahNGZ)v1;fLb&1p=V^?g92QRD*uZqc^gs%B5^TJW=a zSp7WyO0;un&8!oHGr1*OXUhB6ei)%4_AVAMAFVbIaw*Iq%dspD89yUS(n(w{Sr=Ju zB$mX{EeXJ$s}zN54EFt1`gSRNJ;C{Hgk$1bxJNYqOaVJ_8Gc)WLl0clo~X|O(UWft0!xWp{{2Eqra4NrKIwy#QajO zPF4|$Lc9sn0>b?EyJMLRmdH-rQacnb{&Wsu+_S!U9#M>0*y;(3ei!Re7g2NeBR!4uW~KJ{*q#MC z4Qmi&tF5-0LuMAyllX;&ty7O8yo%0BBNnA%#U0$kanlyRR6r`aE8&e6rh<-N{Gn$W zYayWulTG*7;zpFl%l=ZImp3Dvfj-XJe4n?&D*>SWz?RK3dC&svLT9o<$OI|ba&rUq zqvDC2STf2ceIQIrp*D*)%TFnQf9OT~I)j(iO}Q3}R(WZ@)`;HD&Ooag+#k{Kt4 zDTc0KgQAW89lIi1MsV8rZjxe4rDcrwS+Bf9FEMcnUmLpCcT+pW-a++hn>e7sBg`K( zzJ9vK6ChhcwJHJ8&{}mrtxR_iHS+5<+P=A3+U0z5Drn;nl?;)X1wQY2S{qzZU8v{v zPoUks-9+$x(*Mg!y_qrl-)zAYYzN~S1$unTE#h=pjB~VDc1LGE&C8nyq3{!xwy++g zqEPjfZZpV6z!b4vLPktu(-F?XkUT38~_wNnvitFGi6?$!oSD5b?Ru>XoJ?& zG>x7RM7JUcB^)O`Dq4}s$>S}&topkWm8DfC4<_3v04<{4OtJ^#M92>IuRd8lzd(j0 zbst~E{Q!B0V$*f>uX5&iHW9GY>UmI^v{U$Gku-}0C0W%BeV<~H@2h9BN5#%tSg2mutYX<(uq$M!vFa8pYU^2MpVHky z+e~b`u5_LCY~Ni~6m}Z;Ke;`0s==#gkw-bYON!d-df7u8M=&f|Krrh4QwY$Jv7b@e zorqf4$iz}s-poR`}rPEw?+!?7~CDZFV28M|D2d{mUTTJZ~Hu?n{hCBypQ}VU`zq}kjv|lT__cw-7MyL@rP0{#_8a34 zgDctrP1?SM@F2elbPvP!Oj#*RQT-%fp|;@(5$;`LYS+Tl#Ru5>Zx+ zMD^K?TuGh|()*fG$S{STP?g>jzepMuv#u4O6|g!?&b>MXG-7!^A=uZ_U|m`Tq7w;4 zw8Db!JjyZS&TBFJ0hJfJ4Wnb69`hdXB&tql`=t;^#l?jSEqgnQA3%NS!^*nsK}D#i z+&MAV7ys_pi>Te+D3!YG#Y2+r})S0`RKMn$llCGY1Jt5k-|4e2?@DR z6s*%YEGgX4w4HjuiHX&!GHjT3%+OdWq>sE%v^+{SnAJ8*4n!f>35Z*Y9Z{Cp7qLHY zQsptI%5l(VeTt_`#-VmUNQNMTVw5?=?4wKh2^I%;G{ zDOmo(DEy<6SJrr0y%iOqBBb_O8qFvJ`7U0HIe}ELR7e4b+fF<-XUHC=C0?=sEk05% zpoMA1#})dzOuxyZz8!{9;f>xa{%GDf+ShnBZC6(b9@ui#W-J9>k~GfX4rg^%g@T?x zNYYn?&EQ#L>*FI(SBX=vJML|zbFRa(_e`#1)ZbM(H?d&+E z$c9em(8Ql6m8e90&yx((s44a*Y#q@tlGbMN_7wCuVQpmv;Kk@LCXJ^I$;5E^^$?Ck zY%g0-_s8EGDBIfm$L(l-c)^yz6!rRl)+4lAR+=oL|hrrpum4yRGs^lUEVNC-up=-lv0j3#f>f#tIwCwr7Y0SgY;E zvL4K5Nm}rfe;Fl6(>FG&s=+r9cQW2dM|38$w0zdpo~fT0_@D7(D|-l7kd!EKCa>mu zj>Hp43VJTXuUIo=4@uw(CL-4GTaxa-eSU4lLpmkB$@FrW(HH-- zqJHV5WnBC;)v&JlT2W7T?ACL2j>Awh{-1s1I70}ho`dnC%dn1w2$@?MVyx;7#)tdS z%KU(X(o#*Svb_4{HfHi4+C&i>+WHzUTAdTc%V=TCB8Qh%KY@f zS6<<3XQP93ruLXwk0q0%Op1u?&|+HS?B~28wM`6##XtCc?(}7%R(~^}E`wJPm3uQ{ zd&AMpuit@#_51o9SF49D6&JR#ciEuLCJGhyu<7>x(jdCAYw1EHX0wbEB(ACB09ljG zTkkvson0~?B90qYTQQHrZmS@*!<7c@#{UYtU?Rl6+vT~*nC)XGy7=$(t=TiY_Tg@i{)E=Y2dm&@1z{#~hoI#2`j7KR#A-kLp46z7VH7cPm!o1z6 zd902k{HmX$cYcoNcE-0jr73%6yhNOncE?ccyWfA?iknEKB3JHjl@K|;6fdKM#}x)O zUp8}ltj5#d7iQL>cc+3yo+E70;a3@Yu=y|sE7WcKNMh&3k9K!?eKh%^7#Xh3t7*E6 z<+Vji&0bzUj2|siVElaAUvv)ZBGwrTYZRpO^IDDm#*``PtNE9+Y~WJ|`~ft6aOvP= zm&saB>+r4g71xwPdJWl(TU6prwH>W(z?EZ)6!Wda*S2kB^Q}vuW4PlJDzu`ab+q4J z7C5`MRt;$PT4Cs8oQX9T6@F~-im^F0#rS+Eghz32;=X${6NLkBv{s8J(@WFh9$7O( z;kzgxELV3JyVpwcc2YTYEc-I3S1cdc@;GirwjywcfC0cN{Be zN)lc-b+>xO-Q#H%2s!srpV=#dh3&5<8x>;oCx2BNi;1;{5e=5)(Rjbdr%qq=uBfkB z8OJt=)27J!2f0YWJiaUef_7%CQ#fx{+_Ps3rw&ZJR7<>~jfbL7kZJ)<{XuPWTHCTV zDZeF~(tm<1Y#MW0avXMcTGmZwG=wzn=BPgF1b}46n3E0qQ&u{(ABub5$Vn7Hqyhm@ zmj!bko?cIymOx+;$)rdf*7IkN+Ymn%*3y-Utsi1M0ZwI>1J37OU(Q*-p@;LCbNP(n zm0~WSR`mq2zPl{570%vt`V@$lPf3;c?e~ffMO0rGwns_U|bAxwghL-&v= z-Zpp|t|u5+Vhh>`lsHiVd7xpcIKEv?d&yiM{owDs=>ED-R6p^&y}RLMSCHhJK)`Du zy^0%k(~6?flgV)}k3$C**mZ{=3cG9oq=zwGd4jJ<+= zCFQV%Q2zuoud}(<*1^+V>?^ea0H# zg?50irqpl0+V`Nal<}|j^dxS79v1!*;?}z?**9j`Vi73V-{a>zx}BClz)w6!9%Gv5 z#M2SLZfEPm8uVZzLEcx7m0UV086r%gt2rud7ci%jzFw@GtvJ8ILpvZ?Q3XX3!49co zXVkhW!8&!Wz6l5`OU9dF&UO>dwo|Y|bmU@e&tP%Bmf|j)jwbw&sMMvpyzp=5b z_VvksVPg|B%Nugx>rPlWXB^!kya1GbX?GLANnM4wDxPA^S>smKfy*xAsKn{UD(b@% zQ{LKbgE^fbroEzD6$!S0>vjZ;41KBL<#)SdfL5dCVX?&i(UH&2!E9Mg`-A(7!^|AP$QeQiUle1m<{;=V5g8yTM#N8C*Me6n&EDnPl6*jbBhhSD0 zWs}BFT8=kO+ZpU^90z?EHt7ENHw`|mJ_#^)lIC;N?)kJf{|_cLVa^ORB8u~F{kTyh z8vzDW8l({_L_rF~V&uqrU6_j!`#0n1)m3WhJ*j!au8G>8l)bD&hKYlfPS=vkuN@mz zU!$jnwyHhMM{m%c=N1ZE|RYE9(qxMhFrS#mXWbdy`XFZdr((QI+)6 zETGSR4TRnV2A?$-!@POGy(+mA_P$=&E&sl}iW8<8S1o-r-3igYtZtSoHF{A&B-}xyQI{Vqi-o&G)63}E7iCxu|dCu0N9xrR5GA>D#tR`A11Wd8+QZG1D#oeKkraS z5IYUVyxdFYuUyS1fabapV5E=O`#5;l&cb!T9r~WY-Nr^0JwHcku&X+^IDlNaNx7`D z#-l_u>x`K!Bgo1zcJ8O-EY&MiZ>C6lucP?B-@Ci%hkqyv6S2^>_!;fA>`0rxrQPcW(z7f$uE-ii>n+i5+py@8pZyojInF9~& z{{m|73IY^3EB9_f*hy5LS*$gp?M-!v6f;3z>(4iSZN$*C&}`3EwqhPlw_i3KA8ij` zZ~I@2A0ZPA$EY+fI^OFGMWRvXfEx)r=*(eKRAd)~Rsq)4O7W}4a7%1+(C41k{k zFc84oEWNe_H{}dWH3ocomqbdQmag}B1O)lIn4t`TQx|lQ;I;C2Zsny?bqwP?L6|20 z7jj_z>}`kehVP?FOn2FlsJ!%M%*A4}*OK>M*l9el`^a1Tl=~+?WIh#Gbo^K{XQxsp zcNwu5Qirrx+d}s0f+b^|F$C8#!tlAO6|58x;zJCW{;!-h4>l2KttTh9VeQEYSnwT^dsJ2ZRj@%!7n@-mMJ-Oj7 zSQzU1oCpaw$ntpnVSBV!_ebo3J)g(#<;HKWFC@gy$E@e1=@9o24(WF%Zauq?6!19V zUuUmso0;!c^69GI{2}6hUDxM5YVvl{z!qwz5Pc&SVq8@)?dA1Qt~qYtdBQAmbAVUg zP&91AuSrTE>$vJFRf-s}VB`D9F&;!hL;ANr>BJcCb^9fSFlNV3(gZG^re8!tfCP;f z$$>c}3V0_>Gwx3%A5leh8IFO=w#2#Q)$PewmwoCMk|?*={9L4)uFQ+>`ENA#F-*(M z6mJrxk_OZWptSlfF}rnyI=?&}w4HmsNd2dHV(2Z|K;Mtm%lUHcV=#x*4aSNKJ}qvQ z6wA?=3Ejwp$$u-waS!NOl{Ee##F+f1TntotWOI^ZofNZd5ag@ZRs+`dRl=5{ssa?t08xbf%#DxJ^F|-eYt`N0cVBOEX>Nm=KG^21OLExi494(pC7cf8 z<1UYL*p8{_o@=Q`C~35t{;(DjH}SF<>I>;-OBl4lRTf{5d|U%ra#6<8Q>OIwJ3^Pk zytl%2pq%z;@!J#cilWfk%Z7>? zbUBEZUK)8k!9KFzM7v&K1H zbwMhDvOs0OFQRTpTa)UJD7p&cwxiP*bX4EnbqA*SiAy!ln3@V69Q3TWa$Ro$e7R~iPa#GEmEGMM(VTqEyk9ccED22&hJyn+NQ+((R8NGDoPJvu+$(k?-Y44+iV>QEO@6jUSq z%DN^l2`cW**C3~_YGY4mZCg1-rP6qG2goZ|$(Ds)h;t}yetR=#dlh$0AM1N#gNA&( zPhKWE^uOWUdzjuX#--M66aRJCJ*RqAf+%rc#0%O<8G0i~HQKDfa@bEc|MOK$LtU0$ zf@sfIxeru3x$*i%w`-&*Vj*p(QMOz3v*3&QOfhM}Rf&QE&8c|7fr|-T!I{XuM}7A} z=a6&=Mu;^?K#d4D^r&*j4z!2c|E-F!P+8bdvsG63l06Z-MSZF+pnwDPIuJ)xQC z*c+z-+={)fY*q<)mOUfz)+>P;uGj_K zc@oyXz_Ww8%*G3qhpOkYmm-|Q)(|G@T3)*P48!DKiVG80_}<5}T6Qj2a(U)@Dq?Tf z6Wy83J}dH-^r&2@y*vE(fi8q%?(&(QEII-GLdcc$)7uhfk-#_Ng7hMuGyqm7*{2o} zE%q@*TdKd7ybbsLCr%gyf|wP;r>?4gJ00W|*-qDyjC3%SDtD5u8##VVftiIHLyEfK z*CFF&y9UZ&*M1?vx<(3Sd8!{MJx4_0pZ1^tG8C`1v3&U8b>O*WN6s zlY<^pbVD=SO7ZglYeFk~m9bzTQ2#%T!IDrdq*x4L_y}|KzuT~_a&6g^-VdJPhMpX}`iGC0N&Ve%tYt@(F+h=BAZGnA=h zR#c4Er|Cf~{Z9jsoy*%w60pptB+y(qVX}jjtITQ>Hi@0Nu&I*how)7szI&jXG?Czc zQv&?lCj9jdv8}tlp!;);hpCjdqg`)gb{XRnn80$W`HJx^JulV#UEKLe0sABTqJl19>Xh2wK->-~&i zxryoMu#{mQ2lfpq8kG#o%W+bumlWXZkGIq(lN_L4<0z@g#%&DlC?2MoaF9;E1ZkSE z9GJtv{#XG5gJ;!W!xABU1#Fp;%#25#U9Gul^qBMz#8z`V70hl0`ArT9wWo;xG9^UBuGy|NSjbZcA;64f; z!!qpA<(c@|w`0aZJFdn^%R%9@1FARP;)BGM@RILonAp{E)zaRC8+0=(wA>Qz2RGK% zHmGYFj6};%CN}>82?j2VH5_j zjXhrV??5K-d^*pYGFB*?&6a|rjw$vUpor$B=%9sJw+EVM=*yyk#}4z-^pYvf^Ire) zAfC^F=4XkxTrXmFy zO|5M=-Sz2%1d6$9&Mk?snr zd#BU;M5yQ=r7-0#;1um`21c;NiLp;dF=E}3|6uETkInKA)TTq@6%8t=N@o*=aL(Iv zFWy@z_NZtktb7`K{Agvm7?zn{()TuXW^6Y_LqmcuWV{GQ&sjXdcYD+ro_h&4k)+aB z#}Rfbmb;>S-=I%q9l+Ub-~8BS8EJy5U*JG$@I^M}C50)jXCuN=>yXS9tv%u=mDXBj z8@fTqn~};FoJsQ;q!jc_GhucXpP*&+(>;J*m~qk(-zu*DBQK#d+&=4lbgeCC@-H&W zECD7%f2H(c+GRR0>roB`5ET>n@$%hjXDmWf9U8!fweDh#AL9MHO>!xy&rokW>I^4# ztBX>Vt^7OaJtVKoeO84!#`?%>#4^R+0n|r)Iml^A_6`XUsHMJTRIr z(7;u77v~}{Lp_VY_*M1H_!`V)kN^gF<1Hl6JVZfmu9vXK#q2qK5fsUWX&`doqU6W7 z^~R^S7*#~Ohp69-*N3eZ`?C8@T03aG(2on{Nt^1zwH>LB?O~Hsv_oZeT83UKjRy6=-Ku6(DFwch-CKu9 z1kwdyg4c5RRG;VUdzOj>?C#<8W7A|L1@TW>&AW|FiU-wQ1NO=X>x=?osIp&=eXWG~ zkkMjceJ2@P|M~9Qe}V3-WSH_RA!EN>YY$`{4@?ch)aM%Q#&&t~I3;lt#9y7iF8Uhd z%Y;R8(vxQ+y79{`$NbX>+Tx09(@0Cta%7-U#Vwi+^;|P|RaZbbIWlJ5=jP7M{Pd4-%iL%i1*iv%!?(nq)i7xoM;;u8Dq8YX8^&Yv` z<{oQ?c|!OZxHD}FAY zArsGZ_@NClB#4Q2uEOOV)XWe#E#RM04j}2PmMGOlX&-#4+qCH2xN=TRW4*kp3ci3FnR8R8Tinc^^bpZ??77+gt>3auigA*AAVPL zgm}zsw@<0k2QQT1yPHs^XVoQCWkZ0LoW;vgi3 z_!>1Jcnq`B>lT~quC8gS14CoIU5gPCPdHGoGn`0kvG9Z~0G{~K;Xuny_&va$fWw~ExE7>h^Yn8*kKaFOmL1M0NE0f1U30EP8tA395?fOeQY zHI{JkR;|mg%w6GqUux}YSk7ce*oq*);4tf^YKzV3pD@_0W3(40V<{T#ny_FN&l(X7 zpQ4mTl+!l4WAY>A7226p)g|F_Z6T9QtIQkUON^HM$7N2x)fj4VD+=sE;p~&V z)|+KNr&u@Fx}{pq_7e=u54fanMaw$e<(RTr>n9X)2HfaTX_dH#)L8iA?Uw3iB)YCa z4UnbWR%p2Zbq#7L9>p#J^%tK31`Cp-_NOa|`kfdFq}RBbre_OA^LFoC7j6^p9PP|v zgN_emhB-!bX;T_1?0<KA|g=H1+#u&bEkS z2vT{EQKesVMxj+v&^j&tH0(cY;Q37UaNhpd584IX+{buJZV?W7yKaS45QABSU)}CX zy}ZgD?Z+_xe3Q!>@+KJ9%kjf~R3rudW%Q>~0bT32Vr5FQjC)R;ZW@L|F}k>D{n}IZG;ln1IVu zgb4IV0@TxX?f8-k@H!?MCK0fMkVcJ>@~U7EVx&&YG7VUUSe1ARx}L8l$UUmkJoWyNebKb(jajAJgcA3_+?mcz}l9rnhjJaa`ovPqgbR zkAw51hw_FoUmmSZV4FV1Q5|Zp1Uub5Dwf8WJ6`PT@jO|)X5rfqs;~Cfyb=$dW!6^J zH8tFah{GH1){`+t?0Ax&0$)JWXJ`@{8vSelxYd=7ZE4{Yb>j_3nPz+Y(+Xmq=IPMi z7*#Cux+ei~wueT#FUU`fR6SI~9}S=7%I29CEhS!nu;m5YUGA5)T!s5#w#ZXE%i0;uv;`rGIi)C z)_gPx1P0SQGtETUY&@^6<**mW{&z)ncK`K49NdK>#6Za*6pY7|9?BG^^6xyOjx-;Y z6T{%D*_|B2@S7q1ZqnCH7FjrH(;i_kS7M?ey}_3LrI8Vd<21=xBE`N2O&{)9TA`oS zhn&&hO4#@Pj)K>vREdWeVjfYCF@m5)S$&l#0(fm%wb6gM>?|^F%G9FUS7lU7mn1tF zOu$_-&pk{L7w6O5c2eaTwUshwgI}|=&`qttQ$#<_1of!O$!US8xMEsWsp;FOvD>x0IS}9N z+;L%zZ}rq8&L)&4ewJqVAo%YBCW;4UN-aJ+z0euO;Z19pzZ*#15XE#P6)8b*q6%5| z5pe880=Zx7Mbi!QWxrgiL2ahy+`wnVmUyQw`d z1I0uAuaH_xoY$n5^USO555F~74OLsZJui2a+AOf+vokYSEP7?iGMbITw`ujpM}AQE zu(SGT2!eEEra7QIq8qfSyF9Goe&|;C?&(A1wugHVmcgineQOC+8cXqm&aWe13W}hk z;@36Vke4mT$28wfTYszetEHFuv5a&2w8jI%KG&0DnF z$iEjy?3d>n1U~OeBCJQ%Y@4=)ClB&YFutI#B`vx}W);m~R?yIob5X7vb@1jLcr=kK zpYUd{DNEz8FB@jq=J|bodn*|)$oCy%t`AV}X-4XXC4R|Upn>ZW)^er|S#k5II$l_* zxC?3_$1do+4MWSv8~C)#4&f&?a12K;c*93}@+#MG07Lv6ZmGdu)?Jou{H>^({8PR% z%P0ziANJ`;_C^12F46t)m-L4Qd0#!|7nE0?k_(qIG*_G*deMEkV)RV>nVeZ@ocM6Dkr^G#*4IcCR7IKbZ6i+*eqNqm>hh9-o^9BVR+M>XN4FnQzGX< zc!h#GbEZ~fC9(;X9Dxy>lp!aK?7!td{y}{x2ON&ejN+_^5wvo$DMhAWlVhJ%V$8%^ zsaBlwBCyJ-I`@0@#|keO=F7q2t&F1QTMtL;m9in?LFW zbNHoG|Kyv{%=bx{J}eCr7=ZF0J9KK{X>my68X=x&<<+`_w+4c9SE>C7s8U+8a^iiu zLakw=a5*ux=#ZkA4X!ORhw^5iW0h}VP6E_dj74bg0ZH;aG zC33Y<3))}y94=ET^Wvn2dXB;b-Y{}1no#nu)`<*wu6yrNU|Pd;f{^|v#|A>ANB%{^ z`vryC5|sJ2i<1XSBRGTi&EJo2c19S|&36BDC`qbivt`pWSc3A3P)K3nce=LNG!Ce5xpSNY59RGm zCKmNuG&Z9a)h|#hv@{&3oa4WU%TdH`oA|}8CnXEWhYQTg5!mIw-^DtJ?5Z8&pf=Ps zh*0v|Ntkaj79%*C?rgHYKK@9ovpV5}=1A?0jlON(_>vns56Y_4W;+w1r%!@6?PhuV z9hG0t8TyMooUV6Mc4a1cllxugR8?{MUtaHrnoh3ue=p(JF9KEU+^!b0+j%y-?JDXR z|3`~s{auQD>TgIk{$H?|uZ8#je0$y|`QNp}4BK4Kp7K$j{N9S#G5X1>4rIq!JH!^~ zr)-x?lQ6T&Goy_vSQRGjHWl8o#=jS3T`ISQyh;IUzb0TtK~s(RZpE@5ho9-Oxr8Bl9NDxF0JeLa(v)a)PyRoH3QxiD>dqLixoh@#T#NpwCz{xpK< zaHFto|IK;lrcU0Jty%MeVkXW`n7!U8doG$!ZZ8)DW6}G6q}|IS?<{sLxW}`HG&Qth z&HE@QDP)w~N$wr4{>_Fa>J!-fi=6R^eM?*Li(oaljI{gm#x?h5hv@QZnQ!>{yp-H- z8H{>ZZwK+I$`TId?KkA5l}jD-hl2_AZm7R{_Y>bn{KU6h86}85=D>E&%xAI2t}*hQ zNt{D=<`A7vG`DEU7Z+z;aM9q@Toj)z)Arwk9h6zm_t~cZAsATXS*wBLC{e!@)~+Ex zgvy(@KM6U|}`47!UmE(21 z$e@e#YpzUSMoN>NC5eERM-9-F3irgJyK*$z%9dH`N6jhZS4*75FHFYuTwUEercp}U z=@Gk~1p0fIbg9peAAD1TD|nK$W8qf@T`a8sg#~C41FTH)K9|3noM(x^x==wzDr1ng z&bfGjdCe~92aRFXk9uGJYq0tt)e2~IUVn$-V9>R3#J4%SvC+ia=yLLz+I!;(^!&VF zTJ_KEb_%@LVO~L@^OfP>&az~fD^WnEGg&w-fsXXwJDGXIs{~SAtmZclrJ`!ZYb6T2 z2WojQBfps618aJ?ejZgx{D@;n<6x|q;p1DEl6Vm=H}%dEdm)Yye-Zn2b(MqM(xThF zpgB)y8{+vJ(^jsu#2_hRbrr{7P4z^~GX2-GLTh$cy(cGHLVVi??win>RI9&pG5yKY z|6Tg7G86pkFWYM;`^}&c8$uDO^t(a%pC83Pr=9(+{338HZSE%4Cl@jTe(bwC{Fm`B zU`(2mg?==F=EoUFLk{Li)A)yVt#O*}+pl=mO%zWJ4o0p{6IOM3l_-%T!&>SA-~$^% zJ})u@%k-Vvk-HWe3YzW(LPwMSdV4E_29)Uk1C&5(zs+mSrS$oW=MCSo2I}waLvd{* z>f1NjQ3G$j_7W}}e;uK~7~4TOSG^<6MWb|gD|eFe>KKwlb6D!ly1sTX(^n> z1^o(%N$q5pOd26}H}XrLc~@d*SM<_t$tPHB9fpP!dynYl{VM!TuW z35<-6VuAcc^rCvIoiy&SN=Bo){#{U8DcA1oH?_@X8UO0@PqB~P!iqN4iGd2?E8@ze z0k(^p+1i2`Xj7gxr<9kKbF6JbRZX?q^p-167hQ8DqmU zc;(rbarV?1>_7Y<4nFcEE?+y3XTI?zjP`V6YJ7xvoZ~ztAJ;Bj!pO)lvN^UES5%{+ zrPbPbu>UrBM?c7zQJfipKPQH0B7w%bCV0pProx;jknVIGz#{pqMoVpMs;F+n-4AfA zeEb90ao`?o+P&9~?$8kxno~$Yr8$f?iHwhlALU|Adn=9~KaQc{3DU$0HgDa9hu`xd z#F*b3ue^YpmoI?CZ1gE`J=l#|!UrFW&r5lvu|*0M>mO<-y-WV2T+jD-t=~z_r?Fid zThwRd7Pz3mZ#1F)vdZw9`{iWi!b3dErMB`>qT+k9c#p>;R-U)PDd!R5GK+Vxud!}&0j_!^(PZGp2}gSR-!>ufn&P$YfA>!R^yKCO!m-OwFO4tg zHNoaEN2^ zWRdNTg_36+@_5p*1u{@Xm069?UlLrYlXncOpW=!(wFWR{CC685cLC|eZRY!Fkj#Tu zTVGh3N?mi%)R?3Ae8Ugysw}7Gx{8|wg;6|v$@G+`y?22ezhoFbYjfD#+&so6CQNy5 zY?bw%QoU<)PmvFN;fRX74=b$VVtCh|EKf|#{M-zpD5xjNgEu1}f z7Q^z^71l-`)o0n#&?YWzLQ@xvk@rQS@>G)`f8lzQW3}E32eS0m_^qBTIzRPs7hB{M>u)KhS&Qt^XPiPw&q_ylEvK+MKbva(A|`;KJv>@YU{Qur#D04QWV2 z8q)AH0Kfdp=`-8YkcKq;Gk~tX(T+d+(igw==8Mm4k`hG14qNFHB#4rww-dB;5guBU zTn0r&MOt5R=oVN?i4`ZblY%ePS)1r=+afOZW%*_2 z!17N5c3FVwd|3&M6T~DFt4pE&S!8)D(9tiG)oC}z8SXO6k>o(w?N8g8nvO1i6>ljWSc@A?EL)d@U1Nhv(`yE{Gzm37`mrz$z z4P@nFe0%~+%S+gQ_aT(lG~p{>`aF(2{Vmj1RHCM#0TW{*XliM}&OHYqm+x1vUc&j4 zZ(x3E!~{%E=;-Rn+dGgi;c3Q-3EU)m&F6hpQ7$&M)?&+sdQ?>Vz#wdU(W%axO)#9S zge54IMT_=CNKx-LiolfZFu|MzLoP3gLmhp*T^3T`s@h3HQln%?UJUE3FQp`uuutjg z419hyIVtHhJ0FomHg5L^@W#n5+#U@hk(tZ#DL>L3X;SCTOE4@2pf;pv^Fb+TVb`ID zFiAXLIsF30`i3wclx4fyV4rt&P+I+EelNvNK*w>eI#(^J%gK7k$MpE zCjoz!6z%GZz9IyJGj>j=Q+~R-sxPQNu5De1#`Xg~qW z(FmBL1k-gcj@9e)Rq)u@9y2GtZhV5c{!%$7VzzFe;vKu-KJRE zd-!2=?%a*x;XzzJbp+w*3CQDu(V1}0ItkxWe3LmDy{R2Unx+8eH+ccjna&mLPioh| z^fVTNL9+ncuwgy7qUsqV!M1y zzGv>LBXOk9+Uz4bRo*JMz-?F(m)2$&)kg|my>5gbsdLd%3Ide#sKBR{N1Ln zw|Ty~;^sH=7NB~n^1>W>h2A^Y+%BwMJDfOSy+W#dcF!_fTQWbn-B&)svBpFlry`}Q z#+zt3f;_pD&-bH%V}XSHo`O8{sv^rtrJ0#6;kLtrC4=zGqDql097b&;f|MIEQ`9*3ua5ue%zDLf$5gQF z#DA3Ix_xCj@mP$!oB0w~rqpGbQ=knz3MZ_n#fpoHSs(HwK8Ri-W}R(8VLBW>sGj<^ z!urW!XfD$bpKfeyKtpXc@t2FbhB~yiu0?rS1@V{5JheeAg23oF)~xMBb89)vk1oB=BIak z=ohi+;1hW28(+4KI3N1C&*H+VH}RD}{6A63xrC0F!Kyp^JeRbZ%eF5n@!?k2Elf_% zBD%PQ_KuClW3OB~YiB2GoDe?L|J8On3P5und4I4zr-n5pduGyFon>MBssBkKZ|xzR zYm6Wr>Yepb_OUqWNE?t`0QE?YL8h2t-yv-(tS7$!F^(ywP+s)V%|RRZN#U zLx|p!_j+gVlOJ`_c*l&B&-P&V|M!9UvaD~X%(VH>@tfq^WWM^};l+KC(pMWmE!Lel zsgk+>e-u(_{aqkBkg{AnOB*eU*?+}5#1{<@cQO(lmA}KU#!mBwVv71@+fb58o^4|n z;~DQ;bsNQmQ>{JJhHn>(FI5=@PzFYGywzC1ejy$&g|J@PXv{?ZHf6hTr43?A&XP19 zN&H#ntc&GkUkvnGywA~(@|Lnyn`$*bV@;Wrp0yECg;sqXC2?)WHP}obVC$z4*8uXI zq9Z;6fjQjlAF$26I#xt_T(wnbVIF?JADcQio6_}GcNe<*207QyLrYtmd4)(s0>~qd zv_WhsMn0!JSvK2Kn#sA6ufX`x*!V04$D`!!t}Yqb8OY<ng=Lt7&+Y@|mNw<)Lbe9yG$} z=p%ogwpDXINWN0w^^oUkp2xU+=kxo>yF46&i4!I!+7ivE-8J55-mP{K5Atw+=oH1S zu2Ykfn#|zvqwhicrmb!hb7`?1c{Y5z3rAmh!T4B0V=MEnZSBDR!}nvT`vzY4-q+0| z!`+X*7tL$dq)jGy zdmiU3qGi#$=E1V`7q1tu46+YuQ>Mlhl}VQRi(Kz((|4if%Y0|^5?*y=kmfj|zg!kt zJinOp;ZOd;r_jE(h4bYBu4(6N^X`l1p+frA>Ik1-Z{#XclTZM_S6F zl)^=V0bT7pUEXJyaLWmpOw6E#KfjljlwwWWI`s7QVN!0h`BlOsfhk3GFX0fMO<=)i zl|cdl36^B>B&!IfY+)sgk$@+WSV2DDZ{DyLRn=9@E*sTV<)+LzeeNQ#^sqgXroTz;iFX zh}*Ys+j+P|uojypOqMb~&SwcUbgr+`mGH>UC^l3`_#u4AA~@Hqfz?Jjhg*t>&Mmu8 zR90@5iNgZ}b_RYt8ZyCI7TZs*`m<*7B4p=*WBpN2FBp?6`FEk zie>EY?ZI$=KL&4KM`&&m1&q6C@7-uz*MX&243ncHsBdUS+xkxQ5A7B z#gXt(ZY}fp&Es*(Ic*9NZWp6WTYZ9Mk$_L=TefHt%sGXm6!{ zOa)?i`FI!3ck2wyY^E(`r7XG&?kFf-8M93(C*f6YF3Y|eL~mEWDchHnrV7r)Wv!wd z6jqx`^d#54c5iiJ4^$zEldKHZKU*|oC1NftGvk`v*XStEEW0I$4F}~KSb<#UDK0F= z#_hYYVf#)@%m#4k)mKnmQH78Fi(f|b+6@>R9Wu`o^Kw5=P#+(kApOiO82+=^*0X^r zbYH!InUNv(t4_TCWB&q6tnc{92qNS+Ma(0Uc$SbaI6q_OSk6sPngUTm(Ja!AiQgPT z?IQjn9wEy|zhAC~3(>Tu9p1u1gxLp+t7_5M)`sfp8VnB(;o_yU@O$#He#2&zl~&=! z=l&Xtp;>I*u@AW(AF}gutpCgj2Me<($jin8%RS7pjE@YPu(*b4wXIu^imE!4lvg7& zKLd$m8WI#=E2C2#S1S)WqUC3zX?P~U?K3+QKGm4%>U zD=qPJ@e?V7MgPL9rEGkb`SNFcg{kX*k&d#`JMn*)uR!UEzSTcnTcngJrikX%6sMw5 z_8D0qi_gpAOjb<_DW#j(xRjFuZ5}ZtPBJemm*TVBrp)Ght3A_m3UsG@kwQ78l;%Gh zn-t&1F7k2VPL_!puToxFz(O86Zu5ny0a~IjBQ7L{oM(GF|eU}ng^ zkfME2iz%J$(Y2v)txXTYWePH~a@e=XQ;0*e8W#--SJwW-nj=yBX`_`PTzDiM zro2j!xLg}CuJtXZV{t8-ql=vEJaZwhjT1kVKgSszA0j1=`l=nH^&O5sf{u@dHFU!b3DX(?aeD}ChUsN?kLdRKkMU`5YtV~Ypn!~qq69G zI2=S^W{PyrF(JYC%qJXK!tl^21~}&#pPDxOh^NZiiTY4QMG0!_YdN=ybB-{;xos2+ z;ixIATi2~)f67L5ZkX!;^6RV&+w`J7p{i>moaP;ii%|@Y&SNetrMWAw=CI=9niD?B z`Q6%%PMm)8MVxr)Sp;XfJ|nu#GYs2SV~N987M5)iDqLu6)*Mi4Ft&${Ne-|2xj8cX zZ4y5kXQepST*g!2;atdPZr*jT;wq5%qv4pekWac0UlCF0*a<1hHJ*y6sC|T8vxH|v z@fdC3+P32^#2M!D`IA_f4`4&*CKPi_?Bcv`RNhdSo;I9|X70N85meRI;?&VsFvPWz zsHTl;vFf@toU2Dk&-0j`9LK<|F5J9+)m;5+GqbGfW10sM*P3+c&t`#qRJ~Om+wemk zsEtv2BhWEs+W5JB=WZ0_7hraFlJoZf`;X>8s~8=Vw}BbsZNe85A&<}D*qY0BAl~wv zC#mA%B96)FL^0QXYu0UuuWj#m`2PDJeqBXmeN|L- zOtql;NUFMN_!)=3o0r$0dGR}68yUR5UB_FnGve?A_mfU4u@GANK|$@hPjBA5Zz35y z4QWV28q$!4H2f2X^qK8xNJAR_S-_2{DgRf#@TIT4`t)}mU*-ba1Rg8S62yc%rfkvK z?Qs*>=tF_mXAAQAKmfC$d9!pwf*<%b)hX-9)A`C=>?=J9a+aB< zDS(xzG=^FH>1uH^oMMLeQi^KnZC0NwgRBenO)grUVCF|4Sx$GW+?k$)7kqDjN+VOs z&U|y9m`Y3Tbc+f+c<|5xv^LekS6sqx8Q62+E=(*e;@5uVUzs~ZB~_T0gF|=iGexHG zF)}fYGw05k*= z5>mkNV0mb}M!Y&D^QyU<%Rx*(9Ex?vt2eAKv$FRb>F3wD1U0WM&-MWUC z|K__G?C)poUENdhB+@W^N?0NVbb$}0m9=Q;*n)K%x54Z4py$>Nbe%m7S!aImQ=dhB z`$jzVS6{#@-}y2!5;0_C=Mgu~{kqpvh`SCwVjBhCI{5~|!6{SjGij`8S%Y2oJ%Wup z_oJe&5$9Ovzxu=fh)5)al9F=8O;Yng@oU7<WqOub1$Z&L~~wWAxcRT9qPIeHmqC#d!aRK7*rgyo|1^7jf6&2hh;mg1`Rm*O9^eHg4W# z8&TrKYtNOFsIMzSLsK(iO9@QR&S7D31>uz}L?rBHTi4dqqSWt2V?zz=5<_=yzvZR- z3&hXB^{cj_MCVXDWg{Ee_@sE7aX@Q((W-c^30uVn2-Y_ghgT_~Oc}t>QshdB?q~az zmX;ZPXhV?{yCKrI+>*=vr^3rszZ9WrTcx9)q^0_1K)O(TlYdLeWjK~asD#pdZ{e(z z3?~JG`h?URA}`Vd z%cr(fJhM);s<3TXM)gW<)^VF`oYG%P8VQ@_c|b>*Xw#0AimGc4^O8lLWaX*NI2vbC z7QB`Q!zw>L=a7yQ%3AHfk_o@&_FfWghDng;iUy>JlKWZJNsT1Mqc${1@GqC}%G);a zuzcDKq8C!2sx1{?uIObsYD!&IkpEN{+w?%*A#VgKtGv~C%o_|iCy4Sp`ycD4zAUd6 zCS1>TN~!rdo$DS)fMeU_)U>%kPtk>FSoqeF46=@1mc=r^xd2j(`t4rl!)lBxE3YIy zu&k`RzsQSH_S5Q`DpXgOqqL;Zyf=6_UWq;y=4UZJHHq7OgBTqc!NRQD^plmJkL~;J zLG!u}8`qjz*5cy%(-`RPLTot$O>5VqZCyKVUAcf~zx9`P&aU6*Lt&Ah{mEnH)#e}1 zN(_zpQM8sUqnKk)W5B8FIxDU6Sg8yyJ}D+%j2S)4hU8+Sgh z@RE?bX7-6h(sG=nl7!@q^^;6<73@5_u-qKGr1(=mNw95np1SDI9ht)1ZBC}Ki?pu( zXWvBc%|RTokaawF$#h zpp7-;6|$OTot8L8>e=hb;T+G8y1FW?Yi+b6I5bDg%Mni_K1pZBZJ38CeD#;SH?Vtc zq*0C3Gu<;^>&C)5&VXU6-N@=>AXUVUSGVzYE?@MWB@4 z`9@`WJ7?Y}Z!{*Q%1Z1IR973VEU;+SZQ4-jQ?+*Y7M5+S&u@c^Z+Aqz_-SgRmI3qA zlesM?Kh#(vFAMTOAWVpk?8lg*Q!NFQnmo0L#d7>Rn!7);?^fT6|24cJaG)s1sN8soqnX92haokv|jFeAmEVBTjQz?7d?^JIq z8(-_E^^nFDBTg6HaG<>OelZ%s+`_DFmJ*({K}W|=OwP<>XlN3FnHdDgSC+`Lm$)X2 za*VC1D8|~h76ii)42_V-kXI>P9f2_)BHtx48yd<`;@1YN7?af+!}V>|L001{XjQ&!OIzv2Pl z{9Ns8Nhu{)R=J@UDm0dfR|#+WiFdfoY&wHo=lSPxKJGO|dp_53LYDZDz}i9;OyW#) zd2Qg*I4K^YV^?%sissxZ+ntR`%wzlhd$4iqPTabF8P_kqg*8nL9CM0o?iA&Gv*%Vf z7C5h!a@t>1h;6%f+T3$uY!q+2_NtXRs^eIgZ$8UbQQL&3*0reCQDIEu#;KEd?Zsz| z|4mIynEQO;*=SsqBUrZ*67GODVYv-qIx?uL)NeS@CfUlW8rz5_o-Q0~9XmEYiK*G3 z$c(9K9^`tkrEYwb>!E@?R8`d2oFpDz0NEk?4{>j05&m^doaSozY=61V@3W2ZTDQn! zh~@#prELyoyLtFtJkpMEU;@PzWjJupAyk!@qPeNYJOeC|{&b{OI2=Q1Rl`!lnzbL_ zyng++RjhXc`;$Wif$jK1m`KCV9(133>xm=Z|MRbAWy}}K5Mq8Yip_ftprNrD(L~l) z3w>?B*0OEe+Y^N}q#+GyNJARZ@J|}j%Jwv*Ar1d5fXpuUyDz-_wHLql?e}XzZ!Sug zm&`&;khz*^N_V|82>{o@vW5!>LtF^OB^|;F|D0&fE$aCaa@%e1?tDq{-)&Q(6c!eu&|iv@(qe4v=)k+5d=JWM>Tzpe5NFSv!l@&#qx;59EK6|31*Y)e zfOo+g<4G zx{6qE!Gv1*`ML1t`>+^~V=lC4)^Sdvvtq*O+?;%P3QLib>q9IWL@x6`c=!R-w5~^S zV-qr^r2N_!apC9>kST#^QXV2DjRZIewzGta=1N%pfLF8d;6sn&$xr?whGqhI_Ipnu z5sjGw;r6vN2+z;B`1~yspAz_4ZBqnc$xCsTf!yo_>IyP(_s+H0xor({3Yb?y%Ck&o zktqdRrn9`05Ke-534Y9ySAuua$jsa<0xU;pZXU}qZPJKiWmU>4De6|7<;aSJi`h&= ziok>^ar21}iFl=M!)iA1laJ!!GSt=AnkBVdBug-qy+PL3lLriA{Gjwsi^@ar02#ptx$?X zgM+x|o(Dw)qM>!`7cabsXEaY(ZI7Is1DL7N-YE z2kg_uB`B?^WIgkb@z;2}E~UOeu~l`A+(T!fjQw?J-F zozUIdk5>uNB{VJc`Ao1m$2M?%NJ?F{zjXu0GX+vU=%wnb_A>!7X;!>KXOT)d>eFVQ z+FBEaPEJjln_0O_mxloJ=plhM@vgE6R34|ikieNa@m~2^{w#-{`Om(|a>}S$nKN&t zC6MAk^^rnPWmo7FPqy+C87imS?6Hah)>k-?MYM$7;^9)7=Va^rebO%P^EaV z2XrRA`iRmo_qD1wkz>{8JAvVe>6l`I_)s}gX$lMf7zV7kJAHgS0J^Gzu)>w3{>L2kBL2}=nsH~(f`$e-G#wzdT~ zu6N=5$_TNf&h8NrfoZM^XxH<-@b;j@-m`CR-lWfSh2As5khNe4q8iAQCY;fh_?jO@jOIW zer+Cl^~gyKkIiC9^CMQFxUvcP9?m7y4#b=0Np(%F*m~eF$K0SgFf!OCV|_hXW@%*2tm}k%6d( zR|XQgb;BQNk?o(ICwI#EW(h7_%j#3SQ3`Ew6Y*0^M}%Ty2HQ;imAJP)!88OmPheV+ z@I02H3#3!_kDMI%3jE}M9)uUQnP%1IQfvaole=Q|6K$My=j@Ay#Sb*TEzAXeNZBs% zu#DvuHMWsL$6(}>r{!kln#H7)WyY&m9^pcYcsJs%pv3RRvhc)v9SdTLAkv%MW|lB%6;95Nuyv8`PAWD3gDkeM7S6qjL4;m$U2W2e|C`7@Deo1K`Rjg^W| zTF|{>3dF@Va>k-gajbl#nAe6P9b;gMYaO4#EJXu4k|aap2GdqsS(=RH{{IQ!D#&`c zaY1F&Ro)=vhTHlq<7$5A#s{V-x@U?`xvD;q>|f+3%EiLyyOQUh!r9o$XKfmr3(cGN zo!H`{<)4VHBE;qL;_c1N^;{=ZVR~i`J-xlQ*-T|sQ)pxL zY%t7snP_P&hBrs}l|tMpxm8}dVqc7`aLzi1zyiktRhpoAzTA}i3QKVBBk#fE@BgT6 zp83|7{{%hP&$F**a?X>_@j>mAfkmztS2N|(ohh(A{Dnm}wk(E2hHoi-ZR1)(^AV19 z{HAqFcFLliO=CQOeYK##i(;7@|Kfm;e66oo_pZxa{{-g{ z;#eHzydzFNuW`}MCEVC8MB7F})=PaMrEIS#@}RUx^EY62VbPA&DC4+RRaH%1C;q#F z(eZH%u^gRvp$69TyQ#)!rW?N}atu~LwqL#nriSlqGH}u`NZXm>U zqlfeR0*>X{)T#2S?KIx$eGZXKie(#Qp}eXJ4?g;kS+-Y}7n$pMdFWBXBg13n1+KQC zWg2?n%SEq*P!j&gExd>CB_B zL6QI|Ar=sQZXdUy!I`8h7;omJRB1SEivqDYyign?2t*ZXs@p}h?o zcI~n=pRe`w;q}*#V==ghO`RLCwtWMZViDYZ*B<2f3vue~IrQDQW&&NE*E}*dW`b!u zw>K*jwbiv~YHh{z%#58KJ2yXXm6hP!>dgFQ%_d=o1HD~EHjyJmf)w~(zZaF&btoz? zLqo$_G_Bu^k-1r1J^mV27N*d;rUg}X4G6~)=42UM2jLGE1}~FeSI%XJuji#+|5aSc4naE@EnQkTpsQeN@L4sRx`@j|qfG zFA|Q*f?L+V3a1=$GFMUQ1rBU!#9h1Ekex3flw2e;FXBe|Nmn4Hj9I=Ug{~4t%KB$! zdK$CDQ6##+d_s1{YhqE#tpsAsS4t8qIsbEM8Yvj$@LBI9YE#|oFNyPDlco8jBICYCZ*3(y685Wg}>Z0i)UWGiIprbvUBr^2H}J?XEgN# z{U^7eS*&+PJb>PTA=0^AW@lL$67LX%Dtty(p7lrFOSvxLuPN)9rWAP+NK45oC7J}l z65yJ9VBSmkY}U4{UjfUquDu-5$ zjtSVfZ8!3H{lWLYZRed!p(7<$aB37AJ2&AM|Cj%OY;OTh9DCISl;+NRDPb1Bwd*>u zlCgpt=g-)g(FFxQ)KpZWvvUiE#z%4W(pgm2*P9h;wJdPhuCgc^9_q!|z-`PjA02s7 zRo`gksHv?t{v>Pm@zGHetZv)857jj_`1%+A*esw9-2W)1r>0Dp*wDNN!O$E6qr-@V zLKqzxLG#*m=-jeJl5I?n^k8b}3YM27V*R0dcN=B_*zf;h#3=2t+$_0WO7@rN>C-EkGZY1k0s- zRTo{Q|q}-L^^`LN;7V{L%2@DT>ma<*prSNqM z2lYc2N%54nloqC3GjUqMDO@4eA(#4SGi;mDy=D8n7-;SC9lJe5_4%8KTTJt#|@|Qg$w}uXJwMfb|i;9Yj7Ie11ymaWQO&F?2L7t9CC@|WU z@}-L7Pf2AJs_U9j!Ms|MGKx zjp$+sb@dI{zUP3QQ?EWH<@=Sl-asNWdxsuG>uS3Q$BvcoEVi$2L`xA+?psAsNfoY) z%wvvpCFRE($KGQ4q$l!)0rl%2w65KN zhBa$3$?;hp6?(2;!pl#8hx}<88#*>&_kqKR#Nz1fxry#u*D*gEu(o3njmAWPqGTg= zqc;(W>oMrjy+>ln`AT==$Qryp-)nnnEP$!AleXK zwP8q`92Ubm!XU=9GR<|f&UKfNd~Qyz+}#{TWfE^p@d(Qo?7wO!-7$~(`2fPfY3A`Z zL-=u<>tX;ne^t49MGm2^#{j;MCU#!-gxyC%yhNhy$cvI)45?7JhPy#xhfd`XO+o`yp_}v^e5-DZcl^(G?(h`%bW= ztabRA4NXvuU5goc@tVXz5>nr+jCLnrj#gmtb;aP1kH)Xb%k?fbUlz|YuOdv`6!Q!y zK4;|5Fq$i9vxGKPCd6NvMV=>@^rmyINspu*3!ltSB~}wFKY{Mw3C80sO_z^Z^6P`r zP~rrmojdV~L(-0o3#_EpM~bJaYHYJjNPH({a>`qm_C#r}8{wQ?>xCfaDXBR?lzeS` zVjBHJqZl2Z=3F<5$a2j1S0b7~Q+*WZWDw(lDB>zi60~m6hPkFS>+$%LAH}-$8*u5|Nxb>; z)0mkUfsWnE&DKU{=h9!ebMpoL)I@H+Tvl0wrj|7bg%&W*HQa)ZLJ4aw=+0V?M3#(~ z3U7IwKk0ZaDRs4}&@1n1wrN8AMsxIR;!|r8*UoP9s-q-V@(j*lJJG&nhqb+qP0C~* z8WR?0r*Z7nA0Xdb#5rIGip$E#BY+zhPT9EGv3VmZ%PJ6DSi~)^11reC3k!?Lha(&( z7O-W@RyIt|CSx=b^TV4%~d?w96);2d?&)O zL}gxzx?|X!XPso3jb_M)Ne@zJi(Fdk%1~9Di;^NghDN7xYshWBD=jVIyJC(tI^HFL z!Qo-sOric~{gC)jyKBxZ`myn!d{j8n#=0W%K4D8`(wxI>aLhAz^E&@t#|{Jn0k%z^ zZOl&1X~dt+vYq*=J+$dh>xokG><1owz&15$Gpp7MWu+WQS)ynpW=FmF3RzyJbM(a* zS8w#(9xE&%O&R?>)oGU};E08q$!4G^F7l38ZY#`s`;voAYOX_Gdq;O-e%=(vXIq8K|hJSS_in zxbNDfi`x^iSca?z?VMOH%ymvX?@VDKfq<<1B&d+UNP_#6LczdE(2|h6QP|`{-%OZO z-&3D?H9-Iu{*oj(!JZS)Y2h#Nm1I?VHkp-@$;dM0%+g9Gyrt!6XlqC3=G~~MZe*F_ z=9WCAu=@Lg1Yu4r<3J+jP<#cxf?W8^Dls@d0c}JW8=Wv0dAs-RLq$!kxxycx7)K-; z#pKv1Hm`5T2R{5!_)E$#I5gs1`$nRWi)^`w?eFWw$j}gi;SlR8d`jRVfrn&L4uO*O zDG$46t>tQ5O5fVrMm+eg4`TnrPhiWQyRhr-`;b*wf|GB)hS|YxbgW&21BVZzu&f+q zl~q`~elymt-GEB7dML-C!w0eF;JwJoFTll%7ZC~u@$h5sMaQoFSX$07i^rAbxS$+9V3Pj;hZgq7v zq1x)Qr6UE232~Xe1gLs;%1}`j<7DTsFR^bktSoq1J34Xub`J_X1!!yE0J$L^?74*- zS1w|prwgOQgE)Wo1V#q>P*_ro(#je%cW%M(a34;-`m7LzT$Pb|s*h%q)>@g4T(TFC zR%LBd)7Xr=?|l&S3-fsOnWqp5Okhdw&KKseY0D05zv~eEl@+LKY(zuj8Z`&oGY_5u zFXAk8NqH4IHg4hf7UI%lu9~l$J&o>bS1`stCLwHF>spkSml1ahxOVL-`fgs6ngG@5bB05!VkN;gi)oTMFn6YcQ9S+goFKC|Ab{%v^^bT8$m__oq9YeD8=*())I zQ&_zdy_uDqGERaM(mJrsApGgG`iSUI9AEdMb=6I2YD^Nn%c4zg$Tc2GL22i}@_WkK z)ZE9j&}L1@qF8a5pN%Vg(6}bbw@n0m))*%ty{o?}!19ro$kJ89@EGY?6;s}-i(Izf ziOVnIJ62!b3(x9HQfOHH`IGS3cp3vp$>`dXynz2(zqGo#%?7H6^2yVN42D(R1@g?)J^=ICuOAW+z9WBXTNO z&YgSrS>1wj0rIuCu(B97%T~3c>yM&=90aDPG0rjF!}>H;79)o=Ra9Dufj|VkW7Fo2 zd2(U~36+^e&(D|VnPMiRjTh{1qGctQt?6h8^?&sly|k;<)q1p*Urb9q z^CyG)uA$rF2?vH7gP#`b?GSInPtQT&jgRxsQdbd0GpS@$fS(vY^*;G~M-b74%}aT& zboD3tcss2h`MH1mrJhqS939#{L2au?HOm@+Rt3}+q!R6w-Y#@qzruOxFzTDQemZau*H5K39tCFu=;u6cE--}~m#^T`xpTOA z^(wkKru6l8Tl+UQ)!Qc4jhnV2U%Y~I#Z#wFVvM|L-G(h@^?&pFbp)oyZG)G_a^WJz zMMpRqwsoU6;)>t9`Gv>Y#WpGt&u?!g;T(spNy@{Hjq7n}-xdsT4n95^AeUQ31?S=q z-G48(Z`sUw=@>#>bLu>JZK$vf2gJ8%Q9q4MM(ga*N>zM1OS_Wzq_Rk9F8b6QOJOz6 z$Qy$CO_b#qKh@ZxaoYMJ!)Sa+%{fKSj08_!E=;{uRGVGccKa3z6ff>jyhw4^Qrrs^ zLU4DNLeS!F#l1j*;u2hfyF0}pKyU~Yw?E&v_doVNe9oSuHP*WCdCjZbjx_^kY1kY} z>3b}E8^^OsiSRDCuYGK2j1-GXNhh?Dk;Z&!9Vu&yg2Vfo+iN5P_8uA^+uM8>pQpNR z?8mxpeY*s&(E=~fY=I|;jBAX#pSS$^wfp&?otXR}HKpxLLlZJ}VA7&Z4U7{;^IBv4 zQokDX@Aij!;0ZF-dU||-1R<%PjivBPZ5zIRem1zCcPv@(n_=@y?@W<=oZpbMmw)bH~Q3R<;WaUv_sdb$Ih39r%-ozRMJv?hObsuIW|0aTJYa~2>#I+QITkf zrg!p~zLqAb1WzSZG1p>id~Z_axGY6)S&==&+`HA|9})2v*bc_75)VEmH=#R;QAU~z z^X)L}ZyWW)7Kv(@%KT3?L}mDwl(37lTmN@jzgOp&6Y5n=z1^;o66-mMr8N{8p9W-g zn;`^lQumivn?v{JHPGpxzPoLf5E1)u62Q3BR}A%hF!&c)rYd< zT*EsiW@gnB8-5|S&ot;ANYz|zhYa+2fOoD zs&ijH2Y5e8?9v65YtlTb5=Td4RH^YfQ~AHK}{7JY1FMwj2t{qm`gy~~3kymw`v2(P-a&gQd!LMvA#x{M;`=+NxW zD^jb`5(R<+pwQ9e{Jl){4D>c)TqdDeWMj*JXq}xC9ne5}Vv=e`0`h47%A!l$j>1ii z8Q8IQ4YvtruorDG#rnxqfUza* z1Mu(<@#yiXYtVT{0(ulW2AgF~=vcHp#`o>)^KnP+F}AP*@E`Y%l@!0X3yMN&jhPRr zv`M#08;$9!3I#_x+e=_vWAn&Dql`Y56!%=vX)HaS!HKEtG|#r2AKjFz#5VpTOsO=6#u zy%GMWq-3UYskkNeQsz3EQx<;EE*U)}`9PK<=8w-Q@vQ2w+(O2`u;BgTyV;*9Xgq)* z$e*5So+;73tfm4Z2Sb z{)+|%ux!f^^wQ2)JLX7t#2B-`9n=8!!sn7>!j@UvhFQi&21i-FNvJKbHOZOyx>y`Zt~iL{)0+k3JJ7d>5ls_qrkP zdi$*Y>(}pL0q$JytB=)r!f~}J%ntT$=)+p^aq;Yx0;m?&ZQxnOA09Yi|NfU$};@i)NC2hd3 zrfSqwe*P1h)FF0R;p5I~| z%S~I~#>AL<^`nl_t}G44g>elLPMYs#2~7qWDpAGdl9Bz@jg9OI$IHQ`zy`k;7~J>8 zh%96m?Hzz|HdwTVv^C3bBEd15OZan%kYTJlMkt#oMvA@V1qhFwRl-D7v+AJdwMm5aT4BfmwPdK+I5sqq(^b z_9oU}%hNV)Y=nQ0DTMnUm5;KXZ?=Fa*2P0IU>&1`S5NvW!JZl$b~>#R__#)lueo%cZ9IFhW76#3r6dye z1S#HCgzy)n$yZj4zv;*gczTDiQMq7pvIj@NaX{-J;uK-D<2IwYuYl>F+Q z$MX|VB@TPlRlIR`<^@R*kX&duq!^iS@CUCkY~mSvUZ=WKrFBY>JxVWWedBsw>@unk zSIla06Q)kREkwj`S=(A}JW|_63Ar`>ce61V<_<#y&xo>{9U4`W-6`cWv0%UEzK@fF zrD8iQ)6PkTt%ILNR0Dx^G|ssqL9H%G2?1O5({<8Q2$`{maeJuA$JnUMAGrjaFBR8$ zi_=agjIU;*cHo@P*<6iqMKPsp*Q=|`35s;8z`k>@^YxHEuk#*vPD*)U5ZoGZ_jfok zNHBc7rAs*OSnUkijr)xPAKT4f%bH%%`^FZ!EGHiEu}D#0-IWr!-zN3E+JRn+McyUD zTD3#}!mO62sPt zYu)#O%vIQQyVn##-#0y%-Vi=ux{0BHinq6VvsMk4aEv;?U;C%m7zG}T;0FAH7D?VJ zzLo~OK*zfNVRkh{fB4C=Q)}3^<^}kp*CmggHF)d%wB3SyQ53$kRXVU?Sd$|Qs=eg z`7A<>*Uzr^rMdSn*xJ1px=wT2g;3{Rfq8{BX497di5fs7qt6fdqAmAlB!RE$FASfS z)cPM-&hm4t^RsDePSRbgYkhQi}B-Z_4n53bS?!X z3-Fg+I{nLHT``Q-kh#M3PLAOr)7GR*-Jju#q~?Z@y7{W9QY;;Clh_6_K3f_8|Eq*ly7*Ew^d9+Hz9_>xP`gH zTf04Gk511Ujd&Ba?WDC?5VF}1i_UAIC%yO{n@4?fo6q(tD)Bw~ThfZQWvyduEG&af zRr(hjw}J0l2Z~$#Dlj?4Zz(6c;7oF;k9d1Xnk`A$lIR`5F|^)pm!>*z*e2`Mm8j6I zis$jvcCDPpnmU*3Z@KE-+_u>`q+PYKQBi&HvT}O}$6OA_(Z^%4q1$LQebphizuLQS zhm7tdbf9>l^rqh85+@rF3hjlx!l~bi%^cfJ+K|!-io#d@BnXo<~beg6g1r}4>hU3NtxEK8n{z~m?O#CA2a-!v;#1v zXntkkXEDDv`j?)Z)IGU~?{`pF^|9*06vSd0{r)gAOf-g;Kxa03hZP&hX59ImU_0zT zw|eu8ygWGz4J8yzIdTDfFb`wP?qaHi)8;o6V6$=y6SB&J;X>U5Twe_l6~Cr-7Dhza zGL0!6?H7NQ6eKOA9|+FbS>BnOun2@AvmD9f6zqxloe!`bP(;xQPEC2_CN6%~km<%^ z+tV=dq3olVe#co}qwppx`y^W>9gv&K5o8b?#`dA}4`=8XQ}%IH@MgU;kD(mzL*1@6 z2$J+gVe!jf5&G;m9TJ=?i#0=LF4R&tsW%g=(-7B+>qq#E>071@Ba5U4qcHi+Tke1V zJfW+`59aJch3v28j((umA&IzkG+f$`>7_j=<5OzpKO1z01Ly!(A$`bJs;ptP?6?uA zkBEIfHm>9YL&?4smmsh8B7lrdIm3L7VyUL!d{LFJvBBhVvVDv3Ssjgu+q)gJs_Jx@ zlXc+39O+SO&{vaS_-+zCiwaXO&4<8c_wx{@wQOp#pyp}kCpiu!*%*?^+(y+m6ONAi z{$_T5gvGJ}gg)*X+8V(t;pBv1e|g=Aq8do(OZAwprM|KkK|Dt?HN`eOz2J+y$ozt- ziNZ7MkE{nKSad@Nl2pm-vvUBERuI{Kra51}=7Hk0eKf_6daxqUQ8BaZa&K?sryfUl zBkjOU_+81tD%?!I`^bI8hIYFNT^MYE&G@n%P;#;3JK*U*!%~LgHM`YJlqTOY1MX&d zpOd)p(CFQD4Y=lJ!OST%?ny}~jE*PzA*@f{_6Jw@VO$GT!I2hDw+t{O4fo#|e491` zSw<`A=UdRJztOZ|kqtve&-=tPr_o7d)N2pn+O9ofLTPDDZ}v&%e7}j4?vr-um+8L_ z7YQ0I3;m`HN~i_zLwK8{uQ%kO>F4DT|v(81zP^*ed(wfJH|Y1@pD=I0}ueTg2P0*7)16Oh2bjkK=jf4k$kzIxf&v)4#_;$sk^tjBUk?oiX4)n0ehPpyb3!?CJp??illW)1fq76yx(l>OoD zBF@TPvy4Fm((+e8r02xm0Tq)mc`80D^0PlOrFkxoE}!P=^k-^q(+=%y$(%6X5*E+` z)7)+aGG+c%X8=O8^dc7Rr-Vuu^idXtrT~p-ehRiu@0wJ`wRUl87#_C=Mc9egFd*psJ zRMI^)8Bsaz$cqjyx=KGTXPsD`T500P2S(hz#50@O#L@lx=*^q za*~?IZfSYVaXU*V+s8RZ6vw`Np8L!FS0}`b-K`@^{yNUz07}xH;ONA_Au}5$yGNN& zF5DFHK7-sci|ykDvC`)$zDq2cUSB({cmu}AXbj<+%UX`zx_t~`Wb{d|Mq1X%I+f_( z?_jD&qAScr?y<@-F^bBJHuJ9N+C(2YE|b(@v=PsM)TEv9eKsAgVGl{;DVoul>T0AqT@mF^(hm1v8x+ypi5um!Dil z3gj1rE*&0=C%q(!qc(ls3~X%VZi+0j;R=>YT#)f4CF4<<)c$w@yi%0_F!xu}<@7bu zA(|`AFHVO2Z;8TxakVuUk>9E2?=nhfAAE6l&&bW(6Ejcp$Qlc1ifs);!NOKGaj}VY zUlC@vGk^1nz-ZUP>_aROyk$sOvC#&%IQCg6(rmrJ&oUYe$<~hiOiXUW%fVpEhMKYl z-hTPg;0#>bt29}#kHUQgc4!2RA5z4bf21Ym)&dL?Hv^#<9$WN@6H@aj_}~d%{43BD z-M#M0w-TM5;P`mfvw?h@HQ@i|-c?l65ardw03AM>_H7>bE zG67)x00AMqm}87J9L?qvy#>O3#h|9zCLM@RF=POqkqbCzYHAcfx^Z=CgMbPCid?eL zr1U3opzC#&xx)}J9vhgEW!TNIWDt~TD`BrnMeD5p z?TQqaOUZS@0)X%ss;8Z;FmUsVTXiTJsWf?2%DU2y1s(20n2eUG_KL>{x3qY z;ryx}_j3UDl%OQwW*uIf>L($u2h!drBLhu4%!V;Qwd*OD74)l7fYhIs7K_^2mV@uw zs;8}k{Eo~N-kYfaBDz`%!0$>VDoYlrb?%qb_%b>c3hLOQF_9Yk_m$e-tNU zbemlSsO=o{o!7HouV%k)FOf4dEdqACjzt9vJ=aCp*_kE@wVhuNR^mi`e)jy2jqiVF zl6{g$zt@NV$J}yf{YH<_@Zc<9DHG~U8TpCBsx(x)q+|Lr9Mc_)za0{)sF$M5MG+^w z7Y6>|@nJhW^ngiir*oHI@3(#C?ps}z7|C04ko9?PVmhv0@%&w~$Bz%i<&y_0QFzy? zN@r=F6f+BRajQ$5rYywJD?N^_rLED_n1fai>Yy@oFvcGz2N{290y}#Om0xDP-&pKl zh!J5A)#KGV^C^jM3*Y{>PB%Y9OnY84?ZjaIsi~@W8(UGj!-yc^=HrQVhfQq{#vKd6 zAMAyEpHx*;RD>9D;Vg+r3TFuumTV+JW6G{tl|;lO(y&|n8KzJz)urn5{^#>Yp$GXv zmxnmObdytZZnpPs*f~Po19Q20LYJ{-s;zUUpnlpaP5Q__@K#y#$~RMc8b zwEr^|q@+u~r;u{%-v|9zWhaw16d{-ZiJhyF2pM_Np9U^4x$H{X^P*#1Ppv4NP6;ds zN+|wjl8Wgq;~4(gZF~!4s?{I__8n}@nvmw=9S}yUX~@n4{ZIthxDCk!2YSz^8A-#D)RQ$EPug>hCIyQYqd|Z*?!ElyUW8u(CQEP81yagxlw!#>Lt?*(@yOI z1W@2*I<$%Z7#>xQ^tv4;JeguFe({u5K5&cnma`~XsIs#`R@y|;rj(y9lj+KY+M4+Y zd(h4IvIHoRH`>HvUB2mnK}zEbt1pBD8m&7DNgqgd(TU}dxUQp8KI`5ke~{`8$nCMu zCc9%PwlFmG)cL{MPp^b<$SN! z=8f))iw{|=f+puZzOL83WI2IQ{@CkHIq!h*-BeSUW_*IW8Fz0$c9Nr$u6zVD_k(E@O% zS=@8R_xx`pUs>X9hJ-#sqXJ``M|gt{dfw^(v)j{>h*x8eV{p1YN%>=`!_W@WOD?<)DrPwW&;Af{tmu@@E)@-N@xE_`E^%B=)2-g zhf-BJK&VE6bF!vWQYJyyk)WAILzfDiTOPS2jWyjAHOyH?D0gNhP?hRe!X8|Q~PED?_0I)5dHaMM(+K_rWeJ8 zidBKOc;FSDliU`4X70&_=-1vB@Y4$mzNK#`=R{V)>guuDX46-%!KszOb8SvclJTg#+_M;)=vq*G;&KQ4@Om3!o~_Fz00z#c5Q6_wlcCpx6m&iFxv;f`hI~ z9LEa@r&xZCyvI&X75wwy%{Gpqdbi4HQSp+t0%)Kejl{dE8|}n43`z-vCQx~z>%O1o zQ2kkHia6v|*s`cEZe>O@^^0yM1M*Q-bg4W^FyQ%C`r-z&UHPSyryZ&5`MFe@_1Y_V z13f^=kI^}hH5t>rH1-CzQ9N2xA8Aa+fN=IYsL&SXTH`npyDBNqfQW}M;)>#Fcsy^2 z3>_UB#`%bC9JE7N{2@&euFL?)*L<^l9YVOSy^Gwwb*jd!z8MvR^#<#qcj3l|ik!8Tki$D7?4k{>Zzoq#7 zVMO2=pf2~gAf|Mq9~W|E`4%~3c*@FfAVg?LOSmdb2kbzJ&k^R{80B3d(6i>b3C)4B zZ-rTR#d&5o(F<~t7(XVz2AkJFexP5<(+p+FZ@#)B_R(9r@FmxycGNv%d0qzoa!@qyp$kfWMH{rfPsk# zbWSr3!1Rnx+CV zj3?_2{a5!j<0&&y4?|sLJ}F5Ss>&O*9~K?Z#vJe0)hUM3DengUZTSvHU-Euew<9OAHjy$y z@fMR34R&XEbz|c(GAP=*At)<4q!EW6RlK+6VpC_v#MS9k+vVlFv^SQ3bN!trD_7s< z-s|;Da`&b5^`B_L=40n3W@**>D||ai-1mw88SrwO)T58fK0diy#ZZXyH*(&ps=5Ir zCOahYI#6?6ksELg2y8Sl+Zsee09fmTXJ+!By#2y#jt@QrUdZY2x0#Pk^bpr-*OQyOKhBh)v#Akr3pG=9CqgpO?e|G>vLvuXcpoe3zB zdUA9TXkg^xzDXJbaCW{<0E{Yu2D)3p`cA=&|D{rX`SOPOPm+sb8f9?t^3Po6_LRiJ zzFi`wZ<<2Mn&|(eB-bxfJNL{r8R+Yd6M}ZJHTjjf7?1JV1x-#Y^zh%$YXhME`A>|y zI@+dg4p`F7PIOD>ec`$7uDfVcJ8LmhdVgDQ1e?Pox@a2tuP?N}eb)KC-72htg_~Vm zNqGHGoRSf|pG7YAung4&2jl|3C@K_EJxhx>*Ht&7hO+nz)8T?@<4Fm}0#dNvH}FczuA zx4JmYc7Ty%LpEEy3MLJGVcJ9jGo_$Cc6u3HwG4|1rw;}B8^tM7YKIlNTruC!hp*L~ zJ=EMK=GNAALUF}rC%>m)8qClto1nNJ4qsoe#xNu`q}=1n7(oIE#^CP@3*HY7HUt^T z)BN!E1hHTPYn98K?yp$G{Nisgxju8`H(sQx@uvfb6io@$7rw0$r>AA@6d(+j_M#%B zA36UzFJqDp8Z_{J!9b2q&O9GTJ!28OULy*>rRUtV_DnRuN3*pIaC#%& z+?H|1>Y;XqkF3zb$k-BE!W3(%ThrCgLbeRBoTzVL9r*Hotdh(3)0~Hr!nRSgI7>)n zV#(SxC&{&EqxV)6GoC&c^l3z}mLX^zAy+%n`)V{7`L`9w9!~N;Cx7rrlal6Pc*^{_ z8d>OJU&Fxfim_iBT=LmS!!WIpj5)Zf{nmW$rqe2H!~cqv*cuT#{x;=Y(dKmKrIx%d9fQsQY(^q&A-_%Y zKb4g|gpbLDK#_{){<=hyxI*M+u%v8^j=*g_ag3N_ut}8w&e+BnT|!_5Pg-PYlqon%p!#c z0`Vw0!l7O`m~bRf;Lk?W383Lg-`eR>u?h2+ALXBEEuPv% zbPTBaOyn84ItUX)#`H#^-(>a} zV?_6V5Pf%wv;HZI$r&yhuw?a7>!{A9#Cyhfa6ui(FQ_j`YkXyp4l)OR9QI9(kfad3 z*L$YZw}tl{$t5Q0vt$QHcnWM3bm#^Eu`rG6N42Tz!?g^nHhBa~b?NdMajXEhWeDK?WngKE##l~21C4;M^|183SL&v-c8UbZdC}bw%?pQG*Ub}ESnSLA z`X~6uy}GqEpXIJ-A@%o$F)(z=USA8^ZmAE!g&iuCYt3XN)ocBSSIy%{l6Inv^ZDN% zDETUZ_SP%*^qDIL*GS=PL$dN!wrwfyuIwT5Ep`I0~H#s0_b%T52VU zw@ZHzjjz9ucI4iu<3J&7#(VeQGp~d9_C-^TpGJExHXd>ZQ5N-EG`be_i#bF*t~4T~ zw)R-v!p6 z54uYiIB+!T3Rh>#*!EG&mOpuiI$L}>&eOI4zS=37djLJ&d{Ky&1rp&bo8R? zFH#S9%Q(R3{ruN?XDte_4EQ_1-%#tfqtzQC&|^1I!c&ny2<-WC$?7PuI4J9=FnW9U z9s^C-X%AY!EE!Zb6ObcuiS)EfgwQx{cdy?TWZBn{yzYy(fL=b`j38<4;44xt@qX3Z z3>AMoAK<9Iax(1v0fRj9_tTlC8J+GC4prF6)24UG4H=!RcM{}Mhzj9ai0qmpBlmgV zrxuY?QVU`_I5xnEQcZ?}9$V$I`s}CthbkulBVEVjORnRf`B}fKR1&W5k0o#u_v`A` z_aIyL@;Jr*Psa>;28(!FzpHlWI6;a6s~)I85K8|QD~D0*c<@s9*YZ>UnVUb8;V@=Q2|-Hey3xJ4)wFd&y3#2@w7E zO?#&~0Oo~IK@$OljMJ^te#FaWkTyaMdnu0_tXSCCcxwb9g=SZJAF?JV;bw{MuL$hU z9S7F2R2Fz7^q**bsQ0DISyxFb^&TaO^LNi07Y1(3wpZ$C*8KM;U@xrXxz6)?O3%*zkK_{sy=0K^z(&|h!b{kSrIl65 z!HWInb5}g%-+DsThxpd7qOkjx>deW{`a#dk(An%MF^}!* z(pMh*tm;`S9milNhq-Wg)o*COqPpXdyr{^{HFMEZ=l0P;MQh#tOV(a$M`bGI>%Tm4 z-(L1tT;8q!&#ZHc1Z*lz{eLd3`zDr_jOV+1V-#xCqBjL+)z!BsCCvKuyx@8#qxSID zR$=`M<>`FQj*N?_sh`1_*T%iTsS(dAAYY}3vIwesFw;hcX0K6;vXXc1L$#-*BqPe( zhfS0Q8x>{2eV^OhO;D;!5=+7F2CRg@J7^@Lh@;l|KjnJ5;SsK};_3>(dn^^84-)#4 zMc8zcDVtJx#muHZ^1X2D$Fg!Mpe%M;p@vF4j=7l`VKM6h5*2=WS7@Q zAEQ~nrKOren@&rx$ntag7wnhdy}VPu&c7$1Cy@{%$Tx!i!>1FTG

2q?qkQHq43w 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�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 z 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

;+)osp9>pP#_bQp@xb&rN2SZhT3E`FnW^t-Ah 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

6(QgHO{_u|N1 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�lY4gni~Q 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%0DS2?DZ1jsgawbo;CdWbyfgVyeG3{O!{ zbFOEnXH7<1M50&JjAhBrmUml{j+xTDqsT`ZqQFgg=F7K^j6+Y8>x}VyiKIr~>wgoBF zxz!6D>x`dQf7f&Lt6plO{%S6q>sAjvgy$O%>3p7K*kn~E>jb@5iDqHEuD)Ij4l8J? z@!)(>hN&`1@s?e9=;<%;-oAL@xo1&%>6Bp|RS`LK|6{gyds|x*-hTBL818E2yvmNF ze$hCxWooI>FX^dx<4)ZD;G;-L&7@AvMqcSUq-EwB4QpR^*>_G`m0YMqA7_7Owe@#+ zh+|>8it^BcJ^ZV{xw#)UEX10e5CpCaW1_1L6aB=>+*c)v2JW?os?xzk3 zrhItst(Q=L^Qx7qS3MbsU(K6zk#w!(rev|vJ;zxI&cbz8CRro3I)1{jHs`DS zqVW?JQ?O9HB2=nGlC;b$>f1K*+JNzxLoN=5=ukp)01X7K$P1)A9UmJe_L^b;yeVfQ zPby@&2GT=V{G&tqn!-zt2l+FD?Q z_%_U{(FF&G8x3itWyyw3$fF%vcHs=JoP3Y=>rD*N=A{N9eG((Gtr{1tR#v~X<;c9Y zS7ASeGsWxTF^$RX)xWy;40oG85h_|%oeQZp$ zZBcZq@;aIto6LsQwsdEYzlTewPoTA}4L-y?Tej{XhMPrmV~zDop-ioImrbI*{09ez zaPjhG)U~!^VtSr(#h-RK?dY){jQ2KEws&Khw!n&~58^WmQBb;({ojcEf?~AP)#3EJ zZ;(ES6IJRyJPup-+=;xRB1$;PeM}4>^hxmx<#}s=HZL?ub zi?F3z2=SJjq|TjR-PT1-6N9nOl7)6Zw%ySq(k)6#kPP-hH}!i>!vH#msHaCb2edi0 zb(}D+C3o=}VL&xf$*roKn3z>)Nvql#VUqG~VwC*PXGr!+P8fZyj-gSILw`~jg5`{5Em-=4Y5D0HL7}4=BDEVlfwg;bN z^QEAq%315a;&%l+m6%erVKcUD-+`>W0>me#l9n@(nVp5n;UUykT}N9(Ep@>a+_-e! zw%4$E|GEPYttISKPF|3Y&wn;S_oJ z`sE9_r9}(;J}xQ-13g`M&CQeFsofvJsKAv8Fj+UHwBMaM$CX!sAbV9%4<0_q73#7dr{cZpFeQ<0tw(YwUo44#nF>z)x?P4YUb~e|d=JIJ&UcHPq+O>W` zA;>FUhf(X&zjH_*%O5p6qb*V<$@}x#Fp{7zL!B>N_K zzMj26UX(xG6%b6_$MY!n=I17Cs}u1}R8%O!Ljuk3GdebbxtV!aW%aF`&d&CN(V@Pu z(eV)vZEZF|U7_tT4hc5hz^e;t@|D?EM9+NVP-I}zUt=vH!3P~`$k4+{x2dhGz7bM?La7X_7ePR{ez=_ z^$-8>5A&aW^6})_^0J4TJ3E7C*=g}ia!L}mY~DaRceSm|EdAoyAN|wJUw;0J;pJCO z9c^fCPLPG6u?&xnT-mXGtB3R_JY8>vN5-A|+Sk5@FMRCr$ZKU6A8GIDNg%&^_-ZTD zlsK#{DS^K$s3ADq??+$%`i~d?@{^xUx_IXO$46%-qiow0Vky~?xw-k`i%~Bh|DS&I z+dmlm>Q}$&({}U1zJb2xeYE9$`Uf~q({o5nO{L9R$a7s)fl+DS_>cebKQ0Y4R2-_m zb@jmf(!8f_okIRf&dQ~pP9((lIJX=e`|j7j{&fpDf8nvCo8EoK8K$Bx4U12t?VL{f^QoU*UjFrW zzxz`MjPfAwdVJ)ry>U-Ide=uj|Eb53_rXKOE8=3U^;g5g(V{7LhdaSH`#dEAV^u81Cy!3Ad`g;A_ zJG$W??C+7B9OFy5{?Owuzw(t2gY6$4|LsFT_K!XF=}lLz z-T2a_^Jo6<%7t@>Mg|9heZ0Ip1hfTOt>hTBwZN-DuM9680^f4(=#ZlS=RlBizOb2; zl0cwyf($)g%ijb33J~ zR(3xg4w$8)<9jJk-OIjb`}kmUunKf*#aKF(mVz1e1msoMFWO$4;el@W`#O6-%UPo9 zW%SA6?4n_!rovQdr;xZf8U^0y?dieUlgBaE*JDoQ zcz&;J+a(&o^HU?pNsmWyUIq#avXGn6OFaEx1z4P z%8WYES$J5q1^T zt}ns1O>1!Q;BKU(#3L>`6p>*r%uV+b{2ak4)gwg);PY^;pu0f=vSM(Xolxy8kYC z^1F@}ry_%1;(gJd9h_v9ni5#&PrOchw9(+=UnR{DRyjOE+L1wF4l;H{D{ehGxBgzs zSidF*cOKk>yplpIX{(zm;Xr1f#!UO}X&+Ywk^RVHT4iR=Nwz_y>|K5`N;ogTeBZ&$^LzE?kV zo_)_l6z&8END-tnna>(y9o}qzTBHkiY%j#F&4tLxNT96r#n{A*Iibvn%)^`ydiLsP ztwtXo8^GcW=Zi;hkTV}jNKuf>o3uMK=R8BtRA5L>1_c7dhinWecCAg;E{(%&IjYOl zFa6PH{pCMf4WhoQKi1h*`Od?+htqc(8(ybdh~IU+?yqrIpjI+bi70ZGC?GBQI6gXV z$yZY}sualMBTT+ZH_XpW@Osh-4avp%8I%2Lrvd@u5oa!(Bb3I~u7mgE=u^*7Rt4eZ zUw$8#KX?sGQ)5VsPr?3sAH}XC51^~N8?XK9XSjLsq^-7c(MSxX(bwPGfy(l$=xlAa zpo{t;ryMOKEb=jOfGGIe-O-8|8WvNtv$mJBR@7;gpqzJ;G)}czLM1d?8|qBPNbmJh z@9o^P52;z%kRg#xzDrHdveNP6<74P-Z?E&;_Dz8$t)i0=E*WLgn*<~0tFF~bliN;x zt!UTGh=vVUa6YvssODb|5tYN+xOFcMedI}mCZ?dHtCRZk66z?|Rhl+9ERwRB`iQcs zbo(Amu{|yAZK!K)Lr7%2J@4JuUP8siQ}A4xH(4g9o{W0Y+%#!Pp|q%|7-ZxX*&cYA z)YV#Xq*B0gHtEoc*@CqjZF>?gUw_ifb9n1FKSN(@y#|BeDrP&^o)!&WTdAe zIxYbzG_Vs%E19G%?E@=kx_D1|KpZIaV!Y0Q(F!u{+bDbg)v#q9fgp zU&v8vP92k@Y!KTh9X~ugWKKqHpJ0JW9!?zdMaLRV61bI?57dQh07nO@ld# zv?@3=Czlv48D&?l;#Oq^Hf-F4Lx&EbcufJKBZ4tAK5WS!P0fvnB+cwNa2QExS!ii; zoV^l_>aVXV5a~VV!gL{daMSi(ShsmQCT6B>#e82^H}VUMjV3F}R|6d_9N%hmx3*w_ z^j~rL9BRtT;Jq{nzh%k*6}#r#$m!nIJA%G3CB-en?N5GJz>NKL0_t+G`&hN4nMuy~ z1Top@2zg`NR#Ymnq|5d>?ZLk71^Cn_j$-SUBKu9-wk*w)XE^o>;;2NXO1Ua|krZXy zc+}O^VrJU$(MTq#1iAEVyO7uwqug8;o+>D-R-*Co^8rf2n!&(+f`*v${(PkwD}GF{4hnXcns!xp;Mp3cMC=^T=|a(LQz zyotEd^s%nh6IM?Z&*^&S-p+k>tr9E;M#j)H&~GL9#q$aXslq})a0Kpn;A7ZC`A~iB zD&Bbh$LQ;9HawMERD#Dp`6tLLTuVK83|CIQgB9u%RbJ9VHKI291~B{SH{ERL^Mt;;5p z179aB&d*|apqq3yZ}TT-c5HGM!o!8-J%|&+5l&mEyQd4SZH*`_S&L}uhs(!b!ARqI z+_^Ow2X^KnI8@1-i%5zIMpk+_QsV;<BITpSf%ID2D$4YL_|fS`uY`&5B6GeklGU*8fASs`TlE$CE{sUc2Ev#g{$mx zO`m8&x>T}O^Co&#f}9en6i`w^gr;ACbd8dO!>E5LD}}rC93?F%Y0hX(c#`9)a?L)n z!8x`Q#A+5kG7UZ zR1u3+S6(+eGcq9sv9WO&?Cr!5=T1fVRdO zG|*0!%^VmQgthB8A}&Grq6@d!_6gzz*|kBG1@d_Wa;^r5<;t(!KvQE2X4zI(U^bgyS+t>^Vo~Ss@UW{kOvT%Pm=t&3g_ah%)}h z<+G?D4^EIam*ytP1Ju791II5y{Y{?K%EipWQrva_V+alo!SQ!~i*jB!P5GoTF;P8Y}73oAsXd-(Wc}7Asrbn%TDvedeYAQk3DHs z1v)!AETH4(4#55+_hQ4A-PF%1+oXN$s_rT0KwSX@z@FTQjDp&kb914m20KkMNMT zYX~4Vw8Yp|UyJ%K|IEif|ChEhd2W6h5pi*rxHmV_i>c0P)(u=rswufWCKso8y z`LdH_6FLdpY8=Ov&$05|rVAZ~Ps$ff>KIrsUgDfI9hEyS3cA+Jf_ zEK;T`X^7*hMyeg^i{z)qR&9~o(G~$p{7|JdB_wu`kEc0TrQ3E`Qt`UY+suX<(ZUkS zMB&Edm_)qtPd~)T_g;e%)^umx^R`b`V`F%nhp>baxFqYeU6=4yP*9jvhu}jILA!5s zU;sC-TtE#m<|wgz(UzUqx@QjuWX8eQq&waf_dWdu>aHU={@Y*SS3i3e!<26}ewb%~-o-D+&tMVudu_RCNV6FJC|< z+tEl|KhJwcQ3n@N&#&9E1G#IcW2kdAmsB!_4@Iwze@4%7u#_Fv2GNT2sdE^8YMza{ ze((6bbN;_M{>AhDsKfE!u;FaF!x!>-3=9lXo=sRHt8BpE_4{8Q>~gSHwv*NrgjE$C zKVP?PStMCDA=`_(OL$3%p{ib{TdA^=^o+I-&@5`7c=@)pJ&6*r#Pie?9Aet-+S@%W zbaftxw|g^2hlbJKCV4)KiTM@sVx$MLgU8&=Bu1^ozLF3Y$aj3^+!QLVRe99a zwR)_0`*@EG4@WgN)}+oaOa*jwcVR?$dxo^v+K%+BOe7{IFMD{nUI~vpe|f4uEUc;K z)?+obwW-sK3m&!zj{0`@?(GQW*et{M#uEHq)+*;uKk`s=eZ|cOho>il$2c#-Tp2m( z*sx)pFhY~t+xPizeD|lbfA_^thhIH^{K2Nqu7o-EUCG4p$w@0awr!zE@?7!oa=#i8 z6@OJz_l1vsB(J>e>XXe~-Jx21CO=<(ZYuKf3ps`Xm(#OWe)F}jJ-7Uq&pf^P%m;6O z?0R*bYm#=57j;!sd=$^ir{KeYr3! z4J*IU7_Hv&4?6zjiD#2;TzdbndVAXoR2f1EtXjgKn#y)AErl+72A+TR`#-OC&i?TD z@c6@yzx>O;{4m)5;qhNTZnU(7*3{Je`Nf8U>=+O_PX?L}fnEb6{7%?N_Z6g=qViStXn15S>T0V@c}*e;TjO*r=Sj_AqfWF)e`1XQ>3|?NVX_%5I+1)vZ!^H!w0VjH&5)w!wpd zgbyHi(dum?6t<7XH35&x534k8D}n0@!Ae+w55@*s_RY&a_5*mY%-J5pT1BRWhmm1{sR_(ZjUy>O3fnesK~`>#1uA;k zzL>}eB*(_mz}k%H*f{jl@K>2al`;+rjl#&t7@8XE&FNdTb_4Qhtb`DJk53SAsTAt! zcsk%%<3qS-VPZf(G!Mm4?(xsRbHD z3$rwM2?WD~d=M6<>II}L-yp>0Zi9C~6r1fBi0XoZni0{F?0*D-T_47VhtSe7NFb`I zT1J>35EJTcj%qmxsyfC{-Oz@Xx*9XUiInXgqPW;VZ)7I8vB36p^$`Gb?yUqj$3e7W zdoA+w0{k%R5x_YEv_EZnX148nYe9>JX}FiQckh&J7Nb=;*Tg5&v#J2GY);K(PZxn( zsO>*L!#*b^#vvgg3Bfc(bFy*};r77faF5NCg6-1;=tCn~u}=BG)-HMZljddkDd?gM zSAS&Y7h}u5JK;&dU3K#+RO)kncE$j`IUzV+GT_Z&p~C>YV`Rt?W{z>bw{mG3K#rOE zuWM;H!i$D$dR#aT?%jet`*)l3LE=H@>n@@m1;6}UfxI<88SD7i_}zB$>X5N6FsRIF z1qyT%ClO@XGGWyr3xxBU5E>e3>B$7FS;(P55I_*CmGkB}pI_t{Iu26ZUw@6hbtkr6 zwEa7$IQyyR%c#}wqG|o#91_-oW#p%X;qJX9NKcJ~m){D~GUE{w7lror9`p~4(GZe> zqH&=NV*jj!EN?64q{=_bp{vi4;XyQL{LCRIV|-y*FFuFAseS6A^^a|Gf?je&YPAbx z8oxKkqi)1Qe@x!;jlQwxvCRs$Np{)&*hk4reOB9SEP0}wpXT&XKY5)qG7c@+{R#Fh zAmPK_bNnVIC(+l}X8}6N1KnHhH#78jpQQyF;0r1zPyQ6GOZf7BmMEcTuO12r7Zh*6 zy&wIwm9RU1;VfQx?%U{YyoCTyAMC#49z6W{KZkEn7~Xp21)O^0Mcev9`;;r#sXeH} z!j+}X`6F$q#9nuMla*ZWYHzibtSVs`NBO7nq+=t)7#USzCiC749KVuv8?k=F7PRv7jSJ_k z>|`s?*XlTxa4ad^g#0z7w#WR?&;aFgF0v>Cn(OND{#&nNQF3-+23iF#r%&1WGgih^ zE3``1t>XlGm_sxxCyz2=2EDz#wo+=>fkWu%?6k7Ae&k`5q?2xTbfc&7*&^puPI^td zrcgRk4kkGa<=7IDD99mMq+qOmQ!rk0u99`40{(<4>ia3`1j7})C@ZTFk3RhjZnZYx z*WdpZsxP0z%h{wrf1>4N1n1W>rJFTm3Wn$(!2);_+xEp z5ki84C}SchcvZUCW%r{nGMaaAq7eqgg2VAD>8ouQcOkRrIyip)fbwk{J}JQ{tA&uuE?0 z*^=nm8&=5#ojtvXPtL}!gZE)zXb6?pE+8)>)v60<75NzHPdUW)TqHkO)4wu-ED7bu_B+J{04}!*GICFY)4wX1($rjV(J7S(L%5*t@ z#V5-ieu#`qB*w@&czl{&%#n)?8kFA`#7DBmV1 z$JIRP9AdqwNXpkt8@J%#U}6#CKK}ERUSj`MPFs8LceAgmzTn85e|cCZcsSTj{kpBs zHD7vZfA}=Yh=71#OHLUW>a#N1;nWqPMbWeLqAKAC=j%J+BRMcNUUK%Uy}G9o%bWxy zv5i)~FY>+9Eo)rS|v=vKz{r&9QusL6K56y>G2Ip_siU*(kQ-l)Fzxn)+apm;;7U&D5EV%Rj zNAM8!?I?BSu{WMae@iWOsgmf}X39!ENl938+t{+J@u{+C7^$Z?hntlC2~wZ2r`T)v=KycR>MF(uw9>{n5)R7>S-Z|2kQ? z#@fL)b#=C)wx))2B}enD*JmwoptitvZ`ipX8)<{KG}PhB zsrP9&Od72_wB}{oS+q9X!aTqCcd2ye0(DB4CF$H=ohvzLl@+XKvJ;5$NDHzht4GxRKzIz_Q zy^nqhT|KS%`S<<u^4ee+-*aPfd*)2AiRc#x5Wuuh`mr`qMcqZ&rAw%5Xo7!e zj3sD>1^MIH`|o0g_TlDjJ51M4k`IT8mzwG-t;F?6ZzndD6k_-G4Tz2OM~L?l+&-!x zG;jDqcze^{!`OAlVRW;f$B2P@iM_K|M9kYaQE4 zhY~%=J-B)GEIxSaHRIK7+qNSu%8d-y074e(;941@EkxR-z7$^@F3@AxUp-H4b!<${ z0uN#pnZ#4$^Jr}BLu>CeX5j?bw545Z{}g7Hi7C{6^_$N(8=8t#m2KPsq14~WRwe5E zu{UiSrZMV_Y+{#`H7B_ybwtDnu^p+k-5 zS31x1*Xp&J6T8+<(S^>~YTPUtbCpgd|FlSCkup(wS*HflcG`USUL4>nllmtmBM0d@ z1t?gvmbOF$nrexwc#qhKNSr*uL|XUwir5M2Rz$0x!0BwY#DiGH+rA|S*c5uB4PyYIk`y?0>!CIz|kEIDp+d=g=_ zF_jdWMGUD#@p0<)&0Dr3hq(08>C?1RCOLjeB=JW1rBgWj!RuB@#lZ(0Z_^(=M4uPiGG% zsbl6>d<-iHug#7RQ@=^4aKzX~B|`=HX^T_Z8|*_sNCfZeCJj^P1UQQv#G6`FGDKa} z)zyc9u!x1|*wj~|qV|`M^$myKymIE@it3s~HCPoF1H(gCw(Z!8Q2#)Fc3&JGn|VV) z=O>OHO}csg>O&qrKEd)ksG?nVZWh+BFNHUJYR8tAU;6&{pPT){Qy)*hdhX0e8oN58 z7dUlV$dHhhy0Ue{2F|bdinm|zi{Jd#cPl8rJo@UYbFW>!{BY+$f1ng$RCFK;a?`9j zjIVF->53Y>^W1aKEr0pbPi>(rda!3;&~sM(q2A5O%|vca4k^H^!^^|}=ihkt2NP=N zpFZ(WQg3_p-5#EcelCtrSN||#(=(8fmCon8u6+CZ&%O55zxkWMrkj@^YOJrw@o{<5 zruDYO7uk+sA(6`qiz}xF#^%rH*KK9REcWu3v+K>`bv> zuPY?t2jBeWv!kDS=&pmcx32D=Us)i8l+N+C%8yae3B;h@6;vOuJ^SoWtTerjC+DpU2K07@(7wGNh>lYg6id&kQC|p|d?)vgyf9+~?bo6r5%?q2Zm0dsBKQ`qnKOjXB z)^999PG&l3Zlxx&&ijS0v7M{8{DY1!KK@w#iDPelk=Q)gpY*S!Lv5{_LRq-D!bbar zH$D5kpPl;J*S_|zGv9~DhsW<79|qe$JpONog#5a@@AiM?%4UkYA97jGYx zP?upLV{XD$<`k{n3||Vo?(PnZYX3$8JcCKR#xf}ho}{E@;5m*C-EVmn+$uwlvRiGk z6;b@gX|f$^mke@&a0L$1DERl>`zR9gOYzoQ&!hUx+enR%wP2<8c@nrVaLMPYk$UcJ zLrYx}I?zA8HwPEb^WlBvV-~pAs`*I*o2ck`E4%JRfSj9GjC?+?udkcUTry)`AVn)< zHIf1`@$vDtO7hx`>u7FkLw|2Sv`4D*JD;z1Q3r(5m|Uh2qzvc{YuDI{c7;7X=O+>D zGl!YcP8ypd79`gSa4Q4HzH4>iGK~cR(U8zk1Ox}8yQ34+V-vP|Qx3}T@CZ|mY3aF0 zPtUTln;OpioIGUb6(A}h9?Jwg<=4wG)Z5Fso3l2@B_^X~V3^9!+#Yf)Eh5;ZlKB3-UgPeK*1kz}ceWroHke~G zMo>47rD+<3(-Z8=lC6}QCFq}-oI-#PTgT^yxqS#gNVA@t4WB?nq^{$iXsA@JkcNyf z1^;HJMhGrDusG3&sj*44v<(`FRsRBfftavW=a+{s24;LPI_qmCag~v5Ae($=`^>vM zkRGd5YK!O|oW|U&0upjMaeO#7;sLGxo?7<7qF*E;V-t}|W2SJ^PQ<5War`_mJkSU4 zxgiAkvTYng@qqYL^rV%y{^Y@s;1C+r1X(n)H4}*maoE0nJI67D^f`~~m(L?$Wfm?^ ztteZ@JTIOgs2yV8>p4toYX**)UCY~vwzaC@wrrHcN_>9%H_fHwqJFm(?;>rs z)fWpWPLCj^PGM|f7=a-HXlw7l`|qDZZx89o!Euk&?(jfssg$4x8nRk~UZ zIwc6$*h>cRTs_wu%>1yhAcv-sV@W}LmI9nsGF}bkp?M1rkHmeCK8=Sy|78r4m!Es~ zA8_;RyH>VTI^dpge!Q({(&kE2 zW$ggmJ`^tetHdG&2UEy<+T(LtS>!HX#3UplBewt<`D>6-P>h(Ec-w%t7{4}mAy%`*(y-*Vn9TkJVo^~tq+)lZwKy`IZ75VHK zhNxRq4lp$(9ffO3;pOLVK~!zQp+JaMuTE-34GFNfqYHHnb?9hm#Kgpm1>3d4Rx5dx zXw%!%YkTviQl6G<+JWND+bI9nP?mu*Zh|aFd9gYtqQ6DTXR9or!DqXjBn$Emg|TSl z_CKvcv^^eGiG#ePporw29DfQL=(;fK&BBe_F*ZpIz#D3HwjA@?UsQX;M@B{BuKOOv znspm&&&uDv@&YQ$%5dZIMYPx7vZM$u5o9O$7!zTFqghm6cjuk&|C+$qZ3ZaX9_n8@O@tjPX=lY8DPY_!vT?;_>#Iui)70 zFJfe%*W{TTRoiwSz}8*+m6cA}H;j&^deq;%j=CFH(AU{!&tJE74>s=FhvL%pmY6g+ z)Q|UHc^<87hvZ*w@md@tM%lLSZqDHpP91v(r`~uO?&T>Q+@lrpF%&L7I{AS3sBml~X;6Q)m(Qr?Uk3%GBwY{@LUzs&XzF_eauo{C_zb1B9&Iw%D@TgT{#5@iU0bkyZXC2`TdaTIZM`&tmgep zX7MFFU^FHoVP}kv_}9S;LRfMZErRNTx@QKhO-8QQ>{U~oJ=#38~9DX0iX&_aWTjhZjq!=2TM@@Ar8k+lfFE7MU zhiZ$XjPxYrXC)#r!k_Yg8SbD+(t5H5T2-!HD_BE~UO@xL%~ zdRivO#S=ZfU6w2(nX0V>!ibmU)KkC3=L%M-s)+Qdf zUEdx%2NUu;j;Gq8`B5-Mhh1kf*y)GvBFrNlF55}})C&h6@LFEy^hNU{e);FaWHy;g z&e9R`VozVM1pu^SPpd*LVS?kb``$;a5==)+J>K}mchO1trsrlAtieY={UvPOcL{qPf*Cch~WXA}95%!hYgeF051)mEnW z(z#Q{j|oYs7#!$F4Q+?1v0)n@;RD$M8spiiDJ+q$t)Cno*{d2;XB_lK&G0l`rIp{3 z4O+FU4ZJ@giUF}U!*=srZW2lFexahGwhl1Qh#76p(FJ>)BXe(uPOU|iKksQl% z3ZK2vijGMa4&L{17$vOmvMWXK3EnGfz z43i`MoIB2q8f(1c(5RIp=JT|@lWb${^{>6MwU4rbn3{jdQJrr|?Y#DOr5Me%=2ddj zg6bS|*&>F2d7Z{c`!#Uq zqYolFF#)sWU2SX9)=*FSo42H~+VUH?c=A1~79+dSSsAS42ik4yv*uQELdg&cd~2^? zCGt3&?1^;Rx{rV28RDl+Xl!ak9Q9;KP%w_a{W^7CAnv*EVKi0Uz-uo&hijM4nauYg z-DIy>gUy_SoT3s$Q{VV=-WEtx;tBOx2`#F;q!RSnPE5gNm6I3kigHZeP=*+jlHWu_ zW;2SN_&=jA(JK3(L;U3_nJQk^fbzY`b2T7`Iw7g+@qCB`e6RZo*o zptXVceW(WkzNFL9KDdXQ5Ijbp?P z((cth-6}t=#Nn#)>sIDEB|8tBH}5e!tf8TXz0mlm|Mu1n$vfR!?KFALzv5jxG+vU2 z{G%bav6ehj2iOnEeaS_QyZ-94V_Wi{eJ{EvM&>__ujdM7s1kPM`v{H1PV#qZN)lRI z+fZFygC^pzUea$|d@}M1OVQcVfLEXY8LnSAfv(mDG|*1$q^+R)Dp6CmsC3p0^}Ujt zZqu%KL-Q{i*r63w_FBYU4}AiMKk{*878Tnb+bXZE#WGW4Ll%6mzInrvl!p2TFvBsu zboxD0TQ$aD?B2D%X--}k1prxRr%Ff^S#Aop2Xa0opAe4P;wd<7N zt7@ClglR(y2#FH*L2ho|xDaPQ9v~%<($f1*G%e5!3G-j_OoGf}{Tw zKy{AWfB(lge2AHaO`SgIB^uUS4XEh-_UHeykH3GYpIX$U7470}=}6)60AgQlwV~~4 zR;YVbg=UtrK*@TlmdBw~$#AQJqcNQ!_8BIYAE(Y1t?(30w6(=5#PB7ZD8KInv4~`* z^p@;**_5g->*?u3TQt`2#LUDvMurAR|Kt(Md6P@*(CzI)RZ(SQ`wSZ$1(<`3yS$TyorX;3SPxRLZpFey0XiIx%()`MbhZgQd#YTJV*s;aK zt!j0i?lT3&>)uhx_fI}@wB+)oGYDkQAHVh8ny-HKs~)Yl%G0iuU45W$ zd?e7z?SY(>7^ElD21?DM3~?VXZ5uf8wHIGpdFJDftvz$%{d)!`COyTasw$_-XIbeA zb}zTNe4~HypT702Y06QLp{DZUzRv1fLRvb-5k_U2G$P3^Ivh0t17ovOGR$>=-=%BA@+d|L)%f_EeQUcH!#f!jb7& z%ZE}0)WWqz$VyA*SbKH51H*s*pa1i>X1l7&K3-jYW5e9iyoajxcv3d0@?um}JoTN& z^^nEjH~-W3zGrdBk)GDH<8QwDcNfdb(&SU_?CC>floktwdCf1(_4x${9*>Dho~tf9 zyRMSqBi z=d%KP0zL-54CM1yz63bUVL-5`a(JmZc}SzsRR-zCZF`WhrW9iYd~Gxsr)Zq#7p+4U z4b;K05i{nerzgx9(LLpCmGLEIFQ6@BU0~CkN(5C3J{puaK(5vah&#?BfdQ>@Ny^B@ z#+?VT<-k3d^YF%7zxfI3E*?iH0f|3j6Fyqjds-G)CiMA`u$khafj- zJPHgec%@^R<3i(hLM1lGEW1$-b8|owMD+CbvOWFSv~@q+VKHdy>aq;PnW;Gf;bC;N zHJf8PJuQz4ZJA&v0EtOS@TNgJO(R1qgql0LFg!Mei3JbLt@scmSK7XDt+hAJDWg)X zVc}s&&nvKf7`r&H*Uq2B#9*KB8|O+6KqruFM5mGE9LPB-2a?S_KkH>wC)_84m%k}^ zEFkSmg|3pvVFX!4g==jU&0zCQcv%Tl54iX_I^50sE)lqTBRoD035oH%j&w6Wfw}2% z%ui3*{CfMkIX<8vGK)5qKA)el)h@yQUWkqeG;m7rg|O6Ocm+k#xS)}{I7{$1jj0LF z{b&~^2D-39aH#-Mo0Vr5A1T=GK>(@M%9D#L(-BI6^B&&!Mt zqG7dyE*iblvjiAKzA_@^;8-Dm)?Tu4sU=vm|0p7oGA%%(RR&iso<|T33KOrL^Doj#6wOHUn`TmEwN#a{HgYb zP$;=6D}cY~8pp9O-qMx?I^<}vpu5`3_mZXN$aQ|@J>=-%eDHiZI5ZAU zN1Q|`IYOL$FP-n4qy}ehRH|9uY20`NbFOKw)hN;As0_WK5loCtTN^AO$jhZy6rh!k zS)5fFOzkN)$M1D(-bZB}*q7T!P*5n=ZrXwSKmIv{#HZrDcV5H0&;JO+9nI!&*mL9| z?0?`tgB&Q)fG7>j#-auPJjnRvA zDtZ6 zD=aZ*t}=CV3yQ4FvbIXdU%Lr~r5li6vH?j+X&9jVog5v(<}KT7Z`m2jJL#Ozum}r& z$~heymjF-pyQ{Me@Z<`TK8r*-^QMdy_FiPXSK^0Si z!>ONQQE~AMdRrSYNqy_@4#J`PAHjhK9z+VqqOG|RBYiz42NXz`b3jJFg06D9sm*d8 zXdJbttEz8Qa*pJTQuUOU`dVDQa0U~j11KyhMe+J=*mvYX%#mK-dHI(pzi<-E3PQ6_ z($N8YhLWCk9l95LkK9k=z6YJQN{lj%d@cvrBI&uatp(j3N}8y~@poUxdFo76Owh{5 zdmjC`?J2I+X{V08fs=2&gyxDe#0Gd`T|qh`Ljw(G^!N3XS7zYn?T>`~?Qo~8Lr`)t z-0lEODR8r-vdtW2>L)p2r-=MJ`-aih)@Ff61wQ2{yv4qrJ9`czBg9~9Hsj8R9!FMD zDce?SdwwfnB!)Pqx3k@HtFlva zknBaBDrX60h@X-!L_u1Wt(B?TyKm0sM)M?`W#uG!Sa4lDs&h$SCQA7~B~Hj;W%`qJ zBKlJs{K?;Z8oYUbmHih#$`O^EmW_yr7}TnS?X?RWBkJ>*ctsX0@UeO4Uh?=NdOKPS zmnZ?#0?@p#_6t`+!1TnV(X`%c)qPugD=u8PjL_(0tlhd7(Ftk9Lr(U8Vtk^lmQs78 zV`AXvc3Z`tWADC$#>PfOD|zJbLG0VN57~LS@b+_IWOUR57qxW_xPJW_&J!07506>J zh>GiF=%}xOi+xgm)eiBU+Ngc?BPbVc-MWd3=g(R~L*d#|{i5xrq7KUKHdU|@%-`{6ROifJ< zmS~_PScl%0O^%yR{x1%;RC>x0;p!$r>j?iEnwnC0SUT zov~IxQ*GCMbleWUSXX(D1@3u8?;z6ztr)@*I8LtVv9zF$Hbb$m!n2Bw#T zFfpf~`U+IWQ?%*?bG*^gIgU$J!|;n)k1hKivMpNPd-Zu-eCL@5oqfhow0ZMmE{ab5uPkI3U2}reuQX zDJMM@M-Jaf3_>0l8KN91M?_p2)@<2{`1DNTjLj(CycK!*YmrRsH9bxILz`rgyk>OI z)&zw`VcXujNH3qWp!qArX1$%Q_~@se!MgRE&`sSaxvhSwqK*QtnopIWmHdz#uob+V z`+&e8tlPc^hweT~o#bJq+=WRrR?<}(CnfO-KX5W_yo}e_ckz=*L);)97wsgaXXDO$ zAF@RBi|5Z!RtKP{ppd@-mDjG=R$o&S!|>$TxPl`PXNiq#Ff`DQ_g;UQHh!liv?{q& z<5qF)GR~d;!1nS#aO57ih&4tiGveaok(!cb_)>j{j*TTg@yG1g2+o{4i(ulzgLmGA zJ$v?}q@;v0tQTchE>j0k-gvpKB1k>4NzJWVTQRHWT{(Rm)z>f5_MEjKfCXFCSMr4_ zxwO%a=4C6b6HwKX26mhxy0;n4{={Lo|AdGIdy2L+>7Tj)`S#Kp%@ z_xU3*kotl;Mcb=fzkG^zJm;VH+&~&hCO#kP>cYiS$E`ov`Nb$)w*`5`(s>0X2ni2! zWGAt^0vW)5)EBvE_ySN}5^!!fzNg_V8HzdFZWzxP>xbszDm{lG(e@{3=E zCzJ>!n@2${1*{gA=Iyi10WVPCi?fLUuSM)Hj=;vGWyA-PrB3W%ZfNd~- zw83-u(KOQUjT8T8zw0->)o)H!EXQgWp3{EkJ_HknEp-om=h&;p(e}^o&%eJ5#`B&^ z!kMSe&=v*_H8mU~AH>HeQ1?XeIm>8mZN|KhC+@i8AiQa7R#NYX{d{QAvQpCE|6Bt22HkEBRMC#*!QK zHR)YrZq*0m6X0R(lfL2ggFPK6zj6sx*RP=A)-CiB9}iMC-Z*~_r;ojfj@BmQ8PiYf zl<1Oo=h$-orPC)y(9u|fO3I`P-lwIx8KiV1WaOfF<2J0>v<;cr1(tjuzn*+aN`BB` z^rN=(uLXkHMzzbqAZ#n?z@d#*CS0YHKkWEp&i(Hn4i>%r(!HIR@V3TN^rfF{%>R`` z<0xIH$}-bh2~OEOJFBg7oKo@%f?Hw~@s6rH$@k-SJKG%i`UmoPs+O>bfx!WzVGfa1 z7;$u`5=Z1`^+jNSsznjAO^y@03|iu=w)~K65MSw;!bD-=G1hMR!7bsR-#dEI!+1v( zZajzs)lOAdQKCptpbKl)7GUd^QY0nBkS3e0lH>H;5?ublY-f=1)Wpaz`!K_M3IB17 z_WrG@7|9nEO&es_j%{#J&wKg?z7ZA?dsgH8=_ek#>*~exhZ;LOya%X@=Sg#U zg*hn9&u3da%jW$S-hB4ipDheD)NZS4V*!y-0a%xpfT-{&L?>o)?A`BtFgR%e?@vE`&$_c`PT$=> zG3mL?2?`1dz?wCMNKHy69eLERxV?Y<&2N5xmiP4StGj$;sH<*|m*(#8LHrdB@%(W$O2T`0LNP ztFBzU`^vSl{HcW%Tm3J8*yinY+r0yS(iFH(q<`>A}e<@6oYwOVUcsN<(ybC|T8iG&Csc)zIjK z>ADLi_tiEu?Qw;M`DlyMCDP``?HhkN+_NZ9TiEvV8Nob7$`F85wg8 zjZSckh|7}Vv9_exXw%y_{Qb~~*#Ac>+gDb8<5hd5yL6~`31OjeJjwVvu^*@Az*9Zn(sI7*o*ah4#E{0f&RWeG}P5v;4LCL z7Q>@MH1L+qc~)IrfuMju6qas8T5bW2s6ZOF(^S~AG@Pd_m?K=Ll}>t!+9W5O%3W*E z7a2-wwE839=5_~}QChrt7dG#`2RWsiG0QfceeZRgd-o*_5CAIhDdis#9&T+mhZx7< zwt=KWM!)){?-bCIp(cR8e!~vi2Y8(AYaxhEq#|3pc^eV13nK%AG-f(%rT$=FKguqg zLG_J`@TXC#J$n_*m7_tf5P=yvptKKmOLMDbH>>=VGGA3zP>wqpDViVkOd0mt-`&S^ z83DdNn3XT>}RD2MO2%;Taf$ zsF);#N5xuJV?$#j>S`*`SX%{mfG;A#LQz_}{&&uC?bn%>m511j9K@#=5Ns{u{HYI6 zfAb2K`HUqRb3wtOC@S5A?Fa8gcw91W(zv;N;vEY{`})#&T^(PCRvZJ?5;pj~LrWZc zSri(3elI5>&oH{PgO}?n-6qiGORzbPw&pra^mk%qdI&Q#EcA>Jw>R7GB3P8+;00Gi z0^FhDSW+oJf=wAO+Ed=s%Z~`tSv9Pc>RMT+K!sMjMh5#LJUqa%`Bpr95E_>W?|^W& zo8vk^j;YaZ8aX|fogCx)5zduX-Y%OHS*sG%Y+_qPhX~+`$2<^`l#AH3Y=R$OGu9MX z_4Z=l*{dL5PvobD5%eshy^qGz^r9L5GD{VFvOU}RH!?XN8Cwpctl}naUOsF4_xH3l zkor~mfZ*6;0nGlJO+;ayG9@>xC zlqAXlt=^d@T`$<4?_So@;?V(vx^Z^JnBlqvD_G zkuxB}O+V;8|0#$ppl=47jUXwH=bP;0O9n=8L^v`t(~y^!h4i!}1i48|G<21h%P0k`CGZiiZ?Eaxi8qEv5){(#B z3)y5ETgk(T$q~}rG=C!<@m_%eD*vUnD%c^P49B1EEzqtmvTwH?yUxlg0qG^SQHHew zSZtfF<@a(NXyPGga5<`)*jb0r3ecDN9WhXXn-2>miP;_^(Pm<9bLrVsdc}bemd(o8WMYL(o4$fC( zR6Ghe58HMhL~4E^iq>z&`t7^1#NYclK4X2IXr=CHZ>U92YZG-)0M>8YW9KENX7HMP zj+q-L-+zb#q#uiJK=-`~y-KxU;Kr87s z5PsBQy_}1_Atg*KAe6K$C$!3=hEu;6ZrqFD=tR*RPrL$O~ER$Z5epYgViwdoOpx^d4)`|g>Lwu&TPf^0t z+|(!%VU5fUxKyuMuA=fk*pYijE|^ z^_{lu5bI0MIp0uL@I0;ZkwZwUTowFSrk?O3t!&?S7)Ks_-01I>U;PZ7?aes)=*Mu! zp?j=U{n-!Rp+|7(<&l_7-RJ@oKH*nh{J z$RM5y3XdR7V$|;WV z^4u8wJ!d$6!U#^ltFpcwUBhyFYHzzV%E(9yg!XiIQ%_BrY}Oo^6V;g#n@e45!A(Ac z;?a^n{D^TPBEz(b0yFdEIlhL7_gmWsaJ{Yt4IO>fN3}_nMjU#%tt;7A%KnbQNt8E^ z;#M0m*gPy@M;Jx>Db8{1weMxw<%?)(ZMJ9Y5Y5=OO}hDi^+AO`Tdo5b<^|n1DhqHq@90$5^h-4r6 zme-7oPO@KvnBke^_Sm6Yh9Hknks?ziO>864jjH4 z)m2w;_MKNTJJL^`cUyluoM}3r4PRW4e)n|jf&+(be_th)Nw+JJuA6ik8=s0o>aD2w z1WWu>8QC_{@#vsVbW!nO> z*WZJ@lI>{gXv6Ej{t-qRFW~T|R2Ral7$wRf?0!92M%&Gm;wRiaK)q0l9Ng$^RS)v7#k;1F|eNOYw z`-rHN2&0aQ4y?b#-iGfqH^fu=PBw-TOi6gQhp{lewnor4Il|=!4-g0V z{~onBuM(piz@dBYM`&;mdDvyE?!4}BDcB^z+{ z{5f2?aLQKeiO&~^cat)*QMhg^@=G=$r)VvL!y+s(N~QFrYs9mn4tAI?1z3HNnw4vG zb^3$15gZ(b(sf&K!+nANg$xNzmK|O7-KUFXy$!9Xt$Ma*g@Kgz|Bi%XscIRU`={a!EnvF_0f1-@=Qs? z9vGjPqYW{E`uY}hb#*>=F`^Gm%Su8p`wK=ebTCF*`}!&znkCDp)4D zpmsVu==TXyauv4G@{wkb=|_ClX}2I0i34U`8_5z&|$9>$5ce`{3{voo`aeJ|s^ z*M5UzufJpo96^-HnYqQJpLt{#6l34+-L~b$iFe<^71C`Rb?ge;5ucPoe6}4Mw(YiU zp5$LylpG{>&^W5!k{99^eqrOOm*__0qsHssZ9C4!jTf10AzxZzG=Gy_Y1i_z{69(_ zQ6(K)K~K6-MHb;?&4ci%lVrAN2|>DtpC>VWN(dg@pM}UU>S3RGo(30rqTD7grR>LOa44hOrDk;hti@V`1?}Vl6Hmj zB>yb<%zFq&3->GFqnn6lvq=luHcDFv%#&BAD8Jg88fjnE+qO{(PNrt$P+rIV*inQv4J{F+kt8Ix{^EV zDEDq$K99zRCU{bp<*naDKH7-_$|zOpICbnbjE)gQYm7K2+M8Pb648~ff|UGcNe6m~ z#yotn`ObUr^ymH*kwI>pefJI9YOAiQ(iZ-Ngajk2qy!}@VNE6E;~$7Mw7KdkuA!!` z#?c*=3&H?4P@E5&2a!7aCY&G}T<^uWq2#+n$|Y}(wZ>8NCAv3Bp~6ASqjR`0G;fE~T z+lM0y{iMC*0qV<6%u?34733#|kf55T{umh<<^71ugM(@JDv{aK0{)ha zOFGcF24D%L=`L)|^GANHH*x70y80*BRz5Q<3dwQFOSIp%oIQQ!)34N%A@^e+0Jtp&fYOLJL{>fU&10o zP_m}TlDU_cJSryV{9pXu_rACAmCt_G)!khFk>Q@Eb>4oSp6XBk=nP`Wv#A-`WH6r> zzWu$QURSVvyubUN#@cJS;yURhRnE;TT0{FecyZao{o+4<=f{*Tk-^{u66o_Qv4ptj=4(`Qd^_8|_4)ap*KzpL zg^T-X;d;*scThg4Qb18rf!QfOeqnEhMaG?9z2px*D8oGKuXJsn7;O57rNyy_R~BaO zm>e6tb8dEd=F5Ne)r#+Y=R5y8BY$}O|Ml_YlTUsaZ2w>NAoF|e-n~2GN=3y(CypQc zKhB*x@$ksNK%_UVFgYCvl^o-Y!shl0M`bOUV@5()KkzUkh<~LtL}vS<4#;We;#Eg-$QP0q3tnSTYC#NWtWkimVx^odlKQvX;w;3PG@g| z|A?qKq!IL{UnK&LD`FDia7Un+hA2d(1s^ADk+5{@Jqcga}=C|{KmgahtT|9;6svBr)ZMJfkg&Wo*g~qf38{N$f=xVCP908-t&GyQO z)jer=`rC>f9|JTRd;x_ig2)kqBL#H?9H*v6_*}w#Hp{X|+1_XxJ_!ji$jeGYTx_&C z)1zpt2Zx4o{0Wda4+#-aimjzdJ_YmOit8g?psBR_Ul^P(@6`LD52Kv3ha zZw(~#jX4;dDZ;XbhBP-mI)urgF2sbm*>=s{GGfAl5EUi|-2#CW@97@_H)+M!hvyK8 z2l2i3t`Cbyppg`;kg_=*`q^$dSUfrZK`w8^L0G?hhWE5>9n483z58gmuYoj@^5)zZK@5p@!i%mq?mGh{p ztbm*IrP8jU1XY@Qt#~mLkMGSm)BQ=e-Xu03Pr^)(C4~5S;NY%}c;e9qkXu}&W$wn0 zy55&EK>JcDcyDDO^-?g02EVUgpa_Niqs-!%m@JcA;!8%WWS;%TfA*f|m?OoUK3YMv z8su4JA1CmvcJge#m(gTFYRV8L`RF`P-cNL`QeN7#J0~a0UMi8RfS>lw)(R}gF|L2c zq1J!Vx^sViTwbsMpEvKVy)%h=$uy*=d7!eU8J+#Z{Or%M_qM)>4vcqnFaDjT%+Oxq zx@#DXZrFJSM+3_NgTGd7fFlLv#zlRg+68E2nJN4!>L&-?lZFgZ1Aye|2x zXIfB#@=#(x6;9?SM|f|}31tT#ibW-`=$Sn9JQ-M9cOS;xkADjOQ89S=g`eZp%fG_x z#IQN^_aFTj<FL1>&wUp+PN|%{j7sgNw}PMm@>)bBBEv(>@u}63lKE3KS{1Yo zA>C$ECT`k!0QsdG5y0nFkl%)TI}je^Z)Gx7vQK-=YmdWB%74wz&C924gNBUkJVeIE zA~Pck$;l}g7#Xtt=M+GXNk~R|MlP~)3oLl+MLtiaVWhH|1O43?>F>qZ-~hTiS}h@A zfJUhH99N)AbgGq~LBTY8O}qmuX+PrPrX-&LkEBc~9D z9(Ww#yysi5{|0BMZx+W#5D^h>`Z6;sA8R*lwX*ERn|9dB?t$Je$_qK>96h205%IPh z5n7cdU9ZEB^D)@pha1<+(A?C3+Vab^$R}(S`y(IyEDB4vqM@;tKZ~dOtIN?v9CGo>1=O{4;Z|)6 zw6HxfA)dP4hq`|dz2r3?zaV55mLQEZ8Wo#>^z0&RBk#CFqj2WL2d4Lmi`QX(aSq4d zdmT3}oWX)h%aYGEHVV{f)kA1#kOf$^x>qt?Jgd@=+D~tQG^08g#0B#! z=5AW*=9GwWdWb9$E>g;4t}Mun%3`-L@jTn|##L(qzBM z$>#*(qzC`oX7KH~72V01uKj{FPg;T9&p8#%%f69bl>XJZDr=vRkYF^*8L&W#R`sgw znp4xUeEw}5VpbJT)Ms65c9&i}%m(41`{-p@ne!?f>hHOX@L*~btKLH%(VaBOY=?Bb z^tNte*YbZ3rr=ATb>8YHiLQZK)9oFfY59dZa#>Zq%@p5`2l|O-1iW$(1TAtyagp| zQc2gMIqi9`#0Nf?xYomC5fR}EyhmGrtf_k(2^j?(_eESIULK?Ty4?>u_(uGr@~Wz? zVJm<6l1=FLbF;7BoD(Q zS5QfbOQEEFJzHD8`MCm+M7w;RV;3A6VnM2^+Is4|9f*%lp&j@J-hKY(C_8r?6*sS2 z1%O1#30pn9ZWE3?@G*o?-o5zipWr;tO-@V4ww?Rc7}QtQV3f9RMqxgZGP5cB6!;6U zWK{*gO*eb0M6>AK8wp7nv@>&vTi(N!bH^xCNCRwVXlxR(-a{xT-2hMaUu9#1DAzV_ z-a%ekKpS_5S6Hr)gsc;Ng#c63OXV7#bRa zJ4k`}ZC1Me`1^06t)&rLckaO*ci)dp>eFTNR(^gF0ysC#O?4Jz6}^sdUYm%!S{fS+ z`=(~(nJ#K=YeG|99cmlupzYd9wO29qLpaA+ct@<;+0}{in^n}Y!&V7M$%m?_QBI6G zMm(t`HpyM_p2o_UoQLF#z31HOcgY|7o%1YOQlgxau%!p|yQ)9AIPOL*lx@-tcCGk_ z*UnH5#%APGFFjyopu=q_8!tY`KHju@ zC|Kw;%2^dGi%8E`QiU*p@U0Tz=O~*zeO%bM`yf8@@z2;cE~>bfnVw@o#Ezy$3=H+- z@I6P-OAPtTpM2MnWTW{SC01Oa-E=SK?T-D2usAboymjsBMTD~5C7ZXRka8y@JDYqr ziwmcSefs+mpOS_m(rbQk32}dv2!yOcn}hN|$>H+Z*s&`6bvSa?!71ye^}qZ2&FZ+Mk{B zg0{cfyGVYPA8m#0ZshNk&Hb2N_M>hkE(njsC;sGbvFDCMSmyj_kM;)Q{if<$=xk}h zB2br!b(Q6~cJ`z#9++QLKw0yu`$#8nOer{Qjm!A{_X(MK#1unt9mJVRN_lm9G?2KzeW;qer4HJt0Iz- zSB#YSc=q7~lwCND@~c;fsrnE`xe*c=j5Cy3r)Yyn|7uo*nMK>?2ViH_2R4GAl~f?w z<(xpt@g6AMbqD_JfBO&EwP%kd7|NzsS#KrEh{Q#A!g1ma@dObJC&CwNw(P=Z|NQSz zR8)u?+Fto5?0nvbT}~HH_1=lC4t-OyA2kmL8y`$Mm} zeXyt0TN+E@zyJ32K+3kM* z!MuXFgMFBup8VY+3pX)^{OwMns|Nxp!{g$jiRs){fmQb7$k;ToVkqU`6xv!l$p^f* zeEhUq#TN?7%f2CrVP(aRq7~Pyq9p#u1p-+n}(E(P=rPiFZg?7a%>T; z-NWpkuXl4}%bN1CvaLN`?TKS!!`{-f+OJ-VKa>O(9u$De@*6mJ@k&~4Lu=AA&pZ=4 z)YW$2{Dlj-<1;hnC-!yuV%zpDNKZ*4{Py@DBg^Xy5WU>rP*YS_Q+aoNORKNq03z`X zTel!TD}(*^nuaUz2jBR{w|ai_`OkYbj`rVwa%hXislPo)}vAR6g|#Vj*8|_u`7D-&>P2OBa9egC8va{ons>K;6|V51%=I zv7l>s1Y@)}o1)6YI0_2tifV(}Z_``O~{lJL(y`>a>{BvM>6TLDW@eIZImGUW-~8jZzH`HF_D38~-nToXw(Q*BH`ZL;J32DrOEKt* zhzyHVB}flH_xs=d?vEW~_QT_U%H#82`HHVcSy`F?`t|DxyFNVrS2?OXJ0q@NI={d2 z=FKNMTU)l!xC-;3(vt#Lpi9C{N>2hzAW4RgV>mc~OMk6AkG&U?)aisO{OcGM0u8Gu zNk7{6j?o)SW9x~}{y7FI$Ub=Mw+P^A8+Yu3ClzaJa|`^boKw=$Y!C0>zWFMq2twBs zZNl*A6waT0p9(Asi5a=*85yL3H-UfvHw_m8Bm#PYTLlCKTC^Hbfl&UkB#9s1%p+ju*Mp?))ZBWTj0F}FkK*q;@1iV4t}VP>~; z=u(PO|5sorGQb-dF@aXL-QUL((E&?Hijo6u0yFa*_smj+CKvJwl}FObIzNsB!MSfB z0f&>BtkSA){rabv?rnn)?->{7htf3~FAvg}2NH|+z&|b%ljHp~s3vKA0V*vlrL9#B zDm&cKT#f6OZ(w|I%)nt}fG0NOh9Jbf#POR)MDAWBZG8kQ-T^i?%Hp3KpR!rS5jcCbl?L#r(IKs2o6jX05DJzr2c%*?b}bgY{gIfIjIhXP+b?jQ_Zw*#N7!6t&$ zIKK(Z&+@hGfl-phwc2(En0xwR);HE1-ZF|6tdK)&=k9|j+_VGbRpq#R_5>EEr;Ls! zr^YN8BTy|6u342qED)}e>;iq>>|ac9Ad2#Hv1{*k_37J(}Oeu`aC5)avR$%#f~{JBP^ADqTt=9DZ2vRB%gtpht=KIjL$VpE=myj8T=& zX4|q;6A>8`#xWnYXDlxBT%TAAda94S$ogg7W37miH6^sq`+dgEw_8rFd zgGVvFw1RhD`WdP&oy9z9P}$wV;o+pmDbn>caxzj8N#2nmE_o{ha!Lsc9PdE?KpgqV zli0lHAkLmUX%4>qcO1eP4b+!@{(X3Bzy6t7q-Pgm&DI^5Bwf!?|8%xAp|`!!+8iDc zji|&Vq-EtICN>!%krCuOA54-4R2Fu0WQcmA!B*5N8BKxVixhd;&S0&I#2K$hZl7Tx9--Q9KENW>s-cVU*IZ#yAzWU}(bNa2_u!;0EZ>u#1 zyPA=gnTGU?G>-401)0JVa}kk{X{)FD`ucG5+zGTd*5bfj57{;_TGj1xxlz1!J&wKq zHm>n^myb7fW0;jN42nsFe{d)k7FTfT{BhKkU4RGqP{bw7v2D*09C_fQc>Rsv;_UG^ zu{=8of9fuCrjv%Es9TfMG7*)Kim=!iTS;^C`c<5L^A+m$X&T-dgH@f!=c+vZfx{0V zA~qgZ$}Z#h+b?5gs1I>5F*tDKUPQ$wLR+H9*w@P8KEA(Eb_w-2uiD;k7JwoNi=u7^ zeI*Mdqjbm#AbK#z1!>)!Hk4HgR4HNZ;N6d7?Y7-$X>Y>Nz#xKx!>Gd>@ZQV6hRW=! z{N1Pi{O^!bScIQF`*mDB`L1m-q3gA+hgNB7Z{Mx^s0&iFh+|fG{{VEgwcxeqzKfjH zbZlFfkJ?LbBE)+JM<03==c?N9)(00j&Xm`QsVFMl%=u5JjG4gHKnF&%|LL7n>feW2er3< z3>8()XlU-R)dk+ZsuJNO=qOOhTVaN>beZ&^B$q`cm62YBNi6w><0CrJHKHfYi}b(r zh7uXI9ZV-N)bK!$t;|%Q`pAPHBcD&=)ce0hOMMlJO4eidzC*ZGRY_S~gS+qhh$U*i z_s(z8M}D0i8z$CLVps$c({il}PQkj3P&vlup8by)>}-QdnJdXd1k=~s%l;E5QS9rp zoKPxJuAscOXHXzV4j?uZA)%27iHSpMb`E8Gv|%P~lM)vZO8TBPIdJ95Wu&KOqNk@1 zmE<=!pOv0lgp||_+v8U{@WT0X7X00`V;8ZNCw}_uf5ITKie$IO#aSsRydZ)$Qr6=Q zYif|KG&8>wj#e2-mDwE{7(hAYqZmR?lIQ^HVgGS>t}K}RS*ET!d9@DL8mHk;*_Du- z%rS`I900ZTb=2q6HjkP^Jys9qZFrq98o%Rt(zTj97rzhWYfEkN+V4 zh?Au|>ziBAPMQ=p&`bAKfWn{hE;J~_c;7!Lz+|(YWw?-hs(|1u$6RzcIYxeW_n09a*76w!@}Pn{Abjl0~%o zQ$ccdTnPduSysz_bvb1xdZM=5W465FI}Z$Hn1>bzWmBE7e^>NCG|Rv8i_j*VhybkuRQ5?=`m%upYy zjIk;bZQg$fJ$>Cc@%oGCXt<>*MG|Gs9S?j2>o)E{Z$~T6o_GVZ)OU$VDRvJfy68TN ziK@)-ypj$mf8~TN*|H01IXO1ZT5;8-1TxZ{+L=tZQ z#Lr$9bX2tf1#k2m5tPQw4&H!bisNQYv>>ybkkWzL7DeN%Z8L0jH_s3aDp0A4HQMW1 zV=_v)Wfgh&UbdX*#`G@d%b5@2Ez*Jl(86=t#wa8r&Jt%5)6x+~+i7x~^U_v_2)}U@ zCHo@KZvi2Js;ER9Dqu<6rS=I$&CPkDs$~p4Q=y1REk!Fap|fR4Kjn`TG}R$p$KLY# zWeoKX(LU&;tksr14&o9o+e&@nS?Tbp*;z}l4Db&y+7-r8(xA#5s{)K&#FucZ@v9!f z{&^~5r+MSp`MQ;~EzqC z(mj%Pt>n-^Z@2A1u0Ufb?aLU_M_OtQs&18;qxP|ne$Kgfd%Y!P1kwi6YRmF#=WV5N zLFsxFQ8&t4dHk(cQA3-^pY1YdKY84X{Z_z?OlkO0$<1pvZpYsJM^IN+gEMT801DOB-Ew3J&|g2=cycCdPiJQ#9`ymt_$ZM}LL$|ulr^GL zCjczI6R%rPi8NvM(kdOv!VrTQ5k{nfnw7%1CvLE$#fwrw|v!KX0>^^)yate#l+t-Vb-~glR%O_7+;OEY}??=`3 z>-gZESJ2npiE-+nFa7P;kdu~%E5zz5OB)ywkB#d$R*hj1!8y$n!v`A z|2UM!iUpqFW2jC+Ik`drNCS~f(AI}p*YwlD=Uh{3w)_)XtOLN3;lk?~q9LDGjG1?Tz z*3)hDGfNDs3Q=0TBEOpgmrE-?=owwW!1w~jrb*N8Fg*Sze}mHE5=*$!9{A!Tqa)%8 zKjOG8`;PFbwAm&{F-aNFQdiA6oMF4zHnvgiRDYDDrLyRvH?3?|KLdk;EdXcwNnKHI z$b$}6Q2#tBKP8tJs9$}see(uv*|~?9EyDV#>%3J4SzGyy4U!I2t)UZb?H!gxHbh>X zT_j##_M$BsiNuU7;;(FCmvDGe2WndfRqWDS6qIZvzH7&?e)_Ccj`H*t&p7@8`5nYp zTH(7QAB1!&=THe!)0Tj#MLUtEBm6_7Eit?G)-~#~R}n|s^e?{h_m~;z!uS63|7lxE zZQ<`r(-Sy*>KNsYll&*zSfo9JN_UC{41JqPhAb@?{wf``h>TcmA?KaV_Rl8*WmB6O$n@ANFkk)(& z&x)8;4MV|w`L#sTQje~%XzZoEy{4qld}R@w|2f*cs&-RfU5)nkW=nEa)hl6%6LMW4F$^Y^JH`P?3y}8y_)H`-D^(E&? z{H??~;}?7W{~(8Wf%EXk9~wQq)ECh#|A=>f*EQjD;opD#-qNS(skEIrhd!KiZ{j#@ zb)aMoAO1Gf)sDG&Rkx%q?CJPX$EQYYELG_)HX+08V^uL3qCGw>EJYrdjMCUkUOF~Z zgvl@2cvEA&n56Dgf?ile7*b-R(b?K+TVBc^5F8$3!TV*}&q}1#7JcJW6IP8#cu8B# zYVnx1fZ4V#7Ej(^jJTKpQU~SjNC!G<+Aulc!q48Uz`4dTL?mQeV(7x$B(VygL%vc{ zj{Gt~)GaRRKjHXb>W_fX=%pZk|M7*%aaVgwgL{trp~Nsx0`n(7^EB=|d}w}o!Q<~n zXI$S{*WA2(0n?v&{+G{v{c=s6zrqacF`jznX&lmU92r{BKU72=QZFn{=kMB(V;Pf-tt%&d3@-j!Ln z?S$xIugCt`NR)BjI%i?;uW?OYli9Sytko1cC6*&qGzBmI;U z(h2^=K!5sIe}ZD#$8!rF6|RuvdlqYJd#_iVeBtLWzI^ZCEEO7MZ+3AeKKq#`5gQt* zO$I*ut5;6^{B|H+N87b?@qHuBpIVw3Kf1KC6@MPlYCvG4teUcAH(52yD>ktwBnA+ekdt5@jAf_rxdXCyd$>+lJ#Bz7kw`$ zg-#dH)c&e+>YD=RJ?)=P;-TLafY9piu*fJx#6(jeYt=Quqo1D{6xy%UlZs8B<($k& z%SMm(3?~pQqM;oY5o0CS!jqHnK8@{5@4RM!u93j0rM}vLS654;?QNtIYSlNdqWZ=q zG|^yht1CxuYdxmNhG=Y4DGGRatDSPRIQ`WhGXMyn!xa1=a4>MMe;Nnj9i_e#vFM5% zg4qN2J%Wy*F*E+>$A;l6^vOepc5-S40YN0X+FSViYBW}s%e#r~`|d=^_B}MZN2tJ+ zwXJ={e9iEZgINwEN6GsUJV^2P5vVA0l|YpsMSw}OB2b}VLt^B zC+eR90?H~6kB-KmGU*9STWp`!DJ*+Bfi!QwK)4A;J^6g?KdC*PWYl%FHjy?K5FHhR z_{0Rb-7X7MD1pJBAco3^V-<(mnrhs-ei7qxtg(;5fnnIT?=EaPcsJ%aaL3Puwsuh)l;r@B0*1S*I&Bgk5eI@`}nZJ=lxM)=S8YU&W+n4j#Xp=1OxK#PM7p zxb!>x9!PMPR|Pj=OCxFa+`I3hp|+0v5P?1W52LcQ7;_Un2wb5-skV}bJiK3HCXiiR zu?0z)g#^FOzL|*hg;wCJ36=5_q ziwPnhfB1ep^zeg7%g-kt${FNDO-p{snIyy5M$fum^d!FJn+#NfF&&n&k7u>ALx$y? zYYd}9U8GmF+nKP@Sj+eiW4RhjwMk{FNR5eTOl262s!aXy0>^nxnxy&i0ezyMl4z65>!?T!@PD66ED&ASphIMuQ)-Gj5Kjf}GaaE*Z3ISfL@A7^~F` z& z<3sJ3nw;c4LAZ3i4!3ISsTX|c9h_o&9HUEhwuvD}W=LWfigt zigCNX)>cpEkiIkXi&0m516@tGFxK6U@!@`p_9u5^W@ggTTK2Rwpsl&dRuqZek~N{1 zm5ub&Ol0NeBR(~W{WZh(FQdGy3?*gdCd(sY6HQ*p0rpF!%U;pi(q^=|@8Dq+mTkc0^Y5Uw{yIi@eRPl?B{_*m45v(!NQxT!0L zC#Eqm?KS6kWEkbdaO^*Jj|E^23=Km2PLm99<-*&T8R;|qdH3=Aao5Sy@KKMw z_UcO*CGUHvAGO+7fd*Lxg*4csuxaZawxI;|lrz*+P;y8G;V6(GJFf^&yzis9``-JJ zl#z)WH8-7_9RG{?Az{TYeLv0_LVgJZUGD&(H8yiIgaY`6vm7MVT9M?qhj~s&9dsy$9 zB-F|P$p^_S7j=(PQ?D&69qcmt`Uf#SGKTP2;t$GkNiqG?cu1~jLQLmG6LR{g?z&)I z#wv4&u$nH`J=)(;LTP$@0zDl~n3!A=|1&uG==*KbaJh@O;BZQ*cuWd zSIJMr2&8w4VvG?(_D{^4j@Lw#O}=oPq#vABVtT%*bNf$^mU<9Rk-hj``c>{%Ad#=T zw`bvlpLqi3&fUOk7aB+pp|(%=C~?!Q$F1Qu9iT}tO@3;UO)GUQkb(F`d(umF2-j#e zw%g^xFl`8B0MX?CBFDnotlw>-NRzGq>qGsfAdR$)TqGnW8NM8qY;{drJ=DMJ*XfX4 zu=Y?-W@cpYJ&g5IJUgjEx{Z}{BnaEV>qNskzdk1G6Zd-QoXTJSZsn4fWV^&i0uLVF ziSm+6@?8W{Q{$1Foosrfdx$p9nlo{xzx9bieOEOdO5k%07pZ*d@ij{suYD)gC(`kY z#9p&A)3%rM;~)A%n;5_J&dYf97vHx%San}j^$vXCGk=2o(n{R8_zo_=`>L%%Jx&_h zOJ1nhxCLpcS(brBlLFd4$0n6T`=pcJ&Q>(n)uO+r*Ct%Gl}6>}&6X-Yl5$Chwlf(S z=&%(`8e6r+33%csmZ25hhW{n6IVMKy+Lns?k(ZmEP@qHt@s{wY`Z6;!lkFEyQg9^C zv0w!#OIN6W{G=`Zh@_Mxo0MK6mK6^tCMDX~Drm;Z5)jNs$t_4J7A4E`80d8EqfQxUxVz@0v zveRh6nM@;_+1N==C=18Tted|(ZP9g-lQL!a(d3LWR0y-`cddF?0KKv-SkOFgad0>J zm*Y-t$7>~fwO6)-19eEgDnLkkax3M(w$T_SAM8AQH^*!Xv22>H6y3b%C~bz@=w zw(rEwqsNh+lZ)c2ZMf^y!zQEJINsA^BbXW)rj1#HsqsPTsS4V~_aHMjllF2i8gJi5 zc3~m1veRw5HObkLfj%_cuEi*I+|0}b`+w2ojV6cIgK#8MgcrTkzsk^X*U1M^Kpb|F zI(Vq7o%|-7fqlVyUDFe!v3Oe{y>ZJ9^k^Sp+OG<@kj*Y^s|-2GDH*nUTr0S>HI618 zloGzF?gr{^-9R68b4N=PIvQ&&sPf?5_gUtmCSnv#J}JF+A2C)(Lk)GPpY#}JHldrg z`T}Wq=kC4myFF;Ey~chSv=zYP?4PdAF7yu$m@g!g_(xlXyz=U+@Q{9@lCqFpP-(X4 zKz}E%nWvsppOBV0=Hda-xxGu~knV-6oe6hGmN@jH@t2+8*hnUacnBv-E=f)p{j;C7 zvQPnCequ}ufEWF01||nZp?Ahm@=81?{?rx%+B1BC1f85+jK@Fn86>A=qMN*>tqcl_iY$;rTcl;@ zXq5 zS92|1diDp@Hy-N2EjV`aL0j#fnwm-+6NPIRh=&>*iC1D#PWe_^SxuZ>U>HaCn}UF( zGc90B5{THyWD;NMZ}q9hVm-@;Z;muUnIhX+sgbj?^AMksYW&$sdau870rhn^u|&O< zT~LY*)mxEYUWu}z5>%wEA|uAj=Q#GTJ(J_DXQ?kl3)1>F5iY+=F#9w@E1?(AH#9+7 zBEJME$RXHPw<=gg0i``d)CI0Nvp>UGryOFC^vrCe5No?AZ#syFqA3Hm?LC0vvPvY; zUWw*)!NjuK3h(4S_Y+GF;jLdkkD0My!;B{L@6eZ}^QKIZ9lxGcW{LP!0$wzrwriER zws#SY+3I)pm-LeC(KXud@o~|(_nu?exnmD?bPUf)PEP^L^Xz2y24$EsTqd$^1(YSF z<)tVu%0)&}B!XAxF{i9!e75RWbLFyS?Hd^!L@05qw!14Lc5bJA_Kp_*h-NvC3K)_AFzL zvP#)AJBcYfT3cwVPGDMr43yv7b{)X>Lq~A%t`n3+KH4X5Vq#>FV-sY)1P7XhQ@Zf*OC;Z^hvFL?uXPXs7URP6t#yVp4 zz8=ITXJF%wz0@oa5hbgY2q|^fbp7AT7wBqQwX{R6OJ>kZrDQ|2&lY0Rh2gGb^ZBdvq)4 zT)`9y%8~4m3}mTy@V7IcAlpaZ;yZ)-$#PTkN{Kyl$CsA^zMYhjH~yEO{o}~ynyU}g-o9PtUtJ-b z2t|5&DmHDbLQ+B^TNu{s_N_ek_kaKQ%Uan!Iox=1(KoSqesMl<&bMHT>hdU~;*-;T zYip4|{D*)1PTybr(H}+hG+uw;#?6{?&(b`SlH)l<5r*NTqT+okD*@mB$~T@N0|S5c z7oQJx^|c?LpBpaE$VduErVTPRJBQ+mO(@LIr(KJ8k~8z)`uG>V5Ii%``9N=XV1=2_}c>Bex%;zLIdAu%pS zKF)#g$haS`OkDPNb&kHLp{=uAJ`UmCjI1>5-M1T&!J+=ufY6^k^4R-Zzx1Uqsj6sf zYz&?ve9I( z?>n#?d8B*6;Ly0_fBM_M{rfH}^tU|LZr%)O=)V2g?v9qj(Q#3Pjl}&FFlFW1mLw!# zZ7uBWZ#?spj`h0!{`lQHe!pk?|DPNLX(0y>9xUh{9{$u@Z@l)!n(J4NEO_Ul1C)nw z%~`o_#x|9ljCbi{0XqlqIG=S0_(;*2p=L$|f8&2rjO)PORv54h`(4-RkLUI0r0fIw z`?}HEND$aii+%$3oZNgf-rgZ7Pm7PGVRJ85DV3G(wzs3*R(od<C%7%(Y>4Ya|CM`O4-mldxUV^7Nn|xT6;X@^?I-BuBVP|z``=#hr zKUyOEjqlQ#L?cpIk&)r7KkwjoDPI1kjyE!9?;$uSpC5UVkep`l6lXc}`Kg217^ zJ{r2t>aM_5MePw_)A06q=a5GuZ{wDo)QQn-0*x8A!h$DQZ%qKmNYR9Z_R<=koWiXd zrMK@TXkt?cJT)>=Q(p$YApGm&Fit`AS$#lj(1i{JRW@D1OZ3|q9TKkmKcT9 zq&OP$G$!V~m}mQxGCnFX1EH}=W>DxUAzINM9AVGU#IC>&O+nIQGp0vJr?Hs<@fk#Ft`ZDTm+MW1O|b~NRFg&8%zMZ zim2oQ#OG~BU-Q#D&FW5fwEWR=pswy_0M z(=LnP&&Vmp-lO*+x4epU9E^auX#{y`psi^|W&r$bugAAU<4@ZPgrT@ED&SyE(Lqa2H2x=Px(TGDK>I;36Tv8B($t!*r&+Cx0VPS3tu8DrqcDEBe z!TUov%!^BM*t^)T|Ev<_aI)c-{Nk}baj!`PP0;hiZ)Bij96GW=^3V2_yHi&YsT>P( zIyiNe4CPqyllnX@EghvwGhbSOwB!T}3K7Darwmil_SHo%5@|HVM1^sj0GEspwoeWW zWhaKE2$&NIz6`%JEB;yye))QoGu;Yqaj z4BLc>_ROAfFTqPgjcnkQ$2zF57Ut*p@gL3qk&Xdwh>Q$=Fd^F zeLvoK=@Mx#wcVZYZG{m&chxVdYP?IJD zvT3knW>OxoOikV>@JIm^dPYo40_EBXRBqo5r8t+4k<3}49Gsk@=Hod(?!^G z*WH#{zN@JYJ{oum>@hlGpVK+wZTly#+(Vqc%}& zX^rLJVm-7Hr@i5pZ3VGqQziE8*~&7qtUU|f3CzumqM@N4!=qD}b-U3oUAyQ(PFfOD z)0N&l*qp{5w!MY={Q8A6$V|_$^!2VO7bYhrF;5y$FhFa4EpA_a*HXXBS$FjGL)f z1vcq8F*#=AuRy=v?oPWWuc!oxsTmxzVfK9vHt*PFtN(gBTG7+hg+l62t^U09)+-n% zEiWz1Avq?J&sfCqV~2?&%J7XJy@bID4<<-|qE&N_(n$2VXDnMmC&$J=@3GW;F;Ud_ zD@%w72|`m_2lafG$%{+ZZXuO8BA<0#qO3@WSVMf2|1ytjkgHrR0%G9R8qtC2KWlBz_v`?a-iL z)7IVi;Aj6FMOEAI>aTu+8}I(wvM6a~y(TMYe4Bg;r%Y37>f5z9cyFr(4cz~pr%+nG z1*@cGrEX7QUnl_W%4ftXde zV3BQ<#8-+~3OK8~f-09;U+p2O^vFxTS&R+#psl?PQ^af9bN$x!%c#A16WMu%$YdW! zB@#2r*|~Fv>6Z)V-o;>V7wKpaw}`j28eIWo(tVPn>QB+9B)C$5ik5XwI8}r!r-mly zHtpPpliI_cxbU@KK8x1c>lVDCJr*_b5X<4nN(mz!E9i_`X(a%|lOFVs`>ij9e`jai zHmNNcr-{q3uqa-u=SV-Q7J4qFpSs;%L>>H~l+Ohbpsbq4Eb+yq`Yv<~xiCR&sel3x zWiyqGwF9Ja^`8daCOmmoj&H4k@vxqvC1G2o-5ue0Xi`P{H=0gVf3O_sGX(|cFukS9 z{40l2Wu|9prE&@NffoaPU2uD6S%!1{`n`JBp+2`UW*rj~5=>93v!x%U6ZKhbmh)J& z%p3S0%d+{Bp&fZ2<@zy88rW|1@P< zi^;v;^c87BljdYtlj;4MkZh_)4|SG;ct%GCQGe|c%dH~~&X^7rzSNj|HO`bx>KiB6 zR&8RLq7C(-z3b%gKyPn7Q4cqq^O?0<4o4l1A zk$w`dsXt_gE6u#dTJ^S7q@)b-hmW?au2-Ov@BdU$QO)ZKm?^|!8}x4+jW^2@6>A)T_5)i7N%=ONE6(_WdE4K+e}tqI^o zERqIflWO}oP0EI_of&z>whck)2Fh*Ho3Lylb?wGY+iY8mfq_2irYM`3GW;AwOvLBp z6GL4+^EPg>u1XsZ{#LYc3#us>%ZN=fvU1@f9s5Wl;!)LGlYXk#6304}LQI%jL6AzL zt$=+^PH3g7Ci04kD@^t%1K-yDcj3s9V@RcKCX6;V++!;TGg7tBu!04Ml{xN8T`!y! zPnva8r+elWhF1UbTC}E>fM!pKzYQmI@NE1fHYKke`Z4UX{)6b1W2ZMA z!vEq=lQ-;mM^2L(`0fOH@D{$b4Vru_Mqk9F3PL)1^a!?ZsUp5u#!&wNhI_iuaN`gz4T&z#qV)`l9)O^zD|m0T4)ieIJ6C7Y$!RWsGc@RsBi^@sxUO1JI9lOO+_@$wM$ zT=k~SEUyl4y!|?9rP|W#U%!3{FFf}{>c5K;1c*+cZ66a)>>G*V@^W-FHsYIq`=8Kw z^Ri72ZPM?hMSjc(Li)U3hsID2eEhW9?TJ^UZ$Q^rm2y^ zKH{D+%7bLH3*?89zoxii12$~gPHbLg>GGGzUz&Vh-ySJX4GJ$QGh0GN z9!_h^x2-#oNvu&+R*tHT+mTFcG1T9M5$gE%M)FB*4efwn9NK>vp`K|l>-97zcpZt9N^%E4I-Ob~AbhVf_O5cPT>bvS?P>L*V2FIr%MGM*)5 z6rg0|E`-z0m?j>drjA#}4)y=&!~{afOUW78D6HIs@=aST@L-rccI(O+%3K#^v4b;A z->?=MfAxbhCujoA0+)DR8GlU2=_3B8;1UJcId-(;>j(}ZeX~Cc^7HWUBafhR!zK>3 zllp#Pb{LD^A*?L8X#cn^IEyT5*h?$VgNet4>57Xov8l2US(Hbhgh=)$?4g~N5A~ZH%Vh}aLAkhFlD7wz<~uL zXlzwJF@!QDDPT|w30Bxf567cy`z}2F=|9GfUHdJwin?%~IBa3gjhXRbbTl{EMD_UC zIO_-u_I2WyKl%>3X=_AAIz9!-QQ4eM@Pm_OOOQqSM|dVGJj}LdJN3jz@Uc&Pf%ZbN z1-d1rrcovx#NMMvv0>vz_@>8k`K>o_>D*iB?(e6Knvdb$9$Y^EwoSfjtovK*(O7eh zvd~ZAr7;qB2->mcM!fu@gU=S$v~%ptxtTHcV=o4~+faAy3bFB3bdw*;sS8h@eh)%< z-IdE{EVF>gJ7I0g5@oNO8tJo%_u3nmEWq8rw2J(Sjo7;PFaW7QR=>6q!xt7+A~s5y zMMXDG76py3RYp7|tip4`7P2dsP0zD@)laQb9e-2t|96jns|?lS-!EVMBHKbfDmzp^ zF~0RY`H*8NI(6EnbHCjoKSN}63=*jKl~qB$3CI3oKhZ{3=0EMl?xv2KA$H*tSYxFP zkLI=UHfb)b=$>&AtNTg2OXPP=%4<>59c;_*vKtlD?f1D2qlmBM-&~UZXPeBw9-kg&kOL}h{Glk&?p5p$;x1+J|9;LHE`J=bSH{_)7>noIXJ zw6&EluB`=V)p%k`f@QvmCst=ente-wzfcZINuAY0~T1`z^U>NP))I=F0sNA#_(UCFJYpcQE{rhix zcT%+Q7hm{P#CXr``(`HwD?%fK0+QpS$=i#_t*AmS&zJfS@Rw=#PkuUG{qC+sg`yydV6))9I75u590|>z=tecZq0C`YbFu5_cUr zh#1RQ7SUa{MJBPPA2y3-bOnz)Xld4ASo@cZ+!y$3-7-# zRQNZcwG8-|K@N0uFnenEsrmJ=}UQaXJ7qHb7xoXns|=FPS~-eyoj_C zu@V%P_}16I{ewmY8{E0&_s8$pp*`DwpGN+7_@LkqxLQ}2*HBmYU`u1;`-X=HHZ07~ zMXV5D2=Xp#R)dOL3fCqy?|jxotw5v{pOm{4iZhv|OYRu){FBipN1=0_-EK}DNA>c% zmEruXQe*%In8KHHg69QZsF)NjZ_%p+IQKsIDB{vH(c0W%Dfl92uy(h#pu3@gpv;Gj zyZ72E>YD^vqrDv{uiSu?>;fo#TxMi-k zbdFbRuA--_8_VqLiNP-0w^QRCO68}v1w_OlgWy>ml%ATxdTpRG2(~EZ-oAeH4-OO5 zOxl=55Ikvh@?9q%q>{@=9S!PtUwaYBaq-A6Do0psGzNzHar^oecqT>>CgUK4Mn3Ci zMj!ua;zFykWsvH-_8*s{LbM^LtPFVpEu%FlXw{74rFZqa#z`x=)mFI=ETuKUSVnp> zwrs3G91Vz^tPIvK8(~pV1m}%dcGJ)grcvgdhIfkfqViWzL~wYbrA!Y9jpFBcghs{@ z;DuQ|3{3N(tAWdSnTCAxmCFbw9j8SFVDA=1D~k^T5SE;W*!-`N1 zvzQ!g$MW<5B37o+)-iylmSMKv+5RDteH#>@h|eV~tc0P{6OVv|T*RklVvT*~b-8G8 zjUgv35eLdrkQvg8;qh_Y?wq1=uGN}=$G1R`OjW?~(H`vm(+h}-&%s^yK8&2oEjV}n zT}vGqvgpT_%rI${sqqd5P?hJO@|hMbIebBA^hO=4uiZL3mO zNH4B=1}iGXHCFJ z59m6zQG6-Uw{E1VuT3x5!_;OKuxfp${$UfWKU7#KX|pOL0J+KYtd=IpLg1cX!Qj+9 z+Zh1wVldkJeHbClsTk4p>e>>tC!10!s~9-|HJ(~gxqiq9)5@cLCmuv$)n>FdHQ@5w zFJqwnwgnQDlyAh{ryfCWaiv9*Hqy{O|K>{;?JgOgOxl!em(x8lAqgqTlmnyz=>-M< z$aqvLvK{*lqhiZ;42=w8sH@8+3JWOz@(PPAD~W$$5m&FAm-@g~>Zs7LaI`npqw&^N z_(<~s3L>IhUGFr0j6v=EZX~+TA$$ zo+pr#UyL7p=kL(VF)pMY+qw6MO^gk6-9~O^JYwS_Nu?`TPn#_nk;Xnv%F4m$#3bH$ znz=LU%(g zWqb(ADk~7OHcve^Y*E}J({pHU@5k80l#QwO{7%luwTVkjzQ#v~B0oo~zw(fin@f6F zLVJCUIiBWbrw~Db5E>PWmflI5#Ldae;qSMQ7`aB{Ittz;wm&=-@tGy?QO5;RFOH3m z;`*7_u;@{0_$iy5N=ZyWaX~(5e-C-C(&*oGH#cZvCYI>LgAYH6Ot$&ro4&sT9V$wfi>&Zrej-3*Tw$os!Mbu5YxMu%$c+#W^uZPl-cQQwQe!%NQCbt|e}m@`b~{ z5@pxw9^*x8uTz%lAR3&ffS;NnHq>f%>I!wLoc`LQGPke{`;XsGyQ&aPx31&LnOC8G z{k4yE#fB}o?>+A``B`)A0%gWk#3rR;*RDe-sosP*%I$9INf+fqI-gw!+D zrwWi%c8?hsZ8KhDe0OJz)FyKT@;yF|wgu^Qh1f5cvQhg(CnaYgGd0yR4MoMpS^DP2 z#zxfLxI+8YW44X3sOZmvG^{>+X9Yz!Yt+FHKKU`+y7Vqy`q}qLC!xku;j~*MTa>9l z4bc6eVPq`wV>D@9^`Emq3auPkwR3*jDSpax!&xd{eaM$GYmpFbl1t+f5*|tWDjjLG z47$pT}!2K8x3X`ixCBasb#6wVwk(ES*VA zbA)z<*3lQ1R-iN|2jBYg|3y4=)&h1SqvK7NDT{}K77Oz8(baepSKocZbgg(ovRHM} zWJ&<*sjMTr_Z>nUWwD(3F3K(i5@hG)lXj+X{ro$`KEl-t)}FiXxu10Iv-HJb5iz#< z8HBm3$sio`|Z77AVf_v&~Z&9B_QYV$uo*OiNQkOcsEj%pjB3UOqF8uBUw&-_Hc)ALxI(XumfCE7Myg3pwmFne2*SUj(1>d-2@gZDj# z6AwI!@zGIY;0a6(4dC5ZpU1HW9>XWw`c*GOYp$*$GtS%syjsMx#p{u>w_*e2;6Vp2@ zb8sl1_G|DAF&}w>{ixOQVG$}*6S7XAiOD6tG|rNhN|j!JyB~ey3$%+k=A@}W$`b|7 z&A9!vNkSLu?34qvGY)gi z6Nx)5=#tkc0C3GeLtQgY4C1qFL=?8XM$~5A7FWdUg+ZXWel{&b6 ziwFv*-9=d`4W*!1s~qK~Y))m~v#kvH9MO{A#b;~;qGF;E87bMSb_N)pUki$`0M-oR z?xNxnn=I0{JOe%5@KM&Ec<>R#vmRgl&tF7eZ=c}{Eeetz3=3EA09(%I$Ooj%J&w;o z1F2vIw#Bp*`JA#vxItSVW)_s9pu7rYT1ih^Rz8l2;UUs?2Rtq}a!V_bo|r^^@qG*r zcFVlOPwrQeW0!#WywyEgE@TiJ+$iiNdTf+6~eq{nt z`)vD;JHM|lA~3n9lkAJQlq_UXk0?vQ_;8=`n1;s!P;|fUF>2Cdg(@i<*=JGI&GM6J zt3_>_Sz1B4*{-JB=cps1)Q$`_?p zkF>296s)N12xFAV+Dgx>twzZQiAul3K}gNWL^^f;^8AWzb23ZYU1Osl#^5m8&ZKAY zx^$gzma>^F&$}_w-$5Coz-o>bjap?PBf(>SX$?7rm4-!qq`#@Lak#v*yiR&|jrb?F$t%McqaH9G zWOu18(Xmk+dtxG%nUQmR=oLwPSW1Y$SA28{4ypM2xX-+$@tcMkbUehJBO zNX$&dhd=TGWD)}f1}FTepnUrWC~sE>uAa$muYc`VqXTu@h5fW;(+b;Oy5nvnXO(pa zhQ-`dRJp5tqNla|<$wC>_kaBCFLnmShG1KDAp*i<@Yn}Fj=1Q=j#Y#lFR0klD_ZdO zHfPkl_D|0Y_1B#UiVBgp6gOH%vFr5X*jl}Vj2r&B{Hh)Q(BI!5QTyU|esJO9EAOEQ zMtF1ra!WQ_@IYv2#Oi{7VR~(O%|n?$vAV+AuBHV9tV9d*dldvlj8QS|(`zV@qz&i2BtzF|zcJ=k~b06zK24}y2WpIHd0c(@ z#~=UxGvEGi1LG4h@o`a<6^S@?`fg;$MXdQ&!hRK;l>6bV;K;C_{p5SkU%qu~zmI$^ z{1}~X_^A-|>Tg_~I{KeCKSQ^h;V=EXvDs zarD?>+8>Etgr$6>a@*a%;5hy7G2`!#|6`8dr;-01J|y67wsqe3)~m1lUzg9HeR^Va zq+n%vF~muAv__>t4ML@44ksyP{%-(;Ajg2YzVjLx1G+>2*%Y;j1IIwp4{}7v@O2D0 zIq>8tk()xWL7;)}cgoYDk8)t@q+t`5sVHvhG6Q{meVwSibRKybxj6p7LzoX-gU>UE z>TNqvxqTNVX+&Lo>s2%OAAa%!*m~eFVzYAa_StvP(Rj-uIh8_Jf?AF>OO;IEXpSq@ z%Bh$gs<%$)&kiLr{04(_RAYDKZh%C{0iaAbJ)9eGpedKAdX-qI!;Eznnj2w zQBlfy>o_DAFh?Uy4qi=)$XR1i#S1ikiMMzQl%6~-Efs0mdGPw@Elra-OnALkOM7Xs z->j`cV?zVm6m1}OmPTBlK%nQ$;-Eu0WKPO zO5vB8o{8%1yOETULj$Y>=iYe@KD@eekspmYgoGS=pE+Rt}t)`<#aDdrfoNo)3_e^IXh z6c$(EzQ;d|VUN%DFpO2S;p!4nBUX_c4@5^SAu}zKWdx$JdxF47j>t8HkZ*kc1p?L~ z_(`8LG*lP-K3hdxRKCH|LocxHn&g}wAK`U<818Gw%wRtfqr-6O_+5DLfqSuGTQ$)c zfj7aa(yxn-6h*H66oq?8Kl&wwl3A z8KKn$T8*oerE-dEazK3L?8PdhQ_d2%V|G`4utqx!G&5{>s$kPzf3RkTVlfk&O8i0jWCp&<6 z&)AWN9C!L69<(~?oc?2>y2hL)q-XJ=8lbPH5BNm}y2?`eOI@#t)QosJmgMNt2w+c56D+MYnE&H&LMqG>N0Jy>n>g$FYZ=z`aj?0#WfP zc=7ok;M|Kp#msOoQj=40>d_D2!KXd~-vU9qZw|S+xro48AE8V;HIklA{Yof-xpCw2MfC7}7xmCK%EL?V zzJcbOSJ2*2gI?-`wFPH|r}Yp299gH&j{Z=4%#py87-ebJX3bV^+~rl6%;H_+SD zjq&kulT*bdCCJFk!W?-^dypzEW?OSJ;witi;!qCkt-JSI+Q;<#BJA9Em#t>Me(r5d zQ&(w~m^dUjIKUq#eC&OwsjJ7Uzxp|i<`~>{ z;*>e@UVi?k=xwT_oFlza##fY=QJ2OcXvKrj5Uo-mO`5)z6Gjsb9<;Qyp^2}lDL1jj zG@rk0PIF--TYbY8X;h>?6o8?iA@Q$P2|BNE*y=i7uSjjB%NwPUE*)4;c{$YEX+al* z!~M25|It$qBCELE9F@z|N1E(bFo|S9XIm4x+S-k0z0)q#UAc&NU;ZV=2YZm6n}=if zJ%S_0AHckO0!!XWAT$DQ?X^jPR8X=3NAGzE_r2#y>^*)8ezv2dr52kiOR;n378?Jt zaJwcgTR~XRn(>2zxn`(`b#580%jhj`ND0L0*(&PW+;Ak&|EPH6`OD3$;Q{*lucK9K-#+m>M3WuAaw+tvm6N zKln=&Rc*!D^KTL(Wne$CSV2hzw(Q(T{IZkyj&)OZAJ$2_$O)W~T-GG9CMv+O8bLe9 zvxno;$Jf-TCLAMh@aVmy^C-)Rp_Tum<72pd<_&D9+Kf|=JcZ!M2wXVxI%;p+KrY8T zIWZND3UrVTXTc_GDK8~&BsYb>6`1y(r$2!MM^9pGVg|068B}cCY^gdmIoRLRWsa%{ zmfh4)kJny$4lR@oqr(HXQdLa-L7aNj)TPRVv2ojOb9~v#Y0Ble$Y9IFBe^VGLx#e@$Ta#U{GCrGcdyrD^6Ot7 z8W+*V9P#i1<+;YojyqlKIC0gzP7SOs8ef*LRdhA@ zzyGFu)!AO`4+W~)?+*Qk5lU>^L|jmmLHQkO?U2ih9b4#+nBv`bK_z-e@vj8Eh0>CmE&fZiE@N zic!yZ%dyP!ro+|Q8Y8|51G`*q%A{$Q7lL@!&$f_IP!_LUWI1Eh3B7$?d<|f9YyvF} zwPSUTv9mG?}O1Oq(!Zy;VQ4w)iDJIUVI2x1youD*C&+5X`<4Mv@Fu+eJxQ znYb!`V9hL`ll77uvHg{0SLwWJt~#?{#T&fHdGX|`upWQ6eq*OZL`0fgNKQ;3t$C1? zm5cJ~Eoi!N72`vFR^QB`3JZoyC0=&tgIrvPUVFDVR4_??MUte#>g?xL5F2qM9NgG4aysdoYwW4u5_--~OU+aDz zUS{PPk63`dMq9r-WjcpLA37A!Cw!_Ex31}F+K7wB2Sda>3L??=D)L3hzV$4w;k_UF zl#OLdT#{u9@OWm7KX>fdjtv!MwATa3Q_>wPlouhkG3Sw%k#1RmsM8@Oj@skLo9{9?C z`D+U-`@m;DkH??>5YmZl8mU85k`mG1*@ib?_?cza2qY%B>)!jZgLq!FnM#{gD|e@< z1MBN+kyBWN2OfITf^swG%Y&14C zHEHrkG$%|M8WV>Nn|ER3_Fc%z$);T~z;bROkhHXO?*U|FWwD>DT#C?GrBiVM(^pNfHT7p~l>!`S33wjVr>lc(Qn+ah&$c98BQ*CB^q9KzSV=n~JcgWCVxDlD4%{cFlqWolJqi zf7oK7tG6REG?Mn58$QZo1@ZQ_Hsa=`v*>JXBfYO8 zoBXtS*Iw*CcsKHLi*Vz@+i0%4&NAfoCpIHr3R6gTNeA2WNLxY*A{xmGEhecTPW2D6U=eMoL|LPE46_%HtSAfj)j0@va3aas&-&3j4l_f@)XO(@D z5EpGeJ0da4`DKieHU@`=%qJ}yCL%h*WTD9h>K_Ff3;#)%38VN(*P3ki&GDJMUs)X` zCstPj5FO`iRi>X8iH$n z86J}63TZ2XI70GdeolUeIm4aue=GP!dR=245E#O9^0~>MD}To#sy9hiWZD)qx<)c$ zEhsFYdh3qmiOI2;{?@KTH?Cc}ud}y1aeiefK*8gb{cFeWJsyygmCb4g_r=7eKKGyh z^MCgL`6oXaTYK%|M;bd?G85t>5gkFBG&Bljo3U6C zdk2TQ%T_}psH1lxue6$D#qn5L2_UwNBwr>F*C`@Zuh6wX(kXc-A~M>7p_RePJ?jaW z^UejiJ??;oInUn7$?=16N=-=Gnx38^rYgnGZJQ+u##dJYp85JWzc;OVlJ`TKuAKQ) zXIID0RSFr|34XF@aY;TBVj==UA`-{L15=+14_pekc<%h80}~^8sj10^OQI9vaOl8J z#8Ph|EN(VDI_2Ac^EZDpp>luQKe|YzeSN^=Mp`mJZWtBFK z96N+^lwmTg%(<`E9V<$TL`qN2AiXp>q+bL`%mC*Xb50Ri=$w-#&jFkQ@{S^Resh3~ zW8mw01Nu~g`Yr%stH=d@bY7s2=L8>Q(6e9zPqSJn*VT!Mkx@%eGtkqE*Pj0cdTOuX zvG;!haXAHe`;C{)8JR)=+0ovLcYgj)Xuo}fhLxNwQiR$&NyZ?Bc2ul6bmY|1N;QE< zC&iZH8_nFbddP8AM6h@0*lFxKa<8S2E1+TQCpw?yvv|3+MRk|aBJiO}F*%LcDwer| zMgJT%_X^4?H{hO!pERTW;??tb^ZB2^JJN$~l_fZF_YstCtVD2BBozu3Dgk9e5{)_< zXo@Q$wTw^gAzQU#lF4{zM<^^t3v^fXswwJpK5CsHi9;Fb~6~%~c4Y0VgM% z#>*VMY@Le+llGqs38j%6EJtJzjnWlciLOfmXkf)A=O8>Lg$9H(A*4M|ML)}{&V;L+ z`4b}(tP>4MS|hm`i5x$zE@$tB#Ud;=kxybBS>K4rD2`VOV&YN|9-WL;)tl!hrpC}i zLnzc}a2e^z9PhYro9JDmQJ7w^fgKaffgy-=YZdkYmK6LzV^9ue874jg%fbE$J;|Io zQ6T|{3ZvN^xXN}%VE>V0G_ZEjz|S{;suiqCjim{~`I#Y9YqkkSFXFpRX z0)39-zOc%EVqa7zo}j|&9D%LqeM zR2=s0JBSTcTL}h%+qZ9_tG&hOG9y3V3^b)8iw-AmE_soc7LP|x9mCGOI}jBcO#{mb zl+on0GGJ)3#^`{5>^%t>qXz+S4Wb;en!q;NG9p>Uf=`jJJ(wQvWgkvjAdXyCtRjsz z$%uJGMnv0qDfJW!b%={ElaKtWdq`{+tg*N-XNJGZSERfSXEL47C0z)7>(RzsJTw`g z6+*gJ<;kU`Lf4&S&hLCt{^+5S&+B}{QL%Gc@e!Alid-7lIr(LlIy{Vg>Ykmq30LO` zp|Qhys4rNqf_GFA$vo9b6SrFJplOh3${nrxv55lK%`>lwB|UGQzjPn#cZZi%U&(E& zCk+XmGUJ%fu{Mxq#P=#s`oiI1)m`nNE+MTY$E=Y?S23?XXLnA|E?{KBgE<=Es;ftP zeR<`CQU5M-4AmDamR{N6VdsdVp|fM}5gdQ?g9P?FapnA5c>a4|K_6v*499Ti?gM!0 zW1mM(#TLB&%JX>n*&kwRWDr?-`L?g|rY&2r?Z92O2V`buHtxRn0o(g+WT2P4r1og& zI0kG#8%f#=!VGz~xuF)#_4ODY97IBL3N~%qjg8y3(FjkqG1LBES{>tajoU=I=@<2p zDs6qivh`U9zZ;408Ri0DUDWrcr+J@@IGfnz4W?&S7BDk0Og-36{%OJp4OTfY%E~s7 zhxVXw!v-38OSXDJ>2)a<5F3|>U>b`NF)`*;eCw58V$tg|J&{{f3NJtV-LuHf$iS{W z`)$wC%-npmwY6Zlr-L#u7O`nLh>lOTKrHPQDdYOarSs_O?xB$uhm95G2w9nfo4n<7 zjnX)tu>JBD*`6%wQR$^Ud-q~Pc_pUCXK?w-MbMD6eGrvOwz#+qB^#D<@ zw^nj&V{MgwN^(5qu8eMHPiL)0@K8q&jf|kPLs<$I5ydttWwO#SYD^S}rHKmNCxct5 z&(>3)YUPJk>nMAPwya4=PQ`~m`zJVh|07Vg8AZ4&$f1Pw)AllQ^YnH!p{?!~Mn;FN z|24@w+|$N#$u}XPd`1ZAd;xu(t>|p7w|!fcnIWBR*>~hPKKj`|LS|t(UU}tL=xn@( zye#Sy(o0|O0JQ(w!FwM@Y4ujhuShhvwqk-tzcSY>^QCcCwh(O%5FY5P%21l`k#WjG z@|RZ6B_^j+Drh^LA|z+z&`yuRJVG()As^Dv9~>S&Ehh)E2L&;&S{pknTciK}nF)ba(?|&~I`@kn{59(*W{&(nTuEq8p z`_Rx(hhO~oJCuJh*t7o-ugyeSej)YEL1Lq53=j2@kDS$e&cvtqPpR)H6D8+ZEn&SS z>fed6ag$vE>_bf`o`2)lNKZ?{V^4kvU46ZH@!9V|+mRePdJnSFb8zO}*D=H~SKxv0 zh*P%ox1Pl>JfUq-vT_T_ds>OAJxmu(@1>@vBPk;bMdYLS_;~aYhiG5@pamb6=e^{a zF(}QV$!070jhtDnF#Ic%vy)%NP02XW7X zk7I@RkC3O`#J^!dD@ctec95Q9yA{AQ<@Te0R9l^}J>(OKJ?R0%^=g~i%X130R91<_ zl_d+jlQUn=waLjb%6}&l3gHXlV}P98G<1(@n;-U*wL$tv*9cn?*HNcfA5w`sI!KfM z>$=owB!^9p{mmha#(zAVv+5J|O+-|b-8VTgfqAXM{nrlbK1aVflm9&K6s|E;S*n{I zd^cUnS7Ll3X*|Ycy6%&FH>_gUIYrpDR<^^NIy7mlHcOYQSm^_&57+?S#NNjQdD=BI zMf|!!BP_f#Nd-ASNZm;(-Sq z#EIjl&`@&;um0knFx=M#ZKtI@WuN%aXHh^oRD1nA&c69Pmc28GC6-WQrY9#*bL}h! zD2Jzp`_R|ci0<}AVy{8Nx|Y70^=C7zA4Q+4k7!1R_**B`KbC%Zf%1T|S29}@OtyC? zuhB|Phh74x<6>RKQ5;L+I?8GVTg%?i=%^1g1~w7Tca@>kqnbq2 z7^shR2#+XZO+sP<<>wrqtyJY99M5=@McM{OY3XHWsbsZ753q>|%BM+U0XJou#!cg| zi8Tc$3Avh5=bJE{Y@`+9Ph|}7^BLRr9JUM-l1bUb+ZnWT6~MK)%x7tWLG5RqRsTrZ z6=fBhY@cwgT+}|8T0MA&s`%0#s1a;)fH}i0h(TkmaySmkqM0qF0#@KK6dx z`^fvOf0W%Sm^xvZW8Bl$jLYx5PMi{nr#|`_Jn+cVh)POB<e)D9Ipjjzi|`sX;~c8Cn)Q~F+MtillR<%qeqWo+qSLPwR<;mvNI{y zg0W@a-8gpoAyjSNhOK+{lK#u6`=adm+Tul+aAafvt##K)6W7t-+iL+raj~&TA_m*C zV>iO0;}J*XOj&Jd|NDD7@$(;j%dpWW{^YN0a!?b1nQ0jo!2ZJXKV?~+mX&bN zkyF^L05j5-8ZTdp7CiKHciKeC#?1;Q$i%JM8rrjKsIJ~jo?bOscjm2^%udjv4DFwt zn_q;IvI=Ap1Hbm%&v5DNo93^QJ`^2`|6+){9{tcK$@lv#!;Ab(3fxQQc;99l+ll3- zT~n0RW2mg!jH1F~3=NPMWFJvR#)PdPHzg92-e3f!ZbE2$9wyw2w3{g-S1DVT16b}7 z6!@+zCJHQ);X5)ii=heXx&Ybe5g42HVR&qYb}(@-b+T5gdo>Bga)zdS=;dQ3t`OC!taH+og-=495pVq>-Wvy_Tolb@QnmjsdSOQy^a_R(iy75Os4HBnC* zl1xyryl|ChQ^8Eya!7JjK?9mF)ujB%lgDw_krSrxM9;s`#k4OMyqf4ALjcRss&$Re zGNn*RXpDpx|3xE^_-etwNL)n}Z~t&WssFP8H7#KZ3+9Urzm>=P*~6rjH}uMCHNn*eTY zZXgegV~Tb_AN8a#V_#Q0ltn-j(2Gm+jvt6G$$ZhDR)bpx0rrJ3RS<14`Bc;LOYsQx z@tz|`Q6MZG7w6z)_JyJeX2wU*!{;^D-9SfME3tbwuAO}ym(RV$ai_kch*(;b>{k#q z^9aWdE$-=9P1_>%7#JPPQC9O1e%u zUfyOl*Pf|u*K$iLD1+nJP;Ji{V7j=i{xaHc-9W?DE9j&AppZkw*4@}~=x%J=wcjv$ zSa6hpw8>Ep2#HYT3WGX0%W$dM%YS$N`*#lNE80u4`%Q)$=lpB;u`%}gUzI6&ujlg` zUFQ7vf6JjZTBeN|mj$nQ=O|zJ@Tiz*%H?Rv0OC|)q0tHA&9O1dMkoKXXndLDB$=S> zvmrskhsr!5KbR^XK-%=%LM?Tse^HrwR%!3a&qV!CK8}de!igoaB>97KO5>Z!n9C8!RZ_)cCE5_coYCkewtxDSA(>$EZ%rpsqXb$+1To3Z8@WQ zX^~5y+3V4U)dK>F=~jG{J5xxC2}62vyx9=SN=d8~=$f4_yLjg8shVpyj&yf-CeAJT z0z8xj3zTW>r-0I;!hreNXeVCXE?xM;>sK!QNmFg@A@|gDl#Ej2d@{K?@u^4z zXaqj=pC$=(@F!E8&JT`3W)mEIcRuTSyHr0*U6~Tn%O)lWF!ZyGGCjj_XwXR0@4Wvv z&*ZWGyWOilo>%$nC2A$1oEwuP!!+7EG1A+C;ej3ucekS`zZgePzZZQjr9E6i0*%gF zS1;k>t1n>D>!yJn!h#$pia??Sx1!mkHnplCh#-BLWt(G8H72+cU^7g_dL7(*2%rAr zFQQ=QKD4wqTZC%WmhGsh-eyW#j!&(Ck#j;oTF;SjrIlPV6jV;thK+dey-#8DzPr#& zp!U))eu&PRD~JhM#RI4AA%Nd)5oj{5!U;N~qvc>;vj}Z{S2VX$^~TYlSta<;u*mTv z&^ge4`XAvrYz+ILkGtJ;63v7rUMz5U25EVVTMX@zCDS$h+|diJ~MY^<^L z!b-_3$EUN}&4$^YY0g8w%V4(g*Jr-Tv7^2-+TslY{JKEbI3U%E&=-4Y(u2QRKk;G? zu^goYm8;9xySW@Y_ijg0T9T!~jU+(lPx4supVD=*PxuV2)VK6SG?KJ>N0E4b8liIf zYQjU2k}=8I{2XOtYt9QkZ)HU*Ovm7z?8o51ASNeW?5_}n63C|z426dWSy?LxM@&+> zIk*({sI;j{PZ$xKqUb?HMaL0@#@edVu9jviTl|rm8jolKHG#>%pa`VrR}ysi;dKq# zYGk(5qDGandG!LqmS(Z3kcL9=D%yG`*qz3u78$z8KC`Gyo>B_o#nm8!iEeZ>)}y1L4m~sw z{j)RJwW-qfeGgcgvJ)p!RIye}>J;GP=9#7GB?!!h#b0&f((kvLe6fVY609H!x6Q5=IfqeIcE%F;8< z(L-Jrz?TDfnJ+$!yhC6}BU(nV`c6ln3Nh`L3DT88?Qc+Y|iS65Wp|G&ff^?Rb*Vz9A{;Zp# z0e$b=*{uNBQ*oSPB%ANN5 zX^hR;b5w6ROtiXs{m?{bab-2`d*b8Rar`t5>Wg^c`(H=X^$R8g_uh2^hmJpht(3b7 zSy>n!A3-Sle%rPktY!etzVnJX3G!(utDlD`(?kQBgwM{&M`P`E_`S~lf@-tIPR5$_ zk@!8Be73USGh@7?r3o#!>oC;cV@?!h@~FRl9@G3yxxu!nSJNrcaBL(5;Ty?aL z^><#zmo70UgnecmL>s(D4k*!-P1KOqCrA6y-FzF(^|vrIJYbWz8JW2#C@DcnDfx%A z-bfkURCf!vuUtm`l?zxSy`DJz5RRRGk42xiH`ZC|@4fr>BQYffIk`F1IfnnFu+ zGv+AMl!YR{v8B+V_$7@elBjzv~}o;hokQd`dJ9_rZsu1=%#lCn*x+`J3L6`K&tdaSXjngm+* zFIupR`emG$ptrl5G`?UC``XLrP>Lf*R10F0vn!6qmAYT7DjFBxYaG`n)5J@r`#C1TArTy` z5OTa6M$s%I5v7$IP)@8M!*`xWWOjZLb{#r`Q0n%P-cFl@YQ23Eqy4=k1-6OhX^1(( zMu&TkoWQYrAHv4!%_uD?fc8O)qH(rNJ>~LDBR?k_^HW2l=Q*o$V^a&UK_c#d;saWy zhiAY43~H~OM_Eag$pq1=moi~?Y8-PjlkkwfwXeJ;nzUECocP0|lO_YC?Zmg*n^}?H z9^Vq0S~}3$+=il}Vq3Mwjv#F`B0W17#~yqV1(jPcN4=pH*OD<2#4nl*(;@w*>>1hv zFN`ux4rcXjqJj#OQ^{9K7aUFgU$Io_GgH%upng<}XX|6}9_d1IP+TBq+#O#XWt1Fu z)MoxU^mVqwH93OJj0{xoIgBSh{CSja+J@R&*KqCJo0u5xC;fSG^YR(A*5AbPoP&K@ z+M3bc+Gu+K#6Ua0IHzW3qlEM$XQ)>2IuphABeYnaT4yBx9{?K11}YLt`%e7E0cajZZ*kUI}(l zRtANIU}%he0Pi>#-!1(CXBf^^hB<};n; zWPXt3q+a3ktnYY{@VCA@TSBS02_o@&0s|}NMx2|8}Iq508h~M>mVb)Ocj6Q2`cR8vZ2eY2@KOB6> zZ-O`f#qVmX^u;pUvQ95LtbY8SmYPo77h^b2vP@-2r>O62;@J3KbilG$xa#Q0nsqyh zKk#wV!zxq13G--ZhZJyeyM;2K!&d1`d6w8;YtWvnlQVAO(pcwS{>k1_Ji+%eBOkz{AN!0=xHgclqDgL* zr4?9NT*0i{W&Q7VO<-xxNgJ#_u~po}QQFQ#dXT+-hnI!W*dKma^ScY)69Igr;P_~J`;^6s-yT%0YE;V zAJbDaw98~aIDvZE#Agar)jr7zXb^^5527%d;r(SBw`2dYQ?y~SiHTe`F4|%!DJ{cR z(w0H`a^4N!2jh*}~=_e!&=X`-_L%RZo${So10O15`tbqQhoO)Ju6J7t$t5H}R!@|o8$ zN;xY!*H&Hw{avWLaTy)NNNsgDEOV5CceI^WWKw?m3N3#Jr)@5fc-mmik_YCe{*D(~w8q zU%7D$veI&lhB&C^DA(A?_E$n_>51;vc3gP#W%%7JJHG(cTX$p2_C3_QTiN%)wrabp zxgNK#U&7c(A9Zs9-v7xzqz>GUZrVd~x>r_gFdN{F*Iz`7wkI+9A$%w5cE(opCYshc zv7jhFf$hu9Dlj`s&SFjAD=oJ&Y^A5CLfhncW~T7UE3aD6aw*%BOWQjkA%!+dyiLex zMSd9NigdNMxr&UX-sD&*gFPO3yYU477X3@`61TZ#X4&8Jt*jW|M#u5F9(eL2*togcQq50K zdx(!x(ACz2&W;uoZ`g=ENAAI%14nGj0WAn9%rC_C3un;O*ns?!a%|eN6_MnFGjF_N zKAPXjoGpB$wBsqXmxCxvV>r&s3rncEc9HgSFY7nSaik4Oc^R}i zkII}hc-LYvFdvPDuw(>8WFRm)2Xo7j2nzYLQ?$3#J3b8Bqnr00 z#lE}l=J-(0vMpJ(543g2^yC=jau_NrOR<%-QBqcn%*-^)CXhh+Oc-Z!N142oDqWMj zn(P&=Y69LcIO$dTBr+x(+jniVF%V`DZ@L}U9-%7HCAZ6A8cys)TP3qmg6P=zg9tFduI z1;;j-`b9n|ueb>IEyZK=b% zughoYGW{sqL!=!lzY;Nt{D7h{M~~9}WS=Tf(R@I}{o$6PG&{u4F;zAN$r$NF$r0&9 zcD>>=j-Rrv zDJN(T21O;{@z4Gx9(?#QTzK^t_}MdGwE#|GHsMX7M1JI0Q`(t)W0Uw3)em(O#2l*+u7c6LL}6?CJ()D)`^}T`iOB=7Z%cQk#Vz z|L;FYOMH&-l8^FNtKVnc9`i~6YX?cfwm{URy81_cL}kv=7K18F0lAU~THTyMnGs3a z)R?JnR@Q>dpDO(|r&Z|UY4*$digwFx#J-fzD24hkB{menD|1Ez!qCdJrvRpJIY%CwtS}I2);~HLEiA8z-0Y$P z?BBbK_BLf`SoBZ-{_nqTsnkFG^aIHQolQ^p{j(|JdFkHO;Amu${zF2en&Q@$fAQbG z{{6+zedv8fZ@l*MBXcWD;aj&>ng2B^J|0`P?Vzp+s+|jp{;BqWSDAnEvG-<=^))=P zu;_^+biv5D2fnpnY~Oo;;~MV=BER#MfB1U;AAR-{mA9^6{%}TNd2}v$Oysai{5m{5 z2sdq9;U0~%bgnXMiEb7Z7)D-_ypdiIJt^qcFaBCt3RqlP4DiU0M9f8Djzr?oD9U_~ zYZkM`Rwu^{P`CGg64gxwU;kHb-S@C&*SkC!_Y?I_-eoWl*Ckyab#Oi zTqs1Tl_{V(T`tFa$zx1Uq8R38WvB#>LTN)mXO;3sn zqkLD^mi*#Olob_`FN1u+5s5$f+Bg5nQuF`*_}x6TXZ!Cb+kXd+-rnAf`WrVs_2#Ru zeyOdgasPtXn?w{9s7X09mSk`VRPm+B1x>_K+UlR3*C)rhWA_}GLx4GJlL{Yg9NHz`EjYZGKF$5tfiJIgRf2g|UPi~Qr89Rk+oWZ-oUAd@3Q z6QOe624IoD_YU@BaAd^NpAOJqzxwX$sJ-}(?OUsY3|O!{IZyOFfl3)AD+G>9RNk6g z)8lRLcwQ?&q7=b0Cp9r6r@Vl%jMuE}3?wHf8u)X~dJ&fpM-aZDM6@*C#?^CY3B1E_;=#vp@c#D_EcoG_m_%NFu|;nPy z6}ESl3S@}@WS+|2=boX$^VxWq6OuP*1xF#vDypnRnD*iB?85cy*I0H8?tSom*m~du zddEia($9a2+XT{au`yI~sqoEfwXah6XjMuu`;)ZB=iB(Rk7bnWIT~h-sR3OBiw-TR z5A~+=I+QBk`Q#j;Geu*sI}FxoDvTgKkmFjCn}Lc=6$a7-uAJ4ljziB5_N%~%(tv6& zFgcEF!kvm*tDQt&T2ZEbr6Qvf`5VO{jW(?M2?A({O$}nfJ&9?81Em}GYi}=W=Q1)= zqOGoe8p*4Hp-4>6=Hs;2D`{7>929{yrKC6hP)77f)?)^(4Yv`@b6UNakr;(of;53S zVnD~)$Ev|(kEQSUfft&W6 z)=J4h^1BS=u(f&QCM@yUa|EA3m}ePHofB|*w5mH0={Y5++Azhw}>xaA5xd_Fpn$0vE7n$3~P?loC{ia;*4lwqL7cWB{tKt&>GJcN{;GL}Fp1 zB^eTSp2h|HeR*Xb^X_p>j&#F4J!(e340jbGo>HHP?(|aRxOgv$hIS15$mE#_j=yPw zLv*Hr(>2B`JR^eCq=H4&vQH>!NHfml`!abvNYTx~q;pnKvV~Q3>M8o=y9`^Eujfk+ zSliSpHHcqK2J$*{0P|&O@O6di#%Jj_@rXdHoK=~bxhN-yt*ojtXWih)nC+!(>6Q5m zIk=YyZp+IGuye;YOid`YC2uBwDn-^j<&b|xMmA+SpCcaC#J$?ANpu$B@U8etpV<%M zuI1%}&85xTa_20tCyp zvUuO&6X@=0M@wxDw(i`GyG}oZw)PfWdh=y;wbi5U`b7jRtsyNlo7Z)ivv_i_8=;ih zdagMdSx5D?W2ibtn&?MzPW`0S>+b1sc&EnTomJYyxjTKtu{3(Tb68oT2Yyz0d>4t? zPyDW-P=R`$h>d3)eZUeN*{t!t;~3@5wg;nb;O`5IKGOLhI-2UyWh+gFY}|7Sim-F% zer(#d4GF2K7Hu6E5KP^4k_J{Gjln6)l#xk#NlZ$#RpZ4p)a2aj=<32X8h{Gexc9#M zv3=)WgM|ESFxtahm1U|1cuu_t=jXlx2MZeqK@Gqo~-tod!aZ~??7i8#s|8w;+Gs-#nx>c<9i>1qOrT%8Zjs*)bI$jFRh}Ii;BuAr@L$$G>s4%_NgBn8bICEOK7-$1@m)C6UrM{w#iSvRMu}W(jDEv zGmZ`;cAFX>K?n6_Q&WSjq|MCCqV5dDm3Q8>KpR%X+4Mg7oAi&6kn}_anEs6aj3LG6akc4cZE!Tf}-3lhcSx zPD4q48kT2AuuNGe9VfgxG3`PBs59BF$z(eWQxjX6Jd}Q-3_&Q2pf?T$aO|=hQc%4W~Emj4MA|Acm^XYcyG}RJWd)Nd#zef#2O;Kjmqh?JGSx zGC_KoM?`eIDq+2%fYOoaX-teyI=F>=CLAQkQ)EOGPCxV*?mcl38;jzQ61zf-7=XOI zG~&h>q~&fv`PPFNCvPjrEHA$R$L_hGnA@3{)VVdvGdboYFQpwd39kNCzuO3^Ic%Hr z5^f1MUa)O+>@-QG`{c+9Cw*vJ z2jQCJR5`!{*zZ2eW)d48OFnm2&!w$jz&NsXI1Rry`P)Jiq1 zF^~cm4QNm-T`Bw0t*kO$pJmDt&xI+4J?j~jn1~&Rj$r$qLr71{u?YwTojR#gWk&}i zHZj9+vH}%C0$0$}avN>8u3&<$r;GXDMChW0mrxmY1;pkWlLY@WaXi&y^S^j zZAN7dA&(oWuv;~;vLt(kbyhp&K(>rVc!;bB#uKY zqNxM40&Sjs8xn>uo6Q}M+^^oMKK)03iQPMQVqmb( zvIdBUdU(Ie(d3+Dn*#m1X>X5@jN0noiSaSqecvP4f8@Ajf}5C}Bv#BtT51M5o0~B; zIgagn58>g*p0>%JcIwg%#4_4z``p{FS}>r-SU5f@Jr{cp9JR@)iP2#T3X5a^oO$C_ zG~B#^Wn#gZnHgKf9~}{9W3Rp!U8SdI*(8!CCU(_2_Y@_(xEQCi!6Ptu0fpSEBxx}^$kLxABiX@P>3J9Y94krz15<(Nn zNr?$IrkeaPw&P2(#(X1^jr`6t_A*+&bBJ~=I6&o+zV%XO0Hq6_ro2!=3d+)ow9K4r zB&Vcf6Ky@M9@Yw7Z3T4p>=}f|Wnuqa_o3$M1zbP(CJr3jjgsOb${ZKv0_||p!RY7^ zYHM%FhlQ5rCd+K2Oi1#(X#2C4MviGm2W{wZY}m0IyN{f=!p+w%a&c}?;pS% z%Pz0pf!%CJbHgn>_v7y(JHHg~dHTcHf9ROuEd@62-FpC?#2eQxy@RIuT6D3UsiaM1 z$Ibia!nHjLOm*xM3#6v4Ta=vw-%2=oCgw0m`R-m^<@aDL2Gh0+ zjwM~B5{E`2CMM4MO)6zIFwFL1?;V?=%|%^7c`Ur937cu!V59D3T&rzidD>e!1p7`t zg42(_-vV4;d;Uk58XYvs5zXCw>M?At-i9k@Ud5X)J!kvUj|~lDg%~EA_WjoFTP@%} zElpdhMBDZfIXO9`g<{$tNqlao`7;PS4EISlT3|cntuonZ%P~DGGA0tccJ5(2l;Yl@ zS8Wrc%s$$ZDVVnR;+#_SFCaW28_|h*l!cMdwvc}J6vl^pDWm+9eamJSs8CIuEf7Di zkiSCM2l9WVX5<*=Tw9vQqIZhryX|?}T2MZi6w2F@s*SWywvwMKk((BU=up;$w55!k z$|BW9S=Mmt270=>sq-UINgH(U(Gw`nE5zk@UnSN&Pa8mi{IYk6Impu%U@CqyI@NdD z*c>cjQ*HHDv1K|rm!72_o-{llnvq3>m!78=wRl5`#Q5TD9hDW$-aN@ z`u}epYJ>cl|JET|Oo*f1O{pqM4P3(Zv+#w ze#>?m%{EF_EAU8ml|q5FFimoenv_^@o_r7|-!n&RCCooJ8#ysG61cd$fVAXjV)0;1 z&iFCE5{TrC%%13&xaa@&Z@=dM*kh06)ZDoC=;-uxjBGX?nFYDnyL$)wNjfm@n_vF& zS1mpHAAR)0Rede>k55dD$N7krv`uMPOfs?y%85b4>!(+jUiim<{L#|K9(%a-{JFQ^ zbGxfMTwDC*=I2@#&EkS$;h-C38+Sfu5909$AAT}pdbs`ZdH-zOoNp0c-zxP@IPJ*Y z?89geLZiO8a6sXU50(xW-41lK=Olq^5-` za8$Bfw!p3()wUgMKuGNEfRMx&7N*7v>uz3qVsv&!dmoU`LXeP}h&?;EBQ%h9ZD?Gp z*SGlnuYUEbGFb5955JbsUVr}oF+AM%v9;C3(zSqsKz`=fiT4GBC`#r?GKksV$OP3kdZFhb8^sAO7*XLn`z4$M5Fx#V>yG_ml1a zryh!``H%nU%b6$cJ^tjo=g)uf{JZbGZ+2!fiI5^l6Nq{VQwV67V}}Au`c?{9!e-rp zsAK)zfC#Ubqip@0VFRfsVFCTb^D57T9?O)Y$qX}|v*+jha!)JrQY zxyEzBcAcH#f0p8#3h~CZ%jjsR1t`q3vU8A-lnn2@kA{2~ZqRV- zX>Gy;jgBS1(s1#1DghasB^4Vf#8U_WJI!#Cg5I!U6L##}hwP$a8a&}>Ywti)LnB;M zG-B?wTh4YLm4>3XH0h+tYo%$Efjc}pg4cfi5^mSlTGaKaho3?K4W~12y-LGr77x7l z{kAvh=wP?4R?W)JLUNJ}7&)~gp?xy_G`0n176?eR4~g4713wL3rO;ZTVW|CMv=4kH zjSTH&wnmWs!Y`l4VBa7P-E|M{dGAx04+_C+FTa2@FF%jDiD4YO`ySl)*!vN|c8`vZ zvR{=NEt+py0lZ{1p-B*pi8-`{Qh3OqP={*-^jQ(dA~mBujhT%FKeBJkDH%#fA?U*#AO<-=^%DzAx+ zOW+vN$PH!*G=NqXXW^R}rtvldrAzdCJsg`=8hY`FrD30z5Qpf9KtzYDZmbud9ULBm znB-K_KifpQ(_XNF;nD08T4HLH=s9o=v#v23K#ewmAV8527lFi>5aU^qaBNB@5Ke$* zllCE2p89l=2BlI?PE5?wSR@dok+4R3k;6{=a3{xy6Sz3EpIy2cG3mwZ1KrPZWxUF9 zNDvzz8-@k<0F8lJj87uOmm~b<@Ch z@iFB8JNHNiEeeS1Pi-OXOE#F}F(lMhrs@z+>QP3kMwW8&l2-V?`ct6K>Y(d5V5*<` zOxs7SEYDMH(4Z$!=1`ODoO>NPOuFS*%IK7_YjTeUpFK>p$j?sQSSOy6qfWG}L-Z^| zLg#JLp6wU?^5J~8vw}$hGFdsPG(v*W)ZAg9)N$MsC(@wNzWs5DamdQcrlB!QLvh*+ z3pt< zKaY&!a@11pzwoWU$52x(B1y};_aDb&AN&l`3rjFKIEaqsI?PVfNb=0#?O#8K>t|j; zJdL!foqMS}hT$3?wv`cOWgGdtIh=jtm*{D%h2J&KHqb!fD2q=tsUoMO1z)gFR9|Pz zMG^{NV!tVk1V2lDYdqHVn^@fr8&|$`6Z=e3PtH;~^JQdc>_j;F$bnMVnhcQM)F}%D z;(3jstvKUn#}MI#yvYf4qp`rxwt8TB(Mf^VbPLV5>&%&~bYVFqW!Qb_2y)m*J>5O% z?(VWkV6F7JdgTfx#-}WzT>C}#4G!byKm9Rz95{0H81^1Gh|H`^q)`v{4D_S1zRt!= z&VKFj-qPAZTJqx3jIShCTcCBd;)@29b{p?Ppo@aE}k6vF^5QM>0aW6%!kY z>Z&RvOOEohZ4&|-z#N~hmO6AaHP}9-+OM~I=PqpBy$_kWMQk%LPrdA&ov}!0P3~Ct zvCsPZ`f=vFFt! zUQfS=htR+b)Be;>0FUU+EeA$y6ukZgOi#~}R>I(C-_A^X;PcKSGcyNKadA-K)rouW zLmcI!R+TEP>KysJxNPe`u^Q(qUAbBy*MLB*DBNJ>hz75H*6 z4-O2Vx#>0D0_6+>Ti|BbCMO(`-9z`Xs)ZFE^RSA zqltT)2$B5fyG?ScPO2;a^j+9j&os_rUq;5nV%LEa*t+L1+B(~D{nERb8SP_zd(lvH z0|R|M#s^w`w`uEco4ke@=@eCwZ`m7Jw#Vus)@HWgXRqe|f0dS*cOz8TAmmnqPy*8s&Wy^%r$C@7J^; zA7b~iC)8;y&v~iMDqsDphZ^?eOV8CRsxV?8!SXcesbC+I&n!#j z3ZtrB{}L0dAJPX(ajaFns=pkF)(7j?u$nfptM6(DKkN979^t#_!!9(L!B1?n&MT;L zg|wv=&IGvjd%9Nt#Kus*YbylU9=8Cqu!=BbZb2Cyd-}7;$;rjy zWD~-c#^9n2B*)e8;1I4|Q|6RO+C*1T!&gd128xQy(9%?o`rGv;`zEK!x5Rg9m0ql( zwae*ChficX>bq${UKB>&)33IYi|4fpUhNVsD>z5EL#xr}{7Z0oD8nd2)eh-I1t?h% zhYI4jYYf!?!Yy;O(=_?6Eqk;oeU5TWtI@TciP>3{-*NH8@G(&qh$NY=$qZH8p(P%w zH_O*Jh?Zp&Xd?N}KATogJz8zlHFB2DPPcVJmCq^k()s{8N zcH2@Yr;u1L(k5(UViU;6gYfz!H`ylIe4=&PW9<4n*iEuPfehiMN7V+&bN%**T-%B)n*EoSj)TYUM_O_gUij&^Fh1N*T@q&j3KrPH zhl&m~o|e9zne6NeA&#-_>=#L)gOrTu@`@%vF)UWSUYLKG99M+Yq; zD#%aUatfW)J?+G5%B-QRXMy37aFf=xT78+ISSgsJ*)Pe|y|UG{l>$lLbd<6+Dfmiy z+a}8RE?Y+F!WT&c3hLGNFv-->lFK$09CW?QpQ7=1@S~{qU&v1moE+KGZOS^PfSjpG zjy?HD_Oc9Kmut$d{i8qqD~?YZG1eHWckIO~&kc->AT&A!X=!=5a_&uBJ@*FrWZ5$9 zC^$_k#sm3`#@ZWbY^<~3yiAs%z4C8dIdA)NXJ(}#C$E6-xfbX#NnEH*O=H7@mTEtO zywyz|rc}WxIm9XCX=NZheDnmuqa4|yMG|waSz@GK^Wh{A^UD9BN&Mc{Ms&2)+n)Q6 zKJfvJ^!K2tp_Y9ch-BLEH*Z{n%RPe=ryf9JQUY3T*J5~L6seh6h+;p#{pzn!f9ncD zh%NHVHW8Z^BZD|Omsq=~qTD7iTPPndyz@FrHf+Xy4?l@O+FG;h%NWw^^^5PI=Efzs zrYC9pC)#Rd;co?oc6D}`4@!2mG78XL0NLIm#JF z9xL#vw4?|Jj~qZrdAS8x3PB0anGVu7)GCEF8Oqz_Bp4B9<(H!j` zWxLvY;1J@X<0y}ag-N?)XWBhJEV@SF9_hfmXBy#g8Hh+MpwS!2A6JRR$B4;W$s@G! z6Vq)%&#)S0yN9}Bo^m5BG75S5rHD^T<8vufD4TpUeOU1JV0CevuQ@DJx5%!yiE2Ju z{w}3tF33y8=FLUOPDw*^V>{))a2JSA$KahAN4F+tYpxL!wxi+dd9>WRW`PL853=2D zuXggX^pE)q0z;fdHo>&X+0P0NQ|7WKKKglVryVphI)c{v2K04yn-8&cV>J%lbprA1 z%VyG~UVXGB#)pS+;qBK9mur=}w!M;!Us#;CK9%3df_C@}WlfXqqcM^monKtQj-&VD z;rD-%wsHj$X@?1zDZt$Co<@IH8)}Ie>)0*@uw>@t6Ek@6{13ivHj!2-D_f+ndjR$4 zGHug{Fpih9Fi{ujr4{}0luhsZ^dI8=ANrVO?ohC*f&mK4%CPguaqKyG7y-m8uRZq@ zta02W!hrRJ2Qzc>IB^*e6X@Yn|6APxV#mO zH!h>`Rt<(mMiD_dQ@v*|cI-Wj@(o*%n3lo5h+rM%t6DPJaSm4CH}8CL93^)-AdbI* z=j;kq_M>RNGv8H#`s-& zOg52^wyd^(Q`XQ~Vk5EwA90-}(A?yzhVDWYL97=iWQ* z^F<5q%3dxY#@MxO3+X**Eig3l+kgM}U$Yg{pZnkwhdOTGczDJ=6Q-CB;pwP^Ov7G5 zL7_Fi<@lE~GBQ?5QsQ=Ax^&?I&%#2;6z%XCmluWQC8#JVr^pY!_~oxZ^Qy|z@u?>t z${ibOd2GQyN8l1dnXwA@N(eUZ*g^X`ayle1?As5VJW$lz)B4%SsK_0p!%&ZFlGtg= zFtc>DjR!kKy1?j_jH*BR)FqpAtoyj^5TEcco5J`&_Jl)c;xTrgj0!e!Eo5=Q7r#6| zS3Ec8DGQAZ3(d;SMsX1_SXl}3^Kz)S5=l#o2nvh6m6($C>(S2EteZEkyvIH7i}ooH zfPXoKdA71WfLJUvD!IO(u=J;2`qGz-sGmN4*QU;fTYow@G?Y9(F%=LH5*CnOlouQs z5*!^698sT|S=M&=@Zq4|+t-g>y>j8u_^c~1CR*FaETFWs0D08+D+qIkM<+h>m9Kq! zTxI_L_}x5ypGN-w(4()fFCic@=AH}Z-~Q6AtCv4K*wazAyfiQWI28p&1Vw=ah2w1F zISDf=37+EN2q+V9R34h7b{snrSdvuEAwx>#2>j_5O|Y0DMxkd4lpjs(3Bd48&yzsZ z>N)#vK++M25}J08ZsRppjt-uavqF>HI%9@EzdOz`-OI14HwCa9VG@9f9#;x2U3UjF zIpy*mb4;-v=EP(@ECQV0b&Vdc`m*-cb|Esg+3KPn_+8hm@>#a`Ey0x>x_uojRJ@&3 zmMaAH%eGp~J=#yO?6Y#@kT`JoIEradMbaoND5{_Vr!=BKOJhA62*Rc(#%T1WVAGau zwnuedQ8~tGtT#6`X}=Flj7^&JYi*4{n7~@;QATL6o_+TWYH!{|c1|JoAH5H;DH*ta z<*I=`?fJH4*M1E2cHxZ|e}X0V6hYxGbBx5&0MMR=iY(O%1OX4F2UoflrQ}mo?}E=` zk(VAST{%ma*#79)L`->nxK&?|j@EXh5(t-7?Lbp|J6?Y7#{{&s2q0*eaTY^Gl~+`1 z&Tj3wom*H!z+HsRyY?cT@1v~0B7HSXnxwVE2ErK&(Tjm#ox4MO8Y`XGp|RBXC}2T! zWV9q&;q?NLk-YbwlgDx5zSA_MV+of0=0M<&1oSjstYAJvN?ha2_GyJc6kkTu{7sWp zN->z0nP-y*N_o4gl*jHd8tEf6Zj}W=tDi!6Z#;7IHy}1Ch0R#BeSp(b<4keNaEy&l zrZT1x$ns>c2ZlsKdmaY{g*h~AS6Rcb;P;@3eY_@z2hS(Pg(596oWM{ZEEI9+g+OEy zfjL1W!GPE8f{)`nPq68uv96WpYO5wDw9l^$GDSZo#D?251lH3EDiNJtLRwyCIS$AS zB#865ConVG4Zmxc#?b->hGsG6m*d=VSh@-7WC&>#6iFFC5J)cK{SH4m4#+@61+Stg zEd=pV>Th;aP$&i_d>EPX+C-!rGjqOW8nzLrsN7(yEtLK)J|-H64;{w7eY;VdpN7Q5 z7}BRE9Gn$y8e@yfl#`Qnc4Pq`tcUCQtfyl@$d&KVjM^{x;+Y=7#84;OH{h(|lSAEz zjeRdZ=leSCnPXiB5NXtmO*TSK97WgK#4?{FIxz<%pP_pk`DhY^bEHc_*ozZyclYvS-Ls#oF&#M1z(uU^@ zkn%p=G&?m!n&_nrSwc%|k7Ib~9{#L-O_P%naO36;{!Y4P8|92~vM&T-ep&9y_24Lt z!#_KfO|Dv9)MoM&<#KfL zm_Sxi6w;H!Se9cVDV3H|RV(WRD?tNSY2^PorLg4QsYgG8L#Lm_q-Pet{QlQ*^X-?g zNF!{=?n8LwgP%q=WocJeD_;2NGe}BE#9jA1fb`rv8Y~JxSmJX7F*Y!W#P|dpKXDSJ zG=P&SpVG4OXuwU|9>p@=wI8d=89vtn8`x$WBXv9b+MxwatT~PeU8@yCS}AAxO@F%h z4!K&tYf#8@HpV=uccW*0HJRp2)+mF8qZ8LB-T30QGCXbUbuZ8AgL56v(HIqN>waBp zk7oUpHdhnx%L_h?5BHcex25(bMu&%JRD{{8L^<^oyyRw|Dg|dsawaOOx5CTuP_WGG z^ehdL7;N6M)l$f&q^2O424hWK9aqQA{JTxo&$$4Pu(rYd2x9q4xhXaBcnsOdGQQ7*f&Gn ztr{R3Q;nB1o+6e2?7QoPt*ChOx$j{|st3^wgJOuk*kYrp&%F23^$^@?qe zW?4|gACj+=larS5psC?DdV9N#-WG{Lw9-X&;6>CueoQHA0eO0n?HwkswvlEB2m5H0 zk5M1Za-1hIMGQ4IK4Pnr#_#MCx^w^C=78L=Z7-T`*Wis`{uoWyFH^s=f7m{4xl?=n zBCec$2enr(V{CAMT_0$B;NN}vLBu8|p{e#d7G@nf5`Y$eX~IHdWQ@!==^P#6>2>{Q z`iCz^uB-PI{GyfSj(is1%F$!|tMYUmpRMvW@m*B0$zIx~NUL8YtMo{fC0T6j($k`^7?KwA$D zjn7ybd3BfMk?N#+TOHVRr+Xwz`JI1kAy4oiO>6%~UHLB$Ia*Q^LNPSu1Ol!flE3S= zj3$>th(k3VcDwbhx`BUpPU(Z$7yPqTF1#l)LRor9dX#&riz=$>sjlnes(SuUhv|5= z!KshY!kz2&(xLCpHO_B(u7ZV>a@%Od##Vj9>-kXil?6}n&puN==(lzJ<+SF`CstZz zs9gKb^YdO|`8iwRtWFM(h_T5y|D4~P^9t5<&A2fzJZ3?rqCaKK(gbf*Tq5py_$l1| zz@ruza_yaGkr}-NKg%4`>PYV#x_bwRVMKEah)d4J@duwmR$d-%UAc(bOJ^xlyGX3%@yPl`5Dn#$8X~gQ(53?SR z@rYI{YbBFbN2v()rMg{x?wsI%JZEEIb#%r{<1xcBJ;YJc;j&dIu`N5w!TkrQ^V+HN zCQ)3u38&xlB=U3fapCM6ltt&v22g!cGx8~m9z#Z2IF%}w>EO^Po7@QvkFiy;UXJfHpSi$xTL1~=in5`Z zGnSZ7^k>1aqD9tUtKM~u@VEF;%prXcPy0?m4@tz03B*orm-b|xV81V-Y{Pau^7JQ= zms^AvpZz{Y2D=d(9c?Rc70{q^B>y$xqHPC6#j%MgHu<1eS@kwc(;UG*pLNezAW_|o zYiPTD3w4*z;nLf$A)Yepvw!vXj8b8Xe@3qSilddUy6 znPL*t@zCQRA!f=$M_V)MubfAxw)m*KiO!bWaE%QigmfaBP`0${s!AL^yodI1F8eGN zF?{}_-wpTpfW5*4mN3|P8@|~gM2BfrUnB}kOR#zCX2cMGUZ9@proLQTC1xERwE#0s z^lI`!lV6%_my8pgY9&`tkhazmR;4UqdxiTnaUmIJ+g0#--~1x!Qh_&dh)<*qK>QUO z8*3|wZ7)>Phz{XWM|O+HhzeM!Y{zM0B4zcHj8QMkCY5x`%uKZ)mF(O?_UAA;P)s^Xz#8RCWMl;UZM!Oj^RK;ziP146q@)>5DR@Ge47AnJ z-aUITHq?hV-gw32lO{dH-UY=awoiH#<+B1eoCKF;4(~w(QX^wOG)6Vg?rW;pq>(V)5kE{166*`z;$# za#A|NNuPB$FA{G~5R06|sYjl`#;x0IB3ju3Wpj>=3?h#5yoUI4lJ|zlj$r>w`YVtk zi#E*3lkYXGH#gZ25BYK-Bo?XUkqGL=5P})4@{>#wolxCjbZ7vWiN|Rr`b06-x|GlI` zFMjp2Z=A1*g_F7NB^q+E7+*p?OZlW9w&F!H4W<0gq){luE$EwxF( zEXvm6*wq|ZK2HHVmxJ2gUQF9)&`pZ*H&86uj~3t6TVu6V?hJ_ZmUZvW2D1$UNT%0{NCAF_&i?X z#}sVccLaOyz6be~SIT%IjIV35a&nPF`gq~T&)}V3KWkfVh~HIlXGO4+8D?#j_?G8G zL!4l9J+FEP?YPV=>T~L03K!|-=-6lkEG?k*)-7DVa1PVNA@@A=ICgHX#?PPmx-C3< z=ha`EUsW=Z@RNP1URtqXvqOE!!-kRn>3Mp9^tRzaeztS0B){??Z;`)rERhz)Z(S|* zs3)(FPzKdgXEfGag~vyX%dwI^b8vvhQFwb1?&%2(cD11S)>Sl+?>k!C$a8@xsoH{F zci)Gtdkn=gVLJr*~8y$0BgDr(w@{fAd3gK5vBlm4l-*Sc^!&)?K@ZZz9JQrbotW zublr6{(0ZY$e8$WWn|SvyB0hNA8H)`CB`=VEcryaXg)ZeRWO~H-0WgqCI02RgH@a$ zbMcJX8FrrI#Fxt9Cp%~SO4@KTge=oG()O-lmW9esS*IZ0sj0DfVuQouljFNN;2|;E zrh{XdUzCgOo42sRr01~MYjFw5zhaTr{+nlB`E*0wjpMW4xgag>iH?p%VNt#UIwLs7 zBPm%M-p*zyUJ5NbU!O9@u>PZlM<>d>!Na4U+s0GR9?2?l(*YM_2M;l zr^=GhrIOc#r@+5+p#->Axi2A{zir;U3mF9^w(?K=LI=?>(N#`a&bu7c65LVYG*lLR z80hXY0I5J$zhfbj0&-?zgw0z))z)1&bmAfE-Vj^a)mV4cqAL~kT~tzxO+5mx zoi}Z7;eE$XV}X7A#tYBl>`OmFFb$1+Po6+k^;XtdAP2T`OU{=R8lZAa$_XPwa%N_V zeW5*4yqKMwAxNQOUk$MpL}TMqm|&l1BFI_EF^`V6MszjaLRx%0HdgP%3j0r!rUU)m z=E&Mmxf%KD%jsEkbav3Nio(_%hb$tnv#A~-8WVLX-!M&@U5S1)-WmaYmk}f& zFFH}wna&GD*|_p|9a^oN7!!@W>@0#V8Y0V@Xr~d)hMNJm3L_C~Hz_M09EMsJRmWJZI)l+4=34CSPh0#C{CjeBY27$Bn z{ky^mZp6A_flDY#3uWE;a|q=LjixG;Y%gP9hEBD;i$oZL8u$5TX(p8X{yqOXFrVB7SBaL`BLrz$-Woq+PEIvl9cD z9_zyrjbJhk=|P699N3OC+Ya5!vP_QYJmts=$4l*&<4&tr6ewVZ6y=YMVfBmX?l*GH zijthw{SHlu=avZ|B|O#x0d!8!P*W70Ym+IGX?&?HGq6~Hm1Ef*_)X7oCT8?Szw4Z; z?eK;@kN4V170h?-Yplt*X|{i)zYRWubhpQkmiB&gB&aP~jqfASO-hMHMVVHmHJKA~ zo`#G9l9XCl`}83o)M=x7mSwL$#y~Ou)Q{@Tuz+Q3$Ps3rCSY~aGAn3ED>5c2Q+fs_ z*j`;pI%PY|KxLn&C4?g*McF4r!~A1YCtW_$`I1eX_~z#MT@mmR*mvL_Jobq{MM6Ol zUjF&_@%qocgJ~M_5j0$m-S;?7J^e}emb3@q3Ucy_Y^8xB%x|218{@+R*t&fuj-0#) zJ9q6P9fYIi+Id^$8X22_>sQX>{OiBOXm^JhUaG0nx6U|A_m~<`SF=0xO-7*jOdTTn zk;7B>sDF98U8lZcV@X3=X=v17<3=ST`^0>}+fb=W zqph`_2Fo-OQqtjB1e*9gko`U|G=eLaFI(zRm0elA1#z*ItC*(@q3)e`VWhVMw{F$K zK88Z)UuV52H94n&>ei98hSzrQCS+y0(iSbzUj#Kvf5f)6Epa@a@w9mI> z`212Zdd8R0)=yqeO`(3Kk?8i4f1@k_E0DCKm8w~Jg@(;KJ3FClF3NBd7Dzr{RVE(F z1JZ=_pl@N3#%!Qv0q7qXcATNq-!Y_(c-CJlycB`2ZE8}o^D(A|ETseiiTh z`Z?oCrT5pQoOnjrCPcq#qYh1GX+@~^Q*FF`8|`ha7#F!0WR^*b-m4Ro@UT#|*>YH=(ISXuKIiC91A7b~hd(b~LfHz+JIjS~PSqjQT;+;9_ zOr`VG))<$Ux>GG+E0#HAW`)rSSMg zazMOhJZ(Jd=ms5f6v){kK6Ug2%h0>s@y~}Q!L-%P6CeC6aYX`dTs=oQxWaQ;q`_z` z$)P9xWH(8ENDinxN7fk6i)Q%Ud5-!}GDUS#x9LXbiF$fP^)@{A(a&Pzw!NsSyN)-0 z{c}tX^${DUW82O>D3c2MqyPZ_^hrcPRNb@{W!2kJNxnIF>?CnRKDyf5apml5wr6pz zR${fcA|^E(+xH(uRYf@_dRxe2vlh^zsh7dADGW|f7V~+^Afe|QhT|EXQ*RnQNXFV{ zo%?5!epSxww1>%b2XZQ%jYscMD=uzy41Le-+=5DV^bW#=_b9g}?EnbcA%jUCrP1OFVfi zF)_);*c?bK!^TZz2oJB*nvI{%3nyz#9XhfxXS;>T^lmcCp1XoMZC#>OYCNxV85tSm z*D#x4Q;^iq&?v^mv&1IS=e{`)<07f`oO^%>;v|N#zNy7NPA`D);*Mep%%2Ot+6zQngmuqitjW@ zBl)MST{iK^aaP$@C=bb6!;)6E!`G61*3bMW+aiqonv_iJ&#EYGuKHbpcNv-Kye-fi z!LnI&-t?~OYkj|FTaqYKfMl2Sz1lJBp2ZApzrXm)FXH2$`lM~;bL09o>^gM9_GrF( z?rpT)x@40?+Vgt%!Q;69k*DFK{y6{gj{sK(-gB}N`*xPmev>0sfwHVOv3qz#5K@vO zP?8sg(yTbNG_>N~^H-6URY<#R8*W{@jN7;CP`&d2vZ1!<1uQpcfbFDCqOH8n>eEh_BBZGbD=g*suR zzu&TyXi`*lj*5)1zK_qyp)NgOt0oIeE45k*@4oQ@I$P@5CE_m*oCc4Ftp?Q4-r+}0 z+{iAIZLvtYpPQYscWq&%{umge?a%9!4I(=;$F`k$`}JS5E?w5=Sw-b|_{k5MJp08@ zzmHp&-lZ+8q0lNi?J24)>E=n}vg^S9j7Cv$9ug8_Y-@*U;w|^Y5JG8J1}x4IzYue{ zr_6ya`&B_PO81;rSdP@JY>bUg!sGQ3vq-NK8m|RYMO`>T6T3ae8P+oy%DQTHDPAjB?_3gAY z(W`!3CU40x?x7vOC>~%p>pHEtD=aF&V~;;>lj6-y4YqYr6y>XQmok`jx3yq`=ajlz zvNka>8T$_1g`;<$#G(CrFv$DPzWWwj3LGbmDL6rPi&Br<#ERdKiSY?6ktf56VFei#R955U z=|?S~>Fw8^gGX7p;*xFu-3(&&oZK9wrKTY!GLrap#j+!4E1j3n*%?Zx6s z5Orr1#-{u@Thoc=K`*>3lmWzn#~ykLANu5<(5@cEkG}Oc=q4t1{2Y-udg@{9-hUX) z4K;ZC*T2B@=pcDU+_Z+&q*(0RL%pz}+_q3r_65mK;Yi^YZ9~DX73UJCX+q0u;q_W+GCctX*=%URf_0vz{~bd{J+@y5AaB{>pT#Ck%2-1g`86( zHqbetb57GeInR(Ya8MN(F>Y-?>vyIy(awPlJTMayCs4l_B!$*HHOdphTCbT>jH z=L{53KozQx_kGU?P?BYNfA6!u?bX8%jYicM?svlp?>YC}b9u?iE%fuTvf- zC&ZK2*!RSN@=qx{nn^6-a>+31Ew)+ZyFID4wTSTVq%zTwc6w{A00-`l}o1cqGPmroN|D_w%r8B!DJ$3zRpSB%YPsqh>Ub0Grtsj zkKB*y?YnF;KQumOTL@jda2hwL$9$wC`7Em_&)1VDs(0$-5`;wfToui;+> z@Tg6;xPYH*0!%(u@{9rr!y;+lAA1zff9^{N4+e1l#G9zQc@6g{OEkfsTTqP6TX&#x z?ONiD1+&>V(oVh3cPM~G`+z%(Gt_aCchot&Pcn+#Xon{D9ehrK$i7@bomjnf8~>IQ zk3^czUEmn20Qp~JUsu^eaJ~)h2^7b%g$|U()eP$TK^o}s59^pB?o6jv$ zCI>lQvbVMELkoY~h@WLYXXh1T)82z77xHPN#l*Qu3zRvObJ7V`0hVp{JKH0S=iq#u zC;lM@G6J=VE;aQ3wd4QY@(jaToBr#EVO-v;EK6f!6Nag@U$(G>0(q6WNBtpul98T{ zH2zLgo@!eU1rgbHvfbUbxJLnR%7|&fVv-${IWA&`*qA89N6sUbHn5%*)|7wBKSlms zj35sXBhb!|btkfqqs`}`RQ1XlCH$>yJzCiu$#NnhV^~+poCw-%iQx!Pj*Jg0OXMVF zjUVx`Zj200;?(6P^o-4bMjl&9`e0vpy%C?D(s^_ZLXwlbC2q9zWr zJC-<;SRuvZLNvvK&lkdwZyIH*HjHep-gY*kxH#cn-K|euxp8H~_|#N{f(HWBDQh;Z z$L5V2i67!8;*!$7@$deRe@8(FeCmn&*Vf;@d~9lFDq4Yv!MQM`lh2CEDkK3;Er$1< zE{)9zZ*Ho6@cQ*@)nPG_;i+j!7$W^wtyzneCFKf;c=yl0@!j((?~nHFix>!b5B0Rw z9i3g6i3$*(G_?;PKDz*0wr)oZC3D@4t6PapDs%FRB1Hef!wRl9*~9UX9FpCvu`o6g zU+EwzivFD-9obp(naHgx?C(&jaEk0+v)#xW%Q8o(aE?M*awClVviu&=na=Bw9u;3{ zQI*Dq`X`OJ=FsfI?B>FvqS%s>lCXk;0?RU!MO&bxxR~P|hiF&Q>3{!cUwvO?eEH)a zPq=yc^jCWNJ1e3nXZ`*lqKI3|D^@5-i_DsIbJO;y_b?83?X??E-l(~?A>0+iD$+LU z?8fSKl_<3O+3F|SiM^HHmTn?foMM4RtAD)yX zqC%l^<3|&0I>mQ53Xeijnqc`ICJgmbl}e$;muh9WzDwEZ#~g)A_nXjUS>`ZNy_TL- zxvH?rmLa_CIMgA*s6&F)KcxuLaRc^tgMlpxVzz+_No6>~RTItvCcJ^~)jO5GESpBP zCe#ideh|l>`~(KaMreflsE`Ss6>&>YC}a%*cV1Ms7h7+$mXTZfc~_A2LVWBKv58 z#+HA2ZYg5Z88df$0uL>vrr!LV6bOSwMG38{0!r(cNV$ z?(*_-O|kX%bfdYUhK5Q%$I=-}$B8MLVh@WZmJUrIS$~t}Y|J?H=8)w58cR*E>UPnV zNKfU978M;Q12`^X7MbbV%RI{N)lG^TR3!5}jUi3G>%Fug?cnH=MoD`dYwe#YM^nf@ zLh#*#x!|~cm%urR}I#_lDf)Kyoi-wxJ1lmqo%*>>C6y+rF-f8k94XuPsED(4p$UqY#awfZ| z__g=@JR%TcIbnR?z~B((Id+P`c2VJHq{Oot&Z_5>%t9n&6tcW9%+Cf$Q+))59k!p9 zK%tBx)q8MAlNjtH9z0`?Y#D0m|Fx^D@YoZNTN*K?Jkmb0v;0+Luy%!9nU{>5^e`F? z^R`l=XE21$zA@|D$cSh}L~HdWFiyicB_RgetJf2VZA4OXqVN?2;t&R#e<4|0x^WijPC&ve9?01mX1}wIsJmkc;w56=0)r9p@J)K{Uzd#=UnzNtf>0N3=xQQOo ztYlGyrDN0zBGG`1Z8=c*h4pddsu@@;+W~@n70Wk}D4KCBIjfJXIxAn-)JE28oP5^X z(Lfo&aa&`#wH)jG^vR@O;v&c({LP1&>{1c;=_N}{X5DiVO823()7F-yiVGs-{=u2E^o9UPcG{Rr}awc4$C& zzn&3IY2Hcqnr7xZ)Ug^j(Tp4rdWYU^d(pBG(~0~p-mv1>=eoyqBITpXcFwarz1zO) zSLL#Nj+yA$P8-QM_v;;^6N?s~nZiJC2WoHML}PtD^?|apWU`-%EI>=yGUT+BgK+(Z zt=O=Ahv|sA#ul`-v?9?Ji=zjRAUnU%_IejTDPW_sy#v}WwYa1V$L@a^TdVh=r*8r15p@)~V&T@+UnblScN8 zWs4Ct4pDB-P|nH8G(SrnPnz4h_c*c&OL6MN8@TZ9s|aKJHAz%ZSdNc<=F7-0E60_q z*U-s#R;^uwE!+2Ck?%H{!Oqr7EjjFRXl&l2-aq%@3EQK5^`_0#|7%DC+G}o-G$Wp{ z!LbPi@xti907BI7Yc^IRA!j9gvq@~P3sZA(n40%sav>RGi|H7SEJi4y3SGVZl*css zLo*oiP9iEc!6w^96Pmy&U0;o`80w3#NSoBwewbQK?um~9H5G4@%+l)5Sw5%LX@%(S z>9>jM^ehEI#hX(@PI>L)*~T^xk10SS6@keBUjO+IP(wb7p^%%WtPLobh;%N{C^;yx ztFM~iQZPXTby8GpG*U`(5f&SP);kSoYimPeVzJnOdgVvo!pYZvijh8N56PsoOq7$xw(UD; zD{Vc=Y3y~$o<&rwT8CqgJZpT{(O7E}&eMLM1&?Vw)F0w2o3!B}-VyIg3hJ6kL$RIy zkjKQwa*XJT4hOsPel}k0srwCg^NZcZLgXM&c7}(DJ;S17@zz_vKvrfp_8of!>$Yq+ zY%wxCXigvPL8+Ii|5Tt>c^NKJ;Z{29%<`>X64|O7e^m$Zqz=_gDYdmd!a#2?ZeBf4 zoHJ^Z4LPLst-B7OVx`hI$FqE5fxZE}^0V*b>V*#p1VXl=ipr9@rIq7-4mZ!A!o*-Z zInj^B=_$TY>M|UYfjRUHOxWtVa6-X^|n4Wp7^^*6m|Pp zK=^3s1dl~N>)0~-;smuR$V01^Rkqq7ysBUImmKwSE-L^;_X^W$@<+~{<--{-r!Q@+ zc%Re9|M|hn@*Nsy(U8W|xsSgrPGcjCpmQe2mwuH7J1IHUo^kMj=*fB3p$unY*l-um z@sf3o^MQBp7H6FQrd+2C;wr6_QLtsC-W_3qGJfL0lCm<^GXf3ut(a#Ys9Xiah-P;j zc?eHF|0Ubc`X}G{52(9#-ufpqEtNW0dO31QFS5S8-%I`6JvfG;(J|bvxq`shFfy}p zv3cKN^4SsFf48;i9?rb;Dq8AlP*1(<_fKFCuW2&1udj=8e#~sEWxCW@$oa2TE7DC4 z?iU^avh!BhKHCMQmDDHAwq;jfa#E{B5TNa+i4%>vFp0)@fxw<{-^rxppQcQdOcj5! zpZJVeR5(iX=;&U@v8z?@X6N$!IAx?JH*#{bc@O0xWw9nhwQYq)NWV_dpaz5W@CS%> zd^XuB*%F$aw$;zS^ED`oGoz;g0dJaxUw)|hK7G{M6+F7W~28y|z0 zwr+@Y>7pE6MLTu>W6xT!+?^ZeaP{Dyp6_N*GVUL(c9aF{+TTUCj-+d*eKYyNC@qB1SVNK$Z@%3%@HRvlDz1N!w53GjG`?vUBr|4m8=! zlbDzoCT-QCh4oO-)h)`mvC%Rg64-%XD@a9jy$9LDl#c`876D^3oMu~gb zT=NBprj*t?Cp(i$Zw7;HO$d$+Q1>h#%CNg6pyY;D{zlU-bkmM6LvGn>_IoTbMK3zL zCHE8Ty7maxo}#j20)Z*xb=AAGy^Xf#fQ_5v&^T>5(YsckP7)(2@I%*@o!P3F^nf#g@MEyEzNC6 zOiiP#IEa;1Rj8_31y4derh+p_rC!X*%|lv7hS6bXTf1f6D=c1#3AR=JGELsi$1to#BLttdv2dNqUZSXojE?f2f* z*@3>UPOMzBiuOdlP4;N3i>%y2^$@!cJJDQhT0n3zHyCu zDvs~X<2YoXa?KiI^E-I=)t_)|71&RT7mc|RP`&>M_7MXs`+@>bh6j2uFf@#eyh5xf ztuWh8vMe{Z0BcsSM`2Dr2G}l5K+Q~zBOX4adlc9_gGt(G9sNF>xz&Q!fglMYiWo2l zkALDzCWCKYI*FIR_jL^Pb(;Lp3jRl*`83KZDs8X&3#Z>BT~KeaY)xpbU0IHUyEmbX zwnTiq$7GWhjtKXNJ*R1(%YIS-j%4f<@$k6Ui~8CIT)21@{R5*&&MP5Kdjg5HN4scG zXe*4|>~!3>e0V=RxfFc+k((jLifBxRLqV#MT_>};i| zc6-vP8w1pPy%?YHk#D9*UxlQvY|6hVN7j;Oq&GCtJ~h^l>A;9Bw2{7=JDO~Q)){ujYZ|A9k}oD=Pc{k@)iv9p^&YP!J+vPWlj7z|?pZ{H~-Le&v zQ$7?|5-&gaI99AELppiPljKGlb2WosDuv2@)wyzra<9Mu~)TLvs;*P`Yzxo-rm zKhz28XVoE*wu`by9X$R3s<&;oRr}HlyW#6?iE()ALtg6=`DAj{T^p z*nmv(sme6WLE$W)C@p{ICDyMFK8&C&P>`Vb`M-Lo@&7*`(xcLB|Ineb{_pPjyNCEl z_5FtrmHBt;D8I-YX;pz=3SOBEXabp*e{4KbY1?TJee;=+SHj63qa(xU>m9&kkTPYO zGKKc6f~KUaL?;TOk}TBLY3`_bM2F4N_Hi=6NG^>M+fL2c=#fsOBNJJRaPr8MZR;Z2 zOYZ;o<;HnRc% zltoj4kMbpI%Szz}`CGJlevz^@AtBjhtPXcv1Z6}X#n2?;V~A-Ysq1}y+C$UwDW|mF zYr5})6YqTd#*M4n`iBN$l<`+vz0J(eQiqnIs-y_bwe?{aFW!oM`uR`H|K^uJHxJ*? z!FzQ#cF!#?L<-kWlWq$t*Px)FjE#(Vb26B8c|JZqeCS@?!MeJ->W0qt@SeUw_*uX0 zyLV$nULnac;^ja8%WvOM9slUX7s6X^b?+GJZr;!0qDH+FXzBGLvveh@sr#o!hFrs= zqaL!FMs8e7r*wkzn%@wOs=^2{`+4{%S}u@xN|+`sZSSTVyXXEP)^4n zA}00Z?fS)!l44^sZk;>z`43K=$uBG~30ok4w-Y;T-BpbgPcqAm?QmzM|KQL5?CS)k zzdHW09-3?qyMFz;YxCyKzZ&TO2@eX5h}#VfCD*Q9d+gTrtIrG$^sk(mo{5owkZ|G+ z6e9df;bcyBJ|p4f$S(>Qelj7$dmJaCqx?+3m?9KVk&@$e3N#5VJ8goEzd{u}A$w8x zOCsseJu=E|qKV&S*hz^vk4WfI;IUec!W9sqSX(Mn?=sN9`q-U3r|)Wqj5ae6tx*1| zo@|!{u%87)$vE3!RjsB zp$Ng^vI^V#w7#K%iZwuh8%<^9q*=ds<`nMTyo~(JEIj$tCv1|vy|W!dBSR=CEJ6x_ zZ);;6hT0oZlAnu}t5zX7Bh@17q)5icmHKoPzVQik(HI>X9;M-xNTW6v83g!=Ny%o| zH8(XNk{~TLE6XM+3izuuCzE4ZEeh1%zF~lN<*K!aOU=OTn^$q`{AtY6$jHx3Ln)1# zloXGpvX`S-j`IW>cj*LfTG1>6sIXuKv=?>%xF4^+{1ZefvYvg`+(tlf>I}yHO5;ON zL!(Yn(An8pW+ZAAq6K5jPTNWY_37?|_hZMQ!{{3sF#})GDadu$?$z}6-|jf6=nq$f=d+JvKM(r8xCi*%ewH*+-doOH6L z2aoRGf~qwYw$fV>{>#^mKIA-9NAjHZI@3ge0FCHGhS4GoooO0v3n8C5MnpS`>W$jbk6BwyFL+snyZCPwzgU_U;5|2#&A#tgz%<+`z@DuLxpV0JzR$wiwGo35+}GBfxZ@`Y9jg-5$tZ}P$T zu%$x&=;R5EQ*p-<2c)^9P*s*r!<+_Ya2n;C4-ta%wg%Ao7N*KJx##IR&Gd6#Kp$2zH(xT zPbC8=YdAJe3N4L08*7JXhV&wN!f%poif&g5@R^X`?voKIK^3L3)p!t$X*|qH%1+jV zpvf@_5|trmDgn77D>Z4NRh_xT(4f$1>6&Aus zSCK9ob2%SO=81k;A2|k{RZ0Yie0NNYi#!sr=i^*SP>RNAMdi}qjU-UBXJuHcZltf} z_nD04z51>`6QwJ9xV@#uCY5lvmC+)}<3>hyBJSM2O<*`d z!ybHZm_?e(K@%IFMj)Te+DV=+kAwP}HMZ{>19tIj5SvSqP+35Z(Mnk!gCl-;eL-{H zjRt8jH;A4T!Xb-34X7iT|w8-4A~KIGg-&F7ZF7@0_cWAJToiPfmV*wsB^Wl8aW5J;HnJgLI!GyF~XY zFNv!o>QF#S&N=o2KO6NT? zIs@kDle0eABPT1+PT3cr{MR0*B_%76laqswDF5Gi<2AN#8Xx=EC$VlrHA-1lV@or> z{uh5{sarjKUaK$yO3hW6hs~5Nul@A<=%~HQI))>&unGr`J!C0<=am+6b_%_nO&A^+ z!texXqhvjTa|@WHe3G2cE+|9wmYw9gaCG-}pytXsjP-S3)B3g8wR?|^z0##>@7X!_ ziB{L2I`uwjmF4vhp`*P6p43bnzV9&+RBw=)Hf`;2L79!#?GfO>0nWyM@Pg*u|R+QR4z;3=*D~I|!8Zq2nj~QYIPh2?M z)ahCks#QrSh;=^lz~C}w@>kUQo2^0M&csJ@#2}2#30&(+QEz3K1l%uNvT;Vty+cB zRjbWWm_`gI{*iOJsqPl;UB6&^si&taO>(T*$`0|J3KDNSpUIoXyAEILyxq)yDo;G+ z;9;ko_Q~Xf4sn@oRawpp#7}CQ_CDQp@CX{UuRm#7Sqs`*?jgj_8QGcU*qq~7#*yc= z-=)&vUpseF49~JusDqOwkInI<##=op(|C_~et7~}GQ{KqX;>@ggrjXGCf})Gla#Ci zJo3~Fa3#1bAm);`JgB{HPF?9rwbgm0_V5kCH|B*qY8ERpqKSW;G^9!o8=MZuYbR?k zHtje=)K-!QB{Scxj^JSujNQs=uq`^{v_pM0BaHN)9VMAA^m#)FvM>JTSPqVI`qNqI z;K*D#TZJ1Glq7$tCY-c4tAwMn2?%otL+Ehyx??LWJ4=_xX?bPV-#>sNOuW1bA>{Es= z!#>g(OXDs)JlxZa+0cYdplXsXi?TSDvZ%C#vbV7vx9>D!Vun~r6Y%A0aP*On(H6+S zr4QdCO?`l1VBAu~9z6ai;=<>M;ZGxxd^+tP!`gL~#0GOFSBAzWDHojJowBu?arEJ5 zY^Bzz_ujHCjAo*sJc~2$zk&RMVicCG#6W)^Iw>cG&wRdN zc8B~Zfn?U@2(W#^%lxHq5` zZtM$_)zn8i6i_BUP!GvT86WGc?2~GWO-?q>BXTSS9meRVRp%&ep9mvecLJH-L zGN7&AunpUG?WfF}v2o8z&qih%ao79=rpJ0P*nSrgvtFbmEFdW%2Jvp%0AX?#g72P3 z|5yY@7mE;^yaLy6-oU;3S_^zDTeFpzYXFx|zl9r@&e^yY5;tYi{>#kHw$#qr&Pdy% zX*(*V-PQz*vI1Cod9{;mila>zr7RFG+L0+44nL8uyIUI3(R2r+gT17=AXXIQB0kZL z8Op6e1+P)YBv6icsBb3OM+yk5*sue?^@o3oruy4>?YrNg&g-Wh3mW#YG^(z69D3+U zJpHjxP~XMkZrxp*fa`3k!>Ko4MFPhpEi)5Q99sp_8lGnzH7Lt+&-j9!BYmUmTH!6} zD_b}+J^|G`c45=j9kw-%GNbhMbfBZP1p~y(N+%ywwucGY5X1;BVw57%>Bgc>Q1E8@dxi^s?`9Zgors{Cq#{ ze2%-eVCn7bB1Y<`-sgBt(LP{3CnhFv|HBVr&Du41@jKtP{nVAxdQ@BQB)E}BY!ppg zvuXcvY~Op>GRE|D+(TYwD$8}5%~M{y0xs$wWtMs8^;hx6+wWla;bS;--*FV?l&YE_k`4fe5bHR;pe-Hs1Wy@vz$J&Y~Y+ibE% z6J~?Gy|{GdBg>@M+udvvJVzgX67J+=%F-xgq@|Ld`q0913yR8+L#*QU4x#4i1+>=H zQ2t9cQI`>?_{p>Dw(iBl&%8imHi-ZD@BdeHktdZ-Jvk!<`wksK6=knvsWK83msSw} zx@~oT&85q@Ygw(XA}6vRRrwyY^-iLu-HUU#TF^N>Mdjnd>P_46=yRXrSjFOVvD-ZlJqsz_4vW`Dz?I`iS|oPQCLQx;omhW8WdHTU&_) z_z@QD!{Xc|<$8=w4lDKY*jPU~gt}cyho z2PR18hYlT~TyRs?dCV_l`hmrm-)hE3tlsJP7b4t-ijo) z75>&F_@r%v6hU1!%bpqN>th{Y+f|gU++eG5WmiWmQvU>f7#r$BXKRyXsc30wM`w3G zMkfO%Z^NVG37Qj#dGnBwlZTSB3glA1E3-s zgfBJyMp+O+`g8((qL%nxlkYPogB6Sv%epIYZGmI9p?Vj*|1h)mopKUsCvb340suu{61%@mV14yq$(}obnn;~BXDYyTjLw2CHJ+&=Y|7SdiC55Y;>;lV& zq=|mXe}C(+>{ZmE+8(a3uz@D2)0sC6}_mWx<^jysoWXXNcvs5?$5O_KXpW z5wwdv)N2Wdoa)Ey#4zbnv`1c}oX^k9z=YR_!SPuPg`$vNP+~G840D#9)KC7NqAZmB zGaSKjjV3LmrexcKC4uS8%tT})P-gX0-?(MZgrTE%1g)&^d`t?`(uwmauR;MYyrcc3 zj}U)l`!AxjxEN_kiPR$##6PKXv56_8nJG!bd9K;a!Oq+1f-(v~n3!3_z6YN`^|k}7 z&f;&BH}-wMd)v0?8$bQ-zxlyWfAkxz-l0fghUoY>eEE02f*tEO%`Pm)K3h~-{ffq9 z@$~7)Qymw6tGnsyA5#Xz)irjazSD~x4?c<~9(@eseZ3eS@?w(sK|zD&yCm-@2wHfJ zUu}#GN3kEoPZGY%m|V1BlkL1FyIML}_JXj{@-|z4gY#vVEm4l~CGRKZkv!LRht3ws zzk070StuBrW@v+&USWn)oJYsTo7OW%4bkUn;|SZ{k?Q|!Bgp#m6KM1UmgD_kJ{Q=_pesA|4(|<^!LYKzj^bS zQzzg1qpKG#d~9@RIG3_0(wqwvMnW|LHWE7ey9{*f8gDd*41brMJLcRMNYHcq(QP_( zpY9QG(JD*{EEOt+r1YltmCu-Q%R`PwXM$Ac7M&<1maAuUp9GtJ?VWN)u|yf8ES%S! z2~%CSdhmG(Mj3;;W_8v4fZoOOY^AyC#&UR(%5T9^!OkhYi*DedznX-QLXsy>6UlP= z$UH8{FT{@hN3r+FgO*NH`|C9|)gzH$B_%BdDKz9me5SFX(Ts1Eq3G+3v;ts zRvf|8J=EU5VUgo2$}6#E!)7YJXfzX4UHIq&^mp}`A#&sDMVzPcwszHO9DDdNEYM*8 z`A=TL<#%3YIg!}0tr}I8D{WPsR`ci(7?HzCd$WZINJoZ;I8M%ZMbRh`xX8=SBCyTD zJ8!>@3+FFl(+(PMpZGkDiCDDWyKCuc3TeC^dF)v{^vrW8S+#}+tQRALgP?_h{=Obt zZI({Zukjd{5k)#k%E-pp-~h%4y4hwbebE}nR_zx+1SCPcB0cE_+O=*AVF8F9*DQaF5p~Q+deo1i=q{%3Pxp~_=+m)Pwgyd{% zr&fq-^?VeK;fNUivRo>ABqk@Jv#pi=-fvDtt^CPKb+bI$;;dtQqKCGc%ToCfX0Tu4 zSY1tS$00d2(}0I2zLfTRV!~$*cBM&`lS=K5CL`wNWMS2o?F57bF1)5F{k(!atR(Ga zXQv=yW&~*-O(L`X5iZ`Bgr+uaL!jV>IFyu@;Q0N=v2oj0xDpasuHzin1dfbb{c4Cc z;Uak=TGbfp5M7u-W0A%@VKPMfWCt)l)X8>tS(>-G*%^ZFc?%#g`Nn5t_(%qb0BlwA z5K=suXsTd#FCE|^r5|YX*A5RZ8DQZ+j_SgzxG;|V|^kX z;Cs~_CL?(S17qmxY{GOP#Pb4&JWnEM?-`~H@LByOS7Tx#QCM7PDbBjv+K`&6iTy|@ zWnnr$$0sCXnzSclT?YAb`Sa{2eR4RNz?S2Y<_<%A4EvAmSJ`uOiXT|=Xk zvqAWS#IG&mF`|Vnvz|N&fa0X@q@occVn&f z`Of{v@a(VsHWD(k@YXMWf{)(*DZB$+WM!>jV^M6caI=fQ3o}#bYHPODP~EMKlw191 zuB*Y_>*uk^zEw(4jkDTjfjg|b=*8p?&zT-lTiGs6f@;rE+l!U*LY-jOMW>_zRp0uE z;~{#`B)7)eR=Y0soeoJjjbDg#rsqwD@x6Md?K8{UMJGDU_#kcSKBY1<-N-RA9lbQ} zcJPDll>y-Bct?ghBc$)V&hl*%P*voQ1v>GItpeq<%M%k$wBHYV~S!Y^$9~G>Vg1PmOge z+cZAzrEc$m_UcN_S%IfN{beNQHJ;@-V`xLtDtcW&1> zEBxAt)=fURed98^Iy(_Vxt&{FijtLUshjfA zJ2Z~oey{DztW{mB*R8UED`mn+qFyN|EJ0aCl{sy-(nES-)H{Tcp+V{gIZa7rOT?%N zPG{?u8Jlnst%!a_TaGhMDc$&&<1sPprL0__{z}D|*XPh8Z`7W93YL;C6wQv04xy>` zF7Dj8hC%ju5^+vJ#VX3PVf_4i-$c!oGfQ%la!RZtIl%uU(KRvO)7fUL6_xsQa$=Hn z>a+c0ubqAeiLMy9Vq=WIRnO&#Rq>JdQO$BNu|A1&*bWIA{n|INkE0v(Rs62AlK0Ek zbclCN2k^TiXBV(}*8$xB=u_;11$6Xu;@;g`xN+_jva@orecwT7JCC|sHEj14bhfvU zXOf61r`etsxLgVFq-P*fj`x5QI48WijCXYCvp%X0Y=ZH=)lo8%hB4lvbUPVg!6nII$M(@7+EW=y{jB;M1ui|O-m!M; zJl{P@9J(++&9a<87-NDabRcw8#isWY$T)@+aK`|KPRVVpslgqQk`q%oiv*! zEQ(62EW3urB7(YCbkW__#c~F%UCIjaxzBzcpZm2hQ0LUpZmJ`0c9FKjO@>TSF3Mz8 z`fTBGB{0zTSX!N}OjybupuUxVRe?F`SJTh@5oQ!ND=I2RUQV{@eCY}4Uy*|**(ZF& zn=DkgL92*m3x4SHqRh0H_sf< zvN_d1o+JC~UX$MsA*@M+DPVoz3{xSN{}U&D52w&*t3+u>HUh)2j*YL<|q~TY!RiNfV_y6s&9Xqe*SbGY&9u zXaLEXxp?&H=dokoezYjC{M<(vW4+QcbFg~-W~`#^T}C@b0eNz!TA&(v%r`nr-E#}~ z?%cFsWaBOJs^o$>U&;HzXsiTjTqtJ|+Cu=YKvBP1cxlWx2^T*r_*tv&WMgSkz*e2n zuF}4;Nx3WF&d4>n*4EmIwypsL$fI$T?-?m+#^=K$BjS2<@CF9@Y(hrcx=BvQ#V4>Gqc-lrV1Q%gfwquPfWPbxt-ezRJjocXNRQEKK(I0KwqygfU=_&Mfv>68J zU|WQFQphuhsGsp)Y*qN!L~%u_!7ovN3)AwO1@4bn~_yh@<^jbMu<*xjh@4LKtO~($w$Rwcq?x zl7rqcAIFyX=*e9;8d&b@n)m6wZnVguPY%Hp7mDi)j)6~TT=$0X&5Qd$QC!$@)` zo4&qO+kxi(am=%S_8xm2pZ<;CH5&WbcmAB^U!#phx};tB;4`1aA7UDNed{YQ0OPzQz(#2o5t!h_x5vlYF z@{59=Vri2|(`frf1#W9~X>39ovMBpXtJYxSh7DL#S%#wgY{ar13M8MIQh?*A*$TC! ztJdZg1UM#=+uQaY#m;?)Y2SEo?&Ld`0VZ4lkd(g)z!%L*MzC2XOQvV1`JM0OXKjxs z`BPZ73XeSd0(Ox%l;Ow~=dxA!l5?^(%qKZ8K>3z}nZ*dKB>hkON72#VW|Qc)f;@_i z^BAPNPa2{g#sVlE{|nz(%#kG)c^PH+(0vJ9QkFHIY55J4SV)m z*0Ak+4k4V_=G+Hw*>+~y5-e7@UAmnzPZ?x{$u)T@t5>uY&3Aby>!PW1GbrcRZ`p>e z+jp@Z@^98+a(Dn^14C$`Eq9GNx|aMs;2lBL)@mF%aujziUq*XJhhdN6$~Bk|j^k(F z`YKwQ>a1VQf3<|;gdNnG&V-(hMR>jAq`7&lC@6$0CKf|{U%O@Ss>2-h#^FbvLV0l+ z?UK6~r#CM5K&fEX|NncCCjNnXEgu&2OWykX!2o~%Ir%MC6c=O7nl%;(G^1b( zwp~FYF5-|h>K3SNlm71qn_5{9MZmgvL1IVT;VeaBRx6Yu}CbeAVcD8>b@Y& zkI-B=^+zhlH_B*O*&pP*l?+t?lk8WGyL7#S@(o*G-Eb68jpnus%Y6S zQN;G7p=dW&l&_qLii&?VW$)oy&-8T6rL(6WYPeUwewGl+<%&gEbOg5T+K!xz%uv{3 z^h;m;#$UIo2cP`C-;12;uRlIK(6wWHA`sa#=)=TpIB9n+lF5U9+TGedPK&l=Z;4Oj zhjHv~`RtU@F~S0&l#Nx{$h255UP0#kjio%-mR*uDu{^Jp>Iy!O(Huv-ix?-4_b6La zG@pq#{AB?TdIxc66zNO;gjm*JSsi0E1}sD8h2O;+Iz$etm+TekN}aHI3;vZplU#G` zVIsY`xrDjd(CT1d{LtjY*d9-MYWzHj)3p$!oSuM}Hdk>)1>Y0xkBoG`n3$5&GSqsn z>f+f`&o{PqCWcs^GQ&nw_w3%gm3r8N#Yp${nYiRv{^BqG;y-7EUmgF5jxT=ki@!=E z|3BNI2#BK(Jh1Wl#fyJ*?$pVD($Y|0zBoG@Nx2**=cF^)F6Rz~!rxM)QUv-gA!ZXS zQndW}n@KFY$?lafF=0bRXHdlo<0lG1-S5B`{s>d33|?0ma;|C0QTIzY=`kyDQInjq zwdDM#%-{w6*aQ{d=}ewFAce&{*Yu>Wt1N0N2|(Ut4p^I9vidvqlmRMdouV0)0%~R^ z#IgmG5t>tU;85BX>|AY_gX61Ed+8yR02Qw_Fv-mrE?e_ z>PK2q3XS~&G`BY5t)F}kx6YizXm6K+Ij#7NqvF`OdAIG=e&g~fTsrk8R_3MS{^Lhb zP*#cs-Y2EvqYsV>D5Pe3dsY{tfz*Y@;#=bblgZ=Cxc`xw^jJBqHMVO%_Q0>fRc*s^&m9)JFG z2oW^gxpf^GX)*$LvyD+S>i)K{lPA6K9ZxD^~ngHwc)FeWFuS07*v~t{&o)1@Y7U@`#h;r&Gs*p;b z#)BrdRLhxp8gCqD?Xwf1h+wsev>8e8qcp+-Y)VbVma_y^WE#`HAxw_;(0C(_Xk{P` z&LBaEhhvxICV+@sL|iQE$nurR#+8%?mnV(NUVOo_Y2?XiVO+&NRyr>2aV>{I4*|L+ z+N0S&S?M(NV#qgalU7E@C9oa@>Jd?z2#;Z1RbQ4dGlOxh9I#YPQyBAVTOX$#nyA-= zjru)<2F_+0`r$GZ#a^2H<-3*bAR#%K1_kd8Xy14m0f@%MNG3@s|Tpylq!AXV6;0VH9-~n?y=M&snr!1e>Ms|^PGu;Kw#u_Q z^Ina$h{yVmzlyX>jGTmPu^aA)F=VE)Z)d%j4NmjkI4GsAkrsb#QkBozdsv5Q8cXT} z$u>nxtFLufy<}tuC(YrrFslhy$C)8I(D-QL%bWwMG0!PAsnV1!@P&%=R69k>{lnuJ z9dVq6;s^Dm(y+EQH?e)wNTpG&kj~!TVdQ3|AR#Fk6O*JH7Arb8c}-r`M3dg8Dk{z1 z4Ex<3r4++5-klZdzQ7z>I)*JOUvnc$JMNvFG6O|4E4pD*5Fa*=vf>N^UZ=e?tn*ZG zf%j`1BGJ>+hYP1qvk!wb{?1>ZvF0ikrZvgVGWnhuf@wK? zwR$KsE6bd35-l;29B0y`R=#Srf%roWP`}Bks#T7&p&6^2Q$L3WG{G&p&`LO^*Hh|F z0dDn$ennRte7;|OVNEbPmGL4YLiI9P#(OlurhCAQ(GzMb)rGhuubaeI#23eowqUK!@O*CYME zzni>e+2RG28Ss-%8t$4?ps%OLbct3K%4 zaPmV8P(O}SuSP_~VDFKmm=gY3jKGcq$52+a7R@a!xP0~`jp|vHu*?{3fub1}wnwrv ziiVcPTzk=TbkWt>gu1#0tgYUQeGfi~zM&!f_*;K&85FeQN|TSPH*Cl8r$2?H>;l}r zb_rcgcWGF&&)B9A+uhmLXj>G>0VKVvwl?3sV#eUZ&pd}A?1UdIZQD@o$3GksjuZHJYP*Q+m5uwkwRZyZ69-Ho=#gorgi3G{U8)~OhX>5*edFvITs!lD?d@yKMEYHjd=X!8e2h~>_oPc1+p&_@)Kxug_i*RR z1ewKW&*YdFXYJ7B6ZQy6ClkVen zbJDTPw5qe4{WHySq9`+2VJpLiQ8%(2k)gJRlFU*WNu(*xWs=p_RI97# z&3b`6!%y}C$z9S1WxZi2=Wb`LbUz30Z^p@~o6}E{@s3RX`-k(4`dNqGyL_l!I+n{@ zKJ;BHWK+}9_?b15%;mXdo5r!jhUq*s=Erp8x!BBRh8m zPQCqeG}m56)B_7G-)@|Fzw}hjmslg_>W{CqwC zvG3?Zw!*rup}}OCbeOiHkdC-rUvC&wtH~4udWE)^Rt}X>4(-@|5H8}b-ri2M)Zaz@ zts6G!r)(k>Yt~u1-qyxO1S!k3V*iW3_1n}#;dt%UpIh+2Z+!VTas0j`wsJE-yGH?X zS`n-u4mlsySE31FZhuH=<|$uDS0Tz7^|gl1R>rWel@&-S^wrOk>_=fm*-w)b0qQkk z0p2gYuB;%HiS1{=_N`b{s^}?Hur8_Mtj{2^fcG8-Q(jE^s2xD@r7`Og5HG>wa4`&WuEkxwodEp?8MIfNAcA2zeZY~wt%P( z>hY4*>&U-A-Suncpg#Ke$FS$VV;J>KA}K8c>o;shTT3HpZPfTfHkwWD^WCQN*cN5t zk)ykGEp^ya&mlV}2ba#B#_9K7Lw|cC20Po)Sa$~vckft#C~Jyz?#lHWQBhtA58Ec1 z5dNGd&J}iMM>=*rZ8xnvvv4ev9UNH70tM}7re~NfF07oDlZ_ee6V0)Z>=F%Wg|D33 zqf>L3i`5?MZqija8k#$4f6c({_8^IN#|-;WTjePLUp^7pievoM$~SHGqKtZ4g(bP| z8y&&uz@TNi5sjy^4wwuVW8GcL zX5otSAdNDCCOCY)DGZE^*y_~elvK;|qe=X9)>~N@lqsXNr418PvnXG)#j;Y>*WKp( z=CE@0T4MZcT)*%UuADoC5w8zxHf+JFm6bSm@?D&K<7EtWcbH!6>1aogII_676gzhA zwBX3j-d@wETefY7n^@|`xsQlT{D!H-_mbX{6_V#Vr>r?M)Wv^GCyKyXNv6&q+O&%WijoU=C_T$%n@Y+sL3laij zJ(!;8BF&9aUQ(aT3PX`(!ebB>mxwgpTU=3YDWum`6d{S&p{2FW%`?#@1g$YWsb8m87xI6UJ-waj-x3jm2pnIX_HEnE1DooCjS2P@BT}yUAM)? zXP~#+GGOHwm0>+?mf{uV7;JAtH0^+0`wqiRo8o=y7};A20JW9;{8dnzg7YPFl%-Rt zwgv3ui>Ow(LEM$3Ooitkz^)Qi|1cb~<3#Q#`96nR~UhW(&Cz;?YQ(|Ht3{ z3k>vhuz%%yTVxwJ{^Z-m#aZejCpcC?bJ7FK;;BhFZAr3r=YBl*h2O*$1@gF)P(&Wu zxMdr*A3Q{Ty#*8AVKg;1V9))JSXPbM=_%a4dKp(~V~qI5jECE4GhIFRq1h)os1`_L z^1%pKYtV$vq+g|QB{_(zLsRIezfJp)@{0UXQdxyk>b30rJl?J>I0+~s-L_D-c6E1h zTv#5TmCt;3+K}d84$HnR_!SmnaP<@=5+1I~+Xu>zvCb9qFdz?cPscR_@}ZX>^n$RTer0dEh(ST!p{+_SEjw|de$B7LF&zu=T~RK}Fr=}c z4h7IptUNOALy+amjIcJaT$4euF&5A{MmZhtCeJPq*F-KLIX(ttX6m{rj0edDtf#g| zQ()R8@xSgDURB_549k!%x1eJ7uR9^dk8~tPc#nkMg zvz;B?H{%u-JaxA&efCa6eQ{WHq~en)yCNwocM~I~1|q{;Fa6oq|EgQ#^3R@oE_!6B z?S-NKjy1y*fv~YqIJWKHkJZ$1k}slb^P@#;GF?7wO?b;k5oHtWqW!2S**=lv+ZdZ@ zm(F#*3)>M_#5(>CeRr_A7HFv~`HwYO@8D07ngy0|9LyHtcaE~XLo{M?k9AfbnO~0I zZ1D-Ni$`=`G@(N>QMs4*!R?@;VdI6jNpjh!vYf%=<4W2C_I*OOZ`n- zLoSaf*ZZ@x5pC2ZTh5$5`EXNLe_VQclF6xPj_IyFyKK9guxQVfm8&l};bWY9`a=a5ozg!=M*CYYsw?HjL2#*ocbuB~E{cR(&L3KpHy^Lo}M+WCGH zPqrlc5))an;7vyMJp$7Kf;H_$77R|>WI#rG znng$_dOWt8CXPT|bRx&~(BL522+oNGu#tvSIRSQKM<-tY=}YLYzl$U)?57#2*yA=X$3G-xtT^s4WoF>_Xn z_A~>>L&m=prpD6-UH22%ik1un@ULjb0U_)!(v6(l0%cN~Dp=pe4CYX$F}$`sA6vGs zH^V)QKwlb5W!U5sACMB2!KwENXz9ERli8^;8a^ZDkkz|mclnl{WS2Vv^V2XyioW&`b`55T$ zww2it;R^_`JUM9O@b)An!IPPT_~a~V>@bVwj&dd0Y7^B*PFC@hK+LHR-^RJO-$4TV zA|V=ByE2o;D67dfxl{9yvt|$GBa{k%!JKkIg1I0Kc1==*cusq@4-){kG}N;m8cOom z^qkSOcx!cKIX?B<{|aHA47O87Ymj3pLv9+{uRAo*h?qbNf$S6kXB7IzqcG@qqipRC zq>y&BH=7IsMWbrPg~s=G74nFDRv46v22zbUer0`4wNQ54BpQz4jU=Muwnt zXlje(XjFV6F5hj(ty@hj%SqcLkhw5JVA$1QtNIJ_Gx&W0t*yN%E6zrkD+NI)THOiA zU_tB!{;=;@Blh8<1?)`G_}sZF6>G}k5kWrEt;4=KT&e9~+oBQUa-nlz96bYm3$jrA z7w5!xizti(o_KgI`AfkHzc%p4Td!XfjW-NzZBG zSk3^+8Ub$6sPve|TLC8=1nUdQ98FLeXlFTUv;xyayBb{eI|T$wcLFNJJMtV$*E(Y_ zLgdKuk{m>;mt>B{P<0idinrBA`c<9ny)=^bE|a4ySF~c2eyoFnl$`tcD%RbRdAwci zRGoB9w8}c#suF%z_leJy?Lm9B>aUf}3r2gqN0a>GDNXj6u2!p9aqS13P5o3P=U{d| z0b+ySyr9&L$Jq>lWc1`O)?G$r0K+})D9B7gUT!8PDDxs{Yb`Y-^1i^A7!{wg@#i{CUacbo6<+@SG`>UH8Og&>MMf!;=ae8MaA0n z=3t(sksd}~Uu1{JM#rIx`d7h%S-JVRdF2w;SFW?P;kAwRNTSXySW!fNn4xj)LEWuu z_~`vt$u~2$3P=G5A|&nqsD7Obda-Zk7TYKH`qf(;XVPy>yvZ&Zgu;nhX)X*g=_5X1 zAE_Lz@Rl>oLmiconQLiQV-~!4^ufJ&>zxzm8}MSy#_f3c@sAVVq;QPx;%7hmF?zat zFugd3w4!Y4DnI;vV`h*_MrdM8+t7%{- zS>M|P8V?0Q$N{62s_ytWxLrzb%Kp(q;!W0DvO~H?{9}h0MHg+9?T_)4#@%>}zs5Iq zi|%pwS4v*|X0nFg4aeGNvbdbz`pkAXt8r+QQ$8Ge^kdk(eK#(hKZTLrZg__W(LAF*Y zVQzl6x>2rZmW$t|8+C}6MDzNfx;m5d&NHs?dBn^NATDB>Wl}$J4BL9WID2Cda-C`7 z#R41k9`d3xUzto)NAg#FuX3Dvu`g6dj;s2}R=F?9U5_iqCaAP3`EMVh3DLNUQy;3V zCH&9m%E7Wun{~*+ zBrGw|(MW#KB%p#pX#-@?j-hPTs`kzMA3{=ICHngY(b{kujdj$SFd4Ua?Jx z1Sq$a`J<)o4&}>~O}J|1?D}o{u|XM;IIaW3!=`IRC+n-KFf=q|TM<>RtVBdytYz-# zXlXVldSX%v`$T(fPow_MZS?nd*`An94R;Zu9LX;%#{c@i{TmBR`SxFZ4I8)Yz@L8g zYiO#k!$1G+-?R)EzxMfGM{{EnzW37iC{G=GHJ*4#=|O{`X?u?*93*2j0U{EJA-2Jg@br@($3OpijL=RrKII`KqRb1L z+!PswM-bZ3XSj#)7IP+upmT|9~EZF^|L265rshvwLx zqu$h(D31Ih-*QZ|NM{)t%6g)gk=IDiwql6H&_sC|tIO_)6GJS+Yth zH{gj+egRnpSs0>jk*z7Gad%fc%8Sd9nvrc8b#iku`Lxpd2hmI#yLRS%_U#O|>^h7B z-nT%zV~}=mJ>}zIUk@^~3$Xv_L&ORjEhEC258gy~>pcq$ilyu?DK55EY06OG^N!mV zXknBm+Os^rw1V_ih&1ZG>A)0e=pHUz_=xy$n)g%xQeH@&N|sH}2(N}=)tXf(uc*NA z&O#2lN1f|Z*%hO^MhI`OgWT1{RGpKF49j2K%% zvEw5nl#T3jzEAdVEa^9^pui?*wLkk1ZGSnnM@9x|>n9?Yx?B^%L;XD_pOi^KcASE) zi_0r4yT-)0k9wolCT-Q0Fxr$!luw$hUDj24mnIA)Cbc3}PVhL|mfh4pmo8o+eXA?N zFv)i*SlQ!FLT+}3?FVmr+;W_i}Hv;xz^{?5xOL?Z2KO@@e$BH|MeOU$E{_}a5y zL9IKtR@0UW!?o+z5n7D4$>#Q^dpP&uyB1&}nW!yc6o{ZLv!YnWo}-VUxMDRD$kQ#Y zjTR89EqYg2L})DM?qdL$4xqdwki8XlhNA#L93268DTb#?0(WgB>Uu*AHRrK zUwai@1HBlX45GAhGoJa>mywm0gLhtk30Ka2U=xP(9HUJ;kK(~6KVd$McVGP>?%la= z86nfNGLg={EGJEAVnG3%wjVEXv{q{h6KkSX!RcDjsl_I4{%Si21sXIG_cz>Yz&QIM zv#<;gJ@Xmr$Xs0b@D1Fqxr)u(_E|Pc1^RyU-fM=39)0Rr96WFU@zgB=-#G5vzGXN% zJuSns@Ab5|Q@+qX42@wiI7qr5$H;gHv(cnE7x|sI>Fh^mP}k6m^3|JBy>%N3OLDQI zARmeGZej(F9r=^mAHnfKgnR=CC*MPIXl#VMF^@#zu!z`1_N~tX zk|xQ|l2gO1udsDR#VW(V(&^GE%DT3oN%mIDhUG?JUyv%rv4& zR}nGM#^;)FS5S{Kd??sox<IM@Kh|&Bg$&x2KmXx>qz%<2c*r)8FIlE^j53KSsApzw8h*-fVQ?L0kIjdfZWAr# zlQ;JseZUs74EFS(uf2`7Uo)mi+l8dtt=o2>tEmw`{mBn(LR-PU3hD_>`pqtuT_a!k z0^ccrli;9afX?Yyl#fAluCJ8uykHp9S!5)oNbS$D)Yc^l$w^kPSoVjqGR_7kEDM@s zp892;?-CD-`4v>9Y+~YJEhdpqSvF%b?b|%ckX+iRW`EPpn;aTOW32+>8Z2Y#2#EpOgnY;+I7gI zoD-kSQ9r8ghI7~!=`7)7(V|LmY%-1;+p6)>q^?7h#3BnJM9obhd_I7Aj>GWi5HW{R zx`XFy}Zj5ym&=#aNeH%O1m z&ptf4fGAHUvh!Au2SS$7XGjayh^b^FJ2g%UIMW2Z{K>N465J6eFUdo3c05Af zL4?r;s%;rSC-Gs7D-{{UIYN1({q68l{!X($WDln#dk{~(COsDAN9?8bFmw)3hbQOFJpZ{b{nO_jf9e}Ocdlf;^o_5*_0h$1>t=Ni$H$$P zg5Upx-$hA5QQtzC=Xi0&#@lLd&HL}i_qLvY`PR*k?wg#8MrlD@ zf6Xlj-#ZiRj@6|18Qx);Hus>C`K6v~Qmoi&Vttlmbe zPQ8blS1!^x>7%mF$L6iuX#l39m&S^v1f;T6N;XB>YCkR?!HUFlaq&vr|JcWH{E25- zP9Hve>t_VLeW)xgMimWfMTsXVEg%74(^wOe>D9H&mcgPyi}96ET!oK*c<^+o{YPE5k)9lMZMR7`_r1h+1p zLvzh7Gi)lV)?)AB<5*X{9jOGDimL4AU2N>}+l&a06lqEHhJFh>wpTxT2BePCnoYg4ZuoqEm=kx-NJ&uX3G>oE=Nd9*wG!$5&ane}uM*v2AuU2u~HC{FW z!0(~JIQg=Rpt8eOcuE#&d{l-3F4j~1%m2*i6y4Z(@o95X>yzY;?iDTR;CZdgl!2;u z=yCOF6vrr05u>r{YtbU>D!SzTaw9GWJy{VPx2cgfgij8zKSWnrr5#58pP?+6#^l5l zqG+TqMk*tKf<#z$4Hnjg^d}wVqqP$Zkse8tN$CZ6=JWpo>t1T=p!_d$$db`??m63_`jC3R=CGq}fT)2D%7d|?}$}M2S#tqoE zeHV39i3LrmU0&}f8t>gR$D~%y$l)#B*xKBP5$c~qd>+$dgGh*-MM?tuGcbUhM4+rN9WGZ4^+zF|{KT&#IzAQez4Z#Nop~3F za>TP#-?)!_NLr%4w{c*fXvLn4N{xZ-z03-W$K)K=evrch1GraP!~Tp!NpY#AbFaU3 z9qTr3(QqKZwsf_(p@;3zzJ-NFD~MM<#Les1u$4MLJvSHEuUx=%K#}Ot=3vskn0&j9 zzb1(aag{7PI<40@o4ZrqXA8_Yoc2YJFPx-_T*I%2PK(ko1gppx~V(rkrp3` z>gx5xCIhxDfL7LDzj=$8;Wj=XPU!CFB94o+$?GYf-}bx|-ZD(acZvR`)kQn1pV2-K zO$vpS<$zx+*RIFI&wL6Sb|18T*tJKv((Gz-ZTH>-#8c@Qpj;Xs*D6Z#uZm_F%HSft z)ue;=-XqaM!CT4HlX{EVY45XN(lyVD#wGhjzp>=C)YN2KjhRR+CLJ_I%vZL0J$4d5 zttel`Qo<}#gR^47S>@{R6!}T~uA+ID9923;F6OY$Q(rhiOb&mj7`~t1O$YIid@#Ob zeH{KZmSaKGdpxg)RP7PAJAz}IPa4Q2{f~`|SgKg9{0x%rfArmNT1wXiVzF@c$H-tW zdONk10P8CmU_UC$kx5o>zE3=^{?R+liOYM{9_uRo#|o$(=3L~VI!Z&D-sHW`Uq=t> zJ}aNkgon)`E-XaML7c<;c#%3}3f+T_6G`_t#apeMckx$~mY?OJAUQ{F zI%B3oIKk zzDxa}`l?Qn#e9tP?*zbEUiL zU$d0AqK%zo;$u%-Ux*k@`k^vr1Mg^VsmvD2hqb9j#3) z&x?ZmB8+-Rkdc|qehxzoWsEX3DR@Mfw7aJplYT!cR;{(P)Hg4lMmL|;9^lG4qAj*G z(XK!(-^3UyE7#$H`=7+me)?+&?sc zsfh`j;BzNor^D^~5tTSQ`ExzW7btIC~QD zF_G-=F=%TlO|CeB%%mUjtv-;yW8&O+=VvcrHEp@)KK@xKmH$iM z`l|KI^Pl?)p85EvY?ale3unv`eBT3)QHEyN7AmB0vzbNjvAh-@seMshW_O7$MXSP3 zk{fPIAslYHUb0BoRY$VN!+ZR=arr#zv{JhEHtt@#gr+;!P*%B~?Ry@*J)Jo5-kW6j zNL%@PgD_7^PlLCC1pcV=w7!$g;0J`H4@Xa@88!cIDmIe~iwi zT7;2@Qj$E_w51xGtG8Hrl`B_bMQMpvYguYp?X7+1)(v~Ezo*wSTxnvrmpXckdP*zW zm9Aca#^TYWv~=VZme?eTlBp6`?;RB7clTLmiIv!!P=_V(q zjCYhNK&!gMo5FnJaq-XS0LOlG*koP2g4Q&F%X&!HO3w$#4@ya^V1^{EXwS~E;Bc+p zofsR1%N>uBiq$6f`?@^Qb>+lrMd70i%p z8QhxdZ{zm0YownTtl20heT8MvXlv=j)O-YX9XgJ}(qeSCx1y!4&c;2SbQDJYH%s}D zS5j%)3Q3U+lUCk;^A)6Wyh^K9;pAJtAZ~2Hp$8ttww=3d(qF+uqm-9-iNpFRPdb~M zaQ5U03lv)5ILUsHK2qkO4k*0Y(C*BWz29?x1T_mZj&c;aK9W`6|n@{eD{NAJFc z#>NKnf*TbpD^XHH+A1hOVrnL_8EJ=@A|g5pgFSt?bNeRNZP<=&+jis5-RpS&jh~vG z8$lypDYh%ttjDfhhuPnk@hat7b3;AtvS>?@>>cVyU{b55U4{vzZ?p}N^n|LdRlUM5 zLD}kR1?fq9Tr2ouu&)R2y#GErdWR67kcO(YJMh96ewXc9#81EdXSj9cJjZ(47LXiy z=ot%!8639DO-7R$%932xEg)H{xs;UZPW@L~)5|Nvmg|hNe6lNyUzH=r%XGrt% zBM5(Jfx(b6DiGHw(^Vg_@$}pxipcBFe)`L#nOMC2$`8W`rNfYc(`8p~8$qfs0>+rAuBB&$q5O3hbFFPEvP^~H*EvsiKlHq6E)zU zpp2d6XVMw<&vN!t$z>~MawrpNa+$)ot0*x)m%6MggW07WQyp_eu6_<$gycJlrW&=Dd zOF=-LjGmrlKfo0ra^nQ|Z|As%b1Df_qYL<)6J-JQE6 z#p|C&o9c5z0stwqA;1JeVZ?~)_ z3J4eOGJluVjhLTft?Xvn&c!#}PaV^R1lqn^s&`_H{NN=HvVc$XJuV<2s}T2p^4D-MA3kIk@3KDVrZal%04#w1b)t|IstRp2Y{#y@?#Q&4$bdcU9Tutlzmk-%^TdTJs zH$TVvRsop8Y<$q_tEUyLCV!Xq>eqSm$*8ToX8t~ng9IaS(d;6hjUr}=O|)zpln&+t z4Ng->&$B1g%B`TIYh$27AXE958DA^`HQsBK@>YLYAA~u{n;2$@6 z+A}0KYyN7Z(fhEk@wk&FY0{KXIOF=Wz;mYwtd zD$C)}s2>sTl$p)jcAlVYx;Zy7wf_9s6VJ5wbS6pQTaaI3JoX*jht!1h!I=XF1g8}>uy>~v^zC=@DA z%gT%@t0+fdQ6bXO(umixh!Kj&n{kNsYyM9 zyK&=2>b;JRgH87uKHt{TylZm8XG?RXSg3>fQNn=+(vmYr!ejX`L1w(~oY!YLam?AS zAO3ajalR{E*s_3;abbdH`H+mDa52Xzg@}}f$}>T?e2dEAuN(u*PDMQ<*`@O;&x8#R zIn;ERVC9cfo&+TSnlN)5cPiXK06*(J<_zP#y0m=1t-fR3`C5diMEYs$3=a;NQq)rt zcuDbY{L_E_zoGKLeK>pl8tSfGL~2|NlHCagOchz*)z^nq0`%3Jx6`O=#T!5PEBHnS z5wBDpyhny-wN??(@Cy-)Hq~9n#9$XHii-$ZsiY~hlTwmwqE!z1^wcEG&-g8U`tX?F z(p70+>avnDOF6HVQ&J3a9xJlAzkd+E;4Fdq3Ue6L(dbf|(Corutlv;g!(sy0ubjnv zh=wJNDeb$Mn38Uj+yzu*N@LYeW2K7#S(B$p1S8ow1<0pir%4P&vo+B$tGRZ`iRLHx zjv}~FYRALJAF)-tcN%If6;y9a1EvF$SdmwR-})E-1|5MA{^M8w1bz4J(x{C<1{Hz; zdv;zS>yUw-u2x$SmX?)|iAhb`j%eUap@uCubfGa9O*qQXQ9L%`ZgfCpC*`-)Cw9Nk zAV<)YC}~dTH0~-_&*)j5vk5Od?VJ}7mSVL%M@a+Ko7ZF8j%phHVH}%C8hfNIDoIhH z`kuw}T_hg<+Pmz11k%AV_(ll$mw>gLc?ljG$F9Vsi6_U&X(K`m zfXSiIHU`-%)*y~X8N#F3t`HV1idd70;^hV0ymbX1yzveV#}E=@BC)PC8M#@SaAAAm zv*9URi&?~*^F*sLg0^?soUIm{@K4)HR;?PSy>^XnWPg#Fm0mLxnzqUN6}h>1?u)+# zxaCL{h?*ju4r9VQgz=Ff%##k))5#fmh)W}%xYNw(r7^Y%3HGT{#~I*Jzfo=&O=#>T z8(5~sQncalxHDcs_TO~C2mf#%rY6{*1btd1zf21@o_tmYgAoP)lXF)N3zKUaBAzwy z#m{m;YVt{Rp$T9)3@w<#?x7rGy&@?GGI9%%M1xO<$t;$lziQ*OB3K0`S)gcRp#BOL zh8vKS5QR7bbhf4yokIbWi;{(%y_5D{9eOS`IR)D`twCA#0;1=gAQYwF z>KP6$?b|+&jH0zD-FytMzxgJbY2Z7lw4&gmJd~bEV1LN4QgDjW^lASrofn@=&&crC zsHw$stgoB`MteLfhm=iNkgj#;y2f3pz*UCQk!de5jgcnd<@}fPnyoY1HQ8q4B>=BC z@QP?e^s8SP%|`dqS!$jW)Wh4zd)l*}@8xp>?&@370dKJ}6f`LJY)eVFW6xf^^Zp0$P0iu{C!dB=pnmxF&rnsEjf%oF%uM#Njm{p7 z3i1#QNXD2fVH*Q8;h36tV>--(hQ?Mj)ZMXwK16ol7E?5wx9>iH zlC|qmQ*#C9-+L92qERc=2>?@FEO zLg|kusq2OLbY2cSRc?{`%0;@_y1E3t z+^cKEUw!p|x4jkTShr<*wryPatoqY=*F19b@-aT#I>*SZ={?q3HmU72HPN(4MHR_v$b@)Q>6lYdHH`{jPS3{&kR* zOt)#g9bQ$NB_AXM#9PiJs$Ez8^$`CP&+4n- zb6GUh$i=)};~Py}LZU@l8fk2-gE)2A-leqNeZxL{bbY{9 zwoBenFsMsRei&}!IsKTt6!ZPEeLPYC`8ej)M-p%WmL*mLA#0{_h_VvK3foJ!b(YBskHQ zf`O!8R1c>e%e983+}^lxlj$2xdWk-CRsEpa$jL1|Wpu;`Ounpw9-2gm-7wfUj4f5gc=qA-C@apV%$bFE zoIKq%b)yP96NFdfAG(LpJkrFKmCJ0!k&Ex@UQ;a@8QJB6Iio)H4@w&)YdoJ z*oZ|BwIhHSFKH4Zr{U|I}7R<*z8j=?~tc z3?H>JG#RHLf>j%~;Jzn6hRxe{V#Ys#`m1M<899Q&lu?ZsBZ6-y{fNem&NcRt z^YBiFp{9jj6IUavY%^+`?&0c%vk3Zq*m>wU+_ZJCUO0{J=6ce=1Z9Pbva1)p#Bxps zC-IQSY4>L3Wg{m&6+e9G zTex=aEFS;(3s}2xE6#lI7W*G&BX=}5qNVO8O_qSIST)SC)OQLzQ@_b(5_XcVki9X& z{+XnGE9@l)v$K~cF*s$Po3bt=i*{G63n{rpxbLy2soOK*9UV3&cr*1u!>#McAui7* z7KqYHQ~@?tC_OWmeL$OQHiS)^xA6XHoIUwI?p(Qq(B!!3N=@=^W5E;(l5^7KDs?XH4!%dh7Q#F}pBMdI3h2H^9vn2f66OyJqg_lLlu!Fm z8QrvkS9Xp>pEAE`!gbC1^*DC)nC-PI9ih5Qwu(lytw48YCr*5D3jM?y%Hon!u!40e zV3|emQnq=0BgoFk#I!Gf=K4FNaoRfLUW6zwAA0(elzq{7>094K4EsTuYXU4+s|S_Q zNH*t|eTR*wwc@(4d?gMad%(5;`tH~MPiP-hAUt#3bio-vf`>_|6i4Upspm z@4Ws4^!Ikru8Oi1*+(9Hnz(H>&Ypf3*Uz6~KLlxa5mUuQp|GR`TQ_auxTLc`W(?nJ zi=e{7BBaDqKm>j09iBqp&=h(G2Qf4@Zv7_hE9{}ZmF>G>=Rxe+bqHPLn|I&%iTUA_ zO4+!K{WLc z3v&of44dC3xBt+x zA6$L^O}zQak2yw??@^XfESmZ}zp#{Ypc3VkYmuIojoM8rw=~=MSS)%U%&wQeqeL}#U&MJr+)g@SO0{xKZ*tFC1uM~ z0g~q|z;OK9t-J92^S?%RpT^h!{U708{aw>R)^~hQddVt$?qB{X)|M6HCi$|3eSw$= z+j6ahvb>|=4#(mx^z?M1f27~GFHNGX$jBw%uiHp$vjK^0r+2sq9h6Potu5&3YBua| zTR8F^I?V4y9x=N{c0PZM@BTLCWrOXy1gMnW-#OSOr-zmfwUHyH&iUoFzkU7hAEI{! z)oQZTzAx8-hw!nsUD~u^6OxmYh&PE9h_5v+DqV6^v?04se=YL>X+Yy6dK4a)emA<{ zVdE*?sQT#~zYEJKGq~`kUztNFBPS?N{j|-!BO@52&QZ;Ht1UbW*ZZ`9DK^UVsC-7L zvEi5*>EiqS))sAXH%A>GONk~6=F`Q(i@cOuSl-Ngf29u|vX+5j`=jGQ@ z08=#Um6qy8`HFOm^fx0WY!(9pBk1T2z&}H5>d8b(s)BdtEE|#Zw(N5)Hi?N`2t?HU^oqM>6LacKqfJN6&FvpBoZG&4T7?)J6w zWdZ+KgaQT>fRdP#fj|D^e~HBCxY6d0kw2f0N_uz2iq+i-i+!{0wKYGCh>g0>m6C=a z<*3<=Je28A%2zVQY%2pf&S7KC{#>Ri*;DdS+M=ALd(ECvAc)3Q_mCDXtECS9HCtEo zs*60#A1WH;VRXdj^hSq%Rh1>%@t5T}azmemY4l!w*4=uSzU#X9()?d~r`3(ube{Txo-;pQ9LCjQ z!a_eL48-(uMmdvJ7G=)!nyjHnu;)z~>6_gvA;fYdJ9tjloWl`N`cFf4G>Z80SqWB@l~I{{SjTw`3=W{Nu@PgVKE(3eijqoX7UWT}68y7H zy)=YdTNE*ljqs=#q-W=%y}bozPri%xdx}t|a$&zsOitL! z{G&%6#ev73MMr-R4XpPtN)Q>tanpY9M<4r`rQ!O;OW&Z8Fvjtr64Y4py2iuCe|cE> zN9WB^$iEs(a|9b5=~jmZHLSeM56(9Ob)o<}M;ha4NA)>>9c3pF7D1pL$#zSbEm{TSr&N=2$`9!V*QA{OHxCz4Z?>kyKj*Sl1&NGkNu#1I1GgEnEH@)eliPRT^9 z%VYHBC`}q5Y_A!)98g8>YvsMtXvv@#xz5c7u`sKNa6kNG+B-XBAYTC$@$OU_m#GMg z)IL)Ve~Pb^0$CXZ#)k&2OygnFfyPlCAty*eLJ~4ptV3*KI{9i2Gc*q5AQgns%0{J~ zuf2O4=g(ip0u7i1)^UAF5(;ypt*(ekMP}(H%tt5L1dCD<3vfimCR+5m*XOfnbFFl~ zb?E}aST<|N_AFqEhKyF)ugJ^B3%~K(i1ehx?;C`Fe2BC>O+#mvAb!FO)6|q~#3f}T zob5G$DnP=HvDEJDbKAp<{mWWAga2W$%ibCg+2)MX5~C8ui+eNW1avz4wEwx81r)+2%@8+-B`2pD58_{ z;iu6qhu+*Y`;_g}y>SU1^0V9IxlID|9jbVEl!7~A5u~9l#|$f{?xDf0mB#8oiM zq4tkc4vvj@`6%gCeailk$d=LE((l8EXKvX2x>tP=yEuW(>r2qw*2(c3!#rh~RQP$6!+upe`DFrxnUW>15?x z)_axFzzG22!OzC;ELP=7cj_6*d(p7UGyQJk>5RGBrfTTCGvQ8oWQJ;(=~%-HGE$7^ z9EUp#Hg(<=r70AWD-AH%4NPv@~P+% zRV;GWNp=>MRZxeO+k~i6Tlz@a0XMgP2v6JT_5b#f7uzwIC%CTe*aSVKSp`ri_$NezR?Z(e^w~)cUz+?`3Vz@iN#4uRp>d6lO+Zps z9wsM8v1P|zJn+Ed=o;v^)%)7dRB}@*{cc=7hY7FJy}50yEl7y{tzS({Xu?kWZ?0ci zK%5Ybt5<3$ALbC@a#QBJjgGZ4)ApNX-SxayH)(Qtn!idtD`&V2N%==tm1N_=hmN4G zwHrNyBNpJ()jeeWV{()Csy(WoIKd7QgXEF=AsC>}A{{AMN&KRfb6O>yKm+_MfAA+r zFDOEPM8R$+*K}vEOs~U#praH?0VZFd{(6WxAFB#sVcf%ZF zYWAlY+w2o3V2f=g|HY98pT6HOT7)jl;{H}hnbdZwK{H}NE z9yvOk>Mi}{X<-Zf)pxaJ`MmKV@6)gNHZ?mRt2S-5i4(2dY`A`jm}QhVJN&M4^rSN} z&Ch&(j&!iDdIz@b+J|A{JM9CUnv{$;$rH6#FCd=sGA`al>^z|wh~ZgXy;onYLiSJm zZ>!ANZnq~5Yd2Nf3RF25*KgQ}iC&J=U?cg7+Ja*~JRZQ=YrP1uYogd@ZRfLmIHgjq zaYQxQtuu}sV>@_O|C~09#vObnzOmI=)X}DMNsD^U;RDG|_BsD*!dvoE{jB@VuCaq} zWqZU292pxEwRPF~A|90kM&q^Yq+zZ3l=%1`o@@^zjSCm?pFJlzE=;QJNaPT7>ZW=+ zW321R$;nu?Y7OfWMm`MjolCsL`-CO+E|W3#tkW0EIzWf`R9h(sBMgmfw9H-(k@h8V_Op&O>ctMKva71?;|!L`WG)85pxCKpYokcYJz zv)>!S>!(}LF-ZMKJ`{gj7Av+(jxcSbA-;)ENk<`hO&LIn$|~{9$6vsOv!`*HbqJ## z)(TePMA4-Bhm=D5r-^pZsOdE^Ry6w}CPq$A494(kjFp&>%W21AH0L_fA>XEmQ8v|<|(6GLFq~yIQ}?_SdYQ} zcJ^J!_U$bxTZv@qrs;_R40hbX)NnJR=Z28#4ugj}N?T%01?JH?JcY^VGI)yiU|_f5;ZMC{ys*s@){_r_0Aec&**Zr(&*uf;HRf%f)Rirw_gOk0uJ z(%ytaq??H80DkiAuX8wvDYb7E-=}^1r>FdIQ(j3|N=Au~wXK2n(zk3{!rkmEt-Ldb zHR(ZHn%G|9EJfq4Y;eiRnKm&z<)1*1_dfdc3#h25z>RBHP*-!4WreI{^Q-ZAI;QT)BA%N@#b>=If)qtt?kmh&cPfTNoQ2G+Nd6 zQy%J=XzJr&L=0`ZN~EM`OE_3ypya+LXEfO^?5RWY!NH)@m}DQ!&>r)1oE2E0fXAG| z73B3SVj*Iy)@JyqGd7LiM~5sE zo&vqLZ`+R4^i-5otV9;=bX`~A-MG(-!5#&+HRAHk8cg{7h@nnWpttt%jrSxYBPS2Z z=^3nhmhDd~IUpNIE4GEFW>{Aj-=9j_(e^kY;SG-QIQ#tEhwoshr_Z@ zU}oj2RVd=v#IPO>cWZ6(rMa~Qoy2vUcJ4)TYBFlBT(HUXAZcip*lXj?eR%#eUqrIo zgKzwYe{Df7@x+_a(ZnLjamdTb!phZasLR&F9T#K%7wIe~(;9Iv$9I->;xHkgpic6Z zwraR}>kfuTM|lr*Rbm>BJop513yX05+$r3;e8y;80e)t)P_^%K+B03-0jiQ? z-a*#WZ}N4Zs}FC!`Z{$_5nlN0XL)bD`9(~hn^a@XSe_Pl2)|JzP%rS8Hi%1dF2-f; z^7}>+^82hWqN&%kpL@VJi0MGLrocuIeWzMg*y`Cnk zDRac%am4eoX{2iuU?rI<+j=q5jlGXOk4@Fv;a>88CnUxriqC)R&;Jy6Z(T<;_51qm z2gxU?xO@E~G0Koq`x<^xW*gC==*+>Td^_u-&tb%9;XEH5$!o-u<<)!f*ppA;25pE_ z@4tn$d+)<<{lUM&xgUQAfBCil6Z7HGl!;YHq8?L5kg2&v9Dn9Bc=VZ%qv6sS{PcT& zh2B2e9wGu^JcFiu56ey|C`R?3!`QZY3$#~te=on4 z&s!Z?44-wACz3OAEr_nDawT$0ixEe>?W2v^NxaosTVwW&Z(@XWBy236BgSXjj7~Y0 z(nWCJtr(f0u3ij>CoLaI$?2q5$=eC)stIDpAo-AXx@aMax|uW^N4)1wOfjtJ zj+upfVI2O+QRL>NnI4zVt*&K|b>w@~a;RUZ{}*O4GT6=jn>Ji9$M0H5v}NOZWp7yY z&x8l#k~2s03W^%`@7;FC9lr1&WyDI^Khj}F&-%OcYxKo)(rqFU^Plm&(Hjr_l{qhd zUEmGUfASgI;Pbz~Z4>L1`fK@l(U%rts+6S%?33vd=}2C8{5KAN=^eUFHmGoq^r-V1 z{ja)mj78HbTYvdo<=AyG8OK*r(0D}G_>}Q2%eQCw*!A?vayHKTzK4E$>1{U6uyt2FZeoev76@Q0pxCcCM%`HSzq z{pKGw*41sBotlbYm|qCfo-@nL?Wi7mg6AB8V_?)y@vj8Pk^s{e-7m(K^GJ7@aN!3z zE+iy$(qxJwUdZVB>j(&yt!hHk1 zxOMdc>S&N(KYJSWS1zKWs014b_=wVII5(j7@_7U&#x>h!ss5^IU_Ac(7m!(4j8pIa z0(Z~8jgssX+<*UlC|g~L#MC4j^omxFHse$)foG+uLyF!}n2pyN19k83l@R zW;yS^_Xb}3;kVJ#+(>Y$RZ+2~Xk?HpJ!4a2Exg0SD6d?F4ZHVX-RA9BwSEhV*K8nQ zSimKM%JIHV0wKpCV&kSC4G@3zU5ZUAMdK(#Qw~CYG5Rw4;O{aGFHdgjKPTdhW%8Uk z9XZxkzGz-Q{A`Y7-fxakewTryij=KckDZ6^rx6ipD+4nVVv$Uv!XoUYWchyGXgtNk zR=_zgHe*$j+j0(RQq1=Hq~g}T?GYSHCvsQM%2lh$Uj5Z%903oFE`hZ<83in3YH}D; ziVEh;^s3Z80o|@SOlgli=z@wKG72euiLDw6Z{Ev%Rzka5PDx zDE0(T25BMPjMPw2>AMLK`SASAB*wknW~`5odM#DBx?B7Iq$I?^6(dJEfnQi0jrg+nh3UuFHH{2O(8ou3YqDetme&puhNkXjA4^9TfIOrK~!PpudW zO|#G0)yYXo$jr(_q9?)nO_B5JD~;PP^$6dm;nR2Vj#}zW%Gp0&cj(5zH)WXWr$}J+ zqxM77wjb&@(Ze#$=+I};m%3V$(aywy#)I@`^e0)U8y!7pbiz-PWsc6```BMv0i@MY zRu|P001k&#Iozdqn4Y zhkdvD^L~}hL;YgBU<2Xwsc6xH5m+Dbgxa9G>ep$%>MR+o2_i?P>*Y2H#?J}}(nMuz zLme6$Zkt0qIV}U_RjZJikx6|++2sr1>_;bY;?*DG&dm!L9vrlEuw|=OBPJmkjje4M z>>ofzauV_j3y@#1!qU+zlgqt(4Ty_(+sYmVTB*EOe*SZGP=57vx1;g)bxXajlxmW( zQ=t$>$frsnYLmkAioRx>!xz{F^=1O1<1;AVoV@@?DNoxvx-l~Bb^4fns=uOrGYZ*Q z^|_4YI2zs#-V()WSai)vv8Xd9U)aZH@R5MzP#fy)L~wH4XiljobzQn$&cd75ui)0j z)0m?iRLWGn&5==#LqN2oG0^x+Vk(7X68WO1d%)z5r3;Kwia5y&(mNZtO!qNn+{akv z482b&faRcI&5)U#h|=;BOtXz6>{mG{1}!Z=WfI%6EU!ctq7lc4WVxgbDMn=t3WWTm zQ|YY)OAW78>)NWPv8fS*eSNliziic7>g)TkddpULIF_3D)pkJr-JR&|YGpe*h^>O= zpmry?^$Le4tiAS??cuLjMr0>mf`kMBJ6+YNmOpw zN_=<`r{4Ox>FV^14D8su-|$`St;=Yty@Rffb_=G|HV7NH??(Bm4d(pUUeD800mDpD zluuuCjQSa%h=t~a|#?uSL?T>d(=fnPK%^j_L1R2$t3D2=~}Zj z^dR5mIP%nal1&n34o*{H#&5(ejx1E4JCpR*9zG)pt%FtJ`0%iIJ9S+?mSx_5@!)GM z*p$x+G73xUoOJxMJp9|`>6~~cH7(Wf^Dk+^>Zvi*yHszU5k)G8=w$C?Va!CCk=1(Et?z!(_9DMjGTS2~c_d%3YuA?lO zA-`NlZ%2o%V3zYyscf%bxq?d<&SLet4fyzHzDS*O9Vgy@2c^_0|NFoGw5+H^PhBtLM<#)J%*sj~GujQcE@>t!M-0qH-|oi@?xukn%Get^ITG zMph!T>JYkm2k`cruON{a{eefHL2PV1u3bJuzT;TMYkzOac#S)8TyKx9DpD2_@y_2n z*r?@ILR#hAc>5;q)!sH8E&EaS+K*oRI@=w>!_Pc#dn^yJZQ4seJ1ZA1Ue~_xr{DfL z$0LZ1+jbM%1t>GGk@mw;v98+2BQ-k*e&0Cd4KW~jLVTpv>`DPUHKi;fA#;LDek&tU za!MLpu6SGZCwU<~si04-NTsdX6-tp(T2B)OOtI5?TYWjKY^ehQ+}Tl3_#hQoRn&M zX*M)t<2>T^8r_M9rB`JWsjLV-AN2c?o>hR-iVBVcd74;Wd(A6@LsEJUB4`Kt#{C#q z&??(6Z0qJV@7M$;Y`X#KRhAh;xnSapJfcZ=WqMEt8gAoXZJ&}z9PCNWVEI|pt!}dq zv;~;Um0;V;Xfjqdh_;Q9juOvGrYK#p^mGn&V0u=*tsM8T4(--k<0k8$aN3Eo^J1tMHHrE3$3KB}TesV)e$h)wd4B>x~N%`|<-p9?$XVKZwW!VKc?byvWcH;RLzGODo zTR-{^ZeRL{byj8px8W*fN>c#0^t}Q{6hJRORe*iqA0L5__(v1HO4+TT!|6$%vn`P6 zFO5BAzVpFwz_J}+E44{)@_9(dXz%e5X-SjJ;v4Caseq64B8(S@uAW}oLgQXt16qlr zwWZOG>o?&g4{B?{w#Hh^vQc;aBD&ieEr^xGV0`@Kr+)(*_a49u@#)PAr)@G{@6XLi z$Ht9ov4OI-ykd>5lokeed$b*t%V=7GPp-rixJjehi(l!CH6hkS{MW(pRwliy!ZJMm z)Te0^=HSg={1CUVo;QA!9@Mz9@g^UHOV@4M3>Rg%FqalrXrf(qu55hK?KJIVZQH2y z>9(x_`9|Al2+y=M-owv-@*`ZjQG;EF9>Vd*K8EJT1~k-O$FBVcv2*t!)-wm;ajEF1 z?2Yi`p?K9!@_iP(v_+y9gGhD}bI(m9=o?_U!{pyd+S9U2=gHIKP5=OTrj;`C_19iQ zYkMcQ?b(CMigH`TBm5#8P}x7`rYAY9vzCEodXnV@#t@Z|0e6}f%}Ae4lOFq6?l9Xn zP5en&L>w&IScr~8a508#%Nh zC2})U5F15#N1I&}*xIgOprgempBspG1HoD36qaJc)?L`S=P0Vl1F@vHb05BqfzD>q zo@49DcOqUetSKDF(b6QIf|tZEL~7JC5y;9f!R`YOV#5~lA^A^RUi9{Kk-Wm;p}f#m zZ3>ni868JaMJ2Xu*g%@BH(NH2eZkxKo_Py?vcMAdf!ZkhMSe0D?@^$Y0v)6?WRqz^ zcxGk_?bQ9ZiSIi)dn^bqB`p(a)G;~K^OAp?i4%?Q@A=*&`UEOG`ts#$hux~gDtguueBLXckZC>))fqljv$3~TfJ>3 zwr<};JAAF_0Rn4GP54P~+RBmzus)`kHL~n;(YE^kZw|^L_JvJk68G5|)?4_RH8=az z@Vb6EUdy=rzvYmeTU|w+y>1;J)fT4Hc1{>aI*6Z)2BnKdPnIc%^>J~mb)N!26bP^P zOFwCWjI-s9Lqn2f!c7YLQ=e%&GL>gO5!O{QR%I*Ie|lyHvNN-gO{|$nJYX5DI7~{1 zE<0QLA%@>)Dc>DBKvFMPsY>ErL5Fen+ia;Y=E*KiMJ*3jn*jdQ%I+> z$>mQ@N^&77Ar5slx1sG5wY_CeKXH}TVv@&1*9tljUW$yACxG<|k78SAP1kD+QDvWq zik43!(I(|tQL2b3ws9KC#8^fzlx2NG6Xqw>VzAg4@)oa;j1C%)I(8Us9G2HVFo599 zTv&9RD{3Ju+*6pBRh*uZu$5LoI`0!F%80S{NO!3}^{mb>Q-S(ix7mUa(Hr?qJx^*Q zM0K!^#>wnamZ%3*lE&8gD!Ic#c%MDbkK!M_b9w6*(XM>gq6@uy*-z)ZnEzP5#!Dr$ zYpsqtZ}VFA(Xm%WJC5&+Me^6K>96W&AM{@5x;~4p3|I1-uFGd+ck!>zsSsQI_sg<0 zM#7S$)3C+(`T3c$*-&6tVA6Yh!Z)-d6bO`m<;!0R`>o&kV(?R+`uy}?{ncOLkN^0O zt*Boe|KB`*@ArQ1S83$`dmLoCu#c`>$!)oJ@4n8qwrB3$tKI3J^vBvBsY}X0d?-ej zz_wJ3{3m7L08ufh7}gOk%bz8fcN-}$@@DLrG(K$R`?j)F+5&Lxi| z#w2b8ZX|eACnsH_Rl@4$yw|z+m*w)K30Da#U02D=@6Z=k!m42(o%*U+$HZ`MaoVJE zq^zCiGy!T(Rr|tv*;^&V*dMH0U}@FmI1OGYWlO`tvK*ziVA0nuD#W$xtC3w$f!3Zj zw6)Y@dcw!PjYMu zG-mwhBT$|VP9TQL%N((6w~?a;Oo!;x22Wo!e(VM+5=EqH98|bKfoQ@RT4!Qj^rUCa zkmT5zamnYks?1hY@n&01%pW;W?MW#&K9-f8hpLU+5KDm4PQ$8&2JGDA2p%{{FuZNE zr5hK3k#kqhZM|0ptjf{e>3XN4A!kEAObm6gU$wWMNH_wXv}_tSsW##0r2Z2KlcAwi zteQmQee6^5t!Qy^fn)C%ZkKd1k>|7dF9Iwa(_KhMk`HrXqZjBNt!%&DJb;sDuCXly_AEoIC?e-3*atq7aecjgwxX#ZpY%Z*yk6T*esRH1 znKQ$_*EmVWo9w5aP~R$xi1=n}MKX48D&o7A3@`T6)rLOYZWutK+hvn4v-6S2qmjF7 z&jFN{tRU?UVW_(Wk&6M$g~mAU{L3*L9G$|5*AMN3H8mH3&fW=3_-CB-g!#G1%PS;J zk~c!r<_NWV@IPCXK(J~C6Wgu7k{`UxHcIwrjOB!iw)>3^)fPR=u@#N0%VfwIu+{^{ zu9`>|ZLv(sB8@kD*T%^Xo#*{JFXP7P_9gvk=T(mAO7za}MoXeD)ojt^qh2Kg!B)OX zHj0jURT9r+r7QvauCsbheb4WFRDbOp89;PuhB3dZ4t7nC*r74w7yZ*OKRbZmDcfYE z$uO2>&x+1;O|9ksyx-cw&M-XF0m!T=9q@FZ#zi5f>IjY=l-t0!i*T zBqqi4UdqSZD(u{MA3|)yrK?v^*VqE3U>+XyN^lw7sW1E!3Tjd6FFu>7RPD}K>Yv(c ze4;VqUuCtCEOI8(bjn#BuAAjZlw6U+ba9c!GApE%d2)m*!-O2L(lMfKl_#23e=j>R zf>VBzt;*<-mmGtFf-Iaqdx>&0fGAfI3RkX2QhFxq-w*H55Jrc!0w-XGyxWXyj*rHj zbfU87*zfttv3TIYBWNEOLTy8X)vIq{jCB=OpnQ_US2V-Mh~CYqEV^NfbdCss{Tz=C zn|GnGw9=e{3PzZlnaBB$PT|(Ib2dSz)kv9zrC7anyY15+pppOm|MWGSd+!yeZ1S3D zUy~|IPpnBpZLK3Zi=^Jxo5Z{72ct#aD;y?gfbfe}WXZ`N!!fdz(4>deTXtaUt^>BB z;PSZ-G1%2&dufWwwc35xkz=T=T4O71l{UFUsarW#O7EAETY#d{l{SfxL|Gjo4(e)a zLsxSnMh5%LDN0FT^%0*sJtAsxWTo-07>{4<3VF#{MPdxh=fsb^Vi$Rhzmh#B$JIt& zQ($LSaS0xI{NrTzFf`WQA@=LEl=rp@O8m+9Y^>gH*t7ojEhH0jKJ}?D5FAgASv)CAp+Jgi(KN+Iaw#>(;T) z=P*9diwkeQ2;WeP={>FV_625e<@OK)6d}qaqlqMqrEnLEV=Bx@zDMJ zQRWy&{_rgSsc&>%6SdYQyrS#@qBkAO5_72otsGlT%~#n(Fi%S+={?IqMTS%Cey4n^ z0}Hoz=_Neo4DUJb_AoN*6Ny7t19ifCN|X= zX$!r3xsM#VDx6C`piHyCViqE-GCE3}H#SNg?<{nX%#-8Xli)%kp<^_$o>JMm6*N=2 z0z*S1q>&*UdF%!3KK?XrTsn^{7d}85<-*}(4h?! zY}tLlwx$pbDFyM}8&^yoR_{54IpWrLUj6}cGO}r>bx}`r!%tZiPd-=BS7qgD{PrLG zAzpszukrTVuj27XKaSt|{r?3o|LlAC>VNom>~rd=oE4xo*bjSbn~Ov5ff;`gFA9iydn)=-yB9J z!qMlQ$8dn{a?{Q#u0k$lOA5=5m{Z_XKB+- z5T9!TN_{E{Hk*X~+0xpI{vOIB_PNe2AEHIGx5aa$IQ@-rxhPu`IVRf6Su3`cl_q4X z)(c8kWB)^snXb?ztOAjIqeFQ6r!SeluG+E{Tej`N6!nyXG)8;75FHbRjKVVPJn|s6 zZQY9CxEJrf@?**=?e85zfcCj22`xK|@B!;5S-reXPb}?B1^sFZr0}S4;)FcXX_if5 zY9d;hu9_NeW0W+VoSwt}SWg}7!maBUt^Xf<{Ba8=y719SG}qq5=pbz){{+e^sAtx% zv4A`UL&UP4QKU!ln^F+V(Qf*cx<#@e0>dMtmY%yUq@v!xM3?0*GKrI4@P)K?3N2xXaSM?zwP zO-MD?-L?AU7M9pP%o1_J7Q&2L4J~;tS*L(rVNq?(qU?TSV`KJyjhAp$Y+NkzO3I-9 z$ZuadhaTDvkALddarpmY@4tim%Ch`E@TB+N`$T$V!h4Sb3MlWps@hb$aXpqpwKnU-5nVrAv!R#;qS8R?mpn3Qb&1N}BF*+)6+V_I+~KnK498R=XeX#5#G#*P*EZbJx`WC9|f0iAI}f8jtcfcN{k)2w8f zo`r7`Jh7oy6TrxUZwLG#7-@Efl=9P_?NAgid5IU>Je~=UF`uYE(ghaH*8n0T(!oAR`HirtK7ENPCWaHXQTY$gP;1gN=(+$R{F*f zC7Z(At}!E!AU!$Rw;RgN$?`zKn7C-^BJ_~Sr3k@g-Y4M5Sl|I*Y6}xg7tUX>>vtd8 zz9*isa@h{IG}e=2qqbXP8?8F_@7rtXiGqpVMc~J(Xgn`J-!oB+^|jep=UvOo5N*bY zR|#JiWXE=lEZgW>iuhBBvAy5i#FX8;dCksUIPWXC^M!xk{_b~e&(3YGcOd)GTUQsR z#5+fASz~0OL5+*(ICqmJ=hca~#ED1D+HhB+O^pp&VrIVkj>v{W&;TC0S>&I_e=;=T zzK|^03Tcv+Nh&9HWXn^7wlphwCHiF#`G}|l>EHTD4zub!j8*z`_#axVwXNM+ntSb5 zeWwjg&a2(C9-tB@+#uEU*6n-T=X3AYRqJhUR{gS(g+rLqY&AqcFF~GU%pgb#y@mbw zk>l8Ubq7z_cYf<1NPmcx4R_xTc8O)(c$nRn4szkbIop5w1$*lGmnT1wIJ2q+pve_!@yI3&J%I$dE0pe}TnDp52l;#nW`TxdaM zGKxj3sUDa&6&klm$tBP9t0sH>qT6WUbdqQqe1qo~6=hmMcB|`1o=r*ucvfKern=*E7HYT%kgz zC0@W-ajr3kX1I+!aoGg^=!4G3!S9VZ0r#hzk#0SUQuWK}wdQ{%$#spug zb3I${qV9lh_0d1dZP<>~i9HJLc(Yx`s}Jk;u0N$4D&{yB^lg2ZJ?cZEI>iurN25B4O@o_R6vd-On}{h!}vrgY$riKz#00rgs$2xV;OkRr1bPO+k5zwRms2@81A!sm(N((;*{;G z+iY9v>U=-Z@aRYh=>^rVPiWdxZW1*9i7(K z*Dv9jWQEmR)roL>bmzLS+^XHV*J`%xlv2}W_ivoH`0ynu=G&$G)L57dHqzIy3XfF* zIICzZs{z>CjEHY0_KQkNEGacz%sN_Q5DjM+Zgtz)&p)?ODgVb#zF>Lf)pqgX=XUeV z2fojs!%8q@7@1sRq8+221LFt>mG6C=lq6xwYEO-cD-#+71c~qtLBM$6Aa&(x?_<G#o#%!BZ-4*$!p&~)D|nxrlwdh&iI$!cZ#$%zrj=CMyo^q^L14c=(o#A{a2N;l zPg+ZJ?vgLL+@3l}Ab!>mBKN`Fc;RMGJ=#tlwh7L&k#Eh-ew6Jt3Q0PP5po&2H?2 zYxEHuW^xk+4%(cR^3MLP=(Mb;fX3j%(K3c_HTBw0-#P2$7$2NjvElPJKG^B$5u+l- zlhsGkDCUWueSYqmb+!%L{4%lz2NVkYn&TOKA146mGWDMwsLHg%yGsNICdl;8=s3I4 zIAAyKbz4$=yw%k1G4>sfSemkDP9L+q2M_vc2n@NU#Tg5Y_S;}T4)IQVP~T{en>vHY zeHqI0D^a$z8s$bWlXls;`RcFUFWkX_L>USn)7pv*Ob&GcK`tg_T8MBnUw)OZmDT0 z;`2kcx;QD=s=;at&O%>(D_$0#m}zy}w)-h|XX4XW zs0t??Ch8ykhhHIA83%U&2%o@P;0|86ex=fGpaEU|2ETk9msjoJ@l&?@@G9+fK zZ~00tCQ=C)^f3i?8X9Ctq}sBns@D1Q%6PjK=BC=Y^A~M+Xv`|M9yt#r5pI*t+z|~D4NMhinQmRJ!xHoqjvk=eV^ExT@Y>PeHuuI>4sh~ zH5oVyqQt0Jxujk>U#-}>)4uatf8WFc?c#-V9^hA4QYs!|_7k;XWhxYm1;L1Vo*>6L z!Hbn~-Pa_#!H^LGE{mlh^DpPZg)N1uGg3W|$;h0>_+`5x{2`DSNj*{z#b?9$m!ZFXwH z9lFp+gk)xRZjt2|mjr35vvSmrdFyR!v8INH*4Ndc@tX2+7m|5@xExxS#+)YNRtE-Z0pS@EW7n+Ofrdq4QTczK`nwm5s? zjc>UFsiU{eW+!Jf&e3-3`V|We_uErXzvPa`OXttny&D&-tY*8t{_WqkYnRU0g%5tJ z_XoHPj__XOpa;6@@`mlebygQMDH9nkK0MKB%d;bTDo9$1-7ZI*m}GBtgCa-w(dJ&(TQm`(BEVGk3D5O4;*nwlG?4$R8YUkhmu{%FWC(nezlz3KtX@$M~ z#;@C^{7v?6|J6VD30ZUsR-G`hMXKrAx~jRhp##SFWtHKfOWOE7^%9S`N}tKO5?amwpK?=gTB2>+a{azlK0W z*=o_OPF$2dnPAZg8R~D8Y`kUbAD*$Ue#x;$jazb|oqXO%V$2deA#)2 zPd@89-j`=Sw$_KYL>dHN1v)hPUjQ{7Vi1#)A-i|~z6V7(uTgt|ZvbaK10K4cA zn~@$HnqorISE<2dgn$I&h6$%*WVaj_&)9$JB*b8`(uG-RI5^m6E%$EOohz4YfeG!} zT03~;gyof0T1hnb`Xd0Bl5zvg{D`OZDHDenJbcB93X80ym`S@_(INruva7}42{M4z=I7W?bxQO$ZLMt`zA_kmMaDqv1Obs{ zZr6@Iwne%E`^ch;j>>lH>g@60i=KgDn--ns6qNev@uU>lUfHZf&$gkVA)8VCzZlOr6JjzSrMepdFPucXr$vZC8{XLJ_99~~6>;N6Tzzx458bRfxSCWpWgoZ(D} zXG-r$RKGKF^TdZ1tg2?K?LBbN=Ef%N^H1Kj8&|)u+AZ6xOm+Kt;XzDPyrpL6TZ&+vTU27TY8wHJ?V`=k-v7Dak#0}F`c>i8qSZ^kf>x{R z>U@Iw_N8-nar#Yj$)zMhE_?8m2`dfD>C3(tT0bGvcjj9?}`ReB~X*O@FJ z3l3w#N<-{*4l)C=H5Gv*WJ81|qwy0V8#Z)6!52D3zhGP$U)N6sEc5{Pvmg_6z92nr zPPz-Lg7MV^6A?jXLQ=>RppNe0*=^irkW|*#F?mDaHmeq8ZP?LgUal?6yv>bct<*(ZIZF}s7^!jTT&xo%}S_tRR?SKXN?Wuty zVr|E6*@^Md*4p&IhI*yjh_6&sRtdi+J&3)srrHWc&j5{}FK81TC2VEhMh1uN_WcIy z9U8IforkPYeChhtOTwut+gw#;Uw;09-MMqazWVK7v*X8(T7vB55sf?9oY*g%tPt4u zL;W3=nUZ9SW4#uxdZ$H0(_wKImY6G^6)k(E%f9&NBWrxrVqvk#w(HPw+qq}I@UGm7 zSV`{kTl6FRz{fHd8noGoUR#|UrKc8~BOFi35st@7N1w3JNUyOSK}t@Ej|u0Kp>e%e zxTU@g4D>h+)z)mYEa|i05%P6Sd~9i|-&SV_WfzS}HHjC#C5cB$M}d#W3MV!G;cJo| zt5c{yHZw70fBOBm?d*+uTak`PIj2wIrw0$NZwtrj{59b1?RrnQWOvJh+cq;j?%6fa6+u7z0tDmFh<`4q&*-U4(6UN6E3d@T^n7x5o*jPr zMcY(T=r%-0QYtjX&L9(0f1#VT}or0enO5BjzDPUmhP>YMj-fGZrjC8tUzhI}vhG1;8+_@p%UiJ~FTmaB0|mE1{)PjcC} zx-u&pZivpPFKe>(CiRTq%2*2SMJ3ge1F4?XV^}%}8FpDLfDf2pbChlt@eq84{XzD) zy!0qbj9Bo+24#g=;vK=N_SWuk3oS)jR$-ZJ=uBJGd;2>ci|(aks=w?jpPZ5?+=;Xz z+0;**IAxoP3LM{j9{GPTeGn zK!kK1nf;PlB(QJF`+;PjWgfoC9E5wJ5U{ea+c?7=J`;0N{;sxP^6uE`J2CK z?L!0h!P|dkg{g7&;&V@1Rb{0+hf>m#Jzd#=6!yWMK^q$$vLR2`Jt`wO);8BxTUk}L zrOCL9k#J;EZeB`%>*F??nq9J-O;uK0wb=#-2JHOD?@Ku`U#*vxnQvFleP;KspS9g} z)pqpw5gBzsif{~K_CaJK0b_~i!g0NKMDJZ$n72X+x3a2AHwIBch=e2JesE~a9@IBj zN@k%QJn^iQpk@2)ogZ1ty_gw9lbG@008?-#f~zi^HV{F-8AslQlD_c_;>5o-=3E1LTv+mmo^`>fvE?2j z(#I3L;9T%v!o0k))($-JoUO`0xpwt})nC6XrF%~82==F8r9_StCo%-M0;6_0E~%YN zC^>C0f3_=J`RI^P0FNjJ~hSn>|vj(h^RQn z(?}_D5lpxPTVMljs7>msH9mY`6CkKObdM-(%COfd`w0yXvzIvIYNC@x^@Xtu+J}=Pd~MNU zqgE^}HOAruzhLD*Z2))RQ7YE9$g~q3>zjsje2I=~J^)R?B zT!bcE`Ba-QOh}K7^5?Y6Wwn!i?S?1ktiIu~c%$02AY7lFamUE?)VM7OUwtnt^^xr@ zQ0CbOyQ6E+*l%iC@Yn!4=|x$EjzaCUslTiQ_VdpWE-X8r#t4|2H|y*fbw^5WUa_Sm z#oDjG^%dK@|BzsUp$rYe!=o%UBiC|^D{NEc7OSe>Y&ki3G9Z%F4-LOaCRIF%03&z_ z6KKevV8Ft>e)vNyim4P_pX5@naX!&rVZb_m3J#J7?2)g_GNxsu3(w#ev;*D|@E!3d z;md|&3|;{(3g8ZcAflhLs?qx&7=Nt9fJed~zh;DhCb<4*TKEu2HVf~{$UOQ#<(Ir3p8V^&4&Kn>ff{`rsEmPf{R86(z8}Db_tAF_^*U&q9$}Ic*#+O5ot&`F zmIiwy!@j?_%L?)et!B#(D<~-MRPBdin;fzpKk5 z;W5%ZU_r2;{j7q{%gwc_swyifE|swvXG1cg!%W7zK;ZIBaDh&j*EB}qvHFg(vCymx z+G+JW+|pB19sUHUC6Izm?Vn+9cF{^|YO-)fuu*^LDL4eL-hJ>1-y^%McB}7)$|@7~ zl3Q4u^E$z|4frqyz>B~J$7A3n!!j$c$cjY=b-VUj#pbORFJpRmpkHuX^!DsO@}xca z${Tk0nHQZm-Da=L`H$FLVR#L{NrzQpa=SdD?s4wZ6eaBDPiRWIoMfLNO_ujVV`rDSH zaoQr-78I2`4lv2iWCra_*0>7mtw8*5+qUgiQdVW5sTs+`A+;a5A8u1)L)O#YVh`@# zw(gD&Zx{Q(ZryXxs%v&wOhTfbVUi)_RaEn z3CW%JfBqAH=78|%=u^*IS7(Qv`{Z3;MeJ~2ZyRlQ{-~?)Q&LBY(j8|abPoq?WZ1GT z%#7Kx@EaaVyXj}wz?97kwY<&JD`>yNLX|oH3)q44v!IMRNu3m+)4B`2(PRE7?D_zW zQ8^BZ!G|a%D*zVc_cwSAhp%eqkFwHdXaj#6?b(2T(6&H#-~)g138r;8{9On75_Si{ zZ6gA?HQV;u-Rl=@Vz5&$B72MU-|Q@3<%fKonVhvj$#nwWUU>aGwpHbC zT)X6xDr;oN5bRlv8LZX_@GK!F%Zt2cp^&$IK>uQ?sQUrH-g0&Gw6dAa^M=P zbZd9)5&t5Kg30b0@;0JR?KynHip$Ex({9<~ykH@HZdQDjRd-u<9<;B0_jjddnEmCS z{Wn&B|F*?p>m*?+mKaaN&(RX`CtFIb5@yu5&TXF~)!q!e? zRU#mD^Ui(t&ENfp&gU@uId+XV)cJhfD z=`x}r>DoBg2}DHSq_gaQoS&QSTlaJiPFq&_4l61xvnvPb#}Mf z2R~AsE%kyO_!Qs=e3%Jh2*Gs@T_-cakgv=O(%*wa0lx_XRh(yvr}7;761IY4w{Q>~ zB{-8nO4oH)7iHTlTSrTi-M;v_wMp)_KW?-uXFswFAN|}@V3Pv%_*1Xg*MIGItX#6W zsj=SfU%h0HZeO+b#s{8F1(NmEzp^=a7ZbY#PkI_`$#m$J$zSZ8c-b;9z4=Wml+3=a zcV0dBsqeeq)%3{PTbhl1x>-q{n4V?FPd#TxPM(tOoMQt$UDny!V6DxK*7V?k_4oH# ztZdt|>T0XqwZ{rKRr<S+yVow-^$TBES9`1M zuXtZIOIe72pubym-6Q%(rwnX9V8u%4IobU~g58wp2A&S5U_~B5cLWG7X;@ldg9!(_Z1|(Gw@7CmppKJzFf>H6yD~h#DhXaK`GkY_q(=LYtUmn+$9d z?A&O_(HQlgZD<}oYO-bV8tiE7Z32x6nv9Q^eXG9DPK`-7d~7X`o2*;%EhPFRz=mvO zVVD~k8TrLlQ@cxjtG0Z$NWm_jpO$XgXxaIt_U5;~=P87L{MY}3 z-Mo0lb%A){7Yh@XvAa|^J_OPPGZ6@dGXaKcob=Q5A+Rs-l}Hu~H&`6;bNfX{OHj&1bJLBTD8gVNvEwMv~4%wcA`z*gG&v_*QiELj% zn*#o!KOqNu)U#ThK>yI>m|eed-L77`VFQEXmXuRque|k}wpsf8*-w9N*Ux{fz6Qa` z*dMOXt?N9@C6PnwiD$neJbBUzHf^%f>RQ{!79o|J?e48>cK7B@PmA9r{@vEz?y!m$ zJfMd*jrrMg=dD9@%*y8O&UW#vPn?EG{e9=kIr~z-!(?BlX#CPM(j}kR-eT4>&)_3W zOjQ4%?W9!8E~>Jmj3P_ODzQ1)2rH@+8P?X^WS@TYq2SnT@oCxi)a&1}Cr-a$^JCq@ zi2=#qC|g~cv#F5mXyIqL6x+bhDLiI1dR&sHZjXv%Ww_b2^g47&GAa^uG(9_IqZ6a< zqhQRtx;mT|cke!6**QhRGXih}-3q-hO5@Jn?olzxmXcj*(TUkkzu^4h+=Q*nk86x4 zosP#RXT)P>gflE43I%$8OfWgec7ai{5!lOlMfemhUIV^Is;*#CE6|Y~$29&?>wXZn zt6{r=g@qZL92>Mpx31fxhxeVAq>5ixiLR?_YV~ZC#fTT|*}hXU<-W$T&2bgoBMv{V zY&Gm5e*Y8Z%y|f*xclll?yL-9XV{9w`{e6p!r23?H~MK|D|UDxhLDKNOI-1H{Y_IyLVVs%@(V!-EOgx?PHPyQl-6J zYl3yzj(zssKm6ymZOcx(df^jmR)6sVxv=M($SPrk|KvcxLSy=amtgyf3yD@F-_^G9 zfo|&(FL-qGns2c%CBBuyc5mBv+m3_B)VE!hoR;Bog6$f-6S4UsQh0iOl#*k6Ht1OLT780cu1tZuNb);8(0GnP?MWclT?TV;c9-Lc!Y zZ`&pMnexmqEYMJ8UXQ;+crQ-wSv?bki^(Y&#x^(TujplLy)-+o_KEMauz*$Ob5m?5 zGeyfK8}oj_=gAZhCEcA&YS`TP;qeo8iO=;7Pl_L~wV?V$(4r1#8{ZjYI-_w3u}zQ0 zQ>}8iATxmpzwr4H%o`^iA}=#lx^l?-pOlEKim>sJ@L*<9MPq&I8-i_?WZLL~hpkzE~!@FrN z%>$n~p)Zr;8fW1k*+J%{8;i`G|51jP3Z9U0te#F4ffS4J?VgzmJu^Ns^mJ%^Xvc5= z&iB&(@OS^-%Gcg{Yv#M({qE|Y{n?+b{m~!&k+=6($NzDT@BZGe(#ZdBeh8jXqf-mj zO-=PLJ#K#VwT_mSIuWFJN}xNR3^}m_-Pcw4o8M9!U@}Z(xxy4M6zYI^z!hLL6n5srx31%mcSa<| z(3yzJ@NV9P0Z4gomcC((@DhGFQxenTUeNx4IpffG=ZqJl?d$!4Sv!m2IxPcc7^b?W z=Xme3lu%Zb@Se!1a2p#Pv+=QUR}6?o$GBu47oG{yiNL%hfOV3SUuYFu_F7JHu>^ml z&4#4djt^N(_^M@Qq*zW~j;DfYX?kp02p(7XRiz5jO=1tQCphp@7d#qJC-2Bl(e|< zSy`_1c1fX_nZOClMAM?LM#DKxJvcp>@C}rRz+sAGi#7#<27^#zg^&Ojz%~6LtW?CG zqb&CrOUhB+uY&-(!Pxmqau+VDNBFO*bt@2x{x0Fx1}?2*ng7ouYjJUz?LPdZ@4M92 z)n%}BNg?+2l42}n%AKbwlaQQY2`QPb zEciq&-@3<&=RlCtZ|H}f0t>;5HtAjT+xN+m@v<;CslLw2n3{D1IXp6$IFF4_a;I6C z@P|~kJ*}-~I0si3)Xq66cfcQT#^~KKQuwlDh!u(mF#gwhhCaNX2trcS|M;)})S4eQ zxKn3V$|XT72@>zDFg;dSQKXH`1#2oV3jHoi;i-X8oP5 z78)8by;#a_k`=MCy`V(!ml520)w1HJEFn%fFU4$XKEm4CLpC%Vvh>_CtKR#BEyNmWMFH~bD7PDo0&_WqE4|F7P&xmnSi6y~+C6)EFuHZjD$mZUO^ zveeWhTM-`h42~JAOWHezt$%P-b&H0WT-TUH>6}#yJnv&J;@DmgW6wQNCk-;#Cx1<2 z+&MIFS8lcn6~jEU$X8x`+J5u*e$SS~yFAKYuw%r)nLvht5KMAlWV1?t+D1o)t+%Jw z7KLjBA`K1p`>Ny6#FUNcGb2OB_j5u<=yCYVvij~B6Bv8dqsBYG4<_Y>Z=!7+jK0#F zM|F70LYKusPzU9~H$1}c__v{WgD=3?4}SO;@K8B|CiGt3hcOzA53GZ471lrQ zBYU0ifkSFDX~l6Cxoxa6JQo-PI@BL8tA60917|%VSBLjgV?+O)Z|cKq;J+?s^(_2{ zd*~X}6FBOjQFw*w@QEnufDZ(1qy;?BdzcufUh2|SeXaL}QhJZ4nud>ncY-I^To=)M zH=K{a3nwrzqAk=P806rA`n0&@E9a8Zvt2fC-n!FQ9kIfuuczBWBmF+nJs=upb?;*t zGGBi2p~VV+ag2Fi)P|(g3{S0?&ffmf5tfycWeJHXcIU=b3yp#A@Nn@*wTE$~UEvY& zf`7WjCMH`-LcC;SnD5a>091E>zX!2p=9P+mL)QG@uJv`bi+706I|S4>wf(7A-n18A zd&`>JTJ7$=Tb3c&PT*c>V$5#cy5?!Wr^ZI~jQR>*>0m6-UtB*^JAChU!Hd1YODb!9 z?|K{vpTG0AjSY6`*$AuMzSj<)e$L|4v+SL}`EzT&dC5xilkN1ey>{*DO>2DIW^t)G zw(G?6R=s7PryIR~`J8n$-nSI->!)6L%?isZ?DmZ-cJ=d*)dtBv^#w=!=1p1l!gD9> z=G{iS|EO6qM!Zk_0$gPff1!_oPW-9;;BM9Ct#CaNNI#j8PRD9^oO@&w z5!yJtFu6#oS$HXq70@fUxZDn%c*;^)&3^r&HQl`~*)nYvHCycEuYK3`CUA=Jp&xf{ z->|9433pDjbxNY}g;i5|(%BxjJhIE5y{nh0t@K?u15YfH9ugKEV=a$Jw{KRssoXZ# zZnw;$BBzIG@#2owChP5N@vJ-S!Hb^Fc0@$>LjnPf1~dd8fM&Sh@>svY=|IO4eTgwR z-L1pj`GDHXNZ|Aam!MTo2`oBi0)?PTQvRKK?p52h_n`HS3|PpwD2TK9xdm%u|I+){ zq`J)e^UIQ5j4|&(9Eewpo1Dj?7A+lGPy;|J!Ixg6Q%5F^J3Jt`4GoBb{q2B3l<9CnzB<_|$rS>wF!Y6bb&L_&VPLh7MOf2b`S-bxvLIEN~K8!L`5Z2oI0; z04{&L@1TsyB%qQmnY7)P{z}EFvM#j+}bK9r%~N z_{h538^z-UZ{eiNA=T~e&;bs{hA&uh#IzM;#7Sl@+T^0y^m2^oe2ZtFnO_VSf8OV* zb?=J42;9T@1$+Z}5NwN)mX_lBH2YI7%?D2VImz=4koshce)u@*Ve~g}muHY8q@69V zs*{CX04&yEM?Onv)E+2e&wwA{E!_w`Hbb~7u(IN7u=za zQyg6qd4&#xTn0x1fD4X-HMBAyS=HR!EPjrTwhrX=gYxL*9<-#fViFJ=ka1@p}!t@5rU>09jvui-gl7Ksw?W<_!J*6sF{Z~d0dhecOY2uoo*oucoTS8TE}@%Zel94iuCB__nV-Q_$)JZeR} zlU1O@8ovecwVn=E$F-_llJ)fVT0@iC8k=DGo2u-Y*S==+p)vdTXFrjQ(|Dji3AWTF zmgO*W+YFk}ePjW8P;OqX2gS3Blpr(baW0R*EyjxesZDB6e}A`+3tItX<`sDQZP$%8 zzN|oHVF2y+l=P}+w13e0h0kMZmm1)8;;;ve$V7%FNA^9M1Cv0`QzU(Fg&5dk^flGRaDUCz={tY%VO?gHcGc zJ3Q3u<ad6R?%Qqgprg;dVd+^}l0^;n@aA=!8b`*?3w{AV zLlhH zJzjq<>vWw}+I1}4C@%ECrq-5L*gCB?V z`UD|M2zz>B0uBOMAsRqlV0VB^qNNR;cWybtDz+W4Z~o>Vhp`2cWkuru_=u~ zjHPB5*q#F?M4OS;BE4a(U+^9sw#lhUwOM>c?ScP`0(_!*&*4)xw0b95c%tFfR`a4%eYkdML6cgd&l9`cayRoJ;ZDEiynw(&=#PL=d}D0$hX0AZnL8ghTYFoBwYNXEk3Ra$CZ^^r zx3Juvc>Z-ODlD*x&ihuBIAx_J>9(L}*H*$bKC`mfnP4Y-K(gzQ^RgqN6S6EZtx$bS zl|46a6C;D_Lx%f?$aFX{6%sD3`ULj1t6y5K=<4aGUhu4N2odB6ykA0G^$pq7aJMal zhJErrE+yNd5>q`O&yj9LW3wNBPTZ=usf7?cfM=UfxW-A(dGC#3pSy^eh%}23yVfW5{Z14W`henG24Cx&$^>?LD z%~)Ed?A4MA+qUO`WK6NG%uU;0{PBNnH)Qj%_29H*D}mAo9sCt!BT5iGC(6dFmQFF! z*J<}filqyLa=d_XFg0d4V2<+e1*q@9)5LSq`G`%>gU}dzp!OM2FwjcfcReCz5=j7};gA zWe4S!mROwl{-pR)S6h>BT{7C=Yg3}L*@Zdr7x-?2)0dLQi$vP4O5l?-J22%3&eLT^O>#~16}(Q};9 zYj~B{fo+|Tpx@Y!flfmI z2>*v>qGIEHqCG7E9^EV)PPR??$>JT0);BzFy`$3>7L{OWIYp9Z@isd#Xd}`g)KSUq z6z2LDHE2!kcA}x3s;9H9&CXspZ@qo}8lxD?l-@78;WKqIj%*c!jQ9B$dgE=yPa+u%9xp@x zv?Y8tB0Q2Pv!>|y*t-!CvDahb6B_gLO9v|}E2mZWI>!F$_}}w*`0(Mc(#ZdBb%@x* z8ap~lZr{4~+NJa7-s@TgcJPw2V#bhc)*=U(DTOO z1h2YO<`+&U$Z(?`U4tlb@o>gUTc=^KTV+%p=7ngWrofrH!SDiRL}kvj^zNV*Du)5V zh}PT6-+H|q7|`Nh6!S~Lq&jVbQNhG;D%0lRIzri>N<1QpRc~v9}{t;LE6L~Hnm$VKPON1 zEKAAkvFWi93A=G$X^|s_SyGa3`9=Abz$!~A^3ie04jY^?9i82_5|L<08QE@VKDc#R zhJKdq+{ACd9`10|{wE{FpfhX|7!tPqP--^+>% zte~XO)?~CTX&ePb>mR^CZIoQxbPkffK-%PY3>+U>r& zjWpE{>+e~^?dvwu+aWkFTXA`{>aMWn`Uf^K)Z^m;Tv2{~^`GDq2qPlFn1Dx_(byqm z)Lyb1fD6Ha5*I{=f{)-1AKJp0f(yY@D#3NthY)i|q&}SU9`Fj7fSh0i6KF*A7fJCW z6*|sj_MQQcFz(ock(IhQ9&NB5#6 zgGL70e6oE>FhxNk62H85n+zrIZqR4?C0z5#b17`T|Dfu?pk7^`wVCmLDcf^`nP^JS z#3V^cNzHZ#6*x|tnam200Iq>En*DHr8xAZwyh@b1#(@3f+1q+)c1*7(>RiHB%20Gt zx(q7z^$E&5Myvd+l)0|9R#mX%ju`a5U}e{;jE8U!I!VvYwPd2Ag)f1!$qE*f5Y?e` zQki}9-n%lun=L`@LP2C-E)rkc$%_9tvXc;tAeXHk&T;})#4 zI8I~2B#!V<{AzG$!Dd!uxMo$`Qh1X0!#mHrd7IiaJKARr7vHmp*+E^AaiNAx%q@9) zh3Qtc>!hV^+GgXSkoEU<*!0MdtqDeni85+71(WS2ylVXNeM_rO?5X+1qV=M7$4Uhf$|-I$~v<4^1xEAAkQH z@iL4^HDCQrPm8mz&Su9QqU}oyvMf74$8J4rkz$@Cn8sOOzYGlFkFR7`g}z!s{q_md z_4=!`qV1Jan>D6n&(LTJFZ)7f*YCF3Ola21i;L|4{LlW0jK>{PAlHpf(Lz8|0ZqbJ zBH-(^Tz!Hb7;|^T=tEidCqtPh#oxf-kn`N;mUbHwFJuyaelak}z$=_AB2r%ExB!=0 z()ifRp0{2J_c@1Ga;T`T!bgLecn8e^w$KD);l>_)Tjwhj zgxC4=`Z(VfT;18Ga)C~ugRxTq>Or=$atnMQNP{-=@!%nE3cqoFEPLO19-QXzF;rRT zf%oFHfbJPPXw_*S8s|@C-8rZCz}q(_S!oA-p&zVb_Wdn&J%CEMC8VUfv%I3F&UWnH zYl-5gE0Te?Zrrf5AHQo;V*^ebIAVy##>tsoSnewy6D0S+tDf!-OJtJ1v(3f_+ikGF zU9^qS4ju&i-ma`gi%xQb_6k0E*%?+*xykbL3uPRS+Jgs@wSrHUXf-###I9XDYYq2q z*xvm|EKx?&gB#a{5n*=x^b3|>S}LP@+#P;6=i`#Zvn6{+hR5u$|Kz{3$-yqL$6*)9 zCU7QjM!2S>Yun0V`k&Z;eYxa_4MR_^NpIvYp(w#U3`aSYu0@MJ1(K za#o2gi>63hM+O1(ke!E4*pX*nvbM*~cJbr)Y^1Br<=nobCoDp6?0Rs)jvw4<4+NV2e;%+0_wP8b$3e6)o{Td}~wr|^R(Xlb>Wl%>qR`9F}2L;ikWgF=4v%Z0T$xBt}v?p4S+>1|4w}Yo% zuoCI*^|!Cty_@HyBTkr_VEMTz>hG%6ZK-j<78Dj*c3y!!Zf=uZQY>XO%~$`fEzJ4k z0nSHk031Gm6+OUlPHjq#5uaWhwYth2E6mNdFK;*5Kxo1DJ!LDdHt~nm75YYRgYf`< z9w4pryn+JJag=Cw&g(_Ou|k}Q)~VTfhs!VJ$oh!u+Q#_M4pv}8A2?*Ok8ot_P41k6 zHxdMtDm#j6?7hA7$Vq$kwQq{w^x3;V`D^PCkBJa&j7z7_6wlr-T0eO7NzZE3+TLz$ z9UYQ4^Y-x8Rl6*DN1yW5dxAG~!YbEYhYwkCNttJkxOw$U*;Dy;@W>NB8Qa{_U^TT{ zJjLj}t7k;#iB?omXBC@wT2@MmO-~Hi*uZ0(9B39ShgHrjJ0n{5Xo7{Nm+kiBA&bx1 zZ&?L9?DO-V+vQ7VtfZpKUViN@-#7Hr4}NCD-R)p`AOpbdbr=CL@CEye)Z_5N!Tv!{ zBhSR)q~rqlwQ-=!1n?HLB=2!>$IAXGk$l>ue#WQ|Ow5t;y|MA3%N5qtLbpWJrIqsQkRutth{A)d#T!6y<>;-hM)hf*U0pUKTH{^L*I0R|u>lr< zg^XjF;sqz3dfG~);|xmfo&WS>ixplSJb2hfh6X*ruA{SEGPhgy7F!1dwi|ofS60<{ zd)aaixSo3UY0F4Xa=Ych-COqIN1xd2YP97_->VXwb5oP7tGV88-Mk@QR;+fQ_g#~& zKQBHndp0HAN-OIuyR_U23pe?y*#71-%pI`=f9fL^51_HYY?jgrl+RZ-rd`6YhAUjnT5tj ztxtL?d+cWy)ktRNTT?@mbq|hMN%aoP&rG+U|L9MxPx?!GdWOa*DhRNaOkWjGT9(ct z&ftCW)xq#(wG11Vpv7SOMglySEipY`k`Q0w6SC3Sk}6sHGY`}9xVRYE zsU=oYTq63Zw1T2y(OHJuHZ#&M**BX&c`}7uzH-ZoYqr~SZ+y$L($Z~4aJqKsf?bl% zeC(+g?CGaY+xSqwH8+uoqREB_2YhAunDB=TAe$<;TA_4|(#k5U);s(9dZf!qzmTwB zRQtibD7EV9r7!&1G2!7*Uta)Q^%ehuh*z?E$>ov5TEBg-Y;|(W)>^@Qmv{l0Cz)?%%1M6;mY>!)8?d+E~Y|EZw_LT5sLhx&OblY~8 zrCW7DjKxN?l99&12jeBHWVbHQ+gik$`y9i=qAew>$`aC9p&sXpDd36Nq7%XafSi@I?$XJxFN7kI--cD<4 zZnj5FE!N#XV4)fDI_Y<8*|oGLd%Cc~D(kjcQRybpb%srbhU}jBZ=-Ag{1UmPmGOeLMHr&xLP+uW?o11iZ5lgMf2*53ulUrbH{g#fSO@FGLp<_$*%f_3!`Ve_3-+2Yzj1DO*A@iqBUGAX&Vk?rh0eqe& z#lK*Raw(10wjO%Qj-Nc`i=)KlRW3%dKEeL_Pyc%lQegsa=b@9*4GMj0gwer%o7cO* zIr=aqx&Rl|DBHaAfE_z_($bPs)u%9*Ym<`o16`fg&~V>+Wh-SDZL;GpykZ5LDy>%i zDF6Wf^hrcPRBeyw=+-Acw}17o{!7nFMMi|OnyogWaU1GsR}-b%i>}ov*R%Kz4o+bF z`XK0Z&KDHGd8D4hhlzjJ`I7LC;-sQqU5m7BhmPB8ufAoi_ix${e(TG$&liT%~n=X?fx407xcX(827X`+2f{%&Ubl+{-LweC)z<9 zC{OD1Ov#l!`wm%FR<@eH=)MBRfUQM)TAQt_rO|^l=EX#cscqpH3;BhOQNKdOd24ZRec0K=^gl6nW)E}g5NP; z5F4LtX&LF38Xs+|b3@jwajU5=w36&Z>*^S^?qO+rqLDDYH#sd&a2NAZo94tX2$V(E zvMuYO1N)>m2L9R&dk4ROprJ7i0>8Ny=<$KR!Qr$Ev=|T_+$X@$%jps*!W z1{`8U^#l0PPZSxSGteJ3gVR3FJ|2Oc#V62x*T>0k@os!})QPRhJd1dxk6obOkO9W+ zFz*1Bs~xHbI`#sBuj;#-c4kxnIi zj%J~o@G&tx-FEKWWt*#Oq!Z72<{B|}A7kLAFMqAWO8rhwP4tY)!J?g@olYMr=x_)M z>k|Zyt*)#tiZ_K+xJUZ^?S#~f>*>k4w~NclnzFL8NUiXzOT& zzW8GN?fUxDAHDzK|Kq}$&whQVzo$U77UfJ|w19Imn5=+MMHGA>7!mV^f$U_wexD!C zfOHx-L%7Q!W+E!{m4g06K%86;1i-qH1hI-4czIpeU^q}S*Ig0Ux7X{Fxv*y{3hJS4 zC`P=4>paalb-3W;w;FJi$z0UI;bXJWQ%g2?W~BHQ>tLhQ6v@?;s6qqKr9=4xb#=v$WUyM*Vsx_g2@I ze6P*c`g%`?Mnq#?QJIxU>5ooKmC?N9%2G^hlnXIZ7GsRC&uFt0&(7{XOV2E_@VI0t zcb{34jQl-&589r?PkJ=m7a#n{RzidJXJ zN8dMG@L*y;lE^1DS$4V2teb(5}VhJg^R=eYX4GxdknUCL-VsO_Yq}0QJfiw6s zI@~WKKuTO&tF1|xWA;hLK8 z3!%e%bQy7|@dc`at>CiXqeH^eHDh(%frC$YeQk}mEiXIOB4T2UJ(zksTP4tDbT3FN zL~7!2;SA0TRj-#x0iO%GvNyM|Yy$)R-l9AimGnBm%^;H8abEQxbSiXH+$X7eg{oCwD_$LWEx!hUms(jsL|bu7$`yJ0jZ#h-LFtT2p?t6q-LU&y5#g6|0XIEMjB@aBn zgF(b2e6mXKghx;xM##Lzfc*g3VgUyqI1-~V$;{05)RD_FewlEf%_z{3Ys;1rJ#Wzw z3r?5p=f&!b(CD=AY*6DZqbw~)_^);g#^6NoPL1i}tc`TFsGSpnNkGSQGI+sdXgNK% z(Dz{@Mc3@)m<;1Ny_ZR|81bl7OG?Y|c1(0P+wAy&&CSf)=)|lw^^E$K6zZ+UKG6zg z@T{nB%c9lUsgQ76#*Od}9*Ob7em^Mu3;}z|vNDMAm=#Xmf6$sUTD1i5!5xi{8Uxg(DF* zKQ(QK_U*P)&p)qg@O!vIKm$0?9fmp>Gu_gM-zez;KDh%@V+*e1YzKeXM=)1Bv`hxt z=GrPN-&AOssmaV*I6e3q)L!-;!%;XVe!3*O_SBHVzUD(?fh zKz#xK=OC3De3WtlOvO*~tDzT-tNE_%MwzkKeHZnNsypi{_FQi(hc8WiW4so!OF15P4R{Tz~ zIzGv=b8~zTw5I!aO*)pQqn{pYA4P*w#on|$PdPce!|zdhO-IU0D>8rX&x}e)*#$NN_rW=72eH0ql`1K zOpIlZwkY3Id2U|(LVzbNWoR;_J}y~CcAlM7d&{W; zH}I5i^sZ?26?#H{VznpF!-bhi3ylw3vv9Df{=SV4j<`dTYyy?F+pVm!PI7w8 z#)k)l>*o9@T(So~=S~2|dY!*OKb%7|&=|ZKSZvTx;H2=8(4X!>H_)i+^{f1+PlRx6 zewskkUW-({tiX>+Nb*%A9)#xQ^q*cs;404C-FuIF07Y(Lp|P#el`lT9N4Kw7PkWPX ztuC>Wl0w_JZ@*8rhfjA~yi_UQqaFUSI%oNr(tGr-iCG+~0ljmuTI?6Rj&6CdJ-DDR z6ve3{HUW*V>%Hqwpl_14mTzCls8N7heM|$e~E-TdV{YVLQI4q3*1Q&f-NIQQ=FHiP6^8Jz$eF3znIa z?>Z)Ybz1y@tOW2c=Lf2keq$S<_Xe^cz)yJF%=EMevf<=*2b2zQ0N8@F9Bv1IzYari zASeS5aJj@imB*Qib5bY1B4}B<7d4K_4jLPqux#<{U3(7L$Vk7ZG2gsnpMCAyziUa7 z1rHwFv#h*aYi)XDZ~y!Mm!13QUCE1k0>NVNUiE`XHFWsC-VS?k>x$jD@P#!$d|-#4 zc+yTi^Rhh_e`hu4o?UxwVQR>(eDs%AmOO4di(;()=4HEg^M(zNjk!ITTe{UUDz@8d zT&{%{qSU@c@yb=Z_jp1Keut$MZL@P1KDQg!F50s%f5lEd{i66}qrLm1zp(LvUJnLi zJDDK(Pn}f%fsBU9Vapal=#UfRPi!9;s>yk$#&I`!gL z?2YeyPw?6A&h#Vn?}gVqg>+{}i^W6-Tkdd>q8ofqN=ozCDaR4s`C}uxCX(GSzWeu-b6AV$&j%wrt&MHJhu&x655$B(R%c3s%*UaRqw| zy^`QCRu};X?$3y?cK7t#`yYO2m# zTy*68L9h+<1L$Bya*qi?*^JU>+1>zMe<~CT=xSaxAUcVQOLRH`H$VXDA{iHZ9wWPF zCZ`4AFkcA@+|eyM+gh!&y}w*5<)f;7V>*rrVeO?T>xS0``O-5zS@f z725Va2Q9C-*wST3rf9qx(H-yJ^}rv3WzZ8p`soks>bbMl+S+EDckQy5UwKjdW7uxq zxNN0cw%J#{_G@ZGqW$Cte`43qeR#{O3llO_w!R}V^vL)eav@K4L+0;;*g)NR+)XJo_ zHr}^p!GV>JM^8Uz2Twn1`;R_pm1UKZ$&Uq(1=T5?S>Nb~P#F9Z8HAj|*M%Pqyk>lt z7i8D=v`c<6nJEq~T=Nv?vePqja->_uyUsT+nwg)T@vV#=H)}i^o2{v((fSAb+zw{) zmPx96x9{84Yd39ZWYlqAqioaC3on2AkzKv`sdVC5+2j2dpORta(xbqUq>LQfcl?Cy zKYY}KsD`B9w?D2|{Y_R>QLXVy6RosbMpm}qROOSlAHVYxyLkRn8xg-h{mNHuQ+cIt zwTLf(tYRKyu+Dp+34s8?>#L>ni;L{=vEzdAip?)*yhK;%%HSy59;qvWqjW*>HtgI4 z>1|XntFi2re&5&IDV%w1_ZuGDj$^0o*%x28Zt0MB?_IZp$B+B|&e*=wGix?BzG#tY z?LK^A4Ha&}mKjkn~?QcFn9)mTS6Z%TxRhiWc$VRBYWP`{KB5-FL|L9XjTFr(( z^L^h-{ZT`MuN+PgABdJ*C=x!F*KW0a$4=SFr(U$hsWIsap9xpkjv&Re7=eG`!nGwC zn^`4Q_D}!lzp*Eud{TBti)Tq#6}^^L)Y^$>pSMH8pD6W{?5stb%8fn#FMjf#ef<7U zZFFMTb?6n@RimO2Ch6hN$SF0`+Z_lIeN?A^!)x@9Pat6^&joA;*^!cm1x%o4=Zl|( zyuXR**>?EpSM8hM`F&fSp0H2fecL7_XHIn*jluH!>q3 zzsR0_kPQjg5}TzE7}9+3;Jo?2ufYmX0R9V{F*>t7n@Rhnnhh zEgtaczl}MR4PP}r3-`77m|&~w{VD?vJ($Xwj?I!z6n&=H56}~AlIfB3V zOxV{wDl)Kb<|R`m#e0#LvGK8%lAP#4T<~-D`uWuk^W7GJdRcBB7KY;Ax)!{Jp zYkcc*eN&%K{5*I)wiNYw!yNB;dPDd1@#2~uMaLp`6=MQe*vkyP~#CnIuZGMI9N^2f0%_5Dt#WnGcRhybyw%K{vPw)|q zWofDSbb@%dXq_?kX3+li`e~#4Mu8FTb-l~yU1%^clbpbRIyE@Zv*UMu=eII`>wCYq_^oe!YxY;^=Kp_x{EL6_FMgFq z{y*htXlO`!*wS#Y@loSf+glz#HPG8z5Fx67a3KWt*@F0e<)MfOuEcr3Fd(dT$BfG0 z1m@Tvxb+{-5Ov~A1;Z#{DeDK%BHC2O>-1|Xp&}3;OakQ__6M`#NmsIAB6=s+xVP~> zZ-eSV@p9)01P`-PWz^1ZQl2}Lqs@A5g9$ow(g9P0@q53hO9I5(roQ7y!$|@Y4B82^ zfO%o$>E1d6#&~5lwL3znQ}<{*4iYAth?;jnr{~xgkku1BnJdA{iba?hZE!fy-{5rt z^QT=p_ix=GA`vAMqcx|X)Ki6)S5{dP=>{dBrpEg%IV#MO(o<|`Tn27jnnlGYTdRzN z_Qpmj97VQc_d(UO;OPb@2YPL5U8V0~mLlas4e;nnCb%$`=O#loL0aU|Q3*^L!g@Cm zp7fLnTP7%pawqaOJUT*xaa8x%H?77bT0MqGfHY+6{G%+Eg4B-kMfI`9$DX6~) z3SlhuCY&zpufq5BH?&VLXiU zKrgZ|mBS%awRM|i%Mid3*dxQItNDRtC&k!T-+am9(o#GEz4`tv>*?%PospK6o9ijR zh=xs)QVgtCrSy-DblUjPhy>xXJ*sc8NWuS&uYbeBViWxRH02jGsy}bLzKIeAc?1RF zN1x42jCq~xO-=gZk4^ua)h7(gugwOR&YJq~x<&oJqZ+k_t~lMrzr%EAQJ} z-y@3-U$q%M*fzFolk*Wik&&BIWKX>CrmaTC+LT~BEZ)Lo36sxhGMK`|=R#xS{%#D6 zI4S&b;ft1>5aEu7_s?9jE4Mpsa7u#}9wTKt!Ukm^6VVwTW0swsV2Af_vuW}4`;U9A zsbxS0P~fxyyngbx4punf06DT}rzNd*iy;qb9EI0{@$huG&8^0X9=q)~zV((JeEL}r z`oKxYI8z^rwoj_7t!~_}*NdSA9;uan1Ts&b;30kg@*H`B;{aI^nw;{q^Icut*4H;^ zeLej)I5J|(jK7Lg&pZZVex6m;R5~3YOWd#%tdLc{l6Q2%>hImRMH$-E3vvgvCfwG$ zpmXreC&W}QxbJ*Tt@I2fPUGyu9i$@Wy4OJmDXbchL-0A|WPs<;V{q>Htlx~G%T7J# zlOxpaOm)334o>t8^ui^c;XI%p{Z^m&=D*;XfREE}Psu04n0C5h#B;z@-wuD3gLecI z;DV2y+2Gk8mCQN3OMHSh;wWb9-2t!iPLBXc@AQ7D?F?N2>wu4LtU95I8+{677UK^* zbiv0wnCzroF)<02nOkHf<&{=eSEut_n-bm=P}bhoY#owktmMXNhC!MwTF({VBHd$* zwr1f>RT1&%23k`K!Z1jp{=Vn`6VwTm`Zndwz{<<;Yi}9XUkmnBZo&oX3(1cyN zaM>^$aU|m}oiu@>i{`z0(@5ow4}& zK|6W!h+V#M%i`8%Y+`Q3T6$+~W^PgK3nt>+k*|gXxT+J{=3k5(_-RI(TDFs5&-s0a zk4mk=V+j~T(bN~yVxN}?)w$Miv;; zblHt)KtkF;R;;}8)$dqES-HLUqwm{5>wT*#FSY`;6FZ>2tH*l#hHNY}<^59kot~WT z96kYDI2eC-Jn0(FS*~-RV?#GV4$ww|r8W+RD^0Ta8o0ot0Vdws&;Pj%H+(8siodQ! z+sKUBXlTYt3UjT#eZqcvvD0Rj*T+>2;6vX68Oi{!qfo%wbRNi8WWVDYANs8VOiqJm z@B()@z?iv3|LGtHb>W2I2Df>i1_9jS9G(uXK|8;=4?j{PegVVvZ}{JauKPbf^dhwZ zJ!ylF!?(dro&%SHmTN?G0tP2YzHHgD#m9v{GPVQ?&q#M09~<-4$*hDT&9V^7`7?Vs z*6iG8)%pxcw%xvR*2bl)!J|s6YVE~0zUesim;e2LrTWG5)ZS?6Y-t&pPPYVmMn*D0 z%A^6h;*#`@GJE-rx77AX50dG4+~C2izCu!ZNnu8mWh5|NvSN4Yn{0Mr%~#W>WoL^Y z&RaucyXukL65QCv0f!Ja59wjuPE@~HHG*!zDoSh_cc1}tKllbNVbXhI^xkDplbDf_ z;w#a~vVwy;m}I6l^aCM?o)7Q{JdqtDUck7zqe_Yxse9S$JwrG=GTiGj;DtAS&0+n{ zkN?stx9zsCeB;~p_MiQ+-8}oTEy!NvSsd`=(iLZ9OM1{a!B3KlWFXikxSx3LHH(xE z4UJ@F=U7@|tkr+{xrKV}+tD3)(woXGIVno|>52^u&sk@0NZ*S#XNi_jP-cY{L7-1e zwCH(uN_4kq-Ms^L?((OO?@vDUlCQeHcIgXyaPv#Gd)_B{2)qtJ1~wx<15EeHJK+s< zz%|D=!G%EcG0DRILHNkH!=W@e_O3(lzB_pJWzO{=V_v$FCE%g)a?wqG0T>$MwSp0$y| z9wU{$UJ~Gy>IT;IDd1C*k>c~2+3K4Vg$sR`rIcADiO{!ljGER}( zGgH%c|NcX}bN8OFVB5Ouh&}n-E50qw`7b`VmZo|X8rf`ugWls=J2XD2lF0=*xi&I7 zWYg-~+$<~2173t~=@X}VCzr%=9L65d!$)|8Qyrd38Td03^js%Ra-8gavi`wS=yE7D z=9B)T!$a<<=OVpvJ6!xR&`pGM;=AaGtOUni$(Q`xv1hNPB&7>i2Axhy@^dUDAG;-VRIBm|;JIds7-$f{o%e#ss;5Gw>(^5DeB9YeFFgATIS?&d(QyX8AzEOC z=Yrq?PY3_v5>qW9DZ}X;IY5xb?9_yj0Yr^3f^vY@1a`IROci}FfyBhbp!x{y`xbfN zbVR)67ZgjsQkmpLU%fuihmT>_b{#%$yZ0Y-d_sR286URHloac0du*S6_)}X@-;2wt z#3PoiP5OLdQmWN#-Qj+zIq4uh?aekPdy*}Isw>K^tMQ@z}iqpP+ZACZ$LQN#|By$EB-ddl4j=qCS$zqot+EE?hWo zeIt{0@Ypjx(RcIOC0m?bur1qmSxRP-?b%vuF_PU(ra!!Y&$9B1t){xtvp_W6yCR)( z*zz*i>O!)Og)tE^);qCgBgMF4;|Mu_>08Unf4F=K2i*xf3Hj&L@K{`~(M`v#^2e5W^#5wxqVk ziErkK@1&+=IG z_!_h(RlxQ?^|HPA=2tCNZRqXjl#bpnnYCmol41DOM@C0IOGI8?o^*{B8xzmymrnEG z`ehG-AtTC)@EoR&ti)gJemLO>3!2E{K_D-_rqtX*d*a2{ELLr5d-Tv+9^SSI;RE~H z$HfW%Wy>WBhgj*ob>|+-&q$MP^SOQg{!iRS4AYph_jZc-278FSCkUVi#{`|`t|3FjxQZr47yk?&qTXE)D( z=7DmF8M#&`TQ@!>!8UEGw4GI(?T3H--`WQs{={LygnNnfPcoNf|(NUHqp7ij`i}vxy?@9j)bhp5V66lHq_T|^@vRB^xhK&jL$k4SzZsLFTMJv#mr6GPyXur9ux$hgr8xP2Ywtu57_E(y+mzD`AN^BfKPO6l(hCi=8uF_ z;dOC^MT>_nN~W=B>G%^z#osoIFD<&v2y`QT1Oqe>u!?&0)358l01tJYws1!F3YTa4 zK{<31Zf@9QUXC&IKfk35{=d$7D8OG1_vNnFjLys9ww(R}Z{+LWuE+gR-qrwjxawm^ z2^H`_RK|m`<~?3j;FICK)B(TXDs^rg1ZR1M2;oM(^t?0Y&so>txaeJDt~$~6)gaMu z@UD$TI1w6G{j!(8^0IyH_1A1%dd#$RM;5NY^So_(x9j_=hiwHtLzK5sI=pZ`Xjfo+ z2K`m*cvkHMPd5CCp4mmuVUvP|(2XAvk+b0uQ5}(y(GTL{;;%)=#NCKX%I=t(n;SWC z;snC}SI2+GV{mZrS1a59zd1w@;a~as*SCIg>B2ua`}vuF*3#5?bY^lYH7YzpbS#q5 z2Vw6*4nhi^@_#<*$SK4DLx50F4prh86Vn{}cBZ7C5Rnrtlo#C8A4I2{RHj2kygsi- zOxNGBE|i^zZQNUDCcz|mz|dfdPN;sL=V3s+o00+JbOKieT=VPnOV|CKx*oifRS8k9 z{PHdi+KrM$6m0;TK%s)c;5fiJvXOGje-r7gvYxur;R4eRo~8dpdEs=#xFC{vYMOL& zq_d3j$U>A?CipmL(|Q-Yk93^L6PEx16r^AWE6hmY-qzY=4{l%g6?G^giOK0wEUGL$ zx6~ry(=95I=*oV(gwsY!$-$GSt*oNPZhm>*uAlqRDst28xu>7B>MgZySRt@UqdYb~ z=0O5;Q&S#IJvKTlMP$~pGE;niva-rb%at)1re_uxmSuEKc)x`lpCQcG$5cb+%GvrKV;B+5*{Ti5fNXDWlo7=~trGC_MAbQ1d|YyJ z^6kyHe#dsJKY2x^8rMjhk>VFb@yjSfc&R>=CPx{^1Mo~(@FIo<_7sd&!A(bG zQqxl0*~Dr#fUBamBAlBE4XMu~wj{+W6dJb#CKY5@W~C)rZl(-^)kRB5jJC@1JQ>=F zf<>Bz$E4VdXAF|@CZ!PiVeB!Q;BN3V`i7x5IX3QmEGiZlhz~d~(X;B@!Xip$u2aQEVpd4t*9Sl zMNriaOFrxYJ>1!1%X4Gvj<0Yj$N>#7L6ucdYVm0Wz5;WBeVnEy9d9t`Nnyrb(X429{w>0v2x^eNmX=ay_rZHbN~ZDhQaR@OM2Cnv`&G&*RL`YcIVhYw#XmxCIUN{(TySHz(<4>M4b1SWOF^(pOf{`lJAO1~Kqny>omr+%9YA$k*FAh=B*;gR}tIT;~%lV*wuL!2&w+^0=G*{u2k#ou4f(=r;-5s>rx z9sKtTymt1YOa2U}4rf3HpMV}!pU&V}@LRvhb6leie(OI@15O^aAKK*^WHxnil~+@i zGQl)p=(7!chHvIpolx(W5_Ip+qdd}CETu*C>vg#!~Z zIJUw4!M+Z=f9Hm;u9}-$u!^c0+p+I}Rqxnqg=N*AA`|!w_x0NCD;KTl;caVcuJ;u> zIVGEH&+(JCZTDeI&d!w%vgQs)45W&R3JNNLn+;4N!A(u<;98sTr(oYBquke+F z0N?u_d~n$E8$9D+%mbMk;6CGkyk>HUXn6JvPZ5u7Z+&d>f)f)j@u}IiscwgbNgp~R zeWAPQz9q)8@-Wu6Zr^V&z4=W`&&=`FddacTf@_aeZLU`TI-NHSj8EIt%(9Q8^L33~ zV94pW#y1!=wSxiku?ntW*hh(Hjr8~VWDTn|2}#WTfB}x+Md>`n6?OLPYv1;i&o?ihwR0c+OyeUsmNS=D_*-hxh%N{+=%D>1emE&Q4>?m1N-t&gk~mMqd@=08tOBx9##(qd0Ou z{@LHy{79SatSz&h(l4^envk62`}dWXmH5O}Y`n%uFl66)0;SL&+&%#Az=N^CrqCyV zJ+INd^)jr2*?07m9XNW@dV9KkG69{1*02hK)uF5!3={p8SJoMO>W>OnN#&ZP_OsU| zla?t=L=5-Z2Gum>}qAW>pPDzfp zs)}5j5=`zj583>>jUOm=YAQ`uJK-(hIPC)c;R-NZQp1DiJ_&`ssmI`tfy0qURG5eS zz(Ii=p?dKrhj~CJ6bo#U;2O`u&jTJ9;Hv}AE7kM501P*rK!}%sSN&aw9#$E~fpWiNfiz`+3u6SY zAZSBPvxKC0>3B)DCf$h%`VIVc4Dn|I9M`Gi1P7B{)Q4RPF0kd&H=TgF$PIhT3k}PUAcJ4K0ouGZQi!So__9S>+9{dPk#18>uh}J4m|7~R{S}%yw7T` zkdeNlCoZMHG1Y$k5C56%J$%Ie;@|(b zcJ70BZ0r6b_SJ9xhSzoN@;Q6%r8n)(uYcPTQ|l10E!G_}CNHAh_MTduKhMA;y0EH-BP{ zcW?PNX(CCHx2m0d;ZdV;!{oERS+v+Fl**^QgGZAnOd^7+^8Db+DLGHUPt zB%6F?KL zJLnzY15`1q@h6yJS~d(R``w3v-$8ts2}D-x4v!35e{ZKgUA~IaGmW8ZJF0EaXTVe8 zSENFZRXVqP?nvMD;_lN!76ue->{2k&)B%+Fni{w$!0@m zDA}}0{0E&+d`NA*tMR&i^{U;ubH`VU@7;gEs%mO{LbkoL$I>zjt*o-vc~g3Nwzn-S zH`})D+HHkJl9Smvo+Yqu#~~}KsBxPPdu~j$N&sDHd6`eTvFe%0aPV(jdKg=aedE`E z&+_w&?Dn-U9p~p|N3uFKB{9W5fA=T$#fR^R&yK6@sglL)k-Mt?O$a7yZaa`E0A4yf zJu6#rUNng=N_+^%O8D*7in9CZ=EwJ7+I8H`{C#)*lw+Wk-1o8S7L0cpD`P ziTLdn>FiZ=+@>2FNBsIQNko9x`DpITebpuO<*?^!`{iCw*L&R5FslMQk6 z$_2IKhV9tB+fvDS{h}qL=Gc_vDcJ}orxt8vdd*^!GBrN2 z(!WRbp3m%q_dl}b@EG@PoqFMQ>4rtps}ej|2mKkI#VY8Pg-M$m8?Y(Sc5G6XMI_`% z*H0EdiLj;lSsNeh_8=(L9#QzYkXAF2ZSpKasmOMUjnwA_j>>zeyYI7m6}`R@(1oja7Ji&z#g-0ru1+! z{_Qz%(7KxH?cE>zx!t?*r9HZJ&9k9VJ;7W|W|N6zPP(t-uy`rKieyfJM~bm}U=S;* zr)0NDJ+gG^TwC@Yv|~@cXj^vew>0rMws&MzIXttXywVzOU$vk9#lQD0OOXHY<6mU{ zlPn1nKY8Y@U$fU`KMb@yu#bNFH+JXRCF>F{vqeW<@g}Re{4 zx-VNe!uFr&`hg8Dpr}viUf`&tm%k^_kM!~TeCz$r$b)aBKbHbcmj9_ldXntBG}(XU zRaL%Hd{BDGyFdQEwYRs}o`Wat5%;xX(gf>g3|#ph)sTs{A>t%_E5A3AQ^WZRT% zs!(+c_T{JV+M@^eq@Si*#rEB{|JX6xy6b@Su1ep=k}@oU+qr9(XJa53kKiw4FKvf+ zczc1J&XLt@LqP@ue1BxRBoht(E?~ijMK}ac_x1OxXY`c*2EIf09jUHam(4Q{-%8Or z+miH&x8OU=DUj|fy*Dc}+q1znXeMkBgZ8Q zXHwKhCTW)??`Pev^(_#nSpV1vZ}EfzC1|J)Z3#)EvQ1@YXn^H?m+6 zT72oH=cSXBi`>-)3Q@1>0Kxcjm0Q;wFZs>z=|A)dhY4fEMGiWu2H=nOaaIlZf&d5A z`osPO??yii>huHL(ANf@_#&9U_1kNs4XVR!K;W&5jt`t@99%AVS@4Fjr8)Yod$gar z7(ci7P)z+k*~zduc@|p^e1LaJH^P~-Ja0F?ylUqzT(I8JkaR@pQL2kA`|u?ZwBYrF z7b@=aGdcloc?H?F_rNaS)^vJ&+~zcX1pd;FWfnh*7o+RbPJEXHcY@pmO!@W?_=trQ zR80HPS%JCpYyIID;-Jr-DOqhtSESF$&Cfom49B;q{()KK$f^ zKf3@ zAZOG(M>&{)7Y&$*uXNXSi~yYL7>?Z2D@1_2cb%cQ0!?(Y2w(Ke`yoJ>k{k52!(Rg5 zSa%%hoYL>_Z0++q18K!-mE~_OrkK z6I&YVwP#KqwcUHAP{>##I?Vei)d(=)!eNz_on<+Bg)%skASKm5B?WcJ=B7q9c1&Wi(p?69 zTDBEeZdV(ZeJ|FmoOFwcA~j)zB@5TsFP@d6vc_$GNjSYCrAK{d>`?x3&Uo}R3X6Wv z%}J39O?se7Qc{Lb__#tqw`iOWoXa@JU7-;SToC~-jvD#{CG-jCGr}`7BqXOBsZ&$Z zvpuC(xcWG&dYamL?a?FB`tGs=$DS6A_1TL0O1(gfdfA6AJ15s2tV;_sJ_*5f@PcS` zlL5K9JR@au-W|%&-?9ue#wtz*aen0%K?eSbVnzVSdW7`ql8yAV+w$~?%A)Miw-q<+ z!Xwr!HM7t%3TkXz1|5;$>~AM1X?&u5awah~Lq=h|O$>C}>ePS~Bf&{99GhLT>A6LV z(Rj008>!1!y)`vH=BbFuIsrhLXl8%wdGRh@9v8M`Dd7{A61OD9YC-rAAwzT8GE<~X zOM$y3IL(P}Bf?m5Cg`dTR%X;}-fZkwnlHnvq3N*=4Np4!Hx7)Py$6oiE8qEj%PuIj z%V$5aI~U%ylB_5hLBWIr@LUpZj0{cN(@#HbB~@E+S$I2c217#t#Xvg0 z6mi_v^DZNFAG+9(i|~2s2H!y+@MA+M)<3V0a*Q`hWhxWz6{R*LV}D%qOsZ(g!8<0! zhbJeQ*jw<`Dq}L{1_nl~r>EC>GDzJv-WLp@xlUW)uu)^lHDq;{{9ts4#AU-}6qGd{Y> zyBSM@=BR~t`IxN+bs_)x?Ql?k;2Q+gF~-!ye;X6{^gGZ$m}G_b>Yn2ceF)0Hzevm8 z-P&aLZe6#>j~==csl0l#?bv(BD!1>jT*JsdL{23-o9oXP4)h+@@?C# za@!8e%q_Hewp3~F6#Y+GY)qu@oBZC-e&%~|J@M4bcKXFPgxhPvok^>zthT(862U1- zymZ{xQ-|=*&nK^lCW0bELRSz6K;3OE$$l+k;2w<^}*ZKsq0Qj!+7L8c|7@>&Z zMOntj=}6ad3QNW7PFc;C9is19%P-Bhj%Fs?gj87ac-)mr>ENe`UabrTC#zWNsCWPv%2m3Y@6U&vvsfDQRYEI zp$WD)3F-^<0D1?`1~`P1pNs;v(jQXNGi87#+Lm4Wd>`N+bdE%6Kmc?BiDPvrJ} zM?D=dTdXh%z&?{MBh_b!4StK903RZxTkbi0(vCglay>8sXHzx0OH z?LBCfo9o1{;_czRJHDqNu=Dh?$!Q*y4*ii{n?Ncib>Q2iVZ~X2g9H5%y|t!pyKfah zYHzkC*|Bq{6%=i9nOa<2B6+`Hw{KjrM|ZFJ9>GlyZrh4<#(C+EI3n4n6n%@Wif(`L zGfNMfw6fe}o1dEU?FiVe1?L^KLI6%)UXGQCZvx!RvwkRm#G`09eKj6bx<#V$)o zShb|YNF%j1E2jt`7#yFqyAAy|yU2tRc zmB5df`~f|{4f+ke@C|Il>AXD7TG%TG&Jh*$XEtn;jbnrUHm>m=&cSDg`G53)55ebD z-rLJNe%VQ! zWVDs2KJ+tI_%R{fq%pUMSYN3P&&m<4R@ZK~^2%D9nHaY2$G5GlFjvo#&QrWZc2~OS z7(IPJSGpgKHQOMi?9wTKLW{4d50STpg}-`DSSONwXYOrRr4chT?hp#f{I zziabMKwz(^UUW195J+R5Bsq~N{4Uy5VPARcd$#kyA^YUxpL;OUtFOLc9c?Z4?hpUe zDznYL^V&fxDoE1v*j)3DzyW^B*3*X-s?mwDHZw0?9#>@hj-FP3qwU?d|Jv@|zUq^> z&%X4!jfmHM{LYVTY@pZWDsrEJ-f&og3mivkB4@<1M$m!ivhvEHyRRHr0p^Zz}U3AX5AvJ@vF@iLWs^@%iVU zczXJ8{`Nn#%DOGq)bLRJv)q2|@BN=__rXKrB`Fva7Asm(=k?A7x6g4-Qk4IU-&Vw>sei#p!=#sk1o2+0Ig5W%~`zq zQBYXu`$&_v`oh^WQofhPyP|A-Y}5uM_sObNS6$=5b~i76W}y+mNI1)6?2Ks9LCk-u zlQu(xz;k41#QKIurTZsadEGYKLLi@HE@`FPTU+gMON$Nm57^v%pwEwv4BLfEm+bDn zdg;fT?DcQ`hV9vZ*zVoAVIRNuQ!6d4w!=rCvaarSYZg46)}alJA-n*+V_NjfL_}Ur zwso|!fA^eE@RA0WU=VB-=P~*?uE13FeE3>W&$MI@K@J4DOizV8=s7AX+&Vft)IQk_ zzS(r2-YjHqp(a{N_8&cKEo)bON$0X4aw$fndV{3kN&*Efr?%H|K zvvYL!4_R6DHp?w6w&BrX8y+6?$%8`aNn5wn>3Q^o1<`1a4Gj$W76D`nICAW`6_*s- zqxy#))QIdE9PIa%q1ZM|wo?bG#wVwzt)`~da&xmh1#f**gKv+veeV&g*t*RUlM{R^ zq0#Y>Rn*q%`T^gAi%u8q(~sV_L&s0s3opHCJ>9MLv%mTitG|0) zcCTzj*;Ayf$L};QTMK#T3pg|m=wAHZhYwY&x8*9^us*~h{lh@xQ9hX zyDcrMwMF4PE9jDw5=9459$dldTC#2syySj4(JC1qBGqSbhH`;E8}5_t(NVELK=yu& z6<1YzR!D+VdV2dTO0e3oYqwQaRavCoee1$m>+Wb0?UPPfutSCm|2(Keup-z4+eH=n z^^DvCtKG5RiloO?h)1_dhd=Y)+cqvd!w%c9iy&ukmSAkgB&%?fed9O(z-o5v5DzQy zpt6G}PK&3++xd?_u$HD~>lYn2OLxX6fv$-P!uE6B9qo4h>{%NNO?#Gtv7vrD_xT6n zlSQ^$dh3}Fe{9z-ed;^~d6u1(?Q)2WSTHiSFUiWz4ftSKoE2AZkzB}B-_mV#TK0Mz z87SgyM11P!Kl`a&IRB+3W)|A3-~4SmeEb<3>Ta-^v35&Ki&y8yZv}Cp9k7(q$GTKcthd%vpA7lIjSviRpO{ zL_+UjY_X*TQI}gL_(rRKcosG)6H@RXbYI#{;3C3(R&>sG8Eb6w+0ksbFQ2!^O^xbz zlx?c6vTb|zi1)->ulNLuf}VQfgmpCBu}2T@dK>V85!47zM3y3xz)|D|__2{SlyPA) zIVC;A*j|GzWO`eh?b?Me?CzDzzSt=xJ5TT1E1Ekj9NJ|^PCO(1yi9iFC2MZd`-Cej z&OpYw9xh#mOcpydes8|@>$Wr#vInw5(xq#iIDOjYqmauk88PzG@-iugJqdV7y>u0T` zYO}rdd;iFuk^T~`@_jvBwz+PzO%3(fxli7+hPyZI-u0{2-_s)$iL?C5Dqj?qla^|! z$-*@?i!DrC_NZZwd+LL?Pv`FQ&~J2vNcC${^xf0mX1%?=HZ5Ise4x(;y1T5srO|GF zdDhxmTLQS#H`N(TvIl|1=tpF39qMeej+SPd5HD)DcT0LfukFQl-m%B^&z{FkcICnu z@v33hM|>Va?ErVcW9p9#V=*3WmVUM_hXc78$WQnWZRXqOBcyxLra(sv?lB_n|I#7y<@Vo3FKz-lx!I8gI2rn8KwzmJ?KcZGA%g|ZnOFy028o; z&P)JQVp2*#U&5Q7u5PP;)Mf)iV;*#aZ3*83!tA%T~~z)mrou zY%K4Ax8Hl&8!}zETI{L@oI1IG{uP zcWlMEGCyNCZ(Osh*RNaOnBXrHfche(XR~ks-GObpfIDwzxf-*zxCU{9{Klw^LJ*y z`mJxR{Mn!V+3Fwt(H{YjUmgF62b1l;N+bWj;1E*{yV=l?d;h_MCmQbD`A)~;6&G8K`P?q`OUq6i3HAD%JJ)$ZGb3=9@2H35xffqsOLRuPuKn3 zRIl>1)2mZ0&LqSfD8nQyE7FOm@j9rVhN!R$DxELuzV}nr2TrtgM(B(^_{}-r?CHXu zV;(h}94K|pbZCeEF!smC#yyoNN>+MWx_<|ZQ_7a$icv)L5RcJU+C|%O>;^9;l{|Z> z%%~pHmn{bA?b6d^XeH>r+9h>`v7<1C*0V2u)i&?iYppV7o285-MXy* zh!)+s>!9u0ci2Y47Zl{c2_2%gkOs?Xo;XEMO;T~z3(B*USfL=KVcu^~Vm7u8;rY=^B1fiHafxKl28 z#Em?j*_eP}%n7a_jdq@lslu{K%Oh=>48hT{5v#v*)1zs}#|AvD5t9KiF(^%|mYNu6 zMLAM@PaL<+yLa2t+Ja3?4A@X#zYOF>YiVxRSl+XL{15-oa>~jzHfjKPs`m!_p>5zx zpjgol@Sbf3re%y#oM4-Xh*-5Z_dRfJRRSHmsOlk})+s+N0-L zam-|QiY2Gz1_2m6C&`Gx&uRzg5*RtGfsOvWF6aq3siiR*SD)xvoc4)!oG}z!fY-CMMaIWhgF(r}}feWh2cF z4$PoatDfq-ud_=ET$0A6Oan{sL7^vrBa%`f(7 zed>*v?X#??QHzU3$qTcD)D-cQIU63Dw9(mR`~JHR?Q#D`mWnku_DEs*?QgwqU4yKE znX~~J<(Do$bUw^@Y^tcS15Z9{sd>fL^x%%w-?(f;J?)k&w)pai&6buCr*T?z99US6 zvYx&f`|aQVdsa|cr@m|$j5rqqY{W{1G4ay=UiKS&Y~!O7GR}u&WXy;c#QTK6{8ErYQ&p)+fnv@1 z(o(Rxm`OP%nmv#}?Q?}&pFs9NyFvRLCxx5tB-Z^%(J9wyBg!pZp|4!yK750NzUqc6 z=-?vlraZijIcf|Ps4m`*11pg84tJhYy;S1+wXeg13xU!f1Y{AE z77l`A3F1jA#=rG(qk934GZ_o);gJ|pOpqNua@_Y(9+{Z1#|;l`b$;9q?B8Kue*U>l z3=Z?OJ5DARG;aF#l~)?y=tu$;*(xL1BGlK}xfz?4K_9t1ZBHHFZAsEcZrph!UOFUs zkY=xa{WmPPqT24?yK6(;J>plnzFPLabe-$xK9M1ZJk#sICygKNOioL)EjxBwZqX)N z4UckzaZEgKu(!j)B;Vr07KGER&=XvQ{)=ldwi2CXxs}^()8=h9F*0nQzW26G=oxSw zpfIjD=ZecKZ13UImXMrbSFW71hI`j6Y;n%<^~mX$Y;)aSyLjchqjVtG^OR^3ea=a41$jr`DA4@Gxx(&{nk>O!WNKCf!s%qO* zUgcW|-M@QZvaQ>;?%ZiLRkil^U;T;QzWOt`U$d3v zBv?v9w9N@e94#Py!6!;OW}@n4Qi+vxOgv3ZPFh!YuidPFEcq5>Yl7N?KmgGwe1gZJ zODYqLNSB+HTVk($<2P(p`rq~Im#kDeCaZ#&VCn1WvDnBM%g)cUY3Y;=((^i68!Q}M zLC;ec_~|;k`o3dZwLSCn6PA~Qjw+cf+;L|pv+?EHw5Z_-=1?t;sl8sEo zNuFtZZg<&#{TJ7)XNo{9fq6CH8yg3X3rBVEoG*Pm(~s&8?1g|gf?Kc|t_MfJUnmdi z!9Lt>QMmvf;0iK?yDH1Gy5>AZ=fNakaF6HsIBl-e9ryW-4oBeaf9zl%Mydgic{ZR| zS`{3u)QyP~y{R7dnSws?)yYca&o$D z*?qvCf930zn35#iJ?s1|F+M@^8{0^_=j5p6XQtSRy><4e;j!Iq?zEizQp+o;wYR?a z52ZUq+oK2ft-q&JdPtjR%{g@Rl+{#jwvmw`yDObJO8Qjvg7oEy7TdRTi`utlKmF*e zt;Hl-ci)Hyu&`e~S&+!Q;7&c^CIJKJN&I<`A>ZoH2ETK-tPcdFmXn*~{Y94GNCdx` zoMQWq0E8+exbg?C`4w=2=e<6(-N0_83@cBEM+9ThM?pcJ733G_J%L~+Tk)@ z4+C>_P>#S}L4L1Tu5|X(FMPuy6JqT4%`4J@qpVc6kFP44p0L!gam$Dtv$)79OO9Ky z#3IWgBZG0}$`a|(Hv8;9^WLq1~V$mOyY*m}$C;z;c2X{Mn}Roz<2_GCX&&G zQKUbC-! z?YlnNa`VbX4-Bi>w#(DNfA;>5t+&0!?EzMbk;az^TvEd$VEAM5kbrUYUYwYVQmWVV z{@kJxD=Mk9(y|KK?S+yLiR#aU4Rp3i7PQ*ztNEG;$Lu6=plT3a4E?{NBIGEwh>pJk>eSX^|NWoBeaK4sh0%a?3yblho^D(=t*Q}Vg)RH2^Z|iGLo8-EP2kh3expg(UUal(pAYM10f(w z2#{1Ij#H7cE%B3JgQ16$1#D_MVqIhI`_ znNwJ7F?yb$j-0GiE6mBTNWB}s!_R;IQ?(%6S3Ks+Zeiv5`1qLb%?^$r%fag;*)4l_ z?YB+ErNUj=FM{Kd~^x$5IplYKlm%V)zE2&Pk+TKD=TeasLSR=2Lv7?OW5a{ zRleBI`GrNUR})+o(s*s(dB6$_OYG*=b9V8w_iaXPASj1z0t7mrsKo~qqiY1_qYL9# zfezgUmz;*LU?;%Cz!&^etkOjfbo|j6Lq|*u!eN-;Wda(T8JZ_$c5L{ZrNpcX7Xq3g zh(22Qu_XJbZ2LhgDXX=JwMF~#;#qs#)?qT?EH)w4x7>LCjqj)*yX^g+{H0w#f5x)% z%Izh||Fq;7`-^|`f47!LcioOAHE~p2qWVWFd0HYJ+GXvEw-4Syd)VimY$XKUO$nEL zZ*cmi{;(xUG7CZk3wQpDj^MxaB`P7s_8fY`Dl00iMfTy9%jYa1J;!RL2j=7!h@TNa zHLY=o_r(zezYMmv*njx<|HhV9$-06sV9BP1lcX!gCl>ew0$#5di5EusRz9Sx#Ur1>uPFz;XrH4Bgvi~;qRP< ziPwNjY~dCoo+_>-m?hedy+>?qVbLBp-SNHhL$bHXmJ<;z`bEtj5B_zxddFWzf;g^sL|zEP4Qs;lFIVk&;zl6?HqU zR5lCSjA1)vix*$~^kaMXCqMAMvJZV}QGtE%-B`iB&FMdlh4`S zLx(I|y69wom;Lph{#$E$+-%YDN%qFy|L1mS?|x%DGVo~6j=gs6)A#Hh!Jh1xlj5Np zwyyrUoXe7(y6@0I%Sej1$*~~V*B4mmK(|AFPw*81-dUP}>Uxcm)w_K*dC(%bY+U?_`zh%jA`hdJ3 zXp8$y(vrP`Ehq-?t&0zmqCYkoJ$BVswJ*z_a=lUZG8xb^(%J7l*iIMyEiR7jB2#?A zJxb@{qR)=zCL0}}QXkN(SA#7z60u2_+~zoZ^r-FIvrY0N!R5aDo9L(ejNru^(u4o> zzkWD>)=99~M1697B;YIP_+C0F;zuya&W9h=p?6Tndi@;S_vic}YSIDNbl>5sG2kNa z_FxDVLk2ia|E+^|Y}gFHtS>lRUUY+!*7jvpNyo|Ejrwnmo^3tO_PvMhVy>4SFo;0ej5 zOy7E_w|_+AmFRpk9ACfeE2ky(jdlj->T_6t2f&xQX}{Bp!ymtRpm)11OBd*uPJGKP zhlMwS8~%*rr{u355l-tJVZIV;G$JCZB`P-lZd6RdmGso?hY6{v-CMVAolqSPxnCXs z>yKZhk^f(CJbd^tx~Ze%iO)Xz_+MN&d**k0JKMKJO2&ftzDi8!2Z16IF?>LDn6Wc9 z=M*p#$X^Gz?*9eM7vk0lRXFl<&uPJlK}>x8A(-CA%8Wn=1%i$HJj(}$?)C9j?&(8$ zt~uFy{kjZOggN<35i0BNrY_a(0#C{VxBUTET=YCbQQe^+Wf3w=HbTfKDAbD(_eUf! zf)_yiG(|0-&HCHuKlg!Ezyv5mowPM5PajZl;uBHXh(=K3C%evfKl!+ zP*alGt3-x82CWYEWM{QHbexuF?@O6V~X4V0M<1#qs11+qTTgd~k$Svl%XT;Z3T3D=Nj5e_|h-b?y}P^Z7*9m~SwnMuEn;>iBm76Vhk0??m zRFhKmF2Mk}`8YbCqu;@5cQxMG2^;}I&t9L)qGb#OQh9F#B&eX26>tGQ8gLNO9Fh)> z73=KHn35E05i8SDAjOO5`|PZ@FCi{b%4D{uEe8JVc}7Zic&JYLLRht-pBEU)Al$e$!<6z9jx?7Ar-AFCHxEv-PAOR!ZiV;v)T4j+j z@y0e6Gm{e<%3uX%yo~O68P$TQXGNG9=(N>|UK1h-o){%@*4Q#;BSYhQcEJWhI1o|j zB8t?V-^ji&LAn zZ`o>jxhWR0$_g@Jtj20_8Q6tebycMYhb#-G^v7k3zQGX=i8_M=ZTbcN#{ejE`@BOOaujf=2S&7jYv|(dHnIcRmV1!XY@a5NO zqkhmvCi9V(VDyGjOgnt?3nNq|olZ8|Mcw`^4+m|bO}~)cx)8t!*agb?h7p2tPF?=& z`uklW*DuPeDZq8On0`-AeM_}Q7(m^wknQFIQ z5%gWp`t#~1sjn!*y`Y_5$cqJhUic8hq!s$Vj8gHupyHs7v zZ$3ETaNOeX-w0Clj;S2{&%q>^MMbUaDjG-jT|0LC3CZpn{hqhP*i}#a-0`@@=Eess zJu${6CnhYOl^t<$zNH55hL5^))bUC*N?OHP$r+I~Z_U1=2CZpAC^#^oUdt>6`?a60fvGlB5YmqLKS5oQ| zhW9UgWW}*#cC;?p4%DUFj;d7Kx+&4>N)xR#FV?~qWWZj&XssQ6cHqbfOUo^ACupSL z%W5N5=p1?KMLTf(8NIv1-udxg_|_flk;%$U-rd*Rtuee}qkSDVDE)@a1TBq?)~$B1 zGUVi`r`?hI?vMV$>hIq0^qWwd%U$8_mL2=-m2dpIRY-Rjo1C%2qGCIA$ET#)spns}{YOvvs;HJb7cDhn-b!;* z#hrtFDv>v?lM++{Ev}NGVN#z_=?oJd=-ANMWX-MJ!jBarSg&u!ka({}DXEPb=V zCRiD!ab&{Ev(4x)AvW5M9ocQ$cWiSW2;JdmaOWKDkn9MPoLwDnwCI&?;V^ijauEqO zHxG{rx1PZ{yVWpclXGy9fd3#<87n@}MsQ%uI4cWy5WEPK&+EDuv=gC2Q~W1|i~bc@>?4*b9KPZw_Sh29H|@g&%GQJIn!Yz_azw?b(UYgy<&-Kx876 zu?Od=!)-~89l8zyn?82B$5`W7WDAe6@sKS^NaOU%$G$=GaCVS|Huh=Ro-ejel%0M$8JDi#c>4g@ZQerDnIW`)SZ85eaT~a!m zfD;j&U`_3l)-|1F1+~xH!1$c~<)8l#zSYFhlh0VKWW~Lk*X{FR0Y7kmkfV#}z0*+}=*hK7fCtyg`_$jr9e7th)U@BEFOJpH`A^6KlBl#*oczxQKb zJ$Cx^3!Y;8{U7|PU5AfXZ1D^TcduXai8X@H(#U!s8RdH0IxGWv3iOtZ3}^(!F*&JI zU)3CooRaKgpZ>_mINNjNw4Hk84WG~-Xl=07;bu#i@3gq3ep{XFwwb|p8y24zrr3Vb z%J%KM-8OBL+?HmbK9Z4T*kXOcEYC3RtbAXpqcp)JmQbOH?n zS^{aoOZr4G0F$-^i#0Xe7jE1#_MXN8PAcF^+2o}fv(oa-w(sys+jro&?9fho|7Sn6 z)RZhcsd1kYU;j+-?32ubrkR)~`vF+aNTTCI&oR=MJ@u>bfk5|Zy_bD$f!&Ja1cCRt zSs7MUQL6qfnXfcQ7ZYxf%AK}*(5g;=KlT!nRCA&&U)-U$!E2b{Vyp<1Avj`Hv`vtp z@68^UpmU8QxTLaVY#WkH!g-G~xu9~hz47hel08x?-tmszyZnXBh$UmYtJ%pBYkhRj z8t&fKxU|@Uz?vm{A}%h;Mn=Z1t%J-#^TuA@MWU;0-J6xoos^s|xmstbshJ*t6q39; zboihhJ9bR?nd;kBb+ooS&tYXWI9GrBrd_#t&z^eWEsIZzvyXoML%Ve5Bdf2!@8fae zi4)fTxY0g)_igKIlRUkD&#qmSJkH3pXI^~MY3H54`BU-QPhAg6VoNXSOa$yqPEHG6 zYnCMXVWJ&5i`_=Bd_rQp^FPK38v^5! z?Q7hY#k<1|eG6S3+KI3Q(dxvc-X}W^*xkN))9M=BFLKlEPvn;PAAU3Njg;H)ZtxR6f)9uO zA=223I$1g{_`!t@`bO>nuY~LZd+nRQWzoXLE9cI*ZpA9-zRoslsefn#y}hzcC#|== z)%8*W{~p!fm99GC0owSC@H2p)PLn{7wyT|PABvB_OJ*j=Y^b+WwrsELCgHQ%z+VvX zzkcwj+8CLTEF7!09NB+Gg@u-{ac5#`bZErsDpj(Xz2htDwpm76ruBDq=wXe7U_U%G z=qqUh8wUP`9j&nu%-{>y6B;?&x_yfsKC<5m3kzJnLw{szVPAjuhhV=5R=^29j=kVP zc%rZVo_6bLYq87cE?Y}ypPhX9O?&Z;-*7(wtL1Z&qijoAwsd^6glO6M0(~4~CcSZf zVcJHg2W@I$QezV)eYwgq3u`PqIu4~pW4aUs-AID;Xv-GaWRn!tR7+ZsGiRk8jp zmEL=AUfTVBZe*ghb0n?iUy{F&GyyGbTpN0>YY-Y&_z>k_Temgcv0InU+QX(s z8)a9yGpNIarL52&oFPPHaU->ylB~!Mbb&@ zEiENpv^%K^#an2W+RG=76GU^3EQmJ5M|{ph`RIe|iVj=m8PqYgnf^jcd{P%U>0{tM zK?7K|amhjS(nQgJ?UtR=xps>O5ZyD~`5F2vM}*8s&tpy=cr*V=9qfz`b92%))eqXC zMgc07Oj}g5WP$6EbU^e>1dhNDl}5K{N7$&Kw0cfjcvzTI6b_1~pp!C(?0ux&;x8<^ z(+`|0nPYK>{OM^MR)3I>>`)(;o;x%;>5iq$KTJ$ax?>sTG8f8GknmBD*u*@VXn=J9 z_?Ien`U#8TYMVQV$QBijC5cx&@$_jse&n$1%dn9M$OhPkD`?#sAG)pbg@)c|F8a6r zHC)~=o`-P^y(HZ_UOK!2thpQy`P4I?cLU#b3me;?z@s$ejDi1GIu9qWhtZU$dPo=a z;!qBCbMfE#oc{{ndB!L0^s%IH%3SA(TuxuQ2hPwxXpD_}=Rf(_Zrr(LLsQbt7oodE zix;mA=+T<;xZP+dJMJagmT(I)Ax({q=GtMO71@MFiI!x4$FefQm6i$RZ z;J)stoE4Q54??f3q(&n1<%{#v`(`F4o*EtLeR*npaNp4IaKd+g_wTL!(|`I;XaB{& z_!ob(Ui^RX`n_NM)xQZN|6jWvK75$);+Ma?|JJ>GzyIO;@BNRBH*XwVS(s0jp&o^j z=f;~Z2tB+5GuU7tTyDgPd4lWCE|dpF*O|0_`#mRk(E>y+qW1*=CybB@M$ZMK^G}rt zQMux-`qne+BPhWeOoIEKlgf1=5S&Q))Nf~i`i&4l;o^c(aL*NQm9udVM&bs&GQ$w4 z8wH6edCnvkmvc!bmPxw$yG6B$y1l;7PwE1CuLE-~hU4J)3vqfgSGD z%j5=1beNSwY}4($0uy(o_$ug zW3OGicF8WtxO~*y%q*sD-@4t6;mhaF*p1IVvfkDQQcPL&j&nu7`QBZdk>JkG$+6Uo zEbEsNPMFb0_wLx-#IQ8272oY}=f-s(r-LU?TXJf)wa9p0l(F00(Iz8m)IEaPLN3|6J5AH2T6 z1NDR52D7u1zGDF|WWwR*=H^&pS{h{G{h{R>^vfiNsH3>-> z%7pAV7KBC^9DM+nXcV&{4Abc?q{fOY(lzlR!XGC!)cSI`xxmZ+Cv)Hv#(0ErAMNY1`H6lRHcM8RooZWlR9H+R3uHJftazwt6sei{ zh@a;U3IMOP6hfC~TeSF0L^w9l!(w{~J-DzOZBt^Y$w^^>zqq_sMsJdb%Uqb7(ila& zEvac)mgb@47ByybwlXzpqus6UxzA*6NAI|`v=2!M4`;28&c)c=TAZKd9}~N#@;J8% zp1bH1^Rh~1h)i06_yoI|w(i((H?MwX=idFk(|~MetE#EAr(S&B!*wss4%+JCq?As^ zo+Cfh_Q4}VJNyj3_%JzW0Z;SprJ!%Vo&#Ed^zS*dh~p7{+ua2PX2DpwgopHvodcf)w3E?ygBNy|LDUVLZV{LDUJsBr?`(Pw^-_0`FQNaAHx3&;*FTTwv9@Fp=?FdTkF4?bHGBBrzQcCU zfx~v<)U&pA&jCw;4pcv37df}>_!Cdt$!A}+tG931^-Je$Q3g37dI$S^>|xUbYiW9D zV@j8nmf}5nBw2Us%0(O3^C)mumD8>Or_dMgBR|wG7ER$V>}q3z*F$pp^U!yk0w+X& zOhU2C2z)}ur3zOcJ9gM=>#8L;qAVdkM(rK3`#9c7)~qUDd2WVHPfq#5`251M^rKlX zQ>}3whOymnxIiz!09#$0wfMCKt0>B}j=o_V8krRf5U*Ary4zbN{~P@*)r8~(D=jY* zA5F6*@imS%nUsuW>>Xbid%Y*eChXGZ=d7f-)M_?wv5(MWQWou3U)yaJl^LQ>nHY=H z;*~gUs9(vkR#`1MDYM%9)ZZT!7}iogJ26SZs%mJZ34G?C^>8^W(caTP#NMMd;(>!tQ0p zpQAXk^NM^&CAvdn!!6hSHgDOge9bo4)9Q|okDBgTm+0k8HaNmj&0uli(iXGgoW zc68h5lw?m_vK=}7tQ`|hCQ4Q;NRMQJ5rROUWuaG1XGYUbKJ}t6q7$0(>cw+*<LXuV=Q_6tjra(51^o(r+~6bnzshs*nW19o|Jc^3p_j7_^p=mSLqOrM@sk z7~d@67kUi4u(`ll95s`ZQ*EDcbknZA_OS7eHC`4@%})Dd;od{1>|1~PdsbOjYoCAe zj@`NVu_aJ%B03HI!VxFdCTGU1tfWA+yy!X{i)&NTIVLCPEi9<>lwA z-)2*jv%V7x_y&iD08^I{`W|fJfIBoAKDZ#=1U#PPXdQNViXO8vGb}w7o*E^%1YQC> zX)w6sb{sN6FZku;)Qt79h$9_`MRpc#Rgs5(fBe~(tw44N$APg(9ylxSaJf9xPZl1T zkaUMH{RZFINxizfV6$VxqV)#r6zzjwMa9KdR8(Yhkwxq59k5y9by8-T#idu;VtlT2 zwImyxPqy)>GD|DjYj+lXujj& zeP5vLZ11vU;mwwvyR5u!vu)qL%hGc4d;t<&4w(S``T6*azhFr}e9k~)MHtYm>@3-0 z1ujU(L1tlvYlsy`2vPJz&Own-z2|P-iAB`&g>TE zA^J6XKW$;>?c=Y!DL(XNYrJyaK6~enEpN5kow|u zFW66VdbUT%ac2_OSJ!-jEDpz(i7}7vbocrtYi)U8J>u8sBb*t}?)-+ESMBr9K6M>q z&!HpI4KCTIejLH1<1f1Kl5igfuvppa4CLynY|)e?KTnl;73#~$%CWN2a!bohbD13x zteA-3S-)Lr&?na{FE7(~rxCTykG+zN1E0Nbda)>lemqT71oS`kaZ!5i@&ZSQN%o_w zh_3?!?63GF=^Mf;79i$lrfjgU+lB`FlxEeEWGnAK@svlqVORf8|MEZj@hu5H4|C9qV1^f)!TR4&I3m*E5FEk`-TMLG?za(f{cr=unV%H zX0xBGiz7^0T9Q>&Ras7Uu5^({_Swbr;%SrC+uv=sA3U-HC!Ti)gm-`Xryg#a^T+E% zGqutc2#@^vnRhKo{1MJGEt~)7GcVZ-FMn0KL96}rPyelTx7-u|C1L=Jb2w-(`HpTJ z+K~O+18&SSq34nooz-SKrVMd?Ooe*OdXuf^>&pJUXxCMBebA4q0^6>2+tj(WgHe&Z+rebN~}CQmrOvV>l) zTN+oQnc$3p?hY>{Ke$AD;rYO4Nr^Xa-lp-Z_WG8jf5MY+o+o0_w|@Qa$iyD8v+w=P zI$IiTWVlx_h_#8aamlL%r%jx#&<#|$x7Fo{zN6Rk$zAferU1?g!IGxpU_Z@rz~2vw3$KfiL6m3w+?YII}Sa8ZUfeqfo@p@t=?k z9ks#U9-sGn)YWT8pMS$nJ^8ZTxpB#(Mm_e_Q+DXkG0D9Io0wctpG4ErkJIwETY1%9 z!7CCL#iK&hfmO9?vCNmFB_0>l3`N@M-W`Se9>;*yJrUu9u&T@qgH&F0Tygm zm**`;wo)=U!clsY{pzUrQEsIrq-Lw{Q5KmRv622xKZ1|r6qlugM`UwE2|lwFm7FUc zk!h8Hf!AG%(~yj@H@(GwQkUgrW&Ihx_gH@|H!zxgXxR#|H+(vemd7sU4`Y_zx2npvoq zZifwt!x2#uKL7Y#J102`AI5IffV)G6FkbQ(XD{iEnVCk!4G&4}3Nx})okRhkUX4wn z>P}4|e08GBcQzqG|8D#9c4a~3L(kj?NV@Oy3Dm7Jkr?jis_#TK7#ZlY4gkJDLBH8M zbHX3&3?gDi39#jYS#DmQ^|U>-4}SW6JAd{=!C`)*Iezhht$6szA-9uRH0EZgPc#az zQ+<0+K52&p+kEMz!Erx0S2MTlG_5?op-AN+uYj}92j~X$&u4%K9Rnu1Azm^*+$SE` zX6>zyY(n(L(HCW+?`=Ex*xtQ|JOT$1gg7o0M-M8%9$-#^cEHPNCpxRwLErQSZf+y! zp1$c{aDW8PzSf~+pdNWi$9yKA@Kf)EE_i`2y06O*jv+w4GaeiDF~7uO?5OB>cznWj z`Jv%q>9X^l*XKEuaJ@*se3N04`l62Tj9t}9iD|CmgCp3+=6Xho@I^8qncdj&mMfk1 zg_mEj<42CbJw!uGjwW9EMm>7NbNx?!gN{K#e!E_;!3T$eoknIpku@X=Ws(1j_UieD zZRNN~d3<*s8)^r(j4g}RUasC=p3(;S!}CzT+jV*d&V+I(WBpQ^fSVx=u-%w9LOyNa zB=v2ym$Dff+6yi?E{fhSd~(LFU%zfsbK)#fY(5Ke9NI(&h?5;34L(tp$_8%e#!g>q z1U8pS3^*2z-4SC0(v8|Xnk_zd(JCrReFGNM$Q(N39CQNON^873`nSHeroMBZ|Hxrd zksdpfl=PEys!UI47N7d2eD18UaSymCANsg5cp2a%4p7pCqGe+edNXToc5>Uo?9{Wf z(_>E!4fgE$?ce-P(r^Cl??m2w^J|fpUw(P@hd=ybXyo5q|JCdF{@@Sdqk6AjPcHeJ zF!EnqLcZ9~8yaeET>R{fyLaz=qrbanvk(w=08R%Y5JG}of%yc4U6#@V%{njPKFmlN z!h|bdMaZFi;dM|H$xm9!^^Bx(52Qd4r2XRJs~4oYr65312nkQ4+vIVtWYTbpk9B55 z+b|kD{dzH>UHZ+Z?o);rrH9@=DN`^DH|+ItL8Ele*z^OhbQE6dr>pK|?;_cZ$M{Z|^!2IEXLCdye1A_0umC+L;lg^}8c!iy2l0{?;(7eB{Zb#qP| z26A*%tYs@dyT_ez(r3M$fqK1aw+yR@lpznNrFLMX!fY_w+3C#U0p3dN5?~U8GDru^ z_yP<9ob+3jJA+dn35%X5W3sYJ%3OJc?=WKFW>!WaXDP|f^4$c7uMcz%@PDFy!DD? zd=c)bOG?oA=ztrmT;68&`Ox9VtU?AK%1nAvs)uH~b?u5xN}#jQFe+hQT3uy3_aAqo zm2(+~`g(0`X~EJn(%r**T8h`5n>Sr>Z{E7icI`dj=aS#PeZ%I)M{URcBep8O{G<4t%t}Pc>w7jVMQTPyIYlR>XS%VAvXz;YBja|~cjdJ<-L=KpF-uG$6lSb@ zGSAP*c%WS}KEC_gzh*m+9rd%!I$E1$ynim-TC%!LTWtHToj$H%a#6IQ_Akh29_#N? znt3{wJdTM-Cfb>>q1;rBbEfb*Dk;Op#%8?Dj4cWQZDJImV+@2@!JMocE~jd}8#naLR50Xwspl z`bmtE?(hV5DjS${4*t~Su+596zz6VaSq4yl*8}5BPdvqAWjrnoKeD*x3FTIM)K1R+ zpVk|iPR_2jqc45a*3$CSN4ibjGN{#V7D<|}pR<8`7c4zt!D`F1t+0%9+N6BRV2VqM zvw?w#wRVi#R3ye0V^Rcn@H$FHf1wpuZnBiZA{&;`*m?OKOOBaVyH{;glDKD5<14tC z6uXnpzHV6sW!531Z&)}&cv+OT?EEszQyF6u6SlfAWAnWaZMO4k%vM7uv6YyGncHaIvMcFqW=V}(Pdg(+$?6X6R|#8a)Xq)uHIzO2kyZE>ol#;w_% zrY?)brrPe~&)VWzyp0X_SjK9Pr9_SUt_IpOzZfNclxfF~ov`e}LYG4rG#he>iE(MB z7UPDm;G<{0P|KLo;(E|+=2 z%caFI0q&Dns@q4`+ktEagM-W?7dQ-VQWm&~Qi~krDYORdlMnfid{=U6;-9WSbM&2j zK?VmN%1dATnLDzr1>U6Oo}F@;{G*Iu+;LwpgYW9{(EF6H3%Y{-1+?`#Fv9}8odA@F zl=O@-1K!Ae_#u<^l#Pt0AA#pHHbF+R5XI#>iR(D%8EPjbhU!B-+|hITYoS7r6?3^uu>+$J6PK-Y^NFD54;{3#z zg>kDYO0~M`5_`})VJ%(b>XYbI?eb#{RJR)AJc~s>c3{?Q+u?o=sM~6#HJk1B<8@Iu8>{ zolW;`c6`KP$HXubC`=lqOFr*Cddknv?`rF?%b&h4eQVAR?b~5BRV7Mmu0PV=Rn@to zw#<4+<#C&z7?)%bgkleYZ!sU;&R%;s69Eky_!?zQZR~>WV$Mb$j}L(t7P#pzK=|ZS4uYlKRl5xUejz6pWD9## zA!tyv_U5;L$MzmP>dt+HZ6-Z>(e=+hv4@RUeL;mq%5@D~WdxbWc+jR*jY+9^Z*D=M z^>sY5uGS`-@Ew-nym0g>c1L0xrwa#v>;L@EJX+HC|K&fnr}yRAseJ|FF)ZvzKV`vG z?GkvTBe9r}X>Xlrx3<-Cd-ZF-Ztr~m-`mYApZQ`6^adURUB;05uX4n6j)ZQ8QMhDZ8su&cxRJKCJDCdNfsetxd_hbj>4`y_jXMIP0S zwpCY__>S9*{9@a->xf-Ad&VxEJLArJ3^_6feX6Is+lEIcEhD$Ua&xoX4y>rCu!9FQ z-Z{AzCA#YF?v#$G^lGP1ypK<~UXh!VEgN&%l4M&DvV4K#kOa>QpIwu&n<1XVrUKET z=qyq204FA73%i4b$|Bks$G{;UnezZf%Np;5lr+IaG$4E)mfb%j9AhypTJ}6P_H(a& z)lSOB#xdjk2S4+OX^xlhz;%7vZ8??e^G3QyU!f;>?!3k^x2(nwe^ik-k!FS>MCoz zbIUGD-p+~_WXm??sH@$34_UwHS^<_G3Ouc*<^Nbh0llkj!O9;2T~DLPjIa+yy!*xK&)S z#h!Zk%c8>=n;Rdtf&L!J`9Vt)yweh6rC;8($n22vNv}|LK`Zdp=oFh?O_AN5p+4wA z)Uus?>~YITO|`a;E{jddl#Ws%+?cY@&b(vyZ(nnp(CJF)u`jUO+0~wy6r4I4e~)~i zI-q&|q}ARRXc*dIA$3vX&UwHd0#~0%H}qKaEo?(V-4a0%dU5+f1>vAsUboG5>^@-S z;#rg#i7fhJ9Sf|*#U*zB-5+|`ew;{YA0fKIL-ZQw<%kV$SI`r%mAs9#PhWy=&(3ak zmIq$$_7iPz@avPyKi8zY&D++!CvEfg9d_-)M}DkW((g(O3hc7@bZTzC?K!aD zQbbSp#i!4H^o}jDh%EjU(V)N0!*dv!810R&4LygOWATc0{kCjrCG&h7B)jT;fuF;e2UfQFPO9 zAAIn>-MDjG^5~TP{onlumdXO*n&^|cg;nvtY3a)|BNiK(lAM{cn9Mv&FWe>^%hC8q zKb;t|;m&*dooI>KvgtJ*D>(Lx&X?3Tj%8I4KC8|A>V?)+VjtWAPe! z7aXXeOX$Y&8u05@R1~zv9G+gDhE@gL1YCC-*LQeGVM&R2!m^DF4Z01;~J$AeL#e6*+Cm}h_j~vM>Eb`;g&;=%^CcNz4&Q713Nfpiw z4feWjO_=o!9iI#8gbxw50q2noT`tVSghfN@)&tk4@{5YCysXNje>C53a314}j?!1X zje<8lWsV%!1pXG_hMvRU2KbyOt>5!GCh&_!ap{@2QE#{Z)%GvuB2=(H(!tuPtixFrp6^JdTnw#%v=8VT!n>MmYb0(xwYWv-ey z_S~Y7_44RHJiyEK4D0#euU>DskIn45#TWTPN_f4u0~tX!l|`AqoJ&EH`qxm0euO#&<>YQ zULJM(JUiu4w&28^1$E%4xU?+2J1SxY8L>VGQz_ahDlV6t#W{P;X6A_6jKhiA3tsDm zLr&;5?GF74{nS4n2Zl0?9eNmj#lB(eX&-Vt%$TMBQ=7t||IPLPb2TC-_j*p3n^2uZoKNmYqeX@L=pnL)e<^#g(w-YO0 zorpzXLTFdYc_u>h$zvxxAu%_V280d@W|%C79P~ujdYQ`S%B7z3qAKcyXgu8-c>|$2 zDM5%(J@u1F7oQLu1jw8Ed=c=Ad!a1S`F;J^P;6DbFQ!3&?tvy)pn&qw`=&Bzu`d*= zT>8!@*+W|bOlUuKP!1IU$B-^CDMGw$7&b5gJf@v#=sWFz$-1JZLQvG*>kT;QF&^Lu zcFr`yQ1Y|x#2`@Ashhl@gjaR%b^#UvnVFU4UWHs9>Qxs?35-e* z^$8$g=IvJ5^oOu+b2C%c+tp^RQnGqvsL#vj$d}TYU07;SaY;7VKPKgQ+-6o{EK>&4 zk~wX!3L&~ChO*>=lFA>`2`8O3u_g7zLdW~upwcH`1H>zC2pdjFn`)Hy4X0+yPVX@q#a z@bNGFyj2WD$1@E)|AVu{`r?qj1FIk;1UOwj&ftK4Z{R1-+hE@AuJ z;8bgvjG~|M@nJ%YNek$P3;v^9evip%1SI3VxU^sk)1$U513`@!+z1m?V2P=Ori}H; zJiPB%=)~(Ck6aJ`D7@x8KotLIDG#xUNy;PRQLv8Ea~u`2atft*M)?kCRB^5_#(}0c zg!Y0Av8mBv3FKJIDJT*xvja?uu|Aa}z(DLfo{ckXvFlKT#uwdxOmz? z-N`BGmXw+*g9FDQDP#R(ZFQs5jIYVX_{Yh&{=S}e&1hDO!@h{i;4Ru_|# zVk}7pDCgUwJjSb?8L>|n8-IefSS_9TvfbqZ*TC8K!HZiN(1Y;qknn$ii`05TU#9UT|Pp zW5fks`2yEE&2TYE2<|cFZtSS9IATy&SX3o#;3eQ6_u(b90od_YCC=9gYgt@cB4xMQ zs;WvYFE?A|M_FoOye-VlI!!|#)Pc-(xdmwTrWVR}*{0{gla=;is3E15hC$Sq(0uSB zD7f^Oe)8D)oeK3u2%afF8T5!=sN5j?yzW0FD@7(JXb9t*fWa z+MDjWfy!b8bVvWZ-)ce7i9$QPaRM8YuK>??vqN-x20r?D>%~N`+b_a%7VLcYs+YCu zJ7|$LoVm#E$IF+m+rZ$M`1Ptq7FT?-YfiihN5MiFYJCGC3X6w*oSL@W!k~M=&kIYc z^(>r8&JNC~#VI?or`{%Jm#m?s%VrjcSd--ZllB9{>dl+&@Tn(!vIA$V)}}`5ZGWWv zi;nLux9Oz*fG;}LxcEO4M*9vOx9p+{>*^krUKC+U*%nr0@JHfoYB|nE=CiFoQfkq; zJ1oC!lij#+#ir+{?fB`ZEi1p+E`4^^E}VH=e0tWZHf^^}TXtFj=fMjBw!3OWd-DV9>FKcq@w=V74@d`%v+m9|UuXs=msC#O&VBaOD{opxZl0b0_yfCk z{sZB}yhkruRk{Vq792>~Z31j?NI~{637bY(e%%}x=(Xmk&<1aW$_EQPmF@*PRXy+;y3o_)6a=us;yuknae_oZu3kBzxLw)@Z#`_^y%1J}bo|MXpJ zzH`Nr<6|ACoky!K90cJVz=X48S0zJJQW7jZHPH_4t9RMn-7}zZOJKBwhbzt(>UZq4 zUg6vM58t+>nNi=ZJT}zpJFvi-@$qrX&&d$niMI979Z>V~a$HYSr+mle^z^)BI=Zah z0y%aXumbw@6T1u=Bg#-_W`_7o#6!CCke#8x1D%U=kAXUHBN~P4RO%aImfiE{%cNxt z;g`q?7LWV-``w`xI^v9E+DFJmb}3PAqQ(Uay{x>}N~MF~Slij!?Co_2UX6<%&7=Hk zl#d?>2xDQ5awS)!(-LM^1{CW39Zh&gyD6+h=Frx6eNPK>FH@=s3ZW#UFBV zas-HY->utt`=)qxnmzxeuWPK+?d>1^sWn_VC%&*CyCpcF1-n}G0J7ahY?r zOUp`pTqZfsU2+E65(c>=ITLtOv$K*z(uwp!W+Vy@Lw#Mo+rFp0%_A;+^wv-8(uZ%U zT@&tv6r4bjVQ3oxet;5Lj(w0`P-@@$t?&8qEp06iJ!~=@0EgzplvKwV9AKesboZj- zYOAY}tu{Smg;{G>k}uobRS=C)Y|xFuOZpx9>$vc#Xou^>H!q*J$?;K_o!|_qyg~Xz z@4&k8C z&h2Vzi6zCY+IIEt=<&y`vRrV^&#>sF8H-E}+059WC8+%+rNw?O{EQzX6><4EDtRmm zAGJ%5&2e6|q3bdctsA0$(X4QS#S3&)78Bun*o^FGPfAU9orB5#zV>#>z)p9X#A&at zey@G=*Z;27O9%S&{h!)}_kU!u;t#+xKpHBBd(fib*yKCC#52$j(dXvHU-HWe_iJleSvElBI(pa9tr7w!!3{gGc-J4Bf{Sv z=}k93|3rOlR^Igp0)j6Wct;uFj@u|I6P%$ju1~9d)a!NVH))VBL?R;>myd+fp~HI{ z86RCZ8cmE0TZ{PDg7_AZ)%yCnZ817dd})szJao{qC8LNC`O&*?TeEcf;6NW7d$^pR zP(N)GErp{b8P{3CzRROFj7o0eL>G}^_O z#=6I*?Q7rueb>`J`rs|A-6S3Rz;U}Kye1mN-u(wWT1$XWj5RhkdGw`t@dwO{?oJ#@ zQeFNNA2C_9#GK;T%!<;aI&bTE^vK?N`)zyB(qX%gJ!#Lr`i51M$PS244o)V5CukD0 zCV3&AwKz56d@w$<*p@_-z;$kB(iW!2#WzF?so9q3(G8P?BdfCYmu+5cnVFihfxZFP z7yJAAM91ZJ@W=`2xOpl=c)l=Uk%@L&S?HC{F)7{>QORMUb}foyk)$i+v7p@?Kvo(y+`tR#X8#BrB^@jg;$OkD6QLMk3aQ-ElD2UYrG}CJYx56UAE7d z(;Odjdzu}moWIPGlQ~7z_Qp4V(@sD0qGhIMS%>VRdrJS{=2g3U{hIZ5cllh~7V*wg zFT7&MAAj1S)b~qgKM>EE5U)vb$K=TDl;{^3EFSGTqxdOw5JMPf-oi)qm53%O$qBL( zX4J1}@mcYTltgz%%FfPp{R%j+2@QM&ZzBuh2Q(agS-+Vt^g$0q<8}Fktl*{q>N3)4 zZk<>7CAvZjiCXrM@aPvx;e4NL@J6D^?%TW9Hf^dA?_d#G_Myt4U%WZqH9IFyiIrM3 z3~w2gKHAyZBD=QLhBXF6&?qRavdyx&cJ4oH6~)E&sQJF+-gIb#`bFP}_ES_@V~;)i zvg2DqGK=oaDb0JN)i5`~+$4+L((5EA##Mf&bSj*keEvjjfKUNNMqYs(fBFS?%;ET% z74bf33nxeHSaf0f#6RjZVK zvZ&ut>aVXGs4{phP;r@{`q7)|3xA>C;EhI}?o%)6U5>2d5M_WF-tnN1P%ig3cr$(G z8Rasb=ncU}3-dPXMx)AvM})NG-N;XIPW|g`0H-&`Bcuy$3Ae(%fYZM$$Mrvb`uMKr z*Z(kn7$UmIMH(gWb&ksF8jtLNeIu~CJY~ZWbEYo;1w;B2=Dg4aB!{G9eW4f7E|s^j z2B7Zhwsi1m9Mva0T33H}yL7z?%gad(QL2=GLAcG@mOFdVzV))fGoSbJ@d)t!0)~Jb zx#-V=odLhmL!}GH)kNl4?3eAMI^Z)n)X;t*wDL+PQCXA$Y=YgwZ=bVL#Y>5+t4jq- zi}O2XW+tDUnjC#je0g`@K!5W8@IU;cxo>~_+tdH{-~L;A_&3-3^#_0O2Y(YrUdR;n z+H0?+y!7U42X9}!{*ONT`8(h1Xltv9lY~YgMd{|OEfjDk5)cn!6cXxhy%1;;gI>a4 zxX7dpM5=E>Q04IiO2?c08($$3mBn|663=&^tmiv~rLqFS1ZKhI3||-NoEdl{ct%=y zABLouxRiV^UuC&RnZ5@h16$Dt3YVVIRNCjo>mQ#{OjOfNeR3O*7%q$i%Hbl6s4MsS z?h7jGZ3Ip(@O2+z^@(+!=^lOIxmxOsg0}mlmEP{V8@w|P4s+<#zqZr>0S&hayaCdNl?SjxLY zL;dl#(nq~=atow{R9SvWxkU+Xx1|8Ks|~A>87aq;evaThDTD*v-M+|xaeC|4HM@W9 zbDJ6)_OPsYRdNQ-C%<^h7pluDDlEIa+#WPG*wXZrjQea4b$a>YdAon}qP0ueoF49% z5(qN~DuRW8<$?el0G}Q21I++4SDutM;GXjEr%x9ad@3&sDcmQ0<)$rm>cuy#YTFKb zDC6k%)r&SP0fnNMk(DL6m0$ydL-z2&JsTMqSXYkLY^b-x`nn%k%e~vKK==1_T2^+R z9X@f|cI-P~d3mK4k${<2zX`=jXx=0#?a+E_d%In^c1;TTw0k0^O5x4T$`P(6T55Kd z=m!C}Y*SK@X6GX|Ju`1zZJkz-lk3Wxmy<>y&$VTr{H9xS*_&(66aKqKHE7{BlUCRo5f+BiEo z?hzU|Cp|{A=sW-(q<)eH!;C(0ri?G7(+c4RbjEYwgt5&tzI#J;-{I!88yq;6H6AR| zd0wTXO!yxP4*eo6eW1*!D8X9g5h60Dpv;{Ik_BV#5jqYa9jd6Lz@C0!MS8=sKer;rL?I5EPkOx&k0ULgHzV{u+!L`!U9cZcD^z(Q4wRD zDV`)A6DOl3-^pEyT?c8V{D3ruE`mPU20<3wVIw5q6Ih(twmd!_~FU= ze0%X!l_kYSMC)-@Sd?OUnNrAH!}AmhY?^}2$jq-FZAf6nXloqRzDU;<2iS6y7*Q;IgeE$RPL$ui0J4i$;;2|AFVIkxhmow9?2Xx5F-VLaBa7*T=p}+$7P5U=F_8PsIB2Vt0q!Xgh&SKeO1#9>1l^_%8`e@t$rrV>43eSFmpCP9$l zbLc60`O!DZ<9$*-$9JUxKXY>P+-a|=xkY?w$#Qb?oIg*DkGtnH=d#VtE!yG7p0vTy zDan9Y$*WQ8>>aepDZ-U<-r|^_hstDUY`kO!Aw%aT?dYMs*3jHxmu}qk$yuCtXaen| zKgfz*2aj4-L6NmJJrFOOawmf?F52v07zedinK42;+gh!ywb_z0axJT*&Z06(Z9XQ~ zW@1ZhCb8V+5~^)EbF(cc6kAu%pxwE9M{=gncI@6~_ZsioNALXDdRrb?PG*L^@y+kp zfz!`QXNt2L=>Uh0oDdJ2@?C6+Of(Xf^Y&F=q$((>u)T*Lv+3z^8}94&9sHqv!N>*2 zkX0-?-+$0(j~=#Y{L*dvuKl)S|9s|4+-s$o|YqHJWIL=ydo+(-WLaP=HrY#KW<5d4-E`jZ(qONd+@+R z9kMfLc2P1%V*~$f2MwrBq#+qP?`ZL8nyGHrBZ z*d3XW&FsXyCq1oO`rTMxpEcdNZPz|K=Lb2W8qi1jl=o`)eT%lliPACidL>5D{U*x*0t3iKVC@Ch{C3*)H* zl`vr8##_&oFYpYrvV7yL#h#vi%g@cWsflUp?H^FSBz>zwRN(NV1KFNkl=`B<^T7N;Tj96Sa7 zM_MKz2Zx5;!I&W;Y%0-*>g((6|MS26ueN2&R=a%uyp4{I+7{U{-~5g5S$Rd3ef;wu z+vRf~qREP{g@sryaE}EQ7R!+45AqPF0q}8JG6qM%1dTV7r0n#sgf@c4%Wyv-1pC;uy<<3KRI5S!o{HcU*F@ zMLcJ0WWbI-_JrVEFMc3h4QEMpBG8Z%u4tHlYrf!AT)D-gYOrJbtsnoXH8osu8e0~v z9X#=@eeE~CYkQBLv~=m-$X+6=5k(DK_4t#|+HzEi^$$#`EG8t`1sf+FHpU{$Nj5f{ zY>$SL%yM^Fam{u+|MC0oFh`UEAiJRtAiv#NM)d+u&ZGwBt_!SR8%~;>Bh7*ZZ6y8L z@`6na4p{S@o7Q;!s%|b@Wr<{1dc37&q==tSiN*#kId;X=GTD8D7QHfSqkSF12kG8R zlQugR7N1H*M_XhAX38E%o*;>EkRZYU^jjeQzHk3NtEsDXcrqbQzKUv&i_thHC)tr> z$8BVAP%!E9-wT2lHV;t%rzOv4XEd%0i@tM`o$VVO%yA96a{XXQunhW|_f!Aa4V#3+ zxcbj|uAS0vJZ!vDW#kswOJDuAefd{^$L7_ZN8%Yog-K0L^tl0?Xl0E${Ge0kse&y$ zfkhpha9Ds?QiYp#9dws-PUB$@$q)-^b2t!o6zxA)UTQ8X|)??rex_6iLP%>i5EgIDWXf9fv|0e%)&F~ zzKHS=k-Wx%fwQ8aD|lpr#)hah@IZJ8JcUgXqy0VBE?&<$$nda5jY&y$o#hmlTUt)O z;K=bS($~gVw3Yp*F~rF|Au-Krw{EwC#~!mC^*by(Gu?^=Gmh*^_i>A}M=F!~C7c0R zj8tJr5>AUOBY6J3oLryaW zy6yPHE#x9&z(sm&aPJoifYOC|Bp!z6vkl96rOcOMiljrGkJ-CaG_)zx7gZEe=u-Q#=`K213F zrA6V0?DB!mE<1Pbf_3%{N%kfC{NzXP{=^O(IA&Y7?Xb6g_{Vnj;u+(JJ5ht{6n>{o3!TJWobJkKUqoC4OB`V1S;?{H?}?anc*v4c*0x zui^~GoColq5pP3Zf{xLBZd|@(!_tq561wZiajO%JO-+njqxeSImTmUT=_jrE<^{WW z{zLKDDVGiKhK(ahS5~8K_lc+M&ENQYeyk?vEblmc)DE9GZn47W3E{)E^y@y!>U-B@ zS6;v3i^*+G_w0;pn!esHce)ma+lqAD$O4W%f(`ry*$N$~{f_?}G9g%D12VV4Ipf%h zASnDcQG6#+?PA^zOcx*n?)kjRn#yBS3KYhROLV?rB=r+Z-UhF7O2~h`HIO?YnK;zC%`6TH(B*q@u=;qs*4v zMxVuL%FjOcc94m$frs(a`If-OIQnxr3)q?N5(f1bx-i5{Tu-alQc5V=4S%7O3lJrp1Cfq4#eRhJtyP!~x^ z2-*c@K8)5{W$Io|3KHgvEzDN8wk ztG5Xr87q9owv+xrbP(BvJsj^fGj8b_i5>w7y(I!~RzGPJx)xt)F!qI4ue!WHzyMeP zJN+aLUB;=w9bH6Q$TDbkba=$)Cn%J~c4U08<3fMnC)jN`gOHcvS5+Q;^uDP2IFWet zs^!klOw~`1jXX6q(sz1kaen)6eEZk!Z-4tYrhof)e|Pl{|L_l2{>eZ2CuIL?d;Q+; z{a$?3_3PJ@_y08wBj4NGn|!t5{=wTfu6@0${n1lHL;dAz%d62$>^pKfLPHy3HOmrp z`h-!V{B0n%Q>cDBBIV z;&s3bJU^4yd}rZ`?@H|rrXbx!!G`Gk=LX^VPcIj4=EB3vWs;PKD#z;!yB31brQejz z0vF;oe5Wiv{X2|A`66($Fa$wpp0dSD(XPIv=) z`&AxoLjfjaJMAedD%A5-hqc34dEE(sL0=axASd)A}E^NDxh_U3eN!*ubESWGON$%WD#_Nw#-C8d=6R%mKz>=v?osW0WWrhY$(32m;pECUs;KWF8XbEk?X3`@#NrCO` z?CTmF5=^A9#H3kS&0dcj052t4Kwfc$}`otAV#n<{2Kt+GqQN1?^re|&Vzy1IMCM|+cPRJwe;kAoD1LAKpLRb3D~2ywq#aZ}Re;&kg*ijr1R53%EL1 zbTR&<4tzJ12RNt?JqBGNAt8QUHU%EbWE`~TJH_=0Utv-)N{w)S48`a^>1pq>+6q1L z45JEII(>LjwMBVp1O10yDDR6t|7UbfU!Y$vNB6l%<8mmHm73htc z)(r~r6NkCl0zaW$q=D|xlN@rY6UQOKOX3VuQd(qLnK`x=6L0a!iINQ!J`qza<0>&e z$rr|3AKv%#L&t{(B_A-BIh&CkNle0^D*}TsZZyW_oUZh=44;r9(oX0P{S&tq9m8jn zQ#d1Z-K$uA!U+N#VzSmJdvJ7$fZL(JEI_eyhRJrE1-U&tGilXTwSdaz#?(IjzTNoH zrX(-JqFA6e76+4);;p76-}cwn+1}l|?2rER2iDZyYsD4S9?^%3eoz<_2<+@;QI0;Z zice$IqDP^7QJ+sbcrM13yg{ZjInAVargVkuoE)F9+L%ZJ2idu|BE4nHuKl)i-$9@J zKL5%4)+xP%5bK2ePE1R;=id0H>RXZA|4Y}Ce&ct4-*NEY{L6o4k*RSvg7b??ZDg>| zINO|~WjJe+-PkM)1dP(P@kP&Auz(K17bXWePM|>g0J{~p@7XVz-)Haq0isU}d3q&eFrY;iJvZ%(gvU6?BJxSl+nFrgSVZMKXK`fPiG)Kfw+D4^H?^-Gep*e-Krv4917cCqTSc;#g`+m>lz5;R05A`!0b0 z!i9q^bVOaL(&IDJQ@t$m`}hgpXbZckkXu>OE6X=;bBA8^8$UBKFydhC~ae`%~Cs~5vhl3-N z{mrdy8nYC8=G9-ZE&Cs{8Q}wwY=*l#?f#uB!pSi!Dyg)iC!V%p*%&|j%l~Kt-5s`T zTbb2vu5cK!BW7}ZQf(8Cu8Dt3mlzwLw(hP0OHNJm^B?0AlLC%7m_^f!t$qLxf?rD9uvG54_100=Bq&qv~6uzt}53gC-ejM{cdKPb4z+#cEwzAR}|Np0d z_J6mW++6#={o~)aAN}aZcJSnBJ8u&d4xpcvDODgP3U;UQNjgQ#B`#1kD-!b^qb1(T0+`A38oClwN z;yG)+ciVpU{eSP1-sxGQ8^K|CNIDve6bXcz7k<+z!GJ|=$3y7}$S`z8_z(+F&@=Y8 z>jKaPV=q1h?gqIiIuZ}WCdNsW@Z~I2)@acq_^fGQ7; zvW!ilWE-+)Uhrc=7dsUD89BpPF{y@}LjDt`wxqJozVfSo0JuO$zuPKn>clfpa9_5^YgDVr+Cu zvh9}jwzWz>;yySvuXM04HBIs)9_-$qf-D=H|rnWqbFFrpLt#Qg`ot=R2BlyXrZ25k8t>j9aaJ+iU9((C) z-xi*iNS=IT=RSPP4jzBPe(krvXPIg7*7c~#I%FTiFBWBIV)OR*_c<*K^p0cm^U@Jg z((Kr&r)}TChy?VtVl&uvESn_xRRD*m6ED4boh6Q`cBuYc)9=}8kdJu$9ysn#!=x_SMI-MW6qIz{JWx)1Kb zLvYw!AYz$dn~<39x)*9(u(?GW$VIio<&|KC{NutFAw29dk?|tawkRD6TZ*|7p^&GI z7A)hEQhXBvcDp;tCB;~3g8C_%To!)i1Kra9X1s9xv!qJVC zO1Z%vz=4tTf;n5A1|tT*W0xe*DWj$~z)Q(XKU}Y8UW8%y(uDEwPK~MS0m=uDB~P%C zlus$=q;IB)R#Js$Gt(0q^LgjDdaQy}muLqa9iE9pt;;hWidSw_AmHZCOdVWGownf(%1{=9A+l;}cUQr#DN+E~&|@9+9Z0tHXwc zCl^0ECth>i!AafPqa;S_yW5BRwCVVJsswuHv6To&>+v?q5fZGm6jH}BVJZ! zy2}&bOI4H!-4TUz^PXe&)C;fJ!`oNv%4cV-yl$(Nl$HB@I`dXj!mGBHCdtP^Dsed; zY*tDNZHGre+m2Q$)1A5W$s8t5V>x++R#{aoojOPOC)-arP@I=*7eD&BHQc@JeSvnu#1D!1IVk&VQZ^Gu{47CSo?m04&jsWux+rDIZWdB_dEO%MS-2)7Qaf-CT9u9= z9kMXZit=-;w7klyYd1UZ;P_9X8o@6Z3#T=7jP)__{^&bn1$-P%+-Kapt}q7)%$9|d zGc)LMGsaP8IHus_PxPTw;f}9Oh=(wD>-48S1BNfw2lWncRA1CL9BmxRF)^#F(eXo) zaUC+eZX_k7oX^fKycd&{)c)6Xt+}yrF!itH&UPVR^sC?e=C+F$E`0C9_ul!xwA^nv zF*iM(BWB<<2eQJ{K~9hw0*An0WPA?`d$y1uG0d4-jJP%!bHdDi|*0Ll}GbT@^sS!01#EWv%~1ab`k^Z~mLUhF_kZ zi*|X)SP6wB87%xpu|?|pchb@UF6CzunlOs)F|0f&=m>C%W5SI#aE=obHV7(|6~cjW zh7Eo5GQDmXY_yD>VP}SkQhFVBD$m=gG^AY?v%rA#F;zd=S%Tq92&@gJ8=xQlIUEHa z!iex0U`f4U;)358bxdISWL#uk2BVbiS-hab#54UQ)NEJhBYV(r(;nVykivG&MtVA| zw4&VdO3I|vrdrE``!-Iv_=uEL6m2yCLFfj8UYj=Wuzkl)T6}t@4Gi?z_`rY_6%<=} zO^p>xAug+|u>vveMWyd(d!+Y6-yOcPFl)z7JZ`;GB5ANQwXyN#_UHfgHjOhZ^gPJftHtEVB z6Cs>`L`b-y;US---oJ0JFG8^JfLH2*jLONmh}~~^U^y8Xw)?<7_X6AKBm4tA1qj^3 z800%RhcdP}KW%f>j1h(f;o2SNWl%>+>Gw-~355ZVV0Pg#5#Yn=w78^p zat;@ASbbCbI8&04m>IeGezpzXw65ejU4+Fc=b>tqpZTosz>zZHyP%WvA#edaQC=lg z9Vjk=|3Y`vj{|}~RzB{tdk_T~0YR@YIh@RPO&WaRo{J7OT2NCJemXOd0hKGgZZVwPvbYoaX@S+*?E@RO$w+TJ}?R$jrPw%Lpf zV#0y0s!i&OhjfceN%MB#AQPka%wVTQFNaB1`1!($umZTLJrncMHZmJ+6O*$tQo{~B zuJn|6@nXUquUSG=jP0q)v+7*oYJ~8F8f%R`uoxJakdi)UqZ2cBzjaXbnQSSE$Q#um zcrYG|OKVnMT5g3!B`%Rr&@m<<0bu6gwrITLBXUmV>!BMiGQz=O!uc@?vP4+?2#cEF zeMlR4X5e?;0p(>820VgBHWY8iFFhj<32B@27{{G(AIB_qg1U#ikDEUA)qOl1c?fXq?F zY7_L~+J>??Jd_2TMdkoQU>E2C8BbQ#p){m}robt$j&f8s6N~iIjaHR|{Bk&YBSQaC zqFwgt3Oh#QT<*hPfH8%W!###+k8aUw`bPVC(?)))a3u*10`@eO1bA<=1?)o$NqhfYc^)@&AkNY>a# zY*t1x{beU2{i7FNKVR1ShOF{_03mNXxX(gwjGwE?J<4GGynp(_LdVwnZC1N^s|^f~ z+UVf0hc9C{Jz+k9YuIfeel5H}_T0FB#d>>t#0$W{DCHXw5Aurr_zL(ui%yBEqqL;J zo_+pB8yKIq_dfbm6~|d_eu47|a1z7HaZP=hothS0F`~Q&#(DDb>Z^x&)ID?;c0+l1 zddV>iIHy0=tw>bci!OZ{HEb?u^k`iq}<+Pcl#tgNcm zLuays@49r9p7#3|CyBfu-7H;vbkDv67SDu;WI5-eZrZ-z&y<~=9Q8>D9Jp9uMAiXQ zKVue})1&0fEZ_Z(%z=L|N&lIjld-8We<&TRtFyxzROi@WuMyFTg~_L1{fd=u*=CLR z?%36HXKZF{$l(ZlcspbSFD6V_>_$egdydeeI0^{+9XHy#I&Ell)F)nI;}VP`X^>ao zisQ0mX+}<=w>vjC+lq?{J)B%+dAU1)_Vo4mMCUH)DMueWE!>HS@)oxsC^w9XOx9I-H;<%evLK7bU$d#PanaU! z8yOjJeYUo;RCS1t+`J_|GU(_0b2JGd+`;MT*+uK?8`Ad`KTnVaXW+_^Vs|l-*4feNJZh-B!$U2z_^m2^oZ$D#shRfJGcVi0o02aZ^2S%o|9T)%$F>v-|iHyM0;_s4%` zH$MBsatlgr$F9BB+udgE&5c6*W$9;QqPcM+RJ}V)sqP?)0^Yga!nm>PNMnl=IkExR zIbG;-$dQNvmVgJ19k)~#G{DY8LVt1|?BvLxH8C)w}Lx@7aq976B3dC!XMEqd)mWi-?X1uV1-sw|(WC-?4rB zk64@dPvfl{RxEzXIjz^Od@6k6JmRm|3$MTFPE*+4w}pTA?%ubK?jh^$8@2BKVSDhX z-R?hVvWA;Ctg+#`P00oea1)h_R?!c}$0h=tuq6PxgA`aw4q>8jn)xm09BR*bC`t=`Pc8q+{VUIaR;oVl>_hqJboF zvo*>c@KR*Hae+xS6NP8uB}LCK6LCcJ9heM z+q`41A7w%`6)K&Vyv!}BvKPPfO{=NdY8TIcWarMjZ4t>?ceYbII96d*eO#KGc0Hh@ z>8>?DX!NoxDl6>T#S8YqJ3qCKjt-k-B6~vPD%#(^d%x{JdeRO{2P68)PyY1ZS?9w> zOBPSW#$b*N`biZ}h6ahkqnoZDdEL@$=0wxX%dp4}o`4=3robVmr4OcJu?$^%tHqq9q2 zUt`i6u1YUCd+vhtfMHvfh=SjO1MnAB>3jga0v(WXbe-FKiHt^?`!M^5ifgL#;!$WCRln&wiV`QS#q-A8%ro@$t&UI0=i>LqQ#^n z*-C=wELt@S4$x$DVp#Zxw!AG-@pkgr*X_uuCq(}_(j6lc72HH&& z6`VWJEdp;um*BVOgEsY>`{8$3;PRu!lw?gjZ&|z#oI!TO_u#+O0MFj2ds1?5SoDjo zf;v!Kz12=U`;tdFOH0r29nrUMUbp1*Ea7gURn*p4d1Z}{!?5_%==hj5H@8Zb%Fd9^ zwjjKB#~1Ne^aPw3$Hzx(PP}rxxf49V^&a7Y8leU!E+)6F3nC!ez*I=6`N&lUi{RqNVbnn zjQT=5|Na zGnS!e;0GIFeBgv**xc}-+4&ipmd-`kbG6j*Qz@KRq30y|=CTyW1LOfmc5?g8mg0+b6cP01pd&l~(9e0v!t9)E<4Bd5lvJzV zchCk02CPB$>ZEvKZb`ZAm(E2v^TEM>hXL)QZnxj{o%sQ5SMZ8{b0LF8LXss5(uIaS zqEL5dyYJRbh)c9_mDSRG&uNZ+laF$7Y{uz@d+0zoWGx9FMr2!cNPl_Q+$5W5+@rU0 z)I+Ll5srezuBw#W&MPRgbnz5B|V>3}28v zd5{EKk}KbEAMM`V9Z3&&G3)9vL~U$MuIAF)L7ZjNzu zIlRv2T=(Qtub`){&$T#yIa>I0pJ&l0a)iv}-RP6^XZ;1;1D?(LQ*iF{ypD6=5#2^d z@!J9KD1;B;OpsCjz}uq6dAZcX$mI!sMZwZftTE5**MD6`^%JdcbM=lHScID)Ol zoC*D7eBmq5XDFAoIbbOHBtv~o^h`vjd7;3JY_4(PB2n~)hkKMZV!6_jva|Et`4asO z{_Nuhe3c@sQ?1jq*GON5TF|8Kgt;`p75D(rwF(OJ#p_et9(W}C{cb~}cw@IQBIy|! zmLeLU&9Sl@fB_pX;APOHJKNI%5L@-=Klr8MS5u?bR!f&6^LyrJC!d*|8hbLbI9vXA zzxVg-AO6GNAO6?>`dK;f4#!UfBNaCvA^>>zms+T(xtEd;;o_Qo6M2bA7+So-wE-^-R*V-In1>(KZG;z% zr(TqNXTs$1H!TbKT{uyQE_P9;$S}r0aX5N@!CQhJK}1@rbRo<$!38)lOTR4TL9EjS zeV!D%aT)EOoq6B7WRzlbfkWUW?TL|bmz0zycqLkw48Z%1cWqXN=$5V9Z1>*%?wxeM z`Jr`)fr`yqruxpr`^eCs1ajEDOnAXNH?G+IJJ&q)7onH%R&Tx6p#HDgffJ`a#M{~T z-?2ueYrJ{I7qgQkK$v&{r`#h_e*qR@qTL}Q!0W4j54aF6zJpHy*zt*Um_Ki1>Y2l zz#A5qWfUy=m{v+j%*xI4oj83%1J>TzV~vdut?N;@<>zGCo_#xwbMa;+z^0{)dY=IS zZE+k0pMnzy=M^!5Mfg^5f*nkRA7;m%5;$K1KHwSsVfVJvsOUfJsuk=6ON>YsDp^Pr zb;_Vg^fwFdE5bW=!4e9T7g)^1C%Zyem?l4MWa1jnH!oj`>ipcaO^pxv4v6@~bO~G* z@6`tNA@EEVGy?APn+OV=YnGmqC#5voCwUwfl*@OPslOQbD3k#&*pU$o;*H(MR1o?U zlr2}{7(BHpgjNmsV!q2WQ*>LAWi(Q%V1$#<4er%srZYmMQE?R14vhbI) z&N0;Rau$COZhHvK%pBo>#z1|Hk}*Fu*eTc&E)@KZv6&^c8M+b-7gmyNYBAAfSTy0h z9*416SwWUhth+I8Lkc94xMqqCp@|6fCXW2$0Ig4b%Mu?C)`izm50R@Kc`=KxwjOjIxmzq;p3yZx@QaO3|mw zbC5~T1KmaY&e4jB3fsSbm+jrV!|Ez4Ro1FaPY`lXc;<8i4yatds7=)6c&%}8oYyBi z2Wh9*2_4aNT}%k^oc!eV9nO5$1-{dljU8P4Mt2Bp16(-D1;;R#D}da~WemI<&PO&B zamIj2A6iHqe!3{76|8@Lc0bod@{LS57|hY2sWpMC=ayr1FwhYugNJ^T0hu6Fbq zPcQuCJajI1;L{5nWf7T0wu;IscZTa798w;_K5HCBW6%eaG3@9dSBi8WCS*H$dVRra zSg@dc!X`7R=kOGa;Zg7jcKNw84mGOngpUM|;k~rkVaRvAG04b={uaWUGN}M=3P<&c z@yW!=_PvMg`7eJKA+o!@vL7 zX&W0KlR?>Kb~`WuOo9WTD|O*?etakX_uK$;ak zfMswta9Az%$-Efpwd)gKqE(I{VG-RaO#GFzD7#wk*#jBsZSDQSOYsB22p)qIAN1yY zMf_rA1)3ENE35M&5Q`dx&qSKQkp-O~DGB{HQF~n8W!GVOE<2x@$o6QIf(v4-*C2l^^I@Ys`8&d`+<%2 zbLQ`y@9r)v$h2kQ|Fm=#9GuI_OEj#p*5BK2LxaOMK83y%_$<5p2unFVJu6&Y^c|&~ zQOYyN7kzODDqt#D!S_fPWP-SmV9vta(qdS6AT6>1ydNGO6KziT?-bc<$!RI}+JHu_C2lwsVNAFsm`1_l0e#=8GzW?)| zIR7|y`dK@2>@g4F{OS8|OHZ0sAAw8Yhhgywoi!}*I9>|X!42$D^lINZEgT^9w;#bG zob?GnUBMPqIeNK%kM1Ja;(R+hE7}l0LHCRoY?6c%OY>8Hj8}VelXbMUYRt#1w7SNR z|Jbx`ht<|@RjG`JWSejg$4ulEwl-%BV{D4IuCdXYDQCs3f8_Z2~KWegD z*REJ|gJecux5L`UY;N9<4SCeoV!iDxHZeA6%gTG|h1cx#^RHN6Pq#H_jL;793JPp= zbih9N`48>(mCu|H<` z3M=iYSHEVt`9&5{U#4b+I~wEk)HI*NzzG6f5nM=1%kbmu@(S{OBSB_vu1Ab2kbYex zyi86_kv=eLU7fv_mX+tSM~w!9oSx{L&zb0rY=LKR20Bh5MClnB?ss@(=9StDU;B<| z&u{=rw9ZE@?tE9deV4uX zm9JY?et~^{{v*3{<(!E*xO`(Qs2^Cz~`*n>VcK z{yiHU9kacMPuLSLzG}M;9I(9XTz61pKFb%+R3`EOoe4hZ;{+Hq?(8NX>F>6-d$)b@ ziG_C}#FSUoS=FXZz7T}t->qv`?QX+uJ9qB9Pr#!CPfkz!_@yMJxsHT9W}!4*w6ToM z>0=-4Y3EB+34Z7|IM03f3-l7`NNp2Md*nT}7Y8ZQ(pd81IKL*{F+Nwgnw=_mM{HVj zwWxH9DtBTgVq;TmI9MlIvLbd$P)A!i{IRR#MoIyTWtB_~R2YOO%JS!r&bZz`A=pA?^( zvFyA;+q8X;<%qTi2Kyy@Ry=~;#Kf4xnmIv9Z*QMpYBRk3_^Fe2>haT7$Re(Ef48yL zmc;8PZDwXt@M>rX~EZ(~`Z*vQ?HYGlTQvjj3mjn;yqdcrP z;}x}P_Z#lm5B~fI*4Ei0IMfL54_OsE!lj!*pY)T(ZyyunpBN>f;!{~@W#dPDs>LT~ z3Ylb=NJg(nmxi~p0Ohu~;LjKi42|2&QoLp6;gcRs zw7jUqdYbN7OXDrOef5&HwmcNvMr;^7U=Braz?q8kv^nAhdL(+$ig3git=4hc&w!32 zf<&@AQ(!yHiO#V{IYIy)hO9)Ef)j}e$qo}}3R_U(JJ_(g$E*rGJRv^tyA;WJoHaKh zae;-56Bo3DJVeKUhcZ8o9)R9RndCtxDy7Pcx6PaDZ0GLXuB+fY5M(BU4-JKMfevLO zs1HPBVD7ZAtU|Vg#$9b>j*bXGViLA_%Qjn-{Xoe5jkOndSW>@oWC!j&a@r~?DxEhm zKfU3I3qJ#nG19#tdUpTM$#&~#d7wI*1y{iZeyeB50OsGSx9_#1Pdsb2TenzlPOj6H zM-5UM-buoXtvhyGp7=h|kpxgbvTRa3Jy|v~;pVF(hikTOwMzAe2pD6mLkNC8&qMd& zJ%R=EEzrI58NG2#hxej~5v7c%vXtu%Q$7}Ju7|>VxM&-2+~9ft`z!E;0DIR-^v~^a zWNUo1Ro7M7*S_&p+rMYGMM)kJod-LNNTpt%{@4t~IDruG9&f+$t3?0qXpf}Fl9kID?Xtjh8B@QnGLSjSJw;rTk}7xL)yvyT#k#Lns^0ay z>-i`Hy@J{uXV&ZGcbEeNA1On>^$Z$fy+J?L`x5AgD~w%$h1*xuw_YX%0xy@}o?Hd$ z=Ek^qTEPtG%#5r|D=#mzva%8@DJqZ+6YCMp!m%LJE>DPZvEE8Lvi??m@b2aco zi?x|Wv)PFGv4P!P-5!a~Bp-^3@+>buTlqPjNC|WSXZni1;my>g5m6QTFGBXC3G^V? z%fL-zB{+o*tl_AVs)`EBQy<1gMy#ok#M+cuB9~<5A?eBbN_IH2xd*grfM}LG8_E-M;YZXSm zp`oGR_PwU(?l#_fv$Lh;@bu(l7T!%^SAuW@MAUZ_3%?Po6Ekc-KIu&@Jy z389>zAzILnA_4(|?4oUWnC_$W>5kI5VATVkyq2;N7rkQfYwS3ZFc8z>d@R{qo(CZp zh)2vwzd>g4V)uGkT*0UiGhdT|A%V)mt8)VC5aWQ9XoF91OSpNMc&7r0n?6%^AQGRv zb>@R`6rU-dReuXLm^Mu~5$gLP`NUU|1l< z{?M`07L%G`^AUD|hcG^zE!)}J;tQxbdHJ?=YrU1oIOyr?vrC`+!m3Kjtp30;o71?= zPEAS}6shPK54+yhe9xj;%n=N?%V^+yLKNF%8S+gs25+2u--R`8bHhjJ7$F3Xd&&V} zeFrYSsDr@PO`sE?9^en&1RT+Lstkm%I_docAC8}T$|^V4TV$Ct_X#=2BEyK?zk9>l z)jw(GmR(q2Sp@~|`A=xCQ5n2#&G&77VuWD|HPIk_x)CKf`*^D%!K-lnzTkWO_!IWr zH-F2{T>8vzpFJa5T(iQG5-Y2!v28nd3&v^I+TLk16QedE<@r9lN!spNhLoI|x@ybH z&$35S>^Q4^R)o1YGjDsh*V=c#`x_RUmf<0tZr!}*6O)80Mi8^h1dlS#EE0hlXHAXt zw%T}qk4?iHKeCNU-8fcg^tB-Fewf~>|1g9aQTq-SJi+~y{R^&9xd zSz>aQC8gx}0y7E}ikMGqs_*Q^q&yZKW5sg_!R?{f1VEHh(ldcR(%t5}d|0HeKO7_fUoj;W;)kXhmf;mRnrrxa~usi}Cfai)w=-g>b;fO7~HUp(n-- z#lZQ7zPkdUq!>VsUl=MFYNC&jFQfwxp&80^oKo9dkz40Gj5)A|w=fA3&aM&u3CEet z^iBXJ264^sZ8i2qR;le z0pFdlw3h5U=abSxs8NhALT_dYKG7=c&c{EtxS4j95oN`NdA4;|y+tL(tB-h>C)wo8 zvUPXQ+Sp{ohQ{XHVJ0yp&GIYi+*21v4I!uvG@i5Q$dDz<0Evh>PjL37>VvoR&!k)H zbcS^djM~WXi0~!QG2!n^OY?n^gYAh2%d>4q!K}qa%?dX0;sL2Py_BeCuZSPUTL1L2 zz4ckUm52tbO0#ueFk})fD$aWPC++x=Bev_{Vc`RYV}jr;Lmd3jxL{zxV?ErI`hbH+ z;K9NPjz{hGv$x-~ z4k^Q~va8L!sT>Oms9xYY#)2!cEN&9`M2C;ML4l$TZO}elJ{~HcdchM6HDo_{Ls8x?;GzrMhfcje z!kv&$b?Z6x`h+U5)7yWq(>61RwQd;2-2Z9G}Mi)T`@p@E;{`&+O^(>2D zL%W`n_R>}g(GQ2W(z-CjBYSdON$l z@4x}L&_*90hZilEu_2se@`%aM^6EO{>^@+7_RRbC;MxUC5G_!*PwD{&`mNuNKPtk1 z`xo8R1KQ2Km8DgymAt8w%qGktVR~mdBXMNZBiyjq`Tko!wV9b|%gf7k8R|S!e=X?Hwf3cH=wgg;TP=4P%pvotwC)8hXDb~^?lk)QmJn9QMrzWRuU|>MM zQ+&}7nd0Ld02|5^e84!DDXNpcAXjOZ^J=x(aYy|G2MO1H@`)FG$K#dDpV_qwXFRe8 zVLid=?1BXCUhKbh>ckBDyginG2JIFmcDZ_FL%Y6qkdIINZ_YDqO)z;ni z^s}$|QAC%et6aZ%(dMOFu0`g&T?^8Kk}`7D_vfv4%NFbI>9*pcV#}1_%A%N5*na`prc%+ z)3uQfJkt}k9lqc#aJcCYG;w=G3|Q^sH|fw#s3+*r@JO#(x!vwlKhRx68v3NSexrB$ z_y5L~nohXk6pL47$WdemIEgI5F@T*&xw&~tmnGcox0%@)cbH4mxE7a|I<9b(g!3Aw z74$RlPQAnN9!nDG)BcRm*n}y^4&sbu;15|P#j}V#VVr3?F)?Y0@v$~BI%-R@4PW{4 zuUT4li9Kw7=%LM7P$#r7j)Z06Tlumf*llt5#&vu5hktBaYIE%Q=O43K*-^KyHQ1gPAPzddK!Cod3)%C_g%0KM zu?_vjNosU>)EAH#S$6IcS{7%wJ^T0DAO6w5x5nGI?4SShe{OrETa1nk+u2Xf_zqVb zdMKCOC3&)WydA1DH6z=0?LT7M_Z+hBj)!*Z)3>cCe%xL-x!vkE723RLzISlahKFax zE0%5A(k(W#)KcW|L**<@ix#Y02r9&TdI%9vvRE2MyP4pr=c18B-gW z&`oeh9O{K1A}^4;ECk`e<2%K{ar6e!j8Bw{c99`m&=v3pPjU8xzL+#5Y5*{6xN_0u z82UOm4IkkMrMfLUJaQNMP!bU!3i51Xc*t&D`OIoIZL{ZJeAPZb^Pzq8-jAg>r&*?C z$IOK68_7C&6TAqS6YM)G)jvMfR{FwszwNM9yBCq`fuErxumHiBVJo`~lng?zWGvyQ zls!H^=?-T#CFxe3A7}Hb8$OhnDBCJMMLeD3psFl0w@AEwHbg5>pND0yPR=a&@n%my z_p&?Jd~)U^`{1KbY(aYR;nOeKvBSsg%)8&WM~ydZ_ntkrW$R`uDK7T5z~xf0eFaAx zXVE`#jDX+ZTpg|c+`fL@-hcOJcIDb#OD(Jv{0dxGz|om8K?hnD-LhLL#v^9U+hBjM zjShB69?ZE-xbw*4_R^QWWyvWScIK_Ww0jS3+jsu%?~85@$d2o??v`fj>uj-6@sDZQ zzu5()R#s7EL%m(%3*Bm)bV}iGVR5+~ee6j~mAtwuISV0dm3~BY_uj4!dw9RWhLxTp zA%H&%p!6;1b8)VdWfzs&!K0@X@zAW4R2!8HUs;P4 zuC7{gda7k;EQWf!t?glxS zhY#$}|Ktzdv4zDoj>uuLi7MD_$h9y#r+(u+8zKQgxUDB&r|8sc@{iI6dO^$ zs2c}7j%~oH$QirJc3Vw2mn8ilt++sPO?s#DEKbWl6rV$nATk5=&8~0w8U3Mr>W@}l zoIax@qeOsi|KpfCEnU2-e4D-W{F|cd3A=syf*Q5r&OJmaipXx{f*#z~0C=hweba|Z zWrttb3@qFRJr|zo`ADNr=5u}SRk8#f19{}Sfb#2>Gh0d~AAKMrznxDwuBx}_>&&}K zF)7`)$G-fPZ(7vyf(;A}SebBtWns}8Ze6nn4;t3_QF=;U>D4Xm zeRk)5mvu%1koehSMZKk`iin@ zx92m9s;qANF3S}!U=CnP{GD@^hXw~MIj6wB^yP2Ztn}ai^l$%_^$+z(&t*YeV}v|W zdl^$47?G)rn@43`TXr54bZVg&`mOLkF)qncG|o7WA@d0jA6cA}-m&0s@G(9qL3T!h zrAxQOu7Ex^oMf2GW-eH)-|I%VLPtqfndp}smpVBv-A-xd$s_1Pugpg$rzA?wir+C; zJtuiKM|7-Jjd|E@9ha13+i_wpD|UI0?1Y4T4o>|g$^$!LIkz6C;ws7b`dxd42hn!p zvvY!t;N?zCxt5cgul8rEQleTbd`5-LS@g zTykZ^N@})Pd3m`zIweM}+M~O-?dEMF6le_9-rS-RE3K@yBFWnorTP5q2lnXELwAy= zRzK%jFozex+u>8dcf($0oY^Eu1XJYFjQWENW%n}|^2(j%b>RfYcoSy+zjmou!AW|Y z`htBBBm7JfoObNmVXuDa728x*W=m=(a7Nb#rq0ilk56!fG2~5Q&^rb4;vQ}14G;3X zYL8!Z*3*XzEDv+NviupgC@RDHypevum+2SfkS^E^w1>>0 z49X{6_^CYq*>hyp#{4kzIizr2zOFa=cp#fxR$#w{`I2AuhO*ZS*M&V1`cGw)8F+-} zSWoBabuA-fR1al(`z5Q1I5RadCEIw=1_lPLU$)NF?1K0NoPqj7*_6R}qc`A?!3F*x zQxQNh(UR$FOO~D(Z3P9HR$WtW+qZ7@C=4-CiLwF3FIWd#&*%08`DrhG6VSZ5!ex(8 ztAw6b_t1&`(v1Z17shgm4GEpy*3O1U(FeLjZf=3qcyzV`OUp?2e#X#t!4;h&z?Qnu zIc(h~KnG_IihJs7RLt5+RP4}NRKnHVg7W|CQ%^m0EmZzj_tMz^)ej>tB#wRYjW>>b za^dVhKJ&r5f2XJYQN4t0GK!2Fi4t(mjP-_GoM?qW5WQob{`7PGf+&=3{ZX`x7&nr+ z?@t4B_~pX3?vZ(&z}M+9{9c;z&^{UQtCp2$mL4BvX$fnV%5Uir*(p-`(_<|wmGkOC z9!xTv?LwfpcYl<6A@~TD*_m22#@US3<D%bR#a7M{e#0&bjN){PV$_Byj|c9WpWFcG6@NTW0D{!X4JiCm8G@z z^owuUg4%oY+BF%`{kCaKy`6gEY1_JMzn{I))NtLJ@7}Pc#s=%}Zj*8rV=un^hShH0 zV?8puA2!_fNr0Vu_gncUG3=~dDJ?SQ;u8HVcW7gvug|VtI%}mzHIVKc}Xg)%s1#)d^t^X?%?UB37y`~mL*j?s=V)`a&|O^$== ziWJU8KRYc&eIMp*o}PB=YHpHobk&W(O}k{Aw6)vSGw)eZQL!C3_L%KIa#{*_x%KuB z+U=V+t*5t7I2R?l6d{X_;$jGGf7FtsoZ}@tGT3i-Z{D_#KKjIldj}kD^qq6e=rgoC zJ2UP(>gJ{JQ*L`}t8L%5O^S7j8^7S3?-bOv0axJcLQFrI#9CgMlVXggDL{ta5=0|O z#yM^*3^F#*E(;d)9p2@U2?R47S*U}B<;XfcjgJn=SdxLm?B8096npR^!Hrut8XPA@ zQ@|M>pf=%=J*6>BO=gFmj3U*^E-)@Um}xUOL;o2Mzf=Z`pW2u**#ebjg2WTk6-1s_HP2MOR`RatJ?dHE_>1}-?Kdg5%sViyN2 zesxSV!hkZa;_ZSeS{x9(o zgGIkd0!=u+hxTn;YkEk1l&k^*4J|E_!M_7*Z=165+b5#n#lk;e3Lbeoykz>K|0)V_ zbMXvsc%RTBEyfEEy$S1W(FbAC;aSVbP2i>{q3xkhQZhCsgcVY|=jd|a^H+lxYU{_hH42xa+_ZesYZrgLn zIPYy_Xh3<{DHV>9VH|)s`jRiE%}iS7qh=c!7`Bq~Dl4t7vzCVstnJ<%H?EM^)IH+KSCX9N-4Sqt{JD;ULe5zOA1b?fbv%YXgVDfwXizQkJUj;cPjB2Ex zy!z!|wTzr1cS5}J*+-Tbvt~Q@9kQ&#BAcI!*pT!Rjy(w2RsaD1^hrcPRMO!LN0r-9FyXMMidk#(K!kz5lkgH9wGk zbI@`N3M@7$+4k%^X!{Nx^IbeF7@%9=Dc;rIVvFz+$%VZqp0;OR|C)_UhJEnUzqF2~ zJAPb_JI3kFm@+|#QCm^F*^WQa^n*_zw?5wgXRSeZ$ZPeVk@gp5vLX%EK4d`J>|>pK8DIuMbJM)Rxd5UAng+ zj~r7SXQ6rNM4nIgJQ@FkPD>yC(#J;n|JH?0z@!8dw$z6_Mm7fBRl*4Th`stYIm+&v0InV+E8D+JFKE}W7j%OtfLQ3YWq$+VJDt?#TO-59O>-o z@Ms%Hj-0gijyCHX9uS`|a9aVM<=F+7Fe%1QB8!9tb&vG0KFJRJ;>EAQHA1&?pJ;9D zY|D{7^2`fgGS1Fz()eCE_pvqIx^8n5M9-MF;n7jy#j5YjKlSvB!n=H_W>F4z&LQe04 zQ+&2pxHauZa8M_Dg6k0=f-c&KEaf-y72SlWUiFggyY?URkeCa?Il@(AhjCUVJEM_v z@D=bB2c?OzFW z)kMLm+q~Thiwb?rn$+Lbm}J|3@U&#&xP9=>kE~htc}HuzJ-C0*+S+9Yh_2aHotlv@ z+)>-5uc0I2lt6g@3>GV7H^OH)7nqQ|y**tvKRxAr$JXL_Ds(w)I85Qim59=|%3kjD z$OwtaId=NRH|_Ob`3+y({>gv(*LLgLXBLr6LY8#*^veEhkoYCnf*4S*BpLy0mI@!rcvB zdQSZ*8yC-6e^;0DtYq1iI2%_;H{fW6 z5y>6w_=+uC?C^nrtIWOPENIrBQDS%kx%R(9qb>m zuC8ut@9dJi9g!`x>W+udo51XRtgLpsl~r#Nj^T)$YB}OT=w>&rUKE~6zkoX=q}e9n z0L~)p5_bDdc^4x%`DXKXPb{B&hu%)UHSn7-LM;cF->is z)Y!3jgIxw}u|I;XD4kXP2RAn8)AdjPj(LVn!2&)zr8z-rB4kb&!Sx{e=e3OhP zQ);fj7vOEcBJeM_9dsXgsSp3{c8sSFb{Mdw6z~zbg`@n6X#2v)?@EXL*xFhj277vK z$$3gfMy7EN^bYB@m76!&uATcG=C`k3Qayq#FZCa%Oz68`{IBg%t7LGGc%*od;E0aS zLL^Qw^bseXS>YA3n0dfCA{2?A{`~ECZDe}UzWSZNXXzO^_RiZsu)@M(J8|rkHQv5r zQNpFF>Key4Rb>w!JyhMYbw!uyDcPc5oc}V_cF7g#>j|>iN5`d~#-(W-Q=Jw@B^!SB z;~&|%vllfg3076V*IxVPcdVwS&SGREq3>~)u+L)wFx^|68nTJLCYv7Wkj#p=wEQ|t z$*Pb&8ls`i4)@q#$9KW`6OI>d9CUz@V&i6I-3u5(xX zq~-oyyCGTr;PzG5{Q=Mt_#m8*jZKoxn(Ve`)Y`H~&1!DAX8H;!IeVP@4>NX@oD5Bb~8>xzHveP1boIG zrc92%NJ@>4F=4qdK7vw$0LntC_Tl0tX1fqsA{(>mY_^El8d*>8reWO{r?{iSps`T(0Y%m@}1B?f_1>W*PE~-#(qnG9RLOGP{ zb5zPhJAfU}H}n?zws8SB@*p|TA$hV<3=S@AY)VNO5R+UtWz9O~u%h^egPW&bBt`NU|p~QmwSKSTr2gzlaS9HRrQ45LEcL5RC=7Li;GIEx~j?@5{WL=-O*u>9yVKZOS8{m z#7J3jTSc_R5yKmB@v&DO0hFo(++a-9rZ^GT%EEl=&`@vP=)}m0@BPEy`|MBu)1MA{ z#=oK$JKO)tF19x|Hpaj5m9Lb4c;=Je{qPs>{Lj}fUple6xRjg_8y6K3BV>Xo5E~3R zO!mNhQ0ov#Pz!VgVI$1=A$)WN)YIxs2#)n4oVc80@mn{XDEZE(=LPxJ(Rq2!(qb1a zFFn?hVpn|9kqwp$w)&%^OBC%m$^H-XfssKi|FY-rT^fTru^$`mKBP1;IiZG|vs? zJxnHwX`-O&LcvIv62d|siiI;DrN`I@PL!#?FW^BL8d-1IMY=c^7tf|K2xQDFiFcU#x%}B!#Gho7#RI04;LQeVVo$3bC}Yc8F|W!Ms~EW5DK9zJ|%pZ?;fcK7;cYIL+6 zI`y>0NtwKN`?|%5$x?`;4Tb677ff7W0Ith!Ofi8}XayxzGV1efaAed5Wzb`smR41| zkwN>0Wn6;OTXyWSQNfI`vSx(s|KvSuk^%Fu@s=B1+x8r=-71GLm5DNnmSs?a>nv6iUMw>++j8>r zZAoeG-o0b@?>#Vf3udLJSz%GBnka)yIKtVpG~(`_&TtAm!Eyk z+3)lRPf3hoegbp)q_6%ATI3ARd3GoZd05a*kV4LaI}7BD#l~bB_{OB*hVsH>0iu|& zO@vz`+#evE92=E!A>+$o7$f*+dFWqo&4sC6OlCk5D3b`?dD10tvz2gWgcl?{+L8vE3AT`j z{zThsM4zIWCAB3bqfq0$e%`9aJtI9^c$4mYsK2w>R%eFYA!cQLHwp_U9=&5`+3q*@ z*~s{WjP6;B6P|jwF^xlt3~Y>4=tK~9BQ|PjT5V8U1)~V=&Em=QpQsD>+s15W5y+}1 zY7+_-yWtYVQ=`<5IHk==j<>=T847DS5CFy)n_p5n0z`t0*+m)V?SnJo7wSW*jARW1 z#vkL!L;;I-#pQ%o7yJaX#F%AEiyF1~l^#n^n6u;rcGnUnmO7JVYyekU6nF#|$~w>8 zxTFz|e`>Sj8AcTN=aa)4H}8w?`SA(j-4cs}1iU4TH?X4d?2PBr$5U@EuZK5n<+om5 zo>JlD0IvA1NN__>zG$DzGK}Ua8yW1dLGh1{?m=s~-)fUnb3RGSLM2Kv3q{Tc)gJfa zR~aE}Q|Ob+Ydu>>K5rjCxr9o(LY;g-E6B;v1GUlfhDoQ8pO!l$oz7@?sDp`o92vsI zcz}XPK<%SU_yD}rWiZg#fH{T<&q=FWKJo5!CG6I7aGeJ{V`5^1o|)teh8(p3D|8H{ zRbDQa|K0{*O%Y13Z_4g%@d-umuath3L;JbmIaI#Ghx)w)#!(}uhh7E`^|z$HaK>;) zPrrK>dv5q8Z?%I-G@^T?rzMF_BUZh2w|M_!l9>@}ynRinRkG?pXW*<#7RhkjV}Xq0 zMz-xZV9&n(HH%A0w)fxukzG0aq0LA~0lqA7J1l6Mw;KIMW5GR@N&ji@#?B_3GkML7 zk6C-ued}y_=!Q9A_cqnMv|UxF8Pl;!7TyR7FdWppk;pxZ7J zfGscs&ykaa2_(8lTxdhR)2DuNbVqbdqH#w08(;r5D=4nCYd5diy*pQIRrJbExYxh>9eeDF zXKnk=U6xx=>}_S|WiMy&N#^7Hkein;x?Z*MkwF_C>bFGnx};<~`|$@hq_kz_UiSiH*Cx9 z19n6D#;5Q6*p?2M@X)Iyo`sa3eJF;J}dd#7z&UGXdcwmx_xASM z-P@O~?fz}amsa7FWQ`(>A5*pvweqc)0kFOm3t%xj*kK#*nNYnAiOA3GtLK9COdUp z#)CrML}8T*hfbY$a0?XE+w~su3HO4I5cmSL4{ACts%&r`{utV;@5;xdORzPd?U3F9 z;pOm~!Zvh)|N6xdQNCM=Hu@w3k$ED@DtP(C8=yxMpN$+l$XVX>p6=*7M+obv|lxeTN;X^?MFmt?(s9G&M2OYpuZg59QR#uG-=Yp$%8g+sx#M+8krs z_U#u>E_2>Juf7mfB;XocKFamHgO5LJPiegF+`3`sK78Bm-@GWE-e7GHA9z?sCfA>O z;dMJGI|JKhMmoRagka1?Y1m@GhXr*Ub~c>8IC_WYIJ1Joz)aL+HTC=K)H5&HsQBZD zKmU=nHr=&7hfmlGuYJX~?Ad3vTen$JZh_srbiwZ4y5+lAvqY1-4ji?L+O4uHE1Z5N zN5@1{Xs+w*U3L0SS=t7z>83k0suAel^ckA+3z+iZ{{u}Td$8ZBj|IcH#5CJ1yD3ff zFAI9JQ)71L@;U2iX|h@I4xHSde(6oC5U#f99^vqJ>^2rItE9}sR$jZsI2MV8UluXZY2w7| z%S+2G8HZQsS-67ZKwgIGB1{U7ld1>#?Th@;@isISvB|l48yFl8_VvV+k5yJyuI#UL z+p=}5&k6jeKmRjJ%q+GSU;h>B5KaE%&;B=SZ+RfwEQAA&NG{;u!rAl>AGX+l@Eyl< z<{WUEgJ(KiHQsacgh`(CMU`3EnuHi{(wL8pk2-O>B5?C#HfQDJ^&R`&2VJN3kK zwzYnzJ$iWG9fS5AecYaS`UUl`&(3}Pk)I>FcmDya-?`JODyzhIR;;75+xZ4Z?o`XZ z-nwnKFXH#~a9;9^RZ8!A?Hk{g+?uqvfAAkY6tjo#)o}VzQ<51x^CRnITlb1)?%up= zgTq6Tk6SHSI?9J{{m?!qI^UyaixY1+e)?I<$;y-6ek0&B_KEP71rruOaB|Pe%5c2~ zo&_!W+>k(wyg}CizrcHFoRGiW(jOkRv{_eompcd%ZRSqHU2AS?@=5RdUHhy`xbxOe z{=)7EZphW-+#>t>w}023dg^(XE6w-sIAJlj#iBiD$Gd#fJ#<~#!0zCrpg6?Cl1pHB2(YY_Uif)i`=&Q`3 z;S?y1P36m$2FtN=^iC=%u&mNzuVZO?LHdd^Ngg8;mN?dh`9;0h&9@o}b7X-=unT0D z$aduU8b_Kfi1#i?-Nlcp_9hRt|+S+WV~7xpRbr)+&VPxP|s z3wo#eh>crOyUkvB{VTTb@NtidfnG2nTA-b-bHmJ(lM7g)@51+;Rp}q)c{D)ymC{lt zFPGV#Pwh~d{GOj4x3;D`zKc3RV}QeCYx8{@lzzVV``l%l~iqVhrBZ%{oMBLJ7#-!@3jx#{tG+*@y}h}7Dx^+elv-ph#ikabEG09~q6F8byLarzKmL(5Ha1y8N~Rru;Y;@N z8{e=M@toUN&RTw9mgN`Zt9;=h`W$-AN<_T8Pvb3HTzYbBa*oC|Ma)HVM6Wr?((&PL z0B^~8#g>?yA^c2`&O7hN?%_zoVl8cpk56`zJBberA#%!>&-CFM6v>Vqhiw6x_Mplj`2}M5t_&vLE^Rnv|?kJ@3 zLJlyt=$tqtq^6`h&AYC{1`gpbIOnoeywab+7o<}WIf&J#9(iaX5bX0=a0IMSAcBrpD$KbTVMKA)hlcGc7$MRX8@Kwn+ww-y}#5rOA%+ zjW41>=G0kO&&|&hPv31hnOVN$-F0pHr8jAm!SQ;0Oz@Em!^v>d_ImOEWg8zFk`2~l znfduvQ&lNjq|I$tbYrs79?D{F(rH}n1s0Tz?v729CEcZd=N^;EY8}#9J03P!Pj{yu z(U~J#4%%&NZV=70Gahj2pT79qj%ee+sb_58k>gfcQf38t1sWzk8(@#EbufO`TWu_;4 z#7pJ?(Ak2%27J{EWU1P?aSxtKKbY%bEPP%^>B7tpDL_5Jk}=_j{%y#XP+s7zbY=tB zD33Du8gNeEJs)KR+bigfp$yML66&QbdZA}Y(s)t)b9v(FLw!oI-rkVU%kc-gPagm7 zf9uZ!pAYHbC!tQiyb{oc`lR=5JkW3E#Tjqpq}M0dfuka}FY>8CeO>nP4nIS$eGN-G z4E>1GSP{iGIXS^n6Jo6(E8Vg)k}Www@>AIY?c!`fL zvKlWPYDGHRgtfM}THipYr6$E#k$5skm=KWyM=&4&j`B%)%&T%?hdGStvtH;Z*dhST z^=iGWT=?vouo)BGN zS#&~Je2r(+(o!U2YGU%iyYGGUS9*8*U&%1?LZ;};H*apfcK!NG&G+uU*3;RwYk6@Y ziJh!?IfGOnE{Me7d*}lv7?5tAm_R&0K7DU>j3&~v@`j=~B_`Gk+B^#to_A@1K;gJ#uEhaX}MrPvd!z+($ zd~(h`ewG&rkt(BHa=3q53?K%jEGXd4$Mgwdc)NuAC_`bQDhL#Z1xzH+vlCum65I%V z!dRv#nC->_DTL%qKtCvtx?s!@ab7`*hwg(g*Q6Nq4Gh`kPd>8Qp?-%i`CO3d4I`o| zU_ku<+C7u_K}EU`LuRs^G#HU6%fN#d;V>8{j5a1FXggkcC^;U2Ma+b{xCq}wT6SE} z_cT4n=wQ(aOOx|+*m=9*ZOFoDUVg6U9hYI5CPghfJI5!-8DAe0wKY~k_>`3FC%^P% z8=RQ52aR{F1rNxHF&Ds`%~)1iWCvyJr)1^Znv9AYS1#H8%jbOD19Jz)dO1ueH+VoY z5}f<_^eb<=Qan63V7WQjrV+CbfBu$Dt88}508@4^)YfjbEmDf4k?G!wd)b~N%*~x^ zQZkBsv5#}uIMXaWBi(9hw^(sy4Xb7LK*sgWOJ@ZmDF85iF=>VXTyXsMF$szVJ2Ej~ zoL2lfc%k;M3SX2L2M1t`LFjk}uIPf1I}=yWyq}B>l~9lF0|(0Fp3@F*?kg=t5Wbl+ zLs)R-d~!z=#!nw^h|F^a9_7opjzi!EFG0$ryq919sy+7Hm+Vnzuid=znGBZ^8BAs+ zMa5QHyWNJSW~}+aJ&Rcj!j3SFLjyfN`5&cnSm0wJl!?VGDPX0Qn`G?N>Rm0|O!u*F zYPe|+@87h=nMo@xE|TC$ut#l=Y-Dg)imCFYCE1aEdu`9YeO4?ZHdRKy0AVwP)#~ZA z$@wK2@s0NIc7uKQw}0DeckhUxxWNc?m^5-8r>~UDqNsygzn278XlPk!2GyRq$tlN6l;eV88D%p3=)VhU#vd3f zzfYhFKPHCzl&?$5e1YYblzN%$5{9l(v`8QLEQ|B;u8^b5z*CsO=5j^GTgMwkK}w2n zitn7qPaZ#0QuRCTkrD++pD3V?qe_E9NiRu9-Go{Kk35vLaLRWTxN?C(6_kBfvc?j8ure1iahxb{hPhXIvZ1n}FnaI?*l=dzg>v?EXLp`GZLF*sr^PMxC*`8ZcYw5Y+ zEOQL6f|5%2{>3Th&bfDNzU!KdF!3)LVJrgr`G%@PEJS=|!8k*Wvx779%Pc-ALq=+v z6;y2UN&Cr>A&a*~>uES=t7EMe$IdzBomz;ohyB^7q?=wkw;jKQcyi(ekL)TlAZy(t;&;=xhzHa03FPGv@=RoY5ouEr|J zWM91b|8n=AL3SNko+o%hYpu0J1P}qOH3)zJNl=r?)Xc1`s;n;Ax~98lcCBp2X3TbN zw|lLptwpJjEKZP`tRtXPWGVw-P&f1lZ*mQ%9v+mm z@St6g&MXMlgJ0f-rr`$%C$Kwjs;?NZEv(pVM^8U*ang+pNJH*y(L&~nndwPu zV_O&k&vHQF$(-DL%goI7y3n~D?QJ$WKIyRM78eQ*QaZ1?4tV(Rwok5k{oCKQq_i|^ zYJO}fiOJU1+-Mg*eAfqZaDG{>vUArFE8n!$#&nH=QC0#r+`nNy_@h{@Ewi*WP3?=m0f}fpBQq_0-a;ZQQ)wj+{JWi8(oT_tsTkIXgYn??K1?hY#pG zTX+bSd>FEgm7A=(dW+kyckkcxi~)^JP4?jK9qa9CQMtj^Bm{oLBiK7R*(b(fgT}_j z+18y0t!npvIns^RRD0j?f(~N^B|IAw9p`(l7ptE1^lZ_Bbb;(n_M#sj9kRBTdJigM zA3&dEv4ZB{8IEbkUxF_M}ym7dcGyHF_7Cg?{~6)er5uj1jE|L?D_Ioep-^ zTW3>^Y=>A&l+BTnS85S4i7pG7R00kLdWSvu+1%V@ZSCzgHZmr8PsSOQqw?9$oV|Zl zJT>_tFvM5LR9zPZAyfP&H(ZWDgQ80=au1O7ACGX2b_4-3Ir{2QWTXe<^o%#jpQW6j z$SCnsZf=Hk_YBz7RFKZ`?>nO65-g51+ma2zq+@gv)CDf{S z?ze+SPWftvzx|K@hZW_eT0&x+UH<%%^Zw4=JH!VucBner$_i4gt8diWyT@&4e8t9A zk}RWSn{8vSW6?!ZljusHvdufKO*ZSNZ~VEXCbJSh$*MM0+O@0KZE#@7SS{W+G-V~F zmG+NzVduk?v0tJ4FP7c*r^5fhdYyJ+!I(wBlml;LsFBTp$vI$S#s9`l+wJI6&qKC$@zeLLz2Sk=EPuo& zl2fvL<#k6}qfc~2uVago#RPa6WDW+AiDj(1{kV1CQTII_-MeXz?p~9?QXj-7+IRou z|J^74{QM_BkYCbc+qUhn$Leb)tyffUbNPbI@9yrheA($a#U&m*9`0(h`kH&b5}Lhl zkY!H(bVIzX_)U(RW?gM0dOJwco0Q?nYA!AS-=S)myc8f9r&`Bo_y660g7 z=GHa&S@PS|*1adr*jK*sTgHm%=7vXBBm8$fZt(#wvUbrAq}~teR~=NiRwoBEf&EB8 zJ5v0!bH24-0yl_Wiao@6yFsl~xlLK1^zuh}v2#%OP+oqO+X zE0a!Sg3jnbr*A3OTwi1D!V%e5;1GC&m9hl|#TFhLV@2f^HaRio+g~uqUM!dxj2YXqw!QxZ1EIX$_ywWIpdcx5 zbOyTLGZ;v&1gn-8+^?m_mxZh_>B~j7))2foWmUHSiPM%K7{2)EZJ(HiuELI7&*&5@ znj;uY{EWeAY(pO;)St&5gxdwl8R&Q2p5Y#L8}*N~B65CO{hBJCZHE<<+Xqm-7vUiEoVOOxYhxWju z!OFJa17g7?ezV*BdY`^wf(r#A6T_m^HU`}Vx5s4>%&G(5o`p@`A8TbI2bUz54jq5m zjvRi%2hJYV*V~cfPg#-t-M{&d|IX?gYSqW`yF^Qr2|qY3Nl&`G5{$Hm7$*o>mnqc4 zv7q)Km)M7YiAfidE7(0`>caQ(%xQX*_Qa%R+b-3;xvJV?)i)PEe%Ef?xT5|AUgBoK zfFd};-W#8su!GOMYA?U~b?LZH*&A%j5MenPS$65;5A61hFI?Zlw`}8-k(p`vg}F90 zI3z#inhi}(`GO|4M4FZ!jgj8lf9Qmb^>2aSlvBawN*fdK_%XJ!@7$&o$?AwGSi;PWhoyKGq zwu5AaIP!*-*2r1>Odsf4nzGr69-AJPoY8X$X?bdIn))tWv`dyB+0csR$N|g zIl>kDUyrNq=GuoIC+!;;u#DV7d-ADgtx>qXB|I?^!2N#F?d;s7$L#Qxu(=t4Bbx!X zCk!tVbN>!|$$fLtxldx#O)`>2BbRtabcNhnStYY2aqqxhA#Tm2iMW&;d+qoBi5=W` z$gY0&zT`}ebZfR~jn(l>*5A=?k7S=r$Od83C%D8GCJQV4hfO~$nH$h&nCw~EKk}vE z3AUNRK1-9F%P(YtAzP8?J@^FP*U5qq#=@knJ9Y}sJ@(-GWtBHicYqPD!?n6&q~0z1co^^B2BlkdIZUp`Lw4c!T%A5xAoKRq6A>4V&Cv&6aJ|FWcn8 zC+`|5-@y;Q04vea8Ln4=&EE_T_r-<(T$RD3LVQamS}clw+u7H>zSeD5i4-p<~&q+2BgjmyUm$=Sk!Q)7#JpT(`U)K$;E7qR=^*zd5tHycE9H>Rf9(xC2i2pP^Gd;`jLoZyu*J z;zs^*;H!!*nB>P86I(V>2eNKLw!*Y{kFh4~V-~rQL3CQ*c~Eu2H6y6kaex{rQhQ6Ag%q3=dU$E{8NMC;>b8(|wNy@#9(kz6|S{0ml+ zo9l4|@Jbxkd0Tx!oNGew;wOg4R#^%OTZoEH`qS5c>ks~e>R3bkZ{G16mqxy(rY63& zsp+LR-~848asA>KUmYG8D3&;93_;2-U_^ufgS0pSa0SGLVB|XF3*kAD!Nj6S^dmfj ztl%3)a$y5o>0KBhFvx>*__`&PbAzR+M7# zi40l+gMfe|#8~by2#z`Z*U-jl0|J10%Xwb)$>^9^VB{o7O{A*z!8N1?l#T?fo@Wpm z*a(I?9;jOnJL~Ejm;=EUH1^kR5`(T^=Nfk?i{CU0MaN9NLq|{B@#kN&2^Dx%##)?| z*X~2dt+lPy`a0z3N_heo`{nt70R!M(29Q#j_doy>z^xr9O=kPMbD>9FIO`l^gh6Iz z{zXN_xM6}41YX)41e#TV-eHf#X)*esj8y^%F>)Tc>2YyKHT4QMcY4->=4u>!=P(1B z74y{3s$~or;0bUb!+C7Na!7lWog=3@#5Qi;Vf&6eA!BW$r=Vfa@emn-q`|rR`N!7T zRBJKPkO({KT*tGY3l3JcAovI#v6_4L{^Qo((`#qn_>s+zjQWb|3DNAM>lbZqV%VKD z2ImI5+pXcj18aDA$98SqWd+407M&PxTX*iavd!BqJGa2LY~N*@wr;f{mGk+h?^{b_ zjR$DQMh9(tpx0KJt*5?$FHj8N4}1qe2DI%oEyVfc2`)oGAbG7DIe_1Vxc8|JZ=a*w z4<8uff)11yyyBvE9S8a&a00D?7gvVNvvQ+K73y721+VkQc5};~ z!%|@ERWz)=kF#_+GwvcT1ui7m6rG_a)O^@Qd%NuPvP6!*=Yy%?ekT5v^AK4A1Hh^FZkBSWtsXPjA4u~ zh{jRi;}erMEr%{SInAQtf}l5e1vkOqI0IkcTKLl+{Q=Jq(4-^bcZ^!k7@>R1%OMse zp7C@sD#M+8DPrG-LgflV=a<?M# zrO{saPqKi?NIZvQ1RT`AR)xc;*F1n88l7lynFW?vxXH51HoGGf5*BUKbHd~Fg0DDD zOiJ-`nU$Q7m}1fKi54zJFx>mt=103^C<$KVg5aT2g2Kq6saYBHs*hFRk)mH_K!=2h z4ikcubvU{>=97b+wmQu!EWrevA(2*6oNrrpY_RGrWp?~Pl_kW6+rZG64UI3_=*q5mNx!Nopi{oSoLB3U^*!M=;SDH`t|8MDTQHa#f4Bc5Pzh<)i7#oQRXlQN*$ z{}VbUQ;7$!17KAHL?pV_Z+$s^L%YabRt@SVqvr^@4Eea#8exEzs4?o>)UR zD?$sLxBxGD)SVqlh}Jvo@4M^RNqg$$ulj_P58wW|HQv8rkTi0Twi3K&aF#tc3H(-W z*=5hZ`npeEdQUpy(T&e6M9wsn7|6nKUu}uZpq)Not`jmp(6`_{Xg9c49eN%ch*fRa z6h7%eu+kRK5;8R<+hNdJ>L2+8zE0UulMEuuxerlWrsbr~>b=nk>5j2U8)aa6fj*^f zQk~DqX&aYgG~%mBhen1yKX?xP*4q4=oTZh);;~fDm*A zPH@KEHdQMEni6jHlW+P8{lOLy+hwyn_v*K8d}_jRRWICjcQ#p5{X>0s3b#?VZO1Mv z+feQ}>gnya`*&{H{hK#@h2Cb}JO1p`mXwlVUwr(I)!n`-9MtIhmNneJ>j7<6&k}6U zXKzKpke-rim7A(8F)h=#n<uzoE!K$JSo9qNZ#EskR z_Kj=y`G;@X+-Se#8k1KDK&V}6GlL7HMm_Z8Gj`_1uS$x9*t>82(r#TiYvIdtwz0g- z$~RP4OkA|vyae1zii)kGqS90U1}O$3tgENfT3R3b#86U!vVDLgy6Q-<(1=)@nP0F8 z*(n6I(latVy>souTb^~`*omiX+s-|*Ew@@l)i&7;l}_7iXYlCGHEV5=(>pwD<(sPQ zz|rGkoDg44T&6a%>V0NvTIJ4qpD`cYD*dJM z8RT1-nO6D8IdPM&g$h1Z>~s~#KG_F?9lKLMU5-1girC>U+7cL$qDO}`cp!k>LG=SZ z^?gqRQR4DrUA9I=h1srMRd)2~KI`i0vC+|~;Gw_gfJX^|^_LZp?J7FkYqrtHinPZJs!pWxeEY%EK$+?*u! zXM&ZNWH_EiXTz+da+ejBmI|g&8yFa}MDbTjdW!W5j)sRfyf4NkCPc%_PKU@nWby3G zlFiMps1Nh(o_O%{&(GVzBggIc|H(hL;lWWm_u;#?annZo?eBcoWfW;~8SI&pU5ieI zmY~UH>BCvs7zBO-y<(Q1pJxU6WVHyfSHApBtB_2%aQ+kDdgt&+po^-%|9iT*Vu=+R5i%Ra<85)3<--TZQ50#l<8@ z&JTLfJEy3?2WW3!_}H#oJZ}Y(8Lxc#+ZM|pgYda$&pt~KkACp0AKU%g*W@3KTBiKi zZ3m9ozQa#gNttAf>=`nGkj@-@ct1#3!1M4Kb_}}Tb%AgNzR=b1D+f9d*k@&nd60K; z&gLe^t-Ybnnj0R9k5^<%CU{`IylRKr@bAC<3tyq%EnF?jehUc|oj9M0za(3|Wa<+g zz<1QUeh@g077sk}{A+gP^b7L2TkPYveqw!(n`}b56rXK!L^_bw+49S=Ny6kG9X$T5 zZ#xhz{7p~Ki#PghOwY%tt!as|vWJl~@~@^kCxsC!c(5m#^Niw8C=x(zpJ|cJ4WdBKB3ild`YbjtX356cpRH z{_szwPhYWXpMPvW`>TI%9nu@f(-WJww2UOY$0^v`x1xHhrKM*JFLO4?N_-I;dYb`L_?1CD1|&%rja(vi{b}() zd{U~V~rt@Oul=A4_Yx<4u2TiB{e13pWQP@h(@tJIfMr1ai|F282AHP zmb?;gy3Q0|4~wrlyL&uXo|Bg+KZaGvz2dz#tGjny_<3Mig(X&2y~_?9K4}{&H`(Pc zKDP5`-;jQrbeZe@EE;!}pmIHHh2TVX_^MWYXfHwaKyk25MwINTWrqzs5Tioo>6L&E zRSq9?Dfpqy>J-tB?*2Et0nRb2X^-1;z@u~82_5+MB>H23DqgxeIW^S>sj&Qu3_#Qg!mLCbsvyKXJu-^vDNHTB}m zykHObi@m8=qh$|7=@X&8pj~>AZ8PFCa_#9Czh*~{J?Z#c5DgI6*C1yPa(f1_-)(1`o2@ z0XWox9vT|zwX*VJ>E;8rscMsGKGS2LEIuMe%Yr3edEZ=TgCiqOYtTD>4(Zg{y7BIv zn|ATiMH`u%x020!?JM8<1IxS%--#6eJKk-WJ9LC81Z!wp9@)?6|c)qi_4T=6>Uf_ zXUIngmp-W!Z@&K9zir2lKVh3Tlv+}>cpM){bj;)(7Md{m=y6k>`%NM6 z$DPD;*hko3$WCyE3=>McT;`yJhet~e%v)p41KBmRvKJ596VE(vnbJGW%`G;)xMF*s zIPDV{*{^>>Iv7HnlOHfUGvWM>9ztGtj7&u2E4xL@&=m3}TY7;Bd+;5;7WE^$oKe)q zt%r`=aoIJbvnO*&j_9`YakFQl85U**mH-2<$T+|Z zVhc;w+udQ^-F=pmU+6Kl6@AjOa;>Da+@jR}@v$+-Gb@nE95Eny&K~leZOy)o0{%#J zY>d-G+v671LmZLV3i_HwSj%pgB7+xY-}raSlTOZmDPAKaiI*=!1k-hpuG@~#rPrfp&}G{Mf!?yiE-J=#IQp} z>#LTSmbR3Xn)QA~Mb$0U@Ed#l)^GjRZ$=vVd%eAJ#||Gpbp7_tKl|YAH~)FZfkvkPiI^lfys|I)YpPxniIR!OG4+nUf-& zcNjQc7Y_a{U}+1?7YLjH1zhKxa`mX6=NFaR$){hoZF>$|d|J9qOix>ERE+OaNYLZq zjZ3yF2dbiClRYCRxOmHM4-k_^ihb`qu&HtpASih{grMz`+Q_#nd)@QrR4KCn5iq3q zVqZZ9!U2RJCO`qBr?b*G_+6h>iZEw|I?uCWPOS^tt2S`>;Jt(*1EaK$AQx~&%jgfB zl2CUDGxCdNBo6ueD7(>#Vc+k&s5IE8l5}`e6O$e|$tf1P1Q8(${aDbB}}j0zkaNaGkf;IPqa`O)Xfcb)+RR6rw z^4!d{r{)cpgTjC&*kWP^?OMaS+7YzJS0Aa*U7qPa#^96;Pk6x+twDb)W-;L!Ek`a!@{Ulz}M>SK1U9#426qs#3hXsCQMK z@EZ&$vllA^i2Td55LvcOF2wYOGe{`Oz=4>krvA7tF zL9U1S%5B=t00J}p+lS`loX1Lz;o_?V`bh<_Z2>c=b8>Q}PoiyVxX*?kKeVN(5#P6$ zLAWv1IXp1pD=9*w5-mC@M{N||gm>^9tY`q=DpOj~Nx;j;C=7HIx9D^F%bf(>M@KQB z#U1pi^Qj&rxWx*qCDG;L!i)#6y+0{a?el<;a0$-WGvCmkUW59WLa1YDan?qLx~)f! z7^_y9@P=My5+5?Ee|X#;)HI2ng7-0s-BEx}^gC3J>=FYFGB_uvf(bG3BY5}r`F{k& zg1`@WB})f120gCpd{!Vp|2Rc_dtd^Zg*Q|Nd_WM*&-u_$eXrlAJop2ifIr{~CU_uU zfQ5lEgWoLnI|VaP5gWK)bqCc;1l-X z-W~hV_x`bi;B5?W;_U$^ zY8!e4`-=b@0T+tHMx$?8rG)*8L&Ic325DVJ=?}Suyr7S`M!(L_GecT3O;;I68WpG5p27myLRf~&@wRrI~hs!u@0{T(sKDmi=bh{t{ zU#XINPk-rk+qLhg-Me+&&c5?Qn;9MOeV*NJQ=gD}(+>?AYmNZTF!QzCyFLv%_v(y=Y@Y{ce+GW@oFs z4B5lNSzLl(PqwV=EZeeUn{D2{)A^GLkSCr|e?D>2y1TmU!*_ma4G*q)I!IXFC!>jG z)HppqFCAQJuYUV?ZSUce_CR*k8$bRl>u!8t`B~}q#NorXXYW3XONbQ?<-|sY`zj>% zIwPu`j5H1Kbz<6|Zz>`p3FnKLRd?mV^ zopRm}mF*uTm>tm!&#mk^nN0$&_5+T9Exh^oS%O;)6^IkzA2%XRzOCngh7?aX!>%?V`&a()sP% zv&HuB-z9v;*!|lNJcHOjbTG*yQF;`4#H0c*SJ#o>$R-AYcOO1#k+Cs0Ju&WeZ`pm& zPRak7S(vkyrg|$cFSmWiPy0mOrus*|O5pg3r=_=xt>*q6tEs(j<)ZgY(bN6AH?5$c zOnA#Swv$nhc@`t~-@O0ez70z!W#{BrSxKqnQj`^CNe^cxi|;4x%Do=zTgb9q$6m3* z@=8ww{qB$d!XAD8w)HmLw1#`ve2?vE`7xPU8CF=3FM3>2`$v3&C=-PjmO^ZNde&+l z+_Cz)8XwGK0Hb=-4twVpKek%gzF+>@xAl45+FBazhIqdqKhJh--RhG@<`@*vfz3*= zpVe8&D+y`)&hP%7ee;{&whNzqYLDC69iMHjkL~95Yc@JI<~oTzvhkbp^71{!J$>tb zA@J!B>4m&^-Jy=a7bJrR5-u(+$6`}+B@+{EIXu;7mXoY^bjfB{RnOq6&BbiC^rBsM z^VT){=}i@Ho>-O~xo?ji zJ(SEH@`3e%{vJF2+{<>7Rd5ZD?ChIAvDpdP$D#`+{H&;sExQlf3$K3FvL&aO=ulKz zZq++>dxn$dx<@uLI3T`_2`2H07xzf^?b>_L>T2%V#gE>x<(VmqO-i;6F>F4a>{hRjo&wpU;U7faDWv~qb6QQQZ2d&}$ZM%Q{ zvQO;756&wpu`N4yTZ#O|_>?r~87613BHjn7Mf-st0*}H;V0#T&x(*MMg@ddG&_8lj zUwR%}j%+{jC)B6ta8f&WwKdt@>z8b(r_JLbWUL_-G9Pp+x`rBj&`$@k9P}r=hfE+w zkRV^{=~usQr5iWfrO)2C^B?@e7UajoMMq2DNw%mB$-=9ztWh1<1?YHI(v$8TnOwSM zhx%lnN~Xt2mg>FGXj_R$bo~zuIoY{B=_)5L*YT1f|9@pk zzW2GacKyGbYSgbnurEXaE>?;&2<59c)poLCFfi5J)MyVM zK9C-IV2w>JHmQEX7SGHpu}wSnSoNVJzK3mgVUcuFf|W>qyz=^YEkCcw-uub-?Cj6K zZ!^fFkYyVZZ4Pv`S+nT%?(OTcpE`Zj_vT%D?C{BF?AaGz6Au^q{>H8CZFcy{Gxp50 zulS(JrB6S!4(X$LFFv~Jx)W& zNBqr{>_YqMZ~cMb-D|_6qw-hhJ#)~>(`TH%7#Jl(50fbAJNG|@D^iD7?L1&F$cAHo z`{?9k+aO<_!OrvV{laEM%dxVhX5oL?tLe!}Zh!ce2-1Op-{w}Q*8@>OSqv(p8#w3x zz=mJ)zUUv2ztrEaKACpiOvaK$_2s1M8Xp;uEF*i$s%_qL$c~BEGt<-T!*_pS4{u)f zKzay+EM7LOp?ZXaU@&AYHl^RZ4=*vdYvL`mz|V}e5P%|Z!iE3m{g*N^)7f>e+If>!sx1Sq5{=E z>J+TvR|NZtK5VP>?91P`hogs(h`zsN0N2)^jN-R z;ge6Ev;oQPw$?Tal@A`FHqtx>JfR6}4VN*(|AuXQC6m8q6&ot;*3E0y*4JkTj-Iqq z>BdJ7ZaWVn1Bl5`27_jivOU;KobCMJY4;nYFNkR}IfRTIw3W%AnT5s9ANjIZvrgS6xrc&e@4GuX<*g=Egdw0R}(m@nB##7`TZL&F|VP z-aUHI^|%1g2fJDJEb=x!@K?~kEE+<$vke70l>K;{8*6MzJUk=1?im=f4ZDum%U}C# zn;RdukI%lV`Zw6NZQE>he$p01_Y6!&Np7*#Q%r2C?%b~t!&vcK8lh1Q$+6UId<5Q%M zaxFr1KqQEC@FRo0A{Ti*!f%kiJIv!IePc@&myz!aKgjf%oRnZ2H&@x|XP>jI+(PNt z6f3RVXuEgsu|3;2+lJyiONy3FC;1p1zG91WlRlxfM)u6ZTQ_WYaM*dPS2oTs{`N1e zzo*OnBk0Dr094=m%4Qb8z<0zKMCVM}WtFJgD0&v(3jc}8HZii3v4`9i7v0231~XB} zvsqy8!t=V1yh_O~vL|2oik&?3qHW(J9hIAF{e3;Y@Bi>%zpct1q^-n@Vq@biPx70| zieb^Qc3Sp9^{##HOEG9YH8~Z?jx~SRX-RORowBmBELUZ-;0u_8cvPU<8Kg_kDX?7! zp0F{=#Sh;7rEgDIEn6W{ZDaBXJi%6n)jM`soP406zAoRJy`!~7<*~|FIvi0T+_0r) z>85S|Y))aJC8Vai%$ph+wSMWOZrLvnWor!$^tud#I>06PUAH|P$NEDzU^ft#Kz8T} zO9s~chdmv<%U0ot?5>g08Z+??<;)ZOiqyc=sD$oFDPrXbEi zOaWO(KVmDRpWrhZMgM}^e)+a6YGZQgGHrFpkqJDfC!zHw!PR zBwtn;Gl_r4j;+2w`?u~ z|1$xK*gePlxzYwt8At&QfGd{M+CE-Vg3^^*8nS zvp@T@|FH+#8yg#=UjNQ_cAkIly?^q>`A_~$Lv8J$xtZyh2=-eQar;UgxJSf+ApEsp zffe-62X>vSU=VmMF!-DRIoCB0hU&Lp(;v))!QcatdX{(HY2s;wgI9oB zQm9QVMcc?M0yP+j5I1{yz`H)+3}aCfN)8+_+m2xLtPDT~<(TE^#=c<2apWGb1_F$- zsFR|DK`sP0&M$*TPrvYG+j-=)wRUvcz~F$VvB5xWe0W!m`$cP!VM>~1Qty%CCndkg zwjVrhvr;s*cdz^YKcLamXvndp#&rjp53m3OupwYzblL%@Gb=A%0t#oHS!6+57rouI z$pAwl*6N!ao3Lr&gLlC%fRIiR;25Bc43Dxez4E#o`ET01 z6bbmQ+P>R1@7yONW0wq-XzT9mwlOK}+qbUT6*-rWZeF#vwf*QKgiGpXzzF!kCw-56 zr*Z4}eMW}V?!%{ihIpQEb^NL4eeYJBOoDRLGH{3cdTm2_rES@}&-V*wW-zO`;?uJ% zCo|g)$teg=OtMQCKCy>4zOb6xS8PyDHNocH!o5r#yM5!5wbb4f9ilj7TuRwFK7?OC z1Q56eKKjRLS$OiZo3vRLIuc#0VI`RnTHx9PbVIUi$o#Aj3Ke@sX5^JwVR@Bh<(F7icD|hDXk$wR_V0<3VKOn) zXVblpePw&l23n<3fLrCvx-qXd3T9G-GLVf^6sNvm4|km2B^flc!*Vz$2c&zJ<*3D2 zS$U~N#3u;fLBG z5joT$kusccN(p{4iN?%AB3I~os)u|s&7f!MuMR-^r2y!_h7=r;n?**qrefd2%8vT9A zTp8C)&|=jN*;rVu#XiRFlu@jg@8ZezHqHfu8DoOKue;fX`}<`yE=V895tF{c4xq1C zWj{1NX?O3{2(P-o92mpE1--ek3VrD}76OwF=4B9%O){}-$z=fthQ9}w^zAgPXK6HG zd0FCbVB&CFg%h>UXP>GL-hl?43{{`QuXaGgJnVr*%5$8p$uZ%O13bBW&_RtD*#S3# zcLvqe8-gu>hcbW#8%mD2;Dxu~Jr4K_hZ333yU222;2awzz=RBY(In4s&1K4ZfASpo z*Pk0wfX_>u>Ki!FSM=+|)U362bX#8!d%hx9f--40{ELl1z;$kV(h}nn?ew!>w&%Y3 zk8DiN_OE{U7k2ORIhz;V!81|fne{q0g2IB+T(LoSHRrq^;u4fz$IaRw3p74RC@#!i1=!NHym4*-RP$J)VTPx{~@d-GE7$Uv{~ zEni}c;O(Rj*t6O*O}63wLq}}O&I6X7Tj(ooXoPskI8P3M{n8Vnmax@rMa=e+sT084bd(GVMFq}=m_M|maUsbOC!FDYi@SM zYT6epdBbU|KKQh77GfX2^E3P87k_C*apU&YXSdqn-T9WGW(>%u=p7igEnBwQtFOJ{ zlOG;FsP)MoA(62blbGQ_Rwj!u8IHl<0oj+eH8nl}k34_L{_O?K7sL^5gy^>%0Pjs+ssq$O)9z5uKs($hLdAo7_n$_0U8d@>Q zC;G6RRBjyj14BVNKOR7KKX^xuT?t^*zf$oKeL>oVry@2wX~#k z-&6Gcci*y+sTE5p*lLl<)c~J75-&KganQ=>o1rfG!`+fSv(vH{R&;O1eY2{~+uSc@;Ivx)z~QH!v&_6g z*%OijYAbgB75Q!VZeFoFSHAF7-~{s-KFBOAvm?i!_f;jIfBK$1x^>O>4JMleG}k3r zN4X+wr~jMRE_vI}y!2(uQXOaCeZy+*+_1vp5yhy8l7a*3*k06wqOI}Gd8;tZgb1wvJsMfP>+@E1qFq+b^A8U&ds;z$Y{4A zqSa0Yryol<4Gj%@_L6lQ7D0qunqxpia&vZJ-nYJC!VvEwOPNqd_5x%E1Bme8-1Ln2 zaKtDI+_~nCx89#t+nof%A0rIbDKi- z2fom@t+l>Jblv5$ALX(t-ik>`^3>9)8M(T?EV><$ zJ+vy?PP7c^tM=B%)?8QP6UfmoWDH=k@1*p5>DIlzl?${U*!Qb;>9ezT`_d;CCf*}f z!eo)Ov?SZTW2^1hzS%ZP#%E@yTYMY?j`*W2=3teVI9h_qZD(~$VE2nIoMsoqx8su8 zJ<{EyZs$O=A{&d9d}Tmt*RGvDkT1}Dptw_TBkz1GhUPkNKYEi`r28@|-!&Jqkp74M zbV|J(JmW1wPQnMO6Tc7H={zF2$6ykJRSdc^8I!~1jtZtcYm0n{#n@o;u+6kqz)n^iH|rm&}aAVUbW_y zdfU2dpG}RA*jqpO8>bhx3}RwiS!K1ajwj;@1D7rJ4R%lTU9@S79g*D4lYPGTz!BLz z$<`y;Iji<1Waitc=U%fN`wseGdYpU$R%9cuko)jgduy{#5U<{O&{w{fZQSfKpGi^l zA9g#76kN8bU9=e-vt=CgGc5b8_Q73~3uv1+Z}pX^V2-RrY}r(E@0NXb?i1^h&g|>! zvFy@H>9c*dd)FSTtlnzb**U&)(fdC<3dhdtVIpP4#wyXc6uM}E6~pTjJ7Z)=FfkCD z3*VFs3FzJgCLYOGU=s3(?6*gajdr`H*$zMbn(X8=R(t=ZJ#K5VW5-UZoO#LHAv<*F znCyXUTL~o#%e2MkY_Y;B;W4e)MtXZ?ABR{HDZ=#p6mm;EB=5qe@V!;{`0%i?M?H4d z)k~M{VQro5+ke2~1pj(W5#E~~AF#RcJ`0&0wxx+)pNJHfR%)>+`H}^(Dt^{RI-6{2 zq+hZo+Ho+aYeKvDgmm)ZvU}4UKeO}GUUq`)yQ(eQEiENogo^Bx{VTc4ws-OAIaXA$ z$+qp;1&R!#{#JSoOPT3)1)4w#aj6067Bz zxc@7_pmnaJ@3F1;AQ9k=^#MHeCGjdIRif(_L?7rVc(#1ULHqU}{&U%X3HDgBhD@q^ zC71W?*)2L+v|7oY+IzQcj@9|CE%wR#Z@Itp+?T$ozL>BHT|aX28QU*km24G*!vj9q zgjfdl2U{QI=H$o^iIjgbCs>Gcux*XnBqA;-D6y2}44ax5wWgZ;R)7DN@IU0TI4(KO zDyufj{0Q`SURjkr`P7RR7aL)Zn;Ts=VWT1|h{Mc_-zvqsTco!+*iIl)IzCPPP*7Is zb_Raja-FmG8(A5|caY+LcR**+C>m8A zEuZt)lSl1qU-^=i7UcM1M($&`I$nSi!K17AOwirB4@NzKto9ncPM&q&Tpy32@;+^M z*s$q>ShGs=@?DqcgS_Lq+kIx? zybb*3`L%1*%Ms`ft_65>MXmz4&KdS*P>!CXsXF(2{#elN;75Q5zG(^11kV8{@1Xs3 z#~&l^Bi}}EGW<#*-w4Zkm?GJz{iyRIW=p8(oK(L z(__oUsGhX+4A0O@EGmfqgNLAPPCF{Y7e}ZZ_qlsIJIx>DgG%Zooi0 zHoen@XnlNa++z*#vf-Q$!lHb8+YHI2)zHYr5Q}{Kd*Az;2VVGZ=)s=tVSn~}zZdcE z{s$avuj%MWy?5{4AH4nU8-I4^`qifwXXn$xBO{QfF4S4+6HxlP@uyA}b-+d(5RuG5 zU56n9qZclArq?+_GjOu?FvP}vmiCH&=gd6qKtz7rkws(zpm`B|i@ z5L8s>%*S9F4#}yauBmJGVPVuUbpIl zN6-@1P+w=)KmEWWq{xpQKW#^!eA>#l?zTn2%}jjX2bfh}I25Xvfkgyb;OGc2+9jiH z-7(@oFc4q>#)QN~PoYVA7?c1rdXl72F<=-tr+Z*}aDbBJn|3jP7QxCkwVO2a>nZCZ zWXR#*#6~Araz>VwY^<=&GJdCJjP!MP8tIL;?>%TUD);PrZ`fE@n-S_}mh1G`up8?^ z>Pm1Q1Z7b`A|~%2`i{QwK?FJY>}knt@DTmZFDf(kiX#2Yei^ydJNMeP8&~Yw=jW_h zc)WN0vZcf)SdNT^b05BE*Up`_;-XS3-n7~39zC?Nz7EG*ik#X-)jK4||KZ&m)+i%7 zoPj}yDF{9g=ns??{{kZbWI1g>6I|78XaQP=HvAl(&^bpC4ApOlT2BSEzoz8%F88q< z9S1z3Yi=Ou#8)S)PUlC#1Kq)+?(hK*?*bd|dbz=MrvUxtO+BpZWsE8;s`Yn0mZL=6AQ-TLp#hP$qkz0V z$p!k(14Q}_eX)`}C$G>>J^xjkQ$LaNbL)=Xwqx&pPv64CkE!W->y+bET3%ttPCsWG zckY&R8)u!OpNIEqt)Z^T`g;4N`~uosnOn52TQ`Z;Hu>IRlapiC@Tk^4`RG%te^6`F zlhfW;ObBs9M7Sd0H6=sOjd>~EhWZxusaauZnPdxi32+F0F~0Z)_pVgcP)HKw1%}zO z9NIy5%oqS*@SMS@7&&Jy7my_?i!?qid-&74q*0oYb48g+sTt~X^@*+reJ{mF0#FeM;MO&T3z$1C>QN{#m0Do>_m_4F$?vtJe)yy%+GC+OPZE zqbv^Oiqp0}0Zj$+4>%fb=kyZ3XG>&mXGK+EEOIVFWDQcY>!J! zb%ShL4ip1<3ll>&Kh~qZTJ<0SGufBae;7oh1`G)axBB{a>*^Y?zL6=bZ5{WODgW(} zAT(_$2(wh3fCKe}=r2^xasUq*8oEd1C@!jhW7)DpKnbtV(u8yuX&STh3PdaMqTy*9 z?QXQ?`4P!ER^`r000euGu8_(&HqpZ6v@?5pYJAuy#Vkl}J6{P01YOvUV4dDrWwPEk z^gXM^*(;ua1Kdv^a9zj}-K)ohGw*Mer6QdMa2EU=u=PBKDYBOp``iQ1OX>$b>?v>u zx?63ix6RW#lVye#eoQPtFS$O_K^?;r6L$0Z9Xb2+J}|Vv3Wv27S&O0%=*;U`1s-TF zFl5PGfYUcMGix(5INuDml6p@1489aROp?GLMj!e+f|~=~<-F_dgXVORZ@mMa+@?_v z@(gkmS_N*NfnQwjtNp;^vOv#*qjjfD|E=*3bglZ-ZuB7S1*(xp-1%$X zscZ1+9c1+U^rWvgC@iV8ul?S?w7tilvx{GRV!!&E|I@nK>V04)HY(Dxaxw#25v;1r zG7F0A)vtZWN-CH>5su23JBm2I*wzyAA{DBfnJJcA{T z4{uvz&3(}|+YWSCcgJH(PEN6+4OMb73S@7HA7mThut9Frz5WRXDFZz6iB!MSCqV!J znXu;EBY$)s+9D_cKDi$q9c#&{>2A+3I7Z-w{y;v0TG!Daj6>&0WmaMYeGuT+b&8&j zONjUV+mUBTQ{Dm&@ZrC8o{*YmPrdjxtEk#(w{KpxFFt--_F%BO3|eJ&GyB%E!V!7I zM3t&-d+o)qe#a71Gwt@ZFRZh%)>h`{ta{51OH4`im2Swj>aD`}z5`ZNzELnm+q8J$ z-rYNP{lW*fvM_5$k3S{5#_ZnJi{4JQvVcdY=VvXisK|11^L&+7?W0G&GLF@_4fVBl z;j<5guLX;bO;`(x1w0L1acW3=6CI>SH59wUG3K0 z)M$J6AGL4%?w?rYw%xu3PND3&@WsU=8fK#&Y( z5)5F40(9ZM9iS$VA=p3gnbQm_+sAF3m5ahvq~v;RB74pTL3`+qXD9}G;VshRL6b}t z!S4Vbwt`AcOA$}bT8uo46xkZ=8A-rlNwmSLoe=a5?@JdU*ARNx2hO|HCLnR})sfB{ z$O7sKS>Zg;2Mkmo5wp^gY}dBUwtMF`%g#;ct(IE2%XS=o+D6A1jQDGNbom`Sy*tNVd}_Po5rZ}%mYbboGvm{C>tUk}j!fF% z;IQMOt+m}J{U)bm+v|V)uWh4zp5(+dpD4(_?IR}eq-POUBim51o89S)RgZNx@r3kb;qiG^5!pO-`})W;hVj3*?YRQ zaLx5NGQe3R`iP{{=ib(Nr z1Orggcdo%R{hkfWo{mN)s4d6^_Z?ggsRjfY-|9npnfBAS)&(F9Z3@7AlFd>&foG zYJUbUo_p<^9ta*0e#p9k-CI*vXLYsrC2NMI_bL)Kc&|(D_cxB>QTzs4zJG{>}R+Nb+LnUKlRd%u!7Uipt^7L+o zXObjdgbZQAg8P!f3A9UU;{JgF>z6OjWCEdAe8E6?V5@D|P~rN2*RI{tn`J&pt+24b z+tSWuXFDI1hQHE;kmx@|1F1nA_cbi>3ma#D*6v{<`>6 zwm^{kpMi$J-=-bFjXVb~_!t=Z_QUJKmc?FR&?WHGfDJrz-P2a)Uap=++JbLr z9zG}4yp)H3NcT*Zr^razFru%<`upOWDSP4Tzim&RdQLvUlr_~ol)cqveVvc(;q7a7 z_2Q=%DS!DZum6r!S5?`qJ9n+Lw9*d9zI=H1mdUZUZ+_>WT25BBz4?p3wU*9q+qP}H zEl6k7>i*43pZa7Rw~eFY*l*Tlz@B}Fta?+GZ^bb!`G>t2Df=SDD#q%Hf#P2A{PWm0& zpA_YsceHi*)(vbU2#?3a#X{dP>$H#G_>q;BZ?NheJ6&coNpx^*#?rG3EmiRK_YYZHW3y*h zOi9rF=w*vpp0dzIwy+wt)?VocvKA~$eyJ}%zi`oR+^dsbd&;)S?q@O-+vMTXi@+pT z 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

    REiv(7Au>L&NbDba36xL;4;3&tK?Q&@P^y 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 z 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 LYW178$dFsJ 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

    ynkdItD-6bd4oh8v$t+KS(o_+c;JO0Q4 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%0A@`@0)k- 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 z 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%0Dh7Fs3a}n{mtUzQ#S+S=@#1A(=;i^$jfe$jY*w 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 ttPL-v`LvDp$ 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 z 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�vcM-4gVO z2~%7u!u>^d|Kg|uY#%U_mkBBC^t>$H!a}WR9O<~C47CIN0U!FA_>z7?@CU2$p-)*^ zeYdvxg;gsR{d1%{@5rB8o*S_F8S%#8xZ%goIYjETOQJv*<=;*%At2@Z~7niy%a z&oBPMn!C@5Uq+?H=$8q0(??yE5j{dS(Y`eXj>^qW zl#a-?J$ni)BS~};A5Bj!=v{)X#Uxr{ZbfHp?bh%8<$wCip+Ei8KTZ5c8*JzL);GRY zBo6&rVq!{sZef`Z*ra3@ipewOd?$Kfh2zHn5S_DYLbiCw5wx~Ui^aSmID@zZS14YP z?>JL~IctE1vRa8?hS}_?DGI`bkgSwg1RT$_8 za|A*MqZsmp|H(&tAvg(0qyKbES=0+-_>3d|fKktbKyZT)s6E0{c)@C?S!-)mP{kQD z?f3L3-m2?1dnX241>XGf135bVG7yn1|CEnliGbG?HxKl|7*ua+w1=Phrfu1G)UI5= zVsF3lQyWy-sYx(tP~7f>1G*Z4!|V>4KLb0Vd^Z?+kK@S}NNkUiBZq49zGF5ox9R;~ zziNX619tD;J^SR7j|ESRb@lYxD?k1_>%MbKf#Q%|K6lo>{NODc?{BwlGM0~@dCU$R zIc~W{#Xbl`P)Z%bnj1<67TC&|ErS_MWZRb9>@45Xwz#_5XJt;0j@y=PyX}SV{IS*T z*lQOqUbG+m)qk{`=RXxvq?GAtQ@Q!+8TQcQ&)GvSeAg1>!1XlWwC#1(_UsEUTFvHd zR$ftQRhze3hk{tPFD#JZPEAjfL$vChOYruJJ~x|M?8ePoHa#}w3do&r(GH~)pPFrj zWmUcvWU+$Q2?f9def>5&Ii>VtmL@q+1D$W8PB1k0K!s=eb4BF|0Ws=9 zErF*?42Of^dN#L1~-t~y`!`nf2$uBrmF89udf=Lem(n|-vwRL94l7?DH&&n9m zhdS4UH|IX;ah%Z6p|U~&4nqjOBmAvQQJ&=t%Be{Pv?-Slb~HFTz~kq?>!X5Hv+CD# z;P*}$*?#b!tl%X{&Ld8wH%b4I25OIq7y9~#{Y>x~*_HVveHNA_BkPtXT&Jd|8r!mQ zJ}s-G7_=rY6B-DXrv=-xoLg_G8su$J8|ldR!B{mM{mte0RbG4+z6VFft*2)|z8711 zExQb`x|+Ny#_>_NWvgx9z2AzGcWc8)O9>f)gKf(=&on zE~m5Jv5h{#X=-ZNa`Vc?FKl$EPd-Dul~!%CtvmKuwSxNXd-q#mQK?-x|An1>_YHgC zfirgC@F}}==?i<~C*Sv-T^hFR@+~PZfBuo^J8wBz*?P9qwhGp~;!@+>vn4$jq1^}Q z=7YTo^5r?Zb^V5dgd#upy+*nxU%mjV*40qE*VbmAzVmBaQGGsh zR(fRHt^+=>#@VA?ElrjnN0?yCeMsRPq_Zu4=e^sm+nzXez#cxi%knd0?UN5ax6Y1k zo01QJv(FXpomLw*AbfOnc6m@uhud#oL54&JzPJ-j0*?e;01rZ|B*`?Z?7UN4PxG=8 zEI~ZGNbkAHJ|)v}mgYJ`jNt8z7hi@mF@x+;rs7^J%u2D%)kQvYnH><&Cq8hFtgSA& zE}3Qpk}9X|PhWeET0&c0_Kz5OecpZg0u0dIQG6>ttdcphvu`jO{+0*-^M>Wf597q`87=Kit=P@!xt z*KLt<(c?}|$-56axtvSyNUu?5@MpmX@P&G!`V^h#uy{%0A@b@6_xKokNy&Pzyk3Uh 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

=N#OXJNp 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 literal 0 HcmV?d00001 diff --git a/Documentation/platforms/arm/imxrt/boards/imxrt1060-evk/index.rst b/Documentation/platforms/arm/imxrt/boards/imxrt1060-evk/index.rst index 0d7e7d3eef5..8ee9eeea33c 100644 --- a/Documentation/platforms/arm/imxrt/boards/imxrt1060-evk/index.rst +++ b/Documentation/platforms/arm/imxrt/boards/imxrt1060-evk/index.rst @@ -3,7 +3,13 @@ i.MX RT1060 EVK =============== `i.MX RT1060 EVK `_ -is an evaluation kit by NXP company. This kit uses the i.MX RT1060 crossover MCU with Arm Cortex M7 core. +is an evaluation kit by NXP company. This kit uses the i.MX RT1060 crossover MCU with ARM Cortex M7 core. + +.. figure:: imxrt1060-evk-front.jpg + :align: center + :width: 50% + + i.MX RT1060 EVK Features ======== @@ -37,13 +43,17 @@ Serial Console Virtual console port provided by OpenSDA: -- UART1_TXD GPIO_AD_B0_12 LPUART1_TX -- UART1_RXD GPIO_AD_B0_13 LPUART1_RX +========= ============= ========== +UART1_TXD GPIO_AD_B0_12 LPUART1_TX +UART1_RXD GPIO_AD_B0_13 LPUART1_RX +========= ============= ========== Arduino RS-232 Shield: -- J22 D0 UART_RX/D0 GPIO_AD_B1_07 LPUART3_RX -- J22 D1 UART_TX/D1 GPIO_AD_B1_06 LPUART3_TX +=== == ======= ============= ========== +J22 D0 UART_RX GPIO_AD_B1_07 LPUART3_RX +J22 D1 UART_TX GPIO_AD_B1_06 LPUART3_TX +=== == ======= ============= ========== LEDs and buttons ================ @@ -54,13 +64,14 @@ LEDs There are four LED status indicators located on the EVK Board. The functions of these LEDs include: -- Main Power Supply(D3) - - Green: DC 5V main supply is normal. - - Red: J2 input voltage is over 5.6V. - - Off: The board is not powered. -- Reset RED LED(D21) -- OpenSDA LED(D20) -- USER LED(D18) +=== ============ +Pin Description +=== ============ +D3 Power Supply +D18 User LED +D20 OpenSDA +D21 Reset LED +=== ============ Only a single LED, D18, is under software control. It connects to GPIO_AD_B0_09 which is shared with JTAG_TDI and ENET_RST @@ -92,11 +103,11 @@ Buttons There are five user interface switches on the MIMXRT1050 EVK Board: -- SW1: Power Switch (slide switch fir power from J2) -- SW2: ON/OFF Button -- SW3: Power-on Reset button state forces to reset the system power except SNVS domain -- SW9: Reset button -- SW8: User button GPIO5-00 + - SW1: Power Switch (slide switch fir power from J2) + - SW2: ON/OFF Button + - SW3: Power-on Reset button state forces to reset the system power except SNVS domain + - SW9: Reset button + - SW8: User button GPIO5-00 Only the user button is available to the software. It is sensed on the WAKEUP pin which will be pulled low when the button is pressed. @@ -146,91 +157,8 @@ knsh This is identical to the nsh configuration below except that NuttX is built as a protected mode, monolithic module and the user applications -are built separately. It is recommends to use a special make command; -not just 'make' but make with the following two arguments: - -.. code-block:: console - - $ make pass1 pass2 - -In the normal case (just 'make'), make will attempt to build both user- -and kernel-mode blobs more or less interleaved. This actual works! -However, for me it is very confusing so I prefer the above make command: -Make the user-space binaries first (pass1), then make the kernel-space -binaries (pass2) - -NOTES: - -At the end of the build, there will be several files in the top-level -NuttX build directory: - -PASS1: - - nuttx_user.elf - The pass1 user-space ELF file - - nuttx_user.hex - The pass1 Intel HEX format file (selected in defconfig) - - User.map - Symbols in the user-space ELF file - -PASS2: - - nuttx - The pass2 kernel-space ELF file - - nuttx.hex - The pass2 Intel HEX file (selected in defconfig) - - System.map - Symbols in the kernel-space ELF file - -The J-Link programmer will except files in .hex, .mot, .srec, and .bin -formats. - -Combining .hex files. If you plan to use the .hex files with your -debugger or FLASH utility, then you may need to combine the two hex -files into a single .hex file. Here is how you can do that. - -The 'tail' of the nuttx.hex file should look something like this -(with my comments added beginning with #): - -.. code-block:: console:: - - $ tail nuttx.hex - #xx xxxx 00 data records - ... - :10 C93C 00 000000000040184000C2010000000000 90 - :10 C94C 00 2400080000801B4000C01B4000001C40 5D - :10 C95C 00 00401C4000000C4050BF0060FF000100 74 - #xx xxxx 05 Start Linear Address Record - :04 0000 05 6000 02C1 D4 - #xx xxxx 01 End Of File record - :00 0000 01 FF - -Use an editor such as vi to remove the 05 and 01 records. - -The 'head' of the nuttx_user.hex file should look something like -this (again with my comments added beginning with #): - -.. code-block:: console:: - - $ head nuttx_user.hex - #xx xxxx 04 Extended Linear Address Record - :02 0000 04 6020 7A - #xx xxxx 00 data records - :10 0000 00 8905206030002060F2622060FC622060 80 - :10 0010 00 0000242008002420080024205C012420 63 - :10 0020 00 140024203D0020603100206071052060 14 - ... - -Nothing needs to be done here. The nuttx_user.hex file should -be fine. - -Combine the edited nuttx.hex and un-edited nuttx_user.hex -file to produce a single combined hex file: - -.. code-block:: console:: - - $ cat nuttx.hex nuttx_user.hex >combined.hex - -Then use the combined.hex file with the to write the FLASH image. -If you do this a lot, you will probably want to invest a little time -to develop a tool to automate these steps. - -STATUS: This configuration was added on 8 June 2018 primarily to assure -that all of the components are in place to support the PROTECTED mode -build. This configuration, however, has not been verified as of this -writing. +are built separately. For further information about compiling and +running this configuration please refer to imxrt1064-evk documentation. netnsh ------ diff --git a/Documentation/platforms/arm/imxrt/boards/imxrt1064-evk/index.rst b/Documentation/platforms/arm/imxrt/boards/imxrt1064-evk/index.rst index 17613f66509..34aaa7cadfe 100644 --- a/Documentation/platforms/arm/imxrt/boards/imxrt1064-evk/index.rst +++ b/Documentation/platforms/arm/imxrt/boards/imxrt1064-evk/index.rst @@ -3,7 +3,7 @@ i.MX RT1064 EVK =============== `i.MX RT1064 EVK `_ -is an evaluation kit by NXP company. This kit uses the i.MX RT1064 crossover MCU with Arm Cortex M7 core. +is an evaluation kit by NXP company. This kit uses the i.MX RT1064 crossover MCU with ARM Cortex M7 core. Features ======== @@ -37,13 +37,17 @@ Serial Console Virtual console port provided by OpenSDA: -- UART1_TXD GPIO_AD_B0_12 LPUART1_TX -- UART1_RXD GPIO_AD_B0_13 LPUART1_RX +========= ============= ========== +UART1_TXD GPIO_AD_B0_12 LPUART1_TX +UART1_RXD GPIO_AD_B0_13 LPUART1_RX +========= ============= ========== Arduino RS-232 Shield: -- J22 D0 UART_RX/D0 GPIO_AD_B1_07 LPUART3_RX -- J22 D1 UART_TX/D1 GPIO_AD_B1_06 LPUART3_TX +=== == ======= ============= ========== +J22 D0 UART_RX GPIO_AD_B1_07 LPUART3_RX +J22 D1 UART_TX GPIO_AD_B1_06 LPUART3_TX +=== == ======= ============= ========== LEDs and buttons ================ @@ -54,13 +58,14 @@ LEDs There are four LED status indicators located on the EVK Board. The functions of these LEDs include: -- Main Power Supply(D3) - - Green: DC 5V main supply is normal. - - Red: J2 input voltage is over 5.6V. - - Off: The board is not powered. -- Reset RED LED(D21) -- OpenSDA LED(D20) -- USER LED(D18) +=== ============ +Pin Description +=== ============ +D3 Power Supply +D18 User LED +D20 OpenSDA +D21 Reset LED +=== ============ Only a single LED, D18, is under software control. It connects to GPIO_AD_B0_09 which is shared with JTAG_TDI and ENET_RST @@ -92,11 +97,11 @@ Buttons There are five user interface switches on the MIMXRT1050 EVK Board: -- SW1: Power Switch (slide switch fir power from J2) -- SW2: ON/OFF Button -- SW3: Power-on Reset button state forces to reset the system power except SNVS domain -- SW9: Reset button -- SW8: User button GPIO5-00 + - SW1: Power Switch (slide switch fir power from J2) + - SW2: ON/OFF Button + - SW3: Power-on Reset button state forces to reset the system power except SNVS domain + - SW9: Reset button + - SW8: User button GPIO5-00 Only the user button is available to the software. It is sensed on the WAKEUP pin which will be pulled low when the button is pressed. From 4befbdfa4ba22dfd8fd9875db49842854cc258a1 Mon Sep 17 00:00:00 2001 From: Matias N Date: Wed, 12 May 2021 13:01:37 -0300 Subject: [PATCH 099/739] docker: add ninja-build --- tools/ci/docker/linux/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/ci/docker/linux/Dockerfile b/tools/ci/docker/linux/Dockerfile index b43eac81a2e..4df92c30a01 100644 --- a/tools/ci/docker/linux/Dockerfile +++ b/tools/ci/docker/linux/Dockerfile @@ -203,6 +203,7 @@ RUN apt-get update -qq && DEBIAN_FRONTEND="noninteractive" apt-get install -y -q libxext-dev libxext-dev:i386 \ linux-libc-dev:i386 \ linux-headers-generic \ + ninja-build \ python3 \ python3-pip \ python-is-python3 \ From e1ff0c4f082b77c0771d69419358ea5044b51164 Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Thu, 6 May 2021 10:59:27 -0700 Subject: [PATCH 100/739] libc: Implement openpty function Signed-off-by: Xiang Xiao Change-Id: I36e02af0145cd6e740766e7484cc9d5ce410e5e4 --- include/pty.h | 63 +++++++++++++ libs/libc/stdlib/Make.defs | 3 + libs/libc/stdlib/lib_openpty.c | 159 +++++++++++++++++++++++++++++++++ 3 files changed, 225 insertions(+) create mode 100644 include/pty.h create mode 100644 libs/libc/stdlib/lib_openpty.c diff --git a/include/pty.h b/include/pty.h new file mode 100644 index 00000000000..bf8577690ac --- /dev/null +++ b/include/pty.h @@ -0,0 +1,63 @@ +/**************************************************************************** + * include/pty.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __INCLUDE_PTY_H +#define __INCLUDE_PTY_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include + +#include +#include + +#if defined(CONFIG_SERIAL_TERMIOS) && defined(CONFIG_PSEUDOTERM) + +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ + +#undef EXTERN +#if defined(__cplusplus) +#define EXTERN extern "C" +extern "C" +{ +#else +#define EXTERN extern +#endif + +/**************************************************************************** + * Create pseudo tty pair with name and set terminal attributes according + * to term and win and return handles for both ends in master and slave. + ****************************************************************************/ + +int openpty(FAR int *master, FAR int *slave, FAR char *name, + FAR const struct termios *term, FAR const struct winsize *win); + +#undef EXTERN +#if defined(__cplusplus) +} +#endif + +#endif /* CONFIG_SERIAL_TERMIOS && CONFIG_PSEUDOTERM */ +#endif /* __INCLUDE_PTY_H */ diff --git a/libs/libc/stdlib/Make.defs b/libs/libc/stdlib/Make.defs index 3d1aa3423e0..1c16000745c 100644 --- a/libs/libc/stdlib/Make.defs +++ b/libs/libc/stdlib/Make.defs @@ -34,6 +34,9 @@ endif ifeq ($(CONFIG_PSEUDOTERM),y) CSRCS += lib_ptsname.c lib_ptsnamer.c lib_unlockpt.c +ifeq ($(CONFIG_SERIAL_TERMIOS),y) +CSRCS += lib_openpty.c +endif endif # Add the stdlib directory to the build diff --git a/libs/libc/stdlib/lib_openpty.c b/libs/libc/stdlib/lib_openpty.c new file mode 100644 index 00000000000..e0332105c89 --- /dev/null +++ b/libs/libc/stdlib/lib_openpty.c @@ -0,0 +1,159 @@ +/**************************************************************************** + * libs/libc/stdlib/lib_openpty.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include +#include +#include +#include +#include + +#include + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +static int openmaster(void) +{ +#ifdef CONFIG_PSEUDOTERM_SUSV1 + return open("dev/ptmx", O_RDWR); +#else + int minor; + + for (minor = 0; minor < 256; minor++) + { + char devname[16]; + int fd; + + snprintf(devname, 16, "/dev/pty%d", minor); + fd = open(devname, O_RDWR); + if (fd < 0) + { + /* Fail, register and try again */ + + pty_register(minor); + fd = open(devname, O_RDWR); + } + + if (fd >= 0) + { + return fd; + } + } + + return -1; +#endif +} + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: openpty + * + * Description: + * The openpty() function finds an available pseudoterminal and + * returns file descriptors in master and slave. If name is not + * NULL, the filename of the slave is returned in name. If term + * is not NULL, the terminal parameters of the slave will be set + * to the values in term. If win is not NULL, the window size of + * the slave will be set to the values in win. + * + * Returned Value: + * If a call to openpty() is not successful, -1 is returned and + * errno is set to indicate the error. Otherwise, return 0. + * + ****************************************************************************/ + +int openpty(FAR int *master, FAR int *slave, FAR char *name, + FAR const struct termios *term, FAR const struct winsize *win) +{ + char buf[64]; + int ret; + + /* Open the pseudo terminal master */ + + ret = openmaster(); + if (ret < 0) + { + return ret; + } + + *master = ret; + + /* Configure the pseudo terminal master */ + + ret = grantpt(*master); + if (ret < 0) + { + goto err; + } + + ret = unlockpt(*master); + if (ret < 0) + { + goto err; + } + + /* Open the pseudo terminal slave */ + + ret = ptsname_r(*master, buf, sizeof(buf)); + if (ret < 0) + { + goto err; + } + + ret = open(buf, O_RDWR | O_NOCTTY); + if (ret < 0) + { + goto err; + } + + *slave = ret; + + if (name != NULL) + { + strcpy(name, buf); + } + + /* Configure the pseudo terminal slave */ + + if (term != NULL) + { + tcsetattr(*slave, TCSAFLUSH, term); + } + + if (win != NULL) + { + ioctl(*slave, TIOCSWINSZ, win); + } + + return 0; + +err: + close(*master); + return ret; +} From 85c1354043c66221d0e7b819c44a66e05f0102ad Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Fri, 7 May 2021 21:48:02 +0800 Subject: [PATCH 101/739] binfmt/elf: Don't close filfd in the fail path to avoid close the same handle twice because the caller also call elf_uninit in this case Signed-off-by: Xiang Xiao Change-Id: Iddcbae9587d11d3b5b06e876d4a037ac0d11992e --- binfmt/libelf/libelf_init.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/binfmt/libelf/libelf_init.c b/binfmt/libelf/libelf_init.c index 7f4ae3c13a6..6658aa0b62b 100644 --- a/binfmt/libelf/libelf_init.c +++ b/binfmt/libelf/libelf_init.c @@ -161,7 +161,6 @@ int elf_init(FAR const char *filename, FAR struct elf_loadinfo_s *loadinfo) if (ret < 0) { berr("Failed to read ELF header: %d\n", ret); - nx_close(loadinfo->filfd); return ret; } @@ -181,7 +180,6 @@ int elf_init(FAR const char *filename, FAR struct elf_loadinfo_s *loadinfo) */ berr("Bad ELF header: %d\n", ret); - nx_close(loadinfo->filfd); return ret; } From 11ef8a3201643476a58a09b4acc9f8358feff95d Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Thu, 13 May 2021 02:05:39 +0800 Subject: [PATCH 102/739] board: Enable CONFIG_BOARDCTL_ROMDISK to fix build break by commit 3156aa7532c5097c9 Signed-off-by: Xiang Xiao --- boards/arm/cxd56xx/spresense/configs/elf/defconfig | 1 + boards/arm/cxd56xx/spresense/configs/module/defconfig | 1 + boards/arm/cxd56xx/spresense/configs/posix_spawn/defconfig | 1 + boards/arm/lc823450/lc823450-xgevk/configs/elf/defconfig | 1 + .../arm/lc823450/lc823450-xgevk/configs/posix_spawn/defconfig | 1 + boards/arm/sama5/sama5d4-ek/configs/elf/defconfig | 2 ++ boards/arm/samv7/samv71-xult/configs/module/defconfig | 1 + boards/arm/stm32/olimex-stm32-p407/configs/kelf/defconfig | 2 ++ boards/arm/stm32/olimex-stm32-p407/configs/kmodule/defconfig | 1 + boards/arm/stm32/olimex-stm32-p407/configs/module/defconfig | 1 + boards/arm/stm32/stm32f4discovery/configs/elf/defconfig | 2 ++ boards/arm/stm32/stm32f4discovery/configs/module/defconfig | 1 + boards/arm/stm32/stm32f4discovery/configs/posix_spawn/defconfig | 1 + boards/arm/stm32h7/nucleo-h743zi/configs/elf/defconfig | 1 + boards/arm/tiva/lm3s6965-ek/configs/qemu-flat/defconfig | 1 + boards/arm/tiva/lm3s6965-ek/configs/qemu-protected/defconfig | 1 + boards/risc-v/bl602/bl602evb/configs/elf/defconfig | 1 + boards/risc-v/c906/smartl-c906/configs/elf/defconfig | 1 + boards/risc-v/c906/smartl-c906/configs/module/defconfig | 1 + boards/risc-v/c906/smartl-c906/configs/sotest/defconfig | 1 + boards/risc-v/k210/maix-bit/configs/elf/defconfig | 1 + boards/risc-v/k210/maix-bit/configs/module/defconfig | 1 + boards/risc-v/k210/maix-bit/configs/posix_spawn/defconfig | 1 + boards/xtensa/esp32/esp32-devkitc/configs/module/defconfig | 1 + boards/xtensa/esp32/esp32-devkitc/configs/sotest/defconfig | 1 + 25 files changed, 28 insertions(+) diff --git a/boards/arm/cxd56xx/spresense/configs/elf/defconfig b/boards/arm/cxd56xx/spresense/configs/elf/defconfig index 964cd582c65..e6506a3fd64 100644 --- a/boards/arm/cxd56xx/spresense/configs/elf/defconfig +++ b/boards/arm/cxd56xx/spresense/configs/elf/defconfig @@ -14,6 +14,7 @@ CONFIG_ARCH_CHIP="cxd56xx" CONFIG_ARCH_CHIP_CXD56XX=y CONFIG_ARCH_STACKDUMP=y CONFIG_ARMV7M_USEBASEPRI=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=5434 CONFIG_BOOT_RUNFROMISRAM=y CONFIG_BUILTIN=y diff --git a/boards/arm/cxd56xx/spresense/configs/module/defconfig b/boards/arm/cxd56xx/spresense/configs/module/defconfig index 79d44672300..5002e2cb7ce 100644 --- a/boards/arm/cxd56xx/spresense/configs/module/defconfig +++ b/boards/arm/cxd56xx/spresense/configs/module/defconfig @@ -14,6 +14,7 @@ CONFIG_ARCH_CHIP="cxd56xx" CONFIG_ARCH_CHIP_CXD56XX=y CONFIG_ARCH_STACKDUMP=y CONFIG_ARMV7M_USEBASEPRI=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=5434 CONFIG_BOOT_RUNFROMISRAM=y CONFIG_BUILTIN=y diff --git a/boards/arm/cxd56xx/spresense/configs/posix_spawn/defconfig b/boards/arm/cxd56xx/spresense/configs/posix_spawn/defconfig index 8801b49394b..d9d6d36a4eb 100644 --- a/boards/arm/cxd56xx/spresense/configs/posix_spawn/defconfig +++ b/boards/arm/cxd56xx/spresense/configs/posix_spawn/defconfig @@ -15,6 +15,7 @@ CONFIG_ARCH_CHIP_CXD56XX=y CONFIG_ARCH_STACKDUMP=y CONFIG_ARMV7M_USEBASEPRI=y CONFIG_BOARDCTL_APP_SYMTAB=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=5434 CONFIG_BOOT_RUNFROMISRAM=y CONFIG_BUILTIN=y diff --git a/boards/arm/lc823450/lc823450-xgevk/configs/elf/defconfig b/boards/arm/lc823450/lc823450-xgevk/configs/elf/defconfig index 7c5a09bd5e2..6f6dd86a652 100644 --- a/boards/arm/lc823450/lc823450-xgevk/configs/elf/defconfig +++ b/boards/arm/lc823450/lc823450-xgevk/configs/elf/defconfig @@ -14,6 +14,7 @@ CONFIG_ARCH_CHIP_LC823450=y CONFIG_ARCH_INTERRUPTSTACK=2048 CONFIG_ARCH_STDARG_H=y CONFIG_BINFMT_CONSTRUCTORS=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LATE_INITIALIZE=y CONFIG_BOARD_LOOPSPERMSEC=12061 CONFIG_C99_BOOL8=y diff --git a/boards/arm/lc823450/lc823450-xgevk/configs/posix_spawn/defconfig b/boards/arm/lc823450/lc823450-xgevk/configs/posix_spawn/defconfig index c4438e5609d..79bd9f798b7 100644 --- a/boards/arm/lc823450/lc823450-xgevk/configs/posix_spawn/defconfig +++ b/boards/arm/lc823450/lc823450-xgevk/configs/posix_spawn/defconfig @@ -14,6 +14,7 @@ CONFIG_ARCH_CHIP_LC823450=y CONFIG_ARCH_INTERRUPTSTACK=2048 CONFIG_ARCH_STDARG_H=y CONFIG_BOARDCTL_APP_SYMTAB=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=12061 CONFIG_C99_BOOL8=y CONFIG_CODECS_HASH_MD5=y diff --git a/boards/arm/sama5/sama5d4-ek/configs/elf/defconfig b/boards/arm/sama5/sama5d4-ek/configs/elf/defconfig index e47e920ab3d..b89b437e257 100644 --- a/boards/arm/sama5/sama5d4-ek/configs/elf/defconfig +++ b/boards/arm/sama5/sama5d4-ek/configs/elf/defconfig @@ -29,6 +29,7 @@ CONFIG_ARCH_PGPOOL_VBASE=0x28000000 CONFIG_ARCH_STACKDUMP=y CONFIG_ARCH_TEXT_NPAGES=256 CONFIG_ARCH_TEXT_VBASE=0x80000000 +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LATE_INITIALIZE=y CONFIG_BOARD_LOOPSPERMSEC=65775 CONFIG_BOOT_RUNFROMSDRAM=y @@ -47,6 +48,7 @@ CONFIG_HOST_WINDOWS=y CONFIG_I2C=y CONFIG_I2C_RESET=y CONFIG_INTELHEX_BINARY=y +CONFIG_LIB_BOARDCTL=y CONFIG_LIB_SYSCALL=y CONFIG_MAX_TASKS=16 CONFIG_MM_PGALLOC=y diff --git a/boards/arm/samv7/samv71-xult/configs/module/defconfig b/boards/arm/samv7/samv71-xult/configs/module/defconfig index 5381087fe10..adb9e31b5c9 100644 --- a/boards/arm/samv7/samv71-xult/configs/module/defconfig +++ b/boards/arm/samv7/samv71-xult/configs/module/defconfig @@ -26,6 +26,7 @@ CONFIG_ARMV7M_DCACHE_WRITETHROUGH=y CONFIG_ARMV7M_ICACHE=y CONFIG_ARMV7M_LAZYFPU=y CONFIG_ARMV7M_USEBASEPRI=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=51262 CONFIG_BUILTIN=y CONFIG_EXAMPLES_MODULE=y diff --git a/boards/arm/stm32/olimex-stm32-p407/configs/kelf/defconfig b/boards/arm/stm32/olimex-stm32-p407/configs/kelf/defconfig index 50a19392cee..e3fcc8e37ce 100644 --- a/boards/arm/stm32/olimex-stm32-p407/configs/kelf/defconfig +++ b/boards/arm/stm32/olimex-stm32-p407/configs/kelf/defconfig @@ -16,6 +16,7 @@ CONFIG_ARCH_STACKDUMP=y CONFIG_ARMV7M_USEBASEPRI=y CONFIG_ARM_MPU=y CONFIG_BINFMT_CONSTRUCTORS=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LATE_INITIALIZE=y CONFIG_BOARD_LOOPSPERMSEC=16717 CONFIG_BUILD_PROTECTED=y @@ -30,6 +31,7 @@ CONFIG_FAT_LFN=y CONFIG_FS_FAT=y CONFIG_HAVE_CXX=y CONFIG_INTELHEX_BINARY=y +CONFIG_LIB_BOARDCTL=y CONFIG_LIB_ENVPATH=y CONFIG_MAX_TASKS=16 CONFIG_MM_KERNEL_HEAPSIZE=16384 diff --git a/boards/arm/stm32/olimex-stm32-p407/configs/kmodule/defconfig b/boards/arm/stm32/olimex-stm32-p407/configs/kmodule/defconfig index ecc3d29d339..839827070dc 100644 --- a/boards/arm/stm32/olimex-stm32-p407/configs/kmodule/defconfig +++ b/boards/arm/stm32/olimex-stm32-p407/configs/kmodule/defconfig @@ -17,6 +17,7 @@ CONFIG_ARCH_IRQBUTTONS=y CONFIG_ARCH_STACKDUMP=y CONFIG_ARMV7M_USEBASEPRI=y CONFIG_ARM_MPU=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LATE_INITIALIZE=y CONFIG_BOARD_LOOPSPERMSEC=16717 CONFIG_BUILD_PROTECTED=y diff --git a/boards/arm/stm32/olimex-stm32-p407/configs/module/defconfig b/boards/arm/stm32/olimex-stm32-p407/configs/module/defconfig index 4238f1ab480..9ff76232c1e 100644 --- a/boards/arm/stm32/olimex-stm32-p407/configs/module/defconfig +++ b/boards/arm/stm32/olimex-stm32-p407/configs/module/defconfig @@ -16,6 +16,7 @@ CONFIG_ARCH_INTERRUPTSTACK=2048 CONFIG_ARCH_IRQBUTTONS=y CONFIG_ARCH_STACKDUMP=y CONFIG_ARMV7M_USEBASEPRI=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=16717 CONFIG_BUILTIN=y CONFIG_EXAMPLES_MODULE=y diff --git a/boards/arm/stm32/stm32f4discovery/configs/elf/defconfig b/boards/arm/stm32/stm32f4discovery/configs/elf/defconfig index fde912cf91d..68c26deffc5 100644 --- a/boards/arm/stm32/stm32f4discovery/configs/elf/defconfig +++ b/boards/arm/stm32/stm32f4discovery/configs/elf/defconfig @@ -15,6 +15,7 @@ CONFIG_ARCH_CHIP_STM32F407VG=y CONFIG_ARCH_STACKDUMP=y CONFIG_ARMV7M_USEBASEPRI=y CONFIG_BINFMT_CONSTRUCTORS=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LATE_INITIALIZE=y CONFIG_BOARD_LOOPSPERMSEC=16717 CONFIG_CONSOLE_SYSLOG=y @@ -24,6 +25,7 @@ CONFIG_EXAMPLES_ELF=y CONFIG_FS_ROMFS=y CONFIG_HAVE_CXX=y CONFIG_INTELHEX_BINARY=y +CONFIG_LIB_BOARDCTL=y CONFIG_LIB_ENVPATH=y CONFIG_MAX_TASKS=16 CONFIG_MM_REGIONS=2 diff --git a/boards/arm/stm32/stm32f4discovery/configs/module/defconfig b/boards/arm/stm32/stm32f4discovery/configs/module/defconfig index 770a306652a..744dc719bcb 100644 --- a/boards/arm/stm32/stm32f4discovery/configs/module/defconfig +++ b/boards/arm/stm32/stm32f4discovery/configs/module/defconfig @@ -17,6 +17,7 @@ CONFIG_ARCH_CHIP="stm32" CONFIG_ARCH_CHIP_STM32=y CONFIG_ARCH_CHIP_STM32F407VG=y CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=16717 CONFIG_BUILTIN=y CONFIG_EXAMPLES_MODULE=y diff --git a/boards/arm/stm32/stm32f4discovery/configs/posix_spawn/defconfig b/boards/arm/stm32/stm32f4discovery/configs/posix_spawn/defconfig index 135bd39de60..80f9c700cb5 100644 --- a/boards/arm/stm32/stm32f4discovery/configs/posix_spawn/defconfig +++ b/boards/arm/stm32/stm32f4discovery/configs/posix_spawn/defconfig @@ -15,6 +15,7 @@ CONFIG_ARCH_CHIP_STM32F407VG=y CONFIG_ARCH_STACKDUMP=y CONFIG_BINFMT_CONSTRUCTORS=y CONFIG_BOARDCTL_APP_SYMTAB=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=16717 CONFIG_CONSOLE_SYSLOG=y CONFIG_ELF=y diff --git a/boards/arm/stm32h7/nucleo-h743zi/configs/elf/defconfig b/boards/arm/stm32h7/nucleo-h743zi/configs/elf/defconfig index 2d9fb756d66..84388023ff9 100644 --- a/boards/arm/stm32h7/nucleo-h743zi/configs/elf/defconfig +++ b/boards/arm/stm32h7/nucleo-h743zi/configs/elf/defconfig @@ -21,6 +21,7 @@ CONFIG_ARMV7M_DCACHE_WRITETHROUGH=y CONFIG_ARMV7M_DTCM=y CONFIG_ARMV7M_ICACHE=y CONFIG_BOARDCTL_APP_SYMTAB=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=43103 CONFIG_BUILTIN=y CONFIG_DEBUG_SYMBOLS=y diff --git a/boards/arm/tiva/lm3s6965-ek/configs/qemu-flat/defconfig b/boards/arm/tiva/lm3s6965-ek/configs/qemu-flat/defconfig index 5ad9f94af9a..6145e50bb6b 100644 --- a/boards/arm/tiva/lm3s6965-ek/configs/qemu-flat/defconfig +++ b/boards/arm/tiva/lm3s6965-ek/configs/qemu-flat/defconfig @@ -17,6 +17,7 @@ CONFIG_ARCH_CHIP_LM=y CONFIG_ARCH_STACKDUMP=y CONFIG_ARM_SEMIHOSTING_HOSTFS=y CONFIG_BOARDCTL_APP_SYMTAB=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=4531 CONFIG_BUILTIN=y CONFIG_CLOCK_MONOTONIC=y diff --git a/boards/arm/tiva/lm3s6965-ek/configs/qemu-protected/defconfig b/boards/arm/tiva/lm3s6965-ek/configs/qemu-protected/defconfig index 2e3799581eb..99597dc9f8d 100644 --- a/boards/arm/tiva/lm3s6965-ek/configs/qemu-protected/defconfig +++ b/boards/arm/tiva/lm3s6965-ek/configs/qemu-protected/defconfig @@ -18,6 +18,7 @@ CONFIG_ARCH_STACKDUMP=y CONFIG_ARM_MPU=y CONFIG_ARM_SEMIHOSTING_HOSTFS=y CONFIG_BOARDCTL_APP_SYMTAB=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=4531 CONFIG_BUILD_PROTECTED=y CONFIG_BUILTIN=y diff --git a/boards/risc-v/bl602/bl602evb/configs/elf/defconfig b/boards/risc-v/bl602/bl602evb/configs/elf/defconfig index 6fe7075215c..08eb8b6b9bc 100644 --- a/boards/risc-v/bl602/bl602evb/configs/elf/defconfig +++ b/boards/risc-v/bl602/bl602evb/configs/elf/defconfig @@ -18,6 +18,7 @@ CONFIG_ARCH_RISCV=y CONFIG_ARCH_STACKDUMP=y CONFIG_BL602_HAVE_UART0=y CONFIG_BL602_TIMER0=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=10000 CONFIG_BUILTIN=y CONFIG_DEBUG_FEATURES=y diff --git a/boards/risc-v/c906/smartl-c906/configs/elf/defconfig b/boards/risc-v/c906/smartl-c906/configs/elf/defconfig index 806ea25d82b..65eb5ccd991 100644 --- a/boards/risc-v/c906/smartl-c906/configs/elf/defconfig +++ b/boards/risc-v/c906/smartl-c906/configs/elf/defconfig @@ -15,6 +15,7 @@ CONFIG_ARCH_CHIP_C906=y CONFIG_ARCH_INTERRUPTSTACK=2048 CONFIG_ARCH_RISCV=y CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=46000 CONFIG_BUILTIN=y CONFIG_C906_ENABLE_DPFPU=y diff --git a/boards/risc-v/c906/smartl-c906/configs/module/defconfig b/boards/risc-v/c906/smartl-c906/configs/module/defconfig index 14a14a4ca8f..bd0ed8ed2de 100644 --- a/boards/risc-v/c906/smartl-c906/configs/module/defconfig +++ b/boards/risc-v/c906/smartl-c906/configs/module/defconfig @@ -15,6 +15,7 @@ CONFIG_ARCH_CHIP_C906=y CONFIG_ARCH_INTERRUPTSTACK=2048 CONFIG_ARCH_RISCV=y CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=46000 CONFIG_BUILTIN=y CONFIG_C906_ENABLE_DPFPU=y diff --git a/boards/risc-v/c906/smartl-c906/configs/sotest/defconfig b/boards/risc-v/c906/smartl-c906/configs/sotest/defconfig index 5b14a3300f6..1b7825268e4 100644 --- a/boards/risc-v/c906/smartl-c906/configs/sotest/defconfig +++ b/boards/risc-v/c906/smartl-c906/configs/sotest/defconfig @@ -15,6 +15,7 @@ CONFIG_ARCH_CHIP_C906=y CONFIG_ARCH_INTERRUPTSTACK=2048 CONFIG_ARCH_RISCV=y CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=46000 CONFIG_BUILTIN=y CONFIG_C906_ENABLE_DPFPU=y diff --git a/boards/risc-v/k210/maix-bit/configs/elf/defconfig b/boards/risc-v/k210/maix-bit/configs/elf/defconfig index 206dd57adee..07be58f2f5d 100644 --- a/boards/risc-v/k210/maix-bit/configs/elf/defconfig +++ b/boards/risc-v/k210/maix-bit/configs/elf/defconfig @@ -15,6 +15,7 @@ CONFIG_ARCH_INTERRUPTSTACK=2048 CONFIG_ARCH_RISCV=y CONFIG_ARCH_STACKDUMP=y CONFIG_BOARDCTL_APP_SYMTAB=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=46000 CONFIG_BUILTIN=y CONFIG_DEBUG_FULLOPT=y diff --git a/boards/risc-v/k210/maix-bit/configs/module/defconfig b/boards/risc-v/k210/maix-bit/configs/module/defconfig index 624b79a1f3f..c7c4cbc3388 100644 --- a/boards/risc-v/k210/maix-bit/configs/module/defconfig +++ b/boards/risc-v/k210/maix-bit/configs/module/defconfig @@ -15,6 +15,7 @@ CONFIG_ARCH_INTERRUPTSTACK=2048 CONFIG_ARCH_RISCV=y CONFIG_ARCH_STACKDUMP=y CONFIG_BOARDCTL_APP_SYMTAB=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=46000 CONFIG_BUILTIN=y CONFIG_DEBUG_FULLOPT=y diff --git a/boards/risc-v/k210/maix-bit/configs/posix_spawn/defconfig b/boards/risc-v/k210/maix-bit/configs/posix_spawn/defconfig index 2d5c6d574d2..dbda6cc6968 100644 --- a/boards/risc-v/k210/maix-bit/configs/posix_spawn/defconfig +++ b/boards/risc-v/k210/maix-bit/configs/posix_spawn/defconfig @@ -15,6 +15,7 @@ CONFIG_ARCH_INTERRUPTSTACK=2048 CONFIG_ARCH_RISCV=y CONFIG_ARCH_STACKDUMP=y CONFIG_BOARDCTL_APP_SYMTAB=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=46000 CONFIG_BUILTIN=y CONFIG_DEBUG_FULLOPT=y diff --git a/boards/xtensa/esp32/esp32-devkitc/configs/module/defconfig b/boards/xtensa/esp32/esp32-devkitc/configs/module/defconfig index e43aae77c99..daf0f29b88c 100644 --- a/boards/xtensa/esp32/esp32-devkitc/configs/module/defconfig +++ b/boards/xtensa/esp32/esp32-devkitc/configs/module/defconfig @@ -17,6 +17,7 @@ CONFIG_ARCH_CHIP_ESP32=y CONFIG_ARCH_CHIP_ESP32WROVER=y CONFIG_ARCH_STACKDUMP=y CONFIG_ARCH_XTENSA=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=16717 CONFIG_BUILTIN=y CONFIG_DEBUG_ASSERTIONS=y diff --git a/boards/xtensa/esp32/esp32-devkitc/configs/sotest/defconfig b/boards/xtensa/esp32/esp32-devkitc/configs/sotest/defconfig index 3c462782966..d5018b81b44 100644 --- a/boards/xtensa/esp32/esp32-devkitc/configs/sotest/defconfig +++ b/boards/xtensa/esp32/esp32-devkitc/configs/sotest/defconfig @@ -18,6 +18,7 @@ CONFIG_ARCH_CHIP_ESP32WROVER=y CONFIG_ARCH_STACKDUMP=y CONFIG_ARCH_XTENSA=y CONFIG_BOARDCTL_OS_SYMTAB=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=16717 CONFIG_BUILTIN=y CONFIG_DEBUG_ASSERTIONS=y From 2f65c3dd74a332074f047a3f3998aaf588536d74 Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Thu, 13 May 2021 11:23:53 +0800 Subject: [PATCH 103/739] boards/sim: Remove the hardcode platorm config Signed-off-by: Xiang Xiao --- boards/sim/sim/sim/configs/elf/defconfig | 2 +- boards/sim/sim/sim/configs/libcxxtest/defconfig | 1 - boards/sim/sim/sim/configs/posix_spawn/defconfig | 2 +- tools/ci/testlist/sim01.dat | 3 ++- tools/ci/testlist/sim02.dat | 1 + 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/boards/sim/sim/sim/configs/elf/defconfig b/boards/sim/sim/sim/configs/elf/defconfig index 20dad3ee6d1..24c98f0b842 100644 --- a/boards/sim/sim/sim/configs/elf/defconfig +++ b/boards/sim/sim/sim/configs/elf/defconfig @@ -34,7 +34,6 @@ CONFIG_FSUTILS_PASSWD_READONLY=y CONFIG_FS_FAT=y CONFIG_FS_PROCFS=y CONFIG_FS_ROMFS=y -CONFIG_HOST_X86=y CONFIG_IDLETHREAD_STACKSIZE=4096 CONFIG_LIBC_STRERROR=y CONFIG_LIB_ENVPATH=y @@ -52,6 +51,7 @@ CONFIG_SCHED_HAVE_PARENT=y CONFIG_SCHED_ONEXIT=y CONFIG_SCHED_WAITPID=y CONFIG_SDCLONE_DISABLE=y +CONFIG_SIM_M32=y CONFIG_START_MONTH=6 CONFIG_START_YEAR=2008 CONFIG_SYSTEM_NSH=y diff --git a/boards/sim/sim/sim/configs/libcxxtest/defconfig b/boards/sim/sim/sim/configs/libcxxtest/defconfig index 3336f7e2626..618a564e2a4 100644 --- a/boards/sim/sim/sim/configs/libcxxtest/defconfig +++ b/boards/sim/sim/sim/configs/libcxxtest/defconfig @@ -40,7 +40,6 @@ CONFIG_FS_HOSTFS=y CONFIG_FS_PROCFS=y CONFIG_FS_ROMFS=y CONFIG_HAVE_CXX=y -CONFIG_HOST_MACOS=y CONFIG_IDLETHREAD_STACKSIZE=4096 CONFIG_IOB_NOTIFIER=y CONFIG_LIBCXX=y diff --git a/boards/sim/sim/sim/configs/posix_spawn/defconfig b/boards/sim/sim/sim/configs/posix_spawn/defconfig index debe0e7cfac..4e3ec86608c 100644 --- a/boards/sim/sim/sim/configs/posix_spawn/defconfig +++ b/boards/sim/sim/sim/configs/posix_spawn/defconfig @@ -34,7 +34,6 @@ CONFIG_FSUTILS_PASSWD_READONLY=y CONFIG_FS_FAT=y CONFIG_FS_PROCFS=y CONFIG_FS_ROMFS=y -CONFIG_HOST_X86=y CONFIG_IDLETHREAD_STACKSIZE=4096 CONFIG_LIBC_EXECFUNCS=y CONFIG_LIBC_STRERROR=y @@ -53,6 +52,7 @@ CONFIG_SCHED_HAVE_PARENT=y CONFIG_SCHED_ONEXIT=y CONFIG_SCHED_WAITPID=y CONFIG_SDCLONE_DISABLE=y +CONFIG_SIM_M32=y CONFIG_START_MONTH=6 CONFIG_START_YEAR=2008 CONFIG_SYSTEM_NSH=y diff --git a/tools/ci/testlist/sim01.dat b/tools/ci/testlist/sim01.dat index 1edd98dd68f..bb9292aa66d 100644 --- a/tools/ci/testlist/sim01.dat +++ b/tools/ci/testlist/sim01.dat @@ -10,9 +10,10 @@ -Darwin,sim:linuxi2c # macOS doesn't support 32bit(CONFIG_SIM_M32=y) anymore +-Darwin,sim:elf +-Darwin,sim:foc -Darwin,sim:loadable -Darwin,sim:module32 --Darwin,sim:foc # macOS doesn't have X11 -Darwin,sim:lvgl diff --git a/tools/ci/testlist/sim02.dat b/tools/ci/testlist/sim02.dat index 677370d37f5..1974acb1962 100644 --- a/tools/ci/testlist/sim02.dat +++ b/tools/ci/testlist/sim02.dat @@ -1,6 +1,7 @@ /sim/*/*/*/[o-z]* # macOS doesn't support 32bit anymore(CONFIG_SIM_M32=y) +-Darwin,sim:posix_spawn -Darwin,sim:rpproxy -Darwin,sim:rpserver -Darwin,sim:sotest32 From f8f1270f9bd309e241dcffdfee45d36d3ec0226d Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Thu, 12 Nov 2020 17:56:25 +0800 Subject: [PATCH 104/739] openamp: Update to 2020.10.0 official release Signed-off-by: Xiang Xiao --- ...ledge-the-received-creation-message.patch} | 68 +- ...-address-check-in-rpmsg_send-rpmsg_t.patch | 38 - ...nge-clock_systimespec-to-clock_systi.patch | 29 - ...-individual-buffer-size-dynamically.patch} | 44 +- ...g_register_endpoint-into-rpmsg_init_.patch | 128 --- ...allocate-0-1023-address-in-rpmsg_cre.patch | 227 ----- ...nt-ready-in-rpmsg_send-and-rpmsg_se.patch} | 55 +- ...l-if-either-source-or-destination-ad.patch | 45 - ..._mmap-support-va-to-pa-da-conversion.patch | 780 ------------------ ...-rpmsg-bring-back-zero-copy-transfer.patch | 470 ----------- ...virtio_read_config-rproc_virtio_writ.patch | 119 --- openamp/Makefile | 2 +- openamp/libmetal.defs | 9 +- openamp/open-amp.defs | 13 +- 14 files changed, 99 insertions(+), 1928 deletions(-) rename openamp/{0008-ns-acknowledge-the-received-creation-message.patch => 0001-ns-acknowledge-the-received-creation-message.patch} (68%) delete mode 100644 openamp/0001-rpmsg-remove-the-address-check-in-rpmsg_send-rpmsg_t.patch delete mode 100644 openamp/0001-system-nuttx-change-clock_systimespec-to-clock_systi.patch rename openamp/{0010-Negotiate-individual-buffer-size-dynamically.patch => 0002-Negotiate-individual-buffer-size-dynamically.patch} (79%) delete mode 100644 openamp/0002-rpmsg-merge-rpmsg_register_endpoint-into-rpmsg_init_.patch delete mode 100644 openamp/0003-rpmsg-shouldn-t-allocate-0-1023-address-in-rpmsg_cre.patch rename openamp/{0004-rpmsg-wait-ept-ready-in-rpmsg_send.patch => 0003-rpmsg-wait-endpoint-ready-in-rpmsg_send-and-rpmsg_se.patch} (66%) delete mode 100644 openamp/0005-rpmsg-return-fail-if-either-source-or-destination-ad.patch delete mode 100644 openamp/0006-remoteproc_mmap-support-va-to-pa-da-conversion.patch delete mode 100644 openamp/0007-rpmsg-bring-back-zero-copy-transfer.patch delete mode 100644 openamp/0009-implement-rproc_virtio_read_config-rproc_virtio_writ.patch diff --git a/openamp/0008-ns-acknowledge-the-received-creation-message.patch b/openamp/0001-ns-acknowledge-the-received-creation-message.patch similarity index 68% rename from openamp/0008-ns-acknowledge-the-received-creation-message.patch rename to openamp/0001-ns-acknowledge-the-received-creation-message.patch index be3ecb85b6b..2270cb31edd 100644 --- a/openamp/0008-ns-acknowledge-the-received-creation-message.patch +++ b/openamp/0001-ns-acknowledge-the-received-creation-message.patch @@ -1,7 +1,7 @@ -From 3ea08a8002de5e4992bed32567ecb05c887f31be Mon Sep 17 00:00:00 2001 +From 34cacff47da59075d930a5e96b16d003b70d383d Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Mon, 7 Jan 2019 02:15:42 +0800 -Subject: [PATCH 08/10] ns: acknowledge the received creation message +Subject: [PATCH 1/3] ns: acknowledge the received creation message the two phase handsake make the client could initiate the transfer immediately without the server side send any dummy message first. @@ -10,16 +10,16 @@ Signed-off-by: Xiang Xiao --- lib/include/openamp/rpmsg.h | 1 + lib/include/openamp/rpmsg_virtio.h | 1 + - lib/rpmsg/rpmsg.c | 7 +++++-- + lib/rpmsg/rpmsg.c | 5 ++++- lib/rpmsg/rpmsg_internal.h | 4 ++-- - lib/rpmsg/rpmsg_virtio.c | 12 +++++++++--- - 5 files changed, 18 insertions(+), 7 deletions(-) + lib/rpmsg/rpmsg_virtio.c | 14 +++++++++++--- + 5 files changed, 19 insertions(+), 6 deletions(-) diff --git a/lib/include/openamp/rpmsg.h open-amp/lib/include/openamp/rpmsg.h -index 0b46ee1..318acd1 100644 +index 8b8ec2e..efdfb2b 100644 --- a/lib/include/openamp/rpmsg.h +++ open-amp/lib/include/openamp/rpmsg.h -@@ -127,6 +127,7 @@ struct rpmsg_device { +@@ -120,6 +120,7 @@ struct rpmsg_device { rpmsg_ns_bind_cb ns_bind_cb; struct rpmsg_device_ops ops; bool support_ns; @@ -28,7 +28,7 @@ index 0b46ee1..318acd1 100644 /** diff --git a/lib/include/openamp/rpmsg_virtio.h open-amp/lib/include/openamp/rpmsg_virtio.h -index 2209a48..e6e5fa2 100644 +index 12cb47f..4d3093b 100644 --- a/lib/include/openamp/rpmsg_virtio.h +++ open-amp/lib/include/openamp/rpmsg_virtio.h @@ -28,6 +28,7 @@ extern "C" { @@ -40,30 +40,29 @@ index 2209a48..e6e5fa2 100644 /** * struct rpmsg_virtio_shm_pool - shared memory pool used for rpmsg buffers diff --git a/lib/rpmsg/rpmsg.c open-amp/lib/rpmsg/rpmsg.c -index 0a8de1b..0cc80da 100644 +index 46c3691..e52144b 100644 --- a/lib/rpmsg/rpmsg.c +++ open-amp/lib/rpmsg/rpmsg.c @@ -297,10 +297,13 @@ int rpmsg_create_ept(struct rpmsg_endpoint *ept, struct rpmsg_device *rdev, + rpmsg_register_endpoint(rdev, ept); + metal_mutex_release(&rdev->lock); - rpmsg_init_ept(ept, rdev, name, addr, dest, cb, unbind_cb); +- /* Send NS announcement to remote processor */ ++ /* Send NS announcement/acknowledge to remote processor */ + if (ept->name[0] && rdev->support_ns && + ept->dest_addr == RPMSG_ADDR_ANY) + status = rpmsg_send_ns_message(ept, RPMSG_NS_CREATE); ++ else if (ept->name[0] && rdev->support_ack && ++ ept->dest_addr != RPMSG_ADDR_ANY) ++ status = rpmsg_send_ns_message(ept, RPMSG_NS_CREATE_ACK); -- if (rdev->support_ns && ept->dest_addr == RPMSG_ADDR_ANY) { -+ if (ept->name[0]) { - /* Send NS announcement to remote processor */ - metal_mutex_release(&rdev->lock); -- status = rpmsg_send_ns_message(ept, RPMSG_NS_CREATE); -+ if (rdev->support_ns && ept->dest_addr == RPMSG_ADDR_ANY) -+ status = rpmsg_send_ns_message(ept, RPMSG_NS_CREATE); -+ else if (rdev->support_ack && ept->dest_addr != RPMSG_ADDR_ANY) -+ status = rpmsg_send_ns_message(ept, RPMSG_NS_CREATE_ACK); - metal_mutex_acquire(&rdev->lock); - if (status) - rpmsg_unregister_endpoint(ept); + if (status) + rpmsg_unregister_endpoint(ept); diff --git a/lib/rpmsg/rpmsg_internal.h open-amp/lib/rpmsg/rpmsg_internal.h -index 3db6b24..d513a56 100644 +index d4536d1..e64aeff 100644 --- a/lib/rpmsg/rpmsg_internal.h +++ open-amp/lib/rpmsg/rpmsg_internal.h -@@ -44,12 +44,12 @@ extern "C" { +@@ -39,12 +39,12 @@ extern "C" { * * @RPMSG_NS_CREATE: a new remote service was just created * @RPMSG_NS_DESTROY: a known remote service was just destroyed @@ -79,10 +78,10 @@ index 3db6b24..d513a56 100644 /** diff --git a/lib/rpmsg/rpmsg_virtio.c open-amp/lib/rpmsg/rpmsg_virtio.c -index 195189d..9988a1e 100644 +index 86a23ad..640240a 100644 --- a/lib/rpmsg/rpmsg_virtio.c +++ open-amp/lib/rpmsg/rpmsg_virtio.c -@@ -586,13 +586,13 @@ static int rpmsg_virtio_ns_callback(struct rpmsg_endpoint *ept, void *data, +@@ -554,13 +554,13 @@ static int rpmsg_virtio_ns_callback(struct rpmsg_endpoint *ept, void *data, metal_mutex_acquire(&rdev->lock); _ept = rpmsg_get_endpoint(rdev, name, RPMSG_ADDR_ANY, dest); @@ -92,15 +91,18 @@ index 195189d..9988a1e 100644 _ept->dest_addr = RPMSG_ADDR_ANY; metal_mutex_release(&rdev->lock); if (_ept && _ept->ns_unbind_cb) - _ept->ns_unbind_cb(ept); + _ept->ns_unbind_cb(_ept); - } else { + } else if (ns_msg->flags == RPMSG_NS_CREATE) { if (!_ept) { /* * send callback to application, that can -@@ -607,6 +607,11 @@ static int rpmsg_virtio_ns_callback(struct rpmsg_endpoint *ept, void *data, +@@ -574,7 +574,14 @@ static int rpmsg_virtio_ns_callback(struct rpmsg_endpoint *ept, void *data, + } else { _ept->dest_addr = dest; metal_mutex_release(&rdev->lock); ++ if (_ept->name[0] && rdev->support_ack) ++ rpmsg_send_ns_message(_ept, RPMSG_NS_CREATE_ACK); } + } else { /* RPMSG_NS_CREATE_ACK */ + /* save the received destination address */ @@ -110,7 +112,7 @@ index 195189d..9988a1e 100644 } return RPMSG_SUCCESS; -@@ -659,6 +664,7 @@ int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev, +@@ -627,6 +634,7 @@ int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev, #endif /*!VIRTIO_MASTER_ONLY*/ vdev->features = rpmsg_virtio_get_features(rvdev); rdev->support_ns = !!(vdev->features & (1 << VIRTIO_RPMSG_F_NS)); @@ -118,15 +120,15 @@ index 195189d..9988a1e 100644 #ifndef VIRTIO_SLAVE_ONLY if (role == RPMSG_MASTER) { -@@ -754,7 +760,7 @@ int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev, +@@ -722,7 +730,7 @@ int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev, * Create name service announcement endpoint if device supports name * service announcement feature. */ - if (rdev->support_ns) { + if (rdev->support_ns || rdev->support_ack) { - rpmsg_init_ept(&rdev->ns_ept, rdev, "NS", - RPMSG_NS_EPT_ADDR, RPMSG_NS_EPT_ADDR, - rpmsg_virtio_ns_callback, NULL); + rpmsg_initialize_ept(&rdev->ns_ept, "NS", + RPMSG_NS_EPT_ADDR, RPMSG_NS_EPT_ADDR, + rpmsg_virtio_ns_callback, NULL); -- 2.17.1 diff --git a/openamp/0001-rpmsg-remove-the-address-check-in-rpmsg_send-rpmsg_t.patch b/openamp/0001-rpmsg-remove-the-address-check-in-rpmsg_send-rpmsg_t.patch deleted file mode 100644 index 8e2edab18ee..00000000000 --- a/openamp/0001-rpmsg-remove-the-address-check-in-rpmsg_send-rpmsg_t.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 5bc0ae0942fa9a4b9d321e31445457c31c888530 Mon Sep 17 00:00:00 2001 -From: Xiang Xiao -Date: Fri, 24 Apr 2020 01:44:31 +0800 -Subject: [PATCH 01/10] rpmsg: remove the address check in - rpmsg_send/rpmsg_trysend - -since rpmsg_send_offchannel_raw already do the same validation - -Signed-off-by: Xiang Xiao ---- - lib/include/openamp/rpmsg.h | 4 ---- - 1 file changed, 4 deletions(-) - -diff --git a/lib/include/openamp/rpmsg.h open-amp/lib/include/openamp/rpmsg.h -index f2a6454..8401c38 100644 ---- a/lib/include/openamp/rpmsg.h -+++ open-amp/lib/include/openamp/rpmsg.h -@@ -146,8 +146,6 @@ int rpmsg_send_offchannel_raw(struct rpmsg_endpoint *ept, uint32_t src, - static inline int rpmsg_send(struct rpmsg_endpoint *ept, const void *data, - int len) - { -- if (ept->dest_addr == RPMSG_ADDR_ANY) -- return RPMSG_ERR_ADDR; - return rpmsg_send_offchannel_raw(ept, ept->addr, ept->dest_addr, data, - len, true); - } -@@ -216,8 +214,6 @@ static inline int rpmsg_send_offchannel(struct rpmsg_endpoint *ept, - static inline int rpmsg_trysend(struct rpmsg_endpoint *ept, const void *data, - int len) - { -- if (ept->dest_addr == RPMSG_ADDR_ANY) -- return RPMSG_ERR_ADDR; - return rpmsg_send_offchannel_raw(ept, ept->addr, ept->dest_addr, data, - len, false); - } --- -2.17.1 - diff --git a/openamp/0001-system-nuttx-change-clock_systimespec-to-clock_systi.patch b/openamp/0001-system-nuttx-change-clock_systimespec-to-clock_systi.patch deleted file mode 100644 index 3378774c925..00000000000 --- a/openamp/0001-system-nuttx-change-clock_systimespec-to-clock_systi.patch +++ /dev/null @@ -1,29 +0,0 @@ -From fa4904c9d9ad16e791485d0ef22566427869144c Mon Sep 17 00:00:00 2001 -From: Xiang Xiao -Date: Mon, 11 May 2020 00:03:51 +0800 -Subject: [PATCH] system: nuttx: change clock_systimespec to - clock_systime_timespec - -follow up the change from NuttX side - -Signed-off-by: Xiang Xiao ---- - lib/system/nuttx/time.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/system/nuttx/time.c libmetal/lib/system/nuttx/time.c -index bafc957..986f1ba 100644 ---- a/lib/system/nuttx/time.c -+++ libmetal/lib/system/nuttx/time.c -@@ -18,7 +18,7 @@ unsigned long long metal_get_timestamp(void) - struct timespec tp; - int r; - -- r = clock_systimespec(&tp); -+ r = clock_systime_timespec(&tp); - if (!r) { - t = (unsigned long long)tp.tv_sec * NSEC_PER_SEC; - t += tp.tv_nsec; --- -2.17.1 - diff --git a/openamp/0010-Negotiate-individual-buffer-size-dynamically.patch b/openamp/0002-Negotiate-individual-buffer-size-dynamically.patch similarity index 79% rename from openamp/0010-Negotiate-individual-buffer-size-dynamically.patch rename to openamp/0002-Negotiate-individual-buffer-size-dynamically.patch index 03d14d587f0..7369bfbbd3c 100644 --- a/openamp/0010-Negotiate-individual-buffer-size-dynamically.patch +++ b/openamp/0002-Negotiate-individual-buffer-size-dynamically.patch @@ -1,21 +1,21 @@ -From 2a64e1f23b140e1e2fdabfe77ed7a11062ef341a Mon Sep 17 00:00:00 2001 -From: anchao +From effea71e4d59797cd6149a81b2c6b88dc550d972 Mon Sep 17 00:00:00 2001 +From: Chao An Date: Mon, 10 Dec 2018 16:26:39 +0800 -Subject: [PATCH 10/10] Negotiate individual buffer size dynamically +Subject: [PATCH 2/3] Negotiate individual buffer size dynamically If slave support VIRTIO_RPMSG_F_BUFSZ(0x04) feature, master determine the buffer size from config space(first 8 bytes), otherwise the default size(512 bytes) will be used. -Signed-off-by: anchao +Signed-off-by: Chao An --- lib/include/openamp/remoteproc.h | 17 +++++++++++++++++ lib/include/openamp/rpmsg_virtio.h | 4 ++++ - lib/rpmsg/rpmsg_virtio.c | 22 ++++++++++++++++------ - 3 files changed, 37 insertions(+), 6 deletions(-) + lib/rpmsg/rpmsg_virtio.c | 21 +++++++++++++++------ + 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/lib/include/openamp/remoteproc.h open-amp/lib/include/openamp/remoteproc.h -index b34cb1a..ee9162a 100644 +index f558846..a71327b 100644 --- a/lib/include/openamp/remoteproc.h +++ open-amp/lib/include/openamp/remoteproc.h @@ -303,6 +303,23 @@ struct fw_rsc_vdev { @@ -43,7 +43,7 @@ index b34cb1a..ee9162a 100644 * struct fw_rsc_vendor - remote processor vendor specific resource * @len: length of the resource diff --git a/lib/include/openamp/rpmsg_virtio.h open-amp/lib/include/openamp/rpmsg_virtio.h -index 4d3093b..7f0c573 100644 +index 4d3093b..e552b96 100644 --- a/lib/include/openamp/rpmsg_virtio.h +++ open-amp/lib/include/openamp/rpmsg_virtio.h @@ -16,6 +16,7 @@ @@ -58,7 +58,7 @@ index 4d3093b..7f0c573 100644 /* The feature bitmap for virtio rpmsg */ #define VIRTIO_RPMSG_F_NS 0 /* RP supports name service notifications */ #define VIRTIO_RPMSG_F_ACK 1 /* RP supports name service acknowledge */ -+#define VIRTIO_RPMSG_F_BUFSZ 2 /* RP supports get buffer size from config space */ ++#define VIRTIO_RPMSG_F_BUFSZ 2 /* RP supports buffer size negotiation */ /** * struct rpmsg_virtio_shm_pool - shared memory pool used for rpmsg buffers @@ -79,21 +79,21 @@ index 4d3093b..7f0c573 100644 struct virtqueue *rvq; struct virtqueue *svq; diff --git a/lib/rpmsg/rpmsg_virtio.c open-amp/lib/rpmsg/rpmsg_virtio.c -index 9988a1e..d127084 100644 +index 640240a..164dc70 100644 --- a/lib/rpmsg/rpmsg_virtio.c +++ open-amp/lib/rpmsg/rpmsg_virtio.c -@@ -138,8 +138,8 @@ static void *rpmsg_virtio_get_tx_buffer(struct rpmsg_virtio_device *rvdev, +@@ -145,8 +145,8 @@ static void *rpmsg_virtio_get_tx_buffer(struct rpmsg_virtio_device *rvdev, data = virtqueue_get_buffer(rvdev->svq, len, idx); - if (!data) { + if (!data && rvdev->svq->vq_free_cnt) { data = rpmsg_virtio_shm_pool_get_buffer(rvdev->shpool, - RPMSG_BUFFER_SIZE); - *len = RPMSG_BUFFER_SIZE; -+ rvdev->config.rxbuf_size); ++ rvdev->config.rxbuf_size); + *len = rvdev->config.rxbuf_size; *idx = 0; } } -@@ -232,7 +232,7 @@ static int _rpmsg_virtio_get_buffer_size(struct rpmsg_virtio_device *rvdev) +@@ -239,7 +239,7 @@ static int _rpmsg_virtio_get_buffer_size(struct rpmsg_virtio_device *rvdev) * If device role is Master then buffers are provided by us, * so just provide the macro. */ @@ -102,22 +102,16 @@ index 9988a1e..d127084 100644 } #endif /*!VIRTIO_SLAVE_ONLY*/ -@@ -649,11 +649,14 @@ int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev, +@@ -619,6 +619,8 @@ int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev, rvdev->vdev = vdev; rdev->ns_bind_cb = ns_bind_cb; vdev->priv = rvdev; + rvdev->config.txbuf_size = RPMSG_BUFFER_SIZE; + rvdev->config.rxbuf_size = RPMSG_BUFFER_SIZE; + rdev->ops.send_offchannel_raw = rpmsg_virtio_send_offchannel_raw; rdev->ops.hold_rx_buffer = rpmsg_virtio_hold_rx_buffer; rdev->ops.release_rx_buffer = rpmsg_virtio_release_rx_buffer; - rdev->ops.get_tx_payload_buffer = rpmsg_virtio_get_tx_payload_buffer; - rdev->ops.send_offchannel_nocopy = rpmsg_virtio_send_offchannel_nocopy; - rdev->ops.send_offchannel_raw = rpmsg_virtio_send_offchannel_raw; -+ - role = rpmsg_virtio_get_role(rvdev); - - #ifndef VIRTIO_MASTER_ONLY -@@ -666,6 +669,13 @@ int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev, +@@ -636,6 +638,13 @@ int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev, rdev->support_ns = !!(vdev->features & (1 << VIRTIO_RPMSG_F_NS)); rdev->support_ack = !!(vdev->features & (1 << VIRTIO_RPMSG_F_ACK)); @@ -131,7 +125,7 @@ index 9988a1e..d127084 100644 #ifndef VIRTIO_SLAVE_ONLY if (role == RPMSG_MASTER) { /* -@@ -726,11 +736,11 @@ int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev, +@@ -696,11 +705,11 @@ int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev, unsigned int idx; void *buffer; @@ -145,7 +139,7 @@ index 9988a1e..d127084 100644 if (!buffer) { return RPMSG_ERR_NO_BUFF; -@@ -741,7 +751,7 @@ int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev, +@@ -711,7 +720,7 @@ int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev, metal_io_block_set(shm_io, metal_io_virt_to_offset(shm_io, buffer), diff --git a/openamp/0002-rpmsg-merge-rpmsg_register_endpoint-into-rpmsg_init_.patch b/openamp/0002-rpmsg-merge-rpmsg_register_endpoint-into-rpmsg_init_.patch deleted file mode 100644 index 791efdc144e..00000000000 --- a/openamp/0002-rpmsg-merge-rpmsg_register_endpoint-into-rpmsg_init_.patch +++ /dev/null @@ -1,128 +0,0 @@ -From d58fa6ab189fded40786e7d025036a1c16c773c4 Mon Sep 17 00:00:00 2001 -From: Xiang Xiao -Date: Fri, 24 Apr 2020 03:40:56 +0800 -Subject: [PATCH 02/10] rpmsg: merge rpmsg_register_endpoint into - rpmsg_init_ept - -so the service which use preserved address could call rpmsg_init_ept - -Signed-off-by: Xiang Xiao ---- - lib/include/openamp/rpmsg.h | 19 +++++++------------ - lib/rpmsg/rpmsg.c | 17 +++++++++++++---- - lib/rpmsg/rpmsg_internal.h | 2 -- - lib/rpmsg/rpmsg_virtio.c | 3 +-- - 4 files changed, 21 insertions(+), 20 deletions(-) - -diff --git a/lib/include/openamp/rpmsg.h open-amp/lib/include/openamp/rpmsg.h -index 8401c38..a08f9d3 100644 ---- a/lib/include/openamp/rpmsg.h -+++ open-amp/lib/include/openamp/rpmsg.h -@@ -271,6 +271,7 @@ static inline int rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, - * remoteproc address, endpoint callback, and destroy endpoint callback. - * - * @ept: pointer to rpmsg endpoint -+ * @rdev: pointer to the rpmsg device - * @name: service name associated to the endpoint - * @src: local address of the endpoint - * @dest: target address of the endpoint -@@ -278,18 +279,12 @@ static inline int rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, - * @ns_unbind_cb: end point service unbind callback, called when remote ept is - * destroyed. - */ --static inline void rpmsg_init_ept(struct rpmsg_endpoint *ept, -- const char *name, -- uint32_t src, uint32_t dest, -- rpmsg_ept_cb cb, -- rpmsg_ns_unbind_cb ns_unbind_cb) --{ -- strncpy(ept->name, name ? name : "", sizeof(ept->name)); -- ept->addr = src; -- ept->dest_addr = dest; -- ept->cb = cb; -- ept->ns_unbind_cb = ns_unbind_cb; --} -+void rpmsg_init_ept(struct rpmsg_endpoint *ept, -+ struct rpmsg_device *rdev, -+ const char *name, -+ uint32_t src, uint32_t dest, -+ rpmsg_ept_cb cb, -+ rpmsg_ns_unbind_cb ns_unbind_cb); - - /** - * rpmsg_create_ept - create rpmsg endpoint and register it to rpmsg device -diff --git a/lib/rpmsg/rpmsg.c open-amp/lib/rpmsg/rpmsg.c -index 5b9c735..eee1c28 100644 ---- a/lib/rpmsg/rpmsg.c -+++ open-amp/lib/rpmsg/rpmsg.c -@@ -182,6 +182,7 @@ static void rpmsg_unregister_endpoint(struct rpmsg_endpoint *ept) - return; - - rdev = ept->rdev; -+ ept->rdev = NULL; - - if (ept->addr != RPMSG_ADDR_ANY) - rpmsg_release_address(rdev->bitmap, RPMSG_ADDR_BMP_SIZE, -@@ -189,9 +190,18 @@ static void rpmsg_unregister_endpoint(struct rpmsg_endpoint *ept) - metal_list_del(&ept->node); - } - --void rpmsg_register_endpoint(struct rpmsg_device *rdev, -- struct rpmsg_endpoint *ept) -+void rpmsg_init_ept(struct rpmsg_endpoint *ept, -+ struct rpmsg_device *rdev, -+ const char *name, -+ uint32_t src, uint32_t dest, -+ rpmsg_ept_cb cb, -+ rpmsg_ns_unbind_cb ns_unbind_cb) - { -+ strncpy(ept->name, name ? name : "", sizeof(ept->name)); -+ ept->addr = src; -+ ept->dest_addr = dest; -+ ept->cb = cb; -+ ept->ns_unbind_cb = ns_unbind_cb; - ept->rdev = rdev; - metal_list_add_tail(&rdev->endpoints, &ept->node); - } -@@ -224,8 +234,7 @@ int rpmsg_create_ept(struct rpmsg_endpoint *ept, struct rpmsg_device *rdev, - addr = rpmsg_get_address(rdev->bitmap, RPMSG_ADDR_BMP_SIZE); - } - -- rpmsg_init_ept(ept, name, addr, dest, cb, unbind_cb); -- rpmsg_register_endpoint(rdev, ept); -+ rpmsg_init_ept(ept, rdev, name, addr, dest, cb, unbind_cb); - - if (rdev->support_ns && ept->dest_addr == RPMSG_ADDR_ANY) { - /* Send NS announcement to remote processor */ -diff --git a/lib/rpmsg/rpmsg_internal.h open-amp/lib/rpmsg/rpmsg_internal.h -index f63c958..9c46970 100644 ---- a/lib/rpmsg/rpmsg_internal.h -+++ open-amp/lib/rpmsg/rpmsg_internal.h -@@ -92,8 +92,6 @@ int rpmsg_send_ns_message(struct rpmsg_endpoint *ept, unsigned long flags); - struct rpmsg_endpoint *rpmsg_get_endpoint(struct rpmsg_device *rvdev, - const char *name, uint32_t addr, - uint32_t dest_addr); --void rpmsg_register_endpoint(struct rpmsg_device *rdev, -- struct rpmsg_endpoint *ept); - - static inline struct rpmsg_endpoint * - rpmsg_get_ept_from_addr(struct rpmsg_device *rdev, uint32_t addr) -diff --git a/lib/rpmsg/rpmsg_virtio.c open-amp/lib/rpmsg/rpmsg_virtio.c -index 8165216..4dea4c0 100644 ---- a/lib/rpmsg/rpmsg_virtio.c -+++ open-amp/lib/rpmsg/rpmsg_virtio.c -@@ -636,10 +636,9 @@ int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev, - * service announcement feature. - */ - if (rdev->support_ns) { -- rpmsg_init_ept(&rdev->ns_ept, "NS", -+ rpmsg_init_ept(&rdev->ns_ept, rdev, "NS", - RPMSG_NS_EPT_ADDR, RPMSG_NS_EPT_ADDR, - rpmsg_virtio_ns_callback, NULL); -- rpmsg_register_endpoint(rdev, &rdev->ns_ept); - } - - #ifndef VIRTIO_SLAVE_ONLY --- -2.17.1 - diff --git a/openamp/0003-rpmsg-shouldn-t-allocate-0-1023-address-in-rpmsg_cre.patch b/openamp/0003-rpmsg-shouldn-t-allocate-0-1023-address-in-rpmsg_cre.patch deleted file mode 100644 index b425fa33790..00000000000 --- a/openamp/0003-rpmsg-shouldn-t-allocate-0-1023-address-in-rpmsg_cre.patch +++ /dev/null @@ -1,227 +0,0 @@ -From ca34df45f5d4893be223346b06cc75f370452386 Mon Sep 17 00:00:00 2001 -From: Xiang Xiao -Date: Fri, 24 Apr 2020 01:33:12 +0800 -Subject: [PATCH 03/10] rpmsg: shouldn't allocate 0-1023 address in - rpmsg_create_ept - -since this region is reserved for predefined services(e.g. NS use 0x35) - -Signed-off-by: Xiang Xiao ---- - apps/examples/echo/rpmsg-echo.c | 2 +- - apps/examples/echo/rpmsg-ping.c | 2 +- - .../matrix_multiply/matrix_multiply.c | 2 +- - .../matrix_multiply/matrix_multiplyd.c | 2 +- - apps/examples/rpc_demo/rpc_demod.c | 2 +- - .../rpmsg_sample_echo/rpmsg-sample-ping.c | 2 +- - apps/tests/msg/rpmsg-flood-ping.c | 2 +- - apps/tests/msg/rpmsg-ping.c | 2 +- - apps/tests/msg/rpmsg-update.c | 2 +- - lib/include/openamp/rpmsg.h | 27 ++++++++++--------- - lib/rpmsg/rpmsg.c | 11 +++++--- - 11 files changed, 30 insertions(+), 26 deletions(-) - -diff --git a/apps/examples/echo/rpmsg-echo.c open-amp/apps/examples/echo/rpmsg-echo.c -index 0c75203..71a0bbf 100644 ---- a/apps/examples/echo/rpmsg-echo.c -+++ open-amp/apps/examples/echo/rpmsg-echo.c -@@ -58,7 +58,7 @@ int app(struct rpmsg_device *rdev, void *priv) - LPRINTF("Try to create rpmsg endpoint.\r\n"); - - ret = rpmsg_create_ept(&lept, rdev, RPMSG_SERVICE_NAME, -- 0, RPMSG_ADDR_ANY, rpmsg_endpoint_cb, -+ 1024, RPMSG_ADDR_ANY, rpmsg_endpoint_cb, - rpmsg_service_unbind); - if (ret) { - LPERROR("Failed to create endpoint.\r\n"); -diff --git a/apps/examples/echo/rpmsg-ping.c open-amp/apps/examples/echo/rpmsg-ping.c -index 3b716b0..ff639cd 100644 ---- a/apps/examples/echo/rpmsg-ping.c -+++ open-amp/apps/examples/echo/rpmsg-ping.c -@@ -11,7 +11,7 @@ This application echoes back data that was sent to it by the master core. */ - #include "platform_info.h" - #include "rpmsg-echo.h" - --#define APP_EPT_ADDR 0 -+#define APP_EPT_ADDR 1024 - #define LPRINTF(format, ...) printf(format, ##__VA_ARGS__) - #define LPERROR(format, ...) LPRINTF("ERROR: " format, ##__VA_ARGS__) - -diff --git a/apps/examples/matrix_multiply/matrix_multiply.c open-amp/apps/examples/matrix_multiply/matrix_multiply.c -index b9da29b..3928088 100644 ---- a/apps/examples/matrix_multiply/matrix_multiply.c -+++ open-amp/apps/examples/matrix_multiply/matrix_multiply.c -@@ -14,7 +14,7 @@ multiplies them and returns the result to the master core. */ - - #define MAX_SIZE 6 - #define NUM_MATRIX 2 --#define APP_EPT_ADDR 0 -+#define APP_EPT_ADDR 1024 - - #define raw_printf(format, ...) printf(format, ##__VA_ARGS__) - #define LPRINTF(format, ...) raw_printf("CLIENT> " format, ##__VA_ARGS__) -diff --git a/apps/examples/matrix_multiply/matrix_multiplyd.c open-amp/apps/examples/matrix_multiply/matrix_multiplyd.c -index 6b4a118..29c6380 100644 ---- a/apps/examples/matrix_multiply/matrix_multiplyd.c -+++ open-amp/apps/examples/matrix_multiply/matrix_multiplyd.c -@@ -92,7 +92,7 @@ int app(struct rpmsg_device *rdev, void *priv) - int ret; - - ret = rpmsg_create_ept(&lept, rdev, RPMSG_SERVICE_NAME, -- 0, RPMSG_ADDR_ANY, rpmsg_endpoint_cb, -+ 1024, RPMSG_ADDR_ANY, rpmsg_endpoint_cb, - rpmsg_service_unbind); - if (ret) { - LPERROR("Failed to create endpoint.\r\n"); -diff --git a/apps/examples/rpc_demo/rpc_demod.c open-amp/apps/examples/rpc_demo/rpc_demod.c -index 44c92a2..a4659f3 100644 ---- a/apps/examples/rpc_demo/rpc_demod.c -+++ open-amp/apps/examples/rpc_demo/rpc_demod.c -@@ -312,7 +312,7 @@ int app(struct rpmsg_device *rdev, void *priv) - LPRINTF("Try to create rpmsg endpoint.\r\n"); - - ret = rpmsg_create_ept(&app_ept, rdev, RPMSG_SERVICE_NAME, -- 0, RPMSG_ADDR_ANY, rpmsg_endpoint_cb, -+ 1024, RPMSG_ADDR_ANY, rpmsg_endpoint_cb, - rpmsg_service_unbind); - if (ret) { - LPERROR("Failed to create endpoint.\r\n"); -diff --git a/apps/examples/rpmsg_sample_echo/rpmsg-sample-ping.c open-amp/apps/examples/rpmsg_sample_echo/rpmsg-sample-ping.c -index ee866b4..14456e3 100644 ---- a/apps/examples/rpmsg_sample_echo/rpmsg-sample-ping.c -+++ open-amp/apps/examples/rpmsg_sample_echo/rpmsg-sample-ping.c -@@ -20,7 +20,7 @@ - #define BYE_MSG "goodbye!" - #define MSG_LIMIT 100 - --#define APP_EPT_ADDR 0 -+#define APP_EPT_ADDR 1024 - #define LPRINTF(format, ...) printf(format, ##__VA_ARGS__) - #define LPERROR(format, ...) LPRINTF("ERROR: " format, ##__VA_ARGS__) - -diff --git a/apps/tests/msg/rpmsg-flood-ping.c open-amp/apps/tests/msg/rpmsg-flood-ping.c -index 66489f8..28edc66 100644 ---- a/apps/tests/msg/rpmsg-flood-ping.c -+++ open-amp/apps/tests/msg/rpmsg-flood-ping.c -@@ -12,7 +12,7 @@ - #include "platform_info.h" - #include "rpmsg-ping.h" - --#define APP_EPT_ADDR 0 -+#define APP_EPT_ADDR 1024 - #define LPRINTF(format, ...) printf(format, ##__VA_ARGS__) - #define LPERROR(format, ...) LPRINTF("ERROR: " format, ##__VA_ARGS__) - -diff --git a/apps/tests/msg/rpmsg-ping.c open-amp/apps/tests/msg/rpmsg-ping.c -index 0220a27..752b16c 100644 ---- a/apps/tests/msg/rpmsg-ping.c -+++ open-amp/apps/tests/msg/rpmsg-ping.c -@@ -11,7 +11,7 @@ This application echoes back data that was sent to it by the master core. */ - #include "platform_info.h" - #include "rpmsg-ping.h" - --#define APP_EPT_ADDR 0 -+#define APP_EPT_ADDR 1024 - #define LPRINTF(format, ...) printf(format, ##__VA_ARGS__) - #define LPERROR(format, ...) LPRINTF("ERROR: " format, ##__VA_ARGS__) - -diff --git a/apps/tests/msg/rpmsg-update.c open-amp/apps/tests/msg/rpmsg-update.c -index 9b26cac..b8e08db 100644 ---- a/apps/tests/msg/rpmsg-update.c -+++ open-amp/apps/tests/msg/rpmsg-update.c -@@ -73,7 +73,7 @@ int app(struct rpmsg_device *rdev, void *priv) - LPRINTF("Try to create rpmsg endpoint.\r\n"); - - ret = rpmsg_create_ept(&lept, rdev, RPMSG_SERVICE_NAME, -- 0, RPMSG_ADDR_ANY, rpmsg_endpoint_cb, -+ 1024, RPMSG_ADDR_ANY, rpmsg_endpoint_cb, - rpmsg_service_unbind); - if (ret) { - LPERROR("Failed to create endpoint.\r\n"); -diff --git a/lib/include/openamp/rpmsg.h open-amp/lib/include/openamp/rpmsg.h -index a08f9d3..3403240 100644 ---- a/lib/include/openamp/rpmsg.h -+++ open-amp/lib/include/openamp/rpmsg.h -@@ -25,22 +25,23 @@ extern "C" { - #endif - - /* Configurable parameters */ --#define RPMSG_NAME_SIZE (32) --#define RPMSG_ADDR_BMP_SIZE (128) -+#define RPMSG_NAME_SIZE (32) -+#define RPMSG_ADDR_BMP_SIZE (128) - --#define RPMSG_NS_EPT_ADDR (0x35) --#define RPMSG_ADDR_ANY 0xFFFFFFFF -+#define RPMSG_NS_EPT_ADDR (0x35) -+#define RPMSG_RESERVED_ADDRESSES (1024) -+#define RPMSG_ADDR_ANY 0xFFFFFFFF - - /* Error macros. */ --#define RPMSG_SUCCESS 0 --#define RPMSG_ERROR_BASE -2000 --#define RPMSG_ERR_NO_MEM (RPMSG_ERROR_BASE - 1) --#define RPMSG_ERR_NO_BUFF (RPMSG_ERROR_BASE - 2) --#define RPMSG_ERR_PARAM (RPMSG_ERROR_BASE - 3) --#define RPMSG_ERR_DEV_STATE (RPMSG_ERROR_BASE - 4) --#define RPMSG_ERR_BUFF_SIZE (RPMSG_ERROR_BASE - 5) --#define RPMSG_ERR_INIT (RPMSG_ERROR_BASE - 6) --#define RPMSG_ERR_ADDR (RPMSG_ERROR_BASE - 7) -+#define RPMSG_SUCCESS 0 -+#define RPMSG_ERROR_BASE -2000 -+#define RPMSG_ERR_NO_MEM (RPMSG_ERROR_BASE - 1) -+#define RPMSG_ERR_NO_BUFF (RPMSG_ERROR_BASE - 2) -+#define RPMSG_ERR_PARAM (RPMSG_ERROR_BASE - 3) -+#define RPMSG_ERR_DEV_STATE (RPMSG_ERROR_BASE - 4) -+#define RPMSG_ERR_BUFF_SIZE (RPMSG_ERROR_BASE - 5) -+#define RPMSG_ERR_INIT (RPMSG_ERROR_BASE - 6) -+#define RPMSG_ERR_ADDR (RPMSG_ERROR_BASE - 7) - - struct rpmsg_endpoint; - struct rpmsg_device; -diff --git a/lib/rpmsg/rpmsg.c open-amp/lib/rpmsg/rpmsg.c -index eee1c28..dcc39c1 100644 ---- a/lib/rpmsg/rpmsg.c -+++ open-amp/lib/rpmsg/rpmsg.c -@@ -29,7 +29,7 @@ static uint32_t rpmsg_get_address(unsigned long *bitmap, int size) - - nextbit = metal_bitmap_next_clear_bit(bitmap, 0, size); - if (nextbit < (uint32_t)size) { -- addr = nextbit; -+ addr = RPMSG_RESERVED_ADDRESSES + nextbit; - metal_bitmap_set_bit(bitmap, nextbit); - } - -@@ -48,7 +48,8 @@ static uint32_t rpmsg_get_address(unsigned long *bitmap, int size) - static void rpmsg_release_address(unsigned long *bitmap, int size, - int addr) - { -- if (addr < size) -+ addr -= RPMSG_RESERVED_ADDRESSES; -+ if (addr >= 0 && addr < size) - metal_bitmap_clear_bit(bitmap, addr); - } - -@@ -65,7 +66,8 @@ static void rpmsg_release_address(unsigned long *bitmap, int size, - */ - static int rpmsg_is_address_set(unsigned long *bitmap, int size, int addr) - { -- if (addr < size) -+ addr -= RPMSG_RESERVED_ADDRESSES; -+ if (addr >= 0 && addr < size) - return metal_bitmap_is_bit_set(bitmap, addr); - else - return RPMSG_ERR_PARAM; -@@ -84,7 +86,8 @@ static int rpmsg_is_address_set(unsigned long *bitmap, int size, int addr) - */ - static int rpmsg_set_address(unsigned long *bitmap, int size, int addr) - { -- if (addr < size) { -+ addr -= RPMSG_RESERVED_ADDRESSES; -+ if (addr >= 0 && addr < size) { - metal_bitmap_set_bit(bitmap, addr); - return RPMSG_SUCCESS; - } else { --- -2.17.1 - diff --git a/openamp/0004-rpmsg-wait-ept-ready-in-rpmsg_send.patch b/openamp/0003-rpmsg-wait-endpoint-ready-in-rpmsg_send-and-rpmsg_se.patch similarity index 66% rename from openamp/0004-rpmsg-wait-ept-ready-in-rpmsg_send.patch rename to openamp/0003-rpmsg-wait-endpoint-ready-in-rpmsg_send-and-rpmsg_se.patch index df72f2ff331..673a319e663 100644 --- a/openamp/0004-rpmsg-wait-ept-ready-in-rpmsg_send.patch +++ b/openamp/0003-rpmsg-wait-endpoint-ready-in-rpmsg_send-and-rpmsg_se.patch @@ -1,18 +1,19 @@ -From 8a55f0f3c2fec8c817ad579b070040ee8058c536 Mon Sep 17 00:00:00 2001 -From: ligd +From b84c7f48996a9bbacdddcef9929405f674a73a81 Mon Sep 17 00:00:00 2001 +From: Guiding Li Date: Wed, 20 Feb 2019 11:36:57 +0800 -Subject: [PATCH 04/10] rpmsg: wait ept ready in rpmsg_send +Subject: [PATCH 3/3] rpmsg: wait endpoint ready in rpmsg_send and + rpmsg_send_nocopy -since the destination address need time to return from peer +because the remote need time to return the destination address -Signed-off-by: ligd +Signed-off-by: Guiding Li --- - lib/include/openamp/rpmsg.h | 48 ++++++++++++++++++++++++------------- - lib/rpmsg/rpmsg_virtio.c | 7 ------ - 2 files changed, 32 insertions(+), 23 deletions(-) + lib/include/openamp/rpmsg.h | 59 ++++++++++++++++++++++++++----------- + lib/rpmsg/rpmsg_virtio.c | 7 ----- + 2 files changed, 42 insertions(+), 24 deletions(-) diff --git a/lib/include/openamp/rpmsg.h open-amp/lib/include/openamp/rpmsg.h -index 3403240..7000453 100644 +index efdfb2b..5c8b45c 100644 --- a/lib/include/openamp/rpmsg.h +++ open-amp/lib/include/openamp/rpmsg.h @@ -15,6 +15,7 @@ @@ -36,8 +37,8 @@ index 3403240..7000453 100644 /* Error macros. */ #define RPMSG_SUCCESS 0 #define RPMSG_ERROR_BASE -2000 -@@ -129,6 +136,20 @@ int rpmsg_send_offchannel_raw(struct rpmsg_endpoint *ept, uint32_t src, - uint32_t dst, const void *data, int size, +@@ -141,6 +148,19 @@ int rpmsg_send_offchannel_raw(struct rpmsg_endpoint *ept, uint32_t src, + uint32_t dst, const void *data, int len, int wait); +/** @@ -50,14 +51,13 @@ index 3403240..7000453 100644 + */ +static inline unsigned int is_rpmsg_ept_ready(struct rpmsg_endpoint *ept) +{ -+ return (ept->dest_addr != RPMSG_ADDR_ANY) && -+ (ept->addr != RPMSG_ADDR_ANY); ++ return ept && ept->rdev && ept->dest_addr != RPMSG_ADDR_ANY; +} + /** * rpmsg_send() - send a message across to the remote processor * @ept: the rpmsg endpoint -@@ -147,8 +168,17 @@ int rpmsg_send_offchannel_raw(struct rpmsg_endpoint *ept, uint32_t src, +@@ -159,8 +179,17 @@ int rpmsg_send_offchannel_raw(struct rpmsg_endpoint *ept, uint32_t src, static inline int rpmsg_send(struct rpmsg_endpoint *ept, const void *data, int len) { @@ -77,7 +77,27 @@ index 3403240..7000453 100644 } /** -@@ -328,20 +358,6 @@ int rpmsg_create_ept(struct rpmsg_endpoint *ept, struct rpmsg_device *rdev, +@@ -433,8 +462,17 @@ static inline int rpmsg_sendto_nocopy(struct rpmsg_endpoint *ept, + static inline int rpmsg_send_nocopy(struct rpmsg_endpoint *ept, + const void *data, int len) + { +- return rpmsg_send_offchannel_nocopy(ept, ept->addr, +- ept->dest_addr, data, len); ++ int tc = 0; ++ ++ for (; tc < RPMSG_TICK_COUNT; tc += RPMSG_TICKS_PER_INTERVAL) { ++ if (is_rpmsg_ept_ready(ept)) ++ return rpmsg_send_offchannel_nocopy(ept, ept->addr, ++ ept->dest_addr, ++ data, len); ++ metal_sleep_usec(RPMSG_TICKS_PER_INTERVAL); ++ } ++ ++ return RPMSG_ERR_ADDR; + } + + /** +@@ -507,19 +545,6 @@ int rpmsg_create_ept(struct rpmsg_endpoint *ept, struct rpmsg_device *rdev, */ void rpmsg_destroy_ept(struct rpmsg_endpoint *ept); @@ -91,15 +111,14 @@ index 3403240..7000453 100644 - */ -static inline unsigned int is_rpmsg_ept_ready(struct rpmsg_endpoint *ept) -{ -- return (ept->dest_addr != RPMSG_ADDR_ANY) && -- (ept->addr != RPMSG_ADDR_ANY); +- return ept && ept->rdev && ept->dest_addr != RPMSG_ADDR_ANY; -} - #if defined __cplusplus } #endif diff --git a/lib/rpmsg/rpmsg_virtio.c open-amp/lib/rpmsg/rpmsg_virtio.c -index 4dea4c0..44b46d4 100644 +index 164dc70..c357ba8 100644 --- a/lib/rpmsg/rpmsg_virtio.c +++ open-amp/lib/rpmsg/rpmsg_virtio.c @@ -8,7 +8,6 @@ diff --git a/openamp/0005-rpmsg-return-fail-if-either-source-or-destination-ad.patch b/openamp/0005-rpmsg-return-fail-if-either-source-or-destination-ad.patch deleted file mode 100644 index fbf9cdfb8f9..00000000000 --- a/openamp/0005-rpmsg-return-fail-if-either-source-or-destination-ad.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 3ea6f30819b25281ec80c68b3abd779981311a77 Mon Sep 17 00:00:00 2001 -From: Xiang Xiao -Date: Fri, 24 Apr 2020 02:22:15 +0800 -Subject: [PATCH 05/10] rpmsg: return fail if either source or destination - address is zero - -to help detect rpmsg_send is called before the endpoint -initialization or after the endpoint uninitialization - -Signed-off-by: Xiang Xiao ---- - lib/include/openamp/rpmsg.h | 3 +-- - lib/rpmsg/rpmsg.c | 2 +- - 2 files changed, 2 insertions(+), 3 deletions(-) - -diff --git a/lib/include/openamp/rpmsg.h open-amp/lib/include/openamp/rpmsg.h -index 7000453..1279ea2 100644 ---- a/lib/include/openamp/rpmsg.h -+++ open-amp/lib/include/openamp/rpmsg.h -@@ -146,8 +146,7 @@ int rpmsg_send_offchannel_raw(struct rpmsg_endpoint *ept, uint32_t src, - */ - static inline unsigned int is_rpmsg_ept_ready(struct rpmsg_endpoint *ept) - { -- return (ept->dest_addr != RPMSG_ADDR_ANY) && -- (ept->addr != RPMSG_ADDR_ANY); -+ return ept && ept->rdev && ept->dest_addr && ept->dest_addr != RPMSG_ADDR_ANY; - } - - /** -diff --git a/lib/rpmsg/rpmsg.c open-amp/lib/rpmsg/rpmsg.c -index dcc39c1..9da38a1 100644 ---- a/lib/rpmsg/rpmsg.c -+++ open-amp/lib/rpmsg/rpmsg.c -@@ -115,7 +115,7 @@ int rpmsg_send_offchannel_raw(struct rpmsg_endpoint *ept, uint32_t src, - { - struct rpmsg_device *rdev; - -- if (!ept || !ept->rdev || !data || dst == RPMSG_ADDR_ANY) -+ if (!ept || !ept->rdev || !data || !dst || dst == RPMSG_ADDR_ANY) - return RPMSG_ERR_PARAM; - - rdev = ept->rdev; --- -2.17.1 - diff --git a/openamp/0006-remoteproc_mmap-support-va-to-pa-da-conversion.patch b/openamp/0006-remoteproc_mmap-support-va-to-pa-da-conversion.patch deleted file mode 100644 index 3c915e825d1..00000000000 --- a/openamp/0006-remoteproc_mmap-support-va-to-pa-da-conversion.patch +++ /dev/null @@ -1,780 +0,0 @@ -From 27026fc4c781a9dbd328059884b9b94ff39ad6b9 Mon Sep 17 00:00:00 2001 -From: Xiang Xiao -Date: Fri, 15 Mar 2019 01:51:03 +0800 -Subject: [PATCH 06/10] remoteproc_mmap support va to pa/da conversion - -1.change va from output to input/output -2.remoteproc_get_io_xxx fallback to mmap callback - -Signed-off-by: Xiang Xiao ---- - .../load_fw/zynqmp_r5_lcm_rproc_example.c | 69 +++++------ - apps/machine/zynq7/platform_info.c | 16 +-- - apps/machine/zynq7/zynq_a9_rproc.c | 40 ++++--- - apps/machine/zynqmp/platform_info.c | 6 +- - apps/machine/zynqmp/zynqmp_linux_r5_proc.c | 40 ++++--- - apps/machine/zynqmp_r5/platform_info.c | 16 +-- - apps/machine/zynqmp_r5/zynqmp_r5_a53_rproc.c | 38 +++---- - .../linux/machine/generic/platform_info.c | 52 +++++---- - lib/include/openamp/remoteproc.h | 19 ++-- - lib/remoteproc/remoteproc.c | 107 ++++++++++-------- - lib/remoteproc/rsc_table_parser.c | 2 +- - 11 files changed, 209 insertions(+), 196 deletions(-) - -diff --git a/apps/examples/load_fw/zynqmp_r5_lcm_rproc_example.c open-amp/apps/examples/load_fw/zynqmp_r5_lcm_rproc_example.c -index 26a09e5..e224631 100644 ---- a/apps/examples/load_fw/zynqmp_r5_lcm_rproc_example.c -+++ open-amp/apps/examples/load_fw/zynqmp_r5_lcm_rproc_example.c -@@ -137,86 +137,79 @@ void r5_rproc_remove(struct remoteproc *rproc) - } - } - --void *r5_rproc_mmap(struct remoteproc *rproc, -- metal_phys_addr_t *pa, metal_phys_addr_t *da, -- size_t size, unsigned int attribute, -- struct metal_io_region **io) -+int r5_rproc_mmap(struct remoteproc *rproc, -+ metal_phys_addr_t *pa, metal_phys_addr_t *da, -+ void **va, size_t size, unsigned int attribute, -+ struct metal_io_region **io) - { - struct remoteproc_mem *mem; -+ struct metal_io_region *tmpio; - struct r5_rproc_priv *priv; -- metal_phys_addr_t lpa, lda; - - priv = rproc->priv; - -- if (!da || !pa) -- return NULL; - LPRINTF("%s: pa=0x%x, da=0x%x, size=0x%x, atrribute=0x%x\r\n", - __func__, *pa, *da, size, attribute); -- lda = *da; -- lpa = *pa; - if (!attribute) - attribute = NORM_SHARED_NCACHE | PRIV_RW_USER_RW; -- if (lda <= 0x40000) { -+ if (*da <= 0x40000) { - metal_phys_addr_t lda_end; - -- lda_end = lda + size; -+ lda_end = *da + size; - if (priv->cpu_id == NODE_RPU_0 || priv->cpu_id == NODE_RPU) { -- lpa = 0xFFE00000 + lda; -- if (lda < 0x10000) -+ *pa = 0xFFE00000 + *da; -+ if (*da < 0x10000) - XPm_RequestNode(NODE_TCM_0_A, - PM_CAP_ACCESS, 0, - REQUEST_ACK_BLOCKING); -- if (lda <= 0x20000 && lda_end >= 0x10000) -+ if (*da <= 0x20000 && lda_end >= 0x10000) - XPm_RequestNode(NODE_TCM_1_A, - PM_CAP_ACCESS, 0, - REQUEST_ACK_BLOCKING); -- if (lda <= 0x30000 && lda_end >= 0x20000) -+ if (*da <= 0x30000 && lda_end >= 0x20000) - XPm_RequestNode(NODE_TCM_0_B, - PM_CAP_ACCESS, 0, - REQUEST_ACK_BLOCKING); -- if (lda <= 0x40000 && lda_end >= 0x30000) -+ if (*da <= 0x40000 && lda_end >= 0x30000) - XPm_RequestNode(NODE_TCM_1_B, - PM_CAP_ACCESS, 0, - REQUEST_ACK_BLOCKING); - } else if (priv->cpu_id == NODE_RPU_1) { -- lpa = 0xFFE90000 + lda; -- if (lda < 0x10000) -+ *pa = 0xFFE90000 + *da; -+ if (*da < 0x10000) - XPm_RequestNode(NODE_TCM_1_A, - PM_CAP_ACCESS, 0, - REQUEST_ACK_BLOCKING); -- if (lda <= 0x30000 && lda_end >= 0x20000) -+ if (*da <= 0x30000 && lda_end >= 0x20000) - XPm_RequestNode(NODE_TCM_1_B, - PM_CAP_ACCESS, 0, - REQUEST_ACK_BLOCKING); - } else { - LPERROR("mmap failed: invalid cpu node: %d\r\n", - priv->cpu_id); -- return NULL; -+ return -RPROC_EINVAL; - } - } -- if (lpa == METAL_BAD_PHYS) -- lpa = lda; -- if (lpa == METAL_BAD_PHYS) -- return NULL; -+ if (*pa == METAL_BAD_PHYS) -+ *pa = *da; -+ if (*pa == METAL_BAD_PHYS) -+ return -RPROC_EINVAL; - mem = metal_allocate_memory(sizeof(*mem)); - if (!mem) -- return NULL; -- mem->pa = lpa; -- mem->da = lda; -- -- *io = metal_allocate_memory(sizeof(struct metal_io_region)); -- if (!*io) { -+ return -RPROC_ENOMEM; -+ tmpio = metal_allocate_memory(sizeof(struct metal_io_region)); -+ if (!tmpio) { - metal_free_memory(mem); -- return NULL; -+ return -RPROC_ENOMEM; - } -- metal_io_init(*io, (void *)mem->pa, &mem->pa, size, -+ remoteproc_init_mem(mem, NULL, *pa, *da, size, tmpio); -+ metal_io_init(tmpio, (void *)mem->pa, &mem->pa, size, - sizeof(metal_phys_addr_t)<<3, attribute, NULL); -- mem->io = *io; -- metal_list_add_tail(&rproc->mems, &mem->node); -- *pa = lpa; -- *da = lda; -- mem->size = size; -- return metal_io_phys_to_virt(*io, mem->pa); -+ remoteproc_add_mem(rproc, mem); -+ *va = metal_io_phys_to_virt(tmpio, mem->pa); -+ if (io) -+ *io = tmpio; -+ return 0; - } - - int r5_rproc_start(struct remoteproc *rproc) -diff --git a/apps/machine/zynq7/platform_info.c open-amp/apps/machine/zynq7/platform_info.c -index d753e0e..7885b31 100644 ---- a/apps/machine/zynq7/platform_info.c -+++ open-amp/apps/machine/zynq7/platform_info.c -@@ -108,16 +108,16 @@ platform_create_proc(int proc_index, int rsc_index) - */ - /* mmap resource table */ - pa = (metal_phys_addr_t)rsc_table; -- (void *)remoteproc_mmap(&rproc_inst, &pa, -- NULL, rsc_size, -- NORM_NONCACHE | STRONG_ORDERED, -- &rproc_inst.rsc_io); -+ remoteproc_mmap(&rproc_inst, &pa, -+ NULL, NULL, rsc_size, -+ NORM_NONCACHE | STRONG_ORDERED, -+ &rproc_inst.rsc_io); - /* mmap shared memory */ - pa = SHARED_MEM_PA; -- (void *)remoteproc_mmap(&rproc_inst, &pa, -- NULL, SHARED_MEM_SIZE, -- NORM_NONCACHE | STRONG_ORDERED, -- NULL); -+ remoteproc_mmap(&rproc_inst, &pa, -+ NULL, NULL, SHARED_MEM_SIZE, -+ NORM_NONCACHE | STRONG_ORDERED, -+ NULL); - - /* parse resource table to remoteproc */ - ret = remoteproc_set_rsc_table(&rproc_inst, rsc_table, rsc_size); -diff --git a/apps/machine/zynq7/zynq_a9_rproc.c open-amp/apps/machine/zynq7/zynq_a9_rproc.c -index f830749..ad7cd49 100644 ---- a/apps/machine/zynq7/zynq_a9_rproc.c -+++ open-amp/apps/machine/zynq7/zynq_a9_rproc.c -@@ -94,45 +94,43 @@ static void zynq_a9_proc_remove(struct remoteproc *rproc) - metal_device_close(dev); - } - --static void * -+static int - zynq_a9_proc_mmap(struct remoteproc *rproc, metal_phys_addr_t *pa, -- metal_phys_addr_t *da, size_t size, -- unsigned int attribute, struct metal_io_region **io) -+ metal_phys_addr_t *da, void **va, size_t size, -+ unsigned int attribute, struct metal_io_region **io) - { - struct remoteproc_mem *mem; -- metal_phys_addr_t lpa, lda; - struct metal_io_region *tmpio; - -- lpa = *pa; -- lda = *da; -- -- if (lpa == METAL_BAD_PHYS && lda == METAL_BAD_PHYS) -- return NULL; -- if (lpa == METAL_BAD_PHYS) -- lpa = lda; -- if (lda == METAL_BAD_PHYS) -- lda = lpa; -+ /* va is the same as pa/da in this platform */ -+ if (*pa != METAL_BAD_PHYS) { -+ *da = *pa; -+ *va = (void *)*pa; -+ } else if (*da != METAL_BAD_PHYS) { -+ *pa = *da; -+ *va = (void *)*da; -+ } else if (*va) -+ *pa = *da = (metal_phys_addr_t)*va; -+ else -+ return -RPROC_EINVAL; - - if (!attribute) - attribute = NORM_NONCACHE | STRONG_ORDERED; - mem = metal_allocate_memory(sizeof(*mem)); - if (!mem) -- return NULL; -+ return -RPROC_ENOMEM; - tmpio = metal_allocate_memory(sizeof(*tmpio)); - if (!tmpio) { - metal_free_memory(mem); -- return NULL; -+ return -RPROC_ENOMEM; - } -- remoteproc_init_mem(mem, NULL, lpa, lda, size, tmpio); -- /* va is the same as pa in this platform */ -- metal_io_init(tmpio, (void *)lpa, &mem->pa, size, -+ remoteproc_init_mem(mem, NULL, *pa, *da, size, tmpio); -+ metal_io_init(tmpio, *va, &mem->pa, size, - sizeof(metal_phys_addr_t)<<3, attribute, NULL); - remoteproc_add_mem(rproc, mem); -- *pa = lpa; -- *da = lda; - if (io) - *io = tmpio; -- return metal_io_phys_to_virt(tmpio, mem->pa); -+ return 0; - } - - static int zynq_a9_proc_notify(struct remoteproc *rproc, uint32_t id) -diff --git a/apps/machine/zynqmp/platform_info.c open-amp/apps/machine/zynqmp/platform_info.c -index 3081ec9..17abcc5 100644 ---- a/apps/machine/zynqmp/platform_info.c -+++ open-amp/apps/machine/zynqmp/platform_info.c -@@ -84,7 +84,7 @@ static struct rpmsg_virtio_shm_pool shpool; - static struct remoteproc * - platform_create_proc(int proc_index, int rsc_index) - { -- void *rsc_table; -+ void *rsc_table = NULL; - int rsc_size; - int ret; - metal_phys_addr_t pa; -@@ -102,8 +102,8 @@ platform_create_proc(int proc_index, int rsc_index) - /* Mmap resource table */ - pa = RSC_MEM_PA; - printf("Calling mmap resource table.\r\n"); -- rsc_table = remoteproc_mmap(&rproc_inst, &pa, NULL, rsc_size, -- 0, NULL); -+ remoteproc_mmap(&rproc_inst, &pa, NULL, &rsc_table, rsc_size, -+ 0, NULL); - if (!rsc_table) { - fprintf(stderr, "ERROR: Failed to mmap resource table.\r\n"); - return NULL; -diff --git a/apps/machine/zynqmp/zynqmp_linux_r5_proc.c open-amp/apps/machine/zynqmp/zynqmp_linux_r5_proc.c -index 2e4df9d..0950d0b 100644 ---- a/apps/machine/zynqmp/zynqmp_linux_r5_proc.c -+++ open-amp/apps/machine/zynqmp/zynqmp_linux_r5_proc.c -@@ -143,38 +143,44 @@ static void zynqmp_linux_r5_proc_remove(struct remoteproc *rproc) - metal_device_close(prproc->shm_dev); - } - --static void * -+static int - zynqmp_linux_r5_proc_mmap(struct remoteproc *rproc, metal_phys_addr_t *pa, -- metal_phys_addr_t *da, size_t size, -- unsigned int attribute, struct metal_io_region **io) -+ metal_phys_addr_t *da, void **va, size_t size, -+ unsigned int attribute, struct metal_io_region **io) - { - struct remoteproc_priv *prproc; -- metal_phys_addr_t lpa, lda; - struct metal_io_region *tmpio; - - (void)attribute; - (void)size; - if (!rproc) -- return NULL; -+ return -RPROC_EINVAL; - prproc = rproc->priv; -- lpa = *pa; -- lda = *da; - -- if (lpa == METAL_BAD_PHYS && lda == METAL_BAD_PHYS) -- return NULL; -- if (lpa == METAL_BAD_PHYS) -- lpa = lda; -- if (lda == METAL_BAD_PHYS) -- lda = lpa; - tmpio = prproc->shm_io; - if (!tmpio) -- return NULL; -+ return -RPROC_EINVAL; -+ -+ if (*pa != METAL_BAD_PHYS) { -+ *da = *pa; -+ *va = metal_io_phys_to_virt(tmpio, *pa); -+ if (!*va) -+ return -RPROC_EINVAL; -+ } else if (*da != METAL_BAD_PHYS) { -+ *pa = *da; -+ *va = metal_io_phys_to_virt(tmpio, *da); -+ if (!*va) -+ return -RPROC_EINVAL; -+ } else if (*va) { -+ *pa = *da = metal_io_virt_to_phys(tmpio, *va); -+ if (*pa == METAL_BAD_PHYS) -+ return -RPROC_EINVAL; -+ } else -+ return -RPROC_EINVAL; - -- *pa = lpa; -- *da = lda; - if (io) - *io = tmpio; -- return metal_io_phys_to_virt(tmpio, lpa); -+ return 0; - } - - static int zynqmp_linux_r5_proc_notify(struct remoteproc *rproc, uint32_t id) -diff --git a/apps/machine/zynqmp_r5/platform_info.c open-amp/apps/machine/zynqmp_r5/platform_info.c -index 96c03c9..a2f7d9d 100644 ---- a/apps/machine/zynqmp_r5/platform_info.c -+++ open-amp/apps/machine/zynqmp_r5/platform_info.c -@@ -114,16 +114,16 @@ platform_create_proc(int proc_index, int rsc_index) - */ - /* mmap resource table */ - pa = (metal_phys_addr_t)rsc_table; -- (void *)remoteproc_mmap(&rproc_inst, &pa, -- NULL, rsc_size, -- NORM_NSHARED_NCACHE|PRIV_RW_USER_RW, -- &rproc_inst.rsc_io); -+ remoteproc_mmap(&rproc_inst, &pa, -+ NULL, NULL, rsc_size, -+ NORM_NSHARED_NCACHE|PRIV_RW_USER_RW, -+ &rproc_inst.rsc_io); - /* mmap shared memory */ - pa = SHARED_MEM_PA; -- (void *)remoteproc_mmap(&rproc_inst, &pa, -- NULL, SHARED_MEM_SIZE, -- NORM_NSHARED_NCACHE|PRIV_RW_USER_RW, -- NULL); -+ remoteproc_mmap(&rproc_inst, &pa, -+ NULL, NULL, SHARED_MEM_SIZE, -+ NORM_NSHARED_NCACHE|PRIV_RW_USER_RW, -+ NULL); - - /* parse resource table to remoteproc */ - ret = remoteproc_set_rsc_table(&rproc_inst, rsc_table, rsc_size); -diff --git a/apps/machine/zynqmp_r5/zynqmp_r5_a53_rproc.c open-amp/apps/machine/zynqmp_r5/zynqmp_r5_a53_rproc.c -index ee25368..ef5299c 100644 ---- a/apps/machine/zynqmp_r5/zynqmp_r5_a53_rproc.c -+++ open-amp/apps/machine/zynqmp_r5/zynqmp_r5_a53_rproc.c -@@ -109,45 +109,43 @@ static void zynqmp_r5_a53_proc_remove(struct remoteproc *rproc) - } - } - --static void * -+static int - zynqmp_r5_a53_proc_mmap(struct remoteproc *rproc, metal_phys_addr_t *pa, -- metal_phys_addr_t *da, size_t size, -+ metal_phys_addr_t *da, void **va, size_t size, - unsigned int attribute, struct metal_io_region **io) - { - struct remoteproc_mem *mem; -- metal_phys_addr_t lpa, lda; - struct metal_io_region *tmpio; - -- lpa = *pa; -- lda = *da; -- -- if (lpa == METAL_BAD_PHYS && lda == METAL_BAD_PHYS) -- return NULL; -- if (lpa == METAL_BAD_PHYS) -- lpa = lda; -- if (lda == METAL_BAD_PHYS) -- lda = lpa; -+ /* va is the same as pa/da in this platform */ -+ if (*pa != METAL_BAD_PHYS) { -+ *da = *pa; -+ *va = (void *)*pa; -+ } else if (*da != METAL_BAD_PHYS) { -+ *pa = *da; -+ *va = (void *)*da; -+ } else if (*va) -+ *pa = *da = (metal_phys_addr_t)*va; -+ else -+ return -RPROC_EINVAL; - - if (!attribute) - attribute = NORM_SHARED_NCACHE | PRIV_RW_USER_RW; - mem = metal_allocate_memory(sizeof(*mem)); - if (!mem) -- return NULL; -+ return -RPROC_ENOMEM; - tmpio = metal_allocate_memory(sizeof(*tmpio)); - if (!tmpio) { - metal_free_memory(mem); -- return NULL; -+ return -RPROC_ENOMEM; - } -- remoteproc_init_mem(mem, NULL, lpa, lda, size, tmpio); -- /* va is the same as pa in this platform */ -- metal_io_init(tmpio, (void *)lpa, &mem->pa, size, -+ remoteproc_init_mem(mem, NULL, *pa, *da, size, tmpio); -+ metal_io_init(tmpio, *va, &mem->pa, size, - sizeof(metal_phys_addr_t)<<3, attribute, NULL); - remoteproc_add_mem(rproc, mem); -- *pa = lpa; -- *da = lda; - if (io) - *io = tmpio; -- return metal_io_phys_to_virt(tmpio, mem->pa); -+ return 0; - } - - static int zynqmp_r5_a53_proc_notify(struct remoteproc *rproc, uint32_t id) -diff --git a/apps/system/linux/machine/generic/platform_info.c open-amp/apps/system/linux/machine/generic/platform_info.c -index 0b0f721..748fd83 100644 ---- a/apps/system/linux/machine/generic/platform_info.c -+++ open-amp/apps/system/linux/machine/generic/platform_info.c -@@ -300,39 +300,43 @@ static void linux_proc_remove(struct remoteproc *rproc) - } - } - --static void * -+static int - linux_proc_mmap(struct remoteproc *rproc, metal_phys_addr_t *pa, -- metal_phys_addr_t *da, size_t size, -+ metal_phys_addr_t *da, void **va, size_t size, - unsigned int attribute, struct metal_io_region **io) - { - struct remoteproc_mem *mem; - struct remoteproc_priv *prproc; -- metal_phys_addr_t lpa, lda; -- void *va; - - (void)attribute; - (void)size; -- lpa = *pa; -- lda = *da; -- -- if (lpa == METAL_BAD_PHYS && lda == METAL_BAD_PHYS) -- return NULL; -- if (lpa == METAL_BAD_PHYS) -- lpa = lda; -- if (lda == METAL_BAD_PHYS) -- lda = lpa; - - if (!rproc) -- return NULL; -+ return -RPROC_EINVAL; - prproc = rproc->priv; - mem = &prproc->shm; -- va = metal_io_phys_to_virt(mem->io, lpa); -- if (va) { -- if (io) -- *io = mem->io; -- metal_list_add_tail(&rproc->mems, &mem->node); -- } -- return va; -+ -+ if (*pa != METAL_BAD_PHYS) { -+ *da = *pa; -+ *va = metal_io_phys_to_virt(mem->io, *pa); -+ if (!*va) -+ return -RPROC_EINVAL; -+ } else if (*da != METAL_BAD_PHYS) { -+ *pa = *da; -+ *va = metal_io_phys_to_virt(mem->io, *da); -+ if (!*va) -+ return -RPROC_EINVAL; -+ } else if (*va) { -+ *pa = *da = metal_io_virt_to_phys(mem->io, *va); -+ if (*pa == METAL_BAD_PHYS) -+ return -RPROC_EINVAL; -+ } else -+ return -RPROC_EINVAL; -+ -+ remoteproc_add_mem(rproc, mem); -+ if (io) -+ *io = mem->io; -+ return 0; - } - - static int linux_proc_notify(struct remoteproc *rproc, uint32_t id) -@@ -391,7 +395,7 @@ static struct remoteproc * - platform_create_proc(int proc_index, int rsc_index) - { - struct remoteproc_priv *prproc; -- void *rsc_table, *rsc_table_shm; -+ void *rsc_table, *rsc_table_shm = NULL; - int rsc_size; - int ret; - metal_phys_addr_t pa; -@@ -420,8 +424,8 @@ platform_create_proc(int proc_index, int rsc_index) - - /* Mmap resource table */ - pa = RSC_MEM_PA; -- rsc_table_shm = remoteproc_mmap(&rproc_inst, &pa, NULL, rsc_size, -- 0, &rproc_inst.rsc_io); -+ remoteproc_mmap(&rproc_inst, &pa, NULL, &rsc_table_shm, rsc_size, -+ 0, &rproc_inst.rsc_io); - - /* parse resource table to remoteproc */ - ret = remoteproc_set_rsc_table(&rproc_inst, rsc_table_shm, rsc_size); -diff --git a/lib/include/openamp/remoteproc.h open-amp/lib/include/openamp/remoteproc.h -index a83aa12..b34cb1a 100644 ---- a/lib/include/openamp/remoteproc.h -+++ open-amp/lib/include/openamp/remoteproc.h -@@ -400,10 +400,10 @@ struct remoteproc_ops { - struct remoteproc *(*init)(struct remoteproc *rproc, - struct remoteproc_ops *ops, void *arg); - void (*remove)(struct remoteproc *rproc); -- void *(*mmap)(struct remoteproc *rproc, -- metal_phys_addr_t *pa, metal_phys_addr_t *da, -- size_t size, unsigned int attribute, -- struct metal_io_region **io); -+ int (*mmap)(struct remoteproc *rproc, -+ metal_phys_addr_t *pa, metal_phys_addr_t *da, -+ void **va, size_t size, unsigned int attribute, -+ struct metal_io_region **io); - int (*handle_rsc)(struct remoteproc *rproc, void *rsc, size_t len); - int (*config)(struct remoteproc *rproc, void *data); - int (*start)(struct remoteproc *rproc); -@@ -606,16 +606,17 @@ remoteproc_get_io_with_va(struct remoteproc *rproc, - * @rproc - pointer to the remote processor - * @pa - physical address pointer - * @da - device address pointer -+ * @va - virtual address pointer - * @size - size of the memory - * @attribute - memory attribute - * @io - pointer to the I/O region - * -- * returns pointer to the memory -+ * returns 0 for success and negative value for errors - */ --void *remoteproc_mmap(struct remoteproc *rproc, -- metal_phys_addr_t *pa, metal_phys_addr_t *da, -- size_t size, unsigned int attribute, -- struct metal_io_region **io); -+int remoteproc_mmap(struct remoteproc *rproc, -+ metal_phys_addr_t *pa, metal_phys_addr_t *da, -+ void **va, size_t size, unsigned int attribute, -+ struct metal_io_region **io); - - /** - * remoteproc_set_rsc_table -diff --git a/lib/remoteproc/remoteproc.c open-amp/lib/remoteproc/remoteproc.c -index 5afb40c..34b8cb8 100644 ---- a/lib/remoteproc/remoteproc.c -+++ open-amp/lib/remoteproc/remoteproc.c -@@ -295,13 +295,14 @@ struct metal_io_region * - remoteproc_get_io_with_pa(struct remoteproc *rproc, - metal_phys_addr_t pa) - { -- struct remoteproc_mem *mem; -+ struct metal_io_region *io; -+ int ret; - -- mem = remoteproc_get_mem(rproc, NULL, pa, METAL_BAD_PHYS, NULL, 0); -- if (mem) -- return mem->io; -- else -+ ret = remoteproc_mmap(rproc, &pa, NULL, NULL, 0, 0, &io); -+ if (ret < 0) - return NULL; -+ -+ return io; - } - - struct metal_io_region * -@@ -309,48 +310,44 @@ remoteproc_get_io_with_da(struct remoteproc *rproc, - metal_phys_addr_t da, - unsigned long *offset) - { -- struct remoteproc_mem *mem; -- -- mem = remoteproc_get_mem(rproc, NULL, METAL_BAD_PHYS, da, NULL, 0); -- if (mem) { -- struct metal_io_region *io; -- metal_phys_addr_t pa; -+ struct metal_io_region *io; -+ metal_phys_addr_t pa = METAL_BAD_PHYS; -+ int ret; - -- io = mem->io; -- pa = remoteproc_datopa(mem, da); -- *offset = metal_io_phys_to_offset(io, pa); -- return io; -- } else { -+ ret = remoteproc_mmap(rproc, &pa, &da, NULL, 0, 0, &io); -+ if (ret < 0) - return NULL; -- } -+ -+ *offset = metal_io_phys_to_offset(io, pa); -+ return io; - } - - struct metal_io_region * - remoteproc_get_io_with_va(struct remoteproc *rproc, void *va) - { -- struct remoteproc_mem *mem; -+ struct metal_io_region *io; -+ int ret; - -- mem = remoteproc_get_mem(rproc, NULL, METAL_BAD_PHYS, METAL_BAD_PHYS, -- va, 0); -- if (mem) -- return mem->io; -- else -+ ret = remoteproc_mmap(rproc, NULL, NULL, &va, 0, 0, &io); -+ if (ret < 0) - return NULL; -+ -+ return io; - } - --void *remoteproc_mmap(struct remoteproc *rproc, -- metal_phys_addr_t *pa, metal_phys_addr_t *da, -- size_t size, unsigned int attribute, -- struct metal_io_region **io) -+int remoteproc_mmap(struct remoteproc *rproc, -+ metal_phys_addr_t *pa, metal_phys_addr_t *da, -+ void **va, size_t size, unsigned int attribute, -+ struct metal_io_region **io) - { -- void *va = NULL; -+ void *lva = NULL; - metal_phys_addr_t lpa, lda; - struct remoteproc_mem *mem; - - if (!rproc) -- return NULL; -- else if (!pa && !da) -- return NULL; -+ return -RPROC_EINVAL; -+ else if (!pa && !da && !va) -+ return -RPROC_EINVAL; - if (pa) - lpa = *pa; - else -@@ -359,24 +356,40 @@ void *remoteproc_mmap(struct remoteproc *rproc, - lda = *da; - else - lda = METAL_BAD_PHYS; -- mem = remoteproc_get_mem(rproc, NULL, lpa, lda, NULL, size); -+ if (va) -+ lva = *va; -+ mem = remoteproc_get_mem(rproc, NULL, lpa, lda, lva, size); - if (mem) { -- if (lpa != METAL_BAD_PHYS) -+ if (lpa != METAL_BAD_PHYS) { - lda = remoteproc_patoda(mem, lpa); -- else if (lda != METAL_BAD_PHYS) -+ lva = metal_io_phys_to_virt(mem->io, lpa); -+ } else if (lda != METAL_BAD_PHYS) { - lpa = remoteproc_datopa(mem, lda); -+ lva = metal_io_phys_to_virt(mem->io, lpa); -+ } else if (lva != NULL) { -+ lpa = metal_io_virt_to_phys(mem->io, lva); -+ lda = remoteproc_patoda(mem, lpa); -+ } - if (io) - *io = mem->io; -- va = metal_io_phys_to_virt(mem->io, lpa); -- } else if (rproc->ops->mmap) { -- va = rproc->ops->mmap(rproc, &lpa, &lda, size, attribute, io); -+ } else { -+ int ret = -RPROC_EINVAL; -+ -+ if (rproc->ops->mmap) -+ ret = rproc->ops->mmap(rproc, &lpa, &lda, &lva, size, attribute, io); -+ -+ if (ret < 0) -+ return ret; - } - - if (pa) - *pa = lpa; - if (da) - *da = lda; -- return va; -+ if (va) -+ *va = lva; -+ -+ return 0; - } - - int remoteproc_load(struct remoteproc *rproc, const char *path, -@@ -529,8 +542,7 @@ int remoteproc_load(struct remoteproc *rproc, const char *path, - img_data = NULL; - /* get the I/O region from remoteproc */ - pa = METAL_BAD_PHYS; -- (void)remoteproc_mmap(rproc, &pa, &da, nmemsize, 0, -- &io); -+ remoteproc_mmap(rproc, &pa, &da, NULL, nmemsize, 0, &io); - if (pa == METAL_BAD_PHYS || !io) { - metal_log(METAL_LOG_ERROR, - "load failed, no mapping for 0x%llx.\r\n", -@@ -600,8 +612,9 @@ int remoteproc_load(struct remoteproc *rproc, const char *path, - - metal_log(METAL_LOG_DEBUG, - "%s, update resource table\r\n", __func__); -- rsc_table = remoteproc_mmap(rproc, NULL, &rsc_da, -- rsc_size, 0, &io); -+ rsc_table = NULL; -+ remoteproc_mmap(rproc, NULL, &rsc_da, -+ &rsc_table, rsc_size, 0, &io); - if (rsc_table) { - size_t rsc_io_offset; - -@@ -760,7 +773,7 @@ int remoteproc_load_noblock(struct remoteproc *rproc, - if (da != RPROC_LOAD_ANYADDR) { - /* get the I/O region from remoteproc */ - *pa = METAL_BAD_PHYS; -- (void)remoteproc_mmap(rproc, pa, &da, *nmlen, 0, io); -+ remoteproc_mmap(rproc, pa, &da, NULL, *nmlen, 0, io); - if (*pa == METAL_BAD_PHYS || !io) { - metal_log(METAL_LOG_ERROR, - "load failed, no mapping for 0x%llx.\r\n", -@@ -785,8 +798,8 @@ int remoteproc_load_noblock(struct remoteproc *rproc, - ret = -RPROC_ENOMEM; - goto error1; - } -- rsc_table = remoteproc_mmap(rproc, NULL, &rsc_da, -- rsc_size, 0, io); -+ remoteproc_mmap(rproc, NULL, &rsc_da, -+ &rsc_table, rsc_size, 0, io); - if (!*io) { - metal_log(METAL_LOG_ERROR, - "load failed: failed to mmap rsc\r\n"); -@@ -924,7 +937,7 @@ remoteproc_create_virtio(struct remoteproc *rproc, - metal_phys_addr_t da; - unsigned int num_descs, align; - struct metal_io_region *io; -- void *va; -+ void *va = NULL; - size_t size; - int ret; - -@@ -934,7 +947,7 @@ remoteproc_create_virtio(struct remoteproc *rproc, - num_descs = vring_rsc->num; - align = vring_rsc->align; - size = vring_size(num_descs, align); -- va = remoteproc_mmap(rproc, NULL, &da, size, 0, &io); -+ remoteproc_mmap(rproc, NULL, &da, &va, size, 0, &io); - if (!va) - goto err1; - ret = rproc_virtio_init_vring(vdev, i, notifyid, -diff --git a/lib/remoteproc/rsc_table_parser.c open-amp/lib/remoteproc/rsc_table_parser.c -index e43fa72..0bfd163 100644 ---- a/lib/remoteproc/rsc_table_parser.c -+++ open-amp/lib/remoteproc/rsc_table_parser.c -@@ -109,7 +109,7 @@ int handle_carve_out_rsc(struct remoteproc *rproc, void *rsc) - da = carve_rsc->da; - size = carve_rsc->len; - attribute = carve_rsc->flags; -- if (remoteproc_mmap(rproc, &pa, &da, size, attribute, NULL)) -+ if (remoteproc_mmap(rproc, &pa, &da, NULL, size, attribute, NULL)) - return 0; - else - return -RPROC_EINVAL; --- -2.17.1 - diff --git a/openamp/0007-rpmsg-bring-back-zero-copy-transfer.patch b/openamp/0007-rpmsg-bring-back-zero-copy-transfer.patch deleted file mode 100644 index 7ac5ba66be8..00000000000 --- a/openamp/0007-rpmsg-bring-back-zero-copy-transfer.patch +++ /dev/null @@ -1,470 +0,0 @@ -From e2233e080ef0ad62682f1725e17abb07e939ed50 Mon Sep 17 00:00:00 2001 -From: anchao -Date: Mon, 10 Dec 2018 19:39:01 +0800 -Subject: [PATCH 07/10] rpmsg: bring back zero copy transfer - -Commit-id: -b16ca55 Adding RPMsg Extension layer implementing zero-copy send and receive. - -Signed-off-by: anchao ---- - lib/include/openamp/rpmsg.h | 178 ++++++++++++++++++++++++++++++++++++ - lib/rpmsg/rpmsg.c | 58 ++++++++++++ - lib/rpmsg/rpmsg_internal.h | 3 + - lib/rpmsg/rpmsg_virtio.c | 130 +++++++++++++++++++++++++- - 4 files changed, 367 insertions(+), 2 deletions(-) - -diff --git a/lib/include/openamp/rpmsg.h open-amp/lib/include/openamp/rpmsg.h -index 1279ea2..0b46ee1 100644 ---- a/lib/include/openamp/rpmsg.h -+++ open-amp/lib/include/openamp/rpmsg.h -@@ -89,9 +89,20 @@ struct rpmsg_endpoint { - - /** - * struct rpmsg_device_ops - RPMsg device operations -+ * @hold_rx_buffer: hold RPMsg RX buffer -+ * @release_rx_buffer: release RPMsg RX buffer -+ * @get_tx_payload_buffer: get RPMsg TX buffer -+ * @send_offchannel_nocopy: send RPMsg data without copy - * @send_offchannel_raw: send RPMsg data - */ - struct rpmsg_device_ops { -+ void (*hold_rx_buffer)(struct rpmsg_device *rdev, void *rxbuf); -+ void (*release_rx_buffer)(struct rpmsg_device *rdev, void *rxbuf); -+ void *(*get_tx_payload_buffer)(struct rpmsg_device *rdev, -+ uint32_t *len, int wait); -+ int (*send_offchannel_nocopy)(struct rpmsg_device *rdev, -+ uint32_t src, uint32_t dst, -+ const void *data, int len); - int (*send_offchannel_raw)(struct rpmsg_device *rdev, - uint32_t src, uint32_t dst, - const void *data, int size, int wait); -@@ -294,6 +305,173 @@ static inline int rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, - return rpmsg_send_offchannel_raw(ept, src, dst, data, len, false); - } - -+/** -+ * @brief Holds the rx buffer for usage outside the receive callback. -+ * -+ * Calling this function prevents the RPMsg receive buffer from being released -+ * back to the pool of shmem buffers. This API can only be called at rx -+ * callback context (rpmsg_rx_cb_t). With this API, the application doesn't -+ * need to copy the message in rx callback. Instead, the rx buffer base address -+ * is saved in application context and further processed in application -+ * process. After the message is processed, the application can release the rx -+ * buffer for future reuse in vring by calling the rpmsg_release_rx_buffer() -+ * function. -+ * -+ * @param: ept The rpmsg endpoint -+ * @param: rxbuf RX buffer with message payload -+ * -+ * @see rpmsg_release_rx_buffer -+ */ -+void rpmsg_hold_rx_buffer(struct rpmsg_endpoint *ept, void *rxbuf); -+ -+/** -+ * @brief Releases the rx buffer for future reuse in vring. -+ * -+ * This API can be called at process context when the message in rx buffer is -+ * processed. -+ * -+ * @ept: the rpmsg endpoint -+ * @rxbuf: rx buffer with message payload -+ * -+ * @see rpmsg_hold_rx_buffer -+ */ -+void rpmsg_release_rx_buffer(struct rpmsg_endpoint *ept, void *rxbuf); -+ -+/** -+ * @brief Gets the tx buffer for message payload. -+ * -+ * This API can only be called at process context to get the tx buffer in vring. -+ * By this way, the application can directly put its message into the vring tx -+ * buffer without copy from an application buffer. -+ * It is the application responsibility to correctly fill the allocated tx -+ * buffer by data and passing correct parameters to the rpmsg_send_nocopy() or -+ * rpmsg_sendto_nocopy() function to perform data no-copy-send mechanism. -+ * -+ * @ept: Pointer to rpmsg endpoint -+ * @len: Pointer to store tx buffer size -+ * @wait: Boolean, wait or not for buffer to become available -+ * -+ * @return The tx buffer address on success and NULL on failure -+ * -+ * @see rpmsg_send_offchannel_nocopy -+ * @see rpmsg_sendto_nocopy -+ * @see rpmsg_send_nocopy -+ */ -+void *rpmsg_get_tx_payload_buffer(struct rpmsg_endpoint *ept, -+ uint32_t *len, int wait); -+ -+/** -+ * rpmsg_send_offchannel_nocopy() - send a message in tx buffer reserved by -+ * rpmsg_get_tx_payload_buffer() across to the remote processor. -+ * -+ * This function sends buf of length len to the remote dst address, -+ * and uses src as the source address. -+ * The message will be sent to the remote processor which the ept -+ * endpoint belongs to. -+ * The application has to take the responsibility for: -+ * 1. tx buffer reserved (rpmsg_get_tx_payload_buffer() ) -+ * 2. filling the data to be sent into the pre-allocated tx buffer -+ * 3. not exceeding the buffer size when filling the data -+ * 4. data cache coherency -+ * -+ * After the rpmsg_send_offchannel_nocopy() function is issued the tx buffer is -+ * no more owned by the sending task and must not be touched anymore unless the -+ * rpmsg_send_offchannel_nocopy() function fails and returns an error. In that -+ * case the application should try to re-issue the rpmsg_send_offchannel_nocopy() -+ * again. -+ * -+ * @ept: The rpmsg endpoint -+ * @src: The rpmsg endpoint local address -+ * @dst: The rpmsg endpoint remote address -+ * @data: TX buffer with message filled -+ * @len: Length of payload -+ * -+ * @return number of bytes it has sent or negative error value on failure. -+ * -+ * @see rpmsg_get_tx_payload_buffer -+ * @see rpmsg_sendto_nocopy -+ * @see rpmsg_send_nocopy -+ */ -+int rpmsg_send_offchannel_nocopy(struct rpmsg_endpoint *ept, uint32_t src, -+ uint32_t dst, const void *data, int len); -+ -+/** -+ * @brief Sends a message in tx buffer allocated by rpmsg_get_tx_payload_buffer() -+ * across to the remote processor, specify dst. -+ * -+ * This function sends buf of length len to the remote dst address. -+ * The message will be sent to the remote processor which the ept -+ * endpoint belongs to, using ept's source address. -+ * The application has to take the responsibility for: -+ * 1. tx buffer allocation (rpmsg_get_tx_payload_buffer() ) -+ * 2. filling the data to be sent into the pre-allocated tx buffer -+ * 3. not exceeding the buffer size when filling the data -+ * 4. data cache coherency -+ * -+ * After the rpmsg_sendto_nocopy() function is issued the tx buffer is no more -+ * owned by the sending task and must not be touched anymore unless the -+ * rpmsg_sendto_nocopy() function fails and returns an error. In that case the -+ * application should try to re-issue the rpmsg_sendto_nocopy() again. -+ * -+ * @ept: The rpmsg endpoint -+ * @data: TX buffer with message filled -+ * @len: Length of payload -+ * @dst: Destination address -+ * -+ * @return number of bytes it has sent or negative error value on failure. -+ * -+ * @see rpmsg_get_tx_payload_buffer -+ * @see rpmsg_send_offchannel_nocopy -+ * @see rpmsg_send_nocopy -+ */ -+static inline int rpmsg_sendto_nocopy(struct rpmsg_endpoint *ept, -+ const void *data, int len, uint32_t dst) -+{ -+ return rpmsg_send_offchannel_nocopy(ept, ept->addr, dst, data, len); -+} -+ -+/** -+ * rpmsg_send_nocopy() - send a message in tx buffer reserved by -+ * rpmsg_get_tx_payload_buffer() across to the remote processor. -+ * -+ * This function sends buf of length len on the ept endpoint. -+ * The message will be sent to the remote processor which the ept -+ * endpoint belongs to, using ept's source and destination addresses. -+ * The application has to take the responsibility for: -+ * 1. tx buffer reserved (rpmsg_get_tx_payload_buffer() ) -+ * 2. filling the data to be sent into the pre-allocated tx buffer -+ * 3. not exceeding the buffer size when filling the data -+ * 4. data cache coherency -+ * -+ * After the rpmsg_send_nocopy() function is issued the tx buffer is no more -+ * owned by the sending task and must not be touched anymore unless the -+ * rpmsg_send_nocopy() function fails and returns an error. In that case the -+ * application should try to re-issue the rpmsg_send_nocopy() again. -+ * -+ * @ept: The rpmsg endpoint -+ * @data: TX buffer with message filled -+ * @len: Length of payload -+ * -+ * @return number of bytes it has sent or negative error value on failure. -+ * -+ * @see rpmsg_get_tx_payload_buffer -+ * @see rpmsg_send_offchannel_nocopy -+ * @see rpmsg_sendto_nocopy -+ */ -+static inline int rpmsg_send_nocopy(struct rpmsg_endpoint *ept, const void *data, int len) -+{ -+ int tc = 0; -+ -+ for (; tc < RPMSG_TICK_COUNT; tc += RPMSG_TICKS_PER_INTERVAL) { -+ if (is_rpmsg_ept_ready(ept)) -+ return rpmsg_send_offchannel_nocopy(ept, ept->addr, -+ ept->dest_addr, data, len); -+ metal_sleep_usec(RPMSG_TICKS_PER_INTERVAL); -+ } -+ -+ return RPMSG_ERR_ADDR; -+} -+ - /** - * rpmsg_init_ept - initialize rpmsg endpoint - * -diff --git a/lib/rpmsg/rpmsg.c open-amp/lib/rpmsg/rpmsg.c -index 9da38a1..0a8de1b 100644 ---- a/lib/rpmsg/rpmsg.c -+++ open-amp/lib/rpmsg/rpmsg.c -@@ -144,6 +144,64 @@ int rpmsg_send_ns_message(struct rpmsg_endpoint *ept, unsigned long flags) - return RPMSG_SUCCESS; - } - -+void rpmsg_hold_rx_buffer(struct rpmsg_endpoint *ept, void *rxbuf) -+{ -+ struct rpmsg_device *rdev; -+ -+ if (!ept || !ept->rdev || !rxbuf) -+ return; -+ -+ rdev = ept->rdev; -+ -+ if (rdev->ops.hold_rx_buffer) -+ rdev->ops.hold_rx_buffer(rdev, rxbuf); -+} -+ -+void rpmsg_release_rx_buffer(struct rpmsg_endpoint *ept, void *rxbuf) -+{ -+ struct rpmsg_device *rdev; -+ -+ if (!ept || !ept->rdev || !rxbuf) -+ return; -+ -+ rdev = ept->rdev; -+ -+ if (rdev->ops.release_rx_buffer) -+ rdev->ops.release_rx_buffer(rdev, rxbuf); -+} -+ -+void *rpmsg_get_tx_payload_buffer(struct rpmsg_endpoint *ept, -+ uint32_t *len, int wait) -+{ -+ struct rpmsg_device *rdev; -+ -+ if (!ept || !ept->rdev || !len) -+ return NULL; -+ -+ rdev = ept->rdev; -+ -+ if (rdev->ops.get_tx_payload_buffer) -+ return rdev->ops.get_tx_payload_buffer(rdev, len, wait); -+ -+ return NULL; -+} -+ -+int rpmsg_send_offchannel_nocopy(struct rpmsg_endpoint *ept, uint32_t src, -+ uint32_t dst, const void *data, int len) -+{ -+ struct rpmsg_device *rdev; -+ -+ if (!ept || !ept->rdev || !data || !dst || dst == RPMSG_ADDR_ANY) -+ return RPMSG_ERR_PARAM; -+ -+ rdev = ept->rdev; -+ -+ if (rdev->ops.send_offchannel_nocopy) -+ return rdev->ops.send_offchannel_nocopy(rdev, src, dst, data, len); -+ -+ return RPMSG_ERR_PARAM; -+} -+ - struct rpmsg_endpoint *rpmsg_get_endpoint(struct rpmsg_device *rdev, - const char *name, uint32_t addr, - uint32_t dest_addr) -diff --git a/lib/rpmsg/rpmsg_internal.h open-amp/lib/rpmsg/rpmsg_internal.h -index 9c46970..3db6b24 100644 ---- a/lib/rpmsg/rpmsg_internal.h -+++ open-amp/lib/rpmsg/rpmsg_internal.h -@@ -35,6 +35,9 @@ extern "C" { - } while (0) - #endif - -+#define RPMSG_BUF_HELD (1U << 31) /* Flag to suggest to hold the buffer */ -+ -+#define RPMSG_LOCATE_HDR(p) (struct rpmsg_hdr *)((char *)(p) - sizeof(struct rpmsg_hdr)) - #define RPMSG_LOCATE_DATA(p) ((unsigned char *)(p) + sizeof(struct rpmsg_hdr)) - /** - * enum rpmsg_ns_flags - dynamic name service announcement flags -diff --git a/lib/rpmsg/rpmsg_virtio.c open-amp/lib/rpmsg/rpmsg_virtio.c -index 44b46d4..195189d 100644 ---- a/lib/rpmsg/rpmsg_virtio.c -+++ open-amp/lib/rpmsg/rpmsg_virtio.c -@@ -140,6 +140,7 @@ static void *rpmsg_virtio_get_tx_buffer(struct rpmsg_virtio_device *rvdev, - data = rpmsg_virtio_shm_pool_get_buffer(rvdev->shpool, - RPMSG_BUFFER_SIZE); - *len = RPMSG_BUFFER_SIZE; -+ *idx = 0; - } - } - #endif /*!VIRTIO_SLAVE_ONLY*/ -@@ -253,6 +254,118 @@ static int _rpmsg_virtio_get_buffer_size(struct rpmsg_virtio_device *rvdev) - return length; - } - -+static void rpmsg_virtio_hold_rx_buffer(struct rpmsg_device *rdev, void *rxbuf) -+{ -+ struct rpmsg_hdr *rp_hdr; -+ -+ rp_hdr = RPMSG_LOCATE_HDR(rxbuf); -+ -+ /* Set held status to keep buffer */ -+ rp_hdr->reserved = RPMSG_BUF_HELD; -+} -+ -+static void rpmsg_virtio_release_rx_buffer(struct rpmsg_device *rdev, void *rxbuf) -+{ -+ struct rpmsg_virtio_device *rvdev; -+ struct rpmsg_hdr *rp_hdr; -+ uint16_t idx; -+ uint32_t len; -+ -+ rvdev = metal_container_of(rdev, struct rpmsg_virtio_device, rdev); -+ rp_hdr = RPMSG_LOCATE_HDR(rxbuf); -+ /* The reserved field contains buffer index */ -+ idx = rp_hdr->reserved; -+ -+ metal_mutex_acquire(&rdev->lock); -+ /* Return buffer on virtqueue. */ -+ len = virtqueue_get_buffer_length(rvdev->rvq, idx); -+ rpmsg_virtio_return_buffer(rvdev, rp_hdr, len, idx); -+ metal_mutex_release(&rdev->lock); -+} -+ -+static void *rpmsg_virtio_get_tx_payload_buffer(struct rpmsg_device *rdev, -+ uint32_t *len, int wait) -+{ -+ struct rpmsg_virtio_device *rvdev; -+ struct rpmsg_hdr *rp_hdr; -+ uint16_t idx; -+ int tick_count; -+ -+ /* Get the associated remote device for channel. */ -+ rvdev = metal_container_of(rdev, struct rpmsg_virtio_device, rdev); -+ -+ if (wait) -+ tick_count = RPMSG_TICK_COUNT / RPMSG_TICKS_PER_INTERVAL; -+ else -+ tick_count = 0; -+ -+ while (1) { -+ /* Lock the device to enable exclusive access to virtqueues */ -+ metal_mutex_acquire(&rdev->lock); -+ rp_hdr = rpmsg_virtio_get_tx_buffer(rvdev, len, &idx); -+ metal_mutex_release(&rdev->lock); -+ if (rp_hdr || !tick_count) -+ break; -+ metal_sleep_usec(RPMSG_TICKS_PER_INTERVAL); -+ tick_count--; -+ } -+ -+ if (!rp_hdr) -+ return NULL; -+ -+ /* Store the index into the reserved field to be used when sending */ -+ rp_hdr->reserved = idx; -+ -+ /* Actual data buffer size is vring buffer size minus rpmsg header length */ -+ *len -= sizeof(struct rpmsg_hdr); -+ return RPMSG_LOCATE_DATA(rp_hdr); -+} -+ -+static int rpmsg_virtio_send_offchannel_nocopy(struct rpmsg_device *rdev, -+ uint32_t src, uint32_t dst, -+ const void *data, int len) -+{ -+ struct rpmsg_virtio_device *rvdev; -+ struct rpmsg_hdr rp_hdr; -+ struct rpmsg_hdr *hdr; -+ uint16_t idx; -+ int status; -+ struct metal_io_region *io; -+ -+ /* Get the associated remote device for channel. */ -+ rvdev = metal_container_of(rdev, struct rpmsg_virtio_device, rdev); -+ -+ hdr = RPMSG_LOCATE_HDR(data); -+ /* The reserved field contains buffer index */ -+ idx = hdr->reserved; -+ -+ /* Initialize RPMSG header. */ -+ rp_hdr.dst = dst; -+ rp_hdr.src = src; -+ rp_hdr.len = len; -+ rp_hdr.reserved = 0; -+ rp_hdr.flags = 0; -+ -+ /* Copy data to rpmsg buffer. */ -+ io = rvdev->shbuf_io; -+ status = metal_io_block_write(io, metal_io_virt_to_offset(io, hdr), -+ &rp_hdr, sizeof(rp_hdr)); -+ RPMSG_ASSERT(status == sizeof(rp_hdr), "failed to write header\r\n"); -+ -+ metal_mutex_acquire(&rdev->lock); -+ -+ /* Enqueue buffer on virtqueue. */ -+ len = virtqueue_get_buffer_length(rvdev->svq, idx); -+ status = rpmsg_virtio_enqueue_buffer(rvdev, hdr, len, idx); -+ RPMSG_ASSERT(status == VQUEUE_SUCCESS, "failed to enqueue buffer\r\n"); -+ /* Let the other side know that there is a job to process. */ -+ virtqueue_kick(rvdev->svq); -+ -+ metal_mutex_release(&rdev->lock); -+ -+ return len; -+} -+ - /** - * This function sends rpmsg "message" to remote device. - * -@@ -389,6 +502,8 @@ static void rpmsg_virtio_rx_callback(struct virtqueue *vq) - metal_mutex_release(&rdev->lock); - - while (rp_hdr) { -+ rp_hdr->reserved = 0; -+ - /* Get the channel node from the remote device channels list. */ - metal_mutex_acquire(&rdev->lock); - ept = rpmsg_get_ept_from_addr(rdev, rp_hdr->dst); -@@ -411,8 +526,15 @@ static void rpmsg_virtio_rx_callback(struct virtqueue *vq) - - metal_mutex_acquire(&rdev->lock); - -- /* Return used buffers. */ -- rpmsg_virtio_return_buffer(rvdev, rp_hdr, len, idx); -+ /* Check whether callback wants to hold buffer */ -+ if (rp_hdr->reserved & RPMSG_BUF_HELD) { -+ /* 'rp_hdr->reserved' field is now used as storage for -+ * 'idx' to release buffer later */ -+ rp_hdr->reserved = idx; -+ } else { -+ /* Return used buffers. */ -+ rpmsg_virtio_return_buffer(rvdev, rp_hdr, len, idx); -+ } - - rp_hdr = rpmsg_virtio_get_rx_buffer(rvdev, &len, &idx); - if (!rp_hdr) { -@@ -522,6 +644,10 @@ int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev, - rvdev->vdev = vdev; - rdev->ns_bind_cb = ns_bind_cb; - vdev->priv = rvdev; -+ rdev->ops.hold_rx_buffer = rpmsg_virtio_hold_rx_buffer; -+ rdev->ops.release_rx_buffer = rpmsg_virtio_release_rx_buffer; -+ rdev->ops.get_tx_payload_buffer = rpmsg_virtio_get_tx_payload_buffer; -+ rdev->ops.send_offchannel_nocopy = rpmsg_virtio_send_offchannel_nocopy; - rdev->ops.send_offchannel_raw = rpmsg_virtio_send_offchannel_raw; - role = rpmsg_virtio_get_role(rvdev); - --- -2.17.1 - diff --git a/openamp/0009-implement-rproc_virtio_read_config-rproc_virtio_writ.patch b/openamp/0009-implement-rproc_virtio_read_config-rproc_virtio_writ.patch deleted file mode 100644 index 3678826d573..00000000000 --- a/openamp/0009-implement-rproc_virtio_read_config-rproc_virtio_writ.patch +++ /dev/null @@ -1,119 +0,0 @@ -From 9bbc2dcd43f6107a7e0b1eec16bab10e533329f2 Mon Sep 17 00:00:00 2001 -From: Xiang Xiao -Date: Thu, 3 Jan 2019 14:20:48 +0800 -Subject: [PATCH 09/10] implement - rproc_virtio_read_config/rproc_virtio_write_config - -so the rpmsg could access the configuration space as needed - -Signed-off-by: Xiang Xiao ---- - lib/include/openamp/rpmsg_virtio.h | 14 +++++++++++ - lib/include/openamp/virtio.h | 1 + - lib/remoteproc/remoteproc_virtio.c | 40 ++++++++++++++++++++++++------ - 3 files changed, 47 insertions(+), 8 deletions(-) - -diff --git a/lib/include/openamp/rpmsg_virtio.h open-amp/lib/include/openamp/rpmsg_virtio.h -index e6e5fa2..4d3093b 100644 ---- a/lib/include/openamp/rpmsg_virtio.h -+++ open-amp/lib/include/openamp/rpmsg_virtio.h -@@ -86,6 +86,20 @@ rpmsg_virtio_get_features(struct rpmsg_virtio_device *rvdev) - return rvdev->vdev->func->get_features(rvdev->vdev); - } - -+static inline void -+rpmsg_virtio_read_config(struct rpmsg_virtio_device *rvdev, -+ uint32_t offset, void *dst, int length) -+{ -+ rvdev->vdev->func->read_config(rvdev->vdev, offset, dst, length); -+} -+ -+static inline void -+rpmsg_virtio_write_config(struct rpmsg_virtio_device *rvdev, -+ uint32_t offset, void *dst, int length) -+{ -+ rvdev->vdev->func->write_config(rvdev->vdev, offset, dst, length); -+} -+ - static inline int - rpmsg_virtio_create_virtqueues(struct rpmsg_virtio_device *rvdev, - int flags, unsigned int nvqs, -diff --git a/lib/include/openamp/virtio.h open-amp/lib/include/openamp/virtio.h -index 55c8ea5..9c8376e 100644 ---- a/lib/include/openamp/virtio.h -+++ open-amp/lib/include/openamp/virtio.h -@@ -100,6 +100,7 @@ struct virtio_device { - virtio_dev_reset_cb reset_cb; /**< user registered device callback */ - const struct virtio_dispatch *func; /**< Virtio dispatch table */ - void *priv; /**< TODO: remove pointer to virtio_device private data */ -+ unsigned int config_len; /**< config space length */ - unsigned int vrings_num; /**< number of vrings */ - struct virtio_vring_info *vrings_info; - }; -diff --git a/lib/remoteproc/remoteproc_virtio.c open-amp/lib/remoteproc/remoteproc_virtio.c -index aafc48c..7505f64 100644 ---- a/lib/remoteproc/remoteproc_virtio.c -+++ open-amp/lib/remoteproc/remoteproc_virtio.c -@@ -128,20 +128,43 @@ static uint32_t rproc_virtio_negotiate_features(struct virtio_device *vdev, - static void rproc_virtio_read_config(struct virtio_device *vdev, - uint32_t offset, void *dst, int length) - { -- (void)vdev; -- (void)offset; -- (void)dst; -- (void)length; -+ struct remoteproc_virtio *rpvdev; -+ struct fw_rsc_vdev *vdev_rsc; -+ struct metal_io_region *io; -+ char *config; -+ -+ if (offset + length > vdev->config_len || offset + length < length) -+ return; -+ -+ rpvdev = metal_container_of(vdev, struct remoteproc_virtio, vdev); -+ vdev_rsc = rpvdev->vdev_rsc; -+ config = (char *)(&vdev_rsc->vring[vdev->vrings_num]); -+ io = rpvdev->vdev_rsc_io; -+ metal_io_block_read(io, -+ metal_io_virt_to_offset(io, config + offset), -+ dst, length); - } - - #ifndef VIRTIO_SLAVE_ONLY - static void rproc_virtio_write_config(struct virtio_device *vdev, - uint32_t offset, void *src, int length) - { -- (void)vdev; -- (void)offset; -- (void)src; -- (void)length; -+ struct remoteproc_virtio *rpvdev; -+ struct fw_rsc_vdev *vdev_rsc; -+ struct metal_io_region *io; -+ char *config; -+ -+ if (offset + length > vdev->config_len || offset + length < length) -+ return; -+ -+ rpvdev = metal_container_of(vdev, struct remoteproc_virtio, vdev); -+ vdev_rsc = rpvdev->vdev_rsc; -+ config = (char *)(&vdev_rsc->vring[vdev->vrings_num]); -+ io = rpvdev->vdev_rsc_io; -+ metal_io_block_write(io, -+ metal_io_virt_to_offset(io, config + offset), -+ src, length); -+ rpvdev->notify(rpvdev->priv, vdev->notifyid); - } - - static void rproc_virtio_reset_device(struct virtio_device *vdev) -@@ -222,6 +245,7 @@ rproc_virtio_create_vdev(unsigned int role, unsigned int notifyid, - vdev->notifyid = notifyid; - vdev->role = role; - vdev->reset_cb = rst_cb; -+ vdev->config_len = vdev_rsc->config_len; - vdev->vrings_num = num_vrings; - vdev->func = &remoteproc_virtio_dispatch_funcs; - --- -2.17.1 - diff --git a/openamp/Makefile b/openamp/Makefile index 100baadbfb1..5aaf171681f 100644 --- a/openamp/Makefile +++ b/openamp/Makefile @@ -20,7 +20,7 @@ include $(TOPDIR)/Make.defs -VERSION ?= 2020.04.0 +VERSION ?= 2021.04.0 include libmetal.defs include open-amp.defs diff --git a/openamp/libmetal.defs b/openamp/libmetal.defs index 49a5d46b3ad..2b9709ddb3d 100644 --- a/openamp/libmetal.defs +++ b/openamp/libmetal.defs @@ -47,10 +47,10 @@ CSRCS += libmetal/lib/version.c CFLAGS += -DMETAL_INTERNAL LIBMETAL_HDRS_SEDEXP := \ - "s/@PROJECT_VER_MAJOR@/0/g; \ - s/@PROJECT_VER_MINOR@/1/g; \ - s/@PROJECT_VER_PATCH@/0/g; \ - s/@PROJECT_VER@/0.1.0/g; \ + "s/@PROJECT_VERSION_MAJOR@/0/g; \ + s/@PROJECT_VERSION_MINOR@/1/g; \ + s/@PROJECT_VERSION_PATCH@/0/g; \ + s/@PROJECT_VERSION@/0.1.0/g; \ s/@PROJECT_SYSTEM@/nuttx/g; \ s/@PROJECT_PROCESSOR@/$(LIBMETAL_ARCH)/g; \ s/@PROJECT_MACHINE@/$(CONFIG_ARCH_CHIP)/g; \ @@ -63,7 +63,6 @@ libmetal.zip: $(Q) curl -L https://github.com/OpenAMP/libmetal/archive/v$(VERSION).zip -o libmetal.zip $(Q) unzip -o libmetal.zip $(Q) mv libmetal-$(VERSION) libmetal - $(Q) patch -p0 < 0001-system-nuttx-change-clock_systimespec-to-clock_systi.patch .libmetal_headers: libmetal.zip $(eval headers := $(wildcard libmetal/lib/compiler/gcc/*.h)) diff --git a/openamp/open-amp.defs b/openamp/open-amp.defs index 404a7c7eeea..3cc9a8566b4 100644 --- a/openamp/open-amp.defs +++ b/openamp/open-amp.defs @@ -33,16 +33,9 @@ open-amp.zip: $(Q) curl -L https://github.com/OpenAMP/open-amp/archive/v$(VERSION).zip -o open-amp.zip $(Q) unzip -o open-amp.zip $(Q) mv open-amp-$(VERSION) open-amp - $(Q) patch -p0 < 0001-rpmsg-remove-the-address-check-in-rpmsg_send-rpmsg_t.patch - $(Q) patch -p0 < 0002-rpmsg-merge-rpmsg_register_endpoint-into-rpmsg_init_.patch - $(Q) patch -p0 < 0003-rpmsg-shouldn-t-allocate-0-1023-address-in-rpmsg_cre.patch - $(Q) patch -p0 < 0004-rpmsg-wait-ept-ready-in-rpmsg_send.patch - $(Q) patch -p0 < 0005-rpmsg-return-fail-if-either-source-or-destination-ad.patch - $(Q) patch -p0 < 0006-remoteproc_mmap-support-va-to-pa-da-conversion.patch - $(Q) patch -p0 < 0007-rpmsg-bring-back-zero-copy-transfer.patch - $(Q) patch -p0 < 0008-ns-acknowledge-the-received-creation-message.patch - $(Q) patch -p0 < 0009-implement-rproc_virtio_read_config-rproc_virtio_writ.patch - $(Q) patch -p0 < 0010-Negotiate-individual-buffer-size-dynamically.patch + $(Q) patch -p0 < 0001-ns-acknowledge-the-received-creation-message.patch + $(Q) patch -p0 < 0002-Negotiate-individual-buffer-size-dynamically.patch + $(Q) patch -p0 < 0003-rpmsg-wait-endpoint-ready-in-rpmsg_send-and-rpmsg_se.patch .openamp_headers: open-amp.zip $(eval headers := $(wildcard open-amp/lib/include/openamp/*.h)) From 7169c7c5f8424ce8c59066e6d6bd83b490f32241 Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Thu, 12 Nov 2020 21:00:49 +0800 Subject: [PATCH 105/739] drivers/rptun: Adapter to openamp 2020.10.0 release change the callback implementation from mmap to get_mem Signed-off-by: Xiang Xiao --- drivers/rptun/rptun.c | 128 +++++++++++++++++++++--------------------- 1 file changed, 64 insertions(+), 64 deletions(-) diff --git a/drivers/rptun/rptun.c b/drivers/rptun/rptun.c index e204fd22cb0..d37de5d0d3c 100644 --- a/drivers/rptun/rptun.c +++ b/drivers/rptun/rptun.c @@ -93,14 +93,17 @@ static FAR struct remoteproc *rptun_init(FAR struct remoteproc *rproc, FAR struct remoteproc_ops *ops, FAR void *arg); static void rptun_remove(FAR struct remoteproc *rproc); -static int rptun_mmap(FAR struct remoteproc *rproc, - FAR metal_phys_addr_t *pa, FAR metal_phys_addr_t *da, - FAR void **va, size_t size, unsigned int attribute, - FAR struct metal_io_region **io_); static int rptun_config(struct remoteproc *rproc, void *data); static int rptun_start(FAR struct remoteproc *rproc); static int rptun_stop(FAR struct remoteproc *rproc); static int rptun_notify(FAR struct remoteproc *rproc, uint32_t id); +static FAR struct remoteproc_mem * +rptun_get_mem(FAR struct remoteproc *rproc, + FAR const char *name, + metal_phys_addr_t pa, + metal_phys_addr_t da, + FAR void *va, size_t size, + FAR struct remoteproc_mem *buf); static void rptun_ns_bind(FAR struct rpmsg_device *rdev, FAR const char *name, uint32_t dest); @@ -130,13 +133,13 @@ static metal_phys_addr_t rptun_da_to_pa(FAR struct rptun_dev_s *dev, static struct remoteproc_ops g_rptun_ops = { - .init = rptun_init, - .remove = rptun_remove, - .mmap = rptun_mmap, - .config = rptun_config, - .start = rptun_start, - .stop = rptun_stop, - .notify = rptun_notify, + .init = rptun_init, + .remove = rptun_remove, + .config = rptun_config, + .start = rptun_start, + .stop = rptun_stop, + .notify = rptun_notify, + .get_mem = rptun_get_mem, }; static const struct file_operations g_rptun_devops = @@ -207,55 +210,6 @@ static void rptun_remove(FAR struct remoteproc *rproc) rproc->priv = NULL; } -static int rptun_mmap(FAR struct remoteproc *rproc, - FAR metal_phys_addr_t *pa, FAR metal_phys_addr_t *da, - FAR void **va, size_t size, unsigned int attribute, - FAR struct metal_io_region **io_) -{ - FAR struct rptun_priv_s *priv = rproc->priv; - FAR struct metal_io_region *io = metal_io_get_region(); - - if (*pa != METAL_BAD_PHYS) - { - *da = rptun_pa_to_da(priv->dev, *pa); - *va = metal_io_phys_to_virt(io, *pa); - if (!*va) - { - return -RPROC_EINVAL; - } - } - else if (*da != METAL_BAD_PHYS) - { - *pa = rptun_da_to_pa(priv->dev, *da); - *va = metal_io_phys_to_virt(io, *pa); - if (!*va) - { - return -RPROC_EINVAL; - } - } - else if (*va) - { - *pa = metal_io_virt_to_phys(io, *va); - if (*pa == METAL_BAD_PHYS) - { - return -RPROC_EINVAL; - } - - *da = rptun_pa_to_da(priv->dev, *pa); - } - else - { - return -RPROC_EINVAL; - } - - if (io_) - { - *io_ = io; - } - - return 0; -} - static int rptun_config(struct remoteproc *rproc, void *data) { struct rptun_priv_s *priv = rproc->priv; @@ -301,6 +255,45 @@ static int rptun_notify(FAR struct remoteproc *rproc, uint32_t id) return 0; } +static FAR struct remoteproc_mem * +rptun_get_mem(FAR struct remoteproc *rproc, + FAR const char *name, + metal_phys_addr_t pa, + metal_phys_addr_t da, + FAR void *va, size_t size, + FAR struct remoteproc_mem *buf) +{ + FAR struct rptun_priv_s *priv = rproc->priv; + + metal_list_init(&buf->node); + strcpy(buf->name, name ? name : ""); + buf->io = metal_io_get_region(); + buf->size = size; + + if (pa != METAL_BAD_PHYS) + { + buf->pa = pa; + buf->da = rptun_pa_to_da(priv->dev, pa); + } + else if (da != METAL_BAD_PHYS) + { + buf->pa = rptun_da_to_pa(priv->dev, da); + buf->da = da; + } + else + { + buf->pa = metal_io_virt_to_phys(buf->io, va); + buf->da = rptun_pa_to_da(priv->dev, buf->pa); + } + + if (buf->pa == METAL_BAD_PHYS || buf->da == METAL_BAD_PHYS) + { + return NULL; + } + + return buf; +} + static void *rptun_get_priv_by_rdev(FAR struct rpmsg_device *rdev) { struct rpmsg_virtio_device *rvdev; @@ -420,6 +413,9 @@ static int rptun_dev_start(FAR struct remoteproc *rproc) FAR void *va0; FAR void *va1; FAR void *shbuf; + FAR struct metal_io_region *io; + metal_phys_addr_t pa0; + metal_phys_addr_t pa1; align0 = B2C(rsc->rpmsg_vring0.align); align1 = B2C(rsc->rpmsg_vring1.align); @@ -428,13 +424,17 @@ static int rptun_dev_start(FAR struct remoteproc *rproc) v0sz = ALIGN_UP(vring_size(rsc->rpmsg_vring0.num, align0), align0); v1sz = ALIGN_UP(vring_size(rsc->rpmsg_vring1.num, align1), align1); - va0 = (char *)rsc + tbsz; - va1 = (char *)rsc + tbsz + v0sz; + va0 = (FAR char *)rsc + tbsz; + va1 = (FAR char *)rsc + tbsz + v0sz; + + io = metal_io_get_region(); + pa0 = metal_io_virt_to_phys(io, va0); + pa1 = metal_io_virt_to_phys(io, va1); da0 = da1 = METAL_BAD_PHYS; - remoteproc_mmap(rproc, NULL, &da0, &va0, v0sz, 0, NULL); - remoteproc_mmap(rproc, NULL, &da1, &va1, v1sz, 0, NULL); + remoteproc_mmap(rproc, &pa0, &da0, v0sz, 0, NULL); + remoteproc_mmap(rproc, &pa1, &da1, v1sz, 0, NULL); rsc->rpmsg_vring0.da = da0; rsc->rpmsg_vring1.da = da1; From 82fb188d02c0c58eb860c4eea8ed9308b29b788c Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Wed, 12 May 2021 19:58:35 +0800 Subject: [PATCH 106/739] sched/spawn: Support the stack address argument Signed-off-by: Xiang Xiao --- include/spawn.h | 10 +++- libs/libc/spawn/Make.defs | 1 + libs/libc/spawn/lib_psa_getstackaddr.c | 63 ++++++++++++++++++++++++++ libs/libc/spawn/lib_psa_getstacksize.c | 2 +- libs/libc/spawn/lib_psa_setstackaddr.c | 63 ++++++++++++++++++++++++++ 5 files changed, 136 insertions(+), 3 deletions(-) create mode 100644 libs/libc/spawn/lib_psa_getstackaddr.c create mode 100644 libs/libc/spawn/lib_psa_setstackaddr.c diff --git a/include/spawn.h b/include/spawn.h index c999f1ba386..41649e2f52c 100644 --- a/include/spawn.h +++ b/include/spawn.h @@ -85,7 +85,8 @@ struct posix_spawnattr_s #ifndef CONFIG_BUILD_KERNEL /* Used only by task_spawn (non-standard) */ - size_t stacksize; /* Task stack size */ + FAR void *stackaddr; /* Task stack address */ + size_t stacksize; /* Task stack size */ #endif #ifdef CONFIG_SCHED_SPORADIC @@ -211,8 +212,13 @@ int posix_spawnattr_setsigmask(FAR posix_spawnattr_t *attr, * task_spawn() */ +int task_spawnattr_getstackaddr(FAR const posix_spawnattr_t *attr, + FAR void **stackaddr); +int task_spawnattr_setstackaddr(FAR posix_spawnattr_t *attr, + FAR void *stackaddr); + int task_spawnattr_getstacksize(FAR const posix_spawnattr_t *attr, - size_t *stacksize); + FAR size_t *stacksize); int task_spawnattr_setstacksize(FAR posix_spawnattr_t *attr, size_t stacksize); diff --git a/libs/libc/spawn/Make.defs b/libs/libc/spawn/Make.defs index 972770b417a..8b558134fab 100644 --- a/libs/libc/spawn/Make.defs +++ b/libs/libc/spawn/Make.defs @@ -32,6 +32,7 @@ CSRCS += lib_psa_init.c lib_psa_setflags.c lib_psa_setschedparam.c CSRCS += lib_psa_setschedpolicy.c lib_psa_getsigmask.c lib_psa_setsigmask.c ifneq ($(CONFIG_BUILD_KERNEL),y) +CSRCS += lib_psa_getstackaddr.c lib_psa_setstackaddr.c CSRCS += lib_psa_getstacksize.c lib_psa_setstacksize.c ifeq ($(CONFIG_LIB_SYSCALL),y) CSRCS += lib_task_spawn.c diff --git a/libs/libc/spawn/lib_psa_getstackaddr.c b/libs/libc/spawn/lib_psa_getstackaddr.c new file mode 100644 index 00000000000..f1c776ba8c8 --- /dev/null +++ b/libs/libc/spawn/lib_psa_getstackaddr.c @@ -0,0 +1,63 @@ +/**************************************************************************** + * libs/libc/spawn/lib_psa_getstackaddr.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include + +#ifndef CONFIG_BUILD_KERNEL + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: task_spawnattr_getstackaddr + * + * Description: + * The task_spawnattr_getstackaddr() function will obtain the value of + * the spawn-stackaddr attribute from the attributes object referenced + * by attr. + * + * Input Parameters: + * attr - The address spawn attributes to be queried. + * stackaddr - The location to return the spawn-stackaddr value. + * + * Returned Value: + * On success, these functions return 0; on failure they return an error + * number from . + * + ****************************************************************************/ + +int task_spawnattr_getstackaddr(FAR const posix_spawnattr_t *attr, + FAR void **stackaddr) +{ + DEBUGASSERT(attr && stackaddr); + *stackaddr = attr->stackaddr; + return OK; +} + +#endif /* !CONFIG_BUILD_KERNEL */ diff --git a/libs/libc/spawn/lib_psa_getstacksize.c b/libs/libc/spawn/lib_psa_getstacksize.c index e94347ec733..748fb52fa20 100644 --- a/libs/libc/spawn/lib_psa_getstacksize.c +++ b/libs/libc/spawn/lib_psa_getstacksize.c @@ -53,7 +53,7 @@ ****************************************************************************/ int task_spawnattr_getstacksize(FAR const posix_spawnattr_t *attr, - size_t *stacksize) + FAR size_t *stacksize) { DEBUGASSERT(attr && stacksize); *stacksize = attr->stacksize; diff --git a/libs/libc/spawn/lib_psa_setstackaddr.c b/libs/libc/spawn/lib_psa_setstackaddr.c new file mode 100644 index 00000000000..dc24aeeca71 --- /dev/null +++ b/libs/libc/spawn/lib_psa_setstackaddr.c @@ -0,0 +1,63 @@ +/**************************************************************************** + * libs/libc/spawn/lib_psa_setstackaddr.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include + +#ifndef CONFIG_BUILD_KERNEL + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: task_spawnattr_setstackaddr + * + * Description: + * The task_spawnattr_setstackaddr() function shall set the spawn- + * stackaddr attribute in an initialized attributes object referenced + * by attr. + * + * Input Parameters: + * attr - The address spawn attributes to be used. + * stackaddr - The new stackaddr to set. + * + * Returned Value: + * On success, these functions return 0; on failure they return an error + * number from . + * + ****************************************************************************/ + +int task_spawnattr_setstackaddr(FAR posix_spawnattr_t *attr, + FAR void *stackaddr) +{ + DEBUGASSERT(attr); + attr->stackaddr = stackaddr; + return OK; +} + +#endif /* !CONFIG_BUILD_KERNEL */ From f0372dde6a0a6e7de7d0a7c2002d0282df6101eb Mon Sep 17 00:00:00 2001 From: Masayuki Ishikawa Date: Tue, 11 May 2021 10:25:26 +0900 Subject: [PATCH 107/739] fs: nfs: Fix rpcclnt_send() in TCP mode Summary: - I noticed that NFS over TCP does not work with Ubuntu 18.04 - Finally, I found that the record marking packet should not be sent separately - This commit fixes this issue Impact: - TCP mode only Testing: - Tested with NFS server on Ubuntu 18.04 (x86_64) - Tested with spresense:rndis (defconfig will be updated later) Signed-off-by: Masayuki Ishikawa --- fs/nfs/rpc_clnt.c | 51 +++++++++++++++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/fs/nfs/rpc_clnt.c b/fs/nfs/rpc_clnt.c index f57fed23bf0..93579667a45 100644 --- a/fs/nfs/rpc_clnt.c +++ b/fs/nfs/rpc_clnt.c @@ -297,32 +297,49 @@ bad: static int rpcclnt_send(FAR struct rpcclnt *rpc, FAR void *call, int reqlen) { + struct iovec iov[2]; + struct msghdr msg; uint32_t mark; int ret = OK; - /* Send the record marking(RM) for stream only */ - if (rpc->rc_sotype == SOCK_STREAM) { - mark = txdr_unsigned(0x80000000 | reqlen); - ret = psock_send(&rpc->rc_so, &mark, sizeof(mark), 0); - if (ret < 0) - { - ferr("ERROR: psock_send mark failed: %d\n", ret); - return ret; - } + /* Prepare the record marking(RM) and compose an RPC request + * NOTE: Sending a separate packet does not work with Linux host + */ + + mark = txdr_unsigned(0x80000000 | (reqlen)); + + iov[0].iov_base = (FAR void *)&mark; + iov[0].iov_len = sizeof(mark); + iov[1].iov_base = (FAR void *)call; + iov[1].iov_len = reqlen; + + msg.msg_name = NULL; + msg.msg_namelen = 0; + msg.msg_iov = iov; + msg.msg_iovlen = 2; + msg.msg_control = NULL; + msg.msg_controllen = 0; + msg.msg_flags = 0; + + ret = psock_sendmsg(&rpc->rc_so, &msg, 0); + ferr("ERROR: psock_sendmsg request failed: %d\n", ret); + } + else + { + /* Send the call message + * + * On success, psock_send returns the number of bytes sent; + * On failure, it returns a negated errno value. + */ + + ret = psock_send(&rpc->rc_so, call, reqlen, 0); + ferr("ERROR: psock_send request failed: %d\n", ret); } - /* Send the call message - * - * On success, psock_send returns the number of bytes sent; - * On failure, it returns a negated errno value. - */ - - ret = psock_send(&rpc->rc_so, call, reqlen, 0); if (ret < 0) { - ferr("ERROR: psock_send request failed: %d\n", ret); return ret; } From 2873f33bc455bea4d0a4ed49d0f206a5020eec64 Mon Sep 17 00:00:00 2001 From: Masayuki Ishikawa Date: Wed, 12 May 2021 07:09:52 +0900 Subject: [PATCH 108/739] fs: nfs: Fix to read a large packet in TCP mode Summary: - I noticed that receiving a read large packet (e.g. 2KB) in TCP mode does not work correctly - Actually, rpcclnt_receive() only received up to MSS - This commit fixes this issue Impact: - TCP mode only Testing: - Tested with Ubuntu 18.04 (x86_64) - Tested with spresense:rndis (defconfig will be updated later) Signed-off-by: Masayuki Ishikawa --- fs/nfs/rpc_clnt.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/fs/nfs/rpc_clnt.c b/fs/nfs/rpc_clnt.c index 93579667a45..46ee90b151b 100644 --- a/fs/nfs/rpc_clnt.c +++ b/fs/nfs/rpc_clnt.c @@ -359,6 +359,7 @@ static int rpcclnt_receive(FAR struct rpcclnt *rpc, { uint32_t mark; int error = 0; + int offset = 0; /* Receive the record marking(RM) for stream only */ @@ -388,12 +389,20 @@ static int rpcclnt_receive(FAR struct rpcclnt *rpc, resplen = mark; } - error = psock_recv(&rpc->rc_so, reply, resplen, 0); - if (error < 0) + do { - ferr("ERROR: psock_recv response failed: %d\n", error); - return error; + error = psock_recv(&rpc->rc_so, reply + offset, resplen, 0); + + if (error < 0) + { + ferr("ERROR: psock_recv response failed: %d\n", error); + return error; + } + + resplen -= error; + offset += error; } + while (rpc->rc_sotype == SOCK_STREAM && resplen != 0); return OK; } From e1b14271c85f4aa0a23dfa2036afae7d53e9817c Mon Sep 17 00:00:00 2001 From: Masayuki Ishikawa Date: Wed, 12 May 2021 13:58:20 +0900 Subject: [PATCH 109/739] fs: nfs: Do not bind to a local port in TCP mode Summary: - Since binding to a local port is not necessary in TCP mode, it should be done only in UDP mode Impact: - None Testing: - Tested with NFS server on Ubuntu 18.04 (x86_64) - Tested with spresense:rndis (defconfig will be updated later) Signed-off-by: Masayuki Ishikawa --- fs/nfs/rpc_clnt.c | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/fs/nfs/rpc_clnt.c b/fs/nfs/rpc_clnt.c index 46ee90b151b..cdc029dc251 100644 --- a/fs/nfs/rpc_clnt.c +++ b/fs/nfs/rpc_clnt.c @@ -241,28 +241,31 @@ static int rpcclnt_socket(FAR struct rpcclnt *rpc, in_port_t rport) goto bad; } - /* Some servers require that the client port be a reserved port - * number. We always allocate a reserved port, as this prevents - * filehandle disclosure through UDP port capture. - */ - - do + if (rpc->rc_sotype == SOCK_DGRAM) { - *lport = htons(--port); - error = psock_bind(&rpc->rc_so, (FAR struct sockaddr *)&laddr, - addrlen); - if (error < 0) + /* Some servers require that the client port be a reserved port + * number. We always allocate a reserved port, as this prevents + * filehandle disclosure through UDP port capture. + */ + + do + { + *lport = htons(--port); + error = psock_bind(&rpc->rc_so, (FAR struct sockaddr *)&laddr, + addrlen); + if (error < 0) + { + ferr("ERROR: psock_bind failed: %d\n", error); + } + } + while (error == -EADDRINUSE && port >= 512); + + if (error) { ferr("ERROR: psock_bind failed: %d\n", error); + goto bad; } } - while (error == -EADDRINUSE && port >= 512); - - if (error) - { - ferr("ERROR: psock_bind failed: %d\n", error); - goto bad; - } /* Protocols that do not require connections could be optionally left * unconnected. That would allow servers to reply from a port other than From 129229f430bac61c769455d74f26bc95d4f85a47 Mon Sep 17 00:00:00 2001 From: Masayuki Ishikawa Date: Wed, 12 May 2021 14:41:35 +0900 Subject: [PATCH 110/739] boards: sabre-6quad: Update netnsh/netnsh_smp defconfigs Summary: - Add the following configs +CONFIG_CODECS_HASH_MD5=y +CONFIG_NETUTILS_CODECS=y +CONFIG_NFS=y Impact: - None Testing: - Tested with NFS server on Ubuntu 18.04 (x86_64) Signed-off-by: Masayuki Ishikawa --- boards/arm/imx6/sabre-6quad/configs/netnsh/defconfig | 3 +++ boards/arm/imx6/sabre-6quad/configs/netnsh_smp/defconfig | 3 +++ 2 files changed, 6 insertions(+) diff --git a/boards/arm/imx6/sabre-6quad/configs/netnsh/defconfig b/boards/arm/imx6/sabre-6quad/configs/netnsh/defconfig index d186fca3782..8f5a3d43d94 100644 --- a/boards/arm/imx6/sabre-6quad/configs/netnsh/defconfig +++ b/boards/arm/imx6/sabre-6quad/configs/netnsh/defconfig @@ -21,6 +21,7 @@ CONFIG_BOARD_LOOPSPERMSEC=99369 CONFIG_BOOT_RUNFROMSDRAM=y CONFIG_BUILTIN=y CONFIG_CLOCK_MONOTONIC=y +CONFIG_CODECS_HASH_MD5=y CONFIG_DEBUG_FULLOPT=y CONFIG_DEBUG_SYMBOLS=y CONFIG_DEV_ZERO=y @@ -48,6 +49,7 @@ CONFIG_NETDB_DNSSERVER_NOADDR=y CONFIG_NETINIT_DRIPADDR=0x0a000202 CONFIG_NETINIT_IPADDR=0x0a00020f CONFIG_NETINIT_NOMAC=y +CONFIG_NETUTILS_CODECS=y CONFIG_NETUTILS_IPERF=y CONFIG_NETUTILS_IPERFTEST_DEVNAME="eth0" CONFIG_NETUTILS_TELNETD=y @@ -62,6 +64,7 @@ CONFIG_NET_STATISTICS=y CONFIG_NET_TCP=y CONFIG_NET_UDP=y CONFIG_NET_UDP_CHECKSUMS=y +CONFIG_NFS=y CONFIG_NSH_ARCHINIT=y CONFIG_NSH_BUILTIN_APPS=y CONFIG_NSH_FILEIOSIZE=512 diff --git a/boards/arm/imx6/sabre-6quad/configs/netnsh_smp/defconfig b/boards/arm/imx6/sabre-6quad/configs/netnsh_smp/defconfig index b7471906cab..11f44843fad 100644 --- a/boards/arm/imx6/sabre-6quad/configs/netnsh_smp/defconfig +++ b/boards/arm/imx6/sabre-6quad/configs/netnsh_smp/defconfig @@ -21,6 +21,7 @@ CONFIG_BOARD_LOOPSPERMSEC=99369 CONFIG_BOOT_RUNFROMSDRAM=y CONFIG_BUILTIN=y CONFIG_CLOCK_MONOTONIC=y +CONFIG_CODECS_HASH_MD5=y CONFIG_DEBUG_FULLOPT=y CONFIG_DEBUG_SYMBOLS=y CONFIG_DEV_ZERO=y @@ -47,6 +48,7 @@ CONFIG_NETDB_DNSSERVER_NOADDR=y CONFIG_NETINIT_DRIPADDR=0x0a000202 CONFIG_NETINIT_IPADDR=0x0a00020f CONFIG_NETINIT_NOMAC=y +CONFIG_NETUTILS_CODECS=y CONFIG_NETUTILS_IPERF=y CONFIG_NETUTILS_IPERFTEST_DEVNAME="eth0" CONFIG_NETUTILS_TELNETD=y @@ -61,6 +63,7 @@ CONFIG_NET_STATISTICS=y CONFIG_NET_TCP=y CONFIG_NET_UDP=y CONFIG_NET_UDP_CHECKSUMS=y +CONFIG_NFS=y CONFIG_NSH_ARCHINIT=y CONFIG_NSH_BUILTIN_APPS=y CONFIG_NSH_FILEIOSIZE=512 From 3af0ef70ff5d5bd4d4d1cdb0152ee53182dc09dd Mon Sep 17 00:00:00 2001 From: Masayuki Ishikawa Date: Wed, 12 May 2021 14:45:17 +0900 Subject: [PATCH 111/739] boards: spresense: Update rndis/rndis_smp/wifi/wifi_smp defconfigs Summary: - Add the following configs +CONFIG_NFS=y +CONFIG_USERMAIN_STACKSIZE=3072 (rndis/defconfig only) Impact: - None Testing: - Tested with NFS server on Ubuntu 18.04 (x86_64) Signed-off-by: Masayuki Ishikawa --- boards/arm/cxd56xx/spresense/configs/rndis/defconfig | 2 ++ boards/arm/cxd56xx/spresense/configs/rndis_smp/defconfig | 1 + boards/arm/cxd56xx/spresense/configs/wifi/defconfig | 1 + boards/arm/cxd56xx/spresense/configs/wifi_smp/defconfig | 1 + 4 files changed, 5 insertions(+) diff --git a/boards/arm/cxd56xx/spresense/configs/rndis/defconfig b/boards/arm/cxd56xx/spresense/configs/rndis/defconfig index be516149248..9a86ad2e79a 100644 --- a/boards/arm/cxd56xx/spresense/configs/rndis/defconfig +++ b/boards/arm/cxd56xx/spresense/configs/rndis/defconfig @@ -105,6 +105,7 @@ CONFIG_NET_STATISTICS=y CONFIG_NET_TCP=y CONFIG_NET_TCPBACKLOG=y CONFIG_NET_UDP=y +CONFIG_NFS=y CONFIG_NSH_ARCHINIT=y CONFIG_NSH_BUILTIN_APPS=y CONFIG_NSH_DISABLE_TELNETD=y @@ -156,4 +157,5 @@ CONFIG_UART1_SERIAL_CONSOLE=y CONFIG_USBDEV=y CONFIG_USBDEV_DMA=y CONFIG_USBDEV_DUALSPEED=y +CONFIG_USERMAIN_STACKSIZE=3072 CONFIG_USER_ENTRYPOINT="spresense_main" diff --git a/boards/arm/cxd56xx/spresense/configs/rndis_smp/defconfig b/boards/arm/cxd56xx/spresense/configs/rndis_smp/defconfig index 2822555f749..dbf20221bef 100644 --- a/boards/arm/cxd56xx/spresense/configs/rndis_smp/defconfig +++ b/boards/arm/cxd56xx/spresense/configs/rndis_smp/defconfig @@ -107,6 +107,7 @@ CONFIG_NET_STATISTICS=y CONFIG_NET_TCP=y CONFIG_NET_TCPBACKLOG=y CONFIG_NET_UDP=y +CONFIG_NFS=y CONFIG_NSH_ARCHINIT=y CONFIG_NSH_BUILTIN_APPS=y CONFIG_NSH_DISABLE_TELNETD=y diff --git a/boards/arm/cxd56xx/spresense/configs/wifi/defconfig b/boards/arm/cxd56xx/spresense/configs/wifi/defconfig index b452d3486ce..320724e0a68 100644 --- a/boards/arm/cxd56xx/spresense/configs/wifi/defconfig +++ b/boards/arm/cxd56xx/spresense/configs/wifi/defconfig @@ -109,6 +109,7 @@ CONFIG_NET_UDP_NO_STACK=y CONFIG_NET_USRSOCK=y CONFIG_NET_USRSOCK_CONNS=16 CONFIG_NET_USRSOCK_UDP=y +CONFIG_NFS=y CONFIG_NSH_ARCHINIT=y CONFIG_NSH_BUILTIN_APPS=y CONFIG_NSH_DISABLE_ARP=y diff --git a/boards/arm/cxd56xx/spresense/configs/wifi_smp/defconfig b/boards/arm/cxd56xx/spresense/configs/wifi_smp/defconfig index 948693c4e57..80e260e5e16 100644 --- a/boards/arm/cxd56xx/spresense/configs/wifi_smp/defconfig +++ b/boards/arm/cxd56xx/spresense/configs/wifi_smp/defconfig @@ -112,6 +112,7 @@ CONFIG_NET_UDP_NO_STACK=y CONFIG_NET_USRSOCK=y CONFIG_NET_USRSOCK_CONNS=16 CONFIG_NET_USRSOCK_UDP=y +CONFIG_NFS=y CONFIG_NSH_ARCHINIT=y CONFIG_NSH_BUILTIN_APPS=y CONFIG_NSH_DISABLE_ARP=y From b5ee9b673cc543dc2105b2de033377ccaf584571 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Tue, 30 Mar 2021 14:56:41 -0300 Subject: [PATCH 112/739] tools: Add a bash completion script for the configure tool --- tools/configure_completion.bash | 82 +++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 tools/configure_completion.bash diff --git a/tools/configure_completion.bash b/tools/configure_completion.bash new file mode 100644 index 00000000000..f28b1bf009b --- /dev/null +++ b/tools/configure_completion.bash @@ -0,0 +1,82 @@ +#!/usr/bin/env bash +# tools/configure_completion.bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# + +function _nuttx_configure_completion +{ + local colon_idx=2 + local num_options=0 + + # Skip ./tools/configure.sh script options. + while [[ "${#COMP_WORDS[@]}" != "${colon_idx}" ]] && [[ "${COMP_WORDS[$((colon_idx - 1))]}" == '-'* ]] + do + # If "-a" is among the provided arguments, consider the apps directory. + if [ "${COMP_WORDS[$((colon_idx - 1))]}" == "-a" ]; then + colon_idx=$((colon_idx + 2)) + num_options=$((num_options + 2)) + else + colon_idx=$((colon_idx + 1)) + num_options=$((num_options + 1)) + fi + done + + # When the command line is complete, COMP_WORDS array will have 5 elements + # plus the options. + # The script may return when this state is reached. + if [ "${#COMP_WORDS[@]}" == $((5 + num_options)) ]; then + return + fi + + # If the last provided argument is "-a", do not execute autocompletion + # algorithm. + if [ "${COMP_WORDS[-2]}" == "-a" ]; then + return + fi + + local search_dir="" + local search_pattern="" + local reply_suffix="" + + if [ "${COMP_WORDS[${colon_idx}]}" == ':' ]; then + local board_name=${COMP_WORDS[$((colon_idx - 1))]} + local config_name=${COMP_WORDS[$((colon_idx + 1))]} + + search_dir="boards/*/*/${board_name}/configs/" + search_pattern="${config_name}" + reply_suffix=" " + else + search_dir="boards/*/*/" + search_pattern="${COMP_WORDS[$((1 + num_options))]}" + reply_suffix=":" + fi + + local wordlist + local suggestions + wordlist=$(find ${search_dir} -maxdepth 1 -mindepth 1 -type d -exec basename {} \;) 2>/dev/null + suggestions=($(compgen -W "${wordlist}" -- "${search_pattern}")) + + if [ "${#suggestions[@]}" == "1" ]; then + # If there's only one match, complete with the appropriate reply suffix. + COMPREPLY=("${suggestions[0]}${reply_suffix}") + else + # More than one suggestion resolved, respond with the suggestions intact. + COMPREPLY=("${suggestions[@]}") + fi +} + +complete -o bashdefault -o default -o nospace -F _nuttx_configure_completion ./tools/configure.sh \ No newline at end of file From beed26b6bf68f9f03913045537575f2943010022 Mon Sep 17 00:00:00 2001 From: Dong Heng Date: Mon, 3 May 2021 13:52:39 +0800 Subject: [PATCH 113/739] riscv/esp32c3: Add ESP32-C3 LEDC(PWM) driver --- arch/risc-v/src/esp32c3/Kconfig | 70 + arch/risc-v/src/esp32c3/Make.defs | 4 + arch/risc-v/src/esp32c3/esp32c3_ledc.c | 776 +++++ arch/risc-v/src/esp32c3/esp32c3_ledc.h | 52 + .../src/esp32c3/hardware/esp32c3_ledc.h | 2742 +++++++++++++++++ .../esp32c3-devkit/configs/pwm/defconfig | 47 + .../esp32c3/esp32c3-devkit/src/Makefile | 4 + .../esp32c3-devkit/src/esp32c3-devkit.h | 12 + .../esp32c3-devkit/src/esp32c3_bringup.c | 8 + .../esp32c3/esp32c3-devkit/src/esp32c3_ledc.c | 116 + 10 files changed, 3831 insertions(+) create mode 100644 arch/risc-v/src/esp32c3/esp32c3_ledc.c create mode 100644 arch/risc-v/src/esp32c3/esp32c3_ledc.h create mode 100644 arch/risc-v/src/esp32c3/hardware/esp32c3_ledc.h create mode 100644 boards/risc-v/esp32c3/esp32c3-devkit/configs/pwm/defconfig create mode 100644 boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_ledc.c diff --git a/arch/risc-v/src/esp32c3/Kconfig b/arch/risc-v/src/esp32c3/Kconfig index 88990811ebb..bce1ec8f706 100644 --- a/arch/risc-v/src/esp32c3/Kconfig +++ b/arch/risc-v/src/esp32c3/Kconfig @@ -178,6 +178,11 @@ config ESP32C3_SPI bool default n +config ESP32C3_LEDC + bool "LEDC (PWM)" + default n + select PWM + config ESP32C3_GPIO_IRQ bool "GPIO pin interrupts" default n @@ -418,6 +423,71 @@ config ESP32C3_FREERUN endmenu # Timer/counter Configuration endif # ESP32C3_TIMER +menu "LEDC configuration" + depends on ESP32C3_LEDC + +menuconfig ESP32C3_LEDC_TIM0 + bool "Timer 0" + default n + +if ESP32C3_LEDC_TIM0 + +config ESP32C3_LEDC_TIM0_CHANNELS + int "Number of Timer 0 channels" + default 2 + +endif # ESP32C3_LEDC_TIM0 + +menuconfig ESP32C3_LEDC_TIM1 + bool "Timer 1" + default n + +if ESP32C3_LEDC_TIM1 + +config ESP32C3_LEDC_TIM1_CHANNELS + int "Number of Timer 1 channels" + default 2 + +endif # ESP32C3_LEDC_TIM1 + +menuconfig ESP32C3_LEDC_TIM2 + bool "Timer 2" + default n + +if ESP32C3_LEDC_TIM2 + +config ESP32C3_LEDC_TIM2_CHANNELS + int "Number of Timer 2 channels" + default 2 + +endif # ESP32C3_LEDC_TIM2 + +config ESP32C3_LEDC_CHANNEL0_PIN + int "Channel 0 pin" + default 2 + +config ESP32C3_LEDC_CHANNEL1_PIN + int "Channel 1 pin" + default 3 + +config ESP32C3_LEDC_CHANNEL2_PIN + int "Channel 2 pin" + default 4 + +config ESP32C3_LEDC_CHANNEL3_PIN + int "Channel 3 pin" + default 5 + +config ESP32C3_LEDC_CHANNEL4_PIN + int "Channel 4 pin" + default 6 + +config ESP32C3_LEDC_CHANNEL5_PIN + int "Channel 5 pin" + default 7 + +endmenu # LEDC configuration + menu "Wi-Fi configuration" depends on ESP32C3_WIRELESS diff --git a/arch/risc-v/src/esp32c3/Make.defs b/arch/risc-v/src/esp32c3/Make.defs index a65498be289..049d85e7252 100644 --- a/arch/risc-v/src/esp32c3/Make.defs +++ b/arch/risc-v/src/esp32c3/Make.defs @@ -121,6 +121,10 @@ endif CHIP_CSRCS += esp32c3_rtc.c +ifeq ($(CONFIG_ESP32C3_LEDC),y) +CHIP_CSRCS += esp32c3_ledc.c +endif + ifeq ($(CONFIG_ESP32C3_WIRELESS),y) WIRELESS_DRV_UNPACK = esp-wireless-drivers-3rdparty WIRELESS_DRV_ID = 2b53111 diff --git a/arch/risc-v/src/esp32c3/esp32c3_ledc.c b/arch/risc-v/src/esp32c3/esp32c3_ledc.c new file mode 100644 index 00000000000..c769d26a163 --- /dev/null +++ b/arch/risc-v/src/esp32c3/esp32c3_ledc.c @@ -0,0 +1,776 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/esp32c3_ledc.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include + +#include "esp32c3.h" +#include "esp32c3_clockconfig.h" +#include "esp32c3_gpio.h" +#include "esp32c3_ledc.h" + +#include "riscv_arch.h" +#include "hardware/esp32c3_ledc.h" +#include "hardware/esp32c3_system.h" +#include "hardware/esp32c3_gpio_sigmap.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* LEDC total timers */ + +#define LEDC_TIMERS (3) + +/* LEDC total channels */ + +#if defined(CONFIG_PWM_NCHANNELS) && CONFIG_PWM_NCHANNELS > 1 +# define LEDC_CHANNELS (6) +#else +# define LEDC_CHANNELS (3) +#endif + +/* LEDC timer0 channels and offset */ + +#ifdef CONFIG_ESP32C3_LEDC_TIM0 +# if defined(CONFIG_PWM_NCHANNELS) && CONFIG_PWM_NCHANNELS > 1 +# define LEDC_TIM0_CHANS CONFIG_ESP32C3_LEDC_TIM0_CHANNELS +# else +# define LEDC_TIM0_CHANS (1) +# endif +# define LEDC_TIM0_CHANS_OFF (0) +#endif + +/* LEDC timer1 channels and offset */ + +#ifdef CONFIG_ESP32C3_LEDC_TIM1 +# if defined(CONFIG_PWM_NCHANNELS) && CONFIG_PWM_NCHANNELS > 1 +# define LEDC_TIM1_CHANS CONFIG_ESP32C3_LEDC_TIM1_CHANNELS +# else +# define LEDC_TIM1_CHANS (1) +# endif +# define LEDC_TIM1_CHANS_OFF (LEDC_TIM0_CHANS_OFF + LEDC_TIM0_CHANS) +#endif + +/* LEDC timer2 channels and offset */ + +#ifdef CONFIG_ESP32C3_LEDC_TIM2 +# if defined(CONFIG_PWM_NCHANNELS) && CONFIG_PWM_NCHANNELS > 1 +# define LEDC_TIM2_CHANS CONFIG_ESP32C3_LEDC_TIM2_CHANNELS +# else +# define LEDC_TIM2_CHANS (1) +# endif + +# define LEDC_TIM2_CHANS_OFF (LEDC_TIM1_CHANS_OFF + LEDC_TIM1_CHANS) +#endif + +/* LEDC clock resource */ + +#define LEDC_CLK_RES (1) /* APB clock */ + +/* LEDC timer max reload */ + +#define LEDC_RELOAD_MAX (16384) /* 2^14 */ + +/* LEDC timer max clock divider parameter */ + +#define LEDC_CLKDIV_MAX (1024) /* 2^10 */ + +/* LEDC timer registers mapping */ + +#define LEDC_TIMER_REG(r, n) ((r) + (n) * (LEDC_TIMER1_CONF_REG - \ + LEDC_TIMER2_CONF_REG)) + +/* LEDC timer channel registers mapping */ + +#define LEDC_CHAN_REG(r, n) ((r) + (n) * (LEDC_CH0_CONF0_REG - \ + LEDC_CH1_CONF0_REG)) + +#define SET_TIMER_BITS(t, r, b) setbits(b, LEDC_TIMER_REG(r, (t)->num)); +#define SET_TIMER_REG(t, r, v) putreg32(v, LEDC_TIMER_REG(r, (t)->num)); + +#define SET_CHAN_BITS(c, r, b) setbits(b, LEDC_CHAN_REG(r, (c)->num)); +#define SET_CHAN_REG(c, r, v) putreg32(v, LEDC_CHAN_REG(r, (c)->num)); + +#ifndef MIN +# define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif + +/**************************************************************************** + * Private Types + ****************************************************************************/ + +/* LEDC timer channel configuration */ + +struct esp32c3_ledc_chan_s +{ + const uint8_t num; /* Timer channel ID */ + const uint8_t pin; /* Timer channel GPIO pin number */ + + uint16_t duty; /* Timer channel current duty */ +}; + +/* This structure represents the state of one LEDC timer */ + +struct esp32c3_ledc_s +{ + const struct pwm_ops_s *ops; /* PWM operations */ + + const uint8_t num; /* Timer ID */ + + const uint8_t channels; /* Timer channels number */ + struct esp32c3_ledc_chan_s *chans; /* Timer channels pointer */ + + uint32_t frequency; /* Timer current frequency */ + uint32_t reload; /* Timer current reload */ +}; + +/**************************************************************************** + * Private Function Prototypes + ****************************************************************************/ + +static int pwm_setup(struct pwm_lowerhalf_s *dev); +static int pwm_shutdown(struct pwm_lowerhalf_s *dev); +static int pwm_start(struct pwm_lowerhalf_s *dev, + const struct pwm_info_s *info); +static int pwm_stop(struct pwm_lowerhalf_s *dev); +static int pwm_ioctl(struct pwm_lowerhalf_s *dev, int cmd, + unsigned long arg); + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +/* LEDC PWM operations */ + +static const struct pwm_ops_s g_pwmops = +{ + .setup = pwm_setup, + .shutdown = pwm_shutdown, + .start = pwm_start, + .stop = pwm_stop, + .ioctl = pwm_ioctl +}; + +/* LEDC channels table */ + +static struct esp32c3_ledc_chan_s g_ledc_chans[LEDC_CHANNELS] = +{ + { + .num = 0, + .pin = CONFIG_ESP32C3_LEDC_CHANNEL0_PIN + }, + + { + .num = 1, + .pin = CONFIG_ESP32C3_LEDC_CHANNEL1_PIN + }, + + { + .num = 2, + .pin = CONFIG_ESP32C3_LEDC_CHANNEL2_PIN + }, + +#if LEDC_CHANNELS > 3 + { + .num = 3, + .pin = CONFIG_ESP32C3_LEDC_CHANNEL3_PIN + }, + + { + .num = 4, + .pin = CONFIG_ESP32C3_LEDC_CHANNEL4_PIN + }, + + { + .num = 5, + .pin = CONFIG_ESP32C3_LEDC_CHANNEL5_PIN + } +#endif +}; + +/* LEDC timer0 private data */ + +#ifdef CONFIG_ESP32C3_LEDC_TIM0 +static struct esp32c3_ledc_s g_pwm0dev = +{ + .ops = &g_pwmops, + .num = 0, + .channels = LEDC_TIM0_CHANS, + .chans = &g_ledc_chans[LEDC_TIM0_CHANS_OFF] +}; +#endif /* CONFIG_ESP32C3_LEDC_TIM0 */ + +/* LEDC timer1 private data */ + +#ifdef CONFIG_ESP32C3_LEDC_TIM1 +static struct esp32c3_ledc_s g_pwm1dev = +{ + .ops = &g_pwmops, + .num = 1, + .channels = LEDC_TIM1_CHANS, + .chans = &g_ledc_chans[LEDC_TIM1_CHANS_OFF] +}; +#endif /* CONFIG_ESP32C3_LEDC_TIM1 */ + +/* LEDC timer2 private data */ + +#ifdef CONFIG_ESP32C3_LEDC_TIM2 +static struct esp32c3_ledc_s g_pwm2dev = +{ + .ops = &g_pwmops, + .num = 2, + .channels = LEDC_TIM2_CHANS, + .chans = &g_ledc_chans[LEDC_TIM2_CHANS_OFF] +}; +#endif /* CONFIG_ESP32C3_LEDC_TIM2 */ + +/* Clock reference count */ + +static uint32_t g_clk_ref; + +/**************************************************************************** + * Private functions + ****************************************************************************/ + +/**************************************************************************** + * Name: ledc_enable_clk + * + * Description: + * Enable LEDC clock. + * + * Input Parameters: + * NOne + * + * Returned Value: + * None. + * + ****************************************************************************/ + +static void ledc_enable_clk(void) +{ + irqstate_t flags; + + flags = enter_critical_section(); + + if (!g_clk_ref) + { + setbits(SYSTEM_LEDC_CLK_EN, SYSTEM_PERIP_CLK_EN0_REG); + resetbits(SYSTEM_LEDC_RST, SYSTEM_PERIP_RST_EN0_REG); + + putreg32(LEDC_CLK_RES, LEDC_CONF_REG); + + pwminfo("Enable ledc clock\n"); + } + + g_clk_ref++; + + leave_critical_section(flags); +} + +/**************************************************************************** + * Name: ledc_disable_clk + * + * Description: + * Disable LEDC clock. + * + * Input Parameters: + * NOne + * + * Returned Value: + * None. + * + ****************************************************************************/ + +static void ledc_disable_clk(void) +{ + irqstate_t flags; + + flags = enter_critical_section(); + + g_clk_ref--; + + if (!g_clk_ref) + { + pwminfo("Disable ledc clock\n"); + + setbits(SYSTEM_LEDC_RST, SYSTEM_PERIP_RST_EN0_REG); + resetbits(SYSTEM_LEDC_CLK_EN, SYSTEM_PERIP_CLK_EN0_REG); + } + + leave_critical_section(flags); +} + +/**************************************************************************** + * Name: setup_timer + * + * Description: + * Setup LEDC timer frequency and reload. + * + * Input Parameters: + * priv - A reference to the LEDC timer state structure + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void setup_timer(struct esp32c3_ledc_s *priv) +{ + irqstate_t flags; + uint32_t regval; + uint32_t reload; + uint32_t prescaler; + uint32_t shift = 1; + uint64_t pwmclk = esp32c3_clk_apb_freq(); + + /* Reset timer */ + + SET_TIMER_BITS(priv, LEDC_TIMER0_CONF_REG, LEDC_TIMER0_RST); + + /* Calculate optimal values for the timer prescaler and for the timer + * modulo register. If' frequency' is the desired frequency, then + * + * tpmclk = pwmclk / presc + * frequency = tpmclk / reload + * + * ==> + * + * reload = pwmclk / presc / frequency + * + * In ESP32-C3, there are 4 clock resources for PWM: + * + * 1. APB clock (80 MHz) + * 2. RTC clock (8 MHz) + * 3. XTAL clock (depends on hardware, generally is 40 MHz) + * 4. REF clock (this is APB clock divided, generally is 1 MHz) + * + * We mostly use APB clock generally. + * + * There are many solutions to this, but the best solution will be the one + * that has the largest reload value and the smallest prescaler value. + * That is the solution that should give us the most accuracy in the timer + * control. Subject to: + * + * 2 <= presc <= 2^14(16,384) + * 1 <= clkdiv <= 2^10 + * + * clkdiv has 8-bit decimal precision, so + * clkdiv = pwmclk * 256 / 16384 / frequency would be optimal. + * + * Example: + * + * pwmclk = 80 MHz + * frequency = 100 Hz + * + * presc = 80,000,000 * 256 / 16,384 / 100 + * = 12,500 + * timclk = 80,000,000 / (12,500 / 256) + * = 1,638,400 + * counter = 1,638,400 / 100 + * = 16,384 + * = 2^14 + * shift = 14 + */ + + reload = (pwmclk * 256 / priv->frequency + LEDC_CLKDIV_MAX) / + LEDC_CLKDIV_MAX; + if (reload == 0) + { + reload = 1; + } + else if (reload > LEDC_RELOAD_MAX) + { + reload = LEDC_RELOAD_MAX; + } + + for (int c = 2; c <= LEDC_RELOAD_MAX; c *= 2) + { + if (c * 2 > reload) + { + reload = c; + break; + } + + shift++; + } + + prescaler = pwmclk * 256 / reload / priv->frequency; + + pwminfo("PWM timer%" PRIu8 " frequency=%0.4f reload=%" PRIu32 " shift=%" \ + PRIu32 " prescaler=%0.4f\n", + priv->num, (float)pwmclk / reload / ((float)prescaler / 256), + reload, shift, (float)prescaler / 256); + + /* Store reload for channel duty */ + + priv->reload = reload; + + flags = enter_critical_section(); + + /* Set timer clock divide and reload */ + + regval = (shift << LEDC_TIMER0_DUTY_RES_S) | + (prescaler << LEDC_CLK_DIV_TIMER0_S); + SET_TIMER_REG(priv, LEDC_TIMER0_CONF_REG, regval); + + /* Update clock divide and reload to hardware */ + + SET_TIMER_BITS(priv, LEDC_TIMER0_CONF_REG, LEDC_TIMER0_PARA_UP); + + leave_critical_section(flags); +} + +/**************************************************************************** + * Name: setup_channel + * + * Description: + * Setup LEDC timer channel duty. + * + * Input Parameters: + * priv - A reference to the LEDC timer state structure + * cn - Timer channel number + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void setup_channel(struct esp32c3_ledc_s *priv, int cn) +{ + irqstate_t flags; + uint32_t regval; + struct esp32c3_ledc_chan_s *chan = &priv->chans[cn]; + + /* Duty cycle: + * + * duty cycle = duty / 65536 * reload (fractional value) + */ + + regval = b16toi(chan->duty * priv->reload + b16HALF); + + pwminfo("channel=%" PRIu8 " duty=%" PRIu16 "(%0.4f) regval=%" PRIu32 \ + " reload=%" PRIu32 "\n", + chan->num, chan->duty, (float)chan->duty / UINT16_MAX, + regval, priv->reload); + + flags = enter_critical_section(); + + /* Reset config 0 & 1 registers */ + + SET_CHAN_REG(chan, LEDC_CH0_CONF0_REG, 0); + SET_CHAN_REG(chan, LEDC_CH0_CONF1_REG, 0); + + /* Set pulse phase 0 */ + + SET_CHAN_REG(chan, LEDC_CH0_HPOINT_REG, 0); + + /* Duty register uses bits [18:4] */ + + SET_CHAN_REG(chan, LEDC_CH0_DUTY_REG, regval << 4); + + /* Start GPIO output */ + + SET_CHAN_BITS(chan, LEDC_CH0_CONF0_REG, LEDC_SIG_OUT_EN_CH0); + + /* Start Duty counter */ + + SET_CHAN_BITS(chan, LEDC_CH0_CONF1_REG, LEDC_DUTY_START_CH0); + + /* Update duty and phase to hardware */ + + SET_CHAN_BITS(chan, LEDC_CH0_CONF0_REG, LEDC_PARA_UP_CH0); + + leave_critical_section(flags); +} + +/**************************************************************************** + * Name: pwm_setup + * + * Description: + * This method is called when the driver is opened. The lower half driver + * should configure and initialize the device so that it is ready for use. + * It should not, however, output pulses until the start method is called. + * + * Input Parameters: + * dev - A reference to the lower half PWM driver state structure + * + * Returned Value: + * Zero on success; a negated errno value on failure + * + ****************************************************************************/ + +static int pwm_setup(struct pwm_lowerhalf_s *dev) +{ + struct esp32c3_ledc_s *priv = (struct esp32c3_ledc_s *)dev; + + pwminfo("PWM timer%d\n", priv->num); + + ledc_enable_clk(); + + /* Setup channel GPIO pins */ + + for (int i = 0; i < priv->channels; i++) + { + pwminfo("channel%d --> pin%d\n", priv->chans[i].num, + priv->chans[i].pin); + + esp32c3_configgpio(priv->chans[i].pin, OUTPUT | PULLUP); + esp32c3_gpio_matrix_out(priv->chans[i].pin, + LEDC_LS_SIG_OUT0_IDX + priv->chans[i].num, + 0, 0); + } + + return 0; +} + +/**************************************************************************** + * Name: pwm_shutdown + * + * Description: + * This method is called when the driver is closed. The lower half driver + * stop pulsed output, free any resources, disable the timer hardware, and + * put the system into the lowest possible power usage state + * + * Input Parameters: + * dev - A reference to the lower half PWM driver state structure + * + * Returned Value: + * Zero on success; a negated errno value on failure + * + ****************************************************************************/ + +static int pwm_shutdown(struct pwm_lowerhalf_s *dev) +{ + struct esp32c3_ledc_s *priv = (struct esp32c3_ledc_s *)dev; +#ifdef CONFIG_PWM_NCHANNELS + int channels = MIN(priv->channels, CONFIG_PWM_NCHANNELS); +#else + int channels = 1; +#endif + + /* Stop timer */ + + pwm_stop(dev); + + /* Clear timer and channel configuration */ + + priv->frequency = 0; + priv->reload = 0; + for (int i = 0; i < channels; i++) + { + priv->chans[i].duty = 0; + } + + ledc_disable_clk(); + + return 0; +} + +/**************************************************************************** + * Name: pwm_start + * + * Description: + * (Re-)initialize the timer resources and start the pulsed output + * + * Input Parameters: + * dev - A reference to the lower half PWM driver state structure + * info - A reference to the characteristics of the pulsed output + * + * Returned Value: + * Zero on success; a negated errno value on failure + * + ****************************************************************************/ + +static int pwm_start(struct pwm_lowerhalf_s *dev, + const struct pwm_info_s *info) +{ + struct esp32c3_ledc_s *priv = (struct esp32c3_ledc_s *)dev; +#ifdef CONFIG_PWM_NCHANNELS + int channels = MIN(priv->channels, CONFIG_PWM_NCHANNELS); +#else + int channels = 1; +#endif + + pwminfo("PWM timer%d\n", priv->num); + + /* Update timer with given PWM timer frequency */ + + if (priv->frequency != info->frequency) + { + priv->frequency = info->frequency; + setup_timer(priv); + } + + /* Update timer with given PWM channel duty */ + + for (int i = 0; i < channels; i++) + { + if (priv->chans[i].duty != info[i].duty) + { + priv->chans[i].duty = info[i].duty; + setup_channel(priv, i); + } + } + + return 0; +} + +/**************************************************************************** + * Name: pwm_stop + * + * Description: + * Stop the pulsed output and reset the timer resources. + * + * Input Parameters: + * dev - A reference to the lower half PWM driver state structure + * + * Returned Value: + * Zero on success; a negated errno value on failure + * + ****************************************************************************/ + +static int pwm_stop(struct pwm_lowerhalf_s *dev) +{ + irqstate_t flags; + struct esp32c3_ledc_s *priv = (struct esp32c3_ledc_s *)dev; + + pwminfo("PWM timer%d\n", priv->num); + + flags = enter_critical_section(); + + /* Stop timer */ + + SET_TIMER_BITS(priv, LEDC_TIMER0_CONF_REG, LEDC_TIMER0_PAUSE); + + /* Reset timer */ + + SET_TIMER_BITS(priv, LEDC_TIMER0_CONF_REG, LEDC_TIMER0_RST); + + leave_critical_section(flags); + return 0; +} + +/**************************************************************************** + * Name: pwm_ioctl + * + * Description: + * Lower-half logic may support platform-specific ioctl commands + * + * Input Parameters: + * dev - A reference to the lower half PWM driver state structure + * cmd - The ioctl command + * arg - The argument accompanying the ioctl command + * + * Returned Value: + * Zero on success; a negated errno value on failure + * + ****************************************************************************/ + +static int pwm_ioctl(struct pwm_lowerhalf_s *dev, int cmd, + unsigned long arg) +{ +#ifdef CONFIG_DEBUG_PWM_INFO + struct esp32c3_ledc_s *priv = (struct esp32c3_ledc_s *)dev; + + pwminfo("PWM timer%d\n", priv->num); +#endif + + return -ENOTTY; +} + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: esp32c3_ledc_init + * + * Description: + * Initialize one LEDC timer for use with the upper_level PWM driver. + * + * Input Parameters: + * timer - A number identifying the timer use. + * + * Returned Value: + * On success, a pointer to the ESP32-C3 LEDC lower half PWM driver is + * returned. NULL is returned on any failure. + * + ****************************************************************************/ + +struct pwm_lowerhalf_s *esp32c3_ledc_init(int timer) +{ + struct esp32c3_ledc_s *lower = NULL; + + pwminfo("TIM%u\n", timer); + + switch (timer) + { +#ifdef CONFIG_ESP32C3_LEDC_TIM0 + case 0: + { + lower = &g_pwm0dev; + break; + } +#endif + +#ifdef CONFIG_ESP32C3_LEDC_TIM1 + case 1: + { + lower = &g_pwm1dev; + break; + } +#endif + +#ifdef CONFIG_ESP32C3_LEDC_TIM2 + case 2: + { + lower = &g_pwm2dev; + break; + } +#endif + +#ifdef CONFIG_ESP32C3_LEDC_TIM3 + case 3: + { + lower = &g_pwm3dev; + break; + } +#endif + + default: + { + pwmerr("ERROR: No such timer configured %d\n", timer); + lower = NULL; + break; + } + } + + return (struct pwm_lowerhalf_s *)lower; +} diff --git a/arch/risc-v/src/esp32c3/esp32c3_ledc.h b/arch/risc-v/src/esp32c3/esp32c3_ledc.h new file mode 100644 index 00000000000..73ece77f671 --- /dev/null +++ b/arch/risc-v/src/esp32c3/esp32c3_ledc.h @@ -0,0 +1,52 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/esp32c3_ledc.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_ESP32C3_LEDC_H +#define __ARCH_RISCV_SRC_ESP32C3_ESP32C3_LEDC_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include + +/**************************************************************************** + * Public functions + ****************************************************************************/ + +/**************************************************************************** + * Name: esp32c3_ledc_init + * + * Description: + * Initialize one LEDC timer for use with the upper_level PWM driver. + * + * Input Parameters: + * timer - A number identifying the timer use. + * + * Returned Value: + * On success, a pointer to the ESP32-C3 LEDC lower half PWM driver is + * returned. NULL is returned on any failure. + * + ****************************************************************************/ + +struct pwm_lowerhalf_s *esp32c3_ledc_init(int timer); + +#endif /* __ARCH_RISCV_SRC_ESP32C3_ESP32C3_LEDC_H */ diff --git a/arch/risc-v/src/esp32c3/hardware/esp32c3_ledc.h b/arch/risc-v/src/esp32c3/hardware/esp32c3_ledc.h new file mode 100644 index 00000000000..6b8846b75be --- /dev/null +++ b/arch/risc-v/src/esp32c3/hardware/esp32c3_ledc.h @@ -0,0 +1,2742 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/hardware/esp32c3_ledc.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_LEDC_H +#define __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_LEDC_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include "esp32c3_soc.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* LEDC_CH0_CONF0_REG register + * Configuration register 0 for channel 0 + */ + +#define LEDC_CH0_CONF0_REG (DR_REG_LEDC_BASE + 0x0) + +/* LEDC_TIMER_SEL_CH0 : R/W; bitpos: [1:0]; default: 0; + * This field is used to select one of timers for channel 0. + * + * 0: select timer0 + * + * 1: select timer1 + * + * 2: select timer2 + * + * 3: select timer3 + */ + +#define LEDC_TIMER_SEL_CH0 0x00000003 +#define LEDC_TIMER_SEL_CH0_M (LEDC_TIMER_SEL_CH0_V << LEDC_TIMER_SEL_CH0_S) +#define LEDC_TIMER_SEL_CH0_V 0x00000003 +#define LEDC_TIMER_SEL_CH0_S 0 + +/* LEDC_SIG_OUT_EN_CH0 : R/W; bitpos: [2]; default: 0; + * Set this bit to enable signal output on channel 0. + */ + +#define LEDC_SIG_OUT_EN_CH0 (BIT(2)) +#define LEDC_SIG_OUT_EN_CH0_M (LEDC_SIG_OUT_EN_CH0_V << LEDC_SIG_OUT_EN_CH0_S) +#define LEDC_SIG_OUT_EN_CH0_V 0x00000001 +#define LEDC_SIG_OUT_EN_CH0_S 2 + +/* LEDC_IDLE_LV_CH0 : R/W; bitpos: [3]; default: 0; + * This bit is used to control the output value when channel 0 is inactive. + */ + +#define LEDC_IDLE_LV_CH0 (BIT(3)) +#define LEDC_IDLE_LV_CH0_M (LEDC_IDLE_LV_CH0_V << LEDC_IDLE_LV_CH0_S) +#define LEDC_IDLE_LV_CH0_V 0x00000001 +#define LEDC_IDLE_LV_CH0_S 3 + +/* LEDC_PARA_UP_CH0 : WO; bitpos: [4]; default: 0; + * This bit is used to update register LEDC_CH0_HPOINT and LEDC_CH0_DUTY for + * channel 0. + */ + +#define LEDC_PARA_UP_CH0 (BIT(4)) +#define LEDC_PARA_UP_CH0_M (LEDC_PARA_UP_CH0_V << LEDC_PARA_UP_CH0_S) +#define LEDC_PARA_UP_CH0_V 0x00000001 +#define LEDC_PARA_UP_CH0_S 4 + +/* LEDC_OVF_NUM_CH0 : R/W; bitpos: [14:5]; default: 0; + * This register is used to configure the maximum times of overflow minus 1. + * + * The LEDC_OVF_CNT_CH0_INT interrupt will be triggered when channel 0 + * overflows for (LEDC_OVF_NUM_CH0 + 1) times. + */ + +#define LEDC_OVF_NUM_CH0 0x000003FF +#define LEDC_OVF_NUM_CH0_M (LEDC_OVF_NUM_CH0_V << LEDC_OVF_NUM_CH0_S) +#define LEDC_OVF_NUM_CH0_V 0x000003FF +#define LEDC_OVF_NUM_CH0_S 5 + +/* LEDC_OVF_CNT_EN_CH0 : R/W; bitpos: [15]; default: 0; + * This bit is used to enable the ovf_cnt of channel 0. + */ + +#define LEDC_OVF_CNT_EN_CH0 (BIT(15)) +#define LEDC_OVF_CNT_EN_CH0_M (LEDC_OVF_CNT_EN_CH0_V << LEDC_OVF_CNT_EN_CH0_S) +#define LEDC_OVF_CNT_EN_CH0_V 0x00000001 +#define LEDC_OVF_CNT_EN_CH0_S 15 + +/* LEDC_OVF_CNT_RESET_CH0 : WO; bitpos: [16]; default: 0; + * Set this bit to reset the ovf_cnt of channel 0. + */ + +#define LEDC_OVF_CNT_RESET_CH0 (BIT(16)) +#define LEDC_OVF_CNT_RESET_CH0_M (LEDC_OVF_CNT_RESET_CH0_V << LEDC_OVF_CNT_RESET_CH0_S) +#define LEDC_OVF_CNT_RESET_CH0_V 0x00000001 +#define LEDC_OVF_CNT_RESET_CH0_S 16 + +/* LEDC_OVF_CNT_RESET_ST_CH0 : RO; bitpos: [17]; default: 0; + * This is the status bit of LEDC_OVF_CNT_RESET_CH0. + */ + +#define LEDC_OVF_CNT_RESET_ST_CH0 (BIT(17)) +#define LEDC_OVF_CNT_RESET_ST_CH0_M (LEDC_OVF_CNT_RESET_ST_CH0_V << LEDC_OVF_CNT_RESET_ST_CH0_S) +#define LEDC_OVF_CNT_RESET_ST_CH0_V 0x00000001 +#define LEDC_OVF_CNT_RESET_ST_CH0_S 17 + +/* LEDC_CH0_HPOINT_REG register + * High point register for channel 0 + */ + +#define LEDC_CH0_HPOINT_REG (DR_REG_LEDC_BASE + 0x4) + +/* LEDC_HPOINT_CH0 : R/W; bitpos: [13:0]; default: 0; + * The output value changes to high when the selected timers has reached the + * value specified by this register. + */ + +#define LEDC_HPOINT_CH0 0x00003FFF +#define LEDC_HPOINT_CH0_M (LEDC_HPOINT_CH0_V << LEDC_HPOINT_CH0_S) +#define LEDC_HPOINT_CH0_V 0x00003FFF +#define LEDC_HPOINT_CH0_S 0 + +/* LEDC_CH0_DUTY_REG register + * Initial duty cycle for channel 0 + */ + +#define LEDC_CH0_DUTY_REG (DR_REG_LEDC_BASE + 0x8) + +/* LEDC_DUTY_CH0 : R/W; bitpos: [18:0]; default: 0; + * This register is used to change the output duty by controlling the Lpoint. + * + * The output value turns to low when the selected timers has reached the + * Lpoint. + */ + +#define LEDC_DUTY_CH0 0x0007FFFF +#define LEDC_DUTY_CH0_M (LEDC_DUTY_CH0_V << LEDC_DUTY_CH0_S) +#define LEDC_DUTY_CH0_V 0x0007FFFF +#define LEDC_DUTY_CH0_S 0 + +/* LEDC_CH0_CONF1_REG register + * Configuration register 1 for channel 0 + */ + +#define LEDC_CH0_CONF1_REG (DR_REG_LEDC_BASE + 0xc) + +/* LEDC_DUTY_SCALE_CH0 : R/W; bitpos: [9:0]; default: 0; + * This register is used to configure the changing step scale of duty on + * channel 0. + */ + +#define LEDC_DUTY_SCALE_CH0 0x000003FF +#define LEDC_DUTY_SCALE_CH0_M (LEDC_DUTY_SCALE_CH0_V << LEDC_DUTY_SCALE_CH0_S) +#define LEDC_DUTY_SCALE_CH0_V 0x000003FF +#define LEDC_DUTY_SCALE_CH0_S 0 + +/* LEDC_DUTY_CYCLE_CH0 : R/W; bitpos: [19:10]; default: 0; + * The duty will change every LEDC_DUTY_CYCLE_CH0 on channel 0. + */ + +#define LEDC_DUTY_CYCLE_CH0 0x000003FF +#define LEDC_DUTY_CYCLE_CH0_M (LEDC_DUTY_CYCLE_CH0_V << LEDC_DUTY_CYCLE_CH0_S) +#define LEDC_DUTY_CYCLE_CH0_V 0x000003FF +#define LEDC_DUTY_CYCLE_CH0_S 10 + +/* LEDC_DUTY_NUM_CH0 : R/W; bitpos: [29:20]; default: 0; + * This register is used to control the number of times the duty cycle will + * be changed. + */ + +#define LEDC_DUTY_NUM_CH0 0x000003FF +#define LEDC_DUTY_NUM_CH0_M (LEDC_DUTY_NUM_CH0_V << LEDC_DUTY_NUM_CH0_S) +#define LEDC_DUTY_NUM_CH0_V 0x000003FF +#define LEDC_DUTY_NUM_CH0_S 20 + +/* LEDC_DUTY_INC_CH0 : R/W; bitpos: [30]; default: 1; + * This register is used to increase or decrease the duty of output signal + * on channel 0. 1: Increase;0: Decrease. + */ + +#define LEDC_DUTY_INC_CH0 (BIT(30)) +#define LEDC_DUTY_INC_CH0_M (LEDC_DUTY_INC_CH0_V << LEDC_DUTY_INC_CH0_S) +#define LEDC_DUTY_INC_CH0_V 0x00000001 +#define LEDC_DUTY_INC_CH0_S 30 + +/* LEDC_DUTY_START_CH0 : R/W; bitpos: [31]; default: 0; + * Other configured fields in LEDC_CH0_CONF1_REG will start to take effect + * when this bit is set to 1. + */ + +#define LEDC_DUTY_START_CH0 (BIT(31)) +#define LEDC_DUTY_START_CH0_M (LEDC_DUTY_START_CH0_V << LEDC_DUTY_START_CH0_S) +#define LEDC_DUTY_START_CH0_V 0x00000001 +#define LEDC_DUTY_START_CH0_S 31 + +/* LEDC_CH0_DUTY_R_REG register + * Current duty cycle for channel 0 + */ + +#define LEDC_CH0_DUTY_R_REG (DR_REG_LEDC_BASE + 0x10) + +/* LEDC_DUTY_R_CH0 : RO; bitpos: [18:0]; default: 0; + * This register stores the current duty of output signal on channel 0. + */ + +#define LEDC_DUTY_R_CH0 0x0007FFFF +#define LEDC_DUTY_R_CH0_M (LEDC_DUTY_R_CH0_V << LEDC_DUTY_R_CH0_S) +#define LEDC_DUTY_R_CH0_V 0x0007FFFF +#define LEDC_DUTY_R_CH0_S 0 + +/* LEDC_CH1_CONF0_REG register + * Configuration register 0 for channel 1 + */ + +#define LEDC_CH1_CONF0_REG (DR_REG_LEDC_BASE + 0x14) + +/* LEDC_TIMER_SEL_CH1 : R/W; bitpos: [1:0]; default: 0; + * This field is used to select one of timers for channel 1. + * + * 0: select timer0 + * + * 1: select timer1 + * + * 2: select timer2 + * + * 3: select timer3 + */ + +#define LEDC_TIMER_SEL_CH1 0x00000003 +#define LEDC_TIMER_SEL_CH1_M (LEDC_TIMER_SEL_CH1_V << LEDC_TIMER_SEL_CH1_S) +#define LEDC_TIMER_SEL_CH1_V 0x00000003 +#define LEDC_TIMER_SEL_CH1_S 0 + +/* LEDC_SIG_OUT_EN_CH1 : R/W; bitpos: [2]; default: 0; + * Set this bit to enable signal output on channel 1. + */ + +#define LEDC_SIG_OUT_EN_CH1 (BIT(2)) +#define LEDC_SIG_OUT_EN_CH1_M (LEDC_SIG_OUT_EN_CH1_V << LEDC_SIG_OUT_EN_CH1_S) +#define LEDC_SIG_OUT_EN_CH1_V 0x00000001 +#define LEDC_SIG_OUT_EN_CH1_S 2 + +/* LEDC_IDLE_LV_CH1 : R/W; bitpos: [3]; default: 0; + * This bit is used to control the output value when channel 1 is inactive. + */ + +#define LEDC_IDLE_LV_CH1 (BIT(3)) +#define LEDC_IDLE_LV_CH1_M (LEDC_IDLE_LV_CH1_V << LEDC_IDLE_LV_CH1_S) +#define LEDC_IDLE_LV_CH1_V 0x00000001 +#define LEDC_IDLE_LV_CH1_S 3 + +/* LEDC_PARA_UP_CH1 : WO; bitpos: [4]; default: 0; + * This bit is used to update register LEDC_CH1_HPOINT and LEDC_CH1_DUTY for + * channel 1. + */ + +#define LEDC_PARA_UP_CH1 (BIT(4)) +#define LEDC_PARA_UP_CH1_M (LEDC_PARA_UP_CH1_V << LEDC_PARA_UP_CH1_S) +#define LEDC_PARA_UP_CH1_V 0x00000001 +#define LEDC_PARA_UP_CH1_S 4 + +/* LEDC_OVF_NUM_CH1 : R/W; bitpos: [14:5]; default: 0; + * This register is used to configure the maximum times of overflow minus 1. + * + * The LEDC_OVF_CNT_CH1_INT interrupt will be triggered when channel 1 + * overflows for (LEDC_OVF_NUM_CH1 + 1) times. + */ + +#define LEDC_OVF_NUM_CH1 0x000003FF +#define LEDC_OVF_NUM_CH1_M (LEDC_OVF_NUM_CH1_V << LEDC_OVF_NUM_CH1_S) +#define LEDC_OVF_NUM_CH1_V 0x000003FF +#define LEDC_OVF_NUM_CH1_S 5 + +/* LEDC_OVF_CNT_EN_CH1 : R/W; bitpos: [15]; default: 0; + * This bit is used to enable the ovf_cnt of channel 1. + */ + +#define LEDC_OVF_CNT_EN_CH1 (BIT(15)) +#define LEDC_OVF_CNT_EN_CH1_M (LEDC_OVF_CNT_EN_CH1_V << LEDC_OVF_CNT_EN_CH1_S) +#define LEDC_OVF_CNT_EN_CH1_V 0x00000001 +#define LEDC_OVF_CNT_EN_CH1_S 15 + +/* LEDC_OVF_CNT_RESET_CH1 : WO; bitpos: [16]; default: 0; + * Set this bit to reset the ovf_cnt of channel 1. + */ + +#define LEDC_OVF_CNT_RESET_CH1 (BIT(16)) +#define LEDC_OVF_CNT_RESET_CH1_M (LEDC_OVF_CNT_RESET_CH1_V << LEDC_OVF_CNT_RESET_CH1_S) +#define LEDC_OVF_CNT_RESET_CH1_V 0x00000001 +#define LEDC_OVF_CNT_RESET_CH1_S 16 + +/* LEDC_OVF_CNT_RESET_ST_CH1 : RO; bitpos: [17]; default: 0; + * This is the status bit of LEDC_OVF_CNT_RESET_CH1. + */ + +#define LEDC_OVF_CNT_RESET_ST_CH1 (BIT(17)) +#define LEDC_OVF_CNT_RESET_ST_CH1_M (LEDC_OVF_CNT_RESET_ST_CH1_V << LEDC_OVF_CNT_RESET_ST_CH1_S) +#define LEDC_OVF_CNT_RESET_ST_CH1_V 0x00000001 +#define LEDC_OVF_CNT_RESET_ST_CH1_S 17 + +/* LEDC_CH1_HPOINT_REG register + * High point register for channel 1 + */ + +#define LEDC_CH1_HPOINT_REG (DR_REG_LEDC_BASE + 0x18) + +/* LEDC_HPOINT_CH1 : R/W; bitpos: [13:0]; default: 0; + * The output value changes to high when the selected timers has reached the + * value specified by this register. + */ + +#define LEDC_HPOINT_CH1 0x00003FFF +#define LEDC_HPOINT_CH1_M (LEDC_HPOINT_CH1_V << LEDC_HPOINT_CH1_S) +#define LEDC_HPOINT_CH1_V 0x00003FFF +#define LEDC_HPOINT_CH1_S 0 + +/* LEDC_CH1_DUTY_REG register + * Initial duty cycle for channel 1 + */ + +#define LEDC_CH1_DUTY_REG (DR_REG_LEDC_BASE + 0x1c) + +/* LEDC_DUTY_CH1 : R/W; bitpos: [18:0]; default: 0; + * This register is used to change the output duty by controlling the Lpoint. + * + * The output value turns to low when the selected timers has reached the + * Lpoint. + */ + +#define LEDC_DUTY_CH1 0x0007FFFF +#define LEDC_DUTY_CH1_M (LEDC_DUTY_CH1_V << LEDC_DUTY_CH1_S) +#define LEDC_DUTY_CH1_V 0x0007FFFF +#define LEDC_DUTY_CH1_S 0 + +/* LEDC_CH1_CONF1_REG register + * Configuration register 1 for channel 1 + */ + +#define LEDC_CH1_CONF1_REG (DR_REG_LEDC_BASE + 0x20) + +/* LEDC_DUTY_SCALE_CH1 : R/W; bitpos: [9:0]; default: 0; + * This register is used to configure the changing step scale of duty on + * channel 1. + */ + +#define LEDC_DUTY_SCALE_CH1 0x000003FF +#define LEDC_DUTY_SCALE_CH1_M (LEDC_DUTY_SCALE_CH1_V << LEDC_DUTY_SCALE_CH1_S) +#define LEDC_DUTY_SCALE_CH1_V 0x000003FF +#define LEDC_DUTY_SCALE_CH1_S 0 + +/* LEDC_DUTY_CYCLE_CH1 : R/W; bitpos: [19:10]; default: 0; + * The duty will change every LEDC_DUTY_CYCLE_CH1 on channel 1. + */ + +#define LEDC_DUTY_CYCLE_CH1 0x000003FF +#define LEDC_DUTY_CYCLE_CH1_M (LEDC_DUTY_CYCLE_CH1_V << LEDC_DUTY_CYCLE_CH1_S) +#define LEDC_DUTY_CYCLE_CH1_V 0x000003FF +#define LEDC_DUTY_CYCLE_CH1_S 10 + +/* LEDC_DUTY_NUM_CH1 : R/W; bitpos: [29:20]; default: 0; + * This register is used to control the number of times the duty cycle will + * be changed. + */ + +#define LEDC_DUTY_NUM_CH1 0x000003FF +#define LEDC_DUTY_NUM_CH1_M (LEDC_DUTY_NUM_CH1_V << LEDC_DUTY_NUM_CH1_S) +#define LEDC_DUTY_NUM_CH1_V 0x000003FF +#define LEDC_DUTY_NUM_CH1_S 20 + +/* LEDC_DUTY_INC_CH1 : R/W; bitpos: [30]; default: 1; + * This register is used to increase or decrease the duty of output signal + * on channel 1. 1: Increase;0: Decrease. + */ + +#define LEDC_DUTY_INC_CH1 (BIT(30)) +#define LEDC_DUTY_INC_CH1_M (LEDC_DUTY_INC_CH1_V << LEDC_DUTY_INC_CH1_S) +#define LEDC_DUTY_INC_CH1_V 0x00000001 +#define LEDC_DUTY_INC_CH1_S 30 + +/* LEDC_DUTY_START_CH1 : R/W; bitpos: [31]; default: 0; + * Other configured fields in LEDC_CH1_CONF1_REG will start to take effect + * when this bit is set to 1. + */ + +#define LEDC_DUTY_START_CH1 (BIT(31)) +#define LEDC_DUTY_START_CH1_M (LEDC_DUTY_START_CH1_V << LEDC_DUTY_START_CH1_S) +#define LEDC_DUTY_START_CH1_V 0x00000001 +#define LEDC_DUTY_START_CH1_S 31 + +/* LEDC_CH1_DUTY_R_REG register + * Current duty cycle for channel 1 + */ + +#define LEDC_CH1_DUTY_R_REG (DR_REG_LEDC_BASE + 0x24) + +/* LEDC_DUTY_R_CH1 : RO; bitpos: [18:0]; default: 0; + * This register stores the current duty of output signal on channel 1. + */ + +#define LEDC_DUTY_R_CH1 0x0007FFFF +#define LEDC_DUTY_R_CH1_M (LEDC_DUTY_R_CH1_V << LEDC_DUTY_R_CH1_S) +#define LEDC_DUTY_R_CH1_V 0x0007FFFF +#define LEDC_DUTY_R_CH1_S 0 + +/* LEDC_CH2_CONF0_REG register + * Configuration register 0 for channel 2 + */ + +#define LEDC_CH2_CONF0_REG (DR_REG_LEDC_BASE + 0x28) + +/* LEDC_TIMER_SEL_CH2 : R/W; bitpos: [1:0]; default: 0; + * This field is used to select one of timers for channel 2. + * + * 0: select timer0 + * + * 1: select timer1 + * + * 2: select timer2 + * + * 3: select timer3 + */ + +#define LEDC_TIMER_SEL_CH2 0x00000003 +#define LEDC_TIMER_SEL_CH2_M (LEDC_TIMER_SEL_CH2_V << LEDC_TIMER_SEL_CH2_S) +#define LEDC_TIMER_SEL_CH2_V 0x00000003 +#define LEDC_TIMER_SEL_CH2_S 0 + +/* LEDC_SIG_OUT_EN_CH2 : R/W; bitpos: [2]; default: 0; + * Set this bit to enable signal output on channel 2. + */ + +#define LEDC_SIG_OUT_EN_CH2 (BIT(2)) +#define LEDC_SIG_OUT_EN_CH2_M (LEDC_SIG_OUT_EN_CH2_V << LEDC_SIG_OUT_EN_CH2_S) +#define LEDC_SIG_OUT_EN_CH2_V 0x00000001 +#define LEDC_SIG_OUT_EN_CH2_S 2 + +/* LEDC_IDLE_LV_CH2 : R/W; bitpos: [3]; default: 0; + * This bit is used to control the output value when channel 2 is inactive. + */ + +#define LEDC_IDLE_LV_CH2 (BIT(3)) +#define LEDC_IDLE_LV_CH2_M (LEDC_IDLE_LV_CH2_V << LEDC_IDLE_LV_CH2_S) +#define LEDC_IDLE_LV_CH2_V 0x00000001 +#define LEDC_IDLE_LV_CH2_S 3 + +/* LEDC_PARA_UP_CH2 : WO; bitpos: [4]; default: 0; + * This bit is used to update register LEDC_CH2_HPOINT and LEDC_CH2_DUTY for + * channel 2. + */ + +#define LEDC_PARA_UP_CH2 (BIT(4)) +#define LEDC_PARA_UP_CH2_M (LEDC_PARA_UP_CH2_V << LEDC_PARA_UP_CH2_S) +#define LEDC_PARA_UP_CH2_V 0x00000001 +#define LEDC_PARA_UP_CH2_S 4 + +/* LEDC_OVF_NUM_CH2 : R/W; bitpos: [14:5]; default: 0; + * This register is used to configure the maximum times of overflow minus 1. + * + * The LEDC_OVF_CNT_CH2_INT interrupt will be triggered when channel 2 + * overflows for (LEDC_OVF_NUM_CH2 + 1) times. + */ + +#define LEDC_OVF_NUM_CH2 0x000003FF +#define LEDC_OVF_NUM_CH2_M (LEDC_OVF_NUM_CH2_V << LEDC_OVF_NUM_CH2_S) +#define LEDC_OVF_NUM_CH2_V 0x000003FF +#define LEDC_OVF_NUM_CH2_S 5 + +/* LEDC_OVF_CNT_EN_CH2 : R/W; bitpos: [15]; default: 0; + * This bit is used to enable the ovf_cnt of channel 2. + */ + +#define LEDC_OVF_CNT_EN_CH2 (BIT(15)) +#define LEDC_OVF_CNT_EN_CH2_M (LEDC_OVF_CNT_EN_CH2_V << LEDC_OVF_CNT_EN_CH2_S) +#define LEDC_OVF_CNT_EN_CH2_V 0x00000001 +#define LEDC_OVF_CNT_EN_CH2_S 15 + +/* LEDC_OVF_CNT_RESET_CH2 : WO; bitpos: [16]; default: 0; + * Set this bit to reset the ovf_cnt of channel 2. + */ + +#define LEDC_OVF_CNT_RESET_CH2 (BIT(16)) +#define LEDC_OVF_CNT_RESET_CH2_M (LEDC_OVF_CNT_RESET_CH2_V << LEDC_OVF_CNT_RESET_CH2_S) +#define LEDC_OVF_CNT_RESET_CH2_V 0x00000001 +#define LEDC_OVF_CNT_RESET_CH2_S 16 + +/* LEDC_OVF_CNT_RESET_ST_CH2 : RO; bitpos: [17]; default: 0; + * This is the status bit of LEDC_OVF_CNT_RESET_CH2. + */ + +#define LEDC_OVF_CNT_RESET_ST_CH2 (BIT(17)) +#define LEDC_OVF_CNT_RESET_ST_CH2_M (LEDC_OVF_CNT_RESET_ST_CH2_V << LEDC_OVF_CNT_RESET_ST_CH2_S) +#define LEDC_OVF_CNT_RESET_ST_CH2_V 0x00000001 +#define LEDC_OVF_CNT_RESET_ST_CH2_S 17 + +/* LEDC_CH2_HPOINT_REG register + * High point register for channel 2 + */ + +#define LEDC_CH2_HPOINT_REG (DR_REG_LEDC_BASE + 0x2c) + +/* LEDC_HPOINT_CH2 : R/W; bitpos: [13:0]; default: 0; + * The output value changes to high when the selected timers has reached the + * value specified by this register. + */ + +#define LEDC_HPOINT_CH2 0x00003FFF +#define LEDC_HPOINT_CH2_M (LEDC_HPOINT_CH2_V << LEDC_HPOINT_CH2_S) +#define LEDC_HPOINT_CH2_V 0x00003FFF +#define LEDC_HPOINT_CH2_S 0 + +/* LEDC_CH2_DUTY_REG register + * Initial duty cycle for channel 2 + */ + +#define LEDC_CH2_DUTY_REG (DR_REG_LEDC_BASE + 0x30) + +/* LEDC_DUTY_CH2 : R/W; bitpos: [18:0]; default: 0; + * This register is used to change the output duty by controlling the Lpoint. + * + * The output value turns to low when the selected timers has reached the + * Lpoint. + */ + +#define LEDC_DUTY_CH2 0x0007FFFF +#define LEDC_DUTY_CH2_M (LEDC_DUTY_CH2_V << LEDC_DUTY_CH2_S) +#define LEDC_DUTY_CH2_V 0x0007FFFF +#define LEDC_DUTY_CH2_S 0 + +/* LEDC_CH2_CONF1_REG register + * Configuration register 1 for channel 2 + */ + +#define LEDC_CH2_CONF1_REG (DR_REG_LEDC_BASE + 0x34) + +/* LEDC_DUTY_SCALE_CH2 : R/W; bitpos: [9:0]; default: 0; + * This register is used to configure the changing step scale of duty on + * channel 2. + */ + +#define LEDC_DUTY_SCALE_CH2 0x000003FF +#define LEDC_DUTY_SCALE_CH2_M (LEDC_DUTY_SCALE_CH2_V << LEDC_DUTY_SCALE_CH2_S) +#define LEDC_DUTY_SCALE_CH2_V 0x000003FF +#define LEDC_DUTY_SCALE_CH2_S 0 + +/* LEDC_DUTY_CYCLE_CH2 : R/W; bitpos: [19:10]; default: 0; + * The duty will change every LEDC_DUTY_CYCLE_CH2 on channel 2. + */ + +#define LEDC_DUTY_CYCLE_CH2 0x000003FF +#define LEDC_DUTY_CYCLE_CH2_M (LEDC_DUTY_CYCLE_CH2_V << LEDC_DUTY_CYCLE_CH2_S) +#define LEDC_DUTY_CYCLE_CH2_V 0x000003FF +#define LEDC_DUTY_CYCLE_CH2_S 10 + +/* LEDC_DUTY_NUM_CH2 : R/W; bitpos: [29:20]; default: 0; + * This register is used to control the number of times the duty cycle will + * be changed. + */ + +#define LEDC_DUTY_NUM_CH2 0x000003FF +#define LEDC_DUTY_NUM_CH2_M (LEDC_DUTY_NUM_CH2_V << LEDC_DUTY_NUM_CH2_S) +#define LEDC_DUTY_NUM_CH2_V 0x000003FF +#define LEDC_DUTY_NUM_CH2_S 20 + +/* LEDC_DUTY_INC_CH2 : R/W; bitpos: [30]; default: 1; + * This register is used to increase or decrease the duty of output signal + * on channel 2. 1: Increase;0: Decrease. + */ + +#define LEDC_DUTY_INC_CH2 (BIT(30)) +#define LEDC_DUTY_INC_CH2_M (LEDC_DUTY_INC_CH2_V << LEDC_DUTY_INC_CH2_S) +#define LEDC_DUTY_INC_CH2_V 0x00000001 +#define LEDC_DUTY_INC_CH2_S 30 + +/* LEDC_DUTY_START_CH2 : R/W; bitpos: [31]; default: 0; + * Other configured fields in LEDC_CH2_CONF1_REG will start to take effect + * when this bit is set to 1. + */ + +#define LEDC_DUTY_START_CH2 (BIT(31)) +#define LEDC_DUTY_START_CH2_M (LEDC_DUTY_START_CH2_V << LEDC_DUTY_START_CH2_S) +#define LEDC_DUTY_START_CH2_V 0x00000001 +#define LEDC_DUTY_START_CH2_S 31 + +/* LEDC_CH2_DUTY_R_REG register + * Current duty cycle for channel 2 + */ + +#define LEDC_CH2_DUTY_R_REG (DR_REG_LEDC_BASE + 0x38) + +/* LEDC_DUTY_R_CH2 : RO; bitpos: [18:0]; default: 0; + * This register stores the current duty of output signal on channel 2. + */ + +#define LEDC_DUTY_R_CH2 0x0007FFFF +#define LEDC_DUTY_R_CH2_M (LEDC_DUTY_R_CH2_V << LEDC_DUTY_R_CH2_S) +#define LEDC_DUTY_R_CH2_V 0x0007FFFF +#define LEDC_DUTY_R_CH2_S 0 + +/* LEDC_CH3_CONF0_REG register + * Configuration register 0 for channel 3 + */ + +#define LEDC_CH3_CONF0_REG (DR_REG_LEDC_BASE + 0x3c) + +/* LEDC_TIMER_SEL_CH3 : R/W; bitpos: [1:0]; default: 0; + * This field is used to select one of timers for channel 3. + * + * 0: select timer0 + * + * 1: select timer1 + * + * 2: select timer2 + * + * 3: select timer3 + */ + +#define LEDC_TIMER_SEL_CH3 0x00000003 +#define LEDC_TIMER_SEL_CH3_M (LEDC_TIMER_SEL_CH3_V << LEDC_TIMER_SEL_CH3_S) +#define LEDC_TIMER_SEL_CH3_V 0x00000003 +#define LEDC_TIMER_SEL_CH3_S 0 + +/* LEDC_SIG_OUT_EN_CH3 : R/W; bitpos: [2]; default: 0; + * Set this bit to enable signal output on channel 3. + */ + +#define LEDC_SIG_OUT_EN_CH3 (BIT(2)) +#define LEDC_SIG_OUT_EN_CH3_M (LEDC_SIG_OUT_EN_CH3_V << LEDC_SIG_OUT_EN_CH3_S) +#define LEDC_SIG_OUT_EN_CH3_V 0x00000001 +#define LEDC_SIG_OUT_EN_CH3_S 2 + +/* LEDC_IDLE_LV_CH3 : R/W; bitpos: [3]; default: 0; + * This bit is used to control the output value when channel 3 is inactive. + */ + +#define LEDC_IDLE_LV_CH3 (BIT(3)) +#define LEDC_IDLE_LV_CH3_M (LEDC_IDLE_LV_CH3_V << LEDC_IDLE_LV_CH3_S) +#define LEDC_IDLE_LV_CH3_V 0x00000001 +#define LEDC_IDLE_LV_CH3_S 3 + +/* LEDC_PARA_UP_CH3 : WO; bitpos: [4]; default: 0; + * This bit is used to update register LEDC_CH3_HPOINT and LEDC_CH3_DUTY for + * channel 3. + */ + +#define LEDC_PARA_UP_CH3 (BIT(4)) +#define LEDC_PARA_UP_CH3_M (LEDC_PARA_UP_CH3_V << LEDC_PARA_UP_CH3_S) +#define LEDC_PARA_UP_CH3_V 0x00000001 +#define LEDC_PARA_UP_CH3_S 4 + +/* LEDC_OVF_NUM_CH3 : R/W; bitpos: [14:5]; default: 0; + * This register is used to configure the maximum times of overflow minus 1. + * + * The LEDC_OVF_CNT_CH3_INT interrupt will be triggered when channel 3 + * overflows for (LEDC_OVF_NUM_CH3 + 1) times. + */ + +#define LEDC_OVF_NUM_CH3 0x000003FF +#define LEDC_OVF_NUM_CH3_M (LEDC_OVF_NUM_CH3_V << LEDC_OVF_NUM_CH3_S) +#define LEDC_OVF_NUM_CH3_V 0x000003FF +#define LEDC_OVF_NUM_CH3_S 5 + +/* LEDC_OVF_CNT_EN_CH3 : R/W; bitpos: [15]; default: 0; + * This bit is used to enable the ovf_cnt of channel 3. + */ + +#define LEDC_OVF_CNT_EN_CH3 (BIT(15)) +#define LEDC_OVF_CNT_EN_CH3_M (LEDC_OVF_CNT_EN_CH3_V << LEDC_OVF_CNT_EN_CH3_S) +#define LEDC_OVF_CNT_EN_CH3_V 0x00000001 +#define LEDC_OVF_CNT_EN_CH3_S 15 + +/* LEDC_OVF_CNT_RESET_CH3 : WO; bitpos: [16]; default: 0; + * Set this bit to reset the ovf_cnt of channel 3. + */ + +#define LEDC_OVF_CNT_RESET_CH3 (BIT(16)) +#define LEDC_OVF_CNT_RESET_CH3_M (LEDC_OVF_CNT_RESET_CH3_V << LEDC_OVF_CNT_RESET_CH3_S) +#define LEDC_OVF_CNT_RESET_CH3_V 0x00000001 +#define LEDC_OVF_CNT_RESET_CH3_S 16 + +/* LEDC_OVF_CNT_RESET_ST_CH3 : RO; bitpos: [17]; default: 0; + * This is the status bit of LEDC_OVF_CNT_RESET_CH3. + */ + +#define LEDC_OVF_CNT_RESET_ST_CH3 (BIT(17)) +#define LEDC_OVF_CNT_RESET_ST_CH3_M (LEDC_OVF_CNT_RESET_ST_CH3_V << LEDC_OVF_CNT_RESET_ST_CH3_S) +#define LEDC_OVF_CNT_RESET_ST_CH3_V 0x00000001 +#define LEDC_OVF_CNT_RESET_ST_CH3_S 17 + +/* LEDC_CH3_HPOINT_REG register + * High point register for channel 3 + */ + +#define LEDC_CH3_HPOINT_REG (DR_REG_LEDC_BASE + 0x40) + +/* LEDC_HPOINT_CH3 : R/W; bitpos: [13:0]; default: 0; + * The output value changes to high when the selected timers has reached the + * value specified by this register. + */ + +#define LEDC_HPOINT_CH3 0x00003FFF +#define LEDC_HPOINT_CH3_M (LEDC_HPOINT_CH3_V << LEDC_HPOINT_CH3_S) +#define LEDC_HPOINT_CH3_V 0x00003FFF +#define LEDC_HPOINT_CH3_S 0 + +/* LEDC_CH3_DUTY_REG register + * Initial duty cycle for channel 3 + */ + +#define LEDC_CH3_DUTY_REG (DR_REG_LEDC_BASE + 0x44) + +/* LEDC_DUTY_CH3 : R/W; bitpos: [18:0]; default: 0; + * This register is used to change the output duty by controlling the Lpoint. + * + * The output value turns to low when the selected timers has reached the + * Lpoint. + */ + +#define LEDC_DUTY_CH3 0x0007FFFF +#define LEDC_DUTY_CH3_M (LEDC_DUTY_CH3_V << LEDC_DUTY_CH3_S) +#define LEDC_DUTY_CH3_V 0x0007FFFF +#define LEDC_DUTY_CH3_S 0 + +/* LEDC_CH3_CONF1_REG register + * Configuration register 1 for channel 3 + */ + +#define LEDC_CH3_CONF1_REG (DR_REG_LEDC_BASE + 0x48) + +/* LEDC_DUTY_SCALE_CH3 : R/W; bitpos: [9:0]; default: 0; + * This register is used to configure the changing step scale of duty on + * channel 3. + */ + +#define LEDC_DUTY_SCALE_CH3 0x000003FF +#define LEDC_DUTY_SCALE_CH3_M (LEDC_DUTY_SCALE_CH3_V << LEDC_DUTY_SCALE_CH3_S) +#define LEDC_DUTY_SCALE_CH3_V 0x000003FF +#define LEDC_DUTY_SCALE_CH3_S 0 + +/* LEDC_DUTY_CYCLE_CH3 : R/W; bitpos: [19:10]; default: 0; + * The duty will change every LEDC_DUTY_CYCLE_CH3 on channel 3. + */ + +#define LEDC_DUTY_CYCLE_CH3 0x000003FF +#define LEDC_DUTY_CYCLE_CH3_M (LEDC_DUTY_CYCLE_CH3_V << LEDC_DUTY_CYCLE_CH3_S) +#define LEDC_DUTY_CYCLE_CH3_V 0x000003FF +#define LEDC_DUTY_CYCLE_CH3_S 10 + +/* LEDC_DUTY_NUM_CH3 : R/W; bitpos: [29:20]; default: 0; + * This register is used to control the number of times the duty cycle will + * be changed. + */ + +#define LEDC_DUTY_NUM_CH3 0x000003FF +#define LEDC_DUTY_NUM_CH3_M (LEDC_DUTY_NUM_CH3_V << LEDC_DUTY_NUM_CH3_S) +#define LEDC_DUTY_NUM_CH3_V 0x000003FF +#define LEDC_DUTY_NUM_CH3_S 20 + +/* LEDC_DUTY_INC_CH3 : R/W; bitpos: [30]; default: 1; + * This register is used to increase or decrease the duty of output signal + * on channel 3. 1: Increase;0: Decrease. + */ + +#define LEDC_DUTY_INC_CH3 (BIT(30)) +#define LEDC_DUTY_INC_CH3_M (LEDC_DUTY_INC_CH3_V << LEDC_DUTY_INC_CH3_S) +#define LEDC_DUTY_INC_CH3_V 0x00000001 +#define LEDC_DUTY_INC_CH3_S 30 + +/* LEDC_DUTY_START_CH3 : R/W; bitpos: [31]; default: 0; + * Other configured fields in LEDC_CH3_CONF1_REG will start to take effect + * when this bit is set to 1. + */ + +#define LEDC_DUTY_START_CH3 (BIT(31)) +#define LEDC_DUTY_START_CH3_M (LEDC_DUTY_START_CH3_V << LEDC_DUTY_START_CH3_S) +#define LEDC_DUTY_START_CH3_V 0x00000001 +#define LEDC_DUTY_START_CH3_S 31 + +/* LEDC_CH3_DUTY_R_REG register + * Current duty cycle for channel 3 + */ + +#define LEDC_CH3_DUTY_R_REG (DR_REG_LEDC_BASE + 0x4c) + +/* LEDC_DUTY_R_CH3 : RO; bitpos: [18:0]; default: 0; + * This register stores the current duty of output signal on channel 3. + */ + +#define LEDC_DUTY_R_CH3 0x0007FFFF +#define LEDC_DUTY_R_CH3_M (LEDC_DUTY_R_CH3_V << LEDC_DUTY_R_CH3_S) +#define LEDC_DUTY_R_CH3_V 0x0007FFFF +#define LEDC_DUTY_R_CH3_S 0 + +/* LEDC_CH4_CONF0_REG register + * Configuration register 0 for channel 4 + */ + +#define LEDC_CH4_CONF0_REG (DR_REG_LEDC_BASE + 0x50) + +/* LEDC_TIMER_SEL_CH4 : R/W; bitpos: [1:0]; default: 0; + * This field is used to select one of timers for channel 4. + * + * 0: select timer0 + * + * 1: select timer1 + * + * 2: select timer2 + * + * 3: select timer3 + */ + +#define LEDC_TIMER_SEL_CH4 0x00000003 +#define LEDC_TIMER_SEL_CH4_M (LEDC_TIMER_SEL_CH4_V << LEDC_TIMER_SEL_CH4_S) +#define LEDC_TIMER_SEL_CH4_V 0x00000003 +#define LEDC_TIMER_SEL_CH4_S 0 + +/* LEDC_SIG_OUT_EN_CH4 : R/W; bitpos: [2]; default: 0; + * Set this bit to enable signal output on channel 4. + */ + +#define LEDC_SIG_OUT_EN_CH4 (BIT(2)) +#define LEDC_SIG_OUT_EN_CH4_M (LEDC_SIG_OUT_EN_CH4_V << LEDC_SIG_OUT_EN_CH4_S) +#define LEDC_SIG_OUT_EN_CH4_V 0x00000001 +#define LEDC_SIG_OUT_EN_CH4_S 2 + +/* LEDC_IDLE_LV_CH4 : R/W; bitpos: [3]; default: 0; + * This bit is used to control the output value when channel 4 is inactive. + */ + +#define LEDC_IDLE_LV_CH4 (BIT(3)) +#define LEDC_IDLE_LV_CH4_M (LEDC_IDLE_LV_CH4_V << LEDC_IDLE_LV_CH4_S) +#define LEDC_IDLE_LV_CH4_V 0x00000001 +#define LEDC_IDLE_LV_CH4_S 3 + +/* LEDC_PARA_UP_CH4 : WO; bitpos: [4]; default: 0; + * This bit is used to update register LEDC_CH4_HPOINT and LEDC_CH4_DUTY for + * channel 4. + */ + +#define LEDC_PARA_UP_CH4 (BIT(4)) +#define LEDC_PARA_UP_CH4_M (LEDC_PARA_UP_CH4_V << LEDC_PARA_UP_CH4_S) +#define LEDC_PARA_UP_CH4_V 0x00000001 +#define LEDC_PARA_UP_CH4_S 4 + +/* LEDC_OVF_NUM_CH4 : R/W; bitpos: [14:5]; default: 0; + * This register is used to configure the maximum times of overflow minus 1. + * + * The LEDC_OVF_CNT_CH4_INT interrupt will be triggered when channel 4 + * overflows for (LEDC_OVF_NUM_CH4 + 1) times. + */ + +#define LEDC_OVF_NUM_CH4 0x000003FF +#define LEDC_OVF_NUM_CH4_M (LEDC_OVF_NUM_CH4_V << LEDC_OVF_NUM_CH4_S) +#define LEDC_OVF_NUM_CH4_V 0x000003FF +#define LEDC_OVF_NUM_CH4_S 5 + +/* LEDC_OVF_CNT_EN_CH4 : R/W; bitpos: [15]; default: 0; + * This bit is used to enable the ovf_cnt of channel 4. + */ + +#define LEDC_OVF_CNT_EN_CH4 (BIT(15)) +#define LEDC_OVF_CNT_EN_CH4_M (LEDC_OVF_CNT_EN_CH4_V << LEDC_OVF_CNT_EN_CH4_S) +#define LEDC_OVF_CNT_EN_CH4_V 0x00000001 +#define LEDC_OVF_CNT_EN_CH4_S 15 + +/* LEDC_OVF_CNT_RESET_CH4 : WO; bitpos: [16]; default: 0; + * Set this bit to reset the ovf_cnt of channel 4. + */ + +#define LEDC_OVF_CNT_RESET_CH4 (BIT(16)) +#define LEDC_OVF_CNT_RESET_CH4_M (LEDC_OVF_CNT_RESET_CH4_V << LEDC_OVF_CNT_RESET_CH4_S) +#define LEDC_OVF_CNT_RESET_CH4_V 0x00000001 +#define LEDC_OVF_CNT_RESET_CH4_S 16 + +/* LEDC_OVF_CNT_RESET_ST_CH4 : RO; bitpos: [17]; default: 0; + * This is the status bit of LEDC_OVF_CNT_RESET_CH4. + */ + +#define LEDC_OVF_CNT_RESET_ST_CH4 (BIT(17)) +#define LEDC_OVF_CNT_RESET_ST_CH4_M (LEDC_OVF_CNT_RESET_ST_CH4_V << LEDC_OVF_CNT_RESET_ST_CH4_S) +#define LEDC_OVF_CNT_RESET_ST_CH4_V 0x00000001 +#define LEDC_OVF_CNT_RESET_ST_CH4_S 17 + +/* LEDC_CH4_HPOINT_REG register + * High point register for channel 4 + */ + +#define LEDC_CH4_HPOINT_REG (DR_REG_LEDC_BASE + 0x54) + +/* LEDC_HPOINT_CH4 : R/W; bitpos: [13:0]; default: 0; + * The output value changes to high when the selected timers has reached the + * value specified by this register. + */ + +#define LEDC_HPOINT_CH4 0x00003FFF +#define LEDC_HPOINT_CH4_M (LEDC_HPOINT_CH4_V << LEDC_HPOINT_CH4_S) +#define LEDC_HPOINT_CH4_V 0x00003FFF +#define LEDC_HPOINT_CH4_S 0 + +/* LEDC_CH4_DUTY_REG register + * Initial duty cycle for channel 4 + */ + +#define LEDC_CH4_DUTY_REG (DR_REG_LEDC_BASE + 0x58) + +/* LEDC_DUTY_CH4 : R/W; bitpos: [18:0]; default: 0; + * This register is used to change the output duty by controlling the Lpoint. + * + * The output value turns to low when the selected timers has reached the + * Lpoint. + */ + +#define LEDC_DUTY_CH4 0x0007FFFF +#define LEDC_DUTY_CH4_M (LEDC_DUTY_CH4_V << LEDC_DUTY_CH4_S) +#define LEDC_DUTY_CH4_V 0x0007FFFF +#define LEDC_DUTY_CH4_S 0 + +/* LEDC_CH4_CONF1_REG register + * Configuration register 1 for channel 4 + */ + +#define LEDC_CH4_CONF1_REG (DR_REG_LEDC_BASE + 0x5c) + +/* LEDC_DUTY_SCALE_CH4 : R/W; bitpos: [9:0]; default: 0; + * This register is used to configure the changing step scale of duty on + * channel 4. + */ + +#define LEDC_DUTY_SCALE_CH4 0x000003FF +#define LEDC_DUTY_SCALE_CH4_M (LEDC_DUTY_SCALE_CH4_V << LEDC_DUTY_SCALE_CH4_S) +#define LEDC_DUTY_SCALE_CH4_V 0x000003FF +#define LEDC_DUTY_SCALE_CH4_S 0 + +/* LEDC_DUTY_CYCLE_CH4 : R/W; bitpos: [19:10]; default: 0; + * The duty will change every LEDC_DUTY_CYCLE_CH4 on channel 4. + */ + +#define LEDC_DUTY_CYCLE_CH4 0x000003FF +#define LEDC_DUTY_CYCLE_CH4_M (LEDC_DUTY_CYCLE_CH4_V << LEDC_DUTY_CYCLE_CH4_S) +#define LEDC_DUTY_CYCLE_CH4_V 0x000003FF +#define LEDC_DUTY_CYCLE_CH4_S 10 + +/* LEDC_DUTY_NUM_CH4 : R/W; bitpos: [29:20]; default: 0; + * This register is used to control the number of times the duty cycle will + * be changed. + */ + +#define LEDC_DUTY_NUM_CH4 0x000003FF +#define LEDC_DUTY_NUM_CH4_M (LEDC_DUTY_NUM_CH4_V << LEDC_DUTY_NUM_CH4_S) +#define LEDC_DUTY_NUM_CH4_V 0x000003FF +#define LEDC_DUTY_NUM_CH4_S 20 + +/* LEDC_DUTY_INC_CH4 : R/W; bitpos: [30]; default: 1; + * This register is used to increase or decrease the duty of output signal + * on channel 4. 1: Increase;0: Decrease. + */ + +#define LEDC_DUTY_INC_CH4 (BIT(30)) +#define LEDC_DUTY_INC_CH4_M (LEDC_DUTY_INC_CH4_V << LEDC_DUTY_INC_CH4_S) +#define LEDC_DUTY_INC_CH4_V 0x00000001 +#define LEDC_DUTY_INC_CH4_S 30 + +/* LEDC_DUTY_START_CH4 : R/W; bitpos: [31]; default: 0; + * Other configured fields in LEDC_CH4_CONF1_REG will start to take effect + * when this bit is set to 1. + */ + +#define LEDC_DUTY_START_CH4 (BIT(31)) +#define LEDC_DUTY_START_CH4_M (LEDC_DUTY_START_CH4_V << LEDC_DUTY_START_CH4_S) +#define LEDC_DUTY_START_CH4_V 0x00000001 +#define LEDC_DUTY_START_CH4_S 31 + +/* LEDC_CH4_DUTY_R_REG register + * Current duty cycle for channel 4 + */ + +#define LEDC_CH4_DUTY_R_REG (DR_REG_LEDC_BASE + 0x60) + +/* LEDC_DUTY_R_CH4 : RO; bitpos: [18:0]; default: 0; + * This register stores the current duty of output signal on channel 4. + */ + +#define LEDC_DUTY_R_CH4 0x0007FFFF +#define LEDC_DUTY_R_CH4_M (LEDC_DUTY_R_CH4_V << LEDC_DUTY_R_CH4_S) +#define LEDC_DUTY_R_CH4_V 0x0007FFFF +#define LEDC_DUTY_R_CH4_S 0 + +/* LEDC_CH5_CONF0_REG register + * Configuration register 0 for channel 5 + */ + +#define LEDC_CH5_CONF0_REG (DR_REG_LEDC_BASE + 0x64) + +/* LEDC_TIMER_SEL_CH5 : R/W; bitpos: [1:0]; default: 0; + * This field is used to select one of timers for channel 5. + * + * 0: select timer0 + * + * 1: select timer1 + * + * 2: select timer2 + * + * 3: select timer3 + */ + +#define LEDC_TIMER_SEL_CH5 0x00000003 +#define LEDC_TIMER_SEL_CH5_M (LEDC_TIMER_SEL_CH5_V << LEDC_TIMER_SEL_CH5_S) +#define LEDC_TIMER_SEL_CH5_V 0x00000003 +#define LEDC_TIMER_SEL_CH5_S 0 + +/* LEDC_SIG_OUT_EN_CH5 : R/W; bitpos: [2]; default: 0; + * Set this bit to enable signal output on channel 5. + */ + +#define LEDC_SIG_OUT_EN_CH5 (BIT(2)) +#define LEDC_SIG_OUT_EN_CH5_M (LEDC_SIG_OUT_EN_CH5_V << LEDC_SIG_OUT_EN_CH5_S) +#define LEDC_SIG_OUT_EN_CH5_V 0x00000001 +#define LEDC_SIG_OUT_EN_CH5_S 2 + +/* LEDC_IDLE_LV_CH5 : R/W; bitpos: [3]; default: 0; + * This bit is used to control the output value when channel 5 is inactive. + */ + +#define LEDC_IDLE_LV_CH5 (BIT(3)) +#define LEDC_IDLE_LV_CH5_M (LEDC_IDLE_LV_CH5_V << LEDC_IDLE_LV_CH5_S) +#define LEDC_IDLE_LV_CH5_V 0x00000001 +#define LEDC_IDLE_LV_CH5_S 3 + +/* LEDC_PARA_UP_CH5 : WO; bitpos: [4]; default: 0; + * This bit is used to update register LEDC_CH5_HPOINT and LEDC_CH5_DUTY for + * channel 5. + */ + +#define LEDC_PARA_UP_CH5 (BIT(4)) +#define LEDC_PARA_UP_CH5_M (LEDC_PARA_UP_CH5_V << LEDC_PARA_UP_CH5_S) +#define LEDC_PARA_UP_CH5_V 0x00000001 +#define LEDC_PARA_UP_CH5_S 4 + +/* LEDC_OVF_NUM_CH5 : R/W; bitpos: [14:5]; default: 0; + * This register is used to configure the maximum times of overflow minus 1. + * + * The LEDC_OVF_CNT_CH5_INT interrupt will be triggered when channel 5 + * overflows for (LEDC_OVF_NUM_CH5 + 1) times. + */ + +#define LEDC_OVF_NUM_CH5 0x000003FF +#define LEDC_OVF_NUM_CH5_M (LEDC_OVF_NUM_CH5_V << LEDC_OVF_NUM_CH5_S) +#define LEDC_OVF_NUM_CH5_V 0x000003FF +#define LEDC_OVF_NUM_CH5_S 5 + +/* LEDC_OVF_CNT_EN_CH5 : R/W; bitpos: [15]; default: 0; + * This bit is used to enable the ovf_cnt of channel 5. + */ + +#define LEDC_OVF_CNT_EN_CH5 (BIT(15)) +#define LEDC_OVF_CNT_EN_CH5_M (LEDC_OVF_CNT_EN_CH5_V << LEDC_OVF_CNT_EN_CH5_S) +#define LEDC_OVF_CNT_EN_CH5_V 0x00000001 +#define LEDC_OVF_CNT_EN_CH5_S 15 + +/* LEDC_OVF_CNT_RESET_CH5 : WO; bitpos: [16]; default: 0; + * Set this bit to reset the ovf_cnt of channel 5. + */ + +#define LEDC_OVF_CNT_RESET_CH5 (BIT(16)) +#define LEDC_OVF_CNT_RESET_CH5_M (LEDC_OVF_CNT_RESET_CH5_V << LEDC_OVF_CNT_RESET_CH5_S) +#define LEDC_OVF_CNT_RESET_CH5_V 0x00000001 +#define LEDC_OVF_CNT_RESET_CH5_S 16 + +/* LEDC_OVF_CNT_RESET_ST_CH5 : RO; bitpos: [17]; default: 0; + * This is the status bit of LEDC_OVF_CNT_RESET_CH5. + */ + +#define LEDC_OVF_CNT_RESET_ST_CH5 (BIT(17)) +#define LEDC_OVF_CNT_RESET_ST_CH5_M (LEDC_OVF_CNT_RESET_ST_CH5_V << LEDC_OVF_CNT_RESET_ST_CH5_S) +#define LEDC_OVF_CNT_RESET_ST_CH5_V 0x00000001 +#define LEDC_OVF_CNT_RESET_ST_CH5_S 17 + +/* LEDC_CH5_HPOINT_REG register + * High point register for channel 5 + */ + +#define LEDC_CH5_HPOINT_REG (DR_REG_LEDC_BASE + 0x68) + +/* LEDC_HPOINT_CH5 : R/W; bitpos: [13:0]; default: 0; + * The output value changes to high when the selected timers has reached the + * value specified by this register. + */ + +#define LEDC_HPOINT_CH5 0x00003FFF +#define LEDC_HPOINT_CH5_M (LEDC_HPOINT_CH5_V << LEDC_HPOINT_CH5_S) +#define LEDC_HPOINT_CH5_V 0x00003FFF +#define LEDC_HPOINT_CH5_S 0 + +/* LEDC_CH5_DUTY_REG register + * Initial duty cycle for channel 5 + */ + +#define LEDC_CH5_DUTY_REG (DR_REG_LEDC_BASE + 0x6c) + +/* LEDC_DUTY_CH5 : R/W; bitpos: [18:0]; default: 0; + * This register is used to change the output duty by controlling the Lpoint. + * + * The output value turns to low when the selected timers has reached the + * Lpoint. + */ + +#define LEDC_DUTY_CH5 0x0007FFFF +#define LEDC_DUTY_CH5_M (LEDC_DUTY_CH5_V << LEDC_DUTY_CH5_S) +#define LEDC_DUTY_CH5_V 0x0007FFFF +#define LEDC_DUTY_CH5_S 0 + +/* LEDC_CH5_CONF1_REG register + * Configuration register 1 for channel 5 + */ + +#define LEDC_CH5_CONF1_REG (DR_REG_LEDC_BASE + 0x70) + +/* LEDC_DUTY_SCALE_CH5 : R/W; bitpos: [9:0]; default: 0; + * This register is used to configure the changing step scale of duty on + * channel 5. + */ + +#define LEDC_DUTY_SCALE_CH5 0x000003FF +#define LEDC_DUTY_SCALE_CH5_M (LEDC_DUTY_SCALE_CH5_V << LEDC_DUTY_SCALE_CH5_S) +#define LEDC_DUTY_SCALE_CH5_V 0x000003FF +#define LEDC_DUTY_SCALE_CH5_S 0 + +/* LEDC_DUTY_CYCLE_CH5 : R/W; bitpos: [19:10]; default: 0; + * The duty will change every LEDC_DUTY_CYCLE_CH5 on channel 5. + */ + +#define LEDC_DUTY_CYCLE_CH5 0x000003FF +#define LEDC_DUTY_CYCLE_CH5_M (LEDC_DUTY_CYCLE_CH5_V << LEDC_DUTY_CYCLE_CH5_S) +#define LEDC_DUTY_CYCLE_CH5_V 0x000003FF +#define LEDC_DUTY_CYCLE_CH5_S 10 + +/* LEDC_DUTY_NUM_CH5 : R/W; bitpos: [29:20]; default: 0; + * This register is used to control the number of times the duty cycle will + * be changed. + */ + +#define LEDC_DUTY_NUM_CH5 0x000003FF +#define LEDC_DUTY_NUM_CH5_M (LEDC_DUTY_NUM_CH5_V << LEDC_DUTY_NUM_CH5_S) +#define LEDC_DUTY_NUM_CH5_V 0x000003FF +#define LEDC_DUTY_NUM_CH5_S 20 + +/* LEDC_DUTY_INC_CH5 : R/W; bitpos: [30]; default: 1; + * This register is used to increase or decrease the duty of output signal + * on channel 5. 1: Increase;0: Decrease. + */ + +#define LEDC_DUTY_INC_CH5 (BIT(30)) +#define LEDC_DUTY_INC_CH5_M (LEDC_DUTY_INC_CH5_V << LEDC_DUTY_INC_CH5_S) +#define LEDC_DUTY_INC_CH5_V 0x00000001 +#define LEDC_DUTY_INC_CH5_S 30 + +/* LEDC_DUTY_START_CH5 : R/W; bitpos: [31]; default: 0; + * Other configured fields in LEDC_CH5_CONF1_REG will start to take effect + * when this bit is set to 1. + */ + +#define LEDC_DUTY_START_CH5 (BIT(31)) +#define LEDC_DUTY_START_CH5_M (LEDC_DUTY_START_CH5_V << LEDC_DUTY_START_CH5_S) +#define LEDC_DUTY_START_CH5_V 0x00000001 +#define LEDC_DUTY_START_CH5_S 31 + +/* LEDC_CH5_DUTY_R_REG register + * Current duty cycle for channel 5 + */ + +#define LEDC_CH5_DUTY_R_REG (DR_REG_LEDC_BASE + 0x74) + +/* LEDC_DUTY_R_CH5 : RO; bitpos: [18:0]; default: 0; + * This register stores the current duty of output signal on channel 5. + */ + +#define LEDC_DUTY_R_CH5 0x0007FFFF +#define LEDC_DUTY_R_CH5_M (LEDC_DUTY_R_CH5_V << LEDC_DUTY_R_CH5_S) +#define LEDC_DUTY_R_CH5_V 0x0007FFFF +#define LEDC_DUTY_R_CH5_S 0 + +/* LEDC_CH6_CONF0_REG register + * Configuration register 0 for channel 6 + */ + +#define LEDC_CH6_CONF0_REG (DR_REG_LEDC_BASE + 0x78) + +/* LEDC_TIMER_SEL_CH6 : R/W; bitpos: [1:0]; default: 0; + * This field is used to select one of timers for channel 6. + * + * 0: select timer0 + * + * 1: select timer1 + * + * 2: select timer2 + * + * 3: select timer3 + */ + +#define LEDC_TIMER_SEL_CH6 0x00000003 +#define LEDC_TIMER_SEL_CH6_M (LEDC_TIMER_SEL_CH6_V << LEDC_TIMER_SEL_CH6_S) +#define LEDC_TIMER_SEL_CH6_V 0x00000003 +#define LEDC_TIMER_SEL_CH6_S 0 + +/* LEDC_SIG_OUT_EN_CH6 : R/W; bitpos: [2]; default: 0; + * Set this bit to enable signal output on channel 6. + */ + +#define LEDC_SIG_OUT_EN_CH6 (BIT(2)) +#define LEDC_SIG_OUT_EN_CH6_M (LEDC_SIG_OUT_EN_CH6_V << LEDC_SIG_OUT_EN_CH6_S) +#define LEDC_SIG_OUT_EN_CH6_V 0x00000001 +#define LEDC_SIG_OUT_EN_CH6_S 2 + +/* LEDC_IDLE_LV_CH6 : R/W; bitpos: [3]; default: 0; + * This bit is used to control the output value when channel 6 is inactive. + */ + +#define LEDC_IDLE_LV_CH6 (BIT(3)) +#define LEDC_IDLE_LV_CH6_M (LEDC_IDLE_LV_CH6_V << LEDC_IDLE_LV_CH6_S) +#define LEDC_IDLE_LV_CH6_V 0x00000001 +#define LEDC_IDLE_LV_CH6_S 3 + +/* LEDC_PARA_UP_CH6 : WO; bitpos: [4]; default: 0; + * This bit is used to update register LEDC_CH6_HPOINT and LEDC_CH6_DUTY for + * channel 6. + */ + +#define LEDC_PARA_UP_CH6 (BIT(4)) +#define LEDC_PARA_UP_CH6_M (LEDC_PARA_UP_CH6_V << LEDC_PARA_UP_CH6_S) +#define LEDC_PARA_UP_CH6_V 0x00000001 +#define LEDC_PARA_UP_CH6_S 4 + +/* LEDC_OVF_NUM_CH6 : R/W; bitpos: [14:5]; default: 0; + * This register is used to configure the maximum times of overflow minus 1. + * + * The LEDC_OVF_CNT_CH6_INT interrupt will be triggered when channel 6 + * overflows for (LEDC_OVF_NUM_CH6 + 1) times. + */ + +#define LEDC_OVF_NUM_CH6 0x000003FF +#define LEDC_OVF_NUM_CH6_M (LEDC_OVF_NUM_CH6_V << LEDC_OVF_NUM_CH6_S) +#define LEDC_OVF_NUM_CH6_V 0x000003FF +#define LEDC_OVF_NUM_CH6_S 5 + +/* LEDC_OVF_CNT_EN_CH6 : R/W; bitpos: [15]; default: 0; + * This bit is used to enable the ovf_cnt of channel 6. + */ + +#define LEDC_OVF_CNT_EN_CH6 (BIT(15)) +#define LEDC_OVF_CNT_EN_CH6_M (LEDC_OVF_CNT_EN_CH6_V << LEDC_OVF_CNT_EN_CH6_S) +#define LEDC_OVF_CNT_EN_CH6_V 0x00000001 +#define LEDC_OVF_CNT_EN_CH6_S 15 + +/* LEDC_OVF_CNT_RESET_CH6 : WO; bitpos: [16]; default: 0; + * Set this bit to reset the ovf_cnt of channel 6. + */ + +#define LEDC_OVF_CNT_RESET_CH6 (BIT(16)) +#define LEDC_OVF_CNT_RESET_CH6_M (LEDC_OVF_CNT_RESET_CH6_V << LEDC_OVF_CNT_RESET_CH6_S) +#define LEDC_OVF_CNT_RESET_CH6_V 0x00000001 +#define LEDC_OVF_CNT_RESET_CH6_S 16 + +/* LEDC_OVF_CNT_RESET_ST_CH6 : RO; bitpos: [17]; default: 0; + * This is the status bit of LEDC_OVF_CNT_RESET_CH6. + */ + +#define LEDC_OVF_CNT_RESET_ST_CH6 (BIT(17)) +#define LEDC_OVF_CNT_RESET_ST_CH6_M (LEDC_OVF_CNT_RESET_ST_CH6_V << LEDC_OVF_CNT_RESET_ST_CH6_S) +#define LEDC_OVF_CNT_RESET_ST_CH6_V 0x00000001 +#define LEDC_OVF_CNT_RESET_ST_CH6_S 17 + +/* LEDC_CH6_HPOINT_REG register + * High point register for channel 6 + */ + +#define LEDC_CH6_HPOINT_REG (DR_REG_LEDC_BASE + 0x7c) + +/* LEDC_HPOINT_CH6 : R/W; bitpos: [13:0]; default: 0; + * The output value changes to high when the selected timers has reached the + * value specified by this register. + */ + +#define LEDC_HPOINT_CH6 0x00003FFF +#define LEDC_HPOINT_CH6_M (LEDC_HPOINT_CH6_V << LEDC_HPOINT_CH6_S) +#define LEDC_HPOINT_CH6_V 0x00003FFF +#define LEDC_HPOINT_CH6_S 0 + +/* LEDC_CH6_DUTY_REG register + * Initial duty cycle for channel 6 + */ + +#define LEDC_CH6_DUTY_REG (DR_REG_LEDC_BASE + 0x80) + +/* LEDC_DUTY_CH6 : R/W; bitpos: [18:0]; default: 0; + * This register is used to change the output duty by controlling the Lpoint. + * + * The output value turns to low when the selected timers has reached the + * Lpoint. + */ + +#define LEDC_DUTY_CH6 0x0007FFFF +#define LEDC_DUTY_CH6_M (LEDC_DUTY_CH6_V << LEDC_DUTY_CH6_S) +#define LEDC_DUTY_CH6_V 0x0007FFFF +#define LEDC_DUTY_CH6_S 0 + +/* LEDC_CH6_CONF1_REG register + * Configuration register 1 for channel 6 + */ + +#define LEDC_CH6_CONF1_REG (DR_REG_LEDC_BASE + 0x84) + +/* LEDC_DUTY_SCALE_CH6 : R/W; bitpos: [9:0]; default: 0; + * This register is used to configure the changing step scale of duty on + * channel 6. + */ + +#define LEDC_DUTY_SCALE_CH6 0x000003FF +#define LEDC_DUTY_SCALE_CH6_M (LEDC_DUTY_SCALE_CH6_V << LEDC_DUTY_SCALE_CH6_S) +#define LEDC_DUTY_SCALE_CH6_V 0x000003FF +#define LEDC_DUTY_SCALE_CH6_S 0 + +/* LEDC_DUTY_CYCLE_CH6 : R/W; bitpos: [19:10]; default: 0; + * The duty will change every LEDC_DUTY_CYCLE_CH6 on channel 6. + */ + +#define LEDC_DUTY_CYCLE_CH6 0x000003FF +#define LEDC_DUTY_CYCLE_CH6_M (LEDC_DUTY_CYCLE_CH6_V << LEDC_DUTY_CYCLE_CH6_S) +#define LEDC_DUTY_CYCLE_CH6_V 0x000003FF +#define LEDC_DUTY_CYCLE_CH6_S 10 + +/* LEDC_DUTY_NUM_CH6 : R/W; bitpos: [29:20]; default: 0; + * This register is used to control the number of times the duty cycle will + * be changed. + */ + +#define LEDC_DUTY_NUM_CH6 0x000003FF +#define LEDC_DUTY_NUM_CH6_M (LEDC_DUTY_NUM_CH6_V << LEDC_DUTY_NUM_CH6_S) +#define LEDC_DUTY_NUM_CH6_V 0x000003FF +#define LEDC_DUTY_NUM_CH6_S 20 + +/* LEDC_DUTY_INC_CH6 : R/W; bitpos: [30]; default: 1; + * This register is used to increase or decrease the duty of output signal + * on channel 6. 1: Increase;0: Decrease. + */ + +#define LEDC_DUTY_INC_CH6 (BIT(30)) +#define LEDC_DUTY_INC_CH6_M (LEDC_DUTY_INC_CH6_V << LEDC_DUTY_INC_CH6_S) +#define LEDC_DUTY_INC_CH6_V 0x00000001 +#define LEDC_DUTY_INC_CH6_S 30 + +/* LEDC_DUTY_START_CH6 : R/W; bitpos: [31]; default: 0; + * Other configured fields in LEDC_CH6_CONF1_REG will start to take effect + * when this bit is set to 1. + */ + +#define LEDC_DUTY_START_CH6 (BIT(31)) +#define LEDC_DUTY_START_CH6_M (LEDC_DUTY_START_CH6_V << LEDC_DUTY_START_CH6_S) +#define LEDC_DUTY_START_CH6_V 0x00000001 +#define LEDC_DUTY_START_CH6_S 31 + +/* LEDC_CH6_DUTY_R_REG register + * Current duty cycle for channel 6 + */ + +#define LEDC_CH6_DUTY_R_REG (DR_REG_LEDC_BASE + 0x88) + +/* LEDC_DUTY_R_CH6 : RO; bitpos: [18:0]; default: 0; + * This register stores the current duty of output signal on channel 6. + */ + +#define LEDC_DUTY_R_CH6 0x0007FFFF +#define LEDC_DUTY_R_CH6_M (LEDC_DUTY_R_CH6_V << LEDC_DUTY_R_CH6_S) +#define LEDC_DUTY_R_CH6_V 0x0007FFFF +#define LEDC_DUTY_R_CH6_S 0 + +/* LEDC_CH7_CONF0_REG register + * Configuration register 0 for channel 7 + */ + +#define LEDC_CH7_CONF0_REG (DR_REG_LEDC_BASE + 0x8c) + +/* LEDC_TIMER_SEL_CH7 : R/W; bitpos: [1:0]; default: 0; + * This field is used to select one of timers for channel 7. + * + * 0: select timer0 + * + * 1: select timer1 + * + * 2: select timer2 + * + * 3: select timer3 + */ + +#define LEDC_TIMER_SEL_CH7 0x00000003 +#define LEDC_TIMER_SEL_CH7_M (LEDC_TIMER_SEL_CH7_V << LEDC_TIMER_SEL_CH7_S) +#define LEDC_TIMER_SEL_CH7_V 0x00000003 +#define LEDC_TIMER_SEL_CH7_S 0 + +/* LEDC_SIG_OUT_EN_CH7 : R/W; bitpos: [2]; default: 0; + * Set this bit to enable signal output on channel 7. + */ + +#define LEDC_SIG_OUT_EN_CH7 (BIT(2)) +#define LEDC_SIG_OUT_EN_CH7_M (LEDC_SIG_OUT_EN_CH7_V << LEDC_SIG_OUT_EN_CH7_S) +#define LEDC_SIG_OUT_EN_CH7_V 0x00000001 +#define LEDC_SIG_OUT_EN_CH7_S 2 + +/* LEDC_IDLE_LV_CH7 : R/W; bitpos: [3]; default: 0; + * This bit is used to control the output value when channel 7 is inactive. + */ + +#define LEDC_IDLE_LV_CH7 (BIT(3)) +#define LEDC_IDLE_LV_CH7_M (LEDC_IDLE_LV_CH7_V << LEDC_IDLE_LV_CH7_S) +#define LEDC_IDLE_LV_CH7_V 0x00000001 +#define LEDC_IDLE_LV_CH7_S 3 + +/* LEDC_PARA_UP_CH7 : WO; bitpos: [4]; default: 0; + * This bit is used to update register LEDC_CH7_HPOINT and LEDC_CH7_DUTY for + * channel 7. + */ + +#define LEDC_PARA_UP_CH7 (BIT(4)) +#define LEDC_PARA_UP_CH7_M (LEDC_PARA_UP_CH7_V << LEDC_PARA_UP_CH7_S) +#define LEDC_PARA_UP_CH7_V 0x00000001 +#define LEDC_PARA_UP_CH7_S 4 + +/* LEDC_OVF_NUM_CH7 : R/W; bitpos: [14:5]; default: 0; + * This register is used to configure the maximum times of overflow minus 1. + * + * The LEDC_OVF_CNT_CH7_INT interrupt will be triggered when channel 7 + * overflows for (LEDC_OVF_NUM_CH7 + 1) times. + */ + +#define LEDC_OVF_NUM_CH7 0x000003FF +#define LEDC_OVF_NUM_CH7_M (LEDC_OVF_NUM_CH7_V << LEDC_OVF_NUM_CH7_S) +#define LEDC_OVF_NUM_CH7_V 0x000003FF +#define LEDC_OVF_NUM_CH7_S 5 + +/* LEDC_OVF_CNT_EN_CH7 : R/W; bitpos: [15]; default: 0; + * This bit is used to enable the ovf_cnt of channel 7. + */ + +#define LEDC_OVF_CNT_EN_CH7 (BIT(15)) +#define LEDC_OVF_CNT_EN_CH7_M (LEDC_OVF_CNT_EN_CH7_V << LEDC_OVF_CNT_EN_CH7_S) +#define LEDC_OVF_CNT_EN_CH7_V 0x00000001 +#define LEDC_OVF_CNT_EN_CH7_S 15 + +/* LEDC_OVF_CNT_RESET_CH7 : WO; bitpos: [16]; default: 0; + * Set this bit to reset the ovf_cnt of channel 7. + */ + +#define LEDC_OVF_CNT_RESET_CH7 (BIT(16)) +#define LEDC_OVF_CNT_RESET_CH7_M (LEDC_OVF_CNT_RESET_CH7_V << LEDC_OVF_CNT_RESET_CH7_S) +#define LEDC_OVF_CNT_RESET_CH7_V 0x00000001 +#define LEDC_OVF_CNT_RESET_CH7_S 16 + +/* LEDC_OVF_CNT_RESET_ST_CH7 : RO; bitpos: [17]; default: 0; + * This is the status bit of LEDC_OVF_CNT_RESET_CH7. + */ + +#define LEDC_OVF_CNT_RESET_ST_CH7 (BIT(17)) +#define LEDC_OVF_CNT_RESET_ST_CH7_M (LEDC_OVF_CNT_RESET_ST_CH7_V << LEDC_OVF_CNT_RESET_ST_CH7_S) +#define LEDC_OVF_CNT_RESET_ST_CH7_V 0x00000001 +#define LEDC_OVF_CNT_RESET_ST_CH7_S 17 + +/* LEDC_CH7_HPOINT_REG register + * High point register for channel 7 + */ + +#define LEDC_CH7_HPOINT_REG (DR_REG_LEDC_BASE + 0x90) + +/* LEDC_HPOINT_CH7 : R/W; bitpos: [13:0]; default: 0; + * The output value changes to high when the selected timers has reached the + * value specified by this register. + */ + +#define LEDC_HPOINT_CH7 0x00003FFF +#define LEDC_HPOINT_CH7_M (LEDC_HPOINT_CH7_V << LEDC_HPOINT_CH7_S) +#define LEDC_HPOINT_CH7_V 0x00003FFF +#define LEDC_HPOINT_CH7_S 0 + +/* LEDC_CH7_DUTY_REG register + * Initial duty cycle for channel 7 + */ + +#define LEDC_CH7_DUTY_REG (DR_REG_LEDC_BASE + 0x94) + +/* LEDC_DUTY_CH7 : R/W; bitpos: [18:0]; default: 0; + * This register is used to change the output duty by controlling the Lpoint. + * + * The output value turns to low when the selected timers has reached the + * Lpoint. + */ + +#define LEDC_DUTY_CH7 0x0007FFFF +#define LEDC_DUTY_CH7_M (LEDC_DUTY_CH7_V << LEDC_DUTY_CH7_S) +#define LEDC_DUTY_CH7_V 0x0007FFFF +#define LEDC_DUTY_CH7_S 0 + +/* LEDC_CH7_CONF1_REG register + * Configuration register 1 for channel 7 + */ + +#define LEDC_CH7_CONF1_REG (DR_REG_LEDC_BASE + 0x98) + +/* LEDC_DUTY_SCALE_CH7 : R/W; bitpos: [9:0]; default: 0; + * This register is used to configure the changing step scale of duty on + * channel 7. + */ + +#define LEDC_DUTY_SCALE_CH7 0x000003FF +#define LEDC_DUTY_SCALE_CH7_M (LEDC_DUTY_SCALE_CH7_V << LEDC_DUTY_SCALE_CH7_S) +#define LEDC_DUTY_SCALE_CH7_V 0x000003FF +#define LEDC_DUTY_SCALE_CH7_S 0 + +/* LEDC_DUTY_CYCLE_CH7 : R/W; bitpos: [19:10]; default: 0; + * The duty will change every LEDC_DUTY_CYCLE_CH7 on channel 7. + */ + +#define LEDC_DUTY_CYCLE_CH7 0x000003FF +#define LEDC_DUTY_CYCLE_CH7_M (LEDC_DUTY_CYCLE_CH7_V << LEDC_DUTY_CYCLE_CH7_S) +#define LEDC_DUTY_CYCLE_CH7_V 0x000003FF +#define LEDC_DUTY_CYCLE_CH7_S 10 + +/* LEDC_DUTY_NUM_CH7 : R/W; bitpos: [29:20]; default: 0; + * This register is used to control the number of times the duty cycle will + * be changed. + */ + +#define LEDC_DUTY_NUM_CH7 0x000003FF +#define LEDC_DUTY_NUM_CH7_M (LEDC_DUTY_NUM_CH7_V << LEDC_DUTY_NUM_CH7_S) +#define LEDC_DUTY_NUM_CH7_V 0x000003FF +#define LEDC_DUTY_NUM_CH7_S 20 + +/* LEDC_DUTY_INC_CH7 : R/W; bitpos: [30]; default: 1; + * This register is used to increase or decrease the duty of output signal + * on channel 7. 1: Increase;0: Decrease. + */ + +#define LEDC_DUTY_INC_CH7 (BIT(30)) +#define LEDC_DUTY_INC_CH7_M (LEDC_DUTY_INC_CH7_V << LEDC_DUTY_INC_CH7_S) +#define LEDC_DUTY_INC_CH7_V 0x00000001 +#define LEDC_DUTY_INC_CH7_S 30 + +/* LEDC_DUTY_START_CH7 : R/W; bitpos: [31]; default: 0; + * Other configured fields in LEDC_CH7_CONF1_REG will start to take effect + * when this bit is set to 1. + */ + +#define LEDC_DUTY_START_CH7 (BIT(31)) +#define LEDC_DUTY_START_CH7_M (LEDC_DUTY_START_CH7_V << LEDC_DUTY_START_CH7_S) +#define LEDC_DUTY_START_CH7_V 0x00000001 +#define LEDC_DUTY_START_CH7_S 31 + +/* LEDC_CH7_DUTY_R_REG register + * Current duty cycle for channel 7 + */ + +#define LEDC_CH7_DUTY_R_REG (DR_REG_LEDC_BASE + 0x9c) + +/* LEDC_DUTY_R_CH7 : RO; bitpos: [18:0]; default: 0; + * This register stores the current duty of output signal on channel 7. + */ + +#define LEDC_DUTY_R_CH7 0x0007FFFF +#define LEDC_DUTY_R_CH7_M (LEDC_DUTY_R_CH7_V << LEDC_DUTY_R_CH7_S) +#define LEDC_DUTY_R_CH7_V 0x0007FFFF +#define LEDC_DUTY_R_CH7_S 0 + +/* LEDC_TIMER0_CONF_REG register + * Timer 0 configuration + */ + +#define LEDC_TIMER0_CONF_REG (DR_REG_LEDC_BASE + 0xa0) + +/* LEDC_TIMER0_DUTY_RES : R/W; bitpos: [3:0]; default: 0; + * This register is used to control the range of the counter in timer 0. + */ + +#define LEDC_TIMER0_DUTY_RES 0x0000000F +#define LEDC_TIMER0_DUTY_RES_M (LEDC_TIMER0_DUTY_RES_V << LEDC_TIMER0_DUTY_RES_S) +#define LEDC_TIMER0_DUTY_RES_V 0x0000000F +#define LEDC_TIMER0_DUTY_RES_S 0 + +/* LEDC_CLK_DIV_TIMER0 : R/W; bitpos: [21:4]; default: 0; + * This register is used to configure the divisor for the divider in timer 0. + * + * The least significant eight bits represent the fractional part. + */ + +#define LEDC_CLK_DIV_TIMER0 0x0003FFFF +#define LEDC_CLK_DIV_TIMER0_M (LEDC_CLK_DIV_TIMER0_V << LEDC_CLK_DIV_TIMER0_S) +#define LEDC_CLK_DIV_TIMER0_V 0x0003FFFF +#define LEDC_CLK_DIV_TIMER0_S 4 + +/* LEDC_TIMER0_PAUSE : R/W; bitpos: [22]; default: 0; + * This bit is used to suspend the counter in timer 0. + */ + +#define LEDC_TIMER0_PAUSE (BIT(22)) +#define LEDC_TIMER0_PAUSE_M (LEDC_TIMER0_PAUSE_V << LEDC_TIMER0_PAUSE_S) +#define LEDC_TIMER0_PAUSE_V 0x00000001 +#define LEDC_TIMER0_PAUSE_S 22 + +/* LEDC_TIMER0_RST : R/W; bitpos: [23]; default: 1; + * This bit is used to reset timer 0. The counter will show 0 after reset. + */ + +#define LEDC_TIMER0_RST (BIT(23)) +#define LEDC_TIMER0_RST_M (LEDC_TIMER0_RST_V << LEDC_TIMER0_RST_S) +#define LEDC_TIMER0_RST_V 0x00000001 +#define LEDC_TIMER0_RST_S 23 + +/* LEDC_TICK_SEL_TIMER0 : R/W; bitpos: [24]; default: 0; + * This bit is used to select clock for timer 0. When this bit is set to 1 + * LEDC_APB_CLK_SEL[1:0] should be 1, otherwise the timer clock may be not + * accurate. + * + * 1'h0: SLOW_CLK 1'h1: REF_TICK + */ + +#define LEDC_TICK_SEL_TIMER0 (BIT(24)) +#define LEDC_TICK_SEL_TIMER0_M (LEDC_TICK_SEL_TIMER0_V << LEDC_TICK_SEL_TIMER0_S) +#define LEDC_TICK_SEL_TIMER0_V 0x00000001 +#define LEDC_TICK_SEL_TIMER0_S 24 + +/* LEDC_TIMER0_PARA_UP : WO; bitpos: [25]; default: 0; + * Set this bit to update LEDC_CLK_DIV_TIMER0 and LEDC_TIMER0_DUTY_RES. + */ + +#define LEDC_TIMER0_PARA_UP (BIT(25)) +#define LEDC_TIMER0_PARA_UP_M (LEDC_TIMER0_PARA_UP_V << LEDC_TIMER0_PARA_UP_S) +#define LEDC_TIMER0_PARA_UP_V 0x00000001 +#define LEDC_TIMER0_PARA_UP_S 25 + +/* LEDC_TIMER0_VALUE_REG register + * Timer 0 current counter value + */ + +#define LEDC_TIMER0_VALUE_REG (DR_REG_LEDC_BASE + 0xa4) + +/* LEDC_TIMER0_CNT : RO; bitpos: [13:0]; default: 0; + * This register stores the current counter value of timer 0. + */ + +#define LEDC_TIMER0_CNT 0x00003FFF +#define LEDC_TIMER0_CNT_M (LEDC_TIMER0_CNT_V << LEDC_TIMER0_CNT_S) +#define LEDC_TIMER0_CNT_V 0x00003FFF +#define LEDC_TIMER0_CNT_S 0 + +/* LEDC_TIMER1_CONF_REG register + * Timer 1 configuration + */ + +#define LEDC_TIMER1_CONF_REG (DR_REG_LEDC_BASE + 0xa8) + +/* LEDC_TIMER1_DUTY_RES : R/W; bitpos: [3:0]; default: 0; + * This register is used to control the range of the counter in timer 1. + */ + +#define LEDC_TIMER1_DUTY_RES 0x0000000F +#define LEDC_TIMER1_DUTY_RES_M (LEDC_TIMER1_DUTY_RES_V << LEDC_TIMER1_DUTY_RES_S) +#define LEDC_TIMER1_DUTY_RES_V 0x0000000F +#define LEDC_TIMER1_DUTY_RES_S 0 + +/* LEDC_CLK_DIV_TIMER1 : R/W; bitpos: [21:4]; default: 0; + * This register is used to configure the divisor for the divider in timer 1. + * + * The least significant eight bits represent the fractional part. + */ + +#define LEDC_CLK_DIV_TIMER1 0x0003FFFF +#define LEDC_CLK_DIV_TIMER1_M (LEDC_CLK_DIV_TIMER1_V << LEDC_CLK_DIV_TIMER1_S) +#define LEDC_CLK_DIV_TIMER1_V 0x0003FFFF +#define LEDC_CLK_DIV_TIMER1_S 4 + +/* LEDC_TIMER1_PAUSE : R/W; bitpos: [22]; default: 0; + * This bit is used to suspend the counter in timer 1. + */ + +#define LEDC_TIMER1_PAUSE (BIT(22)) +#define LEDC_TIMER1_PAUSE_M (LEDC_TIMER1_PAUSE_V << LEDC_TIMER1_PAUSE_S) +#define LEDC_TIMER1_PAUSE_V 0x00000001 +#define LEDC_TIMER1_PAUSE_S 22 + +/* LEDC_TIMER1_RST : R/W; bitpos: [23]; default: 1; + * This bit is used to reset timer 1. The counter will show 0 after reset. + */ + +#define LEDC_TIMER1_RST (BIT(23)) +#define LEDC_TIMER1_RST_M (LEDC_TIMER1_RST_V << LEDC_TIMER1_RST_S) +#define LEDC_TIMER1_RST_V 0x00000001 +#define LEDC_TIMER1_RST_S 23 + +/* LEDC_TICK_SEL_TIMER1 : R/W; bitpos: [24]; default: 0; + * This bit is used to select clock for timer 1. When this bit is set to 1 + * LEDC_APB_CLK_SEL[1:0] should be 1, otherwise the timer clock may be not + * accurate. + * + * 1'h0: SLOW_CLK 1'h1: REF_TICK + */ + +#define LEDC_TICK_SEL_TIMER1 (BIT(24)) +#define LEDC_TICK_SEL_TIMER1_M (LEDC_TICK_SEL_TIMER1_V << LEDC_TICK_SEL_TIMER1_S) +#define LEDC_TICK_SEL_TIMER1_V 0x00000001 +#define LEDC_TICK_SEL_TIMER1_S 24 + +/* LEDC_TIMER1_PARA_UP : WO; bitpos: [25]; default: 0; + * Set this bit to update LEDC_CLK_DIV_TIMER1 and LEDC_TIMER1_DUTY_RES. + */ + +#define LEDC_TIMER1_PARA_UP (BIT(25)) +#define LEDC_TIMER1_PARA_UP_M (LEDC_TIMER1_PARA_UP_V << LEDC_TIMER1_PARA_UP_S) +#define LEDC_TIMER1_PARA_UP_V 0x00000001 +#define LEDC_TIMER1_PARA_UP_S 25 + +/* LEDC_TIMER1_VALUE_REG register + * Timer 1 current counter value + */ + +#define LEDC_TIMER1_VALUE_REG (DR_REG_LEDC_BASE + 0xac) + +/* LEDC_TIMER1_CNT : RO; bitpos: [13:0]; default: 0; + * This register stores the current counter value of timer 1. + */ + +#define LEDC_TIMER1_CNT 0x00003FFF +#define LEDC_TIMER1_CNT_M (LEDC_TIMER1_CNT_V << LEDC_TIMER1_CNT_S) +#define LEDC_TIMER1_CNT_V 0x00003FFF +#define LEDC_TIMER1_CNT_S 0 + +/* LEDC_TIMER2_CONF_REG register + * Timer 2 configuration + */ + +#define LEDC_TIMER2_CONF_REG (DR_REG_LEDC_BASE + 0xb0) + +/* LEDC_TIMER2_DUTY_RES : R/W; bitpos: [3:0]; default: 0; + * This register is used to control the range of the counter in timer 2. + */ + +#define LEDC_TIMER2_DUTY_RES 0x0000000F +#define LEDC_TIMER2_DUTY_RES_M (LEDC_TIMER2_DUTY_RES_V << LEDC_TIMER2_DUTY_RES_S) +#define LEDC_TIMER2_DUTY_RES_V 0x0000000F +#define LEDC_TIMER2_DUTY_RES_S 0 + +/* LEDC_CLK_DIV_TIMER2 : R/W; bitpos: [21:4]; default: 0; + * This register is used to configure the divisor for the divider in timer 2. + * + * The least significant eight bits represent the fractional part. + */ + +#define LEDC_CLK_DIV_TIMER2 0x0003FFFF +#define LEDC_CLK_DIV_TIMER2_M (LEDC_CLK_DIV_TIMER2_V << LEDC_CLK_DIV_TIMER2_S) +#define LEDC_CLK_DIV_TIMER2_V 0x0003FFFF +#define LEDC_CLK_DIV_TIMER2_S 4 + +/* LEDC_TIMER2_PAUSE : R/W; bitpos: [22]; default: 0; + * This bit is used to suspend the counter in timer 2. + */ + +#define LEDC_TIMER2_PAUSE (BIT(22)) +#define LEDC_TIMER2_PAUSE_M (LEDC_TIMER2_PAUSE_V << LEDC_TIMER2_PAUSE_S) +#define LEDC_TIMER2_PAUSE_V 0x00000001 +#define LEDC_TIMER2_PAUSE_S 22 + +/* LEDC_TIMER2_RST : R/W; bitpos: [23]; default: 1; + * This bit is used to reset timer 2. The counter will show 0 after reset. + */ + +#define LEDC_TIMER2_RST (BIT(23)) +#define LEDC_TIMER2_RST_M (LEDC_TIMER2_RST_V << LEDC_TIMER2_RST_S) +#define LEDC_TIMER2_RST_V 0x00000001 +#define LEDC_TIMER2_RST_S 23 + +/* LEDC_TICK_SEL_TIMER2 : R/W; bitpos: [24]; default: 0; + * This bit is used to select clock for timer 2. When this bit is set to 1 + * LEDC_APB_CLK_SEL[1:0] should be 1, otherwise the timer clock may be not + * accurate. + * + * 1'h0: SLOW_CLK 1'h1: REF_TICK + */ + +#define LEDC_TICK_SEL_TIMER2 (BIT(24)) +#define LEDC_TICK_SEL_TIMER2_M (LEDC_TICK_SEL_TIMER2_V << LEDC_TICK_SEL_TIMER2_S) +#define LEDC_TICK_SEL_TIMER2_V 0x00000001 +#define LEDC_TICK_SEL_TIMER2_S 24 + +/* LEDC_TIMER2_PARA_UP : WO; bitpos: [25]; default: 0; + * Set this bit to update LEDC_CLK_DIV_TIMER2 and LEDC_TIMER2_DUTY_RES. + */ + +#define LEDC_TIMER2_PARA_UP (BIT(25)) +#define LEDC_TIMER2_PARA_UP_M (LEDC_TIMER2_PARA_UP_V << LEDC_TIMER2_PARA_UP_S) +#define LEDC_TIMER2_PARA_UP_V 0x00000001 +#define LEDC_TIMER2_PARA_UP_S 25 + +/* LEDC_TIMER2_VALUE_REG register + * Timer 2 current counter value + */ + +#define LEDC_TIMER2_VALUE_REG (DR_REG_LEDC_BASE + 0xb4) + +/* LEDC_TIMER2_CNT : RO; bitpos: [13:0]; default: 0; + * This register stores the current counter value of timer 2. + */ + +#define LEDC_TIMER2_CNT 0x00003FFF +#define LEDC_TIMER2_CNT_M (LEDC_TIMER2_CNT_V << LEDC_TIMER2_CNT_S) +#define LEDC_TIMER2_CNT_V 0x00003FFF +#define LEDC_TIMER2_CNT_S 0 + +/* LEDC_TIMER3_CONF_REG register + * Timer 3 configuration + */ + +#define LEDC_TIMER3_CONF_REG (DR_REG_LEDC_BASE + 0xb8) + +/* LEDC_TIMER3_DUTY_RES : R/W; bitpos: [3:0]; default: 0; + * This register is used to control the range of the counter in timer 3. + */ + +#define LEDC_TIMER3_DUTY_RES 0x0000000F +#define LEDC_TIMER3_DUTY_RES_M (LEDC_TIMER3_DUTY_RES_V << LEDC_TIMER3_DUTY_RES_S) +#define LEDC_TIMER3_DUTY_RES_V 0x0000000F +#define LEDC_TIMER3_DUTY_RES_S 0 + +/* LEDC_CLK_DIV_TIMER3 : R/W; bitpos: [21:4]; default: 0; + * This register is used to configure the divisor for the divider in timer 3. + * + * The least significant eight bits represent the fractional part. + */ + +#define LEDC_CLK_DIV_TIMER3 0x0003FFFF +#define LEDC_CLK_DIV_TIMER3_M (LEDC_CLK_DIV_TIMER3_V << LEDC_CLK_DIV_TIMER3_S) +#define LEDC_CLK_DIV_TIMER3_V 0x0003FFFF +#define LEDC_CLK_DIV_TIMER3_S 4 + +/* LEDC_TIMER3_PAUSE : R/W; bitpos: [22]; default: 0; + * This bit is used to suspend the counter in timer 3. + */ + +#define LEDC_TIMER3_PAUSE (BIT(22)) +#define LEDC_TIMER3_PAUSE_M (LEDC_TIMER3_PAUSE_V << LEDC_TIMER3_PAUSE_S) +#define LEDC_TIMER3_PAUSE_V 0x00000001 +#define LEDC_TIMER3_PAUSE_S 22 + +/* LEDC_TIMER3_RST : R/W; bitpos: [23]; default: 1; + * This bit is used to reset timer 3. The counter will show 0 after reset. + */ + +#define LEDC_TIMER3_RST (BIT(23)) +#define LEDC_TIMER3_RST_M (LEDC_TIMER3_RST_V << LEDC_TIMER3_RST_S) +#define LEDC_TIMER3_RST_V 0x00000001 +#define LEDC_TIMER3_RST_S 23 + +/* LEDC_TICK_SEL_TIMER3 : R/W; bitpos: [24]; default: 0; + * This bit is used to select clock for timer 3. When this bit is set to 1 + * LEDC_APB_CLK_SEL[1:0] should be 1, otherwise the timer clock may be not + * accurate. + * + * 1'h0: SLOW_CLK 1'h1: REF_TICK + */ + +#define LEDC_TICK_SEL_TIMER3 (BIT(24)) +#define LEDC_TICK_SEL_TIMER3_M (LEDC_TICK_SEL_TIMER3_V << LEDC_TICK_SEL_TIMER3_S) +#define LEDC_TICK_SEL_TIMER3_V 0x00000001 +#define LEDC_TICK_SEL_TIMER3_S 24 + +/* LEDC_TIMER3_PARA_UP : WO; bitpos: [25]; default: 0; + * Set this bit to update LEDC_CLK_DIV_TIMER3 and LEDC_TIMER3_DUTY_RES. + */ + +#define LEDC_TIMER3_PARA_UP (BIT(25)) +#define LEDC_TIMER3_PARA_UP_M (LEDC_TIMER3_PARA_UP_V << LEDC_TIMER3_PARA_UP_S) +#define LEDC_TIMER3_PARA_UP_V 0x00000001 +#define LEDC_TIMER3_PARA_UP_S 25 + +/* LEDC_TIMER3_VALUE_REG register + * Timer 3 current counter value + */ + +#define LEDC_TIMER3_VALUE_REG (DR_REG_LEDC_BASE + 0xbc) + +/* LEDC_TIMER3_CNT : RO; bitpos: [13:0]; default: 0; + * This register stores the current counter value of timer 3. + */ + +#define LEDC_TIMER3_CNT 0x00003FFF +#define LEDC_TIMER3_CNT_M (LEDC_TIMER3_CNT_V << LEDC_TIMER3_CNT_S) +#define LEDC_TIMER3_CNT_V 0x00003FFF +#define LEDC_TIMER3_CNT_S 0 + +/* LEDC_INT_RAW_REG register + * Raw interrupt status + */ + +#define LEDC_INT_RAW_REG (DR_REG_LEDC_BASE + 0xc0) + +/* LEDC_TIMER0_OVF_INT_RAW : RO; bitpos: [0]; default: 0; + * Triggered when the timer0 has reached its maximum counter value. + */ + +#define LEDC_TIMER0_OVF_INT_RAW (BIT(0)) +#define LEDC_TIMER0_OVF_INT_RAW_M (LEDC_TIMER0_OVF_INT_RAW_V << LEDC_TIMER0_OVF_INT_RAW_S) +#define LEDC_TIMER0_OVF_INT_RAW_V 0x00000001 +#define LEDC_TIMER0_OVF_INT_RAW_S 0 + +/* LEDC_TIMER1_OVF_INT_RAW : RO; bitpos: [1]; default: 0; + * Triggered when the timer1 has reached its maximum counter value. + */ + +#define LEDC_TIMER1_OVF_INT_RAW (BIT(1)) +#define LEDC_TIMER1_OVF_INT_RAW_M (LEDC_TIMER1_OVF_INT_RAW_V << LEDC_TIMER1_OVF_INT_RAW_S) +#define LEDC_TIMER1_OVF_INT_RAW_V 0x00000001 +#define LEDC_TIMER1_OVF_INT_RAW_S 1 + +/* LEDC_TIMER2_OVF_INT_RAW : RO; bitpos: [2]; default: 0; + * Triggered when the timer2 has reached its maximum counter value. + */ + +#define LEDC_TIMER2_OVF_INT_RAW (BIT(2)) +#define LEDC_TIMER2_OVF_INT_RAW_M (LEDC_TIMER2_OVF_INT_RAW_V << LEDC_TIMER2_OVF_INT_RAW_S) +#define LEDC_TIMER2_OVF_INT_RAW_V 0x00000001 +#define LEDC_TIMER2_OVF_INT_RAW_S 2 + +/* LEDC_TIMER3_OVF_INT_RAW : RO; bitpos: [3]; default: 0; + * Triggered when the timer3 has reached its maximum counter value. + */ + +#define LEDC_TIMER3_OVF_INT_RAW (BIT(3)) +#define LEDC_TIMER3_OVF_INT_RAW_M (LEDC_TIMER3_OVF_INT_RAW_V << LEDC_TIMER3_OVF_INT_RAW_S) +#define LEDC_TIMER3_OVF_INT_RAW_V 0x00000001 +#define LEDC_TIMER3_OVF_INT_RAW_S 3 + +/* LEDC_DUTY_CHNG_END_CH0_INT_RAW : RO; bitpos: [4]; default: 0; + * Interrupt raw bit for channel 0. Triggered when the gradual change of + * duty has finished. + */ + +#define LEDC_DUTY_CHNG_END_CH0_INT_RAW (BIT(4)) +#define LEDC_DUTY_CHNG_END_CH0_INT_RAW_M (LEDC_DUTY_CHNG_END_CH0_INT_RAW_V << LEDC_DUTY_CHNG_END_CH0_INT_RAW_S) +#define LEDC_DUTY_CHNG_END_CH0_INT_RAW_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH0_INT_RAW_S 4 + +/* LEDC_DUTY_CHNG_END_CH1_INT_RAW : RO; bitpos: [5]; default: 0; + * Interrupt raw bit for channel 1. Triggered when the gradual change of + * duty has finished. + */ + +#define LEDC_DUTY_CHNG_END_CH1_INT_RAW (BIT(5)) +#define LEDC_DUTY_CHNG_END_CH1_INT_RAW_M (LEDC_DUTY_CHNG_END_CH1_INT_RAW_V << LEDC_DUTY_CHNG_END_CH1_INT_RAW_S) +#define LEDC_DUTY_CHNG_END_CH1_INT_RAW_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH1_INT_RAW_S 5 + +/* LEDC_DUTY_CHNG_END_CH2_INT_RAW : RO; bitpos: [6]; default: 0; + * Interrupt raw bit for channel 2. Triggered when the gradual change of + * duty has finished. + */ + +#define LEDC_DUTY_CHNG_END_CH2_INT_RAW (BIT(6)) +#define LEDC_DUTY_CHNG_END_CH2_INT_RAW_M (LEDC_DUTY_CHNG_END_CH2_INT_RAW_V << LEDC_DUTY_CHNG_END_CH2_INT_RAW_S) +#define LEDC_DUTY_CHNG_END_CH2_INT_RAW_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH2_INT_RAW_S 6 + +/* LEDC_DUTY_CHNG_END_CH3_INT_RAW : RO; bitpos: [7]; default: 0; + * Interrupt raw bit for channel 3. Triggered when the gradual change of + * duty has finished. + */ + +#define LEDC_DUTY_CHNG_END_CH3_INT_RAW (BIT(7)) +#define LEDC_DUTY_CHNG_END_CH3_INT_RAW_M (LEDC_DUTY_CHNG_END_CH3_INT_RAW_V << LEDC_DUTY_CHNG_END_CH3_INT_RAW_S) +#define LEDC_DUTY_CHNG_END_CH3_INT_RAW_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH3_INT_RAW_S 7 + +/* LEDC_DUTY_CHNG_END_CH4_INT_RAW : RO; bitpos: [8]; default: 0; + * Interrupt raw bit for channel 4. Triggered when the gradual change of + * duty has finished. + */ + +#define LEDC_DUTY_CHNG_END_CH4_INT_RAW (BIT(8)) +#define LEDC_DUTY_CHNG_END_CH4_INT_RAW_M (LEDC_DUTY_CHNG_END_CH4_INT_RAW_V << LEDC_DUTY_CHNG_END_CH4_INT_RAW_S) +#define LEDC_DUTY_CHNG_END_CH4_INT_RAW_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH4_INT_RAW_S 8 + +/* LEDC_DUTY_CHNG_END_CH5_INT_RAW : RO; bitpos: [9]; default: 0; + * Interrupt raw bit for channel 5. Triggered when the gradual change of + * duty has finished. + */ + +#define LEDC_DUTY_CHNG_END_CH5_INT_RAW (BIT(9)) +#define LEDC_DUTY_CHNG_END_CH5_INT_RAW_M (LEDC_DUTY_CHNG_END_CH5_INT_RAW_V << LEDC_DUTY_CHNG_END_CH5_INT_RAW_S) +#define LEDC_DUTY_CHNG_END_CH5_INT_RAW_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH5_INT_RAW_S 9 + +/* LEDC_DUTY_CHNG_END_CH6_INT_RAW : RO; bitpos: [10]; default: 0; + * Interrupt raw bit for channel 6. Triggered when the gradual change of + * duty has finished. + */ + +#define LEDC_DUTY_CHNG_END_CH6_INT_RAW (BIT(10)) +#define LEDC_DUTY_CHNG_END_CH6_INT_RAW_M (LEDC_DUTY_CHNG_END_CH6_INT_RAW_V << LEDC_DUTY_CHNG_END_CH6_INT_RAW_S) +#define LEDC_DUTY_CHNG_END_CH6_INT_RAW_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH6_INT_RAW_S 10 + +/* LEDC_DUTY_CHNG_END_CH7_INT_RAW : RO; bitpos: [11]; default: 0; + * Interrupt raw bit for channel 7. Triggered when the gradual change of + * duty has finished. + */ + +#define LEDC_DUTY_CHNG_END_CH7_INT_RAW (BIT(11)) +#define LEDC_DUTY_CHNG_END_CH7_INT_RAW_M (LEDC_DUTY_CHNG_END_CH7_INT_RAW_V << LEDC_DUTY_CHNG_END_CH7_INT_RAW_S) +#define LEDC_DUTY_CHNG_END_CH7_INT_RAW_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH7_INT_RAW_S 11 + +/* LEDC_OVF_CNT_CH0_INT_RAW : RO; bitpos: [12]; default: 0; + * Interrupt raw bit for channel 0. Triggered when the ovf_cnt has reached + * the value specified by LEDC_OVF_NUM_CH0. + */ + +#define LEDC_OVF_CNT_CH0_INT_RAW (BIT(12)) +#define LEDC_OVF_CNT_CH0_INT_RAW_M (LEDC_OVF_CNT_CH0_INT_RAW_V << LEDC_OVF_CNT_CH0_INT_RAW_S) +#define LEDC_OVF_CNT_CH0_INT_RAW_V 0x00000001 +#define LEDC_OVF_CNT_CH0_INT_RAW_S 12 + +/* LEDC_OVF_CNT_CH1_INT_RAW : RO; bitpos: [13]; default: 0; + * Interrupt raw bit for channel 1. Triggered when the ovf_cnt has reached + * the value specified by LEDC_OVF_NUM_CH1. + */ + +#define LEDC_OVF_CNT_CH1_INT_RAW (BIT(13)) +#define LEDC_OVF_CNT_CH1_INT_RAW_M (LEDC_OVF_CNT_CH1_INT_RAW_V << LEDC_OVF_CNT_CH1_INT_RAW_S) +#define LEDC_OVF_CNT_CH1_INT_RAW_V 0x00000001 +#define LEDC_OVF_CNT_CH1_INT_RAW_S 13 + +/* LEDC_OVF_CNT_CH2_INT_RAW : RO; bitpos: [14]; default: 0; + * Interrupt raw bit for channel 2. Triggered when the ovf_cnt has reached + * the value specified by LEDC_OVF_NUM_CH2. + */ + +#define LEDC_OVF_CNT_CH2_INT_RAW (BIT(14)) +#define LEDC_OVF_CNT_CH2_INT_RAW_M (LEDC_OVF_CNT_CH2_INT_RAW_V << LEDC_OVF_CNT_CH2_INT_RAW_S) +#define LEDC_OVF_CNT_CH2_INT_RAW_V 0x00000001 +#define LEDC_OVF_CNT_CH2_INT_RAW_S 14 + +/* LEDC_OVF_CNT_CH3_INT_RAW : RO; bitpos: [15]; default: 0; + * Interrupt raw bit for channel 3. Triggered when the ovf_cnt has reached + * the value specified by LEDC_OVF_NUM_CH3. + */ + +#define LEDC_OVF_CNT_CH3_INT_RAW (BIT(15)) +#define LEDC_OVF_CNT_CH3_INT_RAW_M (LEDC_OVF_CNT_CH3_INT_RAW_V << LEDC_OVF_CNT_CH3_INT_RAW_S) +#define LEDC_OVF_CNT_CH3_INT_RAW_V 0x00000001 +#define LEDC_OVF_CNT_CH3_INT_RAW_S 15 + +/* LEDC_OVF_CNT_CH4_INT_RAW : RO; bitpos: [16]; default: 0; + * Interrupt raw bit for channel 4. Triggered when the ovf_cnt has reached + * the value specified by LEDC_OVF_NUM_CH4. + */ + +#define LEDC_OVF_CNT_CH4_INT_RAW (BIT(16)) +#define LEDC_OVF_CNT_CH4_INT_RAW_M (LEDC_OVF_CNT_CH4_INT_RAW_V << LEDC_OVF_CNT_CH4_INT_RAW_S) +#define LEDC_OVF_CNT_CH4_INT_RAW_V 0x00000001 +#define LEDC_OVF_CNT_CH4_INT_RAW_S 16 + +/* LEDC_OVF_CNT_CH5_INT_RAW : RO; bitpos: [17]; default: 0; + * Interrupt raw bit for channel 5. Triggered when the ovf_cnt has reached + * the value specified by LEDC_OVF_NUM_CH5. + */ + +#define LEDC_OVF_CNT_CH5_INT_RAW (BIT(17)) +#define LEDC_OVF_CNT_CH5_INT_RAW_M (LEDC_OVF_CNT_CH5_INT_RAW_V << LEDC_OVF_CNT_CH5_INT_RAW_S) +#define LEDC_OVF_CNT_CH5_INT_RAW_V 0x00000001 +#define LEDC_OVF_CNT_CH5_INT_RAW_S 17 + +/* LEDC_OVF_CNT_CH6_INT_RAW : RO; bitpos: [18]; default: 0; + * Interrupt raw bit for channel 6. Triggered when the ovf_cnt has reached + * the value specified by LEDC_OVF_NUM_CH6. + */ + +#define LEDC_OVF_CNT_CH6_INT_RAW (BIT(18)) +#define LEDC_OVF_CNT_CH6_INT_RAW_M (LEDC_OVF_CNT_CH6_INT_RAW_V << LEDC_OVF_CNT_CH6_INT_RAW_S) +#define LEDC_OVF_CNT_CH6_INT_RAW_V 0x00000001 +#define LEDC_OVF_CNT_CH6_INT_RAW_S 18 + +/* LEDC_OVF_CNT_CH7_INT_RAW : RO; bitpos: [19]; default: 0; + * Interrupt raw bit for channel 7. Triggered when the ovf_cnt has reached + * the value specified by LEDC_OVF_NUM_CH7. + */ + +#define LEDC_OVF_CNT_CH7_INT_RAW (BIT(19)) +#define LEDC_OVF_CNT_CH7_INT_RAW_M (LEDC_OVF_CNT_CH7_INT_RAW_V << LEDC_OVF_CNT_CH7_INT_RAW_S) +#define LEDC_OVF_CNT_CH7_INT_RAW_V 0x00000001 +#define LEDC_OVF_CNT_CH7_INT_RAW_S 19 + +/* LEDC_INT_ST_REG register + * Masked interrupt status + */ + +#define LEDC_INT_ST_REG (DR_REG_LEDC_BASE + 0xc4) + +/* LEDC_TIMER0_OVF_INT_ST : RO; bitpos: [0]; default: 0; + * This is the masked interrupt status bit for the LEDC_TIMER0_OVF_INT + * interrupt when LEDC_TIMER0_OVF_INT_ENA is set to 1. + */ + +#define LEDC_TIMER0_OVF_INT_ST (BIT(0)) +#define LEDC_TIMER0_OVF_INT_ST_M (LEDC_TIMER0_OVF_INT_ST_V << LEDC_TIMER0_OVF_INT_ST_S) +#define LEDC_TIMER0_OVF_INT_ST_V 0x00000001 +#define LEDC_TIMER0_OVF_INT_ST_S 0 + +/* LEDC_TIMER1_OVF_INT_ST : RO; bitpos: [1]; default: 0; + * This is the masked interrupt status bit for the LEDC_TIMER1_OVF_INT + * interrupt when LEDC_TIMER1_OVF_INT_ENA is set to 1. + */ + +#define LEDC_TIMER1_OVF_INT_ST (BIT(1)) +#define LEDC_TIMER1_OVF_INT_ST_M (LEDC_TIMER1_OVF_INT_ST_V << LEDC_TIMER1_OVF_INT_ST_S) +#define LEDC_TIMER1_OVF_INT_ST_V 0x00000001 +#define LEDC_TIMER1_OVF_INT_ST_S 1 + +/* LEDC_TIMER2_OVF_INT_ST : RO; bitpos: [2]; default: 0; + * This is the masked interrupt status bit for the LEDC_TIMER2_OVF_INT + * interrupt when LEDC_TIMER2_OVF_INT_ENA is set to 1. + */ + +#define LEDC_TIMER2_OVF_INT_ST (BIT(2)) +#define LEDC_TIMER2_OVF_INT_ST_M (LEDC_TIMER2_OVF_INT_ST_V << LEDC_TIMER2_OVF_INT_ST_S) +#define LEDC_TIMER2_OVF_INT_ST_V 0x00000001 +#define LEDC_TIMER2_OVF_INT_ST_S 2 + +/* LEDC_TIMER3_OVF_INT_ST : RO; bitpos: [3]; default: 0; + * This is the masked interrupt status bit for the LEDC_TIMER3_OVF_INT + * interrupt when LEDC_TIMER3_OVF_INT_ENA is set to 1. + */ + +#define LEDC_TIMER3_OVF_INT_ST (BIT(3)) +#define LEDC_TIMER3_OVF_INT_ST_M (LEDC_TIMER3_OVF_INT_ST_V << LEDC_TIMER3_OVF_INT_ST_S) +#define LEDC_TIMER3_OVF_INT_ST_V 0x00000001 +#define LEDC_TIMER3_OVF_INT_ST_S 3 + +/* LEDC_DUTY_CHNG_END_CH0_INT_ST : RO; bitpos: [4]; default: 0; + * This is the masked interrupt status bit for the + * LEDC_DUTY_CHNG_END_CH0_INT interrupt when + * LEDC_DUTY_CHNG_END_CH0_INT_ENAIS set to 1. + */ + +#define LEDC_DUTY_CHNG_END_CH0_INT_ST (BIT(4)) +#define LEDC_DUTY_CHNG_END_CH0_INT_ST_M (LEDC_DUTY_CHNG_END_CH0_INT_ST_V << LEDC_DUTY_CHNG_END_CH0_INT_ST_S) +#define LEDC_DUTY_CHNG_END_CH0_INT_ST_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH0_INT_ST_S 4 + +/* LEDC_DUTY_CHNG_END_CH1_INT_ST : RO; bitpos: [5]; default: 0; + * This is the masked interrupt status bit for the + * LEDC_DUTY_CHNG_END_CH1_INT interrupt when + * LEDC_DUTY_CHNG_END_CH1_INT_ENAIS set to 1. + */ + +#define LEDC_DUTY_CHNG_END_CH1_INT_ST (BIT(5)) +#define LEDC_DUTY_CHNG_END_CH1_INT_ST_M (LEDC_DUTY_CHNG_END_CH1_INT_ST_V << LEDC_DUTY_CHNG_END_CH1_INT_ST_S) +#define LEDC_DUTY_CHNG_END_CH1_INT_ST_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH1_INT_ST_S 5 + +/* LEDC_DUTY_CHNG_END_CH2_INT_ST : RO; bitpos: [6]; default: 0; + * This is the masked interrupt status bit for the + * LEDC_DUTY_CHNG_END_CH2_INT interrupt when + * LEDC_DUTY_CHNG_END_CH2_INT_ENAIS set to 1. + */ + +#define LEDC_DUTY_CHNG_END_CH2_INT_ST (BIT(6)) +#define LEDC_DUTY_CHNG_END_CH2_INT_ST_M (LEDC_DUTY_CHNG_END_CH2_INT_ST_V << LEDC_DUTY_CHNG_END_CH2_INT_ST_S) +#define LEDC_DUTY_CHNG_END_CH2_INT_ST_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH2_INT_ST_S 6 + +/* LEDC_DUTY_CHNG_END_CH3_INT_ST : RO; bitpos: [7]; default: 0; + * This is the masked interrupt status bit for the + * LEDC_DUTY_CHNG_END_CH3_INT interrupt when + * LEDC_DUTY_CHNG_END_CH3_INT_ENAIS set to 1. + */ + +#define LEDC_DUTY_CHNG_END_CH3_INT_ST (BIT(7)) +#define LEDC_DUTY_CHNG_END_CH3_INT_ST_M (LEDC_DUTY_CHNG_END_CH3_INT_ST_V << LEDC_DUTY_CHNG_END_CH3_INT_ST_S) +#define LEDC_DUTY_CHNG_END_CH3_INT_ST_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH3_INT_ST_S 7 + +/* LEDC_DUTY_CHNG_END_CH4_INT_ST : RO; bitpos: [8]; default: 0; + * This is the masked interrupt status bit for the + * LEDC_DUTY_CHNG_END_CH4_INT interrupt when + * LEDC_DUTY_CHNG_END_CH4_INT_ENAIS set to 1. + */ + +#define LEDC_DUTY_CHNG_END_CH4_INT_ST (BIT(8)) +#define LEDC_DUTY_CHNG_END_CH4_INT_ST_M (LEDC_DUTY_CHNG_END_CH4_INT_ST_V << LEDC_DUTY_CHNG_END_CH4_INT_ST_S) +#define LEDC_DUTY_CHNG_END_CH4_INT_ST_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH4_INT_ST_S 8 + +/* LEDC_DUTY_CHNG_END_CH5_INT_ST : RO; bitpos: [9]; default: 0; + * This is the masked interrupt status bit for the + * LEDC_DUTY_CHNG_END_CH5_INT interrupt when + * LEDC_DUTY_CHNG_END_CH5_INT_ENAIS set to 1. + */ + +#define LEDC_DUTY_CHNG_END_CH5_INT_ST (BIT(9)) +#define LEDC_DUTY_CHNG_END_CH5_INT_ST_M (LEDC_DUTY_CHNG_END_CH5_INT_ST_V << LEDC_DUTY_CHNG_END_CH5_INT_ST_S) +#define LEDC_DUTY_CHNG_END_CH5_INT_ST_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH5_INT_ST_S 9 + +/* LEDC_DUTY_CHNG_END_CH6_INT_ST : RO; bitpos: [10]; default: 0; + * This is the masked interrupt status bit for the + * LEDC_DUTY_CHNG_END_CH6_INT interrupt when + * LEDC_DUTY_CHNG_END_CH6_INT_ENAIS set to 1. + */ + +#define LEDC_DUTY_CHNG_END_CH6_INT_ST (BIT(10)) +#define LEDC_DUTY_CHNG_END_CH6_INT_ST_M (LEDC_DUTY_CHNG_END_CH6_INT_ST_V << LEDC_DUTY_CHNG_END_CH6_INT_ST_S) +#define LEDC_DUTY_CHNG_END_CH6_INT_ST_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH6_INT_ST_S 10 + +/* LEDC_DUTY_CHNG_END_CH7_INT_ST : RO; bitpos: [11]; default: 0; + * This is the masked interrupt status bit for the + * LEDC_DUTY_CHNG_END_CH7_INT interrupt when + * LEDC_DUTY_CHNG_END_CH7_INT_ENAIS set to 1. + */ + +#define LEDC_DUTY_CHNG_END_CH7_INT_ST (BIT(11)) +#define LEDC_DUTY_CHNG_END_CH7_INT_ST_M (LEDC_DUTY_CHNG_END_CH7_INT_ST_V << LEDC_DUTY_CHNG_END_CH7_INT_ST_S) +#define LEDC_DUTY_CHNG_END_CH7_INT_ST_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH7_INT_ST_S 11 + +/* LEDC_OVF_CNT_CH0_INT_ST : RO; bitpos: [12]; default: 0; + * This is the masked interrupt status bit for the LEDC_OVF_CNT_CH0_INT + * interrupt when LEDC_OVF_CNT_CH0_INT_ENA is set to 1. + */ + +#define LEDC_OVF_CNT_CH0_INT_ST (BIT(12)) +#define LEDC_OVF_CNT_CH0_INT_ST_M (LEDC_OVF_CNT_CH0_INT_ST_V << LEDC_OVF_CNT_CH0_INT_ST_S) +#define LEDC_OVF_CNT_CH0_INT_ST_V 0x00000001 +#define LEDC_OVF_CNT_CH0_INT_ST_S 12 + +/* LEDC_OVF_CNT_CH1_INT_ST : RO; bitpos: [13]; default: 0; + * This is the masked interrupt status bit for the LEDC_OVF_CNT_CH1_INT + * interrupt when LEDC_OVF_CNT_CH1_INT_ENA is set to 1. + */ + +#define LEDC_OVF_CNT_CH1_INT_ST (BIT(13)) +#define LEDC_OVF_CNT_CH1_INT_ST_M (LEDC_OVF_CNT_CH1_INT_ST_V << LEDC_OVF_CNT_CH1_INT_ST_S) +#define LEDC_OVF_CNT_CH1_INT_ST_V 0x00000001 +#define LEDC_OVF_CNT_CH1_INT_ST_S 13 + +/* LEDC_OVF_CNT_CH2_INT_ST : RO; bitpos: [14]; default: 0; + * This is the masked interrupt status bit for the LEDC_OVF_CNT_CH2_INT + * interrupt when LEDC_OVF_CNT_CH2_INT_ENA is set to 1. + */ + +#define LEDC_OVF_CNT_CH2_INT_ST (BIT(14)) +#define LEDC_OVF_CNT_CH2_INT_ST_M (LEDC_OVF_CNT_CH2_INT_ST_V << LEDC_OVF_CNT_CH2_INT_ST_S) +#define LEDC_OVF_CNT_CH2_INT_ST_V 0x00000001 +#define LEDC_OVF_CNT_CH2_INT_ST_S 14 + +/* LEDC_OVF_CNT_CH3_INT_ST : RO; bitpos: [15]; default: 0; + * This is the masked interrupt status bit for the LEDC_OVF_CNT_CH3_INT + * interrupt when LEDC_OVF_CNT_CH3_INT_ENA is set to 1. + */ + +#define LEDC_OVF_CNT_CH3_INT_ST (BIT(15)) +#define LEDC_OVF_CNT_CH3_INT_ST_M (LEDC_OVF_CNT_CH3_INT_ST_V << LEDC_OVF_CNT_CH3_INT_ST_S) +#define LEDC_OVF_CNT_CH3_INT_ST_V 0x00000001 +#define LEDC_OVF_CNT_CH3_INT_ST_S 15 + +/* LEDC_OVF_CNT_CH4_INT_ST : RO; bitpos: [16]; default: 0; + * This is the masked interrupt status bit for the LEDC_OVF_CNT_CH4_INT + * interrupt when LEDC_OVF_CNT_CH4_INT_ENA is set to 1. + */ + +#define LEDC_OVF_CNT_CH4_INT_ST (BIT(16)) +#define LEDC_OVF_CNT_CH4_INT_ST_M (LEDC_OVF_CNT_CH4_INT_ST_V << LEDC_OVF_CNT_CH4_INT_ST_S) +#define LEDC_OVF_CNT_CH4_INT_ST_V 0x00000001 +#define LEDC_OVF_CNT_CH4_INT_ST_S 16 + +/* LEDC_OVF_CNT_CH5_INT_ST : RO; bitpos: [17]; default: 0; + * This is the masked interrupt status bit for the LEDC_OVF_CNT_CH5_INT + * interrupt when LEDC_OVF_CNT_CH5_INT_ENA is set to 1. + */ + +#define LEDC_OVF_CNT_CH5_INT_ST (BIT(17)) +#define LEDC_OVF_CNT_CH5_INT_ST_M (LEDC_OVF_CNT_CH5_INT_ST_V << LEDC_OVF_CNT_CH5_INT_ST_S) +#define LEDC_OVF_CNT_CH5_INT_ST_V 0x00000001 +#define LEDC_OVF_CNT_CH5_INT_ST_S 17 + +/* LEDC_OVF_CNT_CH6_INT_ST : RO; bitpos: [18]; default: 0; + * This is the masked interrupt status bit for the LEDC_OVF_CNT_CH6_INT + * interrupt when LEDC_OVF_CNT_CH6_INT_ENA is set to 1. + */ + +#define LEDC_OVF_CNT_CH6_INT_ST (BIT(18)) +#define LEDC_OVF_CNT_CH6_INT_ST_M (LEDC_OVF_CNT_CH6_INT_ST_V << LEDC_OVF_CNT_CH6_INT_ST_S) +#define LEDC_OVF_CNT_CH6_INT_ST_V 0x00000001 +#define LEDC_OVF_CNT_CH6_INT_ST_S 18 + +/* LEDC_OVF_CNT_CH7_INT_ST : RO; bitpos: [19]; default: 0; + * This is the masked interrupt status bit for the LEDC_OVF_CNT_CH7_INT + * interrupt when LEDC_OVF_CNT_CH7_INT_ENA is set to 1. + */ + +#define LEDC_OVF_CNT_CH7_INT_ST (BIT(19)) +#define LEDC_OVF_CNT_CH7_INT_ST_M (LEDC_OVF_CNT_CH7_INT_ST_V << LEDC_OVF_CNT_CH7_INT_ST_S) +#define LEDC_OVF_CNT_CH7_INT_ST_V 0x00000001 +#define LEDC_OVF_CNT_CH7_INT_ST_S 19 + +/* LEDC_INT_ENA_REG register + * Interrupt enable bits + */ + +#define LEDC_INT_ENA_REG (DR_REG_LEDC_BASE + 0xc8) + +/* LEDC_TIMER0_OVF_INT_ENA : R/W; bitpos: [0]; default: 0; + * The interrupt enable bit for the LEDC_TIMER0_OVF_INT interrupt. + */ + +#define LEDC_TIMER0_OVF_INT_ENA (BIT(0)) +#define LEDC_TIMER0_OVF_INT_ENA_M (LEDC_TIMER0_OVF_INT_ENA_V << LEDC_TIMER0_OVF_INT_ENA_S) +#define LEDC_TIMER0_OVF_INT_ENA_V 0x00000001 +#define LEDC_TIMER0_OVF_INT_ENA_S 0 + +/* LEDC_TIMER1_OVF_INT_ENA : R/W; bitpos: [1]; default: 0; + * The interrupt enable bit for the LEDC_TIMER1_OVF_INT interrupt. + */ + +#define LEDC_TIMER1_OVF_INT_ENA (BIT(1)) +#define LEDC_TIMER1_OVF_INT_ENA_M (LEDC_TIMER1_OVF_INT_ENA_V << LEDC_TIMER1_OVF_INT_ENA_S) +#define LEDC_TIMER1_OVF_INT_ENA_V 0x00000001 +#define LEDC_TIMER1_OVF_INT_ENA_S 1 + +/* LEDC_TIMER2_OVF_INT_ENA : R/W; bitpos: [2]; default: 0; + * The interrupt enable bit for the LEDC_TIMER2_OVF_INT interrupt. + */ + +#define LEDC_TIMER2_OVF_INT_ENA (BIT(2)) +#define LEDC_TIMER2_OVF_INT_ENA_M (LEDC_TIMER2_OVF_INT_ENA_V << LEDC_TIMER2_OVF_INT_ENA_S) +#define LEDC_TIMER2_OVF_INT_ENA_V 0x00000001 +#define LEDC_TIMER2_OVF_INT_ENA_S 2 + +/* LEDC_TIMER3_OVF_INT_ENA : R/W; bitpos: [3]; default: 0; + * The interrupt enable bit for the LEDC_TIMER3_OVF_INT interrupt. + */ + +#define LEDC_TIMER3_OVF_INT_ENA (BIT(3)) +#define LEDC_TIMER3_OVF_INT_ENA_M (LEDC_TIMER3_OVF_INT_ENA_V << LEDC_TIMER3_OVF_INT_ENA_S) +#define LEDC_TIMER3_OVF_INT_ENA_V 0x00000001 +#define LEDC_TIMER3_OVF_INT_ENA_S 3 + +/* LEDC_DUTY_CHNG_END_CH0_INT_ENA : R/W; bitpos: [4]; default: 0; + * The interrupt enable bit for the LEDC_DUTY_CHNG_END_CH0_INT interrupt. + */ + +#define LEDC_DUTY_CHNG_END_CH0_INT_ENA (BIT(4)) +#define LEDC_DUTY_CHNG_END_CH0_INT_ENA_M (LEDC_DUTY_CHNG_END_CH0_INT_ENA_V << LEDC_DUTY_CHNG_END_CH0_INT_ENA_S) +#define LEDC_DUTY_CHNG_END_CH0_INT_ENA_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH0_INT_ENA_S 4 + +/* LEDC_DUTY_CHNG_END_CH1_INT_ENA : R/W; bitpos: [5]; default: 0; + * The interrupt enable bit for the LEDC_DUTY_CHNG_END_CH1_INT interrupt. + */ + +#define LEDC_DUTY_CHNG_END_CH1_INT_ENA (BIT(5)) +#define LEDC_DUTY_CHNG_END_CH1_INT_ENA_M (LEDC_DUTY_CHNG_END_CH1_INT_ENA_V << LEDC_DUTY_CHNG_END_CH1_INT_ENA_S) +#define LEDC_DUTY_CHNG_END_CH1_INT_ENA_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH1_INT_ENA_S 5 + +/* LEDC_DUTY_CHNG_END_CH2_INT_ENA : R/W; bitpos: [6]; default: 0; + * The interrupt enable bit for the LEDC_DUTY_CHNG_END_CH2_INT interrupt. + */ + +#define LEDC_DUTY_CHNG_END_CH2_INT_ENA (BIT(6)) +#define LEDC_DUTY_CHNG_END_CH2_INT_ENA_M (LEDC_DUTY_CHNG_END_CH2_INT_ENA_V << LEDC_DUTY_CHNG_END_CH2_INT_ENA_S) +#define LEDC_DUTY_CHNG_END_CH2_INT_ENA_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH2_INT_ENA_S 6 + +/* LEDC_DUTY_CHNG_END_CH3_INT_ENA : R/W; bitpos: [7]; default: 0; + * The interrupt enable bit for the LEDC_DUTY_CHNG_END_CH3_INT interrupt. + */ + +#define LEDC_DUTY_CHNG_END_CH3_INT_ENA (BIT(7)) +#define LEDC_DUTY_CHNG_END_CH3_INT_ENA_M (LEDC_DUTY_CHNG_END_CH3_INT_ENA_V << LEDC_DUTY_CHNG_END_CH3_INT_ENA_S) +#define LEDC_DUTY_CHNG_END_CH3_INT_ENA_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH3_INT_ENA_S 7 + +/* LEDC_DUTY_CHNG_END_CH4_INT_ENA : R/W; bitpos: [8]; default: 0; + * The interrupt enable bit for the LEDC_DUTY_CHNG_END_CH4_INT interrupt. + */ + +#define LEDC_DUTY_CHNG_END_CH4_INT_ENA (BIT(8)) +#define LEDC_DUTY_CHNG_END_CH4_INT_ENA_M (LEDC_DUTY_CHNG_END_CH4_INT_ENA_V << LEDC_DUTY_CHNG_END_CH4_INT_ENA_S) +#define LEDC_DUTY_CHNG_END_CH4_INT_ENA_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH4_INT_ENA_S 8 + +/* LEDC_DUTY_CHNG_END_CH5_INT_ENA : R/W; bitpos: [9]; default: 0; + * The interrupt enable bit for the LEDC_DUTY_CHNG_END_CH5_INT interrupt. + */ + +#define LEDC_DUTY_CHNG_END_CH5_INT_ENA (BIT(9)) +#define LEDC_DUTY_CHNG_END_CH5_INT_ENA_M (LEDC_DUTY_CHNG_END_CH5_INT_ENA_V << LEDC_DUTY_CHNG_END_CH5_INT_ENA_S) +#define LEDC_DUTY_CHNG_END_CH5_INT_ENA_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH5_INT_ENA_S 9 + +/* LEDC_DUTY_CHNG_END_CH6_INT_ENA : R/W; bitpos: [10]; default: 0; + * The interrupt enable bit for the LEDC_DUTY_CHNG_END_CH6_INT interrupt. + */ + +#define LEDC_DUTY_CHNG_END_CH6_INT_ENA (BIT(10)) +#define LEDC_DUTY_CHNG_END_CH6_INT_ENA_M (LEDC_DUTY_CHNG_END_CH6_INT_ENA_V << LEDC_DUTY_CHNG_END_CH6_INT_ENA_S) +#define LEDC_DUTY_CHNG_END_CH6_INT_ENA_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH6_INT_ENA_S 10 + +/* LEDC_DUTY_CHNG_END_CH7_INT_ENA : R/W; bitpos: [11]; default: 0; + * The interrupt enable bit for the LEDC_DUTY_CHNG_END_CH7_INT interrupt. + */ + +#define LEDC_DUTY_CHNG_END_CH7_INT_ENA (BIT(11)) +#define LEDC_DUTY_CHNG_END_CH7_INT_ENA_M (LEDC_DUTY_CHNG_END_CH7_INT_ENA_V << LEDC_DUTY_CHNG_END_CH7_INT_ENA_S) +#define LEDC_DUTY_CHNG_END_CH7_INT_ENA_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH7_INT_ENA_S 11 + +/* LEDC_OVF_CNT_CH0_INT_ENA : R/W; bitpos: [12]; default: 0; + * The interrupt enable bit for the LEDC_OVF_CNT_CH0_INT interrupt. + */ + +#define LEDC_OVF_CNT_CH0_INT_ENA (BIT(12)) +#define LEDC_OVF_CNT_CH0_INT_ENA_M (LEDC_OVF_CNT_CH0_INT_ENA_V << LEDC_OVF_CNT_CH0_INT_ENA_S) +#define LEDC_OVF_CNT_CH0_INT_ENA_V 0x00000001 +#define LEDC_OVF_CNT_CH0_INT_ENA_S 12 + +/* LEDC_OVF_CNT_CH1_INT_ENA : R/W; bitpos: [13]; default: 0; + * The interrupt enable bit for the LEDC_OVF_CNT_CH1_INT interrupt. + */ + +#define LEDC_OVF_CNT_CH1_INT_ENA (BIT(13)) +#define LEDC_OVF_CNT_CH1_INT_ENA_M (LEDC_OVF_CNT_CH1_INT_ENA_V << LEDC_OVF_CNT_CH1_INT_ENA_S) +#define LEDC_OVF_CNT_CH1_INT_ENA_V 0x00000001 +#define LEDC_OVF_CNT_CH1_INT_ENA_S 13 + +/* LEDC_OVF_CNT_CH2_INT_ENA : R/W; bitpos: [14]; default: 0; + * The interrupt enable bit for the LEDC_OVF_CNT_CH2_INT interrupt. + */ + +#define LEDC_OVF_CNT_CH2_INT_ENA (BIT(14)) +#define LEDC_OVF_CNT_CH2_INT_ENA_M (LEDC_OVF_CNT_CH2_INT_ENA_V << LEDC_OVF_CNT_CH2_INT_ENA_S) +#define LEDC_OVF_CNT_CH2_INT_ENA_V 0x00000001 +#define LEDC_OVF_CNT_CH2_INT_ENA_S 14 + +/* LEDC_OVF_CNT_CH3_INT_ENA : R/W; bitpos: [15]; default: 0; + * The interrupt enable bit for the LEDC_OVF_CNT_CH3_INT interrupt. + */ + +#define LEDC_OVF_CNT_CH3_INT_ENA (BIT(15)) +#define LEDC_OVF_CNT_CH3_INT_ENA_M (LEDC_OVF_CNT_CH3_INT_ENA_V << LEDC_OVF_CNT_CH3_INT_ENA_S) +#define LEDC_OVF_CNT_CH3_INT_ENA_V 0x00000001 +#define LEDC_OVF_CNT_CH3_INT_ENA_S 15 + +/* LEDC_OVF_CNT_CH4_INT_ENA : R/W; bitpos: [16]; default: 0; + * The interrupt enable bit for the LEDC_OVF_CNT_CH4_INT interrupt. + */ + +#define LEDC_OVF_CNT_CH4_INT_ENA (BIT(16)) +#define LEDC_OVF_CNT_CH4_INT_ENA_M (LEDC_OVF_CNT_CH4_INT_ENA_V << LEDC_OVF_CNT_CH4_INT_ENA_S) +#define LEDC_OVF_CNT_CH4_INT_ENA_V 0x00000001 +#define LEDC_OVF_CNT_CH4_INT_ENA_S 16 + +/* LEDC_OVF_CNT_CH5_INT_ENA : R/W; bitpos: [17]; default: 0; + * The interrupt enable bit for the LEDC_OVF_CNT_CH5_INT interrupt. + */ + +#define LEDC_OVF_CNT_CH5_INT_ENA (BIT(17)) +#define LEDC_OVF_CNT_CH5_INT_ENA_M (LEDC_OVF_CNT_CH5_INT_ENA_V << LEDC_OVF_CNT_CH5_INT_ENA_S) +#define LEDC_OVF_CNT_CH5_INT_ENA_V 0x00000001 +#define LEDC_OVF_CNT_CH5_INT_ENA_S 17 + +/* LEDC_OVF_CNT_CH6_INT_ENA : R/W; bitpos: [18]; default: 0; + * The interrupt enable bit for the LEDC_OVF_CNT_CH6_INT interrupt. + */ + +#define LEDC_OVF_CNT_CH6_INT_ENA (BIT(18)) +#define LEDC_OVF_CNT_CH6_INT_ENA_M (LEDC_OVF_CNT_CH6_INT_ENA_V << LEDC_OVF_CNT_CH6_INT_ENA_S) +#define LEDC_OVF_CNT_CH6_INT_ENA_V 0x00000001 +#define LEDC_OVF_CNT_CH6_INT_ENA_S 18 + +/* LEDC_OVF_CNT_CH7_INT_ENA : R/W; bitpos: [19]; default: 0; + * The interrupt enable bit for the LEDC_OVF_CNT_CH7_INT interrupt. + */ + +#define LEDC_OVF_CNT_CH7_INT_ENA (BIT(19)) +#define LEDC_OVF_CNT_CH7_INT_ENA_M (LEDC_OVF_CNT_CH7_INT_ENA_V << LEDC_OVF_CNT_CH7_INT_ENA_S) +#define LEDC_OVF_CNT_CH7_INT_ENA_V 0x00000001 +#define LEDC_OVF_CNT_CH7_INT_ENA_S 19 + +/* LEDC_INT_CLR_REG register + * Interrupt clear bits + */ + +#define LEDC_INT_CLR_REG (DR_REG_LEDC_BASE + 0xcc) + +/* LEDC_TIMER0_OVF_INT_CLR : WO; bitpos: [0]; default: 0; + * Set this bit to clear the LEDC_TIMER0_OVF_INT interrupt. + */ + +#define LEDC_TIMER0_OVF_INT_CLR (BIT(0)) +#define LEDC_TIMER0_OVF_INT_CLR_M (LEDC_TIMER0_OVF_INT_CLR_V << LEDC_TIMER0_OVF_INT_CLR_S) +#define LEDC_TIMER0_OVF_INT_CLR_V 0x00000001 +#define LEDC_TIMER0_OVF_INT_CLR_S 0 + +/* LEDC_TIMER1_OVF_INT_CLR : WO; bitpos: [1]; default: 0; + * Set this bit to clear the LEDC_TIMER1_OVF_INT interrupt. + */ + +#define LEDC_TIMER1_OVF_INT_CLR (BIT(1)) +#define LEDC_TIMER1_OVF_INT_CLR_M (LEDC_TIMER1_OVF_INT_CLR_V << LEDC_TIMER1_OVF_INT_CLR_S) +#define LEDC_TIMER1_OVF_INT_CLR_V 0x00000001 +#define LEDC_TIMER1_OVF_INT_CLR_S 1 + +/* LEDC_TIMER2_OVF_INT_CLR : WO; bitpos: [2]; default: 0; + * Set this bit to clear the LEDC_TIMER2_OVF_INT interrupt. + */ + +#define LEDC_TIMER2_OVF_INT_CLR (BIT(2)) +#define LEDC_TIMER2_OVF_INT_CLR_M (LEDC_TIMER2_OVF_INT_CLR_V << LEDC_TIMER2_OVF_INT_CLR_S) +#define LEDC_TIMER2_OVF_INT_CLR_V 0x00000001 +#define LEDC_TIMER2_OVF_INT_CLR_S 2 + +/* LEDC_TIMER3_OVF_INT_CLR : WO; bitpos: [3]; default: 0; + * Set this bit to clear the LEDC_TIMER3_OVF_INT interrupt. + */ + +#define LEDC_TIMER3_OVF_INT_CLR (BIT(3)) +#define LEDC_TIMER3_OVF_INT_CLR_M (LEDC_TIMER3_OVF_INT_CLR_V << LEDC_TIMER3_OVF_INT_CLR_S) +#define LEDC_TIMER3_OVF_INT_CLR_V 0x00000001 +#define LEDC_TIMER3_OVF_INT_CLR_S 3 + +/* LEDC_DUTY_CHNG_END_CH0_INT_CLR : WO; bitpos: [4]; default: 0; + * Set this bit to clear the LEDC_DUTY_CHNG_END_CH0_INT interrupt. + */ + +#define LEDC_DUTY_CHNG_END_CH0_INT_CLR (BIT(4)) +#define LEDC_DUTY_CHNG_END_CH0_INT_CLR_M (LEDC_DUTY_CHNG_END_CH0_INT_CLR_V << LEDC_DUTY_CHNG_END_CH0_INT_CLR_S) +#define LEDC_DUTY_CHNG_END_CH0_INT_CLR_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH0_INT_CLR_S 4 + +/* LEDC_DUTY_CHNG_END_CH1_INT_CLR : WO; bitpos: [5]; default: 0; + * Set this bit to clear the LEDC_DUTY_CHNG_END_CH1_INT interrupt. + */ + +#define LEDC_DUTY_CHNG_END_CH1_INT_CLR (BIT(5)) +#define LEDC_DUTY_CHNG_END_CH1_INT_CLR_M (LEDC_DUTY_CHNG_END_CH1_INT_CLR_V << LEDC_DUTY_CHNG_END_CH1_INT_CLR_S) +#define LEDC_DUTY_CHNG_END_CH1_INT_CLR_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH1_INT_CLR_S 5 + +/* LEDC_DUTY_CHNG_END_CH2_INT_CLR : WO; bitpos: [6]; default: 0; + * Set this bit to clear the LEDC_DUTY_CHNG_END_CH2_INT interrupt. + */ + +#define LEDC_DUTY_CHNG_END_CH2_INT_CLR (BIT(6)) +#define LEDC_DUTY_CHNG_END_CH2_INT_CLR_M (LEDC_DUTY_CHNG_END_CH2_INT_CLR_V << LEDC_DUTY_CHNG_END_CH2_INT_CLR_S) +#define LEDC_DUTY_CHNG_END_CH2_INT_CLR_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH2_INT_CLR_S 6 + +/* LEDC_DUTY_CHNG_END_CH3_INT_CLR : WO; bitpos: [7]; default: 0; + * Set this bit to clear the LEDC_DUTY_CHNG_END_CH3_INT interrupt. + */ + +#define LEDC_DUTY_CHNG_END_CH3_INT_CLR (BIT(7)) +#define LEDC_DUTY_CHNG_END_CH3_INT_CLR_M (LEDC_DUTY_CHNG_END_CH3_INT_CLR_V << LEDC_DUTY_CHNG_END_CH3_INT_CLR_S) +#define LEDC_DUTY_CHNG_END_CH3_INT_CLR_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH3_INT_CLR_S 7 + +/* LEDC_DUTY_CHNG_END_CH4_INT_CLR : WO; bitpos: [8]; default: 0; + * Set this bit to clear the LEDC_DUTY_CHNG_END_CH4_INT interrupt. + */ + +#define LEDC_DUTY_CHNG_END_CH4_INT_CLR (BIT(8)) +#define LEDC_DUTY_CHNG_END_CH4_INT_CLR_M (LEDC_DUTY_CHNG_END_CH4_INT_CLR_V << LEDC_DUTY_CHNG_END_CH4_INT_CLR_S) +#define LEDC_DUTY_CHNG_END_CH4_INT_CLR_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH4_INT_CLR_S 8 + +/* LEDC_DUTY_CHNG_END_CH5_INT_CLR : WO; bitpos: [9]; default: 0; + * Set this bit to clear the LEDC_DUTY_CHNG_END_CH5_INT interrupt. + */ + +#define LEDC_DUTY_CHNG_END_CH5_INT_CLR (BIT(9)) +#define LEDC_DUTY_CHNG_END_CH5_INT_CLR_M (LEDC_DUTY_CHNG_END_CH5_INT_CLR_V << LEDC_DUTY_CHNG_END_CH5_INT_CLR_S) +#define LEDC_DUTY_CHNG_END_CH5_INT_CLR_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH5_INT_CLR_S 9 + +/* LEDC_DUTY_CHNG_END_CH6_INT_CLR : WO; bitpos: [10]; default: 0; + * Set this bit to clear the LEDC_DUTY_CHNG_END_CH6_INT interrupt. + */ + +#define LEDC_DUTY_CHNG_END_CH6_INT_CLR (BIT(10)) +#define LEDC_DUTY_CHNG_END_CH6_INT_CLR_M (LEDC_DUTY_CHNG_END_CH6_INT_CLR_V << LEDC_DUTY_CHNG_END_CH6_INT_CLR_S) +#define LEDC_DUTY_CHNG_END_CH6_INT_CLR_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH6_INT_CLR_S 10 + +/* LEDC_DUTY_CHNG_END_CH7_INT_CLR : WO; bitpos: [11]; default: 0; + * Set this bit to clear the LEDC_DUTY_CHNG_END_CH7_INT interrupt. + */ + +#define LEDC_DUTY_CHNG_END_CH7_INT_CLR (BIT(11)) +#define LEDC_DUTY_CHNG_END_CH7_INT_CLR_M (LEDC_DUTY_CHNG_END_CH7_INT_CLR_V << LEDC_DUTY_CHNG_END_CH7_INT_CLR_S) +#define LEDC_DUTY_CHNG_END_CH7_INT_CLR_V 0x00000001 +#define LEDC_DUTY_CHNG_END_CH7_INT_CLR_S 11 + +/* LEDC_OVF_CNT_CH0_INT_CLR : WO; bitpos: [12]; default: 0; + * Set this bit to clear the LEDC_OVF_CNT_CH0_INT interrupt. + */ + +#define LEDC_OVF_CNT_CH0_INT_CLR (BIT(12)) +#define LEDC_OVF_CNT_CH0_INT_CLR_M (LEDC_OVF_CNT_CH0_INT_CLR_V << LEDC_OVF_CNT_CH0_INT_CLR_S) +#define LEDC_OVF_CNT_CH0_INT_CLR_V 0x00000001 +#define LEDC_OVF_CNT_CH0_INT_CLR_S 12 + +/* LEDC_OVF_CNT_CH1_INT_CLR : WO; bitpos: [13]; default: 0; + * Set this bit to clear the LEDC_OVF_CNT_CH1_INT interrupt. + */ + +#define LEDC_OVF_CNT_CH1_INT_CLR (BIT(13)) +#define LEDC_OVF_CNT_CH1_INT_CLR_M (LEDC_OVF_CNT_CH1_INT_CLR_V << LEDC_OVF_CNT_CH1_INT_CLR_S) +#define LEDC_OVF_CNT_CH1_INT_CLR_V 0x00000001 +#define LEDC_OVF_CNT_CH1_INT_CLR_S 13 + +/* LEDC_OVF_CNT_CH2_INT_CLR : WO; bitpos: [14]; default: 0; + * Set this bit to clear the LEDC_OVF_CNT_CH2_INT interrupt. + */ + +#define LEDC_OVF_CNT_CH2_INT_CLR (BIT(14)) +#define LEDC_OVF_CNT_CH2_INT_CLR_M (LEDC_OVF_CNT_CH2_INT_CLR_V << LEDC_OVF_CNT_CH2_INT_CLR_S) +#define LEDC_OVF_CNT_CH2_INT_CLR_V 0x00000001 +#define LEDC_OVF_CNT_CH2_INT_CLR_S 14 + +/* LEDC_OVF_CNT_CH3_INT_CLR : WO; bitpos: [15]; default: 0; + * Set this bit to clear the LEDC_OVF_CNT_CH3_INT interrupt. + */ + +#define LEDC_OVF_CNT_CH3_INT_CLR (BIT(15)) +#define LEDC_OVF_CNT_CH3_INT_CLR_M (LEDC_OVF_CNT_CH3_INT_CLR_V << LEDC_OVF_CNT_CH3_INT_CLR_S) +#define LEDC_OVF_CNT_CH3_INT_CLR_V 0x00000001 +#define LEDC_OVF_CNT_CH3_INT_CLR_S 15 + +/* LEDC_OVF_CNT_CH4_INT_CLR : WO; bitpos: [16]; default: 0; + * Set this bit to clear the LEDC_OVF_CNT_CH4_INT interrupt. + */ + +#define LEDC_OVF_CNT_CH4_INT_CLR (BIT(16)) +#define LEDC_OVF_CNT_CH4_INT_CLR_M (LEDC_OVF_CNT_CH4_INT_CLR_V << LEDC_OVF_CNT_CH4_INT_CLR_S) +#define LEDC_OVF_CNT_CH4_INT_CLR_V 0x00000001 +#define LEDC_OVF_CNT_CH4_INT_CLR_S 16 + +/* LEDC_OVF_CNT_CH5_INT_CLR : WO; bitpos: [17]; default: 0; + * Set this bit to clear the LEDC_OVF_CNT_CH5_INT interrupt. + */ + +#define LEDC_OVF_CNT_CH5_INT_CLR (BIT(17)) +#define LEDC_OVF_CNT_CH5_INT_CLR_M (LEDC_OVF_CNT_CH5_INT_CLR_V << LEDC_OVF_CNT_CH5_INT_CLR_S) +#define LEDC_OVF_CNT_CH5_INT_CLR_V 0x00000001 +#define LEDC_OVF_CNT_CH5_INT_CLR_S 17 + +/* LEDC_OVF_CNT_CH6_INT_CLR : WO; bitpos: [18]; default: 0; + * Set this bit to clear the LEDC_OVF_CNT_CH6_INT interrupt. + */ + +#define LEDC_OVF_CNT_CH6_INT_CLR (BIT(18)) +#define LEDC_OVF_CNT_CH6_INT_CLR_M (LEDC_OVF_CNT_CH6_INT_CLR_V << LEDC_OVF_CNT_CH6_INT_CLR_S) +#define LEDC_OVF_CNT_CH6_INT_CLR_V 0x00000001 +#define LEDC_OVF_CNT_CH6_INT_CLR_S 18 + +/* LEDC_OVF_CNT_CH7_INT_CLR : WO; bitpos: [19]; default: 0; + * Set this bit to clear the LEDC_OVF_CNT_CH7_INT interrupt. + */ + +#define LEDC_OVF_CNT_CH7_INT_CLR (BIT(19)) +#define LEDC_OVF_CNT_CH7_INT_CLR_M (LEDC_OVF_CNT_CH7_INT_CLR_V << LEDC_OVF_CNT_CH7_INT_CLR_S) +#define LEDC_OVF_CNT_CH7_INT_CLR_V 0x00000001 +#define LEDC_OVF_CNT_CH7_INT_CLR_S 19 + +/* LEDC_CONF_REG register + * Global ledc configuration register + */ + +#define LEDC_CONF_REG (DR_REG_LEDC_BASE + 0xd0) + +/* LEDC_APB_CLK_SEL : R/W; bitpos: [1:0]; default: 0; + * This bit is used to select clock source for the 4 timers . + * + * 2'd1: APB_CLK 2'd2: RTC8M_CLK 2'd3: XTAL_CLK + */ + +#define LEDC_APB_CLK_SEL 0x00000003 +#define LEDC_APB_CLK_SEL_M (LEDC_APB_CLK_SEL_V << LEDC_APB_CLK_SEL_S) +#define LEDC_APB_CLK_SEL_V 0x00000003 +#define LEDC_APB_CLK_SEL_S 0 + +/* LEDC_CLK_EN : R/W; bitpos: [31]; default: 0; + * This bit is used to control clock. + * + * 1'b1: Force clock on for register. 1'h0: Support clock only when + * application writes registers. + */ + +#define LEDC_CLK_EN (BIT(31)) +#define LEDC_CLK_EN_M (LEDC_CLK_EN_V << LEDC_CLK_EN_S) +#define LEDC_CLK_EN_V 0x00000001 +#define LEDC_CLK_EN_S 31 + +/* LEDC_DATE_REG register + * Version control register + */ + +#define LEDC_DATE_REG (DR_REG_LEDC_BASE + 0xfc) + +/* LEDC_DATE : R/W; bitpos: [31:0]; default: 419898881; + * This is the version control register. + */ + +#define LEDC_DATE 0xFFFFFFFF +#define LEDC_DATE_M (LEDC_DATE_V << LEDC_DATE_S) +#define LEDC_DATE_V 0xFFFFFFFF +#define LEDC_DATE_S 0 + +#endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_LEDC_H */ diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/configs/pwm/defconfig b/boards/risc-v/esp32c3/esp32c3-devkit/configs/pwm/defconfig new file mode 100644 index 00000000000..f17d773768f --- /dev/null +++ b/boards/risc-v/esp32c3/esp32c3-devkit/configs/pwm/defconfig @@ -0,0 +1,47 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_NSH_ARGCAT is not set +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +# CONFIG_NSH_CMDPARMS is not set +CONFIG_ARCH="risc-v" +CONFIG_ARCH_BOARD="esp32c3-devkit" +CONFIG_ARCH_BOARD_ESP32C3_DEVKIT=y +CONFIG_ARCH_CHIP="esp32c3" +CONFIG_ARCH_CHIP_ESP32C3=y +CONFIG_ARCH_CHIP_ESP32C3WROOM02=y +CONFIG_ARCH_INTERRUPTSTACK=1536 +CONFIG_ARCH_RISCV=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARD_LOOPSPERMSEC=15000 +CONFIG_BUILTIN=y +CONFIG_DEV_ZERO=y +CONFIG_ESP32C3_LEDC=y +CONFIG_ESP32C3_LEDC_TIM0=y +CONFIG_EXAMPLES_PWM=y +CONFIG_FS_PROCFS=y +CONFIG_IDLETHREAD_STACKSIZE=2048 +CONFIG_INTELHEX_BINARY=y +CONFIG_LIBC_PERROR_STDOUT=y +CONFIG_LIBC_STRERROR=y +CONFIG_MAX_TASKS=8 +CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_READLINE=y +CONFIG_NSH_STRERROR=y +CONFIG_PREALLOC_TIMERS=0 +CONFIG_RAW_BINARY=y +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_WAITPID=y +CONFIG_START_DAY=29 +CONFIG_START_MONTH=11 +CONFIG_START_YEAR=2019 +CONFIG_SYSTEM_NSH=y +CONFIG_UART0_SERIAL_CONSOLE=y +CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/src/Makefile b/boards/risc-v/esp32c3/esp32c3-devkit/src/Makefile index f91d70996d3..de96dd48937 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/src/Makefile +++ b/boards/risc-v/esp32c3/esp32c3-devkit/src/Makefile @@ -66,6 +66,10 @@ ifeq ($(CONFIG_ONESHOT),y) CSRCS += esp32c3_oneshot.c endif +ifeq ($(CONFIG_PWM),y) +CSRCS += esp32c3_ledc.c +endif + SCRIPTIN = $(SCRIPTDIR)$(DELIM)esp32c3.template.ld SCRIPTOUT = $(SCRIPTDIR)$(DELIM)esp32c3_out.ld diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3-devkit.h b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3-devkit.h index c55776badf1..86da6bc285c 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3-devkit.h +++ b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3-devkit.h @@ -181,5 +181,17 @@ int board_bmp180_initialize(int devno, int busno); int esp32c3_spiflash_init(void); #endif +/**************************************************************************** + * Name: esp32c3_ledc_setup + * + * Description: + * Initialize LEDC PWM and register the PWM device. + * + ****************************************************************************/ + +#ifdef CONFIG_ESP32C3_LEDC +int esp32c3_pwm_setup(void); +#endif + #endif /* __ASSEMBLY__ */ #endif /* __BOARDS_RISCV_ESP32C3_ESP32C3_DEVKIT_SRC_ESP32C3_DEVKIT_H */ diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_bringup.c b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_bringup.c index e914603dbd8..b913de6c737 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_bringup.c +++ b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_bringup.c @@ -283,6 +283,14 @@ int esp32c3_bringup(void) #endif +#ifdef CONFIG_ESP32C3_LEDC + ret = esp32c3_pwm_setup(); + if (ret < 0) + { + syslog(LOG_ERR, "ERROR: esp32c3_pwm_setup() failed: %d\n", ret); + } +#endif /* CONFIG_ESP32C3_LEDC */ + /* If we got here then perhaps not all initialization was successful, but * at least enough succeeded to bring-up NSH with perhaps reduced * capabilities. diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_ledc.c b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_ledc.c new file mode 100644 index 00000000000..5771aeb85f6 --- /dev/null +++ b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_ledc.c @@ -0,0 +1,116 @@ +/**************************************************************************** + * boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_ledc.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include + +#include +#include + +#include + +#include "chip.h" +#include "esp32c3_ledc.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: esp32c3_pwm_setup + * + * Description: + * Initialize LEDC PWM and register the PWM device. + * + ****************************************************************************/ + +int esp32c3_pwm_setup(void) +{ + int ret; + struct pwm_lowerhalf_s *pwm; + +#ifdef CONFIG_ESP32C3_LEDC_TIM0 + pwm = esp32c3_ledc_init(0); + if (!pwm) + { + syslog(LOG_ERR, "ERROR: Failed to get the LEDC PWM 0 lower half\n"); + return -ENODEV; + } + + /* Register the PWM driver at "/dev/pwm0" */ + + ret = pwm_register("/dev/pwm0", pwm); + if (ret < 0) + { + syslog(LOG_ERR, "ERROR: pwm_register failed: %d\n", ret); + return ret; + } +#endif + +#ifdef CONFIG_ESP32C3_LEDC_TIM1 + pwm = esp32c3_ledc_init(1); + if (!pwm) + { + syslog(LOG_ERR, "ERROR: Failed to get the LEDC PWM 1 lower half\n"); + return -ENODEV; + } + + /* Register the PWM driver at "/dev/pwm1" */ + + ret = pwm_register("/dev/pwm1", pwm); + if (ret < 0) + { + syslog(LOG_ERR, "ERROR: pwm_register failed: %d\n", ret); + return ret; + } +#endif + +#ifdef CONFIG_ESP32C3_LEDC_TIM2 + pwm = esp32c3_ledc_init(2); + if (!pwm) + { + syslog(LOG_ERR, "ERROR: Failed to get the LEDC PWM 2 lower half\n"); + return -ENODEV; + } + + /* Register the PWM driver at "/dev/pwm2" */ + + ret = pwm_register("/dev/pwm2", pwm); + if (ret < 0) + { + syslog(LOG_ERR, "ERROR: pwm_register failed: %d\n", ret); + return ret; + } +#endif + + return OK; +} + From ff567124d3c27774c55288fa206d0ee7ac0f516e Mon Sep 17 00:00:00 2001 From: Jiuzhu Dong Date: Thu, 22 Apr 2021 22:36:01 +0800 Subject: [PATCH 114/739] driver/syslog: add config SYSLOG_RPMSG_SERVER_NAME to N/A specified the name of remote proc(rpmsg server) Change-Id: Ie270d651071e87a40a80ab489597ae18db9814f0 Signed-off-by: Jiuzhu Dong --- arch/sim/src/sim/up_head.c | 2 +- boards/sim/sim/sim/configs/rpproxy/defconfig | 1 + drivers/syslog/Kconfig | 7 +++++++ drivers/syslog/syslog_rpmsg.c | 11 +++++------ include/nuttx/syslog/syslog_rpmsg.h | 3 +-- 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/arch/sim/src/sim/up_head.c b/arch/sim/src/sim/up_head.c index 2b6faecb6c3..6868c9af681 100644 --- a/arch/sim/src/sim/up_head.c +++ b/arch/sim/src/sim/up_head.c @@ -63,7 +63,7 @@ static char g_logbuffer[4096]; int main(int argc, char **argv, char **envp) { #ifdef CONFIG_SYSLOG_RPMSG - syslog_rpmsg_init_early("server", g_logbuffer, sizeof(g_logbuffer)); + syslog_rpmsg_init_early(g_logbuffer, sizeof(g_logbuffer)); #endif /* Start NuttX */ diff --git a/boards/sim/sim/sim/configs/rpproxy/defconfig b/boards/sim/sim/sim/configs/rpproxy/defconfig index ec2cae3732f..cb151f9f83c 100644 --- a/boards/sim/sim/sim/configs/rpproxy/defconfig +++ b/boards/sim/sim/sim/configs/rpproxy/defconfig @@ -59,6 +59,7 @@ CONFIG_SIM_M32=y CONFIG_SYSLOG_PREFIX=y CONFIG_SYSLOG_PREFIX_STRING="proxy: " CONFIG_SYSLOG_RPMSG=y +CONFIG_SYSLOG_RPMSG_SERVER_NAME="server" CONFIG_SYSLOG_TIMESTAMP=y CONFIG_SYSTEM_CLE=y CONFIG_SYSTEM_NSH=y diff --git a/drivers/syslog/Kconfig b/drivers/syslog/Kconfig index 2d3d1295986..263e05671b2 100644 --- a/drivers/syslog/Kconfig +++ b/drivers/syslog/Kconfig @@ -215,6 +215,13 @@ config SYSLOG_RPMSG ---help--- Use the rpmsg as a SYSLOG output device, send message to remote proc. +config SYSLOG_RPMSG_SERVER_NAME + string "The name of Syslog Rpmsg Server" + depends on SYSLOG_RPMSG + ---help--- + The proc name of rpmsg server. Client sends message to + specified name of remote proc. + config SYSLOG_DEFAULT bool "Default SYSLOG device" ---help--- diff --git a/drivers/syslog/syslog_rpmsg.c b/drivers/syslog/syslog_rpmsg.c index 4438e653b3f..168ea1bbed3 100644 --- a/drivers/syslog/syslog_rpmsg.c +++ b/drivers/syslog/syslog_rpmsg.c @@ -62,7 +62,6 @@ struct syslog_rpmsg_s struct work_s work; /* Used for deferred callback work */ struct rpmsg_endpoint ept; - FAR const char *cpuname; bool suspend; bool transfer; /* The transfer flag */ ssize_t trans_len; /* The data length when transfer */ @@ -210,7 +209,8 @@ static void syslog_rpmsg_device_created(FAR struct rpmsg_device *rdev, FAR struct syslog_rpmsg_s *priv = priv_; int ret; - if (priv->buffer && strcmp(priv->cpuname, rpmsg_get_cpuname(rdev)) == 0) + if (priv->buffer && strcmp(CONFIG_SYSLOG_RPMSG_SERVER_NAME, + rpmsg_get_cpuname(rdev)) == 0) { priv->ept.priv = priv; @@ -230,7 +230,8 @@ static void syslog_rpmsg_device_destroy(FAR struct rpmsg_device *rdev, { FAR struct syslog_rpmsg_s *priv = priv_; - if (priv->buffer && strcmp(priv->cpuname, rpmsg_get_cpuname(rdev)) == 0) + if (priv->buffer && strcmp(CONFIG_SYSLOG_RPMSG_SERVER_NAME, + rpmsg_get_cpuname(rdev)) == 0) { rpmsg_destroy_ept(&priv->ept); } @@ -343,15 +344,13 @@ ssize_t syslog_rpmsg_write(FAR struct syslog_channel_s *channel, return buflen; } -void syslog_rpmsg_init_early(FAR const char *cpuname, FAR void *buffer, - size_t size) +void syslog_rpmsg_init_early(FAR void *buffer, size_t size) { FAR struct syslog_rpmsg_s *priv = &g_syslog_rpmsg; char prev, cur; size_t i; size_t j; - priv->cpuname = cpuname; priv->buffer = buffer; priv->size = size; diff --git a/include/nuttx/syslog/syslog_rpmsg.h b/include/nuttx/syslog/syslog_rpmsg.h index e39307c6781..ef16a74ccac 100644 --- a/include/nuttx/syslog/syslog_rpmsg.h +++ b/include/nuttx/syslog/syslog_rpmsg.h @@ -40,8 +40,7 @@ extern "C" #endif #ifdef CONFIG_SYSLOG_RPMSG -void syslog_rpmsg_init_early(FAR const char *cpu_name, FAR void *buffer, - size_t size); +void syslog_rpmsg_init_early(FAR void *buffer, size_t size); int syslog_rpmsg_init(void); int syslog_rpmsg_putc(FAR struct syslog_channel_s *channel, int ch); From f2e268d1bcb8612eb3f00cb55b9624aa61dbc3bd Mon Sep 17 00:00:00 2001 From: Jiuzhu Dong Date: Thu, 6 May 2021 21:55:43 +0800 Subject: [PATCH 115/739] include/termios: left shift of 1 by 31 places cannot be represented in type 'int' N/A cu_main.c:172:22: runtime error: left shift of 1 by 31 places cannot be represented in type 'int' by asan Change-Id: I224345bddb11523db0c4a91c16617a3200fad034 Signed-off-by: Jiuzhu Dong --- include/termios.h | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/include/termios.h b/include/termios.h index cecfd2cf59f..f2fb09075c4 100644 --- a/include/termios.h +++ b/include/termios.h @@ -85,19 +85,19 @@ /* Control Modes (c_cflag in the termios structure) */ -#define CSIZE (3 << 4) /* Bits 4-5: Character size: */ -# define CS5 (0 << 4) /* 5 bits */ -# define CS6 (1 << 4) /* 6 bits */ -# define CS7 (2 << 4) /* 7 bits */ -# define CS8 (3 << 4) /* 8 bits */ -#define CSTOPB (1 << 6) /* Bit 6: Send two stop bits, else one */ -#define CREAD (1 << 7) /* Bit 7: Enable receiver */ -#define PARENB (1 << 8) /* Bit 8: Parity enable */ -#define PARODD (1 << 9) /* Bit 9: Odd parity, else even */ -#define HUPCL (1 << 10) /* Bit 10: Hang up on last close */ -#define CLOCAL (1 << 11) /* Bit 11: Ignore modem status lines */ -#define CCTS_OFLOW (1 << 29)/* Bit 29: CTS flow control of output */ -#define CRTS_IFLOW (1 << 31)/* Bit 31: RTS flow control of input */ +#define CSIZE (3 << 4) /* Bits 4-5: Character size: */ +# define CS5 (0 << 4) /* 5 bits */ +# define CS6 (1 << 4) /* 6 bits */ +# define CS7 (2 << 4) /* 7 bits */ +# define CS8 (3 << 4) /* 8 bits */ +#define CSTOPB (1 << 6) /* Bit 6: Send two stop bits, else one */ +#define CREAD (1 << 7) /* Bit 7: Enable receiver */ +#define PARENB (1 << 8) /* Bit 8: Parity enable */ +#define PARODD (1 << 9) /* Bit 9: Odd parity, else even */ +#define HUPCL (1 << 10) /* Bit 10: Hang up on last close */ +#define CLOCAL (1 << 11) /* Bit 11: Ignore modem status lines */ +#define CCTS_OFLOW (1 << 29) /* Bit 29: CTS flow control of output */ +#define CRTS_IFLOW (1u << 31) /* Bit 31: RTS flow control of input */ #define CRTSCTS (CCTS_OFLOW | CRTS_IFLOW) /* Local Modes (c_lflag in the termios structure) */ From 018cf266059e30472b741d645c6250ac3a09dcb8 Mon Sep 17 00:00:00 2001 From: Jiuzhu Dong Date: Fri, 9 Apr 2021 11:23:15 +0800 Subject: [PATCH 116/739] lirc: fix bug about lirc_raw_event N/A Change-Id: If00d0a7e4e4f9a0d9119b6a170cffd993f23f71a Signed-off-by: Jiuzhu Dong --- drivers/rc/lirc_dev.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/rc/lirc_dev.c b/drivers/rc/lirc_dev.c index 9d169ed4e21..a7ce5cf91d0 100644 --- a/drivers/rc/lirc_dev.c +++ b/drivers/rc/lirc_dev.c @@ -944,9 +944,10 @@ void lirc_raw_event(FAR struct lirc_lowerhalf_s *lower, } } - leave_critical_section(flags); upper->gap = false; } + + leave_critical_section(flags); } sample = ev.pulse ? LIRC_PULSE(ev.duration) : LIRC_SPACE(ev.duration); From f082893b9a82670beb46064a4f72a51789c6429c Mon Sep 17 00:00:00 2001 From: Jiuzhu Dong Date: Sat, 24 Apr 2021 14:18:21 +0800 Subject: [PATCH 117/739] driver/rtc: add config RTC_RPMSG_SERVER_NAME to specified the name of remote proc(rpmsg server) Change-Id: I0086bb43727a2bbb5e68f88907b5e4608182ef9c Signed-off-by: Jiuzhu Dong --- arch/sim/src/sim/up_rptun.c | 2 +- boards/sim/sim/sim/configs/rpproxy/defconfig | 1 + drivers/timers/Kconfig | 7 +++++++ drivers/timers/rpmsg_rtc.c | 12 +++++------- include/nuttx/timers/rpmsg_rtc.h | 3 +-- 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/arch/sim/src/sim/up_rptun.c b/arch/sim/src/sim/up_rptun.c index d3f78826fd0..d40070a4488 100644 --- a/arch/sim/src/sim/up_rptun.c +++ b/arch/sim/src/sim/up_rptun.c @@ -240,7 +240,7 @@ int up_rptun_init(void) #endif #if CONFIG_SIM_RPTUN_MASTER == 0 - up_rtc_set_lowerhalf(rpmsg_rtc_initialize("server", 0)); + up_rtc_set_lowerhalf(rpmsg_rtc_initialize(0)); #endif #ifdef CONFIG_FS_HOSTFS_RPMSG diff --git a/boards/sim/sim/sim/configs/rpproxy/defconfig b/boards/sim/sim/sim/configs/rpproxy/defconfig index cb151f9f83c..42f3facdad8 100644 --- a/boards/sim/sim/sim/configs/rpproxy/defconfig +++ b/boards/sim/sim/sim/configs/rpproxy/defconfig @@ -50,6 +50,7 @@ CONFIG_RTC_ARCH=y CONFIG_RTC_DRIVER=y CONFIG_RTC_EXTERNAL=y CONFIG_RTC_RPMSG=y +CONFIG_RTC_RPMSG_SERVER_NAME="server" CONFIG_SCHED_CHILD_STATUS=y CONFIG_SCHED_HAVE_PARENT=y CONFIG_SCHED_HPWORK=y diff --git a/drivers/timers/Kconfig b/drivers/timers/Kconfig index 686143a6525..fb1ddf26cdd 100644 --- a/drivers/timers/Kconfig +++ b/drivers/timers/Kconfig @@ -297,6 +297,13 @@ config RTC_RPMSG depends on OPENAMP select ARCH_HAVE_RTC_SUBSECONDS +config RTC_RPMSG_SERVER_NAME + string "The name of RTC Rpmsg Server" + depends on RTC_RPMSG + ---help--- + The proc name of rtc server. Client requests time from + specified name of remote proc. + endif # RTC menuconfig WATCHDOG diff --git a/drivers/timers/rpmsg_rtc.c b/drivers/timers/rpmsg_rtc.c index 2eef9b52077..bb38e10ade5 100644 --- a/drivers/timers/rpmsg_rtc.c +++ b/drivers/timers/rpmsg_rtc.c @@ -107,7 +107,6 @@ struct rpmsg_rtc_lowerhalf_s */ struct rpmsg_endpoint ept; - FAR const char *cpuname; struct work_s syncwork; #ifdef CONFIG_RTC_ALARM @@ -229,7 +228,8 @@ static void rpmsg_rtc_device_created(FAR struct rpmsg_device *rdev, { FAR struct rpmsg_rtc_lowerhalf_s *lower = priv; - if (strcmp(lower->cpuname, rpmsg_get_cpuname(rdev)) == 0) + if (strcmp(CONFIG_RTC_RPMSG_SERVER_NAME, + rpmsg_get_cpuname(rdev)) == 0) { lower->ept.priv = lower; @@ -244,7 +244,8 @@ static void rpmsg_rtc_device_destroy(FAR struct rpmsg_device *rdev, { FAR struct rpmsg_rtc_lowerhalf_s *lower = priv; - if (strcmp(lower->cpuname, rpmsg_get_cpuname(rdev)) == 0) + if (strcmp(CONFIG_RTC_RPMSG_SERVER_NAME, + rpmsg_get_cpuname(rdev)) == 0) { rpmsg_destroy_ept(&lower->ept); } @@ -681,7 +682,6 @@ static void rpmsg_rtc_server_ns_bind(FAR struct rpmsg_device *rdev, * Take remote core RTC as external RTC hardware through rpmsg. * * Input Parameters: - * cpuname - current cpu name * minor - device minor number * * Returned Value: @@ -690,8 +690,7 @@ static void rpmsg_rtc_server_ns_bind(FAR struct rpmsg_device *rdev, * ****************************************************************************/ -FAR struct rtc_lowerhalf_s *rpmsg_rtc_initialize(FAR const char *cpuname, - int minor) +FAR struct rtc_lowerhalf_s *rpmsg_rtc_initialize(int minor) { FAR struct rpmsg_rtc_lowerhalf_s *lower; @@ -699,7 +698,6 @@ FAR struct rtc_lowerhalf_s *rpmsg_rtc_initialize(FAR const char *cpuname, if (lower) { lower->ops = &g_rpmsg_rtc_ops; - lower->cpuname = cpuname; rpmsg_register_callback(lower, rpmsg_rtc_device_created, diff --git a/include/nuttx/timers/rpmsg_rtc.h b/include/nuttx/timers/rpmsg_rtc.h index b0b2928c820..764904fe3aa 100644 --- a/include/nuttx/timers/rpmsg_rtc.h +++ b/include/nuttx/timers/rpmsg_rtc.h @@ -42,8 +42,7 @@ extern "C" #ifdef CONFIG_RTC_RPMSG -FAR struct rtc_lowerhalf_s *rpmsg_rtc_initialize(FAR const char *cpu_name, - int minor); +FAR struct rtc_lowerhalf_s *rpmsg_rtc_initialize(int minor); FAR struct rtc_lowerhalf_s *rpmsg_rtc_server_initialize( FAR struct rtc_lowerhalf_s *lower); From 73cc1f888477e39b62c6d42fe52c6f52d40074b2 Mon Sep 17 00:00:00 2001 From: Jiuzhu Dong Date: Fri, 7 May 2021 11:28:35 +0800 Subject: [PATCH 118/739] driver/rtc: add config CONFIG_RTC_RPMSG_SERVER to N/A select rtc rpmsg role. Change-Id: I7f9053b070593573caa5d988c6a2e13593da6bc5 Signed-off-by: Jiuzhu Dong --- arch/sim/src/sim/up_rptun.c | 2 +- arch/sim/src/sim/up_rtc.c | 2 +- boards/sim/sim/sim/configs/rpserver/defconfig | 1 + drivers/timers/Kconfig | 4 ++++ drivers/timers/rpmsg_rtc.c | 19 +++++++++++++++---- include/nuttx/timers/rpmsg_rtc.h | 6 +++--- 6 files changed, 25 insertions(+), 9 deletions(-) diff --git a/arch/sim/src/sim/up_rptun.c b/arch/sim/src/sim/up_rptun.c index d40070a4488..c32d963bb7c 100644 --- a/arch/sim/src/sim/up_rptun.c +++ b/arch/sim/src/sim/up_rptun.c @@ -239,7 +239,7 @@ int up_rptun_init(void) syslog_rpmsg_server_init(); #endif -#if CONFIG_SIM_RPTUN_MASTER == 0 +#ifndef CONFIG_RTC_RPMSG_SERVER up_rtc_set_lowerhalf(rpmsg_rtc_initialize(0)); #endif diff --git a/arch/sim/src/sim/up_rtc.c b/arch/sim/src/sim/up_rtc.c index efcb07cb544..628ae82b56a 100644 --- a/arch/sim/src/sim/up_rtc.c +++ b/arch/sim/src/sim/up_rtc.c @@ -123,7 +123,7 @@ static bool sim_rtc_havesettime(FAR struct rtc_lowerhalf_s *lower) int up_rtc_initialize(void) { -#ifdef CONFIG_SIM_RPTUN_MASTER +#ifdef CONFIG_RTC_RPMSG_SERVER up_rtc_set_lowerhalf(rpmsg_rtc_server_initialize(&g_sim_rtc)); #else up_rtc_set_lowerhalf(&g_sim_rtc); diff --git a/boards/sim/sim/sim/configs/rpserver/defconfig b/boards/sim/sim/sim/configs/rpserver/defconfig index 61c9281ec25..a903087ab0b 100644 --- a/boards/sim/sim/sim/configs/rpserver/defconfig +++ b/boards/sim/sim/sim/configs/rpserver/defconfig @@ -57,6 +57,7 @@ CONFIG_RTC=y CONFIG_RTC_ARCH=y CONFIG_RTC_DRIVER=y CONFIG_RTC_RPMSG=y +CONFIG_RTC_RPMSG_SERVER=y CONFIG_SCHED_CHILD_STATUS=y CONFIG_SCHED_HAVE_PARENT=y CONFIG_SCHED_HPWORK=y diff --git a/drivers/timers/Kconfig b/drivers/timers/Kconfig index fb1ddf26cdd..fc8cb42ebcb 100644 --- a/drivers/timers/Kconfig +++ b/drivers/timers/Kconfig @@ -297,6 +297,10 @@ config RTC_RPMSG depends on OPENAMP select ARCH_HAVE_RTC_SUBSECONDS +config RTC_RPMSG_SERVER + bool "The RTC Rpmsg Role" + depends on OPENAMP + config RTC_RPMSG_SERVER_NAME string "The name of RTC Rpmsg Server" depends on RTC_RPMSG diff --git a/drivers/timers/rpmsg_rtc.c b/drivers/timers/rpmsg_rtc.c index bb38e10ade5..f0b3542399b 100644 --- a/drivers/timers/rpmsg_rtc.c +++ b/drivers/timers/rpmsg_rtc.c @@ -84,6 +84,7 @@ begin_packed_struct struct rpmsg_rtc_alarm_cancel_s #define rpmsg_rtc_alarm_fire_s rpmsg_rtc_alarm_cancel_s +#ifndef CONFIG_RTC_RPMSG_SERVER struct rpmsg_rtc_cookie_s { FAR struct rpmsg_rtc_header_s *msg; @@ -113,7 +114,7 @@ struct rpmsg_rtc_lowerhalf_s struct lower_setalarm_s alarminfo[CONFIG_RTC_NALARMS]; #endif }; - +#else struct rpmsg_rtc_server_s { FAR struct rtc_ops_s *ops; @@ -127,11 +128,13 @@ struct rpmsg_rtc_session_s struct list_node node; struct rpmsg_endpoint ept; }; +#endif /**************************************************************************** * Private Function Prototypes ****************************************************************************/ +#ifndef CONFIG_RTC_RPMSG_SERVER static void rpmsg_rtc_device_created(FAR struct rpmsg_device *rdev, FAR void *priv); static void rpmsg_rtc_device_destroy(FAR struct rpmsg_device *rdev, @@ -159,7 +162,7 @@ static int rpmsg_rtc_cancelalarm(FAR struct rtc_lowerhalf_s *lower, static int rpmsg_rtc_rdalarm(FAR struct rtc_lowerhalf_s *lower_, FAR struct lower_rdalarm_s *alarminfo); #endif - +#else static int rpmsg_rtc_server_rdtime(FAR struct rtc_lowerhalf_s *lower, FAR struct rtc_time *rtctime); static int rpmsg_rtc_server_settime(FAR struct rtc_lowerhalf_s *lower, @@ -184,11 +187,13 @@ static int rpmsg_rtc_server_setperiodic(FAR struct rtc_lowerhalf_s *lower, static int rpmsg_rtc_server_cancelperiodic (FAR struct rtc_lowerhalf_s *lower, int alarmid); #endif +#endif /**************************************************************************** * Private Data ****************************************************************************/ +#ifndef CONFIG_RTC_RPMSG_SERVER static const struct rtc_ops_s g_rpmsg_rtc_ops = { .rdtime = rpmsg_rtc_rdtime, @@ -201,7 +206,7 @@ static const struct rtc_ops_s g_rpmsg_rtc_ops = .rdalarm = rpmsg_rtc_rdalarm, #endif }; - +#else static struct rtc_ops_s g_rpmsg_rtc_server_ops = { .rdtime = rpmsg_rtc_server_rdtime, @@ -218,11 +223,13 @@ static struct rtc_ops_s g_rpmsg_rtc_server_ops = .cancelperiodic = rpmsg_rtc_server_cancelperiodic, #endif }; +#endif /**************************************************************************** * Private Functions ****************************************************************************/ +#ifndef CONFIG_RTC_RPMSG_SERVER static void rpmsg_rtc_device_created(FAR struct rpmsg_device *rdev, FAR void *priv) { @@ -442,7 +449,7 @@ static int rpmsg_rtc_rdalarm(FAR struct rtc_lowerhalf_s *lower_, return 0; } #endif - +#else static int rpmsg_rtc_server_rdtime(FAR struct rtc_lowerhalf_s *lower, FAR struct rtc_time *rtctime) { @@ -673,6 +680,7 @@ static void rpmsg_rtc_server_ns_bind(FAR struct rpmsg_device *rdev, list_add_tail(&server->list, &session->node); nxsem_post(&server->exclsem); } +#endif /**************************************************************************** * Name: rpmsg_rtc_initialize @@ -690,6 +698,7 @@ static void rpmsg_rtc_server_ns_bind(FAR struct rpmsg_device *rdev, * ****************************************************************************/ +#ifndef CONFIG_RTC_RPMSG_SERVER FAR struct rtc_lowerhalf_s *rpmsg_rtc_initialize(int minor) { FAR struct rpmsg_rtc_lowerhalf_s *lower; @@ -710,6 +719,7 @@ FAR struct rtc_lowerhalf_s *rpmsg_rtc_initialize(int minor) return (FAR struct rtc_lowerhalf_s *)lower; } +#else /**************************************************************************** * Name: rpmsg_rtc_server_initialize * @@ -746,3 +756,4 @@ FAR struct rtc_lowerhalf_s *rpmsg_rtc_server_initialize( return (FAR struct rtc_lowerhalf_s *)server; } +#endif diff --git a/include/nuttx/timers/rpmsg_rtc.h b/include/nuttx/timers/rpmsg_rtc.h index 764904fe3aa..813cd04912d 100644 --- a/include/nuttx/timers/rpmsg_rtc.h +++ b/include/nuttx/timers/rpmsg_rtc.h @@ -41,12 +41,12 @@ extern "C" #endif #ifdef CONFIG_RTC_RPMSG - +#ifndef CONFIG_RTC_RPMSG_SERVER FAR struct rtc_lowerhalf_s *rpmsg_rtc_initialize(int minor); - +#else FAR struct rtc_lowerhalf_s *rpmsg_rtc_server_initialize( FAR struct rtc_lowerhalf_s *lower); - +#endif /* CONFIG_RTC_RPMSG_SERVER */ #endif /* CONFIG_RTC_RPMSG */ #undef EXTERN From 99a9d75cdd3245ed13697bf9bfa4aa6079dd8c51 Mon Sep 17 00:00:00 2001 From: Anthony Merlino Date: Mon, 12 Apr 2021 19:17:26 -0400 Subject: [PATCH 119/739] stm32f7: Remove references to BOARD_ENABLE_USBOTG_HSULPI. Prefer Kconfig option instead. --- arch/arm/src/stm32f7/stm32f72xx73xx_rcc.c | 4 +++- arch/arm/src/stm32f7/stm32f74xx75xx_rcc.c | 5 +++-- arch/arm/src/stm32f7/stm32f76xx77xx_rcc.c | 4 +++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/arch/arm/src/stm32f7/stm32f72xx73xx_rcc.c b/arch/arm/src/stm32f7/stm32f72xx73xx_rcc.c index d724d4f25bf..589488ee78e 100644 --- a/arch/arm/src/stm32f7/stm32f72xx73xx_rcc.c +++ b/arch/arm/src/stm32f7/stm32f72xx73xx_rcc.c @@ -211,7 +211,9 @@ static inline void rcc_enableahb1(void) #endif #ifdef CONFIG_STM32F7_OTGFSHS -#if defined(CONFIG_STM32F7_INTERNAL_ULPI) || defined(CONFIG_STM32F7_EXTERNAL_ULPI) +# if defined(CONFIG_STM32F7_INTERNAL_ULPI) || + defined(CONFIG_STM32F7_EXTERNAL_ULPI) + /* Enable clocking for USB OTG HS and external PHY */ regval |= (RCC_AHB1ENR_OTGHSEN | RCC_AHB1ENR_OTGHSULPIEN); diff --git a/arch/arm/src/stm32f7/stm32f74xx75xx_rcc.c b/arch/arm/src/stm32f7/stm32f74xx75xx_rcc.c index 86438011124..e288291d888 100644 --- a/arch/arm/src/stm32f7/stm32f74xx75xx_rcc.c +++ b/arch/arm/src/stm32f7/stm32f74xx75xx_rcc.c @@ -215,12 +215,13 @@ static inline void rcc_enableahb1(void) #endif #ifdef CONFIG_STM32F7_OTGFSHS - #if defined(CONFIG_STM32F7_INTERNAL_ULPI) || defined(CONFIG_STM32F7_EXTERNAL_ULPI) +# if defined(CONFIG_STM32F7_INTERNAL_ULPI) || \ + defined(CONFIG_STM32F7_EXTERNAL_ULPI) + /* Enable clocking for USB OTG HS and external PHY */ regval |= (RCC_AHB1ENR_OTGHSEN | RCC_AHB1ENR_OTGHSULPIEN); #else - /* Enable only clocking for USB OTG HS */ regval |= RCC_AHB1ENR_OTGHSEN; diff --git a/arch/arm/src/stm32f7/stm32f76xx77xx_rcc.c b/arch/arm/src/stm32f7/stm32f76xx77xx_rcc.c index ed1bc937138..32f2a62eb6a 100644 --- a/arch/arm/src/stm32f7/stm32f76xx77xx_rcc.c +++ b/arch/arm/src/stm32f7/stm32f76xx77xx_rcc.c @@ -221,7 +221,9 @@ static inline void rcc_enableahb1(void) #endif #ifdef CONFIG_STM32F7_OTGFSHS -#ifdef BOARD_ENABLE_USBOTG_HSULPI +# if defined(CONFIG_STM32F7_INTERNAL_ULPI) || \ + defined(CONFIG_STM32F7_EXTERNAL_ULPI) + /* Enable clocking for USB OTG HS and external PHY */ regval |= (RCC_AHB1ENR_OTGHSEN | RCC_AHB1ENR_OTGHSULPIEN); From 9980a1c27dfef1796b243417bb703da3ae0811d7 Mon Sep 17 00:00:00 2001 From: Jiuzhu Dong Date: Fri, 23 Apr 2021 17:44:03 +0800 Subject: [PATCH 120/739] fs/hostfs: fix bug about getting error file size by fstat Change-Id: I10a0d52da649e4c3138e5a2301bcb6525e2e3350 Signed-off-by: Jiuzhu Dong --- fs/hostfs/hostfs_rpmsg.h | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/fs/hostfs/hostfs_rpmsg.h b/fs/hostfs/hostfs_rpmsg.h index 6482f02bf8f..b5b98228eba 100644 --- a/fs/hostfs/hostfs_rpmsg.h +++ b/fs/hostfs/hostfs_rpmsg.h @@ -116,9 +116,17 @@ begin_packed_struct struct hostfs_rpmsg_ioctl_s begin_packed_struct struct hostfs_rpmsg_fstat_s { struct hostfs_rpmsg_header_s header; - int32_t fd; - uint32_t reserved; - struct stat buf; + union + { + struct stat buf; + uint32_t reserved[16]; + }; + + union + { + int32_t fd; + char pathname[0]; + }; } end_packed_struct; begin_packed_struct struct hostfs_rpmsg_ftruncate_s @@ -169,17 +177,6 @@ begin_packed_struct struct hostfs_rpmsg_mkdir_s #define hostfs_rpmsg_rmdir_s hostfs_rpmsg_opendir_s #define hostfs_rpmsg_rename_s hostfs_rpmsg_opendir_s - -begin_packed_struct struct hostfs_rpmsg_stat_s -{ - struct hostfs_rpmsg_header_s header; - union - { - struct stat buf; - uint32_t reserved[16]; - }; - - char pathname[0]; -} end_packed_struct; +#define hostfs_rpmsg_stat_s hostfs_rpmsg_fstat_s #endif /* __FS_HOSTFS_HOSTFS_RPMSG_H */ From a81166aef6ccd4993e22619fc54ea3451b3a0236 Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Thu, 13 May 2021 17:52:38 +0800 Subject: [PATCH 121/739] Update libcxx to 12.0.0 release and remove the temporary patch since all patch is in the mainline now Signed-off-by: Xiang Xiao --- boards/sim/sim/sim/scripts/Make.defs | 5 +- libs/libxx/0001-libc-Fix-a-few-warnings.patch | 43 ------ ...ailing-with-Clang-after-removing-GCC.patch | 26 ---- ...veral-GCC-warnings-in-the-test-suite.patch | 135 ------------------ ...BCPP_PROVIDES_DEFAULT_RUNE_TABLE-fir.patch | 78 ---------- ...to-NuttX-https-nuttx.apache.org-RTOS.patch | 112 --------------- libs/libxx/libcxx.defs | 7 +- 7 files changed, 4 insertions(+), 402 deletions(-) delete mode 100644 libs/libxx/0001-libc-Fix-a-few-warnings.patch delete mode 100644 libs/libxx/0001-libc-Fix-tests-failing-with-Clang-after-removing-GCC.patch delete mode 100644 libs/libxx/0001-libc-NFC-Fix-several-GCC-warnings-in-the-test-suite.patch delete mode 100644 libs/libxx/0001-libcxx-Check-_LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE-fir.patch delete mode 100644 libs/libxx/0001-libcxx-Port-to-NuttX-https-nuttx.apache.org-RTOS.patch diff --git a/boards/sim/sim/sim/scripts/Make.defs b/boards/sim/sim/sim/scripts/Make.defs index 1e78f7951a1..bd17433803b 100644 --- a/boards/sim/sim/sim/scripts/Make.defs +++ b/boards/sim/sim/sim/scripts/Make.defs @@ -108,14 +108,15 @@ CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) \ AFLAGS := $(CFLAGS) -D__ASSEMBLY__ ifeq ($(CONFIG_LIBCXX),y) - # Why c++14? + # Why c++17? # * libcxx seems to require c++11. # * The compiler defaults varies: # clang/macOS (from xcode): 199711L # gcc/ubuntu: 201402L # * There is a precedent to use c++14. # (boards/arm/stm32l4/nucleo-l476rg/scripts/Make.defs) - CXXFLAGS += -std=c++14 + # * libs/libxx/libcxx/src/barrier.cpp depends on aligned new + CXXFLAGS += -std=c++17 ifeq ($(CONFIG_HOST_MACOS),y) # macOS uses libc++abi diff --git a/libs/libxx/0001-libc-Fix-a-few-warnings.patch b/libs/libxx/0001-libc-Fix-a-few-warnings.patch deleted file mode 100644 index b7bb109a015..00000000000 --- a/libs/libxx/0001-libc-Fix-a-few-warnings.patch +++ /dev/null @@ -1,43 +0,0 @@ -From acd7be74ca12f8f08e52d6d80850a9b230109134 Mon Sep 17 00:00:00 2001 -From: YAMAMOTO Takashi -Date: Wed, 28 Oct 2020 15:40:16 -0400 -Subject: [PATCH] [libc++] Fix a few warnings - -Found during a NuttX porting effort. -But these changes are not directly relevant to NuttX. - -Differential Revision: https://reviews.llvm.org/D90139 ---- - src/filesystem/operations.cpp | 2 +- - src/locale.cpp | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/filesystem/operations.cpp libcxx/src/filesystem/operations.cpp -index 95d7d0d9642..788e31b673a 100644 ---- a/src/filesystem/operations.cpp -+++ libcxx/src/filesystem/operations.cpp -@@ -534,7 +534,7 @@ path __canonical(path const& orig_p, error_code* ec) { - ErrorHandler err("canonical", ec, &orig_p, &cwd); - - path p = __do_absolute(orig_p, &cwd, ec); --#if _POSIX_VERSION >= 200112 -+#if defined(_POSIX_VERSION) && _POSIX_VERSION >= 200112 - std::unique_ptr - hold(::realpath(p.c_str(), nullptr), &::free); - if (hold.get() == nullptr) -diff --git a/src/locale.cpp libcxx/src/locale.cpp -index b9180880e49..02dbb334ff8 100644 ---- a/src/locale.cpp -+++ libcxx/src/locale.cpp -@@ -1149,7 +1149,7 @@ ctype::__classic_upper_table() _NOEXCEPT - { - return _LIBCPP_GET_C_LOCALE->__ctype_toupper; - } --#elif __NetBSD__ -+#elif defined(__NetBSD__) - const short* - ctype::__classic_lower_table() _NOEXCEPT - { --- -2.17.1 - diff --git a/libs/libxx/0001-libc-Fix-tests-failing-with-Clang-after-removing-GCC.patch b/libs/libxx/0001-libc-Fix-tests-failing-with-Clang-after-removing-GCC.patch deleted file mode 100644 index 5e288388118..00000000000 --- a/libs/libxx/0001-libc-Fix-tests-failing-with-Clang-after-removing-GCC.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 81b6aa0e27abc3037c84d1ff2065bf60207f9b8b Mon Sep 17 00:00:00 2001 -From: Louis Dionne -Date: Fri, 30 Oct 2020 14:55:37 -0400 -Subject: [PATCH] [libc++] Fix tests failing with Clang after removing GCC - warnings - ---- - src/filesystem/filesystem_common.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/filesystem/filesystem_common.h libcxx/src/filesystem/filesystem_common.h -index a7828ef3863..dc55f93da70 100644 ---- a/src/filesystem/filesystem_common.h -+++ libcxx/src/filesystem/filesystem_common.h -@@ -198,7 +198,7 @@ private: - using chrono::duration; - using chrono::duration_cast; - --using TimeSpec = std::timespec; -+using TimeSpec = timespec; - using StatT = struct stat; - - template -Date: Fri, 30 Oct 2020 11:19:07 -0400 -Subject: [PATCH] [libc++] NFC: Fix several GCC warnings in the test suite - -- Several -Wshadow warnings -- Several places where we did not initialize our base class explicitly -- Unused variable warnings -- Some tautological comparisons -- Some places where we'd pass null arguments to functions expecting - non-null (in unevaluated contexts) -- Add a few pragmas to turn off spurious warnings -- Fix warnings about declarations that don't declare anything -- Properly disable deprecation warnings in ext/ tests (the pragmas we - were using didn't work on GCC) -- Disable include_as_c.sh.cpp because GCC complains about C++ flags - when compiling as C. I couldn't find a way to fix this one properly, - so I'm disabling the test. This isn't great, but at least we'll be - able to enable warnings in the whole test suite with GCC. ---- - src/filesystem/filesystem_common.h | 55 ++++++++++++----------- - 1 file changed, 28 insertions(+), 27 deletions(-) - -diff --git a/src/filesystem/filesystem_common.h libcxx/src/filesystem/filesystem_common.h -index fe5c42f5e6d..a7828ef3863 100644 ---- a/src/filesystem/filesystem_common.h -+++ libcxx/src/filesystem/filesystem_common.h -@@ -13,8 +13,9 @@ - #include "filesystem" - #include "array" - #include "chrono" --#include "cstdlib" - #include "climits" -+#include "cstdlib" -+#include "ctime" - - #include - #include -@@ -47,7 +48,7 @@ static string format_string_imp(const char* msg, ...) { - struct GuardVAList { - va_list& target; - bool active = true; -- GuardVAList(va_list& target) : target(target), active(true) {} -+ GuardVAList(va_list& tgt) : target(tgt), active(true) {} - void clear() { - if (active) - va_end(target); -@@ -134,50 +135,50 @@ path error_value() { - - template - struct ErrorHandler { -- const char* func_name; -- error_code* ec = nullptr; -- const path* p1 = nullptr; -- const path* p2 = nullptr; -+ const char* func_name_; -+ error_code* ec_ = nullptr; -+ const path* p1_ = nullptr; -+ const path* p2_ = nullptr; - - ErrorHandler(const char* fname, error_code* ec, const path* p1 = nullptr, - const path* p2 = nullptr) -- : func_name(fname), ec(ec), p1(p1), p2(p2) { -- if (ec) -- ec->clear(); -+ : func_name_(fname), ec_(ec), p1_(p1), p2_(p2) { -+ if (ec_) -+ ec_->clear(); - } - -- T report(const error_code& m_ec) const { -- if (ec) { -- *ec = m_ec; -+ T report(const error_code& ec) const { -+ if (ec_) { -+ *ec_ = ec; - return error_value(); - } -- string what = string("in ") + func_name; -- switch (bool(p1) + bool(p2)) { -+ string what = string("in ") + func_name_; -+ switch (bool(p1_) + bool(p2_)) { - case 0: -- __throw_filesystem_error(what, m_ec); -+ __throw_filesystem_error(what, ec); - case 1: -- __throw_filesystem_error(what, *p1, m_ec); -+ __throw_filesystem_error(what, *p1_, ec); - case 2: -- __throw_filesystem_error(what, *p1, *p2, m_ec); -+ __throw_filesystem_error(what, *p1_, *p2_, ec); - } - _LIBCPP_UNREACHABLE(); - } - - template -- T report(const error_code& m_ec, const char* msg, Args const&... args) const { -- if (ec) { -- *ec = m_ec; -+ T report(const error_code& ec, const char* msg, Args const&... args) const { -+ if (ec_) { -+ *ec_ = ec; - return error_value(); - } - string what = -- string("in ") + func_name + ": " + format_string(msg, args...); -- switch (bool(p1) + bool(p2)) { -+ string("in ") + func_name_ + ": " + format_string(msg, args...); -+ switch (bool(p1_) + bool(p2_)) { - case 0: -- __throw_filesystem_error(what, m_ec); -+ __throw_filesystem_error(what, ec); - case 1: -- __throw_filesystem_error(what, *p1, m_ec); -+ __throw_filesystem_error(what, *p1_, ec); - case 2: -- __throw_filesystem_error(what, *p1, *p2, m_ec); -+ __throw_filesystem_error(what, *p1_, *p2_, ec); - } - _LIBCPP_UNREACHABLE(); - } -@@ -197,8 +198,8 @@ private: - using chrono::duration; - using chrono::duration_cast; - --using TimeSpec = struct ::timespec; --using StatT = struct ::stat; -+using TimeSpec = std::timespec; -+using StatT = struct stat; - - template ::value> --- -2.17.1 - diff --git a/libs/libxx/0001-libcxx-Check-_LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE-fir.patch b/libs/libxx/0001-libcxx-Check-_LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE-fir.patch deleted file mode 100644 index 87572590281..00000000000 --- a/libs/libxx/0001-libcxx-Check-_LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE-fir.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 3e8b517a509ae043571d8d0b00625d8a03eb5d05 Mon Sep 17 00:00:00 2001 -From: Xiang Xiao -Date: Mon, 9 Nov 2020 21:45:57 +0800 -Subject: [PATCH] [libcxx] Check _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE first in - __locale - -just like what's done in __locale.cpp - -Co-authored-by: Chao An - -Signed-off-by: Xiang Xiao - -Differential Revision: https://reviews.llvm.org/D91074 ---- - include/__locale | 40 +++++++++++++++++++++------------------- - 1 file changed, 21 insertions(+), 19 deletions(-) - -diff --git a/include/__locale libcxx/include/__locale -index 125adcf68c8..e973ce52646 100644 ---- a/include/__locale -+++ libcxx/include/__locale -@@ -397,7 +397,26 @@ locale::operator()(const basic_string<_CharT, _Traits, _Allocator>& __x, - class _LIBCPP_TYPE_VIS ctype_base - { - public: --#if defined(__GLIBC__) -+#if defined(_LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE) -+ typedef unsigned long mask; -+ static const mask space = 1<<0; -+ static const mask print = 1<<1; -+ static const mask cntrl = 1<<2; -+ static const mask upper = 1<<3; -+ static const mask lower = 1<<4; -+ static const mask alpha = 1<<5; -+ static const mask digit = 1<<6; -+ static const mask punct = 1<<7; -+ static const mask xdigit = 1<<8; -+ static const mask blank = 1<<9; -+#if defined(__BIONIC__) -+ // Historically this was a part of regex_traits rather than ctype_base. The -+ // historical value of the constant is preserved for ABI compatibility. -+ static const mask __regex_word = 0x8000; -+#else -+ static const mask __regex_word = 1<<10; -+#endif // defined(__BIONIC__) -+#elif defined(__GLIBC__) - typedef unsigned short mask; - static const mask space = _ISspace; - static const mask print = _ISprint; -@@ -486,24 +505,7 @@ public: - # define _LIBCPP_CTYPE_MASK_IS_COMPOSITE_ALPHA - # define _LIBCPP_CTYPE_MASK_IS_COMPOSITE_XDIGIT - #else -- typedef unsigned long mask; -- static const mask space = 1<<0; -- static const mask print = 1<<1; -- static const mask cntrl = 1<<2; -- static const mask upper = 1<<3; -- static const mask lower = 1<<4; -- static const mask alpha = 1<<5; -- static const mask digit = 1<<6; -- static const mask punct = 1<<7; -- static const mask xdigit = 1<<8; -- static const mask blank = 1<<9; --#if defined(__BIONIC__) -- // Historically this was a part of regex_traits rather than ctype_base. The -- // historical value of the constant is preserved for ABI compatibility. -- static const mask __regex_word = 0x8000; --#else -- static const mask __regex_word = 1<<10; --#endif // defined(__BIONIC__) -+#error unkown classic_table, try _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE - #endif - static const mask alnum = alpha | digit; - static const mask graph = alnum | punct; --- -2.17.1 - diff --git a/libs/libxx/0001-libcxx-Port-to-NuttX-https-nuttx.apache.org-RTOS.patch b/libs/libxx/0001-libcxx-Port-to-NuttX-https-nuttx.apache.org-RTOS.patch deleted file mode 100644 index b8f0efd7b56..00000000000 --- a/libs/libxx/0001-libcxx-Port-to-NuttX-https-nuttx.apache.org-RTOS.patch +++ /dev/null @@ -1,112 +0,0 @@ -From 6b12d8b5c30a84aa5767b1b18ecf5ba5e99a1654 Mon Sep 17 00:00:00 2001 -From: Xiang Xiao -Date: Fri, 2 Oct 2020 13:25:43 +0800 -Subject: [PATCH] [libcxx] Port to NuttX(https://nuttx.apache.org/) RTOS - -Since NuttX conform to POSIX standard, the code need to add is very simple - -Co-authored-by: YAMAMOTO Takashi - -Differential Revision: https://reviews.llvm.org/D88718 ---- - include/__config | 3 ++- - include/__locale | 2 ++ - include/support/nuttx/xlocale.h | 18 ++++++++++++++++++ - src/include/config_elast.h | 4 ++++ - src/locale.cpp | 2 +- - 5 files changed, 27 insertions(+), 2 deletions(-) - create mode 100644 include/support/nuttx/xlocale.h - -diff --git a/include/__config libcxx/include/__config -index eeef9c53a9f..9ace3b46028 100644 ---- a/include/__config -+++ libcxx/include/__config -@@ -1117,6 +1117,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container( - # if defined(__FreeBSD__) || \ - defined(__wasi__) || \ - defined(__NetBSD__) || \ -+ defined(__NuttX__) || \ - defined(__linux__) || \ - defined(__GNU__) || \ - defined(__APPLE__) || \ -@@ -1219,7 +1220,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container( - # endif - #endif - --#if defined(__BIONIC__) || defined(__CloudABI__) || \ -+#if defined(__BIONIC__) || defined(__CloudABI__) || defined(__NuttX__) || \ - defined(__Fuchsia__) || defined(__wasi__) || defined(_LIBCPP_HAS_MUSL_LIBC) - #define _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE - #endif -diff --git a/include/__locale libcxx/include/__locale -index 125adcf68c8..ebededf066b 100644 ---- a/include/__locale -+++ libcxx/include/__locale -@@ -22,6 +22,8 @@ - #if defined(_LIBCPP_MSVCRT_LIKE) - # include - # include -+#elif defined(__NuttX__) -+# include - #elif defined(_AIX) - # include - #elif defined(__ANDROID__) -diff --git a/include/support/nuttx/xlocale.h libcxx/include/support/nuttx/xlocale.h -new file mode 100644 -index 00000000000..b70d6200504 ---- /dev/null -+++ libcxx/include/support/nuttx/xlocale.h -@@ -0,0 +1,18 @@ -+// -*- C++ -*- -+//===-------------------- support/nuttx/xlocale.h -------------------------===// -+// -+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -+// See https://llvm.org/LICENSE.txt for license information. -+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -+// -+//===----------------------------------------------------------------------===// -+ -+#ifndef _LIBCPP_SUPPORT_NUTTX_XLOCALE_H -+#define _LIBCPP_SUPPORT_NUTTX_XLOCALE_H -+ -+#if defined(__NuttX__) -+#include -+#include -+#endif // __NuttX__ -+ -+#endif -diff --git a/src/include/config_elast.h libcxx/src/include/config_elast.h -index 501cbc4ffeb..3113f9fb5cd 100644 ---- a/src/include/config_elast.h -+++ libcxx/src/include/config_elast.h -@@ -17,10 +17,14 @@ - #include - #endif - -+// Note: _LIBCPP_ELAST needs to be defined only on platforms -+// where strerror/strerror_r can't handle out-of-range errno values. - #if defined(ELAST) - #define _LIBCPP_ELAST ELAST - #elif defined(_NEWLIB_VERSION) - #define _LIBCPP_ELAST __ELASTERROR -+#elif defined(__NuttX__) -+// No _LIBCPP_ELAST needed on NuttX - #elif defined(__Fuchsia__) - // No _LIBCPP_ELAST needed on Fuchsia - #elif defined(__wasi__) -diff --git a/src/locale.cpp libcxx/src/locale.cpp -index 5fdc14992f8..ed93727b544 100644 ---- a/src/locale.cpp -+++ libcxx/src/locale.cpp -@@ -30,7 +30,7 @@ - #include "__sso_allocator" - #if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__) - #include "support/win32/locale_win32.h" --#elif !defined(__BIONIC__) -+#elif !defined(__BIONIC__) && !defined(__NuttX__) - #include - #endif - #include --- -2.17.1 - diff --git a/libs/libxx/libcxx.defs b/libs/libxx/libcxx.defs index 21ca57f3fcb..9b845a7bde9 100644 --- a/libs/libxx/libcxx.defs +++ b/libs/libxx/libcxx.defs @@ -18,7 +18,7 @@ # ########################################################################### -VERSION=11.0.0 +VERSION=12.0.0 libcxx-$(VERSION).src.tar.xz: $(Q) curl -O -L https://github.com/llvm/llvm-project/releases/download/llvmorg-$(VERSION)/libcxx-$(VERSION).src.tar.xz @@ -26,11 +26,6 @@ libcxx-$(VERSION).src.tar.xz: libcxx: libcxx-$(VERSION).src.tar.xz $(Q) tar -xf libcxx-$(VERSION).src.tar.xz $(Q) mv libcxx-$(VERSION).src libcxx - $(Q) patch -p0 < 0001-libc-Fix-a-few-warnings.patch - $(Q) patch -p0 < 0001-libc-NFC-Fix-several-GCC-warnings-in-the-test-suite.patch - $(Q) patch -p0 < 0001-libc-Fix-tests-failing-with-Clang-after-removing-GCC.patch - $(Q) patch -p0 < 0001-libcxx-Check-_LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE-fir.patch - $(Q) patch -p0 < 0001-libcxx-Port-to-NuttX-https-nuttx.apache.org-RTOS.patch $(Q) touch $@ $(TOPDIR)/include/libcxx: libcxx From 2972e7015ec6a3748eedd807b902580387d0fd86 Mon Sep 17 00:00:00 2001 From: Brennan Ashton Date: Sat, 15 May 2021 22:34:10 -0700 Subject: [PATCH 122/739] board: Add support for Adafruit Circuit Express --- boards/Kconfig | 12 + boards/arm/samd2l2/circuit-express/Kconfig | 9 + .../circuit-express/configs/nsh/defconfig | 64 +++ .../samd2l2/circuit-express/include/board.h | 396 ++++++++++++++++++ .../samd2l2/circuit-express/scripts/Make.defs | 63 +++ .../samd2l2/circuit-express/scripts/flash.ld | 111 +++++ .../arm/samd2l2/circuit-express/src/Makefile | 37 ++ .../circuit-express/src/circuit_express.h | 102 +++++ .../samd2l2/circuit-express/src/sam_appinit.c | 71 ++++ .../circuit-express/src/sam_autoleds.c | 138 ++++++ .../samd2l2/circuit-express/src/sam_boot.c | 86 ++++ .../samd2l2/circuit-express/src/sam_bringup.c | 60 +++ 12 files changed, 1149 insertions(+) create mode 100644 boards/arm/samd2l2/circuit-express/Kconfig create mode 100644 boards/arm/samd2l2/circuit-express/configs/nsh/defconfig create mode 100644 boards/arm/samd2l2/circuit-express/include/board.h create mode 100644 boards/arm/samd2l2/circuit-express/scripts/Make.defs create mode 100644 boards/arm/samd2l2/circuit-express/scripts/flash.ld create mode 100644 boards/arm/samd2l2/circuit-express/src/Makefile create mode 100644 boards/arm/samd2l2/circuit-express/src/circuit_express.h create mode 100644 boards/arm/samd2l2/circuit-express/src/sam_appinit.c create mode 100644 boards/arm/samd2l2/circuit-express/src/sam_autoleds.c create mode 100644 boards/arm/samd2l2/circuit-express/src/sam_boot.c create mode 100644 boards/arm/samd2l2/circuit-express/src/sam_bringup.c diff --git a/boards/Kconfig b/boards/Kconfig index 643ccaae74c..de620b1f0f5 100644 --- a/boards/Kconfig +++ b/boards/Kconfig @@ -92,6 +92,14 @@ config ARCH_BOARD_C5471EVM NuttX runs on the ARM core and is built with a GNU arm-nuttx-elf toolchain*. This port is complete and verified. +config ARCH_BOARD_CIRCUIT_EXPRESS + bool "Adafruit Circuit Express" + depends on ARCH_CHIP_SAMD21G18A + select ARCH_HAVE_LEDS + ---help--- + This options selects the Adafruit Circuit Express board featuring the Atmel + ATSAMD21 MCU. + config ARCH_BOARD_CLICKER2_STM32 bool "Mikroe Clicker2 STM32" depends on ARCH_CHIP_STM32F407VG @@ -2261,6 +2269,7 @@ config ARCH_BOARD default "bambino-200e" if ARCH_BOARD_BAMBINO_200E default "bl602evb" if ARCH_BOARD_BL602EVB default "c5471evm" if ARCH_BOARD_C5471EVM + default "circuit-express" if ARCH_BOARD_CIRCUIT_EXPRESS default "clicker2-stm32" if ARCH_BOARD_CLICKER2_STM32 default "cloudctrl" if ARCH_BOARD_CLOUDCTRL default "demo9s12ne64" if ARCH_BOARD_DEMOS92S12NEC64 @@ -2713,6 +2722,9 @@ endif if ARCH_BOARD_ARDUINO_M0 source "boards/arm/samd2l2/arduino-m0/Kconfig" endif +if ARCH_BOARD_CIRCUIT_EXPRESS +source "boards/arm/samd2l2/circuit-express/Kconfig" +endif if ARCH_BOARD_FLIPNCLICK_SAM3X source "boards/arm/sam34/flipnclick-sam3x/Kconfig" endif diff --git a/boards/arm/samd2l2/circuit-express/Kconfig b/boards/arm/samd2l2/circuit-express/Kconfig new file mode 100644 index 00000000000..4570caee258 --- /dev/null +++ b/boards/arm/samd2l2/circuit-express/Kconfig @@ -0,0 +1,9 @@ +# +# For a description of the syntax of this configuration file, +# see the file kconfig-language.txt in the NuttX tools repository. +# + +if ARCH_BOARD_CIRCUIT_EXPRESS + +endif + diff --git a/boards/arm/samd2l2/circuit-express/configs/nsh/defconfig b/boards/arm/samd2l2/circuit-express/configs/nsh/defconfig new file mode 100644 index 00000000000..9efe3d599b9 --- /dev/null +++ b/boards/arm/samd2l2/circuit-express/configs/nsh/defconfig @@ -0,0 +1,64 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_DISABLE_POSIX_TIMERS is not set +# CONFIG_NSH_DISABLEBG is not set +# CONFIG_NSH_DISABLESCRIPT is not set +# CONFIG_NSH_DISABLE_CMP is not set +# CONFIG_NSH_DISABLE_DD is not set +# CONFIG_NSH_DISABLE_EXEC is not set +# CONFIG_NSH_DISABLE_EXIT is not set +# CONFIG_NSH_DISABLE_GET is not set +# CONFIG_NSH_DISABLE_HEXDUMP is not set +# CONFIG_NSH_DISABLE_IFCONFIG is not set +# CONFIG_NSH_DISABLE_ITEF is not set +# CONFIG_NSH_DISABLE_LOOPS is not set +# CONFIG_NSH_DISABLE_LOSETUP is not set +# CONFIG_NSH_DISABLE_MKRD is not set +# CONFIG_NSH_DISABLE_PS is not set +# CONFIG_NSH_DISABLE_PUT is not set +# CONFIG_NSH_DISABLE_SEMICOLON is not set +# CONFIG_NSH_DISABLE_WGET is not set +# CONFIG_NSH_DISABLE_XD is not set +CONFIG_ARCH="arm" +CONFIG_ARCH_BOARD="circuit-express" +CONFIG_ARCH_BOARD_CIRCUIT_EXPRESS=y +CONFIG_ARCH_CHIP="samd2l2" +CONFIG_ARCH_CHIP_SAMD21G18A=y +CONFIG_ARCH_CHIP_SAMD2X=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARD_LOOPSPERMSEC=3410 +CONFIG_BUILTIN=y +CONFIG_DEBUG_ASSERTIONS=y +CONFIG_DEBUG_ERROR=y +CONFIG_DEBUG_FEATURES=y +CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DEBUG_WARN=y +CONFIG_DEFAULT_SMALL=y +CONFIG_MAX_TASKS=16 +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_PTHREAD_STACK_DEFAULT=1536 +CONFIG_RAM_SIZE=32768 +CONFIG_RAM_START=0x20000000 +CONFIG_RR_INTERVAL=200 +CONFIG_SAMD2L2_SERCOM4=y +CONFIG_SCHED_WAITPID=y +CONFIG_SDCLONE_DISABLE=y +CONFIG_STACK_COLORATION=y +CONFIG_START_DAY=21 +CONFIG_START_MONTH=6 +CONFIG_START_YEAR=2015 +CONFIG_SYSTEM_NSH=y +CONFIG_TASK_NAME_SIZE=0 +CONFIG_TASK_SPAWN_DEFAULT_STACKSIZE=1536 +CONFIG_USART4_RXBUFSIZE=64 +CONFIG_USART4_SERIAL_CONSOLE=y +CONFIG_USART4_TXBUFSIZE=64 +CONFIG_USERMAIN_STACKSIZE=1536 +CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/arm/samd2l2/circuit-express/include/board.h b/boards/arm/samd2l2/circuit-express/include/board.h new file mode 100644 index 00000000000..884c3052f96 --- /dev/null +++ b/boards/arm/samd2l2/circuit-express/include/board.h @@ -0,0 +1,396 @@ +/**************************************************************************** + * boards/arm/samd2l2/circuit-express/include/board.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __BOARDS_ARM_SAMD2L2_CIRCUIT_EXPRESS_INCLUDE_BOARD_H +#define __BOARDS_ARM_SAMD2L2_CIRCUIT_EXPRESS_INCLUDE_BOARD_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#ifndef __ASSEMBLY__ +# include +# ifdef CONFIG_SAMD2L2_GPIOIRQ +# include +# endif +#endif + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Clocking *****************************************************************/ + +/* Overview + * + * OSC8M Output = 8MHz + * `- GCLK1 Input = 8MHz Prescaler = 1 output = 8MHz + * `- DFLL Input = 8MHz Multiplier = 6 output = 48MHz + * `- GCLK0 Input = 48MHz Prescaler = 1 output = 48MHz + * `- PM Input = 48Mhz CPU divider = 1 CPU frequency = 48MHz + * APBA divider = 1 APBA frequency = 48MHz + * APBB divider = 1 APBB frequency = 48MHz + * APBC divider = 1 APBC frequency = 48MHz + * + */ + +/* XOSC Configuration -- Not available + * + * BOARD_XOSC_ENABLE - Boolean (defined / not defined) + * BOARD_XOSC_FREQUENCY - In Hz + * BOARD_XOSC_STARTUPTIME - See SYSCTRL_XOSC_STARTUP_* definitions + * BOARD_XOSC_ISCRYSTAL - Boolean (defined / not defined) + * BOARD_XOSC_AMPGC - Boolean (defined / not defined) + * BOARD_XOSC_ONDEMAND - Boolean (defined / not defined) + * BOARD_XOSC_RUNINSTANDBY - Boolean (defined / not defined) + */ + +#undef BOARD_XOSC_ENABLE +#define BOARD_XOSC_FREQUENCY 12000000UL +#define BOARD_XOSC_STARTUPTIME SYSCTRL_XOSC_STARTUP_1S +#define BOARD_XOSC_ISCRYSTAL 1 +#define BOARD_XOSC_AMPGC 1 +#define BOARD_XOSC_ONDEMAND 1 +#undef BOARD_XOSC_RUNINSTANDBY + +/* XOSC32 Configuration -- Not used + * + * BOARD_XOSC32K_ENABLE - Boolean (defined / not defined) + * BOARD_XOSC32K_FREQUENCY - In Hz + * BOARD_XOSC32K_STARTUPTIME - See SYSCTRL_XOSC32K_STARTUP_* definitions + * BOARD_XOSC32K_ISCRYSTAL - Boolean (defined / not defined) + * BOARD_XOSC32K_AAMPEN - Boolean (defined / not defined) + * BOARD_XOSC32K_EN1KHZ - Boolean (defined / not defined) + * BOARD_XOSC32K_EN32KHZ - Boolean (defined / not defined) + * BOARD_XOSC32K_ONDEMAND - Boolean (defined / not defined) + * BOARD_XOSC32K_RUNINSTANDBY - Boolean (defined / not defined) + */ + +#undef BOARD_XOSC32K_ENABLE +#define BOARD_XOSC32K_FREQUENCY 32768 /* 32.768KHz XTAL */ +#define BOARD_XOSC32K_STARTUPTIME SYSCTRL_XOSC32K_STARTUP_2S +#define BOARD_XOSC32K_ISCRYSTAL 1 +#define BOARD_XOSC32K_AAMPEN 1 +#undef BOARD_XOSC32K_EN1KHZ +#define BOARD_XOSC32K_EN32KHZ 1 +#define BOARD_XOSC32K_ONDEMAND 1 +#undef BOARD_XOSC32K_RUNINSTANDBY + +/* OSC32 Configuration -- not used + * + * BOARD_OSC32K_ENABLE - Boolean (defined / not defined) + * BOARD_OSC32K_FREQUENCY - In Hz + * BOARD_OSC32K_STARTUPTIME - See SYSCTRL_OSC32K_STARTUP_* definitions + * BOARD_OSC32K_EN1KHZ - Boolean (defined / not defined) + * BOARD_OSC32K_EN32KHZ - Boolean (defined / not defined) + * BOARD_OSC32K_ONDEMAND - Boolean (defined / not defined) + * BOARD_OSC32K_RUNINSTANDBY - Boolean (defined / not defined) + */ + +#undef BOARD_OSC32K_ENABLE +#define BOARD_OSC32K_FREQUENCY 32768 /* 32.768kHz internal oscillator */ +#define BOARD_OSC32K_STARTUPTIME SYSCTRL_OSC32K_STARTUP_4MS +#define BOARD_OSC32K_EN1KHZ 1 +#define BOARD_OSC32K_EN32KHZ 1 +#define BOARD_OSC32K_ONDEMAND 1 +#undef BOARD_OSC32K_RUNINSTANDBY + +/* OSC8M Configuration -- always enabled + * + * BOARD_OSC8M_PRESCALER - See SYSCTRL_OSC8M_PRESC_DIV* definitions + * BOARD_OSC8M_ONDEMAND - Boolean (defined / not defined) + * BOARD_OSC8M_RUNINSTANDBY - Boolean (defined / not defined) + */ + +#define BOARD_OSC8M_PRESCALER SYSCTRL_OSC8M_PRESC_DIV1 +#define BOARD_OSC8M_ONDEMAND 1 +#undef BOARD_OSC8M_RUNINSTANDBY + +#define BOARD_OSC8M_FREQUENCY 8000000 /* 8MHz high-accuracy internal oscillator */ + +/* OSCULP32K Configuration -- not used. */ + +#define BOARD_OSCULP32K_FREQUENCY 32000 /* 32kHz ultra-low-power internal oscillator */ + +/* Digital Frequency Locked Loop configuration. In closed-loop mode, the + * DFLL output frequency (Fdfll) is given by: + * + * Fdfll = DFLLmul * Frefclk + * = 6 * 8000000 = 48MHz + * + * Where the reference clock is Generic Clock Channel 0 output of GLCK1. + * GCLCK1 provides OSC8M, undivided. + * + * When operating in open-loop mode, the output frequency of the DFLL will + * be determined by the values written to the DFLL Coarse Value bit group + * and the DFLL Fine Value bit group in the DFLL Value register. + * + * BOARD_DFLL_OPENLOOP - Boolean (defined / not defined) + * BOARD_DFLL_TRACKAFTERFINELOCK - Boolean (defined / not defined) + * BOARD_DFLL_KEEPLOCKONWAKEUP - Boolean (defined / not defined) + * BOARD_DFLL_ENABLECHILLCYCLE - Boolean (defined / not defined) + * BOARD_DFLL_QUICKLOCK - Boolean (defined / not defined) + * BOARD_DFLL_ONDEMAND - Boolean (defined / not defined) + * + * Closed loop mode only: + * BOARD_DFLL_GCLKGEN - GCLK index + * BOARD_DFLL_MULTIPLIER - Value + * BOARD_DFLL_MAXCOARSESTEP - Value + * BOARD_DFLL_MAXFINESTEP - Value + * + * BOARD_DFLL_FREQUENCY - The resulting frequency + */ + +#define BOARD_DFLL_ENABLE 1 +#define BOARD_DFLL_OPENLOOP 1 +#undef BOARD_DFLL_ONDEMAND +#undef BOARD_DFLL_RUNINSTANDBY + +/* DFLL closed loop mode configuration */ + +#define BOARD_DFLL_SRCGCLKGEN 1 +#define BOARD_DFLL_MULTIPLIER 6 +#define BOARD_DFLL_QUICKLOCK 1 +#define BOARD_DFLL_TRACKAFTERFINELOCK 1 +#define BOARD_DFLL_KEEPLOCKONWAKEUP 1 +#define BOARD_DFLL_ENABLECHILLCYCLE 1 +#define BOARD_DFLL_MAXCOARSESTEP (0x1f / 4) +#define BOARD_DFLL_MAXFINESTEP (0xff / 4) + +#define BOARD_DFLL_FREQUENCY (48000000) + +/* GCLK Configuration + * + * Global enable/disable. + * + * BOARD_GCLK_ENABLE - Boolean (defined / not defined) + * + * For n=1-7: + * BOARD_GCLKn_ENABLE - Boolean (defined / not defined) + * + * For n=0-8: + * BOARD_GCLKn_RUN_IN_STANDBY - Boolean (defined / not defined) + * BOARD_GCLKn_CLOCK_SOURCE - See GCLK_GENCTRL_SRC_* definitions + * BOARD_GCLKn_PRESCALER - Value + * BOARD_GCLKn_OUTPUT_ENABLE - Boolean (defined / not defined) + */ + +#define BOARD_GCLK_ENABLE 1 + +/* GCLK generator 0 (Main Clock) - Source is the DFLL */ + +#undef BOARD_GCLK0_RUN_IN_STANDBY +#define BOARD_GCLK0_CLOCK_SOURCE GCLK_GENCTRL_SRC_DFLL48M +#define BOARD_GCLK0_PRESCALER 1 +#undef BOARD_GCLK0_OUTPUT_ENABLE +#define BOARD_GCLK0_FREQUENCY (BOARD_DFLL_FREQUENCY / BOARD_GCLK0_PRESCALER) + +/* Configure GCLK generator 1 - Drives the DFLL */ + +#define BOARD_GCLK1_ENABLE 1 +#undef BOARD_GCLK1_RUN_IN_STANDBY +#define BOARD_GCLK1_CLOCK_SOURCE GCLK_GENCTRL_SRC_OSC8M +#define BOARD_GCLK1_PRESCALER 1 +#undef BOARD_GCLK1_OUTPUT_ENABLE +#define BOARD_GCLK1_FREQUENCY (BOARD_OSC8M_FREQUENCY / BOARD_GCLK1_PRESCALER) + +/* Configure GCLK generator 2 (RTC) */ + +#undef BOARD_GCLK2_ENABLE +#undef BOARD_GCLK2_RUN_IN_STANDBY +#define BOARD_GCLK2_CLOCK_SOURCE GCLK_GENCTRL_SRC_OSC32K +#define BOARD_GCLK2_PRESCALER 32 +#undef BOARD_GCLK2_OUTPUT_ENABLE +#define BOARD_GCLK2_FREQUENCY (BOARD_OSC8M_FREQUENCY / BOARD_GCLK2_PRESCALER) + +/* Configure GCLK generator 3 */ + +#undef BOARD_GCLK3_ENABLE +#undef BOARD_GCLK3_RUN_IN_STANDBY +#define BOARD_GCLK3_CLOCK_SOURCE GCLK_GENCTRL_SRC_OSC8M +#define BOARD_GCLK3_PRESCALER 1 +#undef BOARD_GCLK3_OUTPUT_ENABLE +#define BOARD_GCLK3_FREQUENCY (BOARD_OSC8M_FREQUENCY / BOARD_GCLK3_PRESCALER) + +/* Configure GCLK generator 4 */ + +#undef BOARD_GCLK4_ENABLE +#undef BOARD_GCLK4_RUN_IN_STANDBY +#define BOARD_GCLK4_CLOCK_SOURCE GCLK_GENCTRL_SRC_OSC8M +#define BOARD_GCLK4_PRESCALER 1 +#undef BOARD_GCLK4_OUTPUT_ENABLE +#define BOARD_GCLK4_FREQUENCY (BOARD_OSC8M_FREQUENCY / BOARD_GCLK4_PRESCALER) + +/* Configure GCLK generator 5 */ + +#undef BOARD_GCLK5_ENABLE +#undef BOARD_GCLK5_RUN_IN_STANDBY +#define BOARD_GCLK5_CLOCK_SOURCE GCLK_GENCTRL_SRC_OSC8M +#define BOARD_GCLK5_PRESCALER 1 +#undef BOARD_GCLK5_OUTPUT_ENABLE +#define BOARD_GCLK5_FREQUENCY (BOARD_OSC8M_FREQUENCY / BOARD_GCLK5_PRESCALER) + +/* Configure GCLK generator 6 */ + +#undef BOARD_GCLK6_ENABLE +#undef BOARD_GCLK6_RUN_IN_STANDBY +#define BOARD_GCLK6_CLOCK_SOURCE GCLK_GENCTRL_SRC_OSC8M +#define BOARD_GCLK6_PRESCALER 1 +#undef BOARD_GCLK6_OUTPUT_ENABLE +#define BOARD_GCLK6_FREQUENCY (BOARD_OSC8M_FREQUENCY / BOARD_GCLK6_PRESCALER) + +/* Configure GCLK generator 7 */ + +#undef BOARD_GCLK7_ENABLE +#undef BOARD_GCLK7_RUN_IN_STANDBY +#define BOARD_GCLK7_CLOCK_SOURCE GCLK_GENCTRL_SRC_OSC8M +#define BOARD_GCLK7_PRESCALER 1 +#undef BOARD_GCLK7_OUTPUT_ENABLE +#define BOARD_GCLK7_FREQUENCY (BOARD_OSC8M_FREQUENCY / BOARD_GCLK7_PRESCALER) + +/* The source of the main clock is always GCLK_MAIN. Also called GCLKGEN[0], + * this is the clock feeding the Power Manager. + * The Power Manager, in turn, generates main clock which is divided down to + * produce the CPU, AHB, and APB clocks. + * + * The main clock is initially OSC8M divided by 8. + */ + +#define BOARD_GCLK_MAIN_FREQUENCY BOARD_GCLK0_FREQUENCY + +/* Main clock dividers + * + * BOARD_CPU_DIVIDER - See PM_CPUSEL_CPUDIV_* definitions + * BOARD_CPU_FRQUENCY - In Hz + * BOARD_CPU_FAILDECT - Boolean (defined / not defined) + * BOARD_APBA_DIVIDER - See M_APBASEL_APBADIV_* definitions + * BOARD_APBA_FRQUENCY - In Hz + * BOARD_APBB_DIVIDER - See M_APBBSEL_APBBDIV_* definitions + * BOARD_APBB_FRQUENCY - In Hz + * BOARD_APBC_DIVIDER - See M_APBCSEL_APBCDIV_* definitions + * BOARD_APBC_FRQUENCY - In Hz + */ + +#define BOARD_CPU_FAILDECT 1 +#define BOARD_CPU_DIVIDER PM_CPUSEL_CPUDIV_1 +#define BOARD_APBA_DIVIDER PM_APBASEL_APBADIV_1 +#define BOARD_APBB_DIVIDER PM_APBBSEL_APBBDIV_1 +#define BOARD_APBC_DIVIDER PM_APBCSEL_APBCDIV_1 + +/* Resulting frequencies */ + +#define BOARD_MCK_FREQUENCY (BOARD_GCLK_MAIN_FREQUENCY) +#define BOARD_CPU_FREQUENCY (BOARD_MCK_FREQUENCY) +#define BOARD_PBA_FREQUENCY (BOARD_MCK_FREQUENCY) +#define BOARD_PBB_FREQUENCY (BOARD_MCK_FREQUENCY) +#define BOARD_PBC_FREQUENCY (BOARD_MCK_FREQUENCY) +#define BOARD_PBD_FREQUENCY (BOARD_MCK_FREQUENCY) + +/* FLASH wait states + * + * Vdd Range Wait states Maximum Operating Frequency + * ------------- -------------- --------------------------- + * 1.62V to 2.7V 0 14 MHz + * 1 28 MHz + * 2 42 MHz + * 3 48 MHz + * 2.7V to 3.63V 0 24 MHz + * 1 48 MHz + */ + +#if 0 /* REVISIT -- should not be necessary */ +# define BOARD_FLASH_WAITSTATES 1 +#else +# define BOARD_FLASH_WAITSTATES 2 +#endif + +/* SERCOM definitions *******************************************************/ + +/* This is the source clock generator for the GCLK_SERCOM_SLOW clock that is + * common to all SERCOM modules. + */ + +#define BOARD_SERCOM05_SLOW_GCLKGEN 0 + +/* SERCOM5 USART used to Serial Console + * + * PIN PORT SERCOM FUNCTION + * --- ------------------ ----------- + * 7 PB08 SERCOM4 PAD0 USART TXD + * 8 PB09 SERCOM4 PAD1 USART RXD + */ + +#define BOARD_SERCOM4_GCLKGEN 0 +#define BOARD_SERCOM4_SLOW_GCLKGEN BOARD_SERCOM05_SLOW_GCLKGEN +#define BOARD_SERCOM4_MUXCONFIG (USART_CTRLA_RXPAD1 | USART_CTRLA_TXPAD0_1) +#define BOARD_SERCOM4_PINMAP_PAD0 PORT_SERCOM4_PAD0_3 /* USART 4 TXD */ +#define BOARD_SERCOM4_PINMAP_PAD1 PORT_SERCOM4_PAD1_3 /* USART 4 RXD */ +#define BOARD_SERCOM4_PINMAP_PAD2 0 +#define BOARD_SERCOM4_PINMAP_PAD3 0 + +#define BOARD_SERCOM4_FREQUENCY BOARD_GCLK0_FREQUENCY + +/* LED definitions **********************************************************/ + +/* There are 2 LEDs on board the Adafruit Circuit Express board in addition + * to the neopixel LEDs. + * The power ON LED which is connected to the 3.3V rail. + * D13 which is an active high user status LED. + * + * This user LED is controlled by PA17. + */ + +/* LED index values for use with board_userled() */ + +#define BOARD_STATUS_LED 0 +#define BOARD_NLEDS 1 + +/* LED bits for use with board_userled_all() */ + +#define BOARD_STATUS LED_BIT (1 << BOARD_STATUS_LED) + +/* When CONFIG_ARCH_LEDS is defined in the NuttX configuration, NuttX will + * control the LED as defined below. Thus if the LED is statically on, NuttX + * has successfully booted and is, apparently, running normally. + * If the LED is flashing at approximately 2Hz, then a fatal error + * has been detected and the system has halted. + */ + +#define LED_STARTED 0 /* STATUS LED=OFF */ +#define LED_HEAPALLOCATE 0 /* STATUS LED=OFF */ +#define LED_IRQSENABLED 0 /* STATUS LED=OFF */ +#define LED_STACKCREATED 1 /* STATUS LED=ON */ +#define LED_INIRQ 2 /* STATUS LED=no change */ +#define LED_SIGNAL 2 /* STATUS LED=no change */ +#define LED_ASSERTION 2 /* STATUS LED=no change */ +#define LED_PANIC 3 /* STATUS LED=flashing */ + +/* Button definitions *******************************************************/ + +/* Mechanical buttons: + * + * The Adafruit Circuit Express contains 2 mechanical buttons and a switch. + */ + +#define NUM_BUTTONS 3 + +#endif /* __BOARDS_ARM_SAMD2L2_CIRCUIT_EXPRESS_INCLUDE_BOARD_H */ diff --git a/boards/arm/samd2l2/circuit-express/scripts/Make.defs b/boards/arm/samd2l2/circuit-express/scripts/Make.defs new file mode 100644 index 00000000000..dca3c457756 --- /dev/null +++ b/boards/arm/samd2l2/circuit-express/scripts/Make.defs @@ -0,0 +1,63 @@ +############################################################################ +# boards/arm/samd2l2/circuit-express/scripts/Make.defs +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +############################################################################ + +include $(TOPDIR)/.config +include $(TOPDIR)/tools/Config.mk +include $(TOPDIR)/arch/arm/src/armv6-m/Toolchain.defs + +LDSCRIPT = flash.ld + +ifeq ($(CONFIG_CYGWIN_WINTOOL),y) + ARCHSCRIPT = -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT)}" +else + ARCHSCRIPT = -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT) +endif + +ifeq ($(CONFIG_DEBUG_SYMBOLS),y) + ARCHOPTIMIZATION = -g +endif + +ifneq ($(CONFIG_DEBUG_NOOPT),y) + ARCHOPTIMIZATION += $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer +endif + +ARCHCFLAGS = -fno-builtin +ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fcheck-new -fno-rtti +ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow -Wundef +ARCHWARNINGSXX = -Wall -Wshadow -Wundef +ARCHPICFLAGS = -fpic -msingle-pic-base -mpic-register=r10 + +CFLAGS := $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe +CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS) +CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe +CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS) +CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) +AFLAGS := $(CFLAGS) -D__ASSEMBLY__ + +NXFLATLDFLAGS1 = -r -d -warn-common +NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-pcrel.ld -no-check-sections +LDNXFLATFLAGS = -e main -s 2048 + +ifneq ($(CROSSDEV),arm-nuttx-elf-) + LDFLAGS += -nostartfiles -nodefaultlibs +endif +ifeq ($(CONFIG_DEBUG_SYMBOLS),y) + LDFLAGS += -g +endif diff --git a/boards/arm/samd2l2/circuit-express/scripts/flash.ld b/boards/arm/samd2l2/circuit-express/scripts/flash.ld new file mode 100644 index 00000000000..04c873df597 --- /dev/null +++ b/boards/arm/samd2l2/circuit-express/scripts/flash.ld @@ -0,0 +1,111 @@ +/**************************************************************************** + * boards/arm/samd2l2/circuit-express/scripts/flash.ld + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* The ATSAMD21G18A has 256KB of FLASH beginning at address 0x0000:0000 and + * 32KB of SRAM beginning at address 0x2000:0000 + */ + +MEMORY +{ + flash (rx) : ORIGIN = 0x00000000, LENGTH = 256K + sram (rwx) : ORIGIN = 0x20000000, LENGTH = 32K +} + +OUTPUT_ARCH(arm) +EXTERN(_vectors) +ENTRY(_stext) + +SECTIONS +{ + .text : { + _stext = ABSOLUTE(.); + *(.vectors) + *(.text .text.*) + *(.fixup) + *(.gnu.warning) + *(.rodata .rodata.*) + *(.gnu.linkonce.t.*) + *(.glue_7) + *(.glue_7t) + *(.got) + *(.gcc_except_table) + *(.gnu.linkonce.r.*) + _etext = ABSOLUTE(.); + } > flash + + .init_section : { + _sinit = ABSOLUTE(.); + *(.init_array .init_array.*) + _einit = ABSOLUTE(.); + } > flash + + .ARM.extab : { + *(.ARM.extab*) + } >flash + + .ARM.exidx : { + __exidx_start = ABSOLUTE(.); + *(.ARM.exidx*) + __exidx_end = ABSOLUTE(.); + } >flash + + .data : { + _sdata = ABSOLUTE(.); + *(.data .data.*) + *(.gnu.linkonce.d.*) + CONSTRUCTORS + . = ALIGN(4); + _edata = ABSOLUTE(.); + } > sram AT > flash + + _eronly = LOADADDR(.data); + + .ramfunc ALIGN(4): { + _sramfuncs = ABSOLUTE(.); + *(.ramfunc .ramfunc.*) + _eramfuncs = ABSOLUTE(.); + } > sram AT > flash + + _framfuncs = LOADADDR(.ramfunc); + + .bss : { + _sbss = ABSOLUTE(.); + *(.bss .bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + . = ALIGN(4); + _ebss = ABSOLUTE(.); + } > sram + + /* Stabs debugging sections. */ + + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_info 0 : { *(.debug_info) } + .debug_line 0 : { *(.debug_line) } + .debug_pubnames 0 : { *(.debug_pubnames) } + .debug_aranges 0 : { *(.debug_aranges) } +} diff --git a/boards/arm/samd2l2/circuit-express/src/Makefile b/boards/arm/samd2l2/circuit-express/src/Makefile new file mode 100644 index 00000000000..8024baf2f56 --- /dev/null +++ b/boards/arm/samd2l2/circuit-express/src/Makefile @@ -0,0 +1,37 @@ +############################################################################ +# boards/arm/samd2l2/circuit-express/src/Makefile +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +############################################################################ + +include $(TOPDIR)/Make.defs + +CSRCS = sam_boot.c sam_bringup.c + +ifeq ($(CONFIG_ARCH_LEDS),y) +CSRCS += sam_autoleds.c +endif + +ifeq ($(CONFIG_ARCH_BUTTONS),y) +CSRCS += sam_buttons.c +endif + +ifeq ($(CONFIG_LIB_BOARDCTL),y) +CSRCS += sam_appinit.c +endif + +include $(TOPDIR)/boards/Board.mk diff --git a/boards/arm/samd2l2/circuit-express/src/circuit_express.h b/boards/arm/samd2l2/circuit-express/src/circuit_express.h new file mode 100644 index 00000000000..6967e179b97 --- /dev/null +++ b/boards/arm/samd2l2/circuit-express/src/circuit_express.h @@ -0,0 +1,102 @@ +/**************************************************************************** + * boards/arm/samd2l2/circuit-express/src/circuit_express.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __BOARDS_ARM_SAMD2L2_CIRCUIT_EXPRESS_SRC_CIRCUIT_EXPRESS_H +#define __BOARDS_ARM_SAMD2L2_CIRCUIT_EXPRESS_SRC_CIRCUIT_EXPRESS_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include + +#include + +#include +#include + +#include "sam_config.h" +#include "sam_pinmap.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* LEDs: + * There is a LED on board the Circuit Express board. + * + * This LED is controlled by PA17 and the LED can be activated by driving + * PA17 to High. + * + * When CONFIG_ARCH_LEDS is defined in the NuttX configuration, NuttX will + * control the LED as follows: + * + * SYMBOL Meaning LED + * ------------------- ----------------------- ------ + * LED_STARTED NuttX has been started OFF + * LED_HEAPALLOCATE Heap has been allocated OFF + * LED_IRQSENABLED Interrupts enabled OFF + * LED_STACKCREATED Idle stack created ON + * LED_INIRQ In an interrupt N/C + * LED_SIGNAL In a signal handler N/C + * LED_ASSERTION An assertion failed N/C + * LED_PANIC The system has crashed FLASH + * + * Thus if the LED is statically on, NuttX has successfully booted and is, + * apparently, running normally. If the LED is flashing at approximately + * 2Hz, then a fatal error has been detected and the system has halted. + */ + +#define PORT_STATUS_LED (PORT_OUTPUT | PORT_PULL_NONE | PORT_OUTPUT_SET | \ + PORTA | PORT_PIN17) + +/**************************************************************************** + * Public Types + ****************************************************************************/ + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +#ifndef __ASSEMBLY__ + +/**************************************************************************** + * Public Functions Definitions + ****************************************************************************/ + +/**************************************************************************** + * Name: sam_bringup + * + * Description: + * Perform architecture-specific initialization + * + * CONFIG_BOARD_LATE_INITIALIZE=y : + * Called from board_late_initialize(). + * + * CONFIG_BOARD_LATE_INITIALIZE=y && CONFIG_LIB_BOARDCTL=y : + * Called from the NSH library + * + ****************************************************************************/ + +int sam_bringup(void); + +#endif /* __ASSEMBLY__ */ +#endif /* __BOARDS_ARM_SAMD2L2_CIRCUIT_EXPRESS_SRC_CIRCUIT_EXPRESS_H */ diff --git a/boards/arm/samd2l2/circuit-express/src/sam_appinit.c b/boards/arm/samd2l2/circuit-express/src/sam_appinit.c new file mode 100644 index 00000000000..7730356ffa7 --- /dev/null +++ b/boards/arm/samd2l2/circuit-express/src/sam_appinit.c @@ -0,0 +1,71 @@ +/**************************************************************************** + * boards/arm/samd2l2/circuit-express/src/sam_appinit.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +#include + +#include "sam_config.h" +#include "circuit_express.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: board_app_initialize + * + * Description: + * Perform application specific initialization. This function is never + * called directly from application code, but only indirectly via the + * (non-standard) boardctl() interface using the command BOARDIOC_INIT. + * + * Input Parameters: + * arg - The boardctl() argument is passed to the board_app_initialize() + * implementation without modification. The argument has no + * meaning to NuttX; the meaning of the argument is a contract + * between the board-specific initialization logic and the + * matching application logic. The value could be such things as a + * mode enumeration value, a set of DIP switch switch settings, a + * pointer to configuration data read from a file or serial FLASH, + * or whatever you would like to do with it. Every implementation + * should accept zero/NULL as a default configuration. + * + * Returned Value: + * Zero (OK) is returned on success; a negated errno value is returned on + * any failure to indicate the nature of the failure. + * + ****************************************************************************/ + +int board_app_initialize(uintptr_t arg) +{ + return OK; +} diff --git a/boards/arm/samd2l2/circuit-express/src/sam_autoleds.c b/boards/arm/samd2l2/circuit-express/src/sam_autoleds.c new file mode 100644 index 00000000000..273a3e088f8 --- /dev/null +++ b/boards/arm/samd2l2/circuit-express/src/sam_autoleds.c @@ -0,0 +1,138 @@ +/**************************************************************************** + * boards/arm/samd2l2/circuit-express/src/sam_autoleds.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* There is a LED on board the Circuit Express board. + * + * When CONFIG_ARCH_LEDS is defined in the NuttX configuration, NuttX will + * control the LED as follows: + * + * SYMBOL Meaning LED + * ------------------- ----------------------- ------ + * LED_STARTED NuttX has been started OFF + * LED_HEAPALLOCATE Heap has been allocated OFF + * LED_IRQSENABLED Interrupts enabled OFF + * LED_STACKCREATED Idle stack created ON + * LED_INIRQ In an interrupt** N/C + * LED_SIGNAL In a signal handler*** N/C + * LED_ASSERTION An assertion failed N/C + * LED_PANIC The system has crashed FLASH + * + * Thus if the LED is statically on, NuttX has successfully booted and is, + * apparently, running normally. If the LED is flashing at approximately + * 2Hz, then a fatal error has been detected and the system has halted. + */ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include + +#include +#include + +#include "sam_port.h" +#include "circuit_express.h" + +#ifdef CONFIG_ARCH_LEDS + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: board_autoled_initialize + ****************************************************************************/ + +void board_autoled_initialize(void) +{ + sam_configport(PORT_STATUS_LED); +} + +/**************************************************************************** + * Name: board_autoled_on + ****************************************************************************/ + +void board_autoled_on(int led) +{ + switch (led) + { + case 0: /* LED_STARTED: NuttX has been started STATUS LED=OFF + * LED_HEAPALLOCATE: Heap has been allocated STATUS LED=OFF + * LED_IRQSENABLED: Interrupts enabled STATUS LED=OFF + */ + + break; /* Leave ledstate == true to turn OFF */ + + default: + case 2: /* LED_INIRQ: In an interrupt STATUS LED=N/C + * LED_SIGNAL: In a signal handler STATUS LED=N/C + * LED_ASSERTION: An assertion failed STATUS LED=N/C + */ + + return; /* Return to leave STATUS LED unchanged */ + + case 3: /* LED_PANIC: The system has crashed STATUS LED=FLASH */ + case 1: /* LED_STACKCREATED: Idle stack created STATUS LED=ON */ + sam_portwrite(PORT_STATUS_LED, true); + break; + } +} + +/**************************************************************************** + * Name: board_autoled_off + ****************************************************************************/ + +void board_autoled_off(int led) +{ + switch (led) + { + /* These should not happen and are ignored */ + + default: + case 0: /* LED_STARTED: NuttX has been started STATUS LED=OFF + * LED_HEAPALLOCATE: Heap has been allocated STATUS LED=OFF + * LED_IRQSENABLED: Interrupts enabled STATUS LED=OFF + */ + + case 1: /* LED_STACKCREATED: Idle stack created STATUS LED=ON */ + + /* These result in no-change */ + + case 2: /* LED_INIRQ: In an interrupt STATUS LED=N/C + * LED_SIGNAL: In a signal handler STATUS LED=N/C + * LED_ASSERTION: An assertion failed STATUS LED=N/C + */ + + return; /* Return to leave STATUS LED unchanged */ + + /* Turn STATUS LED off set driving the output high */ + + case 3: /* LED_PANIC: The system has crashed STATUS LED=FLASH */ + sam_portwrite(PORT_STATUS_LED, false); + break; + } +} + +#endif /* CONFIG_ARCH_LEDS */ diff --git a/boards/arm/samd2l2/circuit-express/src/sam_boot.c b/boards/arm/samd2l2/circuit-express/src/sam_boot.c new file mode 100644 index 00000000000..e45589e432d --- /dev/null +++ b/boards/arm/samd2l2/circuit-express/src/sam_boot.c @@ -0,0 +1,86 @@ +/**************************************************************************** + * boards/arm/samd2l2/circuit-express/src/sam_boot.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include + +#include + +#include "sam_config.h" +#include "circuit_express.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: sam_boardinitialize + * + * Description: + * All SAMD21 architectures must provide the following entry point. + * This entry point is called early in the initialization -- after all + * memory has been configured and mapped but before any devices have been + * initialized. + * + ****************************************************************************/ + +void sam_boardinitialize(void) +{ + /* Configure on-board LEDs if LED support has been selected. */ + +#ifdef CONFIG_ARCH_LEDS + board_autoled_initialize(); +#endif +} + +/**************************************************************************** + * Name: board_late_initialize + * + * Description: + * If CONFIG_BOARD_LATE_INITIALIZE is selected, then an additional + * initialization call will be performed in the boot-up sequence to a + * function called board_late_initialize(). board_late_initialize() will be + * called immediately after up_intitialize() is called and just before the + * initial application is started. This additional initialization phase + * may be used, for example, to initialize board-specific device drivers. + * + ****************************************************************************/ + +#ifdef CONFIG_BOARD_LATE_INITIALIZE +void board_late_initialize(void) +{ + /* Perform board initialization */ + + (void)sam_bringup(); +} +#endif /* CONFIG_BOARD_LATE_INITIALIZE */ diff --git a/boards/arm/samd2l2/circuit-express/src/sam_bringup.c b/boards/arm/samd2l2/circuit-express/src/sam_bringup.c new file mode 100644 index 00000000000..7e281a986f6 --- /dev/null +++ b/boards/arm/samd2l2/circuit-express/src/sam_bringup.c @@ -0,0 +1,60 @@ +/**************************************************************************** + * boards/arm/samd2l2/circuit-express/src/sam_bringup.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +#include + +#include "sam_config.h" +#include "circuit_express.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: sam_bringup + * + * Description: + * Bring up board features + * + ****************************************************************************/ + +int sam_bringup(void) +{ + int ret = OK; + + return ret; +} From 4a2d4c1950e6c111daf1cf2932239547196a4d11 Mon Sep 17 00:00:00 2001 From: Brennan Ashton Date: Sat, 15 May 2021 23:45:48 -0700 Subject: [PATCH 123/739] board/circuit-express: Add usbnsh configuration --- .../circuit-express/configs/usbnsh/defconfig | 66 ++++++++++++++ .../samd2l2/circuit-express/include/board.h | 14 +++ .../arm/samd2l2/circuit-express/src/Makefile | 4 + .../arm/samd2l2/circuit-express/src/sam_usb.c | 87 +++++++++++++++++++ 4 files changed, 171 insertions(+) create mode 100644 boards/arm/samd2l2/circuit-express/configs/usbnsh/defconfig create mode 100644 boards/arm/samd2l2/circuit-express/src/sam_usb.c diff --git a/boards/arm/samd2l2/circuit-express/configs/usbnsh/defconfig b/boards/arm/samd2l2/circuit-express/configs/usbnsh/defconfig new file mode 100644 index 00000000000..b612d0509c6 --- /dev/null +++ b/boards/arm/samd2l2/circuit-express/configs/usbnsh/defconfig @@ -0,0 +1,66 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_DISABLE_POSIX_TIMERS is not set +# CONFIG_NSH_DISABLEBG is not set +# CONFIG_NSH_DISABLESCRIPT is not set +# CONFIG_NSH_DISABLE_CMP is not set +# CONFIG_NSH_DISABLE_DD is not set +# CONFIG_NSH_DISABLE_EXEC is not set +# CONFIG_NSH_DISABLE_EXIT is not set +# CONFIG_NSH_DISABLE_GET is not set +# CONFIG_NSH_DISABLE_HEXDUMP is not set +# CONFIG_NSH_DISABLE_IFCONFIG is not set +# CONFIG_NSH_DISABLE_ITEF is not set +# CONFIG_NSH_DISABLE_LOOPS is not set +# CONFIG_NSH_DISABLE_LOSETUP is not set +# CONFIG_NSH_DISABLE_MB is not set +# CONFIG_NSH_DISABLE_MKRD is not set +# CONFIG_NSH_DISABLE_PS is not set +# CONFIG_NSH_DISABLE_PUT is not set +# CONFIG_NSH_DISABLE_SEMICOLON is not set +# CONFIG_NSH_DISABLE_WGET is not set +# CONFIG_NSH_DISABLE_XD is not set +CONFIG_ARCH="arm" +CONFIG_ARCH_BOARD="circuit-express" +CONFIG_ARCH_BOARD_CIRCUIT_EXPRESS=y +CONFIG_ARCH_CHIP="samd2l2" +CONFIG_ARCH_CHIP_SAMD21G18A=y +CONFIG_ARCH_CHIP_SAMD2X=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARD_LOOPSPERMSEC=3410 +CONFIG_BUILTIN=y +CONFIG_CDCACM=y +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DEFAULT_SMALL=y +CONFIG_MAX_TASKS=16 +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_USBCONSOLE=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_PTHREAD_STACK_DEFAULT=1536 +CONFIG_RAM_SIZE=32768 +CONFIG_RAM_START=0x20000000 +CONFIG_RAW_BINARY=y +CONFIG_RR_INTERVAL=200 +CONFIG_SAMD2L2_SERCOM4=y +CONFIG_SAMD2L2_USB=y +CONFIG_SCHED_WAITPID=y +CONFIG_SDCLONE_DISABLE=y +CONFIG_STACK_COLORATION=y +CONFIG_START_DAY=21 +CONFIG_START_MONTH=6 +CONFIG_START_YEAR=2015 +CONFIG_SYSTEM_NSH=y +CONFIG_TASK_NAME_SIZE=0 +CONFIG_TASK_SPAWN_DEFAULT_STACKSIZE=1536 +CONFIG_USART4_RXBUFSIZE=64 +CONFIG_USART4_SERIAL_CONSOLE=y +CONFIG_USART4_TXBUFSIZE=64 +CONFIG_USBDEV=y +CONFIG_USERMAIN_STACKSIZE=1536 +CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/arm/samd2l2/circuit-express/include/board.h b/boards/arm/samd2l2/circuit-express/include/board.h index 884c3052f96..f55fc80c7e8 100644 --- a/boards/arm/samd2l2/circuit-express/include/board.h +++ b/boards/arm/samd2l2/circuit-express/include/board.h @@ -349,6 +349,20 @@ #define BOARD_SERCOM4_FREQUENCY BOARD_GCLK0_FREQUENCY +/* USB definitions **********************************************************/ + +/* This is the source clock generator for the GCLK_USB clock + */ + +#define BOARD_USB_GCLKGEN 0 +#define BOARD_USB_FREQUENCY BOARD_GCLK0_FREQUENCY + +/* default USB Pad calibration (not used yet by USB driver) */ + +#define BOARD_USB_PADCAL_P 29 +#define BOARD_USB_PADCAL_N 5 +#define BOARD_USB_PADCAL_TRIM 3 + /* LED definitions **********************************************************/ /* There are 2 LEDs on board the Adafruit Circuit Express board in addition diff --git a/boards/arm/samd2l2/circuit-express/src/Makefile b/boards/arm/samd2l2/circuit-express/src/Makefile index 8024baf2f56..e210f706aea 100644 --- a/boards/arm/samd2l2/circuit-express/src/Makefile +++ b/boards/arm/samd2l2/circuit-express/src/Makefile @@ -34,4 +34,8 @@ ifeq ($(CONFIG_LIB_BOARDCTL),y) CSRCS += sam_appinit.c endif +ifeq ($(CONFIG_USBDEV),y) +CSRCS += sam_usb.c +endif + include $(TOPDIR)/boards/Board.mk diff --git a/boards/arm/samd2l2/circuit-express/src/sam_usb.c b/boards/arm/samd2l2/circuit-express/src/sam_usb.c new file mode 100644 index 00000000000..eed0eca887b --- /dev/null +++ b/boards/arm/samd2l2/circuit-express/src/sam_usb.c @@ -0,0 +1,87 @@ +/**************************************************************************** + * boards/arm/samd2l2/circuit-express/src/sam_usb.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "debug.h" +#include "chip.h" +#include "sam_port.h" +#include "saml_periphclks.h" +#include "circuit_express.h" + +#if defined(CONFIG_SAMD2L2_USB) + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: sam_usbinitialize + * + * Description: + * Called from sam_boot very early in initialization to setup + * USB-related GPIO pins for the Circuit Express board. + * + * USB Ports + * The SAML21 features USB device and host: + * + * + ****************************************************************************/ + +void weak_function sam_usbinitialize(void) +{ +} + +/**************************************************************************** + * Name: sam_usbsuspend + * + * Description: + * Board logic must provide the sam_usbsuspend logic if the USBDEV driver + * is used. + * This function is called whenever the USB enters or leaves suspend mode. + * This is an opportunity for the board logic to shutdown clocks, power, + * etc. while the USB is suspended. + * + ****************************************************************************/ + +#ifdef CONFIG_USBDEV +void sam_usb_suspend(FAR struct usbdev_s *dev, bool resume) +{ + uinfo("board: resume: %d\n", resume); +} +#endif + +#endif /* CONFIG_SAMDL_USB */ From 09a0ed111c0c193a57b2a538e23c2b6a6e9cdf26 Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Thu, 13 May 2021 21:28:43 +0800 Subject: [PATCH 124/739] tools/ci: Rename sim0x.dat to sim-0x.dat to align with arm-xx.dat To avoid the build break sim0x.dat will remove in the upcoming patch Signed-off-by: Xiang Xiao --- .github/workflows/build.yml | 2 +- tools/ci/testlist/sim-01.dat | 23 +++++++++++++++++++++++ tools/ci/testlist/sim-02.dat | 10 ++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 tools/ci/testlist/sim-01.dat create mode 100644 tools/ci/testlist/sim-02.dat diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2c02fa1c13e..a678126da2d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -114,7 +114,7 @@ jobs: strategy: matrix: - boards: [arm-01, arm-02, arm-03, arm-04, arm-05, arm-06, arm-07, arm-08, arm-09, arm-10, arm-11, arm-12, arm-13, other, risc-v, sim01, sim02, xtensa] + boards: [arm-01, arm-02, arm-03, arm-04, arm-05, arm-06, arm-07, arm-08, arm-09, arm-10, arm-11, arm-12, arm-13, other, risc-v, sim-01, sim-02, xtensa] steps: - name: Download Source Artifact diff --git a/tools/ci/testlist/sim-01.dat b/tools/ci/testlist/sim-01.dat new file mode 100644 index 00000000000..bb9292aa66d --- /dev/null +++ b/tools/ci/testlist/sim-01.dat @@ -0,0 +1,23 @@ +/sim/*/*/*/[a-n]* + +# macOS doesn't have ALSA +-Darwin,sim:alsa + +-Darwin,sim:cxxtest +-Darwin,sim:libcxxtest + +# Do not build Linux configs +-Darwin,sim:linuxi2c + +# macOS doesn't support 32bit(CONFIG_SIM_M32=y) anymore +-Darwin,sim:elf +-Darwin,sim:foc +-Darwin,sim:loadable +-Darwin,sim:module32 + +# macOS doesn't have X11 +-Darwin,sim:lvgl +-Darwin,sim:nsh2 +-Darwin,sim:nx11 +-Darwin,sim:nxlines +-Darwin,sim:nxwm diff --git a/tools/ci/testlist/sim-02.dat b/tools/ci/testlist/sim-02.dat new file mode 100644 index 00000000000..1974acb1962 --- /dev/null +++ b/tools/ci/testlist/sim-02.dat @@ -0,0 +1,10 @@ +/sim/*/*/*/[o-z]* + +# macOS doesn't support 32bit anymore(CONFIG_SIM_M32=y) +-Darwin,sim:posix_spawn +-Darwin,sim:rpproxy +-Darwin,sim:rpserver +-Darwin,sim:sotest32 + +# macOS doesn't have X11 +-Darwin,sim:touchscreen From 4c74f46afe6f5680b13d81ebab55386b0b7ea7c0 Mon Sep 17 00:00:00 2001 From: "Alan C. Assis" Date: Sat, 15 May 2021 15:39:27 -0300 Subject: [PATCH 125/739] Add basic support for MCP23017 I/O Expander --- drivers/ioexpander/Kconfig | 44 ++ drivers/ioexpander/Make.defs | 4 + drivers/ioexpander/mcp23x17.c | 995 ++++++++++++++++++++++++++++ drivers/ioexpander/mcp23x17.h | 175 +++++ include/nuttx/ioexpander/mcp23x17.h | 108 +++ 5 files changed, 1326 insertions(+) create mode 100644 drivers/ioexpander/mcp23x17.c create mode 100644 drivers/ioexpander/mcp23x17.h create mode 100644 include/nuttx/ioexpander/mcp23x17.h diff --git a/drivers/ioexpander/Kconfig b/drivers/ioexpander/Kconfig index f0995241b4b..487036845c2 100644 --- a/drivers/ioexpander/Kconfig +++ b/drivers/ioexpander/Kconfig @@ -14,6 +14,50 @@ config IOEXPANDER if IOEXPANDER +config IOEXPANDER_MCP23X17 + bool "MCP23017/MCP23S17 I2C/SPI IO expander" + default n + depends on I2C + ---help--- + Enable support for the MCP23017/MCP23S17 IO Expander + +if IOEXPANDER_MCP23X17 + +config MCP23X17_MULTIPLE + bool "Multiple MCP23x17 Devices" + default n + ---help--- + Can be defined to support multiple MCP23x17 devices on board. + +config MCP23X17_INT_ENABLE + bool "Enable MCP23x17 Interrupt Support" + default n + select IOEXPANDER_INT_ENABLE + ---help--- + Enable driver interrupt functionality + +config MCP23X17_INT_NCALLBACKS + int "Max number of interrupt callbacks" + default 4 + depends on MCP23X17_INT_ENABLE + ---help--- + This is the maximum number of interrupt callbacks supported + +config MCP23X17_INT_POLL + bool "Enable interrupt poll" + default n + ---help--- + Enable polling for missed interrupts. + +config MCP23X17_INT_POLLDELAY + int "Interrupt poll delay (used)" + default 500000 + depends on MCP23X17_INT_POLL + ---help--- + This microsecond delay defines the polling rate for missed interrupts. + +endif # IOEXPANDER_MCP23X17 + config IOEXPANDER_PCA9555 bool "PCA9555 I2C IO expander" default n diff --git a/drivers/ioexpander/Make.defs b/drivers/ioexpander/Make.defs index 866a131aeef..fcedba5f098 100644 --- a/drivers/ioexpander/Make.defs +++ b/drivers/ioexpander/Make.defs @@ -40,6 +40,10 @@ ifeq ($(CONFIG_IOEXPANDER_PCF8574),y) CSRCS += pcf8574.c endif +ifeq ($(CONFIG_IOEXPANDER_MCP23X17),y) + CSRCS += mcp23x17.c +endif + endif # CONFIG_IOEXPANDER # GPIO test device driver (independent of IOEXPANDERS) diff --git a/drivers/ioexpander/mcp23x17.c b/drivers/ioexpander/mcp23x17.c new file mode 100644 index 00000000000..ec1620e3625 --- /dev/null +++ b/drivers/ioexpander/mcp23x17.c @@ -0,0 +1,995 @@ +/**************************************************************************** + * drivers/ioexpander/mcp23x17.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include "mcp23x17.h" + +#if defined(CONFIG_IOEXPANDER_MCP23X17) + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#ifndef CONFIG_I2C +# warning I2C support is required (CONFIG_I2C) +#endif + +#ifndef CONFIG_SCHED_WORKQUEUE +# error Work queue support is required (CONFIG_SCHED_WORKQUEUE) +#endif + +#ifndef CONFIG_SCHED_HPWORK +# error High-Priority Work support is required (CONFIG_SCHED_HPWORK) +#endif + +/**************************************************************************** + * Private Function Prototypes + ****************************************************************************/ + +static inline int mcp23x17_write(FAR struct mcp23x17_dev_s *priv, + FAR const uint8_t *wbuffer, int wbuflen); +static inline int mcp23x17_writeread(FAR struct mcp23x17_dev_s *priv, + FAR const uint8_t *wbuffer, int wbuflen, FAR uint8_t *rbuffer, + int rbuflen); +static int mcp23x17_direction(FAR struct ioexpander_dev_s *dev, uint8_t pin, + int dir); +static int mcp23x17_option(FAR struct ioexpander_dev_s *dev, uint8_t pin, + int opt, void *val); +static int mcp23x17_writepin(FAR struct ioexpander_dev_s *dev, uint8_t pin, + bool value); +static int mcp23x17_readpin(FAR struct ioexpander_dev_s *dev, uint8_t pin, + FAR bool *value); +static int mcp23x17_readbuf(FAR struct ioexpander_dev_s *dev, uint8_t pin, + FAR bool *value); +#ifdef CONFIG_IOEXPANDER_MULTIPIN +static int mcp23x17_multiwritepin(FAR struct ioexpander_dev_s *dev, + FAR uint8_t *pins, FAR bool *values, int count); +static int mcp23x17_multireadpin(FAR struct ioexpander_dev_s *dev, + FAR uint8_t *pins, FAR bool *values, int count); +static int mcp23x17_multireadbuf(FAR struct ioexpander_dev_s *dev, + FAR uint8_t *pins, FAR bool *values, int count); +#endif +#ifdef CONFIG_IOEXPANDER_INT_ENABLE +static FAR void *mcp23x17_attach(FAR struct ioexpander_dev_s *dev, + ioe_pinset_t pinset, ioe_callback_t callback, FAR void *arg); +static int mcp23x17_detach(FAR struct ioexpander_dev_s *dev, + FAR void *handle); +#endif + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +#ifndef CONFIG_MCP23X17_MULTIPLE +/* If only a single MCP23X17 device is supported, then the driver state + * structure may as well be pre-allocated. + */ + +static struct mcp23x17_dev_s g_mcp23x17; + +/* Otherwise, we will need to maintain allocated driver instances in a list */ + +#else +static struct mcp23x17_dev_s *g_mcp23x17list; +#endif + +/* I/O expander vtable */ + +static const struct ioexpander_ops_s g_mcp23x17_ops = +{ + mcp23x17_direction, + mcp23x17_option, + mcp23x17_writepin, + mcp23x17_readpin, + mcp23x17_readbuf +#ifdef CONFIG_IOEXPANDER_MULTIPIN + , mcp23x17_multiwritepin + , mcp23x17_multireadpin + , mcp23x17_multireadbuf +#endif +#ifdef CONFIG_IOEXPANDER_INT_ENABLE + , mcp23x17_attach + , mcp23x17_detach +#endif +}; + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: mcp23x17_lock + * + * Description: + * Get exclusive access to the MCP23X17 + * + ****************************************************************************/ + +static int mcp23x17_lock(FAR struct mcp23x17_dev_s *priv) +{ + return nxsem_wait_uninterruptible(&priv->exclsem); +} + +#define mcp23x17_unlock(p) nxsem_post(&(p)->exclsem) + +/**************************************************************************** + * Name: mcp23x17_write + * + * Description: + * Write to the I2C device. + * + ****************************************************************************/ + +static inline int mcp23x17_write(FAR struct mcp23x17_dev_s *priv, + FAR const uint8_t *wbuffer, int wbuflen) +{ + struct i2c_msg_s msg; + int ret; + + /* Setup for the transfer */ + + msg.frequency = priv->config->frequency; + msg.addr = priv->config->address; + msg.flags = 0; + msg.buffer = (FAR uint8_t *)wbuffer; /* Override const */ + msg.length = wbuflen; + + /* Then perform the transfer. */ + + ret = I2C_TRANSFER(priv->i2c, &msg, 1); + return (ret >= 0) ? OK : ret; +} + +/**************************************************************************** + * Name: mcp23x17_writeread + * + * Description: + * Write to then read from the I2C device. + * + ****************************************************************************/ + +static inline int mcp23x17_writeread(FAR struct mcp23x17_dev_s *priv, + FAR const uint8_t *wbuffer, int wbuflen, + FAR uint8_t *rbuffer, int rbuflen) +{ + struct i2c_config_s config; + + /* Set up the configuration and perform the write-read operation */ + + config.frequency = priv->config->frequency; + config.address = priv->config->address; + config.addrlen = 7; + + return i2c_writeread(priv->i2c, &config, wbuffer, wbuflen, + rbuffer, rbuflen); +} + +/**************************************************************************** + * Name: mcp23x17_setbit + * + * Description: + * Write a bit in a register pair + * + ****************************************************************************/ + +static int mcp23x17_setbit(FAR struct mcp23x17_dev_s *priv, uint8_t addr, + uint8_t pin, int bitval) +{ + uint8_t buf[2]; + int ret; + + if (pin > 15) + { + return -ENXIO; + } + else if (pin > 7) + { + addr += 1; + pin -= 8; + } + + buf[0] = addr; + +#ifdef CONFIG_MCP23X17_SHADOW_MODE + /* Get the shadowed register value */ + + buf[1] = priv->sreg[addr]; + +#else + /* Get the register value from the IO-Expander */ + + ret = mcp23x17_writeread(priv, &buf[0], 1, &buf[1], 1); + if (ret < 0) + { + return ret; + } +#endif + + if (bitval) + { + buf[1] |= (1 << pin); + } + else + { + buf[1] &= ~(1 << pin); + } + +#ifdef CONFIG_MCP23X17_SHADOW_MODE + /* Save the new register value in the shadow register */ + + priv->sreg[addr] = buf[1]; +#endif + + ret = mcp23x17_write(priv, buf, 2); +#ifdef CONFIG_MCP23X17_RETRY + if (ret != OK) + { + /* Try again (only once) */ + + ret = mcp23x17_write(priv, buf, 2); + } +#endif + + return ret; +} + +/**************************************************************************** + * Name: mcp23x17_getbit + * + * Description: + * Get a bit from a register pair + * + ****************************************************************************/ + +static int mcp23x17_getbit(FAR struct mcp23x17_dev_s *priv, uint8_t addr, + uint8_t pin, FAR bool *val) +{ + uint8_t buf; + int ret; + + if (pin > 15) + { + return -ENXIO; + } + else if (pin > 7) + { + addr += 1; + pin -= 8; + } + + ret = mcp23x17_writeread(priv, &addr, 1, &buf, 1); + if (ret < 0) + { + return ret; + } + +#ifdef CONFIG_MCP23X17_SHADOW_MODE + /* Save the new register value in the shadow register */ + + priv->sreg[addr] = buf; +#endif + + *val = (buf >> pin) & 1; + return OK; +} + +/**************************************************************************** + * Name: mcp23x17_direction + * + * Description: + * Set the direction of an ioexpander pin. Required. + * + * Input Parameters: + * dev - Device-specific state data + * pin - The index of the pin to alter in this call + * dir - One of the IOEXPANDER_DIRECTION_ macros + * + * Returned Value: + * 0 on success, else a negative error code + * + ****************************************************************************/ + +static int mcp23x17_direction(FAR struct ioexpander_dev_s *dev, uint8_t pin, + int direction) +{ + FAR struct mcp23x17_dev_s *priv = (FAR struct mcp23x17_dev_s *)dev; + int ret; + + if (direction != IOEXPANDER_DIRECTION_IN && + direction != IOEXPANDER_DIRECTION_OUT) + { + return -EINVAL; + } + + /* Get exclusive access to the MCP23X17 */ + + ret = mcp23x17_lock(priv); + if (ret < 0) + { + return ret; + } + + ret = mcp23x17_setbit(priv, MCP23X17_IODIRA, pin, + (direction == IOEXPANDER_DIRECTION_IN)); + mcp23x17_unlock(priv); + return ret; +} + +/**************************************************************************** + * Name: mcp23x17_option + * + * Description: + * Set pin options. Required. + * Since all IO expanders have various pin options, this API allows setting + * pin options in a flexible way. + * + * Input Parameters: + * dev - Device-specific state data + * pin - The index of the pin to alter in this call + * opt - One of the IOEXPANDER_OPTION_ macros + * val - The option's value + * + * Returned Value: + * 0 on success, else a negative error code + * + ****************************************************************************/ + +static int mcp23x17_option(FAR struct ioexpander_dev_s *dev, uint8_t pin, + int opt, FAR void *val) +{ + FAR struct mcp23x17_dev_s *priv = (FAR struct mcp23x17_dev_s *)dev; + int ret = -EINVAL; + + if (opt == IOEXPANDER_OPTION_INVERT) + { + int ival = (int)((intptr_t)val); + + /* Get exclusive access to the MCP23X17 */ + + ret = mcp23x17_lock(priv); + if (ret < 0) + { + return ret; + } + + ret = mcp23x17_setbit(priv, MCP23X17_IPOLA, pin, ival); + mcp23x17_unlock(priv); + } + + return ret; +} + +/**************************************************************************** + * Name: mcp23x17_writepin + * + * Description: + * Set the pin level. Required. + * + * Input Parameters: + * dev - Device-specific state data + * pin - The index of the pin to alter in this call + * val - The pin level. Usually TRUE will set the pin high, + * except if OPTION_INVERT has been set on this pin. + * + * Returned Value: + * 0 on success, else a negative error code + * + ****************************************************************************/ + +static int mcp23x17_writepin(FAR struct ioexpander_dev_s *dev, uint8_t pin, + bool value) +{ + FAR struct mcp23x17_dev_s *priv = (FAR struct mcp23x17_dev_s *)dev; + int ret; + + /* Get exclusive access to the MCP23X17 */ + + ret = mcp23x17_lock(priv); + if (ret < 0) + { + return ret; + } + + ret = mcp23x17_setbit(priv, MCP23X17_GPIOA, pin, value); + mcp23x17_unlock(priv); + return ret; +} + +/**************************************************************************** + * Name: mcp23x17_readpin + * + * Description: + * Read the actual PIN level. This can be different from the last value + * written to this pin. Required. + * + * Input Parameters: + * dev - Device-specific state data + * pin - The index of the pin + * valptr - Pointer to a buffer where the pin level is stored. Usually TRUE + * if the pin is high, except if OPTION_INVERT has been set on + * this pin. + * + * Returned Value: + * 0 on success, else a negative error code + * + ****************************************************************************/ + +static int mcp23x17_readpin(FAR struct ioexpander_dev_s *dev, uint8_t pin, + FAR bool *value) +{ + FAR struct mcp23x17_dev_s *priv = (FAR struct mcp23x17_dev_s *)dev; + int ret; + + /* Get exclusive access to the MCP23X17 */ + + ret = mcp23x17_lock(priv); + if (ret < 0) + { + return ret; + } + + ret = mcp23x17_getbit(priv, MCP23X17_GPIOA, pin, value); + + mcp23x17_unlock(priv); + return ret; +} + +/**************************************************************************** + * Name: mcp23x17_readbuf + * + * Description: + * Read the buffered pin level. + * This can be different from the actual pin state. Required. + * + * Input Parameters: + * dev - Device-specific state data + * pin - The index of the pin + * valptr - Pointer to a buffer where the level is stored. + * + * Returned Value: + * 0 on success, else a negative error code + * + ****************************************************************************/ + +static int mcp23x17_readbuf(FAR struct ioexpander_dev_s *dev, uint8_t pin, + FAR bool *value) +{ + FAR struct mcp23x17_dev_s *priv = (FAR struct mcp23x17_dev_s *)dev; + int ret; + + /* Get exclusive access to the MCP23X17 */ + + ret = mcp23x17_lock(priv); + if (ret < 0) + { + return ret; + } + + ret = mcp23x17_getbit(priv, MCP23X17_GPIOA, pin, value); + mcp23x17_unlock(priv); + return ret; +} + +#ifdef CONFIG_IOEXPANDER_MULTIPIN + +/**************************************************************************** + * Name: mcp23x17_getmultibits + * + * Description: + * Read multiple bits from MCP23X17 registers. + * + ****************************************************************************/ + +static int mcp23x17_getmultibits(FAR struct mcp23x17_dev_s *priv, + uint8_t addr, + FAR uint8_t *pins, + FAR bool *values, + int count) +{ + uint8_t buf[2]; + int ret = OK; + int i; + int index; + int pin; + + ret = mcp23x17_writeread(priv, &addr, 1, buf, 2); + if (ret < 0) + { + return ret; + } + +#ifdef CONFIG_MCP23X17_SHADOW_MODE + /* Save the new register value in the shadow register */ + + priv->sreg[addr] = buf[0]; + priv->sreg[addr + 1] = buf[1]; +#endif + + /* Read the requested bits */ + + for (i = 0; i < count; i++) + { + index = 0; + pin = pins[i]; + if (pin > 15) + { + return -ENXIO; + } + else if (pin > 7) + { + index = 1; + pin -= 8; + } + + values[i] = (buf[index] >> pin) & 1; + } + + return OK; +} + +/**************************************************************************** + * Name: mcp23x17_multiwritepin + * + * Description: + * Set the pin level for multiple pins. This routine may be faster than + * individual pin accesses. Optional. + * + * Input Parameters: + * dev - Device-specific state data + * pins - The list of pin indexes to alter in this call + * val - The list of pin levels. + * + * Returned Value: + * 0 on success, else a negative error code + * + ****************************************************************************/ + +static int mcp23x17_multiwritepin(FAR struct ioexpander_dev_s *dev, + FAR uint8_t *pins, FAR bool *values, + int count) +{ + FAR struct mcp23x17_dev_s *priv = (FAR struct mcp23x17_dev_s *)dev; + uint8_t addr = MCP23X17_GPIOA; + uint8_t buf[3]; + int ret; + int i; + int index; + int pin; + + /* Get exclusive access to the MCP23X17 */ + + ret = mcp23x17_lock(priv); + if (ret < 0) + { + return ret; + } + + /* Start by reading both registers, whatever the pins to change. We could + * attempt to read one port only if all pins were on the same port, but + * this would not save much. + */ + +#ifndef CONFIG_MCP23X17_SHADOW_MODE + ret = mcp23x17_writeread(priv, &addr, 1, &buf[1], 2); + if (ret < 0) + { + mcp23x17_unlock(priv); + return ret; + } +#else + /* In Shadow-Mode we "read" the pin status from the shadow registers */ + + buf[1] = priv->sreg[addr]; + buf[2] = priv->sreg[addr + 1]; +#endif + + /* Apply the user defined changes */ + + for (i = 0; i < count; i++) + { + index = 1; + pin = pins[i]; + if (pin > 15) + { + mcp23x17_unlock(priv); + return -ENXIO; + } + else if (pin > 7) + { + index = 2; + pin -= 8; + } + + if (values[i]) + { + buf[index] |= (1 << pin); + } + else + { + buf[index] &= ~(1 << pin); + } + } + + /* Now write back the new pins states */ + + buf[0] = addr; +#ifdef CONFIG_MCP23X17_SHADOW_MODE + /* Save the new register values in the shadow register */ + + priv->sreg[addr] = buf[1]; + priv->sreg[addr + 1] = buf[2]; +#endif + ret = mcp23x17_write(priv, buf, 3); + + mcp23x17_unlock(priv); + return ret; +} + +/**************************************************************************** + * Name: mcp23x17_multireadpin + * + * Description: + * Read the actual level for multiple pins. This routine may be faster than + * individual pin accesses. Optional. + * + * Input Parameters: + * dev - Device-specific state data + * pin - The list of pin indexes to read + * valptr - Pointer to a buffer where the pin levels are stored. + * + * Returned Value: + * 0 on success, else a negative error code + * + ****************************************************************************/ + +static int mcp23x17_multireadpin(FAR struct ioexpander_dev_s *dev, + FAR uint8_t *pins, FAR bool *values, + int count) +{ + FAR struct mcp23x17_dev_s *priv = (FAR struct mcp23x17_dev_s *)dev; + int ret; + + /* Get exclusive access to the MCP23X17 */ + + ret = mcp23x17_lock(priv); + if (ret < 0) + { + return ret; + } + + ret = mcp23x17_getmultibits(priv, MCP23X17_GPIOA, + pins, values, count); + mcp23x17_unlock(priv); + return ret; +} + +/**************************************************************************** + * Name: mcp23x17_multireadbuf + * + * Description: + * Read the buffered level of multiple pins. This routine may be faster + * than individual pin accesses. Optional. + * + * Input Parameters: + * dev - Device-specific state data + * pin - The index of the pin + * valptr - Pointer to a buffer where the buffered levels are stored. + * + * Returned Value: + * 0 on success, else a negative error code + * + ****************************************************************************/ + +static int mcp23x17_multireadbuf(FAR struct ioexpander_dev_s *dev, + FAR uint8_t *pins, FAR bool *values, + int count) +{ + FAR struct mcp23x17_dev_s *priv = (FAR struct mcp23x17_dev_s *)dev; + int ret; + + /* Get exclusive access to the MCP23X17 */ + + ret = mcp23x17_lock(priv); + if (ret < 0) + { + return ret; + } + + ret = mcp23x17_getmultibits(priv, MCP23X17_GPIOA, + pins, values, count); + mcp23x17_unlock(priv); + return ret; +} + +#endif + +#ifdef CONFIG_MCP23X17_INT_ENABLE + +/**************************************************************************** + * Name: mcp23x17_attach + * + * Description: + * Attach and enable a pin interrupt callback function. + * + * Input Parameters: + * dev - Device-specific state data + * pinset - The set of pin events that will generate the callback + * callback - The pointer to callback function. NULL will detach the + * callback. + * arg - User-provided callback argument + * + * Returned Value: + * A non-NULL handle value is returned on success. This handle may be + * used later to detach and disable the pin interrupt. + * + ****************************************************************************/ + +static FAR void *mcp23x17_attach(FAR struct ioexpander_dev_s *dev, + ioe_pinset_t pinset, + ioe_callback_t callback, + FAR void *arg) +{ + FAR struct mcp23x17_dev_s *priv = (FAR struct mcp23x17_dev_s *)dev; + FAR void *handle = NULL; + int i; + int ret; + + /* Get exclusive access to the MCP23X17 */ + + ret = mcp23x17_lock(priv); + if (ret < 0) + { + return ret; + } + + /* Find and available in entry in the callback table */ + + for (i = 0; i < CONFIG_MCP23X17_INT_NCALLBACKS; i++) + { + /* Is this entry available (i.e., no callback attached) */ + + if (priv->cb[i].cbfunc == NULL) + { + /* Yes.. use this entry */ + + priv->cb[i].pinset = pinset; + priv->cb[i].cbfunc = callback; + priv->cb[i].cbarg = arg; + handle = &priv->cb[i]; + break; + } + } + + /* Add this callback to the table */ + + mcp23x17_unlock(priv); + return handle; +} + +/**************************************************************************** + * Name: mcp23x17_detach + * + * Description: + * Detach and disable a pin interrupt callback function. + * + * Input Parameters: + * dev - Device-specific state data + * handle - The non-NULL opaque value return by mcp23x17_attch() + * + * Returned Value: + * 0 on success, else a negative error code + * + ****************************************************************************/ + +static int mcp23x17_detach(FAR struct ioexpander_dev_s *dev, + FAR void *handle) +{ + FAR struct mcp23x17_dev_s *priv = (FAR struct mcp23x17_dev_s *)dev; + FAR struct mcp23x17_callback_s *cb = + (FAR struct mcp23x17_callback_s *)handle; + + DEBUGASSERT(priv != NULL && cb != NULL); + DEBUGASSERT((uintptr_t)cb >= (uintptr_t)&priv->cb[0] && + (uintptr_t)cb <= + (uintptr_t)&priv->cb[CONFIG_TCA64XX_INT_NCALLBACKS - 1]); + UNUSED(priv); + + cb->pinset = 0; + cb->cbfunc = NULL; + cb->cbarg = NULL; + return OK; +} + +/**************************************************************************** + * Name: mcp23x17_irqworker + * + * Description: + * Handle GPIO interrupt events (this function actually executes in the + * context of the worker thread). + * + ****************************************************************************/ + +static void mcp23x17_irqworker(void *arg) +{ + FAR struct mcp23x17_dev_s *priv = (FAR struct mcp23x17_dev_s *)arg; + uint8_t addr = MCP23X17_GPIOA; + uint8_t buf[2]; + ioe_pinset_t pinset; + int ret; + int i; + + /* Read inputs */ + + ret = mcp23x17_writeread(priv, &addr, 1, buf, 2); + if (ret == OK) + { +#ifdef CONFIG_MCP23X17_SHADOW_MODE + /* Don't forget to update the shadow registers at this point */ + + priv->sreg[addr] = buf[0]; + priv->sreg[addr + 1] = buf[1]; +#endif + /* Create a 16-bit pinset */ + + pinset = ((unsigned int)buf[0] << 8) | buf[1]; + + /* Perform pin interrupt callbacks */ + + for (i = 0; i < CONFIG_MCP23X17_INT_NCALLBACKS; i++) + { + /* Is this entry valid (i.e., callback attached)? If so, did + * any of the requested pin interrupts occur? + */ + + if (priv->cb[i].cbfunc != NULL) + { + /* Did any of the requested pin interrupts occur? */ + + ioe_pinset_t match = pinset & priv->cb[i].pinset; + if (match != 0) + { + /* Yes.. perform the callback */ + + priv->cb[i].cbfunc(&priv->dev, match, + priv->cb[i].cbarg); + } + } + } + } + + /* Re-enable interrupts */ + + priv->config->enable(priv->config, TRUE); +} + +/**************************************************************************** + * Name: mcp23x17_interrupt + * + * Description: + * Handle GPIO interrupt events (this function executes in the + * context of the interrupt). + * + ****************************************************************************/ + +static int mcp23x17_interrupt(int irq, FAR void *context, FAR void *arg) +{ + FAR struct mcp23x17_dev_s *priv = (FAR struct mcp23x17_dev_s *)arg; + + /* In complex environments, we cannot do I2C transfers from the interrupt + * handler because semaphores are probably used to lock the I2C bus. In + * this case, we will defer processing to the worker thread. This is also + * much kinder in the use of system resources and is, therefore, probably + * a good thing to do in any event. + */ + + /* Notice that further GPIO interrupts are disabled until the work is + * actually performed. This is to prevent overrun of the worker thread. + * Interrupts are re-enabled in mcp23x17_irqworker() when the work is + * completed. + */ + + if (work_available(&priv->work)) + { + priv->config->enable(priv->config, FALSE); + work_queue(HPWORK, &priv->work, mcp23x17_irqworker, + (FAR void *)priv, 0); + } + + return OK; +} + +#endif + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: mcp23x17_initialize + * + * Description: + * Initialize a MCP23X17 I2C device. + * + * TODO: Add support for more than one device. + * + ****************************************************************************/ + +FAR struct ioexpander_dev_s *mcp23x17_initialize( + FAR struct i2c_master_s *i2cdev, + FAR struct mcp23x17_config_s *config) +{ + FAR struct mcp23x17_dev_s *priv; + int ret; + + DEBUGASSERT(i2cdev != NULL && config != NULL); + +#ifdef CONFIG_MCP23X17_MULTIPLE + /* Allocate the device state structure */ + + priv = (FAR struct mcp23x17_dev_s *) + kmm_zalloc(sizeof(struct mcp23x17_dev_s)); + if (!priv) + { + return NULL; + } + + /* And save the device structure in the list of MCP23X17 so that we can + * find it later. + */ + + priv->flink = g_mcp23x17list; + g_mcp23x17list = priv; + +#else + /* Use the global MCP23X17 driver instance */ + + priv = &g_mcp23x17; +#endif + + /* Initialize the device state structure */ + + priv->i2c = i2cdev; + priv->dev.ops = &g_mcp23x17_ops; + priv->config = config; + +#ifdef CONFIG_MCP23X17_INT_ENABLE + priv->config->attach(priv->config, mcp23x17_interrupt, priv); + priv->config->enable(priv->config, TRUE); +#endif + + nxsem_init(&priv->exclsem, 0, 1); + return &priv->dev; +} + +#endif /* CONFIG_IOEXPANDER_MCP23X17 */ diff --git a/drivers/ioexpander/mcp23x17.h b/drivers/ioexpander/mcp23x17.h new file mode 100644 index 00000000000..9edf00354cb --- /dev/null +++ b/drivers/ioexpander/mcp23x17.h @@ -0,0 +1,175 @@ +/**************************************************************************** + * drivers/ioexpander/mcp23x17.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __DRIVERS_IOEXPANDER_MCP23X17_H +#define __DRIVERS_IOEXPANDER_MCP23X17_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +#if defined(CONFIG_IOEXPANDER) && defined(CONFIG_IOEXPANDER_MCP23X17) + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Configuration ************************************************************/ + +/* Prerequisites: + * CONFIG_I2C + * I2C support is required + * CONFIG_IOEXPANDER + * Enables I/O expander support + * + * CONFIG_IOEXPANDER_MCP23X17 + * Enables support for the MCP23X17 driver (Needs CONFIG_INPUT) + * CONFIG_MCP23X17_MULTIPLE + * Can be defined to support multiple MCP23X17 devices on board. + * CONFIG_MCP23X17_INT_NCALLBACKS + * Maximum number of supported pin interrupt callbacks. + * CONFIG_MCP23X17_INT_POLL + * Enables a poll for missed interrupts + * CONFIG_MCP23X17_INT_POLLDELAY + * If CONFIG_MCP23X17_INT_POLL=y, then this is the delay in microseconds + * between polls for missed interrupts. + */ + +#ifndef CONFIG_I2C +# error "CONFIG_I2C is required by MCP23X17" +#endif + +#ifdef CONFIG_IOEXPANDER_INT_ENABLE +# ifndef CONFIG_MCP23X17_INT_NCALLBACKS +# define CONFIG_MCP23X17_INT_NCALLBACKS 4 +# endif +#endif + +#ifdef CONFIG_IOEXPANDER_INT_ENABLE +# ifndef CONFIG_SCHED_WORKQUEUE +# error Work queue support required. CONFIG_SCHED_WORKQUEUE must be selected. +# endif +#endif + +#ifndef CONFIG_MCP23X17_INT_POLLDELAY +# define CONFIG_MCP23X17_INT_POLLDELAY 500000 +#endif + +/* MCP23X17 Definitions *****************************************************/ + +/* I2C frequency */ + +#define MCP23X17_I2C_MAXFREQUENCY 400000 /* 400KHz */ + +/* MCP23X17 *****************************************************************/ + +/* If IOCON.BANK = 0 Addressing Mode */ + +#define MCP23X17_IODIRA 0x00 +#define MCP23X17_IODIRB 0x01 +#define MCP23X17_IPOLA 0x02 +#define MCP23X17_IPOLB 0x03 +#define MCP23X17_GPINTENA 0x04 +#define MCP23X17_GPINTENB 0x05 +#define MCP23X17_DEFVALA 0x06 +#define MCP23X17_DEFVALB 0x07 +#define MCP23X17_INTCONA 0x08 +#define MCP23X17_INTCONB 0x09 +#define MCP23X17_IOCON 0x0a +#define MCP23X17_IOCON_2 0x0b +#define MCP23X17_GPPUA 0x0c +#define MCP23X17_GPPUB 0x0d +#define MCP23X17_INTFA 0x0e +#define MCP23X17_INTFB 0x0f +#define MCP23X17_INTCAPA 0x10 +#define MCP23X17_INTCAPB 0x11 +#define MCP23X17_GPIOA 0x12 +#define MCP23X17_GPIOB 0x13 +#define MCP23X17_OLATA 0x14 +#define MCP23X17_OLATB 0x15 + +#define MCP23X17_IOCON_INTPOL (1 << 1) /* Polarity of INT output pin */ +#define MCP23X17_IOCON_ODR (1 << 2) /* Config INT pin as open-drain */ +#define MCP23X17_IOCON_HAEN (1 << 3) /* HW Address enable bit */ +#define MCP23X17_IOCON_DISSLW (1 << 4) /* Disable Slew Rate for SDA output */ +#define MCP23X17_IOCON_SEQOP (1 << 5) /* Disable Sequencial Operation */ +#define MCP23X17_IOCON_MIRROR (1 << 6) /* Mirror INT pins */ +#define MCP23X17_IOCON_BANK (1 << 7) /* Configure how to address register */ + +#define MCP23X17_NR_GPIO_MAX 16 + +#define MCP23X17_POLLDELAY (CONFIG_MCP23X17_INT_POLLDELAY / USEC_PER_TICK) + +/**************************************************************************** + * Public Types + ****************************************************************************/ + +#ifdef CONFIG_IOEXPANDER_INT_ENABLE +/* This type represents on registered pin interrupt callback */ + +struct mcp23x17_callback_s +{ + ioe_pinset_t pinset; /* Set of pin interrupts that will generate + * the callback. */ + ioe_callback_t cbfunc; /* The saved callback function pointer */ + FAR void *cbarg; /* Callback argument */ +}; +#endif + +/* This structure represents the state of the MCP23X17 driver */ + +struct mcp23x17_dev_s +{ + struct ioexpander_dev_s dev; /* Nested structure to allow casting + * as public gpio expander. + */ + FAR struct mcp23x17_config_s *config; /* Board configuration data */ + FAR struct i2c_master_s *i2c; /* Saved I2C driver instance */ + sem_t exclsem; /* Mutual exclusion */ + +#ifdef CONFIG_IOEXPANDER_INT_ENABLE +#ifdef CONFIG_MCP23X17_INT_POLL + struct wdog_s wdog; /* Timer used to poll for missed interrupts */ +#endif + + ioe_pinset_t input; /* Last input registers */ + ioe_pinset_t intstat; /* Pending interrupts */ + struct work_s work; /* Supports the interrupt handling "bottom half" */ + + /* Saved callback information for each I/O expander client */ + + struct mcp23x17_callback_s cb[CONFIG_MCP23X17_INT_NCALLBACKS]; +#endif +}; + +#endif /* CONFIG_IOEXPANDER && CONFIG_IOEXPANDER_MCP23X17 */ +#endif /* __DRIVERS_IOEXPANDER_MCP23X17_H */ diff --git a/include/nuttx/ioexpander/mcp23x17.h b/include/nuttx/ioexpander/mcp23x17.h new file mode 100644 index 00000000000..706e26036cd --- /dev/null +++ b/include/nuttx/ioexpander/mcp23x17.h @@ -0,0 +1,108 @@ +/**************************************************************************** + * include/nuttx/ioexpander/mcp23x17.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __INCLUDE_NUTTX_IOEXPANDER_MCP23X17_H +#define __INCLUDE_NUTTX_IOEXPANDER_MCP23X17_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include + +#include + +/**************************************************************************** + * Public Types + ****************************************************************************/ + +/* A reference to a structure of this type must be passed to the mcp23x17 + * driver when the driver is instantiated. This structure provides + * information about the configuration of the mcp23x17 and provides some + * board-specific hooks. + * + * Memory for this structure is provided by the caller. It is not copied by + * the driver and is presumed to persist while the driver is active. The + * memory must be writeable because, under certain circumstances, the driver + * may modify the frequency. + */ + +struct mcp23x17_config_s +{ + /* Device characterization */ + + uint8_t address; /* 7-bit I2C address (only bits 0-6 used) */ + uint32_t frequency; /* I2C or SPI frequency */ + + /* Sets the state of the MCP23X17's nReset pin */ + + CODE void (*set_nreset_pin)(bool state); + +#ifdef CONFIG_IOEXPANDER_INT_ENABLE + /* If multiple mcp23x17 devices are supported, then an IRQ number must + * be provided for each so that their interrupts can be distinguished. + */ + + /* IRQ/GPIO access callbacks. These operations all hidden behind + * callbacks to isolate the mcp23x17 driver from differences in GPIO + * interrupt handling by varying boards and MCUs. + * + * attach - Attach the mcp23x17 interrupt handler to the GPIO interrupt + * enable - Enable or disable the GPIO interrupt + */ + + CODE int (*attach)(FAR struct mcp23x17_config_s *state, xcpt_t isr, + FAR void *arg); + CODE void (*enable)(FAR struct mcp23x17_config_s *state, bool enable); +#endif +}; + +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ + +#ifdef __cplusplus +#define EXTERN extern "C" +extern "C" +{ +#else +#define EXTERN extern +#endif + +/**************************************************************************** + * Name: mcp23x17_initialize + * + * Description: + * Initialize a MCP23X17 I2C device. + * + * TODO: Add support for more than one device. + * + ****************************************************************************/ + +FAR struct ioexpander_dev_s *mcp23x17_initialize( + FAR struct i2c_master_s *i2cdev, + FAR struct mcp23x17_config_s *config); + +#ifdef __cplusplus +} +#endif + +#endif /* __INCLUDE_NUTTX_IOEXPANDER_MCP23X17_H */ From fa2b9ca43bc322a76d121a41f17e8c79f59d3f07 Mon Sep 17 00:00:00 2001 From: Anthony Merlino Date: Sat, 15 May 2021 18:40:58 -0400 Subject: [PATCH 126/739] stm32/stm32f7 tickless: Fix up_timer_getmask to be correct for the width of the timer. --- arch/arm/src/stm32/stm32_tickless.c | 16 +++++----------- arch/arm/src/stm32f7/stm32_tickless.c | 16 +++++----------- 2 files changed, 10 insertions(+), 22 deletions(-) diff --git a/arch/arm/src/stm32/stm32_tickless.c b/arch/arm/src/stm32/stm32_tickless.c index a5acb3e46ad..53a25d75fdc 100644 --- a/arch/arm/src/stm32/stm32_tickless.c +++ b/arch/arm/src/stm32/stm32_tickless.c @@ -124,9 +124,6 @@ struct stm32_tickless_s uint8_t channel; /* The timer channel to use for intervals */ FAR struct stm32_tim_dev_s *tch; /* Handle returned by stm32_tim_init() */ uint32_t frequency; -#ifdef CONFIG_CLOCK_TIMEKEEPING - uint64_t counter_mask; -#endif uint32_t overflow; /* Timer counter overflow */ volatile bool pending; /* True: pending task */ uint32_t period; /* Interval period */ @@ -538,13 +535,6 @@ void up_timer_initialize(void) STM32_TIM_SETCLOCK(g_tickless.tch, g_tickless.frequency); -#ifdef CONFIG_CLOCK_TIMEKEEPING - - /* Should this be changed to 0xffff because we use 16 bit timers? */ - - g_tickless.counter_mask = 0xffffffffull; -#endif - /* Set up to receive the callback when the counter overflow occurs */ STM32_TIM_SETISR(g_tickless.tch, stm32_tickless_handler, NULL, 0); @@ -731,7 +721,11 @@ int up_timer_getcounter(FAR uint64_t *cycles) void up_timer_getmask(FAR uint64_t *mask) { DEBUGASSERT(mask != NULL); - *mask = g_tickless.counter_mask; +#ifdef HAVE_32BIT_TICKLESS + *mask = UINT32_MAX; +#else + *mask = UINT16_MAX; +#endif } #endif /* CONFIG_CLOCK_TIMEKEEPING */ diff --git a/arch/arm/src/stm32f7/stm32_tickless.c b/arch/arm/src/stm32f7/stm32_tickless.c index ddfd7cdcf16..74d4614a84e 100644 --- a/arch/arm/src/stm32f7/stm32_tickless.c +++ b/arch/arm/src/stm32f7/stm32_tickless.c @@ -132,9 +132,6 @@ struct stm32_tickless_s uint8_t channel; /* The timer channel to use for intervals */ FAR struct stm32_tim_dev_s *tch; /* Handle returned by stm32_tim_init() */ uint32_t frequency; -#ifdef CONFIG_CLOCK_TIMEKEEPING - uint64_t counter_mask; -#endif uint32_t overflow; /* Timer counter overflow */ volatile bool pending; /* True: pending task */ uint32_t period; /* Interval period */ @@ -587,13 +584,6 @@ void up_timer_initialize(void) STM32_TIM_SETCLOCK(g_tickless.tch, g_tickless.frequency); -#ifdef CONFIG_CLOCK_TIMEKEEPING - - /* Should this be changed to 0xffff because we use 16 bit timers? */ - - g_tickless.counter_mask = 0xffffffffull; -#endif - /* Set up to receive the callback when the counter overflow occurs */ STM32_TIM_SETISR(g_tickless.tch, stm32_tickless_handler, NULL, 0); @@ -789,7 +779,11 @@ int up_timer_getcounter(FAR uint64_t *cycles) void up_timer_getmask(FAR uint64_t *mask) { DEBUGASSERT(mask != NULL); - *mask = g_tickless.counter_mask; +#ifdef HAVE_32BIT_TICKLESS + *mask = UINT32_MAX; +#else + *mask = UINT16_MAX; +#endif } #endif /* CONFIG_CLOCK_TIMEKEEPING */ From 4a7f998c335fa948ad9f940dd68d41b5bc8ff6e8 Mon Sep 17 00:00:00 2001 From: Dong Heng Date: Wed, 12 May 2021 10:28:24 +0800 Subject: [PATCH 127/739] riscv/esp32c3: Fix RT timer issues 1. Enable alarm if there is timer active 2. Wake up main thread to delete timer 3. Wake up main thread when timer is timeout in ISR --- arch/risc-v/src/esp32c3/esp32c3_rt_timer.c | 32 ++++++++++++++++++---- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/arch/risc-v/src/esp32c3/esp32c3_rt_timer.c b/arch/risc-v/src/esp32c3/esp32c3_rt_timer.c index 4320d731854..2d624b9304c 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_rt_timer.c +++ b/arch/risc-v/src/esp32c3/esp32c3_rt_timer.c @@ -253,6 +253,7 @@ static void stop_rt_timer(FAR struct rt_timer_s *timer) static void delete_rt_timer(FAR struct rt_timer_s *timer) { + int ret; irqstate_t flags; flags = enter_critical_section(); @@ -273,6 +274,14 @@ static void delete_rt_timer(FAR struct rt_timer_s *timer) list_add_after(&s_toutlist, &timer->list); timer->state = RT_TIMER_DELETE; + /* Wake up thread to process deleted timers */ + + ret = nxsem_post(&s_toutsem); + if (ret < 0) + { + tmrerr("ERROR: Failed to post sem ret=%d\n", ret); + } + exit: leave_critical_section(flags); } @@ -387,20 +396,18 @@ static int rt_timer_thread(int argc, FAR char *argv[]) static int rt_timer_isr(int irq, void *context, void *arg) { + int ret; irqstate_t flags; struct rt_timer_s *timer; uint64_t alarm; uint64_t counter; + bool wake = false; struct esp32c3_tim_dev_s *tim = s_esp32c3_tim_dev; /* Clear interrupt register status */ ESP32C3_TIM_ACKINT(tim); - /* Wake up thread to process timeout timers */ - - nxsem_post(&s_toutsem); - flags = enter_critical_section(); /* Check if there is timer running */ @@ -428,6 +435,7 @@ static int rt_timer_isr(int irq, void *context, void *arg) list_delete(&timer->list); timer->state = RT_TIMER_TIMEOUT; list_add_after(&s_toutlist, &timer->list); + wake = true; /* Check if thers is timer running */ @@ -439,9 +447,23 @@ static int rt_timer_isr(int irq, void *context, void *arg) alarm = timer->alarm; ESP32C3_TIM_SETALRVL(tim, alarm); - ESP32C3_TIM_SETALRM(tim, true); } } + + /* If there is timer in list, alarm should be enable */ + + ESP32C3_TIM_SETALRM(tim, true); + } + + if (wake) + { + /* Wake up thread to process timeout timers */ + + ret = nxsem_post(&s_toutsem); + if (ret < 0) + { + tmrerr("ERROR: Failed to post sem ret=%d\n", ret); + } } leave_critical_section(flags); From bd0e586c23582d5b2fc814bf150e8d95b671f57f Mon Sep 17 00:00:00 2001 From: Masayuki Ishikawa Date: Mon, 17 May 2021 09:41:11 +0900 Subject: [PATCH 128/739] boards: sabre-6quad: Add elf/defconfig Summary: - This commit adds sabre-6quad/configs/elf/defconfig Impact: - None Testing: -Tested with QEMU Signed-off-by: Masayuki Ishikawa --- .../imx6/sabre-6quad/configs/elf/defconfig | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 boards/arm/imx6/sabre-6quad/configs/elf/defconfig diff --git a/boards/arm/imx6/sabre-6quad/configs/elf/defconfig b/boards/arm/imx6/sabre-6quad/configs/elf/defconfig new file mode 100644 index 00000000000..e64a483ccbe --- /dev/null +++ b/boards/arm/imx6/sabre-6quad/configs/elf/defconfig @@ -0,0 +1,57 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +CONFIG_ARCH="arm" +CONFIG_ARCH_BOARD="sabre-6quad" +CONFIG_ARCH_BOARD_SABRE_6QUAD=y +CONFIG_ARCH_BUTTONS=y +CONFIG_ARCH_CHIP="imx6" +CONFIG_ARCH_CHIP_IMX6=y +CONFIG_ARCH_CHIP_IMX6_6QUAD=y +CONFIG_ARCH_INTERRUPTSTACK=2048 +CONFIG_ARCH_IRQBUTTONS=y +CONFIG_ARCH_LOWVECTORS=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_ARMV7A_ASSOCIATIVITY_16WAY=y +CONFIG_ARMV7A_L2CC_PL310=y +CONFIG_ARMV7A_WAYSIZE_64KB=y +CONFIG_BOARDCTL_ROMDISK=y +CONFIG_BOARD_LOOPSPERMSEC=99369 +CONFIG_BOOT_RUNFROMSDRAM=y +CONFIG_BUILTIN=y +CONFIG_CLOCK_MONOTONIC=y +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DEV_ZERO=y +CONFIG_ELF=y +CONFIG_EXAMPLES_ELF=y +CONFIG_EXPERIMENTAL=y +CONFIG_FS_PROCFS=y +CONFIG_FS_PROCFS_REGISTER=y +CONFIG_FS_ROMFS=y +CONFIG_HAVE_CXX=y +CONFIG_IMX6_UART1=y +CONFIG_IMX_DDR_SIZE=1073741824 +CONFIG_INTELHEX_BINARY=y +CONFIG_LIB_BOARDCTL=y +CONFIG_MAX_TASKS=16 +CONFIG_PL310_LOCKDOWN_BY_LINE=y +CONFIG_PL310_LOCKDOWN_BY_MASTER=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_RAM_SIZE=1073741824 +CONFIG_RAM_START=0x10000000 +CONFIG_RAM_VSTART=0x10000000 +CONFIG_RAW_BINARY=y +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_WAITPID=y +CONFIG_STACK_COLORATION=y +CONFIG_START_DAY=17 +CONFIG_START_MONTH=5 +CONFIG_START_YEAR=2021 +CONFIG_SYMTAB_ORDEREDBYNAME=y +CONFIG_UART1_SERIAL_CONSOLE=y +CONFIG_USER_ENTRYPOINT="elf_main" From a036546febfb7205f0617c4a96aefdb6244e1a50 Mon Sep 17 00:00:00 2001 From: Masayuki Ishikawa Date: Mon, 17 May 2021 09:46:13 +0900 Subject: [PATCH 129/739] boards: sabre-6quad: Add posix_spawn/defconfig Summary: - This commit adds sabre-6quad/configs/posix_spawn/defconfig Impact: - None Testing: - Tested with QEMU Signed-off-by: Masayuki Ishikawa --- .../sabre-6quad/configs/posix_spawn/defconfig | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 boards/arm/imx6/sabre-6quad/configs/posix_spawn/defconfig diff --git a/boards/arm/imx6/sabre-6quad/configs/posix_spawn/defconfig b/boards/arm/imx6/sabre-6quad/configs/posix_spawn/defconfig new file mode 100644 index 00000000000..010b7296022 --- /dev/null +++ b/boards/arm/imx6/sabre-6quad/configs/posix_spawn/defconfig @@ -0,0 +1,62 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +CONFIG_ARCH="arm" +CONFIG_ARCH_BOARD="sabre-6quad" +CONFIG_ARCH_BOARD_SABRE_6QUAD=y +CONFIG_ARCH_BUTTONS=y +CONFIG_ARCH_CHIP="imx6" +CONFIG_ARCH_CHIP_IMX6=y +CONFIG_ARCH_CHIP_IMX6_6QUAD=y +CONFIG_ARCH_INTERRUPTSTACK=2048 +CONFIG_ARCH_IRQBUTTONS=y +CONFIG_ARCH_LOWVECTORS=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_ARMV7A_ASSOCIATIVITY_16WAY=y +CONFIG_ARMV7A_L2CC_PL310=y +CONFIG_ARMV7A_WAYSIZE_64KB=y +CONFIG_BOARDCTL_APP_SYMTAB=y +CONFIG_BOARDCTL_ROMDISK=y +CONFIG_BOARD_LOOPSPERMSEC=99369 +CONFIG_BOOT_RUNFROMSDRAM=y +CONFIG_BUILTIN=y +CONFIG_CLOCK_MONOTONIC=y +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DEV_ZERO=y +CONFIG_ELF=y +CONFIG_EXAMPLES_POSIXSPAWN=y +CONFIG_EXPERIMENTAL=y +CONFIG_FS_PROCFS=y +CONFIG_FS_PROCFS_REGISTER=y +CONFIG_FS_ROMFS=y +CONFIG_HAVE_CXX=y +CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_IMX6_UART1=y +CONFIG_IMX_DDR_SIZE=1073741824 +CONFIG_INTELHEX_BINARY=y +CONFIG_LIBC_EXECFUNCS=y +CONFIG_LIB_BOARDCTL=y +CONFIG_LIB_ENVPATH=y +CONFIG_MAX_TASKS=16 +CONFIG_PATH_INITIAL="/mnt/romfs" +CONFIG_PL310_LOCKDOWN_BY_LINE=y +CONFIG_PL310_LOCKDOWN_BY_MASTER=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_RAM_SIZE=1073741824 +CONFIG_RAM_START=0x10000000 +CONFIG_RAM_VSTART=0x10000000 +CONFIG_RAW_BINARY=y +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_WAITPID=y +CONFIG_STACK_COLORATION=y +CONFIG_START_DAY=17 +CONFIG_START_MONTH=5 +CONFIG_START_YEAR=2021 +CONFIG_SYMTAB_ORDEREDBYNAME=y +CONFIG_UART1_SERIAL_CONSOLE=y +CONFIG_USER_ENTRYPOINT="posix_spawn_main" From d8ca691e2a18a82054642b52f66beb7a8b8f58bc Mon Sep 17 00:00:00 2001 From: Masayuki Ishikawa Date: Mon, 17 May 2021 09:57:57 +0900 Subject: [PATCH 130/739] boards: sabre-6quad: Add ELF support to netnsh and netnsh_smp Summary: - This commit adds ELF support to netnsh and netnsh_smp Impact: - None Testing: - Tested with QEMU Signed-off-by: Masayuki Ishikawa --- boards/arm/imx6/sabre-6quad/configs/netnsh/defconfig | 10 +++++++++- .../arm/imx6/sabre-6quad/configs/netnsh_smp/defconfig | 10 +++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/boards/arm/imx6/sabre-6quad/configs/netnsh/defconfig b/boards/arm/imx6/sabre-6quad/configs/netnsh/defconfig index 8f5a3d43d94..b4b72fb28a1 100644 --- a/boards/arm/imx6/sabre-6quad/configs/netnsh/defconfig +++ b/boards/arm/imx6/sabre-6quad/configs/netnsh/defconfig @@ -25,8 +25,9 @@ CONFIG_CODECS_HASH_MD5=y CONFIG_DEBUG_FULLOPT=y CONFIG_DEBUG_SYMBOLS=y CONFIG_DEV_ZERO=y +CONFIG_ELF=y CONFIG_ETH0_PHY_KSZ8081=y -CONFIG_EXAMPLES_HELLO=y +CONFIG_EXAMPLES_HELLO=m CONFIG_EXAMPLES_TCPBLASTER=y CONFIG_EXAMPLES_TCPBLASTER_GROUPSIZE=500 CONFIG_EXAMPLES_TCPBLASTER_SERVER=y @@ -41,6 +42,8 @@ CONFIG_IMX6_UART1=y CONFIG_IMX_DDR_SIZE=1073741824 CONFIG_IMX_ENET_NTXBUFFERS=1 CONFIG_INTELHEX_BINARY=y +CONFIG_LIBC_EXECFUNCS=y +CONFIG_LIB_ENVPATH=y CONFIG_MAX_TASKS=16 CONFIG_NET=y CONFIG_NETDB_DNSCLIENT=y @@ -69,6 +72,7 @@ CONFIG_NSH_ARCHINIT=y CONFIG_NSH_BUILTIN_APPS=y CONFIG_NSH_FILEIOSIZE=512 CONFIG_NSH_READLINE=y +CONFIG_PATH_INITIAL="/mnt/nfs/bin" CONFIG_PREALLOC_TIMERS=4 CONFIG_RAM_SIZE=1073741824 CONFIG_RAM_START=0x10000000 @@ -87,8 +91,12 @@ CONFIG_SYMTAB_ORDEREDBYNAME=y CONFIG_SYSLOG_TIMESTAMP=y CONFIG_SYSTEM_DHCPC_RENEW=y CONFIG_SYSTEM_NSH=y +CONFIG_SYSTEM_NSH_SYMTAB=y +CONFIG_SYSTEM_NSH_SYMTAB_ARRAYNAME="g_symtab" +CONFIG_SYSTEM_NSH_SYMTAB_COUNTNAME="g_nsymbols" CONFIG_SYSTEM_PING=y CONFIG_TESTING_GETPRIME=y CONFIG_TESTING_OSTEST=y CONFIG_UART1_SERIAL_CONSOLE=y +CONFIG_USERMAIN_STACKSIZE=3072 CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/arm/imx6/sabre-6quad/configs/netnsh_smp/defconfig b/boards/arm/imx6/sabre-6quad/configs/netnsh_smp/defconfig index 11f44843fad..0d33db93fa1 100644 --- a/boards/arm/imx6/sabre-6quad/configs/netnsh_smp/defconfig +++ b/boards/arm/imx6/sabre-6quad/configs/netnsh_smp/defconfig @@ -25,8 +25,9 @@ CONFIG_CODECS_HASH_MD5=y CONFIG_DEBUG_FULLOPT=y CONFIG_DEBUG_SYMBOLS=y CONFIG_DEV_ZERO=y +CONFIG_ELF=y CONFIG_ETH0_PHY_KSZ8081=y -CONFIG_EXAMPLES_HELLO=y +CONFIG_EXAMPLES_HELLO=m CONFIG_EXAMPLES_TCPBLASTER=y CONFIG_EXAMPLES_TCPBLASTER_GROUPSIZE=500 CONFIG_EXAMPLES_TCPBLASTER_SERVER=y @@ -41,6 +42,8 @@ CONFIG_IMX6_UART1=y CONFIG_IMX_DDR_SIZE=1073741824 CONFIG_IMX_ENET_NTXBUFFERS=1 CONFIG_INTELHEX_BINARY=y +CONFIG_LIBC_EXECFUNCS=y +CONFIG_LIB_ENVPATH=y CONFIG_NET=y CONFIG_NETDB_DNSCLIENT=y CONFIG_NETDB_DNSCLIENT_ENTRIES=4 @@ -68,6 +71,7 @@ CONFIG_NSH_ARCHINIT=y CONFIG_NSH_BUILTIN_APPS=y CONFIG_NSH_FILEIOSIZE=512 CONFIG_NSH_READLINE=y +CONFIG_PATH_INITIAL="/mnt/nfs/bin" CONFIG_PREALLOC_TIMERS=4 CONFIG_RAM_SIZE=1073741824 CONFIG_RAM_START=0x10000000 @@ -86,6 +90,9 @@ CONFIG_SYMTAB_ORDEREDBYNAME=y CONFIG_SYSLOG_TIMESTAMP=y CONFIG_SYSTEM_DHCPC_RENEW=y CONFIG_SYSTEM_NSH=y +CONFIG_SYSTEM_NSH_SYMTAB=y +CONFIG_SYSTEM_NSH_SYMTAB_ARRAYNAME="g_symtab" +CONFIG_SYSTEM_NSH_SYMTAB_COUNTNAME="g_nsymbols" CONFIG_SYSTEM_PING=y CONFIG_SYSTEM_SYSTEM=y CONFIG_SYSTEM_TASKSET=y @@ -93,4 +100,5 @@ CONFIG_TESTING_GETPRIME=y CONFIG_TESTING_OSTEST=y CONFIG_TESTING_SMP=y CONFIG_UART1_SERIAL_CONSOLE=y +CONFIG_USERMAIN_STACKSIZE=3072 CONFIG_USER_ENTRYPOINT="nsh_main" From b3e1d1c3dfc731d7d1d035c6658e3af99e856ef5 Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Mon, 17 May 2021 02:24:59 +0800 Subject: [PATCH 131/739] tools/ci: Remove sim01.dat and sim02.dat Signed-off-by: Xiang Xiao --- .github/workflows/build.yml | 2 +- tools/ci/testlist/sim01.dat | 23 ----------------------- tools/ci/testlist/sim02.dat | 10 ---------- 3 files changed, 1 insertion(+), 34 deletions(-) delete mode 100644 tools/ci/testlist/sim01.dat delete mode 100644 tools/ci/testlist/sim02.dat diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a678126da2d..122d1dc8c48 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -159,7 +159,7 @@ jobs: needs: Fetch-Source strategy: matrix: - boards: [macos, sim01, sim02] + boards: [macos, sim-01, sim-02] steps: - name: Download Source Artifact uses: actions/download-artifact@v1 diff --git a/tools/ci/testlist/sim01.dat b/tools/ci/testlist/sim01.dat deleted file mode 100644 index bb9292aa66d..00000000000 --- a/tools/ci/testlist/sim01.dat +++ /dev/null @@ -1,23 +0,0 @@ -/sim/*/*/*/[a-n]* - -# macOS doesn't have ALSA --Darwin,sim:alsa - --Darwin,sim:cxxtest --Darwin,sim:libcxxtest - -# Do not build Linux configs --Darwin,sim:linuxi2c - -# macOS doesn't support 32bit(CONFIG_SIM_M32=y) anymore --Darwin,sim:elf --Darwin,sim:foc --Darwin,sim:loadable --Darwin,sim:module32 - -# macOS doesn't have X11 --Darwin,sim:lvgl --Darwin,sim:nsh2 --Darwin,sim:nx11 --Darwin,sim:nxlines --Darwin,sim:nxwm diff --git a/tools/ci/testlist/sim02.dat b/tools/ci/testlist/sim02.dat deleted file mode 100644 index 1974acb1962..00000000000 --- a/tools/ci/testlist/sim02.dat +++ /dev/null @@ -1,10 +0,0 @@ -/sim/*/*/*/[o-z]* - -# macOS doesn't support 32bit anymore(CONFIG_SIM_M32=y) --Darwin,sim:posix_spawn --Darwin,sim:rpproxy --Darwin,sim:rpserver --Darwin,sim:sotest32 - -# macOS doesn't have X11 --Darwin,sim:touchscreen From 5ec3ef0e56c8a8ca4b3f4b5991128cf3b96413c5 Mon Sep 17 00:00:00 2001 From: Jiuzhu Dong Date: Wed, 12 May 2021 15:27:03 +0800 Subject: [PATCH 132/739] group/group_signal: cancel dispatch signal when the number of members in the group is zero. Repetition step: If using waitpid() to wait a task has exited, the waitpid will use nxsing_kill with signal number 0 to determine if that task is still alive, and will call group_signal to dispatch signal for each member of the group and perform signal handing checks, it will assert at sched/group/group_signal.c:261. Change-Id: I75ef015a261101277436d742897ce68fed44b5da Signed-off-by: Jiuzhu Dong --- sched/group/group_signal.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sched/group/group_signal.c b/sched/group/group_signal.c index 85796f6d257..fdb26e3f8cd 100644 --- a/sched/group/group_signal.c +++ b/sched/group/group_signal.c @@ -245,11 +245,15 @@ int group_signal(FAR struct task_group_s *group, FAR siginfo_t *siginfo) * signal to a pending state. */ - else /* if (info.dtcb) */ + else if (info.dtcb) { - DEBUGASSERT(info.dtcb); tcb = info.dtcb; } + else + { + ret = -ECHILD; + goto errout; + } /* Now deliver the signal to the selected group member */ From 132ffdd28d3e1f77ef8d08282f6f1aff8b67c578 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Tue, 11 May 2021 13:37:58 -0300 Subject: [PATCH 133/739] risc-v/esp32c3: Add burst transfer support for GDMA --- arch/risc-v/src/esp32c3/esp32c3_dma.c | 29 +++++++++++++++++++++------ arch/risc-v/src/esp32c3/esp32c3_dma.h | 4 +++- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/arch/risc-v/src/esp32c3/esp32c3_dma.c b/arch/risc-v/src/esp32c3/esp32c3_dma.c index 384c6de388d..4d744e4bbd8 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_dma.c +++ b/arch/risc-v/src/esp32c3/esp32c3_dma.c @@ -81,9 +81,10 @@ static sem_t g_dma_exc_sem = SEM_INITIALIZER(1); * Request DMA channel and config it with given parameters. * * Input Parameters: - * periph - Peripheral for which the DMA channel request was made - * tx_prio - Interrupt priority - * rx_prio - Interrupt flags + * periph - Peripheral for which the DMA channel request was made + * tx_prio - Interrupt priority + * rx_prio - Interrupt flags + * burst_en - Enable burst transmission * * Returned Value: * DMA channel number (>=0) if success or -1 if fail. @@ -92,7 +93,8 @@ static sem_t g_dma_exc_sem = SEM_INITIALIZER(1); int32_t esp32c3_dma_request(enum esp32c3_dma_periph_e periph, uint32_t tx_prio, - uint32_t rx_prio) + uint32_t rx_prio, + bool burst_en) { int chan; @@ -145,12 +147,27 @@ int32_t esp32c3_dma_request(enum esp32c3_dma_periph_e periph, CLR_BITS(DMA_IN_CONF0_CH0_REG, chan, DMA_MEM_TRANS_EN_CH0_M); - /* Connect DMA TX/RX channel to a given peripheral */ + /* Connect DMA TX/RX channels to a given peripheral */ SET_REG(DMA_OUT_PERI_SEL_CH0_REG, chan, periph); SET_REG(DMA_IN_PERI_SEL_CH0_REG, chan, periph); } + if (burst_en) + { + /* Enable DMA TX/RX channels burst sending data */ + + SET_BITS(DMA_IN_CONF0_CH0_REG, chan, DMA_OUT_DATA_BURST_EN_CH0_M); + SET_BITS(DMA_IN_CONF0_CH0_REG, chan, DMA_IN_DATA_BURST_EN_CH0_M); + + /* Enable DMA TX/RX channels burst reading descriptor link */ + + SET_BITS(DMA_IN_CONF0_CH0_REG, chan, DMA_OUTDSCR_BURST_EN_CH0_M); + SET_BITS(DMA_IN_CONF0_CH0_REG, chan, DMA_INDSCR_BURST_EN_CH0_M); + } + + /* Set priority for DMA TX/RX channels */ + SET_REG(DMA_OUT_PRI_CH0_REG, chan, tx_prio); SET_REG(DMA_IN_PRI_CH0_REG, chan, rx_prio); @@ -435,7 +452,7 @@ void esp32c3_dma_main(int argc, char *argv[]) esp32c3_dma_init(); - chan = esp32c3_dma_request(ESP32C3_DMA_PERIPH_MEM, 1, 1); + chan = esp32c3_dma_request(ESP32C3_DMA_PERIPH_MEM, 1, 1, false); if (chan < 0) { syslog(LOG_ERR, "Request DMA channel error\n"); diff --git a/arch/risc-v/src/esp32c3/esp32c3_dma.h b/arch/risc-v/src/esp32c3/esp32c3_dma.h index 5dbb72c29a3..ada371d8b41 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_dma.h +++ b/arch/risc-v/src/esp32c3/esp32c3_dma.h @@ -26,6 +26,7 @@ #define __ARCH_RISCV_SRC_ESP32C3_ESP32C3_DMA_H #include +#include #include #ifndef __ASSEMBLY__ @@ -122,7 +123,8 @@ struct esp32c3_dmadesc_s int32_t esp32c3_dma_request(enum esp32c3_dma_periph_e periph, uint32_t tx_prio, - uint32_t rx_prio); + uint32_t rx_prio, + bool burst_en); /**************************************************************************** * Name: esp32c3_dma_setup From 26a5cb209474350a1790cab771d47200632daa35 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Nihei Date: Thu, 29 Apr 2021 19:16:17 -0300 Subject: [PATCH 134/739] risc-v/esp32c3: Add support for DMA transfers on SPI driver --- arch/risc-v/src/esp32c3/Kconfig | 23 ++ arch/risc-v/src/esp32c3/esp32c3_spi.c | 411 ++++++++++++++++++++++++-- 2 files changed, 405 insertions(+), 29 deletions(-) diff --git a/arch/risc-v/src/esp32c3/Kconfig b/arch/risc-v/src/esp32c3/Kconfig index bce1ec8f706..99f02133c8a 100644 --- a/arch/risc-v/src/esp32c3/Kconfig +++ b/arch/risc-v/src/esp32c3/Kconfig @@ -323,6 +323,29 @@ config ESP32C3_SPI_UDCS if ESP32C3_SPI2 +config ESP32C3_SPI2_DMA + bool "SPI2 use GDMA" + default n + depends on ESP32C3_DMA + ---help--- + Enable support for transfers using the GDMA engine. + +config ESP32C3_SPI2_DMADESC_NUM + int "SPI2 Master GDMA maximum number of descriptors" + default 2 + depends on ESP32C3_SPI2_DMA + ---help--- + Configure the maximum number of out-link/in-link descriptors to + be chained for a GDMA transfer. + +config ESP32C3_SPI2_DMATHRESHOLD + int "SPI2 GDMA threshold" + default 64 + depends on ESP32C3_SPI2_DMA + ---help--- + When SPI GDMA is enabled, GDMA transfers whose size are below the + defined threshold will be performed by polling logic. + config ESP32C3_SPI2_CSPIN int "SPI2 CS Pin" default 10 diff --git a/arch/risc-v/src/esp32c3/esp32c3_spi.c b/arch/risc-v/src/esp32c3/esp32c3_spi.c index d65055b1a57..6010d25a0a3 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_spi.c +++ b/arch/risc-v/src/esp32c3/esp32c3_spi.c @@ -32,17 +32,24 @@ #include #include #include +#include #include #include +#include #include #include #include #include "esp32c3_spi.h" +#include "esp32c3_irq.h" #include "esp32c3_gpio.h" +#ifdef CONFIG_ESP32C3_SPI2_DMA +#include "esp32c3_dma.h" +#endif + #include "riscv_arch.h" #include "hardware/esp32c3_gpio_sigmap.h" #include "hardware/esp32c3_pinmap.h" @@ -62,6 +69,18 @@ # define SPI_HAVE_SWCS FALSE #endif +#ifdef CONFIG_ESP32C3_SPI2_DMA + +/* SPI DMA RX/TX number of descriptors */ + +#define SPI_DMA_DESC_NUM (CONFIG_ESP32C3_SPI2_DMADESC_NUM) + +/* SPI DMA reset before exchange */ + +#define SPI_DMA_RESET_MASK (SPI_DMA_AFIFO_RST_M | SPI_RX_AFIFO_RST_M) + +#endif + /* Verify whether SPI has been assigned IOMUX pins. * Otherwise, SPI signals will be routed via GPIO Matrix. */ @@ -119,8 +138,16 @@ struct esp32c3_spi_config_s uint8_t mosi_pin; /* GPIO configuration for MOSI */ uint8_t miso_pin; /* GPIO configuration for MISO */ uint8_t clk_pin; /* GPIO configuration for CLK */ +#ifdef CONFIG_ESP32C3_SPI2_DMA + uint8_t periph; /* Peripheral ID */ + uint8_t irq; /* Interrupt ID */ +#endif uint32_t clk_bit; /* Clock enable bit */ uint32_t rst_bit; /* SPI reset bit */ +#ifdef CONFIG_ESP32C3_SPI2_DMA + uint32_t dma_clk_bit; /* DMA clock enable bit */ + uint32_t dma_rst_bit; /* DMA reset bit */ +#endif uint32_t cs_insig; /* SPI CS input signal index */ uint32_t cs_outsig; /* SPI CS output signal index */ uint32_t mosi_insig; /* SPI MOSI input signal index */ @@ -142,6 +169,11 @@ struct esp32c3_spi_priv_s const struct esp32c3_spi_config_s *config; int refs; /* Reference count */ sem_t exclsem; /* Held while chip is selected for mutual exclusion */ +#ifdef CONFIG_ESP32C3_SPI2_DMA + sem_t sem_isr; /* Interrupt wait semaphore */ + int cpuint; /* SPI interrupt ID */ + int32_t dma_channel; /* Channel assigned by the GDMA driver */ +#endif uint32_t frequency; /* Requested clock frequency */ uint32_t actual; /* Actual clock frequency */ enum spi_mode_e mode; /* Actual SPI hardware mode */ @@ -170,6 +202,19 @@ static uint32_t esp32c3_spi_send(FAR struct spi_dev_s *dev, uint32_t wd); static void esp32c3_spi_exchange(FAR struct spi_dev_s *dev, FAR const void *txbuffer, FAR void *rxbuffer, size_t nwords); +#ifdef CONFIG_ESP32C3_SPI2_DMA +static int esp32c3_spi_interrupt(int irq, void *context, FAR void *arg); +static int esp32c3_spi_sem_waitdone(FAR struct esp32c3_spi_priv_s *priv); +static void esp32c3_spi_dma_exchange(FAR struct esp32c3_spi_priv_s *priv, + FAR const void *txbuffer, + FAR void *rxbuffer, + uint32_t nwords); +#else +static void esp32c3_spi_poll_exchange(FAR struct esp32c3_spi_priv_s *priv, + FAR const void *txbuffer, + FAR void *rxbuffer, + size_t nwords); +#endif #ifndef CONFIG_SPI_EXCHANGE static void esp32c3_spi_sndblock(FAR struct spi_dev_s *dev, FAR const void *txbuffer, @@ -181,6 +226,9 @@ static void esp32c3_spi_recvblock(FAR struct spi_dev_s *dev, #ifdef CONFIG_SPI_TRIGGER static int esp32c3_spi_trigger(FAR struct spi_dev_s *dev); #endif +#ifdef CONFIG_ESP32C3_SPI2_DMA +static void esp32c3_spi_dma_init(FAR struct spi_dev_s *dev); +#endif static void esp32c3_spi_init(FAR struct spi_dev_s *dev); static void esp32c3_spi_deinit(FAR struct spi_dev_s *dev); @@ -198,8 +246,16 @@ static const struct esp32c3_spi_config_s esp32c3_spi2_config = .mosi_pin = CONFIG_ESP32C3_SPI2_MOSIPIN, .miso_pin = CONFIG_ESP32C3_SPI2_MISOPIN, .clk_pin = CONFIG_ESP32C3_SPI2_CLKPIN, +#ifdef CONFIG_ESP32C3_SPI2_DMA + .periph = ESP32C3_PERIPH_SPI2, + .irq = ESP32C3_IRQ_SPI2, +#endif .clk_bit = SYSTEM_SPI2_CLK_EN, .rst_bit = SYSTEM_SPI2_RST, +#ifdef CONFIG_ESP32C3_SPI2_DMA + .dma_clk_bit = SYSTEM_SPI2_DMA_CLK_EN, + .dma_rst_bit = SYSTEM_SPI2_DMA_RST, +#endif .cs_insig = FSPICS0_IN_IDX, .cs_outsig = FSPICS0_OUT_IDX, .mosi_insig = FSPID_IN_IDX, @@ -243,20 +299,34 @@ static const struct spi_ops_s esp32c3_spi2_ops = static struct esp32c3_spi_priv_s esp32c3_spi2_priv = { - .spi_dev = - { - .ops = &esp32c3_spi2_ops - }, - .config = &esp32c3_spi2_config, - .refs = 0, - .exclsem = SEM_INITIALIZER(0), - .frequency = 0, - .actual = 0, - .mode = 0, - .nbits = 0 + .spi_dev = + { + .ops = &esp32c3_spi2_ops + }, + .config = &esp32c3_spi2_config, + .refs = 0, + .exclsem = SEM_INITIALIZER(0), +#ifdef CONFIG_ESP32C3_SPI2_DMA + .sem_isr = SEM_INITIALIZER(0), + .cpuint = -ENOMEM, + .dma_channel = -1, +#endif + .frequency = 0, + .actual = 0, + .mode = 0, + .nbits = 0 }; #endif /* CONFIG_ESP32C3_SPI2 */ +#ifdef CONFIG_ESP32C3_SPI2_DMA + +/* SPI DMA RX/TX description */ + +static struct esp32c3_dmadesc_s dma_rxdesc[SPI_DMA_DESC_NUM]; +static struct esp32c3_dmadesc_s dma_txdesc[SPI_DMA_DESC_NUM]; + +#endif + /**************************************************************************** * Private Functions ****************************************************************************/ @@ -272,7 +342,7 @@ static struct esp32c3_spi_priv_s esp32c3_spi2_priv = * bits - Bits to be set * * Returned Value: - * None + * None. * ****************************************************************************/ @@ -294,7 +364,7 @@ static inline void esp32c3_spi_set_regbits(uint32_t addr, uint32_t bits) * bits - Bits to be cleared * * Returned Value: - * None + * None. * ****************************************************************************/ @@ -313,10 +383,10 @@ static inline void esp32c3_spi_clr_regbits(uint32_t addr, uint32_t bits) * * Input Parameters: * dev - Device-specific state data - * lock - true: Lock spi bus, false: unlock SPI bus + * lock - true: Lock SPI bus, false: unlock SPI bus * * Returned Value: - * The result of lock or unlock the SPI device + * The result of lock or unlock the SPI device. * ****************************************************************************/ @@ -337,6 +407,37 @@ static int esp32c3_spi_lock(FAR struct spi_dev_s *dev, bool lock) return ret; } +/**************************************************************************** + * Name: esp32c3_spi_sem_waitdone + * + * Description: + * Wait for a transfer to complete. + * + * Input Parameters: + * priv - SPI private state data + * + * Returned Value: + * None. + * + ****************************************************************************/ + +#ifdef CONFIG_ESP32C3_SPI2_DMA +static int esp32c3_spi_sem_waitdone(FAR struct esp32c3_spi_priv_s *priv) +{ + int ret; + struct timespec abstime; + + clock_gettime(CLOCK_REALTIME, &abstime); + + abstime.tv_sec += 10; + abstime.tv_nsec += 0; + + ret = nxsem_timedwait_uninterruptible(&priv->sem_isr, &abstime); + + return ret; +} +#endif + /**************************************************************************** * Name: esp32c3_spi_select * @@ -356,7 +457,7 @@ static int esp32c3_spi_lock(FAR struct spi_dev_s *dev, bool lock) * selected - true: slave selected, false: slave de-selected * * Returned Value: - * None + * None. * ****************************************************************************/ @@ -509,7 +610,7 @@ static uint32_t esp32c3_spi_setfrequency(FAR struct spi_dev_s *dev, * mode - The requested SPI mode * * Returned Value: - * none + * None. * ****************************************************************************/ @@ -578,7 +679,7 @@ static void esp32c3_spi_setmode(FAR struct spi_dev_s *dev, * nbits - The number of bits in an SPI word. * * Returned Value: - * none + * None. * ****************************************************************************/ @@ -617,6 +718,115 @@ static int esp32c3_spi_hwfeatures(FAR struct spi_dev_s *dev, } #endif +/**************************************************************************** + * Name: esp32c3_spi_dma_exchange + * + * Description: + * Exchange a block of data from SPI by DMA. + * + * Input Parameters: + * priv - SPI private state data + * txbuffer - A pointer to the buffer of data to be sent + * rxbuffer - A pointer to the buffer in which to receive data + * nwords - the length of data that to be exchanged in units of words. + * The wordsize is determined by the number of bits-per-word + * selected for the SPI interface. If nbits <= 8, the data is + * packed into uint8_t's; if nbits >8, the data is packed into + * uint16_t's + * + * Returned Value: + * None. + * + ****************************************************************************/ + +#ifdef CONFIG_ESP32C3_SPI2_DMA +static void esp32c3_spi_dma_exchange(FAR struct esp32c3_spi_priv_s *priv, + FAR const void *txbuffer, + FAR void *rxbuffer, + uint32_t nwords) +{ + const uint32_t total = nwords * (priv->nbits / 8); + const int32_t channel = priv->dma_channel; + uint32_t bytes = total; + uint32_t n; + uint8_t *tp; + uint8_t *rp; + + DEBUGASSERT((txbuffer != NULL) || (rxbuffer != NULL)); + + spiinfo("nwords=%" PRIu32 "\n", nwords); + + tp = (uint8_t *)txbuffer; + rp = (uint8_t *)rxbuffer; + + if (tp == NULL) + { + tp = rp; + } + + esp32c3_spi_clr_regbits(SPI_DMA_INT_RAW_REG, SPI_TRANS_DONE_INT_RAW_M); + + esp32c3_spi_set_regbits(SPI_DMA_INT_ENA_REG, SPI_TRANS_DONE_INT_ENA_M); + + while (bytes != 0) + { + /* Reset SPI DMA TX FIFO */ + + esp32c3_spi_set_regbits(SPI_DMA_CONF_REG, SPI_DMA_RESET_MASK); + esp32c3_spi_clr_regbits(SPI_DMA_CONF_REG, SPI_DMA_RESET_MASK); + + /* Enable SPI DMA TX */ + + esp32c3_spi_set_regbits(SPI_DMA_CONF_REG, SPI_DMA_TX_ENA_M); + + n = esp32c3_dma_setup(channel, true, dma_txdesc, SPI_DMA_DESC_NUM, + tp, bytes); + esp32c3_dma_enable(channel, true); + + putreg32((n * 8 - 1), SPI_MS_DLEN_REG); + esp32c3_spi_set_regbits(SPI_USER_REG, SPI_USR_MOSI_M); + + tp += n; + + if (rp != NULL) + { + /* Enable SPI DMA RX */ + + esp32c3_spi_set_regbits(SPI_DMA_CONF_REG, SPI_DMA_RX_ENA_M); + + esp32c3_dma_setup(channel, false, dma_rxdesc, SPI_DMA_DESC_NUM, + rp, bytes); + esp32c3_dma_enable(channel, false); + + esp32c3_spi_set_regbits(SPI_USER_REG, SPI_USR_MISO_M); + + rp += n; + } + else + { + esp32c3_spi_clr_regbits(SPI_USER_REG, SPI_USR_MISO_M); + } + + /* Trigger start of user-defined transaction for master. */ + + esp32c3_spi_set_regbits(SPI_CMD_REG, SPI_UPDATE_M); + + while ((getreg32(SPI_CMD_REG) & SPI_UPDATE_M) != 0) + { + ; + } + + esp32c3_spi_set_regbits(SPI_CMD_REG, SPI_USR_M); + + esp32c3_spi_sem_waitdone(priv); + + bytes -= n; + } + + esp32c3_spi_clr_regbits(SPI_DMA_INT_ENA_REG, SPI_TRANS_DONE_INT_ENA_M); +} +#endif + /**************************************************************************** * Name: esp32c3_spi_poll_send * @@ -629,7 +839,7 @@ static int esp32c3_spi_hwfeatures(FAR struct spi_dev_s *dev, * number of bits selected for the SPI interface. * * Returned Value: - * Received value + * Received value. * ****************************************************************************/ @@ -679,7 +889,7 @@ static uint32_t esp32c3_spi_poll_send(FAR struct esp32c3_spi_priv_s *priv, * number of bits selected for the SPI interface. * * Returned Value: - * Received value + * Received value. * ****************************************************************************/ @@ -707,7 +917,7 @@ static uint32_t esp32c3_spi_send(FAR struct spi_dev_s *dev, uint32_t wd) * uint16_t's * * Returned Value: - * None + * None. * ****************************************************************************/ @@ -836,7 +1046,7 @@ static void esp32c3_spi_poll_exchange(FAR struct esp32c3_spi_priv_s *priv, * uint16_t's * * Returned Value: - * None + * None. * ****************************************************************************/ @@ -847,7 +1057,18 @@ static void esp32c3_spi_exchange(FAR struct spi_dev_s *dev, { FAR struct esp32c3_spi_priv_s *priv = (FAR struct esp32c3_spi_priv_s *)dev; - esp32c3_spi_poll_exchange(priv, txbuffer, rxbuffer, nwords); +#ifdef CONFIG_ESP32C3_SPI2_DMA + size_t thld = CONFIG_ESP32C3_SPI2_DMATHRESHOLD; + + if (nwords > thld) + { + esp32c3_spi_dma_exchange(priv, txbuffer, rxbuffer, nwords); + } + else +#endif + { + esp32c3_spi_poll_exchange(priv, txbuffer, rxbuffer, nwords); + } } #ifndef CONFIG_SPI_EXCHANGE @@ -868,7 +1089,7 @@ static void esp32c3_spi_exchange(FAR struct spi_dev_s *dev, * packed into uint16_t's * * Returned Value: - * None + * None. * ****************************************************************************/ @@ -897,7 +1118,7 @@ static void esp32c3_spi_sndblock(FAR struct spi_dev_s *dev, * packed into uint16_t's * * Returned Value: - * None + * None. * ****************************************************************************/ @@ -934,6 +1155,55 @@ static int esp32c3_spi_trigger(FAR struct spi_dev_s *dev) } #endif +/**************************************************************************** + * Name: esp32c3_spi_dma_init + * + * Description: + * Initialize ESP32-C3 SPI connection to GDMA engine. + * + * Input Parameters: + * dev - Device-specific state data + * + * Returned Value: + * None. + * + ****************************************************************************/ + +#ifdef CONFIG_ESP32C3_SPI2_DMA +void esp32c3_spi_dma_init(FAR struct spi_dev_s *dev) +{ + FAR struct esp32c3_spi_priv_s *priv = (FAR struct esp32c3_spi_priv_s *)dev; + + /* Enable GDMA clock for the SPI peripheral */ + + modifyreg32(SYSTEM_PERIP_CLK_EN0_REG, 0, priv->config->dma_clk_bit); + + /* Reset GDMA for the SPI peripheral */ + + modifyreg32(SYSTEM_PERIP_RST_EN0_REG, priv->config->dma_rst_bit, 0); + + /* Initialize GDMA controller */ + + esp32c3_dma_init(); + + /* Request a GDMA channel for SPI peripheral */ + + priv->dma_channel = esp32c3_dma_request(ESP32C3_DMA_PERIPH_SPI, 1, 1, + true); + if (priv->dma_channel < 0) + { + spierr("Failed to allocate GDMA channel\n"); + + DEBUGASSERT(false); + } + + /* Disable segment transaction mode for SPI Master */ + + putreg32((SPI_SLV_RX_SEG_TRANS_CLR_EN_M | SPI_SLV_TX_SEG_TRANS_CLR_EN_M), + SPI_DMA_CONF_REG); +} +#endif + /**************************************************************************** * Name: esp32c3_spi_init * @@ -944,7 +1214,7 @@ static int esp32c3_spi_trigger(FAR struct spi_dev_s *dev) * dev - Device-specific state data * * Returned Value: - * None + * None. * ****************************************************************************/ @@ -1015,6 +1285,13 @@ static void esp32c3_spi_init(FAR struct spi_dev_s *dev) putreg32(0, SPI_CTRL_REG); putreg32(VALUE_MASK(0, SPI_CS_HOLD_TIME), SPI_USER1_REG); +#ifdef CONFIG_ESP32C3_SPI2_DMA + nxsem_init(&priv->sem_isr, 0, 0); + nxsem_set_protocol(&priv->sem_isr, SEM_PRIO_NONE); + + esp32c3_spi_dma_init(dev); +#endif + esp32c3_spi_setfrequency(dev, config->clk_freq); esp32c3_spi_setbits(dev, config->width); esp32c3_spi_setmode(dev, config->mode); @@ -1030,7 +1307,7 @@ static void esp32c3_spi_init(FAR struct spi_dev_s *dev) * dev - Device-specific state data * * Returned Value: - * None + * None. * ****************************************************************************/ @@ -1038,6 +1315,10 @@ static void esp32c3_spi_deinit(FAR struct spi_dev_s *dev) { FAR struct esp32c3_spi_priv_s *priv = (FAR struct esp32c3_spi_priv_s *)dev; +#ifdef CONFIG_ESP32C3_SPI2_DMA + modifyreg32(SYSTEM_PERIP_CLK_EN0_REG, priv->config->dma_clk_bit, 0); +#endif + modifyreg32(SYSTEM_PERIP_RST_EN0_REG, 0, priv->config->clk_bit); modifyreg32(SYSTEM_PERIP_CLK_EN0_REG, priv->config->clk_bit, 0); @@ -1047,6 +1328,34 @@ static void esp32c3_spi_deinit(FAR struct spi_dev_s *dev) priv->nbits = 0; } +/**************************************************************************** + * Name: esp32c3_spi_interrupt + * + * Description: + * Common SPI DMA interrupt handler. + * + * Input Parameters: + * irq - Number of the IRQ that generated the interrupt + * context - Interrupt register state save info + * arg - SPI controller private data + * + * Returned Value: + * Standard interrupt return value. + * + ****************************************************************************/ + +#ifdef CONFIG_ESP32C3_SPI2_DMA +static int esp32c3_spi_interrupt(int irq, void *context, FAR void *arg) +{ + FAR struct esp32c3_spi_priv_s *priv = (FAR struct esp32c3_spi_priv_s *)arg; + + esp32c3_spi_clr_regbits(SPI_DMA_INT_RAW_REG, SPI_TRANS_DONE_INT_RAW_M); + nxsem_post(&priv->sem_isr); + + return 0; +} +#endif + /**************************************************************************** * Name: esp32c3_spibus_initialize * @@ -1057,7 +1366,7 @@ static void esp32c3_spi_deinit(FAR struct spi_dev_s *dev) * port - Port number (for hardware that has multiple SPI interfaces) * * Returned Value: - * Valid SPI device structure reference on success; NULL on failure + * Valid SPI device structure reference on success; NULL on failure. * ****************************************************************************/ @@ -1089,6 +1398,42 @@ FAR struct spi_dev_s *esp32c3_spibus_initialize(int port) return spi_dev; } +#ifdef CONFIG_ESP32C3_SPI2_DMA + if (priv->cpuint != -ENOMEM) + { + /* Disable the provided CPU Interrupt to configure it. */ + + up_disable_irq(priv->cpuint); + } + + priv->cpuint = esp32c3_request_irq(priv->config->periph, + ESP32C3_INT_PRIO_DEF, + ESP32C3_INT_LEVEL); + if (priv->cpuint < 0) + { + /* Failed to allocate a CPU interrupt of this type. */ + + leave_critical_section(flags); + + return NULL; + } + + if (irq_attach(priv->config->irq, esp32c3_spi_interrupt, priv) != OK) + { + /* Failed to attach IRQ, so CPU interrupt must be freed. */ + + esp32c3_free_cpuint(priv->config->periph); + priv->cpuint = -ENOMEM; + leave_critical_section(flags); + + return NULL; + } + + /* Enable the CPU interrupt that is linked to the SPI device. */ + + up_enable_irq(priv->cpuint); +#endif + esp32c3_spi_init(spi_dev); priv->refs++; @@ -1108,7 +1453,7 @@ FAR struct spi_dev_s *esp32c3_spibus_initialize(int port) * dev - Device-specific state data * * Returned Value: - * Zero (OK) is returned on success. Otherwise -1 (ERROR). + * Zero (OK) is returned on success. Otherwise -1 (ERROR). * ****************************************************************************/ @@ -1134,6 +1479,14 @@ int esp32c3_spibus_uninitialize(FAR struct spi_dev_s *dev) leave_critical_section(flags); +#ifdef CONFIG_ESP32C3_SPI2_DMA + up_disable_irq(priv->cpuint); + esp32c3_free_cpuint(priv->config->periph); + priv->cpuint = -ENOMEM; + + nxsem_destroy(&priv->sem_isr); +#endif + esp32c3_spi_deinit(dev); nxsem_destroy(&priv->exclsem); From f12de4f7d92c74a2e42d03e17e40f55106d8efcf Mon Sep 17 00:00:00 2001 From: Dong Heng Date: Tue, 4 May 2021 22:31:14 +0800 Subject: [PATCH 135/739] riscv/esp32c3: Add ESP32-C3 ADC driver --- arch/risc-v/src/esp32c3/Kconfig | 57 ++ arch/risc-v/src/esp32c3/Make.defs | 4 + arch/risc-v/src/esp32c3/esp32c3_adc.c | 787 +++++++++++++++ arch/risc-v/src/esp32c3/esp32c3_adc.h | 79 ++ .../src/esp32c3/hardware/esp32c3_saradc.h | 912 ++++++++++++++++++ .../src/esp32c3/hardware/regi2c_saradc.h | 52 + .../esp32c3-devkit/configs/adc/defconfig | 49 + .../esp32c3/esp32c3-devkit/src/Makefile | 4 + .../esp32c3-devkit/src/esp32c3-devkit.h | 16 + .../esp32c3/esp32c3-devkit/src/esp32c3_adc.c | 150 +++ .../esp32c3-devkit/src/esp32c3_bringup.c | 9 + 11 files changed, 2119 insertions(+) create mode 100644 arch/risc-v/src/esp32c3/esp32c3_adc.c create mode 100644 arch/risc-v/src/esp32c3/esp32c3_adc.h create mode 100644 arch/risc-v/src/esp32c3/hardware/esp32c3_saradc.h create mode 100644 arch/risc-v/src/esp32c3/hardware/regi2c_saradc.h create mode 100644 boards/risc-v/esp32c3/esp32c3-devkit/configs/adc/defconfig create mode 100644 boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_adc.c diff --git a/arch/risc-v/src/esp32c3/Kconfig b/arch/risc-v/src/esp32c3/Kconfig index 99f02133c8a..c4456c7afe0 100644 --- a/arch/risc-v/src/esp32c3/Kconfig +++ b/arch/risc-v/src/esp32c3/Kconfig @@ -158,6 +158,12 @@ config ESP32C3_DISABLE_STDC_ATOMIC menu "ESP32-C3 Peripheral Support" +config ESP32C3_ADC + bool + default n + select ANALOG + select ADC + config ESP32C3_UART bool default n @@ -274,6 +280,11 @@ config ESP32C3_RWDT to have the RTC module reset, please, use the Timers' Module WDTs. They will only reset Main System. +config ESP32C3_ADC1 + bool "ADC1" + default n + select ESP32C3_ADC + config ESP32C3_WIRELESS bool "Wireless" default n @@ -511,6 +522,52 @@ config ESP32C3_LEDC_CHANNEL5_PIN endmenu # LEDC configuration +menu "ADC Configuration" + depends on ESP32C3_ADC + +if ESP32C3_ADC1 + +choice ESP32C3_ADC_VOL_RANGES + prompt "ADC1 voltage ranges" + default ESP32C3_ADC_VOL_750 + +config ESP32C3_ADC_VOL_750 + bool "0~750mV" + +config ESP32C3_ADC_VOL_1050 + bool "0~1050mV" + +config ESP32C3_ADC_VOL_1300 + bool "0~1300mV" + +config ESP32C3_ADC_VOL_2500 + bool "0~2500mV" + +endchoice + +config ESP32C3_ADC1_CHANNEL0 + bool "ADC1 channel 0" + default n + +config ESP32C3_ADC1_CHANNEL1 + bool "ADC1 channel 1" + default n + +config ESP32C3_ADC1_CHANNEL2 + bool "ADC1 channel 2" + default n + +config ESP32C3_ADC1_CHANNEL3 + bool "ADC1 channel 3" + default n + +config ESP32C3_ADC1_CHANNEL4 + bool "ADC1 channel 4" + default n + +endif # ESP32C3_ADC1 +endmenu # ADC Configuration + menu "Wi-Fi configuration" depends on ESP32C3_WIRELESS diff --git a/arch/risc-v/src/esp32c3/Make.defs b/arch/risc-v/src/esp32c3/Make.defs index 049d85e7252..df130979e0f 100644 --- a/arch/risc-v/src/esp32c3/Make.defs +++ b/arch/risc-v/src/esp32c3/Make.defs @@ -125,6 +125,10 @@ ifeq ($(CONFIG_ESP32C3_LEDC),y) CHIP_CSRCS += esp32c3_ledc.c endif +ifeq ($(CONFIG_ESP32C3_ADC),y) +CHIP_CSRCS += esp32c3_adc.c +endif + ifeq ($(CONFIG_ESP32C3_WIRELESS),y) WIRELESS_DRV_UNPACK = esp-wireless-drivers-3rdparty WIRELESS_DRV_ID = 2b53111 diff --git a/arch/risc-v/src/esp32c3/esp32c3_adc.c b/arch/risc-v/src/esp32c3/esp32c3_adc.c new file mode 100644 index 00000000000..bafda50d69c --- /dev/null +++ b/arch/risc-v/src/esp32c3/esp32c3_adc.c @@ -0,0 +1,787 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/esp32c3_adc.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include +#include + +#include + +#include "riscv_arch.h" + +#include "esp32c3.h" +#include "esp32c3_gpio.h" +#include "esp32c3_adc.h" + +#include "hardware/esp32c3_system.h" +#include "hardware/esp32c3_saradc.h" +#include "hardware/esp32c3_gpio_sigmap.h" +#include "hardware/regi2c_ctrl.h" +#include "hardware/regi2c_saradc.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* ADC calibration max count */ + +#define ADC_CAL_CNT_MAX (32) + +/* ADC calibration max value */ + +#define ADC_CAL_VAL_MAX (4096 - 1) + +/* ADC calibration sampling channel */ + +#define ADC_CAL_CHANNEL (0xf) + +/* ADC max value mask */ + +#define ADC_VAL_MASK (0xfff) + +/* ADC input voltage attenuation, this affects measuring range */ + +#define ADC_ATTEN_DB_0 (0) /* Vmax = 800 mV */ +#define ADC_ATTEN_DB_2_5 (1) /* Vmax = 1100 mV */ +#define ADC_ATTEN_DB_6 (2) /* Vmax = 1350 mV */ +#define ADC_ATTEN_DB_11 (3) /* Vmax = 2600 mV */ + +/* ADC attenuation */ + +#if defined(CONFIG_ESP32C3_ADC_VOL_750) +# define ADC_ATTEN_DEF ADC_ATTEN_DB_0 +# define ADC_VOL_VAL (750) +#elif defined(CONFIG_ESP32C3_ADC_VOL_1050) +# define ADC_ATTEN_DEF ADC_ATTEN_DB_2_5 +# define ADC_VOL_VAL (1050) +#elif defined(CONFIG_ESP32C3_ADC_VOL_1300) +# define ADC_ATTEN_DEF ADC_ATTEN_DB_6 +# define ADC_VOL_VAL (1300) +#elif defined(CONFIG_ESP32C3_ADC_VOL_2500) +# define ADC_ATTEN_DEF ADC_ATTEN_DB_11 +# define ADC_VOL_VAL (2500) +#endif + +#define ADC_WORK_DELAY (1) + +#ifndef MIN +# define MIN(a, b) ((a) < (b) ? (a) : (b)) +#endif + +#ifndef MAX +# define MAX(a, b) ((a) > (b) ? (a) : (b)) +#endif + +/**************************************************************************** + * Private Types + ****************************************************************************/ + +/* ADC Private Data */ + +struct adc_chan_s +{ + uint32_t ref; /* Reference count */ + + const uint8_t channel; /* Channel number */ + const uint8_t pin; /* GPIO pin number */ + + const struct adc_callback_s *cb; /* Upper driver callback */ +}; + +/**************************************************************************** + * Private Function Prototypes + ****************************************************************************/ + +static int adc_bind(struct adc_dev_s *dev, + const struct adc_callback_s *callback); +static void adc_reset(struct adc_dev_s *dev); +static int adc_setup(struct adc_dev_s *dev); +static void adc_shutdown(struct adc_dev_s *dev); +static void adc_rxint(struct adc_dev_s *dev, bool enable); +static int adc_ioctl(struct adc_dev_s *dev, int cmd, unsigned long arg); + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +/* ADC interface operations */ + +static const struct adc_ops_s g_adcops = +{ + .ao_bind = adc_bind, + .ao_reset = adc_reset, + .ao_setup = adc_setup, + .ao_shutdown = adc_shutdown, + .ao_rxint = adc_rxint, + .ao_ioctl = adc_ioctl, +}; + +#ifdef CONFIG_ESP32C3_ADC1_CHANNEL0 +static struct adc_chan_s g_adc1_chan0 = +{ + .channel = 0, + .pin = 0 +}; + +static struct adc_dev_s g_adc1_chan0_dev = +{ + .ad_ops = &g_adcops, + .ad_priv = &g_adc1_chan0 +}; +#endif + +#ifdef CONFIG_ESP32C3_ADC1_CHANNEL1 +static struct adc_chan_s g_adc1_chan1 = +{ + .channel = 1, + .pin = 1 +}; + +static struct adc_dev_s g_adc1_chan1_dev = +{ + .ad_ops = &g_adcops, + .ad_priv = &g_adc1_chan1, +}; +#endif + +#ifdef CONFIG_ESP32C3_ADC1_CHANNEL2 +static struct adc_chan_s g_adc1_chan2 = +{ + .channel = 2, + .pin = 2 +}; + +static struct adc_dev_s g_adc1_chan2_dev = +{ + .ad_ops = &g_adcops, + .ad_priv = &g_adc1_chan2, +}; +#endif + +#ifdef CONFIG_ESP32C3_ADC1_CHANNEL3 +static struct adc_chan_s g_adc1_chan3 = +{ + .channel = 3, + .pin = 3 +}; + +static struct adc_dev_s g_adc1_chan3_dev = +{ + .ad_ops = &g_adcops, + .ad_priv = &g_adc1_chan3, +}; +#endif + +#ifdef CONFIG_ESP32C3_ADC1_CHANNEL4 +static struct adc_chan_s g_adc1_chan4 = +{ + .channel = 4, + .pin = 4 +}; + +static struct adc_dev_s g_adc1_chan4_dev = +{ + .ad_ops = &g_adcops, + .ad_priv = &g_adc1_chan4, +}; +#endif + +/* ADC calibration mark */ + +static bool g_calibrated; + +/* ADC clock reference */ + +static uint32_t g_clk_ref; + +static sem_t g_sem_excl = SEM_INITIALIZER(1); + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: adc_enable_clk + * + * Description: + * Enable ADC clock. + * + * Input Parameters: + * NOne + * + * Returned Value: + * None. + * + ****************************************************************************/ + +static void adc_enable_clk(void) +{ + irqstate_t flags; + + flags = enter_critical_section(); + + if (!g_clk_ref) + { + setbits(SYSTEM_APB_SARADC_CLK_EN, SYSTEM_PERIP_CLK_EN0_REG); + resetbits(SYSTEM_APB_SARADC_RST, SYSTEM_PERIP_RST_EN0_REG); + } + + g_clk_ref++; + + leave_critical_section(flags); +} + +/**************************************************************************** + * Name: adc_disable_clk + * + * Description: + * Disable ADC clock. + * + * Input Parameters: + * NOne + * + * Returned Value: + * None. + * + ****************************************************************************/ + +static void adc_disable_clk(void) +{ + irqstate_t flags; + + flags = enter_critical_section(); + + g_clk_ref--; + + if (!g_clk_ref) + { + setbits(SYSTEM_APB_SARADC_RST, SYSTEM_PERIP_RST_EN0_REG); + resetbits(SYSTEM_APB_SARADC_CLK_EN, SYSTEM_PERIP_CLK_EN0_REG); + } + + leave_critical_section(flags); +} + +/**************************************************************************** + * Name: adc_set_calibration + * + * Description: + * Set calibration parameter to ADC hardware. + * + * Input Parameters: + * data - Calibration parameter + * + * Returned Value: + * None. + * + ****************************************************************************/ + +static void adc_set_calibration(uint16_t data) +{ + uint8_t h_data = data >> 8; + uint8_t l_data = data & 0xff; + + rom_i2c_writereg_mask(I2C_ADC, I2C_ADC_HOSTID, + I2C_ADC1_INITVAL_H, + I2C_ADC1_INITVAL_H_MSB, + I2C_ADC1_INITVAL_H_LSB, h_data); + + rom_i2c_writereg_mask(I2C_ADC, I2C_ADC_HOSTID, + I2C_ADC1_INITVAL_L, + I2C_ADC1_INITVAL_L_MSB, + I2C_ADC1_INITVAL_L_LSB, l_data); +} + +/**************************************************************************** + * Name: adc_samplecfg + * + * Description: + * Set ADC sampling with given channel. + * + * Input Parameters: + * channel - Sampling channel number + * + * Returned Value: + * None. + * + ****************************************************************************/ + +static inline void adc_samplecfg(int channel) +{ + uint32_t regval; + + /* Enable ADC1, its sampling channel and attenuation */ + + regval = getreg32(APB_SARADC_ONETIME_SAMPLE_REG); + regval &= ~(APB_SARADC1_ONETIME_SAMPLE | APB_SARADC2_ONETIME_SAMPLE | + APB_SARADC_ONETIME_CHANNEL_M | APB_SARADC_ONETIME_ATTEN_M); + regval |= (channel << APB_SARADC_ONETIME_CHANNEL_S) | + (ADC_ATTEN_DEF << APB_SARADC_ONETIME_ATTEN_S) | + APB_SARADC1_ONETIME_SAMPLE; + putreg32(regval, APB_SARADC_ONETIME_SAMPLE_REG); +} + +/**************************************************************************** + * Name: adc_read + * + * Description: + * Start ADC sampling and read ADC value. + * + * Input Parameters: + * None + * + * Returned Value: + * Read ADC value. + * + ****************************************************************************/ + +static uint16_t adc_read(void) +{ + uint16_t adc; + uint32_t regval; + + /* Trigger ADC sampling */ + + setbits(APB_SARADC_ONETIME_START, APB_SARADC_ONETIME_SAMPLE_REG); + + /* Wait until ADC1 sampling is done */ + + do + { + regval = getreg32(APB_SARADC_INT_ST_REG); + } + while (!(regval & APB_SARADC_ADC1_DONE_INT_ST)); + + adc = getreg32(APB_SARADC_1_DATA_STATUS_REG) & ADC_VAL_MASK; + + /* Disable ADC sampling */ + + resetbits(APB_SARADC_ONETIME_START, APB_SARADC_ONETIME_SAMPLE_REG); + + /* Clear ADC1 sampling done interrupt bit */ + + setbits(APB_SARADC_ADC1_DONE_INT_CLR, APB_SARADC_INT_CLR_REG); + + return adc; +} + +/**************************************************************************** + * Name: adc_calibrate + * + * Description: + * ADC calibration. + * + * Input Parameters: + * None + * + * Returned Value: + * None. + * + ****************************************************************************/ + +static void adc_calibrate(void) +{ + uint16_t cali_val; + uint16_t adc; + uint16_t adc_max = 0; + uint16_t adc_min = UINT16_MAX; + uint32_t adc_sum = 0; + + /* Enable Vdef */ + + rom_i2c_writereg_mask(I2C_ADC, I2C_ADC_HOSTID, + I2C_ADC1_DEF, I2C_ADC1_DEF_MSB, + I2C_ADC1_DEF_LSB, 1); + + /* Start sampling */ + + adc_samplecfg(ADC_CAL_CHANNEL); + + /* Enable internal connect GND (for calibration). */ + + rom_i2c_writereg_mask(I2C_ADC, I2C_ADC_HOSTID, + I2C_ADC1_ENCAL_GND, I2C_ADC1_ENCAL_GND_MSB, + I2C_ADC1_ENCAL_GND_LSB, 1); + + for (int i = 1; i < ADC_CAL_CNT_MAX ; i++) + { + adc_set_calibration(0); + adc = adc_read(); + + adc_sum += adc; + adc_max = MAX(adc, adc_max); + adc_min = MIN(adc, adc_min); + } + + cali_val = (adc_sum - adc_max - adc_min) / (ADC_CAL_CNT_MAX - 2); + + /* Disable internal connect GND (for calibration). */ + + rom_i2c_writereg_mask(I2C_ADC, I2C_ADC_HOSTID, + I2C_ADC1_ENCAL_GND, + I2C_ADC1_ENCAL_GND_MSB, + I2C_ADC1_ENCAL_GND_LSB, 0); + + ainfo("calibration value: %" PRIu16 "\n", cali_val); + + /* Set final calibration parameters */ + + adc_set_calibration(cali_val); +} + +/**************************************************************************** + * Name: adc_read_work + * + * Description: + * Read ADC value and pass it to up. + * + * Input Parameters: + * dev - ADC device pointer + * + * Returned Value: + * None. + * + ****************************************************************************/ + +static void adc_read_work(struct adc_dev_s *dev) +{ + int ret; + uint16_t adc; + struct adc_chan_s *priv = (struct adc_chan_s *)dev->ad_priv; + + ret = sem_wait(&g_sem_excl); + if (ret < 0) + { + aerr("Failed to wait sem ret=%d\n", ret); + return ; + } + + adc_samplecfg(priv->channel); + adc = adc_read(); + + priv->cb->au_receive(dev, priv->channel, adc); + + ainfo("channel: %" PRIu8 ", voltage: %" PRIu32 " mV\n", priv->channel, + (uint32_t)adc * ADC_VOL_VAL / ADC_CAL_VAL_MAX); + + sem_post(&g_sem_excl); +} + +/**************************************************************************** + * Name: adc_bind + * + * Description: + * Bind the upper-half driver callbacks to the lower-half implementation. + * This must be called early in order to receive ADC event notifications. + * + ****************************************************************************/ + +static int adc_bind(struct adc_dev_s *dev, + const struct adc_callback_s *callback) +{ + struct adc_chan_s *priv = (struct adc_chan_s *)dev->ad_priv; + + DEBUGASSERT(priv != NULL); + + ainfo("channel: %" PRIu8 "\n", priv->channel); + + priv->cb = callback; + + return OK; +} + +/**************************************************************************** + * Name: adc_reset + * + * Description: + * Reset the ADC device. Called early to initialize the hardware. + * This is called, before adc_setup() and on error conditions. + * + * Input Parameters: + * + * Returned Value: + * + ****************************************************************************/ + +static void adc_reset(struct adc_dev_s *dev) +{ + irqstate_t flags; + struct adc_chan_s *priv = (struct adc_chan_s *)dev->ad_priv; + + ainfo("channel: %" PRIu8 "\n", priv->channel); + + flags = enter_critical_section(); + + /* Do nothing if ADC instance is currently in use */ + + if (priv->ref > 0) + { + goto out; + } + + /* Reset ADC hardware */ + + adc_enable_clk(); + + adc_disable_clk(); + +out: + leave_critical_section(flags); +} + +/**************************************************************************** + * Name: adc_setup + * + * Description: + * Configure the ADC. This method is called the first time that the ADC + * device is opened. This will occur when the port is first opened. + * This setup includes configuring. + * + * Input Parameters: + * + * Returned Value: + * + ****************************************************************************/ + +static int adc_setup(struct adc_dev_s *dev) +{ + int ret; + uint32_t regval; + struct adc_chan_s *priv = (struct adc_chan_s *)dev->ad_priv; + + ainfo("channel: %" PRIu8 "\n", priv->channel); + + /* Do nothing when the ADC device is already set up */ + + if (priv->ref > 0) + { + return OK; + } + + /* Enable ADC clock */ + + adc_enable_clk(); + + /* Disable GPIO input and output */ + + ainfo("pin: %" PRIu8 "\n", priv->pin); + + esp32c3_configgpio(priv->pin, INPUT); + + /* Config ADC hardware */ + + regval = APB_SARADC_SAR_CLK_GATED_M | APB_SARADC_XPD_SAR_FORCE_M; + setbits(regval, APB_SARADC_CTRL_REG); + + regval = APB_SARADC_ADC1_DONE_INT_ENA; + setbits(regval, APB_SARADC_INT_ENA_REG); + + /* Start calibration only once */ + + ret = sem_wait(&g_sem_excl); + if (ret < 0) + { + adc_disable_clk(); + aerr("Failed to wait sem ret=%d\n", ret); + return ret; + } + + if (!g_calibrated) + { + adc_calibrate(); + g_calibrated = true; + } + + sem_post(&g_sem_excl); + + /* The ADC device is ready */ + + priv->ref++; + + return OK; +} + +/**************************************************************************** + * Name: adc_rxint + * + * Description: + * Call to enable or disable RX interrupts. + * + * Input Parameters: + * + * Returned Value: + * + ****************************************************************************/ + +static void adc_rxint(struct adc_dev_s *dev, bool enable) +{ +} + +/**************************************************************************** + * Name: adc_ioctl + * + * Description: + * All ioctl calls will be routed through this method. + * + * Input Parameters: + * dev - pointer to device structure used by the driver + * cmd - command + * arg - arguments passed with command + * + * Returned Value: + * + ****************************************************************************/ + +static int adc_ioctl(struct adc_dev_s *dev, int cmd, unsigned long arg) +{ + int ret; + struct adc_chan_s *priv = (struct adc_chan_s *)dev->ad_priv; + + ainfo("channel: %" PRIu8 " cmd=%d\n", priv->channel, cmd); + + switch (cmd) + { + case ANIOC_TRIGGER: + + /* Start sampling and read ADC value here */ + + adc_read_work(dev); + ret = OK; + break; + + default: + aerr("ERROR: Unknown cmd: %d\n", cmd); + ret = -ENOTTY; + break; + } + + return ret; +} + +/**************************************************************************** + * Name: adc_shutdown + * + * Description: + * Disable the ADC. This method is called when the ADC device is closed. + * This method reverses the operation the setup method. + * + * Input Parameters: + * + * Returned Value: + * + ****************************************************************************/ + +static void adc_shutdown(struct adc_dev_s *dev) +{ + struct adc_chan_s *priv = (struct adc_chan_s *)dev->ad_priv; + + ainfo("channel: %" PRIu8 "\n", priv->channel); + + /* Decrement count only when ADC device is in use */ + + if (priv->ref > 0) + { + priv->ref--; + + /* Shutdown the ADC device only when not in use */ + + if (!priv->ref) + { + adc_rxint(dev, false); + + /* Disable ADC clock */ + + adc_disable_clk(); + } + } +} + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: esp32c3_adc_init + * + * Description: + * Initialize the ADC. + * + * Input Parameters: + * channel - ADC channel number + * + * Returned Value: + * ADC device structure reference on success; a NULL on failure + * + ****************************************************************************/ + +struct adc_dev_s *esp32c3_adc_init(int channel) +{ + struct adc_dev_s *dev; + + ainfo("ADC channel: %" PRIu8 "\n", channel); + + switch (channel) + { +#ifdef CONFIG_ESP32C3_ADC1_CHANNEL0 + case 0: + dev = &g_adc1_chan0_dev; + break; +#endif + +#ifdef CONFIG_ESP32C3_ADC1_CHANNEL1 + case 1: + dev = &g_adc1_chan1_dev; + break; +#endif + +#ifdef CONFIG_ESP32C3_ADC1_CHANNEL2 + case 2: + dev = &g_adc1_chan2_dev; + break; +#endif + +#ifdef CONFIG_ESP32C3_ADC1_CHANNEL3 + case 3: + dev = &g_adc1_chan3_dev; + break; +#endif + +#ifdef CONFIG_ESP32C3_ADC1_CHANNEL4 + case 4: + dev = &g_adc1_chan4_dev; + break; +#endif + + default: + { + aerr("ERROR: No ADC interface defined\n"); + return NULL; + } + } + + return dev; +} diff --git a/arch/risc-v/src/esp32c3/esp32c3_adc.h b/arch/risc-v/src/esp32c3/esp32c3_adc.h new file mode 100644 index 00000000000..f79bf3f025d --- /dev/null +++ b/arch/risc-v/src/esp32c3/esp32c3_adc.h @@ -0,0 +1,79 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/esp32c3_adc.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_ESP32C3_ADC_H +#define __ARCH_RISCV_SRC_ESP32C3_ESP32C3_ADC_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Public Types + ****************************************************************************/ + +#ifndef __ASSEMBLY__ + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +#undef EXTERN +#if defined(__cplusplus) +#define EXTERN extern "C" +extern "C" +{ +#else +#define EXTERN extern +#endif + +/**************************************************************************** + * Name: esp32c3_adc_init + * + * Description: + * Initialize the ADC. + * + * Input Parameters: + * channel - ADC channel number + * + * Returned Value: + * ADC device structure reference on success; a NULL on failure + * + ****************************************************************************/ + +struct adc_dev_s *esp32c3_adc_init(int channel); + +#ifdef __cplusplus +} +#endif +#undef EXTERN + +#endif /* __ASSEMBLY__ */ +#endif /* __ARCH_RISCV_SRC_ESP32C3_ESP32C3_ADC_H */ diff --git a/arch/risc-v/src/esp32c3/hardware/esp32c3_saradc.h b/arch/risc-v/src/esp32c3/hardware/esp32c3_saradc.h new file mode 100644 index 00000000000..d0f110b8340 --- /dev/null +++ b/arch/risc-v/src/esp32c3/hardware/esp32c3_saradc.h @@ -0,0 +1,912 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/hardware/esp32c3_saradc.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_SARADC_H +#define __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_SARADC_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include "esp32c3_soc.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#define APB_SARADC_CTRL_REG (DR_REG_APB_SARADC_BASE + 0x000) + +/** APB_SARADC_WAIT_ARB_CYCLE : R/W ;bitpos:[31:30] ;default: 2'd1 ; + * description: wait arbit signal stable after sar_done + */ + +#define APB_SARADC_WAIT_ARB_CYCLE 0x00000003 +#define APB_SARADC_WAIT_ARB_CYCLE_M ((APB_SARADC_WAIT_ARB_CYCLE_V)<<(APB_SARADC_WAIT_ARB_CYCLE_S)) +#define APB_SARADC_WAIT_ARB_CYCLE_V 0x3 +#define APB_SARADC_WAIT_ARB_CYCLE_S 30 + +/* APB_SARADC_XPD_SAR_FORCE : R/W ;bitpos:[28:27] ;default: 2'd0 ; */ + +/* description: force option to xpd sar blocks */ + +#define APB_SARADC_XPD_SAR_FORCE 0x00000003 +#define APB_SARADC_XPD_SAR_FORCE_M ((APB_SARADC_XPD_SAR_FORCE_V)<<(APB_SARADC_XPD_SAR_FORCE_S)) +#define APB_SARADC_XPD_SAR_FORCE_V 0x3 +#define APB_SARADC_XPD_SAR_FORCE_S 27 + +/* APB_SARADC_SAR_PATT_P_CLEAR : R/W ;bitpos:[23] ;default: 1'd0 ; */ + +/* description: clear the pointer of pattern table for DIG ADC1 CTRL */ + +#define APB_SARADC_SAR_PATT_P_CLEAR (BIT(23)) +#define APB_SARADC_SAR_PATT_P_CLEAR_M (BIT(23)) +#define APB_SARADC_SAR_PATT_P_CLEAR_V 0x1 +#define APB_SARADC_SAR_PATT_P_CLEAR_S 23 + +/* APB_SARADC_SAR_PATT_LEN : R/W ;bitpos:[17:15] ;default: 3'd7 ; */ + +/* description: 0 ~ 15 means length 1 ~ 16 */ + +#define APB_SARADC_SAR_PATT_LEN 0x00000007 +#define APB_SARADC_SAR_PATT_LEN_M ((APB_SARADC_SAR_PATT_LEN_V)<<(APB_SARADC_SAR_PATT_LEN_S)) +#define APB_SARADC_SAR_PATT_LEN_V 0x7 +#define APB_SARADC_SAR_PATT_LEN_S 15 + +/* APB_SARADC_SAR_CLK_DIV : R/W ;bitpos:[14:7] ;default: 8'd4 ; */ + +/* description: SAR clock divider */ + +#define APB_SARADC_SAR_CLK_DIV 0x000000FF +#define APB_SARADC_SAR_CLK_DIV_M ((APB_SARADC_SAR_CLK_DIV_V)<<(APB_SARADC_SAR_CLK_DIV_S)) +#define APB_SARADC_SAR_CLK_DIV_V 0xFF +#define APB_SARADC_SAR_CLK_DIV_S 7 + +/* APB_SARADC_SAR_CLK_GATED : R/W ;bitpos:[6] ;default: 1'b1 ; */ + +/* description: */ + +#define APB_SARADC_SAR_CLK_GATED (BIT(6)) +#define APB_SARADC_SAR_CLK_GATED_M (BIT(6)) +#define APB_SARADC_SAR_CLK_GATED_V 0x1 +#define APB_SARADC_SAR_CLK_GATED_S 6 + +/* APB_SARADC_START : R/W ;bitpos:[1] ;default: 1'd0 ; */ + +/* description: */ + +#define APB_SARADC_START (BIT(1)) +#define APB_SARADC_START_M (BIT(1)) +#define APB_SARADC_START_V 0x1 +#define APB_SARADC_START_S 1 + +/* APB_SARADC_START_FORCE : R/W ;bitpos:[0] ;default: 1'd0 ; */ + +/* description: */ + +#define APB_SARADC_START_FORCE (BIT(0)) +#define APB_SARADC_START_FORCE_M (BIT(0)) +#define APB_SARADC_START_FORCE_V 0x1 +#define APB_SARADC_START_FORCE_S 0 + +#define APB_SARADC_CTRL2_REG (DR_REG_APB_SARADC_BASE + 0x004) + +/* APB_SARADC_TIMER_EN : R/W ;bitpos:[24] ;default: 1'd0 ; */ + +/* description: to enable saradc timer trigger */ + +#define APB_SARADC_TIMER_EN (BIT(24)) +#define APB_SARADC_TIMER_EN_M (BIT(24)) +#define APB_SARADC_TIMER_EN_V 0x1 +#define APB_SARADC_TIMER_EN_S 24 + +/* APB_SARADC_TIMER_TARGET : R/W ;bitpos:[23:12] ;default: 12'd10 ; */ + +/* description: to set saradc timer target */ + +#define APB_SARADC_TIMER_TARGET 0x00000FFF +#define APB_SARADC_TIMER_TARGET_M ((APB_SARADC_TIMER_TARGET_V)<<(APB_SARADC_TIMER_TARGET_S)) +#define APB_SARADC_TIMER_TARGET_V 0xFFF +#define APB_SARADC_TIMER_TARGET_S 12 + +/* APB_SARADC_SAR2_INV : R/W ;bitpos:[10] ;default: 1'd0 ; */ + +/* description: 1: data to DIG ADC2 CTRL is inverted otherwise not */ + +#define APB_SARADC_SAR2_INV (BIT(10)) +#define APB_SARADC_SAR2_INV_M (BIT(10)) +#define APB_SARADC_SAR2_INV_V 0x1 +#define APB_SARADC_SAR2_INV_S 10 + +/* APB_SARADC_SAR1_INV : R/W ;bitpos:[9] ;default: 1'd0 ; */ + +/* description: 1: data to DIG ADC1 CTRL is inverted otherwise not */ + +#define APB_SARADC_SAR1_INV (BIT(9)) +#define APB_SARADC_SAR1_INV_M (BIT(9)) +#define APB_SARADC_SAR1_INV_V 0x1 +#define APB_SARADC_SAR1_INV_S 9 + +/* APB_SARADC_MAX_MEAS_NUM : R/W ;bitpos:[8:1] ;default: 8'd255 ; */ + +/* description: max conversion number */ + +#define APB_SARADC_MAX_MEAS_NUM 0x000000FF +#define APB_SARADC_MAX_MEAS_NUM_M ((APB_SARADC_MAX_MEAS_NUM_V)<<(APB_SARADC_MAX_MEAS_NUM_S)) +#define APB_SARADC_MAX_MEAS_NUM_V 0xFF +#define APB_SARADC_MAX_MEAS_NUM_S 1 + +/* APB_SARADC_MEAS_NUM_LIMIT : R/W ;bitpos:[0] ;default: 1'd0 ; */ + +/* description: */ + +#define APB_SARADC_MEAS_NUM_LIMIT (BIT(0)) +#define APB_SARADC_MEAS_NUM_LIMIT_M (BIT(0)) +#define APB_SARADC_MEAS_NUM_LIMIT_V 0x1 +#define APB_SARADC_MEAS_NUM_LIMIT_S 0 + +#define APB_SARADC_FILTER_CTRL1_REG (DR_REG_APB_SARADC_BASE + 0x008) + +/* APB_SARADC_FILTER_FACTOR0 : R/W ;bitpos:[31:29] ;default: 3'd0 ; */ + +/* description: */ + +#define APB_SARADC_FILTER_FACTOR0 0x00000007 +#define APB_SARADC_FILTER_FACTOR0_M ((APB_SARADC_FILTER_FACTOR0_V)<<(APB_SARADC_FILTER_FACTOR0_S)) +#define APB_SARADC_FILTER_FACTOR0_V 0x7 +#define APB_SARADC_FILTER_FACTOR0_S 29 + +/* APB_SARADC_FILTER_FACTOR1 : R/W ;bitpos:[28:26] ;default: 3'd0 ; */ + +/* description: */ + +#define APB_SARADC_FILTER_FACTOR1 0x00000007 +#define APB_SARADC_FILTER_FACTOR1_M ((APB_SARADC_FILTER_FACTOR1_V)<<(APB_SARADC_FILTER_FACTOR1_S)) +#define APB_SARADC_FILTER_FACTOR1_V 0x7 +#define APB_SARADC_FILTER_FACTOR1_S 26 + +#define APB_SARADC_FSM_WAIT_REG (DR_REG_APB_SARADC_BASE + 0x00C) + +/* APB_SARADC_STANDBY_WAIT : R/W ;bitpos:[23:16] ;default: 8'd255 ; */ + +/* description: */ + +#define APB_SARADC_STANDBY_WAIT 0x000000FF +#define APB_SARADC_STANDBY_WAIT_M ((APB_SARADC_STANDBY_WAIT_V)<<(APB_SARADC_STANDBY_WAIT_S)) +#define APB_SARADC_STANDBY_WAIT_V 0xFF +#define APB_SARADC_STANDBY_WAIT_S 16 + +/* APB_SARADC_RSTB_WAIT : R/W ;bitpos:[15:8] ;default: 8'd8 ; */ + +/* description: */ + +#define APB_SARADC_RSTB_WAIT 0x000000FF +#define APB_SARADC_RSTB_WAIT_M ((APB_SARADC_RSTB_WAIT_V)<<(APB_SARADC_RSTB_WAIT_S)) +#define APB_SARADC_RSTB_WAIT_V 0xFF +#define APB_SARADC_RSTB_WAIT_S 8 + +/* APB_SARADC_XPD_WAIT : R/W ;bitpos:[7:0] ;default: 8'd8 ; */ + +/* description: */ + +#define APB_SARADC_XPD_WAIT 0x000000FF +#define APB_SARADC_XPD_WAIT_M ((APB_SARADC_XPD_WAIT_V)<<(APB_SARADC_XPD_WAIT_S)) +#define APB_SARADC_XPD_WAIT_V 0xFF +#define APB_SARADC_XPD_WAIT_S 0 + +#define APB_SARADC_SAR1_STATUS_REG (DR_REG_APB_SARADC_BASE + 0x010) + +/* APB_SARADC_SAR1_STATUS : RO ;bitpos:[31:0] ;default: 32'd0 ; */ + +/* description: */ + +#define APB_SARADC_SAR1_STATUS 0xFFFFFFFF +#define APB_SARADC_SAR1_STATUS_M ((APB_SARADC_SAR1_STATUS_V)<<(APB_SARADC_SAR1_STATUS_S)) +#define APB_SARADC_SAR1_STATUS_V 0xFFFFFFFF +#define APB_SARADC_SAR1_STATUS_S 0 + +#define APB_SARADC_SAR2_STATUS_REG (DR_REG_APB_SARADC_BASE + 0x014) + +/* APB_SARADC_SAR2_STATUS : RO ;bitpos:[31:0] ;default: 32'd0 ; */ + +/* description: */ + +#define APB_SARADC_SAR2_STATUS 0xFFFFFFFF +#define APB_SARADC_SAR2_STATUS_M ((APB_SARADC_SAR2_STATUS_V)<<(APB_SARADC_SAR2_STATUS_S)) +#define APB_SARADC_SAR2_STATUS_V 0xFFFFFFFF +#define APB_SARADC_SAR2_STATUS_S 0 + +#define APB_SARADC_SAR_PATT_TAB1_REG (DR_REG_APB_SARADC_BASE + 0x018) + +/* APB_SARADC_SAR_PATT_TAB1 : R/W ;bitpos:[23:0] ;default: 24'h0 ; */ + +/* description: item 0 ~ 3 for pattern table 1 (each item one byte) */ + +#define APB_SARADC_SAR_PATT_TAB1 0x00FFFFFF +#define APB_SARADC_SAR_PATT_TAB1_M ((APB_SARADC_SAR_PATT_TAB1_V)<<(APB_SARADC_SAR_PATT_TAB1_S)) +#define APB_SARADC_SAR_PATT_TAB1_V 0xFFFFFF +#define APB_SARADC_SAR_PATT_TAB1_S 0 + +#define APB_SARADC_SAR_PATT_TAB2_REG (DR_REG_APB_SARADC_BASE + 0x01C) + +/* APB_SARADC_SAR_PATT_TAB2 : R/W ;bitpos:[23:0] ;default: 24'h0 ; */ + +/* description: Item 4 ~ 7 for pattern table 1 (each item one byte) */ + +#define APB_SARADC_SAR_PATT_TAB2 0x00FFFFFF +#define APB_SARADC_SAR_PATT_TAB2_M ((APB_SARADC_SAR_PATT_TAB2_V)<<(APB_SARADC_SAR_PATT_TAB2_S)) +#define APB_SARADC_SAR_PATT_TAB2_V 0xFFFFFF +#define APB_SARADC_SAR_PATT_TAB2_S 0 + +#define APB_SARADC_ONETIME_SAMPLE_REG (DR_REG_APB_SARADC_BASE + 0x020) + +/* APB_SARADC1_ONETIME_SAMPLE : R/W ;bitpos:[31] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC1_ONETIME_SAMPLE (BIT(31)) +#define APB_SARADC1_ONETIME_SAMPLE_M (BIT(31)) +#define APB_SARADC1_ONETIME_SAMPLE_V 0x1 +#define APB_SARADC1_ONETIME_SAMPLE_S 31 + +/* APB_SARADC2_ONETIME_SAMPLE : R/W ;bitpos:[30] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC2_ONETIME_SAMPLE (BIT(30)) +#define APB_SARADC2_ONETIME_SAMPLE_M (BIT(30)) +#define APB_SARADC2_ONETIME_SAMPLE_V 0x1 +#define APB_SARADC2_ONETIME_SAMPLE_S 30 + +/* APB_SARADC_ONETIME_START : R/W ;bitpos:[29] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_ONETIME_START (BIT(29)) +#define APB_SARADC_ONETIME_START_M (BIT(29)) +#define APB_SARADC_ONETIME_START_V 0x1 +#define APB_SARADC_ONETIME_START_S 29 + +/* APB_SARADC_ONETIME_CHANNEL : R/W ;bitpos:[28:25] ;default: 4'd13 ; */ + +/* description: */ + +#define APB_SARADC_ONETIME_CHANNEL 0x0000000F +#define APB_SARADC_ONETIME_CHANNEL_M ((APB_SARADC_ONETIME_CHANNEL_V)<<(APB_SARADC_ONETIME_CHANNEL_S)) +#define APB_SARADC_ONETIME_CHANNEL_V 0xF +#define APB_SARADC_ONETIME_CHANNEL_S 25 + +/* APB_SARADC_ONETIME_ATTEN : R/W ;bitpos:[24:23] ;default: 2'd0 ; */ + +/* description: */ + +#define APB_SARADC_ONETIME_ATTEN 0x00000003 +#define APB_SARADC_ONETIME_ATTEN_M ((APB_SARADC_ONETIME_ATTEN_V)<<(APB_SARADC_ONETIME_ATTEN_S)) +#define APB_SARADC_ONETIME_ATTEN_V 0x3 +#define APB_SARADC_ONETIME_ATTEN_S 23 + +#define APB_SARADC_APB_ADC_ARB_CTRL_REG (DR_REG_APB_SARADC_BASE + 0x024) + +/* APB_SARADC_ADC_ARB_FIX_PRIORITY : R/W ;bitpos:[12] ;default: 1'b0 ; */ + +/* description: adc2 arbiter uses fixed priority */ + +#define APB_SARADC_ADC_ARB_FIX_PRIORITY (BIT(12)) +#define APB_SARADC_ADC_ARB_FIX_PRIORITY_M (BIT(12)) +#define APB_SARADC_ADC_ARB_FIX_PRIORITY_V 0x1 +#define APB_SARADC_ADC_ARB_FIX_PRIORITY_S 12 + +/* APB_SARADC_ADC_ARB_WIFI_PRIORITY : R/W ;bitpos:[11:10] ;default: 2'd2 ; */ + +/* description: Set adc2 arbiter wifi priority */ + +#define APB_SARADC_ADC_ARB_WIFI_PRIORITY 0x00000003 +#define APB_SARADC_ADC_ARB_WIFI_PRIORITY_M ((APB_SARADC_ADC_ARB_WIFI_PRIORITY_V)<<(APB_SARADC_ADC_ARB_WIFI_PRIORITY_S)) +#define APB_SARADC_ADC_ARB_WIFI_PRIORITY_V 0x3 +#define APB_SARADC_ADC_ARB_WIFI_PRIORITY_S 10 + +/* APB_SARADC_ADC_ARB_RTC_PRIORITY : R/W ;bitpos:[9:8] ;default: 2'd1 ; */ + +/* description: Set adc2 arbiter rtc priority */ + +#define APB_SARADC_ADC_ARB_RTC_PRIORITY 0x00000003 +#define APB_SARADC_ADC_ARB_RTC_PRIORITY_M ((APB_SARADC_ADC_ARB_RTC_PRIORITY_V)<<(APB_SARADC_ADC_ARB_RTC_PRIORITY_S)) +#define APB_SARADC_ADC_ARB_RTC_PRIORITY_V 0x3 +#define APB_SARADC_ADC_ARB_RTC_PRIORITY_S 8 + +/* APB_SARADC_ADC_ARB_APB_PRIORITY : R/W ;bitpos:[7:6] ;default: 2'd0 ; */ + +/* description: Set adc2 arbiterapb priority */ + +#define APB_SARADC_ADC_ARB_APB_PRIORITY 0x00000003 +#define APB_SARADC_ADC_ARB_APB_PRIORITY_M ((APB_SARADC_ADC_ARB_APB_PRIORITY_V)<<(APB_SARADC_ADC_ARB_APB_PRIORITY_S)) +#define APB_SARADC_ADC_ARB_APB_PRIORITY_V 0x3 +#define APB_SARADC_ADC_ARB_APB_PRIORITY_S 6 + +/* APB_SARADC_ADC_ARB_GRANT_FORCE : R/W ;bitpos:[5] ;default: 1'b0 ; */ + +/* description: adc2 arbiter force grant */ + +#define APB_SARADC_ADC_ARB_GRANT_FORCE (BIT(5)) +#define APB_SARADC_ADC_ARB_GRANT_FORCE_M (BIT(5)) +#define APB_SARADC_ADC_ARB_GRANT_FORCE_V 0x1 +#define APB_SARADC_ADC_ARB_GRANT_FORCE_S 5 + +/* APB_SARADC_ADC_ARB_WIFI_FORCE : R/W ;bitpos:[4] ;default: 1'b0 ; */ + +/* description: adc2 arbiter force to enable wifi controller */ + +#define APB_SARADC_ADC_ARB_WIFI_FORCE (BIT(4)) +#define APB_SARADC_ADC_ARB_WIFI_FORCE_M (BIT(4)) +#define APB_SARADC_ADC_ARB_WIFI_FORCE_V 0x1 +#define APB_SARADC_ADC_ARB_WIFI_FORCE_S 4 + +/* APB_SARADC_ADC_ARB_RTC_FORCE : R/W ;bitpos:[3] ;default: 1'b0 ; */ + +/* description: adc2 arbiter force to enable rtc controller */ + +#define APB_SARADC_ADC_ARB_RTC_FORCE (BIT(3)) +#define APB_SARADC_ADC_ARB_RTC_FORCE_M (BIT(3)) +#define APB_SARADC_ADC_ARB_RTC_FORCE_V 0x1 +#define APB_SARADC_ADC_ARB_RTC_FORCE_S 3 + +/* APB_SARADC_ADC_ARB_APB_FORCE : R/W ;bitpos:[2] ;default: 1'fb0 ; */ + +/* description: adc2 arbiter force to enableapb controller */ + +#define APB_SARADC_ADC_ARB_APB_FORCE (BIT(2)) +#define APB_SARADC_ADC_ARB_APB_FORCE_M (BIT(2)) +#define APB_SARADC_ADC_ARB_APB_FORCE_V 0x1 +#define APB_SARADC_ADC_ARB_APB_FORCE_S 2 + +#define APB_SARADC_FILTER_CTRL0_REG (DR_REG_APB_SARADC_BASE + 0x028) + +/* APB_SARADC_FILTER_RESET : R/W ;bitpos:[31] ;default: 1'b0 ; */ + +/* description: enable apb_adc1_filter */ + +#define APB_SARADC_FILTER_RESET (BIT(31)) +#define APB_SARADC_FILTER_RESET_M (BIT(31)) +#define APB_SARADC_FILTER_RESET_V 0x1 +#define APB_SARADC_FILTER_RESET_S 31 + +/* APB_SARADC_FILTER_CHANNEL0 : R/W ;bitpos:[25:22] ;default: 4'd13 ; */ + +/* description: apb_adc1_filter_factor */ + +#define APB_SARADC_FILTER_CHANNEL0 0x0000000F +#define APB_SARADC_FILTER_CHANNEL0_M ((APB_SARADC_FILTER_CHANNEL0_V)<<(APB_SARADC_FILTER_CHANNEL0_S)) +#define APB_SARADC_FILTER_CHANNEL0_V 0xF +#define APB_SARADC_FILTER_CHANNEL0_S 22 + +/* APB_SARADC_FILTER_CHANNEL1 : R/W ;bitpos:[21:18] ;default: 4'd13 ; */ + +/* description: */ + +#define APB_SARADC_FILTER_CHANNEL1 0x0000000F +#define APB_SARADC_FILTER_CHANNEL1_M ((APB_SARADC_FILTER_CHANNEL1_V)<<(APB_SARADC_FILTER_CHANNEL1_S)) +#define APB_SARADC_FILTER_CHANNEL1_V 0xF +#define APB_SARADC_FILTER_CHANNEL1_S 18 + +#define APB_SARADC_1_DATA_STATUS_REG (DR_REG_APB_SARADC_BASE + 0x02C) + +/* APB_SARADC_ADC1_DATA : RO ;bitpos:[16:0] ;default: 17'd0 ; */ + +/* description: */ + +#define APB_SARADC_ADC1_DATA 0x0001FFFF +#define APB_SARADC_ADC1_DATA_M ((APB_SARADC_ADC1_DATA_V)<<(APB_SARADC_ADC1_DATA_S)) +#define APB_SARADC_ADC1_DATA_V 0x1FFFF +#define APB_SARADC_ADC1_DATA_S 0 + +#define APB_SARADC_2_DATA_STATUS_REG (DR_REG_APB_SARADC_BASE + 0x030) + +/* APB_SARADC_ADC2_DATA : RO ;bitpos:[16:0] ;default: 17'd0 ; */ + +/* description: */ + +#define APB_SARADC_ADC2_DATA 0x0001FFFF +#define APB_SARADC_ADC2_DATA_M ((APB_SARADC_ADC2_DATA_V)<<(APB_SARADC_ADC2_DATA_S)) +#define APB_SARADC_ADC2_DATA_V 0x1FFFF +#define APB_SARADC_ADC2_DATA_S 0 + +#define APB_SARADC_THRES0_CTRL_REG (DR_REG_APB_SARADC_BASE + 0x034) + +/* APB_SARADC_THRES0_LOW : R/W ;bitpos:[30:18] ;default: 13'd0 ; */ + +/* description: saradc1's thres0 monitor thres */ + +#define APB_SARADC_THRES0_LOW 0x00001FFF +#define APB_SARADC_THRES0_LOW_M ((APB_SARADC_THRES0_LOW_V)<<(APB_SARADC_THRES0_LOW_S)) +#define APB_SARADC_THRES0_LOW_V 0x1FFF +#define APB_SARADC_THRES0_LOW_S 18 + +/* APB_SARADC_THRES0_HIGH : R/W ;bitpos:[17:5] ;default: 13'h1fff ; */ + +/* description: saradc1's thres0 monitor thres */ + +#define APB_SARADC_THRES0_HIGH 0x00001FFF +#define APB_SARADC_THRES0_HIGH_M ((APB_SARADC_THRES0_HIGH_V)<<(APB_SARADC_THRES0_HIGH_S)) +#define APB_SARADC_THRES0_HIGH_V 0x1FFF +#define APB_SARADC_THRES0_HIGH_S 5 + +/* APB_SARADC_THRES0_CHANNEL : R/W ;bitpos:[3:0] ;default: 4'd13 ; */ + +/* description: */ + +#define APB_SARADC_THRES0_CHANNEL 0x0000000F +#define APB_SARADC_THRES0_CHANNEL_M ((APB_SARADC_THRES0_CHANNEL_V)<<(APB_SARADC_THRES0_CHANNEL_S)) +#define APB_SARADC_THRES0_CHANNEL_V 0xF +#define APB_SARADC_THRES0_CHANNEL_S 0 + +#define APB_SARADC_THRES1_CTRL_REG (DR_REG_APB_SARADC_BASE + 0x038) + +/* APB_SARADC_THRES1_LOW : R/W ;bitpos:[30:18] ;default: 13'd0 ; */ + +/* description: saradc1's thres0 monitor thres */ + +#define APB_SARADC_THRES1_LOW 0x00001FFF +#define APB_SARADC_THRES1_LOW_M ((APB_SARADC_THRES1_LOW_V)<<(APB_SARADC_THRES1_LOW_S)) +#define APB_SARADC_THRES1_LOW_V 0x1FFF +#define APB_SARADC_THRES1_LOW_S 18 + +/* APB_SARADC_THRES1_HIGH : R/W ;bitpos:[17:5] ;default: 13'h1fff ; */ + +/* description: saradc1's thres0 monitor thres */ + +#define APB_SARADC_THRES1_HIGH 0x00001FFF +#define APB_SARADC_THRES1_HIGH_M ((APB_SARADC_THRES1_HIGH_V)<<(APB_SARADC_THRES1_HIGH_S)) +#define APB_SARADC_THRES1_HIGH_V 0x1FFF +#define APB_SARADC_THRES1_HIGH_S 5 + +/* APB_SARADC_THRES1_CHANNEL : R/W ;bitpos:[3:0] ;default: 4'd13 ; */ + +/* description: */ + +#define APB_SARADC_THRES1_CHANNEL 0x0000000F +#define APB_SARADC_THRES1_CHANNEL_M ((APB_SARADC_THRES1_CHANNEL_V)<<(APB_SARADC_THRES1_CHANNEL_S)) +#define APB_SARADC_THRES1_CHANNEL_V 0xF +#define APB_SARADC_THRES1_CHANNEL_S 0 + +#define APB_SARADC_THRES_CTRL_REG (DR_REG_APB_SARADC_BASE + 0x03C) + +/* APB_SARADC_THRES0_EN : R/W ;bitpos:[31] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_THRES0_EN (BIT(31)) +#define APB_SARADC_THRES0_EN_M (BIT(31)) +#define APB_SARADC_THRES0_EN_V 0x1 +#define APB_SARADC_THRES0_EN_S 31 + +/* APB_SARADC_THRES1_EN : R/W ;bitpos:[30] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_THRES1_EN (BIT(30)) +#define APB_SARADC_THRES1_EN_M (BIT(30)) +#define APB_SARADC_THRES1_EN_V 0x1 +#define APB_SARADC_THRES1_EN_S 30 + +/* description: */ + +#define APB_SARADC_THRES_ALL_EN (BIT(27)) +#define APB_SARADC_THRES_ALL_EN_M (BIT(27)) +#define APB_SARADC_THRES_ALL_EN_V 0x1 +#define APB_SARADC_THRES_ALL_EN_S 27 + +#define APB_SARADC_INT_ENA_REG (DR_REG_APB_SARADC_BASE + 0x040) + +/* APB_SARADC_ADC1_DONE_INT_ENA : R/W ;bitpos:[31] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_ADC1_DONE_INT_ENA (BIT(31)) +#define APB_SARADC_ADC1_DONE_INT_ENA_M (BIT(31)) +#define APB_SARADC_ADC1_DONE_INT_ENA_V 0x1 +#define APB_SARADC_ADC1_DONE_INT_ENA_S 31 + +/* APB_SARADC_ADC2_DONE_INT_ENA : R/W ;bitpos:[30] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_ADC2_DONE_INT_ENA (BIT(30)) +#define APB_SARADC_ADC2_DONE_INT_ENA_M (BIT(30)) +#define APB_SARADC_ADC2_DONE_INT_ENA_V 0x1 +#define APB_SARADC_ADC2_DONE_INT_ENA_S 30 + +/* APB_SARADC_THRES0_HIGH_INT_ENA : R/W ;bitpos:[29] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_THRES0_HIGH_INT_ENA (BIT(29)) +#define APB_SARADC_THRES0_HIGH_INT_ENA_M (BIT(29)) +#define APB_SARADC_THRES0_HIGH_INT_ENA_V 0x1 +#define APB_SARADC_THRES0_HIGH_INT_ENA_S 29 + +/* APB_SARADC_THRES1_HIGH_INT_ENA : R/W ;bitpos:[28] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_THRES1_HIGH_INT_ENA (BIT(28)) +#define APB_SARADC_THRES1_HIGH_INT_ENA_M (BIT(28)) +#define APB_SARADC_THRES1_HIGH_INT_ENA_V 0x1 +#define APB_SARADC_THRES1_HIGH_INT_ENA_S 28 + +/* APB_SARADC_THRES0_LOW_INT_ENA : R/W ;bitpos:[27] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_THRES0_LOW_INT_ENA (BIT(27)) +#define APB_SARADC_THRES0_LOW_INT_ENA_M (BIT(27)) +#define APB_SARADC_THRES0_LOW_INT_ENA_V 0x1 +#define APB_SARADC_THRES0_LOW_INT_ENA_S 27 + +/* APB_SARADC_THRES1_LOW_INT_ENA : R/W ;bitpos:[26] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_THRES1_LOW_INT_ENA (BIT(26)) +#define APB_SARADC_THRES1_LOW_INT_ENA_M (BIT(26)) +#define APB_SARADC_THRES1_LOW_INT_ENA_V 0x1 +#define APB_SARADC_THRES1_LOW_INT_ENA_S 26 + +#define APB_SARADC_INT_RAW_REG (DR_REG_APB_SARADC_BASE + 0x044) + +/* APB_SARADC_ADC1_DONE_INT_RAW : RO ;bitpos:[31] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_ADC1_DONE_INT_RAW (BIT(31)) +#define APB_SARADC_ADC1_DONE_INT_RAW_M (BIT(31)) +#define APB_SARADC_ADC1_DONE_INT_RAW_V 0x1 +#define APB_SARADC_ADC1_DONE_INT_RAW_S 31 + +/* APB_SARADC_ADC2_DONE_INT_RAW : RO ;bitpos:[30] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_ADC2_DONE_INT_RAW (BIT(30)) +#define APB_SARADC_ADC2_DONE_INT_RAW_M (BIT(30)) +#define APB_SARADC_ADC2_DONE_INT_RAW_V 0x1 +#define APB_SARADC_ADC2_DONE_INT_RAW_S 30 + +/* APB_SARADC_THRES0_HIGH_INT_RAW : RO ;bitpos:[29] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_THRES0_HIGH_INT_RAW (BIT(29)) +#define APB_SARADC_THRES0_HIGH_INT_RAW_M (BIT(29)) +#define APB_SARADC_THRES0_HIGH_INT_RAW_V 0x1 +#define APB_SARADC_THRES0_HIGH_INT_RAW_S 29 + +/* APB_SARADC_THRES1_HIGH_INT_RAW : RO ;bitpos:[28] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_THRES1_HIGH_INT_RAW (BIT(28)) +#define APB_SARADC_THRES1_HIGH_INT_RAW_M (BIT(28)) +#define APB_SARADC_THRES1_HIGH_INT_RAW_V 0x1 +#define APB_SARADC_THRES1_HIGH_INT_RAW_S 28 + +/* APB_SARADC_THRES0_LOW_INT_RAW : RO ;bitpos:[27] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_THRES0_LOW_INT_RAW (BIT(27)) +#define APB_SARADC_THRES0_LOW_INT_RAW_M (BIT(27)) +#define APB_SARADC_THRES0_LOW_INT_RAW_V 0x1 +#define APB_SARADC_THRES0_LOW_INT_RAW_S 27 + +/* APB_SARADC_THRES1_LOW_INT_RAW : RO ;bitpos:[26] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_THRES1_LOW_INT_RAW (BIT(26)) +#define APB_SARADC_THRES1_LOW_INT_RAW_M (BIT(26)) +#define APB_SARADC_THRES1_LOW_INT_RAW_V 0x1 +#define APB_SARADC_THRES1_LOW_INT_RAW_S 26 + +#define APB_SARADC_INT_ST_REG (DR_REG_APB_SARADC_BASE + 0x048) + +/* APB_SARADC_ADC1_DONE_INT_ST : RO ;bitpos:[31] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_ADC1_DONE_INT_ST (BIT(31)) +#define APB_SARADC_ADC1_DONE_INT_ST_M (BIT(31)) +#define APB_SARADC_ADC1_DONE_INT_ST_V 0x1 +#define APB_SARADC_ADC1_DONE_INT_ST_S 31 + +/* APB_SARADC_ADC2_DONE_INT_ST : RO ;bitpos:[30] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_ADC2_DONE_INT_ST (BIT(30)) +#define APB_SARADC_ADC2_DONE_INT_ST_M (BIT(30)) +#define APB_SARADC_ADC2_DONE_INT_ST_V 0x1 +#define APB_SARADC_ADC2_DONE_INT_ST_S 30 + +/* APB_SARADC_THRES0_HIGH_INT_ST : RO ;bitpos:[29] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_THRES0_HIGH_INT_ST (BIT(29)) +#define APB_SARADC_THRES0_HIGH_INT_ST_M (BIT(29)) +#define APB_SARADC_THRES0_HIGH_INT_ST_V 0x1 +#define APB_SARADC_THRES0_HIGH_INT_ST_S 29 + +/* APB_SARADC_THRES1_HIGH_INT_ST : RO ;bitpos:[28] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_THRES1_HIGH_INT_ST (BIT(28)) +#define APB_SARADC_THRES1_HIGH_INT_ST_M (BIT(28)) +#define APB_SARADC_THRES1_HIGH_INT_ST_V 0x1 +#define APB_SARADC_THRES1_HIGH_INT_ST_S 28 + +/* APB_SARADC_THRES0_LOW_INT_ST : RO ;bitpos:[27] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_THRES0_LOW_INT_ST (BIT(27)) +#define APB_SARADC_THRES0_LOW_INT_ST_M (BIT(27)) +#define APB_SARADC_THRES0_LOW_INT_ST_V 0x1 +#define APB_SARADC_THRES0_LOW_INT_ST_S 27 + +/* APB_SARADC_THRES1_LOW_INT_ST : RO ;bitpos:[26] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_THRES1_LOW_INT_ST (BIT(26)) +#define APB_SARADC_THRES1_LOW_INT_ST_M (BIT(26)) +#define APB_SARADC_THRES1_LOW_INT_ST_V 0x1 +#define APB_SARADC_THRES1_LOW_INT_ST_S 26 + +#define APB_SARADC_INT_CLR_REG (DR_REG_APB_SARADC_BASE + 0x04C) + +/* APB_SARADC_ADC1_DONE_INT_CLR : WO ;bitpos:[31] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_ADC1_DONE_INT_CLR (BIT(31)) +#define APB_SARADC_ADC1_DONE_INT_CLR_M (BIT(31)) +#define APB_SARADC_ADC1_DONE_INT_CLR_V 0x1 +#define APB_SARADC_ADC1_DONE_INT_CLR_S 31 + +/* APB_SARADC_ADC2_DONE_INT_CLR : WO ;bitpos:[30] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_ADC2_DONE_INT_CLR (BIT(30)) +#define APB_SARADC_ADC2_DONE_INT_CLR_M (BIT(30)) +#define APB_SARADC_ADC2_DONE_INT_CLR_V 0x1 +#define APB_SARADC_ADC2_DONE_INT_CLR_S 30 + +/* APB_SARADC_THRES0_HIGH_INT_CLR : WO ;bitpos:[29] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_THRES0_HIGH_INT_CLR (BIT(29)) +#define APB_SARADC_THRES0_HIGH_INT_CLR_M (BIT(29)) +#define APB_SARADC_THRES0_HIGH_INT_CLR_V 0x1 +#define APB_SARADC_THRES0_HIGH_INT_CLR_S 29 + +/* APB_SARADC_THRES1_HIGH_INT_CLR : WO ;bitpos:[28] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_THRES1_HIGH_INT_CLR (BIT(28)) +#define APB_SARADC_THRES1_HIGH_INT_CLR_M (BIT(28)) +#define APB_SARADC_THRES1_HIGH_INT_CLR_V 0x1 +#define APB_SARADC_THRES1_HIGH_INT_CLR_S 28 + +/* APB_SARADC_THRES0_LOW_INT_CLR : WO ;bitpos:[27] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_THRES0_LOW_INT_CLR (BIT(27)) +#define APB_SARADC_THRES0_LOW_INT_CLR_M (BIT(27)) +#define APB_SARADC_THRES0_LOW_INT_CLR_V 0x1 +#define APB_SARADC_THRES0_LOW_INT_CLR_S 27 + +/* APB_SARADC_THRES1_LOW_INT_CLR : WO ;bitpos:[26] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_THRES1_LOW_INT_CLR (BIT(26)) +#define APB_SARADC_THRES1_LOW_INT_CLR_M (BIT(26)) +#define APB_SARADC_THRES1_LOW_INT_CLR_V 0x1 +#define APB_SARADC_THRES1_LOW_INT_CLR_S 26 + +#define APB_SARADC_DMA_CONF_REG (DR_REG_APB_SARADC_BASE + 0x050) + +/* APB_SARADC_APB_ADC_TRANS : R/W ;bitpos:[31] ;default: 1'd0 ; */ + +/* description: enable apb_adc use spi_dma */ + +#define APB_SARADC_APB_ADC_TRANS (BIT(31)) +#define APB_SARADC_APB_ADC_TRANS_M (BIT(31)) +#define APB_SARADC_APB_ADC_TRANS_V 0x1 +#define APB_SARADC_APB_ADC_TRANS_S 31 + +/* APB_SARADC_APB_ADC_RESET_FSM : R/W ;bitpos:[30] ;default: 1'b0 ; */ + +/* description: reset_apb_adc_state */ + +#define APB_SARADC_APB_ADC_RESET_FSM (BIT(30)) +#define APB_SARADC_APB_ADC_RESET_FSM_M (BIT(30)) +#define APB_SARADC_APB_ADC_RESET_FSM_V 0x1 +#define APB_SARADC_APB_ADC_RESET_FSM_S 30 + +/* APB_SARADC_APB_ADC_EOF_NUM : R/W ;bitpos:[15:0] ;default: 16'd255 ; */ + +/* description: the dma_in_suc_eof gen when sample cnt = spi_eof_num */ + +#define APB_SARADC_APB_ADC_EOF_NUM 0x0000FFFF +#define APB_SARADC_APB_ADC_EOF_NUM_M ((APB_SARADC_APB_ADC_EOF_NUM_V)<<(APB_SARADC_APB_ADC_EOF_NUM_S)) +#define APB_SARADC_APB_ADC_EOF_NUM_V 0xFFFF +#define APB_SARADC_APB_ADC_EOF_NUM_S 0 + +#define APB_SARADC_APB_ADC_CLKM_CONF_REG (DR_REG_APB_SARADC_BASE + 0x054) + +/* APB_SARADC_CLK_SEL : R/W ;bitpos:[22:21] ;default: 2'b0 ; */ + +/* description: Set this bit to enable clk_apll */ + +#define APB_SARADC_CLK_SEL 0x00000003 +#define APB_SARADC_CLK_SEL_M ((APB_SARADC_CLK_SEL_V)<<(APB_SARADC_CLK_SEL_S)) +#define APB_SARADC_CLK_SEL_V 0x3 +#define APB_SARADC_CLK_SEL_S 21 + +/* APB_SARADC_CLK_EN : R/W ;bitpos:[20] ;default: 1'd0 ; */ + +/* description: */ + +#define APB_SARADC_CLK_EN (BIT(20)) +#define APB_SARADC_CLK_EN_M (BIT(20)) +#define APB_SARADC_CLK_EN_V 0x1 +#define APB_SARADC_CLK_EN_S 20 + +/* APB_SARADC_CLKM_DIV_A : R/W ;bitpos:[19:14] ;default: 6'h0 ; */ + +/* description: Fractional clock divider denominator value */ + +#define APB_SARADC_CLKM_DIV_A 0x0000003F +#define APB_SARADC_CLKM_DIV_A_M ((APB_SARADC_CLKM_DIV_A_V)<<(APB_SARADC_CLKM_DIV_A_S)) +#define APB_SARADC_CLKM_DIV_A_V 0x3F +#define APB_SARADC_CLKM_DIV_A_S 14 + +/* APB_SARADC_CLKM_DIV_B : R/W ;bitpos:[13:8] ;default: 6'h0 ; */ + +/* description: Fractional clock divider numerator value */ + +#define APB_SARADC_CLKM_DIV_B 0x0000003F +#define APB_SARADC_CLKM_DIV_B_M ((APB_SARADC_CLKM_DIV_B_V)<<(APB_SARADC_CLKM_DIV_B_S)) +#define APB_SARADC_CLKM_DIV_B_V 0x3F +#define APB_SARADC_CLKM_DIV_B_S 8 + +/* APB_SARADC_CLKM_DIV_NUM : R/W ;bitpos:[7:0] ;default: 8'd4 ; */ + +/* description: Integral I2S clock divider value */ + +#define APB_SARADC_CLKM_DIV_NUM 0x000000FF +#define APB_SARADC_CLKM_DIV_NUM_M ((APB_SARADC_CLKM_DIV_NUM_V)<<(APB_SARADC_CLKM_DIV_NUM_S)) +#define APB_SARADC_CLKM_DIV_NUM_V 0xFF +#define APB_SARADC_CLKM_DIV_NUM_S 0 + +#define APB_SARADC_APB_TSENS_CTRL_REG (DR_REG_APB_SARADC_BASE + 0x058) + +/* APB_SARADC_TSENS_PU : R/W ;bitpos:[22] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_TSENS_PU (BIT(22)) +#define APB_SARADC_TSENS_PU_M (BIT(22)) +#define APB_SARADC_TSENS_PU_V 0x1 +#define APB_SARADC_TSENS_PU_S 22 + +/* APB_SARADC_TSENS_CLK_DIV : R/W ;bitpos:[21:14] ;default: 8'd6 ; */ + +/* description: */ + +#define APB_SARADC_TSENS_CLK_DIV 0x000000FF +#define APB_SARADC_TSENS_CLK_DIV_M ((APB_SARADC_TSENS_CLK_DIV_V)<<(APB_SARADC_TSENS_CLK_DIV_S)) +#define APB_SARADC_TSENS_CLK_DIV_V 0xFF +#define APB_SARADC_TSENS_CLK_DIV_S 14 + +/* APB_SARADC_TSENS_IN_INV : R/W ;bitpos:[13] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_TSENS_IN_INV (BIT(13)) +#define APB_SARADC_TSENS_IN_INV_M (BIT(13)) +#define APB_SARADC_TSENS_IN_INV_V 0x1 +#define APB_SARADC_TSENS_IN_INV_S 13 + +/* APB_SARADC_TSENS_OUT : RO ;bitpos:[7:0] ;default: 8'h0 ; */ + +/* description: */ + +#define APB_SARADC_TSENS_OUT 0x000000FF +#define APB_SARADC_TSENS_OUT_M ((APB_SARADC_TSENS_OUT_V)<<(APB_SARADC_TSENS_OUT_S)) +#define APB_SARADC_TSENS_OUT_V 0xFF +#define APB_SARADC_TSENS_OUT_S 0 + +#define APB_SARADC_APB_TSENS_CTRL2_REG (DR_REG_APB_SARADC_BASE + 0x05C) + +/* APB_SARADC_TSENS_CLK_SEL : R/W ;bitpos:[15] ;default: 1'b0 ; */ + +/* description: */ + +#define APB_SARADC_TSENS_CLK_SEL (BIT(15)) +#define APB_SARADC_TSENS_CLK_SEL_M (BIT(15)) +#define APB_SARADC_TSENS_CLK_SEL_V 0x1 +#define APB_SARADC_TSENS_CLK_SEL_S 15 + +/* APB_SARADC_TSENS_CLK_INV : R/W ;bitpos:[14] ;default: 1'b1 ; */ + +/* description: */ + +#define APB_SARADC_TSENS_CLK_INV (BIT(14)) +#define APB_SARADC_TSENS_CLK_INV_M (BIT(14)) +#define APB_SARADC_TSENS_CLK_INV_V 0x1 +#define APB_SARADC_TSENS_CLK_INV_S 14 + +/* APB_SARADC_TSENS_XPD_FORCE : R/W ;bitpos:[13:12] ;default: 2'b0 ; */ + +/* description: */ + +#define APB_SARADC_TSENS_XPD_FORCE 0x00000003 +#define APB_SARADC_TSENS_XPD_FORCE_M ((APB_SARADC_TSENS_XPD_FORCE_V)<<(APB_SARADC_TSENS_XPD_FORCE_S)) +#define APB_SARADC_TSENS_XPD_FORCE_V 0x3 +#define APB_SARADC_TSENS_XPD_FORCE_S 12 + +/* APB_SARADC_TSENS_XPD_WAIT : R/W ;bitpos:[11:0] ;default: 12'h2 ; */ + +/* description: */ + +#define APB_SARADC_TSENS_XPD_WAIT 0x00000FFF +#define APB_SARADC_TSENS_XPD_WAIT_M ((APB_SARADC_TSENS_XPD_WAIT_V)<<(APB_SARADC_TSENS_XPD_WAIT_S)) +#define APB_SARADC_TSENS_XPD_WAIT_V 0xFFF +#define APB_SARADC_TSENS_XPD_WAIT_S 0 + +#define APB_SARADC_CALI_REG (DR_REG_APB_SARADC_BASE + 0x060) + +/* APB_SARADC_CALI_CFG : R/W ;bitpos:[16:0] ;default: 17'h8000 ; */ + +/* description: */ + +#define APB_SARADC_CALI_CFG 0x0001FFFF +#define APB_SARADC_CALI_CFG_M ((APB_SARADC_CALI_CFG_V)<<(APB_SARADC_CALI_CFG_S)) +#define APB_SARADC_CALI_CFG_V 0x1FFFF +#define APB_SARADC_CALI_CFG_S 0 + +#define APB_SARADC_APB_CTRL_DATE_REG (DR_REG_APB_SARADC_BASE + 0x3fc) + +/* APB_SARADC_DATE : R/W ;bitpos:[31:0] ;default: 32'h02007171 ; */ + +/* description: */ + +#define APB_SARADC_DATE 0xFFFFFFFF +#define APB_SARADC_DATE_M ((APB_SARADC_DATE_V)<<(APB_SARADC_DATE_S)) +#define APB_SARADC_DATE_V 0xFFFFFFFF +#define APB_SARADC_DATE_S 0 + +#endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_SARADC_H */ diff --git a/arch/risc-v/src/esp32c3/hardware/regi2c_saradc.h b/arch/risc-v/src/esp32c3/hardware/regi2c_saradc.h new file mode 100644 index 00000000000..6447c395130 --- /dev/null +++ b/arch/risc-v/src/esp32c3/hardware/regi2c_saradc.h @@ -0,0 +1,52 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/hardware/regi2c_saradc.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_HARDWARE_REGI2C_SARADC_H_ +#define __ARCH_RISCV_SRC_ESP32C3_HARDWARE_REGI2C_SARADC_H_ + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/** + * Register definitions for analog to calibrate initial code for getting a + * more precise voltage of SAR ADC. + */ + +#define I2C_ADC (0x69) +#define I2C_ADC_HOSTID (0) + +#define I2C_ADC1_ENCAL_GND (0x7) +#define I2C_ADC1_ENCAL_GND_MSB (0x5) +#define I2C_ADC1_ENCAL_GND_LSB (0x5) + +#define I2C_ADC1_INITVAL_L (0x0) +#define I2C_ADC1_INITVAL_L_MSB (0x7) +#define I2C_ADC1_INITVAL_L_LSB (0x0) + +#define I2C_ADC1_INITVAL_H (0x1) +#define I2C_ADC1_INITVAL_H_MSB (0x3) +#define I2C_ADC1_INITVAL_H_LSB (0x0) + +#define I2C_ADC1_DEF (0x2) +#define I2C_ADC1_DEF_MSB (0x6) +#define I2C_ADC1_DEF_LSB (0x4) + +#endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_REGI2C_SARADC_H_ */ diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/configs/adc/defconfig b/boards/risc-v/esp32c3/esp32c3-devkit/configs/adc/defconfig new file mode 100644 index 00000000000..03ef64d93b8 --- /dev/null +++ b/boards/risc-v/esp32c3/esp32c3-devkit/configs/adc/defconfig @@ -0,0 +1,49 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_NSH_ARGCAT is not set +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +# CONFIG_NSH_CMDPARMS is not set +CONFIG_ARCH="risc-v" +CONFIG_ARCH_BOARD="esp32c3-devkit" +CONFIG_ARCH_BOARD_ESP32C3_DEVKIT=y +CONFIG_ARCH_CHIP="esp32c3" +CONFIG_ARCH_CHIP_ESP32C3=y +CONFIG_ARCH_CHIP_ESP32C3WROOM02=y +CONFIG_ARCH_INTERRUPTSTACK=1536 +CONFIG_ARCH_RISCV=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARD_LOOPSPERMSEC=15000 +CONFIG_BUILTIN=y +CONFIG_DEV_ZERO=y +CONFIG_ESP32C3_ADC1=y +CONFIG_ESP32C3_ADC1_CHANNEL0=y +CONFIG_EXAMPLES_ADC=y +CONFIG_EXAMPLES_ADC_GROUPSIZE=1 +CONFIG_EXAMPLES_ADC_SWTRIG=y +CONFIG_FS_PROCFS=y +CONFIG_IDLETHREAD_STACKSIZE=2048 +CONFIG_INTELHEX_BINARY=y +CONFIG_LIBC_PERROR_STDOUT=y +CONFIG_LIBC_STRERROR=y +CONFIG_MAX_TASKS=16 +CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_READLINE=y +CONFIG_NSH_STRERROR=y +CONFIG_PREALLOC_TIMERS=0 +CONFIG_RAW_BINARY=y +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_WAITPID=y +CONFIG_START_DAY=29 +CONFIG_START_MONTH=11 +CONFIG_START_YEAR=2019 +CONFIG_SYSTEM_NSH=y +CONFIG_UART0_SERIAL_CONSOLE=y +CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/src/Makefile b/boards/risc-v/esp32c3/esp32c3-devkit/src/Makefile index de96dd48937..a1d7477757d 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/src/Makefile +++ b/boards/risc-v/esp32c3/esp32c3-devkit/src/Makefile @@ -70,6 +70,10 @@ ifeq ($(CONFIG_PWM),y) CSRCS += esp32c3_ledc.c endif +ifeq ($(CONFIG_ADC),y) +CSRCS += esp32c3_adc.c +endif + SCRIPTIN = $(SCRIPTDIR)$(DELIM)esp32c3.template.ld SCRIPTOUT = $(SCRIPTDIR)$(DELIM)esp32c3_out.ld diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3-devkit.h b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3-devkit.h index 86da6bc285c..ac4ba6d8e36 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3-devkit.h +++ b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3-devkit.h @@ -193,5 +193,21 @@ int esp32c3_spiflash_init(void); int esp32c3_pwm_setup(void); #endif +/**************************************************************************** + * Name: board_adc_init + * + * Description: + * Configure the ADC driver. + * + * Returned Value: + * Zero (OK) is returned on success; A negated errno value is returned + * to indicate the nature of any failure. + * + ****************************************************************************/ + +#ifdef CONFIG_ADC +int board_adc_init(void); +#endif + #endif /* __ASSEMBLY__ */ #endif /* __BOARDS_RISCV_ESP32C3_ESP32C3_DEVKIT_SRC_ESP32C3_DEVKIT_H */ diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_adc.c b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_adc.c new file mode 100644 index 00000000000..710e0b1e03a --- /dev/null +++ b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_adc.c @@ -0,0 +1,150 @@ +/**************************************************************************** + * boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_adc.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +#include "esp32c3_adc.h" + +#include "esp32c3-devkit.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: board_adc_init + * + * Description: + * Configure the ADC driver. + * + * Returned Value: + * Zero (OK) is returned on success; A negated errno value is returned + * to indicate the nature of any failure. + * + ****************************************************************************/ + +int board_adc_init(void) +{ + int ret; + struct adc_dev_s *adc; + +#ifdef CONFIG_ESP32C3_ADC1_CHANNEL0 + adc = esp32c3_adc_init(0); + if (!adc) + { + syslog(LOG_ERR, "ERROR: Failed to get ADC channel 0 dev\n"); + return -ENODEV; + } + + /* Register the ADC driver at "/dev/adc0" */ + + ret = adc_register("/dev/adc0", adc); + if (ret < 0) + { + syslog(LOG_ERR, "ERROR: adc_register failed: %d\n", ret); + return ret; + } +#endif + +#ifdef CONFIG_ESP32C3_ADC1_CHANNEL1 + adc = esp32c3_adc_init(1); + if (!adc) + { + syslog(LOG_ERR, "ERROR: Failed to get ADC channel 1 dev\n"); + return -ENODEV; + } + + /* Register the ADC driver at "/dev/adc1" */ + + ret = adc_register("/dev/adc1", adc); + if (ret < 0) + { + syslog(LOG_ERR, "ERROR: adc_register failed: %d\n", ret); + return ret; + } +#endif + +#ifdef CONFIG_ESP32C3_ADC1_CHANNEL2 + adc = esp32c3_adc_init(2); + if (!adc) + { + syslog(LOG_ERR, "ERROR: Failed to get ADC channel 2 dev\n"); + return -ENODEV; + } + + /* Register the ADC driver at "/dev/adc2" */ + + ret = adc_register("/dev/adc2", adc); + if (ret < 0) + { + syslog(LOG_ERR, "ERROR: adc_register failed: %d\n", ret); + return ret; + } +#endif + +#ifdef CONFIG_ESP32C3_ADC1_CHANNEL3 + adc = esp32c3_adc_init(3); + if (!adc) + { + syslog(LOG_ERR, "ERROR: Failed to get ADC channel 3 dev\n"); + return -ENODEV; + } + + /* Register the ADC driver at "/dev/adc3" */ + + ret = adc_register("/dev/adc3", adc); + if (ret < 0) + { + syslog(LOG_ERR, "ERROR: adc_register failed: %d\n", ret); + return ret; + } +#endif + +#ifdef CONFIG_ESP32C3_ADC1_CHANNEL4 + adc = esp32c3_adc_init(4); + if (!adc) + { + syslog(LOG_ERR, "ERROR: Failed to get ADC channel 4 dev\n"); + return -ENODEV; + } + + /* Register the ADC driver at "/dev/adc4" */ + + ret = adc_register("/dev/adc4", adc); + if (ret < 0) + { + syslog(LOG_ERR, "ERROR: adc_register failed: %d\n", ret); + return ret; + } +#endif + + return ret; +} diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_bringup.c b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_bringup.c index b913de6c737..d3d744967b6 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_bringup.c +++ b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_bringup.c @@ -291,6 +291,15 @@ int esp32c3_bringup(void) } #endif /* CONFIG_ESP32C3_LEDC */ +#ifdef CONFIG_ESP32C3_ADC + ret = board_adc_init(); + if (ret) + { + syslog(LOG_ERR, "ERROR: board_adc_init() failed: %d\n", ret); + return ret; + } +#endif /* CONFIG_ESP32C3_ADC */ + /* If we got here then perhaps not all initialization was successful, but * at least enough succeeded to bring-up NSH with perhaps reduced * capabilities. From 5f7c98b6e1b6da9f4765572a63ac678d407c8095 Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Mon, 17 May 2021 22:38:22 +0800 Subject: [PATCH 136/739] drivers/syslog: Remove emergstream implementation and caller since emergstream always call syslog_force, but syslog_force is designed for the interrupt context, and then doesn't mean any emergency thing. On the other hand, emergstream has other bad side effect: 1.Can't output to file or dev channel 2.Can't work well with the interrupt buffer Signed-off-by: Xiang Xiao --- drivers/syslog/Make.defs | 2 +- drivers/syslog/syslog_emergstream.c | 99 ----------------------------- drivers/syslog/vsyslog.c | 16 +---- include/nuttx/streams.h | 18 ------ 4 files changed, 3 insertions(+), 132 deletions(-) delete mode 100644 drivers/syslog/syslog_emergstream.c diff --git a/drivers/syslog/Make.defs b/drivers/syslog/Make.defs index 22e1e9738ab..96e5d7d794f 100644 --- a/drivers/syslog/Make.defs +++ b/drivers/syslog/Make.defs @@ -21,7 +21,7 @@ ############################################################################ # Include SYSLOG Infrastructure -CSRCS += vsyslog.c syslog_stream.c syslog_emergstream.c syslog_channel.c +CSRCS += vsyslog.c syslog_stream.c syslog_channel.c CSRCS += syslog_putc.c syslog_write.c syslog_force.c syslog_flush.c ifeq ($(CONFIG_SYSLOG_INTBUFFER),y) diff --git a/drivers/syslog/syslog_emergstream.c b/drivers/syslog/syslog_emergstream.c deleted file mode 100644 index ae8a2e74ed1..00000000000 --- a/drivers/syslog/syslog_emergstream.c +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************** - * drivers/syslog/syslog_emergstream.c - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. The - * ASF licenses this file to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the - * License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - ****************************************************************************/ - -/**************************************************************************** - * Included Files - ****************************************************************************/ - -#include - -#include -#include -#include -#include - -#include -#include - -#include "syslog.h" - -/**************************************************************************** - * Private Functions - ****************************************************************************/ - -/**************************************************************************** - * Name: emergstream_putc - ****************************************************************************/ - -static void emergstream_putc(FAR struct lib_outstream_s *this, int ch) -{ - int ret; - - /* Try writing until the write was successful or until an irrecoverable - * error occurs. - */ - - do - { - /* Write the character to the supported logging device. On failure, - * syslog_force returns a negated errno value. - */ - - ret = syslog_force(ch); - if (ret >= 0) - { - this->nput++; - return; - } - - /* The special return value -EINTR means that syslog_force() was - * awakened by a signal. This is not a real error and must be - * ignored in this context. - */ - } - while (ret == -EINTR); -} - -/**************************************************************************** - * Public Functions - ****************************************************************************/ - -/**************************************************************************** - * Name: emergstream - * - * Description: - * Initializes a stream for use with the configured emergency syslog - * interface. Only accessible from with the OS SYSLOG logic. - * - * Input Parameters: - * stream - User allocated, uninitialized instance of struct - * lib_outstream_s to be initialized. - * - * Returned Value: - * None (User allocated instance initialized). - * - ****************************************************************************/ - -void emergstream(FAR struct lib_outstream_s *stream) -{ - stream->put = emergstream_putc; - stream->flush = lib_noflush; - stream->nput = 0; -} diff --git a/drivers/syslog/vsyslog.c b/drivers/syslog/vsyslog.c index 80c65b120de..65243d4c1c8 100644 --- a/drivers/syslog/vsyslog.c +++ b/drivers/syslog/vsyslog.c @@ -116,22 +116,10 @@ int nx_vsyslog(int priority, FAR const IPTR char *fmt, FAR va_list *ap) #endif /* Wrap the low-level output in a stream object and let lib_vsprintf - * do the work. NOTE that emergency priority output is handled - * differently.. it will use the SYSLOG emergency stream. + * do the work. */ - if (priority == LOG_EMERG) - { - /* Use the SYSLOG emergency stream */ - - emergstream(&stream.public); - } - else - { - /* Use the normal SYSLOG stream */ - - syslogstream_create(&stream); - } + syslogstream_create(&stream); #if defined(CONFIG_SYSLOG_TIMESTAMP) /* Prepend the message with the current time, if available */ diff --git a/include/nuttx/streams.h b/include/nuttx/streams.h index 0d179a77973..8b63e8cd4c7 100644 --- a/include/nuttx/streams.h +++ b/include/nuttx/streams.h @@ -380,24 +380,6 @@ void syslogstream_destroy(FAR struct lib_syslogstream_s *stream); # define syslogstream_destroy(s) #endif -/**************************************************************************** - * Name: emergstream - * - * Description: - * Initializes a stream for use with the configured emergency syslog - * interface. Only accessible from with the OS SYSLOG logic. - * - * Input Parameters: - * stream - User allocated, uninitialized instance of struct - * lib_outstream_s to be initialized. - * - * Returned Value: - * None (User allocated instance initialized). - * - ****************************************************************************/ - -void emergstream(FAR struct lib_outstream_s *stream); - /**************************************************************************** * Name: lib_noflush * From 65e9ff5a48e3b33222336a6a8391d1375cd5ac59 Mon Sep 17 00:00:00 2001 From: Abdelatif Guettouche Date: Mon, 17 May 2021 22:54:21 +0100 Subject: [PATCH 137/739] xtensa/esp32/esp32_start.c: Remove an old and unnecessary piece of code. Signed-off-by: Abdelatif Guettouche --- arch/xtensa/src/esp32/esp32_start.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/arch/xtensa/src/esp32/esp32_start.c b/arch/xtensa/src/esp32/esp32_start.c index 236a2e8954a..c0da802b02e 100644 --- a/arch/xtensa/src/esp32/esp32_start.c +++ b/arch/xtensa/src/esp32/esp32_start.c @@ -91,10 +91,6 @@ void IRAM_ATTR __start(void) regval &= ~RTC_CNTL_WDT_FLASHBOOT_MOD_EN; putreg32(regval, RTC_CNTL_WDTCONFIG0_REG); - regval = getreg32(0x6001f048); /* DR_REG_BB_BASE+48 */ - regval &= ~(1 << 14); - putreg32(regval, 0x6001f048); - /* Make sure that normal interrupts are disabled. This is really only an * issue when we are started in un-usual ways (such as from IRAM). In this * case, we can at least defer some unexpected interrupts left over from From 105f305b1b66595d369888ae1eb782cbbd3d5476 Mon Sep 17 00:00:00 2001 From: Jukka Laitinen Date: Tue, 18 May 2021 22:39:41 +0300 Subject: [PATCH 138/739] fs/fat/fat32util.c: Fix calculation of current sector with invalid cluster If the current cluster is invalid, don't use the error code for calculating the sector number. Instead just return the error code. Signed-off-by: Jukka Laitinen --- fs/fat/fs_fat32util.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/fs/fat/fs_fat32util.c b/fs/fat/fs_fat32util.c index c69cc9d3775..8bd967ce460 100644 --- a/fs/fat/fs_fat32util.c +++ b/fs/fat/fs_fat32util.c @@ -2142,6 +2142,7 @@ int fat_currentsector(struct fat_mountpt_s *fs, struct fat_file_s *ff, off_t position) { int sectoroffset; + off_t cluster_start_sector; if (position <= ff->ff_size) { @@ -2149,12 +2150,18 @@ int fat_currentsector(struct fat_mountpt_s *fs, struct fat_file_s *ff, sectoroffset = SEC_NSECTORS(fs, position) & CLUS_NDXMASK(fs); - /* The current cluster is the first sector of the cluster plus + /* The current sector is the first sector of the cluster plus * the sector offset */ - ff->ff_currentsector = fat_cluster2sector(fs, ff->ff_currentcluster) - + sectoroffset; + cluster_start_sector = fat_cluster2sector(fs, ff->ff_currentcluster); + + if (cluster_start_sector < 0) + { + return cluster_start_sector; + } + + ff->ff_currentsector = cluster_start_sector + sectoroffset; /* The remainder is the number of sectors left in the cluster to be * read/written From f07df9dfc8d2807f208f82c8bc81627225ffeb6b Mon Sep 17 00:00:00 2001 From: Xu Xingliang Date: Wed, 7 Apr 2021 16:50:21 +0800 Subject: [PATCH 139/739] net: Forward socket option only when the socket type is usrsock Change-Id: I5e102c4c648936f96834120e2c508f7072436246 Signed-off-by: Jiuzhu Dong --- net/socket/getsockopt.c | 43 ++++++++++++++++++++++++----------------- net/socket/setsockopt.c | 16 +++++++++++---- 2 files changed, 37 insertions(+), 22 deletions(-) diff --git a/net/socket/getsockopt.c b/net/socket/getsockopt.c index 57c71e6bc2e..5d46bd5fdfd 100644 --- a/net/socket/getsockopt.c +++ b/net/socket/getsockopt.c @@ -87,7 +87,7 @@ static int psock_socketlevel_option(FAR struct socket *psock, int option, return -EINVAL; } - /* Process the option */ + /* Process the options always handled locally */ switch (option) { @@ -125,9 +125,31 @@ static int psock_socketlevel_option(FAR struct socket *psock, int option, net_dsec2timeval(timeo, (struct timeval *)value); *value_len = sizeof(struct timeval); } - break; -#ifndef CONFIG_NET_USRSOCK + return OK; + } + +#ifdef CONFIG_NET_USRSOCK + if (psock->s_type == SOCK_USRSOCK_TYPE) + { + if (option == SO_TYPE) + { + FAR struct usrsock_conn_s *conn = psock->s_conn; + + /* Return the actual socket type */ + + *(FAR int *)value = conn->type; + *value_len = sizeof(int); + + return OK; + } + + return -ENOPROTOOPT; + } +#endif + + switch (option) + { case SO_ACCEPTCONN: /* Reports whether socket listening is enabled */ if (*value_len < sizeof(int)) { @@ -204,20 +226,6 @@ static int psock_socketlevel_option(FAR struct socket *psock, int option, return -EINVAL; } -#ifdef CONFIG_NET_USRSOCK - if (psock->s_type == SOCK_USRSOCK_TYPE) - { - FAR struct usrsock_conn_s *conn = psock->s_conn; - - /* Return the actual socket type */ - - *(FAR int *)value = conn->type; - *value_len = sizeof(int); - - break; - } -#endif - /* Return the socket type */ *(FAR int *)value = psock->s_type; @@ -259,7 +267,6 @@ static int psock_socketlevel_option(FAR struct socket *psock, int option, case SO_RCVLOWAT: /* Sets the minimum number of bytes to input */ case SO_SNDBUF: /* Sets send buffer size */ case SO_SNDLOWAT: /* Sets the minimum number of bytes to output */ -#endif default: return -ENOPROTOOPT; diff --git a/net/socket/setsockopt.c b/net/socket/setsockopt.c index f85e5f48f75..fd22f315aac 100644 --- a/net/socket/setsockopt.c +++ b/net/socket/setsockopt.c @@ -82,7 +82,7 @@ static int psock_socketlevel_option(FAR struct socket *psock, int option, return -EINVAL; } - /* Process the option */ + /* Process the options always handled locally */ switch (option) { @@ -132,10 +132,19 @@ static int psock_socketlevel_option(FAR struct socket *psock, int option, _SO_SETOPT(psock->s_options, option); } } - break; -#ifndef CONFIG_NET_USRSOCK + return OK; + } +#ifdef CONFIG_NET_USRSOCK + if (psock->s_type == SOCK_USRSOCK_TYPE) + { + return -ENOPROTOOPT; + } +#endif + + switch (option) + { case SO_BROADCAST: /* Permits sending of broadcast messages */ case SO_DEBUG: /* Enables recording of debugging information */ case SO_DONTROUTE: /* Requests outgoing messages bypass standard routing */ @@ -276,7 +285,6 @@ static int psock_socketlevel_option(FAR struct socket *psock, int option, case SO_ERROR: /* Reports and clears error status. */ case SO_TYPE: /* Reports the socket type */ -#endif default: return -ENOPROTOOPT; } From 8afb16ca55ed7dfb76b2142466c6c244c23726e5 Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Fri, 14 May 2021 10:29:48 +0800 Subject: [PATCH 140/739] Don't include errno.h from spawn.h Signed-off-by: Xiang Xiao --- include/spawn.h | 1 - sched/task/task_posixspawn.c | 1 + sched/task/task_spawn.c | 1 + sched/task/task_spawnparms.c | 1 + 4 files changed, 3 insertions(+), 1 deletion(-) diff --git a/include/spawn.h b/include/spawn.h index 41649e2f52c..babeeea1e5c 100644 --- a/include/spawn.h +++ b/include/spawn.h @@ -31,7 +31,6 @@ #include #include -#include /**************************************************************************** * Pre-processor Definitions diff --git a/sched/task/task_posixspawn.c b/sched/task/task_posixspawn.c index 5e6754d81e0..7e56eb3cd29 100644 --- a/sched/task/task_posixspawn.c +++ b/sched/task/task_posixspawn.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include diff --git a/sched/task/task_spawn.c b/sched/task/task_spawn.c index fb27f93a486..056b6765c2e 100644 --- a/sched/task/task_spawn.c +++ b/sched/task/task_spawn.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include diff --git a/sched/task/task_spawnparms.c b/sched/task/task_spawnparms.c index 61f1425c3fa..970ea8731f4 100644 --- a/sched/task/task_spawnparms.c +++ b/sched/task/task_spawnparms.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include From 4b1fddec8a81ccc963b1a8a053f74409a315b003 Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Fri, 30 Apr 2021 13:38:55 +0900 Subject: [PATCH 141/739] drivers/mtd/smart.c: Recover the missing link of directory entry When creating the next chain of directory entries, (1) add the position of next entry to the current sector, and then (2) update the sector of next entry. If the power is turned off between (1) and (2), the next entry will not be found, and the chain of directory entries will break. It causes the SmartFS file system corruption, and we will not be able to add files. To avoid this issue, in checking the filesystem by smart_fsck_directory, if the sector of next entry does not exist, update the sector of directory entry to invalidate the field of next entry. --- drivers/mtd/smart.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/mtd/smart.c b/drivers/mtd/smart.c index 52b7bf32b84..1171d6b39ae 100644 --- a/drivers/mtd/smart.c +++ b/drivers/mtd/smart.c @@ -5894,6 +5894,10 @@ static int smart_fsck_directory(FAR struct smart_struct_s *dev, ferr("Invalidate next log sector %d\n", nextsector); *(uint16_t *)chain->nextsector = 0xffff; + + /* Set flag to relocate later */ + + relocate = 1; } } From f50160f0e1c5b57291d96de17f326784304b5c66 Mon Sep 17 00:00:00 2001 From: chenwen Date: Sun, 25 Apr 2021 19:30:19 +0800 Subject: [PATCH 142/739] xtensa/esp32: Support tick-less OS --- arch/xtensa/src/esp32/Kconfig | 6 + arch/xtensa/src/esp32/Make.defs | 7 +- arch/xtensa/src/esp32/esp32_tickless.c | 642 ++++++++++++++++++ arch/xtensa/src/esp32/esp32_tickless.h | 65 ++ .../esp32-devkitc/configs/tickless/defconfig | 48 ++ .../configs/tickless/defconfig | 46 ++ .../configs/tickless/defconfig | 47 ++ 7 files changed, 860 insertions(+), 1 deletion(-) create mode 100644 arch/xtensa/src/esp32/esp32_tickless.c create mode 100644 arch/xtensa/src/esp32/esp32_tickless.h create mode 100644 boards/xtensa/esp32/esp32-devkitc/configs/tickless/defconfig create mode 100644 boards/xtensa/esp32/esp32-ethernet-kit/configs/tickless/defconfig create mode 100644 boards/xtensa/esp32/esp32-wrover-kit/configs/tickless/defconfig diff --git a/arch/xtensa/src/esp32/Kconfig b/arch/xtensa/src/esp32/Kconfig index a0a5f396aed..d7081508300 100644 --- a/arch/xtensa/src/esp32/Kconfig +++ b/arch/xtensa/src/esp32/Kconfig @@ -1035,4 +1035,10 @@ config ESP32_AES_ACCELERATOR_TEST endmenu # ESP32_AES_ACCELERATOR +config ESP32_TICKLESS + bool "Enable ESP32 tick-less OS" + default n + select ARCH_HAVE_TICKLESS + select SCHED_TICKLESS + endif # ARCH_CHIP_ESP32 diff --git a/arch/xtensa/src/esp32/Make.defs b/arch/xtensa/src/esp32/Make.defs index 6696776ba05..5b26a3c0a45 100644 --- a/arch/xtensa/src/esp32/Make.defs +++ b/arch/xtensa/src/esp32/Make.defs @@ -75,10 +75,15 @@ endif CHIP_CSRCS = esp32_allocateheap.c esp32_clockconfig.c esp32_cpuint.c CHIP_CSRCS += esp32_gpio.c esp32_intdecode.c esp32_irq.c esp32_region.c -CHIP_CSRCS += esp32_timerisr.c CHIP_CSRCS += esp32_user.c CHIP_CSRCS += esp32_dma.c +ifneq ($(CONFIG_SCHED_TICKLESS),y) +CHIP_CSRCS += esp32_timerisr.c +else +CHIP_CSRCS += esp32_tickless.c +endif + ifeq ($(CONFIG_PM),y) ifneq ($(CONFIG_ARCH_CUSTOM_PMINIT),y) CHIP_CSRCS += esp32_pminitialize.c diff --git a/arch/xtensa/src/esp32/esp32_tickless.c b/arch/xtensa/src/esp32/esp32_tickless.c new file mode 100644 index 00000000000..5d401003fe7 --- /dev/null +++ b/arch/xtensa/src/esp32/esp32_tickless.c @@ -0,0 +1,642 @@ +/**************************************************************************** + * arch/xtensa/src/esp32/esp32_tickless.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Tickless OS Support. + * + * When CONFIG_SCHED_TICKLESS is enabled, all support for timer interrupts + * is suppressed and the platform specific code is expected to provide the + * following custom functions. + * + * void up_timer_initialize(void): Initializes the timer facilities. + * Called early in the initialization sequence (by up_initialize()). + * int up_timer_gettime(FAR struct timespec *ts): Returns the current + * time from the platform specific time source. + * int up_timer_cancel(void): Cancels the interval timer. + * int up_timer_start(FAR const struct timespec *ts): Start (or re-starts) + * the interval timer. + * + * The RTOS will provide the following interfaces for use by the platform- + * specific interval timer implementation: + * + * void sched_timer_expiration(void): Called by the platform-specific + * logic when the interval timer expires. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include "xtensa_timer.h" +#include "xtensa.h" +#include "xtensa_attr.h" + +#ifdef CONFIG_SCHED_TICKLESS + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#define CTICK_PER_SEC (BOARD_CLOCK_FREQUENCY) +#define CTICK_PER_USEC (CTICK_PER_SEC / USEC_PER_SEC) + +#define SEC_2_CTICK(s) ((s) * CTICK_PER_SEC) +#define USEC_2_CTICK(us) ((us) * CTICK_PER_USEC) + +#define CTICK_2_SEC(tick) ((tick) / CTICK_PER_SEC) +#define CTICK_2_USEC(tick) ((tick) / CTICK_PER_USEC) +#define CTICK_2_NSEC(tick) ((tick) * 1000 / CTICK_PER_USEC) + +#define CPU_TICKS_MAX (UINT32_MAX / 4 * 3) + +/**************************************************************************** + * Private Function Prototypes + ****************************************************************************/ + +static inline uint32_t xtensa_getcount(void); +static inline uint32_t xtensa_getcompare(void); +static inline void xtensa_setcount(uint32_t ticks); +static inline void xtensa_setcompare(uint32_t compare); +static inline uint64_t up_tmr_total_count(void); +static inline uint64_t up_tmr_getcount(void); +static void IRAM_ATTR up_tmr_setcompare(uint32_t ticks); +static void IRAM_ATTR up_tmr_setcount(uint64_t ticks); +static int up_timer_expire(int irq, void *regs, FAR void *arg); + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static bool g_timer_started; +static uint64_t g_cticks; +static uint32_t g_loop_cnt; +static uint32_t g_last_cticks; + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Function: xtensa_getcount, xtensa_setcount + * xtensa_getcompare, and xtensa_setcompare + * + * Description: + * Lower level operations on Xtensa special registers. + * + ****************************************************************************/ + +/* Return the current value of the cycle count register */ + +static inline uint32_t xtensa_getcount(void) +{ + uint32_t count; + + __asm__ __volatile__ + ( + "rsr %0, CCOUNT" : "=r"(count) + ); + + return count; +} + +/* Set the value of the cycle count register */ + +static inline void xtensa_setcount(uint32_t ticks) +{ + __asm__ __volatile__ + ( + "wsr %0, ccount\n" + : + : "a"(ticks) + : "memory" + ); +} + +/* Return the old value of the compare register */ + +static inline uint32_t xtensa_getcompare(void) +{ + uint32_t compare; + + __asm__ __volatile__ + ( + "rsr %0, %1" : "=r"(compare) : "I"(XT_CCOMPARE) + ); + + return compare; +} + +/* Set the value of the compare register */ + +static inline void xtensa_setcompare(uint32_t compare) +{ + __asm__ __volatile__ + ( + "wsr %0, %1" : : "r"(compare), "I"(XT_CCOMPARE) + ); +} + +/**************************************************************************** + * Name: up_tmr_total_count + * + * Description: + * Return the total ticks of system since power-on. + * + * Input Parameters: + * None + * + * Returned Value: + * Total system ticks + * + ****************************************************************************/ + +static inline uint64_t up_tmr_total_count(void) +{ + return g_cticks + xtensa_getcount(); +} + +/**************************************************************************** + * Name: up_tmr_getcount + * + * Description: + * Return the remaining ticks in the currently running timer. + * + * Input Parameters: + * None + * + * Returned Value: + * Remaining ticks + * + ****************************************************************************/ + +static inline uint64_t up_tmr_getcount(void) +{ + return (uint64_t)g_loop_cnt * CPU_TICKS_MAX + + g_last_cticks; +} + +/**************************************************************************** + * Name: up_tmr_setcompare + * + * Description: + * Set the value of the compare register and + * save the currently running system tick. + * + * Input Parameters: + * None + * + * Returned Value: + * Remaining ticks + * + ****************************************************************************/ + +static void IRAM_ATTR up_tmr_setcompare(uint32_t ticks) +{ + xtensa_setcompare(ticks); + g_cticks += xtensa_getcount(); + xtensa_setcount(0); +} + +/**************************************************************************** + * Name: up_tmr_setcount + * + * Description: + * Set the value of the compare register + * + * Input Parameters: + * ticks - ticks for a timer operation + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void IRAM_ATTR up_tmr_setcount(uint64_t ticks) +{ + uint32_t loop_cnt; + uint32_t last_ticks; + + if (!ticks) + { + ticks = 1; + } + + loop_cnt = ticks / CPU_TICKS_MAX; + last_ticks = ticks % CPU_TICKS_MAX; + + if (loop_cnt) + { + xtensa_setcompare(CPU_TICKS_MAX); + } + else + { + xtensa_setcompare(last_ticks); + } + + g_loop_cnt = loop_cnt; + g_last_cticks = last_ticks; + g_timer_started = true; + + g_cticks += xtensa_getcount(); + xtensa_setcount(0); +} + +/**************************************************************************** + * Name: up_timer_expire + * + * Description: + * Called as the IRQ handler for timer expiration. + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +static int up_timer_expire(int irq, void *regs, FAR void *arg) +{ + irqstate_t flags; + bool do_sched = false; + + flags = enter_critical_section(); + + if (g_timer_started) + { + if (g_loop_cnt) + { + --g_loop_cnt; + if (!g_loop_cnt) + { + if (g_last_cticks) + { + up_tmr_setcompare(g_last_cticks); + } + else + { + do_sched = true; + up_tmr_setcompare(CPU_TICKS_MAX); + } + } + else + { + up_tmr_setcompare(CPU_TICKS_MAX); + } + } + else + { + do_sched = true; + } + + if (do_sched) + { + up_timer_cancel(NULL); + nxsched_timer_expiration(); + } + } + else + { + up_tmr_setcompare(CPU_TICKS_MAX); + } + + leave_critical_section(flags); + return OK; +} + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: up_timer_gettime + * + * Description: + * Return the elapsed time since power-up (or, more correctly, since + * up_timer_initialize() was called). This function is functionally + * equivalent to: + * + * int clock_gettime(clockid_t clockid, FAR struct timespec *ts); + * + * when clockid is CLOCK_MONOTONIC. + * + * This function provides the basis for reporting the current time and + * also is used to eliminate error build-up from small errors in interval + * time calculations. + * + * Provided by platform-specific code and called from the RTOS base code. + * + * Input Parameters: + * ts - Provides the location in which to return the up-time. + * + * Returned Value: + * Zero (OK) is returned on success; a negated errno value is returned on + * any failure. + * + * Assumptions: + * Called from the normal tasking context. The implementation must + * provide whatever mutual exclusion is necessary for correct operation. + * This can include disabling interrupts in order to assure atomic register + * operations. + * + ****************************************************************************/ + +int IRAM_ATTR up_timer_gettime(FAR struct timespec *ts) +{ + uint64_t ticks; + irqstate_t flags; + + flags = enter_critical_section(); + + ticks = up_tmr_total_count(); + ts->tv_sec = CTICK_2_SEC(ticks); + ts->tv_nsec = CTICK_2_NSEC(ticks % CTICK_PER_SEC); + + leave_critical_section(flags); + return OK; +} + +/**************************************************************************** + * Name: up_timer_cancel + * + * Description: + * Cancel the interval timer and return the time remaining on the timer. + * These two steps need to be as nearly atomic as possible. + * nxsched_timer_expiration() will not be called unless the timer is + * restarted with up_timer_start(). + * + * If, as a race condition, the timer has already expired when this + * function is called, then that pending interrupt must be cleared so + * that up_timer_start() and the remaining time of zero should be + * returned. + * + * NOTE: This function may execute at a high rate with no timer running (as + * when pre-emption is enabled and disabled). + * + * Provided by platform-specific code and called from the RTOS base code. + * + * Input Parameters: + * ts - Location to return the remaining time. Zero should be returned + * if the timer is not active. ts may be zero in which case the + * time remaining is not returned. + * + * Returned Value: + * Zero (OK) is returned on success. A call to up_timer_cancel() when + * the timer is not active should also return success; a negated errno + * value is returned on any failure. + * + * Assumptions: + * May be called from interrupt level handling or from the normal tasking + * level. Interrupts may need to be disabled internally to assure + * non-reentrancy. + * + ****************************************************************************/ + +int IRAM_ATTR up_timer_cancel(FAR struct timespec *ts) +{ + uint64_t rst_ticks; + uint64_t cur_ticks; + uint64_t ticks; + irqstate_t flags; + + flags = enter_critical_section(); + + if (ts) + { + if (!g_timer_started) + { + ts->tv_sec = 0; + ts->tv_nsec = 0; + } + else + { + rst_ticks = up_tmr_getcount(); + cur_ticks = xtensa_getcount(); + if (rst_ticks <= cur_ticks) + { + ticks = 0; + } + else + { + ticks = rst_ticks - cur_ticks; + } + + ts->tv_sec = CTICK_2_SEC(ticks); + ts->tv_nsec = CTICK_2_NSEC(ticks % CTICK_PER_SEC); + } + } + + g_timer_started = false; + up_tmr_setcompare(CPU_TICKS_MAX); + + leave_critical_section(flags); + return OK; +} + +/**************************************************************************** + * Name: up_timer_start + * + * Description: + * Start the interval timer. nxsched_timer_expiration() will be + * called at the completion of the timeout (unless up_timer_cancel + * is called to stop the timing. + * + * Provided by platform-specific code and called from the RTOS base code. + * + * Input Parameters: + * ts - Provides the time interval until nxsched_timer_expiration() is + * called. + * + * Returned Value: + * Zero (OK) is returned on success; a negated errno value is returned on + * any failure. + * + * Assumptions: + * May be called from interrupt level handling or from the normal tasking + * level. Interrupts may need to be disabled internally to assure + * non-reentrancy. + * + ****************************************************************************/ + +int IRAM_ATTR up_timer_start(FAR const struct timespec *ts) +{ + uint64_t cpu_ticks; + irqstate_t flags; + + flags = enter_critical_section(); + + if (g_timer_started) + { + up_timer_cancel(NULL); + } + + cpu_ticks = SEC_2_CTICK((uint64_t)ts->tv_sec) + + USEC_2_CTICK((uint64_t)ts->tv_nsec / 1000); + + up_tmr_setcount(cpu_ticks); + + leave_critical_section(flags); + return OK; +} + +/**************************************************************************** + * Name: up_timer_initialize + * + * Description: + * Initializes all platform-specific timer facilities. This function is + * called early in the initialization sequence by up_initialize(). + * On return, the current up-time should be available from + * up_timer_gettime() and the interval timer is ready for use (but not + * actively timing. + * + * Provided by platform-specific code and called from the architecture- + * specific logic. + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + * Assumptions: + * Called early in the initialization sequence before any special + * concurrency protections are required. + * + ****************************************************************************/ + +void up_timer_initialize(void) +{ + /* Set up periodic timer */ + + up_tmr_setcompare(CPU_TICKS_MAX); + + /* NOTE: Timer 0 is an internal interrupt source so we do not need to + * attach any peripheral ID to the dedicated CPU interrupt. + */ + + /* Attach the timer interrupt */ + + irq_attach(XTENSA_IRQ_TIMER0, (xcpt_t)up_timer_expire, NULL); + + /* Enable the timer 0 CPU interrupt. */ + + up_enable_irq(ESP32_CPUINT_TIMER0); + + return; +} + +/**************************************************************************** + * Name: up_get_idletime + * + * Description: + * This function returns the idle time. + * + * Input Parameters: + * None + * + * Returned Value: + * The time in system ticks remaining for idle. + * Zero means system is busy. + * + ****************************************************************************/ + +uint32_t IRAM_ATTR up_get_idletime(void) +{ + uint32_t us; + uint64_t ticks; + uint64_t rst_ticks; + irqstate_t flags; + + flags = enter_critical_section(); + + if (!g_timer_started) + { + us = 0; + } + else + { + ticks = xtensa_getcount(); + rst_ticks = up_tmr_getcount(); + if (rst_ticks > ticks) + { + us = CTICK_2_USEC(rst_ticks - ticks); + } + else + { + us = 0; + } + } + + leave_critical_section(flags); + + return us; +} + +/**************************************************************************** + * Name: up_step_idletime + * + * Description: + * Add system time by idletime_us. + * + * Input Parameters: + * us - Idle time(us) + * + * Returned Value: + * None + * + ****************************************************************************/ + +void IRAM_ATTR up_step_idletime(uint32_t us) +{ + uint64_t ticks; + uint64_t timer_ticks; + irqstate_t flags; + + DEBUGASSERT(g_timer_started); + + flags = enter_critical_section(); + + ticks = USEC_2_CTICK((uint64_t)us); + timer_ticks = up_tmr_getcount(); + + DEBUGASSERT(ticks < timer_ticks); + + g_cticks += ticks; + up_tmr_setcount(timer_ticks - ticks); + + leave_critical_section(flags); +} + +#endif /* CONFIG_SCHED_TICKLESS */ \ No newline at end of file diff --git a/arch/xtensa/src/esp32/esp32_tickless.h b/arch/xtensa/src/esp32/esp32_tickless.h new file mode 100644 index 00000000000..c1fd420478e --- /dev/null +++ b/arch/xtensa/src/esp32/esp32_tickless.h @@ -0,0 +1,65 @@ +/**************************************************************************** + * arch/xtensa/src/esp32/esp32_tickless.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#ifndef __ARCH_XTENSA_SRC_ESP32_ESP32_TICKLESS_H +#define __ARCH_XTENSA_SRC_ESP32_ESP32_TICKLESS_H + +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ + +/**************************************************************************** + * Name: up_get_idletime + * + * Description: + * This function returns the idle time. + * + * Input Parameters: + * None + * + * Returned Value: + * The time in system ticks remaining for idle. + * Zero means system is busy. + * + ****************************************************************************/ + +uint32_t up_get_idletime(void); + +/**************************************************************************** + * Name: up_step_idletime + * + * Description: + * Add system time by idletime_us. + * + * Input Parameters: + * idletime_us - Idle time(us) + * + * Returned Value: + * None + * + ****************************************************************************/ + +void up_step_idletime(uint32_t idletime_us); + +#endif /* __ARCH_XTENSA_SRC_ESP32_ESP32_TICKLESS_H */ diff --git a/boards/xtensa/esp32/esp32-devkitc/configs/tickless/defconfig b/boards/xtensa/esp32/esp32-devkitc/configs/tickless/defconfig new file mode 100644 index 00000000000..1a81d405e75 --- /dev/null +++ b/boards/xtensa/esp32/esp32-devkitc/configs/tickless/defconfig @@ -0,0 +1,48 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_ARCH_LEDS is not set +# CONFIG_NSH_ARGCAT is not set +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +# CONFIG_NSH_CMDPARMS is not set +CONFIG_ARCH="xtensa" +CONFIG_ARCH_BOARD="esp32-devkitc" +CONFIG_ARCH_BOARD_ESP32_DEVKITC=y +CONFIG_ARCH_CHIP="esp32" +CONFIG_ARCH_CHIP_ESP32=y +CONFIG_ARCH_CHIP_ESP32WROVER=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_ARCH_XTENSA=y +CONFIG_BOARD_LOOPSPERMSEC=16717 +CONFIG_BUILTIN=y +CONFIG_ESP32_TICKLESS=y +CONFIG_ESP32_UART0=y +CONFIG_FS_PROCFS=y +CONFIG_HAVE_CXX=y +CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_IDLETHREAD_STACKSIZE=3072 +CONFIG_INTELHEX_BINARY=y +CONFIG_MAX_TASKS=16 +CONFIG_MM_REGIONS=2 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_LINELEN=64 +CONFIG_NSH_READLINE=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_RAM_SIZE=114688 +CONFIG_RAM_START=0x20000000 +CONFIG_RAW_BINARY=y +CONFIG_SCHED_WAITPID=y +CONFIG_SDCLONE_DISABLE=y +CONFIG_SPI=y +CONFIG_START_DAY=6 +CONFIG_START_MONTH=12 +CONFIG_START_YEAR=2011 +CONFIG_SYSTEM_NSH=y +CONFIG_UART0_SERIAL_CONSOLE=y +CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/xtensa/esp32/esp32-ethernet-kit/configs/tickless/defconfig b/boards/xtensa/esp32/esp32-ethernet-kit/configs/tickless/defconfig new file mode 100644 index 00000000000..fd673e5a668 --- /dev/null +++ b/boards/xtensa/esp32/esp32-ethernet-kit/configs/tickless/defconfig @@ -0,0 +1,46 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_NSH_ARGCAT is not set +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +# CONFIG_NSH_CMDPARMS is not set +CONFIG_ARCH="xtensa" +CONFIG_ARCH_BOARD="esp32-ethernet-kit" +CONFIG_ARCH_BOARD_ESP32_ETHERNETKIT=y +CONFIG_ARCH_CHIP="esp32" +CONFIG_ARCH_CHIP_ESP32=y +CONFIG_ARCH_CHIP_ESP32WROVER=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_ARCH_XTENSA=y +CONFIG_BOARD_LOOPSPERMSEC=16717 +CONFIG_BUILTIN=y +CONFIG_ESP32_TICKLESS=y +CONFIG_ESP32_UART0=y +CONFIG_FS_PROCFS=y +CONFIG_HAVE_CXX=y +CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_IDLETHREAD_STACKSIZE=3072 +CONFIG_INTELHEX_BINARY=y +CONFIG_MAX_TASKS=16 +CONFIG_MM_REGIONS=3 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_LINELEN=64 +CONFIG_NSH_READLINE=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_RAM_SIZE=114688 +CONFIG_RAM_START=0x20000000 +CONFIG_RAW_BINARY=y +CONFIG_SCHED_WAITPID=y +CONFIG_SDCLONE_DISABLE=y +CONFIG_START_DAY=6 +CONFIG_START_MONTH=12 +CONFIG_START_YEAR=2011 +CONFIG_SYSTEM_NSH=y +CONFIG_UART0_SERIAL_CONSOLE=y +CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/xtensa/esp32/esp32-wrover-kit/configs/tickless/defconfig b/boards/xtensa/esp32/esp32-wrover-kit/configs/tickless/defconfig new file mode 100644 index 00000000000..7cdcde0a067 --- /dev/null +++ b/boards/xtensa/esp32/esp32-wrover-kit/configs/tickless/defconfig @@ -0,0 +1,47 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_ARCH_LEDS is not set +# CONFIG_NSH_ARGCAT is not set +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +# CONFIG_NSH_CMDPARMS is not set +CONFIG_ARCH="xtensa" +CONFIG_ARCH_BOARD="esp32-wrover-kit" +CONFIG_ARCH_BOARD_ESP32_WROVERKIT=y +CONFIG_ARCH_CHIP="esp32" +CONFIG_ARCH_CHIP_ESP32=y +CONFIG_ARCH_CHIP_ESP32WROVER=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_ARCH_XTENSA=y +CONFIG_BOARD_LOOPSPERMSEC=16717 +CONFIG_BUILTIN=y +CONFIG_ESP32_TICKLESS=y +CONFIG_ESP32_UART0=y +CONFIG_FS_PROCFS=y +CONFIG_HAVE_CXX=y +CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_IDLETHREAD_STACKSIZE=3072 +CONFIG_INTELHEX_BINARY=y +CONFIG_MAX_TASKS=16 +CONFIG_MM_REGIONS=3 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_LINELEN=64 +CONFIG_NSH_READLINE=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_RAM_SIZE=114688 +CONFIG_RAM_START=0x20000000 +CONFIG_RAW_BINARY=y +CONFIG_SCHED_WAITPID=y +CONFIG_SDCLONE_DISABLE=y +CONFIG_START_DAY=6 +CONFIG_START_MONTH=12 +CONFIG_START_YEAR=2011 +CONFIG_SYSTEM_NSH=y +CONFIG_UART0_SERIAL_CONSOLE=y +CONFIG_USER_ENTRYPOINT="nsh_main" From f7db7431524064cdc3d0b3a027b13177f14209ba Mon Sep 17 00:00:00 2001 From: chenwen Date: Tue, 27 Apr 2021 10:07:54 +0800 Subject: [PATCH 143/739] xtensa/esp32: Support auto-sleep --- arch/xtensa/src/esp32/Kconfig | 38 +++++++ arch/xtensa/src/esp32/esp32_idle.c | 84 ++++++++++++++- arch/xtensa/src/esp32/esp32_pm.c | 102 +++++++++++++++++- arch/xtensa/src/esp32/esp32_pm.h | 34 +++++- arch/xtensa/src/esp32/esp32_rt_timer.c | 71 +++++++++++- arch/xtensa/src/esp32/esp32_rt_timer.h | 32 ++++++ arch/xtensa/src/esp32/esp32_rtc.c | 42 +++++++- arch/xtensa/src/esp32/esp32_rtc.h | 33 ++++++ arch/xtensa/src/esp32/esp32_wifi_adapter.c | 47 +++++--- .../esp32-devkitc/configs/autopm/defconfig | 79 ++++++++++++++ .../esp32/esp32-devkitc/src/esp32_bringup.c | 13 +++ .../configs/autopm/defconfig | 78 ++++++++++++++ .../esp32-ethernet-kit/src/esp32_bringup.c | 13 +++ .../esp32-wrover-kit/configs/autopm/defconfig | 79 ++++++++++++++ .../esp32-wrover-kit/src/esp32_bringup.c | 13 +++ 15 files changed, 732 insertions(+), 26 deletions(-) create mode 100644 boards/xtensa/esp32/esp32-devkitc/configs/autopm/defconfig create mode 100644 boards/xtensa/esp32/esp32-ethernet-kit/configs/autopm/defconfig create mode 100644 boards/xtensa/esp32/esp32-wrover-kit/configs/autopm/defconfig diff --git a/arch/xtensa/src/esp32/Kconfig b/arch/xtensa/src/esp32/Kconfig index d7081508300..f5e14fff49a 100644 --- a/arch/xtensa/src/esp32/Kconfig +++ b/arch/xtensa/src/esp32/Kconfig @@ -971,6 +971,34 @@ config ESP32_WIFI_STA_DISCONNECT_PM Select this option to enable power management for station when disconnected. Chip will do modem-sleep when RF module is not in use anymore. +config EXAMPLE_WIFI_LISTEN_INTERVAL + int "WiFi listen interval" + default 3 + help + Interval for station to listen to beacon from AP. The unit of listen interval is one beacon interval. + For example, if beacon interval is 100 ms and listen interval is 3, the interval for station to listen + to beacon is 300 ms. + +choice EXAMPLE_POWER_SAVE_MODE + prompt "power save mode" + default EXAMPLE_POWER_SAVE_NONE + help + Power save mode for the esp32 to use. Modem sleep mode includes minimum and maximum power save modes. + In minimum power save mode, station wakes up every DTIM to receive beacon. Broadcast data will not be + lost because it is transmitted after DTIM. However, it can not save much more power if DTIM is short + for DTIM is determined by AP. + In maximum power save mode, station wakes up every listen interval to receive beacon. Broadcast data + may be lost because station may be in sleep state at DTIM time. If listen interval is longer, more power + is saved but broadcast data is more easy to lose. + + config EXAMPLE_POWER_SAVE_NONE + bool "none" + config EXAMPLE_POWER_SAVE_MIN_MODEM + bool "minimum modem" + config EXAMPLE_POWER_SAVE_MAX_MODEM + bool "maximum modem" +endchoice + endmenu # ESP32_WIRELESS menu "Real-Time Timer" @@ -1035,6 +1063,16 @@ config ESP32_AES_ACCELERATOR_TEST endmenu # ESP32_AES_ACCELERATOR +config ESP32_AUTO_SLEEP + bool "Auto-sleep" + default n + select PM + select ESP32_RT_TIMER + select ESP32_TIMER0 + select ESP32_TICKLESS + ---help--- + Enable ESP32 Auto-sleep + config ESP32_TICKLESS bool "Enable ESP32 tick-less OS" default n diff --git a/arch/xtensa/src/esp32/esp32_idle.c b/arch/xtensa/src/esp32/esp32_idle.c index fc5eedb441f..f2b09222e7b 100644 --- a/arch/xtensa/src/esp32/esp32_idle.c +++ b/arch/xtensa/src/esp32/esp32_idle.c @@ -22,6 +22,7 @@ * Included Files ****************************************************************************/ +#include #include #include #include @@ -30,6 +31,14 @@ #include "esp32_pm.h" #include "xtensa.h" +#ifdef CONFIG_ESP32_RT_TIMER +#include "esp32_rt_timer.h" +#endif + +#ifdef CONFIG_SCHED_TICKLESS +#include "esp32_tickless.h" +#endif + /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ @@ -41,6 +50,7 @@ */ #ifdef CONFIG_PM + #ifndef CONFIG_PM_ALARM_SEC # define CONFIG_PM_ALARM_SEC 15 #endif @@ -58,6 +68,14 @@ #endif #define PM_IDLE_DOMAIN 0 /* Revisit */ + +#ifndef MIN +# define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif + +#define EXPECTED_IDLE_TIME_US (800) +#define EARLY_WAKEUP_US (200) + #endif /**************************************************************************** @@ -75,9 +93,63 @@ #ifdef CONFIG_PM static void up_idlepm(void) { + irqstate_t flags; + +#ifdef CONFIG_ESP32_AUTO_SLEEP + uint64_t sleep_us; + uint64_t os_idle_us; + uint64_t os_start_us; + uint64_t os_end_us; + uint64_t os_step_us; + uint64_t hw_idle_us; + uint64_t hw_start_us; + uint64_t hw_end_us; + uint64_t hw_step_us; + uint64_t rtc_diff_us; + struct timespec ts; + + flags = spin_lock_irqsave(NULL); + if (esp32_pm_lockstatus() == 0) + { + os_idle_us = up_get_idletime(); + hw_idle_us = rt_timer_get_alarm(); + sleep_us = MIN(os_idle_us, hw_idle_us); + if (sleep_us > EXPECTED_IDLE_TIME_US) + { + sleep_us -= EARLY_WAKEUP_US; + + esp32_sleep_enable_timer_wakeup(sleep_us); + + up_timer_gettime(&ts); + os_start_us = (ts.tv_sec * USEC_PER_SEC + + ts.tv_nsec / NSEC_PER_USEC); + hw_start_us = rt_timer_time_us(); + + esp32_light_sleep_start(&rtc_diff_us); + + hw_end_us = rt_timer_time_us(); + up_timer_gettime(&ts); + os_end_us = (ts.tv_sec * USEC_PER_SEC + + ts.tv_nsec / NSEC_PER_USEC); + hw_step_us = rtc_diff_us - (hw_end_us - hw_start_us); + os_step_us = rtc_diff_us - (os_end_us - os_start_us); + DEBUGASSERT(hw_step_us > 0); + DEBUGASSERT(os_step_us > 0); + + /* Adjust current RT timer by a certain value. */ + + rt_timer_calibration(hw_step_us); + + /* Adjust system time by a certain value. */ + + up_step_idletime((uint32_t)os_step_us); + } + } + + spin_unlock_irqrestore(NULL, flags); +#else /* CONFIG_ESP32_AUTO_SLEEP */ static enum pm_state_e oldstate = PM_NORMAL; enum pm_state_e newstate; - irqstate_t flags; int ret; /* Decide, which power saving level can be obtained */ @@ -159,6 +231,7 @@ static void up_idlepm(void) pm_changestate(PM_IDLE_DOMAIN, PM_NORMAL); #endif } +#endif } #else # define up_idlepm() @@ -191,10 +264,6 @@ void up_idle(void) nxsched_process_timer(); #else - /* Perform IDLE mode power management */ - - up_idlepm(); - /* This would be an appropriate place to put some MCU-specific logic to * sleep in a reduced power mode until an interrupt occurs to save power */ @@ -202,5 +271,10 @@ void up_idle(void) #if XCHAL_HAVE_INTERRUPTS __asm__ __volatile__ ("waiti 0"); #endif + + /* Perform IDLE mode power management */ + + up_idlepm(); + #endif } diff --git a/arch/xtensa/src/esp32/esp32_pm.c b/arch/xtensa/src/esp32/esp32_pm.c index 26399dd1671..badae1daf44 100644 --- a/arch/xtensa/src/esp32/esp32_pm.c +++ b/arch/xtensa/src/esp32/esp32_pm.c @@ -23,6 +23,7 @@ ****************************************************************************/ #include +#include #ifdef CONFIG_PM @@ -42,6 +43,14 @@ #include "esp32_pm.h" #include "esp32_resetcause.h" +#ifdef CONFIG_ESP32_RT_TIMER +#include "esp32_rt_timer.h" +#endif + +#ifdef CONFIG_SCHED_TICKLESS +#include "esp32_tickless.h" +#endif + /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ @@ -191,6 +200,7 @@ static struct esp32_sleep_config_t s_config = { ESP_PD_OPTION_AUTO, ESP_PD_OPTION_AUTO, ESP_PD_OPTION_AUTO }, .wakeup_triggers = 0 }; +static volatile uint32_t pm_wakelock = 0; /**************************************************************************** * Private Functions @@ -836,7 +846,7 @@ static void RTC_IRAM_ATTR esp32_wake_deep_sleep(void) * ****************************************************************************/ -void esp32_sleep_enable_timer_wakeup(uint64_t time_in_us) +void IRAM_ATTR esp32_sleep_enable_timer_wakeup(uint64_t time_in_us) { s_config.wakeup_triggers |= RTC_TIMER_TRIG_EN; s_config.sleep_duration = time_in_us; @@ -849,14 +859,14 @@ void esp32_sleep_enable_timer_wakeup(uint64_t time_in_us) * Enter sleep mode * * Input Parameters: - * None + * sleep_time - Actual sleep time * * Returned Value: * 0 is returned on success or a negated errno value is returned * ****************************************************************************/ -int esp32_light_sleep_start(void) +int esp32_light_sleep_start(uint64_t *sleep_time) { irqstate_t flags; uint32_t pd_flags; @@ -905,6 +915,12 @@ int esp32_light_sleep_start(void) ret = esp32_light_sleep_inner(pd_flags, flash_enable_time_us, vddsdio_config); + if (sleep_time) + { + *sleep_time = esp32_rtc_time_slowclk_to_us(esp32_rtc_time_get() - + s_config.rtc_ticks_at_sleep_start, esp32_clk_slowclk_cal_get()); + } + leave_critical_section(flags); return ret; } @@ -947,11 +963,42 @@ void esp32_pminit(void) void esp32_pmstandby(uint64_t time_in_us) { + uint64_t rtc_diff_us; +#ifdef CONFIG_ESP32_RT_TIMER + uint64_t hw_start_us; + uint64_t hw_end_us; + uint64_t hw_diff_us; +#endif + /* don't power down XTAL — powering it up takes different time on. */ fflush(stdout); esp32_sleep_enable_timer_wakeup(time_in_us); - esp32_light_sleep_start(); + +#ifdef CONFIG_ESP32_RT_TIMER + /* Get rt-timer timestamp before entering sleep */ + + hw_start_us = rt_timer_time_us(); +#endif + + esp32_light_sleep_start(&rtc_diff_us); + +#ifdef CONFIG_ESP32_RT_TIMER + /* Get rt-timer timestamp after waking up from sleep */ + + hw_end_us = rt_timer_time_us(); + hw_diff_us = hw_end_us - hw_start_us; + DEBUGASSERT(rtc_diff_us > hw_diff_us); + + rt_timer_calibration(rtc_diff_us - hw_diff_us); +#endif + +#ifdef CONFIG_SCHED_TICKLESS + up_step_idletime((uint32_t)time_in_us); +#endif + + pwrinfo("Returned from auto-sleep, slept for %d ms\n", + (uint32_t)(rtc_diff_us) / 1000); } /**************************************************************************** @@ -1083,4 +1130,51 @@ void esp32_pmsleep(uint64_t time_in_us) esp32_deep_sleep_start(); } +/**************************************************************************** + * Name: esp32_pm_lockacquire + * + * Description: + * Take a power management lock + * + ****************************************************************************/ + +void IRAM_ATTR esp32_pm_lockacquire(void) +{ + irqstate_t flags; + + flags = enter_critical_section(); + ++pm_wakelock; + leave_critical_section(flags); +} + +/**************************************************************************** + * Name: esp32_pm_lockrelease + * + * Description: + * Release the lock taken using esp32_pm_lockacquire. + * + ****************************************************************************/ + +void IRAM_ATTR esp32_pm_lockrelease(void) +{ + irqstate_t flags; + + flags = enter_critical_section(); + --pm_wakelock; + leave_critical_section(flags); +} + +/**************************************************************************** + * Name: esp32_pm_lockstatus + * + * Description: + * Return power management lock status. + * + ****************************************************************************/ + +uint32_t IRAM_ATTR esp32_pm_lockstatus(void) +{ + return pm_wakelock; +} + #endif /* CONFIG_PM */ \ No newline at end of file diff --git a/arch/xtensa/src/esp32/esp32_pm.h b/arch/xtensa/src/esp32/esp32_pm.h index 20558127fb5..979f8d368fd 100644 --- a/arch/xtensa/src/esp32/esp32_pm.h +++ b/arch/xtensa/src/esp32/esp32_pm.h @@ -118,14 +118,14 @@ void esp32_sleep_enable_timer_wakeup(uint64_t time_in_us); * Enter sleep mode * * Input Parameters: - * None + * sleep_time - Actual sleep time * * Returned Value: * 0 is returned on success or a negated errno value is returned * ****************************************************************************/ -int esp32_light_sleep_start(void); +int esp32_light_sleep_start(uint64_t *sleep_time); /**************************************************************************** * Name: esp32_pminit @@ -207,6 +207,36 @@ void esp32_deep_sleep_start(void); void esp32_pmsleep(uint64_t time_in_us); +/**************************************************************************** + * Name: esp32_pm_lockacquire + * + * Description: + * Take a power management lock + * + ****************************************************************************/ + +void esp32_pm_lockacquire(void); + +/**************************************************************************** + * Name: esp32_pm_lockrelease + * + * Description: + * Release the lock taken using esp32_pm_lock. + * + ****************************************************************************/ + +void esp32_pm_lockrelease(void); + +/**************************************************************************** + * Name: esp32_pm_lockstatus + * + * Description: + * Return power management lock status. + * + ****************************************************************************/ + +uint32_t esp32_pm_lockstatus(void); + #endif /* CONFIG_PM */ #ifdef __cplusplus diff --git a/arch/xtensa/src/esp32/esp32_rt_timer.c b/arch/xtensa/src/esp32/esp32_rt_timer.c index f539becca85..8f6f7697391 100644 --- a/arch/xtensa/src/esp32/esp32_rt_timer.c +++ b/arch/xtensa/src/esp32/esp32_rt_timer.c @@ -568,7 +568,7 @@ void rt_timer_delete(FAR struct rt_timer_s *timer) * ****************************************************************************/ -uint64_t rt_timer_time_us(void) +uint64_t IRAM_ATTR rt_timer_time_us(void) { uint64_t counter; struct esp32_tim_dev_s *tim = s_esp32_tim_dev; @@ -578,6 +578,74 @@ uint64_t rt_timer_time_us(void) return counter; } +/**************************************************************************** + * Name: rt_timer_get_alarm + * + * Description: + * Get the timestamp when the next timeout is expected to occur. + * + * Input Parameters: + * None + * + * Returned Value: + * Timestamp of the nearest timer event, in microseconds. + * + ****************************************************************************/ + +uint64_t IRAM_ATTR rt_timer_get_alarm(void) +{ + irqstate_t flags; + uint64_t counter; + struct esp32_tim_dev_s *tim = s_esp32_tim_dev; + uint64_t alarm_value = 0; + + flags = enter_critical_section(); + + ESP32_TIM_GETCTR(tim, &counter); + ESP32_TIM_GETALRVL(tim, &alarm_value); + + if (alarm_value <= counter) + { + alarm_value = 0; + } + else + { + alarm_value -= counter; + } + + leave_critical_section(flags); + + return alarm_value; +} + +/**************************************************************************** + * Name: rt_timer_calibration + * + * Description: + * Adjust current RT timer by a certain value. + * + * Input Parameters: + * time_us - adjustment to apply to RT timer, in microseconds + * + * Returned Value: + * None. + * + ****************************************************************************/ + +void IRAM_ATTR rt_timer_calibration(uint64_t time_us) +{ + uint64_t counter; + struct esp32_tim_dev_s *tim = s_esp32_tim_dev; + irqstate_t flags; + + flags = enter_critical_section(); + ESP32_TIM_GETCTR(tim, &counter); + counter += time_us; + ESP32_TIM_SETCTR(tim, counter); + ESP32_TIM_RLD_NOW(tim); + leave_critical_section(flags); +} + /**************************************************************************** * Name: esp32_rt_timer_init * @@ -678,3 +746,4 @@ void esp32_rt_timer_deinit(void) kthread_delete(s_pid); nxsem_destroy(&s_toutsem); } + diff --git a/arch/xtensa/src/esp32/esp32_rt_timer.h b/arch/xtensa/src/esp32/esp32_rt_timer.h index 5addd0436ab..68ee2922af4 100644 --- a/arch/xtensa/src/esp32/esp32_rt_timer.h +++ b/arch/xtensa/src/esp32/esp32_rt_timer.h @@ -166,6 +166,38 @@ void rt_timer_delete(FAR struct rt_timer_s *timer); uint64_t rt_timer_time_us(void); +/**************************************************************************** + * Name: rt_timer_get_alarm + * + * Description: + * Get the timestamp when the next timeout is expected to occur. + * + * Input Parameters: + * None + * + * Returned Value: + * Timestamp of the nearest timer event, in microseconds. + * + ****************************************************************************/ + +uint64_t rt_timer_get_alarm(void); + +/**************************************************************************** + * Name: rt_timer_calibration + * + * Description: + * Adjust current RT timer by a certain value. + * + * Input Parameters: + * time_us - adjustment to apply to RT timer, in microseconds + * + * Returned Value: + * None. + * + ****************************************************************************/ + +void rt_timer_calibration(uint64_t time_us); + /**************************************************************************** * Name: esp32_rt_timer_init * diff --git a/arch/xtensa/src/esp32/esp32_rtc.c b/arch/xtensa/src/esp32/esp32_rtc.c index 9e7e1307e1f..75f283214e8 100644 --- a/arch/xtensa/src/esp32/esp32_rtc.c +++ b/arch/xtensa/src/esp32/esp32_rtc.c @@ -993,7 +993,7 @@ uint64_t IRAM_ATTR esp32_rtc_time_get(void) * * Input Parameters: * time_in_us - Time interval in microseconds - * slow_clk_period - Period of slow clock in microseconds + * slow_clk_period - Period of slow clock in microseconds * * Returned Value: * number of slow clock cycles @@ -1010,6 +1010,46 @@ uint64_t IRAM_ATTR esp32_rtc_time_us_to_slowclk(uint64_t time_in_us, return (time_in_us << RTC_CLK_CAL_FRACT) / period; } +/**************************************************************************** + * Name: esp32_rtc_time_slowclk_to_us + * + * Description: + * Convert time interval from RTC_SLOW_CLK to microseconds + * + * Input Parameters: + * time_in_us - Time interval in RTC_SLOW_CLK cycles + * slow_clk_period - Period of slow clock in microseconds + * + * Returned Value: + * Time interval in microseconds + * + ****************************************************************************/ + +uint64_t IRAM_ATTR esp32_rtc_time_slowclk_to_us(uint64_t rtc_cycles, + uint32_t period) +{ + return (rtc_cycles * period) >> RTC_CLK_CAL_FRACT; +} + +/**************************************************************************** + * Name: esp32_clk_slowclk_cal_get + * + * Description: + * Get the calibration value of RTC slow clock. + * + * Input Parameters: + * None + * + * Returned Value: + * the calibration value obtained using rtc_clk_cal + * + ****************************************************************************/ + +uint32_t IRAM_ATTR esp32_clk_slowclk_cal_get(void) +{ + return getreg32(RTC_SLOW_CLK_CAL_REG); +} + /**************************************************************************** * Name: esp32_rtc_bbpll_disable * diff --git a/arch/xtensa/src/esp32/esp32_rtc.h b/arch/xtensa/src/esp32/esp32_rtc.h index 20915158fb8..5c42d1a1b74 100644 --- a/arch/xtensa/src/esp32/esp32_rtc.h +++ b/arch/xtensa/src/esp32/esp32_rtc.h @@ -301,6 +301,39 @@ uint64_t esp32_rtc_time_get(void); uint64_t esp32_rtc_time_us_to_slowclk(uint64_t time_in_us, uint32_t period); +/**************************************************************************** + * Name: esp32_rtc_time_slowclk_to_us + * + * Description: + * Convert time interval from RTC_SLOW_CLK to microseconds + * + * Input Parameters: + * time_in_us - Time interval in RTC_SLOW_CLK cycles + * slow_clk_period - Period of slow clock in microseconds + * + * Returned Value: + * Time interval in microseconds + * + ****************************************************************************/ + +uint64_t esp32_rtc_time_slowclk_to_us(uint64_t rtc_cycles, uint32_t period); + +/**************************************************************************** + * Name: esp32_clk_slowclk_cal_get + * + * Description: + * Get the calibration value of RTC slow clock. + * + * Input Parameters: + * None + * + * Returned Value: + * the calibration value obtained using rtc_clk_cal + * + ****************************************************************************/ + +uint32_t esp32_clk_slowclk_cal_get(void); + /**************************************************************************** * Name: esp32_rtc_bbpll_disable * diff --git a/arch/xtensa/src/esp32/esp32_wifi_adapter.c b/arch/xtensa/src/esp32/esp32_wifi_adapter.c index 44b014c8d2c..f4418afb4c7 100644 --- a/arch/xtensa/src/esp32/esp32_wifi_adapter.c +++ b/arch/xtensa/src/esp32/esp32_wifi_adapter.c @@ -60,6 +60,10 @@ #include "esp32_rt_timer.h" #include "esp32_wifi_utils.h" +#ifdef CONFIG_PM +#include "esp32_pm.h" +#endif + #include "espidf_wifi.h" /**************************************************************************** @@ -90,6 +94,24 @@ #define SSID_MAX_LEN (32) #define PWD_MAX_LEN (64) +#ifndef CONFIG_EXAMPLE_WIFI_LISTEN_INTERVAL +#define CONFIG_EXAMPLE_WIFI_LISTEN_INTERVAL 3 +#endif + +#define DEFAULT_LISTEN_INTERVAL CONFIG_EXAMPLE_WIFI_LISTEN_INTERVAL + +/* CONFIG_POWER_SAVE_MODEM */ + +#if defined(CONFIG_EXAMPLE_POWER_SAVE_MIN_MODEM) +# define DEFAULT_PS_MODE WIFI_PS_MIN_MODEM +#elif defined(CONFIG_EXAMPLE_POWER_SAVE_MAX_MODEM) +# define DEFAULT_PS_MODE WIFI_PS_MAX_MODEM +#elif defined(CONFIG_EXAMPLE_POWER_SAVE_NONE) +# define DEFAULT_PS_MODE WIFI_PS_NONE +#else +# define DEFAULT_PS_MODE WIFI_PS_NONE +#endif + /**************************************************************************** * Private Types ****************************************************************************/ @@ -2100,7 +2122,7 @@ static void esp_evt_work_cb(FAR void *arg) case WIFI_ADPT_EVT_STA_START: wlinfo("WiFi sta start\n"); g_sta_connected = false; - ret = esp_wifi_set_ps(WIFI_PS_NONE); + ret = esp_wifi_set_ps(DEFAULT_PS_MODE); if (ret) { wlerr("Failed to close PS\n"); @@ -2334,24 +2356,30 @@ static void esp_dport_access_stall_other_cpu_end(void) * Name: wifi_apb80m_request * * Description: - * Don't support + * Take Wi-Fi lock in auto-sleep * ****************************************************************************/ static void wifi_apb80m_request(void) { +#ifdef CONFIG_ESP32_AUTO_SLEEP + esp32_pm_lockacquire(); +#endif } /**************************************************************************** * Name: wifi_apb80m_release * * Description: - * Don't support + * Release Wi-Fi lock in auto-sleep * ****************************************************************************/ static void wifi_apb80m_release(void) { +#ifdef CONFIG_ESP32_AUTO_SLEEP + esp32_pm_lockrelease(); +#endif } /**************************************************************************** @@ -4870,13 +4898,6 @@ int esp_wifi_adapter_init(void) return OK; } - ret = esp32_rt_timer_init(); - if (ret < 0) - { - wlerr("Failed to initialize RT timer error=%d\n", ret); - goto errout_init_timer; - } - sq_init(&g_wifi_evt_queue); #ifdef CONFIG_ESP32_WIFI_SAVE_PARAM @@ -4935,9 +4956,8 @@ int esp_wifi_adapter_init(void) errout_init_txdone: esp_wifi_deinit(); errout_init_wifi: - esp32_rt_timer_deinit(); -errout_init_timer: esp_wifi_lock(false); + return ret; } @@ -5213,6 +5233,7 @@ int esp_wifi_sta_password(struct iwreq *iwr, bool set) memcpy(wifi_cfg.sta.password, pdata, len); wifi_cfg.sta.pmf_cfg.capable = true; + wifi_cfg.sta.listen_interval = DEFAULT_LISTEN_INTERVAL; ret = esp_wifi_set_config(WIFI_IF_STA, &wifi_cfg); if (ret) @@ -5583,7 +5604,7 @@ int esp_wifi_sta_auth(struct iwreq *iwr, bool set) if (set) { - return -ENOSYS; + return OK; } else { diff --git a/boards/xtensa/esp32/esp32-devkitc/configs/autopm/defconfig b/boards/xtensa/esp32/esp32-devkitc/configs/autopm/defconfig new file mode 100644 index 00000000000..f672c34c9a4 --- /dev/null +++ b/boards/xtensa/esp32/esp32-devkitc/configs/autopm/defconfig @@ -0,0 +1,79 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_ARCH_LEDS is not set +# CONFIG_NSH_ARGCAT is not set +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +# CONFIG_NSH_CMDPARMS is not set +CONFIG_ARCH="xtensa" +CONFIG_ARCH_BOARD="esp32-devkitc" +CONFIG_ARCH_BOARD_ESP32_DEVKITC=y +CONFIG_ARCH_CHIP="esp32" +CONFIG_ARCH_CHIP_ESP32=y +CONFIG_ARCH_CHIP_ESP32WROVER=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_ARCH_XTENSA=y +CONFIG_BOARD_LOOPSPERMSEC=16717 +CONFIG_BUILTIN=y +CONFIG_DRIVERS_IEEE80211=y +CONFIG_DRIVERS_WIRELESS=y +CONFIG_ESP32_AUTO_SLEEP=y +CONFIG_ESP32_MTD_SIZE=0x80000 +CONFIG_ESP32_SPIFLASH=y +CONFIG_ESP32_UART0=y +CONFIG_ESP32_WIFI_SAVE_PARAM=y +CONFIG_ESP32_WIRELESS=y +CONFIG_EXAMPLE_POWER_SAVE_MIN_MODEM=y +CONFIG_FS_PROCFS=y +CONFIG_FS_SPIFFS=y +CONFIG_HAVE_CXX=y +CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_IDLETHREAD_STACKSIZE=3072 +CONFIG_INTELHEX_BINARY=y +CONFIG_LIBC_FLOATINGPOINT=y +CONFIG_MAX_TASKS=16 +CONFIG_MM_REGIONS=3 +CONFIG_NAME_MAX=48 +CONFIG_NETDB_DNSCLIENT=y +CONFIG_NETDEV_LATEINIT=y +CONFIG_NETDEV_PHY_IOCTL=y +CONFIG_NETDEV_WIRELESS_IOCTL=y +CONFIG_NETINIT_DHCPC=y +CONFIG_NET_BROADCAST=y +CONFIG_NET_ICMP=y +CONFIG_NET_ICMP_SOCKET=y +CONFIG_NET_SOCKOPTS=y +CONFIG_NET_TCP=y +CONFIG_NET_UDP=y +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_LINELEN=64 +CONFIG_NSH_READLINE=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_PTHREAD_MUTEX_TYPES=y +CONFIG_RAM_SIZE=114688 +CONFIG_RAM_START=0x20000000 +CONFIG_RAW_BINARY=y +CONFIG_SCHED_LPWORK=y +CONFIG_SCHED_WAITPID=y +CONFIG_SDCLONE_DISABLE=y +CONFIG_SIG_DEFAULT=y +CONFIG_SPI=y +CONFIG_SPIFFS_NAME_MAX=48 +CONFIG_START_DAY=6 +CONFIG_START_MONTH=12 +CONFIG_START_YEAR=2011 +CONFIG_SYSTEM_DHCPC_RENEW=y +CONFIG_SYSTEM_NSH=y +CONFIG_SYSTEM_PING=y +CONFIG_UART0_SERIAL_CONSOLE=y +CONFIG_USER_ENTRYPOINT="nsh_main" +CONFIG_WIRELESS=y +CONFIG_WIRELESS_WAPI=y +CONFIG_WIRELESS_WAPI_CMDTOOL=y +CONFIG_WIRELESS_WAPI_STACKSIZE=4096 diff --git a/boards/xtensa/esp32/esp32-devkitc/src/esp32_bringup.c b/boards/xtensa/esp32/esp32-devkitc/src/esp32_bringup.c index 21dc6668778..2251400b516 100644 --- a/boards/xtensa/esp32/esp32-devkitc/src/esp32_bringup.c +++ b/boards/xtensa/esp32/esp32-devkitc/src/esp32_bringup.c @@ -78,6 +78,10 @@ # include "esp32_aes.h" #endif +#ifdef CONFIG_ESP32_RT_TIMER +# include "esp32_rt_timer.h" +#endif + #ifdef CONFIG_INPUT_BUTTONS # include #endif @@ -186,6 +190,15 @@ int esp32_bringup(void) } #endif +#ifdef CONFIG_ESP32_RT_TIMER + ret = esp32_rt_timer_init(); + if (ret < 0) + { + syslog(LOG_ERR, "Failed to initialize RT timer error\n"); + return ret; + } +#endif + #ifdef CONFIG_ESP32_WIRELESS ret = board_wlan_init(); if (ret < 0) diff --git a/boards/xtensa/esp32/esp32-ethernet-kit/configs/autopm/defconfig b/boards/xtensa/esp32/esp32-ethernet-kit/configs/autopm/defconfig new file mode 100644 index 00000000000..95e2a3ec197 --- /dev/null +++ b/boards/xtensa/esp32/esp32-ethernet-kit/configs/autopm/defconfig @@ -0,0 +1,78 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_NSH_ARGCAT is not set +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +# CONFIG_NSH_CMDPARMS is not set +CONFIG_ARCH="xtensa" +CONFIG_ARCH_BOARD="esp32-ethernet-kit" +CONFIG_ARCH_BOARD_ESP32_ETHERNETKIT=y +CONFIG_ARCH_CHIP="esp32" +CONFIG_ARCH_CHIP_ESP32=y +CONFIG_ARCH_CHIP_ESP32WROVER=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_ARCH_XTENSA=y +CONFIG_BOARD_LOOPSPERMSEC=16717 +CONFIG_BUILTIN=y +CONFIG_DRIVERS_IEEE80211=y +CONFIG_DRIVERS_WIRELESS=y +CONFIG_ESP32_AUTO_SLEEP=y +CONFIG_ESP32_MTD_SIZE=0x80000 +CONFIG_ESP32_SPIFLASH=y +CONFIG_ESP32_UART0=y +CONFIG_ESP32_WIFI_SAVE_PARAM=y +CONFIG_ESP32_WIRELESS=y +CONFIG_EXAMPLE_POWER_SAVE_MIN_MODEM=y +CONFIG_FS_PROCFS=y +CONFIG_FS_SPIFFS=y +CONFIG_HAVE_CXX=y +CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_IDLETHREAD_STACKSIZE=3072 +CONFIG_INTELHEX_BINARY=y +CONFIG_LIBC_FLOATINGPOINT=y +CONFIG_MAX_TASKS=16 +CONFIG_MM_REGIONS=3 +CONFIG_NAME_MAX=48 +CONFIG_NETDB_DNSCLIENT=y +CONFIG_NETDEV_LATEINIT=y +CONFIG_NETDEV_PHY_IOCTL=y +CONFIG_NETDEV_WIRELESS_IOCTL=y +CONFIG_NETINIT_DHCPC=y +CONFIG_NET_BROADCAST=y +CONFIG_NET_ICMP=y +CONFIG_NET_ICMP_SOCKET=y +CONFIG_NET_SOCKOPTS=y +CONFIG_NET_TCP=y +CONFIG_NET_UDP=y +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_LINELEN=64 +CONFIG_NSH_READLINE=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_PTHREAD_MUTEX_TYPES=y +CONFIG_RAM_SIZE=114688 +CONFIG_RAM_START=0x20000000 +CONFIG_RAW_BINARY=y +CONFIG_SCHED_LPWORK=y +CONFIG_SCHED_WAITPID=y +CONFIG_SDCLONE_DISABLE=y +CONFIG_SIG_DEFAULT=y +CONFIG_SPI=y +CONFIG_SPIFFS_NAME_MAX=48 +CONFIG_START_DAY=6 +CONFIG_START_MONTH=12 +CONFIG_START_YEAR=2011 +CONFIG_SYSTEM_DHCPC_RENEW=y +CONFIG_SYSTEM_NSH=y +CONFIG_SYSTEM_PING=y +CONFIG_UART0_SERIAL_CONSOLE=y +CONFIG_USER_ENTRYPOINT="nsh_main" +CONFIG_WIRELESS=y +CONFIG_WIRELESS_WAPI=y +CONFIG_WIRELESS_WAPI_CMDTOOL=y +CONFIG_WIRELESS_WAPI_STACKSIZE=4096 diff --git a/boards/xtensa/esp32/esp32-ethernet-kit/src/esp32_bringup.c b/boards/xtensa/esp32/esp32-ethernet-kit/src/esp32_bringup.c index 726cefc1146..1c4451209e8 100644 --- a/boards/xtensa/esp32/esp32-ethernet-kit/src/esp32_bringup.c +++ b/boards/xtensa/esp32/esp32-ethernet-kit/src/esp32_bringup.c @@ -58,6 +58,10 @@ # include "esp32_board_wdt.h" #endif +#ifdef CONFIG_ESP32_RT_TIMER +# include "esp32_rt_timer.h" +#endif + #ifdef CONFIG_ESP32_WIRELESS # include "esp32_board_wlan.h" #endif @@ -153,6 +157,15 @@ int esp32_bringup(void) } #endif +#ifdef CONFIG_ESP32_RT_TIMER + ret = esp32_rt_timer_init(); + if (ret < 0) + { + syslog(LOG_ERR, "Failed to initialize RT timer error\n"); + return ret; + } +#endif + #ifdef CONFIG_ESP32_WIRELESS ret = board_wlan_init(); if (ret < 0) diff --git a/boards/xtensa/esp32/esp32-wrover-kit/configs/autopm/defconfig b/boards/xtensa/esp32/esp32-wrover-kit/configs/autopm/defconfig new file mode 100644 index 00000000000..f5916f30383 --- /dev/null +++ b/boards/xtensa/esp32/esp32-wrover-kit/configs/autopm/defconfig @@ -0,0 +1,79 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_ARCH_LEDS is not set +# CONFIG_NSH_ARGCAT is not set +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +# CONFIG_NSH_CMDPARMS is not set +CONFIG_ARCH="xtensa" +CONFIG_ARCH_BOARD="esp32-wrover-kit" +CONFIG_ARCH_BOARD_ESP32_WROVERKIT=y +CONFIG_ARCH_CHIP="esp32" +CONFIG_ARCH_CHIP_ESP32=y +CONFIG_ARCH_CHIP_ESP32WROVER=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_ARCH_XTENSA=y +CONFIG_BOARD_LOOPSPERMSEC=16717 +CONFIG_BUILTIN=y +CONFIG_DRIVERS_IEEE80211=y +CONFIG_DRIVERS_WIRELESS=y +CONFIG_ESP32_AUTO_SLEEP=y +CONFIG_ESP32_MTD_SIZE=0x80000 +CONFIG_ESP32_SPIFLASH=y +CONFIG_ESP32_UART0=y +CONFIG_ESP32_WIFI_SAVE_PARAM=y +CONFIG_ESP32_WIRELESS=y +CONFIG_EXAMPLE_POWER_SAVE_MIN_MODEM=y +CONFIG_FS_PROCFS=y +CONFIG_FS_SPIFFS=y +CONFIG_HAVE_CXX=y +CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_IDLETHREAD_STACKSIZE=3072 +CONFIG_INTELHEX_BINARY=y +CONFIG_LIBC_FLOATINGPOINT=y +CONFIG_MAX_TASKS=16 +CONFIG_MM_REGIONS=3 +CONFIG_NAME_MAX=48 +CONFIG_NETDB_DNSCLIENT=y +CONFIG_NETDEV_LATEINIT=y +CONFIG_NETDEV_PHY_IOCTL=y +CONFIG_NETDEV_WIRELESS_IOCTL=y +CONFIG_NETINIT_DHCPC=y +CONFIG_NET_BROADCAST=y +CONFIG_NET_ICMP=y +CONFIG_NET_ICMP_SOCKET=y +CONFIG_NET_SOCKOPTS=y +CONFIG_NET_TCP=y +CONFIG_NET_UDP=y +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_LINELEN=64 +CONFIG_NSH_READLINE=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_PTHREAD_MUTEX_TYPES=y +CONFIG_RAM_SIZE=114688 +CONFIG_RAM_START=0x20000000 +CONFIG_RAW_BINARY=y +CONFIG_SCHED_LPWORK=y +CONFIG_SCHED_WAITPID=y +CONFIG_SDCLONE_DISABLE=y +CONFIG_SIG_DEFAULT=y +CONFIG_SPI=y +CONFIG_SPIFFS_NAME_MAX=48 +CONFIG_START_DAY=6 +CONFIG_START_MONTH=12 +CONFIG_START_YEAR=2011 +CONFIG_SYSTEM_DHCPC_RENEW=y +CONFIG_SYSTEM_NSH=y +CONFIG_SYSTEM_PING=y +CONFIG_UART0_SERIAL_CONSOLE=y +CONFIG_USER_ENTRYPOINT="nsh_main" +CONFIG_WIRELESS=y +CONFIG_WIRELESS_WAPI=y +CONFIG_WIRELESS_WAPI_CMDTOOL=y +CONFIG_WIRELESS_WAPI_STACKSIZE=4096 diff --git a/boards/xtensa/esp32/esp32-wrover-kit/src/esp32_bringup.c b/boards/xtensa/esp32/esp32-wrover-kit/src/esp32_bringup.c index 41300a2eb9a..cae5ac7b8ff 100644 --- a/boards/xtensa/esp32/esp32-wrover-kit/src/esp32_bringup.c +++ b/boards/xtensa/esp32/esp32-wrover-kit/src/esp32_bringup.c @@ -81,6 +81,10 @@ # include #endif +#ifdef CONFIG_ESP32_RT_TIMER +# include "esp32_rt_timer.h" +#endif + #ifdef CONFIG_LCD_DEV # include # include @@ -173,6 +177,15 @@ int esp32_bringup(void) } #endif +#ifdef CONFIG_ESP32_RT_TIMER + ret = esp32_rt_timer_init(); + if (ret < 0) + { + syslog(LOG_ERR, "Failed to initialize RT timer error\n"); + return ret; + } +#endif + #ifdef CONFIG_ESP32_WIRELESS ret = board_wlan_init(); if (ret < 0) From e44ec9e48ef5b8d9e8155910d5c94de7e4beb2c8 Mon Sep 17 00:00:00 2001 From: Chen Wen Date: Thu, 6 May 2021 15:11:30 +0800 Subject: [PATCH 144/739] xtensa/esp32: Fix code nxstyle issue --- arch/xtensa/src/common/xtensa_counter.h | 112 ++++++++++++++++++ arch/xtensa/src/esp32/Kconfig | 12 +- arch/xtensa/src/esp32/Make.defs | 6 +- arch/xtensa/src/esp32/esp32_idle.c | 26 ++-- arch/xtensa/src/esp32/esp32_pm.c | 15 +-- arch/xtensa/src/esp32/esp32_rtc.c | 4 +- arch/xtensa/src/esp32/esp32_rtc.h | 4 +- arch/xtensa/src/esp32/esp32_tickless.c | 102 ++++------------ arch/xtensa/src/esp32/esp32_tickless.h | 6 +- arch/xtensa/src/esp32/esp32_timerisr.c | 48 +------- .../esp32-devkitc/configs/autopm/defconfig | 1 - .../esp32-devkitc/configs/tickless/defconfig | 1 - .../esp32/esp32-devkitc/src/esp32_bringup.c | 3 +- .../configs/autopm/defconfig | 1 - .../esp32-ethernet-kit/src/esp32_bringup.c | 3 +- .../esp32-wrover-kit/configs/autopm/defconfig | 1 - .../esp32-wrover-kit/src/esp32_bringup.c | 3 +- 17 files changed, 172 insertions(+), 176 deletions(-) create mode 100644 arch/xtensa/src/common/xtensa_counter.h diff --git a/arch/xtensa/src/common/xtensa_counter.h b/arch/xtensa/src/common/xtensa_counter.h new file mode 100644 index 00000000000..3228459cb6d --- /dev/null +++ b/arch/xtensa/src/common/xtensa_counter.h @@ -0,0 +1,112 @@ +/**************************************************************************** + * arch/xtensa/src/common/xtensa_counter.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_XTENSA_SRC_COMMON_XTENSA_COUNTER_H +#define __ARCH_XTENSA_SRC_COMMON_XTENSA_COUNTER_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include + +#include "xtensa_timer.h" + +/**************************************************************************** + * Inline functions + ****************************************************************************/ + +/**************************************************************************** + * Name: xtensa_getcount + * + * Description: + * Get the current value of the cycle count register. + * + ****************************************************************************/ + +static inline uint32_t xtensa_getcount(void) +{ + uint32_t count; + + __asm__ __volatile__ + ( + "rsr %0, CCOUNT" : "=r"(count) + ); + + return count; +} + +/**************************************************************************** + * Name: xtensa_setcount + * + * Description: + * Set the value of the cycle count register. + * + ****************************************************************************/ + +static inline void xtensa_setcount(uint32_t ticks) +{ + __asm__ __volatile__ + ( + "wsr %0, ccount\n" + : + : "a"(ticks) + : "memory" + ); +} + +/**************************************************************************** + * Name: xtensa_getcompare + * + * Description: + * Get the old value of the compare register. + * + ****************************************************************************/ + +static inline uint32_t xtensa_getcompare(void) +{ + uint32_t compare; + + __asm__ __volatile__ + ( + "rsr %0, %1" : "=r"(compare) : "I"(XT_CCOMPARE) + ); + + return compare; +} + +/**************************************************************************** + * Name: xtensa_getcompare + * + * Description: + * Set the value of the compare register. + * + ****************************************************************************/ + +static inline void xtensa_setcompare(uint32_t compare) +{ + __asm__ __volatile__ + ( + "wsr %0, %1" : : "r"(compare), "I"(XT_CCOMPARE) + ); +} + +#endif /* __ARCH_XTENSA_SRC_COMMON_XTENSA_COUNTER_H */ diff --git a/arch/xtensa/src/esp32/Kconfig b/arch/xtensa/src/esp32/Kconfig index f5e14fff49a..41065a2f4d2 100644 --- a/arch/xtensa/src/esp32/Kconfig +++ b/arch/xtensa/src/esp32/Kconfig @@ -972,17 +972,17 @@ config ESP32_WIFI_STA_DISCONNECT_PM Chip will do modem-sleep when RF module is not in use anymore. config EXAMPLE_WIFI_LISTEN_INTERVAL - int "WiFi listen interval" - default 3 - help + int "Wi-Fi listen interval" + default 3 + ---help--- Interval for station to listen to beacon from AP. The unit of listen interval is one beacon interval. For example, if beacon interval is 100 ms and listen interval is 3, the interval for station to listen to beacon is 300 ms. choice EXAMPLE_POWER_SAVE_MODE - prompt "power save mode" + prompt "Power save mode" default EXAMPLE_POWER_SAVE_NONE - help + ---help--- Power save mode for the esp32 to use. Modem sleep mode includes minimum and maximum power save modes. In minimum power save mode, station wakes up every DTIM to receive beacon. Broadcast data will not be lost because it is transmitted after DTIM. However, it can not save much more power if DTIM is short @@ -1074,7 +1074,7 @@ config ESP32_AUTO_SLEEP Enable ESP32 Auto-sleep config ESP32_TICKLESS - bool "Enable ESP32 tick-less OS" + bool "Enable ESP32 tickless OS" default n select ARCH_HAVE_TICKLESS select SCHED_TICKLESS diff --git a/arch/xtensa/src/esp32/Make.defs b/arch/xtensa/src/esp32/Make.defs index 5b26a3c0a45..69981bdb83b 100644 --- a/arch/xtensa/src/esp32/Make.defs +++ b/arch/xtensa/src/esp32/Make.defs @@ -78,10 +78,10 @@ CHIP_CSRCS += esp32_gpio.c esp32_intdecode.c esp32_irq.c esp32_region.c CHIP_CSRCS += esp32_user.c CHIP_CSRCS += esp32_dma.c -ifneq ($(CONFIG_SCHED_TICKLESS),y) -CHIP_CSRCS += esp32_timerisr.c -else +ifeq ($(CONFIG_SCHED_TICKLESS),y) CHIP_CSRCS += esp32_tickless.c +else +CHIP_CSRCS += esp32_timerisr.c endif ifeq ($(CONFIG_PM),y) diff --git a/arch/xtensa/src/esp32/esp32_idle.c b/arch/xtensa/src/esp32/esp32_idle.c index f2b09222e7b..0374f52579f 100644 --- a/arch/xtensa/src/esp32/esp32_idle.c +++ b/arch/xtensa/src/esp32/esp32_idle.c @@ -96,24 +96,20 @@ static void up_idlepm(void) irqstate_t flags; #ifdef CONFIG_ESP32_AUTO_SLEEP - uint64_t sleep_us; - uint64_t os_idle_us; - uint64_t os_start_us; - uint64_t os_end_us; - uint64_t os_step_us; - uint64_t hw_idle_us; - uint64_t hw_start_us; - uint64_t hw_end_us; - uint64_t hw_step_us; - uint64_t rtc_diff_us; - struct timespec ts; - flags = spin_lock_irqsave(NULL); if (esp32_pm_lockstatus() == 0) { - os_idle_us = up_get_idletime(); - hw_idle_us = rt_timer_get_alarm(); - sleep_us = MIN(os_idle_us, hw_idle_us); + uint64_t os_start_us; + uint64_t os_end_us; + uint64_t os_step_us; + uint64_t hw_start_us; + uint64_t hw_end_us; + uint64_t hw_step_us; + uint64_t rtc_diff_us; + struct timespec ts; + uint64_t os_idle_us = up_get_idletime(); + uint64_t hw_idle_us = rt_timer_get_alarm(); + uint64_t sleep_us = MIN(os_idle_us, hw_idle_us); if (sleep_us > EXPECTED_IDLE_TIME_US) { sleep_us -= EARLY_WAKEUP_US; diff --git a/arch/xtensa/src/esp32/esp32_pm.c b/arch/xtensa/src/esp32/esp32_pm.c index badae1daf44..3c4c5480fd3 100644 --- a/arch/xtensa/src/esp32/esp32_pm.c +++ b/arch/xtensa/src/esp32/esp32_pm.c @@ -200,7 +200,8 @@ static struct esp32_sleep_config_t s_config = { ESP_PD_OPTION_AUTO, ESP_PD_OPTION_AUTO, ESP_PD_OPTION_AUTO }, .wakeup_triggers = 0 }; -static volatile uint32_t pm_wakelock = 0; + +static _Atomic uint32_t pm_wakelock = 0; /**************************************************************************** * Private Functions @@ -915,7 +916,7 @@ int esp32_light_sleep_start(uint64_t *sleep_time) ret = esp32_light_sleep_inner(pd_flags, flash_enable_time_us, vddsdio_config); - if (sleep_time) + if (sleep_time != NULL) { *sleep_time = esp32_rtc_time_slowclk_to_us(esp32_rtc_time_get() - s_config.rtc_ticks_at_sleep_start, esp32_clk_slowclk_cal_get()); @@ -997,7 +998,7 @@ void esp32_pmstandby(uint64_t time_in_us) up_step_idletime((uint32_t)time_in_us); #endif - pwrinfo("Returned from auto-sleep, slept for %d ms\n", + pwrinfo("Returned from auto-sleep, slept for %" PRIu32 " ms\n", (uint32_t)(rtc_diff_us) / 1000); } @@ -1140,11 +1141,7 @@ void esp32_pmsleep(uint64_t time_in_us) void IRAM_ATTR esp32_pm_lockacquire(void) { - irqstate_t flags; - - flags = enter_critical_section(); ++pm_wakelock; - leave_critical_section(flags); } /**************************************************************************** @@ -1157,11 +1154,7 @@ void IRAM_ATTR esp32_pm_lockacquire(void) void IRAM_ATTR esp32_pm_lockrelease(void) { - irqstate_t flags; - - flags = enter_critical_section(); --pm_wakelock; - leave_critical_section(flags); } /**************************************************************************** diff --git a/arch/xtensa/src/esp32/esp32_rtc.c b/arch/xtensa/src/esp32/esp32_rtc.c index 75f283214e8..0c4be46b58d 100644 --- a/arch/xtensa/src/esp32/esp32_rtc.c +++ b/arch/xtensa/src/esp32/esp32_rtc.c @@ -1017,8 +1017,8 @@ uint64_t IRAM_ATTR esp32_rtc_time_us_to_slowclk(uint64_t time_in_us, * Convert time interval from RTC_SLOW_CLK to microseconds * * Input Parameters: - * time_in_us - Time interval in RTC_SLOW_CLK cycles - * slow_clk_period - Period of slow clock in microseconds + * rtc_cycles - Time interval in RTC_SLOW_CLK cycles + * period - Period of slow clock in microseconds * * Returned Value: * Time interval in microseconds diff --git a/arch/xtensa/src/esp32/esp32_rtc.h b/arch/xtensa/src/esp32/esp32_rtc.h index 5c42d1a1b74..025c8784efe 100644 --- a/arch/xtensa/src/esp32/esp32_rtc.h +++ b/arch/xtensa/src/esp32/esp32_rtc.h @@ -308,8 +308,8 @@ uint64_t esp32_rtc_time_us_to_slowclk(uint64_t time_in_us, uint32_t period); * Convert time interval from RTC_SLOW_CLK to microseconds * * Input Parameters: - * time_in_us - Time interval in RTC_SLOW_CLK cycles - * slow_clk_period - Period of slow clock in microseconds + * rtc_cycles - Time interval in RTC_SLOW_CLK cycles + * period - Period of slow clock in microseconds * * Returned Value: * Time interval in microseconds diff --git a/arch/xtensa/src/esp32/esp32_tickless.c b/arch/xtensa/src/esp32/esp32_tickless.c index 5d401003fe7..59f09d55dcd 100644 --- a/arch/xtensa/src/esp32/esp32_tickless.c +++ b/arch/xtensa/src/esp32/esp32_tickless.c @@ -62,6 +62,7 @@ #include "xtensa_timer.h" #include "xtensa.h" #include "xtensa_attr.h" +#include "xtensa_counter.h" #ifdef CONFIG_SCHED_TICKLESS @@ -74,6 +75,7 @@ #define SEC_2_CTICK(s) ((s) * CTICK_PER_SEC) #define USEC_2_CTICK(us) ((us) * CTICK_PER_USEC) +#define NSEC_2_CTICK(nsec) (((nsec) * CTICK_PER_USEC) / NSEC_PER_USEC) #define CTICK_2_SEC(tick) ((tick) / CTICK_PER_SEC) #define CTICK_2_USEC(tick) ((tick) / CTICK_PER_USEC) @@ -85,10 +87,6 @@ * Private Function Prototypes ****************************************************************************/ -static inline uint32_t xtensa_getcount(void); -static inline uint32_t xtensa_getcompare(void); -static inline void xtensa_setcount(uint32_t ticks); -static inline void xtensa_setcompare(uint32_t compare); static inline uint64_t up_tmr_total_count(void); static inline uint64_t up_tmr_getcount(void); static void IRAM_ATTR up_tmr_setcompare(uint32_t ticks); @@ -99,75 +97,18 @@ static int up_timer_expire(int irq, void *regs, FAR void *arg); * Private Data ****************************************************************************/ -static bool g_timer_started; -static uint64_t g_cticks; -static uint32_t g_loop_cnt; +static bool g_timer_started; /* Whether an interval timer is being started */ +static uint64_t g_cticks; /* Total ticks of system since power-on */ +static uint32_t g_loop_cnt; /* System Cycle counter cycle times */ + +/* Redundant ticks of an interval timer on the cycle counter */ + static uint32_t g_last_cticks; /**************************************************************************** * Private Functions ****************************************************************************/ -/**************************************************************************** - * Function: xtensa_getcount, xtensa_setcount - * xtensa_getcompare, and xtensa_setcompare - * - * Description: - * Lower level operations on Xtensa special registers. - * - ****************************************************************************/ - -/* Return the current value of the cycle count register */ - -static inline uint32_t xtensa_getcount(void) -{ - uint32_t count; - - __asm__ __volatile__ - ( - "rsr %0, CCOUNT" : "=r"(count) - ); - - return count; -} - -/* Set the value of the cycle count register */ - -static inline void xtensa_setcount(uint32_t ticks) -{ - __asm__ __volatile__ - ( - "wsr %0, ccount\n" - : - : "a"(ticks) - : "memory" - ); -} - -/* Return the old value of the compare register */ - -static inline uint32_t xtensa_getcompare(void) -{ - uint32_t compare; - - __asm__ __volatile__ - ( - "rsr %0, %1" : "=r"(compare) : "I"(XT_CCOMPARE) - ); - - return compare; -} - -/* Set the value of the compare register */ - -static inline void xtensa_setcompare(uint32_t compare) -{ - __asm__ __volatile__ - ( - "wsr %0, %1" : : "r"(compare), "I"(XT_CCOMPARE) - ); -} - /**************************************************************************** * Name: up_tmr_total_count * @@ -211,14 +152,14 @@ static inline uint64_t up_tmr_getcount(void) * Name: up_tmr_setcompare * * Description: - * Set the value of the compare register and - * save the currently running system tick. + * Set the value of the compare register, save the currently running + * system tick and clear cycle count register. * * Input Parameters: - * None + * ticks - Set the new value of the compare register * * Returned Value: - * Remaining ticks + * None * ****************************************************************************/ @@ -245,10 +186,11 @@ static void IRAM_ATTR up_tmr_setcompare(uint32_t ticks) static void IRAM_ATTR up_tmr_setcount(uint64_t ticks) { + irqstate_t flags; uint32_t loop_cnt; uint32_t last_ticks; - if (!ticks) + if (ticks == 0) { ticks = 1; } @@ -256,7 +198,7 @@ static void IRAM_ATTR up_tmr_setcount(uint64_t ticks) loop_cnt = ticks / CPU_TICKS_MAX; last_ticks = ticks % CPU_TICKS_MAX; - if (loop_cnt) + if (loop_cnt != 0) { xtensa_setcompare(CPU_TICKS_MAX); } @@ -265,10 +207,14 @@ static void IRAM_ATTR up_tmr_setcount(uint64_t ticks) xtensa_setcompare(last_ticks); } + flags = enter_critical_section(); + g_loop_cnt = loop_cnt; g_last_cticks = last_ticks; g_timer_started = true; + leave_critical_section(flags); + g_cticks += xtensa_getcount(); xtensa_setcount(0); } @@ -296,12 +242,12 @@ static int up_timer_expire(int irq, void *regs, FAR void *arg) if (g_timer_started) { - if (g_loop_cnt) + if (g_loop_cnt != 0) { --g_loop_cnt; - if (!g_loop_cnt) + if (g_loop_cnt == 0) { - if (g_last_cticks) + if (g_last_cticks != 0) { up_tmr_setcompare(g_last_cticks); } @@ -433,7 +379,7 @@ int IRAM_ATTR up_timer_cancel(FAR struct timespec *ts) flags = enter_critical_section(); - if (ts) + if (ts != NULL) { if (!g_timer_started) { @@ -503,7 +449,7 @@ int IRAM_ATTR up_timer_start(FAR const struct timespec *ts) } cpu_ticks = SEC_2_CTICK((uint64_t)ts->tv_sec) + - USEC_2_CTICK((uint64_t)ts->tv_nsec / 1000); + NSEC_2_CTICK((uint64_t)ts->tv_nsec); up_tmr_setcount(cpu_ticks); diff --git a/arch/xtensa/src/esp32/esp32_tickless.h b/arch/xtensa/src/esp32/esp32_tickless.h index c1fd420478e..156761a1d94 100644 --- a/arch/xtensa/src/esp32/esp32_tickless.h +++ b/arch/xtensa/src/esp32/esp32_tickless.h @@ -18,12 +18,14 @@ * ****************************************************************************/ +#ifndef __ARCH_XTENSA_SRC_ESP32_ESP32_TICKLESS_H +#define __ARCH_XTENSA_SRC_ESP32_ESP32_TICKLESS_H + /**************************************************************************** * Included Files ****************************************************************************/ -#ifndef __ARCH_XTENSA_SRC_ESP32_ESP32_TICKLESS_H -#define __ARCH_XTENSA_SRC_ESP32_ESP32_TICKLESS_H +#include /**************************************************************************** * Public Function Prototypes diff --git a/arch/xtensa/src/esp32/esp32_timerisr.c b/arch/xtensa/src/esp32/esp32_timerisr.c index cb7b928e352..01e3fee7379 100644 --- a/arch/xtensa/src/esp32/esp32_timerisr.c +++ b/arch/xtensa/src/esp32/esp32_timerisr.c @@ -33,7 +33,7 @@ #include #include "clock/clock.h" -#include "xtensa_timer.h" +#include "xtensa_counter.h" #include "xtensa.h" /**************************************************************************** @@ -46,52 +46,6 @@ static uint32_t g_tick_divisor; * Private Functions ****************************************************************************/ -/**************************************************************************** - * Function: xtensa_getcount, xtensa_getcompare, and xtensa_setcompare - * - * Description: - * Lower level operations on Xtensa special registers. - * - ****************************************************************************/ - -/* Return the current value of the cycle count register */ - -static inline uint32_t xtensa_getcount(void) -{ - uint32_t count; - - __asm__ __volatile__ - ( - "rsr %0, CCOUNT" : "=r"(count) - ); - - return count; -} - -/* Return the old value of the compare register */ - -static inline uint32_t xtensa_getcompare(void) -{ - uint32_t compare; - - __asm__ __volatile__ - ( - "rsr %0, %1" : "=r"(compare) : "I"(XT_CCOMPARE) - ); - - return compare; -} - -/* Set the value of the compare register */ - -static inline void xtensa_setcompare(uint32_t compare) -{ - __asm__ __volatile__ - ( - "wsr %0, %1" : : "r"(compare), "I"(XT_CCOMPARE) - ); -} - /**************************************************************************** * Function: esp32_timerisr * diff --git a/boards/xtensa/esp32/esp32-devkitc/configs/autopm/defconfig b/boards/xtensa/esp32/esp32-devkitc/configs/autopm/defconfig index f672c34c9a4..a03c1ffb5a3 100644 --- a/boards/xtensa/esp32/esp32-devkitc/configs/autopm/defconfig +++ b/boards/xtensa/esp32/esp32-devkitc/configs/autopm/defconfig @@ -63,7 +63,6 @@ CONFIG_SCHED_LPWORK=y CONFIG_SCHED_WAITPID=y CONFIG_SDCLONE_DISABLE=y CONFIG_SIG_DEFAULT=y -CONFIG_SPI=y CONFIG_SPIFFS_NAME_MAX=48 CONFIG_START_DAY=6 CONFIG_START_MONTH=12 diff --git a/boards/xtensa/esp32/esp32-devkitc/configs/tickless/defconfig b/boards/xtensa/esp32/esp32-devkitc/configs/tickless/defconfig index 1a81d405e75..66d62bbf45a 100644 --- a/boards/xtensa/esp32/esp32-devkitc/configs/tickless/defconfig +++ b/boards/xtensa/esp32/esp32-devkitc/configs/tickless/defconfig @@ -39,7 +39,6 @@ CONFIG_RAM_START=0x20000000 CONFIG_RAW_BINARY=y CONFIG_SCHED_WAITPID=y CONFIG_SDCLONE_DISABLE=y -CONFIG_SPI=y CONFIG_START_DAY=6 CONFIG_START_MONTH=12 CONFIG_START_YEAR=2011 diff --git a/boards/xtensa/esp32/esp32-devkitc/src/esp32_bringup.c b/boards/xtensa/esp32/esp32-devkitc/src/esp32_bringup.c index 2251400b516..33695bcdde4 100644 --- a/boards/xtensa/esp32/esp32-devkitc/src/esp32_bringup.c +++ b/boards/xtensa/esp32/esp32-devkitc/src/esp32_bringup.c @@ -194,8 +194,7 @@ int esp32_bringup(void) ret = esp32_rt_timer_init(); if (ret < 0) { - syslog(LOG_ERR, "Failed to initialize RT timer error\n"); - return ret; + syslog(LOG_ERR, "Failed to initialize RT timer: %d\n", ret); } #endif diff --git a/boards/xtensa/esp32/esp32-ethernet-kit/configs/autopm/defconfig b/boards/xtensa/esp32/esp32-ethernet-kit/configs/autopm/defconfig index 95e2a3ec197..b996c8933e7 100644 --- a/boards/xtensa/esp32/esp32-ethernet-kit/configs/autopm/defconfig +++ b/boards/xtensa/esp32/esp32-ethernet-kit/configs/autopm/defconfig @@ -62,7 +62,6 @@ CONFIG_SCHED_LPWORK=y CONFIG_SCHED_WAITPID=y CONFIG_SDCLONE_DISABLE=y CONFIG_SIG_DEFAULT=y -CONFIG_SPI=y CONFIG_SPIFFS_NAME_MAX=48 CONFIG_START_DAY=6 CONFIG_START_MONTH=12 diff --git a/boards/xtensa/esp32/esp32-ethernet-kit/src/esp32_bringup.c b/boards/xtensa/esp32/esp32-ethernet-kit/src/esp32_bringup.c index 1c4451209e8..20b33092a71 100644 --- a/boards/xtensa/esp32/esp32-ethernet-kit/src/esp32_bringup.c +++ b/boards/xtensa/esp32/esp32-ethernet-kit/src/esp32_bringup.c @@ -161,8 +161,7 @@ int esp32_bringup(void) ret = esp32_rt_timer_init(); if (ret < 0) { - syslog(LOG_ERR, "Failed to initialize RT timer error\n"); - return ret; + syslog(LOG_ERR, "Failed to initialize RT timer: %d\n", ret); } #endif diff --git a/boards/xtensa/esp32/esp32-wrover-kit/configs/autopm/defconfig b/boards/xtensa/esp32/esp32-wrover-kit/configs/autopm/defconfig index f5916f30383..800fbf9dfc9 100644 --- a/boards/xtensa/esp32/esp32-wrover-kit/configs/autopm/defconfig +++ b/boards/xtensa/esp32/esp32-wrover-kit/configs/autopm/defconfig @@ -63,7 +63,6 @@ CONFIG_SCHED_LPWORK=y CONFIG_SCHED_WAITPID=y CONFIG_SDCLONE_DISABLE=y CONFIG_SIG_DEFAULT=y -CONFIG_SPI=y CONFIG_SPIFFS_NAME_MAX=48 CONFIG_START_DAY=6 CONFIG_START_MONTH=12 diff --git a/boards/xtensa/esp32/esp32-wrover-kit/src/esp32_bringup.c b/boards/xtensa/esp32/esp32-wrover-kit/src/esp32_bringup.c index cae5ac7b8ff..5012d2e751c 100644 --- a/boards/xtensa/esp32/esp32-wrover-kit/src/esp32_bringup.c +++ b/boards/xtensa/esp32/esp32-wrover-kit/src/esp32_bringup.c @@ -181,8 +181,7 @@ int esp32_bringup(void) ret = esp32_rt_timer_init(); if (ret < 0) { - syslog(LOG_ERR, "Failed to initialize RT timer error\n"); - return ret; + syslog(LOG_ERR, "Failed to initialize RT timer: %d\n", ret); } #endif From 9a99d813fa9ba7ab0cd2138ac7f563651163c1b9 Mon Sep 17 00:00:00 2001 From: chenwen Date: Sat, 8 May 2021 19:04:16 +0800 Subject: [PATCH 145/739] risc-v/esp32c3: Support ESP32-C3 auto-sleep --- arch/risc-v/src/esp32c3/Kconfig | 44 ++ arch/risc-v/src/esp32c3/Make.defs | 8 +- arch/risc-v/src/esp32c3/esp32c3_idle.c | 68 +- arch/risc-v/src/esp32c3/esp32c3_pm.c | 476 +++++++++++++- arch/risc-v/src/esp32c3/esp32c3_pm.h | 155 ++++- arch/risc-v/src/esp32c3/esp32c3_rt_timer.c | 71 +- arch/risc-v/src/esp32c3/esp32c3_rt_timer.h | 32 + arch/risc-v/src/esp32c3/esp32c3_rtc.c | 38 ++ arch/risc-v/src/esp32c3/esp32c3_rtc.h | 16 + arch/risc-v/src/esp32c3/esp32c3_tickless.c | 607 ++++++++++++++++++ arch/risc-v/src/esp32c3/esp32c3_tickless.h | 67 ++ .../risc-v/src/esp32c3/esp32c3_wifi_adapter.c | 91 ++- arch/risc-v/src/esp32c3/esp32c3_wifi_utils.h | 2 +- .../src/esp32c3/hardware/apb_ctrl_reg.h | 9 + .../src/esp32c3/hardware/esp32c3_rtccntl.h | 9 + .../risc-v/src/esp32c3/hardware/esp32c3_soc.h | 3 + .../esp32c3-devkit/configs/autopm/defconfig | 68 ++ .../esp32c3-devkit/configs/tickless/defconfig | 44 ++ .../esp32c3-devkit/src/esp32c3_bringup.c | 14 + 19 files changed, 1784 insertions(+), 38 deletions(-) create mode 100644 arch/risc-v/src/esp32c3/esp32c3_tickless.c create mode 100644 arch/risc-v/src/esp32c3/esp32c3_tickless.h create mode 100644 boards/risc-v/esp32c3/esp32c3-devkit/configs/autopm/defconfig create mode 100644 boards/risc-v/esp32c3/esp32c3-devkit/configs/tickless/defconfig diff --git a/arch/risc-v/src/esp32c3/Kconfig b/arch/risc-v/src/esp32c3/Kconfig index c4456c7afe0..9fb360ebb10 100644 --- a/arch/risc-v/src/esp32c3/Kconfig +++ b/arch/risc-v/src/esp32c3/Kconfig @@ -657,6 +657,34 @@ config ESP32C3_WIFI_STA_DISCONNECT_PM Select this option to enable power management for station when disconnected. Chip will do modem-sleep when RF module is not in use anymore. +config EXAMPLE_WIFI_LISTEN_INTERVAL + int "Wi-Fi listen interval" + default 3 + ---help--- + Interval for station to listen to beacon from AP. The unit of listen interval is one beacon interval. + For example, if beacon interval is 100 ms and listen interval is 3, the interval for station to listen + to beacon is 300 ms. + +choice EXAMPLE_POWER_SAVE_MODE + prompt "Power save mode" + default EXAMPLE_POWER_SAVE_NONE + ---help--- + Power save mode for the ESP32-C3 to use. Modem sleep mode includes minimum and maximum power save modes. + In minimum power save mode, station wakes up every DTIM to receive beacon. Broadcast data will not be + lost because it is transmitted after DTIM. However, it can not save much more power if DTIM is short + for DTIM is determined by AP. + In maximum power save mode, station wakes up every listen interval to receive beacon. Broadcast data + may be lost because station may be in sleep state at DTIM time. If listen interval is longer, more power + is saved but broadcast data is more easy to lose. + + config EXAMPLE_POWER_SAVE_NONE + bool "none" + config EXAMPLE_POWER_SAVE_MIN_MODEM + bool "minimum modem" + config EXAMPLE_POWER_SAVE_MAX_MODEM + bool "maximum modem" +endchoice + endmenu # ESP32C3_WIRELESS menu "SPI Flash configuration" @@ -716,4 +744,20 @@ config ESP32C3_DMA_M2M_TEST_BUFSIZE endmenu # GDMA Configuration +config ESP32C3_AUTO_SLEEP + bool "Auto-sleep" + default n + select PM + select ESP32C3_RT_TIMER + select ESP32C3_TIMER0 + select ESP32C3_TICKLESS + ---help--- + Enable ESP32-C3 Auto-sleep + +config ESP32C3_TICKLESS + bool "Enable ESP32-C3 tickless OS" + default n + select ARCH_HAVE_TICKLESS + select SCHED_TICKLESS + endif # ARCH_CHIP_ESP32C3 diff --git a/arch/risc-v/src/esp32c3/Make.defs b/arch/risc-v/src/esp32c3/Make.defs index df130979e0f..bef9045d35e 100644 --- a/arch/risc-v/src/esp32c3/Make.defs +++ b/arch/risc-v/src/esp32c3/Make.defs @@ -46,11 +46,17 @@ endif # Specify our C code within this directory to be included CHIP_CSRCS = esp32c3_allocateheap.c esp32c3_start.c esp32c3_idle.c -CHIP_CSRCS += esp32c3_irq.c esp32c3_timerisr.c +CHIP_CSRCS += esp32c3_irq.c CHIP_CSRCS += esp32c3_clockconfig.c esp32c3_gpio.c CHIP_CSRCS += esp32c3_lowputc.c CHIP_CSRCS += esp32c3_systemreset.c esp32c3_resetcause.c +ifeq ($(CONFIG_SCHED_TICKLESS),y) +CHIP_CSRCS += esp32c3_tickless.c +else +CHIP_CSRCS += esp32c3_timerisr.c +endif + ifeq ($(CONFIG_ESP32C3_UART),y) CHIP_CSRCS += esp32c3_serial.c endif diff --git a/arch/risc-v/src/esp32c3/esp32c3_idle.c b/arch/risc-v/src/esp32c3/esp32c3_idle.c index 2807612f0a7..85f52b18b62 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_idle.c +++ b/arch/risc-v/src/esp32c3/esp32c3_idle.c @@ -22,6 +22,7 @@ * Included Files ****************************************************************************/ +#include #include #include #include @@ -30,6 +31,14 @@ #include "esp32c3.h" #include "esp32c3_pm.h" +#ifdef CONFIG_ESP32C3_RT_TIMER +#include "esp32c3_rt_timer.h" +#endif + +#ifdef CONFIG_SCHED_TICKLESS +#include "esp32c3_tickless.h" +#endif + /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ @@ -58,6 +67,14 @@ #endif #define PM_IDLE_DOMAIN 0 /* Revisit */ + +#ifndef MIN +# define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif + +#define EXPECTED_IDLE_TIME_US (800) +#define EARLY_WAKEUP_US (200) + #endif /**************************************************************************** @@ -75,9 +92,57 @@ #ifdef CONFIG_PM static void up_idlepm(void) { + irqstate_t flags; + +#ifdef CONFIG_ESP32C3_AUTO_SLEEP + flags = spin_lock_irqsave(NULL); + if (esp32c3_pm_lockstatus() == 0 && + (esp32c3_should_skip_light_sleep() == false)) + { + uint64_t os_start_us; + uint64_t os_end_us; + uint64_t os_step_us; + uint64_t hw_start_us; + uint64_t hw_end_us; + uint64_t hw_step_us; + uint64_t rtc_diff_us; + struct timespec ts; + uint64_t os_idle_us = up_get_idletime(); + uint64_t hw_idle_us = rt_timer_get_alarm(); + uint64_t sleep_us = MIN(os_idle_us, hw_idle_us); + if (sleep_us > EXPECTED_IDLE_TIME_US) + { + esp32c3_sleep_enable_rtc_timer_wakeup(sleep_us - EARLY_WAKEUP_US); + up_timer_gettime(&ts); + os_start_us = (ts.tv_sec * USEC_PER_SEC + + ts.tv_nsec / NSEC_PER_USEC); + hw_start_us = rt_timer_time_us(); + + esp32c3_light_sleep_start(&rtc_diff_us); + + hw_end_us = rt_timer_time_us(); + up_timer_gettime(&ts); + os_end_us = (ts.tv_sec * USEC_PER_SEC + + ts.tv_nsec / NSEC_PER_USEC); + hw_step_us = rtc_diff_us - (hw_end_us - hw_start_us); + os_step_us = rtc_diff_us - (os_end_us - os_start_us); + DEBUGASSERT(hw_step_us > 0); + DEBUGASSERT(os_step_us > 0); + + /* Adjust current RT timer by a certain value. */ + + rt_timer_calibration(hw_step_us); + + /* Adjust system time by a certain value. */ + + up_step_idletime((uint32_t)os_step_us); + } + } + + spin_unlock_irqrestore(NULL, flags); +#else /* CONFIG_ESP32C3_AUTO_SLEEP */ static enum pm_state_e oldstate = PM_NORMAL; enum pm_state_e newstate; - irqstate_t flags; int ret; /* Decide, which power saving level can be obtained */ @@ -159,6 +224,7 @@ static void up_idlepm(void) pm_changestate(PM_IDLE_DOMAIN, PM_NORMAL); #endif } +#endif } #else # define up_idlepm() diff --git a/arch/risc-v/src/esp32c3/esp32c3_pm.c b/arch/risc-v/src/esp32c3/esp32c3_pm.c index e1957d7b6f8..bc8377849b5 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_pm.c +++ b/arch/risc-v/src/esp32c3/esp32c3_pm.c @@ -25,6 +25,7 @@ #include #include #include +#include #ifdef CONFIG_PM @@ -43,12 +44,21 @@ #include "hardware/esp32c3_soc.h" #include "hardware/esp32c3_uart.h" #include "hardware/esp32c3_gpio.h" +#include "hardware/apb_ctrl_reg.h" #include "esp32c3_attr.h" #include "esp32c3_rtc.h" #include "esp32c3_clockconfig.h" #include "esp32c3_pm.h" +#ifdef CONFIG_ESP32C3_RT_TIMER +#include "esp32c3_rt_timer.h" +#endif + +#ifdef CONFIG_SCHED_TICKLESS +#include "esp32c3_tickless.h" +#endif + /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ @@ -99,6 +109,9 @@ #define RTC_USB_TRIG_EN BIT(14) #define RTC_BROWNOUT_DET_TRIG_EN BIT(16) +#define PERIPH_INFORM_OUT_SLEEP_OVERHEAD_NO (1) +#define PERIPH_SKIP_SLEEP_NO (1) + /**************************************************************************** * Private Types ****************************************************************************/ @@ -207,28 +220,31 @@ struct esp32c3_rtc_vddsdio_config_s * Private Function Prototypes ****************************************************************************/ -static inline uint32_t esp32c3_periph_ll_get_rst_en_mask +static inline uint32_t IRAM_ATTR esp32c3_periph_ll_get_rst_en_mask (enum esp32c3_periph_module_e periph, bool enable); static uint32_t IRAM_ATTR esp32c3_periph_ll_get_rst_en_reg( enum esp32c3_periph_module_e periph); static uint32_t IRAM_ATTR esp32c3_periph_ll_get_clk_en_reg( enum esp32c3_periph_module_e periph); -static inline uint32_t esp32c3_periph_ll_get_clk_en_mask( +static inline uint32_t IRAM_ATTR esp32c3_periph_ll_get_clk_en_mask( enum esp32c3_periph_module_e periph); static inline bool IRAM_ATTR esp32c3_periph_ll_periph_enabled( enum esp32c3_periph_module_e periph); -static inline void esp32c3_uart_tx_wait_idle(uint8_t uart_no); +static inline void IRAM_ATTR esp32c3_uart_tx_wait_idle(uint8_t uart_no); static void IRAM_ATTR esp32c3_flush_uarts(void); static void IRAM_ATTR esp32c3_suspend_uarts(void); static void IRAM_ATTR esp32c3_resume_uarts(void); -static void esp32c3_timer_wakeup_prepare(void); -static uint32_t esp32c3_get_power_down_flags(void); +static void IRAM_ATTR esp32c3_timer_wakeup_prepare(void); +static uint32_t IRAM_ATTR esp32c3_get_power_down_flags(void); static void IRAM_ATTR esp32c3_set_vddsdio_config( struct esp32c3_rtc_vddsdio_config_s config); static int IRAM_ATTR esp32c3_get_vddsdio_config( struct esp32c3_rtc_vddsdio_config_s *config); static int IRAM_ATTR esp32c3_light_sleep_inner(uint32_t pd_flags, uint32_t time_us, struct esp32c3_rtc_vddsdio_config_s config); +static void esp32c3_periph_module_enable( + enum esp32c3_periph_module_e periph); +static void IRAM_ATTR esp32c3_perip_clk_init(void); static int IRAM_ATTR esp32c3_sleep_start(uint32_t pd_flags); /**************************************************************************** @@ -247,6 +263,22 @@ static struct esp32c3_sleep_config_s s_config = .wakeup_triggers = 0 }; +static _Atomic uint32_t pm_wakelock = 0; + +/* Inform peripherals of light sleep wakeup overhead time */ + +inform_out_sleep_overhead_cb_t + g_periph_inform_out_sleep_overhead_cb[PERIPH_INFORM_OUT_SLEEP_OVERHEAD_NO]; + +/* Indicates if light sleep shoule be skipped by peripherals. */ + +skip_light_sleep_cb_t g_periph_skip_sleep_cb[PERIPH_SKIP_SLEEP_NO]; + +static uint8_t ref_counts[PERIPH_MODULE_MAX] = +{ + 0 +}; + /**************************************************************************** * Private Functions ****************************************************************************/ @@ -276,7 +308,7 @@ extern void esp_rom_delay_us(uint32_t us); * ****************************************************************************/ -static inline uint32_t esp32c3_periph_ll_get_rst_en_mask +static inline uint32_t IRAM_ATTR esp32c3_periph_ll_get_rst_en_mask (enum esp32c3_periph_module_e periph, bool enable) { switch (periph) @@ -480,7 +512,7 @@ static uint32_t IRAM_ATTR esp32c3_periph_ll_get_clk_en_reg( * ****************************************************************************/ -static inline uint32_t esp32c3_periph_ll_get_clk_en_mask( +static inline uint32_t IRAM_ATTR esp32c3_periph_ll_get_clk_en_mask( enum esp32c3_periph_module_e periph) { switch (periph) @@ -725,7 +757,7 @@ static void IRAM_ATTR esp32c3_resume_uarts(void) * ****************************************************************************/ -static uint32_t esp32c3_get_power_down_flags(void) +static uint32_t IRAM_ATTR esp32c3_get_power_down_flags(void) { uint32_t pd_flags = 0; @@ -1018,15 +1050,328 @@ static int IRAM_ATTR esp32c3_light_sleep_inner(uint32_t pd_flags, return err; } +/**************************************************************************** + * Name: esp32c3_periph_module_enable + * + * Description: + * Enable peripheral module + * + * Input Parameters: + * periph - Periph module (one of enum esp32c3_periph_module_e values) + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void esp32c3_periph_module_enable(enum esp32c3_periph_module_e periph) +{ + irqstate_t flags = enter_critical_section(); + + assert(periph < PERIPH_MODULE_MAX); + if (ref_counts[periph] == 0) + { + modifyreg32(esp32c3_periph_ll_get_clk_en_reg(periph), 0, + esp32c3_periph_ll_get_clk_en_mask(periph)); + modifyreg32(esp32c3_periph_ll_get_rst_en_reg(periph), + esp32c3_periph_ll_get_rst_en_mask(periph, true), 0); + } + + ref_counts[periph]++; + + leave_critical_section(flags); +} + +/**************************************************************************** + * Name: esp32c3_perip_clk_init + * + * Description: + * This function disables clock of useless peripherals when cpu starts. + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void IRAM_ATTR esp32c3_perip_clk_init(void) +{ + uint32_t common_perip_clk1 = 0; + + /* Reset the communication peripherals like I2C, SPI, + * UART, I2S and bring them to known state. + */ + + uint32_t common_perip_clk = SYSTEM_WDG_CLK_EN | + SYSTEM_I2S0_CLK_EN | + SYSTEM_UART1_CLK_EN | + SYSTEM_UART2_CLK_EN | + SYSTEM_SPI2_CLK_EN | + SYSTEM_I2C_EXT0_CLK_EN | + SYSTEM_UHCI0_CLK_EN | + SYSTEM_RMT_CLK_EN | + SYSTEM_LEDC_CLK_EN | + SYSTEM_UHCI1_CLK_EN | + SYSTEM_TIMERGROUP1_CLK_EN | + SYSTEM_SPI3_CLK_EN | + SYSTEM_SPI4_CLK_EN | + SYSTEM_I2C_EXT1_CLK_EN | + SYSTEM_TWAI_CLK_EN | + SYSTEM_I2S1_CLK_EN | + SYSTEM_SPI2_DMA_CLK_EN | + SYSTEM_SPI3_DMA_CLK_EN; + + uint32_t hwcrypto_perip_clk = SYSTEM_CRYPTO_AES_CLK_EN | + SYSTEM_CRYPTO_SHA_CLK_EN | + SYSTEM_CRYPTO_RSA_CLK_EN; + uint32_t wifi_bt_sdio_clk = SYSTEM_WIFI_CLK_WIFI_EN | + SYSTEM_WIFI_CLK_BT_EN_M | + SYSTEM_WIFI_CLK_UNUSED_BIT5 | + SYSTEM_WIFI_CLK_UNUSED_BIT12; + + /* Disable some peripheral clocks. */ + + modifyreg32(SYSTEM_PERIP_CLK_EN0_REG, common_perip_clk, 0); + modifyreg32(SYSTEM_PERIP_RST_EN0_REG, 0, common_perip_clk); + + modifyreg32(SYSTEM_PERIP_CLK_EN1_REG, common_perip_clk1, 0); + modifyreg32(SYSTEM_PERIP_RST_EN1_REG, 0, common_perip_clk1); + + /* Disable hardware crypto clocks. */ + + modifyreg32(SYSTEM_PERIP_CLK_EN1_REG, hwcrypto_perip_clk, 0); + modifyreg32(SYSTEM_PERIP_RST_EN1_REG, 0, hwcrypto_perip_clk); + + /* Disable WiFi/BT/SDIO clocks. */ + + modifyreg32(SYSTEM_WIFI_CLK_EN_REG, wifi_bt_sdio_clk, 0); + modifyreg32(SYSTEM_WIFI_CLK_EN_REG, 0, SYSTEM_WIFI_CLK_EN); + + /* Set WiFi light sleep clock source to RTC slow clock */ + + REG_SET_FIELD(SYSTEM_BT_LPCK_DIV_INT_REG, SYSTEM_BT_LPCK_DIV_NUM, 0); + modifyreg32(SYSTEM_BT_LPCK_DIV_FRAC_REG, SYSTEM_LPCLK_SEL_8M, + SYSTEM_LPCLK_SEL_RTC_SLOW); + + /* Enable RNG clock. */ + + esp32c3_periph_module_enable(PERIPH_RNG_MODULE); +} + +/**************************************************************************** + * Name: esp32c3_periph_should_skip_sleep + * + * Description: + * Indicates if light sleep shoule be skipped by peripherals + * + * Input Parameters: + * None + * + * Returned Value: + * True is returned on success. Otherwise false. + * + ****************************************************************************/ + +static inline bool IRAM_ATTR esp32c3_periph_should_skip_sleep(void) +{ + for (int i = 0; i < PERIPH_SKIP_SLEEP_NO; i++) + { + if (g_periph_skip_sleep_cb[i]) + { + if (g_periph_skip_sleep_cb[i]() == true) + { + return true; + } + } + } + + return false; +} + /**************************************************************************** * Public Functions ****************************************************************************/ /**************************************************************************** - * Name: esp32c3_sleep_enable_timer_wakeup + * Name: esp32c3_pm_register_skip_sleep_callback * * Description: - * Configure wake-up interval + * Unregister callback function of skipping light sleep. + * + * Input Parameters: + * None + * + * Returned Value: + * Zero (OK) is returned on success. Otherwise -1 (ERROR). + * + ****************************************************************************/ + +int esp32c3_pm_register_skip_sleep_callback(skip_light_sleep_cb_t cb) +{ + for (int i = 0; i < PERIPH_SKIP_SLEEP_NO; i++) + { + if (g_periph_skip_sleep_cb[i] == cb) + { + return OK; + } + else if (g_periph_skip_sleep_cb[i] == NULL) + { + g_periph_skip_sleep_cb[i] = cb; + return OK; + } + } + + return ERROR; +} + +/**************************************************************************** + * Name: esp32c3_pm_unregister_skip_sleep_callback + * + * Description: + * Register callback function of skipping light sleep. + * + * Input Parameters: + * None + * + * Returned Value: + * Zero (OK) is returned on success. Otherwise -1 (ERROR). + * + ****************************************************************************/ + +int esp32c3_pm_unregister_skip_sleep_callback(skip_light_sleep_cb_t cb) +{ + for (int i = 0; i < PERIPH_SKIP_SLEEP_NO; i++) + { + if (g_periph_skip_sleep_cb[i] == cb) + { + g_periph_skip_sleep_cb[i] = NULL; + return OK; + } + } + + return ERROR; +} + +/**************************************************************************** + * Name: esp32c3_should_skip_light_sleep + * + * Description: + * Indicates if light sleep shoule be skipped. + * + * Input Parameters: + * None + * + * Returned Value: + * True is returned on success. Otherwise false. + * + ****************************************************************************/ + +bool IRAM_ATTR esp32c3_should_skip_light_sleep(void) +{ + if (esp32c3_periph_should_skip_sleep() == true) + { + return true; + } + + return false; +} + +/**************************************************************************** + * Name: esp32c3_pm_register_inform_out_sleep_overhead_callback + * + * Description: + * Register informing peripherals of light sleep wakeup overhead time + * callback function. + * + * Input Parameters: + * cb - callback function + * + * Returned Value: + * Zero (OK) is returned on success. Otherwise -1 (ERROR). + * + ****************************************************************************/ + +int esp32c3_pm_register_inform_out_sleep_overhead_callback( + inform_out_sleep_overhead_cb_t cb) +{ + for (int i = 0; i < PERIPH_INFORM_OUT_SLEEP_OVERHEAD_NO; i++) + { + if (g_periph_inform_out_sleep_overhead_cb[i] == cb) + { + return ERROR; + } + else if (g_periph_inform_out_sleep_overhead_cb[i] == NULL) + { + g_periph_inform_out_sleep_overhead_cb[i] = cb; + return OK; + } + } + + return ERROR; +} + +/**************************************************************************** + * Name: esp32c3_pm_unregister_inform_out_sleep_overhead_callback + * + * Description: + * Unregister informing peripherals of light sleep wakeup overhead time + * callback function. + * + * Input Parameters: + * cb - callback function + * + * Returned Value: + * None + * + ****************************************************************************/ + +int esp32c3_pm_unregister_inform_out_sleep_overhead_callback( + inform_out_sleep_overhead_cb_t cb) +{ + for (int i = 0; i < PERIPH_INFORM_OUT_SLEEP_OVERHEAD_NO; i++) + { + if (g_periph_inform_out_sleep_overhead_cb[i] == cb) + { + g_periph_inform_out_sleep_overhead_cb[i] = NULL; + return OK; + } + } + + return ERROR; +} + +/**************************************************************************** + * Name: esp32c3_periph_inform_out_sleep_overhead + * + * Description: + * Inform peripherals of light sleep wakeup overhead time + * + * Input Parameters: + * us - light sleep wakeup overhead time + * + * Returned Value: + * None + * + ****************************************************************************/ + +void IRAM_ATTR esp32c3_periph_inform_out_sleep_overhead(uint32_t us) +{ + for (int i = 0; i < PERIPH_INFORM_OUT_SLEEP_OVERHEAD_NO; i++) + { + if (g_periph_inform_out_sleep_overhead_cb[i]) + { + g_periph_inform_out_sleep_overhead_cb[i](us); + } + } +} + +/**************************************************************************** + * Name: esp32c3_sleep_enable_rtc_timer_wakeup + * + * Description: + * Configure RTC TIMER wake-up interval * * Input Parameters: * time_in_us - Configure wake-up time interval @@ -1036,12 +1381,31 @@ static int IRAM_ATTR esp32c3_light_sleep_inner(uint32_t pd_flags, * ****************************************************************************/ -void esp32c3_sleep_enable_timer_wakeup(uint64_t time_in_us) +void IRAM_ATTR esp32c3_sleep_enable_rtc_timer_wakeup(uint64_t time_in_us) { s_config.wakeup_triggers |= RTC_TIMER_TRIG_EN; s_config.sleep_duration = time_in_us; } +/**************************************************************************** + * Name: esp32c3_sleep_enable_wifi_wakeup + * + * Description: + * Configure Wi-Fi wake-up source + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +void esp32c3_sleep_enable_wifi_wakeup(void) +{ + s_config.wakeup_triggers |= RTC_WIFI_TRIG_EN; +} + /**************************************************************************** * Name: esp32c3_light_sleep_start * @@ -1049,14 +1413,14 @@ void esp32c3_sleep_enable_timer_wakeup(uint64_t time_in_us) * Enter light sleep mode * * Input Parameters: - * None + * sleep_time - Actual sleep time * * Returned Value: * 0 is returned on success or a negated errno value is returned * ****************************************************************************/ -int esp32c3_light_sleep_start(void) +int IRAM_ATTR esp32c3_light_sleep_start(uint64_t *sleep_time) { int ret = OK; irqstate_t flags; @@ -1141,12 +1505,22 @@ int esp32c3_light_sleep_start(void) } } + esp32c3_periph_inform_out_sleep_overhead( + s_config.sleep_time_adjustment - sleep_time_overhead_in); + esp32c3_get_vddsdio_config(&vddsdio_config); /* Enter sleep, then wait for flash to be ready on wakeup */ ret = esp32c3_light_sleep_inner(pd_flags, flash_enable_time_us, vddsdio_config); + + if (sleep_time != NULL) + { + *sleep_time = esp32c3_rtc_time_slowclk_to_us(esp32c3_rtc_time_get() - + s_config.rtc_ticks_at_sleep_start, s_config.rtc_clk_cal_period); + } + s_config.sleep_time_overhead_out = (esp32c3_cpu_cycle_count() - s_config.ccount_ticks_record) / (esp32c3_clk_cpu_freq() / 1000000ULL); @@ -1175,6 +1549,7 @@ void esp32c3_pminit(void) esp32c3_rtc_init(); esp32c3_rtc_clk_set(); + esp32c3_perip_clk_init(); } /**************************************************************************** @@ -1193,11 +1568,41 @@ void esp32c3_pminit(void) void esp32c3_pmstandby(uint64_t time_in_us) { + uint64_t rtc_diff_us; +#ifdef CONFIG_ESP32C3_RT_TIMER + uint64_t hw_start_us; + uint64_t hw_end_us; + uint64_t hw_diff_us; +#endif + /* don't power down XTAL — powering it up takes different time on. */ fflush(stdout); - esp32c3_sleep_enable_timer_wakeup(time_in_us); - esp32c3_light_sleep_start(); + esp32c3_sleep_enable_rtc_timer_wakeup(time_in_us); +#ifdef CONFIG_ESP32C3_RT_TIMER + /* Get rt-timer timestamp before entering sleep */ + + hw_start_us = rt_timer_time_us(); +#endif + + esp32c3_light_sleep_start(&rtc_diff_us); + +#ifdef CONFIG_ESP32C3_RT_TIMER + /* Get rt-timer timestamp after waking up from sleep */ + + hw_end_us = rt_timer_time_us(); + hw_diff_us = hw_end_us - hw_start_us; + DEBUGASSERT(rtc_diff_us > hw_diff_us); + + rt_timer_calibration(rtc_diff_us - hw_diff_us); +#endif + +#ifdef CONFIG_SCHED_TICKLESS + up_step_idletime((uint32_t)time_in_us); +#endif + + pwrinfo("Returned from auto-sleep, slept for %" PRIu32 " ms\n", + (uint32_t)(rtc_diff_us) / 1000); } /**************************************************************************** @@ -1259,8 +1664,47 @@ void IRAM_ATTR esp32c3_deep_sleep_start(void) void esp32c3_pmsleep(uint64_t time_in_us) { fflush(stdout); - esp32c3_sleep_enable_timer_wakeup(time_in_us); + esp32c3_sleep_enable_rtc_timer_wakeup(time_in_us); esp32c3_deep_sleep_start(); } +/**************************************************************************** + * Name: esp32c3_pm_lockacquire + * + * Description: + * Take a power management lock + * + ****************************************************************************/ + +void IRAM_ATTR esp32c3_pm_lockacquire(void) +{ + ++pm_wakelock; +} + +/**************************************************************************** + * Name: esp32c3_pm_lockrelease + * + * Description: + * Release the lock taken using esp32c3_pm_lockacquire. + * + ****************************************************************************/ + +void IRAM_ATTR esp32c3_pm_lockrelease(void) +{ + --pm_wakelock; +} + +/**************************************************************************** + * Name: esp32c3_pm_lockstatus + * + * Description: + * Return power management lock status. + * + ****************************************************************************/ + +uint32_t IRAM_ATTR esp32c3_pm_lockstatus(void) +{ + return pm_wakelock; +} + #endif /* CONFIG_PM */ \ No newline at end of file diff --git a/arch/risc-v/src/esp32c3/esp32c3_pm.h b/arch/risc-v/src/esp32c3/esp32c3_pm.h index 7081b0496d9..6644a7f42f1 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_pm.h +++ b/arch/risc-v/src/esp32c3/esp32c3_pm.h @@ -30,6 +30,7 @@ ****************************************************************************/ #include +#include #ifndef __ASSEMBLY__ @@ -44,12 +45,26 @@ extern "C" #ifdef CONFIG_PM +/**************************************************************************** + * Public Types + ****************************************************************************/ + +/* Callback function type for peripherals to + * know light sleep wakeup overhead. + */ + +typedef void (*inform_out_sleep_overhead_cb_t)(uint32_t); + +/* Callback function type for peripherals to skip light sleep. */ + +typedef bool (*skip_light_sleep_cb_t)(void); + /**************************************************************************** * Public Function Prototypes ****************************************************************************/ /**************************************************************************** - * Name: esp32c3_sleep_enable_timer_wakeup + * Name: esp32c3_sleep_enable_rtc_timer_wakeup * * Description: * Configure wake-up interval @@ -62,23 +77,23 @@ extern "C" * ****************************************************************************/ -void esp32c3_sleep_enable_timer_wakeup(uint64_t time_in_us); +void esp32c3_sleep_enable_rtc_timer_wakeup(uint64_t time_in_us); /**************************************************************************** * Name: esp32c3_light_sleep_start * * Description: - * Enter sleep mode + * Enter light sleep mode * * Input Parameters: - * None + * sleep_time - Actual sleep time * * Returned Value: * 0 is returned on success or a negated errno value is returned * ****************************************************************************/ -int esp32c3_light_sleep_start(void); +int esp32c3_light_sleep_start(uint64_t *sleep_time); /**************************************************************************** * Name: esp32c3_pminit @@ -144,6 +159,136 @@ void esp32c3_deep_sleep_start(void); void esp32c3_pmsleep(uint64_t time_in_us); +/**************************************************************************** + * Name: esp32c3_pm_lockacquire + * + * Description: + * Take a power management lock + * + ****************************************************************************/ + +void esp32c3_pm_lockacquire(void); + +/**************************************************************************** + * Name: esp32c3_pm_lockrelease + * + * Description: + * Release the lock taken using esp32c3_pm_lockacquire. + * + ****************************************************************************/ + +void esp32c3_pm_lockrelease(void); + +/**************************************************************************** + * Name: esp32c3_pm_lockstatus + * + * Description: + * Return power management lock status. + * + ****************************************************************************/ + +uint32_t esp32c3_pm_lockstatus(void); + +/**************************************************************************** + * Name: esp32c3_sleep_enable_wifi_wakeup + * + * Description: + * Configure Wi-Fi wake-up source + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +void esp32c3_sleep_enable_wifi_wakeup(void); + +/**************************************************************************** + * Name: esp32c3_should_skip_light_sleep + * + * Description: + * Indicates if light sleep shoule be skipped. + * + * Input Parameters: + * None + * + * Returned Value: + * True is returned on success. Otherwise false. + * + ****************************************************************************/ + +bool esp32c3_should_skip_light_sleep(void); + +/**************************************************************************** + * Name: esp32c3_pm_register_inform_out_sleep_overhead_callback + * + * Description: + * Register informing peripherals of light sleep wakeup overhead time + * callback function. + * + * Input Parameters: + * cb - callback function + * + * Returned Value: + * Zero (OK) is returned on success. Otherwise -1 (ERROR). + * + ****************************************************************************/ + +int esp32c3_pm_register_inform_out_sleep_overhead_callback( + inform_out_sleep_overhead_cb_t cb); + +/**************************************************************************** + * Name: esp32c3_pm_unregister_inform_out_sleep_overhead_callback + * + * Description: + * Unregister informing peripherals of light sleep wakeup overhead time + * callback function. + * + * Input Parameters: + * cb - callback function + * + * Returned Value: + * None + * + ****************************************************************************/ + +int esp32c3_pm_unregister_inform_out_sleep_overhead_callback( + inform_out_sleep_overhead_cb_t cb); + +/**************************************************************************** + * Name: esp32c3_pm_register_skip_sleep_callback + * + * Description: + * Unregister callback function of skipping light sleep. + * + * Input Parameters: + * None + * + * Returned Value: + * Zero (OK) is returned on success. Otherwise -1 (ERROR). + * + ****************************************************************************/ + +int esp32c3_pm_register_skip_sleep_callback(skip_light_sleep_cb_t cb); + +/**************************************************************************** + * Name: esp32c3_pm_unregister_skip_sleep_callback + * + * Description: + * Register callback function of skipping light sleep. + * + * Input Parameters: + * None + * + * Returned Value: + * Zero (OK) is returned on success. Otherwise -1 (ERROR). + * + ****************************************************************************/ + +int esp32c3_pm_unregister_skip_sleep_callback(skip_light_sleep_cb_t cb); + #endif /* CONFIG_PM */ #ifdef __cplusplus diff --git a/arch/risc-v/src/esp32c3/esp32c3_rt_timer.c b/arch/risc-v/src/esp32c3/esp32c3_rt_timer.c index 2d624b9304c..56428c0fafb 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_rt_timer.c +++ b/arch/risc-v/src/esp32c3/esp32c3_rt_timer.c @@ -41,6 +41,7 @@ #include "hardware/esp32c3_soc.h" #include "esp32c3_tim.h" #include "esp32c3_rt_timer.h" +#include "esp32c3_attr.h" /**************************************************************************** * Pre-processor Definitions @@ -590,7 +591,7 @@ void rt_timer_delete(FAR struct rt_timer_s *timer) * ****************************************************************************/ -uint64_t rt_timer_time_us(void) +uint64_t IRAM_ATTR rt_timer_time_us(void) { uint64_t counter; struct esp32c3_tim_dev_s *tim = s_esp32c3_tim_dev; @@ -600,6 +601,74 @@ uint64_t rt_timer_time_us(void) return counter; } +/**************************************************************************** + * Name: rt_timer_get_alarm + * + * Description: + * Get the timestamp when the next timeout is expected to occur. + * + * Input Parameters: + * None + * + * Returned Value: + * Timestamp of the nearest timer event, in microseconds. + * + ****************************************************************************/ + +uint64_t IRAM_ATTR rt_timer_get_alarm(void) +{ + irqstate_t flags; + uint64_t counter; + struct esp32c3_tim_dev_s *tim = s_esp32c3_tim_dev; + uint64_t alarm_value = 0; + + flags = enter_critical_section(); + + ESP32C3_TIM_GETCTR(tim, &counter); + ESP32C3_TIM_GETALRVL(tim, &alarm_value); + + if (alarm_value <= counter) + { + alarm_value = 0; + } + else + { + alarm_value -= counter; + } + + leave_critical_section(flags); + + return alarm_value; +} + +/**************************************************************************** + * Name: rt_timer_calibration + * + * Description: + * Adjust current RT timer by a certain value. + * + * Input Parameters: + * time_us - adjustment to apply to RT timer, in microseconds + * + * Returned Value: + * None. + * + ****************************************************************************/ + +void IRAM_ATTR rt_timer_calibration(uint64_t time_us) +{ + uint64_t counter; + struct esp32c3_tim_dev_s *tim = s_esp32c3_tim_dev; + irqstate_t flags; + + flags = enter_critical_section(); + ESP32C3_TIM_GETCTR(tim, &counter); + counter += time_us; + ESP32C3_TIM_SETCTR(tim, counter); + ESP32C3_TIM_RLD_NOW(tim); + leave_critical_section(flags); +} + /**************************************************************************** * Name: esp32c3_rt_timer_init * diff --git a/arch/risc-v/src/esp32c3/esp32c3_rt_timer.h b/arch/risc-v/src/esp32c3/esp32c3_rt_timer.h index 3957483b9de..aab51e39cac 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_rt_timer.h +++ b/arch/risc-v/src/esp32c3/esp32c3_rt_timer.h @@ -166,6 +166,38 @@ void rt_timer_delete(struct rt_timer_s *timer); uint64_t rt_timer_time_us(void); +/**************************************************************************** + * Name: rt_timer_get_alarm + * + * Description: + * Get the timestamp when the next timeout is expected to occur. + * + * Input Parameters: + * None + * + * Returned Value: + * Timestamp of the nearest timer event, in microseconds. + * + ****************************************************************************/ + +uint64_t rt_timer_get_alarm(void); + +/**************************************************************************** + * Name: rt_timer_calibration + * + * Description: + * Adjust current RT timer by a certain value. + * + * Input Parameters: + * time_us - adjustment to apply to RT timer, in microseconds + * + * Returned Value: + * None. + * + ****************************************************************************/ + +void rt_timer_calibration(uint64_t time_us); + /**************************************************************************** * Name: esp32c3_rt_timer_init * diff --git a/arch/risc-v/src/esp32c3/esp32c3_rtc.c b/arch/risc-v/src/esp32c3/esp32c3_rtc.c index f1947a6ac1f..fd9a31ba0d2 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_rtc.c +++ b/arch/risc-v/src/esp32c3/esp32c3_rtc.c @@ -30,6 +30,7 @@ #include "hardware/esp32c3_rtccntl.h" #include "hardware/esp32c3_soc.h" #include "hardware/esp32c3_system.h" +#include "hardware/esp32c3_syscon.h" #include "hardware/esp32c3_tim.h" #include "hardware/apb_ctrl_reg.h" #include "hardware/bb_reg.h" @@ -1577,6 +1578,43 @@ void IRAM_ATTR esp32c3_rtc_init() } } +/**************************************************************************** + * Name: esp32c3_rtc_get_time_us + * + * Description: + * Get current value of RTC counter in microseconds + * + * Input Parameters: + * None + * + * Returned Value: + * Current value of RTC counter in microseconds + * + ****************************************************************************/ + +uint64_t esp32c3_rtc_get_time_us(void) +{ + const uint32_t cal = getreg32(RTC_SLOW_CLK_CAL_REG); + const uint64_t rtc_this_ticks = esp32c3_rtc_time_get(); + + /* RTC counter result is up to 2^48, calibration factor is up to 2^24, + * for a 32kHz clock. We need to calculate (assuming no overflow): + * (ticks * cal) >> RTC_CLK_CAL_FRACT. An overflow in the (ticks * cal) + * multiplication would cause time to wrap around after approximately + * 13 days, which is probably not enough for some applications. + * Therefore multiplication is split into two terms, for the lower 32-bit + * and the upper 16-bit parts of "ticks", i.e.: + * ((ticks_low + 2^32 * ticks_high) * cal) >> RTC_CLK_CAL_FRACT + */ + + const uint64_t ticks_low = rtc_this_ticks & UINT32_MAX; + const uint64_t ticks_high = rtc_this_ticks >> 32; + const uint64_t delta_time_us = ((ticks_low * cal) >> RTC_CLK_CAL_FRACT) + + ((ticks_high * cal) << (32 - RTC_CLK_CAL_FRACT)); + + return delta_time_us; +} + /**************************************************************************** * Name: esp32c3_rtc_time_get * diff --git a/arch/risc-v/src/esp32c3/esp32c3_rtc.h b/arch/risc-v/src/esp32c3/esp32c3_rtc.h index ab5fdec4f6d..d2b3e5966e6 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_rtc.h +++ b/arch/risc-v/src/esp32c3/esp32c3_rtc.h @@ -428,6 +428,22 @@ void esp32c3_rtc_clk_cpu_freq_get_config( void esp32c3_rtc_sleep_set_wakeup_time(uint64_t t); +/**************************************************************************** + * Name: esp32c3_rtc_get_time_us + * + * Description: + * Get current value of RTC counter in microseconds + * + * Input Parameters: + * None + * + * Returned Value: + * Current value of RTC counter in microseconds + * + ****************************************************************************/ + +uint64_t esp32c3_rtc_get_time_us(void); + #ifdef __cplusplus } #endif diff --git a/arch/risc-v/src/esp32c3/esp32c3_tickless.c b/arch/risc-v/src/esp32c3/esp32c3_tickless.c new file mode 100644 index 00000000000..20a57a4f980 --- /dev/null +++ b/arch/risc-v/src/esp32c3/esp32c3_tickless.c @@ -0,0 +1,607 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/esp32c3_tickless.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Tickless OS Support. + * + * When CONFIG_SCHED_TICKLESS is enabled, all support for timer interrupts + * is suppressed and the platform specific code is expected to provide the + * following custom functions. + * + * void up_timer_initialize(void): Initializes the timer facilities. + * Called early in the initialization sequence (by up_initialize()). + * int up_timer_gettime(FAR struct timespec *ts): Returns the current + * time from the platform specific time source. + * int up_timer_cancel(void): Cancels the interval timer. + * int up_timer_start(FAR const struct timespec *ts): Start (or re-starts) + * the interval timer. + * + * The RTOS will provide the following interfaces for use by the platform- + * specific interval timer implementation: + * + * void sched_timer_expiration(void): Called by the platform-specific + * logic when the interval timer expires. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "esp32c3_attr.h" +#include "chip.h" +#include "esp32c3.h" +#include "esp32c3_irq.h" +#include "hardware/esp32c3_systimer.h" +#include "hardware/esp32c3_system.h" +#include "hardware/esp32c3_soc.h" + +#include "esp32c3_rtc.h" + +#ifdef CONFIG_SCHED_TICKLESS + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#define ESP32C3_SYSTIMER_TICKS_PER_SEC (16 * 1000 * 1000) + +#define CTICK_PER_SEC (ESP32C3_SYSTIMER_TICKS_PER_SEC) +#define CTICK_PER_USEC (CTICK_PER_SEC / USEC_PER_SEC) + +#define SEC_2_CTICK(s) ((s) * CTICK_PER_SEC) +#define USEC_2_CTICK(us) ((us) * CTICK_PER_USEC) +#define NSEC_2_CTICK(nsec) (((nsec) * CTICK_PER_USEC) / NSEC_PER_USEC) + +#define CTICK_2_SEC(tick) ((tick) / CTICK_PER_SEC) +#define CTICK_2_USEC(tick) ((tick) / CTICK_PER_USEC) +#define CTICK_2_NSEC(tick) ((tick) * 1000 / CTICK_PER_USEC) + +#define CPU_TICKS_MAX (UINT32_MAX / 4 * 3) + +/* The structure of the counter value in systimer */ + +struct systimer_counter_value_s +{ + union + { + struct + { + uint64_t lo : SOC_SYSTIMER_BIT_WIDTH_LO; /* Low part of counter value */ + uint64_t hi : SOC_SYSTIMER_BIT_WIDTH_HI; /* High part of counter value */ + }; + uint64_t val; /* counter value */ + }; +}; + +/**************************************************************************** + * Private Function Prototypes + ****************************************************************************/ + +static inline uint64_t up_tmr_getcounter(void); +static inline uint64_t up_tmr_getalarmvalue(void); +static inline void up_tmr_counter_advance(uint64_t tick); +static void IRAM_ATTR up_tmr_setcounter(uint64_t ticks); +static void IRAM_ATTR up_timer_expire(int irq, void *regs, FAR void *arg); + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static bool g_timer_started; /* Whether an interval timer is being started */ + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: up_tmr_getcounter + * + * Description: + * Return the total ticks of system since power-on. + * + * Input Parameters: + * None + * + * Returned Value: + * Total system ticks + * + ****************************************************************************/ + +static inline uint64_t up_tmr_getcounter(void) +{ + uint32_t lo; + uint32_t lo_start; + uint32_t hi; + + /* Set the "update" bit and wait for acknowledgment */ + + REG_SET_BIT(SYS_TIMER_SYSTIMER_UNIT0_OP_REG, 1 << 30); + while (!REG_GET_BIT(SYS_TIMER_SYSTIMER_UNIT0_OP_REG, 1 << 29)); + + /* Read LO, HI, then LO again, check that LO returns the same value. + * This accounts for the case when an interrupt may happen between reading + * HI and LO values, and this function may get called from the ISR. + * In this case, the repeated read will return consistent values. + */ + + lo_start = getreg32(SYS_TIMER_SYSTIMER_UNIT0_VALUE_HI_REG); + do + { + lo = lo_start; + hi = getreg32(SYS_TIMER_SYSTIMER_UNIT0_VALUE_HI_REG); + lo_start = getreg32(SYS_TIMER_SYSTIMER_UNIT0_VALUE_LO_REG); + } + while (lo_start != lo); + + struct systimer_counter_value_s result = + { + .lo = lo, + .hi = hi + }; + + return result.val; +} + +/**************************************************************************** + * Name: up_tmr_getalarmvalue + * + * Description: + * Return the remaining ticks in the currently running timer. + * + * Input Parameters: + * None + * + * Returned Value: + * Remaining ticks + * + ****************************************************************************/ + +static inline uint64_t up_tmr_getalarmvalue(void) +{ + return ((uint64_t) getreg32(SYS_TIMER_SYSTIMER_TARGET0_HI_REG) << 32) \ + | getreg32(SYS_TIMER_SYSTIMER_TARGET0_LO_REG); +} + +/**************************************************************************** + * Name: up_tmr_counter_advance + * + * Description: + * Adjust current system tick by a certain value + * + * Input Parameters: + * ticks - Adjustment to apply to system time, in microseconds + * + * Returned Value: + * None + * + ****************************************************************************/ + +static inline void up_tmr_counter_advance(uint64_t tick) +{ + /* set_counter_value */ + + putreg32(tick & 0xffffffff, SYS_TIMER_SYSTIMER_UNIT0_LOAD_LO_REG); + putreg32((tick >> 32) & 0xfffff, SYS_TIMER_SYSTIMER_UNIT0_LOAD_HI_REG); + + /* apply_counter_value */ + + REG_SET_BIT(SYS_TIMER_SYSTIMER_UNIT0_LOAD_REG, SYS_TIMER_TIMER_UNIT0_LOAD); +} + +/**************************************************************************** + * Name: up_tmr_setcounter + * + * Description: + * Set the new value of the compare register + * + * Input Parameters: + * ticks - ticks for a timer operation + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void IRAM_ATTR up_tmr_setcounter(uint64_t ticks) +{ + uint64_t alarm_ticks = up_tmr_getcounter() + ticks; + + /* select_alarm_mode */ + + REG_CLR_BIT(SYS_TIMER_SYSTIMER_TARGET0_CONF_REG, + SYS_TIMER_TARGET0_PERIOD_MODE); + + /* set alarm value */ + + putreg32(alarm_ticks & 0xffffffff, SYS_TIMER_SYSTIMER_TARGET0_LO_REG); + putreg32((alarm_ticks >> 32) & 0xfffff, SYS_TIMER_SYSTIMER_TARGET0_HI_REG); + + /* apply alarm vaule */ + + REG_SET_BIT(SYS_TIMER_SYSTIMER_COMP0_LOAD_REG, SYS_TIMER_TIMER_COMP0_LOAD); + + /* Enable alarm */ + + REG_SET_BIT(SYS_TIMER_SYSTIMER_CONF_REG, SYS_TIMER_TARGET0_WORK_EN); + + /* Enable interrupt */ + + REG_SET_BIT(SYS_TIMER_SYSTIMER_INT_CLR_REG, SYS_TIMER_TARGET0_INT_CLR); + REG_SET_BIT(SYS_TIMER_SYSTIMER_INT_ENA_REG, SYS_TIMER_TARGET0_INT_ENA); +} + +/**************************************************************************** + * Name: up_timer_expire + * + * Description: + * Called as the IRQ handler for timer expiration. + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + ****************************************************************************/ + +static void IRAM_ATTR up_timer_expire(int irq, void *regs, FAR void *arg) +{ + g_timer_started = false; + setbits(SYS_TIMER_TARGET0_INT_CLR, SYS_TIMER_SYSTIMER_INT_CLR_REG); + nxsched_timer_expiration(); +} + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: up_timer_gettime + * + * Description: + * Return the elapsed time since power-up (or, more correctly, since + * up_timer_initialize() was called). This function is functionally + * equivalent to: + * + * int clock_gettime(clockid_t clockid, FAR struct timespec *ts); + * + * when clockid is CLOCK_MONOTONIC. + * + * This function provides the basis for reporting the current time and + * also is used to eliminate error build-up from small errors in interval + * time calculations. + * + * Provided by platform-specific code and called from the RTOS base code. + * + * Input Parameters: + * ts - Provides the location in which to return the up-time. + * + * Returned Value: + * Zero (OK) is returned on success; a negated errno value is returned on + * any failure. + * + * Assumptions: + * Called from the normal tasking context. The implementation must + * provide whatever mutual exclusion is necessary for correct operation. + * This can include disabling interrupts in order to assure atomic register + * operations. + * + ****************************************************************************/ + +int IRAM_ATTR up_timer_gettime(FAR struct timespec *ts) +{ + uint64_t ticks; + irqstate_t flags; + + flags = enter_critical_section(); + + ticks = up_tmr_getcounter(); + ts->tv_sec = CTICK_2_SEC(ticks); + ts->tv_nsec = CTICK_2_NSEC(ticks % CTICK_PER_SEC); + + leave_critical_section(flags); + + return OK; +} + +/**************************************************************************** + * Name: up_timer_cancel + * + * Description: + * Cancel the interval timer and return the time remaining on the timer. + * These two steps need to be as nearly atomic as possible. + * nxsched_timer_expiration() will not be called unless the timer is + * restarted with up_timer_start(). + * + * If, as a race condition, the timer has already expired when this + * function is called, then that pending interrupt must be cleared so + * that up_timer_start() and the remaining time of zero should be + * returned. + * + * NOTE: This function may execute at a high rate with no timer running (as + * when pre-emption is enabled and disabled). + * + * Provided by platform-specific code and called from the RTOS base code. + * + * Input Parameters: + * ts - Location to return the remaining time. Zero should be returned + * if the timer is not active. ts may be zero in which case the + * time remaining is not returned. + * + * Returned Value: + * Zero (OK) is returned on success. A call to up_timer_cancel() when + * the timer is not active should also return success; a negated errno + * value is returned on any failure. + * + * Assumptions: + * May be called from interrupt level handling or from the normal tasking + * level. Interrupts may need to be disabled internally to assure + * non-reentrancy. + * + ****************************************************************************/ + +int IRAM_ATTR up_timer_cancel(FAR struct timespec *ts) +{ + uint64_t alarm_value; + uint64_t counter; + irqstate_t flags; + + flags = enter_critical_section(); + + if (ts != NULL) + { + if (g_timer_started == false) + { + ts->tv_sec = 0; + ts->tv_nsec = 0; + } + else + { + alarm_value = up_tmr_getalarmvalue(); + counter = up_tmr_getcounter(); + if (alarm_value <= counter) + { + alarm_value = 0; + } + else + { + alarm_value -= counter; + } + + ts->tv_sec = CTICK_2_SEC(alarm_value); + ts->tv_nsec = CTICK_2_NSEC(alarm_value % CTICK_PER_SEC); + } + } + + g_timer_started = false; + REG_CLR_BIT(SYS_TIMER_SYSTIMER_CONF_REG, SYS_TIMER_TARGET0_WORK_EN); + REG_CLR_BIT(SYS_TIMER_SYSTIMER_INT_ENA_REG, SYS_TIMER_TARGET0_INT_ENA); + REG_SET_BIT(SYS_TIMER_SYSTIMER_INT_CLR_REG, SYS_TIMER_TARGET0_INT_CLR); + + leave_critical_section(flags); + + return OK; +} + +/**************************************************************************** + * Name: up_timer_start + * + * Description: + * Start the interval timer. nxsched_timer_expiration() will be + * called at the completion of the timeout (unless up_timer_cancel + * is called to stop the timing. + * + * Provided by platform-specific code and called from the RTOS base code. + * + * Input Parameters: + * ts - Provides the time interval until nxsched_timer_expiration() is + * called. + * + * Returned Value: + * Zero (OK) is returned on success; a negated errno value is returned on + * any failure. + * + * Assumptions: + * May be called from interrupt level handling or from the normal tasking + * level. Interrupts may need to be disabled internally to assure + * non-reentrancy. + * + ****************************************************************************/ + +int IRAM_ATTR up_timer_start(FAR const struct timespec *ts) +{ + uint64_t cpu_ticks; + irqstate_t flags; + + flags = enter_critical_section(); + + if (g_timer_started == true) + { + up_timer_cancel(NULL); + } + + cpu_ticks = SEC_2_CTICK((uint64_t)ts->tv_sec) + + NSEC_2_CTICK((uint64_t)ts->tv_nsec); + + up_tmr_setcounter(cpu_ticks); + g_timer_started = true; + + leave_critical_section(flags); + + return OK; +} + +/**************************************************************************** + * Name: up_timer_initialize + * + * Description: + * Initializes all platform-specific timer facilities. This function is + * called early in the initialization sequence by up_initialize(). + * On return, the current up-time should be available from + * up_timer_gettime() and the interval timer is ready for use (but not + * actively timing. + * + * Provided by platform-specific code and called from the architecture- + * specific logic. + * + * Input Parameters: + * None + * + * Returned Value: + * None + * + * Assumptions: + * Called early in the initialization sequence before any special + * concurrency protections are required. + * + ****************************************************************************/ + +void up_timer_initialize(void) +{ + int cpuint; + + g_timer_started = false; + + /* Enable timer clock */ + + setbits(SYSTEM_SYSTIMER_CLK_EN, SYSTEM_PERIP_CLK_EN0_REG); + resetbits(SYSTEM_SYSTIMER_RST, SYSTEM_PERIP_RST_EN0_REG); + + setbits(SYS_TIMER_CLK_EN, SYS_TIMER_SYSTIMER_CONF_REG); + + /* Stall timer when stall CPU, specially when using JTAG to debug */ + + setbits(SYS_TIMER_TIMER_UNIT0_CORE0_STALL_EN, SYS_TIMER_SYSTIMER_CONF_REG); + + /* NOTE: Timer 0 is an internal interrupt source so we do not need to + * attach any peripheral ID to the dedicated CPU interrupt. + */ + + /* Attach the timer interrupt */ + + cpuint = esp32c3_request_irq(ESP32C3_PERIPH_SYSTIMER_T0, + ESP32C3_INT_PRIO_DEF, + ESP32C3_INT_LEVEL); + + /* Attach the timer interrupt. */ + + irq_attach(ESP32C3_IRQ_SYSTIMER_T0, (xcpt_t)up_timer_expire, NULL); + + /* Enable the allocated CPU interrupt. */ + + up_enable_irq(cpuint); +} + +/**************************************************************************** + * Name: up_get_idletime + * + * Description: + * This function returns the idle time. + * + * Input Parameters: + * None + * + * Returned Value: + * The time in system ticks remaining for idle. + * Zero means system is busy. + * + ****************************************************************************/ + +uint32_t IRAM_ATTR up_get_idletime(void) +{ + uint32_t us; + uint64_t alarm_value; + uint64_t counter; + irqstate_t flags; + + flags = enter_critical_section(); + if (g_timer_started == false) + { + us = 0; + } + else + { + alarm_value = up_tmr_getalarmvalue(); + counter = up_tmr_getcounter(); + if (alarm_value > counter) + { + us = CTICK_2_USEC(alarm_value - counter); + } + else + { + us = 0; + } + } + + leave_critical_section(flags); + + return us; +} + +/**************************************************************************** + * Name: up_step_idletime + * + * Description: + * Add system time by idletime_us. + * + * Input Parameters: + * us - Idle time(us) + * + * Returned Value: + * None + * + ****************************************************************************/ + +void IRAM_ATTR up_step_idletime(uint32_t us) +{ + uint64_t step_counter; + uint64_t alarm_value; + irqstate_t flags; + + DEBUGASSERT(g_timer_started); + + flags = enter_critical_section(); + + alarm_value = up_tmr_getalarmvalue(); + step_counter = USEC_2_CTICK((uint64_t)us) + up_tmr_getcounter(); + if (step_counter > alarm_value) + { + DEBUGASSERT(0); + } + + up_tmr_counter_advance(step_counter); + + leave_critical_section(flags); +} + +#endif /* CONFIG_SCHED_TICKLESS */ \ No newline at end of file diff --git a/arch/risc-v/src/esp32c3/esp32c3_tickless.h b/arch/risc-v/src/esp32c3/esp32c3_tickless.h new file mode 100644 index 00000000000..7c0609eac6a --- /dev/null +++ b/arch/risc-v/src/esp32c3/esp32c3_tickless.h @@ -0,0 +1,67 @@ +/**************************************************************************** + * arch/risc-v/src/esp32c3/esp32c3_tickless.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_ESP32C3_ESP32C3_TICKLESS_H +#define __ARCH_RISCV_SRC_ESP32C3_ESP32C3_TICKLESS_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ + +/**************************************************************************** + * Name: up_get_idletime + * + * Description: + * This function returns the idle time. + * + * Input Parameters: + * None + * + * Returned Value: + * The time in system ticks remaining for idle. + * Zero means system is busy. + * + ****************************************************************************/ + +uint32_t up_get_idletime(void); + +/**************************************************************************** + * Name: up_step_idletime + * + * Description: + * Add system time by idletime_us. + * + * Input Parameters: + * idletime_us - Idle time(us) + * + * Returned Value: + * None + * + ****************************************************************************/ + +void up_step_idletime(uint32_t idletime_us); + +#endif /* __ARCH_RISCV_SRC_ESP32C3_ESP32C3_TICKLESS_H */ diff --git a/arch/risc-v/src/esp32c3/esp32c3_wifi_adapter.c b/arch/risc-v/src/esp32c3/esp32c3_wifi_adapter.c index 9d66ae45929..bb03d69b075 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_wifi_adapter.c +++ b/arch/risc-v/src/esp32c3/esp32c3_wifi_adapter.c @@ -50,6 +50,7 @@ #include #include +#include "hardware/esp32c3_rtccntl.h" #include "hardware/esp32c3_syscon.h" #include "esp32c3.h" #include "esp32c3_attr.h" @@ -58,6 +59,10 @@ #include "esp32c3_rt_timer.h" #include "esp32c3_wifi_utils.h" +#ifdef CONFIG_PM +#include "esp32c3_pm.h" +#endif + #include "espidf_wifi.h" /**************************************************************************** @@ -90,6 +95,27 @@ #define ESP_MAX_STA_CONN (4) #define ESP_WIFI_CHANNEL (6) +#ifndef CONFIG_EXAMPLE_WIFI_LISTEN_INTERVAL +#define CONFIG_EXAMPLE_WIFI_LISTEN_INTERVAL 3 +#endif + +#define DEFAULT_LISTEN_INTERVAL CONFIG_EXAMPLE_WIFI_LISTEN_INTERVAL + +/* CONFIG_POWER_SAVE_MODEM */ + +#if defined(CONFIG_EXAMPLE_POWER_SAVE_MIN_MODEM) +# define DEFAULT_PS_MODE WIFI_PS_MIN_MODEM +#elif defined(CONFIG_EXAMPLE_POWER_SAVE_MAX_MODEM) +# define DEFAULT_PS_MODE WIFI_PS_MAX_MODEM +#elif defined(CONFIG_EXAMPLE_POWER_SAVE_NONE) +# define DEFAULT_PS_MODE WIFI_PS_NONE +#else +# define DEFAULT_PS_MODE WIFI_PS_NONE +#endif + +#define RTC_CLK_CAL_FRACT (19) +#define SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH (12) + /**************************************************************************** * Private Types ****************************************************************************/ @@ -2062,7 +2088,7 @@ static void esp_evt_work_cb(FAR void *arg) case WIFI_ADPT_EVT_STA_START: wlinfo("INFO: Wi-Fi sta start\n"); g_sta_connected = false; - ret = esp_wifi_set_ps(WIFI_PS_NONE); + ret = esp_wifi_set_ps(DEFAULT_PS_MODE); if (ret) { wlerr("ERROR: Failed to close PS\n"); @@ -2334,24 +2360,30 @@ static void esp_dport_access_stall_other_cpu_end(void) * Name: wifi_apb80m_request * * Description: - * Don't support + * Take Wi-Fi lock in auto-sleep * ****************************************************************************/ static void wifi_apb80m_request(void) { +#ifdef CONFIG_ESP32C3_AUTO_SLEEP + esp32c3_pm_lockacquire(); +#endif } /**************************************************************************** * Name: wifi_apb80m_release * * Description: - * Don't support + * Release Wi-Fi lock in auto-sleep * ****************************************************************************/ static void wifi_apb80m_release(void) { +#ifdef CONFIG_ESP32C3_AUTO_SLEEP + esp32c3_pm_lockrelease(); +#endif } /**************************************************************************** @@ -3419,11 +3451,26 @@ static int esp_get_time(void *t) /**************************************************************************** * Name: esp_clk_slowclk_cal_get_wrapper + * + * Description: + * Get the calibration value of RTC slow clock + * + * Input Parameters: + * None + * + * Returned Value: + * The calibration value obtained using rtc_clk_cal + * ****************************************************************************/ static uint32_t esp_clk_slowclk_cal_get_wrapper(void) { - return 28639; + /* The bit width of Wi-Fi light sleep clock calibration is 12 while the one + * of system is 19. It should shift 19 - 12 = 7. + */ + + return (getreg32(RTC_SLOW_CLK_CAL_REG) >> (RTC_CLK_CAL_FRACT - + SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH)); } /**************************************************************************** @@ -4616,6 +4663,26 @@ esp_err_t esp_wifi_init(const wifi_init_config_t *config) return ret; } +#if SOC_WIFI_HW_TSF + ret = esp32c3_pm_register_skip_sleep_callback( + esp_wifi_internal_is_tsf_active); + if (ret != OK) + { + wlerr("ERROR: Failed to register skip sleep callback (0x%x)", ret); + return ret; + } + + ret = esp32c3_pm_register_inform_out_sleep_overhead_callback( + esp_wifi_internal_update_light_sleep_wake_ahead_time); + if (ret != OK) + { + wlerr("ERROR: Failed to register overhead callback (0x%x)", ret); + return ret; + } + + esp32c3_sleep_enable_wifi_wakeup(); +#endif + return 0; } @@ -4651,6 +4718,12 @@ esp_err_t esp_wifi_deinit(void) return ret; } +#if SOC_WIFI_HW_TSF + esp32c3_pm_unregister_skip_sleep_callback( + esp_wifi_internal_is_tsf_active); + esp32c3_pm_unregister_inform_out_sleep_overhead_callback( + esp_wifi_internal_update_light_sleep_wake_ahead_time); +#endif return ret; } @@ -4793,13 +4866,6 @@ int esp_wifi_adapter_init(void) return OK; } - ret = esp32c3_rt_timer_init(); - if (ret < 0) - { - wlerr("ERROR: Failed to initialize RT timer error=%d\n", ret); - goto errout_init_timer; - } - sq_init(&g_wifi_evt_queue); #ifdef CONFIG_ESP32C3_WIFI_SAVE_PARAM @@ -4867,8 +4933,6 @@ int esp_wifi_adapter_init(void) errout_init_txdone: esp_wifi_deinit(); errout_init_wifi: - esp32c3_rt_timer_deinit(); -errout_init_timer: esp_wifi_lock(false); return ret; } @@ -5145,6 +5209,7 @@ int esp_wifi_sta_password(struct iwreq *iwr, bool set) memcpy(wifi_cfg.sta.password, pdata, len); wifi_cfg.sta.pmf_cfg.capable = true; + wifi_cfg.sta.listen_interval = DEFAULT_LISTEN_INTERVAL; ret = esp_wifi_set_config(WIFI_IF_STA, &wifi_cfg); if (ret) diff --git a/arch/risc-v/src/esp32c3/esp32c3_wifi_utils.h b/arch/risc-v/src/esp32c3/esp32c3_wifi_utils.h index bfce2ac63e7..8408aeeb201 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_wifi_utils.h +++ b/arch/risc-v/src/esp32c3/esp32c3_wifi_utils.h @@ -117,4 +117,4 @@ int esp_wifi_scan_init(void); #undef EXTERN #endif /* __ASSEMBLY__ */ -#endif /* __ARCH_XTENSA_SRC_ESP32_ESP32_UTILS_H */ +#endif /* __ARCH_RISCV_SRC_ESP32C3_ESP32C3_UTILS_H */ diff --git a/arch/risc-v/src/esp32c3/hardware/apb_ctrl_reg.h b/arch/risc-v/src/esp32c3/hardware/apb_ctrl_reg.h index 1800a5cd49a..808a95761cf 100644 --- a/arch/risc-v/src/esp32c3/hardware/apb_ctrl_reg.h +++ b/arch/risc-v/src/esp32c3/hardware/apb_ctrl_reg.h @@ -35,6 +35,8 @@ #define APB_CTRL_MEM_POWER_UP_REG (DR_REG_APB_CTRL_BASE + 0x0AC) +#define APB_CTRL_RETENTION_CTRL_REG (DR_REG_APB_CTRL_BASE + 0x0A0) + /* APB_CTRL_DC_MEM_FORCE_PU : R/W ;bitpos:[4] ;default: 1'b1 ; */ #define APB_CTRL_DC_MEM_FORCE_PU (BIT(4)) @@ -70,4 +72,11 @@ #define APB_CTRL_ROM_POWER_UP_V 0x3 #define APB_CTRL_ROM_POWER_UP_S 0 +/* APB_CTRL_RETENTION_LINK_ADDR : R/W ;bitpos:[26:0] ;default: 27'd0 ; */ + +#define APB_CTRL_RETENTION_LINK_ADDR 0x07FFFFFF +#define APB_CTRL_RETENTION_LINK_ADDR_M ((APB_CTRL_RETENTION_LINK_ADDR_V)<<(APB_CTRL_RETENTION_LINK_ADDR_S)) +#define APB_CTRL_RETENTION_LINK_ADDR_V 0x7FFFFFF +#define APB_CTRL_RETENTION_LINK_ADDR_S 0 + #endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_APB_CTRL_REG_H_ */ diff --git a/arch/risc-v/src/esp32c3/hardware/esp32c3_rtccntl.h b/arch/risc-v/src/esp32c3/hardware/esp32c3_rtccntl.h index 90520ff238b..9f9282a17df 100644 --- a/arch/risc-v/src/esp32c3/hardware/esp32c3_rtccntl.h +++ b/arch/risc-v/src/esp32c3/hardware/esp32c3_rtccntl.h @@ -3615,4 +3615,13 @@ #define RTC_CNTL_CNTL_DATE_V 0xFFFFFFF #define RTC_CNTL_CNTL_DATE_S 0 +#define RTC_SLOW_CLK_CAL_REG RTC_CNTL_STORE1_REG +#define RTC_BOOT_TIME_LOW_REG RTC_CNTL_STORE2_REG +#define RTC_BOOT_TIME_HIGH_REG RTC_CNTL_STORE3_REG +#define RTC_XTAL_FREQ_REG RTC_CNTL_STORE4_REG +#define RTC_APB_FREQ_REG RTC_CNTL_STORE5_REG +#define RTC_ENTRY_ADDR_REG RTC_CNTL_STORE6_REG +#define RTC_RESET_CAUSE_REG RTC_CNTL_STORE6_REG +#define RTC_MEMORY_CRC_REG RTC_CNTL_STORE7_REG + #endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_RTCCNTL_H */ diff --git a/arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h b/arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h index 9e1ba5b2379..e9cb06b1c5d 100644 --- a/arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h +++ b/arch/risc-v/src/esp32c3/hardware/esp32c3_soc.h @@ -303,4 +303,7 @@ #define REG_SET_FIELD(_r, _f, _v) (REG_WRITE((_r),((REG_READ(_r) & ~((_f##_V) << (_f##_S)))|(((_v) & (_f##_V))<<(_f##_S))))) +#define SOC_SYSTIMER_BIT_WIDTH_LO (32) /* Bit width of systimer low part */ +#define SOC_SYSTIMER_BIT_WIDTH_HI (20) /* Bit width of systimer high part */ + #endif /* __ARCH_RISCV_SRC_ESP32C3_HARDWARE_ESP32C3_SOC_H */ diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/configs/autopm/defconfig b/boards/risc-v/esp32c3/esp32c3-devkit/configs/autopm/defconfig new file mode 100644 index 00000000000..5edf5bbbc4a --- /dev/null +++ b/boards/risc-v/esp32c3/esp32c3-devkit/configs/autopm/defconfig @@ -0,0 +1,68 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_NSH_ARGCAT is not set +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +# CONFIG_NSH_CMDPARMS is not set +CONFIG_ARCH="risc-v" +CONFIG_ARCH_BOARD="esp32c3-devkit" +CONFIG_ARCH_BOARD_ESP32C3_DEVKIT=y +CONFIG_ARCH_CHIP="esp32c3" +CONFIG_ARCH_CHIP_ESP32C3=y +CONFIG_ARCH_CHIP_ESP32C3WROOM02=y +CONFIG_ARCH_INTERRUPTSTACK=1536 +CONFIG_ARCH_RISCV=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARD_LOOPSPERMSEC=16717 +CONFIG_BUILTIN=y +CONFIG_DRIVERS_IEEE80211=y +CONFIG_DRIVERS_WIRELESS=y +CONFIG_ESP32C3_AUTO_SLEEP=y +CONFIG_ESP32C3_WIRELESS=y +CONFIG_EXAMPLE_POWER_SAVE_MIN_MODEM=y +CONFIG_FS_PROCFS=y +CONFIG_HAVE_CXX=y +CONFIG_HAVE_CXXINITIALIZE=y +CONFIG_IDLETHREAD_STACKSIZE=3072 +CONFIG_INTELHEX_BINARY=y +CONFIG_LIBC_FLOATINGPOINT=y +CONFIG_NAME_MAX=48 +CONFIG_NETDB_DNSCLIENT=y +CONFIG_NETDEV_LATEINIT=y +CONFIG_NETDEV_PHY_IOCTL=y +CONFIG_NETDEV_WIRELESS_IOCTL=y +CONFIG_NETINIT_DHCPC=y +CONFIG_NET_BROADCAST=y +CONFIG_NET_ETH_PKTSIZE=1514 +CONFIG_NET_ICMP=y +CONFIG_NET_ICMP_SOCKET=y +CONFIG_NET_SOCKOPTS=y +CONFIG_NET_TCP=y +CONFIG_NET_UDP=y +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_LINELEN=64 +CONFIG_NSH_READLINE=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_PTHREAD_MUTEX_TYPES=y +CONFIG_RAW_BINARY=y +CONFIG_SCHED_LPWORK=y +CONFIG_SCHED_WAITPID=y +CONFIG_SIG_DEFAULT=y +CONFIG_START_DAY=6 +CONFIG_START_MONTH=12 +CONFIG_START_YEAR=2011 +CONFIG_SYSTEM_DHCPC_RENEW=y +CONFIG_SYSTEM_NSH=y +CONFIG_SYSTEM_PING=y +CONFIG_UART0_SERIAL_CONSOLE=y +CONFIG_USER_ENTRYPOINT="nsh_main" +CONFIG_WIRELESS=y +CONFIG_WIRELESS_WAPI=y +CONFIG_WIRELESS_WAPI_CMDTOOL=y +CONFIG_WIRELESS_WAPI_STACKSIZE=4096 diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/configs/tickless/defconfig b/boards/risc-v/esp32c3/esp32c3-devkit/configs/tickless/defconfig new file mode 100644 index 00000000000..19e19cdae94 --- /dev/null +++ b/boards/risc-v/esp32c3/esp32c3-devkit/configs/tickless/defconfig @@ -0,0 +1,44 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_NSH_ARGCAT is not set +# CONFIG_NSH_CMDOPT_HEXDUMP is not set +# CONFIG_NSH_CMDPARMS is not set +CONFIG_ARCH="risc-v" +CONFIG_ARCH_BOARD="esp32c3-devkit" +CONFIG_ARCH_BOARD_ESP32C3_DEVKIT=y +CONFIG_ARCH_CHIP="esp32c3" +CONFIG_ARCH_CHIP_ESP32C3=y +CONFIG_ARCH_CHIP_ESP32C3WROOM02=y +CONFIG_ARCH_INTERRUPTSTACK=1536 +CONFIG_ARCH_RISCV=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARD_LOOPSPERMSEC=15000 +CONFIG_BUILTIN=y +CONFIG_DEV_ZERO=y +CONFIG_ESP32C3_TICKLESS=y +CONFIG_FS_PROCFS=y +CONFIG_IDLETHREAD_STACKSIZE=2048 +CONFIG_INTELHEX_BINARY=y +CONFIG_LIBC_PERROR_STDOUT=y +CONFIG_LIBC_STRERROR=y +CONFIG_MAX_TASKS=16 +CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6 +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_READLINE=y +CONFIG_NSH_STRERROR=y +CONFIG_PREALLOC_TIMERS=0 +CONFIG_RAW_BINARY=y +CONFIG_SCHED_WAITPID=y +CONFIG_START_DAY=29 +CONFIG_START_MONTH=11 +CONFIG_START_YEAR=2019 +CONFIG_SYSTEM_NSH=y +CONFIG_UART0_SERIAL_CONSOLE=y +CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_bringup.c b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_bringup.c index d3d744967b6..55c4915ac09 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_bringup.c +++ b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_bringup.c @@ -46,10 +46,16 @@ # include "esp32c3_spi.h" #endif +#ifdef CONFIG_ESP32C3_RT_TIMER +# include "esp32c3_rt_timer.h" +#endif + #ifdef CONFIG_TIMER # include "esp32c3_tim_lowerhalf.h" #endif +#include "esp32c3_rtc.h" + /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ @@ -250,6 +256,14 @@ int esp32c3_bringup(void) #endif /* CONFIG_ONESHOT */ +#ifdef CONFIG_ESP32C3_RT_TIMER + ret = esp32c3_rt_timer_init(); + if (ret < 0) + { + syslog(LOG_ERR, "Failed to initialize RT timer: %d\n", ret); + } +#endif + #ifdef CONFIG_ESP32C3_WIRELESS #ifdef CONFIG_ESP32C3_WIFI_SAVE_PARAM From 139f1f15480afe0c64ced6d79cf9e4f99a0fe9ab Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 16:56:13 +0900 Subject: [PATCH 146/739] drivers/modem/altair: Fix behavior when a reset packet conflicts with a send packet Even in the case of a conflict between a reset packet and a send packet, the send size is compared and the larger size is sent as the payload. --- drivers/modem/altair/altmdm_spi.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/drivers/modem/altair/altmdm_spi.c b/drivers/modem/altair/altmdm_spi.c index ec62233eeeb..8818c74e77d 100644 --- a/drivers/modem/altair/altmdm_spi.c +++ b/drivers/modem/altair/altmdm_spi.c @@ -1232,12 +1232,24 @@ static int do_trxreset(FAR struct altmdm_dev_s *priv) ret = wait_receiverready(priv, WAIT_RXREQ_TIMEOUT); if (ret >= 0) { - /* If a conflict occurs with the reset packet, - * the packet is transferred by the size specified - * by the receiving side. Discard the data on the sending side. + /* Even in the case of a conflict between a reset packet + * and a send packet, the send size is compared and the + * larger size is sent as the payload. + * If the send packet that conflicts with the reset packet + * is in ALTCOM command format, the modem may assert. + * If it is not in the ALTCOM command format, it will be + * discarded by the modem, so dummy data will be sent to + * avoid assertion. */ - xfer_size = spidev->rx_param.total_size; + if (spidev->tx_param.total_size < spidev->rx_param.total_size) + { + xfer_size = spidev->rx_param.total_size; + } + else + { + xfer_size = spidev->tx_param.total_size; + } /* Get DMA transfer size */ From 0cc0c3d5032208cac84decb3e861c2cdd19a5aeb Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 18:44:52 +0900 Subject: [PATCH 147/739] fs/vfs: Fix bug that select() did not return Fix bug that select() did not return when the nfds argument was set to a negative value. The specification is that -1 is set to the return value and EINVAL is set to errno. --- fs/vfs/fs_select.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fs/vfs/fs_select.c b/fs/vfs/fs_select.c index 5384f7f78db..1a3734aeffa 100644 --- a/fs/vfs/fs_select.c +++ b/fs/vfs/fs_select.c @@ -90,6 +90,12 @@ int select(int nfds, FAR fd_set *readfds, FAR fd_set *writefds, enter_cancellation_point(); + if (nfds < 0) + { + errcode = EINVAL; + goto errout; + } + /* How many pollfd structures do we need to allocate? */ /* Initialize the descriptor list for poll() */ From 58c92be39c72e2dff41848e821936cd4fd744a75 Mon Sep 17 00:00:00 2001 From: Anthony Merlino Date: Sun, 11 Apr 2021 15:37:17 -0400 Subject: [PATCH 148/739] stm32 timers: Make some register operations more readable. --- arch/arm/src/stm32/hardware/stm32_tim_v1v2.h | 2 ++ arch/arm/src/stm32/hardware/stm32_tim_v3.h | 2 ++ arch/arm/src/stm32/stm32_capture.c | 6 ++--- arch/arm/src/stm32/stm32_tickless.c | 5 ++-- arch/arm/src/stm32/stm32_tim.c | 7 +++--- arch/arm/src/stm32f0l0g0/hardware/stm32_tim.h | 2 ++ arch/arm/src/stm32f0l0g0/stm32_tim.c | 7 +++--- .../src/stm32f7/hardware/stm32f72xx73xx_tim.h | 2 ++ .../src/stm32f7/hardware/stm32f74xx75xx_tim.h | 2 ++ .../src/stm32f7/hardware/stm32f76xx77xx_tim.h | 2 ++ arch/arm/src/stm32f7/stm32_capture.c | 6 ++--- arch/arm/src/stm32f7/stm32_tickless.c | 23 ++++++++++--------- arch/arm/src/stm32f7/stm32_tim.c | 9 ++++---- arch/arm/src/stm32l4/hardware/stm32l4_tim.h | 2 ++ arch/arm/src/stm32l4/stm32l4_adc.c | 5 ++-- arch/arm/src/stm32l4/stm32l4_tim.c | 7 +++--- arch/arm/src/stm32l5/hardware/stm32l5_tim.h | 2 ++ arch/arm/src/stm32l5/stm32l5_tim.c | 7 +++--- 18 files changed, 61 insertions(+), 37 deletions(-) diff --git a/arch/arm/src/stm32/hardware/stm32_tim_v1v2.h b/arch/arm/src/stm32/hardware/stm32_tim_v1v2.h index dabccee4119..138cd37fefd 100644 --- a/arch/arm/src/stm32/hardware/stm32_tim_v1v2.h +++ b/arch/arm/src/stm32/hardware/stm32_tim_v1v2.h @@ -826,6 +826,7 @@ # define ATIM_CCER_CC6E (1 << 20) /* Bit 20: Capture/Compare 6 output enable */ # define ATIM_CCER_CC6P (1 << 21) /* Bit 21: Capture/Compare 6 output Polarity */ #endif +#define ATIM_CCER_CCXBASE(ch) (ch << 2) /* Each channel uses 4-bits */ /* 16-bit counter register */ @@ -1222,6 +1223,7 @@ * no CC4N output, so it does not make sense! */ #endif +#define GTIM_CCER_CCXBASE(ch) (ch << 2) /* Each channel uses 4-bits */ /* 16-bit counter register */ diff --git a/arch/arm/src/stm32/hardware/stm32_tim_v3.h b/arch/arm/src/stm32/hardware/stm32_tim_v3.h index 61a77c516c7..f5e546b771c 100644 --- a/arch/arm/src/stm32/hardware/stm32_tim_v3.h +++ b/arch/arm/src/stm32/hardware/stm32_tim_v3.h @@ -769,6 +769,7 @@ #define ATIM_CCER_CC5P (1 << 17) /* Bit 17: Capture/Compare 5 Output Polarity */ #define ATIM_CCER_CC6E (1 << 20) /* Bit 20: Capture/Compare 6 Output Enable */ #define ATIM_CCER_CC6P (1 << 21) /* Bit 21: Capture/Compare 6 Output Polarity */ +#define ATIM_CCER_CCXBASE(ch) (ch << 2) /* Each channel uses 4-bits */ /* ATIM Counter (CNT) */ @@ -1236,6 +1237,7 @@ #define GTIM_CCER_CC4E (1 << 12) /* Bit 12: Capture/Compare 4 Output Enable */ #define GTIM_CCER_CC4P (1 << 13) /* Bit 13: Capture/Compare 4 Output Polarity */ #define GTIM_CCER_CC4NP (1 << 15) /* Bit 15: Capture/Compare 4 Complementary Output Polarity */ +#define GTIM_CCER_CCXBASE(ch) (ch << 2) /* Each channel uses 4-bits */ /* GTIM Counter (CNT) */ diff --git a/arch/arm/src/stm32/stm32_capture.c b/arch/arm/src/stm32/stm32_capture.c index 3ff5419230a..a8d4a3ea1e9 100644 --- a/arch/arm/src/stm32/stm32_capture.c +++ b/arch/arm/src/stm32/stm32_capture.c @@ -963,9 +963,9 @@ static int stm32_cap_setchannel(FAR struct stm32_cap_dev_s *dev, /* Shift all CCER bits to corresponding channel */ mask = (GTIM_CCER_CC1E | GTIM_CCER_CC1P | GTIM_CCER_CC1NP); - mask <<= (channel << 2); - regval <<= (channel << 2); - ccer_en_bit <<= (channel << 2); + mask <<= GTIM_CCER_CCXBASE(channel); + regval <<= GTIM_CCER_CCXBASE(channel); + ccer_en_bit <<= GTIM_CCER_CCXBASE(channel); stm32_modifyreg16(priv, STM32_GTIM_CCER_OFFSET, mask, regval); diff --git a/arch/arm/src/stm32/stm32_tickless.c b/arch/arm/src/stm32/stm32_tickless.c index 53a25d75fdc..ac7f6783d7e 100644 --- a/arch/arm/src/stm32/stm32_tickless.c +++ b/arch/arm/src/stm32/stm32_tickless.c @@ -237,7 +237,8 @@ static int stm32_tickless_setchannel(uint8_t channel) /* Assume that channel is disabled and polarity is active high */ - ccer_val &= ~(3 << (channel << 2)); + ccer_val &= ~((GTIM_CCER_CC1P | GTIM_CCER_CC1E) << + GTIM_CCER_CCXBASE(channel)); /* This function is not supported on basic timers. To enable or * disable it, simply set its clock to valid frequency or zero. @@ -264,7 +265,7 @@ static int stm32_tickless_setchannel(uint8_t channel) /* Set polarity */ - ccer_val |= ATIM_CCER_CC1P << (channel << 2); + ccer_val |= ATIM_CCER_CC1P << GTIM_CCER_CCXBASE(channel); /* Define its position (shift) and get register offset */ diff --git a/arch/arm/src/stm32/stm32_tim.c b/arch/arm/src/stm32/stm32_tim.c index 27b3fa96998..c1813eeda27 100644 --- a/arch/arm/src/stm32/stm32_tim.c +++ b/arch/arm/src/stm32/stm32_tim.c @@ -985,7 +985,8 @@ static int stm32_tim_setchannel(FAR struct stm32_tim_dev_s *dev, /* Assume that channel is disabled and polarity is active high */ - ccer_val &= ~(3 << (channel << 2)); + ccer_val &= ~((GTIM_CCER_CC1P | GTIM_CCER_CC1E) << + GTIM_CCER_CCXBASE(channel)); /* This function is not supported on basic timers. To enable or * disable it, simply set its clock to valid frequency or zero. @@ -1014,7 +1015,7 @@ static int stm32_tim_setchannel(FAR struct stm32_tim_dev_s *dev, case STM32_TIM_CH_OUTPWM: ccmr_val = (ATIM_CCMR_MODE_PWM1 << ATIM_CCMR1_OC1M_SHIFT) + ATIM_CCMR1_OC1PE; - ccer_val |= ATIM_CCER_CC1E << (channel << 2); + ccer_val |= ATIM_CCER_CC1E << GTIM_CCER_CCXBASE(channel); break; default: @@ -1025,7 +1026,7 @@ static int stm32_tim_setchannel(FAR struct stm32_tim_dev_s *dev, if (mode & STM32_TIM_CH_POLARITY_NEG) { - ccer_val |= ATIM_CCER_CC1P << (channel << 2); + ccer_val |= ATIM_CCER_CC1P << GTIM_CCER_CCXBASE(channel); } /* Define its position (shift) and get register offset */ diff --git a/arch/arm/src/stm32f0l0g0/hardware/stm32_tim.h b/arch/arm/src/stm32f0l0g0/hardware/stm32_tim.h index e356e220e80..3744ed0c484 100644 --- a/arch/arm/src/stm32f0l0g0/hardware/stm32_tim.h +++ b/arch/arm/src/stm32f0l0g0/hardware/stm32_tim.h @@ -611,6 +611,7 @@ #define ATIM_CCER_CC5P (1 << 17) /* Bit 17: Capture/Compare 5 output Polarity */ #define ATIM_CCER_CC6E (1 << 20) /* Bit 20: Capture/Compare 6 output enable */ #define ATIM_CCER_CC6P (1 << 21) /* Bit 21: Capture/Compare 6 output Polarity */ +#define ATIM_CCER_CCXBASE(ch) (ch << 2) /* Each channel uses 4-bits */ /* 16-bit counter register */ @@ -1030,6 +1031,7 @@ #define GTIM_CCER_CC4E (1 << 12) /* Bit 12: Capture/Compare 4 output enable (TIM3 only) */ #define GTIM_CCER_CC4P (1 << 13) /* Bit 13: Capture/Compare 4 output Polarity (TIM3 only) */ #define GTIM_CCER_CC4NP (1 << 15) /* Bit 15: Capture/Compare 4 output Polarity (TIM3 only) */ +#define GTIM_CCER_CCXBASE(ch) (ch << 2) /* Each channel uses 4-bits */ /* 16-bit counter register */ diff --git a/arch/arm/src/stm32f0l0g0/stm32_tim.c b/arch/arm/src/stm32f0l0g0/stm32_tim.c index 993a549830e..e4db4065191 100644 --- a/arch/arm/src/stm32f0l0g0/stm32_tim.c +++ b/arch/arm/src/stm32f0l0g0/stm32_tim.c @@ -969,7 +969,8 @@ static int stm32_tim_setchannel(FAR struct stm32_tim_dev_s *dev, /* Assume that channel is disabled and polarity is active high */ - ccer_val &= ~(3 << (channel << 2)); + ccer_val &= ~((GTIM_CCER_CC1P | GTIM_CCER_CC1E) << + GTIM_CCER_CCXBASE(channel)); /* This function is not supported on basic timers. To enable or * disable it, simply set its clock to valid frequency or zero. @@ -991,7 +992,7 @@ static int stm32_tim_setchannel(FAR struct stm32_tim_dev_s *dev, case STM32_TIM_CH_OUTPWM: ccmr_val = (ATIM_CCMR_MODE_PWM1 << ATIM_CCMR1_OC1M_SHIFT) + ATIM_CCMR1_OC1PE; - ccer_val |= ATIM_CCER_CC1E << (channel << 2); + ccer_val |= ATIM_CCER_CC1E << GTIM_CCER_CCXBASE(channel); break; default: @@ -1002,7 +1003,7 @@ static int stm32_tim_setchannel(FAR struct stm32_tim_dev_s *dev, if (mode & STM32_TIM_CH_POLARITY_NEG) { - ccer_val |= ATIM_CCER_CC1P << (channel << 2); + ccer_val |= ATIM_CCER_CC1P << GTIM_CCER_CCXBASE(channel); } /* Define its position (shift) and get register offset */ diff --git a/arch/arm/src/stm32f7/hardware/stm32f72xx73xx_tim.h b/arch/arm/src/stm32f7/hardware/stm32f72xx73xx_tim.h index 048a4697ec6..a0266da3bb0 100644 --- a/arch/arm/src/stm32f7/hardware/stm32f72xx73xx_tim.h +++ b/arch/arm/src/stm32f7/hardware/stm32f72xx73xx_tim.h @@ -694,6 +694,7 @@ #define ATIM_CCER_CC5P (1 << 17) /* Bit 17: Capture/Compare 5 output Polarity */ #define ATIM_CCER_CC6E (1 << 20) /* Bit 20: Capture/Compare 6 output enable */ #define ATIM_CCER_CC6P (1 << 21) /* Bit 21: Capture/Compare 6 output Polarity */ +#define ATIM_CCER_CCXBASE(ch) (ch << 2) /* Each channel uses 4-bits */ /* 16-bit counter register */ @@ -1073,6 +1074,7 @@ #define GTIM_CCER_CC4E (1 << 12) /* Bit 12: Capture/Compare 4 output enable (TIM2-5 only) */ #define GTIM_CCER_CC4P (1 << 13) /* Bit 13: Capture/Compare 4 output Polarity (TIM2-5 only) */ #define GTIM_CCER_CC4NP (1 << 15) /* Bit 15: Capture/Compare 4 output Polarity */ +#define GTIM_CCER_CCXBASE(ch) (ch << 2) /* Each channel uses 4-bits */ /* 16-bit counter register */ diff --git a/arch/arm/src/stm32f7/hardware/stm32f74xx75xx_tim.h b/arch/arm/src/stm32f7/hardware/stm32f74xx75xx_tim.h index 46e89338df2..0cc21659e60 100644 --- a/arch/arm/src/stm32f7/hardware/stm32f74xx75xx_tim.h +++ b/arch/arm/src/stm32f7/hardware/stm32f74xx75xx_tim.h @@ -696,6 +696,7 @@ #define ATIM_CCER_CC5P (1 << 17) /* Bit 17: Capture/Compare 5 output Polarity */ #define ATIM_CCER_CC6E (1 << 20) /* Bit 20: Capture/Compare 6 output enable */ #define ATIM_CCER_CC6P (1 << 21) /* Bit 21: Capture/Compare 6 output Polarity */ +#define ATIM_CCER_CCXBASE(ch) (ch << 2) /* Each channel uses 4-bits */ /* 16-bit counter register */ @@ -1075,6 +1076,7 @@ #define GTIM_CCER_CC4E (1 << 12) /* Bit 12: Capture/Compare 4 output enable (TIM2-5 only) */ #define GTIM_CCER_CC4P (1 << 13) /* Bit 13: Capture/Compare 4 output Polarity (TIM2-5 only) */ #define GTIM_CCER_CC4NP (1 << 15) /* Bit 15: Capture/Compare 4 output Polarity */ +#define GTIM_CCER_CCXBASE(ch) (ch << 2) /* Each channel uses 4-bits */ /* 16-bit counter register */ diff --git a/arch/arm/src/stm32f7/hardware/stm32f76xx77xx_tim.h b/arch/arm/src/stm32f7/hardware/stm32f76xx77xx_tim.h index c701d1353cf..947ceaffd68 100644 --- a/arch/arm/src/stm32f7/hardware/stm32f76xx77xx_tim.h +++ b/arch/arm/src/stm32f7/hardware/stm32f76xx77xx_tim.h @@ -702,6 +702,7 @@ #define ATIM_CCER_CC5P (1 << 17) /* Bit 17: Capture/Compare 5 output Polarity */ #define ATIM_CCER_CC6E (1 << 20) /* Bit 20: Capture/Compare 6 output enable */ #define ATIM_CCER_CC6P (1 << 21) /* Bit 21: Capture/Compare 6 output Polarity */ +#define ATIM_CCER_CCXBASE(ch) (ch << 2) /* Each channel uses 4-bits */ /* 16-bit counter register */ @@ -1093,6 +1094,7 @@ #define GTIM_CCER_CC4E (1 << 12) /* Bit 12: Capture/Compare 4 output enable (TIM2-5 only) */ #define GTIM_CCER_CC4P (1 << 13) /* Bit 13: Capture/Compare 4 output Polarity (TIM2-5 only) */ #define GTIM_CCER_CC4NP (1 << 15) /* Bit 15: Capture/Compare 4 output Polarity */ +#define GTIM_CCER_CCXBASE(ch) (ch << 2) /* Each channel uses 4-bits */ /* 16-bit counter register */ diff --git a/arch/arm/src/stm32f7/stm32_capture.c b/arch/arm/src/stm32f7/stm32_capture.c index c3f1b82b576..21beb11233e 100644 --- a/arch/arm/src/stm32f7/stm32_capture.c +++ b/arch/arm/src/stm32f7/stm32_capture.c @@ -969,9 +969,9 @@ static int stm32_cap_setchannel(FAR struct stm32_cap_dev_s *dev, /* Shift all CCER bits to corresponding channel */ mask = (GTIM_CCER_CC1E | GTIM_CCER_CC1P | GTIM_CCER_CC1NP); - mask <<= (channel << 2); - regval <<= (channel << 2); - ccer_en_bit <<= (channel << 2); + mask <<= GTIM_CCER_CCXBASE(channel); + regval <<= GTIM_CCER_CCXBASE(channel); + ccer_en_bit <<= GTIM_CCER_CCXBASE(channel); stm32_modifyreg16(priv, STM32_GTIM_CCER_OFFSET, mask, regval); diff --git a/arch/arm/src/stm32f7/stm32_tickless.c b/arch/arm/src/stm32f7/stm32_tickless.c index 74d4614a84e..8e127788f60 100644 --- a/arch/arm/src/stm32f7/stm32_tickless.c +++ b/arch/arm/src/stm32f7/stm32_tickless.c @@ -113,13 +113,13 @@ #endif #if CONFIG_STM32F7_TICKLESS_CHANNEL == 1 -#define DIER_CAPT_IE ATIM_DIER_CC1IE +#define DIER_CAPT_IE GTIM_DIER_CC1IE #elif CONFIG_STM32F7_TICKLESS_CHANNEL == 2 -#define DIER_CAPT_IE ATIM_DIER_CC2IE +#define DIER_CAPT_IE GTIM_DIER_CC2IE #elif CONFIG_STM32F7_TICKLESS_CHANNEL == 3 -#define DIER_CAPT_IE ATIM_DIER_CC3IE +#define DIER_CAPT_IE GTIM_DIER_CC3IE #elif CONFIG_STM32F7_TICKLESS_CHANNEL == 4 -#define DIER_CAPT_IE ATIM_DIER_CC4IE +#define DIER_CAPT_IE GTIM_DIER_CC4IE #endif /**************************************************************************** @@ -248,7 +248,8 @@ static int stm32_tickless_setchannel(uint8_t channel) /* Assume that channel is disabled and polarity is active high */ - ccer_val &= ~(3 << (channel << 2)); + ccer_val &= ~((GTIM_CCER_CC1P | GTIM_CCER_CC1E) << + GTIM_CCER_CCXBASE(channel)); /* This function is not supported on basic timers. To enable or * disable it, simply set its clock to valid frequency or zero. @@ -264,11 +265,11 @@ static int stm32_tickless_setchannel(uint8_t channel) * disabled. */ - ccmr_val = (ATIM_CCMR_MODE_FRZN << ATIM_CCMR1_OC1M_SHIFT); + ccmr_val = (GTIM_CCMR_MODE_FRZN << GTIM_CCMR1_OC1M_SHIFT); /* Set polarity */ - ccer_val |= ATIM_CCER_CC1P << (channel << 2); + ccer_val |= GTIM_CCER_CC1P << GTIM_CCER_CCXBASE(channel); /* Define its position (shift) and get register offset */ @@ -351,7 +352,7 @@ static void stm32_timing_handler(void) { g_tickless.overflow++; - STM32_TIM_ACKINT(g_tickless.tch, ATIM_SR_UIF); + STM32_TIM_ACKINT(g_tickless.tch, GTIM_SR_UIF); } /**************************************************************************** @@ -373,7 +374,7 @@ static int stm32_tickless_handler(int irq, void *context, void *arg) { int interrupt_flags = stm32_tickless_getint(); - if (interrupt_flags & ATIM_SR_UIF) + if (interrupt_flags & GTIM_SR_UIF) { stm32_timing_handler(); } @@ -684,7 +685,7 @@ int up_timer_gettime(FAR struct timespec *ts) overflow = g_tickless.overflow; counter = STM32_TIM_GETCOUNTER(g_tickless.tch); - pending = STM32_TIM_CHECKINT(g_tickless.tch, ATIM_SR_UIF); + pending = STM32_TIM_CHECKINT(g_tickless.tch, GTIM_SR_UIF); verify = STM32_TIM_GETCOUNTER(g_tickless.tch); /* If an interrupt was pending before we re-enabled interrupts, @@ -693,7 +694,7 @@ int up_timer_gettime(FAR struct timespec *ts) if (pending) { - STM32_TIM_ACKINT(g_tickless.tch, ATIM_SR_UIF); + STM32_TIM_ACKINT(g_tickless.tch, GTIM_SR_UIF); /* Increment the overflow count and use the value of the * guaranteed to be AFTER the overflow occurred. diff --git a/arch/arm/src/stm32f7/stm32_tim.c b/arch/arm/src/stm32f7/stm32_tim.c index 0b6d1647e44..31437450b4d 100644 --- a/arch/arm/src/stm32f7/stm32_tim.c +++ b/arch/arm/src/stm32f7/stm32_tim.c @@ -750,7 +750,8 @@ static int stm32_tim_setchannel(FAR struct stm32_tim_dev_s *dev, /* Assume that channel is disabled and polarity is active high */ - ccer_val &= ~(3 << (channel << 2)); + ccer_val &= ~((GTIM_CCER_CC1P | GTIM_CCER_CC1E) << + GTIM_CCER_CCXBASE(channel)); /* This function is not supported on basic timers. To enable or * disable it, simply set its clock to valid frequency or zero. @@ -772,13 +773,13 @@ static int stm32_tim_setchannel(FAR struct stm32_tim_dev_s *dev, case STM32_TIM_CH_OUTPWM: ccmr_val = (ATIM_CCMR_MODE_PWM1 << ATIM_CCMR1_OC1M_SHIFT) + ATIM_CCMR1_OC1PE; - ccer_val |= ATIM_CCER_CC1E << (channel << 2); + ccer_val |= ATIM_CCER_CC1E << GTIM_CCER_CCXBASE(channel); break; case STM32_TIM_CH_OUTTOGGLE: ccmr_val = (ATIM_CCMR_MODE_OCREFTOG << ATIM_CCMR1_OC1M_SHIFT) + ATIM_CCMR1_OC1PE; - ccer_val |= ATIM_CCER_CC1E << (channel << 2); + ccer_val |= ATIM_CCER_CC1E << GTIM_CCER_CCXBASE(channel); break; default: @@ -789,7 +790,7 @@ static int stm32_tim_setchannel(FAR struct stm32_tim_dev_s *dev, if (mode & STM32_TIM_CH_POLARITY_NEG) { - ccer_val |= ATIM_CCER_CC1P << (channel << 2); + ccer_val |= ATIM_CCER_CC1P << GTIM_CCER_CCXBASE(channel); } /* Define its position (shift) and get register offset */ diff --git a/arch/arm/src/stm32l4/hardware/stm32l4_tim.h b/arch/arm/src/stm32l4/hardware/stm32l4_tim.h index 29fd6d1fec7..8152c7661a6 100644 --- a/arch/arm/src/stm32l4/hardware/stm32l4_tim.h +++ b/arch/arm/src/stm32l4/hardware/stm32l4_tim.h @@ -674,6 +674,7 @@ #define ATIM_CCER_CC5P (1 << 17) /* Bit 17: Capture/Compare 5 output Polarity */ #define ATIM_CCER_CC6E (1 << 20) /* Bit 20: Capture/Compare 6 output enable */ #define ATIM_CCER_CC6P (1 << 21) /* Bit 21: Capture/Compare 6 output Polarity */ +#define ATIM_CCER_CCXBASE(ch) (ch << 2) /* Each channel uses 4-bits */ /* 16-bit counter register */ @@ -1049,6 +1050,7 @@ #define GTIM_CCER_CC4E (1 << 12) /* Bit 12: Capture/Compare 4 output enable (TIM2-5 only) */ #define GTIM_CCER_CC4P (1 << 13) /* Bit 13: Capture/Compare 4 output Polarity (TIM2-5 only) */ #define GTIM_CCER_CC4NP (1 << 15) /* Bit 15: Capture/Compare 4 output Polarity */ +#define GTIM_CCER_CCXBASE(ch) (ch << 2) /* Each channel uses 4-bits */ /* 16-bit counter register */ diff --git a/arch/arm/src/stm32l4/stm32l4_adc.c b/arch/arm/src/stm32l4/stm32l4_adc.c index c1162ff5bd3..3c986f61590 100644 --- a/arch/arm/src/stm32l4/stm32l4_adc.c +++ b/arch/arm/src/stm32l4/stm32l4_adc.c @@ -959,12 +959,13 @@ static int adc_timinit(FAR struct stm32_dev_s *priv) /* Assume that channel is disabled and polarity is active high */ ccer_val = tim_getreg(priv, STM32L4_GTIM_CCER_OFFSET); - ccer_val &= ~(3 << (channel << 2)); + ccer_val &= ~((GTIM_CCER_CC1P | GTIM_CCER_CC1E) << + GTIM_CCER_CCXBASE(channel)); ccmr_val = (ATIM_CCMR_MODE_PWM1 << ATIM_CCMR1_OC1M_SHIFT) | (ATIM_CCMR_CCS_CCOUT << ATIM_CCMR1_CC1S_SHIFT) | ATIM_CCMR1_OC1PE; - ccer_val |= ATIM_CCER_CC1E << (channel << 2); + ccer_val |= ATIM_CCER_CC1E << GTIM_CCER_CCXBASE(channel); if (channel & 1) { diff --git a/arch/arm/src/stm32l4/stm32l4_tim.c b/arch/arm/src/stm32l4/stm32l4_tim.c index f1e62e9b680..c06cbaf0265 100644 --- a/arch/arm/src/stm32l4/stm32l4_tim.c +++ b/arch/arm/src/stm32l4/stm32l4_tim.c @@ -1157,7 +1157,8 @@ static int stm32l4_tim_setchannel(FAR struct stm32l4_tim_dev_s *dev, /* Assume that channel is disabled and polarity is active high */ ccer_val = stm32l4_getreg16(dev, STM32L4_GTIM_CCER_OFFSET); - ccer_val &= ~(3 << (channel << 2)); + ccer_val &= ~((GTIM_CCER_CC1P | GTIM_CCER_CC1E) << + GTIM_CCER_CCXBASE(channel)); /* This function is not supported on basic timers. To enable or * disable it, simply set its clock to valid frequency or zero. @@ -1186,7 +1187,7 @@ static int stm32l4_tim_setchannel(FAR struct stm32l4_tim_dev_s *dev, case STM32L4_TIM_CH_OUTPWM: ccmr_val = (ATIM_CCMR_MODE_PWM1 << ATIM_CCMR1_OC1M_SHIFT) + ATIM_CCMR1_OC1PE; - ccer_val |= ATIM_CCER_CC1E << (channel << 2); + ccer_val |= ATIM_CCER_CC1E << GTIM_CCER_CCXBASE(channel); break; default: @@ -1197,7 +1198,7 @@ static int stm32l4_tim_setchannel(FAR struct stm32l4_tim_dev_s *dev, if (mode & STM32L4_TIM_CH_POLARITY_NEG) { - ccer_val |= ATIM_CCER_CC1P << (channel << 2); + ccer_val |= ATIM_CCER_CC1P << GTIM_CCER_CCXBASE(channel); } /* Define its position (shift) and get register offset */ diff --git a/arch/arm/src/stm32l5/hardware/stm32l5_tim.h b/arch/arm/src/stm32l5/hardware/stm32l5_tim.h index 0675e025d7d..e673f9c0af7 100644 --- a/arch/arm/src/stm32l5/hardware/stm32l5_tim.h +++ b/arch/arm/src/stm32l5/hardware/stm32l5_tim.h @@ -625,6 +625,7 @@ #define ATIM_CCER_CC5P (1 << 17) /* Bit 17: Capture/Compare 5 output Polarity */ #define ATIM_CCER_CC6E (1 << 20) /* Bit 20: Capture/Compare 6 output enable */ #define ATIM_CCER_CC6P (1 << 21) /* Bit 21: Capture/Compare 6 output Polarity */ +#define ATIM_CCER_CCXBASE(ch) (ch << 2) /* Each channel uses 4-bits */ /* 16-bit counter register */ @@ -970,6 +971,7 @@ #define GTIM_CCER_CC4E (1 << 12) /* Bit 12: Capture/Compare 4 output enable (TIM2-5 only) */ #define GTIM_CCER_CC4P (1 << 13) /* Bit 13: Capture/Compare 4 output Polarity (TIM2-5 only) */ #define GTIM_CCER_CC4NP (1 << 15) /* Bit 15: Capture/Compare 4 output Polarity */ +#define GTIM_CCER_CCXBASE(ch) (ch << 2) /* Each channel uses 4-bits */ /* 16-bit counter register */ diff --git a/arch/arm/src/stm32l5/stm32l5_tim.c b/arch/arm/src/stm32l5/stm32l5_tim.c index 93009cdfbe6..5a289df9b5a 100644 --- a/arch/arm/src/stm32l5/stm32l5_tim.c +++ b/arch/arm/src/stm32l5/stm32l5_tim.c @@ -943,7 +943,8 @@ static int stm32l5_tim_setchannel(FAR struct stm32l5_tim_dev_s *dev, /* Assume that channel is disabled and polarity is active high */ ccer_val = stm32l5_getreg16(dev, STM32L5_GTIM_CCER_OFFSET); - ccer_val &= ~(3 << (channel << 2)); + ccer_val &= ~((GTIM_CCER_CC1P | GTIM_CCER_CC1E) << + GTIM_CCER_CCXBASE(channel)); /* This function is not supported on basic timers. To enable or * disable it, simply set its clock to valid frequency or zero. @@ -972,7 +973,7 @@ static int stm32l5_tim_setchannel(FAR struct stm32l5_tim_dev_s *dev, case STM32L5_TIM_CH_OUTPWM: ccmr_val = (ATIM_CCMR_MODE_PWM1 << ATIM_CCMR1_OC1M_SHIFT) + ATIM_CCMR1_OC1PE; - ccer_val |= ATIM_CCER_CC1E << (channel << 2); + ccer_val |= ATIM_CCER_CC1E << GTIM_CCER_CCXBASE(channel); break; default: @@ -983,7 +984,7 @@ static int stm32l5_tim_setchannel(FAR struct stm32l5_tim_dev_s *dev, if (mode & STM32L5_TIM_CH_POLARITY_NEG) { - ccer_val |= ATIM_CCER_CC1P << (channel << 2); + ccer_val |= ATIM_CCER_CC1P << GTIM_CCER_CCXBASE(channel); } /* Define its position (shift) and get register offset */ From b54a4c778841f3b7e63655bc7f6f73136eaa6aba Mon Sep 17 00:00:00 2001 From: Anthony Merlino Date: Sun, 16 May 2021 11:17:42 -0400 Subject: [PATCH 149/739] Replace more ATIM_/BTIM_ macros with GTIM_ macros --- arch/arm/src/stm32/stm32_dac.c | 16 ++--- arch/arm/src/stm32/stm32_foc.c | 2 +- arch/arm/src/stm32/stm32_pwm.c | 22 +++--- arch/arm/src/stm32/stm32_tim.c | 56 +++++++-------- arch/arm/src/stm32f0l0g0/stm32_pwm.c | 104 +++++++++++++-------------- arch/arm/src/stm32f0l0g0/stm32_tim.c | 52 +++++++------- arch/arm/src/stm32f7/stm32_pwm.c | 58 +++++++-------- arch/arm/src/stm32f7/stm32_tim.c | 62 ++++++++-------- arch/arm/src/stm32h7/stm32_pwm.c | 28 ++++---- arch/arm/src/stm32h7/stm32_tim.c | 50 ++++++------- arch/arm/src/stm32l4/stm32l4_dac.c | 16 ++--- arch/arm/src/stm32l4/stm32l4_pwm.c | 56 +++++++-------- arch/arm/src/stm32l4/stm32l4_tim.c | 58 +++++++-------- arch/arm/src/stm32l5/stm32l5_tim.c | 56 +++++++-------- 14 files changed, 318 insertions(+), 318 deletions(-) diff --git a/arch/arm/src/stm32/stm32_dac.c b/arch/arm/src/stm32/stm32_dac.c index 7964a06c5d5..95c190e175d 100644 --- a/arch/arm/src/stm32/stm32_dac.c +++ b/arch/arm/src/stm32/stm32_dac.c @@ -1056,7 +1056,7 @@ static int dac_send(FAR struct dac_dev_s *dev, FAR struct dac_msg_s *msg) #ifdef HAVE_TIMER if (chan->timer != TIM_INDEX_HRTIM) { - tim_modifyreg(chan, STM32_BTIM_EGR_OFFSET, 0, ATIM_EGR_UG); + tim_modifyreg(chan, STM32_GTIM_EGR_OFFSET, 0, GTIM_EGR_UG); } #endif @@ -1336,26 +1336,26 @@ static int dac_timinit(FAR struct stm32_chan_s *chan) /* Set the reload and prescaler values */ - tim_putreg(chan, STM32_BTIM_ARR_OFFSET, (uint16_t)reload); - tim_putreg(chan, STM32_BTIM_PSC_OFFSET, (uint16_t)(prescaler - 1)); + tim_putreg(chan, STM32_GTIM_ARR_OFFSET, (uint16_t)reload); + tim_putreg(chan, STM32_GTIM_PSC_OFFSET, (uint16_t)(prescaler - 1)); /* Count mode up, auto reload */ - tim_modifyreg(chan, STM32_BTIM_CR1_OFFSET, 0, ATIM_CR1_ARPE); + tim_modifyreg(chan, STM32_GTIM_CR1_OFFSET, 0, GTIM_CR1_ARPE); /* Selection TRGO selection: update */ - tim_modifyreg(chan, STM32_BTIM_CR2_OFFSET, ATIM_CR2_MMS_MASK, - ATIM_CR2_MMS_UPDATE); + tim_modifyreg(chan, STM32_GTIM_CR2_OFFSET, GTIM_CR2_MMS_MASK, + GTIM_CR2_MMS_UPDATE); /* Update DMA request enable ???? */ #if 0 - tim_modifyreg(chan, STM32_BTIM_DIER_OFFSET, 0, ATIM_DIER_UDE); + tim_modifyreg(chan, STM32_GTIM_DIER_OFFSET, 0, GTIM_DIER_UDE); #endif /* Enable the counter */ - tim_modifyreg(chan, STM32_BTIM_CR1_OFFSET, 0, ATIM_CR1_CEN); + tim_modifyreg(chan, STM32_GTIM_CR1_OFFSET, 0, GTIM_CR1_CEN); return OK; } #endif diff --git a/arch/arm/src/stm32/stm32_foc.c b/arch/arm/src/stm32/stm32_foc.c index 2dc77ca9b1a..f7d116a12ab 100644 --- a/arch/arm/src/stm32/stm32_foc.c +++ b/arch/arm/src/stm32/stm32_foc.c @@ -895,7 +895,7 @@ void stm32_foc_sync_all(void) { /* Force update event to reset CNTR */ - putreg32(ATIM_EGR_UG, egr_reg[i]); + putreg32(GTIM_EGR_UG, egr_reg[i]); } } #endif diff --git a/arch/arm/src/stm32/stm32_pwm.c b/arch/arm/src/stm32/stm32_pwm.c index ae849e5e156..1439e33deaf 100644 --- a/arch/arm/src/stm32/stm32_pwm.c +++ b/arch/arm/src/stm32/stm32_pwm.c @@ -2647,13 +2647,13 @@ static int pwm_mode_configure(FAR struct pwm_lowerhalf_s *dev, case STM32_CHANMODE_PWM1: { - chanmode = ATIM_CCMR_MODE_PWM1; + chanmode = GTIM_CCMR_MODE_PWM1; break; } case STM32_CHANMODE_PWM2: { - chanmode = ATIM_CCMR_MODE_PWM2; + chanmode = GTIM_CCMR_MODE_PWM2; break; } @@ -2974,13 +2974,13 @@ static int pwm_outputs_enable(FAR struct pwm_lowerhalf_s *dev, /* Get outputs configuration */ - regval |= ((outputs & STM32_PWM_OUT1) ? ATIM_CCER_CC1E : 0); - regval |= ((outputs & STM32_PWM_OUT1N) ? ATIM_CCER_CC1NE : 0); - regval |= ((outputs & STM32_PWM_OUT2) ? ATIM_CCER_CC2E : 0); - regval |= ((outputs & STM32_PWM_OUT2N) ? ATIM_CCER_CC2NE : 0); - regval |= ((outputs & STM32_PWM_OUT3) ? ATIM_CCER_CC3E : 0); - regval |= ((outputs & STM32_PWM_OUT3N) ? ATIM_CCER_CC3NE : 0); - regval |= ((outputs & STM32_PWM_OUT4) ? ATIM_CCER_CC4E : 0); + regval |= ((outputs & STM32_PWM_OUT1) ? GTIM_CCER_CC1E : 0); + regval |= ((outputs & STM32_PWM_OUT1N) ? GTIM_CCER_CC1NE : 0); + regval |= ((outputs & STM32_PWM_OUT2) ? GTIM_CCER_CC2E : 0); + regval |= ((outputs & STM32_PWM_OUT2N) ? GTIM_CCER_CC2NE : 0); + regval |= ((outputs & STM32_PWM_OUT3) ? GTIM_CCER_CC3E : 0); + regval |= ((outputs & STM32_PWM_OUT3N) ? GTIM_CCER_CC3NE : 0); + regval |= ((outputs & STM32_PWM_OUT4) ? GTIM_CCER_CC4E : 0); /* NOTE: CC4N doesn't exist, but some docs show configuration bits for it */ @@ -3094,7 +3094,7 @@ static int pwm_soft_update(FAR struct pwm_lowerhalf_s *dev) { FAR struct stm32_pwmtimer_s *priv = (FAR struct stm32_pwmtimer_s *)dev; - pwm_putreg(priv, STM32_GTIM_EGR_OFFSET, ATIM_EGR_UG); + pwm_putreg(priv, STM32_GTIM_EGR_OFFSET, GTIM_EGR_UG); return OK; } @@ -3486,7 +3486,7 @@ static int pwm_pulsecount_timer(FAR struct pwm_lowerhalf_s *dev, /* Clear all pending interrupts and enable the update interrupt. */ pwm_putreg(priv, STM32_GTIM_SR_OFFSET, 0); - pwm_putreg(priv, STM32_GTIM_DIER_OFFSET, ATIM_DIER_UIE); + pwm_putreg(priv, STM32_GTIM_DIER_OFFSET, GTIM_DIER_UIE); /* Enable the timer */ diff --git a/arch/arm/src/stm32/stm32_tim.c b/arch/arm/src/stm32/stm32_tim.c index c1813eeda27..91f631cff1c 100644 --- a/arch/arm/src/stm32/stm32_tim.c +++ b/arch/arm/src/stm32/stm32_tim.c @@ -599,9 +599,9 @@ static inline void stm32_putreg32(FAR struct stm32_tim_dev_s *dev, static void stm32_tim_reload_counter(FAR struct stm32_tim_dev_s *dev) { - uint16_t val = stm32_getreg16(dev, STM32_BTIM_EGR_OFFSET); - val |= ATIM_EGR_UG; - stm32_putreg16(dev, STM32_BTIM_EGR_OFFSET, val); + uint16_t val = stm32_getreg16(dev, STM32_GTIM_EGR_OFFSET); + val |= GTIM_EGR_UG; + stm32_putreg16(dev, STM32_GTIM_EGR_OFFSET, val); } /**************************************************************************** @@ -610,10 +610,10 @@ static void stm32_tim_reload_counter(FAR struct stm32_tim_dev_s *dev) static void stm32_tim_enable(FAR struct stm32_tim_dev_s *dev) { - uint16_t val = stm32_getreg16(dev, STM32_BTIM_CR1_OFFSET); - val |= ATIM_CR1_CEN; + uint16_t val = stm32_getreg16(dev, STM32_GTIM_CR1_OFFSET); + val |= GTIM_CR1_CEN; stm32_tim_reload_counter(dev); - stm32_putreg16(dev, STM32_BTIM_CR1_OFFSET, val); + stm32_putreg16(dev, STM32_GTIM_CR1_OFFSET, val); } /**************************************************************************** @@ -622,9 +622,9 @@ static void stm32_tim_enable(FAR struct stm32_tim_dev_s *dev) static void stm32_tim_disable(FAR struct stm32_tim_dev_s *dev) { - uint16_t val = stm32_getreg16(dev, STM32_BTIM_CR1_OFFSET); - val &= ~ATIM_CR1_CEN; - stm32_putreg16(dev, STM32_BTIM_CR1_OFFSET, val); + uint16_t val = stm32_getreg16(dev, STM32_GTIM_CR1_OFFSET); + val &= ~GTIM_CR1_CEN; + stm32_putreg16(dev, STM32_GTIM_CR1_OFFSET, val); } /**************************************************************************** @@ -669,7 +669,7 @@ static void stm32_tim_gpioconfig(uint32_t cfg, stm32_tim_channel_t mode) static int stm32_tim_setmode(FAR struct stm32_tim_dev_s *dev, stm32_tim_mode_t mode) { - uint16_t val = ATIM_CR1_CEN | ATIM_CR1_ARPE; + uint16_t val = GTIM_CR1_CEN | GTIM_CR1_ARPE; DEBUGASSERT(dev != NULL); @@ -699,7 +699,7 @@ static int stm32_tim_setmode(FAR struct stm32_tim_dev_s *dev, break; case STM32_TIM_MODE_DOWN: - val |= ATIM_CR1_DIR; + val |= GTIM_CR1_DIR; case STM32_TIM_MODE_UP: break; @@ -709,11 +709,11 @@ static int stm32_tim_setmode(FAR struct stm32_tim_dev_s *dev, * Interrupts are generated on compare, when counting down */ - val |= ATIM_CR1_CENTER1; + val |= GTIM_CR1_CENTER1; break; case STM32_TIM_MODE_PULSE: - val |= ATIM_CR1_OPM; + val |= GTIM_CR1_OPM; break; default: @@ -721,7 +721,7 @@ static int stm32_tim_setmode(FAR struct stm32_tim_dev_s *dev, } stm32_tim_reload_counter(dev); - stm32_putreg16(dev, STM32_BTIM_CR1_OFFSET, val); + stm32_putreg16(dev, STM32_GTIM_CR1_OFFSET, val); #if STM32_NATIM > 0 /* Advanced registers require Main Output Enable */ @@ -878,7 +878,7 @@ static int stm32_tim_setclock(FAR struct stm32_tim_dev_s *dev, uint32_t freq) prescaler = 0xffff; } - stm32_putreg16(dev, STM32_BTIM_PSC_OFFSET, prescaler); + stm32_putreg16(dev, STM32_GTIM_PSC_OFFSET, prescaler); stm32_tim_enable(dev); return prescaler; @@ -892,7 +892,7 @@ static void stm32_tim_setperiod(FAR struct stm32_tim_dev_s *dev, uint32_t period) { DEBUGASSERT(dev != NULL); - stm32_putreg32(dev, STM32_BTIM_ARR_OFFSET, period); + stm32_putreg32(dev, STM32_GTIM_ARR_OFFSET, period); } /**************************************************************************** @@ -903,8 +903,8 @@ static uint32_t stm32_tim_getcounter(FAR struct stm32_tim_dev_s *dev) { DEBUGASSERT(dev != NULL); return stm32_tim_getwidth(dev) > 16 ? - stm32_getreg32(dev, STM32_BTIM_CNT_OFFSET) : - (uint32_t)stm32_getreg16(dev, STM32_BTIM_CNT_OFFSET); + stm32_getreg32(dev, STM32_GTIM_CNT_OFFSET) : + (uint32_t)stm32_getreg16(dev, STM32_GTIM_CNT_OFFSET); } /**************************************************************************** @@ -918,11 +918,11 @@ static void stm32_tim_setcounter(FAR struct stm32_tim_dev_s *dev, if (stm32_tim_getwidth(dev) > 16) { - stm32_putreg32(dev, STM32_BTIM_CNT_OFFSET, count); + stm32_putreg32(dev, STM32_GTIM_CNT_OFFSET, count); } else { - stm32_putreg16(dev, STM32_BTIM_CNT_OFFSET, (uint16_t)count); + stm32_putreg16(dev, STM32_GTIM_CNT_OFFSET, (uint16_t)count); } } @@ -1013,9 +1013,9 @@ static int stm32_tim_setchannel(FAR struct stm32_tim_dev_s *dev, break; case STM32_TIM_CH_OUTPWM: - ccmr_val = (ATIM_CCMR_MODE_PWM1 << ATIM_CCMR1_OC1M_SHIFT) + - ATIM_CCMR1_OC1PE; - ccer_val |= ATIM_CCER_CC1E << GTIM_CCER_CCXBASE(channel); + ccmr_val = (GTIM_CCMR_MODE_PWM1 << GTIM_CCMR1_OC1M_SHIFT) + + GTIM_CCMR1_OC1PE; + ccer_val |= GTIM_CCER_CC1E << GTIM_CCER_CCXBASE(channel); break; default: @@ -1026,7 +1026,7 @@ static int stm32_tim_setchannel(FAR struct stm32_tim_dev_s *dev, if (mode & STM32_TIM_CH_POLARITY_NEG) { - ccer_val |= ATIM_CCER_CC1P << GTIM_CCER_CCXBASE(channel); + ccer_val |= GTIM_CCER_CC1P << GTIM_CCER_CCXBASE(channel); } /* Define its position (shift) and get register offset */ @@ -1672,7 +1672,7 @@ static int stm32_tim_setisr(FAR struct stm32_tim_dev_s *dev, xcpt_t handler, static void stm32_tim_enableint(FAR struct stm32_tim_dev_s *dev, int source) { DEBUGASSERT(dev != NULL); - stm32_modifyreg16(dev, STM32_BTIM_DIER_OFFSET, 0, source); + stm32_modifyreg16(dev, STM32_GTIM_DIER_OFFSET, 0, source); } /**************************************************************************** @@ -1682,7 +1682,7 @@ static void stm32_tim_enableint(FAR struct stm32_tim_dev_s *dev, int source) static void stm32_tim_disableint(FAR struct stm32_tim_dev_s *dev, int source) { DEBUGASSERT(dev != NULL); - stm32_modifyreg16(dev, STM32_BTIM_DIER_OFFSET, source, 0); + stm32_modifyreg16(dev, STM32_GTIM_DIER_OFFSET, source, 0); } /**************************************************************************** @@ -1691,7 +1691,7 @@ static void stm32_tim_disableint(FAR struct stm32_tim_dev_s *dev, int source) static void stm32_tim_ackint(FAR struct stm32_tim_dev_s *dev, int source) { - stm32_putreg16(dev, STM32_BTIM_SR_OFFSET, ~source); + stm32_putreg16(dev, STM32_GTIM_SR_OFFSET, ~source); } /**************************************************************************** @@ -1700,7 +1700,7 @@ static void stm32_tim_ackint(FAR struct stm32_tim_dev_s *dev, int source) static int stm32_tim_checkint(FAR struct stm32_tim_dev_s *dev, int source) { - uint16_t regval = stm32_getreg16(dev, STM32_BTIM_SR_OFFSET); + uint16_t regval = stm32_getreg16(dev, STM32_GTIM_SR_OFFSET); return (regval & source) ? 1 : 0; } diff --git a/arch/arm/src/stm32f0l0g0/stm32_pwm.c b/arch/arm/src/stm32f0l0g0/stm32_pwm.c index d76424d4a55..f63cb6fbeac 100644 --- a/arch/arm/src/stm32f0l0g0/stm32_pwm.c +++ b/arch/arm/src/stm32f0l0g0/stm32_pwm.c @@ -551,30 +551,30 @@ static struct stm32_pwmtimer_s g_pwm17dev = static bool stm32pwm_reg_is_32bit(uint8_t timtype, uint32_t offset) { - if (offset == STM32_ATIM_CCMR1_OFFSET || - offset == STM32_ATIM_SMCR_OFFSET || - offset == STM32_ATIM_BDTR_OFFSET) + if (offset == STM32_GTIM_CCMR1_OFFSET || + offset == STM32_GTIM_SMCR_OFFSET || + offset == STM32_GTIM_BDTR_OFFSET) { return true; } if (timtype == TIMTYPE_GENERAL16) { - if (offset == STM32_ATIM_CCMR2_OFFSET || - offset == STM32_ATIM_AF1_OFFSET || - offset == STM32_ATIM_TISEL_OFFSET) + if (offset == STM32_GTIM_CCMR2_OFFSET || + offset == STM32_GTIM_AF1_OFFSET || + offset == STM32_GTIM_TISEL_OFFSET) { return true; } } else if (timtype == TIMTYPE_GENERAL32) { - if (offset == STM32_ATIM_CNT_OFFSET || - offset == STM32_ATIM_ARR_OFFSET || - offset == STM32_ATIM_CCR1_OFFSET || - offset == STM32_ATIM_CCR2_OFFSET || - offset == STM32_ATIM_CCR3_OFFSET || - offset == STM32_ATIM_CCR4_OFFSET) + if (offset == STM32_GTIM_CNT_OFFSET || + offset == STM32_GTIM_ARR_OFFSET || + offset == STM32_GTIM_CCR1_OFFSET || + offset == STM32_GTIM_CCR2_OFFSET || + offset == STM32_GTIM_CCR3_OFFSET || + offset == STM32_GTIM_CCR4_OFFSET) { return true; } @@ -751,17 +751,17 @@ static void stm32pwm_dumpregs(struct stm32_pwmtimer_s *priv, stm32pwm_getreg(priv, STM32_ATIM_DMAR_OFFSET)); pwminfo(" AF1: %04x TISEL: %04x\n", - stm32pwm_getreg(priv, STM32_GTIM_AF1_OFFSET), - stm32pwm_getreg(priv, STM32_GTIM_TISEL_OFFSET)); + stm32pwm_getreg(priv, STM32_ATIM_AF1_OFFSET), + stm32pwm_getreg(priv, STM32_ATIM_TISEL_OFFSET)); } else #endif { pwminfo(" RCR: %04x BDTR: %04x DCR: %04x DMAR: %04x\n", - stm32pwm_getreg(priv, STM32_ATIM_RCR_OFFSET), - stm32pwm_getreg(priv, STM32_ATIM_BDTR_OFFSET), - stm32pwm_getreg(priv, STM32_ATIM_DCR_OFFSET), - stm32pwm_getreg(priv, STM32_ATIM_DMAR_OFFSET)); + stm32pwm_getreg(priv, STM32_GTIM_RCR_OFFSET), + stm32pwm_getreg(priv, STM32_GTIM_BDTR_OFFSET), + stm32pwm_getreg(priv, STM32_GTIM_DCR_OFFSET), + stm32pwm_getreg(priv, STM32_GTIM_DMAR_OFFSET)); pwminfo(" AF1: %04x TISEL: %04x\n", stm32pwm_getreg(priv, STM32_GTIM_AF1_OFFSET), stm32pwm_getreg(priv, STM32_GTIM_TISEL_OFFSET)); @@ -1101,7 +1101,7 @@ static int stm32pwm_timer(FAR struct stm32_pwmtimer_s *priv, * preload the RCR into active repetition counter. */ - stm32pwm_putreg(priv, STM32_GTIM_EGR_OFFSET, ATIM_EGR_UG); + stm32pwm_putreg(priv, STM32_ATIM_EGR_OFFSET, ATIM_EGR_UG); /* Now set the value of the RCR that will be loaded on the next * update event. @@ -1123,7 +1123,7 @@ static int stm32pwm_timer(FAR struct stm32_pwmtimer_s *priv, /* Generate an update event to reload the prescaler */ - stm32pwm_putreg(priv, STM32_GTIM_EGR_OFFSET, ATIM_EGR_UG); + stm32pwm_putreg(priv, STM32_ATIM_EGR_OFFSET, ATIM_EGR_UG); } } else @@ -1131,7 +1131,7 @@ static int stm32pwm_timer(FAR struct stm32_pwmtimer_s *priv, { /* Generate an update event to reload the prescaler (all timers) */ - stm32pwm_putreg(priv, STM32_GTIM_EGR_OFFSET, ATIM_EGR_UG); + stm32pwm_putreg(priv, STM32_GTIM_EGR_OFFSET, GTIM_EGR_UG); } /* Handle channel specific setup */ @@ -1199,30 +1199,30 @@ static int stm32pwm_timer(FAR struct stm32_pwmtimer_s *priv, switch (mode) { case STM32_CHANMODE_PWM1: - chanmode = ATIM_CCMR_MODE_PWM1; + chanmode = GTIM_CCMR_MODE_PWM1; break; case STM32_CHANMODE_PWM2: - chanmode = ATIM_CCMR_MODE_PWM2; + chanmode = GTIM_CCMR_MODE_PWM2; break; case STM32_CHANMODE_COMBINED1: - chanmode = ATIM_CCMR_MODE_COMBINED1; + chanmode = GTIM_CCMR_MODE_COMBINED1; ocmbit = true; break; case STM32_CHANMODE_COMBINED2: - chanmode = ATIM_CCMR_MODE_COMBINED2; + chanmode = GTIM_CCMR_MODE_COMBINED2; ocmbit = true; break; case STM32_CHANMODE_ASYMMETRIC1: - chanmode = ATIM_CCMR_MODE_ASYMMETRIC1; + chanmode = GTIM_CCMR_MODE_ASYMMETRIC1; ocmbit = true; break; case STM32_CHANMODE_ASYMMETRIC2: - chanmode = ATIM_CCMR_MODE_ASYMMETRIC2; + chanmode = GTIM_CCMR_MODE_ASYMMETRIC2; ocmbit = true; break; @@ -1237,13 +1237,13 @@ static int stm32pwm_timer(FAR struct stm32_pwmtimer_s *priv, { /* Set the CCMR1 mode values (leave CCMR2 zero) */ - ocmode1 |= (ATIM_CCMR_CCS_CCOUT << ATIM_CCMR1_CC1S_SHIFT) | - (chanmode << ATIM_CCMR1_OC1M_SHIFT) | - ATIM_CCMR1_OC1PE; + ocmode1 |= (GTIM_CCMR_CCS_CCOUT << GTIM_CCMR1_CC1S_SHIFT) | + (chanmode << GTIM_CCMR1_OC1M_SHIFT) | + GTIM_CCMR1_OC1PE; if (ocmbit) { - ocmode1 |= ATIM_CCMR1_OC1M; + ocmode1 |= GTIM_CCMR1_OC1M; } /* Set the duty cycle by writing to the CCR register for this @@ -1256,8 +1256,8 @@ static int stm32pwm_timer(FAR struct stm32_pwmtimer_s *priv, * output compare mode. */ - ccmr1 &= ~(ATIM_CCMR1_CC1S_MASK | ATIM_CCMR1_OC1M_MASK | - ATIM_CCMR1_OC1PE | ATIM_CCMR1_OC1M); + ccmr1 &= ~(GTIM_CCMR1_CC1S_MASK | GTIM_CCMR1_OC1M_MASK | + GTIM_CCMR1_OC1PE | GTIM_CCMR1_OC1M); stm32pwm_output_configure(priv, channel); } break; @@ -1266,13 +1266,13 @@ static int stm32pwm_timer(FAR struct stm32_pwmtimer_s *priv, { /* Set the CCMR1 mode values (leave CCMR2 zero) */ - ocmode1 |= (ATIM_CCMR_CCS_CCOUT << ATIM_CCMR1_CC2S_SHIFT) | - (chanmode << ATIM_CCMR1_OC2M_SHIFT) | - ATIM_CCMR1_OC2PE; + ocmode1 |= (GTIM_CCMR_CCS_CCOUT << GTIM_CCMR1_CC2S_SHIFT) | + (chanmode << GTIM_CCMR1_OC2M_SHIFT) | + GTIM_CCMR1_OC2PE; if (ocmbit) { - ocmode1 |= ATIM_CCMR1_OC2M; + ocmode1 |= GTIM_CCMR1_OC2M; } /* Set the duty cycle by writing to the CCR register for this @@ -1285,8 +1285,8 @@ static int stm32pwm_timer(FAR struct stm32_pwmtimer_s *priv, * output compare mode. */ - ccmr1 &= ~(ATIM_CCMR1_CC2S_MASK | ATIM_CCMR1_OC2M_MASK | - ATIM_CCMR1_OC2PE | ATIM_CCMR1_OC2M); + ccmr1 &= ~(GTIM_CCMR1_CC2S_MASK | GTIM_CCMR1_OC2M_MASK | + GTIM_CCMR1_OC2PE | GTIM_CCMR1_OC2M); stm32pwm_output_configure(priv, channel); } break; @@ -1296,13 +1296,13 @@ static int stm32pwm_timer(FAR struct stm32_pwmtimer_s *priv, { /* Set the CCMR2 mode values (leave CCMR1 zero) */ - ocmode2 |= (ATIM_CCMR_CCS_CCOUT << ATIM_CCMR2_CC3S_SHIFT) | - (chanmode << ATIM_CCMR2_OC3M_SHIFT) | - ATIM_CCMR2_OC3PE; + ocmode2 |= (GTIM_CCMR_CCS_CCOUT << GTIM_CCMR2_CC3S_SHIFT) | + (chanmode << GTIM_CCMR2_OC3M_SHIFT) | + GTIM_CCMR2_OC3PE; if (ocmbit) { - ocmode2 |= ATIM_CCMR2_OC3M; + ocmode2 |= GTIM_CCMR2_OC3M; } /* Set the duty cycle by writing to the CCR register for this @@ -1315,8 +1315,8 @@ static int stm32pwm_timer(FAR struct stm32_pwmtimer_s *priv, * output compare mode. */ - ccmr2 &= ~(ATIM_CCMR2_CC3S_MASK | ATIM_CCMR2_OC3M_MASK | - ATIM_CCMR2_OC3PE | ATIM_CCMR2_OC3M); + ccmr2 &= ~(GTIM_CCMR2_CC3S_MASK | GTIM_CCMR2_OC3M_MASK | + GTIM_CCMR2_OC3PE | GTIM_CCMR2_OC3M); stm32pwm_output_configure(priv, channel); } break; @@ -1325,13 +1325,13 @@ static int stm32pwm_timer(FAR struct stm32_pwmtimer_s *priv, { /* Set the CCMR2 mode values (leave CCMR1 zero) */ - ocmode2 |= (ATIM_CCMR_CCS_CCOUT << ATIM_CCMR2_CC4S_SHIFT) | - (chanmode << ATIM_CCMR2_OC4M_SHIFT) | - ATIM_CCMR2_OC4PE; + ocmode2 |= (GTIM_CCMR_CCS_CCOUT << GTIM_CCMR2_CC4S_SHIFT) | + (chanmode << GTIM_CCMR2_OC4M_SHIFT) | + GTIM_CCMR2_OC4PE; if (ocmbit) { - ocmode2 |= ATIM_CCMR2_OC4M; + ocmode2 |= GTIM_CCMR2_OC4M; } /* Set the duty cycle by writing to the CCR register for this @@ -1344,8 +1344,8 @@ static int stm32pwm_timer(FAR struct stm32_pwmtimer_s *priv, * output compare mode. */ - ccmr2 &= ~(ATIM_CCMR2_CC4S_MASK | ATIM_CCMR2_OC4M_MASK | - ATIM_CCMR2_OC4PE | ATIM_CCMR2_OC4M); + ccmr2 &= ~(GTIM_CCMR2_CC4S_MASK | GTIM_CCMR2_OC4M_MASK | + GTIM_CCMR2_OC4PE | GTIM_CCMR2_OC4M); stm32pwm_output_configure(priv, channel); } break; @@ -1406,7 +1406,7 @@ static int stm32pwm_timer(FAR struct stm32_pwmtimer_s *priv, /* Clear all pending interrupts and enable the update interrupt. */ stm32pwm_putreg(priv, STM32_GTIM_SR_OFFSET, 0); - stm32pwm_putreg(priv, STM32_GTIM_DIER_OFFSET, ATIM_DIER_UIE); + stm32pwm_putreg(priv, STM32_GTIM_DIER_OFFSET, GTIM_DIER_UIE); /* Enable the timer */ diff --git a/arch/arm/src/stm32f0l0g0/stm32_tim.c b/arch/arm/src/stm32f0l0g0/stm32_tim.c index e4db4065191..8582988de06 100644 --- a/arch/arm/src/stm32f0l0g0/stm32_tim.c +++ b/arch/arm/src/stm32f0l0g0/stm32_tim.c @@ -490,24 +490,24 @@ static inline void stm32_putreg32(FAR struct stm32_tim_dev_s *dev, static void stm32_tim_reload_counter(FAR struct stm32_tim_dev_s *dev) { - uint16_t val = stm32_getreg16(dev, STM32_BTIM_EGR_OFFSET); - val |= ATIM_EGR_UG; - stm32_putreg16(dev, STM32_BTIM_EGR_OFFSET, val); + uint16_t val = stm32_getreg16(dev, STM32_GTIM_EGR_OFFSET); + val |= GTIM_EGR_UG; + stm32_putreg16(dev, STM32_GTIM_EGR_OFFSET, val); } static void stm32_tim_enable(FAR struct stm32_tim_dev_s *dev) { - uint16_t val = stm32_getreg16(dev, STM32_BTIM_CR1_OFFSET); - val |= ATIM_CR1_CEN; + uint16_t val = stm32_getreg16(dev, STM32_GTIM_CR1_OFFSET); + val |= GTIM_CR1_CEN; stm32_tim_reload_counter(dev); - stm32_putreg16(dev, STM32_BTIM_CR1_OFFSET, val); + stm32_putreg16(dev, STM32_GTIM_CR1_OFFSET, val); } static void stm32_tim_disable(FAR struct stm32_tim_dev_s *dev) { - uint16_t val = stm32_getreg16(dev, STM32_BTIM_CR1_OFFSET); - val &= ~ATIM_CR1_CEN; - stm32_putreg16(dev, STM32_BTIM_CR1_OFFSET, val); + uint16_t val = stm32_getreg16(dev, STM32_GTIM_CR1_OFFSET); + val &= ~GTIM_CR1_CEN; + stm32_putreg16(dev, STM32_GTIM_CR1_OFFSET, val); } /* Reset timer into system default state, but do not affect output/input @@ -648,7 +648,7 @@ static int stm32_tim_setclock(FAR struct stm32_tim_dev_s *dev, uint32_t freq) /* PSC_OFFSET is the same for ATIM, BTIM or GTIM */ - stm32_putreg16(dev, STM32_BTIM_PSC_OFFSET, prescaler); + stm32_putreg16(dev, STM32_GTIM_PSC_OFFSET, prescaler); stm32_tim_enable(dev); return prescaler; @@ -718,7 +718,7 @@ static uint32_t stm32_tim_getclock(FAR struct stm32_tim_dev_s *dev) return -EINVAL; } - prescaler = stm32_getreg16(dev, STM32_BTIM_PSC_OFFSET); + prescaler = stm32_getreg16(dev, STM32_GTIM_PSC_OFFSET); clock = freqin / (prescaler + 1); return clock; } @@ -731,13 +731,13 @@ static void stm32_tim_setperiod(FAR struct stm32_tim_dev_s *dev, /* ARR_OFFSET is the same for ATIM, BTIM or GTIM */ - stm32_putreg32(dev, STM32_BTIM_ARR_OFFSET, period); + stm32_putreg32(dev, STM32_GTIM_ARR_OFFSET, period); } static uint32_t stm32_tim_getperiod (FAR struct stm32_tim_dev_s *dev) { DEBUGASSERT(dev != NULL); - return stm32_getreg32 (dev, STM32_BTIM_ARR_OFFSET); + return stm32_getreg32 (dev, STM32_GTIM_ARR_OFFSET); } static uint32_t stm32_tim_getcounter(FAR struct stm32_tim_dev_s *dev) @@ -752,7 +752,7 @@ static uint32_t stm32_tim_getcounter(FAR struct stm32_tim_dev_s *dev) * reset it it result when not TIM2 or TIM5. */ - uint32_t counter = stm32_getreg32(dev, STM32_BTIM_CNT_OFFSET); + uint32_t counter = stm32_getreg32(dev, STM32_GTIM_CNT_OFFSET); counter &= 0xffff; return counter; } @@ -853,7 +853,7 @@ static void stm32_tim_enableint(FAR struct stm32_tim_dev_s *dev, int source) /* DIER_OFFSET is the same for ATIM, BTIM or GTIM */ - stm32_modifyreg16(dev, STM32_BTIM_DIER_OFFSET, 0, source); + stm32_modifyreg16(dev, STM32_GTIM_DIER_OFFSET, 0, source); } static void stm32_tim_disableint(FAR struct stm32_tim_dev_s *dev, int source) @@ -862,14 +862,14 @@ static void stm32_tim_disableint(FAR struct stm32_tim_dev_s *dev, int source) /* DIER_OFFSET is the same for ATIM, BTIM or GTIM */ - stm32_modifyreg16(dev, STM32_BTIM_DIER_OFFSET, source, 0); + stm32_modifyreg16(dev, STM32_GTIM_DIER_OFFSET, source, 0); } static void stm32_tim_ackint(FAR struct stm32_tim_dev_s *dev, int source) { /* SR_OFFSET is the same for ATIM, BTIM or GTIM */ - stm32_putreg16(dev, STM32_BTIM_SR_OFFSET, ~source); + stm32_putreg16(dev, STM32_GTIM_SR_OFFSET, ~source); } /**************************************************************************** @@ -880,7 +880,7 @@ static int stm32_tim_setmode(FAR struct stm32_tim_dev_s *dev, stm32_tim_mode_t mode) { tmrinfo("Set mode=%d\n", mode); - uint16_t val = ATIM_CR1_CEN | ATIM_CR1_ARPE; + uint16_t val = GTIM_CR1_CEN | GTIM_CR1_ARPE; DEBUGASSERT(dev != NULL); @@ -903,13 +903,13 @@ static int stm32_tim_setmode(FAR struct stm32_tim_dev_s *dev, break; case STM32_TIM_MODE_DOWN: - val |= ATIM_CR1_DIR; + val |= GTIM_CR1_DIR; case STM32_TIM_MODE_UP: break; case STM32_TIM_MODE_UPDOWN: - val |= ATIM_CR1_CENTER1; + val |= GTIM_CR1_CENTER1; /* Our default: Interrupts are generated on compare, when counting * down @@ -918,7 +918,7 @@ static int stm32_tim_setmode(FAR struct stm32_tim_dev_s *dev, break; case STM32_TIM_MODE_PULSE: - val |= ATIM_CR1_OPM; + val |= GTIM_CR1_OPM; break; default: @@ -929,7 +929,7 @@ static int stm32_tim_setmode(FAR struct stm32_tim_dev_s *dev, /* CR1_OFFSET is the same for ATIM, BTIM or GTIM */ - stm32_putreg16(dev, STM32_BTIM_CR1_OFFSET, val); + stm32_putreg16(dev, STM32_GTIM_CR1_OFFSET, val); /* Advanced registers require Main Output Enable */ #if defined(CONFIG_STM32F0L0G0_TIM1) || defined(CONFIG_STM32F0L0G0_TIM8) @@ -990,9 +990,9 @@ static int stm32_tim_setchannel(FAR struct stm32_tim_dev_s *dev, break; case STM32_TIM_CH_OUTPWM: - ccmr_val = (ATIM_CCMR_MODE_PWM1 << ATIM_CCMR1_OC1M_SHIFT) + - ATIM_CCMR1_OC1PE; - ccer_val |= ATIM_CCER_CC1E << GTIM_CCER_CCXBASE(channel); + ccmr_val = (GTIM_CCMR_MODE_PWM1 << GTIM_CCMR1_OC1M_SHIFT) + + GTIM_CCMR1_OC1PE; + ccer_val |= GTIM_CCER_CC1E << GTIM_CCER_CCXBASE(channel); break; default: @@ -1003,7 +1003,7 @@ static int stm32_tim_setchannel(FAR struct stm32_tim_dev_s *dev, if (mode & STM32_TIM_CH_POLARITY_NEG) { - ccer_val |= ATIM_CCER_CC1P << GTIM_CCER_CCXBASE(channel); + ccer_val |= GTIM_CCER_CC1P << GTIM_CCER_CCXBASE(channel); } /* Define its position (shift) and get register offset */ diff --git a/arch/arm/src/stm32f7/stm32_pwm.c b/arch/arm/src/stm32f7/stm32_pwm.c index bca3c8a6115..a0c8cd3de16 100644 --- a/arch/arm/src/stm32f7/stm32_pwm.c +++ b/arch/arm/src/stm32f7/stm32_pwm.c @@ -1345,7 +1345,7 @@ static int pwm_timer(FAR struct stm32_pwmtimer_s *priv, /* Generate an update event to reload the prescaler */ - pwm_putreg(priv, STM32_GTIM_EGR_OFFSET, ATIM_EGR_UG); + pwm_putreg(priv, STM32_ATIM_EGR_OFFSET, ATIM_EGR_UG); } } else @@ -1353,7 +1353,7 @@ static int pwm_timer(FAR struct stm32_pwmtimer_s *priv, { /* Generate an update event to reload the prescaler (all timers) */ - pwm_putreg(priv, STM32_GTIM_EGR_OFFSET, ATIM_EGR_UG); + pwm_putreg(priv, STM32_GTIM_EGR_OFFSET, GTIM_EGR_UG); } /* Handle channel specific setup */ @@ -1419,11 +1419,11 @@ static int pwm_timer(FAR struct stm32_pwmtimer_s *priv, switch (mode) { case STM32_CHANMODE_PWM1: - chanmode = ATIM_CCMR_MODE_PWM1; + chanmode = GTIM_CCMR_MODE_PWM1; break; case STM32_CHANMODE_PWM2: - chanmode = ATIM_CCMR_MODE_PWM2; + chanmode = GTIM_CCMR_MODE_PWM2; break; default: @@ -1437,13 +1437,13 @@ static int pwm_timer(FAR struct stm32_pwmtimer_s *priv, { /* Select the CCER enable bit for this channel */ - ccenable |= ATIM_CCER_CC1E; + ccenable |= GTIM_CCER_CC1E; /* Set the CCMR1 mode values (leave CCMR2 zero) */ - ocmode1 |= (ATIM_CCMR_CCS_CCOUT << ATIM_CCMR1_CC1S_SHIFT) | - (chanmode << ATIM_CCMR1_OC1M_SHIFT) | - ATIM_CCMR1_OC1PE; + ocmode1 |= (GTIM_CCMR_CCS_CCOUT << GTIM_CCMR1_CC1S_SHIFT) | + (chanmode << GTIM_CCMR1_OC1M_SHIFT) | + GTIM_CCMR1_OC1PE; /* Set the duty cycle by writing to the CCR register for this * channel @@ -1457,13 +1457,13 @@ static int pwm_timer(FAR struct stm32_pwmtimer_s *priv, { /* Select the CCER enable bit for this channel */ - ccenable |= ATIM_CCER_CC2E; + ccenable |= GTIM_CCER_CC2E; /* Set the CCMR1 mode values (leave CCMR2 zero) */ - ocmode1 |= (ATIM_CCMR_CCS_CCOUT << ATIM_CCMR1_CC2S_SHIFT) | - (chanmode << ATIM_CCMR1_OC2M_SHIFT) | - ATIM_CCMR1_OC2PE; + ocmode1 |= (GTIM_CCMR_CCS_CCOUT << GTIM_CCMR1_CC2S_SHIFT) | + (chanmode << GTIM_CCMR1_OC2M_SHIFT) | + GTIM_CCMR1_OC2PE; /* Set the duty cycle by writing to the CCR register for this * channel @@ -1477,13 +1477,13 @@ static int pwm_timer(FAR struct stm32_pwmtimer_s *priv, { /* Select the CCER enable bit for this channel */ - ccenable |= ATIM_CCER_CC3E; + ccenable |= GTIM_CCER_CC3E; /* Set the CCMR2 mode values (leave CCMR1 zero) */ - ocmode2 |= (ATIM_CCMR_CCS_CCOUT << ATIM_CCMR2_CC3S_SHIFT) | - (chanmode << ATIM_CCMR2_OC3M_SHIFT) | - ATIM_CCMR2_OC3PE; + ocmode2 |= (GTIM_CCMR_CCS_CCOUT << GTIM_CCMR2_CC3S_SHIFT) | + (chanmode << GTIM_CCMR2_OC3M_SHIFT) | + GTIM_CCMR2_OC3PE; /* Set the duty cycle by writing to the CCR register for this * channel @@ -1497,13 +1497,13 @@ static int pwm_timer(FAR struct stm32_pwmtimer_s *priv, { /* Select the CCER enable bit for this channel */ - ccenable |= ATIM_CCER_CC4E; + ccenable |= GTIM_CCER_CC4E; /* Set the CCMR2 mode values (leave CCMR1 zero) */ - ocmode2 |= (ATIM_CCMR_CCS_CCOUT << ATIM_CCMR2_CC4S_SHIFT) | - (chanmode << ATIM_CCMR2_OC4M_SHIFT) | - ATIM_CCMR2_OC4PE; + ocmode2 |= (GTIM_CCMR_CCS_CCOUT << GTIM_CCMR2_CC4S_SHIFT) | + (chanmode << GTIM_CCMR2_OC4M_SHIFT) | + GTIM_CCMR2_OC4PE; /* Set the duty cycle by writing to the CCR register for this * channel @@ -1535,10 +1535,10 @@ static int pwm_timer(FAR struct stm32_pwmtimer_s *priv, * mode */ - ccmr1 &= ~(ATIM_CCMR1_CC1S_MASK | ATIM_CCMR1_OC1M_MASK | ATIM_CCMR1_OC1PE | - ATIM_CCMR1_CC2S_MASK | ATIM_CCMR1_OC2M_MASK | ATIM_CCMR1_OC2PE); - ccmr2 &= ~(ATIM_CCMR2_CC3S_MASK | ATIM_CCMR2_OC3M_MASK | ATIM_CCMR2_OC3PE | - ATIM_CCMR2_CC4S_MASK | ATIM_CCMR2_OC4M_MASK | ATIM_CCMR2_OC4PE); + ccmr1 &= ~(GTIM_CCMR1_CC1S_MASK | GTIM_CCMR1_OC1M_MASK | GTIM_CCMR1_OC1PE | + GTIM_CCMR1_CC2S_MASK | GTIM_CCMR1_OC2M_MASK | GTIM_CCMR1_OC2PE); + ccmr2 &= ~(GTIM_CCMR2_CC3S_MASK | GTIM_CCMR2_OC3M_MASK | GTIM_CCMR2_OC3PE | + GTIM_CCMR2_CC4S_MASK | GTIM_CCMR2_OC4M_MASK | GTIM_CCMR2_OC4PE); ccmr1 |= ocmode1; ccmr2 |= ocmode2; @@ -1546,13 +1546,13 @@ static int pwm_timer(FAR struct stm32_pwmtimer_s *priv, * polarity) */ - ccer &= ~(ATIM_CCER_CC1P | ATIM_CCER_CC2P | ATIM_CCER_CC3P | - ATIM_CCER_CC4P); + ccer &= ~(GTIM_CCER_CC1P | GTIM_CCER_CC2P | GTIM_CCER_CC3P | + GTIM_CCER_CC4P); /* Enable the output state of the selected channels */ - ccer &= ~(ATIM_CCER_CC1E | ATIM_CCER_CC2E | ATIM_CCER_CC3E | - ATIM_CCER_CC4E); + ccer &= ~(GTIM_CCER_CC1E | GTIM_CCER_CC2E | GTIM_CCER_CC3E | + GTIM_CCER_CC4E); ccer |= ccenable; /* Some special setup for advanced timers */ @@ -1621,7 +1621,7 @@ static int pwm_timer(FAR struct stm32_pwmtimer_s *priv, /* Clear all pending interrupts and enable the update interrupt. */ pwm_putreg(priv, STM32_GTIM_SR_OFFSET, 0); - pwm_putreg(priv, STM32_GTIM_DIER_OFFSET, ATIM_DIER_UIE); + pwm_putreg(priv, STM32_GTIM_DIER_OFFSET, GTIM_DIER_UIE); /* Enable the timer */ diff --git a/arch/arm/src/stm32f7/stm32_tim.c b/arch/arm/src/stm32f7/stm32_tim.c index 31437450b4d..675d110d8aa 100644 --- a/arch/arm/src/stm32f7/stm32_tim.c +++ b/arch/arm/src/stm32f7/stm32_tim.c @@ -289,24 +289,24 @@ static inline void stm32_putreg32(FAR struct stm32_tim_dev_s *dev, static void stm32_tim_reload_counter(FAR struct stm32_tim_dev_s *dev) { - uint16_t val = stm32_getreg16(dev, STM32_BTIM_EGR_OFFSET); - val |= ATIM_EGR_UG; - stm32_putreg16(dev, STM32_BTIM_EGR_OFFSET, val); + uint16_t val = stm32_getreg16(dev, STM32_GTIM_EGR_OFFSET); + val |= GTIM_EGR_UG; + stm32_putreg16(dev, STM32_GTIM_EGR_OFFSET, val); } static void stm32_tim_enable(FAR struct stm32_tim_dev_s *dev) { - uint16_t val = stm32_getreg16(dev, STM32_BTIM_CR1_OFFSET); - val |= ATIM_CR1_CEN; + uint16_t val = stm32_getreg16(dev, STM32_GTIM_CR1_OFFSET); + val |= GTIM_CR1_CEN; stm32_tim_reload_counter(dev); - stm32_putreg16(dev, STM32_BTIM_CR1_OFFSET, val); + stm32_putreg16(dev, STM32_GTIM_CR1_OFFSET, val); } static void stm32_tim_disable(FAR struct stm32_tim_dev_s *dev) { - uint16_t val = stm32_getreg16(dev, STM32_BTIM_CR1_OFFSET); - val &= ~ATIM_CR1_CEN; - stm32_putreg16(dev, STM32_BTIM_CR1_OFFSET, val); + uint16_t val = stm32_getreg16(dev, STM32_GTIM_CR1_OFFSET); + val &= ~GTIM_CR1_CEN; + stm32_putreg16(dev, STM32_GTIM_CR1_OFFSET, val); } /**************************************************************************** @@ -351,8 +351,8 @@ static uint32_t stm32_tim_getcounter(FAR struct stm32_tim_dev_s *dev) { DEBUGASSERT(dev != NULL); return stm32_tim_getwidth(dev) > 16 ? - stm32_getreg32(dev, STM32_BTIM_CNT_OFFSET) : - (uint32_t)stm32_getreg16(dev, STM32_BTIM_CNT_OFFSET); + stm32_getreg32(dev, STM32_GTIM_CNT_OFFSET) : + (uint32_t)stm32_getreg16(dev, STM32_GTIM_CNT_OFFSET); } /**************************************************************************** @@ -366,11 +366,11 @@ static void stm32_tim_setcounter(FAR struct stm32_tim_dev_s *dev, if (stm32_tim_getwidth(dev) > 16) { - stm32_putreg32(dev, STM32_BTIM_CNT_OFFSET, count); + stm32_putreg32(dev, STM32_GTIM_CNT_OFFSET, count); } else { - stm32_putreg16(dev, STM32_BTIM_CNT_OFFSET, (uint16_t)count); + stm32_putreg16(dev, STM32_GTIM_CNT_OFFSET, (uint16_t)count); } } @@ -525,7 +525,7 @@ static int stm32_tim_setclock(FAR struct stm32_tim_dev_s *dev, uint32_t freq) prescaler = 0xffff; } - stm32_putreg16(dev, STM32_BTIM_PSC_OFFSET, prescaler); + stm32_putreg16(dev, STM32_GTIM_PSC_OFFSET, prescaler); stm32_tim_enable(dev); return prescaler; @@ -535,7 +535,7 @@ static void stm32_tim_setperiod(FAR struct stm32_tim_dev_s *dev, uint32_t period) { DEBUGASSERT(dev != NULL); - stm32_putreg32(dev, STM32_BTIM_ARR_OFFSET, period); + stm32_putreg32(dev, STM32_GTIM_ARR_OFFSET, period); } static int stm32_tim_setisr(FAR struct stm32_tim_dev_s *dev, @@ -643,24 +643,24 @@ static int stm32_tim_setisr(FAR struct stm32_tim_dev_s *dev, static void stm32_tim_enableint(FAR struct stm32_tim_dev_s *dev, int source) { DEBUGASSERT(dev != NULL); - stm32_modifyreg16(dev, STM32_BTIM_DIER_OFFSET, 0, ATIM_DIER_UIE); + stm32_modifyreg16(dev, STM32_GTIM_DIER_OFFSET, 0, GTIM_DIER_UIE); } static void stm32_tim_disableint(FAR struct stm32_tim_dev_s *dev, int source) { DEBUGASSERT(dev != NULL); - stm32_modifyreg16(dev, STM32_BTIM_DIER_OFFSET, ATIM_DIER_UIE, 0); + stm32_modifyreg16(dev, STM32_GTIM_DIER_OFFSET, GTIM_DIER_UIE, 0); } static int stm32_tim_checkint(FAR struct stm32_tim_dev_s *dev, int source) { - uint16_t regval = stm32_getreg16(dev, STM32_BTIM_SR_OFFSET); + uint16_t regval = stm32_getreg16(dev, STM32_GTIM_SR_OFFSET); return (regval & source) ? 1 : 0; } static void stm32_tim_ackint(FAR struct stm32_tim_dev_s *dev, int source) { - stm32_putreg16(dev, STM32_BTIM_SR_OFFSET, ~source); + stm32_putreg16(dev, STM32_GTIM_SR_OFFSET, ~source); } /**************************************************************************** @@ -670,7 +670,7 @@ static void stm32_tim_ackint(FAR struct stm32_tim_dev_s *dev, int source) static int stm32_tim_setmode(FAR struct stm32_tim_dev_s *dev, stm32_tim_mode_t mode) { - uint16_t val = ATIM_CR1_CEN | ATIM_CR1_ARPE; + uint16_t val = GTIM_CR1_CEN | GTIM_CR1_ARPE; DEBUGASSERT(dev != NULL); @@ -693,7 +693,7 @@ static int stm32_tim_setmode(FAR struct stm32_tim_dev_s *dev, break; case STM32_TIM_MODE_DOWN: - val |= ATIM_CR1_DIR; + val |= GTIM_CR1_DIR; case STM32_TIM_MODE_UP: break; @@ -704,11 +704,11 @@ static int stm32_tim_setmode(FAR struct stm32_tim_dev_s *dev, * Interrupts are generated on compare, when counting down */ - val |= ATIM_CR1_CENTER1; + val |= GTIM_CR1_CENTER1; break; case STM32_TIM_MODE_PULSE: - val |= ATIM_CR1_OPM; + val |= GTIM_CR1_OPM; break; default: @@ -716,7 +716,7 @@ static int stm32_tim_setmode(FAR struct stm32_tim_dev_s *dev, } stm32_tim_reload_counter(dev); - stm32_putreg16(dev, STM32_BTIM_CR1_OFFSET, val); + stm32_putreg16(dev, STM32_GTIM_CR1_OFFSET, val); /* Advanced registers require Main Output Enable */ @@ -771,15 +771,15 @@ static int stm32_tim_setchannel(FAR struct stm32_tim_dev_s *dev, break; case STM32_TIM_CH_OUTPWM: - ccmr_val = (ATIM_CCMR_MODE_PWM1 << ATIM_CCMR1_OC1M_SHIFT) + - ATIM_CCMR1_OC1PE; - ccer_val |= ATIM_CCER_CC1E << GTIM_CCER_CCXBASE(channel); + ccmr_val = (GTIM_CCMR_MODE_PWM1 << GTIM_CCMR1_OC1M_SHIFT) + + GTIM_CCMR1_OC1PE; + ccer_val |= GTIM_CCER_CC1E << GTIM_CCER_CCXBASE(channel); break; case STM32_TIM_CH_OUTTOGGLE: - ccmr_val = (ATIM_CCMR_MODE_OCREFTOG << ATIM_CCMR1_OC1M_SHIFT) + - ATIM_CCMR1_OC1PE; - ccer_val |= ATIM_CCER_CC1E << GTIM_CCER_CCXBASE(channel); + ccmr_val = (GTIM_CCMR_MODE_OCREFTOG << GTIM_CCMR1_OC1M_SHIFT) + + GTIM_CCMR1_OC1PE; + ccer_val |= GTIM_CCER_CC1E << GTIM_CCER_CCXBASE(channel); break; default: @@ -790,7 +790,7 @@ static int stm32_tim_setchannel(FAR struct stm32_tim_dev_s *dev, if (mode & STM32_TIM_CH_POLARITY_NEG) { - ccer_val |= ATIM_CCER_CC1P << GTIM_CCER_CCXBASE(channel); + ccer_val |= GTIM_CCER_CC1P << GTIM_CCER_CCXBASE(channel); } /* Define its position (shift) and get register offset */ diff --git a/arch/arm/src/stm32h7/stm32_pwm.c b/arch/arm/src/stm32h7/stm32_pwm.c index cddb733f0e3..be0741e782f 100644 --- a/arch/arm/src/stm32h7/stm32_pwm.c +++ b/arch/arm/src/stm32h7/stm32_pwm.c @@ -2324,13 +2324,13 @@ static int pwm_mode_configure(FAR struct pwm_lowerhalf_s *dev, case STM32_CHANMODE_PWM1: { - chanmode = ATIM_CCMR_MODE_PWM1; + chanmode = GTIM_CCMR_MODE_PWM1; break; } case STM32_CHANMODE_PWM2: { - chanmode = ATIM_CCMR_MODE_PWM2; + chanmode = GTIM_CCMR_MODE_PWM2; break; } @@ -2651,13 +2651,13 @@ static int pwm_outputs_enable(FAR struct pwm_lowerhalf_s *dev, /* Get outputs configuration */ - regval |= ((outputs & STM32_PWM_OUT1) ? ATIM_CCER_CC1E : 0); - regval |= ((outputs & STM32_PWM_OUT1N) ? ATIM_CCER_CC1NE : 0); - regval |= ((outputs & STM32_PWM_OUT2) ? ATIM_CCER_CC2E : 0); - regval |= ((outputs & STM32_PWM_OUT2N) ? ATIM_CCER_CC2NE : 0); - regval |= ((outputs & STM32_PWM_OUT3) ? ATIM_CCER_CC3E : 0); - regval |= ((outputs & STM32_PWM_OUT3N) ? ATIM_CCER_CC3NE : 0); - regval |= ((outputs & STM32_PWM_OUT4) ? ATIM_CCER_CC4E : 0); + regval |= ((outputs & STM32_PWM_OUT1) ? GTIM_CCER_CC1E : 0); + regval |= ((outputs & STM32_PWM_OUT1N) ? GTIM_CCER_CC1NE : 0); + regval |= ((outputs & STM32_PWM_OUT2) ? GTIM_CCER_CC2E : 0); + regval |= ((outputs & STM32_PWM_OUT2N) ? GTIM_CCER_CC2NE : 0); + regval |= ((outputs & STM32_PWM_OUT3) ? GTIM_CCER_CC3E : 0); + regval |= ((outputs & STM32_PWM_OUT3N) ? GTIM_CCER_CC3NE : 0); + regval |= ((outputs & STM32_PWM_OUT4) ? GTIM_CCER_CC4E : 0); /* NOTE: CC4N doesn't exist, but some docs show configuration bits for it */ @@ -2770,7 +2770,7 @@ static int pwm_soft_update(FAR struct pwm_lowerhalf_s *dev) { FAR struct stm32_pwmtimer_s *priv = (FAR struct stm32_pwmtimer_s *)dev; - pwm_putreg(priv, STM32_GTIM_EGR_OFFSET, ATIM_EGR_UG); + pwm_putreg(priv, STM32_GTIM_EGR_OFFSET, GTIM_EGR_UG); return OK; } @@ -3113,7 +3113,7 @@ static int pwm_pulsecount_timer(FAR struct pwm_lowerhalf_s *dev, */ priv->prev = pwm_pulsecount(info->count); - pwm_putreg(priv, STM32_ATIM_RCR_OFFSET, (uint16_t)priv->prev - 1); + pwm_putreg(priv, STM32_GTIM_RCR_OFFSET, (uint16_t)priv->prev - 1); /* Generate an update event to reload the prescaler. This should * preload the RCR into active repetition counter. @@ -3127,7 +3127,7 @@ static int pwm_pulsecount_timer(FAR struct pwm_lowerhalf_s *dev, priv->count = info->count; priv->curr = pwm_pulsecount(info->count - priv->prev); - pwm_putreg(priv, STM32_ATIM_RCR_OFFSET, (uint16_t)priv->curr - 1); + pwm_putreg(priv, STM32_GTIM_RCR_OFFSET, (uint16_t)priv->curr - 1); } /* Otherwise, just clear the repetition counter */ @@ -3136,7 +3136,7 @@ static int pwm_pulsecount_timer(FAR struct pwm_lowerhalf_s *dev, { /* Set the repetition counter to zero */ - pwm_putreg(priv, STM32_ATIM_RCR_OFFSET, 0); + pwm_putreg(priv, STM32_GTIM_RCR_OFFSET, 0); /* Generate an update event to reload the prescaler */ @@ -3165,7 +3165,7 @@ static int pwm_pulsecount_timer(FAR struct pwm_lowerhalf_s *dev, /* Clear all pending interrupts and enable the update interrupt. */ pwm_putreg(priv, STM32_GTIM_SR_OFFSET, 0); - pwm_putreg(priv, STM32_GTIM_DIER_OFFSET, ATIM_DIER_UIE); + pwm_putreg(priv, STM32_GTIM_DIER_OFFSET, GTIM_DIER_UIE); /* Enable the timer */ diff --git a/arch/arm/src/stm32h7/stm32_tim.c b/arch/arm/src/stm32h7/stm32_tim.c index 2db88e6abd4..7a9cfb8fd56 100644 --- a/arch/arm/src/stm32h7/stm32_tim.c +++ b/arch/arm/src/stm32h7/stm32_tim.c @@ -466,24 +466,24 @@ static inline void stm32_putreg32(FAR struct stm32_tim_dev_s *dev, static void stm32_tim_reload_counter(FAR struct stm32_tim_dev_s *dev) { - uint16_t val = stm32_getreg16(dev, STM32_BTIM_EGR_OFFSET); - val |= ATIM_EGR_UG; - stm32_putreg16(dev, STM32_BTIM_EGR_OFFSET, val); + uint16_t val = stm32_getreg16(dev, STM32_GTIM_EGR_OFFSET); + val |= GTIM_EGR_UG; + stm32_putreg16(dev, STM32_GTIM_EGR_OFFSET, val); } static void stm32_tim_enable(FAR struct stm32_tim_dev_s *dev) { - uint16_t val = stm32_getreg16(dev, STM32_BTIM_CR1_OFFSET); - val |= ATIM_CR1_CEN; + uint16_t val = stm32_getreg16(dev, STM32_GTIM_CR1_OFFSET); + val |= GTIM_CR1_CEN; stm32_tim_reload_counter(dev); - stm32_putreg16(dev, STM32_BTIM_CR1_OFFSET, val); + stm32_putreg16(dev, STM32_GTIM_CR1_OFFSET, val); } static void stm32_tim_disable(FAR struct stm32_tim_dev_s *dev) { - uint16_t val = stm32_getreg16(dev, STM32_BTIM_CR1_OFFSET); - val &= ~ATIM_CR1_CEN; - stm32_putreg16(dev, STM32_BTIM_CR1_OFFSET, val); + uint16_t val = stm32_getreg16(dev, STM32_GTIM_CR1_OFFSET); + val &= ~GTIM_CR1_CEN; + stm32_putreg16(dev, STM32_GTIM_CR1_OFFSET, val); } /* Reset timer into system default state, but do not affect output/input @@ -641,7 +641,7 @@ static int stm32_tim_setclock(FAR struct stm32_tim_dev_s *dev, uint32_t freq) prescaler = 0xffff; } - stm32_putreg16(dev, STM32_BTIM_PSC_OFFSET, prescaler); + stm32_putreg16(dev, STM32_GTIM_PSC_OFFSET, prescaler); stm32_tim_enable(dev); return prescaler; @@ -651,7 +651,7 @@ static void stm32_tim_setperiod(FAR struct stm32_tim_dev_s *dev, uint32_t period) { DEBUGASSERT(dev != NULL); - stm32_putreg32(dev, STM32_BTIM_ARR_OFFSET, period); + stm32_putreg32(dev, STM32_GTIM_ARR_OFFSET, period); } static int stm32_tim_setisr(FAR struct stm32_tim_dev_s *dev, @@ -765,18 +765,18 @@ static int stm32_tim_setisr(FAR struct stm32_tim_dev_s *dev, static void stm32_tim_enableint(FAR struct stm32_tim_dev_s *dev, int source) { DEBUGASSERT(dev != NULL); - stm32_modifyreg16(dev, STM32_BTIM_DIER_OFFSET, 0, source); + stm32_modifyreg16(dev, STM32_GTIM_DIER_OFFSET, 0, source); } static void stm32_tim_disableint(FAR struct stm32_tim_dev_s *dev, int source) { DEBUGASSERT(dev != NULL); - stm32_modifyreg16(dev, STM32_BTIM_DIER_OFFSET, source, 0); + stm32_modifyreg16(dev, STM32_GTIM_DIER_OFFSET, source, 0); } static void stm32_tim_ackint(FAR struct stm32_tim_dev_s *dev, int source) { - stm32_putreg16(dev, STM32_BTIM_SR_OFFSET, ~source); + stm32_putreg16(dev, STM32_GTIM_SR_OFFSET, ~source); } /**************************************************************************** @@ -786,7 +786,7 @@ static void stm32_tim_ackint(FAR struct stm32_tim_dev_s *dev, int source) static int stm32_tim_setmode(FAR struct stm32_tim_dev_s *dev, stm32_tim_mode_t mode) { - uint16_t val = ATIM_CR1_CEN | ATIM_CR1_ARPE; + uint16_t val = GTIM_CR1_CEN | GTIM_CR1_ARPE; DEBUGASSERT(dev != NULL); @@ -809,13 +809,13 @@ static int stm32_tim_setmode(FAR struct stm32_tim_dev_s *dev, break; case STM32_TIM_MODE_DOWN: - val |= ATIM_CR1_DIR; + val |= GTIM_CR1_DIR; case STM32_TIM_MODE_UP: break; case STM32_TIM_MODE_UPDOWN: - val |= ATIM_CR1_CENTER1; + val |= GTIM_CR1_CENTER1; /* Our default: Interrupts are generated on compare, when counting * down @@ -824,7 +824,7 @@ static int stm32_tim_setmode(FAR struct stm32_tim_dev_s *dev, break; case STM32_TIM_MODE_PULSE: - val |= ATIM_CR1_OPM; + val |= GTIM_CR1_OPM; break; default: @@ -832,7 +832,7 @@ static int stm32_tim_setmode(FAR struct stm32_tim_dev_s *dev, } stm32_tim_reload_counter(dev); - stm32_putreg16(dev, STM32_BTIM_CR1_OFFSET, val); + stm32_putreg16(dev, STM32_GTIM_CR1_OFFSET, val); /* Advanced registers require Main Output Enable */ @@ -885,14 +885,14 @@ static int stm32_tim_setchannel(FAR struct stm32_tim_dev_s *dev, break; case STM32_TIM_CH_OUTTOGGLE: - ccmr_val = (ATIM_CCMR_MODE_OCREFTOG << ATIM_CCMR1_OC1M_SHIFT); - ccer_val |= ATIM_CCER_CC1E << (channel << 2); + ccmr_val = (GTIM_CCMR_MODE_OCREFTOG << GTIM_CCMR1_OC1M_SHIFT); + ccer_val |= GTIM_CCER_CC1E << (channel << 2); break; case STM32_TIM_CH_OUTPWM: - ccmr_val = (ATIM_CCMR_MODE_PWM1 << ATIM_CCMR1_OC1M_SHIFT) + - ATIM_CCMR1_OC1PE; - ccer_val |= ATIM_CCER_CC1E << (channel << 2); + ccmr_val = (GTIM_CCMR_MODE_PWM1 << GTIM_CCMR1_OC1M_SHIFT) + + GTIM_CCMR1_OC1PE; + ccer_val |= GTIM_CCER_CC1E << (channel << 2); break; default: @@ -903,7 +903,7 @@ static int stm32_tim_setchannel(FAR struct stm32_tim_dev_s *dev, if (mode & STM32_TIM_CH_POLARITY_NEG) { - ccer_val |= ATIM_CCER_CC1P << (channel << 2); + ccer_val |= GTIM_CCER_CC1P << (channel << 2); } /* Define its position (shift) and get register offset */ diff --git a/arch/arm/src/stm32l4/stm32l4_dac.c b/arch/arm/src/stm32l4/stm32l4_dac.c index 624f35d0402..e64dad8c2d4 100644 --- a/arch/arm/src/stm32l4/stm32l4_dac.c +++ b/arch/arm/src/stm32l4/stm32l4_dac.c @@ -809,7 +809,7 @@ static int dac_send(FAR struct dac_dev_s *dev, FAR struct dac_msg_s *msg) /* Reset counters (generate an update) */ #ifdef HAVE_DMA - tim_modifyreg(chan, STM32L4_BTIM_EGR_OFFSET, 0, ATIM_EGR_UG); + tim_modifyreg(chan, STM32L4_GTIM_EGR_OFFSET, 0, GTIM_EGR_UG); #endif return OK; } @@ -978,26 +978,26 @@ static int dac_timinit(FAR struct stm32_chan_s *chan) /* Set the reload and prescaler values */ - tim_putreg(chan, STM32L4_BTIM_ARR_OFFSET, (uint16_t)reload); - tim_putreg(chan, STM32L4_BTIM_PSC_OFFSET, (uint16_t)(prescaler - 1)); + tim_putreg(chan, STM32L4_GTIM_ARR_OFFSET, (uint16_t)reload); + tim_putreg(chan, STM32L4_GTIM_PSC_OFFSET, (uint16_t)(prescaler - 1)); /* Count mode up, auto reload */ - tim_modifyreg(chan, STM32L4_BTIM_CR1_OFFSET, 0, ATIM_CR1_ARPE); + tim_modifyreg(chan, STM32L4_GTIM_CR1_OFFSET, 0, GTIM_CR1_ARPE); /* Selection TRGO selection: update */ - tim_modifyreg(chan, STM32L4_BTIM_CR2_OFFSET, ATIM_CR2_MMS_MASK, - ATIM_CR2_MMS_UPDATE); + tim_modifyreg(chan, STM32L4_GTIM_CR2_OFFSET, GTIM_CR2_MMS_MASK, + GTIM_CR2_MMS_UPDATE); /* Update DMA request enable ???? */ #if 0 - tim_modifyreg(chan, STM32L4_BTIM_DIER_OFFSET, 0, ATIM_DIER_UDE); + tim_modifyreg(chan, STM32L4_GTIM_DIER_OFFSET, 0, GTIM_DIER_UDE); #endif /* Enable the counter */ - tim_modifyreg(chan, STM32L4_BTIM_CR1_OFFSET, 0, ATIM_CR1_CEN); + tim_modifyreg(chan, STM32L4_GTIM_CR1_OFFSET, 0, GTIM_CR1_CEN); return OK; } #endif diff --git a/arch/arm/src/stm32l4/stm32l4_pwm.c b/arch/arm/src/stm32l4/stm32l4_pwm.c index f16856077fc..397803f78eb 100644 --- a/arch/arm/src/stm32l4/stm32l4_pwm.c +++ b/arch/arm/src/stm32l4/stm32l4_pwm.c @@ -2240,13 +2240,13 @@ static int pwm_mode_configure(FAR struct pwm_lowerhalf_s *dev, case STM32L4_CHANMODE_PWM1: { - chanmode = ATIM_CCMR_MODE_PWM1; + chanmode = GTIM_CCMR_MODE_PWM1; break; } case STM32L4_CHANMODE_PWM2: { - chanmode = ATIM_CCMR_MODE_PWM2; + chanmode = GTIM_CCMR_MODE_PWM2; break; } @@ -2339,30 +2339,30 @@ static int pwm_mode_configure(FAR struct pwm_lowerhalf_s *dev, { /* Reset current channel 1/3/5 mode configuration */ - ccmr &= ~(ATIM_CCMR1_CC1S_MASK | ATIM_CCMR1_OC1M_MASK | - ATIM_CCMR1_OC1PE); + ccmr &= ~(GTIM_CCMR1_CC1S_MASK | GTIM_CCMR1_OC1M_MASK | + GTIM_CCMR1_OC1PE); /* Configure CC1/3/5 as output */ - ocmode |= (ATIM_CCMR_CCS_CCOUT << ATIM_CCMR1_CC1S_SHIFT); + ocmode |= (GTIM_CCMR_CCS_CCOUT << GTIM_CCMR1_CC1S_SHIFT); /* Configure Compare 1/3/5 mode */ - ocmode |= (chanmode << ATIM_CCMR1_OC1M_SHIFT); + ocmode |= (chanmode << GTIM_CCMR1_OC1M_SHIFT); /* Enable CCR1/3/5 preload */ - ocmode |= ATIM_CCMR1_OC1PE; + ocmode |= GTIM_CCMR1_OC1PE; /* Reset current OC bit */ - ccmr &= ~(ATIM_CCMR1_OC1M); + ccmr &= ~(GTIM_CCMR1_OC1M); /* Set an additional OC1/3/5M bit */ if (ocmbit) { - ocmode |= ATIM_CCMR1_OC1M; + ocmode |= GTIM_CCMR1_OC1M; } break; } @@ -2375,30 +2375,30 @@ static int pwm_mode_configure(FAR struct pwm_lowerhalf_s *dev, { /* Reset current channel 2/4/6 mode configuration */ - ccmr &= ~(ATIM_CCMR1_CC2S_MASK | ATIM_CCMR1_OC2M_MASK | - ATIM_CCMR1_OC2PE); + ccmr &= ~(GTIM_CCMR1_CC2S_MASK | GTIM_CCMR1_OC2M_MASK | + GTIM_CCMR1_OC2PE); /* Configure CC2/4/6 as output */ - ocmode |= (ATIM_CCMR_CCS_CCOUT << ATIM_CCMR1_CC2S_SHIFT); + ocmode |= (GTIM_CCMR_CCS_CCOUT << GTIM_CCMR1_CC2S_SHIFT); /* Configure Compare 2/4/6 mode */ - ocmode |= (chanmode << ATIM_CCMR1_OC2M_SHIFT); + ocmode |= (chanmode << GTIM_CCMR1_OC2M_SHIFT); /* Enable CCR2/4/6 preload */ - ocmode |= ATIM_CCMR1_OC2PE; + ocmode |= GTIM_CCMR1_OC2PE; /* Reset current OC bit */ - ccmr &= ~(ATIM_CCMR1_OC2M); + ccmr &= ~(GTIM_CCMR1_OC2M); /* Set an additioneal OC2/4/6M bit */ if (ocmbit) { - ocmode |= ATIM_CCMR1_OC2M; + ocmode |= GTIM_CCMR1_OC2M; } break; } @@ -2550,13 +2550,13 @@ static int pwm_outputs_enable(FAR struct pwm_lowerhalf_s *dev, /* Get outputs configuration */ - regval |= ((outputs & STM32L4_PWM_OUT1) ? ATIM_CCER_CC1E : 0); - regval |= ((outputs & STM32L4_PWM_OUT1N) ? ATIM_CCER_CC1NE : 0); - regval |= ((outputs & STM32L4_PWM_OUT2) ? ATIM_CCER_CC2E : 0); - regval |= ((outputs & STM32L4_PWM_OUT2N) ? ATIM_CCER_CC2NE : 0); - regval |= ((outputs & STM32L4_PWM_OUT3) ? ATIM_CCER_CC3E : 0); - regval |= ((outputs & STM32L4_PWM_OUT3N) ? ATIM_CCER_CC3NE : 0); - regval |= ((outputs & STM32L4_PWM_OUT4) ? ATIM_CCER_CC4E : 0); + regval |= ((outputs & STM32L4_PWM_OUT1) ? GTIM_CCER_CC1E : 0); + regval |= ((outputs & STM32L4_PWM_OUT1N) ? GTIM_CCER_CC1NE : 0); + regval |= ((outputs & STM32L4_PWM_OUT2) ? GTIM_CCER_CC2E : 0); + regval |= ((outputs & STM32L4_PWM_OUT2N) ? GTIM_CCER_CC2NE : 0); + regval |= ((outputs & STM32L4_PWM_OUT3) ? GTIM_CCER_CC3E : 0); + regval |= ((outputs & STM32L4_PWM_OUT3N) ? GTIM_CCER_CC3NE : 0); + regval |= ((outputs & STM32L4_PWM_OUT4) ? GTIM_CCER_CC4E : 0); /* NOTE: CC4N does not exist, but some docs show configuration bits for it */ @@ -2636,7 +2636,7 @@ static int pwm_soft_update(FAR struct pwm_lowerhalf_s *dev) { FAR struct stm32l4_pwmtimer_s *priv = (FAR struct stm32l4_pwmtimer_s *)dev; - pwm_putreg(priv, STM32L4_GTIM_EGR_OFFSET, ATIM_EGR_UG); + pwm_putreg(priv, STM32L4_GTIM_EGR_OFFSET, GTIM_EGR_UG); return OK; } @@ -3009,7 +3009,7 @@ static int pwm_pulsecount_timer(FAR struct pwm_lowerhalf_s *dev, */ priv->prev = pwm_pulsecount(info->count); - pwm_putreg(priv, STM32L4_ATIM_RCR_OFFSET, (uint16_t)priv->prev - 1); + pwm_putreg(priv, STM32L4_GTIM_RCR_OFFSET, (uint16_t)priv->prev - 1); /* Generate an update event to reload the prescaler. This should * preload the RCR into active repetition counter. @@ -3023,7 +3023,7 @@ static int pwm_pulsecount_timer(FAR struct pwm_lowerhalf_s *dev, priv->count = info->count; priv->curr = pwm_pulsecount(info->count - priv->prev); - pwm_putreg(priv, STM32L4_ATIM_RCR_OFFSET, (uint16_t)priv->curr - 1); + pwm_putreg(priv, STM32L4_GTIM_RCR_OFFSET, (uint16_t)priv->curr - 1); } /* Otherwise, just clear the repetition counter */ @@ -3032,7 +3032,7 @@ static int pwm_pulsecount_timer(FAR struct pwm_lowerhalf_s *dev, { /* Set the repetition counter to zero */ - pwm_putreg(priv, STM32L4_ATIM_RCR_OFFSET, 0); + pwm_putreg(priv, STM32L4_GTIM_RCR_OFFSET, 0); /* Generate an update event to reload the prescaler */ @@ -3061,7 +3061,7 @@ static int pwm_pulsecount_timer(FAR struct pwm_lowerhalf_s *dev, /* Clear all pending interrupts and enable the update interrupt. */ pwm_putreg(priv, STM32L4_GTIM_SR_OFFSET, 0); - pwm_putreg(priv, STM32L4_GTIM_DIER_OFFSET, ATIM_DIER_UIE); + pwm_putreg(priv, STM32L4_GTIM_DIER_OFFSET, GTIM_DIER_UIE); /* Enable the timer */ diff --git a/arch/arm/src/stm32l4/stm32l4_tim.c b/arch/arm/src/stm32l4/stm32l4_tim.c index c06cbaf0265..b0e6b82018f 100644 --- a/arch/arm/src/stm32l4/stm32l4_tim.c +++ b/arch/arm/src/stm32l4/stm32l4_tim.c @@ -507,9 +507,9 @@ static inline void stm32l4_putreg32(FAR struct stm32l4_tim_dev_s *dev, static void stm32l4_tim_reload_counter(FAR struct stm32l4_tim_dev_s *dev) { - uint16_t val = stm32l4_getreg16(dev, STM32L4_BTIM_EGR_OFFSET); - val |= ATIM_EGR_UG; - stm32l4_putreg16(dev, STM32L4_BTIM_EGR_OFFSET, val); + uint16_t val = stm32l4_getreg16(dev, STM32L4_GTIM_EGR_OFFSET); + val |= GTIM_EGR_UG; + stm32l4_putreg16(dev, STM32L4_GTIM_EGR_OFFSET, val); } /**************************************************************************** @@ -518,11 +518,11 @@ static void stm32l4_tim_reload_counter(FAR struct stm32l4_tim_dev_s *dev) static void stm32l4_tim_enable(FAR struct stm32l4_tim_dev_s *dev) { - uint16_t val = stm32l4_getreg16(dev, STM32L4_BTIM_CR1_OFFSET); + uint16_t val = stm32l4_getreg16(dev, STM32L4_GTIM_CR1_OFFSET); - val |= ATIM_CR1_CEN; + val |= GTIM_CR1_CEN; stm32l4_tim_reload_counter(dev); - stm32l4_putreg16(dev, STM32L4_BTIM_CR1_OFFSET, val); + stm32l4_putreg16(dev, STM32L4_GTIM_CR1_OFFSET, val); } /**************************************************************************** @@ -531,9 +531,9 @@ static void stm32l4_tim_enable(FAR struct stm32l4_tim_dev_s *dev) static void stm32l4_tim_disable(FAR struct stm32l4_tim_dev_s *dev) { - uint16_t val = stm32l4_getreg16(dev, STM32L4_BTIM_CR1_OFFSET); - val &= ~ATIM_CR1_CEN; - stm32l4_putreg16(dev, STM32L4_BTIM_CR1_OFFSET, val); + uint16_t val = stm32l4_getreg16(dev, STM32L4_GTIM_CR1_OFFSET); + val &= ~GTIM_CR1_CEN; + stm32l4_putreg16(dev, STM32L4_GTIM_CR1_OFFSET, val); } /**************************************************************************** @@ -633,7 +633,7 @@ static void stm32l4_tim_dumpregs(FAR struct stm32l4_tim_dev_s *dev) static int stm32l4_tim_setmode(FAR struct stm32l4_tim_dev_s *dev, enum stm32l4_tim_mode_e mode) { - uint16_t val = ATIM_CR1_CEN | ATIM_CR1_ARPE; + uint16_t val = GTIM_CR1_CEN | GTIM_CR1_ARPE; DEBUGASSERT(dev != NULL); @@ -663,15 +663,15 @@ static int stm32l4_tim_setmode(FAR struct stm32l4_tim_dev_s *dev, break; case STM32L4_TIM_MODE_DOWN: - val |= ATIM_CR1_DIR; + val |= GTIM_CR1_DIR; break; case STM32L4_TIM_MODE_UP: - val &= ~ATIM_CR1_DIR; + val &= ~GTIM_CR1_DIR; break; case STM32L4_TIM_MODE_UPDOWN: - val |= ATIM_CR1_CENTER1; + val |= GTIM_CR1_CENTER1; /* Our default: * Interrupts are generated on compare, when counting down @@ -680,7 +680,7 @@ static int stm32l4_tim_setmode(FAR struct stm32l4_tim_dev_s *dev, break; case STM32L4_TIM_MODE_PULSE: - val |= ATIM_CR1_OPM; + val |= GTIM_CR1_OPM; break; default: @@ -688,7 +688,7 @@ static int stm32l4_tim_setmode(FAR struct stm32l4_tim_dev_s *dev, } stm32l4_tim_reload_counter(dev); - stm32l4_putreg16(dev, STM32L4_BTIM_CR1_OFFSET, val); + stm32l4_putreg16(dev, STM32L4_GTIM_CR1_OFFSET, val); #if STM32L4_NATIM > 0 /* Advanced registers require Main Output Enable */ @@ -983,7 +983,7 @@ static int stm32l4_tim_setclock(FAR struct stm32l4_tim_dev_s *dev, prescaler = 0xffff; } - stm32l4_putreg16(dev, STM32L4_BTIM_PSC_OFFSET, prescaler); + stm32l4_putreg16(dev, STM32L4_GTIM_PSC_OFFSET, prescaler); return prescaler; } @@ -1074,7 +1074,7 @@ static uint32_t stm32l4_tim_getclock(FAR struct stm32l4_tim_dev_s *dev) /* From chip datasheet, at page 1179. */ - clock = freqin / (stm32l4_getreg16(dev, STM32L4_BTIM_PSC_OFFSET) + 1); + clock = freqin / (stm32l4_getreg16(dev, STM32L4_GTIM_PSC_OFFSET) + 1); return clock; } @@ -1086,7 +1086,7 @@ static void stm32l4_tim_setperiod(FAR struct stm32l4_tim_dev_s *dev, uint32_t period) { DEBUGASSERT(dev != NULL); - stm32l4_putreg32(dev, STM32L4_BTIM_ARR_OFFSET, period); + stm32l4_putreg32(dev, STM32L4_GTIM_ARR_OFFSET, period); } /**************************************************************************** @@ -1096,7 +1096,7 @@ static void stm32l4_tim_setperiod(FAR struct stm32l4_tim_dev_s *dev, static uint32_t stm32l4_tim_getperiod (FAR struct stm32l4_tim_dev_s *dev) { DEBUGASSERT(dev != NULL); - return stm32l4_getreg32 (dev, STM32L4_BTIM_ARR_OFFSET); + return stm32l4_getreg32 (dev, STM32L4_GTIM_ARR_OFFSET); } /**************************************************************************** @@ -1106,7 +1106,7 @@ static uint32_t stm32l4_tim_getperiod (FAR struct stm32l4_tim_dev_s *dev) static uint32_t stm32l4_tim_getcounter(FAR struct stm32l4_tim_dev_s *dev) { DEBUGASSERT(dev != NULL); - uint32_t counter = stm32l4_getreg32(dev, STM32L4_BTIM_CNT_OFFSET); + uint32_t counter = stm32l4_getreg32(dev, STM32L4_GTIM_CNT_OFFSET); /* In datasheet page 988, there is a useless bit named UIFCPY in TIMx_CNT. * reset it it result when not TIM2 or TIM5. @@ -1185,9 +1185,9 @@ static int stm32l4_tim_setchannel(FAR struct stm32l4_tim_dev_s *dev, break; case STM32L4_TIM_CH_OUTPWM: - ccmr_val = (ATIM_CCMR_MODE_PWM1 << ATIM_CCMR1_OC1M_SHIFT) + - ATIM_CCMR1_OC1PE; - ccer_val |= ATIM_CCER_CC1E << GTIM_CCER_CCXBASE(channel); + ccmr_val = (GTIM_CCMR_MODE_PWM1 << GTIM_CCMR1_OC1M_SHIFT) + + GTIM_CCMR1_OC1PE; + ccer_val |= GTIM_CCER_CC1E << GTIM_CCER_CCXBASE(channel); break; default: @@ -1198,7 +1198,7 @@ static int stm32l4_tim_setchannel(FAR struct stm32l4_tim_dev_s *dev, if (mode & STM32L4_TIM_CH_POLARITY_NEG) { - ccer_val |= ATIM_CCER_CC1P << GTIM_CCER_CCXBASE(channel); + ccer_val |= GTIM_CCER_CC1P << GTIM_CCER_CCXBASE(channel); } /* Define its position (shift) and get register offset */ @@ -1696,7 +1696,7 @@ static void stm32l4_tim_enableint(FAR struct stm32l4_tim_dev_s *dev, int source) { DEBUGASSERT(dev != NULL); - stm32l4_modifyreg16(dev, STM32L4_BTIM_DIER_OFFSET, 0, ATIM_DIER_UIE); + stm32l4_modifyreg16(dev, STM32L4_GTIM_DIER_OFFSET, 0, GTIM_DIER_UIE); } /**************************************************************************** @@ -1707,7 +1707,7 @@ static void stm32l4_tim_disableint(FAR struct stm32l4_tim_dev_s *dev, int source) { DEBUGASSERT(dev != NULL); - stm32l4_modifyreg16(dev, STM32L4_BTIM_DIER_OFFSET, ATIM_DIER_UIE, 0); + stm32l4_modifyreg16(dev, STM32L4_GTIM_DIER_OFFSET, GTIM_DIER_UIE, 0); } /**************************************************************************** @@ -1716,7 +1716,7 @@ static void stm32l4_tim_disableint(FAR struct stm32l4_tim_dev_s *dev, static void stm32l4_tim_ackint(FAR struct stm32l4_tim_dev_s *dev, int source) { - stm32l4_putreg16(dev, STM32L4_BTIM_SR_OFFSET, ~ATIM_SR_UIF); + stm32l4_putreg16(dev, STM32L4_GTIM_SR_OFFSET, ~GTIM_SR_UIF); } /**************************************************************************** @@ -1726,8 +1726,8 @@ static void stm32l4_tim_ackint(FAR struct stm32l4_tim_dev_s *dev, int source) static int stm32l4_tim_checkint(FAR struct stm32l4_tim_dev_s *dev, int source) { - uint16_t regval = stm32l4_getreg16(dev, STM32L4_BTIM_SR_OFFSET); - return (regval & ATIM_SR_UIF) ? 1 : 0; + uint16_t regval = stm32l4_getreg16(dev, STM32L4_GTIM_SR_OFFSET); + return (regval & GTIM_SR_UIF) ? 1 : 0; } /**************************************************************************** diff --git a/arch/arm/src/stm32l5/stm32l5_tim.c b/arch/arm/src/stm32l5/stm32l5_tim.c index 5a289df9b5a..9c4e89f13f1 100644 --- a/arch/arm/src/stm32l5/stm32l5_tim.c +++ b/arch/arm/src/stm32l5/stm32l5_tim.c @@ -506,9 +506,9 @@ static inline void stm32l5_putreg32(FAR struct stm32l5_tim_dev_s *dev, static void stm32l5_tim_reload_counter(FAR struct stm32l5_tim_dev_s *dev) { - uint16_t val = stm32l5_getreg16(dev, STM32L5_BTIM_EGR_OFFSET); - val |= ATIM_EGR_UG; - stm32l5_putreg16(dev, STM32L5_BTIM_EGR_OFFSET, val); + uint16_t val = stm32l5_getreg16(dev, STM32L5_GTIM_EGR_OFFSET); + val |= GTIM_EGR_UG; + stm32l5_putreg16(dev, STM32L5_GTIM_EGR_OFFSET, val); } /**************************************************************************** @@ -517,10 +517,10 @@ static void stm32l5_tim_reload_counter(FAR struct stm32l5_tim_dev_s *dev) static void stm32l5_tim_enable(FAR struct stm32l5_tim_dev_s *dev) { - uint16_t val = stm32l5_getreg16(dev, STM32L5_BTIM_CR1_OFFSET); - val |= ATIM_CR1_CEN; + uint16_t val = stm32l5_getreg16(dev, STM32L5_GTIM_CR1_OFFSET); + val |= GTIM_CR1_CEN; stm32l5_tim_reload_counter(dev); - stm32l5_putreg16(dev, STM32L5_BTIM_CR1_OFFSET, val); + stm32l5_putreg16(dev, STM32L5_GTIM_CR1_OFFSET, val); } /**************************************************************************** @@ -529,9 +529,9 @@ static void stm32l5_tim_enable(FAR struct stm32l5_tim_dev_s *dev) static void stm32l5_tim_disable(FAR struct stm32l5_tim_dev_s *dev) { - uint16_t val = stm32l5_getreg16(dev, STM32L5_BTIM_CR1_OFFSET); - val &= ~ATIM_CR1_CEN; - stm32l5_putreg16(dev, STM32L5_BTIM_CR1_OFFSET, val); + uint16_t val = stm32l5_getreg16(dev, STM32L5_GTIM_CR1_OFFSET); + val &= ~GTIM_CR1_CEN; + stm32l5_putreg16(dev, STM32L5_GTIM_CR1_OFFSET, val); } /**************************************************************************** @@ -581,7 +581,7 @@ static void stm32l5_tim_gpioconfig(uint32_t cfg, static int stm32l5_tim_setmode(FAR struct stm32l5_tim_dev_s *dev, enum stm32l5_tim_mode_e mode) { - uint16_t val = ATIM_CR1_CEN | ATIM_CR1_ARPE; + uint16_t val = GTIM_CR1_CEN | GTIM_CR1_ARPE; DEBUGASSERT(dev != NULL); @@ -611,13 +611,13 @@ static int stm32l5_tim_setmode(FAR struct stm32l5_tim_dev_s *dev, break; case STM32L5_TIM_MODE_DOWN: - val |= ATIM_CR1_DIR; + val |= GTIM_CR1_DIR; case STM32L5_TIM_MODE_UP: break; case STM32L5_TIM_MODE_UPDOWN: - val |= ATIM_CR1_CENTER1; + val |= GTIM_CR1_CENTER1; /* Our default: Interrupts are generated on compare, when counting * down @@ -626,7 +626,7 @@ static int stm32l5_tim_setmode(FAR struct stm32l5_tim_dev_s *dev, break; case STM32L5_TIM_MODE_PULSE: - val |= ATIM_CR1_OPM; + val |= GTIM_CR1_OPM; break; default: @@ -634,7 +634,7 @@ static int stm32l5_tim_setmode(FAR struct stm32l5_tim_dev_s *dev, } stm32l5_tim_reload_counter(dev); - stm32l5_putreg16(dev, STM32L5_BTIM_CR1_OFFSET, val); + stm32l5_putreg16(dev, STM32L5_GTIM_CR1_OFFSET, val); #if STM32L5_NATIM > 0 /* Advanced registers require Main Output Enable */ @@ -768,7 +768,7 @@ static int stm32l5_tim_setclock(FAR struct stm32l5_tim_dev_s *dev, prescaler = 0xffff; } - stm32l5_putreg16(dev, STM32L5_BTIM_PSC_OFFSET, prescaler); + stm32l5_putreg16(dev, STM32L5_GTIM_PSC_OFFSET, prescaler); stm32l5_tim_enable(dev); return prescaler; @@ -860,7 +860,7 @@ static uint32_t stm32l5_tim_getclock(FAR struct stm32l5_tim_dev_s *dev) /* From chip datasheet, at page 1179. */ - clock = freqin / (stm32l5_getreg16(dev, STM32L5_BTIM_PSC_OFFSET) + 1); + clock = freqin / (stm32l5_getreg16(dev, STM32L5_GTIM_PSC_OFFSET) + 1); return clock; } @@ -872,7 +872,7 @@ static void stm32l5_tim_setperiod(FAR struct stm32l5_tim_dev_s *dev, uint32_t period) { DEBUGASSERT(dev != NULL); - stm32l5_putreg32(dev, STM32L5_BTIM_ARR_OFFSET, period); + stm32l5_putreg32(dev, STM32L5_GTIM_ARR_OFFSET, period); } /**************************************************************************** @@ -882,7 +882,7 @@ static void stm32l5_tim_setperiod(FAR struct stm32l5_tim_dev_s *dev, static uint32_t stm32l5_tim_getperiod (FAR struct stm32l5_tim_dev_s *dev) { DEBUGASSERT(dev != NULL); - return stm32l5_getreg32 (dev, STM32L5_BTIM_ARR_OFFSET); + return stm32l5_getreg32 (dev, STM32L5_GTIM_ARR_OFFSET); } /**************************************************************************** @@ -892,7 +892,7 @@ static uint32_t stm32l5_tim_getperiod (FAR struct stm32l5_tim_dev_s *dev) static uint32_t stm32l5_tim_getcounter(FAR struct stm32l5_tim_dev_s *dev) { DEBUGASSERT(dev != NULL); - uint32_t counter = stm32l5_getreg32(dev, STM32L5_BTIM_CNT_OFFSET); + uint32_t counter = stm32l5_getreg32(dev, STM32L5_GTIM_CNT_OFFSET); /* In datasheet page 988, there is a useless bit named UIFCPY in TIMx_CNT. * reset it it result when not TIM2 or TIM5. @@ -971,9 +971,9 @@ static int stm32l5_tim_setchannel(FAR struct stm32l5_tim_dev_s *dev, break; case STM32L5_TIM_CH_OUTPWM: - ccmr_val = (ATIM_CCMR_MODE_PWM1 << ATIM_CCMR1_OC1M_SHIFT) + - ATIM_CCMR1_OC1PE; - ccer_val |= ATIM_CCER_CC1E << GTIM_CCER_CCXBASE(channel); + ccmr_val = (GTIM_CCMR_MODE_PWM1 << GTIM_CCMR1_OC1M_SHIFT) + + GTIM_CCMR1_OC1PE; + ccer_val |= GTIM_CCER_CC1E << GTIM_CCER_CCXBASE(channel); break; default: @@ -984,7 +984,7 @@ static int stm32l5_tim_setchannel(FAR struct stm32l5_tim_dev_s *dev, if (mode & STM32L5_TIM_CH_POLARITY_NEG) { - ccer_val |= ATIM_CCER_CC1P << GTIM_CCER_CCXBASE(channel); + ccer_val |= GTIM_CCER_CC1P << GTIM_CCER_CCXBASE(channel); } /* Define its position (shift) and get register offset */ @@ -1482,7 +1482,7 @@ static void stm32l5_tim_enableint(FAR struct stm32l5_tim_dev_s *dev, int source) { DEBUGASSERT(dev != NULL); - stm32l5_modifyreg16(dev, STM32L5_BTIM_DIER_OFFSET, 0, ATIM_DIER_UIE); + stm32l5_modifyreg16(dev, STM32L5_GTIM_DIER_OFFSET, 0, GTIM_DIER_UIE); } /**************************************************************************** @@ -1493,7 +1493,7 @@ static void stm32l5_tim_disableint(FAR struct stm32l5_tim_dev_s *dev, int source) { DEBUGASSERT(dev != NULL); - stm32l5_modifyreg16(dev, STM32L5_BTIM_DIER_OFFSET, ATIM_DIER_UIE, 0); + stm32l5_modifyreg16(dev, STM32L5_GTIM_DIER_OFFSET, GTIM_DIER_UIE, 0); } /**************************************************************************** @@ -1502,7 +1502,7 @@ static void stm32l5_tim_disableint(FAR struct stm32l5_tim_dev_s *dev, static void stm32l5_tim_ackint(FAR struct stm32l5_tim_dev_s *dev, int source) { - stm32l5_putreg16(dev, STM32L5_BTIM_SR_OFFSET, ~ATIM_SR_UIF); + stm32l5_putreg16(dev, STM32L5_GTIM_SR_OFFSET, ~GTIM_SR_UIF); } /**************************************************************************** @@ -1512,8 +1512,8 @@ static void stm32l5_tim_ackint(FAR struct stm32l5_tim_dev_s *dev, int source) static int stm32l5_tim_checkint(FAR struct stm32l5_tim_dev_s *dev, int source) { - uint16_t regval = stm32l5_getreg16(dev, STM32L5_BTIM_SR_OFFSET); - return (regval & ATIM_SR_UIF) ? 1 : 0; + uint16_t regval = stm32l5_getreg16(dev, STM32L5_GTIM_SR_OFFSET); + return (regval & GTIM_SR_UIF) ? 1 : 0; } /**************************************************************************** From e37ce7677babc56e760595b96af8bfb7efe8a12d Mon Sep 17 00:00:00 2001 From: Anthony Merlino Date: Sun, 16 May 2021 12:04:43 -0400 Subject: [PATCH 150/739] Try to address CI build error and a few macro fixes. --- arch/arm/src/stm32/hardware/stm32_tim_v1v2.h | 1 - arch/arm/src/stm32/stm32_pwm.c | 6 ++-- arch/arm/src/stm32f0l0g0/stm32_pwm.c | 38 ++++++++++---------- arch/arm/src/stm32h7/stm32_pwm.c | 6 ++-- arch/arm/src/stm32l4/stm32l4_pwm.c | 6 ++-- 5 files changed, 28 insertions(+), 29 deletions(-) diff --git a/arch/arm/src/stm32/hardware/stm32_tim_v1v2.h b/arch/arm/src/stm32/hardware/stm32_tim_v1v2.h index 138cd37fefd..a1ffa58776a 100644 --- a/arch/arm/src/stm32/hardware/stm32_tim_v1v2.h +++ b/arch/arm/src/stm32/hardware/stm32_tim_v1v2.h @@ -1199,7 +1199,6 @@ #define GTIM_CCER_CC1E (1 << 0) /* Bit 0: Capture/Compare 1 output enable */ #define GTIM_CCER_CC1P (1 << 1) /* Bit 1: Capture/Compare 1 output polarity */ -#define GTIM_CCER_CC1NE (1 << 2) /* Bit 2: Capture/Compare 1 complementary output enable (TIM1 and TIM8 only) */ #ifdef HAVE_GTIM_CCXNP # define GTIM_CCER_CC1NP (1 << 3) /* Bit 3: Capture/Compare 1 output Polarity (F2,F3,F4 and TIM15-17) */ #endif diff --git a/arch/arm/src/stm32/stm32_pwm.c b/arch/arm/src/stm32/stm32_pwm.c index 1439e33deaf..93607dce06a 100644 --- a/arch/arm/src/stm32/stm32_pwm.c +++ b/arch/arm/src/stm32/stm32_pwm.c @@ -2975,11 +2975,11 @@ static int pwm_outputs_enable(FAR struct pwm_lowerhalf_s *dev, /* Get outputs configuration */ regval |= ((outputs & STM32_PWM_OUT1) ? GTIM_CCER_CC1E : 0); - regval |= ((outputs & STM32_PWM_OUT1N) ? GTIM_CCER_CC1NE : 0); + regval |= ((outputs & STM32_PWM_OUT1N) ? ATIM_CCER_CC1NE : 0); regval |= ((outputs & STM32_PWM_OUT2) ? GTIM_CCER_CC2E : 0); - regval |= ((outputs & STM32_PWM_OUT2N) ? GTIM_CCER_CC2NE : 0); + regval |= ((outputs & STM32_PWM_OUT2N) ? ATIM_CCER_CC2NE : 0); regval |= ((outputs & STM32_PWM_OUT3) ? GTIM_CCER_CC3E : 0); - regval |= ((outputs & STM32_PWM_OUT3N) ? GTIM_CCER_CC3NE : 0); + regval |= ((outputs & STM32_PWM_OUT3N) ? ATIM_CCER_CC3NE : 0); regval |= ((outputs & STM32_PWM_OUT4) ? GTIM_CCER_CC4E : 0); /* NOTE: CC4N doesn't exist, but some docs show configuration bits for it */ diff --git a/arch/arm/src/stm32f0l0g0/stm32_pwm.c b/arch/arm/src/stm32f0l0g0/stm32_pwm.c index f63cb6fbeac..8efb04b73b9 100644 --- a/arch/arm/src/stm32f0l0g0/stm32_pwm.c +++ b/arch/arm/src/stm32f0l0g0/stm32_pwm.c @@ -1296,27 +1296,27 @@ static int stm32pwm_timer(FAR struct stm32_pwmtimer_s *priv, { /* Set the CCMR2 mode values (leave CCMR1 zero) */ - ocmode2 |= (GTIM_CCMR_CCS_CCOUT << GTIM_CCMR2_CC3S_SHIFT) | - (chanmode << GTIM_CCMR2_OC3M_SHIFT) | - GTIM_CCMR2_OC3PE; + ocmode2 |= (ATIM_CCMR_CCS_CCOUT << ATIM_CCMR2_CC3S_SHIFT) | + (chanmode << ATIM_CCMR2_OC3M_SHIFT) | + ATIM_CCMR2_OC3PE; if (ocmbit) { - ocmode2 |= GTIM_CCMR2_OC3M; + ocmode2 |= ATIM_CCMR2_OC3M; } /* Set the duty cycle by writing to the CCR register for this * channel. */ - stm32pwm_putreg(priv, STM32_GTIM_CCR3_OFFSET, ccr); + stm32pwm_putreg(priv, STM32_ATIM_CCR3_OFFSET, ccr); /* Reset the Output Compare Mode Bits and set the select * output compare mode. */ - ccmr2 &= ~(GTIM_CCMR2_CC3S_MASK | GTIM_CCMR2_OC3M_MASK | - GTIM_CCMR2_OC3PE | GTIM_CCMR2_OC3M); + ccmr2 &= ~(ATIM_CCMR2_CC3S_MASK | ATIM_CCMR2_OC3M_MASK | + ATIM_CCMR2_OC3PE | ATIM_CCMR2_OC3M); stm32pwm_output_configure(priv, channel); } break; @@ -1325,27 +1325,27 @@ static int stm32pwm_timer(FAR struct stm32_pwmtimer_s *priv, { /* Set the CCMR2 mode values (leave CCMR1 zero) */ - ocmode2 |= (GTIM_CCMR_CCS_CCOUT << GTIM_CCMR2_CC4S_SHIFT) | - (chanmode << GTIM_CCMR2_OC4M_SHIFT) | - GTIM_CCMR2_OC4PE; + ocmode2 |= (ATIM_CCMR_CCS_CCOUT << ATIM_CCMR2_CC4S_SHIFT) | + (chanmode << ATIM_CCMR2_OC4M_SHIFT) | + ATIM_CCMR2_OC4PE; if (ocmbit) { - ocmode2 |= GTIM_CCMR2_OC4M; + ocmode2 |= ATIM_CCMR2_OC4M; } /* Set the duty cycle by writing to the CCR register for this * channel. */ - stm32pwm_putreg(priv, STM32_GTIM_CCR4_OFFSET, ccr); + stm32pwm_putreg(priv, STM32_ATIM_CCR4_OFFSET, ccr); /* Reset the Output Compare Mode Bits and set the select * output compare mode. */ - ccmr2 &= ~(GTIM_CCMR2_CC4S_MASK | GTIM_CCMR2_OC4M_MASK | - GTIM_CCMR2_OC4PE | GTIM_CCMR2_OC4M); + ccmr2 &= ~(ATIM_CCMR2_CC4S_MASK | ATIM_CCMR2_OC4M_MASK | + ATIM_CCMR2_OC4PE | ATIM_CCMR2_OC4M); stm32pwm_output_configure(priv, channel); } break; @@ -1371,14 +1371,14 @@ static int stm32pwm_timer(FAR struct stm32_pwmtimer_s *priv, /* Get current register state */ - bdtr = stm32pwm_getreg(priv, STM32_GTIM_BDTR_OFFSET); + bdtr = stm32pwm_getreg(priv, STM32_ATIM_BDTR_OFFSET); /* Update deadtime */ - bdtr &= ~(GTIM_BDTR_OSSI | GTIM_BDTR_OSSR); - bdtr |= GTIM_BDTR_MOE; + bdtr &= ~(ATIM_BDTR_OSSI | ATIM_BDTR_OSSR); + bdtr |= ATIM_BDTR_MOE; - stm32pwm_putreg(priv, STM32_GTIM_BDTR_OFFSET, bdtr); + stm32pwm_putreg(priv, STM32_ATIM_BDTR_OFFSET, bdtr); } #endif @@ -1386,7 +1386,7 @@ static int stm32pwm_timer(FAR struct stm32_pwmtimer_s *priv, putreg32(ccmr1, priv->base + STM32_GTIM_CCMR1_OFFSET); #if defined(HAVE_CCMR2) - putreg32(ccmr2, priv->base + STM32_GTIM_CCMR2_OFFSET); + putreg32(ccmr2, priv->base + STM32_ATIM_CCMR2_OFFSET); #endif /* Set the ARR Preload Bit */ diff --git a/arch/arm/src/stm32h7/stm32_pwm.c b/arch/arm/src/stm32h7/stm32_pwm.c index be0741e782f..5fcaa2ee4d7 100644 --- a/arch/arm/src/stm32h7/stm32_pwm.c +++ b/arch/arm/src/stm32h7/stm32_pwm.c @@ -2652,11 +2652,11 @@ static int pwm_outputs_enable(FAR struct pwm_lowerhalf_s *dev, /* Get outputs configuration */ regval |= ((outputs & STM32_PWM_OUT1) ? GTIM_CCER_CC1E : 0); - regval |= ((outputs & STM32_PWM_OUT1N) ? GTIM_CCER_CC1NE : 0); + regval |= ((outputs & STM32_PWM_OUT1N) ? ATIM_CCER_CC1NE : 0); regval |= ((outputs & STM32_PWM_OUT2) ? GTIM_CCER_CC2E : 0); - regval |= ((outputs & STM32_PWM_OUT2N) ? GTIM_CCER_CC2NE : 0); + regval |= ((outputs & STM32_PWM_OUT2N) ? ATIM_CCER_CC2NE : 0); regval |= ((outputs & STM32_PWM_OUT3) ? GTIM_CCER_CC3E : 0); - regval |= ((outputs & STM32_PWM_OUT3N) ? GTIM_CCER_CC3NE : 0); + regval |= ((outputs & STM32_PWM_OUT3N) ? ATIM_CCER_CC3NE : 0); regval |= ((outputs & STM32_PWM_OUT4) ? GTIM_CCER_CC4E : 0); /* NOTE: CC4N doesn't exist, but some docs show configuration bits for it */ diff --git a/arch/arm/src/stm32l4/stm32l4_pwm.c b/arch/arm/src/stm32l4/stm32l4_pwm.c index 397803f78eb..04ed37469b5 100644 --- a/arch/arm/src/stm32l4/stm32l4_pwm.c +++ b/arch/arm/src/stm32l4/stm32l4_pwm.c @@ -2551,11 +2551,11 @@ static int pwm_outputs_enable(FAR struct pwm_lowerhalf_s *dev, /* Get outputs configuration */ regval |= ((outputs & STM32L4_PWM_OUT1) ? GTIM_CCER_CC1E : 0); - regval |= ((outputs & STM32L4_PWM_OUT1N) ? GTIM_CCER_CC1NE : 0); + regval |= ((outputs & STM32L4_PWM_OUT1N) ? ATIM_CCER_CC1NE : 0); regval |= ((outputs & STM32L4_PWM_OUT2) ? GTIM_CCER_CC2E : 0); - regval |= ((outputs & STM32L4_PWM_OUT2N) ? GTIM_CCER_CC2NE : 0); + regval |= ((outputs & STM32L4_PWM_OUT2N) ? ATIM_CCER_CC2NE : 0); regval |= ((outputs & STM32L4_PWM_OUT3) ? GTIM_CCER_CC3E : 0); - regval |= ((outputs & STM32L4_PWM_OUT3N) ? GTIM_CCER_CC3NE : 0); + regval |= ((outputs & STM32L4_PWM_OUT3N) ? ATIM_CCER_CC3NE : 0); regval |= ((outputs & STM32L4_PWM_OUT4) ? GTIM_CCER_CC4E : 0); /* NOTE: CC4N does not exist, but some docs show configuration bits for it From ccc8c078f94afd0f24031742d9d6d0b369e8eb96 Mon Sep 17 00:00:00 2001 From: jordi Date: Wed, 19 May 2021 16:15:43 +0200 Subject: [PATCH 151/739] xtensa/esp32: Fix warning "is not defined" Detected with "-Werror" flag --- arch/xtensa/src/esp32/esp32_spiram.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/xtensa/src/esp32/esp32_spiram.c b/arch/xtensa/src/esp32/esp32_spiram.c index 90658c9cfd4..5274f29428a 100644 --- a/arch/xtensa/src/esp32/esp32_spiram.c +++ b/arch/xtensa/src/esp32/esp32_spiram.c @@ -67,9 +67,9 @@ /* Let's to assume SPIFLASH SPEED == SPIRAM SPEED for now */ -#if CONFIG_ESP32_SPIRAM_SPEED_40M +#if defined(CONFIG_ESP32_SPIRAM_SPEED_40M) # define PSRAM_SPEED PSRAM_CACHE_F40M_S40M -#elif CONFIG_ESP32_SPIRAM_SPEED_80M +#elif defined(CONFIG_ESP32_SPIRAM_SPEED_80M) # define PSRAM_SPEED PSRAM_CACHE_F80M_S80M #else # error "FLASH speed can only be equal to or higher than SRAM speed while SRAM is enabled!" From 2217d2f0d34c67e30ac32f089410308a6ca6a061 Mon Sep 17 00:00:00 2001 From: Tanushree Baindur Date: Wed, 19 May 2021 15:24:11 -0500 Subject: [PATCH 152/739] eagle100/configs/nxflat/defconfig: fix error: unused variable 'desc' --- boards/arm/tiva/eagle100/configs/nxflat/defconfig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/boards/arm/tiva/eagle100/configs/nxflat/defconfig b/boards/arm/tiva/eagle100/configs/nxflat/defconfig index 469b748b7d4..de2f6422dae 100644 --- a/boards/arm/tiva/eagle100/configs/nxflat/defconfig +++ b/boards/arm/tiva/eagle100/configs/nxflat/defconfig @@ -13,12 +13,13 @@ CONFIG_ARCH_CHIP_LM3S6918=y CONFIG_ARCH_CHIP_LM3S=y CONFIG_ARCH_CHIP_LM=y CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARDCTL_ROMDISK=y CONFIG_BOARD_LOOPSPERMSEC=4531 CONFIG_CONSOLE_SYSLOG=y CONFIG_DISABLE_ENVIRON=y CONFIG_EXAMPLES_NXFLAT=y CONFIG_FS_ROMFS=y -CONFIG_HOST_WINDOWS=y +CONFIG_LIB_BOARDCTL=y CONFIG_MAX_TASKS=16 CONFIG_NXFLAT=y CONFIG_PREALLOC_TIMERS=4 From 85f0bc591e6cecd616c01d06a4abe943a71f7faf Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Wed, 19 May 2021 13:02:13 -0700 Subject: [PATCH 153/739] mm:initialize ensure alignment. Broken by 635cfa. On an stm32 the heap is formed from const uintptr_t g_idle_topstack = HEAP_BASE; where HEAP_BASE is &_bss + CONFIG_IDLE_STACKSIZE. Both these values are not deterministic. One comes from the compiler, the other the system configurator. a 3 byte bss and 250 byte stack would lead to and unaligned address used as the heap to be. The compiler used clever `strd r1,r3,[r5,#8]` to store 2 values in one memory cycle into the heap_impl struct. Resulting in a hardfault. Change the amount of bss or the CONFIG_IDLE_STACKSIZE could lead to a non-functional NuttX system. --- mm/mm_heap/mm_initialize.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/mm/mm_heap/mm_initialize.c b/mm/mm_heap/mm_initialize.c index 62759e95861..0801eae5d54 100644 --- a/mm/mm_heap/mm_initialize.c +++ b/mm/mm_heap/mm_initialize.c @@ -165,17 +165,23 @@ void mm_initialize(FAR struct mm_heap_s *heap, FAR void *heapstart, size_t heapsize) { FAR struct mm_heap_impl_s *heap_impl; - int i; + uintptr_t heap_adj; + int i; minfo("Heap: start=%p size=%zu\n", heapstart, heapsize); + /* First ensure the memory to be used is aligned */ + + heap_adj = MM_ALIGN_UP((uintptr_t) heapstart); + heapsize -= heap_adj - (uintptr_t) heapstart; + /* Reserve a block space for mm_heap_impl_s context */ DEBUGASSERT(heapsize > sizeof(struct mm_heap_impl_s)); - heap->mm_impl = (FAR struct mm_heap_impl_s *)heapstart; + heap->mm_impl = (FAR struct mm_heap_impl_s *)heap_adj; heap_impl = heap->mm_impl; heapsize -= sizeof(struct mm_heap_impl_s); - heapstart = (FAR char *)heapstart + sizeof(struct mm_heap_impl_s); + heapstart = (FAR char *)heap_adj + sizeof(struct mm_heap_impl_s); /* The following two lines have cause problems for some older ZiLog * compilers in the past (but not the more recent). Life is easier if we From 9b3a80cc372a4942f19e6f328f141c3712eddb1c Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:03:36 +0900 Subject: [PATCH 154/739] arch: cxd56xx: Fix uart getting stuck during a clock change UART driver is stopped and re-started during a clock change. When a UART interrupt is generated in each process, the unexpected behavior will occur and a console will get stuck with UART driver. This commit fixed each process is performed atomically. --- arch/arm/src/cxd56xx/cxd56_uart.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/arm/src/cxd56xx/cxd56_uart.c b/arch/arm/src/cxd56xx/cxd56_uart.c index b8b2f3caeb2..3ddfac640e6 100644 --- a/arch/arm/src/cxd56xx/cxd56_uart.c +++ b/arch/arm/src/cxd56xx/cxd56_uart.c @@ -206,11 +206,15 @@ static void cxd56_uart_pincontrol(int ch, bool on) static void cxd56_uart_start(int ch) { + irqstate_t flags = enter_critical_section(); + cxd56_setbaud(CONSOLE_BASE, CONSOLE_BASEFREQ, CONSOLE_BAUD); putreg32(g_lcr, g_uartdevs[ch].uartbase + CXD56_UART_LCR_H); putreg32(g_cr, g_uartdevs[ch].uartbase + CXD56_UART_CR); + + leave_critical_section(flags); } /**************************************************************************** @@ -226,6 +230,8 @@ static void cxd56_uart_stop(int ch) { uint32_t cr; + irqstate_t flags = enter_critical_section(); + while (UART_FR_BUSY & getreg32(g_uartdevs[ch].uartbase + CXD56_UART_FR)); cr = getreg32(g_uartdevs[ch].uartbase + CXD56_UART_CR); @@ -235,6 +241,8 @@ static void cxd56_uart_stop(int ch) g_lcr = getreg32(g_uartdevs[ch].uartbase + CXD56_UART_LCR_H); putreg32(0, g_uartdevs[ch].uartbase + CXD56_UART_LCR_H); + + leave_critical_section(flags); } /**************************************************************************** From db340a8941769712bc5e2b93d0aae1ca48628243 Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:03:49 +0900 Subject: [PATCH 155/739] arch: cxd56xx: Support for suppresion of clock change Introduce PM_CPUFREQLOCK_FLAG_HOLD into the frequency lock mechanism in power manager, which is used to keep the current frequency without clock change, for example, during the transfer of a periphral. --- arch/arm/include/cxd56xx/pm.h | 5 +++-- arch/arm/src/cxd56xx/cxd56_powermgr.c | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/arch/arm/include/cxd56xx/pm.h b/arch/arm/include/cxd56xx/pm.h index 824a0a30541..fe3ab71699e 100644 --- a/arch/arm/include/cxd56xx/pm.h +++ b/arch/arm/include/cxd56xx/pm.h @@ -62,8 +62,9 @@ /* FrequencyLock request flag definitions */ -#define PM_CPUFREQLOCK_FLAG_HV (0x0001) /* request HV */ -#define PM_CPUFREQLOCK_FLAG_LV (0x4000) /* request LV */ +#define PM_CPUFREQLOCK_FLAG_HV (0x0001) /* request HV */ +#define PM_CPUFREQLOCK_FLAG_LV (0x4000) /* request LV */ +#define PM_CPUFREQLOCK_FLAG_HOLD (0x8000) /* hold the current frequency */ /* FrequencyLock identifier tag helper macro function */ diff --git a/arch/arm/src/cxd56xx/cxd56_powermgr.c b/arch/arm/src/cxd56xx/cxd56_powermgr.c index 489216a867b..00acf5ff080 100644 --- a/arch/arm/src/cxd56xx/cxd56_powermgr.c +++ b/arch/arm/src/cxd56xx/cxd56_powermgr.c @@ -577,6 +577,13 @@ void up_pm_acquire_freqlock(struct pm_cpu_freqlock_s *lock) cxd56_pm_semtake(&g_freqlock); + if (lock->flag == PM_CPUFREQLOCK_FLAG_HOLD) + { + /* Return with holding the current frequency */ + + return; + } + for (entry = sq_peek(&g_freqlockqueue); entry; entry = sq_next(entry)) { if (entry == (struct sq_entry_s *)lock) @@ -616,6 +623,13 @@ void up_pm_release_freqlock(struct pm_cpu_freqlock_s *lock) DEBUGASSERT(lock); + if (lock->flag == PM_CPUFREQLOCK_FLAG_HOLD) + { + /* Release holding the current frequency */ + + goto exit; + } + up_pm_acquire_wakelock(&g_wlock); cxd56_pm_semtake(&g_freqlock); @@ -634,6 +648,7 @@ void up_pm_release_freqlock(struct pm_cpu_freqlock_s *lock) } } +exit: nxsem_post(&g_freqlock); up_pm_release_wakelock(&g_wlock); From 67a56410ee729c3a36d830ac89cea8782cd211c7 Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:03:58 +0900 Subject: [PATCH 156/739] arch: cxd56xx: Prohibit clock change during SPI transfer If the system clock is changed during the SPI transfer, the SPI data can be corrupted. So this commit prohibits the clock change during SPI transfer, and keep the clock until the transfer is completed. --- arch/arm/src/cxd56xx/cxd56_spi.c | 38 ++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/arch/arm/src/cxd56xx/cxd56_spi.c b/arch/arm/src/cxd56xx/cxd56_spi.c index 5a648ed21ad..f537e603e7e 100644 --- a/arch/arm/src/cxd56xx/cxd56_spi.c +++ b/arch/arm/src/cxd56xx/cxd56_spi.c @@ -33,6 +33,7 @@ #include #include +#include #include #include #include @@ -327,6 +328,11 @@ static struct cxd56_spidev_s g_spi3dev = }; #endif +/* Inhibit clock change */ + +static struct pm_cpu_freqlock_s g_hold_lock = + PM_CPUFREQLOCK_INIT(0, PM_CPUFREQLOCK_FLAG_HOLD); + /**************************************************************************** * Public Data ****************************************************************************/ @@ -643,6 +649,10 @@ static uint32_t spi_send(FAR struct spi_dev_s *dev, uint32_t wd) register uint32_t regval; register uint32_t cr1val = 0; + /* Prohibit the clock change during SPI transfer */ + + up_pm_acquire_freqlock(&g_hold_lock); + /* Disable clock gating (clock enable) */ cxd56_spi_clock_gate_disable(priv->port); @@ -683,6 +693,10 @@ static uint32_t spi_send(FAR struct spi_dev_s *dev, uint32_t wd) cxd56_spi_clock_gate_enable(priv->port); + /* Allow the clock change after SPI transfer */ + + up_pm_release_freqlock(&g_hold_lock); + return regval; } @@ -737,6 +751,10 @@ static void spi_do_exchange(FAR struct spi_dev_s *dev, tx.pv = txbuffer; rx.pv = rxbuffer; + /* Prohibit the clock change during SPI transfer */ + + up_pm_acquire_freqlock(&g_hold_lock); + /* Disable clock gating (clock enable) */ cxd56_spi_clock_gate_disable(priv->port); @@ -811,6 +829,10 @@ static void spi_do_exchange(FAR struct spi_dev_s *dev, /* Enable clock gating (clock disable) */ cxd56_spi_clock_gate_enable(priv->port); + + /* Allow the clock change after SPI transfer */ + + up_pm_release_freqlock(&g_hold_lock); } /**************************************************************************** @@ -1350,6 +1372,10 @@ void spi_flush(FAR struct spi_dev_s *dev) FAR struct cxd56_spidev_s *priv = (FAR struct cxd56_spidev_s *)dev; uint32_t regval = 0; + /* Prohibit the clock change during SPI transfer */ + + up_pm_acquire_freqlock(&g_hold_lock); + /* Disable clock gating (clock enable) */ cxd56_spi_clock_gate_disable(priv->port); @@ -1393,6 +1419,10 @@ void spi_flush(FAR struct spi_dev_s *dev) /* Enable clock gating (clock disable) */ cxd56_spi_clock_gate_enable(priv->port); + + /* Allow the clock change after SPI transfer */ + + up_pm_release_freqlock(&g_hold_lock); } #ifdef CONFIG_CXD56_DMAC @@ -1414,6 +1444,10 @@ static void spi_dmaexchange(FAR struct spi_dev_s *dev, DEBUGASSERT(priv && priv->spibase); + /* Prohibit the clock change during SPI transfer */ + + up_pm_acquire_freqlock(&g_hold_lock); + /* Disable clock gating (clock enable) */ cxd56_spi_clock_gate_disable(priv->port); @@ -1450,6 +1484,10 @@ static void spi_dmaexchange(FAR struct spi_dev_s *dev, /* Enable clock gating (clock disable) */ cxd56_spi_clock_gate_enable(priv->port); + + /* Allow the clock change after SPI transfer */ + + up_pm_release_freqlock(&g_hold_lock); } #ifndef CONFIG_SPI_EXCHANGE From 89fd987a1ae97f189795c56f2b38ad321352603d Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:04:01 +0900 Subject: [PATCH 157/739] arch: cxd56xx: Fix RTC alarm cancellation process There is an issue that the next alarm is expired immediately after canceling a RTC alarm. Fixed alarm settings to be completely cleared when canceling an RTC alarm. --- arch/arm/src/cxd56xx/cxd56_rtc.c | 36 +++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/arch/arm/src/cxd56xx/cxd56_rtc.c b/arch/arm/src/cxd56xx/cxd56_rtc.c index 58cec8a2eb6..410f09f39d9 100644 --- a/arch/arm/src/cxd56xx/cxd56_rtc.c +++ b/arch/arm/src/cxd56xx/cxd56_rtc.c @@ -542,6 +542,7 @@ int cxd56_rtc_setalarm(FAR struct alm_setalarm_s *alminfo) int ret = -EBUSY; int id; uint64_t count; + uint32_t mask; ASSERT(alminfo != NULL); DEBUGASSERT(RTC_ALARM_LAST > alminfo->as_id); @@ -565,6 +566,13 @@ int cxd56_rtc_setalarm(FAR struct alm_setalarm_s *alminfo) count -= g_rtc_save->offset; + /* clear previsous setting */ + + mask = RTCREG_ALM0_ERR_FLAG_MASK | RTCREG_ALM0_FLAG_MASK; + mask <<= id; + + putreg32(mask, CXD56_RTC0_ALMCLR); + /* wait until previous alarm request is completed */ while (RTCREG_ASET_BUSY_MASK & getreg32(CXD56_RTC0_SETALMPRECNT(id))); @@ -609,10 +617,11 @@ int cxd56_rtc_cancelalarm(enum alm_id_e alarmid) FAR struct alm_cbinfo_s *cbinfo; irqstate_t flags; int ret = -ENODATA; + uint32_t mask; DEBUGASSERT(RTC_ALARM_LAST > alarmid); - /* Set the alarm in hardware and enable interrupts */ + /* Cancel the alarm in hardware and clear interrupts */ cbinfo = &g_alarmcb[alarmid]; @@ -628,6 +637,31 @@ int cxd56_rtc_cancelalarm(enum alm_id_e alarmid) putreg32(0, CXD56_RTC0_ALMOUTEN(alarmid)); + while (RTCREG_ALM_BUSY_MASK & getreg32(CXD56_RTC0_ALMOUTEN(alarmid))); + + /* wait until previous alarm request is completed */ + + while (RTCREG_ASET_BUSY_MASK & + getreg32(CXD56_RTC0_SETALMPRECNT(alarmid))); + + /* clear the alarm counter */ + + putreg32(0, CXD56_RTC0_SETALMPOSTCNT(alarmid)); + putreg32(0, CXD56_RTC0_SETALMPRECNT(alarmid)); + + while (RTCREG_ASET_BUSY_MASK & + getreg32(CXD56_RTC0_SETALMPRECNT(alarmid))); + + /* wait until the interrupt flag is clear */ + + mask = RTCREG_ALM0_ERR_FLAG_MASK | RTCREG_ALM0_FLAG_MASK; + mask <<= alarmid; + + while (mask & getreg32(CXD56_RTC0_ALMFLG)) + { + putreg32(mask, CXD56_RTC0_ALMCLR); + } + spin_unlock_irqrestore(NULL, flags); ret = OK; From a276de741f448dd4b9cbebd792fc38b1d4bdddd1 Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:04:05 +0900 Subject: [PATCH 158/739] arch: cxd56xx: Fix SPI setmode function When SSP mode is changed, SSE bit of SSPCR1 register must be disabled. --- arch/arm/src/cxd56xx/cxd56_spi.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/arch/arm/src/cxd56xx/cxd56_spi.c b/arch/arm/src/cxd56xx/cxd56_spi.c index f537e603e7e..ac3c60c0ac5 100644 --- a/arch/arm/src/cxd56xx/cxd56_spi.c +++ b/arch/arm/src/cxd56xx/cxd56_spi.c @@ -509,6 +509,7 @@ static void spi_setmode(FAR struct spi_dev_s *dev, enum spi_mode_e mode) { FAR struct cxd56_spidev_s *priv = (FAR struct cxd56_spidev_s *)dev; uint32_t regval; + uint32_t cr1val; /* Has the mode changed? */ @@ -551,8 +552,19 @@ static void spi_setmode(FAR struct spi_dev_s *dev, enum spi_mode_e mode) return; } + /* Disable SSE */ + + cr1val = spi_getreg(priv, CXD56_SPI_CR1_OFFSET); + spi_putreg(priv, CXD56_SPI_CR1_OFFSET, cr1val & ~SPI_CR1_SSE); + spi_putreg(priv, CXD56_SPI_CR0_OFFSET, regval); + /* Enable SSE after a few microseconds delay */ + + up_udelay(3); + + spi_putreg(priv, CXD56_SPI_CR1_OFFSET, cr1val); + /* Enable clock gating (clock disable) */ cxd56_spi_clock_gate_enable(priv->port); From 09cc6b780b9530ceafe104df54ff03bf84fbf3fa Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:04:08 +0900 Subject: [PATCH 159/739] arch: cxd56xx: update loader and gnssfw version Update loader and gnssfw to version 2.2.20175 --- arch/arm/src/cxd56xx/cxd56_farapistub.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/src/cxd56xx/cxd56_farapistub.h b/arch/arm/src/cxd56xx/cxd56_farapistub.h index 5fa5c272448..3e12f7551e5 100644 --- a/arch/arm/src/cxd56xx/cxd56_farapistub.h +++ b/arch/arm/src/cxd56xx/cxd56_farapistub.h @@ -21,6 +21,6 @@ #ifndef __ARCH_ARM_SRC_CXD56XX_CXD56_FARAPISTUB_H #define __ARCH_ARM_SRC_CXD56XX_CXD56_FARAPISTUB_H -#define FARAPISTUB_VERSION 20129 +#define FARAPISTUB_VERSION 20175 #endif /* __ARCH_ARM_SRC_CXD56XX_CXD56_FARAPISTUB_H */ From a10a4c483f922413e7b5e0f75d40c7adbc8b4628 Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:04:10 +0900 Subject: [PATCH 160/739] arch: cxd56xx: Add SCU register definitions Add SCU register definitions. --- arch/arm/src/cxd56xx/hardware/cxd56_scu.h | 15 +++++++++------ arch/arm/src/cxd56xx/hardware/cxd56_scuseq.h | 4 ++++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/arch/arm/src/cxd56xx/hardware/cxd56_scu.h b/arch/arm/src/cxd56xx/hardware/cxd56_scu.h index 224d29313da..307f4fec218 100644 --- a/arch/arm/src/cxd56xx/hardware/cxd56_scu.h +++ b/arch/arm/src/cxd56xx/hardware/cxd56_scu.h @@ -21,12 +21,8 @@ #ifndef __ARCH_ARM_SRC_CXD56XX_HARDWARE_CXD56_SCU_H #define __ARCH_ARM_SRC_CXD56XX_HARDWARE_CXD56_SCU_H -#define SCU_PWM0_PARAM (CXD56_SCU_BASE + 0x0000) -#define SCU_PWM0_EN (CXD56_SCU_BASE + 0x0004) -#define SCU_PWM0_UPDATE (CXD56_SCU_BASE + 0x0008) -#define SCU_PWM1_PARAM (CXD56_SCU_BASE + 0x000c) -#define SCU_PWM1_EN (CXD56_SCU_BASE + 0x0010) -#define SCU_PWM1_UPDATE (CXD56_SCU_BASE + 0x0014) +#define SCU_DEBUG_I2C0 (CXD56_SCU_BASE + 0x0018) +#define SCU_DEBUG_I2C1 (CXD56_SCU_BASE + 0x001c) #define SCU_SEQ_ENABLE_ALL (CXD56_SCU_BASE + 0x0020) #define SCU_SEQ_ACCESS_INHIBIT (CXD56_SCU_BASE + 0x0024) #define SCU_START_CTRL_COMMON (CXD56_SCU_BASE + 0x0028) @@ -178,5 +174,12 @@ #define SCU_INT_RAW_STT_ERR_2 (CXD56_SCU_BASE + 0x046c) #define SCU_INT_MASKED_STT_ERR_2 (CXD56_SCU_BASE + 0x0470) #define SCU_RAM_TEST (CXD56_SCU_BASE + 0x0500) +#define SCU_POWER (CXD56_SCU_BASE + 0x0510) +#define SCU_INT_ENABLE_MAIN_AD (CXD56_SCU_BASE + 0x0520) +#define SCU_INT_DISABLE_MAIN_AD (CXD56_SCU_BASE + 0x0524) +#define SCU_INT_CLEAR_MAIN_AD (CXD56_SCU_BASE + 0x0528) +#define SCU_INT_LEVEL_SEL_MAIN_AD (CXD56_SCU_BASE + 0x052c) +#define SCU_INT_RAW_STT_MAIN_AD (CXD56_SCU_BASE + 0x0530) +#define SCU_INT_MASKED_STT_MAIN_AD (CXD56_SCU_BASE + 0x0534) #endif /* __ARCH_ARM_SRC_CXD56XX_HARDWARE_CXD56_SCU_H */ diff --git a/arch/arm/src/cxd56xx/hardware/cxd56_scuseq.h b/arch/arm/src/cxd56xx/hardware/cxd56_scuseq.h index 41fc417ceac..6a1d3998784 100644 --- a/arch/arm/src/cxd56xx/hardware/cxd56_scuseq.h +++ b/arch/arm/src/cxd56xx/hardware/cxd56_scuseq.h @@ -21,7 +21,11 @@ #ifndef __ARCH_ARM_SRC_CXD56XX_HARDWARE_CXD56_SCUSEQ_H #define __ARCH_ARM_SRC_CXD56XX_HARDWARE_CXD56_SCUSEQ_H +#define SCUSEQ_SW_REVISION_DATE (CXD56_SCU_SEQ_DRAM_BASE + 0x000) +#define SCUSEQ_SW_REVISION_TIME (CXD56_SCU_SEQ_DRAM_BASE + 0x004) +#define SCUSEQ_SW_REVISION_GIT_HASH (CXD56_SCU_SEQ_DRAM_BASE + 0x008) #define SCUSEQ_SRC_SEL (CXD56_SCU_SEQ_DRAM_BASE + 0x00c) +#define SCUSEQ_REPEAT_TXABORT (CXD56_SCU_SEQ_DRAM_BASE + 0x010) #define SCUSEQ_PROPERTY(s) (CXD56_SCU_SEQ_DRAM_BASE + 0x020 + ((s) * 0x20)) #define SCUSEQ_OUT_FORMAT(s) (CXD56_SCU_SEQ_DRAM_BASE + 0x024 + ((s) * 0x20)) #define SCUSEQ_MATH_PROC_OFST_GAIN_X(s) (CXD56_SCU_SEQ_DRAM_BASE + 0x028 + ((s) * 0x20)) From ade26c17d23c8d0b57e7e2e4c44ef06b569bff11 Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:04:13 +0900 Subject: [PATCH 161/739] arch: cxd56xx: Update i2c register initialization Enable RX_FIFO_FULL_HLD_CTRL and RESTART of i2c control register in i2c initial settings for transfer by SCU sequencer. --- arch/arm/src/cxd56xx/cxd56_i2c.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/arm/src/cxd56xx/cxd56_i2c.c b/arch/arm/src/cxd56xx/cxd56_i2c.c index 5b0d29aff45..eb7ea61f435 100644 --- a/arch/arm/src/cxd56xx/cxd56_i2c.c +++ b/arch/arm/src/cxd56xx/cxd56_i2c.c @@ -1028,7 +1028,9 @@ struct i2c_master_s *cxd56_i2cbus_initialize(int port) i2c_reg_write(priv, CXD56_IC_SDA_HOLD, 1); i2c_reg_write(priv, CXD56_IC_CON, - (IC_SLAVE_DISABLE | IC_MASTER_MODE | IC_TX_EMPTY_CTRL)); + (IC_RX_FIFO_FULL_HLD_CTRL | IC_RESTART_EN | + IC_SLAVE_DISABLE | IC_MASTER_MODE | IC_TX_EMPTY_CTRL)); + cxd56_i2c_setfrequency(priv, I2C_DEFAULT_FREQUENCY); leave_critical_section(flags); From ba6201401f3e9b2c53da3be0a8e4450185317126 Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:04:15 +0900 Subject: [PATCH 162/739] arch: cxd56xx: Remove unnecessary i2c settings Remove slave address register setting that is unnecessary for the transfer by SCU sequencer. --- arch/arm/src/cxd56xx/cxd56_i2c.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/arch/arm/src/cxd56xx/cxd56_i2c.c b/arch/arm/src/cxd56xx/cxd56_i2c.c index eb7ea61f435..c206a382b76 100644 --- a/arch/arm/src/cxd56xx/cxd56_i2c.c +++ b/arch/arm/src/cxd56xx/cxd56_i2c.c @@ -846,9 +846,6 @@ static int cxd56_i2c_transfer_scu(FAR struct i2c_master_s *dev, cxd56_i2c_clock_gate_disable(priv->port); cxd56_i2c_disable(priv); cxd56_i2c_setfrequency(priv, msgs->frequency); - i2c_reg_rmw(priv, CXD56_IC_CON, IC_RESTART_EN, IC_RESTART_EN); - i2c_reg_write(priv, CXD56_IC_TAR, msgs->addr & 0x7f); - cxd56_i2c_enable(priv); cxd56_i2c_clock_gate_enable(priv->port); priv->frequency = msgs->frequency; From f548ffa7a7dd4ac8cb018f47d1a1410e5e1f30ee Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:04:18 +0900 Subject: [PATCH 163/739] arch: cxd56xx: Support execution error by SCU sequencer Enable interrupt by SCU sequencer execution error. If the interrupt occurs, then it stops the sequencer and returns the error code. --- arch/arm/src/cxd56xx/cxd56_scu.c | 36 +++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/arch/arm/src/cxd56xx/cxd56_scu.c b/arch/arm/src/cxd56xx/cxd56_scu.c index 0e9cc31d31b..dde300159f9 100644 --- a/arch/arm/src/cxd56xx/cxd56_scu.c +++ b/arch/arm/src/cxd56xx/cxd56_scu.c @@ -196,6 +196,7 @@ struct cxd56_scudev_s uint8_t oneshot; /* Bitmap for Oneshots */ sem_t oneshotwait[3]; /* Semaphore for wait oneshot sequence is done */ + int oneshoterr[3]; /* error code for oneshot sequencer */ struct ev_notify_s event[3]; /* MATHFUNC event notify */ struct wm_notify_s wm[14]; /* Watermark notify */ @@ -1066,6 +1067,7 @@ static int seq_oneshot(int bustype, int slave, FAR uint16_t *inst, putreg32(1 << (tid + 24), SCU_INT_ENABLE_MAIN); scuinfo("Sequencer start.\n"); + priv->oneshoterr[tid] = 0; /* Start sequencer as one shot mode */ @@ -1082,7 +1084,11 @@ static int seq_oneshot(int bustype, int slave, FAR uint16_t *inst, scuinfo("Sequencer done.\n"); - if (buffer) + if (priv->oneshoterr[tid] < 0) + { + ret = ERROR; + } + else { /* Copy sequencer output results to user buffer. * XXX: Sequencer output RAM offset is differ from document. @@ -1661,6 +1667,8 @@ static int seq_scuirqhandler(int irq, FAR void *context, FAR void *arg) uint32_t ierr0; uint32_t ierr1; uint32_t ierr2; + uint32_t out; + int tid; int i; intr = getreg32(SCU_INT_MASKED_STT_MAIN); @@ -1721,16 +1729,30 @@ static int seq_scuirqhandler(int irq, FAR void *context, FAR void *arg) if (ierr2 != 0) { scuerr("err2: %08x\n", ierr2); - ierr2 &= 0x03ff; + for (i = 0; i < 10; i++) { - if (ierr2 & (1 << i)) + if (ierr2 & (0x00010001 << i)) { seq_stopseq(i); + + /* Get sequencer output selector */ + + out = (getreg32(SCUSEQ_PROPERTY(i)) >> 12) & 0x3; + + if (0 < out) + { + /* Set error code to oneshot sequencer id */ + + tid = out - 1; + + priv->oneshoterr[tid] = -EIO; + seq_semgive(&priv->oneshotwait[tid]); + } } } - putreg32(0x03ff, SCU_INT_CLEAR_ERR_2); + putreg32(ierr2, SCU_INT_CLEAR_ERR_2); } return 0; @@ -3461,7 +3483,11 @@ void scu_initialize(void) /* Enable error interrupt */ putreg32(0x007ffe00, SCU_INT_ENABLE_ERR_0); - putreg32(0x03ff, SCU_INT_ENABLE_ERR_2); + putreg32(0x03ff03ff, SCU_INT_ENABLE_ERR_2); + + /* Set the number of TxAbort repeat times */ + + putreg32(5, SCUSEQ_REPEAT_TXABORT); /* Enable SCU IRQ */ From e26da5f56494e69d3757b69d0185bbf4f02c3a6d Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:04:20 +0900 Subject: [PATCH 164/739] arch: cxd56xx: Update isop firmware Update isop firmware which supports for the error handling and i2c multi-master environment. --- arch/arm/src/cxd56xx/hardware/cxd5602_isop.h | 856 ++++++++++--------- 1 file changed, 437 insertions(+), 419 deletions(-) diff --git a/arch/arm/src/cxd56xx/hardware/cxd5602_isop.h b/arch/arm/src/cxd56xx/hardware/cxd5602_isop.h index de158099d19..28347203da4 100644 --- a/arch/arm/src/cxd56xx/hardware/cxd5602_isop.h +++ b/arch/arm/src/cxd56xx/hardware/cxd5602_isop.h @@ -1,4 +1,4 @@ -/* This file is generated at May 18 2016 16:19:52 */ +/* This file is generated at Dec 14 2020 13:28:30 */ /**************************************************************************** * Public Data @@ -9,442 +9,460 @@ const unsigned long scu_isopprog_array[] = 0xf7f8d600, 0xa2024f86, 0x0001a200, 0x18004081, 0x00008014, 0x00000000, 0x0000a207, 0x00000000, 0x0000a070, 0xac2d4ec6, 0xd000ac27, 0x50a2e444, - 0x70111801, 0x50011c01, 0xf34cd000, 0x0004800a, + 0x70111801, 0x50011c01, 0xf356d000, 0x0004800a, 0x40110114, 0x50031f43, 0x9ff42801, 0x90062911, 0x8fec5043, 0x00140003, 0x40640113, 0x1f344011, - 0x9fe42121, 0xd2005001, 0x5203f356, 0x50155004, + 0x9fe42121, 0xd2005001, 0x5203f360, 0x50155004, 0x04150845, 0x90082905, 0x2d444014, 0x00259ff2, 0x40110115, 0x21311f54, 0xd1009fe4, 0x5ff2e824, 0xe808d400, 0x01f8fc43, 0x07fffc33, 0xe804d000, 0xf000d700, 0x1c431c12, 0xe800d100, 0x1c025013, - 0x0103fc40, 0x0300fc30, 0xf3d8d200, 0x1c135be4, + 0x0103fc40, 0x0300fc30, 0xf3e0d200, 0x1c135be4, 0xe418d100, 0x1c105003, 0xf47250a1, 0x1c230300, 0x0004f721, 0xf7235e61, 0xf7230005, 0xf7230016, 0x00250017, 0x4fc10215, 0xf7531d53, 0xf753fffe, 0x2141ffff, 0xd1009fee, 0xd209f33c, 0xd000ec00, - 0x5004f4b8, 0x1c125005, 0x0304f470, 0x44020002, + 0x5004f4c0, 0x1c125005, 0x0304f470, 0x44020002, 0x0308f472, 0x41a10001, 0x00020053, 0x106350a7, 0x1c240132, 0x0004f727, 0x0005f724, 0x0016f724, 0x0017f724, 0x1d340013, 0xfffef734, 0xfffff734, 0x40434ff7, 0x9ff02907, 0x44014015, 0x9fca2925, - 0xd3005001, 0x5004f340, 0xf398d200, 0x01150035, - 0x1f544011, 0x9ff62941, 0xd4005fe3, 0x5005f344, - 0x00415f67, 0x4fc30231, 0xfffef512, 0x1f154202, - 0x9ff02173, 0xf334d200, 0xf000d100, 0xd4005003, - 0x5005f538, 0x030cf412, 0xac115001, 0xa819ac19, - 0x00470052, 0x00710112, 0x01211032, 0x00201c13, - 0x70407052, 0x1f450104, 0x00740070, 0xf34cd700, - 0x01200157, 0x1e724015, 0xf7131f02, 0xa8110016, - 0x210550a0, 0x9fc44021, 0xf376d000, 0x1000fc11, - 0x00345f02, 0x4ff30005, 0x21231014, 0x1d510245, - 0x50029ff2, 0xf334d000, 0xf000d700, 0xf458d300, - 0x1d025004, 0xf332d000, 0x0310f470, 0x00350041, - 0x01151041, 0x0004f452, 0x0008f454, 0xf7524014, - 0xf752000c, 0x1c52000d, 0x9fe22964, 0xd2005001, - 0x1f21f330, 0x0001f721, 0xf5711d01, 0xf77102fe, - 0xfc4102fc, 0xfc312016, 0xd2160518, 0x1c711951, - 0x0427fc41, 0x9e21fc31, 0x0004f472, 0xe412d200, - 0x0008f471, 0x1f215011, 0x0d86fa00, 0xa82da827, - 0x41465000, 0x0000a070, 0xac3d4e46, 0xf601ac37, - 0x28010005, 0xf6029178, 0xac200004, 0x10110021, - 0xd100ac29, 0xa828f538, 0x10300120, 0x7050ac18, - 0x1e150101, 0xfa000050, 0x00501890, 0x29006fb0, - 0x0050901a, 0xfa004010, 0x00501880, 0xfa004020, - 0x00501878, 0xfa004030, 0xd1001870, 0x5010e000, - 0x08501811, 0x28010401, 0xac15906c, 0x0128fa00, - 0x5003a822, 0xf6205005, 0xa8110004, 0xfa004062, - 0xa8230290, 0xf538d400, 0x91022900, 0x5021a818, - 0xf334d700, 0x1c410104, 0xf6305011, 0x1a720004, - 0x05120801, 0xf6301d72, 0xf7400005, 0x28000016, - 0x500090dc, 0x00320041, 0x01524010, 0xf6220151, - 0xf7120006, 0x00050006, 0x0005f632, 0x24256ff5, - 0x80ba9fe4, 0xd100a822, 0xf620e404, 0x18110004, - 0x28016201, 0xd3009028, 0x6ff0f330, 0x0001f631, - 0x90222101, 0x6ff01e30, 0x901a2910, 0x15f0fa00, - 0x5030a822, 0xf330d100, 0x800a1f10, 0xf330d000, - 0x1f015001, 0x0004f620, 0xf000d100, 0x01011050, - 0x0005f620, 0x0024f213, 0xac1b2800, 0x0024f211, - 0x905a0050, 0xac100015, 0x0562fa00, 0x0053a814, - 0x904a2910, 0x60f31243, 0x61f34013, 0x903e2803, - 0x5002a818, 0x60f05001, 0x0030ac18, 0x00470043, - 0xf418d400, 0x10234011, 0xf2430134, 0x1a440002, - 0x0152a81d, 0x0125a825, 0x0006f652, 0x00741f42, - 0x00031f32, 0x6ff20012, 0x9fd02432, 0xa83da837, - 0xa07041c6, 0xac454e06, 0xd000ac3f, 0xfc41e400, - 0x18000400, 0x28000410, 0x5000915e, 0xfc41ac10, - 0xd0000400, 0xac19e804, 0xd1001c01, 0x1810e080, - 0xe084d100, 0x00021811, 0xf76260f2, 0x00620014, - 0x0014fc02, 0x00040023, 0x13007022, 0x70131284, - 0x1f346034, 0xf5611d20, 0x13010018, 0xe088d000, - 0xf5615012, 0x1c02001a, 0x0014f265, 0x6ff5ac25, - 0xfa000050, 0xa8220498, 0xf418d100, 0x90902910, - 0xd0001025, 0x0017f000, 0xfc411282, 0x01500100, - 0xf0004012, 0x6ff20280, 0x50010410, 0x903a2900, - 0x50000075, 0x28020027, 0xf6629066, 0x00530014, + 0xf34cd200, 0xd3005001, 0x5004f340, 0x0002f721, + 0xf3a0d200, 0x01450035, 0x1f514014, 0x9ff62944, + 0xd4005fe3, 0x5005f344, 0x00415f67, 0x4fc30231, + 0xfffef512, 0x1f154202, 0x9ff02173, 0xf334d200, + 0xf000d100, 0xd4005003, 0x5005f540, 0x030cf412, + 0xac115001, 0xa819ac19, 0x00470052, 0x00710112, + 0x01211032, 0x00201c13, 0x70407052, 0x1f450104, + 0x00740070, 0xf356d700, 0x01200157, 0x1e724015, + 0xf7131f02, 0xa8110016, 0x210550a0, 0x9fc44021, + 0xf380d000, 0x1000fc11, 0x00345f02, 0x4ff30005, + 0x21231014, 0x1d510245, 0x50029ff2, 0xf334d000, + 0xf000d700, 0xf460d300, 0x1d025004, 0xf332d000, + 0x0310f470, 0x00350041, 0x01151041, 0x0004f452, + 0x0008f454, 0xf7524014, 0xf752000c, 0x1c52000d, + 0x9fe22964, 0xd2005001, 0x1f21f330, 0x0001f721, + 0xf5711d01, 0xf77102fe, 0xfc4102fc, 0xfc312020, + 0xd2131214, 0x1c712825, 0x01cdfc41, 0x4cf8fc31, + 0x0004f472, 0xe412d200, 0x0008f471, 0x1f215011, + 0x0e98fa00, 0xa82da827, 0x41465000, 0x0000a070, + 0xac3d4e46, 0xf601ac37, 0x28010005, 0xf6029178, + 0xac200004, 0x10110021, 0xd100ac29, 0xa828f540, + 0x10300120, 0x7050ac18, 0x1e150101, 0xfa000050, + 0x005019a2, 0x29006fb0, 0x0050901a, 0xfa004010, + 0x00501992, 0xfa004020, 0x0050198a, 0xfa004030, + 0xd1001982, 0x5010e000, 0x08501811, 0x28010401, + 0xac15906c, 0x0128fa00, 0x5003a822, 0xf6205005, + 0xa8110004, 0xfa004062, 0xa8230290, 0xf540d400, + 0x91022900, 0x5021a818, 0xf334d700, 0x1c410104, + 0xf6305011, 0x1a720004, 0x05120801, 0xf6301d72, + 0xf7400005, 0x28000016, 0x500090dc, 0x00320041, + 0x01524010, 0xf6220151, 0xf7120006, 0x00050006, + 0x0005f632, 0x24256ff5, 0x80ba9fe4, 0xd100a822, + 0xf620e404, 0x18110004, 0x28016201, 0xd3009028, + 0x6ff0f330, 0x0001f631, 0x90222101, 0x6ff01e30, + 0x901a2910, 0x1702fa00, 0x5030a822, 0xf330d100, + 0x800a1f10, 0xf330d000, 0x1f015001, 0x0004f620, + 0xf000d100, 0x01011050, 0x0005f620, 0x0024f213, + 0xac1b2800, 0x0024f211, 0x905a0050, 0xac100015, + 0x0562fa00, 0x0053a814, 0x904a2910, 0x60f31243, + 0x61f34013, 0x903e2803, 0x5002a818, 0x60f05001, + 0x0030ac18, 0x00470043, 0xf420d400, 0x10234011, + 0xf2430134, 0x1a440002, 0x0152a81d, 0x0125a825, + 0x0006f652, 0x00741f42, 0x00031f32, 0x6ff20012, + 0x9fd02432, 0xa83da837, 0xa07041c6, 0xac454e06, + 0xd000ac3f, 0xfc41e400, 0x18000400, 0x28000410, + 0x5000915e, 0xfc41ac10, 0xd0000400, 0xac19e804, + 0xd1001c01, 0x1810e080, 0xe084d100, 0x00021811, + 0xf76260f2, 0x00620014, 0x0014fc02, 0x00040023, + 0x13007022, 0x70131284, 0x1f346034, 0xf5611d20, + 0x13010018, 0xe088d000, 0xf5615012, 0x1c02001a, + 0x0014f265, 0x6ff5ac25, 0xfa000050, 0xa8220498, + 0xf420d100, 0x90902910, 0xd0001025, 0x0017f000, + 0xfc411282, 0x01500100, 0xf0004012, 0x6ff20280, + 0x50010410, 0x903a2900, 0x50000075, 0x28020027, + 0xf6629066, 0x00530014, 0x40101011, 0x01231022, + 0x0002f232, 0x00641a33, 0x0014fc04, 0xf2410114, + 0x1d310002, 0x00011d21, 0x24716ff1, 0x80389fd6, + 0x50000075, 0x28020027, 0xf662902e, 0x00530014, 0x40101011, 0x01231022, 0x0002f232, 0x00641a33, - 0x0014fc04, 0xf2410114, 0x1d310002, 0x00011d21, - 0x24716ff1, 0x80389fd6, 0x50000075, 0x28020027, - 0xf662902e, 0x00530014, 0x40101011, 0x01231022, - 0x0002f232, 0x00641a33, 0x0014fc04, 0xf6410114, - 0x1f310003, 0x00011f21, 0x24716ff1, 0xd0009fd6, - 0x1800e400, 0x0410a819, 0x900c2800, 0x4010a810, - 0x2c40ac10, 0xf6619efa, 0x50000014, 0x90142c41, - 0x4fc00010, 0x90062e30, 0x80085010, 0x00fafc01, - 0xd1000010, 0x1811e404, 0x28016201, 0xd5009022, - 0x6ff0f330, 0x0001f651, 0x901c2101, 0x6ff01e50, - 0x90142910, 0x13f8fa00, 0x1f505030, 0xd000800a, - 0x5001f330, 0xa83f1f01, 0x4206a845, 0x4e06a070, - 0xac3fac45, 0xe400d300, 0xfc431834, 0x04340200, - 0x90322804, 0xd400ac21, 0x1841e404, 0x28016201, - 0xd1009032, 0xf614f330, 0x21040001, 0x1e11902e, - 0x29316ff1, 0xd0009026, 0xf001f000, 0x701102c8, - 0x02c8f401, 0xe808d000, 0x05311801, 0x50001c01, - 0xd1008108, 0x5003f330, 0x10501f13, 0xf000d100, - 0xe808d300, 0xfdfffc45, 0xfffffc35, 0x01015007, - 0xf210ac19, 0x18340026, 0xfc450454, 0x12c00200, - 0xd3001c34, 0x1c35e804, 0x0026f213, 0xf214ac10, - 0xf2100026, 0xf2150026, 0x12830026, 0x124512c4, - 0x601060f3, 0x01326034, 0x28006075, 0x902a4014, - 0x00615003, 0x40131017, 0x0014fc01, 0x01711e20, - 0x0001f627, 0x10804022, 0x08500570, 0x00371d10, - 0x24476ff7, 0x80289fde, 0x00605003, 0x40131017, - 0x0014fc00, 0x01701e21, 0x0001f627, 0x10874022, - 0x08570517, 0x00371d07, 0x24476ff7, 0xa8119fde, - 0xf262a820, 0xd3000014, 0x1081e004, 0xfc211102, - 0x05010300, 0xd2000521, 0x1c31e008, 0xfc000060, - 0xf2610014, 0x70200018, 0x11011a00, 0x1c210501, - 0xe00cd100, 0xf020a81a, 0x1c100028, 0xe010d100, - 0x002cf020, 0xd1001c10, 0xf020e014, 0x1c100030, - 0xd1005010, 0x1c10e018, 0xa845a83f, 0xa0704206, - 0xac454e06, 0xd500ac3f, 0x5014e000, 0xa84d1857, - 0x04470804, 0x901e2807, 0xac21ac32, 0xac1bac28, - 0xfd04faff, 0xa828ac0d, 0xa832a821, 0xfa00a81b, - 0x80240032, 0x2805ac32, 0x901cac28, 0x1811ac21, - 0xa832a828, 0x0286fa00, 0xa828a830, 0x4ff5a821, - 0x40412905, 0xa83f9fe8, 0x5010a845, 0xa0704206, - 0xac654d06, 0xac22ac5f, 0xd100ac19, 0xfc44e808, - 0xfc34fdff, 0x2623ffff, 0x04421812, 0x0200fc44, - 0xd2001c12, 0x5001e804, 0xa86c1c24, 0x9014ac2c, - 0x90322803, 0x90382913, 0xf000d100, 0x0268f011, - 0x28338052, 0x29439038, 0xd200903e, 0xf021f000, - 0xa8230274, 0x903c2913, 0x0278f022, 0xe010d300, - 0x80301c32, 0xf000d100, 0x0264f011, 0x29238026, - 0xd1009022, 0xf011f000, 0x8018026c, 0xf000d100, - 0x0270f011, 0x2953800e, 0xd100900a, 0xf011f000, - 0xd200027c, 0x1c21e00c, 0x2801a829, 0xa821911a, - 0xd4005003, 0x1081e400, 0xac110501, 0xa8190030, - 0xe004d500, 0x01011020, 0x00011810, 0x1101a812, - 0x1c520512, 0x2911a821, 0x1300900a, 0xe008d100, - 0xd0001c10, 0x5011e018, 0x1c01ac33, 0xfc401841, - 0x04010400, 0x9ff62801, 0x04011841, 0x28015010, - 0xfc4190bc, 0xd2000400, 0xac50e804, 0xe084d000, - 0x1c21ac49, 0xe080d100, 0x18155012, 0xe088d100, - 0x60f5ac45, 0xac381800, 0x00501c12, 0x00aefa00, - 0x90742910, 0x1025a844, 0xf000d100, 0x0100fc42, - 0x00400151, 0x0280f011, 0x0300fc20, 0x28010421, - 0xd2009016, 0x1384f418, 0xf2230152, 0x1a220002, - 0x1f341f24, 0xd2008014, 0x1304f418, 0xf2230152, - 0x1a220002, 0x1d341d24, 0x902c2800, 0xf418d000, - 0x01502801, 0xf2019016, 0x1a000002, 0xfc22a83a, - 0x1282ff00, 0x1f121f02, 0xf201800e, 0x1a000002, - 0x1d02a83a, 0xd4001d12, 0x1840e400, 0x0410a849, - 0xa8502800, 0x2c409008, 0x9f484010, 0xa828a833, - 0x21034013, 0xfc409ef8, 0xd1000200, 0x1c10e804, - 0xa85f5010, 0x4306a865, 0xd200a070, 0x0001f000, - 0x00231020, 0x50100103, 0x0280f033, 0x28036033, - 0x29239078, 0x0014904c, 0xd3001021, 0x0112f376, - 0xf0211014, 0x01430280, 0x12415094, 0x40a16031, - 0x081460f1, 0xe404d100, 0x04141811, 0x904c2804, - 0x50001a31, 0x90422801, 0x1000fc10, 0x90442101, - 0x0280f020, 0xfc201280, 0x1d300fff, 0xa0705010, - 0x90242913, 0x01121021, 0xf0205091, 0xd2000280, - 0x1240e404, 0x40a06030, 0x080160f0, 0x04011820, - 0xa3002901, 0x5000a070, 0xfc11a070, 0x1d311000, - 0x4ff1a070, 0x1d315010, 0x4ec6a070, 0xac27ac2d, - 0xac19ac12, 0xfaff0005, 0x2910ff54, 0x10259024, - 0xf418d100, 0xf2100151, 0x1a110002, 0x2802a812, - 0xa81a900a, 0x1c021c12, 0xa81a8008, 0x1d021d12, - 0xa82da827, 0xa0704146, 0xac3d4e46, 0x0004ac37, - 0x29051845, 0xd000901e, 0x2801e404, 0x00171803, - 0xe410d000, 0x180290a0, 0x28036043, 0x704290b4, - 0x2915809e, 0x00179332, 0x0004f641, 0x00126ff1, - 0x10220040, 0xf6020120, 0xf6030019, 0x21230018, - 0x10519026, 0xf000d200, 0xf0210112, 0xf0220020, - 0x13010020, 0x67f11382, 0xf70161f2, 0x01210018, - 0xf7014011, 0xac170019, 0xe444d200, 0x28075041, - 0x08711823, 0xf000d700, 0xd1000513, 0x1c23d800, - 0xd400d300, 0xa512a432, 0xf6410023, 0x00450004, - 0x76c30074, 0x01141051, 0x0020f041, 0x1c345004, - 0xfc240014, 0x28040400, 0xfc21902e, 0xfc3103ff, - 0x80261000, 0x60231802, 0x91102803, 0x1c027022, - 0xe804d000, 0x0400fc11, 0x50001c01, 0x0524f800, - 0xac245fb1, 0x67f180fa, 0x1c217042, 0x50015012, - 0xd2001c32, 0xf604d410, 0xac250018, 0x0017f754, - 0x0005f751, 0xd1000003, 0xac1bd810, 0x2800a810, - 0xa5120030, 0x0019f601, 0xac296ff1, 0xa82b0041, - 0x25136ff1, 0x4014915a, 0xf7041011, 0x00740018, - 0xf2470114, 0xf2450160, 0x12c50160, 0x00516075, - 0x0160f243, 0xfc234011, 0x28030100, 0xa8209010, - 0x0005f603, 0xf7030113, 0xa8180005, 0x0160fc04, - 0x29030e53, 0xfc279008, 0x802607ff, 0x28210073, - 0x05fffc23, 0x90161c23, 0x90122815, 0x4ff50071, - 0x01fffc21, 0x1c214ff5, 0x9ffa2905, 0x03fffc27, - 0xd7001c27, 0x1a41f000, 0x0018f604, 0x0800fc21, - 0x9f7a2801, 0x0019f601, 0x90d42541, 0xd2001014, - 0x0147c000, 0x0160f271, 0xe000fc21, 0x90ba2121, - 0x0160fc07, 0x6ff11a71, 0xf5014011, 0xf601001a, - 0x40110018, 0x0018f701, 0xac2480a6, 0x04125fd1, - 0xe400d100, 0x50001c02, 0xfc211811, 0x280103ff, - 0x0410f900, 0x280750a2, 0xd5005143, 0xa424f000, - 0xf053a534, 0x0943000c, 0xf356d400, 0x00310413, - 0x61f10045, 0x1e510115, 0x900a2951, 0x01341253, - 0x40511e41, 0x903c2021, 0xd4005013, 0x5012e804, - 0x1c430813, 0xa8230014, 0x01431024, 0x001af234, - 0x90202804, 0xe408d100, 0xa8251814, 0x0004f655, - 0x05420852, 0xf2311c12, 0x4ff1001a, 0x001af531, - 0x001283a0, 0x6ff250a3, 0x93962032, 0x5010a824, - 0x0004f741, 0x8dc61c40, 0xf5015001, 0xa824001a, - 0x0005f640, 0x90162800, 0xd200a813, 0xd100d438, - 0x4ff0d838, 0xa5122803, 0x80141c20, 0xd100a812, - 0xd000d438, 0x2802d838, 0xa50151f2, 0xd0001c12, - 0x1800e404, 0x0200fc20, 0x908e2800, 0xe41bd000, - 0xd5005011, 0x1f01e408, 0xf6431852, 0x41030004, - 0xd3000831, 0x0521e808, 0xfff8fc42, 0xfffffc32, - 0xfc411c51, 0xfc31ffff, 0xfc151fff, 0xa8104000, - 0xa5212800, 0x28001832, 0x1c320412, 0x2000fc13, - 0x0001fc42, 0xd300a431, 0xa521e804, 0x8000d200, - 0x1c312800, 0x0004fc41, 0x2800a512, 0x0002fc41, - 0xa4521c32, 0xa5125005, 0xf6421c32, 0x00410004, - 0x01211022, 0x001af515, 0x0017f642, 0x0018f712, - 0x0de0fa00, 0x801ca824, 0xd100a812, 0xfc40e000, - 0xd3000007, 0x5025e808, 0xa5012802, 0x05121832, - 0x1c451c32, 0x2925a811, 0xd0009294, 0x0047e400, - 0x18042801, 0x90220013, 0x0004fc42, 0x28040424, - 0x1801902a, 0x0001fc42, 0x29010421, 0x1800901e, - 0x0002fc41, 0x81c60410, 0x8000fc24, 0x900c2804, - 0xfc211801, 0x28012000, 0x003291ae, 0xfffffc41, - 0x1ffffc31, 0xfff8fc40, 0xfffffc30, 0xe808d300, - 0x0004fc45, 0xac122802, 0x2802a501, 0x1830ac29, - 0xfc110410, 0x1c302000, 0x0001fc40, 0xd300a414, - 0xa5048000, 0xe804d000, 0x1c042802, 0x1c03a553, - 0xf6150071, 0x28050005, 0xa810902e, 0xd410d500, - 0xd810d700, 0xa5752800, 0x00725007, 0x40170010, - 0x01206ff2, 0xf7021e52, 0x00700006, 0x0005f612, + 0x0014fc04, 0xf6410114, 0x1f310003, 0x00011f21, + 0x24716ff1, 0xd0009fd6, 0x1800e400, 0x0410a819, + 0x900c2800, 0x4010a810, 0x2c40ac10, 0xf6619efa, + 0x50000014, 0x90142c41, 0x4fc00010, 0x90062e30, + 0x80085010, 0x00fafc01, 0xd1000010, 0x1811e404, + 0x28016201, 0xd5009022, 0x6ff0f330, 0x0001f651, + 0x901c2101, 0x6ff01e50, 0x90142910, 0x150afa00, + 0x1f505030, 0xd000800a, 0x5001f330, 0xa83f1f01, + 0x4206a845, 0x4e06a070, 0xac3fac45, 0xe400d300, + 0xfc431834, 0x04340200, 0x90322804, 0xd400ac21, + 0x1841e404, 0x28016201, 0xd1009032, 0xf614f330, + 0x21040001, 0x1e11902e, 0x29316ff1, 0xd0009026, + 0xf001f000, 0x701102c8, 0x02c8f401, 0xe808d000, + 0x05311801, 0x50001c01, 0xd1008108, 0x5003f330, + 0x10501f13, 0xf000d100, 0xe808d300, 0xfdfffc45, + 0xfffffc35, 0x01015007, 0xf210ac19, 0x18340026, + 0xfc450454, 0x12c00200, 0xd3001c34, 0x1c35e804, + 0x0026f213, 0xf214ac10, 0xf2100026, 0xf2150026, + 0x12830026, 0x124512c4, 0x601060f3, 0x01326034, + 0x28006075, 0x902a4014, 0x00615003, 0x40131017, + 0x0014fc01, 0x01711e20, 0x0001f627, 0x10804022, + 0x08500570, 0x00371d10, 0x24476ff7, 0x80289fde, + 0x00605003, 0x40131017, 0x0014fc00, 0x01701e21, + 0x0001f627, 0x10874022, 0x08570517, 0x00371d07, + 0x24476ff7, 0xa8119fde, 0xf262a820, 0xd3000014, + 0x1081e004, 0xfc211102, 0x05010300, 0xd2000521, + 0x1c31e008, 0xfc000060, 0xf2610014, 0x70200018, + 0x11011a00, 0x1c210501, 0xe00cd100, 0xf020a81a, + 0x1c100028, 0xe010d100, 0x002cf020, 0xd1001c10, + 0xf020e014, 0x1c100030, 0xd1005010, 0x1c10e018, + 0xa845a83f, 0xa0704206, 0xac454e06, 0xd500ac3f, + 0x5014e000, 0xa84d1857, 0x04470804, 0x901e2807, + 0xac21ac32, 0xac1bac28, 0xfd04faff, 0xa828ac0d, + 0xa832a821, 0xfa00a81b, 0x80240032, 0x2805ac32, + 0x901cac28, 0x1811ac21, 0xa832a828, 0x0286fa00, + 0xa828a830, 0x4ff5a821, 0x40412905, 0xa83f9fe8, + 0x5010a845, 0xa0704206, 0xac654d06, 0xac22ac5f, + 0xd100ac19, 0xfc44e808, 0xfc34fdff, 0x2623ffff, + 0x04421812, 0x0200fc44, 0xd2001c12, 0x5001e804, + 0xa86c1c24, 0x9014ac2c, 0x90322803, 0x90382913, + 0xf000d100, 0x0268f011, 0x28338052, 0x29439038, + 0xd200903e, 0xf021f000, 0xa8230274, 0x903c2913, + 0x0278f022, 0xe010d300, 0x80301c32, 0xf000d100, + 0x0264f011, 0x29238026, 0xd1009022, 0xf011f000, + 0x8018026c, 0xf000d100, 0x0270f011, 0x2953800e, + 0xd100900a, 0xf011f000, 0xd200027c, 0x1c21e00c, + 0x2801a829, 0xa821911a, 0xd4005003, 0x1081e400, + 0xac110501, 0xa8190030, 0xe004d500, 0x01011020, + 0x00011810, 0x1101a812, 0x1c520512, 0x2911a821, + 0x1300900a, 0xe008d100, 0xd0001c10, 0x5011e018, + 0x1c01ac33, 0xfc401841, 0x04010400, 0x9ff62801, + 0x04011841, 0x28015010, 0xfc4190bc, 0xd2000400, + 0xac50e804, 0xe084d000, 0x1c21ac49, 0xe080d100, + 0x18155012, 0xe088d100, 0x60f5ac45, 0xac381800, + 0x00501c12, 0x00aefa00, 0x90742910, 0x1025a844, + 0xf000d100, 0x0100fc42, 0x00400151, 0x0280f011, + 0x0300fc20, 0x28010421, 0xd2009016, 0x1384f420, + 0xf2230152, 0x1a220002, 0x1f341f24, 0xd2008014, + 0x1304f420, 0xf2230152, 0x1a220002, 0x1d341d24, + 0x902c2800, 0xf420d000, 0x01502801, 0xf2019016, + 0x1a000002, 0xfc22a83a, 0x1282ff00, 0x1f121f02, + 0xf201800e, 0x1a000002, 0x1d02a83a, 0xd4001d12, + 0x1840e400, 0x0410a849, 0xa8502800, 0x2c409008, + 0x9f484010, 0xa828a833, 0x21034013, 0xfc409ef8, + 0xd1000200, 0x1c10e804, 0xa85f5010, 0x4306a865, + 0xd200a070, 0x0001f000, 0x00231020, 0x50100103, + 0x0280f033, 0x28036033, 0x29239078, 0x0014904c, + 0xd3001021, 0x0112f380, 0xf0211014, 0x01430280, + 0x12415094, 0x40a16031, 0x081460f1, 0xe404d100, + 0x04141811, 0x904c2804, 0x50001a31, 0x90422801, + 0x1000fc10, 0x90442101, 0x0280f020, 0xfc201280, + 0x1d300fff, 0xa0705010, 0x90242913, 0x01121021, + 0xf0205091, 0xd2000280, 0x1240e404, 0x40a06030, + 0x080160f0, 0x04011820, 0xa3002901, 0x5000a070, + 0xfc11a070, 0x1d311000, 0x4ff1a070, 0x1d315010, + 0x4ec6a070, 0xac27ac2d, 0xac19ac12, 0xfaff0005, + 0x2910ff54, 0x10259024, 0xf420d100, 0xf2100151, + 0x1a110002, 0x2802a812, 0xa81a900a, 0x1c021c12, + 0xa81a8008, 0x1d021d12, 0xa82da827, 0xa0704146, + 0xac3d4e46, 0x0004ac37, 0x0004f645, 0x29001840, + 0xd00090e2, 0x2801e404, 0xd0001802, 0x900ee410, + 0x60421803, 0x90222802, 0x800c7043, 0x60221803, + 0x901c2802, 0x1c037023, 0xe804d000, 0x0400fc11, + 0x50001c01, 0x0606f800, 0xac245fb2, 0xac248006, + 0x04235fd2, 0xe400d200, 0xac2d1c03, 0x18225000, + 0x03fffc22, 0xf9002802, 0x50a305e4, 0x51442801, + 0xf000d700, 0xa545a435, 0x000cf074, 0xd5000954, + 0x0424f360, 0x00570042, 0x012761f2, 0x29521e72, + 0x1254900a, 0x1e520145, 0x20324052, 0x5014903e, + 0xe804d500, 0x08245013, 0x00251c54, 0x1025a824, + 0xf2450154, 0x2805001a, 0xd1009022, 0x1812e408, + 0xf655a825, 0x08530004, 0x1c130523, 0x001af241, + 0xf5414ff1, 0xf800001a, 0x00230574, 0x6ff350a4, + 0xf9002043, 0xa8240568, 0xf7425010, 0x1c400004, + 0xac19a82d, 0xe404d000, 0x2000fc42, 0x04201800, + 0x90182800, 0xf000d000, 0x02c4f000, 0x215060f0, + 0x5005900a, 0xf8001c45, 0x18450530, 0x926e2915, + 0x0004f641, 0x00400012, 0x01201022, 0x0019f602, + 0x0018f603, 0x90262123, 0xd2001051, 0x0112f000, + 0x0020f021, 0x0020f022, 0x13821301, 0x61f267f1, + 0x0018f701, 0x40110121, 0x0019f701, 0xa8180007, + 0xe444d200, 0x18235041, 0x28000801, 0xd1000513, + 0x1c23d800, 0xd400d300, 0xa512a432, 0xf6410023, + 0x00450004, 0xf000d400, 0x105176c3, 0xf0410114, + 0x50040020, 0x00141c34, 0x0400fc24, 0x900c2804, + 0x03fffc21, 0x1000fc31, 0x67f18004, 0x50107042, + 0x1c21ac17, 0x50011c30, 0xd410d200, 0x0018f674, + 0xf754ac25, 0xf7510017, 0xd1000005, 0xa818d810, + 0x00702800, 0xf601a512, 0x6ff10019, 0x0041ac29, + 0x6ff1a82b, 0x90c02513, 0x10114014, 0x0018f704, + 0xf000d400, 0xf2470114, 0xf2450160, 0x12c50160, + 0x00516075, 0x0160f243, 0xfc234011, 0x28030100, + 0xa8209010, 0x0005f603, 0xf7030113, 0xa8100005, + 0x0160fc04, 0x29030e53, 0xfc279008, 0x802607ff, + 0x28210073, 0x05fffc23, 0x90161c23, 0x90122815, + 0x4ff50071, 0x01fffc21, 0x1c214ff5, 0x9ffa2905, + 0x03fffc27, 0x1a411c27, 0x0018f604, 0x0800fc21, + 0x9f7c2801, 0x0019f601, 0x903c2541, 0xd1001014, + 0xd200f000, 0x0141c000, 0xf2310013, 0xfc210160, + 0x2121e000, 0xfc03901c, 0x1a310160, 0x40116ff1, + 0x001af501, 0x0018f601, 0xf7014011, 0x80080018, + 0xf5015001, 0xa824001a, 0x0005f640, 0x90162800, + 0xd200a81b, 0xd100d438, 0x4ff0d838, 0xa5122803, + 0x80141c20, 0xd100a81a, 0xd000d438, 0x2802d838, + 0xa50151f2, 0xd0001c12, 0x1800e404, 0x0200fc20, + 0x908e2800, 0xe41bd000, 0xd5005011, 0x1f01e408, + 0xf6431852, 0x41030004, 0xd3000831, 0x0521e808, + 0xfff8fc42, 0xfffffc32, 0xfc411c51, 0xfc31ffff, + 0xfc151fff, 0xa8184000, 0xa5212800, 0x28001832, + 0x1c320412, 0x2000fc13, 0x0001fc42, 0xd300a431, + 0xa521e804, 0x8000d200, 0x1c312800, 0x0004fc41, + 0x2800a512, 0x0002fc41, 0xa4521c32, 0xa5125005, + 0xf6421c32, 0x00410004, 0x01211022, 0x001af515, + 0x0017f642, 0x0018f712, 0x0ec2fa00, 0x801ca824, + 0xd100a81a, 0xfc40e000, 0xd3000007, 0x5025e808, + 0xa5012802, 0x05121832, 0x1c451c32, 0x92b82925, + 0x0004f640, 0xd000ac28, 0x1801e400, 0x2802a81a, + 0xfc429010, 0x04210004, 0x90122801, 0x80321800, + 0x8000fc21, 0x90062801, 0x802e1800, 0xd200a81b, + 0xd100d400, 0x2803d800, 0xa517a427, 0x77810071, + 0xf6421811, 0x25120005, 0x180090b0, 0x900a2803, + 0x0002fc41, 0x80060410, 0x4000fc20, 0x5021a81d, + 0x917a2800, 0xd46cd100, 0xd0002805, 0xa501d86c, + 0x28055000, 0xd1001c10, 0x1812e408, 0x0004f643, + 0x50140047, 0x4103ac27, 0x05240834, 0xfc441c14, + 0xfc34ffff, 0xfc411fff, 0xfc31fff8, 0xa442ffff, + 0xe808d400, 0x1843a512, 0xfc412805, 0x04230001, + 0xfc131c43, 0xfc142000, 0xa4324000, 0x8000d300, + 0xd100a512, 0x2805e804, 0xfc421c12, 0xa5230004, + 0xfc422805, 0x1c130002, 0xa523a443, 0xf6711c13, + 0x00720004, 0x01121021, 0x001af520, 0x0017f670, + 0x0018f720, 0x80dc0050, 0xfffffc41, 0x1ffffc31, + 0xfc402803, 0xfc30fff8, 0xd200ffff, 0xfc15e808, + 0xa5012000, 0xac112803, 0x04101820, 0x00411c20, + 0xfc40a454, 0xd2000001, 0xfc45e804, 0xa5040004, + 0x8000d000, 0x1c242803, 0xa553a403, 0xf6151c23, + 0x28050005, 0x71079022, 0x00525005, 0x40150010, + 0x01206ff2, 0xf7021e72, 0x00500006, 0x0005f612, 0x24206ff0, 0xd0009fe6, 0x0017e404, 0xfc201800, - 0x28000200, 0xd0009060, 0x5012e41b, 0xd0001f02, + 0x28000200, 0xd000914e, 0x5012e41b, 0xd0001f02, 0x1801e408, 0xac250075, 0x0004f657, 0x08724107, - 0x1c020512, 0xe808d200, 0xa8291820, 0xd1000410, + 0x1c020512, 0xe808d200, 0xa8111820, 0xd1000410, 0x1c20e804, 0xfc110017, 0xfc424000, 0x1c740002, - 0x50031c73, 0x2800a810, 0x1c71a521, 0x0004f652, + 0x50031c73, 0x2800a818, 0x1c71a521, 0x0004f652, 0x10220051, 0xf5130121, 0xf652001a, 0xf7120017, - 0x81600018, 0xd100a810, 0xd200d46c, 0x5004d86c, - 0xa5212800, 0xd4001c14, 0x1c43e804, 0xe408d400, - 0x18415013, 0xf6520075, 0x08230004, 0x05135042, - 0x1c430802, 0xe444d400, 0x18420723, 0x1c420432, - 0x0c50fa00, 0x50310050, 0xf000d300, 0xf6021c01, - 0x00310004, 0x01211052, 0x0020f017, 0x12c10071, - 0x28016031, 0x4ff19056, 0x12875012, 0xd1000812, - 0x6307e414, 0x0724ac2a, 0x18120137, 0x02bcfc07, - 0x60f40424, 0xf6041f14, 0x10540004, 0xf2340143, - 0xf2330024, 0x60f40024, 0x01041243, 0x406460f3, - 0x1e454013, 0x40144ff3, 0x1f752903, 0x9ff44017, - 0x0532a82b, 0x1f1260f2, 0x0005800a, 0xf34cfaff, - 0x50050050, 0x180080a6, 0x4000fc20, 0x90aa2800, - 0xd46cd100, 0xd0002803, 0x5014d86c, 0x5000a501, - 0xd1001c10, 0x0035e408, 0xac271812, 0xf6732805, - 0x41030004, 0x05240834, 0xfc441c14, 0xfc34ffff, - 0xfc411fff, 0xfc31fff8, 0xa442ffff, 0xe808d400, - 0x1843a512, 0xfc412805, 0x04230001, 0xfc131c43, - 0xfc142000, 0xa4324000, 0x8000d300, 0xd100a512, - 0x2805e804, 0xfc421c12, 0xa5230004, 0xfc422805, - 0x1c130002, 0xa523a443, 0xf6711c13, 0x00720004, - 0x01121021, 0x001af520, 0x0017f670, 0x0018f720, - 0xfa000050, 0xa8200b2e, 0x1c055005, 0xa3002905, - 0xa83da837, 0xa07041c6, 0x1c755025, 0x48468ff0, - 0xacf7acfd, 0xf000d500, 0xfa008006, 0x50030962, - 0xf05180f0, 0x12c10260, 0x211260f1, 0xd00090e4, - 0xf600f340, 0x6ff00003, 0x90d62900, 0x0260f050, - 0xf80013b0, 0xf537092e, 0x5010001a, 0xd094d100, - 0xd004d200, 0x1c105fd7, 0x50120021, 0x04701810, - 0xd1001c10, 0x0013e408, 0xf6411830, 0x08120004, - 0x1c320502, 0xe444d200, 0x18100021, 0x1c100470, - 0x1c415031, 0x0004f640, 0x10500051, 0xf0130101, - 0x00310020, 0x603112c1, 0x90102901, 0xfaff0040, - 0xd300f1fa, 0x5007f3d8, 0xd7008372, 0x4ff1e414, - 0x12835010, 0x63030810, 0x07021871, 0x60f20412, - 0x00521f72, 0xf6430132, 0x00470004, 0xfc020054, - 0x105302bc, 0xf2450134, 0x00730024, 0x0024f244, - 0x60f51244, 0x60f40153, 0x40144063, 0x4ff41e35, - 0x29044013, 0x40121f25, 0x05019ff4, 0xe414d000, - 0xf000d500, 0xd3005007, 0x60f1f3d8, 0x830c1f01, - 0x02fef250, 0xe404d100, 0xf5504010, 0x181002fe, - 0x29006200, 0xd000900a, 0x1f03f330, 0xd0008020, - 0x1e00f330, 0x90162900, 0xf330d000, 0x00015012, - 0xf0501f12, 0x60f002c4, 0x0001f710, 0xe440d000, - 0x00015082, 0x1d125000, 0x0836fa00, 0xfa005010, - 0x54000830, 0xe440d100, 0xfaff1d10, 0x5010f2ba, - 0xe440d100, 0xf3d8d400, 0x18401d10, 0x90802900, - 0xe404d000, 0xe410d200, 0x18201801, 0x29016011, - 0x5fe19248, 0xd1000410, 0x1c20e400, 0xfc211811, - 0x280103ff, 0xf050929a, 0xd200000c, 0x0410f356, - 0x61f10001, 0x1e210112, 0x900e2951, 0xd1001250, - 0x0101f356, 0x40511e11, 0x200150a0, 0x5010901e, - 0xe804d200, 0x1c200810, 0x00400012, 0x01201022, - 0x001af202, 0xf9002902, 0x00100746, 0x6ff050a2, - 0x924c2020, 0xf7415010, 0x1c400004, 0x2910800a, - 0xf641923e, 0x6ff10004, 0x00430010, 0x01031020, - 0x0019f630, 0x0018f632, 0x90242102, 0x00501051, - 0xf0010110, 0xf0000020, 0x13010020, 0x67f11380, - 0xf73161f0, 0x01010018, 0xf7314011, 0xd0000019, - 0xd200e444, 0xd700d094, 0x0001d004, 0x70201810, - 0xaca31c10, 0x50110023, 0x1c315fd2, 0x04201870, - 0xd090d200, 0x1c211c70, 0xf6405002, 0x00510004, - 0x01011050, 0x0020f010, 0xd098d100, 0x1c106ff0, - 0xa8a31c32, 0x70201870, 0xf7421c70, 0xf6310005, - 0xf7410018, 0xf6320017, 0x00100019, 0x25026ff0, - 0x10109daa, 0x01054011, 0x0018f731, 0xf253acb5, - 0xf2500160, 0xaca80160, 0xf25112c3, 0x00620160, - 0x40136073, 0x0060fc02, 0x0100fc21, 0x90142801, - 0x0005f641, 0x01320012, 0x0005f742, 0x01120042, - 0x00354062, 0x5003acbb, 0xd7005004, 0xa8a8d008, - 0x28056ff5, 0x6ff09014, 0x40115001, 0x00141c70, - 0x24546ff4, 0x9ff4a8bc, 0xf33cd000, 0x18005007, - 0xf9002800, 0xa8b00602, 0x0160fc00, 0x0047acb0, - 0x6ff75005, 0x90062907, 0x80265004, 0xd00cd000, - 0x60401800, 0x90182800, 0xd008d100, 0x18110020, - 0x40150150, 0x00501f01, 0x24706ff0, 0x01529fe0, - 0x50076ff4, 0x00400254, 0x28006ff0, 0xd000901e, - 0x1800e404, 0x0200fc20, 0x90742900, 0xf33cd000, - 0x18004013, 0x9fa82403, 0xd0008008, 0x1800f33c, - 0xf9002030, 0xa8b00592, 0xf000d500, 0xf3d8d400, - 0xa8a31a00, 0x0018f631, 0x0800fc20, 0x9ef82800, - 0x0019f630, 0x9ca42510, 0x00501011, 0xc000d200, - 0xf2010110, 0xfc210160, 0x2121e000, 0xfc009c8a, - 0x1a000160, 0x40106ff0, 0x001af530, 0x0018f630, - 0xf7304010, 0x8c740018, 0x1c207010, 0x50108058, - 0xe41bd100, 0xd0001f10, 0xd300e408, 0x5012f3d8, - 0xf000d500, 0x18400004, 0x0004f631, 0x08124101, - 0x1c420502, 0x0004f630, 0x10200031, 0xf5170101, - 0xf630001a, 0xf7100017, 0x1c370018, 0xe404d000, - 0x60101800, 0x90182800, 0xe410d000, 0x18100001, - 0x1c107010, 0xe804d000, 0x0400fc11, 0xd0001c01, - 0x5401e440, 0xfaff1d01, 0x5020efde, 0xe440d100, - 0xd0001d10, 0x5001f4b8, 0xf5b0faff, 0xe440d000, - 0x1d015401, 0xefc0faff, 0xd1005040, 0x1d10e440, - 0xf4b8d000, 0x44005011, 0xf590faff, 0xe440d000, - 0x1d015401, 0xefa0faff, 0xd4005007, 0x5080e400, - 0xe440d100, 0xf0511d10, 0xd2000260, 0xfc40f340, - 0x01720100, 0xac8a0870, 0x1e200401, 0x90302901, - 0x6ff10001, 0x90dc2911, 0x18420070, 0x41305011, - 0x50000801, 0x28020412, 0x007290ca, 0xfc321022, - 0x1823dc00, 0x04131843, 0x9ff82903, 0x007180b6, - 0x41315012, 0xacaa0812, 0x6ff10001, 0xa6112801, - 0xac81a501, 0xac970070, 0xaca01020, 0xdc00fc30, - 0x5000ac98, 0x1840acb8, 0x0410a8a9, 0x90802800, - 0x0260f055, 0x0905a8a0, 0x60f00050, 0xfa00acb0, - 0x60b50638, 0xa8b52905, 0x0050901a, 0xfa004010, - 0x00500628, 0xfa004020, 0x00500620, 0xfa004030, - 0xa8980618, 0xe000d200, 0x50101801, 0xace10850, - 0x04021822, 0x900e2902, 0x50026ff5, 0xfaff0050, - 0x801cf46c, 0xeec0faff, 0x6ff55010, 0xac085002, - 0xfc010061, 0x00500070, 0xfaffa893, 0xa8b8f1e6, - 0xf000d500, 0xe400d400, 0x2c304010, 0xa8809f78, - 0xa889a897, 0x29474017, 0x9efc1f10, 0xe440d000, - 0x00055401, 0xfaff1d51, 0x5100ee7e, 0xf334d100, - 0x1a101d50, 0x28005001, 0xacb9910a, 0xd3000010, - 0x1010f538, 0xa8edace8, 0x01150030, 0x01501035, - 0x1800aca8, 0x90922910, 0x01300050, 0x0016f604, - 0x00320051, 0x01127051, 0x00511e20, 0x70410032, - 0x01122804, 0xd2001e21, 0x1051f000, 0xf2210112, - 0xacb10024, 0x0024f221, 0xaca09098, 0xfaffac99, - 0xa89af31c, 0x2910a8a4, 0x12429088, 0x401260f2, - 0x280261f2, 0xa8b0907c, 0x50017065, 0x015060f0, - 0x5000acb0, 0x00420027, 0xf418d300, 0x10224010, - 0xf2320123, 0x1a330002, 0xa8b40045, 0xd1000114, - 0x0141f538, 0x1e110054, 0x1f211f31, 0x00010072, - 0x24216ff1, 0x803a9fd0, 0x904e2920, 0xd1000050, - 0x7060f538, 0x01010012, 0x0050acb1, 0x01027050, - 0xfaffaca2, 0xa8a0eda2, 0xd2007045, 0x5003f538, - 0x1e010152, 0xa8b21e20, 0xef06faff, 0x901a2910, - 0xd200a8b9, 0x5010f334, 0x1a210810, 0x04010700, - 0x50011d21, 0x1c01a8a8, 0x50a0a8b9, 0x21014011, - 0xd0009efa, 0x5401e440, 0x1d510005, 0xed58faff, - 0xd1005200, 0x5003f332, 0x1d505004, 0xf458d500, - 0x28001a10, 0xacbc905e, 0x0004f050, 0x90122910, - 0x000df652, 0xf6501851, 0xfaff000c, 0x8022f2d0, - 0x2920a8bc, 0xfaff9036, 0xf053ed1e, 0xf6520008, - 0xf650000d, 0x5011000c, 0x0051ac09, 0xf044faff, - 0xd100a8bc, 0x5010f332, 0x00125003, 0x08401a21, - 0x04010700, 0xf4531d21, 0x40140004, 0x29644105, - 0xd0009fa6, 0xfc11e440, 0xd4000080, 0xd500e400, - 0x1d01f000, 0x18401d01, 0x0263f651, 0xfc200002, - 0x133203ff, 0x63f20412, 0x29020502, 0xd0009042, - 0x1800e404, 0x29006100, 0xd0009036, 0x5fe1e444, - 0x18500005, 0x1850acb8, 0x1c500410, 0xe8a6faff, - 0xd400a8b8, 0x5003e400, 0xe804d200, 0x01f8fc41, - 0x07fffc31, 0x1c507010, 0xf000d500, 0xd0001c21, - 0x1800e404, 0x28006080, 0xf958f9ff, 0x02c4f051, - 0xf34cd000, 0x60f11842, 0x03fffc22, 0x1e000110, - 0x0013acb8, 0x10530054, 0x50130134, 0x0020f044, - 0x00500813, 0xf0070035, 0xfc25000c, 0xfc2403ff, - 0x04573000, 0x90062807, 0x908c2804, 0x000cf007, - 0x045712a7, 0x90062807, 0x909a2804, 0x000cf007, - 0x04571347, 0x90062807, 0x90ce2804, 0x0260f001, - 0x0005a8ba, 0x60f11301, 0x901a2112, 0xf344d000, - 0xf6005003, 0x29000002, 0xf8d8f9ff, 0x0260f050, - 0x812e13c0, 0x0260f051, 0x13415003, 0x211260f1, - 0xd0009018, 0xf600f344, 0x29000006, 0xf8b4f9ff, - 0x0260f050, 0x810a13d0, 0x0260f051, 0x211260f1, - 0xd0009056, 0x1e00f340, 0xf9ff2900, 0xf050f896, - 0x13800260, 0x043280ec, 0x50030005, 0xf9ff2902, - 0xd000f882, 0x1800f3d8, 0xf9ff2800, 0xd000f780, - 0x801ef3d8, 0x00050432, 0x29025003, 0xf864f9ff, - 0xf4b8d000, 0x28001800, 0xf762f9ff, 0xf4b8d000, - 0x0004f600, 0xf0518046, 0x12410260, 0x211260f1, - 0xd000907e, 0xf600f340, 0x29000001, 0xf834f9ff, - 0x0260f050, 0x808a1390, 0x00050432, 0x29025003, - 0xf820f9ff, 0xf4b8d000, 0x0040f000, 0xf9ff2800, - 0xd000f71c, 0xf600f4b8, 0x20100044, 0xf804f9ff, - 0xf70af8ff, 0xd1005010, 0x5fd2d094, 0xd1001c10, - 0x1810d004, 0x1c100420, 0xfabef8ff, 0xe408d100, - 0x00175013, 0xf6421871, 0x08230004, 0x1c730513, - 0x001af201, 0xf5014ff1, 0xf8ff001a, 0xf051faf4, - 0x12810260, 0x211260f1, 0xf6caf9ff, 0xf340d000, - 0x0002f600, 0xf9ff2900, 0xf050f7aa, 0x13a00260, - 0x29006010, 0xf79cf9ff, 0xf6a2f8ff, 0xe414d000, - 0x60711801, 0x70820012, 0x1f011f02, 0x4dc6a070, - 0xac47ac4d, 0xf000d200, 0x1000fc41, 0xf344d700, - 0x0260f024, 0x00420801, 0x00010412, 0x10210073, - 0x01132802, 0x0002f633, 0x6ff10031, 0x28019014, - 0x00019042, 0x10210072, 0xf6250112, 0x80440003, - 0x913e2911, 0x50140001, 0x41715003, 0xd1000814, - 0x1812e400, 0x28020442, 0xd2009128, 0x0003dc80, - 0x01231023, 0x18131833, 0x29030443, 0x50039ff2, - 0x00018110, 0x50050072, 0x10215013, 0xf7250112, - 0xac1b0003, 0x00720001, 0x10216ff5, 0x01122f85, - 0xac3a1a22, 0x00019040, 0xd7005012, 0xd300dc80, - 0x4171e400, 0x00010812, 0x1021ac20, 0x01740014, - 0x04271837, 0x90b62807, 0xa8380057, 0x10274015, - 0x01702c85, 0x1c071847, 0xd0009fe8, 0xf004f000, - 0x80040260, 0x4101ac20, 0xac2c0914, 0x60f00040, - 0xfa00ac30, 0xa82800e4, 0x290060b0, 0xa830901a, - 0xfa004010, 0xa83000d4, 0xfa004020, 0xa83000cc, - 0xfa004030, 0xa82000c4, 0x29005001, 0xd0009008, - 0x1801de50, 0x5010ac29, 0xe000d200, 0x0810a831, - 0x04011821, 0x90222801, 0xe96cfaff, 0xa830ac0d, - 0xa825a82a, 0xa8390053, 0x6ff26ff0, 0xfaff4043, - 0x0050ec92, 0x80285005, 0x90202805, 0xac38a838, - 0x1801a838, 0xa82aa830, 0x6ff26ff0, 0xeedefaff, - 0x4ff5a838, 0x40402905, 0x50059fe6, 0x0002a820, - 0xf344d700, 0x00711022, 0xf7150121, 0xa81b0003, - 0x01071020, 0x0002f773, 0xa84da847, 0xa0704246, - 0xe404d100, 0x18112800, 0x60419012, 0x90262801, - 0xe410d000, 0x70411801, 0x60218010, 0x90162801, - 0xe410d000, 0x70211801, 0xd0001c01, 0xfc12e804, - 0x1c020400, 0xd100a070, 0x0101f000, 0xf6111020, - 0x00130314, 0x60130002, 0x2000fc02, 0x900e2803, - 0xfc311011, 0xfc212000, 0x800621fc, 0xf338d100, - 0xf418d300, 0x1d320103, 0x0002f531, 0x0000a070, + 0x00050018, 0x0cc6fa00, 0x5001a824, 0xd1001c41, + 0x2805d400, 0xd0000057, 0xd200d800, 0xa501f000, + 0xf0220010, 0x73400010, 0x50001803, 0x28036403, + 0x001090aa, 0x18007800, 0x1000fc20, 0x90142800, + 0xd000a82b, 0x4012f34c, 0x1e000130, 0x24204010, + 0xd000901c, 0x1802e408, 0x0004f643, 0x50140045, + 0x08344103, 0x1c040524, 0x50000054, 0xfc427541, + 0xfc32ffff, 0x28071fff, 0x4000fc15, 0xfc411811, + 0xfc31fff8, 0xa512ffff, 0xe808d100, 0x18132807, + 0x1c130423, 0x2000fc13, 0x0001fc41, 0xd300a432, + 0xa5128000, 0xe804d100, 0x1c122807, 0x0004fc42, + 0x2807a523, 0x0002fc42, 0xa4531c13, 0xa5235005, + 0xf6411c13, 0x00420004, 0x01121021, 0x001af525, + 0x0017f643, 0x0018f723, 0xa82a1c45, 0xf34cd100, + 0x1f100121, 0x29051845, 0xa837a300, 0x41c6a83d, + 0xa818a070, 0xd46cd100, 0xd86cd200, 0x28005004, + 0x1c14a521, 0xe804d400, 0xd4001c43, 0x5013e408, + 0x00751841, 0x0004f652, 0x50420823, 0x08020513, + 0xd4001c43, 0x0723e444, 0x04321842, 0xfa001c42, + 0x00500b9c, 0xd3005031, 0x1c01f000, 0x0004f602, + 0x10520031, 0xf0170121, 0x00710020, 0x603112c1, + 0x90582801, 0x50124ff1, 0x08121287, 0xe414d100, + 0xac1a6307, 0x01370724, 0xfc071812, 0x042402bc, + 0x1f1460f4, 0x0004f604, 0x01431054, 0x0024f234, + 0x0024f233, 0x124360f4, 0x60f30104, 0x40134064, + 0x4ff31e45, 0x29034014, 0x40171f75, 0xa81b9ff4, + 0x60f20532, 0x00051f12, 0x00058008, 0xf184faff, + 0x1c505000, 0x8f240054, 0xacfd4846, 0xd500acf7, + 0x8006f000, 0x0962fa00, 0x80f05003, 0x0260f051, + 0x60f112c1, 0x90e42112, 0xf340d000, 0x0003f600, + 0x29006ff0, 0xf05090d6, 0x13b00260, 0x092ef800, + 0x001af537, 0xd1005010, 0xd200d094, 0x5fd7d004, + 0x00211c10, 0x18105012, 0x1c100470, 0xe408d100, + 0x18300013, 0x0004f641, 0x05020812, 0xd2001c32, + 0x0021e444, 0x04701810, 0x50311c10, 0xf6401c41, + 0x00510004, 0x01011050, 0x0020f013, 0x12c10031, + 0x29016031, 0x00409010, 0xf0e8faff, 0xf3e0d300, + 0x83725007, 0xe414d700, 0x50104ff1, 0x08101283, + 0x18716303, 0x04120702, 0x1f7260f2, 0x01320052, + 0x0004f643, 0x00540047, 0x02bcfc02, 0x01341053, + 0x0024f245, 0xf2440073, 0x12440024, 0x015360f5, + 0x406360f4, 0x1e354014, 0x40134ff4, 0x1f252904, + 0x9ff44012, 0xd0000501, 0xd500e414, 0x5007f000, + 0xf3e0d300, 0x1f0160f1, 0xf250830c, 0xd10002fe, + 0x4010e404, 0x02fef550, 0x62001810, 0x900a2900, + 0xf330d000, 0x80201f03, 0xf330d000, 0x29001e00, + 0xd0009016, 0x5012f330, 0x1f120001, 0x02c4f050, + 0xf71060f0, 0xd0000001, 0x5082e440, 0x50000001, + 0xfa001d12, 0x50100836, 0x0830fa00, 0xd1005400, + 0x1d10e440, 0xf1a8faff, 0xd1005010, 0xd400e440, + 0x1d10f3e0, 0x29001840, 0xd0009080, 0xd200e404, + 0x1801e410, 0x60111820, 0x92482901, 0x04105fe1, + 0xe400d100, 0x18111c20, 0x03fffc21, 0x929a2801, + 0x000cf050, 0xf360d200, 0x00010410, 0x011261f1, + 0x29511e21, 0x1250900e, 0xf360d100, 0x1e110101, + 0x50a04051, 0x901e2001, 0xd2005010, 0x0810e804, + 0x00121c20, 0x10220040, 0xf2020120, 0x2902001a, + 0x0746f900, 0x50a20010, 0x20206ff0, 0x5010924c, + 0x0004f741, 0x800a1c40, 0x923e2910, 0x0004f641, + 0x00106ff1, 0x10200043, 0xf6300103, 0xf6320019, + 0x21020018, 0x10519024, 0x01100050, 0x0020f001, + 0x0020f000, 0x13801301, 0x61f067f1, 0x0018f731, + 0x40110101, 0x0019f731, 0xe444d000, 0xd094d200, + 0xd004d700, 0x18100001, 0x1c107020, 0x0023aca3, + 0x5fd25011, 0x18701c31, 0xd2000420, 0x1c70d090, + 0x50021c21, 0x0004f640, 0x10500051, 0xf0100101, + 0xd1000020, 0x6ff0d098, 0x1c321c10, 0x1870a8a3, + 0x1c707020, 0x0005f742, 0x0018f631, 0x0017f741, + 0x0019f632, 0x6ff00010, 0x9daa2502, 0x40111010, + 0xf7310105, 0xacb50018, 0x0160f253, 0x0160f250, + 0x12c3aca8, 0x0160f251, 0x60730062, 0xfc024013, + 0xfc210060, 0x28010100, 0xf6419014, 0x00120005, + 0xf7420132, 0x00420005, 0x40620112, 0xacbb0035, + 0x50045003, 0xd008d700, 0x6ff5a8a8, 0x90142805, + 0x50016ff0, 0x1c704011, 0x6ff40014, 0xa8bc2454, + 0xd0009ff4, 0x5007f33c, 0x28001800, 0x0602f900, + 0xfc00a8b0, 0xacb00160, 0x50050047, 0x29076ff7, + 0x50049006, 0xd0008026, 0x1800d00c, 0x28006040, + 0xd1009018, 0x0020d008, 0x01501811, 0x1f014015, + 0x6ff00050, 0x9fe02470, 0x6ff40152, 0x02545007, + 0x6ff00040, 0x901e2800, 0xe404d000, 0xfc201800, + 0x29000200, 0xd0009074, 0x4013f33c, 0x24031800, + 0x80089fa8, 0xf33cd000, 0x20301800, 0x0592f900, + 0xd500a8b0, 0xd400f000, 0x1a00f3e0, 0xf631a8a3, + 0xfc200018, 0x28000800, 0xf6309ef8, 0x25100019, + 0x10119ca4, 0xd2000050, 0x0110c000, 0x0160f201, + 0xe000fc21, 0x9c8a2121, 0x0160fc00, 0x6ff01a00, + 0xf5304010, 0xf630001a, 0x40100018, 0x0018f730, + 0x70108c74, 0x80581c20, 0xd1005010, 0x1f10e41b, + 0xe408d000, 0xf3e0d300, 0xd5005012, 0x0004f000, + 0xf6311840, 0x41010004, 0x05020812, 0xf6301c42, + 0x00310004, 0x01011020, 0x001af517, 0x0017f630, + 0x0018f710, 0xd0001c37, 0x1800e404, 0x28006010, + 0xd0009018, 0x0001e410, 0x70101810, 0xd0001c10, + 0xfc11e804, 0x1c010400, 0xe440d000, 0x1d015401, + 0xeeccfaff, 0xd1005020, 0x1d10e440, 0xf4c0d000, + 0xfaff5001, 0xd000f49e, 0x5401e440, 0xfaff1d01, + 0x5040eeae, 0xe440d100, 0xd0001d10, 0x5011f4c0, + 0xfaff4400, 0xd000f47e, 0x5401e440, 0xfaff1d01, + 0x5007ee8e, 0xe400d400, 0xd1005080, 0x1d10e440, + 0x0260f051, 0xf340d200, 0x0100fc40, 0x08700172, + 0x0401ac8a, 0x29011e20, 0x00019030, 0x29116ff1, + 0x007090dc, 0x50111842, 0x08014130, 0x04125000, + 0x90ca2802, 0x10220072, 0xdc00fc32, 0x18431823, + 0x29030413, 0x80b69ff8, 0x50120071, 0x08124131, + 0x0001acaa, 0x28016ff1, 0xa501a611, 0x0070ac81, + 0x1020ac97, 0xfc30aca0, 0xac98dc00, 0xacb85000, + 0xa8a91840, 0x28000410, 0xf0559080, 0xa8a00260, + 0x00500905, 0xacb060f0, 0x0638fa00, 0x290560b5, + 0x901aa8b5, 0x40100050, 0x0628fa00, 0x40200050, + 0x0620fa00, 0x40300050, 0x0618fa00, 0xd200a898, + 0x1801e000, 0x08505010, 0x1822ace1, 0x29020402, + 0x6ff5900e, 0x00505002, 0xf35afaff, 0xfaff801c, + 0x5010edae, 0x50026ff5, 0x0061ac08, 0x0070fc01, + 0xa8930050, 0xf0d4faff, 0xd500a8b8, 0xd400f000, + 0x4010e400, 0x9f782c30, 0xa897a880, 0x4017a889, + 0x1f102947, 0xd0009efc, 0x5401e440, 0x1d510005, + 0xed6cfaff, 0xd1005100, 0x1d50f334, 0x50011a10, + 0x910a2800, 0x0010acb9, 0xf540d300, 0xace81010, + 0x0030a8ed, 0x10350115, 0xaca80150, 0x29101800, + 0x00509092, 0xf6040130, 0x00510016, 0x70510032, + 0x1e200112, 0x00320051, 0x28047041, 0x1e210112, + 0xf000d200, 0x01121051, 0x0024f221, 0xf221acb1, + 0x90980024, 0xac99aca0, 0xf20afaff, 0xa8a4a89a, + 0x90882910, 0x60f21242, 0x61f24012, 0x907c2802, + 0x7065a8b0, 0x60f05001, 0xacb00150, 0x00275000, + 0xd3000042, 0x4010f420, 0x01231022, 0x0002f232, + 0x00451a33, 0x0114a8b4, 0xf540d100, 0x00540141, + 0x1f311e11, 0x00721f21, 0x6ff10001, 0x9fd02421, + 0x2920803a, 0x0050904e, 0xf540d100, 0x00127060, + 0xacb10101, 0x70500050, 0xaca20102, 0xec90faff, + 0x7045a8a0, 0xf540d200, 0x01525003, 0x1e201e01, + 0xfaffa8b2, 0x2910edf4, 0xa8b9901a, 0xf334d200, + 0x08105010, 0x07001a21, 0x1d210401, 0xa8a85001, + 0xa8b91c01, 0x401150a0, 0x9efa2101, 0xe440d000, + 0x00055401, 0xfaff1d51, 0x5200ec46, 0xf332d100, + 0x50045003, 0xd5001d50, 0x1a10f460, 0x905e2800, + 0xf050acbc, 0x29100004, 0xf6529012, 0x1851000d, + 0x000cf650, 0xf1befaff, 0xa8bc8022, 0x90362920, + 0xec0cfaff, 0x0008f053, 0x000df652, 0x000cf650, + 0xac095011, 0xfaff0051, 0xa8bcef32, 0xf332d100, + 0x50035010, 0x1a210012, 0x07000840, 0x1d210401, + 0x0004f453, 0x41054014, 0x9fa62964, 0xe440d000, + 0x0080fc11, 0xe400d400, 0xf000d500, 0x1d011d01, + 0xf6511840, 0x00020263, 0x03fffc20, 0x04121332, + 0x050263f2, 0x90422902, 0xe404d000, 0x61001800, + 0x90362900, 0xe444d000, 0x00055fe1, 0xacb81850, + 0x04101850, 0xfaff1c50, 0xa8b8e78c, 0xe400d400, + 0xd2005003, 0xfc41e804, 0xfc3101f8, 0x701007ff, + 0xd5001c50, 0x1c21f000, 0xe404d000, 0x60801800, + 0xf9ff2800, 0xf051f958, 0xd00002c4, 0x1842f356, + 0xfc2260f1, 0x011003ff, 0xacb81e00, 0x00540013, + 0x01341053, 0xf0445013, 0x08130020, 0x00350050, + 0x000cf007, 0x03fffc25, 0x3000fc24, 0x28070457, + 0x28049006, 0xf007908c, 0x12a7000c, 0x28070457, + 0x28049006, 0xf007909a, 0x1347000c, 0x28070457, + 0x28049006, 0xf00190ce, 0xa8ba0260, 0x13010005, + 0x211260f1, 0xd000901a, 0x5003f344, 0x0002f600, + 0xf9ff2900, 0xf050f8d8, 0x13c00260, 0xf051812e, + 0x50030260, 0x60f11341, 0x90182112, 0xf344d000, + 0x0006f600, 0xf9ff2900, 0xf050f8b4, 0x13d00260, + 0xf051810a, 0x60f10260, 0x90562112, 0xf340d000, + 0x29001e00, 0xf896f9ff, 0x0260f050, 0x80ec1380, + 0x00050432, 0x29025003, 0xf882f9ff, 0xf3e0d000, + 0x28001800, 0xf780f9ff, 0xf3e0d000, 0x0432801e, + 0x50030005, 0xf9ff2902, 0xd000f864, 0x1800f4c0, + 0xf9ff2800, 0xd000f762, 0xf600f4c0, 0x80460004, + 0x0260f051, 0x60f11241, 0x907e2112, 0xf340d000, + 0x0001f600, 0xf9ff2900, 0xf050f834, 0x13900260, + 0x0432808a, 0x50030005, 0xf9ff2902, 0xd000f820, + 0xf000f4c0, 0x28000040, 0xf71cf9ff, 0xf4c0d000, + 0x0044f600, 0xf9ff2010, 0xf8fff804, 0x5010f70a, + 0xd094d100, 0x1c105fd2, 0xd004d100, 0x04201810, + 0xf8ff1c10, 0xd100fabe, 0x5013e408, 0x18710017, + 0x0004f642, 0x05130823, 0xf2011c73, 0x4ff1001a, + 0x001af501, 0xfaf4f8ff, 0x0260f051, 0x60f11281, + 0xf9ff2112, 0xd000f6ca, 0xf600f340, 0x29000002, + 0xf7aaf9ff, 0x0260f050, 0x601013a0, 0xf9ff2900, + 0xf8fff79c, 0xd000f6a2, 0x1801e414, 0x00126071, + 0x1f027082, 0xa0701f01, 0xac4d4dc6, 0xd200ac47, + 0xfc41f000, 0xd7001000, 0xf024f344, 0x08010260, + 0x04120042, 0x00730001, 0x28021021, 0xf6330113, + 0x00310002, 0x90146ff1, 0x90422801, 0x00720001, + 0x01121021, 0x0003f625, 0x29118044, 0x0001913e, + 0x50035014, 0x08144171, 0xe400d100, 0x04421812, + 0x91282802, 0xdc80d200, 0x10230003, 0x18330123, + 0x04431813, 0x9ff22903, 0x81105003, 0x00720001, + 0x50135005, 0x01121021, 0x0003f725, 0x0001ac1b, + 0x6ff50072, 0x2f851021, 0x1a220112, 0x9040ac3a, + 0x50120001, 0xdc80d700, 0xe400d300, 0x08124171, + 0xac200001, 0x00141021, 0x18370174, 0x28070427, + 0x005790b6, 0x4015a838, 0x2c851027, 0x18470170, + 0x9fe81c07, 0xf000d000, 0x0260f004, 0xac208004, + 0x09144101, 0x0040ac2c, 0xac3060f0, 0x00e4fa00, + 0x60b0a828, 0x901a2900, 0x4010a830, 0x00d4fa00, + 0x4020a830, 0x00ccfa00, 0x4030a830, 0x00c4fa00, + 0x5001a820, 0x90082900, 0xde50d000, 0xac291801, + 0xd2005010, 0xa831e000, 0x18210810, 0x28010401, + 0xfaff9022, 0xac0de85a, 0xa82aa830, 0x0053a825, + 0x6ff0a839, 0x40436ff2, 0xeb80faff, 0x50050050, + 0x28058028, 0xa8389020, 0xa838ac38, 0xa8301801, + 0x6ff0a82a, 0xfaff6ff2, 0xa838edcc, 0x29054ff5, + 0x9fe64040, 0xa8205005, 0xd7000002, 0x1022f344, + 0x01210071, 0x0003f715, 0x1020a81b, 0xf7730107, + 0xa8470002, 0x4246a84d, 0xd100a070, 0x2800e404, + 0x90121811, 0x28016041, 0xd0009026, 0x1801e410, + 0x80107041, 0x28016021, 0xd0009016, 0x1801e410, + 0x1c017021, 0xe804d000, 0x0400fc12, 0xa0701c02, + 0xf000d100, 0x10200101, 0x0314f611, 0x00020013, + 0xfc026013, 0x28032000, 0x1011900e, 0x2000fc31, + 0x21fcfc21, 0xd1008006, 0xd300f338, 0x0103f420, + 0xf5311d32, 0xa0700002, }; -const unsigned long sizeof_scu_isopprog_array = 7024; /* 0x00001b70 */ +const unsigned long sizeof_scu_isopprog_array = 7304; /* 0x00001c88 */ From 98871e58af27dee3b5d02232246775e6843599b5 Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:04:22 +0900 Subject: [PATCH 165/739] arch: cxd56xx: Fix gnss open error by clock change If the system clock is changed during loading gnssfw, gnss open may be failed. So this commit prohibits clock change until loading gnssfw is completed. --- arch/arm/src/cxd56xx/cxd56_gnss.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/arch/arm/src/cxd56xx/cxd56_gnss.c b/arch/arm/src/cxd56xx/cxd56_gnss.c index 8325b89aa0b..13c739abaed 100644 --- a/arch/arm/src/cxd56xx/cxd56_gnss.c +++ b/arch/arm/src/cxd56xx/cxd56_gnss.c @@ -389,6 +389,11 @@ static struct pm_cpu_freqlock_s g_lv_lock = PM_CPUFREQLOCK_INIT(PM_CPUFREQLOCK_TAG('G', 'T', 0), PM_CPUFREQLOCK_FLAG_LV); +/* Lock to prohibit clock change in gnss open */ + +static struct pm_cpu_freqlock_s g_hold_lock = + PM_CPUFREQLOCK_INIT(0, PM_CPUFREQLOCK_FLAG_HOLD); + /**************************************************************************** * Private Functions ****************************************************************************/ @@ -2632,7 +2637,16 @@ static int cxd56_gnss_open(FAR struct file *filep) nxsem_set_protocol(&priv->syncsem, SEM_PRIO_NONE); + /* Prohibit the clock change during loading image */ + + up_pm_acquire_freqlock(&g_hold_lock); + ret = fw_pm_loadimage(CXD56_GNSS_GPS_CPUID, CXD56_GNSS_FWNAME); + + /* Allow the clock change after loading image */ + + up_pm_release_freqlock(&g_hold_lock); + if (ret < 0) { goto _err1; From f0cae6cdf351d6842def9aee1c7ac19f40daf76c Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:04:24 +0900 Subject: [PATCH 166/739] arch: cxd56xx: Fix multiple open and close ADC driver ADC driver does not support multiple open and close. It causes the memory corruption by multiple free. This commit fixes this problem by introducing the reference counter. --- arch/arm/src/cxd56xx/cxd56_adc.c | 50 +++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/arch/arm/src/cxd56xx/cxd56_adc.c b/arch/arm/src/cxd56xx/cxd56_adc.c index 728a01bebdb..9f3ecdabd4a 100644 --- a/arch/arm/src/cxd56xx/cxd56_adc.c +++ b/arch/arm/src/cxd56xx/cxd56_adc.c @@ -35,6 +35,7 @@ #include #include #include +#include #include #include @@ -172,6 +173,8 @@ struct cxd56adc_dev_s struct scufifo_wm_s *wm; /* water mark */ struct math_filter_s *filter; /* math filter */ struct scuev_notify_s * notify; /* notify */ + sem_t exclsem; /* exclusive semaphore */ + int crefs; /* reference count */ }; /**************************************************************************** @@ -218,6 +221,7 @@ static struct cxd56adc_dev_s g_lpadc0priv = .wm = NULL, .filter = NULL, .notify = NULL, + .crefs = 0, }; #endif @@ -233,6 +237,7 @@ static struct cxd56adc_dev_s g_lpadc1priv = .wm = NULL, .filter = NULL, .notify = NULL, + .crefs = 0, }; #endif @@ -248,6 +253,7 @@ static struct cxd56adc_dev_s g_lpadc2priv = .wm = NULL, .filter = NULL, .notify = NULL, + .crefs = 0, }; #endif @@ -263,6 +269,7 @@ static struct cxd56adc_dev_s g_lpadc3priv = .wm = NULL, .filter = NULL, .notify = NULL, + .crefs = 0, }; #endif @@ -278,6 +285,7 @@ static struct cxd56adc_dev_s g_hpadc0priv = .wm = NULL, .filter = NULL, .notify = NULL, + .crefs = 0, }; #endif @@ -293,6 +301,7 @@ static struct cxd56adc_dev_s g_hpadc1priv = .wm = NULL, .filter = NULL, .notify = NULL, + .crefs = 0, }; #endif @@ -703,9 +712,23 @@ static int cxd56_adc_open(FAR struct file *filep) int type; DEBUGASSERT(priv != NULL); - DEBUGASSERT(priv->seq == NULL); DEBUGASSERT(priv->ch < CH_MAX); + /* Increment reference counter */ + + nxsem_wait_uninterruptible(&priv->exclsem); + + priv->crefs++; + DEBUGASSERT(priv->crefs > 0); + + if (priv->crefs > 1) + { + nxsem_post(&priv->exclsem); + return OK; + } + + DEBUGASSERT(priv->seq == NULL); + type = SCU_BUS_LPADC0 + priv->ch; /* Open sequencer */ @@ -713,6 +736,7 @@ static int cxd56_adc_open(FAR struct file *filep) priv->seq = seq_open(SEQ_TYPE_NORMAL, type); if (!priv->seq) { + nxsem_post(&priv->exclsem); return -ENOENT; } @@ -725,11 +749,14 @@ static int cxd56_adc_open(FAR struct file *filep) ret = set_ofstgain(priv); if (ret < 0) { + nxsem_post(&priv->exclsem); return ret; } ainfo("open ch%d freq%d scufifo%d\n", priv->ch, priv->freq, priv->fsize); + nxsem_post(&priv->exclsem); + return OK; } @@ -750,6 +777,19 @@ static int cxd56_adc_close(FAR struct file *filep) DEBUGASSERT(priv->seq != NULL); DEBUGASSERT(priv->ch < CH_MAX); + /* Decrement reference counter */ + + nxsem_wait_uninterruptible(&priv->exclsem); + + DEBUGASSERT(priv->crefs > 0); + priv->crefs--; + + if (priv->crefs > 0) + { + nxsem_post(&priv->exclsem); + return OK; + } + /* Close sequencer */ seq_close(priv->seq); @@ -773,6 +813,8 @@ static int cxd56_adc_close(FAR struct file *filep) priv->notify = NULL; } + nxsem_post(&priv->exclsem); + return OK; } @@ -1058,6 +1100,7 @@ int cxd56_adcinitialize(void) return ret; } + nxsem_init(&g_lpadc0priv.exclsem, 0, 1); #endif #if defined (CONFIG_CXD56_LPADC1) || defined (CONFIG_CXD56_LPADC0_1) || defined (CONFIG_CXD56_LPADC_ALL) ret = register_driver("/dev/lpadc1", &g_adcops, 0666, &g_lpadc1priv); @@ -1067,6 +1110,7 @@ int cxd56_adcinitialize(void) return ret; } + nxsem_init(&g_lpadc1priv.exclsem, 0, 1); #endif #if defined (CONFIG_CXD56_LPADC2) || defined (CONFIG_CXD56_LPADC_ALL) ret = register_driver("/dev/lpadc2", &g_adcops, 0666, &g_lpadc2priv); @@ -1076,6 +1120,7 @@ int cxd56_adcinitialize(void) return ret; } + nxsem_init(&g_lpadc2priv.exclsem, 0, 1); #endif #if defined (CONFIG_CXD56_LPADC3) || defined (CONFIG_CXD56_LPADC_ALL) ret = register_driver("/dev/lpadc3", &g_adcops, 0666, &g_lpadc3priv); @@ -1085,6 +1130,7 @@ int cxd56_adcinitialize(void) return ret; } + nxsem_init(&g_lpadc3priv.exclsem, 0, 1); #endif #ifdef CONFIG_CXD56_HPADC0 ret = register_driver("/dev/hpadc0", &g_adcops, 0666, &g_hpadc0priv); @@ -1094,6 +1140,7 @@ int cxd56_adcinitialize(void) return ret; } + nxsem_init(&g_hpadc0priv.exclsem, 0, 1); #endif #ifdef CONFIG_CXD56_HPADC1 ret = register_driver("/dev/hpadc1", &g_adcops, 0666, &g_hpadc1priv); @@ -1103,6 +1150,7 @@ int cxd56_adcinitialize(void) return ret; } + nxsem_init(&g_hpadc1priv.exclsem, 0, 1); #endif return ret; From 6d3fb9ee817975f2de31dfebb7b0e8b047cfcdcd Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:04:27 +0900 Subject: [PATCH 167/739] arch: cxd56xx: wdt: Fix compile error in debug log Fix compile error when CXD56_WDT_REGDEBUG is enabled. --- arch/arm/src/cxd56xx/Kconfig | 1 + arch/arm/src/cxd56xx/cxd56_wdt.c | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/arch/arm/src/cxd56xx/Kconfig b/arch/arm/src/cxd56xx/Kconfig index 2f1f404e9da..b3f525c963c 100644 --- a/arch/arm/src/cxd56xx/Kconfig +++ b/arch/arm/src/cxd56xx/Kconfig @@ -190,6 +190,7 @@ config CXD56_WDT_INTERRUPT config CXD56_WDT_REGDEBUG bool "Register level debug" default n + depends on DEBUG_WATCHDOG_INFO ---help--- Enable low-level register debug output diff --git a/arch/arm/src/cxd56xx/cxd56_wdt.c b/arch/arm/src/cxd56xx/cxd56_wdt.c index 301f3238379..7cf97dd890c 100644 --- a/arch/arm/src/cxd56xx/cxd56_wdt.c +++ b/arch/arm/src/cxd56xx/cxd56_wdt.c @@ -172,7 +172,7 @@ static uint32_t cxd56_getreg(uintptr_t regaddr) { if (count == 4) { - logdebug("...\n"); + wdinfo("...\n"); } return regval; @@ -189,7 +189,7 @@ static uint32_t cxd56_getreg(uintptr_t regaddr) { /* Yes.. then show how many times the value repeated */ - logdebug("[repeats %d more times]\n", count - 3); + wdinfo("[repeats %d more times]\n", count - 3); } /* Save the new address, value, and count */ @@ -201,7 +201,7 @@ static uint32_t cxd56_getreg(uintptr_t regaddr) /* Show the register value read */ - logdebug("%08x->%08\n", regaddr, regval); + wdinfo("%08x->%08\n", regaddr, regval); return regval; } #endif @@ -219,7 +219,7 @@ static void cxd56_putreg(uint32_t regval, uintptr_t regaddr) { /* Show the register value being written */ - logdebug("%08x<-%08x\n", regaddr, regval); + wdinfo("%08x<-%08x\n", regaddr, regval); /* Write the value */ From bb348cc464406694eb3b3242a6ca178df9241bba Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:04:29 +0900 Subject: [PATCH 168/739] arch: cxd56xx: gnss: Fix compile error in debug log Fix compile error when debug log is enabled. Replace debug message from obsolete logerr() to _err(). --- arch/arm/src/cxd56xx/cxd56_gnss.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/arm/src/cxd56xx/cxd56_gnss.h b/arch/arm/src/cxd56xx/cxd56_gnss.h index e0e61a80394..e66e7f3d35b 100644 --- a/arch/arm/src/cxd56xx/cxd56_gnss.h +++ b/arch/arm/src/cxd56xx/cxd56_gnss.h @@ -47,19 +47,19 @@ extern "C" /* GNSS specific debug */ #ifdef CONFIG_CXD56_GNSS_DEBUG_ERROR -# define gnsserr(fmt, ...) logerr(fmt, ## __VA_ARGS__) +# define gnsserr(fmt, ...) _err(fmt, ## __VA_ARGS__) #else # define gnsserr(fmt, ...) #endif #ifdef CONFIG_CXD56_GNSS_DEBUG_WARN -# define gnsswarn(fmt, ...) logwarn(fmt, ## __VA_ARGS__) +# define gnsswarn(fmt, ...) _warn(fmt, ## __VA_ARGS__) #else # define gnsswarn(fmt, ...) #endif #ifdef CONFIG_CXD56_GNSS_DEBUG_INFO -# define gnssinfo(fmt, ...) loginfo(fmt, ## __VA_ARGS__) +# define gnssinfo(fmt, ...) _info(fmt, ## __VA_ARGS__) #else # define gnssinfo(fmt, ...) #endif From 50cb0306b6f10df4b049d8d38f3387b9d5667a2b Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:04:34 +0900 Subject: [PATCH 169/739] arch: cxd56xx: charger: Use the dedicated debug macro Replace to the battery dedicated debug macro instead of standard one. --- arch/arm/src/cxd56xx/cxd56_charger.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/src/cxd56xx/cxd56_charger.c b/arch/arm/src/cxd56xx/cxd56_charger.c index 48d9bf9e4ba..c880e320815 100644 --- a/arch/arm/src/cxd56xx/cxd56_charger.c +++ b/arch/arm/src/cxd56xx/cxd56_charger.c @@ -672,7 +672,7 @@ int cxd56_charger_initialize(FAR const char *devpath) ret = register_driver(devpath, &g_chargerops, 0666, priv); if (ret < 0) { - _err("ERROR: register_driver failed: %d\n", ret); + baterr("ERROR: register_driver failed: %d\n", ret); return -EFAULT; } From efd4789b72c985235f964df06a90886ac51f13f5 Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:04:37 +0900 Subject: [PATCH 170/739] arch: cxd56xx: gauge: Use the dedicated debug macro Replace to the battery dedicated debug macro instead of standard one. --- arch/arm/src/cxd56xx/cxd56_gauge.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/arm/src/cxd56xx/cxd56_gauge.c b/arch/arm/src/cxd56xx/cxd56_gauge.c index 1decda4d865..769838a7db5 100644 --- a/arch/arm/src/cxd56xx/cxd56_gauge.c +++ b/arch/arm/src/cxd56xx/cxd56_gauge.c @@ -52,11 +52,11 @@ /* Debug ********************************************************************/ #ifdef CONFIG_CXD56_GAUGE_DEBUG -#define baterr(fmt, ...) logerr(fmt, ## __VA_ARGS__) -#define batdbg(fmt, ...) logdebug(fmt, ## __VA_ARGS__) +#define baterr(fmt, ...) _err(fmt, ## __VA_ARGS__) +#define batinfo(fmt, ...) _info(fmt, ## __VA_ARGS__) #else #define baterr(fmt, ...) -#define batdbg(fmt, ...) +#define batinfo(fmt, ...) #endif /**************************************************************************** @@ -152,7 +152,7 @@ static int gauge_get_status(FAR enum battery_gauge_status_e *status) break; default: - _info("Charge state %d\n", state); + batinfo("Charge state %d\n", state); *status = BATTERY_IDLE; break; } @@ -394,7 +394,7 @@ int cxd56_gauge_initialize(FAR const char *devpath) ret = register_driver(devpath, &g_gaugeops, 0666, priv); if (ret < 0) { - _err("ERROR: register_driver failed: %d\n", ret); + baterr("ERROR: register_driver failed: %d\n", ret); return -EFAULT; } From 151fec4e98ef6ebfb7674c7409cf563dd26a8310 Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:04:41 +0900 Subject: [PATCH 171/739] arch: cxd56xx: Do not re-initialize the console for subcore If the subcore configuration, which is mainly used in the Spresense Arduino environment, is enabled, the serial console has been already initialized by maincore. Then, don't need to re-initialize the UART1 serial driver. --- arch/arm/src/cxd56xx/cxd56_serial.c | 11 +++++++++++ arch/arm/src/cxd56xx/cxd56_start.c | 4 +++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/arch/arm/src/cxd56xx/cxd56_serial.c b/arch/arm/src/cxd56xx/cxd56_serial.c index 6ef147a04e2..4f62145f998 100644 --- a/arch/arm/src/cxd56xx/cxd56_serial.c +++ b/arch/arm/src/cxd56xx/cxd56_serial.c @@ -460,6 +460,17 @@ static int up_setup(FAR struct uart_dev_s *dev) uint32_t lcr; uint32_t cr; +#ifdef CONFIG_CXD56_SUBCORE + if (priv->id == 1) + { + /* In case of SUBCORE, UART1 has been already initialized, + * then we don't need to do anything. + */ + + return OK; + } +#endif + cxd56_uart_setup(priv->id); /* Init HW */ diff --git a/arch/arm/src/cxd56xx/cxd56_start.c b/arch/arm/src/cxd56xx/cxd56_start.c index 0518be6c92e..d85f4848606 100644 --- a/arch/arm/src/cxd56xx/cxd56_start.c +++ b/arch/arm/src/cxd56xx/cxd56_start.c @@ -303,7 +303,9 @@ void __start(void) putreg32(0, CXD56_EXCCONF_BASE + 0); +#ifndef CONFIG_CXD56_SUBCORE cxd56_lowsetup(); +#endif showprogress('A'); /* Clear .bss. We'll do this inline (vs. calling memset) just to be @@ -327,7 +329,7 @@ void __start(void) /* Perform early serial initialization */ -#ifdef USE_EARLYSERIALINIT +#if defined(USE_EARLYSERIALINIT) && !defined(CONFIG_CXD56_SUBCORE) arm_earlyserialinit(); #endif showprogress('E'); From 5a7a118320c8cdcdb78c116172d371f8fcec7112 Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:04:44 +0900 Subject: [PATCH 172/739] arch: cxd56xx: Fix uninitialized variable for gnss driver Fix uninitialized variable in gnss driver. CodeSonar Warning 518288 - 518292 --- arch/arm/src/cxd56xx/cxd56_gnss.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/arm/src/cxd56xx/cxd56_gnss.c b/arch/arm/src/cxd56xx/cxd56_gnss.c index 13c739abaed..6a893659cae 100644 --- a/arch/arm/src/cxd56xx/cxd56_gnss.c +++ b/arch/arm/src/cxd56xx/cxd56_gnss.c @@ -519,7 +519,7 @@ static int cxd56_gnss_get_satellite_system(FAR struct file *filep, unsigned long arg) { int ret; - uint32_t system; + uint32_t system = 0; if (!arg) { @@ -701,7 +701,7 @@ static int cxd56_gnss_get_tcxo_offset(FAR struct file *filep, unsigned long arg) { int ret; - int32_t offset; + int32_t offset = 0; if (!arg) { @@ -1741,7 +1741,7 @@ static int cxd56_gnss_get_rtk_interval(FAR struct file *filep, unsigned long arg) { int ret; - int interval; + int interval = 0; if (!arg) { @@ -1798,7 +1798,7 @@ static int cxd56_gnss_get_rtk_satellite(FAR struct file *filep, unsigned long arg) { int ret; - uint32_t gnss; + uint32_t gnss = 0; if (!arg) { @@ -1855,7 +1855,7 @@ static int cxd56_gnss_get_rtk_ephemeris_enable(FAR struct file *filep, unsigned long arg) { int ret; - int enable; + int enable = 0; if (!arg) { From db9c94962b9e24c0f173bfa805d75568f4069920 Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 18:00:25 +0900 Subject: [PATCH 173/739] arch: cxd56xx: Add host interface driver Add host interface driver which supports I2C or SPI slave feature. --- arch/arm/include/cxd56xx/hostif.h | 136 +++++++ arch/arm/src/cxd56xx/Kconfig | 39 ++ arch/arm/src/cxd56xx/Make.defs | 4 + arch/arm/src/cxd56xx/cxd56_clock.c | 176 +++++++++ arch/arm/src/cxd56xx/cxd56_clock.h | 40 ++ arch/arm/src/cxd56xx/cxd56_hostif.c | 594 ++++++++++++++++++++++++++++ arch/arm/src/cxd56xx/cxd56_icc.h | 1 + 7 files changed, 990 insertions(+) create mode 100644 arch/arm/include/cxd56xx/hostif.h create mode 100644 arch/arm/src/cxd56xx/cxd56_hostif.c diff --git a/arch/arm/include/cxd56xx/hostif.h b/arch/arm/include/cxd56xx/hostif.h new file mode 100644 index 00000000000..3c58bd70a33 --- /dev/null +++ b/arch/arm/include/cxd56xx/hostif.h @@ -0,0 +1,136 @@ +/**************************************************************************** + * arch/arm/include/cxd56xx/hostif.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_ARM_INCLUDE_CXD56XX_HOSTIF_H +#define __ARCH_ARM_INCLUDE_CXD56XX_HOSTIF_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Host interface maximum number of buffers */ + +#define MAX_BUFFER_NUM 32 + +/* Host interface buffer attributes */ + +#define HOSTIF_BUFF_ATTR_ADDR_OFFSET(n) (((n) & 0x3) << 4) + /* 2 to the power of n */ +#define HOSTIF_BUFF_ATTR_FIXLEN (0 << 2) /* fixed length */ +#define HOSTIF_BUFF_ATTR_VARLEN (1 << 2) /* variable length */ +#define HOSTIF_BUFF_ATTR_WRITE (0 << 1) /* from target to host */ +#define HOSTIF_BUFF_ATTR_READ (1 << 1) /* from host to target */ + +/**************************************************************************** + * Public Types + ****************************************************************************/ + +/* Common buffer configuration */ + +struct hostif_buff_s +{ + uint16_t size; + uint16_t flag; +}; + +/* I2C buffer configuration */ + +struct hostif_i2cconf_s +{ + int address; /* slave address */ + struct hostif_buff_s buff[MAX_BUFFER_NUM]; +}; + +/* SPI buffer configuration */ + +struct hostif_spiconf_s +{ + struct hostif_buff_s buff[MAX_BUFFER_NUM]; +}; + +#ifndef __ASSEMBLY__ + +#undef EXTERN +#if defined(__cplusplus) +#define EXTERN extern "C" +extern "C" +{ +#else +#define EXTERN extern +#endif + +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ + +/**************************************************************************** + * Name: hostif_i2cinitialize + * + * Description: + * Initialize the host interface for I2C slave + * + * Input Parameter: + * config - pointer to I2C buffer configuration + * + * Returned Value: + * Return 0 on success. Otherwise, return a negated errno. + * + ****************************************************************************/ + +int hostif_i2cinitialize(FAR struct hostif_i2cconf_s *config); + +/**************************************************************************** + * Name: hostif_spiinitialize + * + * Description: + * Initialize the host interface for SPI slave + * + * Input Parameter: + * config - pointer to SPI buffer configuration + * + * Returned Value: + * Return 0 on success. Otherwise, return a negated errno. + * + ****************************************************************************/ + +int hostif_spiinitialize(FAR struct hostif_spiconf_s *config); + +/**************************************************************************** + * Name: hostif_uninitialize + * + * Description: + * Uninitialize the host interface + * + * Returned Value: + * Return 0 on success. Otherwise, return a negated errno. + * + ****************************************************************************/ + +int hostif_uninitialize(void); + +#endif /* __ASSEMBLY__ */ +#endif /* __ARCH_ARM_INCLUDE_CXD56XX_HOSTIF_H */ diff --git a/arch/arm/src/cxd56xx/Kconfig b/arch/arm/src/cxd56xx/Kconfig index b3f525c963c..0a1b8aed85a 100644 --- a/arch/arm/src/cxd56xx/Kconfig +++ b/arch/arm/src/cxd56xx/Kconfig @@ -1093,6 +1093,45 @@ config CXD56_CISIF default n ---help--- CMOS image sensor interface for cx5602 chip + +config CXD56_HOSTIF + bool "Host interface" + default n + ---help--- + Host interface supports I2C or SPI slave feature. + +config CXD56_HOSTIF_DEBUG + bool "Host interface Debug Features" + default n + depends on CXD56_HOSTIF + ---help--- + Enable host interface device debug features. + +if CXD56_HOSTIF_DEBUG + +config CXD56_HOSTIF_DEBUG_ERROR + bool "Host interface Error Output" + default n + depends on DEBUG_ERROR + ---help--- + Enable host interface error output to SYSLOG. + +config CXD56_HOSTIF_DEBUG_WARN + bool "Host interface Warnings Output" + default n + depends on DEBUG_WARN + ---help--- + Enable host interface warning output to SYSLOG. + +config CXD56_HOSTIF_DEBUG_INFO + bool "Host interface Informational Output" + default n + depends on DEBUG_INFO + ---help--- + Enable host interface informational output to SYSLOG. + +endif # CXD56_HOSTIF_DEBUG + endmenu comment "Storage Options" diff --git a/arch/arm/src/cxd56xx/Make.defs b/arch/arm/src/cxd56xx/Make.defs index 1c386a0160b..c61a72fcb97 100644 --- a/arch/arm/src/cxd56xx/Make.defs +++ b/arch/arm/src/cxd56xx/Make.defs @@ -201,3 +201,7 @@ endif ifeq ($(CONFIG_CXD56_BACKUPLOG),y) CHIP_CSRCS += cxd56_backuplog.c endif + +ifeq ($(CONFIG_CXD56_HOSTIF),y) +CHIP_CSRCS += cxd56_hostif.c +endif diff --git a/arch/arm/src/cxd56xx/cxd56_clock.c b/arch/arm/src/cxd56xx/cxd56_clock.c index a46acc354a8..cc8cd548cbd 100644 --- a/arch/arm/src/cxd56xx/cxd56_clock.c +++ b/arch/arm/src/cxd56xx/cxd56_clock.c @@ -2291,6 +2291,182 @@ uint32_t cxd56_get_img_vsync_baseclock(void) } } +static int cxd56_hostif_clock_ctrl(uint32_t block, uint32_t intr, int on) +{ + uint32_t val; + uint32_t stat; + int retry = 10000; + + putreg32(0xffffffff, CXD56_TOPREG_CRG_INT_CLR0); + + val = getreg32(CXD56_TOPREG_SYSIOP_CKEN); + if (on) + { + if ((val & block) == block) + { + /* Already clock on */ + + return OK; + } + + putreg32(val | block, CXD56_TOPREG_SYSIOP_CKEN); + } + else + { + if ((val & block) == 0) + { + /* Already clock off */ + + return OK; + } + + putreg32(val & ~block, CXD56_TOPREG_SYSIOP_CKEN); + } + + do + { + stat = getreg32(CXD56_TOPREG_CRG_INT_STAT_RAW0); + busy_wait(1000); + } + while (retry-- && !(stat & intr)); + + putreg32(0xffffffff, CXD56_TOPREG_CRG_INT_CLR0); + + return (retry) ? OK : -ETIMEDOUT; +} + +int cxd56_hostif_clock_enable(void) +{ + int ret = OK; + uint32_t mask; + uint32_t intr; + + /* Enable HOSTIF IRAM/DRAM & general RAM memory power. */ + + putreg32((0x3 << 24) | 0xf, CXD56_TOPREG_HOSTIFC_RAMMODE_SEL); + + do_power_control(); + + mask = CKEN_HOSSPI | CKEN_HOSI2C | CKEN_HOSTIFC_SEQ | CKEN_BRG_HOST | + CKEN_I2CS | CKEN_PCLK_HOSTIFC | CKEN_PCLK_UART0 | CKEN_UART0; + + if (getreg32(CXD56_TOPREG_SYSIOP_CKEN) & mask) + { + /* Already enabled */ + + return ret; + } + + putreg32(0, CXD56_TOPREG_CKDIV_HOSTIFC); + putreg32(0, CXD56_TOPREG_CKSEL_SYSIOP); + + mask = CKEN_HOSSPI | CKEN_HOSI2C | CKEN_BRG_HOST | + CKEN_I2CS | CKEN_PCLK_HOSTIFC; + + intr = CRG_CK_BRG_HOST | CRG_CK_I2CS | CRG_CK_PCLK_HOSTIFC; + + ret = cxd56_hostif_clock_ctrl(mask, intr, 1); + if (ret < 0) + { + return ret; + } + + ret = cxd56_hostif_clock_ctrl(mask, intr, 0); + if (ret < 0) + { + return ret; + } + + modifyreg32(CXD56_TOPREG_SWRESET_BUS, 0, XRST_HOSTIFC); + ret = cxd56_hostif_clock_ctrl(mask, intr, 1); + + return ret; +} + +int cxd56_hostif_clock_disable(void) +{ + int ret = OK; + uint32_t mask; + uint32_t intr; + + mask = CKEN_HOSSPI | CKEN_HOSI2C | CKEN_HOSTIFC_SEQ | CKEN_BRG_HOST | + CKEN_I2CS | CKEN_PCLK_HOSTIFC | CKEN_PCLK_UART0 | CKEN_UART0; + + if (0 == (getreg32(CXD56_TOPREG_SYSIOP_CKEN) & mask)) + { + /* Already disabled */ + + return ret; + } + + mask = CKEN_HOSSPI | CKEN_HOSI2C | CKEN_BRG_HOST | + CKEN_I2CS | CKEN_PCLK_HOSTIFC; + + intr = CRG_CK_BRG_HOST | CRG_CK_I2CS | CRG_CK_PCLK_HOSTIFC; + + ret = cxd56_hostif_clock_ctrl(mask, intr, 0); + if (ret < 0) + { + return ret; + } + + modifyreg32(CXD56_TOPREG_SWRESET_BUS, XRST_HOSTIFC, 0); + + /* Disable HOSTIF IRAM/DRAM & general RAM memory power. */ + + putreg32(0x3, CXD56_TOPREG_HOSTIFC_RAMMODE_SEL); + + do_power_control(); + + return ret; +} + +int cxd56_hostseq_clock_enable(void) +{ + int ret = OK; + + if (getreg32(CXD56_TOPREG_SYSIOP_CKEN) & CKEN_HOSTIFC_SEQ) + { + /* Already enabled */ + + return ret; + } + + ret = cxd56_hostif_clock_ctrl(CKEN_HOSTIFC_SEQ, CRG_CK_HOSTIFC_SEQ, 1); + if (ret < 0) + { + return ret; + } + + ret = cxd56_hostif_clock_ctrl(CKEN_HOSTIFC_SEQ, CRG_CK_HOSTIFC_SEQ, 0); + if (ret < 0) + { + return ret; + } + + modifyreg32(CXD56_TOPREG_SWRESET_BUS, 0, XRST_HOSTIFC_ISOP); + ret = cxd56_hostif_clock_ctrl(CKEN_HOSTIFC_SEQ, CRG_CK_HOSTIFC_SEQ, 1); + + return ret; +} + +int cxd56_hostseq_clock_disable(void) +{ + int ret = OK; + + if (0 == (getreg32(CXD56_TOPREG_SYSIOP_CKEN) & CKEN_HOSTIFC_SEQ)) + { + /* Already disabled */ + + return ret; + } + + modifyreg32(CXD56_TOPREG_SWRESET_BUS, XRST_HOSTIFC_ISOP, 0); + ret = cxd56_hostif_clock_ctrl(CKEN_HOSTIFC_SEQ, CRG_CK_HOSTIFC_SEQ, 0); + + return ret; +} + int up_pmramctrl(int cmd, uintptr_t addr, size_t size) { int startidx; diff --git a/arch/arm/src/cxd56xx/cxd56_clock.h b/arch/arm/src/cxd56xx/cxd56_clock.h index 1f488ed6484..81014ca1fb8 100644 --- a/arch/arm/src/cxd56xx/cxd56_clock.h +++ b/arch/arm/src/cxd56xx/cxd56_clock.h @@ -684,6 +684,46 @@ uint32_t cxd56_get_img_vsync_baseclock(void); uint32_t cxd56_get_appsmp_baseclock(void); +/**************************************************************************** + * Name: cxd56_hostif_clock_enable + * + * Description: + * Enable clock of the hostif block + * + ****************************************************************************/ + +int cxd56_hostif_clock_enable(void); + +/**************************************************************************** + * Name: cxd56_hostif_clock_disable + * + * Description: + * Disable clock of the hostif block + * + ****************************************************************************/ + +int cxd56_hostif_clock_disable(void); + +/**************************************************************************** + * Name: cxd56_hostseq_clock_enable + * + * Description: + * Enable clock of the hostif sequencer block + * + ****************************************************************************/ + +int cxd56_hostseq_clock_enable(void); + +/**************************************************************************** + * Name: cxd56_hostseq_clock_disable + * + * Description: + * Disable clock of the hostif sequencer block + * + ****************************************************************************/ + +int cxd56_hostseq_clock_disable(void); + #undef EXTERN #if defined(__cplusplus) } diff --git a/arch/arm/src/cxd56xx/cxd56_hostif.c b/arch/arm/src/cxd56xx/cxd56_hostif.c new file mode 100644 index 00000000000..c0d39344000 --- /dev/null +++ b/arch/arm/src/cxd56xx/cxd56_hostif.c @@ -0,0 +1,594 @@ +/**************************************************************************** + * arch/arm/src/cxd56xx/cxd56_hostif.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "chip.h" +#include "up_arch.h" + +#include "cxd56_clock.h" +#include "cxd56_pinconfig.h" +#include "cxd56_icc.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Debug */ + +#ifdef CONFIG_CXD56_HOSTIF_DEBUG_ERROR +#define hiferr(format, ...) _err(format, ##__VA_ARGS__) +#else +#define hiferr(x, ...) +#endif +#ifdef CONFIG_CXD56_HOSTIF_DEBUG_WARN +#define hifwarn(format, ...) _warn(format, ##__VA_ARGS__) +#else +#define hifwarn(x, ...) +#endif +#ifdef CONFIG_CXD56_HOSTIF_DEBUG_INFO +#define hifinfo(format, ...) _info(format, ##__VA_ARGS__) +#else +#define hifinfo(x, ...) +#endif + +/* Message id definitions */ + +#define HIF_I2C_INIT 1 +#define HIF_SPI_INIT 2 +#define HIF_READ_DEVICE 3 +#define HIF_WRITE_DEVICE 4 + +/* Message timeout definition in units of msec */ + +#define HIF_TIMEOUT 5000 + +/**************************************************************************** + * Private Types + ****************************************************************************/ + +/* Host interface device structure for each buffer */ + +struct cxd56_hifdev_s +{ + int id; + uint32_t flags; + const void *buffer; + size_t len; + sem_t exclsem; + int crefs; +}; + +/* Host interface driver structure */ + +struct cxd56_hifdrv_s +{ + struct cxd56_hifdev_s *dev; + int ndev; + sem_t sync; + int errcode; +}; + +/**************************************************************************** + * Private Function Prototypes + ****************************************************************************/ + +/* Character driver methods */ + +static int hif_open(FAR struct file *filep); +static int hif_close(FAR struct file *filep); +static off_t hif_seek(FAR struct file *filep, off_t offset, + int whence); +static ssize_t hif_read(FAR struct file *filep, FAR char *buffer, + size_t len); +static ssize_t hif_write(FAR struct file *filep, + FAR const char *buffer, size_t len); +static int hif_ioctl(FAR struct file *filep, int cmd, + unsigned long arg); +static int hif_poll(FAR struct file *filep, FAR struct pollfd *fds, + bool setup); +static int hif_unlink(FAR struct inode *inode); + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +/* Host interface driver */ + +static struct cxd56_hifdrv_s g_hifdrv; + +/* Host interface operations */ + +static const struct file_operations g_hif_fops = +{ + hif_open, /* open */ + hif_close, /* close */ + hif_read, /* read */ + hif_write, /* write */ + hif_seek, /* seek */ + hif_ioctl, /* ioctl */ + hif_poll, /* poll */ + hif_unlink /* unlink */ +}; + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +static int hif_sendmsg(uint8_t id, void *arg) +{ + struct cxd56_hifdrv_s *drv = &g_hifdrv; + iccmsg_t msg; + int ret; + + /* Check parameters */ + + DEBUGASSERT((HIF_I2C_INIT <= id) && (id <= HIF_WRITE_DEVICE)); + DEBUGASSERT(arg); + + /* Send any message to system CPU */ + + msg.cpuid = 0; + msg.msgid = id; + msg.protodata = id; + msg.data = (uint32_t)arg; + + ret = cxd56_iccsend(CXD56_PROTO_HOSTIF, &msg, HIF_TIMEOUT); + if (ret < 0) + { + hiferr("ERROR: Send message (%d)\n", ret); + return ret; + } + + /* Wait for reply message from system CPU */ + + nxsem_wait_uninterruptible(&drv->sync); + + /* Get the error code returned from system cpu */ + + ret = drv->errcode; + + return ret; +} + +static int hif_open(FAR struct file *filep) +{ + FAR struct inode *inode; + FAR struct cxd56_hifdev_s *priv; + + DEBUGASSERT(filep && filep->f_inode); + inode = filep->f_inode; + + priv = (FAR struct cxd56_hifdev_s *)inode->i_private; + DEBUGASSERT(priv); + + /* Check parameters */ + + if ((filep->f_oflags & O_WRONLY) != 0 && + (filep->f_oflags & O_RDONLY) != 0) + { + return -EACCES; + } + + if ((filep->f_oflags & O_RDONLY) && + ((priv->flags & HOSTIF_BUFF_ATTR_READ) == 0)) + { + return -EINVAL; + } + + if ((filep->f_oflags & O_WRONLY) && + ((priv->flags & HOSTIF_BUFF_ATTR_WRITE) != 0)) + { + return -EINVAL; + } + + /* Increment reference counter */ + + nxsem_wait_uninterruptible(&priv->exclsem); + + priv->crefs++; + DEBUGASSERT(priv->crefs > 0); + + if (priv->crefs > 1) + { + nxsem_post(&priv->exclsem); + return OK; + } + + /* Check if non-blocking mode */ + + if (filep->f_oflags & O_NONBLOCK) + { + priv->flags |= O_NONBLOCK; + } + + nxsem_post(&priv->exclsem); + + return OK; +} + +static int hif_close(FAR struct file *filep) +{ + FAR struct inode *inode; + FAR struct cxd56_hifdev_s *priv; + + DEBUGASSERT(filep && filep->f_inode); + inode = filep->f_inode; + + priv = (FAR struct cxd56_hifdev_s *)inode->i_private; + DEBUGASSERT(priv); + + /* Decrement reference counter */ + + nxsem_wait_uninterruptible(&priv->exclsem); + + DEBUGASSERT(priv->crefs > 0); + priv->crefs--; + + nxsem_post(&priv->exclsem); + + return OK; +} + +static off_t hif_seek(FAR struct file *filep, off_t offset, int whence) +{ + return OK; +} + +static ssize_t hif_read(FAR struct file *filep, FAR char *buffer, size_t len) +{ + FAR struct inode *inode; + FAR struct cxd56_hifdev_s *priv; + int ret; + + DEBUGASSERT(filep && filep->f_inode); + inode = filep->f_inode; + + priv = (FAR struct cxd56_hifdev_s *)inode->i_private; + DEBUGASSERT(priv); + + /* Check parameters */ + + DEBUGASSERT(buffer); + + if ((filep->f_oflags & O_RDONLY) == 0) + { + return -EACCES; + } + + /* Receive data from host */ + + priv->buffer = buffer; + priv->len = len; + + ret = hif_sendmsg(HIF_READ_DEVICE, priv); + + return ret; +} + +static ssize_t hif_write(FAR struct file *filep, + FAR const char *buffer, size_t len) +{ + FAR struct inode *inode; + FAR struct cxd56_hifdev_s *priv; + int ret; + + DEBUGASSERT(filep && filep->f_inode); + inode = filep->f_inode; + + priv = (FAR struct cxd56_hifdev_s *)inode->i_private; + DEBUGASSERT(priv); + + /* Check parameters */ + + DEBUGASSERT(buffer); + + if ((filep->f_oflags & O_WRONLY) == 0) + { + return -EACCES; + } + + /* Send data to host */ + + priv->buffer = buffer; + priv->len = len; + + ret = hif_sendmsg(HIF_WRITE_DEVICE, priv); + + return ret; +} + +static int hif_ioctl(FAR struct file *filep, int cmd, unsigned long arg) +{ + return OK; +} + +static int hif_poll(FAR struct file *filep, + FAR struct pollfd *fds, bool setup) +{ + return OK; +} + +static int hif_unlink(FAR struct inode *inode) +{ + return OK; +} + +static int hif_rxhandler(int cpuid, int protoid, + uint32_t pdata, uint32_t data, + FAR void *userdata) +{ + struct cxd56_hifdrv_s *drv = &g_hifdrv; + + DEBUGASSERT(cpuid == 0); + DEBUGASSERT(protoid == CXD56_PROTO_HOSTIF); + + drv->errcode = (int)data; + + nxsem_post(&drv->sync); + + return OK; +} + +static int hif_initialize(struct hostif_buff_s *buffer) +{ + struct cxd56_hifdrv_s *drv = &g_hifdrv; + struct cxd56_hifdev_s *priv; + char devpath[16]; + int num; + int ret; + + /* Check parameters */ + + DEBUGASSERT(buffer); + + memset(drv, 0, sizeof(struct cxd56_hifdrv_s)); + + /* Get the number of devices */ + + for (num = 0; num < MAX_BUFFER_NUM; num++) + { + if (buffer[num].size == 0) + { + break; + } + } + + /* Setup driver structure */ + + drv->dev = + (struct cxd56_hifdev_s *)kmm_malloc(sizeof(struct cxd56_hifdev_s) * num); + if (drv->dev == NULL) + { + hiferr("ERROR: hostif allocation failed\n"); + + return -ENOMEM; + } + + drv->ndev = num; + + /* Setup each device structure */ + + for (num = 0; num < drv->ndev; num++) + { + priv = &drv->dev[num]; + + priv->id = num; + priv->flags = buffer[num].flag; + snprintf(devpath, sizeof(devpath), "/dev/hostif%c%d", + (priv->flags & HOSTIF_BUFF_ATTR_READ) ? 'r' : 'w', num); + + ret = register_driver(devpath, &g_hif_fops, 0666, priv); + if (ret < 0) + { + hiferr("ERROR: Failed to register %s (%d)\n", devpath, ret); + kmm_free(drv->dev); + return ret; + } + + nxsem_init(&priv->exclsem, 0, 1); + priv->crefs = 0; + } + + /* Enable hostif clock */ + + ret = cxd56_hostif_clock_enable(); + if (ret < 0) + { + hiferr("ERROR: Enable clock (%d)\n", ret); + kmm_free(drv->dev); + return ret; + } + + /* Initialize communication with system CPU */ + + cxd56_iccinit(CXD56_PROTO_HOSTIF); + + nxsem_init(&drv->sync, 0, 0); + nxsem_setprotocol(&drv->sync, SEM_PRIO_NONE); + + ret = cxd56_iccregisterhandler(CXD56_PROTO_HOSTIF, hif_rxhandler, NULL); + + return ret; +} + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: hostif_i2cinitialize + * + * Description: + * Initialize the host interface for I2C slave + * + * Input Parameter: + * config - pointer to I2C buffer configuration + * + * Returned Value: + * Return 0 on success. Otherwise, return a negated errno. + * + ****************************************************************************/ + +int hostif_i2cinitialize(struct hostif_i2cconf_s *config) +{ + int ret; + + DEBUGASSERT(config); + + /* Initialize common driver */ + + ret = hif_initialize(config->buff); + if (ret < 0) + { + hiferr("ERROR: Failed to initialize (%d)\n", ret); + return ret; + } + + /* Initialize I2C driver */ + + ret = hif_sendmsg(HIF_I2C_INIT, config); + if (ret < 0) + { + hiferr("ERROR: Initialize I2C (%d)\n", ret); + return ret; + } + + /* Enable hostif sequencer clock */ + + ret = cxd56_hostseq_clock_enable(); + if (ret < 0) + { + hiferr("ERROR: Enable sequencer clock (%d)\n", ret); + return ret; + } + + /* Pin setting */ + + CXD56_PIN_CONFIGS(PINCONFS_SPI2A_I2C3); + + return OK; +} + +/**************************************************************************** + * Name: hostif_spiinitialize + * + * Description: + * Initialize the host interface for SPI slave + * + * Input Parameter: + * config - pointer to SPI buffer configuration + * + * Returned Value: + * Return 0 on success. Otherwise, return a negated errno. + * + ****************************************************************************/ + +int hostif_spiinitialize(struct hostif_spiconf_s *config) +{ + int ret; + + DEBUGASSERT(config); + + /* Initialize common driver */ + + ret = hif_initialize(config->buff); + if (ret < 0) + { + hiferr("ERROR: Failed to initialize (%d)\n", ret); + return ret; + } + + /* Initialize SPI driver */ + + ret = hif_sendmsg(HIF_SPI_INIT, config); + if (ret < 0) + { + hiferr("ERROR: Initialize SPI (%d)\n", ret); + return ret; + } + + /* Enable hostif sequencer clock */ + + ret = cxd56_hostseq_clock_enable(); + if (ret < 0) + { + hiferr("ERROR: Enable sequencer clock (%d)\n", ret); + return ret; + } + + /* Pin setting */ + + CXD56_PIN_CONFIGS(PINCONFS_SPI2); + + return OK; +} + +/**************************************************************************** + * Name: hostif_uninitialize + * + * Description: + * Uninitialize the host interface + * + * Returned Value: + * Return 0 on success. Otherwise, return a negated errno. + * + ****************************************************************************/ + +int hostif_uninitialize(void) +{ + struct cxd56_hifdrv_s *drv = &g_hifdrv; + struct cxd56_hifdev_s *priv; + char devpath[16]; + int num; + + for (num = 0; num < drv->ndev; num++) + { + priv = &drv->dev[num]; + + snprintf(devpath, sizeof(devpath), "/dev/hostif%c%d", + (priv->flags & HOSTIF_BUFF_ATTR_READ) ? 'r' : 'w', num); + unregister_driver(devpath); + } + + if (drv->dev) + { + kmm_free(drv->dev); + } + + return OK; +} diff --git a/arch/arm/src/cxd56xx/cxd56_icc.h b/arch/arm/src/cxd56xx/cxd56_icc.h index a27774968bb..59d9ed07370 100644 --- a/arch/arm/src/cxd56xx/cxd56_icc.h +++ b/arch/arm/src/cxd56xx/cxd56_icc.h @@ -32,6 +32,7 @@ #define CXD56_PROTO_HOTSLEEP 8 #define CXD56_PROTO_IMAGE 9 #define CXD56_PROTO_PM 10 /* Power manager */ +#define CXD56_PROTO_HOSTIF 11 #define CXD56_PROTO_SYSCTL 12 #define CXD56_PROTO_GNSS 13 #define CXD56_PROTO_SIG 15 /* Inter-CPU Comm signal */ From 6b5a4cbfd36947407747c42874cd4f5b41a91f86 Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:04:54 +0900 Subject: [PATCH 174/739] arch: cxd56xx: Fix parameter check of hostif buffer Fix a parameter check of the buffer attribute in opening hostif driver. --- arch/arm/src/cxd56xx/cxd56_hostif.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/src/cxd56xx/cxd56_hostif.c b/arch/arm/src/cxd56xx/cxd56_hostif.c index c0d39344000..522e11d453a 100644 --- a/arch/arm/src/cxd56xx/cxd56_hostif.c +++ b/arch/arm/src/cxd56xx/cxd56_hostif.c @@ -211,7 +211,7 @@ static int hif_open(FAR struct file *filep) } if ((filep->f_oflags & O_WRONLY) && - ((priv->flags & HOSTIF_BUFF_ATTR_WRITE) != 0)) + ((priv->flags & HOSTIF_BUFF_ATTR_READ) != 0)) { return -EINVAL; } From 35553147ba2afdf240bfb744d1c58b7df4fc96e0 Mon Sep 17 00:00:00 2001 From: Anthony Merlino Date: Sat, 15 May 2021 18:00:52 -0400 Subject: [PATCH 175/739] stm32h7 rcc: Sync h7x7xx and h7x3xx. Changes are relevant to both --- arch/arm/src/stm32h7/stm32h7x3xx_rcc.c | 20 +++++++++++++- arch/arm/src/stm32h7/stm32h7x7xx_rcc.c | 36 +++++++++++++++++++------- 2 files changed, 45 insertions(+), 11 deletions(-) diff --git a/arch/arm/src/stm32h7/stm32h7x3xx_rcc.c b/arch/arm/src/stm32h7/stm32h7x3xx_rcc.c index c9e0dd2eec8..49f8d495f50 100644 --- a/arch/arm/src/stm32h7/stm32h7x3xx_rcc.c +++ b/arch/arm/src/stm32h7/stm32h7x3xx_rcc.c @@ -247,11 +247,17 @@ static inline void rcc_enableahb2(void) regval = getreg32(STM32_RCC_AHB2ENR); #ifdef CONFIG_STM32H7_SDMMC2 - /* SDMMC clock enable */ + /* SDMMC2 clock enable */ regval |= RCC_AHB2ENR_SDMMC2EN; #endif +#ifdef CONFIG_STM32H7_RNG + /* Random number generator clock enable */ + + regval |= RCC_AHB2ENR_RNGEN; +#endif + putreg32(regval, STM32_RCC_AHB2ENR); /* Enable peripherals */ } @@ -473,6 +479,18 @@ static inline void rcc_enableapb2(void) regval |= RCC_APB2ENR_SPI5EN; #endif +#ifdef CONFIG_STM32H7_USART1 + /* USART1 clock enable */ + + regval |= RCC_APB2ENR_USART1EN; +#endif + +#ifdef CONFIG_STM32H7_USART6 + /* USART1 clock enable */ + + regval |= RCC_APB2ENR_USART6EN; +#endif + putreg32(regval, STM32_RCC_APB2ENR); /* Enable peripherals */ } diff --git a/arch/arm/src/stm32h7/stm32h7x7xx_rcc.c b/arch/arm/src/stm32h7/stm32h7x7xx_rcc.c index 13464adaf7b..af179c506d1 100644 --- a/arch/arm/src/stm32h7/stm32h7x7xx_rcc.c +++ b/arch/arm/src/stm32h7/stm32h7x7xx_rcc.c @@ -246,7 +246,17 @@ static inline void rcc_enableahb2(void) regval = getreg32(STM32_RCC_AHB2ENR); - /* TODO: ... */ +#ifdef CONFIG_STM32H7_SDMMC2 + /* SDMMC2 clock enable */ + + regval |= RCC_AHB2ENR_SDMMC2EN; +#endif + +#ifdef CONFIG_STM32H7_RNG + /* Random number generator clock enable */ + + regval |= RCC_AHB2ENR_RNGEN; +#endif putreg32(regval, STM32_RCC_AHB2ENR); /* Enable peripherals */ } @@ -469,12 +479,6 @@ static inline void rcc_enableapb2(void) regval |= RCC_APB2ENR_SPI5EN; #endif -#ifdef CONFIG_STM32H7_SDMMC2 - /* SDMMC2 clock enable */ - - regval |= RCC_APB2ENR_SDMMC2EN; -#endif - #ifdef CONFIG_STM32H7_USART1 /* USART1 clock enable */ @@ -826,8 +830,6 @@ void stm32_stdclockconfig(void) regval |= STM32_PWR_CR3_LDOEN | STM32_PWR_CR3_LDOESCUEN; putreg32(regval, STM32_PWR_CR3); -#if 0 - /* Set the voltage output scale */ regval = getreg32(STM32_PWR_D3CR); @@ -839,6 +841,12 @@ void stm32_stdclockconfig(void) { } + /* See Reference manual Section 5.4.1, System supply startup */ + + while ((getreg32(STM32_PWR_CSR1) & PWR_CSR1_ACTVOSRDY) == 0) + { + } + /* Over-drive is needed if * - Voltage output scale 1 mode is selected and SYSCLK frequency is * over 400 MHz. @@ -863,7 +871,6 @@ void stm32_stdclockconfig(void) { } } -#endif /* Configure FLASH wait states */ @@ -952,6 +959,15 @@ void stm32_stdclockconfig(void) putreg32(regval, STM32_RCC_D3CCIPR); #endif + /* Configure FDCAN source clock */ + +#if defined(STM32_RCC_D2CCIP1R_FDCANSEL) + regval = getreg32(STM32_RCC_D2CCIP1R); + regval &= ~RCC_D2CCIP1R_FDCANSEL_MASK; + regval |= STM32_RCC_D2CCIP1R_FDCANSEL; + putreg32(regval, STM32_RCC_D2CCIP1R); +#endif + #if defined(CONFIG_STM32H7_IWDG) || defined(CONFIG_STM32H7_RTC_LSICLOCK) /* Low speed internal clock source LSI */ From c9ccbb9e035450688cf53707eaa741f7832225f2 Mon Sep 17 00:00:00 2001 From: Anthony Merlino Date: Sun, 16 May 2021 11:28:04 -0400 Subject: [PATCH 176/739] stm32h7xxxx_rcc.c: Fixes typo in comment --- arch/arm/src/stm32h7/stm32h7x3xx_rcc.c | 2 +- arch/arm/src/stm32h7/stm32h7x7xx_rcc.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/src/stm32h7/stm32h7x3xx_rcc.c b/arch/arm/src/stm32h7/stm32h7x3xx_rcc.c index 49f8d495f50..9218861409c 100644 --- a/arch/arm/src/stm32h7/stm32h7x3xx_rcc.c +++ b/arch/arm/src/stm32h7/stm32h7x3xx_rcc.c @@ -486,7 +486,7 @@ static inline void rcc_enableapb2(void) #endif #ifdef CONFIG_STM32H7_USART6 - /* USART1 clock enable */ + /* USART6 clock enable */ regval |= RCC_APB2ENR_USART6EN; #endif diff --git a/arch/arm/src/stm32h7/stm32h7x7xx_rcc.c b/arch/arm/src/stm32h7/stm32h7x7xx_rcc.c index af179c506d1..81e7e8a6273 100644 --- a/arch/arm/src/stm32h7/stm32h7x7xx_rcc.c +++ b/arch/arm/src/stm32h7/stm32h7x7xx_rcc.c @@ -486,7 +486,7 @@ static inline void rcc_enableapb2(void) #endif #ifdef CONFIG_STM32H7_USART6 - /* USART1 clock enable */ + /* USART6 clock enable */ regval |= RCC_APB2ENR_USART6EN; #endif From e79a45bb93df5adca7d35897558e99c0deeef8a2 Mon Sep 17 00:00:00 2001 From: Jukka Laitinen Date: Tue, 18 May 2021 08:46:22 +0300 Subject: [PATCH 177/739] rv64gc/riscv_assert.c: Fix compilation without CONFIG_DEBUG_ALERT Signed-off-by: Jukka Laitinen --- arch/risc-v/src/rv64gc/riscv_assert.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/risc-v/src/rv64gc/riscv_assert.c b/arch/risc-v/src/rv64gc/riscv_assert.c index 6a99759a1d3..a643f96096e 100644 --- a/arch/risc-v/src/rv64gc/riscv_assert.c +++ b/arch/risc-v/src/rv64gc/riscv_assert.c @@ -336,7 +336,7 @@ static int assert_tracecallback(FAR struct usbtrace_s *trace, FAR void *arg) void up_assert(const char *filename, int lineno) { -#if CONFIG_TASK_NAME_SIZE > 0 && defined(CONFIG_DEBUG_ALERT) +#if CONFIG_TASK_NAME_SIZE > 0 struct tcb_s *rtcb = running_task(); #endif From e4fd99682e4c061dcdc4db7751d1a12c19d96eba Mon Sep 17 00:00:00 2001 From: Jukka Laitinen Date: Tue, 18 May 2021 08:46:58 +0300 Subject: [PATCH 178/739] rv64gc: use PRIx64 format for alert and assert This fixes compilation warnings caused by number formatting Signed-off-by: Jukka Laitinen --- arch/risc-v/src/rv64gc/riscv_assert.c | 50 ++++++++++++++++----------- arch/risc-v/src/rv64gc/riscv_fault.c | 29 ++++++++++------ 2 files changed, 49 insertions(+), 30 deletions(-) diff --git a/arch/risc-v/src/rv64gc/riscv_assert.c b/arch/risc-v/src/rv64gc/riscv_assert.c index a643f96096e..79c20a77333 100644 --- a/arch/risc-v/src/rv64gc/riscv_assert.c +++ b/arch/risc-v/src/rv64gc/riscv_assert.c @@ -78,7 +78,9 @@ static void up_stackdump(uint64_t sp, uintptr_t stack_top) for (stack = sp & ~0x1f; stack < stack_top; stack += 32) { uint32_t *ptr = (uint32_t *)stack; - _alert("%08x: %08x %08x %08x %08x %08x %08x %08x %08x\n", + _alert("%08" PRIxPTR ": %08" PRIx32 " %08" PRIx32 " %08" PRIx32 + " %08" PRIx32 " %08" PRIx32 " %08" PRIx32 " %08" PRIx32 + " %08" PRIx32 "\n", stack, ptr[0], ptr[1], ptr[2], ptr[3], ptr[4], ptr[5], ptr[6], ptr[7]); } @@ -130,44 +132,52 @@ static inline void up_registerdump(void) if (CURRENT_REGS) { - _alert("EPC:%016x \n", + _alert("EPC:%016" PRIx64 " \n", CURRENT_REGS[REG_EPC]); - _alert("A0:%016x A1:%016x A2:%016x A3:%016x \n", + _alert("A0:%016" PRIx64 " A1:%01" PRIx64 "6 A2:%016" PRIx64 + " A3:%016" PRIx64 " \n", CURRENT_REGS[REG_A0], CURRENT_REGS[REG_A1], CURRENT_REGS[REG_A2], CURRENT_REGS[REG_A3]); - _alert("A4:%016x A5:%016x A6:%016x A7:%016x \n", + _alert("A4:%016" PRIx64 " A5:%016" PRIx64 "A6:%016" PRIx64 + " A7:%016" PRIx64 " \n", CURRENT_REGS[REG_A4], CURRENT_REGS[REG_A5], CURRENT_REGS[REG_A6], CURRENT_REGS[REG_A7]); - _alert("T0:%016x T1:%016x T2:%016x T3:%016x \n", + _alert("T0:%016" PRIx64 " T1:%016" PRIx64 " T2:%016" PRIx64 + " T3:%016" PRIx64 " \n", CURRENT_REGS[REG_T0], CURRENT_REGS[REG_T1], CURRENT_REGS[REG_T2], CURRENT_REGS[REG_T3]); - _alert("T4:%016x T5:%016x T6:%016x \n", + _alert("T4:%016" PRIx64 " T5:%016" PRIx64 " T6:%016" PRIx64 " \n", CURRENT_REGS[REG_T4], CURRENT_REGS[REG_T5], CURRENT_REGS[REG_T6]); - _alert("S0:%016x S1:%016x S2:%016x S3:%016x \n", + _alert("S0:%016" PRIx64 " S1:%016" PRIx64 " S2:%016" PRIx64 + " S3:%016" PRIx64 " \n", CURRENT_REGS[REG_S0], CURRENT_REGS[REG_S1], CURRENT_REGS[REG_S2], CURRENT_REGS[REG_S3]); - _alert("S4:%016x S5:%016x S6:%016x S7:%016x \n", + _alert("S4:%016" PRIx64 " S5:%016" PRIx64 " S6:%016" PRIx64 + " S7:%016" PRIx64 " \n", CURRENT_REGS[REG_S4], CURRENT_REGS[REG_S5], CURRENT_REGS[REG_S6], CURRENT_REGS[REG_S7]); - _alert("S8:%016x S9:%016x S10:%016x S11:%016x \n", + _alert("S8:%016" PRIx64 " S9:%016" PRIx64 " S10:%016" PRIx64 + " S11:%016" PRIx64 " \n", CURRENT_REGS[REG_S8], CURRENT_REGS[REG_S9], CURRENT_REGS[REG_S10], CURRENT_REGS[REG_S11]); #ifdef RISCV_SAVE_GP - _alert("GP:%016x SP:%016x FP:%016x TP:%016x RA:%016x \n", + _alert("GP:%016" PRIx64 " SP:%016" PRIx64 " FP:%016" PRIx64 + " TP:%016" PRIx64 " RA:%016" PRIx64 " \n", CURRENT_REGS[REG_GP], CURRENT_REGS[REG_SP], CURRENT_REGS[REG_FP], CURRENT_REGS[REG_TP], CURRENT_REGS[REG_RA]); #else - _alert("SP:%016x FP:%016x TP:%016x RA:%016x \n", + _alert("SP:%016" PRIx64 " FP:%016" PRIx64 " TP:%016" PRIx64 + " RA:%016" PRIx64 " \n", CURRENT_REGS[REG_SP], CURRENT_REGS[REG_FP], CURRENT_REGS[REG_TP], CURRENT_REGS[REG_RA]); #endif @@ -206,10 +216,10 @@ static void up_dumpstate(void) /* Show interrupt stack info */ - _alert("sp: %016x\n", sp); + _alert("sp: %016" PRIx64 "\n", sp); _alert("IRQ stack:\n"); - _alert(" base: %016x\n", istackbase); - _alert(" size: %016x\n", istacksize); + _alert(" base: %016" PRIxPTR "\n", istackbase); + _alert(" size: %016" PRIxPTR "\n", istacksize); /* Does the current stack pointer lie within the interrupt * stack? @@ -224,7 +234,7 @@ static void up_dumpstate(void) /* Extract the user stack pointer */ sp = CURRENT_REGS[REG_SP]; - _alert("sp: %016x\n", sp); + _alert("sp: %016" PRIx64 "\n", sp); } else if (CURRENT_REGS) { @@ -235,12 +245,12 @@ static void up_dumpstate(void) /* Show user stack info */ _alert("User stack:\n"); - _alert(" base: %016x\n", ustackbase); - _alert(" size: %016x\n", ustacksize); + _alert(" base: %016" PRIxPTR "\n", ustackbase); + _alert(" size: %016" PRIxPTR "\n", ustacksize); #else - _alert("sp: %016x\n", sp); - _alert("stack base: %016x\n", ustackbase); - _alert("stack size: %016x\n", ustacksize); + _alert("sp: %016" PRIx64 "\n", sp); + _alert("stack base: %016" PRIxPTR "\n", ustackbase); + _alert("stack size: %016" PRIxPTR "\n", ustacksize); #endif /* Dump the user stack if the stack pointer lies within the allocated user diff --git a/arch/risc-v/src/rv64gc/riscv_fault.c b/arch/risc-v/src/rv64gc/riscv_fault.c index d7bd4d3ffb2..88ef5a607b2 100644 --- a/arch/risc-v/src/rv64gc/riscv_fault.c +++ b/arch/risc-v/src/rv64gc/riscv_fault.c @@ -58,48 +58,57 @@ void up_fault(int irq, uint64_t *regs) { CURRENT_REGS = regs; - _alert("EPC:%016x\n", + _alert("EPC:%016" PRIx64 "\n", CURRENT_REGS[REG_EPC]); _alert("Fault IRQ=%d \n", irq); /* Dump register info */ - _alert("A0:%016x A1:%016x A2:%016x A3:%016x \n", + _alert("A0:%016" PRIx64 " A1:%016" PRIx64 " A2:%016" PRIx64 + " A3:%016" PRIx64 "\n", CURRENT_REGS[REG_A0], CURRENT_REGS[REG_A1], CURRENT_REGS[REG_A2], CURRENT_REGS[REG_A3]); - _alert("A4:%016x A5:%016x A6:%016x A7:%016x \n", + _alert("A4:%016" PRIx64 " A5:%016" PRIx64 " A6:%016" PRIx64 + " A7:%016" PRIx64 "\n", CURRENT_REGS[REG_A4], CURRENT_REGS[REG_A5], CURRENT_REGS[REG_A6], CURRENT_REGS[REG_A7]); - _alert("T0:%016x T1:%016x T2:%016x T3:%016x \n", + _alert("T0:%016" PRIx64 " T1:%016" PRIx64 " T2:%016" PRIx64 + " T3:%016" PRIx64 "\n", CURRENT_REGS[REG_T0], CURRENT_REGS[REG_T1], CURRENT_REGS[REG_T2], CURRENT_REGS[REG_T3]); - _alert("T4:%016x T5:%016x T6:%016x \n", + _alert("T4:%016" PRIx64 " T5:%016" PRIx64 + " T6:%016" PRIx64 " \n", CURRENT_REGS[REG_T4], CURRENT_REGS[REG_T5], CURRENT_REGS[REG_T6]); - _alert("S0:%016x S1:%016x S2:%016x S3:%016x \n", + _alert("S0:%016" PRIx64 " S1:%016" PRIx64 " S2:%016" PRIx64 + " S3:%016" PRIx64 "\n", CURRENT_REGS[REG_S0], CURRENT_REGS[REG_S1], CURRENT_REGS[REG_S2], CURRENT_REGS[REG_S3]); - _alert("S4:%016x S5:%016x S6:%016x S7:%016x \n", + _alert("S4:%016" PRIx64 " S5:%016" PRIx64 " S6:%016" PRIx64 + " S7:%016" PRIx64 "\n", CURRENT_REGS[REG_S4], CURRENT_REGS[REG_S5], CURRENT_REGS[REG_S6], CURRENT_REGS[REG_S7]); - _alert("S8:%016x S9:%016x S10:%016x S11:%016x \n", + _alert("S8:%016" PRIx64 " S9:%016" PRIx64 " S10:%016" PRIx64 + " S11:%016" PRIx64 "\n", CURRENT_REGS[REG_S8], CURRENT_REGS[REG_S9], CURRENT_REGS[REG_S10], CURRENT_REGS[REG_S11]); #ifdef RISCV_SAVE_GP - _alert("GP:%016x SP:%016x FP:%016x TP:%016x RA:%016x \n", + _alert("GP:%016" PRIx64 " SP:%016" PRIx64 " FP:%016" PRIx64 + " TP:%016 " PRIx64 "RA:%016" PRIx64 "\n", CURRENT_REGS[REG_GP], CURRENT_REGS[REG_SP], CURRENT_REGS[REG_FP], CURRENT_REGS[REG_TP], CURRENT_REGS[REG_RA]); #else - _alert("SP:%016x FP:%016x TP:%016x RA:%016x \n", + _alert("SP:%016" PRIx64 " FP:%016" PRIx64 " TP:%016" PRIx64 + " RA:%016" PRIx64 "\n", CURRENT_REGS[REG_SP], CURRENT_REGS[REG_FP], CURRENT_REGS[REG_TP], CURRENT_REGS[REG_RA]); #endif From 4018cc186c9e029319510a1731212ba47411122f Mon Sep 17 00:00:00 2001 From: Alexander Lunev Date: Thu, 20 May 2021 21:53:57 +0300 Subject: [PATCH 179/739] libelf: fix "nsh: nsh_session: readline failed: 13" error Resolves issue #3751 --- binfmt/libelf/libelf_init.c | 1 + 1 file changed, 1 insertion(+) diff --git a/binfmt/libelf/libelf_init.c b/binfmt/libelf/libelf_init.c index 6658aa0b62b..f2da035e412 100644 --- a/binfmt/libelf/libelf_init.c +++ b/binfmt/libelf/libelf_init.c @@ -134,6 +134,7 @@ int elf_init(FAR const char *filename, FAR struct elf_loadinfo_s *loadinfo) /* Clear the load info structure */ memset(loadinfo, 0, sizeof(struct elf_loadinfo_s)); + loadinfo->filfd = -1; /* Get the length of the file. */ From fc55f25fff646c1cd40b84b8301eb1cd43a89904 Mon Sep 17 00:00:00 2001 From: GAEHWILER Reto Date: Fri, 21 May 2021 09:00:22 +0200 Subject: [PATCH 180/739] Fix calculation of free clusters at mounting a fat partition Previously the value of the FSInfo section was taken as granted. As described in the white paper of FAT [1] this value is unreliable and has to be computed at mount time. [1] https://www.win.tue.nl/~aeb/linux/fs/fat/fatgen103.pdf --- fs/fat/fs_fat32.h | 1 + fs/fat/fs_fat32util.c | 63 +++++++++++++++++++++++++++++-------------- 2 files changed, 44 insertions(+), 20 deletions(-) diff --git a/fs/fat/fs_fat32.h b/fs/fat/fs_fat32.h index 5858aedf6b3..70e958ee13a 100644 --- a/fs/fat/fs_fat32.h +++ b/fs/fat/fs_fat32.h @@ -1082,6 +1082,7 @@ EXTERN int fat_ffcacheinvalidate(struct fat_mountpt_s *fs, /* FSINFO sector support */ EXTERN int fat_updatefsinfo(struct fat_mountpt_s *fs); +EXTERN int fat_computefreeclusters(struct fat_mountpt_s *fs); EXTERN int fat_nfreeclusters(struct fat_mountpt_s *fs, off_t *pfreeclusters); EXTERN int fat_currentsector(struct fat_mountpt_s *fs, diff --git a/fs/fat/fs_fat32util.c b/fs/fat/fs_fat32util.c index 8bd967ce460..0fdfeaa3863 100644 --- a/fs/fat/fs_fat32util.c +++ b/fs/fat/fs_fat32util.c @@ -626,7 +626,7 @@ int fat_mount(struct fat_mountpt_s *fs, bool writeable) if (fs->fs_type == FSTYPE_FAT32) { - ret = fat_checkfsinfo(fs); + ret = fat_computefreeclusters(fs); if (ret != OK) { goto errout_with_buffer; @@ -1142,7 +1142,7 @@ int fat_removechain(struct fat_mountpt_s *fs, uint32_t cluster) if (fs->fs_fsifreecount != 0xffffffff) { fs->fs_fsifreecount++; - fs->fs_fsidirty = 1; + fs->fs_fsidirty = true; } /* Then set up to remove the next cluster */ @@ -1308,7 +1308,7 @@ int32_t fat_extendchain(struct fat_mountpt_s *fs, uint32_t cluster) if (fs->fs_fsifreecount != 0xffffffff) { fs->fs_fsifreecount--; - fs->fs_fsidirty = 1; + fs->fs_fsidirty = true; } /* Return then number of the new cluster that was added to the chain */ @@ -2019,30 +2019,23 @@ int fat_updatefsinfo(struct fat_mountpt_s *fs) } /**************************************************************************** - * Name: fat_nfreeclusters + * Name: fat_computefreeclusters * * Description: - * Get the number of free clusters + * Compute the number of free clusters from scratch * ****************************************************************************/ -int fat_nfreeclusters(struct fat_mountpt_s *fs, off_t *pfreeclusters) +int fat_computefreeclusters(struct fat_mountpt_s *fs) { - uint32_t nfreeclusters; - - /* If number of the first free cluster is valid, then just return that - * value. - */ - - if (fs->fs_fsifreecount <= fs->fs_nclusters - 2) + if (fat_checkfsinfo(fs) != OK) { - *pfreeclusters = fs->fs_fsifreecount; - return OK; + return -ENODEV; } - /* Otherwise, we will have to count the number of free clusters */ + /* We have to count the number of free clusters */ - nfreeclusters = 0; + uint32_t nfreeclusters = 0; if (fs->fs_type == FSTYPE_FAT12) { off_t sector; @@ -2052,7 +2045,7 @@ int fat_nfreeclusters(struct fat_mountpt_s *fs, off_t *pfreeclusters) for (sector = 2; sector < fs->fs_nclusters; sector++) { /* If the cluster is unassigned, then increment the count of free - * clusters. + * clusters */ if ((uint16_t)fat_getcluster(fs, sector) == 0) @@ -2076,7 +2069,7 @@ int fat_nfreeclusters(struct fat_mountpt_s *fs, off_t *pfreeclusters) for (cluster = fs->fs_nclusters; cluster > 0; cluster--) { /* If we are starting a new sector, then read the new sector in - * fs_buffer. + * fs_buffer */ if (offset >= fs->fs_hwsectorsize) @@ -2126,10 +2119,40 @@ int fat_nfreeclusters(struct fat_mountpt_s *fs, off_t *pfreeclusters) fs->fs_fsidirty = true; } - *pfreeclusters = nfreeclusters; return OK; } +/**************************************************************************** + * Name: fat_nfreeclusters + * + * Description: + * Get the number of free clusters + * + ****************************************************************************/ + +int fat_nfreeclusters(struct fat_mountpt_s *fs, off_t *pfreeclusters) +{ + /* If number of the first free cluster is valid, then just return that + * value. + */ + + if (fs->fs_fsifreecount <= fs->fs_nclusters - 2) + { + *pfreeclusters = fs->fs_fsifreecount; + return OK; + } + + /* Otherwise, we will have to compute the number of free clusters */ + + int ret = fat_computefreeclusters(fs); + if (ret == OK) + { + *pfreeclusters = fs->fs_fsifreecount; + } + + return ret; +} + /**************************************************************************** * Name: fat_nfreeclusters * From 6c40185985ab32f75a0a9549d051db4eaca70bce Mon Sep 17 00:00:00 2001 From: "chao.an" Date: Thu, 22 Apr 2021 16:08:08 +0800 Subject: [PATCH 181/739] arm/v7-a/fpu: add VFP-v3 D32 support Signed-off-by: chao.an --- arch/arm/Kconfig | 8 ++++++ arch/arm/include/armv7-a/irq.h | 25 +++++++++++++++++-- arch/arm/include/armv7-r/irq.h | 25 +++++++++++++++++-- arch/arm/src/armv7-a/arm_fullcontextrestore.S | 5 ++++ arch/arm/src/armv7-a/arm_restorefpu.S | 5 ++++ arch/arm/src/armv7-a/arm_savefpu.S | 5 ++++ arch/arm/src/armv7-a/arm_saveusercontext.S | 5 ++++ arch/arm/src/armv7-r/arm_fullcontextrestore.S | 5 ++++ arch/arm/src/armv7-r/arm_restorefpu.S | 5 ++++ arch/arm/src/armv7-r/arm_savefpu.S | 5 ++++ arch/arm/src/armv7-r/arm_saveusercontext.S | 5 ++++ 11 files changed, 94 insertions(+), 4 deletions(-) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index fd7a3a083fa..f51235be88a 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -825,6 +825,14 @@ config ARM_HAVE_WFE_SEV ---help--- Use WFE and SEV instructions for spinlock to reduce power consumption +config ARM_HAVE_FPU_D32 + bool + select ARCH_HAVE_FPU + default n + ---help--- + FPU implemented in the VFPv3-D32 format that supports + 32 double-precision floating-point registers. + config ARM_HAVE_MPU_UNIFIED bool default n diff --git a/arch/arm/include/armv7-a/irq.h b/arch/arm/include/armv7-a/irq.h index fc4075002ab..c954408be2e 100644 --- a/arch/arm/include/armv7-a/irq.h +++ b/arch/arm/include/armv7-a/irq.h @@ -136,8 +136,29 @@ # define REG_D15 (ARM_CONTEXT_REGS+30) /* D15 */ # define REG_S30 (ARM_CONTEXT_REGS+30) /* S30 */ # define REG_S31 (ARM_CONTEXT_REGS+31) /* S31 */ -# define REG_FPSCR (ARM_CONTEXT_REGS+32) /* Floating point status and control */ -# define FPU_CONTEXT_REGS (33) +# ifdef CONFIG_ARM_HAVE_FPU_D32 +# define REG_D16 (ARM_CONTEXT_REGS+32) /* D16 */ +# define REG_D17 (ARM_CONTEXT_REGS+34) /* D17 */ +# define REG_D18 (ARM_CONTEXT_REGS+36) /* D18 */ +# define REG_D19 (ARM_CONTEXT_REGS+38) /* D19 */ +# define REG_D20 (ARM_CONTEXT_REGS+40) /* D20 */ +# define REG_D21 (ARM_CONTEXT_REGS+42) /* D21 */ +# define REG_D22 (ARM_CONTEXT_REGS+44) /* D22 */ +# define REG_D23 (ARM_CONTEXT_REGS+46) /* D23 */ +# define REG_D24 (ARM_CONTEXT_REGS+48) /* D24 */ +# define REG_D25 (ARM_CONTEXT_REGS+50) /* D25 */ +# define REG_D26 (ARM_CONTEXT_REGS+52) /* D26 */ +# define REG_D27 (ARM_CONTEXT_REGS+54) /* D27 */ +# define REG_D28 (ARM_CONTEXT_REGS+56) /* D28 */ +# define REG_D29 (ARM_CONTEXT_REGS+58) /* D29 */ +# define REG_D30 (ARM_CONTEXT_REGS+60) /* D30 */ +# define REG_D31 (ARM_CONTEXT_REGS+62) /* D31 */ +# define REG_FPSCR (ARM_CONTEXT_REGS+64) /* Floating point status and control */ +# define FPU_CONTEXT_REGS (65) +# else +# define REG_FPSCR (ARM_CONTEXT_REGS+32) /* Floating point status and control */ +# define FPU_CONTEXT_REGS (33) +# endif #else # define FPU_CONTEXT_REGS (0) #endif diff --git a/arch/arm/include/armv7-r/irq.h b/arch/arm/include/armv7-r/irq.h index ebb5fddd736..bf502a4a149 100644 --- a/arch/arm/include/armv7-r/irq.h +++ b/arch/arm/include/armv7-r/irq.h @@ -136,8 +136,29 @@ # define REG_D15 (ARM_CONTEXT_REGS+30) /* D15 */ # define REG_S30 (ARM_CONTEXT_REGS+30) /* S30 */ # define REG_S31 (ARM_CONTEXT_REGS+31) /* S31 */ -# define REG_FPSCR (ARM_CONTEXT_REGS+32) /* Floating point status and control */ -# define FPU_CONTEXT_REGS (33) +# ifdef CONFIG_ARM_HAVE_FPU_D32 +# define REG_D16 (ARM_CONTEXT_REGS+32) /* D16 */ +# define REG_D17 (ARM_CONTEXT_REGS+34) /* D17 */ +# define REG_D18 (ARM_CONTEXT_REGS+36) /* D18 */ +# define REG_D19 (ARM_CONTEXT_REGS+38) /* D19 */ +# define REG_D20 (ARM_CONTEXT_REGS+40) /* D20 */ +# define REG_D21 (ARM_CONTEXT_REGS+42) /* D21 */ +# define REG_D22 (ARM_CONTEXT_REGS+44) /* D22 */ +# define REG_D23 (ARM_CONTEXT_REGS+46) /* D23 */ +# define REG_D24 (ARM_CONTEXT_REGS+48) /* D24 */ +# define REG_D25 (ARM_CONTEXT_REGS+50) /* D25 */ +# define REG_D26 (ARM_CONTEXT_REGS+52) /* D26 */ +# define REG_D27 (ARM_CONTEXT_REGS+54) /* D27 */ +# define REG_D28 (ARM_CONTEXT_REGS+56) /* D28 */ +# define REG_D29 (ARM_CONTEXT_REGS+58) /* D29 */ +# define REG_D30 (ARM_CONTEXT_REGS+60) /* D30 */ +# define REG_D31 (ARM_CONTEXT_REGS+62) /* D31 */ +# define REG_FPSCR (ARM_CONTEXT_REGS+64) /* Floating point status and control */ +# define FPU_CONTEXT_REGS (65) +# else +# define REG_FPSCR (ARM_CONTEXT_REGS+32) /* Floating point status and control */ +# define FPU_CONTEXT_REGS (33) +# endif #else # define FPU_CONTEXT_REGS (0) #endif diff --git a/arch/arm/src/armv7-a/arm_fullcontextrestore.S b/arch/arm/src/armv7-a/arm_fullcontextrestore.S index 8f5b26486d4..5d89577bf03 100644 --- a/arch/arm/src/armv7-a/arm_fullcontextrestore.S +++ b/arch/arm/src/armv7-a/arm_fullcontextrestore.S @@ -79,7 +79,12 @@ arm_fullcontextrestore: * s0, s1, ... in increasing address order. */ +#ifdef CONFIG_ARM_HAVE_FPU_D32 + vldmia.64 r1!, {d0-d15} /* Restore the full FP context */ + vldmia.64 r1!, {d16-d31} +#else vldmia r1!, {s0-s31} /* Restore the full FP context */ +#endif /* Load the floating point control and status register. At the end of the * vstmia, r1 will point to the FPCSR storage location. diff --git a/arch/arm/src/armv7-a/arm_restorefpu.S b/arch/arm/src/armv7-a/arm_restorefpu.S index 9e38154adc3..b3eb162a69f 100644 --- a/arch/arm/src/armv7-a/arm_restorefpu.S +++ b/arch/arm/src/armv7-a/arm_restorefpu.S @@ -72,7 +72,12 @@ arm_restorefpu: * s0, s1, ... in increasing address order. */ +#ifdef CONFIG_ARM_HAVE_FPU_D32 + vldmia.64 r1!, {d0-d15} /* Restore the full FP context */ + vldmia.64 r1!, {d16-d31} +#else vldmia r1!, {s0-s31} /* Restore the full FP context */ +#endif /* Load the floating point control and status register. At the end of the * vstmia, r1 will point to the FPCSR storage location. diff --git a/arch/arm/src/armv7-a/arm_savefpu.S b/arch/arm/src/armv7-a/arm_savefpu.S index fa19d8331cf..76ae123a3e0 100644 --- a/arch/arm/src/armv7-a/arm_savefpu.S +++ b/arch/arm/src/armv7-a/arm_savefpu.S @@ -76,7 +76,12 @@ arm_savefpu: * s0, s1, ... in increasing address order. */ +#ifdef CONFIG_ARM_HAVE_FPU_D32 + vstmia.64 r1!, {d0-d15} /* Save the full FP context */ + vstmia.64 r1!, {d16-d31} +#else vstmia r1!, {s0-s31} /* Save the full FP context */ +#endif /* Store the floating point control and status register. At the end of the * vstmia, r1 will point to the FPCSR storage location. diff --git a/arch/arm/src/armv7-a/arm_saveusercontext.S b/arch/arm/src/armv7-a/arm_saveusercontext.S index 71d391088d3..0025cf5a4a1 100644 --- a/arch/arm/src/armv7-a/arm_saveusercontext.S +++ b/arch/arm/src/armv7-a/arm_saveusercontext.S @@ -107,7 +107,12 @@ arm_saveusercontext: * s0, s1, ... in increasing address order. */ +#ifdef CONFIG_ARM_HAVE_FPU_D32 + vstmia.64 r1!, {d0-d15} /* Save the full FP context */ + vstmia.64 r1!, {d16-d31} +#else vstmia r1!, {s0-s31} /* Save the full FP context */ +#endif /* Store the floating point control and status register. At the end of the * vstmia, r1 will point to the FPCSR storage location. diff --git a/arch/arm/src/armv7-r/arm_fullcontextrestore.S b/arch/arm/src/armv7-r/arm_fullcontextrestore.S index b0afd182c40..eaaa302d2b6 100644 --- a/arch/arm/src/armv7-r/arm_fullcontextrestore.S +++ b/arch/arm/src/armv7-r/arm_fullcontextrestore.S @@ -78,7 +78,12 @@ arm_fullcontextrestore: * s0, s1, ... in increasing address order. */ +#ifdef CONFIG_ARM_HAVE_FPU_D32 + vldmia.64 r1!, {d0-d15} /* Restore the full FP context */ + vldmia.64 r1!, {d16-d31} +#else vldmia r1!, {s0-s31} /* Restore the full FP context */ +#endif /* Load the floating point control and status register. At the end of the * vstmia, r1 will point to the FPCSR storage location. diff --git a/arch/arm/src/armv7-r/arm_restorefpu.S b/arch/arm/src/armv7-r/arm_restorefpu.S index 60f12a055a9..0081574a203 100644 --- a/arch/arm/src/armv7-r/arm_restorefpu.S +++ b/arch/arm/src/armv7-r/arm_restorefpu.S @@ -72,7 +72,12 @@ arm_restorefpu: * s0, s1, ... in increasing address order. */ +#ifdef CONFIG_ARM_HAVE_FPU_D32 + vldmia.64 r1!, {d0-d15} /* Restore the full FP context */ + vldmia.64 r1!, {d16-d31} +#else vldmia r1!, {s0-s31} /* Restore the full FP context */ +#endif /* Load the floating point control and status register. At the end of the * vstmia, r1 will point to the FPCSR storage location. diff --git a/arch/arm/src/armv7-r/arm_savefpu.S b/arch/arm/src/armv7-r/arm_savefpu.S index 4daa445b5c5..4234e9146bb 100644 --- a/arch/arm/src/armv7-r/arm_savefpu.S +++ b/arch/arm/src/armv7-r/arm_savefpu.S @@ -76,7 +76,12 @@ arm_savefpu: * s0, s1, ... in increasing address order. */ +#ifdef CONFIG_ARM_HAVE_FPU_D32 + vstmia.64 r1!, {d0-d15} /* Save the full FP context */ + vstmia.64 r1!, {d16-d31} +#else vstmia r1!, {s0-s31} /* Save the full FP context */ +#endif /* Store the floating point control and status register. At the end of the * vstmia, r1 will point to the FPCSR storage location. diff --git a/arch/arm/src/armv7-r/arm_saveusercontext.S b/arch/arm/src/armv7-r/arm_saveusercontext.S index 018d87d9406..a3af7efb1e9 100644 --- a/arch/arm/src/armv7-r/arm_saveusercontext.S +++ b/arch/arm/src/armv7-r/arm_saveusercontext.S @@ -106,7 +106,12 @@ arm_saveusercontext: * s0, s1, ... in increasing address order. */ +#ifdef CONFIG_ARM_HAVE_FPU_D32 + vstmia.64 r1!, {d0-d15} /* Save the full FP context */ + vstmia.64 r1!, {d16-d31} +#else vstmia r1!, {s0-s31} /* Save the full FP context */ +#endif /* Store the floating point control and status register. At the end of the * vstmia, r1 will point to the FPCSR storage location. From 9f9ecffe2e8ade8b18dde9be1c7940838627a26a Mon Sep 17 00:00:00 2001 From: Raman Gopalan Date: Fri, 21 May 2021 13:28:13 +0530 Subject: [PATCH 182/739] ET-STM32 Stamp: An STM32F103RET6 target for NuttX --- boards/Kconfig | 10 ++ boards/arm/stm32/et-stm32-stamp/Kconfig | 26 +++ boards/arm/stm32/et-stm32-stamp/README.txt | 120 ++++++++++++++ .../et-stm32-stamp/configs/nsh/defconfig | 38 +++++ .../arm/stm32/et-stm32-stamp/include/board.h | 149 ++++++++++++++++++ .../stm32/et-stm32-stamp/scripts/Make.defs | 63 ++++++++ .../stm32/et-stm32-stamp/scripts/ld.script | 108 +++++++++++++ boards/arm/stm32/et-stm32-stamp/src/Make.defs | 40 +++++ .../stm32/et-stm32-stamp/src/et-stm32-stamp.h | 57 +++++++ .../stm32/et-stm32-stamp/src/stm32_appinit.c | 63 ++++++++ .../arm/stm32/et-stm32-stamp/src/stm32_boot.c | 61 +++++++ 11 files changed, 735 insertions(+) create mode 100644 boards/arm/stm32/et-stm32-stamp/Kconfig create mode 100644 boards/arm/stm32/et-stm32-stamp/README.txt create mode 100644 boards/arm/stm32/et-stm32-stamp/configs/nsh/defconfig create mode 100644 boards/arm/stm32/et-stm32-stamp/include/board.h create mode 100644 boards/arm/stm32/et-stm32-stamp/scripts/Make.defs create mode 100644 boards/arm/stm32/et-stm32-stamp/scripts/ld.script create mode 100644 boards/arm/stm32/et-stm32-stamp/src/Make.defs create mode 100644 boards/arm/stm32/et-stm32-stamp/src/et-stm32-stamp.h create mode 100644 boards/arm/stm32/et-stm32-stamp/src/stm32_appinit.c create mode 100644 boards/arm/stm32/et-stm32-stamp/src/stm32_boot.c diff --git a/boards/Kconfig b/boards/Kconfig index de620b1f0f5..7b97fb3f8f9 100644 --- a/boards/Kconfig +++ b/boards/Kconfig @@ -250,6 +250,12 @@ config ARCH_BOARD_ESP32C3_DEVKIT The ESP32-C3-DevKitM-1 version contains the ESP32-C3-MINI-1 module and the ESP32-C3-DevKitC-02 version the ESP32-C3-WROOM-02. +config ARCH_BOARD_ET_STM32_STAMP + bool "Futurlec: ET-STM32 Stamp" + depends on ARCH_CHIP_STM32F103RE + ---help--- + The ET-STM32 Stamp features the STM32F103RET6 (Cortex M3) microcontroller. + For board details, see: https://www.futurlec.com/ET-STM32_Stamp.shtml config ARCH_BOARD_EZ80F910200KITG bool "ZiLOG ez80f910200kitg development kit" @@ -2285,6 +2291,7 @@ config ARCH_BOARD default "esp32-ethernet-kit" if ARCH_BOARD_ESP32_ETHERNETKIT default "esp32-wrover-kit" if ARCH_BOARD_ESP32_WROVERKIT default "esp32c3-devkit" if ARCH_BOARD_ESP32C3_DEVKIT + default "et-stm32-stamp" if ARCH_BOARD_ET_STM32_STAMP default "ez80f910200kitg" if ARCH_BOARD_EZ80F910200KITG default "ez80f910200zco" if ARCH_BOARD_EZ80F910200ZCO default "fire-stm32v2" if ARCH_BOARD_FIRE_STM32 @@ -2884,6 +2891,9 @@ endif if ARCH_BOARD_MAPLE source "boards/arm/stm32/maple/Kconfig" endif +if ARCH_BOARD_ET_STM32_STAMP +source "boards/arm/stm32/et-stm32-stamp/Kconfig" +endif if ARCH_BOARD_MIKROE_STM32F4 source "boards/arm/stm32/mikroe-stm32f4/Kconfig" endif diff --git a/boards/arm/stm32/et-stm32-stamp/Kconfig b/boards/arm/stm32/et-stm32-stamp/Kconfig new file mode 100644 index 00000000000..8a0658e8099 --- /dev/null +++ b/boards/arm/stm32/et-stm32-stamp/Kconfig @@ -0,0 +1,26 @@ +# +# For a description of the syntax of this configuration file, +# see the file kconfig-language.txt in the NuttX tools repository. +# + +if ARCH_BOARD_ET_STM32_STAMP + +choice + prompt "Select board type" + default ET_STM32_STAMP if ARCH_CHIP_STM32F103RE + ---help--- + Select the board hosting the architecture. You must first select the + exact MCU part number, then the boards supporting that part will + be available for selection. Use ARCH_BOARD_CUSTOM to create a new + board configuration. + +config ET_STM32_STAMP + bool "ET-STM32 Stamp" + depends on ARCH_CHIP_STM32F103RE + ---help--- + This version is the standard ET-STM32 Stamp board from Futurlec, with + the STM32F103RET6 microcontroller. + +endchoice + +endif diff --git a/boards/arm/stm32/et-stm32-stamp/README.txt b/boards/arm/stm32/et-stm32-stamp/README.txt new file mode 100644 index 00000000000..777bfab5ff1 --- /dev/null +++ b/boards/arm/stm32/et-stm32-stamp/README.txt @@ -0,0 +1,120 @@ +README +====== + +This README discusses issues/thoughts unique to NuttX configuration(s) for the +ET-STM32 Stamp board from Futurlec (https://www.futurlec.com/ET-STM32_Stamp.shtml). + +Microprocessor: 32-bit ARM Cortex M3 at 72MHz STM32F103RET6 +Memory: 512 KB Flash and 64 KB SRAM +I/O Pins Out: 48 +ADCs: 16 (at 12-bit resolution) +DACs: 2 (at 12-bit resolution) +Peripherals: RTC, 4 timers, 2 I2Cs, 3 SPI ports, 1 on-board UART (upto 5 channels) +Other: Sleep, stop, and standby modes; serial wire debug and JTAG interfaces + +Please see link below for board specific details: + + https://www.futurlec.com/ET-STM32_Stamp_Technical.shtml + +This configuration supports the ET-STM32 Stamp module. + +Contents +======== + + - Development Environment + - Flashing/Programming + - Configurations + +Development Environment +======================= + + Either Linux (recommended), Mac or Cygwin on Windows can be used for the development + environment. The source has been built only using the GNU (Cortex M) toolchain. + Other toolchains will likely cause problems. + + WSL (Windows Subsystem for Linux) was used to develop, compile and test the NuttX + build for the ET-STM32 Stamp platform. + +Flashing/Programming +==================== + +Prerequisites: + + 1. The ET-STM32 Stamp module from Futurlec. + + 2. An RS232 connection cable such as the one in this link: (Part code: RS232CONN): + https://www.futurlec.com/DevBoardAccessories.shtml + + It has a 4-pin connection header on one end and an RS-232 (DB9) female connector on + the other. The 4-pin connector can be directly plugged onto the Stamp module. + + 3. An RS232 to USB converter cable. Ensure that a suitable driver is installed for + the converter cable. When the cable is plugged in (for example), my PC lists the + assigned port with this name: "USB-SERIAL CH340 (COM2)". + + Assuming Windows 10, navigate to: This PC -> Manage -> Device Manager -> Ports. + + 4. ST's Flash loader demonstrator tool. You can download it from here: + https://www.st.com/en/development-tools/flasher-stm32.html + +To install the NuttX firmware (nuttx.bin) on the ET-STM32 Stamp: + + 1. First, power the Stamp module with a 3.3 VDC power supply. I made my own + Stamp module fixture using a 3.3 VDC switching regulator, a prototype PCB card + and some solder. + + 2. Insert the RS232CONN into the 4-pin on-board header. The other end should be + connected to the USB port of the PC using the RS232-USB converter. + + 3. Set the BOOT1 jumper on your board to the ISP position. + + 4. Press the BOOT0 switch. The green "BOOT0=1" LED should light up. + + 5. Reset the board by pressing on the RESET button. + + 6. Using the ST Flash loader demonstrator to download the NuttX binary image. + + 7. Wait until programming is completed and press "Finish". Toggle the + BOOT0 switch again. Reset the board. + +You will now be presented with the NuttShell (NSH). Enjoy. + +Configurations +============== + + Information Common to All Configurations + ---------------------------------------- + The ET-STM32 Stamp configuration is maintained in a sub-directory and can be + selected as follow: + + tools/configure.sh et-stm32-stamp: + + Before building, make sure the PATH environment variable includes the + correct path to the directory than holds your toolchain binaries. + + And then build NuttX by simply typing the following. At the conclusion of + the make, the nuttx binary will reside in an ELF file called, simply, nuttx. + + make + + The that is provided above as an argument to the tools/configure.sh + must be in one of the following. + + NOTES: + + 1. These configurations use the mconf-based configuration tool. To + change any of these configurations using that tool, you should: + + a. Build and install the kconfig-mconf tool. See nuttx/README.txt + see additional README.txt files in the NuttX tools repository. + + b. Execute 'make menuconfig' in nuttx/ in order to start the + reconfiguration process. + + Configuration Sub-directories + ----------------------------- + + nsh: + + This configuration directory provide the basic NuttShell (NSH). + A serial console is provided on USART1. diff --git a/boards/arm/stm32/et-stm32-stamp/configs/nsh/defconfig b/boards/arm/stm32/et-stm32-stamp/configs/nsh/defconfig new file mode 100644 index 00000000000..f6c40277448 --- /dev/null +++ b/boards/arm/stm32/et-stm32-stamp/configs/nsh/defconfig @@ -0,0 +1,38 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +CONFIG_ARCH="arm" +CONFIG_ARCH_BOARD="et-stm32-stamp" +CONFIG_ARCH_BOARD_ET_STM32_STAMP=y +CONFIG_ARCH_CHIP="stm32" +CONFIG_ARCH_CHIP_STM32=y +CONFIG_ARCH_CHIP_STM32F103RE=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARD_LOOPSPERMSEC=5483 +CONFIG_BUILTIN=y +CONFIG_DEFAULT_SMALL=y +CONFIG_LIB_RAND_ORDER=2 +CONFIG_MAX_TASKS=16 +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=1024 +CONFIG_NSH_LINELEN=80 +CONFIG_PREALLOC_TIMERS=4 +CONFIG_PTHREAD_STACK_DEFAULT=1024 +CONFIG_RAM_SIZE=20480 +CONFIG_RAM_START=0x20000000 +CONFIG_RAW_BINARY=y +CONFIG_RR_INTERVAL=200 +CONFIG_SDCLONE_DISABLE=y +CONFIG_START_DAY=23 +CONFIG_START_MONTH=10 +CONFIG_START_YEAR=2009 +CONFIG_STM32_USART1=y +CONFIG_SYMTAB_ORDEREDBYNAME=y +CONFIG_SYSTEM_NSH=y +CONFIG_TASK_NAME_SIZE=0 +CONFIG_USART1_SERIAL_CONSOLE=y +CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/arm/stm32/et-stm32-stamp/include/board.h b/boards/arm/stm32/et-stm32-stamp/include/board.h new file mode 100644 index 00000000000..d475bd9b776 --- /dev/null +++ b/boards/arm/stm32/et-stm32-stamp/include/board.h @@ -0,0 +1,149 @@ +/**************************************************************************** + * boards/arm/stm32/et-stm32-stamp/include/board.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __BOARDS_ARM_STM32_ET_STM32_STAMP_INCLUDE_BOARD_H +#define __BOARDS_ARM_STM32_ET_STM32_STAMP_INCLUDE_BOARD_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#ifndef __ASSEMBLY__ +# include +#endif +#include "stm32_rcc.h" +#include "stm32_sdio.h" +#include "stm32.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Clocking *****************************************************************/ + +/* On-board crystal frequency is 8MHz (HSE) */ + +#define STM32_BOARD_XTAL 8000000ul + +/* PLL source is HSE/1, PLL multipler is 9: + * PLL frequency is 8MHz (XTAL) x 9 = 72MHz + */ + +#define STM32_CFGR_PLLSRC RCC_CFGR_PLLSRC +#define STM32_CFGR_PLLXTPRE 0 +#define STM32_CFGR_PLLMUL RCC_CFGR_PLLMUL_CLKx9 +#define STM32_PLL_FREQUENCY (9*STM32_BOARD_XTAL) + +/* Use the PLL and set the SYSCLK source to be the PLL */ + +#define STM32_SYSCLK_SW RCC_CFGR_SW_PLL +#define STM32_SYSCLK_SWS RCC_CFGR_SWS_PLL +#define STM32_SYSCLK_FREQUENCY STM32_PLL_FREQUENCY + +/* AHB clock (HCLK) is SYSCLK (72MHz) */ + +#define STM32_RCC_CFGR_HPRE RCC_CFGR_HPRE_SYSCLK +#define STM32_HCLK_FREQUENCY STM32_PLL_FREQUENCY + +/* APB2 clock (PCLK2) is HCLK (72MHz) */ + +#define STM32_RCC_CFGR_PPRE2 RCC_CFGR_PPRE2_HCLK +#define STM32_PCLK2_FREQUENCY STM32_HCLK_FREQUENCY + +/* APB2 timers 1 and 8 will receive PCLK2. */ + +#define STM32_APB2_TIM1_CLKIN (STM32_PCLK2_FREQUENCY) +#define STM32_APB2_TIM8_CLKIN (STM32_PCLK2_FREQUENCY) + +/* APB1 clock (PCLK1) is HCLK/2 (36MHz) */ + +#define STM32_RCC_CFGR_PPRE1 RCC_CFGR_PPRE1_HCLKd2 +#define STM32_PCLK1_FREQUENCY (STM32_HCLK_FREQUENCY/2) + +/* APB1 timers 2-7 will be twice PCLK1 */ + +#define STM32_APB1_TIM2_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM3_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM4_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM5_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM6_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB1_TIM7_CLKIN (2*STM32_PCLK1_FREQUENCY) + +/* Timer Frequencies, if APBx is set to 1, frequency is same to APBx + * otherwise frequency is 2xAPBx. + * Note: TIM1,8 are on APB2, others on APB1 + */ + +#define BOARD_TIM1_FREQUENCY STM32_HCLK_FREQUENCY +#define BOARD_TIM2_FREQUENCY STM32_HCLK_FREQUENCY +#define BOARD_TIM3_FREQUENCY STM32_HCLK_FREQUENCY +#define BOARD_TIM4_FREQUENCY STM32_HCLK_FREQUENCY +#define BOARD_TIM5_FREQUENCY STM32_HCLK_FREQUENCY +#define BOARD_TIM6_FREQUENCY STM32_HCLK_FREQUENCY +#define BOARD_TIM7_FREQUENCY STM32_HCLK_FREQUENCY +#define BOARD_TIM8_FREQUENCY STM32_HCLK_FREQUENCY + +/* SDIO dividers. Note that slower clocking is required when DMA is disabled + * in order to avoid RX overrun/TX underrun errors due to delayed responses + * to service FIFOs in interrupt driven mode. These values have not been + * tuned!!! + * + * HCLK=72MHz, SDIOCLK=72MHz, SDIO_CK=HCLK/(178+2)=400 KHz + */ + +#define SDIO_INIT_CLKDIV (178 << SDIO_CLKCR_CLKDIV_SHIFT) + +/* DMA ON: HCLK=72 MHz, SDIOCLK=72MHz, SDIO_CK=HCLK/(2+2)=18 MHz + * DMA OFF: HCLK=72 MHz, SDIOCLK=72MHz, SDIO_CK=HCLK/(3+2)=14.4 MHz + */ + +#ifdef CONFIG_SDIO_DMA +# define SDIO_MMCXFR_CLKDIV (2 << SDIO_CLKCR_CLKDIV_SHIFT) +#else +# define SDIO_MMCXFR_CLKDIV (3 << SDIO_CLKCR_CLKDIV_SHIFT) +#endif + +/* DMA ON: HCLK=72 MHz, SDIOCLK=72MHz, SDIO_CK=HCLK/(1+2)=24 MHz + * DMA OFF: HCLK=72 MHz, SDIOCLK=72MHz, SDIO_CK=HCLK/(3+2)=14.4 MHz + */ + +#ifdef CONFIG_SDIO_DMA +# define SDIO_SDXFR_CLKDIV (1 << SDIO_CLKCR_CLKDIV_SHIFT) +#else +# define SDIO_SDXFR_CLKDIV (3 << SDIO_CLKCR_CLKDIV_SHIFT) +#endif + +/* LED definitions **********************************************************/ + +/* The ET-STM32 Stamp doesn't have an on-board LED. These innocent macros + * can still be here. + */ + +#define LED_STARTED 0 /* No LEDs */ +#define LED_HEAPALLOCATE 1 /* LED1 on */ +#define LED_IRQSENABLED 2 /* LED2 on */ +#define LED_STACKCREATED 3 /* LED1 on */ +#define LED_INIRQ 4 /* LED1 off */ +#define LED_SIGNAL 5 /* LED2 on */ +#define LED_ASSERTION 6 /* LED1 + LED2 */ +#define LED_PANIC 7 /* LED1 / LED2 blinking */ + +#endif /* __BOARDS_ARM_STM32_ET_STM32_STAMP_INCLUDE_BOARD_H */ diff --git a/boards/arm/stm32/et-stm32-stamp/scripts/Make.defs b/boards/arm/stm32/et-stm32-stamp/scripts/Make.defs new file mode 100644 index 00000000000..27cc33a3c03 --- /dev/null +++ b/boards/arm/stm32/et-stm32-stamp/scripts/Make.defs @@ -0,0 +1,63 @@ +############################################################################ +# boards/arm/stm32/et-stm32-stamp/scripts/Make.defs +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +############################################################################ + +include $(TOPDIR)/.config +include $(TOPDIR)/tools/Config.mk +include $(TOPDIR)/arch/arm/src/armv7-m/Toolchain.defs + +LDSCRIPT = ld.script + +ifeq ($(CONFIG_CYGWIN_WINTOOL),y) + ARCHSCRIPT = -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT)}" +else + ARCHSCRIPT = -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT) +endif + +ifneq ($(CONFIG_DEBUG_NOOPT),y) + ARCHOPTIMIZATION += $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer +endif + +ifeq ($(CONFIG_DEBUG_SYMBOLS),y) + ARCHOPTIMIZATION += -g +endif + +ARCHCFLAGS = -fno-builtin +ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fcheck-new +ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow -Wundef +ARCHWARNINGSXX = -Wall -Wshadow -Wundef +ARCHPICFLAGS = -fpic -msingle-pic-base -mpic-register=r10 + +CFLAGS := $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe +CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS) +CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe +CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS) +CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) +AFLAGS := $(CFLAGS) -D__ASSEMBLY__ + +NXFLATLDFLAGS1 = -r -d -warn-common +NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-pcrel.ld -no-check-sections +LDNXFLATFLAGS = -e main -s 2048 + +ifneq ($(CROSSDEV),arm-nuttx-elf-) + LDFLAGS += -nostartfiles -nodefaultlibs +endif +ifeq ($(CONFIG_DEBUG_SYMBOLS),y) + LDFLAGS += -g +endif diff --git a/boards/arm/stm32/et-stm32-stamp/scripts/ld.script b/boards/arm/stm32/et-stm32-stamp/scripts/ld.script new file mode 100644 index 00000000000..b0b307a478e --- /dev/null +++ b/boards/arm/stm32/et-stm32-stamp/scripts/ld.script @@ -0,0 +1,108 @@ +/**************************************************************************** + * boards/arm/stm32/et-stm32-stamp/scripts/ld.script + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * + ****************************************************************************/ + +/* The STM32F103RE has 512Kb of FLASH beginning at address 0x0800:0000 and + * 64Kb of SRAM beginning at address 0x2000:0000. When booting from FLASH, + * FLASH memory is aliased to address 0x0000:0000 where the code expects to + * begin execution by jumping to the entry point in the 0x0800:0000 address + * range. + */ + +MEMORY +{ + flash (rx) : ORIGIN = 0x08000000, LENGTH = 512K + sram (rwx) : ORIGIN = 0x20000000, LENGTH = 64K +} + +OUTPUT_ARCH(arm) +EXTERN(_vectors) +ENTRY(_stext) +SECTIONS +{ + .text : { + _stext = ABSOLUTE(.); + *(.vectors) + *(.text .text.*) + *(.fixup) + *(.gnu.warning) + *(.rodata .rodata.*) + *(.gnu.linkonce.t.*) + *(.glue_7) + *(.glue_7t) + *(.got) + *(.gcc_except_table) + *(.gnu.linkonce.r.*) + _etext = ABSOLUTE(.); + } > flash + + .init_section : ALIGN(4) { + _sinit = ABSOLUTE(.); + *(.init_array .init_array.*) + _einit = ABSOLUTE(.); + } > flash + + .ARM.extab : ALIGN(4) { + *(.ARM.extab*) + } > flash + + .ARM.exidx : ALIGN(4) { + __exidx_start = ABSOLUTE(.); + *(.ARM.exidx*) + __exidx_end = ABSOLUTE(.); + } > flash + + _eronly = ABSOLUTE(.); + + /* The STM32F103RET6 has 64Kb of SRAM beginning at the following address */ + + .data : ALIGN(4) { + _sdata = ABSOLUTE(.); + *(.data .data.*) + *(.gnu.linkonce.d.*) + CONSTRUCTORS + . = ALIGN(4); + _edata = ABSOLUTE(.); + } > sram AT > flash + + .bss : ALIGN(4) { + _sbss = ABSOLUTE(.); + *(.bss .bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + . = ALIGN(4); + _ebss = ABSOLUTE(.); + } > sram + + /* Stabs debugging sections. */ + + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_info 0 : { *(.debug_info) } + .debug_line 0 : { *(.debug_line) } + .debug_pubnames 0 : { *(.debug_pubnames) } + .debug_aranges 0 : { *(.debug_aranges) } +} diff --git a/boards/arm/stm32/et-stm32-stamp/src/Make.defs b/boards/arm/stm32/et-stm32-stamp/src/Make.defs new file mode 100644 index 00000000000..11ef7edce3f --- /dev/null +++ b/boards/arm/stm32/et-stm32-stamp/src/Make.defs @@ -0,0 +1,40 @@ +############################################################################ +# boards/arm/stm32/et-stm32-stamp/src/Make.defs +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +############################################################################ + +include $(TOPDIR)/Make.defs + +CSRCS = stm32_boot.c + +ifeq ($(CONFIG_LIB_BOARDCTL),y) +endif + +ifeq ($(CONFIG_INPUT),y) +endif + +ifeq ($(CONFIG_USBMSC),y) +endif + +ifeq ($(CONFIG_LIB_BOARDCTL),y) +CSRCS += stm32_appinit.c +endif + +DEPPATH += --dep-path board +VPATH += :board +CFLAGS += $(shell $(INCDIR) "$(CC)" $(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)src$(DELIM)board$(DELIM)board) diff --git a/boards/arm/stm32/et-stm32-stamp/src/et-stm32-stamp.h b/boards/arm/stm32/et-stm32-stamp/src/et-stm32-stamp.h new file mode 100644 index 00000000000..60a96085952 --- /dev/null +++ b/boards/arm/stm32/et-stm32-stamp/src/et-stm32-stamp.h @@ -0,0 +1,57 @@ +/**************************************************************************** + * boards/arm/stm32/et-stm32-stamp/src/et-stm32-stamp.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __BOARDS_ARM_STM32_ET_STM32_STAMP_SRC_ET_STM32_STAMP_H +#define __BOARDS_ARM_STM32_ET_STM32_STAMP_SRC_ET_STM32_STAMP_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include + +#include + +#include + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* The ET-STM32 Stamp target doesn't have any configurable LEDs OR buttons. + */ + +/**************************************************************************** + * Public Types + ****************************************************************************/ + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +#ifndef __ASSEMBLY__ + +/**************************************************************************** + * Public Functions Definitions + ****************************************************************************/ + +#endif /* __ASSEMBLY__ */ +#endif /* __BOARDS_ARM_STM32_ET_STM32_STAMP_SRC_ET_STM32_STAMP_H */ diff --git a/boards/arm/stm32/et-stm32-stamp/src/stm32_appinit.c b/boards/arm/stm32/et-stm32-stamp/src/stm32_appinit.c new file mode 100644 index 00000000000..9d9be7e3bee --- /dev/null +++ b/boards/arm/stm32/et-stm32-stamp/src/stm32_appinit.c @@ -0,0 +1,63 @@ +/**************************************************************************** + * boards/arm/stm32/et-stm32-stamp/src/stm32_appinit.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include + +#include + +#include "et-stm32-stamp.h" + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: board_app_initialize + * + * Description: + * Perform architecture specific initialization + * + * Input Parameters: + * arg - The boardctl() argument is passed to the board_app_initialize() + * implementation without modification. The argument has no + * meaning to NuttX; the meaning of the argument is a contract + * between the board-specific initialization logic and the + * matching application logic. The value could be such things as a + * mode enumeration value, a set of DIP switch switch settings, a + * pointer to configuration data read from a file or serial FLASH, + * or whatever you would like to do with it. Every implementation + * should accept zero/NULL as a default configuration. + * + * Returned Value: + * Zero (OK) is returned on success; a negated errno value is returned on + * any failure to indicate the nature of the failure. + * + ****************************************************************************/ + +int board_app_initialize(uintptr_t arg) +{ + return OK; +} diff --git a/boards/arm/stm32/et-stm32-stamp/src/stm32_boot.c b/boards/arm/stm32/et-stm32-stamp/src/stm32_boot.c new file mode 100644 index 00000000000..089c5428f81 --- /dev/null +++ b/boards/arm/stm32/et-stm32-stamp/src/stm32_boot.c @@ -0,0 +1,61 @@ +/**************************************************************************** + * boards/arm/stm32/et-stm32-stamp/src/stm32_boot.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include +#include + +#include +#include + +#include "arm_arch.h" +#include "et-stm32-stamp.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: stm32_boardinitialize + * + * Description: + * All STM32 architectures must provide the following entry point. This + * entry point is called early in the initialization -- after all memory + * has been configured and mapped but before any devices have been + * initialized. + * + ****************************************************************************/ + +void stm32_boardinitialize(void) +{ + /* Empty for now. */ +} From a876f0253a83c4374c6901e0b3eb7ef3417ec1ad Mon Sep 17 00:00:00 2001 From: "chao.an" Date: Tue, 18 May 2021 20:30:11 +0800 Subject: [PATCH 183/739] net/tcp: recounter the ack counter during obtain newdata Signed-off-by: chao.an --- net/tcp/tcp_send_buffered.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/net/tcp/tcp_send_buffered.c b/net/tcp/tcp_send_buffered.c index a4c4777aa96..5451c78c681 100644 --- a/net/tcp/tcp_send_buffered.c +++ b/net/tcp/tcp_send_buffered.c @@ -487,6 +487,13 @@ static uint16_t psock_send_eventhandler(FAR struct net_driver_s *dev, } else if (ackno == TCP_WBSEQNO(wrb)) { + /* Reset the duplicate ack counter */ + + if ((flags & TCP_NEWDATA) != 0) + { + TCP_WBNACK(wrb) = 0; + } + /* Duplicate ACK? Retransmit data if need */ if (++TCP_WBNACK(wrb) == From bb9b58bddea2d7e188edbecfbbf38f420c2d5ad9 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Mon, 29 Jun 2020 08:26:29 -0600 Subject: [PATCH 184/739] libc: Move pthread_create to user space Signed-off-by: Huang Qi Change-Id: I5c447d94077debc79158686935f288e4c8e51e01 --- arch/arm/src/armv6-m/arm_svcall.c | 12 +-- arch/arm/src/armv6-m/svcall.h | 21 +++-- arch/arm/src/armv7-a/arm_syscall.c | 12 +-- arch/arm/src/armv7-a/svcall.h | 20 +++-- arch/arm/src/armv7-m/arm_svcall.c | 12 +-- arch/arm/src/armv7-m/svcall.h | 20 +++-- arch/arm/src/armv7-r/arm_syscall.c | 6 +- arch/arm/src/armv7-r/svcall.h | 20 +++-- arch/arm/src/armv8-m/arm_svcall.c | 10 +-- arch/arm/src/armv8-m/svcall.h | 20 +++-- arch/arm/src/common/arm_pthread_start.c | 11 ++- arch/or1k/src/common/up_pthread_start.c | 6 +- arch/risc-v/src/common/riscv_pthread_start.c | 9 +- arch/risc-v/src/rv64gc/riscv_swint.c | 12 +-- arch/risc-v/src/rv64gc/svcall.h | 21 +++-- .../imxrt1050-evk/kernel/imxrt_userspace.c | 3 - .../imxrt1060-evk/kernel/imxrt_userspace.c | 3 - .../kernel/lc823450_userspace.c | 3 - .../kernel/lpc17_40_userspace.c | 3 - .../kernel/lpc17_40_userspace.c | 3 - .../open1788/kernel/lpc17_40_userspace.c | 3 - .../pnev5180b/kernel/lpc17_40_userspace.c | 3 - .../bambino-200e/kernel/lpc43_userspace.c | 3 - .../arm/sam34/sam3u-ek/kernel/sam_userspace.c | 3 - .../same70-xplained/kernel/sam_userspace.c | 3 - .../samv7/samv71-xult/kernel/sam_userspace.c | 3 - .../clicker2-stm32/kernel/stm32_userspace.c | 3 - .../mikroe-stm32f4/kernel/stm32_userspace.c | 3 - .../kernel/stm32_userspace.c | 3 - .../stm32/omnibusf4/kernel/stm32_userspace.c | 3 - .../stm3240g-eval/kernel/stm32_userspace.c | 3 - .../stm32f4discovery/kernel/stm32_userspace.c | 3 - .../stm32f746g-disco/kernel/stm32_userspace.c | 3 - .../stm32f769i-disco/kernel/stm32_userspace.c | 3 - .../nucleo-h743zi/kernel/stm32_userspace.c | 3 - .../stm32h747i-disco/kernel/stm32_userspace.c | 3 - .../kernel/stm32l4_userspace.c | 3 - .../kernel/stm32l4_userspace.c | 3 - .../tiva/lm3s6965-ek/kernel/lm_userspace.c | 3 - .../k210/maix-bit/kernel/k210_userspace.c | 3 - include/nuttx/arch.h | 6 +- include/nuttx/pthread.h | 30 ++++++- include/nuttx/sched.h | 1 + include/nuttx/userspace.h | 26 +----- include/pthread.h | 2 + include/sys/syscall_lookup.h | 2 +- libs/libc/pthread/Make.defs | 14 ++- .../{pthread_startup.c => pthread_create.c} | 88 +++++++++---------- sched/pthread/pthread_create.c | 50 ++++++----- syscall/syscall.csv | 2 +- 50 files changed, 239 insertions(+), 269 deletions(-) rename libs/libc/pthread/{pthread_startup.c => pthread_create.c} (57%) diff --git a/arch/arm/src/armv6-m/arm_svcall.c b/arch/arm/src/armv6-m/arm_svcall.c index d7b5430c9d8..0339cccd13e 100644 --- a/arch/arm/src/armv6-m/arm_svcall.c +++ b/arch/arm/src/armv6-m/arm_svcall.c @@ -310,22 +310,22 @@ int arm_svcall(int irq, FAR void *context, FAR void *arg) * R2 = arg */ -#if defined(CONFIG_BUILD_PROTECTED) && !defined(CONFIG_DISABLE_PTHREAD) +#if !defined(CONFIG_BUILD_FLAT) && !defined(CONFIG_DISABLE_PTHREAD) case SYS_pthread_start: { /* Set up to return to the user-space pthread start-up function in * unprivileged mode. */ - regs[REG_PC] = (uint32_t)USERSPACE->pthread_startup; + regs[REG_PC] = (uint32_t)regs[REG_R1]; /* startup */ regs[REG_EXC_RETURN] = EXC_RETURN_UNPRIVTHR; - /* Change the parameter ordering to match the expectation of struct - * userpace_s pthread_startup: + /* Change the parameter ordering to match the expectation of the + * user space pthread_startup: */ - regs[REG_R0] = regs[REG_R1]; /* pthread entry */ - regs[REG_R1] = regs[REG_R2]; /* arg */ + regs[REG_R0] = regs[REG_R2]; /* pthread entry */ + regs[REG_R1] = regs[REG_R3]; /* arg */ } break; #endif diff --git a/arch/arm/src/armv6-m/svcall.h b/arch/arm/src/armv6-m/svcall.h index 7f2f45f5592..a790f58d4d9 100644 --- a/arch/arm/src/armv6-m/svcall.h +++ b/arch/arm/src/armv6-m/svcall.h @@ -89,6 +89,7 @@ #define SYS_syscall_return (3) +#ifndef CONFIG_BUILD_FLAT #ifdef CONFIG_BUILD_PROTECTED /* SYS call 4: * @@ -98,15 +99,6 @@ #define SYS_task_start (4) -/* SYS call 5: - * - * void up_pthread_start(pthread_startroutine_t entrypt, - * pthread_addr_t arg) - * noreturn_function - */ - -#define SYS_pthread_start (5) - /* SYS call 6: * * void signal_handler(_sa_sigaction_t sighand, int signo, @@ -124,6 +116,17 @@ #define SYS_signal_handler_return (7) #endif /* CONFIG_BUILD_PROTECTED */ + +/* SYS call 5: + * + * void up_pthread_start(pthread_startroutine_t startup, + * pthread_startroutine_t entrypt, pthread_addr_t arg) + * noreturn_function + */ + +#define SYS_pthread_start (5) + +#endif /* !CONFIG_BUILD_FLAT */ #endif /* CONFIG_LIB_SYSCALL */ /**************************************************************************** diff --git a/arch/arm/src/armv7-a/arm_syscall.c b/arch/arm/src/armv7-a/arm_syscall.c index ea6b31ee18d..e71a6b0457f 100644 --- a/arch/arm/src/armv7-a/arm_syscall.c +++ b/arch/arm/src/armv7-a/arm_syscall.c @@ -290,19 +290,21 @@ uint32_t *arm_syscall(uint32_t *regs) * R2 = arg */ -#if defined(CONFIG_BUILD_KERNEL) && !defined(CONFIG_DISABLE_PTHREAD) +#if !defined(CONFIG_BUILD_FLAT) && !defined(CONFIG_DISABLE_PTHREAD) case SYS_pthread_start: { /* Set up to return to the user-space pthread start-up function in * unprivileged mode. We need: * - * R0 = arg - * PC = entrypt + * R0 = entrypt + * R1 = arg + * PC = startup * CSPR = user mode */ - regs[REG_PC] = regs[REG_R1]; - regs[REG_R0] = regs[REG_R2]; + regs[REG_PC] = regs[REG_R0]; + regs[REG_R0] = regs[REG_R1]; + regs[REG_R1] = regs[REG_R2]; cpsr = regs[REG_CPSR] & ~PSR_MODE_MASK; regs[REG_CPSR] = cpsr | PSR_MODE_USR; diff --git a/arch/arm/src/armv7-a/svcall.h b/arch/arm/src/armv7-a/svcall.h index f0bb70013b2..27dc8755108 100644 --- a/arch/arm/src/armv7-a/svcall.h +++ b/arch/arm/src/armv7-a/svcall.h @@ -65,6 +65,7 @@ #define SYS_syscall_return (0) +#ifndef CONFIG_BUILD_FLAT #ifdef CONFIG_BUILD_KERNEL /* SYS call 1: * @@ -81,14 +82,6 @@ #define SYS_task_start (2) -/* SYS call 3: - * - * void up_pthread_start(pthread_startroutine_t entrypt, pthread_addr_t arg) - * noreturn_function - */ - -#define SYS_pthread_start (3) - /* SYS call 4: * * void signal_handler(_sa_sigaction_t sighand, @@ -105,6 +98,17 @@ #define SYS_signal_handler_return (5) +#endif /* !CONFIG_BUILD_FLAT */ + +/* SYS call 3: + * + * void up_pthread_start(pthread_startroutine_t startup, + * pthread_startroutine_t entrypt, pthread_addr_t arg) + * noreturn_function + */ + +#define SYS_pthread_start (3) + #endif /* CONFIG_BUILD_KERNEL */ /**************************************************************************** diff --git a/arch/arm/src/armv7-m/arm_svcall.c b/arch/arm/src/armv7-m/arm_svcall.c index 2112ea794a5..6119ee62971 100644 --- a/arch/arm/src/armv7-m/arm_svcall.c +++ b/arch/arm/src/armv7-m/arm_svcall.c @@ -324,22 +324,22 @@ int arm_svcall(int irq, FAR void *context, FAR void *arg) * R2 = arg */ -#if defined(CONFIG_BUILD_PROTECTED) && !defined(CONFIG_DISABLE_PTHREAD) +#if !defined(CONFIG_BUILD_FLAT) && !defined(CONFIG_DISABLE_PTHREAD) case SYS_pthread_start: { /* Set up to return to the user-space pthread start-up function in * unprivileged mode. */ - regs[REG_PC] = (uint32_t)USERSPACE->pthread_startup & ~1; + regs[REG_PC] = (uint32_t)regs[REG_R1] & ~1; /* startup */ regs[REG_EXC_RETURN] = EXC_RETURN_UNPRIVTHR; - /* Change the parameter ordering to match the expectation of struct - * userpace_s pthread_startup: + /* Change the parameter ordering to match the expectation of the + * user space pthread_startup: */ - regs[REG_R0] = regs[REG_R1]; /* pthread entry */ - regs[REG_R1] = regs[REG_R2]; /* arg */ + regs[REG_R0] = regs[REG_R2]; /* pthread entry */ + regs[REG_R1] = regs[REG_R3]; /* arg */ } break; #endif diff --git a/arch/arm/src/armv7-m/svcall.h b/arch/arm/src/armv7-m/svcall.h index 9f3b9776a4f..98a574e8701 100644 --- a/arch/arm/src/armv7-m/svcall.h +++ b/arch/arm/src/armv7-m/svcall.h @@ -81,6 +81,7 @@ #define SYS_switch_context (2) +#ifndef CONFIG_BUILD_FLAT #ifdef CONFIG_LIB_SYSCALL /* SYS call 3: * @@ -98,14 +99,6 @@ #define SYS_task_start (4) -/* SYS call 5: - * - * void up_pthread_start(pthread_startroutine_t entrypt, pthread_addr_t arg) - * noreturn_function - */ - -#define SYS_pthread_start (5) - /* SYS call 6: * * void signal_handler(_sa_sigaction_t sighand, @@ -123,6 +116,17 @@ #define SYS_signal_handler_return (7) #endif /* CONFIG_BUILD_PROTECTED */ + +/* SYS call 5: + * + * void up_pthread_start((pthread_startroutine_t startup, + * pthread_startroutine_t entrypt, pthread_addr_t arg) + * noreturn_function + */ + +#define SYS_pthread_start (5) + +#endif /* !CONFIG_BUILD_FLAT */ #endif /* CONFIG_LIB_SYSCALL */ /**************************************************************************** diff --git a/arch/arm/src/armv7-r/arm_syscall.c b/arch/arm/src/armv7-r/arm_syscall.c index ff49468682d..ea827bf8932 100644 --- a/arch/arm/src/armv7-r/arm_syscall.c +++ b/arch/arm/src/armv7-r/arm_syscall.c @@ -285,19 +285,21 @@ uint32_t *arm_syscall(uint32_t *regs) * R2 = arg */ -#if defined(CONFIG_BUILD_PROTECTED) && !defined(CONFIG_DISABLE_PTHREAD) +#if !defined(CONFIG_BUILD_FLAT) && !defined(CONFIG_DISABLE_PTHREAD) case SYS_pthread_start: { /* Set up to return to the user-space pthread start-up function in * unprivileged mode. We need: * - * R0 = arg + * R0 = startup + * R1 = arg * PC = entrypt * CSPR = user mode */ regs[REG_PC] = regs[REG_R1]; regs[REG_R0] = regs[REG_R2]; + regs[REG_R1] = regs[REG_R3]; cpsr = regs[REG_CPSR] & ~PSR_MODE_MASK; regs[REG_CPSR] = cpsr | PSR_MODE_USR; diff --git a/arch/arm/src/armv7-r/svcall.h b/arch/arm/src/armv7-r/svcall.h index ffd87371341..2470da7e5d9 100644 --- a/arch/arm/src/armv7-r/svcall.h +++ b/arch/arm/src/armv7-r/svcall.h @@ -66,6 +66,7 @@ #define SYS_syscall_return (0) +#ifndef CONFIG_BUILD_FLAT #ifdef CONFIG_BUILD_PROTECTED /* SYS call 1: * @@ -82,14 +83,6 @@ #define SYS_task_start (2) -/* SYS call 3: - * - * void up_pthread_start(pthread_startroutine_t entrypt, pthread_addr_t arg) - * noreturn_function - */ - -#define SYS_pthread_start (3) - /* SYS call 4: * * void signal_handler(_sa_sigaction_t sighand, int signo, @@ -108,6 +101,17 @@ #endif /* CONFIG_BUILD_PROTECTED */ +/* SYS call 3: + * + * void up_pthread_start(pthread_startroutine_t startup, + * pthread_startroutine_t entrypt, pthread_addr_t arg) + * noreturn_function + */ + +#define SYS_pthread_start (3) + +#endif /* !CONFIG_BUILD_FLAT */ + /**************************************************************************** * Inline Functions ****************************************************************************/ diff --git a/arch/arm/src/armv8-m/arm_svcall.c b/arch/arm/src/armv8-m/arm_svcall.c index ed28937e1b5..f0757c77128 100644 --- a/arch/arm/src/armv8-m/arm_svcall.c +++ b/arch/arm/src/armv8-m/arm_svcall.c @@ -323,21 +323,21 @@ int arm_svcall(int irq, FAR void *context, FAR void *arg) * R2 = arg */ -#if defined(CONFIG_BUILD_PROTECTED) && !defined(CONFIG_DISABLE_PTHREAD) +#if !defined(CONFIG_BUILD_FLAT) && !defined(CONFIG_DISABLE_PTHREAD) case SYS_pthread_start: { /* Set up to return to the user-space pthread start-up function in * unprivileged mode. */ - regs[REG_PC] = (uint32_t)USERSPACE->pthread_startup & ~1; + regs[REG_PC] = (uint32_t)regs[REG_R1] & ~1; /* startup */ regs[REG_EXC_RETURN] = EXC_RETURN_UNPRIVTHR; - /* Change the parameter ordering to match the expectation of struct - * userpace_s pthread_startup: + /* Change the parameter ordering to match the expectation of the + * user space pthread_startup: */ - regs[REG_R0] = regs[REG_R1]; /* pthread entry */ + regs[REG_R0] = regs[REG_R2]; /* pthread entry */ regs[REG_R1] = regs[REG_R2]; /* arg */ } break; diff --git a/arch/arm/src/armv8-m/svcall.h b/arch/arm/src/armv8-m/svcall.h index 77a1f9257eb..7213084634f 100644 --- a/arch/arm/src/armv8-m/svcall.h +++ b/arch/arm/src/armv8-m/svcall.h @@ -88,6 +88,7 @@ #define SYS_syscall_return (3) +#ifndef CONFIG_BUILD_FLAT #ifdef CONFIG_BUILD_PROTECTED /* SYS call 4: * @@ -97,14 +98,6 @@ #define SYS_task_start (4) -/* SYS call 5: - * - * void up_pthread_start(pthread_startroutine_t entrypt, pthread_addr_t arg) - * noreturn_function - */ - -#define SYS_pthread_start (5) - /* SYS call 6: * * void signal_handler(_sa_sigaction_t sighand, @@ -122,6 +115,17 @@ #define SYS_signal_handler_return (7) #endif /* CONFIG_BUILD_PROTECTED */ + +/* SYS call 5: + * + * void up_pthread_start(pthread_startroutine_t startup, + * pthread_startroutine_t entrypt, pthread_addr_t arg) + * noreturn_function + */ + +#define SYS_pthread_start (5) + +#endif /* !CONFIG_BUILD_FLAT */ #endif /* CONFIG_LIB_SYSCALL */ /**************************************************************************** diff --git a/arch/arm/src/common/arm_pthread_start.c b/arch/arm/src/common/arm_pthread_start.c index f96c4a5d7a1..7e7e8e7d8f4 100644 --- a/arch/arm/src/common/arm_pthread_start.c +++ b/arch/arm/src/common/arm_pthread_start.c @@ -47,9 +47,10 @@ * pthread. * * Normally the a user-mode start-up stub will also execute before the - * pthread actually starts. See libc/pthread/pthread_startup.c + * pthread actually starts. See libc/pthread/pthread_create.c * * Input Parameters: + * startup - The user-space pthread startup function * entrypt - The user-space address of the pthread entry point * arg - Standard argument for the pthread entry point * @@ -60,11 +61,13 @@ * ****************************************************************************/ -void up_pthread_start(pthread_startroutine_t entrypt, pthread_addr_t arg) +void up_pthread_start(pthread_trampoline_t startup, + pthread_startroutine_t entrypt, pthread_addr_t arg) { - /* Let sys_call2() do all of the work */ + /* Let sys_call3() do all of the work */ - sys_call2(SYS_pthread_start, (uintptr_t)entrypt, (uintptr_t)arg); + sys_call3(SYS_pthread_start, (uintptr_t)startup, (uintptr_t)entrypt, + (uintptr_t)arg); PANIC(); } diff --git a/arch/or1k/src/common/up_pthread_start.c b/arch/or1k/src/common/up_pthread_start.c index f32c4bb1c90..8edbd0632ef 100644 --- a/arch/or1k/src/common/up_pthread_start.c +++ b/arch/or1k/src/common/up_pthread_start.c @@ -47,9 +47,10 @@ * pthread. * * Normally the a user-mode start-up stub will also execute before the - * pthread actually starts. See libc/pthread/pthread_startup.c + * pthread actually starts. See libc/pthread/pthread_create.c * * Input Parameters: + * startup - The user-space pthread startup function * entrypt - The user-space address of the pthread entry point * arg - Standard argument for the pthread entry point * @@ -66,7 +67,8 @@ void up_pthread_start(pthread_startroutine_t entrypt, pthread_addr_t arg) sinfo("entry %p arg %p\n", entrypt, arg); - sys_call2(SYS_pthread_start, (uintptr_t)entrypt, (uintptr_t)arg); + sys_call3(SYS_pthread_start, (uintptr_t)startup, (uintptr_t)entrypt, + (uintptr_t)arg); PANIC(); } diff --git a/arch/risc-v/src/common/riscv_pthread_start.c b/arch/risc-v/src/common/riscv_pthread_start.c index f66b1740c64..723f7ca14b2 100644 --- a/arch/risc-v/src/common/riscv_pthread_start.c +++ b/arch/risc-v/src/common/riscv_pthread_start.c @@ -47,9 +47,10 @@ * pthread. * * Normally the a user-mode start-up stub will also execute before the - * pthread actually starts. See libc/pthread/pthread_startup.c + * pthread actually starts. See libc/pthread/pthread_create.c * * Input Parameters: + * startup - The user-space pthread startup function * entrypt - The user-space address of the pthread entry point * arg - Standard argument for the pthread entry point * @@ -60,11 +61,13 @@ * ****************************************************************************/ -void up_pthread_start(pthread_startroutine_t entrypt, pthread_addr_t arg) +void up_pthread_start(pthread_trampoline_t startup, + pthread_startroutine_t entrypt, pthread_addr_t arg) { /* Let sys_call2() do all of the work */ - sys_call2(SYS_pthread_start, (uintptr_t)entrypt, (uintptr_t)arg); + sys_call3(SYS_pthread_start, (uintptr_t)startup, (uintptr_t)entrypt, + (uintptr_t)arg); PANIC(); } diff --git a/arch/risc-v/src/rv64gc/riscv_swint.c b/arch/risc-v/src/rv64gc/riscv_swint.c index 23de0e76293..7e6d90b553b 100644 --- a/arch/risc-v/src/rv64gc/riscv_swint.c +++ b/arch/risc-v/src/rv64gc/riscv_swint.c @@ -294,21 +294,21 @@ int riscv_swint(int irq, FAR void *context, FAR void *arg) * R2 = arg */ -#if defined(CONFIG_BUILD_PROTECTED) && !defined(CONFIG_DISABLE_PTHREAD) +#if !defined(CONFIG_BUILD_FLAT) && !defined(CONFIG_DISABLE_PTHREAD) case SYS_pthread_start: { /* Set up to return to the user-space pthread start-up function in * unprivileged mode. */ - regs[REG_EPC] = (uintptr_t)USERSPACE->pthread_startup & ~1; + regs[REG_EPC] = (uintptr_t)regs[REG_A1] & ~1; /* startup */ - /* Change the parameter ordering to match the expectation of struct - * userpace_s pthread_startup: + /* Change the parameter ordering to match the expectation of the + * user space pthread_startup: */ - regs[REG_A0] = regs[REG_A1]; /* pthread entry */ - regs[REG_A1] = regs[REG_A2]; /* arg */ + regs[REG_A0] = regs[REG_A2]; /* pthread entry */ + regs[REG_A1] = regs[REG_A3]; /* arg */ regs[REG_INT_CTX] &= ~MSTATUS_MPPM; /* User mode */ } break; diff --git a/arch/risc-v/src/rv64gc/svcall.h b/arch/risc-v/src/rv64gc/svcall.h index 690f5620e4e..80c8c150806 100644 --- a/arch/risc-v/src/rv64gc/svcall.h +++ b/arch/risc-v/src/rv64gc/svcall.h @@ -82,6 +82,7 @@ #define SYS_switch_context (2) +#ifndef CONFIG_BUILD_FLAT #ifdef CONFIG_LIB_SYSCALL /* SYS call 3: * @@ -98,15 +99,6 @@ */ #define SYS_task_start (4) - -/* SYS call 5: - * - * void up_pthread_start(pthread_startroutine_t entrypt, pthread_addr_t arg) - * noreturn_function - */ - -#define SYS_pthread_start (5) - /* SYS call 6: * * void signal_handler(_sa_sigaction_t sighand, int signo, @@ -123,6 +115,17 @@ #define SYS_signal_handler_return (7) #endif /* CONFIG_BUILD_PROTECTED */ + +/* SYS call 5: + * + * void up_pthread_start(pthread_startroutine_t startup, + * pthread_startroutine_t entrypt, pthread_addr_t arg) + * noreturn_function + */ + +#define SYS_pthread_start (5) + +#endif /* !CONFIG_BUILD_FLAT */ #endif /* CONFIG_LIB_SYSCALL */ #endif /* __ARCH_RISCV_SRC_RV64GC_SVCALL_H */ diff --git a/boards/arm/imxrt/imxrt1050-evk/kernel/imxrt_userspace.c b/boards/arm/imxrt/imxrt1050-evk/kernel/imxrt_userspace.c index 2654b3b93a4..0f0ee111308 100644 --- a/boards/arm/imxrt/imxrt1050-evk/kernel/imxrt_userspace.c +++ b/boards/arm/imxrt/imxrt1050-evk/kernel/imxrt_userspace.c @@ -94,9 +94,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/imxrt/imxrt1060-evk/kernel/imxrt_userspace.c b/boards/arm/imxrt/imxrt1060-evk/kernel/imxrt_userspace.c index 3a706f3b4a7..e2557c7b358 100644 --- a/boards/arm/imxrt/imxrt1060-evk/kernel/imxrt_userspace.c +++ b/boards/arm/imxrt/imxrt1060-evk/kernel/imxrt_userspace.c @@ -94,9 +94,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/lc823450/lc823450-xgevk/kernel/lc823450_userspace.c b/boards/arm/lc823450/lc823450-xgevk/kernel/lc823450_userspace.c index c6ce154b0e3..7eedb98bd30 100644 --- a/boards/arm/lc823450/lc823450-xgevk/kernel/lc823450_userspace.c +++ b/boards/arm/lc823450/lc823450-xgevk/kernel/lc823450_userspace.c @@ -95,9 +95,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/lpc17xx_40xx/lpc4088-devkit/kernel/lpc17_40_userspace.c b/boards/arm/lpc17xx_40xx/lpc4088-devkit/kernel/lpc17_40_userspace.c index 4298a0fa843..2af4c85cfb4 100644 --- a/boards/arm/lpc17xx_40xx/lpc4088-devkit/kernel/lpc17_40_userspace.c +++ b/boards/arm/lpc17xx_40xx/lpc4088-devkit/kernel/lpc17_40_userspace.c @@ -94,9 +94,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/lpc17xx_40xx/lpc4088-quickstart/kernel/lpc17_40_userspace.c b/boards/arm/lpc17xx_40xx/lpc4088-quickstart/kernel/lpc17_40_userspace.c index 2af012c309f..4f5c33cd104 100644 --- a/boards/arm/lpc17xx_40xx/lpc4088-quickstart/kernel/lpc17_40_userspace.c +++ b/boards/arm/lpc17xx_40xx/lpc4088-quickstart/kernel/lpc17_40_userspace.c @@ -94,9 +94,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/lpc17xx_40xx/open1788/kernel/lpc17_40_userspace.c b/boards/arm/lpc17xx_40xx/open1788/kernel/lpc17_40_userspace.c index a09ab2d9b16..09450eca6b1 100644 --- a/boards/arm/lpc17xx_40xx/open1788/kernel/lpc17_40_userspace.c +++ b/boards/arm/lpc17xx_40xx/open1788/kernel/lpc17_40_userspace.c @@ -94,9 +94,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/lpc17xx_40xx/pnev5180b/kernel/lpc17_40_userspace.c b/boards/arm/lpc17xx_40xx/pnev5180b/kernel/lpc17_40_userspace.c index 21b4c189339..8a8451c4a34 100644 --- a/boards/arm/lpc17xx_40xx/pnev5180b/kernel/lpc17_40_userspace.c +++ b/boards/arm/lpc17xx_40xx/pnev5180b/kernel/lpc17_40_userspace.c @@ -94,9 +94,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/lpc43xx/bambino-200e/kernel/lpc43_userspace.c b/boards/arm/lpc43xx/bambino-200e/kernel/lpc43_userspace.c index 72600e0cbc0..e59fd01c6f8 100644 --- a/boards/arm/lpc43xx/bambino-200e/kernel/lpc43_userspace.c +++ b/boards/arm/lpc43xx/bambino-200e/kernel/lpc43_userspace.c @@ -95,9 +95,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/sam34/sam3u-ek/kernel/sam_userspace.c b/boards/arm/sam34/sam3u-ek/kernel/sam_userspace.c index 55fa4139c0f..da2e8d808ab 100644 --- a/boards/arm/sam34/sam3u-ek/kernel/sam_userspace.c +++ b/boards/arm/sam34/sam3u-ek/kernel/sam_userspace.c @@ -94,9 +94,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/samv7/same70-xplained/kernel/sam_userspace.c b/boards/arm/samv7/same70-xplained/kernel/sam_userspace.c index e77b2525c16..2cd40031bc2 100644 --- a/boards/arm/samv7/same70-xplained/kernel/sam_userspace.c +++ b/boards/arm/samv7/same70-xplained/kernel/sam_userspace.c @@ -94,9 +94,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/samv7/samv71-xult/kernel/sam_userspace.c b/boards/arm/samv7/samv71-xult/kernel/sam_userspace.c index a63cc7c4c4a..01be17d1fc1 100644 --- a/boards/arm/samv7/samv71-xult/kernel/sam_userspace.c +++ b/boards/arm/samv7/samv71-xult/kernel/sam_userspace.c @@ -94,9 +94,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/stm32/clicker2-stm32/kernel/stm32_userspace.c b/boards/arm/stm32/clicker2-stm32/kernel/stm32_userspace.c index 791543da8db..2a2521c68ac 100644 --- a/boards/arm/stm32/clicker2-stm32/kernel/stm32_userspace.c +++ b/boards/arm/stm32/clicker2-stm32/kernel/stm32_userspace.c @@ -95,9 +95,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/stm32/mikroe-stm32f4/kernel/stm32_userspace.c b/boards/arm/stm32/mikroe-stm32f4/kernel/stm32_userspace.c index fb63a4ae224..25af38e677b 100644 --- a/boards/arm/stm32/mikroe-stm32f4/kernel/stm32_userspace.c +++ b/boards/arm/stm32/mikroe-stm32f4/kernel/stm32_userspace.c @@ -94,9 +94,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/stm32/olimex-stm32-p407/kernel/stm32_userspace.c b/boards/arm/stm32/olimex-stm32-p407/kernel/stm32_userspace.c index a6d3a3f4aa0..efe32d85082 100644 --- a/boards/arm/stm32/olimex-stm32-p407/kernel/stm32_userspace.c +++ b/boards/arm/stm32/olimex-stm32-p407/kernel/stm32_userspace.c @@ -95,9 +95,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/stm32/omnibusf4/kernel/stm32_userspace.c b/boards/arm/stm32/omnibusf4/kernel/stm32_userspace.c index a3ffc8d7459..08c02ae1a8e 100644 --- a/boards/arm/stm32/omnibusf4/kernel/stm32_userspace.c +++ b/boards/arm/stm32/omnibusf4/kernel/stm32_userspace.c @@ -112,9 +112,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/stm32/stm3240g-eval/kernel/stm32_userspace.c b/boards/arm/stm32/stm3240g-eval/kernel/stm32_userspace.c index 2faeb54bdd1..4eafb03e4ec 100644 --- a/boards/arm/stm32/stm3240g-eval/kernel/stm32_userspace.c +++ b/boards/arm/stm32/stm3240g-eval/kernel/stm32_userspace.c @@ -94,9 +94,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/stm32/stm32f4discovery/kernel/stm32_userspace.c b/boards/arm/stm32/stm32f4discovery/kernel/stm32_userspace.c index 1ec35a3ae71..ff60953b5f0 100644 --- a/boards/arm/stm32/stm32f4discovery/kernel/stm32_userspace.c +++ b/boards/arm/stm32/stm32f4discovery/kernel/stm32_userspace.c @@ -95,9 +95,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/stm32f7/stm32f746g-disco/kernel/stm32_userspace.c b/boards/arm/stm32f7/stm32f746g-disco/kernel/stm32_userspace.c index 6061bb2b3f2..0ee9fa14958 100644 --- a/boards/arm/stm32f7/stm32f746g-disco/kernel/stm32_userspace.c +++ b/boards/arm/stm32f7/stm32f746g-disco/kernel/stm32_userspace.c @@ -95,9 +95,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/stm32f7/stm32f769i-disco/kernel/stm32_userspace.c b/boards/arm/stm32f7/stm32f769i-disco/kernel/stm32_userspace.c index 4a66cd7dd34..f85466e5b5f 100644 --- a/boards/arm/stm32f7/stm32f769i-disco/kernel/stm32_userspace.c +++ b/boards/arm/stm32f7/stm32f769i-disco/kernel/stm32_userspace.c @@ -95,9 +95,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/stm32h7/nucleo-h743zi/kernel/stm32_userspace.c b/boards/arm/stm32h7/nucleo-h743zi/kernel/stm32_userspace.c index d696786e400..54fb39e0510 100644 --- a/boards/arm/stm32h7/nucleo-h743zi/kernel/stm32_userspace.c +++ b/boards/arm/stm32h7/nucleo-h743zi/kernel/stm32_userspace.c @@ -95,9 +95,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/stm32h7/stm32h747i-disco/kernel/stm32_userspace.c b/boards/arm/stm32h7/stm32h747i-disco/kernel/stm32_userspace.c index 84079d23ed0..4dfafe8a421 100644 --- a/boards/arm/stm32h7/stm32h747i-disco/kernel/stm32_userspace.c +++ b/boards/arm/stm32h7/stm32h747i-disco/kernel/stm32_userspace.c @@ -95,9 +95,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/stm32l4/stm32l476vg-disco/kernel/stm32l4_userspace.c b/boards/arm/stm32l4/stm32l476vg-disco/kernel/stm32l4_userspace.c index f274947f035..548d619a623 100644 --- a/boards/arm/stm32l4/stm32l476vg-disco/kernel/stm32l4_userspace.c +++ b/boards/arm/stm32l4/stm32l476vg-disco/kernel/stm32l4_userspace.c @@ -95,9 +95,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/stm32l4/stm32l4r9ai-disco/kernel/stm32l4_userspace.c b/boards/arm/stm32l4/stm32l4r9ai-disco/kernel/stm32l4_userspace.c index 802c1a37051..ae474c689f4 100644 --- a/boards/arm/stm32l4/stm32l4r9ai-disco/kernel/stm32l4_userspace.c +++ b/boards/arm/stm32l4/stm32l4r9ai-disco/kernel/stm32l4_userspace.c @@ -95,9 +95,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/arm/tiva/lm3s6965-ek/kernel/lm_userspace.c b/boards/arm/tiva/lm3s6965-ek/kernel/lm_userspace.c index 6873dc10bdb..1e6ae7bced8 100644 --- a/boards/arm/tiva/lm3s6965-ek/kernel/lm_userspace.c +++ b/boards/arm/tiva/lm3s6965-ek/kernel/lm_userspace.c @@ -95,9 +95,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/boards/risc-v/k210/maix-bit/kernel/k210_userspace.c b/boards/risc-v/k210/maix-bit/kernel/k210_userspace.c index 09335202b36..f7ff8e5dfd6 100644 --- a/boards/risc-v/k210/maix-bit/kernel/k210_userspace.c +++ b/boards/risc-v/k210/maix-bit/kernel/k210_userspace.c @@ -95,9 +95,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ diff --git a/include/nuttx/arch.h b/include/nuttx/arch.h index 9bf8dd59dae..d3ef3d62088 100644 --- a/include/nuttx/arch.h +++ b/include/nuttx/arch.h @@ -569,9 +569,10 @@ void up_task_start(main_t taskentry, int argc, FAR char *argv[]) * pthread by calling this function. * * Normally the a user-mode start-up stub will also execute before the - * pthread actually starts. See libc/pthread/pthread_startup.c + * pthread actually starts. See libc/pthread/pthread_create.c * * Input Parameters: + * startup - The user-space pthread startup function * entrypt - The user-space address of the pthread entry point * arg - Standard argument for the pthread entry point * @@ -584,7 +585,8 @@ void up_task_start(main_t taskentry, int argc, FAR char *argv[]) #if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) && \ !defined(CONFIG_DISABLE_PTHREAD) -void up_pthread_start(pthread_startroutine_t entrypt, pthread_addr_t arg) +void up_pthread_start(pthread_trampoline_t startup, + pthread_startroutine_t entrypt, pthread_addr_t arg); noreturn_function; #endif diff --git a/include/nuttx/pthread.h b/include/nuttx/pthread.h index e92b2075eff..8dc21d94b58 100644 --- a/include/nuttx/pthread.h +++ b/include/nuttx/pthread.h @@ -100,7 +100,7 @@ #endif /**************************************************************************** - * Public Data + * Public Types ****************************************************************************/ #ifdef __cplusplus @@ -111,6 +111,10 @@ extern "C" #define EXTERN extern #endif +/**************************************************************************** + * Public Data + ****************************************************************************/ + /* Default pthread attributes. This global can only be shared within the * kernel- or within the user- address space. */ @@ -121,6 +125,30 @@ EXTERN const pthread_attr_t g_default_pthread_attr; * Public Function Prototypes ****************************************************************************/ +/**************************************************************************** + * Name: nx_pthread_create + * + * Description: + * This function creates and activates a new thread with specified + * attributes. + * + * Input Parameters: + * trampoline + * thread + * attr + * start_routine + * arg + * + * Returned Value: + * OK (0) on success; a (non-negated) errno value on failure. The errno + * variable is not set. + * + ****************************************************************************/ + +int nx_pthread_create(pthread_trampoline_t trampoline, FAR pthread_t *thread, + FAR const pthread_attr_t *attr, + pthread_startroutine_t entry, pthread_addr_t arg); + #undef EXTERN #ifdef __cplusplus } diff --git a/include/nuttx/sched.h b/include/nuttx/sched.h index 4f7f647a27b..f40a2cd24ab 100644 --- a/include/nuttx/sched.h +++ b/include/nuttx/sched.h @@ -770,6 +770,7 @@ struct pthread_tcb_s /* Task Management Fields *****************************************************/ + pthread_trampoline_t trampoline; /* User-space pthread startup function */ pthread_addr_t arg; /* Startup argument */ FAR void *joininfo; /* Detach-able info to support join */ }; diff --git a/include/nuttx/userspace.h b/include/nuttx/userspace.h index 23cb0336f68..4c9811a432e 100644 --- a/include/nuttx/userspace.h +++ b/include/nuttx/userspace.h @@ -100,13 +100,9 @@ struct userspace_s FAR struct mm_heap_s *us_heap; - /* Task/thread startup routines */ + /* Task startup routine */ CODE void (*task_startup)(main_t entrypt, int argc, FAR char *argv[]); -#ifndef CONFIG_DISABLE_PTHREAD - CODE void (*pthread_startup)(pthread_startroutine_t entrypt, - pthread_addr_t arg); -#endif /* Signal handler trampoline */ @@ -136,26 +132,6 @@ extern "C" * Public Function Prototypes ****************************************************************************/ -/**************************************************************************** - * Name: pthread_startup - * - * Description: - * This function is the user-space, pthread startup function. It is called - * from up_pthread_start() in user-mode. - * - * Input Parameters: - * entrypt - The user-space address of the pthread entry point - * arg - Standard argument for the pthread entry point - * - * Returned Value: - * None. This function does not return. - * - ****************************************************************************/ - -#if !defined(__KERNEL__) && !defined(CONFIG_DISABLE_PTHREAD) -void pthread_startup(pthread_startroutine_t entrypt, pthread_addr_t arg); -#endif - #undef EXTERN #ifdef __cplusplus } diff --git a/include/pthread.h b/include/pthread.h index 1474f93669d..fb8a458ca42 100644 --- a/include/pthread.h +++ b/include/pthread.h @@ -225,6 +225,8 @@ typedef FAR void *pthread_addr_t; typedef CODE pthread_addr_t (*pthread_startroutine_t)(pthread_addr_t); typedef pthread_startroutine_t pthread_func_t; +typedef void (*pthread_trampoline_t)(pthread_startroutine_t, pthread_addr_t); + struct pthread_attr_s { uint8_t priority; /* Priority of the pthread */ diff --git a/include/sys/syscall_lookup.h b/include/sys/syscall_lookup.h index ba5c04f6484..c3f3deab914 100644 --- a/include/sys/syscall_lookup.h +++ b/include/sys/syscall_lookup.h @@ -305,7 +305,7 @@ SYSCALL_LOOKUP(telldir, 1) SYSCALL_LOOKUP(pthread_cond_broadcast, 1) SYSCALL_LOOKUP(pthread_cond_signal, 1) SYSCALL_LOOKUP(pthread_cond_wait, 2) - SYSCALL_LOOKUP(pthread_create, 4) + SYSCALL_LOOKUP(nx_pthread_create, 5) SYSCALL_LOOKUP(pthread_detach, 1) SYSCALL_LOOKUP(pthread_exit, 1) SYSCALL_LOOKUP(pthread_getschedparam, 3) diff --git a/libs/libc/pthread/Make.defs b/libs/libc/pthread/Make.defs index 3f62e4e38dd..21497bf80b1 100644 --- a/libs/libc/pthread/Make.defs +++ b/libs/libc/pthread/Make.defs @@ -38,19 +38,20 @@ CSRCS += pthread_barrierattr_init.c pthread_barrierattr_destroy.c CSRCS += pthread_barrierattr_getpshared.c pthread_barrierattr_setpshared.c CSRCS += pthread_barrierinit.c pthread_barrierdestroy.c pthread_barrierwait.c CSRCS += pthread_condattr_init.c pthread_condattr_destroy.c +CSRCS += pthread_condattr_setclock.c pthread_condattr_getclock.c CSRCS += pthread_condinit.c pthread_conddestroy.c pthread_condtimedwait.c +CSRCS += pthread_create.c +CSRCS += pthread_get_stackaddr_np.c pthread_get_stacksize_np.c CSRCS += pthread_mutexattr_init.c pthread_mutexattr_destroy.c CSRCS += pthread_mutexattr_getpshared.c pthread_mutexattr_setpshared.c CSRCS += pthread_mutexattr_setprotocol.c pthread_mutexattr_getprotocol.c CSRCS += pthread_mutexattr_settype.c pthread_mutexattr_gettype.c CSRCS += pthread_mutexattr_setrobust.c pthread_mutexattr_getrobust.c CSRCS += pthread_mutex_lock.c +CSRCS += pthread_once.c pthread_yield.c +CSRCS += pthread_rwlock.c pthread_rwlock_rdlock.c pthread_rwlock_wrlock.c CSRCS += pthread_setcancelstate.c pthread_setcanceltype.c CSRCS += pthread_testcancel.c -CSRCS += pthread_rwlock.c pthread_rwlock_rdlock.c pthread_rwlock_wrlock.c -CSRCS += pthread_once.c pthread_yield.c -CSRCS += pthread_get_stackaddr_np.c pthread_get_stacksize_np.c -CSRCS += pthread_condattr_setclock.c pthread_condattr_getclock.c ifeq ($(CONFIG_SMP),y) CSRCS += pthread_attr_getaffinity.c pthread_attr_setaffinity.c @@ -60,14 +61,9 @@ ifeq ($(CONFIG_PTHREAD_SPINLOCKS),y) CSRCS += pthread_spinlock.c endif -ifeq ($(CONFIG_BUILD_PROTECTED),y) -CSRCS += pthread_startup.c -endif - endif # CONFIG_DISABLE_PTHREAD # Add the pthread directory to the build DEPPATH += --dep-path pthread VPATH += :pthread - diff --git a/libs/libc/pthread/pthread_startup.c b/libs/libc/pthread/pthread_create.c similarity index 57% rename from libs/libc/pthread/pthread_startup.c rename to libs/libc/pthread/pthread_create.c index 53be0326092..e81c63e0474 100644 --- a/libs/libc/pthread/pthread_startup.c +++ b/libs/libc/pthread/pthread_create.c @@ -1,5 +1,5 @@ /**************************************************************************** - * libs/libc/pthread/pthread_startup.c + * libs/libc/pthread/pthread_create.c * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with @@ -24,70 +24,68 @@ #include -#include -#include +#include -#include - -#if !defined(CONFIG_BUILD_FLAT) && !defined(__KERNEL__) - -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -/**************************************************************************** - * Private Type Declarations - ****************************************************************************/ - -/**************************************************************************** - * Public Data - ****************************************************************************/ - -/**************************************************************************** - * Private Data - ****************************************************************************/ - -/**************************************************************************** - * Private Function Prototypes - ****************************************************************************/ +#include /**************************************************************************** * Private Functions ****************************************************************************/ -/**************************************************************************** - * Public Functions - ****************************************************************************/ - /**************************************************************************** * Name: pthread_startup * * Description: - * This function is the user-space, pthread startup function. It is called - * from up_pthread_start() in user-mode. + * This function is the user space pthread startup function. Its purpose + * is to catch the return from the pthread main function so that + * pthread_exit() can be called from user space * * Input Parameters: - * entrypt - The user-space address of the pthread entry point - * arg - Standard argument for the pthread entry point + * entry - The user-space address of the pthread entry point + * arg - Standard argument for the pthread entry point * * Returned Value: * None. This function does not return. * ****************************************************************************/ -void pthread_startup(pthread_startroutine_t entrypt, pthread_addr_t arg) +static void pthread_startup(pthread_startroutine_t entry, + pthread_addr_t arg) { - pthread_addr_t exit_status; + DEBUGASSERT(entry != NULL); - DEBUGASSERT(entrypt); + /* Pass control to the thread entry point. Handle any returned value. */ - /* Pass control to the thread entry point. */ - - exit_status = entrypt(arg); - - /* The pthread has returned */ - - pthread_exit(exit_status); + pthread_exit(entry(arg)); } -#endif /* !CONFIG_BUILD_FLAT && !__KERNEL__ */ +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: pthread_create + * + * Description: + * This function creates and activates a new thread with specified + * attributes. It is simply a wrapper around the nx_pthread_create system + * call. + * + * Input Parameters: + * thread + * attr + * pthread_entry + * arg + * + * Returned Value: + * OK (0) on success; a (non-negated) errno value on failure. The errno + * variable is not set. + * + ****************************************************************************/ + +int pthread_create(FAR pthread_t *thread, FAR const pthread_attr_t *attr, + pthread_startroutine_t pthread_entry, pthread_addr_t arg) +{ + return nx_pthread_create(pthread_startup, thread, attr, pthread_entry, + arg); +} diff --git a/sched/pthread/pthread_create.c b/sched/pthread/pthread_create.c index 1c4af3b9b92..22cd008ed16 100644 --- a/sched/pthread/pthread_create.c +++ b/sched/pthread/pthread_create.c @@ -64,19 +64,20 @@ const pthread_attr_t g_default_pthread_attr = PTHREAD_ATTR_INITIALIZER; ****************************************************************************/ /**************************************************************************** - * Name: pthread_argsetup + * Name: pthread_tcb_setup * * Description: - * This functions sets up parameters in the Task Control Block (TCB) in + * This function sets up parameters in the Task Control Block (TCB) in * preparation for starting a new thread. * - * pthread_argsetup() is called from nxtask_init() and nxtask_start() to + * pthread_tcb_setup() is called from nxtask_init() and nxtask_start() to * create a new task (with arguments cloned via strdup) or pthread_create() * which has one argument passed by value (distinguished by the pthread * boolean argument). * * Input Parameters: * tcb - Address of the new task's TCB + * trampoline - User space pthread startup function * arg - The argument to provide to the pthread on startup. * * Returned Value: @@ -84,21 +85,23 @@ const pthread_attr_t g_default_pthread_attr = PTHREAD_ATTR_INITIALIZER; * ****************************************************************************/ -static inline void pthread_argsetup(FAR struct pthread_tcb_s *tcb, - pthread_addr_t arg) +static inline void pthread_tcb_setup(FAR struct pthread_tcb_s *ptcb, + pthread_trampoline_t trampoline, + pthread_addr_t arg) { #if CONFIG_TASK_NAME_SIZE > 0 /* Copy the pthread name into the TCB */ - snprintf(tcb->cmn.name, CONFIG_TASK_NAME_SIZE, - "pt-%p", tcb->cmn.entry.pthread); + snprintf(ptcb->cmn.name, CONFIG_TASK_NAME_SIZE, + "pt-%p", ptcb->cmn.entry.pthread); #endif /* CONFIG_TASK_NAME_SIZE */ /* For pthreads, args are strictly pass-by-value; that actual * type wrapped by pthread_addr_t is unknown. */ - tcb->arg = arg; + ptcb->trampoline = trampoline; + ptcb->arg = arg; } /**************************************************************************** @@ -150,9 +153,8 @@ static void pthread_start(void) FAR struct pthread_tcb_s *ptcb = (FAR struct pthread_tcb_s *)this_task(); FAR struct task_group_s *group = ptcb->cmn.group; FAR struct join_s *pjoin = (FAR struct join_s *)ptcb->joininfo; - pthread_addr_t exit_status; - DEBUGASSERT(group && pjoin); + DEBUGASSERT(group != NULL && pjoin != NULL); /* Successfully spawned, add the pjoin to our data set. */ @@ -180,16 +182,18 @@ static void pthread_start(void) * to switch to user-mode before calling into the pthread. */ + DEBUGASSERT(ptcb->trampoline != NULL && ptcb->cmn.entry.pthread != NULL); + #ifdef CONFIG_BUILD_FLAT - exit_status = (*ptcb->cmn.entry.pthread)(ptcb->arg); + ptcb->trampoline(ptcb->cmn.entry.pthread, ptcb->arg); #else - up_pthread_start(ptcb->cmn.entry.pthread, ptcb->arg); - exit_status = NULL; + up_pthread_start(ptcb->trampoline, ptcb->cmn.entry.pthread, ptcb->arg); #endif - /* The thread has returned (should never happen in the kernel mode case) */ + /* The thread has returned (should never happen) */ - pthread_exit(exit_status); + DEBUGPANIC(); + pthread_exit(NULL); } /**************************************************************************** @@ -197,13 +201,14 @@ static void pthread_start(void) ****************************************************************************/ /**************************************************************************** - * Name: pthread_create + * Name: nx_pthread_create * * Description: - * This function creates and activates a new thread with a specified + * This function creates and activates a new thread with specified * attributes. * * Input Parameters: + * trampoline * thread * attr * start_routine @@ -215,8 +220,9 @@ static void pthread_start(void) * ****************************************************************************/ -int pthread_create(FAR pthread_t *thread, FAR const pthread_attr_t *attr, - pthread_startroutine_t start_routine, pthread_addr_t arg) +int nx_pthread_create(pthread_trampoline_t trampoline, FAR pthread_t *thread, + FAR const pthread_attr_t *attr, + pthread_startroutine_t entry, pthread_addr_t arg) { FAR struct pthread_tcb_s *ptcb; FAR struct tls_info_s *info; @@ -228,6 +234,8 @@ int pthread_create(FAR pthread_t *thread, FAR const pthread_attr_t *attr, int ret; bool group_joined = false; + DEBUGASSERT(trampoline != NULL); + /* If attributes were not supplied, use the default attributes */ if (!attr) @@ -415,7 +423,7 @@ int pthread_create(FAR pthread_t *thread, FAR const pthread_attr_t *attr, /* Initialize the task control block */ ret = pthread_setup_scheduler(ptcb, param.sched_priority, pthread_start, - start_routine); + entry); if (ret != OK) { errcode = EBUSY; @@ -440,7 +448,7 @@ int pthread_create(FAR pthread_t *thread, FAR const pthread_attr_t *attr, * passed by value */ - pthread_argsetup(ptcb, arg); + pthread_tcb_setup(ptcb, trampoline, arg); /* Join the parent's task group */ diff --git a/syscall/syscall.csv b/syscall/syscall.csv index c8b6807faf8..a9c46584304 100644 --- a/syscall/syscall.csv +++ b/syscall/syscall.csv @@ -66,6 +66,7 @@ "munmap","sys/mman.h","defined(CONFIG_FS_RAMMAP)","int","FAR void *","size_t" "nx_mkfifo","nuttx/fs/fs.h","defined(CONFIG_PIPES) && CONFIG_DEV_FIFO_SIZE > 0","int","FAR const char *","mode_t","size_t" "nx_pipe","nuttx/fs/fs.h","defined(CONFIG_PIPES) && CONFIG_DEV_PIPE_SIZE > 0","int","int [2]|FAR int *","size_t","int" +"nx_pthread_create","nuttx/pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","pthread_trampoline_t","FAR pthread_t *","FAR const pthread_attr_t *","pthread_startroutine_t","pthread_addr_t" "nx_task_spawn","nuttx/spawn.h","defined(CONFIG_LIB_SYSCALL) && !defined(CONFIG_BUILD_KERNEL)","int","FAR const struct spawn_syscall_parms_s *" "nx_vsyslog","nuttx/syslog/syslog.h","","int","int","FAR const IPTR char *","FAR va_list *" "nxsched_get_stackinfo","nuttx/sched.h","","int","pid_t","FAR struct stackinfo_s *" @@ -88,7 +89,6 @@ "pthread_cond_clockwait","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_cond_t *","FAR pthread_mutex_t *","clockid_t","FAR const struct timespec *" "pthread_cond_signal","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_cond_t *" "pthread_cond_wait","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_cond_t *","FAR pthread_mutex_t *" -"pthread_create","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_t *","FAR const pthread_attr_t *","pthread_startroutine_t","pthread_addr_t" "pthread_detach","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","pthread_t" "pthread_exit","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","noreturn","pthread_addr_t" "pthread_getaffinity_np","pthread.h","!defined(CONFIG_DISABLE_PTHREAD) && defined(CONFIG_SMP)","int","pthread_t","size_t","FAR cpu_set_t*" From 54eef9f639476ced38a46559fad218811bd9e3c9 Mon Sep 17 00:00:00 2001 From: Huang Qi Date: Thu, 29 Apr 2021 17:56:28 +0800 Subject: [PATCH 185/739] libc: Move pthread_exit to userspace Signed-off-by: Huang Qi --- include/nuttx/pthread.h | 35 ++++++++++++++++ include/sys/syscall_lookup.h | 3 +- libs/libc/pthread/Make.defs | 2 +- libs/libc/pthread/pthread_exit.c | 72 ++++++++++++++++++++++++++++++++ sched/pthread/pthread_cleanup.c | 53 +++++++++++++++++++++++ sched/pthread/pthread_exit.c | 8 +--- syscall/syscall.csv | 3 +- 7 files changed, 166 insertions(+), 10 deletions(-) create mode 100644 libs/libc/pthread/pthread_exit.c diff --git a/include/nuttx/pthread.h b/include/nuttx/pthread.h index 8dc21d94b58..477cf2c4f53 100644 --- a/include/nuttx/pthread.h +++ b/include/nuttx/pthread.h @@ -149,6 +149,41 @@ int nx_pthread_create(pthread_trampoline_t trampoline, FAR pthread_t *thread, FAR const pthread_attr_t *attr, pthread_startroutine_t entry, pthread_addr_t arg); +/**************************************************************************** + * Name: nx_pthread_exit + * + * Description: + * Terminate execution of a thread started with pthread_create. + * + * Input Parameters: + * exit_valie + * + * Returned Value: + * None + * + * Assumptions: + * + ****************************************************************************/ + +void nx_pthread_exit(FAR void *exit_value) noreturn_function; + +/**************************************************************************** + * Name: pthread_cleanup_poplist + * + * Description: + * The pthread_cleanup_poplist() is function that will pop all clean-up + * functions. This function is only called from within the pthread_exit() + * + * Input Parameters: + * cleanup - The array of struct pthread_cleanup_s to fetch callbacks + * + * Returned Value: + * The index to the next available entry at the top of the stack + * + ****************************************************************************/ + +int pthread_cleanup_poplist(FAR struct pthread_cleanup_s *cleanup); + #undef EXTERN #ifdef __cplusplus } diff --git a/include/sys/syscall_lookup.h b/include/sys/syscall_lookup.h index c3f3deab914..d59467a4c77 100644 --- a/include/sys/syscall_lookup.h +++ b/include/sys/syscall_lookup.h @@ -307,7 +307,7 @@ SYSCALL_LOOKUP(telldir, 1) SYSCALL_LOOKUP(pthread_cond_wait, 2) SYSCALL_LOOKUP(nx_pthread_create, 5) SYSCALL_LOOKUP(pthread_detach, 1) - SYSCALL_LOOKUP(pthread_exit, 1) + SYSCALL_LOOKUP(nx_pthread_exit, 1) SYSCALL_LOOKUP(pthread_getschedparam, 3) SYSCALL_LOOKUP(pthread_join, 2) SYSCALL_LOOKUP(pthread_mutex_destroy, 1) @@ -330,6 +330,7 @@ SYSCALL_LOOKUP(telldir, 1) #ifdef CONFIG_PTHREAD_CLEANUP SYSCALL_LOOKUP(pthread_cleanup_push, 2) SYSCALL_LOOKUP(pthread_cleanup_pop, 1) + SYSCALL_LOOKUP(pthread_cleanup_poplist, 1) #endif #endif diff --git a/libs/libc/pthread/Make.defs b/libs/libc/pthread/Make.defs index 21497bf80b1..bbdb75beacd 100644 --- a/libs/libc/pthread/Make.defs +++ b/libs/libc/pthread/Make.defs @@ -40,7 +40,7 @@ CSRCS += pthread_barrierinit.c pthread_barrierdestroy.c pthread_barrierwait.c CSRCS += pthread_condattr_init.c pthread_condattr_destroy.c CSRCS += pthread_condattr_setclock.c pthread_condattr_getclock.c CSRCS += pthread_condinit.c pthread_conddestroy.c pthread_condtimedwait.c -CSRCS += pthread_create.c +CSRCS += pthread_create.c pthread_exit.c CSRCS += pthread_get_stackaddr_np.c pthread_get_stacksize_np.c CSRCS += pthread_mutexattr_init.c pthread_mutexattr_destroy.c CSRCS += pthread_mutexattr_getpshared.c pthread_mutexattr_setpshared.c diff --git a/libs/libc/pthread/pthread_exit.c b/libs/libc/pthread/pthread_exit.c new file mode 100644 index 00000000000..71271d96082 --- /dev/null +++ b/libs/libc/pthread/pthread_exit.c @@ -0,0 +1,72 @@ +/**************************************************************************** + * libs/libc/pthread/pthread_exit.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +#include + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: pthread_exit + * + * Description: + * Terminate execution of a thread started with pthread_create. + * + * Input Parameters: + * exit_valie + * + * Returned Value: + * None + * + * Assumptions: + * + ****************************************************************************/ + +void pthread_exit(FAR void *exit_value) +{ +#ifdef CONFIG_PTHREAD_CLEANUP + int cnt; + struct pthread_cleanup_s cleanup[CONFIG_PTHREAD_CLEANUP_STACKSIZE]; + cnt = pthread_cleanup_poplist(cleanup); + + sched_lock(); + while (cnt-- > 0) + { + struct pthread_cleanup_s cp = cleanup[cnt]; + if (cp.pc_cleaner) + cp.pc_cleaner(cp.pc_arg); + } + + sched_unlock(); +#endif + + nx_pthread_exit(exit_value); + PANIC(); +} diff --git a/sched/pthread/pthread_cleanup.c b/sched/pthread/pthread_cleanup.c index e735b15bfed..8c5dbafe333 100644 --- a/sched/pthread/pthread_cleanup.c +++ b/sched/pthread/pthread_cleanup.c @@ -208,4 +208,57 @@ void pthread_cleanup_popall(FAR struct tcb_s *tcb) } } +/**************************************************************************** + * Name: pthread_cleanup_poplist + * + * Description: + * The pthread_cleanup_poplist() is function that will pop all clean-up + * functions. This function is only called from within the pthread_exit() + * + * Input Parameters: + * cleanup - The array of struct pthread_cleanup_s to fetch callbacks + * + * Returned Value: + * The index to the next available entry at the top of the stack + * + ****************************************************************************/ + +int pthread_cleanup_poplist(FAR struct pthread_cleanup_s *cleanup) +{ + uint8_t tos = 0; + uint8_t ndx = 0; + FAR struct tcb_s *tcb = this_task(); + + DEBUGASSERT(cleanup != NULL); + DEBUGASSERT(tcb != NULL); + DEBUGASSERT(tcb->tos < CONFIG_PTHREAD_CLEANUP_STACKSIZE); + + tos = tcb->tos; + + /* Kernel threads do not support pthread APIs */ + + if ((tcb->flags & TCB_FLAG_TTYPE_MASK) != TCB_FLAG_TTYPE_KERNEL) + { + /* Pop cleanup routine list + * + * sched_lock() should provide sufficient protection. We only need to + * have this TCB stationary; the pthread cleanup stack should never be + * modified by interrupt level logic. + */ + + sched_lock(); + while (tcb->tos > 0) + { + ndx = tcb->tos - 1; + DEBUGASSERT(ndx >= 0 && ndx < CONFIG_PTHREAD_CLEANUP_STACKSIZE); + cleanup[ndx] = tcb->stack[ndx]; + tcb->tos = ndx; + } + + sched_unlock(); + } + + return tos; +} + #endif /* CONFIG_PTHREAD_CLEANUP */ diff --git a/sched/pthread/pthread_exit.c b/sched/pthread/pthread_exit.c index bc6086fced9..a7704abc0dd 100644 --- a/sched/pthread/pthread_exit.c +++ b/sched/pthread/pthread_exit.c @@ -59,7 +59,7 @@ * ****************************************************************************/ -void pthread_exit(FAR void *exit_value) +void nx_pthread_exit(FAR void *exit_value) { FAR struct tcb_s *tcb = this_task(); sigset_t set = ALL_SIGNAL_SET; @@ -87,12 +87,6 @@ void pthread_exit(FAR void *exit_value) tcb->cpcount = 0; #endif -#ifdef CONFIG_PTHREAD_CLEANUP - /* Perform any stack pthread clean-up callbacks */ - - pthread_cleanup_popall(tcb); -#endif - /* Complete pending join operations */ status = pthread_completejoin(getpid(), exit_value); diff --git a/syscall/syscall.csv b/syscall/syscall.csv index a9c46584304..e88cf9e83c2 100644 --- a/syscall/syscall.csv +++ b/syscall/syscall.csv @@ -84,13 +84,14 @@ "pselect","sys/select.h","","int","int","FAR fd_set *","FAR fd_set *","FAR fd_set *","FAR const struct timespec *","FAR const sigset_t *" "pthread_cancel","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","pthread_t" "pthread_cleanup_pop","pthread.h","defined(CONFIG_PTHREAD_CLEANUP)","void","int" +"pthread_cleanup_poplist","nuttx/pthread.h","defined(CONFIG_PTHREAD_CLEANUP)","int","struct pthread_cleanup_s *" "pthread_cleanup_push","pthread.h","defined(CONFIG_PTHREAD_CLEANUP)","void","pthread_cleanup_t","FAR void *" "pthread_cond_broadcast","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_cond_t *" "pthread_cond_clockwait","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_cond_t *","FAR pthread_mutex_t *","clockid_t","FAR const struct timespec *" "pthread_cond_signal","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_cond_t *" "pthread_cond_wait","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_cond_t *","FAR pthread_mutex_t *" "pthread_detach","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","pthread_t" -"pthread_exit","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","noreturn","pthread_addr_t" +"nx_pthread_exit","nuttx/pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","noreturn","pthread_addr_t" "pthread_getaffinity_np","pthread.h","!defined(CONFIG_DISABLE_PTHREAD) && defined(CONFIG_SMP)","int","pthread_t","size_t","FAR cpu_set_t*" "pthread_getschedparam","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","pthread_t","FAR int *","FAR struct sched_param *" "pthread_join","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","pthread_t","FAR pthread_addr_t *" From 103925b2b7eda8e023cbd74bad67dfba757b69a4 Mon Sep 17 00:00:00 2001 From: Huang Qi Date: Fri, 30 Apr 2021 12:42:02 +0800 Subject: [PATCH 186/739] boards/risc-v/c906: Remove unneeded pthread_start Signed-off-by: Huang Qi --- boards/risc-v/c906/smartl-c906/kernel/c906_userspace.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/boards/risc-v/c906/smartl-c906/kernel/c906_userspace.c b/boards/risc-v/c906/smartl-c906/kernel/c906_userspace.c index 1f5a2f34aad..9f24ab1a9d7 100644 --- a/boards/risc-v/c906/smartl-c906/kernel/c906_userspace.c +++ b/boards/risc-v/c906/smartl-c906/kernel/c906_userspace.c @@ -99,9 +99,6 @@ const struct userspace_s userspace __attribute__ ((section (".userspace"))) = /* Task/thread startup routines */ .task_startup = nxtask_startup, -#ifndef CONFIG_DISABLE_PTHREAD - .pthread_startup = pthread_startup, -#endif /* Signal handler trampoline */ From f1a92e9cbb50813f7c92eb14a9007b664a737939 Mon Sep 17 00:00:00 2001 From: Huang Qi Date: Fri, 30 Apr 2021 18:12:09 +0800 Subject: [PATCH 187/739] libc: Move pthread_cleanup to user space Signed-off-by: Huang Qi --- include/nuttx/pthread.h | 15 ++- include/nuttx/sched.h | 11 -- include/nuttx/tls.h | 11 ++ include/sys/syscall_lookup.h | 5 - libs/libc/pthread/Make.defs | 4 + .../libc}/pthread/pthread_cleanup.c | 127 +++++------------- libs/libc/pthread/pthread_exit.c | 14 +- sched/pthread/Make.defs | 4 - sched/pthread/pthread.h | 4 - sched/pthread/pthread_cancel.c | 13 -- sched/task/exit.c | 6 - syscall/syscall.csv | 3 - 12 files changed, 55 insertions(+), 162 deletions(-) rename {sched => libs/libc}/pthread/pthread_cleanup.c (62%) diff --git a/include/nuttx/pthread.h b/include/nuttx/pthread.h index 477cf2c4f53..aa21cd65c56 100644 --- a/include/nuttx/pthread.h +++ b/include/nuttx/pthread.h @@ -168,21 +168,24 @@ int nx_pthread_create(pthread_trampoline_t trampoline, FAR pthread_t *thread, void nx_pthread_exit(FAR void *exit_value) noreturn_function; /**************************************************************************** - * Name: pthread_cleanup_poplist + * Name: pthread_cleanup_popall * * Description: - * The pthread_cleanup_poplist() is function that will pop all clean-up - * functions. This function is only called from within the pthread_exit() + * The pthread_cleanup_popall() is an internal function that will pop and + * execute all clean-up functions. This function is only called from + * within the pthread_exit() and pthread_cancellation() logic * * Input Parameters: - * cleanup - The array of struct pthread_cleanup_s to fetch callbacks + * tcb - The TCB of the pthread that is exiting or being canceled. * * Returned Value: - * The index to the next available entry at the top of the stack + * None * ****************************************************************************/ -int pthread_cleanup_poplist(FAR struct pthread_cleanup_s *cleanup); +#ifdef CONFIG_PTHREAD_CLEANUP +void pthread_cleanup_popall(void); +#endif #undef EXTERN #ifdef __cplusplus diff --git a/include/nuttx/sched.h b/include/nuttx/sched.h index f40a2cd24ab..95c7ad7fa5e 100644 --- a/include/nuttx/sched.h +++ b/include/nuttx/sched.h @@ -690,17 +690,6 @@ struct tcb_s FAR struct pthread_mutex_s *mhead; /* List of mutexes held by thread */ #endif - /* Clean-up stack *************************************************************/ - -#ifdef CONFIG_PTHREAD_CLEANUP - /* tos - The index to the next available entry at the top of the stack. - * stack - The pre-allocated clean-up stack memory. - */ - - uint8_t tos; - struct pthread_cleanup_s stack[CONFIG_PTHREAD_CLEANUP_STACKSIZE]; -#endif - /* Pre-emption monitor support ************************************************/ #ifdef CONFIG_SCHED_CRITMONITOR diff --git a/include/nuttx/tls.h b/include/nuttx/tls.h index 79f0e78abed..c370abc635b 100644 --- a/include/nuttx/tls.h +++ b/include/nuttx/tls.h @@ -27,6 +27,7 @@ #include +#include #include /**************************************************************************** @@ -98,6 +99,16 @@ struct tls_info_s #if CONFIG_TLS_NELEM > 0 uintptr_t tl_elem[CONFIG_TLS_NELEM]; /* TLS elements */ #endif + +#ifdef CONFIG_PTHREAD_CLEANUP + /* tos - The index to the next available entry at the top of the stack. + * stack - The pre-allocated clean-up stack memory. + */ + + uint8_t tos; + struct pthread_cleanup_s stack[CONFIG_PTHREAD_CLEANUP_STACKSIZE]; +#endif + int tl_errno; /* Per-thread error number */ }; diff --git a/include/sys/syscall_lookup.h b/include/sys/syscall_lookup.h index d59467a4c77..7781f09051d 100644 --- a/include/sys/syscall_lookup.h +++ b/include/sys/syscall_lookup.h @@ -327,11 +327,6 @@ SYSCALL_LOOKUP(telldir, 1) SYSCALL_LOOKUP(pthread_cond_clockwait, 4) SYSCALL_LOOKUP(pthread_kill, 2) SYSCALL_LOOKUP(pthread_sigmask, 3) -#ifdef CONFIG_PTHREAD_CLEANUP - SYSCALL_LOOKUP(pthread_cleanup_push, 2) - SYSCALL_LOOKUP(pthread_cleanup_pop, 1) - SYSCALL_LOOKUP(pthread_cleanup_poplist, 1) -#endif #endif /* The following are defined only if message queues are enabled */ diff --git a/libs/libc/pthread/Make.defs b/libs/libc/pthread/Make.defs index bbdb75beacd..b4ba9959ea0 100644 --- a/libs/libc/pthread/Make.defs +++ b/libs/libc/pthread/Make.defs @@ -61,6 +61,10 @@ ifeq ($(CONFIG_PTHREAD_SPINLOCKS),y) CSRCS += pthread_spinlock.c endif +ifeq ($(CONFIG_PTHREAD_CLEANUP),y) +CSRCS += pthread_cleanup.c +endif + endif # CONFIG_DISABLE_PTHREAD # Add the pthread directory to the build diff --git a/sched/pthread/pthread_cleanup.c b/libs/libc/pthread/pthread_cleanup.c similarity index 62% rename from sched/pthread/pthread_cleanup.c rename to libs/libc/pthread/pthread_cleanup.c index 8c5dbafe333..0c2c848f6e7 100644 --- a/sched/pthread/pthread_cleanup.c +++ b/libs/libc/pthread/pthread_cleanup.c @@ -1,5 +1,5 @@ /**************************************************************************** - * sched/pthread/pthread_cleanup.c + * libs/libc/pthread/pthread_cleanup.c * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with @@ -27,10 +27,11 @@ #include #include +#include #include - -#include "sched/sched.h" -#include "pthread/pthread.h" +#include +#include +#include #ifdef CONFIG_PTHREAD_CLEANUP @@ -39,7 +40,7 @@ ****************************************************************************/ /**************************************************************************** - * Name: pthread_cleanup_pop_tcb + * Name: pthread_cleanup_pop_tls * * Description: * The pthread_cleanup_pop_tcb() function will remove the routine at the @@ -57,15 +58,15 @@ * ****************************************************************************/ -static void pthread_cleanup_pop_tcb(FAR struct tcb_s *tcb, int execute) +static void pthread_cleanup_pop_tls(FAR struct tls_info_s *tls, int execute) { - if (tcb->tos > 0) + if (tls->tos > 0) { unsigned int ndx; /* Get the index to the last cleaner function pushed onto the stack */ - ndx = tcb->tos - 1; + ndx = tls->tos - 1; DEBUGASSERT(ndx >= 0 && ndx < CONFIG_PTHREAD_CLEANUP_STACKSIZE); /* Should we execute the cleanup routine at the top of the stack? */ @@ -81,11 +82,11 @@ static void pthread_cleanup_pop_tcb(FAR struct tcb_s *tcb, int execute) * mode! See also on_exit() and atexit() callbacks. */ - cb = &tcb->stack[ndx]; + cb = &tls->stack[ndx]; cb->pc_cleaner(cb->pc_arg); } - tcb->tos = ndx; + tls->tos = ndx; } } @@ -123,9 +124,9 @@ static void pthread_cleanup_pop_tcb(FAR struct tcb_s *tcb, int execute) void pthread_cleanup_pop(int execute) { - FAR struct tcb_s *tcb = this_task(); + FAR struct tls_info_s *tls = up_tls_info(); - DEBUGASSERT(tcb != NULL); + DEBUGASSERT(tls != NULL); /* sched_lock() should provide sufficient protection. We only need to * have this TCB stationary; the pthread cleanup stack should never be @@ -133,20 +134,16 @@ void pthread_cleanup_pop(int execute) */ sched_lock(); - if ((tcb->flags & TCB_FLAG_TTYPE_MASK) != TCB_FLAG_TTYPE_KERNEL) - { - pthread_cleanup_pop_tcb(tcb, execute); - } - + pthread_cleanup_pop_tls(tls, execute); sched_unlock(); } void pthread_cleanup_push(pthread_cleanup_t routine, FAR void *arg) { - FAR struct tcb_s *tcb = this_task(); + FAR struct tls_info_s *tls = up_tls_info(); - DEBUGASSERT(tcb != NULL); - DEBUGASSERT(tcb->tos < CONFIG_PTHREAD_CLEANUP_STACKSIZE); + DEBUGASSERT(tls != NULL); + DEBUGASSERT(tls->tos < CONFIG_PTHREAD_CLEANUP_STACKSIZE); /* sched_lock() should provide sufficient protection. We only need to * have this TCB stationary; the pthread cleanup stack should never be @@ -154,14 +151,13 @@ void pthread_cleanup_push(pthread_cleanup_t routine, FAR void *arg) */ sched_lock(); - if ((tcb->flags & TCB_FLAG_TTYPE_MASK) != TCB_FLAG_TTYPE_KERNEL && - tcb->tos < CONFIG_PTHREAD_CLEANUP_STACKSIZE) + if (tls->tos < CONFIG_PTHREAD_CLEANUP_STACKSIZE) { - unsigned int ndx = tcb->tos; + unsigned int ndx = tls->tos; - tcb->tos++; - tcb->stack[ndx].pc_cleaner = routine; - tcb->stack[ndx].pc_arg = arg; + tls->tos++; + tls->stack[ndx].pc_cleaner = routine; + tls->stack[ndx].pc_arg = arg; } sched_unlock(); @@ -176,89 +172,26 @@ void pthread_cleanup_push(pthread_cleanup_t routine, FAR void *arg) * within the pthread_exit() and pthread_cancellation() logic * * Input Parameters: - * tcb - The TCB of the pthread that is exiting or being canceled. + * None * * Returned Value: * None * ****************************************************************************/ -void pthread_cleanup_popall(FAR struct tcb_s *tcb) +void pthread_cleanup_popall(void) { - DEBUGASSERT(tcb != NULL); + FAR struct tls_info_s *tls = up_tls_info(); - /* Kernel threads do not support pthread APIs */ + DEBUGASSERT(tls != NULL); - if ((tcb->flags & TCB_FLAG_TTYPE_MASK) != TCB_FLAG_TTYPE_KERNEL) + sched_lock(); + while (tls->tos > 0) { - /* Pop and execute each cleanup routine/ - * - * sched_lock() should provide sufficient protection. We only need to - * have this TCB stationary; the pthread cleanup stack should never be - * modified by interrupt level logic. - */ - - sched_lock(); - while (tcb->tos > 0) - { - pthread_cleanup_pop_tcb(tcb, 1); - } - - sched_unlock(); - } -} - -/**************************************************************************** - * Name: pthread_cleanup_poplist - * - * Description: - * The pthread_cleanup_poplist() is function that will pop all clean-up - * functions. This function is only called from within the pthread_exit() - * - * Input Parameters: - * cleanup - The array of struct pthread_cleanup_s to fetch callbacks - * - * Returned Value: - * The index to the next available entry at the top of the stack - * - ****************************************************************************/ - -int pthread_cleanup_poplist(FAR struct pthread_cleanup_s *cleanup) -{ - uint8_t tos = 0; - uint8_t ndx = 0; - FAR struct tcb_s *tcb = this_task(); - - DEBUGASSERT(cleanup != NULL); - DEBUGASSERT(tcb != NULL); - DEBUGASSERT(tcb->tos < CONFIG_PTHREAD_CLEANUP_STACKSIZE); - - tos = tcb->tos; - - /* Kernel threads do not support pthread APIs */ - - if ((tcb->flags & TCB_FLAG_TTYPE_MASK) != TCB_FLAG_TTYPE_KERNEL) - { - /* Pop cleanup routine list - * - * sched_lock() should provide sufficient protection. We only need to - * have this TCB stationary; the pthread cleanup stack should never be - * modified by interrupt level logic. - */ - - sched_lock(); - while (tcb->tos > 0) - { - ndx = tcb->tos - 1; - DEBUGASSERT(ndx >= 0 && ndx < CONFIG_PTHREAD_CLEANUP_STACKSIZE); - cleanup[ndx] = tcb->stack[ndx]; - tcb->tos = ndx; - } - - sched_unlock(); + pthread_cleanup_pop_tls(tls, 1); } - return tos; + sched_unlock(); } #endif /* CONFIG_PTHREAD_CLEANUP */ diff --git a/libs/libc/pthread/pthread_exit.c b/libs/libc/pthread/pthread_exit.c index 71271d96082..740a32584e8 100644 --- a/libs/libc/pthread/pthread_exit.c +++ b/libs/libc/pthread/pthread_exit.c @@ -52,19 +52,7 @@ void pthread_exit(FAR void *exit_value) { #ifdef CONFIG_PTHREAD_CLEANUP - int cnt; - struct pthread_cleanup_s cleanup[CONFIG_PTHREAD_CLEANUP_STACKSIZE]; - cnt = pthread_cleanup_poplist(cleanup); - - sched_lock(); - while (cnt-- > 0) - { - struct pthread_cleanup_s cp = cleanup[cnt]; - if (cp.pc_cleaner) - cp.pc_cleaner(cp.pc_arg); - } - - sched_unlock(); + pthread_cleanup_popall(); #endif nx_pthread_exit(exit_value); diff --git a/sched/pthread/Make.defs b/sched/pthread/Make.defs index 2a3b58dba52..681fe3ec3a5 100644 --- a/sched/pthread/Make.defs +++ b/sched/pthread/Make.defs @@ -38,10 +38,6 @@ ifeq ($(CONFIG_SMP),y) CSRCS += pthread_setaffinity.c pthread_getaffinity.c endif -ifeq ($(CONFIG_PTHREAD_CLEANUP),y) -CSRCS += pthread_cleanup.c -endif - # Include pthread build support DEPPATH += --dep-path pthread diff --git a/sched/pthread/pthread.h b/sched/pthread/pthread.h index a2ca1828795..db04ba234a9 100644 --- a/sched/pthread/pthread.h +++ b/sched/pthread/pthread.h @@ -81,10 +81,6 @@ struct task_group_s; /* Forward reference */ int pthread_setup_scheduler(FAR struct pthread_tcb_s *tcb, int priority, start_t start, pthread_startroutine_t entry); -#ifdef CONFIG_PTHREAD_CLEANUP -void pthread_cleanup_popall(FAR struct tcb_s *tcb); -#endif - int pthread_completejoin(pid_t pid, FAR void *exit_value); void pthread_destroyjoin(FAR struct task_group_s *group, FAR struct join_s *pjoin); diff --git a/sched/pthread/pthread_cancel.c b/sched/pthread/pthread_cancel.c index dcc58f6390f..d2dc2f38334 100644 --- a/sched/pthread/pthread_cancel.c +++ b/sched/pthread/pthread_cancel.c @@ -85,19 +85,6 @@ int pthread_cancel(pthread_t thread) pthread_exit(PTHREAD_CANCELED); } -#ifdef CONFIG_PTHREAD_CLEANUP - /* Perform any stack pthread clean-up callbacks. - * - * REVISIT: In this case, the clean-up callback will execute on the - * thread of the caller of pthread cancel, not on the thread of - * the thread-to-be-canceled. This is a problem when deferred - * cancellation is not supported because, for example, the clean-up - * function will be unable to unlock its own mutexes. - */ - - pthread_cleanup_popall(tcb); -#endif - /* Complete pending join operations */ pthread_completejoin((pid_t)thread, PTHREAD_CANCELED); diff --git a/sched/task/exit.c b/sched/task/exit.c index 16fbceff1e4..97d0b7a05b3 100644 --- a/sched/task/exit.c +++ b/sched/task/exit.c @@ -87,12 +87,6 @@ void exit(int status) group_kill_children(tcb); #endif -#ifdef CONFIG_PTHREAD_CLEANUP - /* Perform any stack pthread clean-up callbacks */ - - pthread_cleanup_popall(tcb); -#endif - #if !defined(CONFIG_DISABLE_PTHREAD) && !defined(CONFIG_PTHREAD_MUTEX_UNSAFE) /* Recover any mutexes still held by the canceled thread */ diff --git a/syscall/syscall.csv b/syscall/syscall.csv index e88cf9e83c2..8502cc0b51d 100644 --- a/syscall/syscall.csv +++ b/syscall/syscall.csv @@ -83,9 +83,6 @@ "pread","unistd.h","","ssize_t","int","FAR void *","size_t","off_t" "pselect","sys/select.h","","int","int","FAR fd_set *","FAR fd_set *","FAR fd_set *","FAR const struct timespec *","FAR const sigset_t *" "pthread_cancel","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","pthread_t" -"pthread_cleanup_pop","pthread.h","defined(CONFIG_PTHREAD_CLEANUP)","void","int" -"pthread_cleanup_poplist","nuttx/pthread.h","defined(CONFIG_PTHREAD_CLEANUP)","int","struct pthread_cleanup_s *" -"pthread_cleanup_push","pthread.h","defined(CONFIG_PTHREAD_CLEANUP)","void","pthread_cleanup_t","FAR void *" "pthread_cond_broadcast","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_cond_t *" "pthread_cond_clockwait","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_cond_t *","FAR pthread_mutex_t *","clockid_t","FAR const struct timespec *" "pthread_cond_signal","pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","FAR pthread_cond_t *" From 81a01d089b7fa3be3ed94971712ac97500dfdb87 Mon Sep 17 00:00:00 2001 From: Huang Qi Date: Thu, 6 May 2021 16:01:16 +0800 Subject: [PATCH 188/739] libc/pthread: Fix comment and document issue Signed-off-by: Huang Qi --- arch/arm/src/armv7-a/arm_syscall.c | 2 +- arch/arm/src/armv7-r/arm_syscall.c | 2 +- arch/risc-v/src/common/riscv_pthread_start.c | 2 +- include/nuttx/pthread.h | 16 +++++++++------- libs/libc/pthread/pthread_exit.c | 2 +- sched/pthread/pthread_create.c | 12 +++++++----- sched/pthread/pthread_exit.c | 2 +- 7 files changed, 21 insertions(+), 17 deletions(-) diff --git a/arch/arm/src/armv7-a/arm_syscall.c b/arch/arm/src/armv7-a/arm_syscall.c index e71a6b0457f..985dc637d3f 100644 --- a/arch/arm/src/armv7-a/arm_syscall.c +++ b/arch/arm/src/armv7-a/arm_syscall.c @@ -293,7 +293,7 @@ uint32_t *arm_syscall(uint32_t *regs) #if !defined(CONFIG_BUILD_FLAT) && !defined(CONFIG_DISABLE_PTHREAD) case SYS_pthread_start: { - /* Set up to return to the user-space pthread start-up function in + /* Set up to enter the user-space pthread start-up function in * unprivileged mode. We need: * * R0 = entrypt diff --git a/arch/arm/src/armv7-r/arm_syscall.c b/arch/arm/src/armv7-r/arm_syscall.c index ea827bf8932..29095d0588c 100644 --- a/arch/arm/src/armv7-r/arm_syscall.c +++ b/arch/arm/src/armv7-r/arm_syscall.c @@ -288,7 +288,7 @@ uint32_t *arm_syscall(uint32_t *regs) #if !defined(CONFIG_BUILD_FLAT) && !defined(CONFIG_DISABLE_PTHREAD) case SYS_pthread_start: { - /* Set up to return to the user-space pthread start-up function in + /* Set up to enter the user-space pthread start-up function in * unprivileged mode. We need: * * R0 = startup diff --git a/arch/risc-v/src/common/riscv_pthread_start.c b/arch/risc-v/src/common/riscv_pthread_start.c index 723f7ca14b2..20b5608a9b7 100644 --- a/arch/risc-v/src/common/riscv_pthread_start.c +++ b/arch/risc-v/src/common/riscv_pthread_start.c @@ -64,7 +64,7 @@ void up_pthread_start(pthread_trampoline_t startup, pthread_startroutine_t entrypt, pthread_addr_t arg) { - /* Let sys_call2() do all of the work */ + /* Let sys_call3() do all of the work */ sys_call3(SYS_pthread_start, (uintptr_t)startup, (uintptr_t)entrypt, (uintptr_t)arg); diff --git a/include/nuttx/pthread.h b/include/nuttx/pthread.h index aa21cd65c56..d8e30aa622b 100644 --- a/include/nuttx/pthread.h +++ b/include/nuttx/pthread.h @@ -133,11 +133,13 @@ EXTERN const pthread_attr_t g_default_pthread_attr; * attributes. * * Input Parameters: - * trampoline - * thread - * attr - * start_routine - * arg + * trampoline - The user space startup function + * thread - The pthread handle to be used + * attr - It points to a pthread_attr_t structure whose contents are + * used at thread creation time to determine attributes + * for the new thread + * entry - The new thread starts execution by invoking entry + * arg - It is passed as the sole argument of entry * * Returned Value: * OK (0) on success; a (non-negated) errno value on failure. The errno @@ -156,7 +158,7 @@ int nx_pthread_create(pthread_trampoline_t trampoline, FAR pthread_t *thread, * Terminate execution of a thread started with pthread_create. * * Input Parameters: - * exit_valie + * exit_value * * Returned Value: * None @@ -176,7 +178,7 @@ void nx_pthread_exit(FAR void *exit_value) noreturn_function; * within the pthread_exit() and pthread_cancellation() logic * * Input Parameters: - * tcb - The TCB of the pthread that is exiting or being canceled. + * None * * Returned Value: * None diff --git a/libs/libc/pthread/pthread_exit.c b/libs/libc/pthread/pthread_exit.c index 740a32584e8..2e456b6c081 100644 --- a/libs/libc/pthread/pthread_exit.c +++ b/libs/libc/pthread/pthread_exit.c @@ -40,7 +40,7 @@ * Terminate execution of a thread started with pthread_create. * * Input Parameters: - * exit_valie + * exit_value * * Returned Value: * None diff --git a/sched/pthread/pthread_create.c b/sched/pthread/pthread_create.c index 22cd008ed16..ade4dc65507 100644 --- a/sched/pthread/pthread_create.c +++ b/sched/pthread/pthread_create.c @@ -208,11 +208,13 @@ static void pthread_start(void) * attributes. * * Input Parameters: - * trampoline - * thread - * attr - * start_routine - * arg + * trampoline - The user space startup function + * thread - The pthread handle to be used + * attr - It points to a pthread_attr_t structure whose contents are + * used at thread creation time to determine attributes + * for the new thread + * entry - The new thread starts execution by invoking entry + * arg - It is passed as the sole argument of entry * * Returned Value: * OK (0) on success; a (non-negated) errno value on failure. The errno diff --git a/sched/pthread/pthread_exit.c b/sched/pthread/pthread_exit.c index a7704abc0dd..4d55560f533 100644 --- a/sched/pthread/pthread_exit.c +++ b/sched/pthread/pthread_exit.c @@ -50,7 +50,7 @@ * Terminate execution of a thread started with pthread_create. * * Input Parameters: - * exit_valie + * exit_value * * Returned Value: * None From f4a0b7aedd01ac3f39a88d62dbafaf367ae399f2 Mon Sep 17 00:00:00 2001 From: Huang Qi Date: Sat, 8 May 2021 18:20:02 +0800 Subject: [PATCH 189/739] libc: Call pthread_exit in user-space by up_pthread_exit Drop to user-space in kernel/protected build with up_pthread_exit, now all pthread_cleanup functions executed in user mode. * A new syscall SYS_pthread_exit added * A new tcb flag TCB_FLAG_CANCEL_DOING added * up_pthread_exit implemented for riscv/arm arch Signed-off-by: Huang Qi --- arch/arm/src/a1x/Make.defs | 1 + arch/arm/src/am335x/Make.defs | 1 + arch/arm/src/armv6-m/arm_svcall.c | 43 +++++++++++-- arch/arm/src/armv6-m/svcall.h | 6 +- arch/arm/src/armv7-a/arm_syscall.c | 43 ++++++++----- arch/arm/src/armv7-a/svcall.h | 11 +++- arch/arm/src/armv7-m/arm_svcall.c | 41 ++++++++++-- arch/arm/src/armv7-m/svcall.h | 13 +++- arch/arm/src/armv7-r/arm_syscall.c | 47 +++++++++----- arch/arm/src/armv8-m/arm_svcall.c | 43 +++++++++++-- arch/arm/src/common/arm_pthread_exit.c | 62 +++++++++++++++++++ arch/arm/src/cxd56xx/Make.defs | 1 + arch/arm/src/efm32/Make.defs | 1 + arch/arm/src/eoss3/Make.defs | 1 + arch/arm/src/imx6/Make.defs | 1 + arch/arm/src/imxrt/Make.defs | 1 + arch/arm/src/kinetis/Make.defs | 1 + arch/arm/src/kl/Make.defs | 1 + arch/arm/src/lc823450/Make.defs | 1 + arch/arm/src/lpc17xx_40xx/Make.defs | 1 + arch/arm/src/lpc43xx/Make.defs | 1 + arch/arm/src/lpc54xx/Make.defs | 1 + arch/arm/src/max326xx/Make.defs | 1 + arch/arm/src/nrf52/Make.defs | 1 + arch/arm/src/nuc1xx/Make.defs | 1 + arch/arm/src/rp2040/Make.defs | 1 + arch/arm/src/s32k1xx/Make.defs | 1 + arch/arm/src/sam34/Make.defs | 1 + arch/arm/src/sama5/Make.defs | 1 + arch/arm/src/samd2l2/Make.defs | 1 + arch/arm/src/samd5e5/Make.defs | 1 + arch/arm/src/samv7/Make.defs | 1 + arch/arm/src/stm32/Make.defs | 2 +- arch/arm/src/stm32f0l0g0/Make.defs | 1 + arch/arm/src/stm32f7/Make.defs | 1 + arch/arm/src/stm32h7/Make.defs | 1 + arch/arm/src/stm32l4/Make.defs | 1 + arch/arm/src/stm32l5/Make.defs | 1 + arch/arm/src/tiva/Make.defs | 1 + arch/arm/src/tms570/Make.defs | 1 + arch/arm/src/xmc4/Make.defs | 1 + arch/or1k/src/common/up_pthread_start.c | 2 +- arch/risc-v/src/c906/Make.defs | 1 + arch/risc-v/src/common/riscv_pthread_exit.c | 60 ++++++++++++++++++ arch/risc-v/src/k210/Make.defs | 3 +- arch/risc-v/src/rv64gc/riscv_swint.c | 45 +++++++++++--- arch/risc-v/src/rv64gc/svcall.h | 15 +++-- .../imxrt1050-evk/configs/knsh/defconfig | 2 +- .../imxrt1060-evk/configs/knsh/defconfig | 2 +- .../imxrt1064-evk/configs/knsh/defconfig | 2 +- .../lc823450-xgevk/configs/knsh/defconfig | 2 +- .../lc823450-xgevk/configs/kostest/defconfig | 2 +- .../lc823450-xgevk/configs/krndis/defconfig | 2 +- .../lpc4088-devkit/configs/knsh/defconfig | 2 +- .../lpc4088-quickstart/configs/knsh/defconfig | 2 +- .../open1788/configs/knsh/defconfig | 2 +- .../open1788/configs/knxterm/defconfig | 2 +- .../pnev5180b/configs/knsh/defconfig | 2 +- .../bambino-200e/configs/knsh/defconfig | 2 +- .../arm/sam34/sam3u-ek/configs/knsh/defconfig | 2 +- .../sama5/sama5d4-ek/configs/knsh/defconfig | 2 +- .../samv7/samv71-xult/configs/knsh/defconfig | 2 +- .../clicker2-stm32/configs/knsh/defconfig | 2 +- .../mikroe-stm32f4/configs/kostest/defconfig | 2 +- .../olimex-stm32-p407/configs/kelf/defconfig | 2 +- .../configs/kmodule/defconfig | 2 +- .../olimex-stm32-p407/configs/knsh/defconfig | 2 +- .../stm3240g-eval/configs/knxwm/defconfig | 2 +- .../configs/kostest/defconfig | 2 +- .../stm32l476vg-disco/configs/knsh/defconfig | 2 +- .../stm32l4r9ai-disco/configs/knsh/defconfig | 2 +- .../configs/qemu-protected/defconfig | 2 +- .../c906/smartl-c906/configs/knsh/defconfig | 2 +- .../k210/maix-bit/configs/knsh/defconfig | 2 +- .../k210/maix-bit/configs/knsh_smp/defconfig | 2 +- .../k210/maix-bit/configs/kostest/defconfig | 2 +- include/nuttx/arch.h | 23 ++++++- include/nuttx/pthread.h | 6 +- include/nuttx/sched.h | 12 ++-- include/pthread.h | 2 + include/sys/syscall_lookup.h | 2 +- libs/libc/pthread/pthread_create.c | 2 +- libs/libc/pthread/pthread_exit.c | 2 +- sched/pthread/pthread_cancel.c | 10 +++ sched/pthread/pthread_create.c | 19 ++++-- sched/signal/sig_default.c | 10 ++- sched/task/task_cancelpt.c | 17 +++++ sched/task/task_setcancelstate.c | 8 +++ sched/task/task_setcanceltype.c | 10 ++- syscall/syscall.csv | 2 +- 90 files changed, 533 insertions(+), 118 deletions(-) create mode 100644 arch/arm/src/common/arm_pthread_exit.c create mode 100644 arch/risc-v/src/common/riscv_pthread_exit.c diff --git a/arch/arm/src/a1x/Make.defs b/arch/arm/src/a1x/Make.defs index 8cb5a8fb269..a547ebecdc2 100644 --- a/arch/arm/src/a1x/Make.defs +++ b/arch/arm/src/a1x/Make.defs @@ -74,6 +74,7 @@ endif ifeq ($(CONFIG_BUILD_KERNEL),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c arm_signal_dispatch.c +CMN_CSRCS += arm_pthread_exit.c endif ifeq ($(CONFIG_ARCH_ADDRENV),y) diff --git a/arch/arm/src/am335x/Make.defs b/arch/arm/src/am335x/Make.defs index b8a7ed51bd8..df6f7fec44c 100644 --- a/arch/arm/src/am335x/Make.defs +++ b/arch/arm/src/am335x/Make.defs @@ -70,6 +70,7 @@ endif ifeq ($(CONFIG_BUILD_KERNEL),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c arm_signal_dispatch.c +CMN_CSRCS += arm_pthread_exit.c endif ifeq ($(CONFIG_ARCH_ADDRENV),y) diff --git a/arch/arm/src/armv6-m/arm_svcall.c b/arch/arm/src/armv6-m/arm_svcall.c index 0339cccd13e..6517b4c0f12 100644 --- a/arch/arm/src/armv6-m/arm_svcall.c +++ b/arch/arm/src/armv6-m/arm_svcall.c @@ -298,26 +298,28 @@ int arm_svcall(int irq, FAR void *context, FAR void *arg) break; #endif +#if !defined(CONFIG_BUILD_FLAT) && !defined(CONFIG_DISABLE_PTHREAD) + /* R0=SYS_pthread_start: This a user pthread start * - * void up_pthread_start(pthread_startroutine_t entrypt, - * pthread_addr_t arg) noreturn_function; + * void up_pthread_start(pthread_trampoline_t startup, + * pthread_startroutine_t entrypt, pthread_addr_t arg) * * At this point, the following values are saved in context: * * R0 = SYS_pthread_start - * R1 = entrypt - * R2 = arg + * R1 = startup + * R2 = entrypt + * R3 = arg */ -#if !defined(CONFIG_BUILD_FLAT) && !defined(CONFIG_DISABLE_PTHREAD) case SYS_pthread_start: { /* Set up to return to the user-space pthread start-up function in * unprivileged mode. */ - regs[REG_PC] = (uint32_t)regs[REG_R1]; /* startup */ + regs[REG_PC] = (uint32_t)regs[REG_R1] & ~1; /* startup */ regs[REG_EXC_RETURN] = EXC_RETURN_UNPRIVTHR; /* Change the parameter ordering to match the expectation of the @@ -328,6 +330,35 @@ int arm_svcall(int irq, FAR void *context, FAR void *arg) regs[REG_R1] = regs[REG_R3]; /* arg */ } break; + + /* R0=SYS_pthread_exit: This pthread_exit call in user-space + * + * void up_pthread_exit(pthread_exitroutine_t exit, + * FAR void *exit_value) + * + * At this point, the following values are saved in context: + * + * R0 = SYS_pthread_exit + * R1 = pthread_exit trampoline routine + * R2 = exit_value + */ + + case SYS_pthread_exit: + { + /* Set up to return to the user-space pthread start-up function in + * unprivileged mode. + */ + + regs[REG_PC] = (uint32_t)regs[REG_R1] & ~1; /* startup */ + regs[REG_EXC_RETURN] = EXC_RETURN_UNPRIVTHR; + + /* Change the parameter ordering to match the expectation of the + * user space pthread_startup: + */ + + regs[REG_R0] = regs[REG_R2]; /* exit_value */ + } + break; #endif /* R0=SYS_signal_handler: This a user signal handler callback diff --git a/arch/arm/src/armv6-m/svcall.h b/arch/arm/src/armv6-m/svcall.h index a790f58d4d9..0b0f8d7cd82 100644 --- a/arch/arm/src/armv6-m/svcall.h +++ b/arch/arm/src/armv6-m/svcall.h @@ -45,9 +45,9 @@ #ifdef CONFIG_LIB_SYSCALL # ifdef CONFIG_BUILD_PROTECTED # ifndef CONFIG_SYS_RESERVED -# error "CONFIG_SYS_RESERVED must be defined to have the value 8" -# elif CONFIG_SYS_RESERVED != 8 -# error "CONFIG_SYS_RESERVED must have the value 8" +# error "CONFIG_SYS_RESERVED must be defined to have the value 9" +# elif CONFIG_SYS_RESERVED != 9 +# error "CONFIG_SYS_RESERVED must have the value 9" # endif # else # ifndef CONFIG_SYS_RESERVED diff --git a/arch/arm/src/armv7-a/arm_syscall.c b/arch/arm/src/armv7-a/arm_syscall.c index 985dc637d3f..999d1b1df20 100644 --- a/arch/arm/src/armv7-a/arm_syscall.c +++ b/arch/arm/src/armv7-a/arm_syscall.c @@ -278,30 +278,23 @@ uint32_t *arm_syscall(uint32_t *regs) break; #endif +#if !defined(CONFIG_BUILD_FLAT) && !defined(CONFIG_DISABLE_PTHREAD) + /* R0=SYS_pthread_start: This a user pthread start * - * void up_pthread_start(pthread_startroutine_t entrypt, - * pthread_addr_t arg) noreturn_function; + * void up_pthread_start(pthread_trampoline_t startup, + * pthread_startroutine_t entrypt, pthread_addr_t arg) * * At this point, the following values are saved in context: * * R0 = SYS_pthread_start - * R1 = entrypt - * R2 = arg + * R1 = startup + * R2 = entrypt + * R3 = arg */ -#if !defined(CONFIG_BUILD_FLAT) && !defined(CONFIG_DISABLE_PTHREAD) case SYS_pthread_start: { - /* Set up to enter the user-space pthread start-up function in - * unprivileged mode. We need: - * - * R0 = entrypt - * R1 = arg - * PC = startup - * CSPR = user mode - */ - regs[REG_PC] = regs[REG_R0]; regs[REG_R0] = regs[REG_R1]; regs[REG_R1] = regs[REG_R2]; @@ -310,6 +303,28 @@ uint32_t *arm_syscall(uint32_t *regs) regs[REG_CPSR] = cpsr | PSR_MODE_USR; } break; + + /* R0=SYS_pthread_exit: This pthread_exit call in user-space + * + * void up_pthread_exit(pthread_exitroutine_t exit, + * FAR void *exit_value) + * + * At this point, the following values are saved in context: + * + * R0 = SYS_pthread_exit + * R1 = pthread_exit trampoline routine + * R2 = exit_value + */ + + case SYS_pthread_exit: + { + regs[REG_PC] = regs[REG_R0]; + regs[REG_R0] = regs[REG_R1]; + + cpsr = regs[REG_CPSR] & ~PSR_MODE_MASK; + regs[REG_CPSR] = cpsr | PSR_MODE_USR; + } + break; #endif #ifdef CONFIG_BUILD_KERNEL diff --git a/arch/arm/src/armv7-a/svcall.h b/arch/arm/src/armv7-a/svcall.h index 27dc8755108..d22fde1c87b 100644 --- a/arch/arm/src/armv7-a/svcall.h +++ b/arch/arm/src/armv7-a/svcall.h @@ -44,8 +44,8 @@ #ifdef CONFIG_BUILD_KERNEL # ifndef CONFIG_SYS_RESERVED -# error "CONFIG_SYS_RESERVED must be defined to have the value 6" -# elif CONFIG_SYS_RESERVED != 6 +# error "CONFIG_SYS_RESERVED must be defined to have the value 7" +# elif CONFIG_SYS_RESERVED != 7 # error "CONFIG_SYS_RESERVED must have the value 6" # endif #else @@ -109,6 +109,13 @@ #define SYS_pthread_start (3) +/* SYS call 8: + * + * void up_pthread_exit(pthread_exitroutine_t exit, FAR void *exit_value) + */ + +#define SYS_pthread_exit (6) + #endif /* CONFIG_BUILD_KERNEL */ /**************************************************************************** diff --git a/arch/arm/src/armv7-m/arm_svcall.c b/arch/arm/src/armv7-m/arm_svcall.c index 6119ee62971..ca38d1b60ab 100644 --- a/arch/arm/src/armv7-m/arm_svcall.c +++ b/arch/arm/src/armv7-m/arm_svcall.c @@ -312,19 +312,21 @@ int arm_svcall(int irq, FAR void *context, FAR void *arg) break; #endif +#if !defined(CONFIG_BUILD_FLAT) && !defined(CONFIG_DISABLE_PTHREAD) + /* R0=SYS_pthread_start: This a user pthread start * - * void up_pthread_start(pthread_startroutine_t entrypt, - * pthread_addr_t arg) noreturn_function; + * void up_pthread_start(pthread_trampoline_t startup, + * pthread_startroutine_t entrypt, pthread_addr_t arg) * * At this point, the following values are saved in context: * * R0 = SYS_pthread_start - * R1 = entrypt - * R2 = arg + * R1 = startup + * R2 = entrypt + * R3 = arg */ -#if !defined(CONFIG_BUILD_FLAT) && !defined(CONFIG_DISABLE_PTHREAD) case SYS_pthread_start: { /* Set up to return to the user-space pthread start-up function in @@ -342,6 +344,35 @@ int arm_svcall(int irq, FAR void *context, FAR void *arg) regs[REG_R1] = regs[REG_R3]; /* arg */ } break; + + /* R0=SYS_pthread_exit: This pthread_exit call in user-space + * + * void up_pthread_exit(pthread_exitroutine_t exit, + * FAR void *exit_value) + * + * At this point, the following values are saved in context: + * + * R0 = SYS_pthread_exit + * R1 = pthread_exit trampoline routine + * R2 = exit_value + */ + + case SYS_pthread_exit: + { + /* Set up to return to the user-space pthread start-up function in + * unprivileged mode. + */ + + regs[REG_PC] = (uint32_t)regs[REG_R1] & ~1; /* startup */ + regs[REG_EXC_RETURN] = EXC_RETURN_UNPRIVTHR; + + /* Change the parameter ordering to match the expectation of the + * user space pthread_startup: + */ + + regs[REG_R0] = regs[REG_R2]; /* exit_value */ + } + break; #endif /* R0=SYS_signal_handler: This a user signal handler callback diff --git a/arch/arm/src/armv7-m/svcall.h b/arch/arm/src/armv7-m/svcall.h index 98a574e8701..1fd56ea4c4c 100644 --- a/arch/arm/src/armv7-m/svcall.h +++ b/arch/arm/src/armv7-m/svcall.h @@ -45,9 +45,9 @@ #ifdef CONFIG_LIB_SYSCALL # ifdef CONFIG_BUILD_PROTECTED # ifndef CONFIG_SYS_RESERVED -# error "CONFIG_SYS_RESERVED must be defined to have the value 8" -# elif CONFIG_SYS_RESERVED != 8 -# error "CONFIG_SYS_RESERVED must have the value 8" +# error "CONFIG_SYS_RESERVED must be defined to have the value 9" +# elif CONFIG_SYS_RESERVED != 9 +# error "CONFIG_SYS_RESERVED must have the value 9" # endif # else # ifndef CONFIG_SYS_RESERVED @@ -126,6 +126,13 @@ #define SYS_pthread_start (5) +/* SYS call 8: + * + * void up_pthread_exit(pthread_exitroutine_t exit, FAR void *exit_value) + */ + +#define SYS_pthread_exit (8) + #endif /* !CONFIG_BUILD_FLAT */ #endif /* CONFIG_LIB_SYSCALL */ diff --git a/arch/arm/src/armv7-r/arm_syscall.c b/arch/arm/src/armv7-r/arm_syscall.c index 29095d0588c..367c41cf8e7 100644 --- a/arch/arm/src/armv7-r/arm_syscall.c +++ b/arch/arm/src/armv7-r/arm_syscall.c @@ -273,33 +273,48 @@ uint32_t *arm_syscall(uint32_t *regs) break; #endif +#if !defined(CONFIG_BUILD_FLAT) && !defined(CONFIG_DISABLE_PTHREAD) + /* R0=SYS_pthread_start: This a user pthread start * - * void up_pthread_start(pthread_startroutine_t entrypt, - * pthread_addr_t arg) noreturn_function; + * void up_pthread_start(pthread_trampoline_t startup, + * pthread_startroutine_t entrypt, pthread_addr_t arg) * * At this point, the following values are saved in context: * * R0 = SYS_pthread_start - * R1 = entrypt - * R2 = arg + * R1 = startup + * R2 = entrypt + * R3 = arg */ -#if !defined(CONFIG_BUILD_FLAT) && !defined(CONFIG_DISABLE_PTHREAD) case SYS_pthread_start: { - /* Set up to enter the user-space pthread start-up function in - * unprivileged mode. We need: - * - * R0 = startup - * R1 = arg - * PC = entrypt - * CSPR = user mode - */ + regs[REG_PC] = regs[REG_R0]; + regs[REG_R0] = regs[REG_R1]; + regs[REG_R1] = regs[REG_R2]; - regs[REG_PC] = regs[REG_R1]; - regs[REG_R0] = regs[REG_R2]; - regs[REG_R1] = regs[REG_R3]; + cpsr = regs[REG_CPSR] & ~PSR_MODE_MASK; + regs[REG_CPSR] = cpsr | PSR_MODE_USR; + } + break; + + /* R0=SYS_pthread_exit: This pthread_exit call in user-space + * + * void up_pthread_exit(pthread_exitroutine_t exit, + * FAR void *exit_value) + * + * At this point, the following values are saved in context: + * + * R0 = SYS_pthread_exit + * R1 = pthread_exit trampoline routine + * R2 = exit_value + */ + + case SYS_pthread_exit: + { + regs[REG_PC] = regs[REG_R0]; + regs[REG_R0] = regs[REG_R1]; cpsr = regs[REG_CPSR] & ~PSR_MODE_MASK; regs[REG_CPSR] = cpsr | PSR_MODE_USR; diff --git a/arch/arm/src/armv8-m/arm_svcall.c b/arch/arm/src/armv8-m/arm_svcall.c index f0757c77128..4f57fb30270 100644 --- a/arch/arm/src/armv8-m/arm_svcall.c +++ b/arch/arm/src/armv8-m/arm_svcall.c @@ -311,19 +311,21 @@ int arm_svcall(int irq, FAR void *context, FAR void *arg) break; #endif +#if !defined(CONFIG_BUILD_FLAT) && !defined(CONFIG_DISABLE_PTHREAD) + /* R0=SYS_pthread_start: This a user pthread start * - * void up_pthread_start(pthread_startroutine_t entrypt, - * pthread_addr_t arg) noreturn_function; + * void up_pthread_start(pthread_trampoline_t startup, + * pthread_startroutine_t entrypt, pthread_addr_t arg) * * At this point, the following values are saved in context: * * R0 = SYS_pthread_start - * R1 = entrypt - * R2 = arg + * R1 = startup + * R2 = entrypt + * R3 = arg */ -#if !defined(CONFIG_BUILD_FLAT) && !defined(CONFIG_DISABLE_PTHREAD) case SYS_pthread_start: { /* Set up to return to the user-space pthread start-up function in @@ -338,7 +340,36 @@ int arm_svcall(int irq, FAR void *context, FAR void *arg) */ regs[REG_R0] = regs[REG_R2]; /* pthread entry */ - regs[REG_R1] = regs[REG_R2]; /* arg */ + regs[REG_R1] = regs[REG_R3]; /* arg */ + } + break; + + /* R0=SYS_pthread_exit: This pthread_exit call in user-space + * + * void up_pthread_exit(pthread_exitroutine_t exit, + * FAR void *exit_value) + * + * At this point, the following values are saved in context: + * + * R0 = SYS_pthread_exit + * R1 = pthread_exit trampoline routine + * R2 = exit_value + */ + + case SYS_pthread_exit: + { + /* Set up to return to the user-space pthread start-up function in + * unprivileged mode. + */ + + regs[REG_PC] = (uint32_t)regs[REG_R1] & ~1; /* startup */ + regs[REG_EXC_RETURN] = EXC_RETURN_UNPRIVTHR; + + /* Change the parameter ordering to match the expectation of the + * user space pthread_startup: + */ + + regs[REG_R0] = regs[REG_R2]; /* exit_value */ } break; #endif diff --git a/arch/arm/src/common/arm_pthread_exit.c b/arch/arm/src/common/arm_pthread_exit.c new file mode 100644 index 00000000000..ba7eb825d2b --- /dev/null +++ b/arch/arm/src/common/arm_pthread_exit.c @@ -0,0 +1,62 @@ +/**************************************************************************** + * arch/arm/src/common/arm_pthread_exit.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include +#include + +#include "svcall.h" +#include "arm_internal.h" + +#if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) && \ + !defined(CONFIG_DISABLE_PTHREAD) + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: up_pthread_exit + * + * Description: + * In this kernel mode build, this function will be called to execute a + * pthread in user-space. This kernel-mode stub will then be called + * transfer control to the user-mode pthread_exit. + * + * Input Parameters: + * exit - The user-space pthread_exit function + * exit_value - The pointer of the pthread exit parameter + * + * Returned Value: + * None + ****************************************************************************/ + +void up_pthread_exit(pthread_exitroutine_t exit, FAR void *exit_value) +{ + /* Let sys_call2() do all of the work */ + + sys_call2(SYS_pthread_exit, (uintptr_t)exit, (uintptr_t)exit_value); +} + +#endif /* !CONFIG_BUILD_FLAT && __KERNEL__ && !CONFIG_DISABLE_PTHREAD */ diff --git a/arch/arm/src/cxd56xx/Make.defs b/arch/arm/src/cxd56xx/Make.defs index c61a72fcb97..9ffb394d377 100644 --- a/arch/arm/src/cxd56xx/Make.defs +++ b/arch/arm/src/cxd56xx/Make.defs @@ -51,6 +51,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_mpu.c arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/efm32/Make.defs b/arch/arm/src/efm32/Make.defs index 2f763950eb1..670d1a9132f 100644 --- a/arch/arm/src/efm32/Make.defs +++ b/arch/arm/src/efm32/Make.defs @@ -43,6 +43,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_mpu.c arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/eoss3/Make.defs b/arch/arm/src/eoss3/Make.defs index 3e2bc2f3257..61492fe065d 100644 --- a/arch/arm/src/eoss3/Make.defs +++ b/arch/arm/src/eoss3/Make.defs @@ -43,6 +43,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/imx6/Make.defs b/arch/arm/src/imx6/Make.defs index f04bd17b4c1..bc9884e1030 100644 --- a/arch/arm/src/imx6/Make.defs +++ b/arch/arm/src/imx6/Make.defs @@ -90,6 +90,7 @@ endif ifeq ($(CONFIG_BUILD_KERNEL),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c arm_signal_dispatch.c +CMN_CSRCS += arm_pthread_exit.c endif ifeq ($(CONFIG_ARCH_ADDRENV),y) diff --git a/arch/arm/src/imxrt/Make.defs b/arch/arm/src/imxrt/Make.defs index 5d5946b234e..ba9195ae932 100644 --- a/arch/arm/src/imxrt/Make.defs +++ b/arch/arm/src/imxrt/Make.defs @@ -55,6 +55,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/kinetis/Make.defs b/arch/arm/src/kinetis/Make.defs index 0f2fd14063d..6b3426647e9 100644 --- a/arch/arm/src/kinetis/Make.defs +++ b/arch/arm/src/kinetis/Make.defs @@ -51,6 +51,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/kl/Make.defs b/arch/arm/src/kl/Make.defs index 912223bd066..2f7691745ab 100644 --- a/arch/arm/src/kl/Make.defs +++ b/arch/arm/src/kl/Make.defs @@ -32,6 +32,7 @@ CMN_CSRCS += arm_hardfault.c arm_svcall.c arm_vectors.c arm_vfork.c ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/lc823450/Make.defs b/arch/arm/src/lc823450/Make.defs index 74e92be97bd..4f37e68a7cb 100644 --- a/arch/arm/src/lc823450/Make.defs +++ b/arch/arm/src/lc823450/Make.defs @@ -42,6 +42,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/lpc17xx_40xx/Make.defs b/arch/arm/src/lpc17xx_40xx/Make.defs index 96b01fd0b84..81a1515dfc0 100644 --- a/arch/arm/src/lpc17xx_40xx/Make.defs +++ b/arch/arm/src/lpc17xx_40xx/Make.defs @@ -54,6 +54,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/lpc43xx/Make.defs b/arch/arm/src/lpc43xx/Make.defs index 05d8ba44de9..c42b7774d06 100644 --- a/arch/arm/src/lpc43xx/Make.defs +++ b/arch/arm/src/lpc43xx/Make.defs @@ -47,6 +47,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/lpc54xx/Make.defs b/arch/arm/src/lpc54xx/Make.defs index d40a65d3a14..2f89791d6a8 100644 --- a/arch/arm/src/lpc54xx/Make.defs +++ b/arch/arm/src/lpc54xx/Make.defs @@ -47,6 +47,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/max326xx/Make.defs b/arch/arm/src/max326xx/Make.defs index 628bcdd0518..b4f7e63c93a 100644 --- a/arch/arm/src/max326xx/Make.defs +++ b/arch/arm/src/max326xx/Make.defs @@ -45,6 +45,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_mpu.c arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/nrf52/Make.defs b/arch/arm/src/nrf52/Make.defs index b6b4970593e..b5091bc5c21 100644 --- a/arch/arm/src/nrf52/Make.defs +++ b/arch/arm/src/nrf52/Make.defs @@ -51,6 +51,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_mpu.c arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/nuc1xx/Make.defs b/arch/arm/src/nuc1xx/Make.defs index 85152e72dcc..cd19f8ec884 100644 --- a/arch/arm/src/nuc1xx/Make.defs +++ b/arch/arm/src/nuc1xx/Make.defs @@ -32,6 +32,7 @@ CMN_CSRCS += arm_hardfault.c arm_svcall.c arm_vectors.c arm_vfork.c ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/rp2040/Make.defs b/arch/arm/src/rp2040/Make.defs index a640d43c700..a918e10770d 100644 --- a/arch/arm/src/rp2040/Make.defs +++ b/arch/arm/src/rp2040/Make.defs @@ -36,6 +36,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/s32k1xx/Make.defs b/arch/arm/src/s32k1xx/Make.defs index b9efbae12af..f2cf13047b5 100644 --- a/arch/arm/src/s32k1xx/Make.defs +++ b/arch/arm/src/s32k1xx/Make.defs @@ -31,6 +31,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c endif # Source files common to all S32K1xx chip families. diff --git a/arch/arm/src/sam34/Make.defs b/arch/arm/src/sam34/Make.defs index 2aa370ec183..8f321eee4fc 100644 --- a/arch/arm/src/sam34/Make.defs +++ b/arch/arm/src/sam34/Make.defs @@ -59,6 +59,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/sama5/Make.defs b/arch/arm/src/sama5/Make.defs index 9d9f9d22462..99c58d348ea 100644 --- a/arch/arm/src/sama5/Make.defs +++ b/arch/arm/src/sama5/Make.defs @@ -76,6 +76,7 @@ endif ifeq ($(CONFIG_BUILD_KERNEL),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c arm_signal_dispatch.c +CMN_CSRCS += arm_pthread_exit.c endif ifeq ($(CONFIG_ARCH_ADDRENV),y) diff --git a/arch/arm/src/samd2l2/Make.defs b/arch/arm/src/samd2l2/Make.defs index 7fcf0f3045d..9e30a0eb0ad 100644 --- a/arch/arm/src/samd2l2/Make.defs +++ b/arch/arm/src/samd2l2/Make.defs @@ -32,6 +32,7 @@ CMN_CSRCS += arm_hardfault.c arm_svcall.c arm_vectors.c arm_vfork.c ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/samd5e5/Make.defs b/arch/arm/src/samd5e5/Make.defs index 1750513a0d3..70371810f39 100644 --- a/arch/arm/src/samd5e5/Make.defs +++ b/arch/arm/src/samd5e5/Make.defs @@ -49,6 +49,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_mpu.c arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/samv7/Make.defs b/arch/arm/src/samv7/Make.defs index a49c36982d2..7be09383c91 100644 --- a/arch/arm/src/samv7/Make.defs +++ b/arch/arm/src/samv7/Make.defs @@ -67,6 +67,7 @@ ifeq ($(CONFIG_ARM_MPU),y) CMN_CSRCS += arm_mpu.c ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/stm32/Make.defs b/arch/arm/src/stm32/Make.defs index c5f5a7f7ea0..72852241e02 100644 --- a/arch/arm/src/stm32/Make.defs +++ b/arch/arm/src/stm32/Make.defs @@ -58,7 +58,7 @@ CMN_CSRCS += arm_mpu.c endif ifeq ($(CONFIG_BUILD_PROTECTED),y) -CMN_CSRCS += arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_task_start.c arm_pthread_start.c arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/stm32f0l0g0/Make.defs b/arch/arm/src/stm32f0l0g0/Make.defs index 7ad308c0421..a1084592963 100644 --- a/arch/arm/src/stm32f0l0g0/Make.defs +++ b/arch/arm/src/stm32f0l0g0/Make.defs @@ -32,6 +32,7 @@ CMN_CSRCS += arm_hardfault.c arm_svcall.c arm_vectors.c arm_vfork.c ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/stm32f7/Make.defs b/arch/arm/src/stm32f7/Make.defs index 94bb4632687..71c5981c3bb 100644 --- a/arch/arm/src/stm32f7/Make.defs +++ b/arch/arm/src/stm32f7/Make.defs @@ -73,6 +73,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/stm32h7/Make.defs b/arch/arm/src/stm32h7/Make.defs index d401d0625fd..2a24c0d9540 100644 --- a/arch/arm/src/stm32h7/Make.defs +++ b/arch/arm/src/stm32h7/Make.defs @@ -72,6 +72,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/stm32l4/Make.defs b/arch/arm/src/stm32l4/Make.defs index 59051e66e5e..ca695c82d25 100644 --- a/arch/arm/src/stm32l4/Make.defs +++ b/arch/arm/src/stm32l4/Make.defs @@ -63,6 +63,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/stm32l5/Make.defs b/arch/arm/src/stm32l5/Make.defs index ec53d494b9e..0ce8155a11d 100644 --- a/arch/arm/src/stm32l5/Make.defs +++ b/arch/arm/src/stm32l5/Make.defs @@ -64,6 +64,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_mpu.c arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/tiva/Make.defs b/arch/arm/src/tiva/Make.defs index 272de114aa8..2483799a861 100644 --- a/arch/arm/src/tiva/Make.defs +++ b/arch/arm/src/tiva/Make.defs @@ -65,6 +65,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c + CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S else diff --git a/arch/arm/src/tms570/Make.defs b/arch/arm/src/tms570/Make.defs index 98d5ce56674..6899d55786a 100644 --- a/arch/arm/src/tms570/Make.defs +++ b/arch/arm/src/tms570/Make.defs @@ -59,6 +59,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_mpu.c arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/arm/src/xmc4/Make.defs b/arch/arm/src/xmc4/Make.defs index f9ea0450d1e..66d7669c317 100644 --- a/arch/arm/src/xmc4/Make.defs +++ b/arch/arm/src/xmc4/Make.defs @@ -51,6 +51,7 @@ endif ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += arm_task_start.c arm_pthread_start.c +CMN_CSRCS += arm_pthread_exit.c CMN_CSRCS += arm_signal_dispatch.c CMN_UASRCS += arm_signal_handler.S endif diff --git a/arch/or1k/src/common/up_pthread_start.c b/arch/or1k/src/common/up_pthread_start.c index 8edbd0632ef..29640b698a8 100644 --- a/arch/or1k/src/common/up_pthread_start.c +++ b/arch/or1k/src/common/up_pthread_start.c @@ -63,7 +63,7 @@ void up_pthread_start(pthread_startroutine_t entrypt, pthread_addr_t arg) { - /* Let sys_call2() do all of the work */ + /* Let sys_call3() do all of the work */ sinfo("entry %p arg %p\n", entrypt, arg); diff --git a/arch/risc-v/src/c906/Make.defs b/arch/risc-v/src/c906/Make.defs index a367c4d79a8..8088b461510 100644 --- a/arch/risc-v/src/c906/Make.defs +++ b/arch/risc-v/src/c906/Make.defs @@ -55,6 +55,7 @@ CHIP_CSRCS += c906_start.c c906_timerisr.c ifeq ($(CONFIG_BUILD_PROTECTED),y) CMN_CSRCS += riscv_task_start.c riscv_pthread_start.c +CMN_CSRCS += riscv_pthread_exit.c CMN_CSRCS += riscv_signal_dispatch.c riscv_pmp.c CMN_UASRCS += riscv_signal_handler.S diff --git a/arch/risc-v/src/common/riscv_pthread_exit.c b/arch/risc-v/src/common/riscv_pthread_exit.c new file mode 100644 index 00000000000..39964ea1ff1 --- /dev/null +++ b/arch/risc-v/src/common/riscv_pthread_exit.c @@ -0,0 +1,60 @@ +/**************************************************************************** + * arch/risc-v/src/common/riscv_pthread_exit.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include +#include + +#include "svcall.h" +#include "riscv_internal.h" + +#if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) && \ + !defined(CONFIG_DISABLE_PTHREAD) + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: up_pthread_exit + * + * Description: + * In this kernel mode build, this function will be called to execute a + * pthread in user-space. This kernel-mode stub will then be called + * transfer control to the user-mode pthread_exit. + * + * Input Parameters: + * exit - The user-space pthread_exit function + * exit_value - The pointer of the pthread exit parameter + * + * Returned Value: + * None + ****************************************************************************/ + +void up_pthread_exit(pthread_exitroutine_t exit, FAR void *exit_value) +{ + sys_call2(SYS_pthread_exit, (uintptr_t)exit, (uintptr_t)exit_value); +} + +#endif /* !CONFIG_BUILD_FLAT && __KERNEL__ && !CONFIG_DISABLE_PTHREAD */ diff --git a/arch/risc-v/src/k210/Make.defs b/arch/risc-v/src/k210/Make.defs index 5c5cb22de5f..a8bf25e5068 100644 --- a/arch/risc-v/src/k210/Make.defs +++ b/arch/risc-v/src/k210/Make.defs @@ -57,7 +57,8 @@ CHIP_CSRCS += k210_cpupause.c k210_cpustart.c endif ifeq ($(CONFIG_BUILD_PROTECTED),y) -CMN_CSRCS += riscv_task_start.c riscv_pthread_start.c +CMN_CSRCS += riscv_task_start.c +CMN_CSRCS += riscv_pthread_start.c riscv_pthread_exit.c CMN_CSRCS += riscv_signal_dispatch.c CMN_UASRCS += riscv_signal_handler.S diff --git a/arch/risc-v/src/rv64gc/riscv_swint.c b/arch/risc-v/src/rv64gc/riscv_swint.c index 7e6d90b553b..8cd2528ad7c 100644 --- a/arch/risc-v/src/rv64gc/riscv_swint.c +++ b/arch/risc-v/src/rv64gc/riscv_swint.c @@ -282,19 +282,21 @@ int riscv_swint(int irq, FAR void *context, FAR void *arg) break; #endif - /* R0=SYS_pthread_start: This a user pthread start +#if !defined(CONFIG_BUILD_FLAT) && !defined(CONFIG_DISABLE_PTHREAD) + + /* A0=SYS_pthread_start: This a user pthread start * - * void up_pthread_start(pthread_startroutine_t entrypt, - * pthread_addr_t arg) noreturn_function; + * void up_pthread_start(pthread_trampoline_t startup, + * pthread_startroutine_t entrypt, pthread_addr_t arg) * * At this point, the following values are saved in context: * - * R0 = SYS_pthread_start - * R1 = entrypt - * R2 = arg + * A0 = SYS_pthread_start + * A1 = startup + * A2 = entrypt + * A3 = arg */ -#if !defined(CONFIG_BUILD_FLAT) && !defined(CONFIG_DISABLE_PTHREAD) case SYS_pthread_start: { /* Set up to return to the user-space pthread start-up function in @@ -312,6 +314,35 @@ int riscv_swint(int irq, FAR void *context, FAR void *arg) regs[REG_INT_CTX] &= ~MSTATUS_MPPM; /* User mode */ } break; + + /* R0=SYS_pthread_exit: This pthread_exit call in user-space + * + * void up_pthread_exit(pthread_exitroutine_t exit, + * FAR void *exit_value) + * + * At this point, the following values are saved in context: + * + * R0 = SYS_pthread_exit + * R1 = pthread_exit trampoline routine + * R2 = exit_value + */ + + case SYS_pthread_exit: + { + /* Set up to enter the user-space pthread exit function in + * unprivileged mode. + */ + + regs[REG_EPC] = (uintptr_t)regs[REG_A1] & ~1; /* exit */ + + /* Change the parameter ordering to match the expectation of the + * user space pthread_exit: + */ + + regs[REG_A0] = regs[REG_A2]; /* exit_value */ + regs[REG_INT_CTX] &= ~MSTATUS_MPPM; /* User mode */ + } + break; #endif /* R0=SYS_signal_handler: This a user signal handler callback diff --git a/arch/risc-v/src/rv64gc/svcall.h b/arch/risc-v/src/rv64gc/svcall.h index 80c8c150806..6ecb889c678 100644 --- a/arch/risc-v/src/rv64gc/svcall.h +++ b/arch/risc-v/src/rv64gc/svcall.h @@ -46,9 +46,9 @@ #ifdef CONFIG_LIB_SYSCALL # ifdef CONFIG_BUILD_PROTECTED # ifndef CONFIG_SYS_RESERVED -# error "CONFIG_SYS_RESERVED must be defined to have the value 8" -# elif CONFIG_SYS_RESERVED != 8 -# error "CONFIG_SYS_RESERVED must have the value 8" +# error "CONFIG_SYS_RESERVED must be defined to have the value 9" +# elif CONFIG_SYS_RESERVED != 9 +# error "CONFIG_SYS_RESERVED must have the value 9" # endif # else # ifndef CONFIG_SYS_RESERVED @@ -118,13 +118,20 @@ /* SYS call 5: * - * void up_pthread_start(pthread_startroutine_t startup, + * void up_pthread_start(pthread_trampoline_t startup, * pthread_startroutine_t entrypt, pthread_addr_t arg) * noreturn_function */ #define SYS_pthread_start (5) +/* SYS call 8: + * + * void up_pthread_exit(pthread_exitroutine_t exit, FAR void *exit_value) + */ + +#define SYS_pthread_exit (8) + #endif /* !CONFIG_BUILD_FLAT */ #endif /* CONFIG_LIB_SYSCALL */ diff --git a/boards/arm/imxrt/imxrt1050-evk/configs/knsh/defconfig b/boards/arm/imxrt/imxrt1050-evk/configs/knsh/defconfig index b13be818720..df3c6112ae7 100644 --- a/boards/arm/imxrt/imxrt1050-evk/configs/knsh/defconfig +++ b/boards/arm/imxrt/imxrt1050-evk/configs/knsh/defconfig @@ -40,5 +40,5 @@ CONFIG_SCHED_WAITPID=y CONFIG_START_DAY=8 CONFIG_START_MONTH=6 CONFIG_SYSTEM_NSH=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/arm/imxrt/imxrt1060-evk/configs/knsh/defconfig b/boards/arm/imxrt/imxrt1060-evk/configs/knsh/defconfig index 2fe1cdadbb9..9f9ba3f7861 100644 --- a/boards/arm/imxrt/imxrt1060-evk/configs/knsh/defconfig +++ b/boards/arm/imxrt/imxrt1060-evk/configs/knsh/defconfig @@ -40,5 +40,5 @@ CONFIG_SCHED_WAITPID=y CONFIG_START_DAY=8 CONFIG_START_MONTH=6 CONFIG_SYSTEM_NSH=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/knsh/defconfig b/boards/arm/imxrt/imxrt1064-evk/configs/knsh/defconfig index 1c0ed8c7c75..1b33c0d6ac8 100644 --- a/boards/arm/imxrt/imxrt1064-evk/configs/knsh/defconfig +++ b/boards/arm/imxrt/imxrt1064-evk/configs/knsh/defconfig @@ -40,5 +40,5 @@ CONFIG_SCHED_WAITPID=y CONFIG_START_DAY=8 CONFIG_START_MONTH=6 CONFIG_SYSTEM_NSH=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/arm/lc823450/lc823450-xgevk/configs/knsh/defconfig b/boards/arm/lc823450/lc823450-xgevk/configs/knsh/defconfig index 3eae4178cd5..05109c55c23 100644 --- a/boards/arm/lc823450/lc823450-xgevk/configs/knsh/defconfig +++ b/boards/arm/lc823450/lc823450-xgevk/configs/knsh/defconfig @@ -109,7 +109,7 @@ CONFIG_START_YEAR=2013 CONFIG_SYSTEM_I2CTOOL=y CONFIG_SYSTEM_NSH=y CONFIG_SYSTEM_TIME64=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_TASK_NAME_SIZE=24 CONFIG_UART0_RXBUFSIZE=512 CONFIG_UART0_SERIAL_CONSOLE=y diff --git a/boards/arm/lc823450/lc823450-xgevk/configs/kostest/defconfig b/boards/arm/lc823450/lc823450-xgevk/configs/kostest/defconfig index a50cc7a5745..f97b0fa8e4c 100644 --- a/boards/arm/lc823450/lc823450-xgevk/configs/kostest/defconfig +++ b/boards/arm/lc823450/lc823450-xgevk/configs/kostest/defconfig @@ -40,7 +40,7 @@ CONFIG_START_MONTH=10 CONFIG_START_YEAR=2013 CONFIG_SYMTAB_ORDEREDBYNAME=y CONFIG_SYSTEM_TIME64=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_TESTING_OSTEST=y CONFIG_TESTING_OSTEST_NBARRIER_THREADS=3 CONFIG_TESTING_OSTEST_STACKSIZE=2048 diff --git a/boards/arm/lc823450/lc823450-xgevk/configs/krndis/defconfig b/boards/arm/lc823450/lc823450-xgevk/configs/krndis/defconfig index 1816c5b24c9..813094b19c9 100644 --- a/boards/arm/lc823450/lc823450-xgevk/configs/krndis/defconfig +++ b/boards/arm/lc823450/lc823450-xgevk/configs/krndis/defconfig @@ -173,7 +173,7 @@ CONFIG_SYSTEM_NSH_SYMTAB_COUNTNAME="g_nsymbols" CONFIG_SYSTEM_NXPLAYER=y CONFIG_SYSTEM_PING=y CONFIG_SYSTEM_TIME64=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_TASK_NAME_SIZE=24 CONFIG_TELNET_CHARACTER_MODE=y CONFIG_TESTING_OSTEST=y diff --git a/boards/arm/lpc17xx_40xx/lpc4088-devkit/configs/knsh/defconfig b/boards/arm/lpc17xx_40xx/lpc4088-devkit/configs/knsh/defconfig index 967e9c9cb4c..0d08c2fb746 100644 --- a/boards/arm/lpc17xx_40xx/lpc4088-devkit/configs/knsh/defconfig +++ b/boards/arm/lpc17xx_40xx/lpc4088-devkit/configs/knsh/defconfig @@ -57,7 +57,7 @@ CONFIG_START_MONTH=3 CONFIG_START_YEAR=2013 CONFIG_SYMTAB_ORDEREDBYNAME=y CONFIG_SYSTEM_NSH=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_TASK_NAME_SIZE=0 CONFIG_UART0_SERIAL_CONSOLE=y CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/arm/lpc17xx_40xx/lpc4088-quickstart/configs/knsh/defconfig b/boards/arm/lpc17xx_40xx/lpc4088-quickstart/configs/knsh/defconfig index 72cfa7c1b64..56b1d6992a2 100644 --- a/boards/arm/lpc17xx_40xx/lpc4088-quickstart/configs/knsh/defconfig +++ b/boards/arm/lpc17xx_40xx/lpc4088-quickstart/configs/knsh/defconfig @@ -53,7 +53,7 @@ CONFIG_START_MONTH=3 CONFIG_START_YEAR=2013 CONFIG_SYMTAB_ORDEREDBYNAME=y CONFIG_SYSTEM_NSH=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_TASK_NAME_SIZE=0 CONFIG_UART0_SERIAL_CONSOLE=y CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/arm/lpc17xx_40xx/open1788/configs/knsh/defconfig b/boards/arm/lpc17xx_40xx/open1788/configs/knsh/defconfig index d32e086df22..f57066cc1c8 100644 --- a/boards/arm/lpc17xx_40xx/open1788/configs/knsh/defconfig +++ b/boards/arm/lpc17xx_40xx/open1788/configs/knsh/defconfig @@ -57,7 +57,7 @@ CONFIG_START_MONTH=3 CONFIG_START_YEAR=2013 CONFIG_SYMTAB_ORDEREDBYNAME=y CONFIG_SYSTEM_NSH=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_TASK_NAME_SIZE=0 CONFIG_UART0_SERIAL_CONSOLE=y CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/arm/lpc17xx_40xx/open1788/configs/knxterm/defconfig b/boards/arm/lpc17xx_40xx/open1788/configs/knxterm/defconfig index adbc0748d82..3af96a5f814 100644 --- a/boards/arm/lpc17xx_40xx/open1788/configs/knxterm/defconfig +++ b/boards/arm/lpc17xx_40xx/open1788/configs/knxterm/defconfig @@ -67,7 +67,7 @@ CONFIG_START_MONTH=3 CONFIG_START_YEAR=2019 CONFIG_SYMTAB_ORDEREDBYNAME=y CONFIG_SYSTEM_CLE=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_TASK_NAME_SIZE=0 CONFIG_UART0_SERIAL_CONSOLE=y CONFIG_USER_ENTRYPOINT="nxterm_main" diff --git a/boards/arm/lpc17xx_40xx/pnev5180b/configs/knsh/defconfig b/boards/arm/lpc17xx_40xx/pnev5180b/configs/knsh/defconfig index 2d1f6cb0bd9..542c60bac48 100644 --- a/boards/arm/lpc17xx_40xx/pnev5180b/configs/knsh/defconfig +++ b/boards/arm/lpc17xx_40xx/pnev5180b/configs/knsh/defconfig @@ -21,6 +21,6 @@ CONFIG_PASS1_BUILDIR="boards/arm/lpc17xx_40xx/pnev5180b/kernel" CONFIG_RAM_SIZE=32768 CONFIG_RAM_START=0x10000000 CONFIG_SYSTEM_NSH=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_UART0_SERIAL_CONSOLE=y CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/arm/lpc43xx/bambino-200e/configs/knsh/defconfig b/boards/arm/lpc43xx/bambino-200e/configs/knsh/defconfig index 153c52511cc..38a66bf3cd2 100644 --- a/boards/arm/lpc43xx/bambino-200e/configs/knsh/defconfig +++ b/boards/arm/lpc43xx/bambino-200e/configs/knsh/defconfig @@ -49,7 +49,7 @@ CONFIG_START_MONTH=7 CONFIG_START_YEAR=2012 CONFIG_SYMTAB_ORDEREDBYNAME=y CONFIG_SYSTEM_NSH=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_TASK_NAME_SIZE=0 CONFIG_TIMER=y CONFIG_UART1_SERIAL_CONSOLE=y diff --git a/boards/arm/sam34/sam3u-ek/configs/knsh/defconfig b/boards/arm/sam34/sam3u-ek/configs/knsh/defconfig index 8f5fae050c4..d2582b88315 100644 --- a/boards/arm/sam34/sam3u-ek/configs/knsh/defconfig +++ b/boards/arm/sam34/sam3u-ek/configs/knsh/defconfig @@ -48,7 +48,7 @@ CONFIG_START_DAY=10 CONFIG_START_MONTH=3 CONFIG_START_YEAR=2013 CONFIG_SYSTEM_NSH=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_TASK_NAME_SIZE=0 CONFIG_UART0_SERIAL_CONSOLE=y CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/arm/sama5/sama5d4-ek/configs/knsh/defconfig b/boards/arm/sama5/sama5d4-ek/configs/knsh/defconfig index c5f7f328dd0..e550748ce9d 100644 --- a/boards/arm/sama5/sama5d4-ek/configs/knsh/defconfig +++ b/boards/arm/sama5/sama5d4-ek/configs/knsh/defconfig @@ -85,5 +85,5 @@ CONFIG_SCHED_WAITPID=y CONFIG_SDIO_BLOCKSETUP=y CONFIG_SYSTEM_NSH=y CONFIG_SYSTEM_NSH_PROGNAME="init" -CONFIG_SYS_RESERVED=6 +CONFIG_SYS_RESERVED=7 CONFIG_USART3_SERIAL_CONSOLE=y diff --git a/boards/arm/samv7/samv71-xult/configs/knsh/defconfig b/boards/arm/samv7/samv71-xult/configs/knsh/defconfig index a5d351f018a..442f9d2caa7 100644 --- a/boards/arm/samv7/samv71-xult/configs/knsh/defconfig +++ b/boards/arm/samv7/samv71-xult/configs/knsh/defconfig @@ -80,6 +80,6 @@ CONFIG_START_YEAR=2015 CONFIG_SYSTEM_I2CTOOL=y CONFIG_SYSTEM_NSH=y CONFIG_SYSTEM_RAMTEST=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_UART3_SERIAL_CONSOLE=y CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/arm/stm32/clicker2-stm32/configs/knsh/defconfig b/boards/arm/stm32/clicker2-stm32/configs/knsh/defconfig index 4bf0db30277..32c2eff84a4 100644 --- a/boards/arm/stm32/clicker2-stm32/configs/knsh/defconfig +++ b/boards/arm/stm32/clicker2-stm32/configs/knsh/defconfig @@ -52,7 +52,7 @@ CONFIG_STM32_JTAG_SW_ENABLE=y CONFIG_STM32_PWR=y CONFIG_STM32_USART3=y CONFIG_SYSTEM_NSH=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_TASK_NAME_SIZE=32 CONFIG_USART3_SERIAL_CONSOLE=y CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/arm/stm32/mikroe-stm32f4/configs/kostest/defconfig b/boards/arm/stm32/mikroe-stm32f4/configs/kostest/defconfig index c23192d832e..32ed5f09b7b 100644 --- a/boards/arm/stm32/mikroe-stm32f4/configs/kostest/defconfig +++ b/boards/arm/stm32/mikroe-stm32f4/configs/kostest/defconfig @@ -82,7 +82,7 @@ CONFIG_STM32_USART2=y CONFIG_SYSLOG_CHAR=y CONFIG_SYSLOG_DEVPATH="/dev/ttyS0" CONFIG_SYSTEM_NSH=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_TASK_NAME_SIZE=11 CONFIG_TESTING_OSTEST=y CONFIG_USBDEV=y diff --git a/boards/arm/stm32/olimex-stm32-p407/configs/kelf/defconfig b/boards/arm/stm32/olimex-stm32-p407/configs/kelf/defconfig index e3fcc8e37ce..e5a22d93be3 100644 --- a/boards/arm/stm32/olimex-stm32-p407/configs/kelf/defconfig +++ b/boards/arm/stm32/olimex-stm32-p407/configs/kelf/defconfig @@ -56,7 +56,7 @@ CONFIG_STM32_SDIO=y CONFIG_STM32_USART3=y CONFIG_STM32_USBHOST=y CONFIG_SYMTAB_ORDEREDBYNAME=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_USART3_SERIAL_CONSOLE=y CONFIG_USBHOST_ISOC_DISABLE=y CONFIG_USBHOST_MSC=y diff --git a/boards/arm/stm32/olimex-stm32-p407/configs/kmodule/defconfig b/boards/arm/stm32/olimex-stm32-p407/configs/kmodule/defconfig index 839827070dc..74bad806f2d 100644 --- a/boards/arm/stm32/olimex-stm32-p407/configs/kmodule/defconfig +++ b/boards/arm/stm32/olimex-stm32-p407/configs/kmodule/defconfig @@ -52,7 +52,7 @@ CONFIG_STM32_PWR=y CONFIG_STM32_USART3=y CONFIG_STM32_USBHOST=y CONFIG_SYMTAB_ORDEREDBYNAME=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_USART3_SERIAL_CONSOLE=y CONFIG_USBHOST_ISOC_DISABLE=y CONFIG_USBHOST_MSC=y diff --git a/boards/arm/stm32/olimex-stm32-p407/configs/knsh/defconfig b/boards/arm/stm32/olimex-stm32-p407/configs/knsh/defconfig index 928051f05f4..20eec213630 100644 --- a/boards/arm/stm32/olimex-stm32-p407/configs/knsh/defconfig +++ b/boards/arm/stm32/olimex-stm32-p407/configs/knsh/defconfig @@ -52,7 +52,7 @@ CONFIG_STM32_JTAG_SW_ENABLE=y CONFIG_STM32_PWR=y CONFIG_STM32_USART3=y CONFIG_SYSTEM_NSH=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_TASK_NAME_SIZE=32 CONFIG_USART3_SERIAL_CONSOLE=y CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/arm/stm32/stm3240g-eval/configs/knxwm/defconfig b/boards/arm/stm32/stm3240g-eval/configs/knxwm/defconfig index 8e33f7a80f6..fbc23a616dd 100644 --- a/boards/arm/stm32/stm3240g-eval/configs/knxwm/defconfig +++ b/boards/arm/stm32/stm3240g-eval/configs/knxwm/defconfig @@ -93,7 +93,7 @@ CONFIG_STMPE811_THRESHX=39 CONFIG_STMPE811_THRESHY=51 CONFIG_SYMTAB_ORDEREDBYNAME=y CONFIG_SYSTEM_READLINE=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_TASK_NAME_SIZE=0 CONFIG_USART3_RXBUFSIZE=128 CONFIG_USART3_SERIAL_CONSOLE=y diff --git a/boards/arm/stm32/stm32f4discovery/configs/kostest/defconfig b/boards/arm/stm32/stm32f4discovery/configs/kostest/defconfig index 627462d8e76..5edb933c152 100644 --- a/boards/arm/stm32/stm32f4discovery/configs/kostest/defconfig +++ b/boards/arm/stm32/stm32f4discovery/configs/kostest/defconfig @@ -39,7 +39,7 @@ CONFIG_START_YEAR=2013 CONFIG_STM32_JTAG_SW_ENABLE=y CONFIG_STM32_USART2=y CONFIG_SYMTAB_ORDEREDBYNAME=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_TESTING_OSTEST=y CONFIG_TESTING_OSTEST_NBARRIER_THREADS=3 CONFIG_TESTING_OSTEST_STACKSIZE=2048 diff --git a/boards/arm/stm32l4/stm32l476vg-disco/configs/knsh/defconfig b/boards/arm/stm32l4/stm32l476vg-disco/configs/knsh/defconfig index 37d88e2ec8e..0c94cf8469d 100644 --- a/boards/arm/stm32l4/stm32l476vg-disco/configs/knsh/defconfig +++ b/boards/arm/stm32l4/stm32l476vg-disco/configs/knsh/defconfig @@ -69,7 +69,7 @@ CONFIG_STM32L4_RTC=y CONFIG_STM32L4_SAI1PLL=y CONFIG_STM32L4_USART2=y CONFIG_SYSTEM_NSH=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_TASK_NAME_SIZE=0 CONFIG_USART2_SERIAL_CONSOLE=y CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/arm/stm32l4/stm32l4r9ai-disco/configs/knsh/defconfig b/boards/arm/stm32l4/stm32l4r9ai-disco/configs/knsh/defconfig index dfea95c178f..2590e169784 100644 --- a/boards/arm/stm32l4/stm32l4r9ai-disco/configs/knsh/defconfig +++ b/boards/arm/stm32l4/stm32l4r9ai-disco/configs/knsh/defconfig @@ -73,7 +73,7 @@ CONFIG_STM32L4_SRAM2_HEAP=y CONFIG_STM32L4_UART4=y CONFIG_STM32L4_USART2=y CONFIG_SYSTEM_NSH=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_TASK_NAME_SIZE=0 CONFIG_UART4_BAUD=2000000 CONFIG_UART4_RXBUFSIZE=512 diff --git a/boards/arm/tiva/lm3s6965-ek/configs/qemu-protected/defconfig b/boards/arm/tiva/lm3s6965-ek/configs/qemu-protected/defconfig index 99597dc9f8d..da63d4bae99 100644 --- a/boards/arm/tiva/lm3s6965-ek/configs/qemu-protected/defconfig +++ b/boards/arm/tiva/lm3s6965-ek/configs/qemu-protected/defconfig @@ -98,7 +98,7 @@ CONFIG_SYSTEM_NETDB=y CONFIG_SYSTEM_NSH=y CONFIG_SYSTEM_NTPC=y CONFIG_SYSTEM_PING=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_TASK_NAME_SIZE=0 CONFIG_TIVA_ETHERNET=y CONFIG_TIVA_GPIOA_IRQS=y diff --git a/boards/risc-v/c906/smartl-c906/configs/knsh/defconfig b/boards/risc-v/c906/smartl-c906/configs/knsh/defconfig index c22533fc903..5280531fcb2 100644 --- a/boards/risc-v/c906/smartl-c906/configs/knsh/defconfig +++ b/boards/risc-v/c906/smartl-c906/configs/knsh/defconfig @@ -57,7 +57,7 @@ CONFIG_START_DAY=7 CONFIG_START_MONTH=3 CONFIG_START_YEAR=2021 CONFIG_SYSTEM_NSH=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_TASK_NAME_SIZE=20 CONFIG_TESTING_GETPRIME=y CONFIG_TESTING_OSTEST=y diff --git a/boards/risc-v/k210/maix-bit/configs/knsh/defconfig b/boards/risc-v/k210/maix-bit/configs/knsh/defconfig index bf09a7db53d..6a24cf8b54a 100644 --- a/boards/risc-v/k210/maix-bit/configs/knsh/defconfig +++ b/boards/risc-v/k210/maix-bit/configs/knsh/defconfig @@ -46,7 +46,7 @@ CONFIG_START_DAY=12 CONFIG_START_MONTH=5 CONFIG_START_YEAR=2020 CONFIG_SYSTEM_NSH=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_TASK_NAME_SIZE=20 CONFIG_TESTING_GETPRIME=y CONFIG_TESTING_OSTEST=y diff --git a/boards/risc-v/k210/maix-bit/configs/knsh_smp/defconfig b/boards/risc-v/k210/maix-bit/configs/knsh_smp/defconfig index 67debe2592c..53e6dc91f65 100644 --- a/boards/risc-v/k210/maix-bit/configs/knsh_smp/defconfig +++ b/boards/risc-v/k210/maix-bit/configs/knsh_smp/defconfig @@ -51,7 +51,7 @@ CONFIG_START_YEAR=2021 CONFIG_SYSTEM_NSH=y CONFIG_SYSTEM_SYSTEM=y CONFIG_SYSTEM_TASKSET=y -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_TASK_NAME_SIZE=20 CONFIG_TESTING_GETPRIME=y CONFIG_TESTING_OSTEST=y diff --git a/boards/risc-v/k210/maix-bit/configs/kostest/defconfig b/boards/risc-v/k210/maix-bit/configs/kostest/defconfig index f120882b494..db0b77e8ff1 100644 --- a/boards/risc-v/k210/maix-bit/configs/kostest/defconfig +++ b/boards/risc-v/k210/maix-bit/configs/kostest/defconfig @@ -42,7 +42,7 @@ CONFIG_STACK_COLORATION=y CONFIG_START_DAY=14 CONFIG_START_MONTH=2 CONFIG_START_YEAR=2020 -CONFIG_SYS_RESERVED=8 +CONFIG_SYS_RESERVED=9 CONFIG_TASK_NAME_SIZE=20 CONFIG_TESTING_OSTEST=y CONFIG_UART0_SERIAL_CONSOLE=y diff --git a/include/nuttx/arch.h b/include/nuttx/arch.h index d3ef3d62088..37c5c7f8934 100644 --- a/include/nuttx/arch.h +++ b/include/nuttx/arch.h @@ -558,6 +558,8 @@ void up_task_start(main_t taskentry, int argc, FAR char *argv[]) noreturn_function; #endif +#if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) && \ + !defined(CONFIG_DISABLE_PTHREAD) /**************************************************************************** * Name: up_pthread_start * @@ -583,11 +585,28 @@ void up_task_start(main_t taskentry, int argc, FAR char *argv[]) * ****************************************************************************/ -#if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) && \ - !defined(CONFIG_DISABLE_PTHREAD) void up_pthread_start(pthread_trampoline_t startup, pthread_startroutine_t entrypt, pthread_addr_t arg); noreturn_function; + +/**************************************************************************** + * Name: up_pthread_exit + * + * Description: + * In this kernel mode build, this function will be called to execute a + * pthread in user-space. This kernel-mode stub will then be called + * transfer control to the user-mode pthread_exit. + * + * Input Parameters: + * exit - The user-space pthread_exit function + * exit_value - The pointer of the pthread exit parameter + * + * Returned Value: + * None + ****************************************************************************/ + +void up_pthread_exit(pthread_exitroutine_t exit, FAR void *exit_value); + noreturn_function; #endif /**************************************************************************** diff --git a/include/nuttx/pthread.h b/include/nuttx/pthread.h index d8e30aa622b..7c4b8ceba27 100644 --- a/include/nuttx/pthread.h +++ b/include/nuttx/pthread.h @@ -140,6 +140,7 @@ EXTERN const pthread_attr_t g_default_pthread_attr; * for the new thread * entry - The new thread starts execution by invoking entry * arg - It is passed as the sole argument of entry + * exit - The user-space pthread exit function * * Returned Value: * OK (0) on success; a (non-negated) errno value on failure. The errno @@ -149,7 +150,8 @@ EXTERN const pthread_attr_t g_default_pthread_attr; int nx_pthread_create(pthread_trampoline_t trampoline, FAR pthread_t *thread, FAR const pthread_attr_t *attr, - pthread_startroutine_t entry, pthread_addr_t arg); + pthread_startroutine_t entry, pthread_addr_t arg, + pthread_exitroutine_t exit); /**************************************************************************** * Name: nx_pthread_exit @@ -163,8 +165,6 @@ int nx_pthread_create(pthread_trampoline_t trampoline, FAR pthread_t *thread, * Returned Value: * None * - * Assumptions: - * ****************************************************************************/ void nx_pthread_exit(FAR void *exit_value) noreturn_function; diff --git a/include/nuttx/sched.h b/include/nuttx/sched.h index 95c7ad7fa5e..a7d0c4ffbe2 100644 --- a/include/nuttx/sched.h +++ b/include/nuttx/sched.h @@ -95,16 +95,17 @@ #define TCB_FLAG_NONCANCELABLE (1 << 2) /* Bit 2: Pthread is non-cancelable */ #define TCB_FLAG_CANCEL_DEFERRED (1 << 3) /* Bit 3: Deferred (vs asynch) cancellation type */ #define TCB_FLAG_CANCEL_PENDING (1 << 4) /* Bit 4: Pthread cancel is pending */ -#define TCB_FLAG_POLICY_SHIFT (5) /* Bit 5-6: Scheduling policy */ +#define TCB_FLAG_CANCEL_DOING (1 << 5) /* Bit 4: Pthread cancel/exit is doing */ +#define TCB_FLAG_POLICY_SHIFT (6) /* Bit 5-6: Scheduling policy */ #define TCB_FLAG_POLICY_MASK (3 << TCB_FLAG_POLICY_SHIFT) # define TCB_FLAG_SCHED_FIFO (0 << TCB_FLAG_POLICY_SHIFT) /* FIFO scheding policy */ # define TCB_FLAG_SCHED_RR (1 << TCB_FLAG_POLICY_SHIFT) /* Round robin scheding policy */ # define TCB_FLAG_SCHED_SPORADIC (2 << TCB_FLAG_POLICY_SHIFT) /* Sporadic scheding policy */ # define TCB_FLAG_SCHED_OTHER (3 << TCB_FLAG_POLICY_SHIFT) /* Other scheding policy */ -#define TCB_FLAG_CPU_LOCKED (1 << 7) /* Bit 7: Locked to this CPU */ -#define TCB_FLAG_SIGNAL_ACTION (1 << 8) /* Bit 8: In a signal handler */ -#define TCB_FLAG_SYSCALL (1 << 9) /* Bit 9: In a system call */ -#define TCB_FLAG_EXIT_PROCESSING (1 << 10) /* Bit 10: Exitting */ +#define TCB_FLAG_CPU_LOCKED (1 << 8) /* Bit 7: Locked to this CPU */ +#define TCB_FLAG_SIGNAL_ACTION (1 << 9) /* Bit 8: In a signal handler */ +#define TCB_FLAG_SYSCALL (1 << 10) /* Bit 9: In a system call */ +#define TCB_FLAG_EXIT_PROCESSING (1 << 11) /* Bit 10: Exitting */ /* Bits 11-15: Available */ /* Values for struct task_group tg_flags */ @@ -761,6 +762,7 @@ struct pthread_tcb_s pthread_trampoline_t trampoline; /* User-space pthread startup function */ pthread_addr_t arg; /* Startup argument */ + pthread_exitroutine_t exit; /* User-space pthread exit function */ FAR void *joininfo; /* Detach-able info to support join */ }; #endif /* !CONFIG_DISABLE_PTHREAD */ diff --git a/include/pthread.h b/include/pthread.h index fb8a458ca42..e7618bae0cb 100644 --- a/include/pthread.h +++ b/include/pthread.h @@ -225,6 +225,8 @@ typedef FAR void *pthread_addr_t; typedef CODE pthread_addr_t (*pthread_startroutine_t)(pthread_addr_t); typedef pthread_startroutine_t pthread_func_t; +typedef void (*pthread_exitroutine_t)(pthread_addr_t); + typedef void (*pthread_trampoline_t)(pthread_startroutine_t, pthread_addr_t); struct pthread_attr_s diff --git a/include/sys/syscall_lookup.h b/include/sys/syscall_lookup.h index 7781f09051d..5a66d8f5177 100644 --- a/include/sys/syscall_lookup.h +++ b/include/sys/syscall_lookup.h @@ -305,7 +305,7 @@ SYSCALL_LOOKUP(telldir, 1) SYSCALL_LOOKUP(pthread_cond_broadcast, 1) SYSCALL_LOOKUP(pthread_cond_signal, 1) SYSCALL_LOOKUP(pthread_cond_wait, 2) - SYSCALL_LOOKUP(nx_pthread_create, 5) + SYSCALL_LOOKUP(nx_pthread_create, 6) SYSCALL_LOOKUP(pthread_detach, 1) SYSCALL_LOOKUP(nx_pthread_exit, 1) SYSCALL_LOOKUP(pthread_getschedparam, 3) diff --git a/libs/libc/pthread/pthread_create.c b/libs/libc/pthread/pthread_create.c index e81c63e0474..fe85127c60e 100644 --- a/libs/libc/pthread/pthread_create.c +++ b/libs/libc/pthread/pthread_create.c @@ -87,5 +87,5 @@ int pthread_create(FAR pthread_t *thread, FAR const pthread_attr_t *attr, pthread_startroutine_t pthread_entry, pthread_addr_t arg) { return nx_pthread_create(pthread_startup, thread, attr, pthread_entry, - arg); + arg, pthread_exit); } diff --git a/libs/libc/pthread/pthread_exit.c b/libs/libc/pthread/pthread_exit.c index 2e456b6c081..ce1324c5719 100644 --- a/libs/libc/pthread/pthread_exit.c +++ b/libs/libc/pthread/pthread_exit.c @@ -40,7 +40,7 @@ * Terminate execution of a thread started with pthread_create. * * Input Parameters: - * exit_value + * exit_value - The pointer of the pthread_exit parameter * * Returned Value: * None diff --git a/sched/pthread/pthread_cancel.c b/sched/pthread/pthread_cancel.c index d2dc2f38334..e4088ba8c11 100644 --- a/sched/pthread/pthread_cancel.c +++ b/sched/pthread/pthread_cancel.c @@ -24,6 +24,8 @@ #include +#include + #include #include #include @@ -82,7 +84,15 @@ int pthread_cancel(pthread_t thread) if (tcb == this_task()) { +#if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) + tcb->flags &= ~TCB_FLAG_CANCEL_PENDING; + tcb->flags |= TCB_FLAG_CANCEL_DOING; + + up_pthread_exit(((FAR struct pthread_tcb_s *)tcb)->exit, + PTHREAD_CANCELED); +#else pthread_exit(PTHREAD_CANCELED); +#endif } /* Complete pending join operations */ diff --git a/sched/pthread/pthread_create.c b/sched/pthread/pthread_create.c index ade4dc65507..507cc6c94d9 100644 --- a/sched/pthread/pthread_create.c +++ b/sched/pthread/pthread_create.c @@ -79,6 +79,7 @@ const pthread_attr_t g_default_pthread_attr = PTHREAD_ATTR_INITIALIZER; * tcb - Address of the new task's TCB * trampoline - User space pthread startup function * arg - The argument to provide to the pthread on startup. + * exit - The user-space pthread exit function * * Returned Value: * None @@ -87,7 +88,8 @@ const pthread_attr_t g_default_pthread_attr = PTHREAD_ATTR_INITIALIZER; static inline void pthread_tcb_setup(FAR struct pthread_tcb_s *ptcb, pthread_trampoline_t trampoline, - pthread_addr_t arg) + pthread_addr_t arg, + pthread_exitroutine_t exit) { #if CONFIG_TASK_NAME_SIZE > 0 /* Copy the pthread name into the TCB */ @@ -102,6 +104,7 @@ static inline void pthread_tcb_setup(FAR struct pthread_tcb_s *ptcb, ptcb->trampoline = trampoline; ptcb->arg = arg; + ptcb->exit = exit; } /**************************************************************************** @@ -193,7 +196,12 @@ static void pthread_start(void) /* The thread has returned (should never happen) */ DEBUGPANIC(); - pthread_exit(NULL); +#ifndef CONFIG_BUILD_FLAT + ptcb->cmn.flags &= ~TCB_FLAG_CANCEL_PENDING; + ptcb->cmn.flags |= TCB_FLAG_CANCEL_DOING; + + up_pthread_exit(ptcb->exit, NULL); +#endif } /**************************************************************************** @@ -215,6 +223,7 @@ static void pthread_start(void) * for the new thread * entry - The new thread starts execution by invoking entry * arg - It is passed as the sole argument of entry + * exit - The user-space pthread exit function * * Returned Value: * OK (0) on success; a (non-negated) errno value on failure. The errno @@ -224,7 +233,8 @@ static void pthread_start(void) int nx_pthread_create(pthread_trampoline_t trampoline, FAR pthread_t *thread, FAR const pthread_attr_t *attr, - pthread_startroutine_t entry, pthread_addr_t arg) + pthread_startroutine_t entry, pthread_addr_t arg, + pthread_exitroutine_t exit) { FAR struct pthread_tcb_s *ptcb; FAR struct tls_info_s *info; @@ -237,6 +247,7 @@ int nx_pthread_create(pthread_trampoline_t trampoline, FAR pthread_t *thread, bool group_joined = false; DEBUGASSERT(trampoline != NULL); + DEBUGASSERT(exit != NULL); /* If attributes were not supplied, use the default attributes */ @@ -450,7 +461,7 @@ int nx_pthread_create(pthread_trampoline_t trampoline, FAR pthread_t *thread, * passed by value */ - pthread_tcb_setup(ptcb, trampoline, arg); + pthread_tcb_setup(ptcb, trampoline, arg, exit); /* Join the parent's task group */ diff --git a/sched/signal/sig_default.c b/sched/signal/sig_default.c index 08b8f2e47e2..7e87089e57d 100644 --- a/sched/signal/sig_default.c +++ b/sched/signal/sig_default.c @@ -224,7 +224,15 @@ static void nxsig_abnormal_termination(int signo) * REVISIT: This will not work if HAVE_GROUP_MEMBERS is not set. */ - pthread_exit(NULL); +#if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) + rtcb->flags &= ~TCB_FLAG_CANCEL_PENDING; + rtcb->flags |= TCB_FLAG_CANCEL_DOING; + + up_pthread_exit(((FAR struct pthread_tcb_s *)rtcb)->exit, + PTHREAD_CANCELED); +#else + pthread_exit(PTHREAD_CANCELED); +#endif } else #endif diff --git a/sched/task/task_cancelpt.c b/sched/task/task_cancelpt.c index 8fcada35693..659e5db6d1f 100644 --- a/sched/task/task_cancelpt.c +++ b/sched/task/task_cancelpt.c @@ -57,6 +57,7 @@ #include #include +#include #include "sched/sched.h" #include "semaphore/semaphore.h" @@ -139,7 +140,15 @@ bool enter_cancellation_point(void) if ((tcb->flags & TCB_FLAG_TTYPE_MASK) == TCB_FLAG_TTYPE_PTHREAD) { +#if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) + tcb->flags &= ~TCB_FLAG_CANCEL_PENDING; + tcb->flags |= TCB_FLAG_CANCEL_DOING; + + up_pthread_exit(((FAR struct pthread_tcb_s *)tcb)->exit, + PTHREAD_CANCELED); +#else pthread_exit(PTHREAD_CANCELED); +#endif } else #endif @@ -226,7 +235,15 @@ void leave_cancellation_point(void) if ((tcb->flags & TCB_FLAG_TTYPE_MASK) == TCB_FLAG_TTYPE_PTHREAD) { +#if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) + tcb->flags &= ~TCB_FLAG_CANCEL_PENDING; + tcb->flags |= TCB_FLAG_CANCEL_DOING; + + up_pthread_exit(((FAR struct pthread_tcb_s *)tcb)->exit, + PTHREAD_CANCELED); +#else pthread_exit(PTHREAD_CANCELED); +#endif } else #endif diff --git a/sched/task/task_setcancelstate.c b/sched/task/task_setcancelstate.c index bb08b542c37..6b61632e990 100644 --- a/sched/task/task_setcancelstate.c +++ b/sched/task/task_setcancelstate.c @@ -112,7 +112,15 @@ int task_setcancelstate(int state, FAR int *oldstate) if ((tcb->flags & TCB_FLAG_TTYPE_MASK) == TCB_FLAG_TTYPE_PTHREAD) { +#if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) + tcb->flags &= ~TCB_FLAG_CANCEL_PENDING; + tcb->flags |= TCB_FLAG_CANCEL_DOING; + + up_pthread_exit(((FAR struct pthread_tcb_s *)tcb)->exit, + PTHREAD_CANCELED); +#else pthread_exit(PTHREAD_CANCELED); +#endif } else #endif diff --git a/sched/task/task_setcanceltype.c b/sched/task/task_setcanceltype.c index b14fec53e0d..d57cc6408a8 100644 --- a/sched/task/task_setcanceltype.c +++ b/sched/task/task_setcanceltype.c @@ -100,7 +100,15 @@ int task_setcanceltype(int type, FAR int *oldtype) #ifndef CONFIG_DISABLE_PTHREAD if ((tcb->flags & TCB_FLAG_TTYPE_MASK) == TCB_FLAG_TTYPE_PTHREAD) { - pthread_exit(PTHREAD_CANCELED); +#if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) + tcb->flags &= ~TCB_FLAG_CANCEL_PENDING; + tcb->flags |= TCB_FLAG_CANCEL_DOING; + + up_pthread_exit(((FAR struct pthread_tcb_s *)tcb)->exit, + PTHREAD_CANCELED); +#else + pthread_exit(PTHREAD_CANCELED); +#endif } else #endif diff --git a/syscall/syscall.csv b/syscall/syscall.csv index 8502cc0b51d..c39442f30d2 100644 --- a/syscall/syscall.csv +++ b/syscall/syscall.csv @@ -66,7 +66,7 @@ "munmap","sys/mman.h","defined(CONFIG_FS_RAMMAP)","int","FAR void *","size_t" "nx_mkfifo","nuttx/fs/fs.h","defined(CONFIG_PIPES) && CONFIG_DEV_FIFO_SIZE > 0","int","FAR const char *","mode_t","size_t" "nx_pipe","nuttx/fs/fs.h","defined(CONFIG_PIPES) && CONFIG_DEV_PIPE_SIZE > 0","int","int [2]|FAR int *","size_t","int" -"nx_pthread_create","nuttx/pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","pthread_trampoline_t","FAR pthread_t *","FAR const pthread_attr_t *","pthread_startroutine_t","pthread_addr_t" +"nx_pthread_create","nuttx/pthread.h","!defined(CONFIG_DISABLE_PTHREAD)","int","pthread_trampoline_t","FAR pthread_t *","FAR const pthread_attr_t *","pthread_startroutine_t","pthread_addr_t","pthread_exitroutine_t" "nx_task_spawn","nuttx/spawn.h","defined(CONFIG_LIB_SYSCALL) && !defined(CONFIG_BUILD_KERNEL)","int","FAR const struct spawn_syscall_parms_s *" "nx_vsyslog","nuttx/syslog/syslog.h","","int","int","FAR const IPTR char *","FAR va_list *" "nxsched_get_stackinfo","nuttx/sched.h","","int","pid_t","FAR struct stackinfo_s *" From d374d55926592ce9571eb80971964aaa14124034 Mon Sep 17 00:00:00 2001 From: Huang Qi Date: Thu, 22 Apr 2021 10:41:50 +0800 Subject: [PATCH 190/739] pthread: Implement destructor of pthread_key_create Signed-off-by: Huang Qi Change-Id: I6aafba9680257cba071bf1f72ae2ec2c475f5fb0 --- include/nuttx/sched.h | 8 ++- include/nuttx/tls.h | 76 +++++++++++++++++++++++++ include/sys/syscall_lookup.h | 3 + libs/libc/pthread/pthread_exit.c | 5 ++ libs/libc/pthread/pthread_keycreate.c | 6 +- libs/libc/tls/Make.defs | 2 +- libs/libc/tls/tls_destruct.c | 82 +++++++++++++++++++++++++++ sched/group/Make.defs | 1 + sched/group/group_tlsgetdtor.c | 74 ++++++++++++++++++++++++ sched/group/group_tlsgetset.c | 72 +++++++++++++++++++++++ sched/group/group_tlssetdtor.c | 77 +++++++++++++++++++++++++ sched/pthread/pthread_exit.c | 1 + syscall/syscall.csv | 3 + 13 files changed, 402 insertions(+), 8 deletions(-) create mode 100644 libs/libc/tls/tls_destruct.c create mode 100644 sched/group/group_tlsgetdtor.c create mode 100644 sched/group/group_tlsgetset.c create mode 100644 sched/group/group_tlssetdtor.c diff --git a/include/nuttx/sched.h b/include/nuttx/sched.h index a7d0c4ffbe2..f425e47afd2 100644 --- a/include/nuttx/sched.h +++ b/include/nuttx/sched.h @@ -345,7 +345,7 @@ struct pthread_cleanup_s }; #endif -/* type tls_ndxset_t ************************************************************/ +/* type tls_ndxset_t & tls_dtor_t **********************************************/ /* Smallest addressable type that can hold the entire configured number of TLS * data indexes. @@ -361,6 +361,9 @@ struct pthread_cleanup_s # else typedef uint8_t tls_ndxset_t; # endif + +typedef CODE void (*tls_dtor_t)(FAR void *); + #endif /* struct dspace_s **************************************************************/ @@ -528,7 +531,8 @@ struct task_group_s /* Thread local storage *******************************************************/ #if CONFIG_TLS_NELEM > 0 - tls_ndxset_t tg_tlsset; /* Set of TLS data indexes allocated */ + tls_ndxset_t tg_tlsset; /* Set of TLS indexes allocated */ + tls_dtor_t tg_tlsdestr[CONFIG_TLS_NELEM]; /* List of TLS destructors */ #endif /* POSIX Signal Control Fields ************************************************/ diff --git a/include/nuttx/tls.h b/include/nuttx/tls.h index c370abc635b..d45230dd066 100644 --- a/include/nuttx/tls.h +++ b/include/nuttx/tls.h @@ -29,6 +29,7 @@ #include #include +#include /**************************************************************************** * Pre-processor Definitions @@ -227,6 +228,81 @@ int tls_set_value(int tlsindex, uintptr_t tlsvalue); FAR struct tls_info_s *tls_get_info(void); #endif +/**************************************************************************** + * Name: tls_set_dtor + * + * Description: + * Set the TLS element destructor associated with the 'tlsindex' to 'destr' + * + * Input Parameters: + * tlsindex - Index of TLS data destructor to set + * destr - The destr of TLS data element + * + * Returned Value: + * Zero is returned on success, a negated errno value is return on + * failure: + * + * EINVAL - tlsindex is not in range. + * + ****************************************************************************/ + +#if CONFIG_TLS_NELEM > 0 +int tls_set_dtor(int tlsindex, tls_dtor_t destr); +#endif + +/**************************************************************************** + * Name: tls_get_dtor + * + * Description: + * Get the TLS element destructor associated with the 'tlsindex' to 'destr' + * + * Input Parameters: + * tlsindex - Index of TLS data destructor to get + * + * Returned Value: + * A non-null destruct function pointer. + * + ****************************************************************************/ + +#if CONFIG_TLS_NELEM > 0 +tls_dtor_t tls_get_dtor(int tlsindex); +#endif + +/**************************************************************************** + * Name: tls_get_set + * + * Description: + * Get the TLS element index set map + * + * Input Parameters: + * + * Returned Value: + * A set of allocated TLS index + * + ****************************************************************************/ + +#if CONFIG_TLS_NELEM > 0 +tls_ndxset_t tls_get_set(void); +#endif + +/**************************************************************************** + * Name: tls_destruct + * + * Description: + * Destruct all TLS data element associated with allocated key + * + * Input Parameters: + * None + * + * Returned Value: + * A set of allocated TLS index + * + ****************************************************************************/ + +#if CONFIG_TLS_NELEM > 0 +void tls_destruct(void); +#endif + /**************************************************************************** * Name: task_get_info * diff --git a/include/sys/syscall_lookup.h b/include/sys/syscall_lookup.h index 5a66d8f5177..23149086143 100644 --- a/include/sys/syscall_lookup.h +++ b/include/sys/syscall_lookup.h @@ -296,6 +296,9 @@ SYSCALL_LOOKUP(telldir, 1) #if CONFIG_TLS_NELEM > 0 SYSCALL_LOOKUP(tls_alloc, 0) SYSCALL_LOOKUP(tls_free, 1) + SYSCALL_LOOKUP(tls_get_set, 1) + SYSCALL_LOOKUP(tls_get_dtor, 1) + SYSCALL_LOOKUP(tls_set_dtor, 2) #endif /* The following are defined if pthreads are enabled */ diff --git a/libs/libc/pthread/pthread_exit.c b/libs/libc/pthread/pthread_exit.c index ce1324c5719..086dc7f59db 100644 --- a/libs/libc/pthread/pthread_exit.c +++ b/libs/libc/pthread/pthread_exit.c @@ -28,6 +28,7 @@ #include #include +#include /**************************************************************************** * Public Functions @@ -55,6 +56,10 @@ void pthread_exit(FAR void *exit_value) pthread_cleanup_popall(); #endif +#if CONFIG_TLS_NELEM > 0 + tls_destruct(); +#endif + nx_pthread_exit(exit_value); PANIC(); } diff --git a/libs/libc/pthread/pthread_keycreate.c b/libs/libc/pthread/pthread_keycreate.c index 5765fb694d6..798cca7d38f 100644 --- a/libs/libc/pthread/pthread_keycreate.c +++ b/libs/libc/pthread/pthread_keycreate.c @@ -53,8 +53,6 @@ * key - A pointer to the key to create. * destructor - An optional destructor() function that may be associated * with each key that is invoked when a thread exits. - * However, this argument is ignored in the current - * implementation. * * Returned Value: * If successful, the pthread_key_create() function will store the newly @@ -67,9 +65,6 @@ * has been exceeded * ENOMEM - Insufficient memory exist to create the key. * - * POSIX Compatibility: - * - The present implementation ignores the destructor argument. - * ****************************************************************************/ int pthread_key_create(FAR pthread_key_t *key, @@ -90,6 +85,7 @@ int pthread_key_create(FAR pthread_key_t *key, /* Yes.. Return the key value and success */ *key = (pthread_key_t)tlsindex; + tls_set_dtor(tlsindex, destructor); return OK; } diff --git a/libs/libc/tls/Make.defs b/libs/libc/tls/Make.defs index 504d2c6a0bf..67e830f71ac 100644 --- a/libs/libc/tls/Make.defs +++ b/libs/libc/tls/Make.defs @@ -21,7 +21,7 @@ CSRCS += task_getinfo.c ifneq ($(CONFIG_TLS_NELEM),0) -CSRCS += tls_setvalue.c tls_getvalue.c +CSRCS += tls_setvalue.c tls_getvalue.c tls_destruct.c endif ifneq ($(CONFIG_TLS_ALIGNED),y) diff --git a/libs/libc/tls/tls_destruct.c b/libs/libc/tls/tls_destruct.c new file mode 100644 index 00000000000..847dc8dbba3 --- /dev/null +++ b/libs/libc/tls/tls_destruct.c @@ -0,0 +1,82 @@ +/**************************************************************************** + * libs/libc/tls/tls_destruct.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +#include +#include +#include + +#if CONFIG_TLS_NELEM > 0 + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: tls_destruct + * + * Description: + * Destruct all TLS data element associated with allocated key + * + * Input Parameters: + * None + * + * Returned Value: + * A set of allocated TLS index + * + ****************************************************************************/ + +void tls_destruct(void) +{ + FAR struct tls_info_s *info = up_tls_info(); + FAR void *tls_elem_ptr = NULL; + tls_dtor_t destructor; + tls_ndxset_t tlsset; + int candidate; + + DEBUGASSERT(info != NULL); + tlsset = tls_get_set(); + + for (candidate = 0; candidate < CONFIG_TLS_NELEM; candidate++) + { + /* Is this candidate index available? */ + + tls_ndxset_t mask = (1 << candidate); + if (tlsset & mask) + { + tls_elem_ptr = (FAR void *)info->tl_elem[candidate]; + destructor = tls_get_dtor(candidate); + if (tls_elem_ptr && destructor) + { + destructor(tls_elem_ptr); + } + } + } +} + +#endif /* CONFIG_TLS_NELEM > 0 */ diff --git a/sched/group/Make.defs b/sched/group/Make.defs index 14f12257491..35eee897029 100644 --- a/sched/group/Make.defs +++ b/sched/group/Make.defs @@ -55,6 +55,7 @@ endif ifneq ($(CONFIG_TLS_NELEM),0) CSRCS += group_tlsalloc.c group_tlsfree.c +CSRCS += group_tlsgetset.c group_tlsgetdtor.c group_tlssetdtor.c endif # Include group build support diff --git a/sched/group/group_tlsgetdtor.c b/sched/group/group_tlsgetdtor.c new file mode 100644 index 00000000000..2aa41452835 --- /dev/null +++ b/sched/group/group_tlsgetdtor.c @@ -0,0 +1,74 @@ +/**************************************************************************** + * sched/group/group_tlsgetdtor.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +#include +#include +#include + +#include "sched/sched.h" +#include "group/group.h" + +#if CONFIG_TLS_NELEM > 0 + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: tls_get_dtor + * + * Description: + * Get the TLS element destructor associated with the 'tlsindex' to 'destr' + * + * Input Parameters: + * tlsindex - Index of TLS data destructor to get + * + * Returned Value: + * A non-null destruct function pointer. + * + ****************************************************************************/ + +tls_dtor_t tls_get_dtor(int tlsindex) +{ + FAR struct tcb_s *rtcb = this_task(); + FAR struct task_group_s *group = rtcb->group; + irqstate_t flags; + tls_dtor_t destr; + + DEBUGASSERT(group != NULL); + DEBUGASSERT(tlsindex >= 0 && tlsindex < CONFIG_TLS_NELEM); + + flags = spin_lock_irqsave(NULL); + destr = group->tg_tlsdestr[tlsindex]; + spin_unlock_irqrestore(NULL, flags); + + return destr; +} + +#endif /* CONFIG_TLS_NELEM > 0 */ diff --git a/sched/group/group_tlsgetset.c b/sched/group/group_tlsgetset.c new file mode 100644 index 00000000000..55c5dac9a24 --- /dev/null +++ b/sched/group/group_tlsgetset.c @@ -0,0 +1,72 @@ +/**************************************************************************** + * sched/group/group_tlsgetset.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +#include +#include +#include + +#include "sched/sched.h" +#include "group/group.h" + +#if CONFIG_TLS_NELEM > 0 + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: tls_get_set + * + * Description: + * Get the set map of TLE element index. + * + * Input Parameters: + * + * Returned Value: + * TLS element index set map. + * + ****************************************************************************/ + +tls_ndxset_t tls_get_set(void) +{ + FAR struct tcb_s *rtcb = this_task(); + FAR struct task_group_s *group = rtcb->group; + irqstate_t flags; + tls_ndxset_t tlsset; + + DEBUGASSERT(group != NULL); + + flags = spin_lock_irqsave(NULL); + tlsset = group->tg_tlsset; + spin_unlock_irqrestore(NULL, flags); + + return tlsset; +} + +#endif /* CONFIG_TLS_NELEM > 0 */ diff --git a/sched/group/group_tlssetdtor.c b/sched/group/group_tlssetdtor.c new file mode 100644 index 00000000000..5e4447c3c39 --- /dev/null +++ b/sched/group/group_tlssetdtor.c @@ -0,0 +1,77 @@ +/**************************************************************************** + * sched/group/group_tlssetdtor.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +#include +#include +#include + +#include "sched/sched.h" +#include "group/group.h" + +#if CONFIG_TLS_NELEM > 0 + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: tls_set_dtor + * + * Description: + * Set the TLS element destructor associated with the 'tlsindex' to 'destr' + * + * Input Parameters: + * tlsindex - Index of TLS data destructor to set + * destr - The destr of TLS data element + * + * Returned Value: + * Zero is returned on success, a negated errno value is return on + * failure: + * + * EINVAL - tlsindex is not in range. + * + ****************************************************************************/ + +int tls_set_dtor(int tlsindex, tls_dtor_t destr) +{ + FAR struct tcb_s *rtcb = this_task(); + FAR struct task_group_s *group = rtcb->group; + irqstate_t flags; + + DEBUGASSERT(group != NULL); + DEBUGASSERT(tlsindex >= 0 && tlsindex < CONFIG_TLS_NELEM); + + flags = spin_lock_irqsave(NULL); + group->tg_tlsdestr[tlsindex] = destr; + spin_unlock_irqrestore(NULL, flags); + + return OK; +} + +#endif /* CONFIG_TLS_NELEM > 0 */ diff --git a/sched/pthread/pthread_exit.c b/sched/pthread/pthread_exit.c index 4d55560f533..6805849ab95 100644 --- a/sched/pthread/pthread_exit.c +++ b/sched/pthread/pthread_exit.c @@ -34,6 +34,7 @@ #include #include +#include #include "sched/sched.h" #include "task/task.h" diff --git a/syscall/syscall.csv b/syscall/syscall.csv index c39442f30d2..3f180b0664d 100644 --- a/syscall/syscall.csv +++ b/syscall/syscall.csv @@ -179,6 +179,9 @@ "timer_settime","time.h","!defined(CONFIG_DISABLE_POSIX_TIMERS)","int","timer_t","int","FAR const struct itimerspec *","FAR struct itimerspec *" "tls_alloc","nuttx/tls.h","CONFIG_TLS_NELEM > 0","int" "tls_free","nuttx/tls.h","CONFIG_TLS_NELEM > 0","int","int" +"tls_get_set","nuttx/tls.h","CONFIG_TLS_NELEM > 0","tls_ndxset_t" +"tls_get_dtor","nuttx/tls.h","CONFIG_TLS_NELEM > 0","tls_dtor_t","int" +"tls_set_dtor","nuttx/tls.h","CONFIG_TLS_NELEM > 0","int","int","tls_dtor_t" "umount2","sys/mount.h","!defined(CONFIG_DISABLE_MOUNTPOINT)","int","FAR const char *","unsigned int" "unlink","unistd.h","!defined(CONFIG_DISABLE_MOUNTPOINT)","int","FAR const char *" "unsetenv","stdlib.h","!defined(CONFIG_DISABLE_ENVIRON)","int","FAR const char *" From 9dbeaa3b1f0c388987f29d9967ad2c3fa134fd05 Mon Sep 17 00:00:00 2001 From: Huang Qi Date: Fri, 14 May 2021 17:47:48 +0800 Subject: [PATCH 191/739] nuttx/sched.h: Fix nxstyle Signed-off-by: Huang Qi --- include/nuttx/sched.h | 431 +++++++++++++++++++++--------------------- 1 file changed, 219 insertions(+), 212 deletions(-) diff --git a/include/nuttx/sched.h b/include/nuttx/sched.h index f425e47afd2..5e841c11a91 100644 --- a/include/nuttx/sched.h +++ b/include/nuttx/sched.h @@ -1,4 +1,4 @@ -/******************************************************************************** +/**************************************************************************** * include/nuttx/sched.h * * Licensed to the Apache Software Foundation (ASF) under one or more @@ -16,14 +16,14 @@ * License for the specific language governing permissions and limitations * under the License. * - ********************************************************************************/ + ****************************************************************************/ #ifndef __INCLUDE_NUTTX_SCHED_H #define __INCLUDE_NUTTX_SCHED_H -/******************************************************************************** +/**************************************************************************** * Included Files - ********************************************************************************/ + ****************************************************************************/ #include @@ -44,11 +44,11 @@ #include -/******************************************************************************** +/**************************************************************************** * Pre-processor Definitions - ********************************************************************************/ + ****************************************************************************/ -/* Configuration ****************************************************************/ +/* Configuration ************************************************************/ /* Task groups currently only supported for retention of child status */ @@ -74,7 +74,7 @@ # define CONFIG_SCHED_SPORADIC_MAXREPL 3 #endif -/* Task Management Definitions **************************************************/ +/* Task Management Definitions **********************************************/ /* Special task IDS. Any negative PID is invalid. */ @@ -182,18 +182,18 @@ # error "CONFIG_SCHED_EXIT_MAX < 1" #endif -/******************************************************************************** +/**************************************************************************** * Public Type Definitions - ********************************************************************************/ + ****************************************************************************/ #ifndef __ASSEMBLY__ -/* General Task Management Types ************************************************/ +/* General Task Management Types ********************************************/ /* This is the type of the task_state field of the TCB. NOTE: the order and - * content of this enumeration is critical since there are some OS tables indexed - * by these values. The range of values is assumed to fit into a uint8_t in - * struct tcb_s. + * content of this enumeration is critical since there are some OS tables + * indexed by these values. + * The range of values is assumed to fit into a uint8_t in struct tcb_s. */ enum tstate_e @@ -258,8 +258,8 @@ typedef union entry_u entry_t; typedef CODE void (*starthook_t)(FAR void *arg); #endif -/* These are the types of the functions that are executed with exit() is called - * (if registered via atexit() on on_exit()). +/* These are the types of the functions that are executed with exit() is + * called (if registered via atexit() on on_exit()). */ #ifdef CONFIG_SCHED_ATEXIT @@ -270,7 +270,7 @@ typedef CODE void (*atexitfunc_t)(void); typedef CODE void (*onexitfunc_t)(int exitcode, FAR void *arg); #endif -/* struct sporadic_s ************************************************************/ +/* struct sporadic_s ********************************************************/ #ifdef CONFIG_SCHED_SPORADIC @@ -288,10 +288,10 @@ struct replenishment_s }; /* This structure is an allocated "plug-in" to the main TCB structure. It is - * allocated when the sporadic scheduling policy is assigned to a thread. Thus, - * in the context of numerous threads of varying policies, there the overhead - * from this significant allocation is only borne by the threads with the - * sporadic scheduling policy. + * allocated when the sporadic scheduling policy is assigned to a thread. + * Thus, in the context of numerous threads of varying policies, there the + * overhead from this significant allocation is only borne by the threads + * with the sporadic scheduling policy. */ struct sporadic_s @@ -316,10 +316,11 @@ struct sporadic_s #endif /* CONFIG_SCHED_SPORADIC */ -/* struct child_status_s ********************************************************/ +/* struct child_status_s ****************************************************/ -/* This structure is used to maintain information about child tasks. pthreads - * work differently, they have join information. This is only for child tasks. +/* This structure is used to maintain information about child tasks. + * pthreads work differently, they have join information. + * This is only for child tasks. */ #ifdef CONFIG_SCHED_CHILD_STATUS @@ -333,7 +334,7 @@ struct child_status_s }; #endif -/* struct pthread_cleanup_s *****************************************************/ +/* struct pthread_cleanup_s *************************************************/ /* This structure describes one element of the pthread cleanup stack */ @@ -345,10 +346,10 @@ struct pthread_cleanup_s }; #endif -/* type tls_ndxset_t & tls_dtor_t **********************************************/ +/* type tls_ndxset_t & tls_dtor_t *******************************************/ -/* Smallest addressable type that can hold the entire configured number of TLS - * data indexes. +/* Smallest addressable type that can hold the entire configured number of + * TLS data indexes. */ #if CONFIG_TLS_NELEM > 0 @@ -366,11 +367,11 @@ typedef CODE void (*tls_dtor_t)(FAR void *); #endif -/* struct dspace_s **************************************************************/ +/* struct dspace_s **********************************************************/ -/* This structure describes a reference counted D-Space region. This must be a - * separately allocated "break-away" structure that can be owned by a task and - * any pthreads created by the task. +/* This structure describes a reference counted D-Space region. + * This must be a separately allocated "break-away" structure that + * can be owned by a task and any pthreads created by the task. */ #ifdef CONFIG_PIC @@ -385,15 +386,15 @@ struct dspace_s uint16_t crefs; /* This is the allocated D-Space memory region. This may be a physical - * address allocated with kmm_malloc(), or it may be virtual address associated - * with an address environment (if CONFIG_ARCH_ADDRENV=y). + * address allocated with kmm_malloc(), or it may be virtual address + * associated with an address environment (if CONFIG_ARCH_ADDRENV=y). */ FAR uint8_t *region; }; #endif -/* struct stackinfo_s ***********************************************************/ +/* struct stackinfo_s *******************************************************/ /* Used to report stack information */ @@ -409,7 +410,7 @@ struct stackinfo_s /* from the stack. */ }; -/* struct exitinfo_s ************************************************************/ +/* struct exitinfo_s ********************************************************/ struct exitinfo_s { @@ -427,15 +428,15 @@ struct exitinfo_s #endif }; -/* struct task_group_s **********************************************************/ +/* struct task_group_s ******************************************************/ /* All threads created by pthread_create belong in the same task group (along * with the thread of the original task). struct task_group_s is a shared - * structure referenced by the TCB of each thread that is a member of the task - * group. + * structure referenced by the TCB of each thread that is a member of the + * task group. * - * This structure should contain *all* resources shared by tasks and threads that - * belong to the same task group: + * This structure should contain *all* resources shared by tasks and threads + * that belong to the same task group: * * Child exit status * Environment variables @@ -445,11 +446,11 @@ struct exitinfo_s * Sockets * Address environments. * - * Each instance of struct task_group_s is reference counted. Each instance is - * created with a reference count of one. The reference incremented when each - * thread joins the group and decremented when each thread exits, leaving the - * group. When the reference count decrements to zero, the struct task_group_s - * is free. + * Each instance of struct task_group_s is reference counted. Each instance + * is created with a reference count of one. The reference incremented when + * each thread joins the group and decremented when each thread exits, + * leaving the group. When the reference count decrements to zero, + * the struct task_group_s is free. */ #ifndef CONFIG_DISABLE_PTHREAD @@ -470,14 +471,14 @@ struct task_group_s pid_t tg_ppid; /* This is the ID of the parent thread */ uint8_t tg_flags; /* See GROUP_FLAG_* definitions */ - /* User identity **************************************************************/ + /* User identity **********************************************************/ #ifdef CONFIG_SCHED_USER_IDENTITY uid_t tg_uid; /* User identity */ gid_t tg_gid; /* User group identity */ #endif - /* Group membership ***********************************************************/ + /* Group membership *******************************************************/ uint8_t tg_nmembers; /* Number of members in the group */ #ifdef HAVE_GROUP_MEMBERS @@ -485,20 +486,20 @@ struct task_group_s FAR pid_t *tg_members; /* Members of the group */ #endif - /* [at|on]exit support ********************************************************/ + /* [at|on]exit support ****************************************************/ #ifdef CONFIG_SCHED_EXIT_MAX struct exitinfo_s tg_exit[CONFIG_SCHED_EXIT_MAX]; #endif #ifdef CONFIG_BINFMT_LOADABLE - /* Loadable module support ****************************************************/ + /* Loadable module support ************************************************/ FAR struct binary_s *tg_bininfo; /* Describes resources used by program */ #endif #ifdef CONFIG_SCHED_HAVE_PARENT - /* Child exit status **********************************************************/ + /* Child exit status ******************************************************/ #ifdef CONFIG_SCHED_CHILD_STATUS FAR struct child_status_s *tg_children; /* Head of a list of child status */ @@ -508,34 +509,35 @@ struct task_group_s #endif /* CONFIG_SCHED_HAVE_PARENT */ #if defined(CONFIG_SCHED_WAITPID) && !defined(CONFIG_SCHED_HAVE_PARENT) - /* waitpid support ************************************************************/ + /* waitpid support ********************************************************/ - /* Simple mechanism used only when there is no support for SIGCHLD */ + /* Simple mechanism used only when there is no support for SIGCHLD */ - uint8_t tg_nwaiters; /* Number of waiters */ - uint8_t tg_waitflags; /* User flags for waitpid behavior */ - sem_t tg_exitsem; /* Support for waitpid */ - FAR int *tg_statloc; /* Location to return exit status */ + uint8_t tg_nwaiters; /* Number of waiters */ + uint8_t tg_waitflags; /* User flags for waitpid behavior */ + sem_t tg_exitsem; /* Support for waitpid */ + FAR int *tg_statloc; /* Location to return exit status */ #endif #ifndef CONFIG_DISABLE_PTHREAD - /* Pthreads *******************************************************************/ + /* Pthreads ***************************************************************/ - /* Pthread join Info: */ + /* Pthread join Info: */ - sem_t tg_joinsem; /* Mutually exclusive access to join data */ - FAR struct join_s *tg_joinhead; /* Head of a list of join data */ - FAR struct join_s *tg_jointail; /* Tail of a list of join data */ + sem_t tg_joinsem; /* Mutually exclusive access to join data */ + FAR struct join_s *tg_joinhead; /* Head of a list of join data */ + FAR struct join_s *tg_jointail; /* Tail of a list of join data */ #endif - /* Thread local storage *******************************************************/ + /* Thread local storage ***************************************************/ #if CONFIG_TLS_NELEM > 0 - tls_ndxset_t tg_tlsset; /* Set of TLS indexes allocated */ - tls_dtor_t tg_tlsdestr[CONFIG_TLS_NELEM]; /* List of TLS destructors */ + tls_ndxset_t tg_tlsset; /* Set of TLS indexes allocated */ + + tls_dtor_t tg_tlsdestr[CONFIG_TLS_NELEM]; /* List of TLS destructors */ #endif - /* POSIX Signal Control Fields ************************************************/ + /* POSIX Signal Control Fields ********************************************/ sq_queue_t tg_sigactionq; /* List of actions for signals */ sq_queue_t tg_sigpendingq; /* List of pending signals */ @@ -544,158 +546,159 @@ struct task_group_s #endif #ifndef CONFIG_DISABLE_ENVIRON - /* Environment variables ******************************************************/ + /* Environment variables **************************************************/ size_t tg_envsize; /* Size of environment string allocation */ FAR char *tg_envp; /* Allocated environment strings */ #endif #ifndef CONFIG_DISABLE_POSIX_TIMERS - /* Interval timer *************************************************************/ + /* Interval timer *********************************************************/ timer_t itimer; #endif - /* PIC data space and address environments ************************************/ + /* PIC data space and address environments ********************************/ /* Logically the PIC data space belongs here (see struct dspace_s). The * current logic needs review: There are differences in the away that the * life of the PIC data is managed. */ - /* File descriptors ***********************************************************/ + /* File descriptors *******************************************************/ - struct filelist tg_filelist; /* Maps file descriptor to file */ + struct filelist tg_filelist; /* Maps file descriptor to file */ #ifdef CONFIG_FILE_STREAM - /* FILE streams ***************************************************************/ + /* FILE streams ***********************************************************/ /* In a flat, single-heap build. The stream list is allocated with this - * structure. But kernel mode with a kernel allocator, it must be separately - * allocated using a user-space allocator. + * structure. But kernel mode with a kernel allocator, + * it must be separately allocated using a user-space allocator. */ #ifdef CONFIG_MM_KERNEL_HEAP FAR struct streamlist *tg_streamlist; #else - struct streamlist tg_streamlist; /* Holds C buffered I/O info */ + struct streamlist tg_streamlist; /* Holds C buffered I/O info */ #endif #endif #ifdef CONFIG_ARCH_ADDRENV - /* Address Environment ********************************************************/ + /* Address Environment ****************************************************/ - group_addrenv_t tg_addrenv; /* Task group address environment */ + group_addrenv_t tg_addrenv; /* Task group address environment */ #endif #ifdef CONFIG_MM_SHM - /* Shared Memory **************************************************************/ + /* Shared Memory **********************************************************/ - struct group_shm_s tg_shm; /* Task shared memory logic */ + struct group_shm_s tg_shm; /* Task shared memory logic */ #endif }; -/* struct tcb_s *****************************************************************/ +/* struct tcb_s *************************************************************/ -/* This is the common part of the task control block (TCB). The TCB is the heart - * of the NuttX task-control logic. Each task or thread is represented by a TCB - * that includes these common definitions. +/* This is the common part of the task control block (TCB). + * The TCB is the heart of the NuttX task-control logic. + * Each task or thread is represented by a TCB that includes these common + * definitions. */ struct tcb_s { - /* Fields used to support list management *************************************/ + /* Fields used to support list management *********************************/ - FAR struct tcb_s *flink; /* Doubly linked list */ + FAR struct tcb_s *flink; /* Doubly linked list */ FAR struct tcb_s *blink; - /* Task Group *****************************************************************/ + /* Task Group *************************************************************/ - FAR struct task_group_s *group; /* Pointer to shared task group data */ + FAR struct task_group_s *group; /* Pointer to shared task group data */ - /* Task Management Fields *****************************************************/ + /* Task Management Fields *************************************************/ - pid_t pid; /* This is the ID of the thread */ - start_t start; /* Thread start function */ - entry_t entry; /* Entry Point into the thread */ - uint8_t sched_priority; /* Current priority of the thread */ - uint8_t init_priority; /* Initial priority of the thread */ + pid_t pid; /* This is the ID of the thread */ + start_t start; /* Thread start function */ + entry_t entry; /* Entry Point into the thread */ + uint8_t sched_priority; /* Current priority of the thread */ + uint8_t init_priority; /* Initial priority of the thread */ #ifdef CONFIG_PRIORITY_INHERITANCE #if CONFIG_SEM_NNESTPRIO > 0 - uint8_t npend_reprio; /* Number of nested reprioritizations */ + uint8_t npend_reprio; /* Number of nested reprioritizations */ uint8_t pend_reprios[CONFIG_SEM_NNESTPRIO]; #endif - uint8_t base_priority; /* "Normal" priority of the thread */ + uint8_t base_priority; /* "Normal" priority of the thread */ #endif - uint8_t task_state; /* Current state of the thread */ + uint8_t task_state; /* Current state of the thread */ #ifdef CONFIG_SMP - uint8_t cpu; /* CPU index if running or assigned */ - cpu_set_t affinity; /* Bit set of permitted CPUs */ + uint8_t cpu; /* CPU index if running/assigned */ + cpu_set_t affinity; /* Bit set of permitted CPUs */ #endif - uint16_t flags; /* Misc. general status flags */ - int16_t lockcount; /* 0=preemptible (not-locked) */ + uint16_t flags; /* Misc. general status flags */ + int16_t lockcount; /* 0=preemptible (not-locked) */ #ifdef CONFIG_IRQCOUNT - int16_t irqcount; /* 0=Not in critical section */ + int16_t irqcount; /* 0=Not in critical section */ #endif #ifdef CONFIG_CANCELLATION_POINTS - int16_t cpcount; /* Nested cancellation point count */ + int16_t cpcount; /* Nested cancellation point count */ #endif - int16_t errcode; /* Used to pass error information */ + int16_t errcode; /* Used to pass error information */ #if CONFIG_RR_INTERVAL > 0 || defined(CONFIG_SCHED_SPORADIC) - int32_t timeslice; /* RR timeslice OR Sporadic budget */ - /* interval remaining */ + int32_t timeslice; /* RR timeslice OR Sporadic budget */ + /* interval remaining */ #endif #ifdef CONFIG_SCHED_SPORADIC - FAR struct sporadic_s *sporadic; /* Sporadic scheduling parameters */ + FAR struct sporadic_s *sporadic; /* Sporadic scheduling parameters */ #endif - struct wdog_s waitdog; /* All timed waits use this timer */ + struct wdog_s waitdog; /* All timed waits use this timer */ - /* Stack-Related Fields *******************************************************/ + /* Stack-Related Fields ***************************************************/ - size_t adj_stack_size; /* Stack size after adjustment */ - /* for hardware, processor, etc. */ - /* (for debug purposes only) */ - FAR void *stack_alloc_ptr; /* Pointer to allocated stack */ - /* Needed to deallocate stack */ - FAR void *stack_base_ptr; /* Adjusted initial stack pointer */ - /* after the frame has been removed */ - /* from the stack. */ + size_t adj_stack_size; /* Stack size after adjustment */ + /* for hardware, processor, etc. */ + /* (for debug purposes only) */ + FAR void *stack_alloc_ptr; /* Pointer to allocated stack */ + /* Needed to deallocate stack */ + FAR void *stack_base_ptr; /* Adjusted initial stack pointer */ + /* after the frame has been */ + /* removed from the stack. */ - /* External Module Support ****************************************************/ + /* External Module Support ************************************************/ #ifdef CONFIG_PIC FAR struct dspace_s *dspace; /* Allocated area for .bss and .data */ #endif - /* POSIX Semaphore Control Fields *********************************************/ + /* POSIX Semaphore Control Fields *****************************************/ - sem_t *waitsem; /* Semaphore ID waiting on */ + sem_t *waitsem; /* Semaphore ID waiting on */ - /* POSIX Signal Control Fields ************************************************/ + /* POSIX Signal Control Fields ********************************************/ - sigset_t sigprocmask; /* Signals that are blocked */ - sigset_t sigwaitmask; /* Waiting for pending signals */ - sq_queue_t sigpendactionq; /* List of pending signal actions */ - sq_queue_t sigpostedq; /* List of posted signals */ - siginfo_t sigunbinfo; /* Signal info when task unblocked */ + sigset_t sigprocmask; /* Signals that are blocked */ + sigset_t sigwaitmask; /* Waiting for pending signals */ + sq_queue_t sigpendactionq; /* List of pending signal actions */ + sq_queue_t sigpostedq; /* List of posted signals */ + siginfo_t sigunbinfo; /* Signal info when task unblocked */ - /* POSIX Named Message Queue Fields *******************************************/ + /* POSIX Named Message Queue Fields ***************************************/ #ifndef CONFIG_DISABLE_MQUEUE - FAR struct mqueue_inode_s *msgwaitq; /* Waiting for this message queue */ + FAR struct mqueue_inode_s *msgwaitq; /* Waiting for this message queue */ #endif - /* Robust mutex support *******************************************************/ + /* Robust mutex support ***************************************************/ #if !defined(CONFIG_DISABLE_PTHREAD) && !defined(CONFIG_PTHREAD_MUTEX_UNSAFE) - FAR struct pthread_mutex_s *mhead; /* List of mutexes held by thread */ + FAR struct pthread_mutex_s *mhead; /* List of mutexes held by thread */ #endif - /* Pre-emption monitor support ************************************************/ + /* Pre-emption monitor support ********************************************/ #ifdef CONFIG_SCHED_CRITMONITOR uint32_t premp_start; /* Time when preemption disabled */ @@ -704,65 +707,66 @@ struct tcb_s uint32_t crit_max; /* Max time in critical section */ #endif - /* State save areas ***********************************************************/ + /* State save areas *******************************************************/ - /* The form and content of these fields are platform-specific. */ + /* The form and content of these fields are platform-specific. */ - struct xcptcontext xcp; /* Interrupt register save area */ + struct xcptcontext xcp; /* Interrupt register save area */ #if CONFIG_TASK_NAME_SIZE > 0 - char name[CONFIG_TASK_NAME_SIZE + 1]; /* Task name (with NUL terminator) */ + char name[CONFIG_TASK_NAME_SIZE + 1]; /* Task name (with NUL terminator */ #endif }; -/* struct task_tcb_s ************************************************************/ +/* struct task_tcb_s ********************************************************/ -/* This is the particular form of the task control block (TCB) structure used by - * tasks (and kernel threads). There are two TCB forms: one for pthreads and - * one for tasks. Both share the common TCB fields (which must appear at the - * top of the structure) plus additional fields unique to tasks and threads. - * Having separate structures for tasks and pthreads adds some complexity, but - * saves memory in that it prevents pthreads from being burdened with the +/* This is the particular form of the task control block (TCB) structure used + * by tasks (and kernel threads). There are two TCB forms: one for pthreads + * and one for tasks. + * Both share the common TCB fields (which must appear at the top of the + * structure) plus additional fields unique to tasks and threads. + * Having separate structures for tasks and pthreads adds some complexity, + * but saves memory in that it prevents pthreads from being burdened with the * overhead required for tasks (and vice versa). */ struct task_tcb_s { - /* Common TCB fields **********************************************************/ + /* Common TCB fields ******************************************************/ struct tcb_s cmn; /* Common TCB fields */ - /* Task Management Fields *****************************************************/ + /* Task Management Fields *************************************************/ #ifdef CONFIG_SCHED_STARTHOOK starthook_t starthook; /* Task startup function */ FAR void *starthookarg; /* The argument passed to the function */ #endif - /* [Re-]start name + start-up parameters **************************************/ + /* [Re-]start name + start-up parameters **********************************/ - FAR char **argv; /* Name+start-up parameters */ + FAR char **argv; /* Name+start-up parameters */ }; -/* struct pthread_tcb_s *********************************************************/ +/* struct pthread_tcb_s *****************************************************/ -/* This is the particular form of the task control block (TCB) structure used by - * pthreads. There are two TCB forms: one for pthreads and one for tasks. Both - * share the common TCB fields (which must appear at the top of the structure) - * plus additional fields unique to tasks and threads. Having separate - * structures for tasks and pthreads adds some complexity, but saves memory in - * that it prevents pthreads from being burdened with the overhead required for - * tasks (and vice versa). +/* This is the particular form of the task control block (TCB) structure used + * by pthreads. There are two TCB forms: one for pthreads and one for tasks. + * Both share the common TCB fields (which must appear at the top of the + * structure) plus additional fields unique to tasks and threads. + * Having separate structures for tasks and pthreads adds some complexity, + * but saves memory in that it prevents pthreads from being burdened with + * the overhead required for tasks (and vice versa). */ #ifndef CONFIG_DISABLE_PTHREAD struct pthread_tcb_s { - /* Common TCB fields **********************************************************/ + /* Common TCB fields ******************************************************/ - struct tcb_s cmn; /* Common TCB fields */ + struct tcb_s cmn; /* Common TCB fields */ - /* Task Management Fields *****************************************************/ + /* Task Management Fields *************************************************/ pthread_trampoline_t trampoline; /* User-space pthread startup function */ pthread_addr_t arg; /* Startup argument */ @@ -777,9 +781,9 @@ typedef CODE void (*nxsched_foreach_t)(FAR struct tcb_s *tcb, FAR void *arg); #endif /* __ASSEMBLY__ */ -/******************************************************************************** +/**************************************************************************** * Public Data - ********************************************************************************/ + ****************************************************************************/ #ifndef __ASSEMBLY__ #undef EXTERN @@ -803,11 +807,11 @@ EXTERN uint32_t g_crit_max[1]; #endif #endif /* CONFIG_SCHED_CRITMONITOR */ -/******************************************************************************** +/**************************************************************************** * Public Function Prototypes - ********************************************************************************/ + ****************************************************************************/ -/******************************************************************************** +/**************************************************************************** * Name: nxsched_self * * Description: @@ -815,11 +819,11 @@ EXTERN uint32_t g_crit_max[1]; * head of the ready-to-run list and manages access to the TCB from outside * of the sched/ sub-directory. * - ********************************************************************************/ + ****************************************************************************/ FAR struct tcb_s *nxsched_self(void); -/******************************************************************************** +/**************************************************************************** * Name: nxsched_foreach * * Description: @@ -840,11 +844,11 @@ FAR struct tcb_s *nxsched_self(void); * Returned Value: * None * - ********************************************************************************/ + ****************************************************************************/ void nxsched_foreach(nxsched_foreach_t handler, FAR void *arg); -/******************************************************************************** +/**************************************************************************** * Name: nxsched_get_tcb * * Description: @@ -858,25 +862,25 @@ void nxsched_foreach(nxsched_foreach_t handler, FAR void *arg); * should establish the critical section BEFORE calling this function and * hold that critical section as long as necessary. * - ********************************************************************************/ + ****************************************************************************/ FAR struct tcb_s *nxsched_get_tcb(pid_t pid); -/******************************************************************************** +/**************************************************************************** * Name: nxsched_releasepid * * Description: * When a task is destroyed, this function must be called to make its * process ID available for re-use. * - ********************************************************************************/ + ****************************************************************************/ int nxsched_release_tcb(FAR struct tcb_s *tcb, uint8_t ttype); -/* File system helpers **********************************************************/ +/* File system helpers ******************************************************/ -/* These functions all extract lists from the group structure associated with the - * currently executing task. +/* These functions all extract lists from the group structure associated with + * the currently executing task. */ FAR struct filelist *nxsched_get_files(void); @@ -884,7 +888,7 @@ FAR struct filelist *nxsched_get_files(void); FAR struct streamlist *nxsched_get_streams(void); #endif /* CONFIG_FILE_STREAM */ -/******************************************************************************** +/**************************************************************************** * Name: nxtask_init * * Description: @@ -920,13 +924,13 @@ FAR struct streamlist *nxsched_get_streams(void); * nxsched_release_tcb() to free the TCB (which could be in most any * state). * - ********************************************************************************/ + ****************************************************************************/ int nxtask_init(FAR struct task_tcb_s *tcb, const char *name, int priority, FAR void *stack, uint32_t stack_size, main_t entry, FAR char * const argv[]); -/******************************************************************************** +/**************************************************************************** * Name: nxtask_uninit * * Description: @@ -943,11 +947,11 @@ int nxtask_init(FAR struct task_tcb_s *tcb, const char *name, int priority, * Returned Value: * OK on success; negative error value on failure appropriately. * - ********************************************************************************/ + ****************************************************************************/ void nxtask_uninit(FAR struct task_tcb_s *tcb); -/******************************************************************************** +/**************************************************************************** * Name: nxtask_activate * * Description: @@ -962,11 +966,11 @@ void nxtask_uninit(FAR struct task_tcb_s *tcb); * Returned Value: * None * - ********************************************************************************/ + ****************************************************************************/ void nxtask_activate(FAR struct tcb_s *tcb); -/******************************************************************************** +/**************************************************************************** * Name: nxtask_starthook * * Description: @@ -983,14 +987,14 @@ void nxtask_activate(FAR struct tcb_s *tcb); * Returned Value: * None * - ********************************************************************************/ + ****************************************************************************/ #ifdef CONFIG_SCHED_STARTHOOK void nxtask_starthook(FAR struct task_tcb_s *tcb, starthook_t starthook, FAR void *arg); #endif -/******************************************************************************** +/**************************************************************************** * Name: nxtask_startup * * Description: @@ -1004,20 +1008,20 @@ void nxtask_starthook(FAR struct task_tcb_s *tcb, starthook_t starthook, * Returned Value: * None. This function does not return. * - ********************************************************************************/ + ****************************************************************************/ #ifndef CONFIG_BUILD_KERNEL void nxtask_startup(main_t entrypt, int argc, FAR char *argv[]); #endif -/******************************************************************************** +/**************************************************************************** * Internal vfork support. The overall sequence is: * * 1) User code calls vfork(). vfork() is provided in architecture-specific * code. * 2) vfork()and calls nxtask_setup_vfork(). - * 3) nxtask_setup_vfork() allocates and configures the child task's TCB. This - * consists of: + * 3) nxtask_setup_vfork() allocates and configures the child task's TCB. + * This consists of: * - Allocation of the child task's TCB. * - Initialization of file descriptors and streams * - Configuration of environment variables @@ -1030,15 +1034,16 @@ void nxtask_startup(main_t entrypt, int argc, FAR char *argv[]); * 5) vfork() then calls nxtask_start_vfork() * 6) nxtask_start_vfork() then executes the child thread. * - * nxtask_abort_vfork() may be called if an error occurs between steps 3 and 6. + * nxtask_abort_vfork() may be called if an error occurs between + * steps 3 and 6. * - ********************************************************************************/ + ****************************************************************************/ FAR struct task_tcb_s *nxtask_setup_vfork(start_t retaddr); pid_t nxtask_start_vfork(FAR struct task_tcb_s *child); void nxtask_abort_vfork(FAR struct task_tcb_s *child, int errcode); -/******************************************************************************** +/**************************************************************************** * Name: group_exitinfo * * Description: @@ -1056,18 +1061,19 @@ void nxtask_abort_vfork(FAR struct task_tcb_s *child, int errcode); * 0 (OK) is returned on success and a negated errno is returned on * failure. * - ********************************************************************************/ + ****************************************************************************/ #ifdef CONFIG_BINFMT_LOADABLE struct binary_s; /* Forward reference */ int group_exitinfo(pid_t pid, FAR struct binary_s *bininfo); #endif -/******************************************************************************** +/**************************************************************************** * Name: nxsched_resume_scheduler * * Description: - * Called by architecture specific implementations that block task execution. + * Called by architecture specific implementations that block task + * execution. * This function prepares the scheduler for the thread that is about to be * restarted. * @@ -1077,7 +1083,7 @@ int group_exitinfo(pid_t pid, FAR struct binary_s *bininfo); * Returned Value: * None * - ********************************************************************************/ + ****************************************************************************/ #if CONFIG_RR_INTERVAL > 0 || defined(CONFIG_SCHED_RESUMESCHEDULER) void nxsched_resume_scheduler(FAR struct tcb_s *tcb); @@ -1085,13 +1091,14 @@ void nxsched_resume_scheduler(FAR struct tcb_s *tcb); # define nxsched_resume_scheduler(tcb) #endif -/******************************************************************************** +/**************************************************************************** * Name: nxsched_suspend_scheduler * * Description: - * Called by architecture specific implementations to resume task execution. - * This function performs scheduler operations for the thread that is about to - * be suspended. + * Called by architecture specific implementations to resume task + * execution. + * This function performs scheduler operations for the thread that is about + * to be suspended. * * Input Parameters: * tcb - The TCB of the thread to be restarted. @@ -1099,7 +1106,7 @@ void nxsched_resume_scheduler(FAR struct tcb_s *tcb); * Returned Value: * None * - ********************************************************************************/ + ****************************************************************************/ #ifdef CONFIG_SCHED_SUSPENDSCHEDULER void nxsched_suspend_scheduler(FAR struct tcb_s *tcb); @@ -1107,7 +1114,7 @@ void nxsched_suspend_scheduler(FAR struct tcb_s *tcb); # define nxsched_suspend_scheduler(tcb) #endif -/******************************************************************************** +/**************************************************************************** * Name: nxsched_get_param * * Description: @@ -1133,12 +1140,12 @@ void nxsched_suspend_scheduler(FAR struct tcb_s *tcb); * This function can fail if param is null (EINVAL) or if pid does * not correspond to any task (ESRCH). * - ********************************************************************************/ + ****************************************************************************/ struct sched_param; /* Forward reference */ int nxsched_get_param (pid_t pid, FAR struct sched_param *param); -/******************************************************************************** +/**************************************************************************** * Name: nxsched_set_param * * Description: @@ -1170,12 +1177,12 @@ int nxsched_get_param (pid_t pid, FAR struct sched_param *param); * EPERM The calling task does not have appropriate privileges. * ESRCH The task whose ID is pid could not be found. * - ********************************************************************************/ + ****************************************************************************/ struct sched_param; /* Forward reference */ int nxsched_set_param(pid_t pid, FAR const struct sched_param *param); -/******************************************************************************** +/**************************************************************************** * Name: nxsched_get_scheduler * * Description: @@ -1202,11 +1209,11 @@ int nxsched_set_param(pid_t pid, FAR const struct sched_param *param); * * ESRCH The task whose ID is pid could not be found. * - ********************************************************************************/ + ****************************************************************************/ int nxsched_get_scheduler(pid_t pid); -/******************************************************************************** +/**************************************************************************** * Name: nxsched_set_scheduler * * Description: @@ -1238,12 +1245,12 @@ int nxsched_get_scheduler(pid_t pid); * EINVAL The scheduling policy is not one of the recognized policies. * ESRCH The task whose ID is pid could not be found. * - ********************************************************************************/ + ****************************************************************************/ int nxsched_set_scheduler(pid_t pid, int policy, FAR const struct sched_param *param); -/******************************************************************************** +/**************************************************************************** * Name: nxsched_get_affinity * * Description: @@ -1270,13 +1277,13 @@ int nxsched_set_scheduler(pid_t pid, int policy, * * ESRCH The task whose ID is pid could not be found. * - ********************************************************************************/ + ****************************************************************************/ #ifdef CONFIG_SMP int nxsched_get_affinity(pid_t pid, size_t cpusetsize, FAR cpu_set_t *mask); #endif -/******************************************************************************** +/**************************************************************************** * Name: nxsched_set_affinity * * Description: @@ -1306,14 +1313,14 @@ int nxsched_get_affinity(pid_t pid, size_t cpusetsize, FAR cpu_set_t *mask); * * ESRCH The task whose ID is pid could not be found. * - ********************************************************************************/ + ****************************************************************************/ #ifdef CONFIG_SMP int nxsched_set_affinity(pid_t pid, size_t cpusetsize, FAR const cpu_set_t *mask); #endif -/******************************************************************************** +/**************************************************************************** * Name: nxsched_get_stackinfo * * Description: @@ -1331,13 +1338,13 @@ int nxsched_set_affinity(pid_t pid, size_t cpusetsize, * -EACCES The calling thread does not have privileges to access the * stack of the thread associated with the pid. * - ********************************************************************************/ + ****************************************************************************/ int nxsched_get_stackinfo(pid_t pid, FAR struct stackinfo_s *stackinfo); -/******************************************************************************** +/**************************************************************************** * Name: nx_wait/nx_waitid/nx_waitpid - ********************************************************************************/ + ****************************************************************************/ #ifdef CONFIG_SCHED_WAITPID pid_t nx_wait(FAR int *stat_loc); From a2941532bdacba9b8e69dfae4b365aff33f0503a Mon Sep 17 00:00:00 2001 From: Huang Qi Date: Mon, 17 May 2021 17:31:13 +0800 Subject: [PATCH 192/739] pthread: Avoid recursive pthread_exit call pthread_exit will be called recursive when pthread_cancel or other cleanup operation with syscalls that support cancellation, to avoid this by mark current tcb flag as TCB_FLAG_CANCEL_DOING instead of TCB_FLAG_CANCEL_PENDING. Signed-off-by: Huang Qi --- sched/pthread/pthread_cancel.c | 3 +-- sched/signal/sig_default.c | 3 +-- sched/task/task_cancelpt.c | 6 ++---- sched/task/task_setcancelstate.c | 3 +-- sched/task/task_setcanceltype.c | 11 +++++------ 5 files changed, 10 insertions(+), 16 deletions(-) diff --git a/sched/pthread/pthread_cancel.c b/sched/pthread/pthread_cancel.c index e4088ba8c11..adc2b7eef9d 100644 --- a/sched/pthread/pthread_cancel.c +++ b/sched/pthread/pthread_cancel.c @@ -84,10 +84,9 @@ int pthread_cancel(pthread_t thread) if (tcb == this_task()) { -#if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) tcb->flags &= ~TCB_FLAG_CANCEL_PENDING; tcb->flags |= TCB_FLAG_CANCEL_DOING; - +#if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) up_pthread_exit(((FAR struct pthread_tcb_s *)tcb)->exit, PTHREAD_CANCELED); #else diff --git a/sched/signal/sig_default.c b/sched/signal/sig_default.c index 7e87089e57d..0078f476870 100644 --- a/sched/signal/sig_default.c +++ b/sched/signal/sig_default.c @@ -224,10 +224,9 @@ static void nxsig_abnormal_termination(int signo) * REVISIT: This will not work if HAVE_GROUP_MEMBERS is not set. */ -#if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) rtcb->flags &= ~TCB_FLAG_CANCEL_PENDING; rtcb->flags |= TCB_FLAG_CANCEL_DOING; - +#if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) up_pthread_exit(((FAR struct pthread_tcb_s *)rtcb)->exit, PTHREAD_CANCELED); #else diff --git a/sched/task/task_cancelpt.c b/sched/task/task_cancelpt.c index 659e5db6d1f..228e90e8455 100644 --- a/sched/task/task_cancelpt.c +++ b/sched/task/task_cancelpt.c @@ -140,10 +140,9 @@ bool enter_cancellation_point(void) if ((tcb->flags & TCB_FLAG_TTYPE_MASK) == TCB_FLAG_TTYPE_PTHREAD) { -#if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) tcb->flags &= ~TCB_FLAG_CANCEL_PENDING; tcb->flags |= TCB_FLAG_CANCEL_DOING; - +#if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) up_pthread_exit(((FAR struct pthread_tcb_s *)tcb)->exit, PTHREAD_CANCELED); #else @@ -235,10 +234,9 @@ void leave_cancellation_point(void) if ((tcb->flags & TCB_FLAG_TTYPE_MASK) == TCB_FLAG_TTYPE_PTHREAD) { -#if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) tcb->flags &= ~TCB_FLAG_CANCEL_PENDING; tcb->flags |= TCB_FLAG_CANCEL_DOING; - +#if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) up_pthread_exit(((FAR struct pthread_tcb_s *)tcb)->exit, PTHREAD_CANCELED); #else diff --git a/sched/task/task_setcancelstate.c b/sched/task/task_setcancelstate.c index 6b61632e990..63f3ef3fa25 100644 --- a/sched/task/task_setcancelstate.c +++ b/sched/task/task_setcancelstate.c @@ -112,10 +112,9 @@ int task_setcancelstate(int state, FAR int *oldstate) if ((tcb->flags & TCB_FLAG_TTYPE_MASK) == TCB_FLAG_TTYPE_PTHREAD) { -#if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) tcb->flags &= ~TCB_FLAG_CANCEL_PENDING; tcb->flags |= TCB_FLAG_CANCEL_DOING; - +#if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) up_pthread_exit(((FAR struct pthread_tcb_s *)tcb)->exit, PTHREAD_CANCELED); #else diff --git a/sched/task/task_setcanceltype.c b/sched/task/task_setcanceltype.c index d57cc6408a8..f33aeb1fc5d 100644 --- a/sched/task/task_setcanceltype.c +++ b/sched/task/task_setcanceltype.c @@ -100,14 +100,13 @@ int task_setcanceltype(int type, FAR int *oldtype) #ifndef CONFIG_DISABLE_PTHREAD if ((tcb->flags & TCB_FLAG_TTYPE_MASK) == TCB_FLAG_TTYPE_PTHREAD) { + tcb->flags &= ~TCB_FLAG_CANCEL_PENDING; + tcb->flags |= TCB_FLAG_CANCEL_DOING; #if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) - tcb->flags &= ~TCB_FLAG_CANCEL_PENDING; - tcb->flags |= TCB_FLAG_CANCEL_DOING; - - up_pthread_exit(((FAR struct pthread_tcb_s *)tcb)->exit, - PTHREAD_CANCELED); + up_pthread_exit(((FAR struct pthread_tcb_s *)tcb)->exit, + PTHREAD_CANCELED); #else - pthread_exit(PTHREAD_CANCELED); + pthread_exit(PTHREAD_CANCELED); #endif } else From 1a84314f5d465862d26494949910133d84972082 Mon Sep 17 00:00:00 2001 From: "Alan C. Assis" Date: Fri, 21 May 2021 18:32:28 -0300 Subject: [PATCH 193/739] xtensa: #ifdef SYMBOL is always true if SYMBOL defined as 0 --- arch/xtensa/include/irq.h | 2 +- arch/xtensa/src/common/xtensa_context.S | 6 +++--- arch/xtensa/src/common/xtensa_dumpstate.c | 2 +- arch/xtensa/src/common/xtensa_user_handler.S | 2 +- arch/xtensa/src/esp32/esp32_user.c | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/arch/xtensa/include/irq.h b/arch/xtensa/include/irq.h index 5ab20c64e2a..54cb0ecfe02 100644 --- a/arch/xtensa/include/irq.h +++ b/arch/xtensa/include/irq.h @@ -89,7 +89,7 @@ #define _REG_LOOPS_START (21) -#ifdef XCHAL_HAVE_LOOPS +#if XCHAL_HAVE_LOOPS != 0 # define REG_LBEG (_REG_LOOPS_START + 0) # define REG_LEND (_REG_LOOPS_START + 1) # define REG_LCOUNT (_REG_LOOPS_START + 2) diff --git a/arch/xtensa/src/common/xtensa_context.S b/arch/xtensa/src/common/xtensa_context.S index decef96f920..f3e1a8e9eef 100644 --- a/arch/xtensa/src/common/xtensa_context.S +++ b/arch/xtensa/src/common/xtensa_context.S @@ -138,7 +138,7 @@ _xtensa_context_save: rsr a3, SAR s32i a3, a2, (4 * REG_SAR) -#ifdef XCHAL_HAVE_LOOPS +#if XCHAL_HAVE_LOOPS != 0 rsr a3, LBEG s32i a3, a2, (4 * REG_LBEG) rsr a3, LEND @@ -344,7 +344,7 @@ _xtensa_save_hook: rsr a3, SAR s32i a3, a2, (4 * REG_SAR) -#ifdef XCHAL_HAVE_LOOPS +#if XCHAL_HAVE_LOOPS != 0 rsr a3, LBEG s32i a3, a2, (4 * REG_LBEG) rsr a3, LEND @@ -449,7 +449,7 @@ xtensa_context_save: _xtensa_context_restore: -#ifdef XCHAL_HAVE_LOOPS +#if XCHAL_HAVE_LOOPS != 0 l32i a3, a2, (4 * REG_LBEG) l32i a4, a2, (4 * REG_LEND) wsr a3, LBEG diff --git a/arch/xtensa/src/common/xtensa_dumpstate.c b/arch/xtensa/src/common/xtensa_dumpstate.c index 34e70e0af1e..dc07da5e0ef 100644 --- a/arch/xtensa/src/common/xtensa_dumpstate.c +++ b/arch/xtensa/src/common/xtensa_dumpstate.c @@ -140,7 +140,7 @@ static inline void xtensa_registerdump(void) _alert(" SAR: %08lx CAUSE: %08lx VADDR: %08lx\n", (unsigned long)regs[REG_SAR], (unsigned long)regs[REG_EXCCAUSE], (unsigned long)regs[REG_EXCVADDR]); -#ifdef XCHAL_HAVE_LOOPS +#if XCHAL_HAVE_LOOPS != 0 _alert(" LBEG: %08lx LEND: %08lx LCNT: %08lx\n", (unsigned long)regs[REG_LBEG], (unsigned long)regs[REG_LEND], (unsigned long)regs[REG_LCOUNT]); diff --git a/arch/xtensa/src/common/xtensa_user_handler.S b/arch/xtensa/src/common/xtensa_user_handler.S index 25ed1efc4fd..e7b470a5133 100644 --- a/arch/xtensa/src/common/xtensa_user_handler.S +++ b/arch/xtensa/src/common/xtensa_user_handler.S @@ -311,7 +311,7 @@ _xtensa_syscall_handler: /* Save EPC */ -#ifdef XCHAL_HAVE_LOOPS +#if XCHAL_HAVE_LOOPS != 0 /* Save A2 and A3 now to give us some registers to work with. A0, A2 * and A3 are now available. NOTE that A3 will get saved again in * _xtensa_context_save(). diff --git a/arch/xtensa/src/esp32/esp32_user.c b/arch/xtensa/src/esp32/esp32_user.c index 8b683611167..bff327b2afd 100644 --- a/arch/xtensa/src/esp32/esp32_user.c +++ b/arch/xtensa/src/esp32/esp32_user.c @@ -293,7 +293,7 @@ static void advance_pc(uint32_t *regs, int diff) /* Advance to the next instruction. */ nextpc = regs[REG_PC] + diff; -#ifdef XCHAL_HAVE_LOOPS +#if XCHAL_HAVE_LOOPS != 0 /* See Xtensa ISA 4.3.2.4 Loopback Semantics */ if (regs[REG_LCOUNT] != 0 && nextpc == regs[REG_LEND]) From 8596fdd0bfc664bc9284b578245c6ef07d83fa8a Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Thu, 20 May 2021 12:35:25 -0700 Subject: [PATCH 194/739] stm32h7:i2c use inttypes --- arch/arm/src/stm32h7/stm32_i2c.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/src/stm32h7/stm32_i2c.c b/arch/arm/src/stm32h7/stm32_i2c.c index c0b30647831..cfc1e607389 100644 --- a/arch/arm/src/stm32h7/stm32_i2c.c +++ b/arch/arm/src/stm32h7/stm32_i2c.c @@ -886,8 +886,8 @@ static inline int stm32_i2c_sem_waitdone(FAR struct stm32_i2c_priv_s *priv) while (priv->intstate != INTSTATE_DONE && elapsed < timeout); - i2cinfo("intstate: %d elapsed: %ld threshold: %ld status: 0x%08x\n", - priv->intstate, (long)elapsed, (long)timeout, priv->status); + i2cinfo("intstate: %d elapsed: %ld threshold: %ld status: 0x%08" PRIx32 + "\n", priv->intstate, (long)elapsed, (long)timeout, priv->status); /* Set the interrupt state back to IDLE */ From 86523318fc07f71ce7c8e357bac22a9033637e19 Mon Sep 17 00:00:00 2001 From: David Sidrane Date: Thu, 20 May 2021 12:35:43 -0700 Subject: [PATCH 195/739] stm32f7:i2c use inttypes --- arch/arm/src/stm32f7/stm32_i2c.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/src/stm32f7/stm32_i2c.c b/arch/arm/src/stm32f7/stm32_i2c.c index 6b8b90a7411..d6695292e2d 100644 --- a/arch/arm/src/stm32f7/stm32_i2c.c +++ b/arch/arm/src/stm32f7/stm32_i2c.c @@ -927,8 +927,8 @@ static inline int stm32_i2c_sem_waitdone(FAR struct stm32_i2c_priv_s *priv) while (priv->intstate != INTSTATE_DONE && elapsed < timeout); - i2cinfo("intstate: %d elapsed: %ld threshold: %ld status: 0x%08x\n", - priv->intstate, (long)elapsed, (long)timeout, priv->status); + i2cinfo("intstate: %d elapsed: %ld threshold: %ld status: 0x%08" PRIx32 + "\n", priv->intstate, (long)elapsed, (long)timeout, priv->status); /* Set the interrupt state back to IDLE */ From 48b0e48cd46ad93fc55b28a612b3943cd492e1de Mon Sep 17 00:00:00 2001 From: "chao.an" Date: Tue, 11 May 2021 20:20:05 +0800 Subject: [PATCH 196/739] net/tcp: set/get TCP_KEEPINTVL/IDLE value as BSD style Signed-off-by: chao.an --- net/tcp/tcp_getsockopt.c | 96 +++++++++++++++------------------ net/tcp/tcp_setsockopt.c | 111 +++++++++++++++------------------------ 2 files changed, 83 insertions(+), 124 deletions(-) diff --git a/net/tcp/tcp_getsockopt.c b/net/tcp/tcp_getsockopt.c index f8dec29aed6..88a2da157d2 100644 --- a/net/tcp/tcp_getsockopt.c +++ b/net/tcp/tcp_getsockopt.c @@ -144,65 +144,51 @@ int tcp_getsockopt(FAR struct socket *psock, int option, break; case TCP_KEEPIDLE: /* Start keepalives after this IDLE period */ - if (*value_len < sizeof(struct timeval)) - { - /* REVISIT: POSIX says that we should truncate the value if it - * is larger than value_len. That just doesn't make sense - * to me in this case. - */ - - ret = -EINVAL; - } - else - { - FAR struct timeval *tv = (FAR struct timeval *)value; - - if (tv == NULL) - { - ret = -EINVAL; - } - else - { - /* Convert the KeepIdle time from deciseconds to struct - * timeval. - */ - - net_dsec2timeval(conn->keepidle, tv); - *value_len = sizeof(struct timeval); - ret = OK; - } - } - break; - case TCP_KEEPINTVL: /* Interval between keepalives */ - if (*value_len < sizeof(struct timeval)) - { - /* REVISIT: POSIX says that we should truncate the value if it - * is larger than value_len. That just doesn't make sense - * to me in this case. - */ + { + int dsecs; - ret = -EINVAL; - } - else - { - FAR struct timeval *tv = (FAR struct timeval *)value; + if (option == TCP_KEEPIDLE) + { + dsecs = conn->keepidle; + } + else + { + dsecs = conn->keepintvl; + } - if (tv == NULL) - { - ret = -EINVAL; - } - else - { - /* Convert the KeepIdle time from deciseconds to struct - * timeval. - */ + if (value == NULL) + { + ret = -EINVAL; + } + else if (*value_len == sizeof(struct timeval)) + { + FAR struct timeval *tv = (FAR struct timeval *)value; - net_dsec2timeval(conn->keepintvl, tv); - *value_len = sizeof(struct timeval); - ret = OK; - } - } + /* Convert the KeepIdle time from deciseconds to struct + * timeval. + */ + + net_dsec2timeval(dsecs, tv); + *value_len = sizeof(struct timeval); + ret = OK; + } + else if (*value_len == sizeof(int)) + { + FAR int *pdsecs = (FAR int *)value; + *pdsecs = dsecs; + ret = OK; + } + else + { + /* REVISIT: POSIX says that we should truncate the value if it + * is larger than value_len. That just doesn't make sense + * to me in this case. + */ + + ret = -EINVAL; + } + } break; case TCP_KEEPCNT: /* Number of keepalives before death */ diff --git a/net/tcp/tcp_setsockopt.c b/net/tcp/tcp_setsockopt.c index 5404c803e55..3ddba92d0e8 100644 --- a/net/tcp/tcp_setsockopt.c +++ b/net/tcp/tcp_setsockopt.c @@ -138,79 +138,52 @@ int tcp_setsockopt(FAR struct socket *psock, int option, break; case TCP_KEEPIDLE: /* Start keepalives after this IDLE period */ - if (value_len != sizeof(struct timeval)) - { - ret = -EDOM; - } - else - { - FAR struct timeval *tv = (FAR struct timeval *)value; - - if (tv == NULL) - { - ret = -EINVAL; - } - else - { - unsigned int dsecs; - - /* Get the IDLE time value. Any microsecond remainder will - * be forced to the next larger, whole decisecond value. - */ - - dsecs = (socktimeo_t)net_timeval2dsec(tv, TV2DS_CEIL); - if (dsecs > UINT16_MAX) - { - nwarn("WARNING: TCP_KEEPIDLE value out of range: %u\n", - dsecs); - ret = -EDOM; - } - else - { - conn->keepidle = (uint16_t)dsecs; - conn->keeptime = clock_systime_ticks(); /* Reset start time */ - ret = OK; - } - } - } - break; - case TCP_KEEPINTVL: /* Interval between keepalives */ - if (value_len != sizeof(struct timeval)) - { - ret = -EDOM; - } - else - { - FAR struct timeval *tv = (FAR struct timeval *)value; + { + unsigned int dsecs; - if (tv == NULL) - { - ret = -EINVAL; - } - else - { - unsigned int dsecs; + if (value == NULL) + { + return -EINVAL; + } + else if (value_len == sizeof(struct timeval)) + { + FAR struct timeval *tv = (FAR struct timeval *)value; - /* Get the IDLE time value. Any microsecond remainder will - * be forced to the next larger, whole decisecond value. - */ + /* Get the IDLE time value. Any microsecond remainder will + * be forced to the next larger, whole decisecond value. + */ - dsecs = (socktimeo_t)net_timeval2dsec(tv, TV2DS_CEIL); - if (dsecs > UINT16_MAX) - { - nwarn("WARNING: TCP_KEEPINTVL value out of range: %u\n", - dsecs); - ret = -EDOM; - } - else - { - conn->keepintvl = (uint16_t)dsecs; - conn->keeptime = clock_systime_ticks(); /* Reset start time */ - ret = OK; - } - } - } + dsecs = (socktimeo_t)net_timeval2dsec(tv, TV2DS_CEIL); + } + else if (value_len == sizeof(int)) + { + dsecs = *(FAR int *)value; + } + else + { + return -EDOM; + } + + if (dsecs > UINT16_MAX) + { + nwarn("WARNING: value out of range: %u\n", dsecs); + return -EDOM; + } + + if (option == TCP_KEEPIDLE) + { + conn->keepidle = (uint16_t)dsecs; + } + else + { + conn->keepintvl = (uint16_t)dsecs; + } + + conn->keeptime = clock_systime_ticks(); /* Reset start time */ + + ret = OK; + } break; case TCP_KEEPCNT: /* Number of keepalives before death */ From 76df958e34cc5e1cf32a204c3b6ce524eb644496 Mon Sep 17 00:00:00 2001 From: Dong Heng Date: Tue, 11 May 2021 15:08:29 +0800 Subject: [PATCH 197/739] riscv/esp32c3: Support SPI Flash encryption read/write --- arch/risc-v/src/esp32c3/esp32c3_spiflash.c | 246 +++++++++++++++++- boards/risc-v/esp32c3/esp32c3-devkit/Kconfig | 16 ++ .../esp32c3-devkit/scripts/esp32c3_rom.ld | 6 +- .../esp32c3-devkit/src/esp32c3-devkit.h | 18 ++ .../esp32c3-devkit/src/esp32c3_bringup.c | 5 + .../esp32c3-devkit/src/esp32c3_spiflash.c | 9 +- 6 files changed, 288 insertions(+), 12 deletions(-) diff --git a/arch/risc-v/src/esp32c3/esp32c3_spiflash.c b/arch/risc-v/src/esp32c3/esp32c3_spiflash.c index 96f19ad30ff..41e98101444 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_spiflash.c +++ b/arch/risc-v/src/esp32c3/esp32c3_spiflash.c @@ -36,13 +36,41 @@ #include #include +#include "esp32c3_attr.h" #include "esp32c3_spiflash.h" #include "rom/esp32c3_spiflash.h" +#include "hardware/esp32c3_soc.h" /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ +/* RO data page in MMU index */ + +#define DROM0_PAGES_START (2) +#define DROM0_PAGES_END (128) + +/* MMU invalid value */ + +#define INVALID_MMU_VAL (0x100) + +/* MMU page size */ + +#define SPI_FLASH_MMU_PAGE_SIZE (0x10000) + +/* MMU base virtual mapped address */ + +#define VADDR0_START_ADDR (0x3c020000) + +/* Flash MMU table for CPU */ + +#define MMU_TABLE ((volatile uint32_t *)DR_REG_MMU_TABLE) + +#define MMU_ADDR2PAGE(_addr) ((_addr) / SPI_FLASH_MMU_PAGE_SIZE) +#define MMU_ADDR2OFF(_addr) ((_addr) % SPI_FLASH_MMU_PAGE_SIZE) +#define MMU_BYTES2PAGES(_n) (((_n) + SPI_FLASH_MMU_PAGE_SIZE - 1) / \ + SPI_FLASH_MMU_PAGE_SIZE) + #define SPI_FLASH_BLK_SIZE 256 #define SPI_FLASH_ERASE_SIZE 4096 #define SPI_FLASH_SIZE (4 * 1024 * 1024) @@ -72,6 +100,37 @@ struct esp32c3_spiflash_s const struct spiflash_legacy_data_s **data; }; +/* SPI Flash map request data */ + +struct spiflash_map_req_s +{ + /* Request mapping SPI Flash base address */ + + uint32_t src_addr; + + /* Request mapping SPI Flash size */ + + uint32_t size; + + /* Mapped memory pointer */ + + void *ptr; + + /* Mapped started MMU page index */ + + uint32_t start_page; + + /* Mapped MMU page count */ + + uint32_t page_cnt; +}; + +struct spiflash_cachestate_s +{ + irqstate_t flags; + uint32_t val; +}; + /**************************************************************************** * Private Functions Prototypes ****************************************************************************/ @@ -103,6 +162,14 @@ static ssize_t esp32c3_bwrite_encrypt(struct mtd_dev_s *dev, static int esp32c3_ioctl(struct mtd_dev_s *dev, int cmd, unsigned long arg); +/**************************************************************************** + * Public Functions Declaration + ****************************************************************************/ + +extern int cache_invalidate_addr(uint32_t addr, uint32_t size); +extern uint32_t cache_suspend_icache(void); +extern void cache_resume_icache(uint32_t val); + /**************************************************************************** * Public Data ****************************************************************************/ @@ -154,6 +221,175 @@ static sem_t g_exclsem = SEM_INITIALIZER(1); * Private Functions ****************************************************************************/ +/**************************************************************************** + * Name: spiflash_opstart + * + * Description: + * Prepare for an SPIFLASH operation. + * + ****************************************************************************/ + +static inline void spiflash_opstart(struct spiflash_cachestate_s *state) +{ + state->flags = enter_critical_section(); + state->val = cache_suspend_icache() << 16; +} + +/**************************************************************************** + * Name: spiflash_opdone + * + * Description: + * Undo all the steps of opstart. + * + ****************************************************************************/ + +static inline void spiflash_opdone(const struct spiflash_cachestate_s *state) +{ + cache_resume_icache(state->val >> 16); + leave_critical_section(state->flags); +} + +/**************************************************************************** + * Name: esp32c3_mmap + * + * Description: + * Mapped SPI Flash address to ESP32-C3's address bus, so that software + * can read SPI Flash data by reading data from memory access. + * + * If SPI Flash hardware encryption is enable, the read from mapped + * address is decrypted. + * + * Input Parameters: + * req - SPI Flash mapping requesting parameters + * + * Returned Value: + * 0 if success or a negative value if fail. + * + ****************************************************************************/ + +static int IRAM_ATTR esp32c3_mmap(struct spiflash_map_req_s *req) +{ + int ret; + int i; + int start_page; + int flash_page; + int page_cnt; + uint32_t mapped_addr; + struct spiflash_cachestate_s state; + + spiflash_opstart(&state); + + for (start_page = DROM0_PAGES_START; + start_page < DROM0_PAGES_END; + ++start_page) + { + if (MMU_TABLE[start_page] == INVALID_MMU_VAL) + { + break; + } + } + + flash_page = MMU_ADDR2PAGE(req->src_addr); + page_cnt = MMU_BYTES2PAGES(req->size); + + if (start_page + page_cnt < DROM0_PAGES_END) + { + mapped_addr = (start_page - DROM0_PAGES_START) * + SPI_FLASH_MMU_PAGE_SIZE + + VADDR0_START_ADDR; + + for (i = 0; i < page_cnt; i++) + { + MMU_TABLE[start_page + i] = flash_page + i; + cache_invalidate_addr(mapped_addr + i * SPI_FLASH_MMU_PAGE_SIZE, + SPI_FLASH_MMU_PAGE_SIZE); + } + + req->start_page = start_page; + req->page_cnt = page_cnt; + req->ptr = (void *)(mapped_addr + MMU_ADDR2OFF(req->src_addr)); + ret = OK; + } + else + { + ret = -ENOBUFS; + } + + spiflash_opdone(&state); + + return ret; +} + +/**************************************************************************** + * Name: esp32c3_ummap + * + * Description: + * Unmap SPI Flash address in ESP32-C3's address bus, and free resource. + * + * Input Parameters: + * req - SPI Flash mapping requesting parameters + * + * Returned Value: + * None. + * + ****************************************************************************/ + +static void IRAM_ATTR esp32c3_ummap(const struct spiflash_map_req_s *req) +{ + int i; + struct spiflash_cachestate_s state; + + spiflash_opstart(&state); + + for (i = req->start_page; i < req->start_page + req->page_cnt; ++i) + { + MMU_TABLE[i] = INVALID_MMU_VAL; + } + + spiflash_opdone(&state); +} + +/**************************************************************************** + * Name: esp32c3_readdata_encrypted + * + * Description: + * Read decrypted data from SPI Flash at designated address when + * enable SPI Flash hardware encryption. + * + * Input Parameters: + * addr - target address + * buffer - data buffer pointer + * size - data number + * + * Returned Value: + * OK if success or a negative value if fail. + * + ****************************************************************************/ + +static IRAM_ATTR int esp32c3_readdata_encrypted(uint32_t addr, + uint8_t *buffer, + uint32_t size) +{ + int ret; + struct spiflash_map_req_s req = + { + .src_addr = addr, + .size = size + }; + + ret = esp32c3_mmap(&req); + if (ret < 0) + { + return ret; + } + + memcpy(buffer, req.ptr, size); + + esp32c3_ummap(&req); + + return OK; +} + /**************************************************************************** * Name: esp32c3_erase * @@ -359,7 +595,7 @@ static ssize_t esp32c3_read_decrypt(struct mtd_dev_s *dev, return ret; } - ret = spi_flash_read_encrypted(offset, buffer, nbytes); + ret = esp32c3_readdata_encrypted(offset, buffer, nbytes); nxsem_post(&g_exclsem); @@ -393,9 +629,9 @@ static ssize_t esp32c3_read_decrypt(struct mtd_dev_s *dev, ****************************************************************************/ static ssize_t esp32c3_bread_decrypt(struct mtd_dev_s *dev, - off_t startblock, - size_t nblocks, - uint8_t *buffer) + off_t startblock, + size_t nblocks, + uint8_t *buffer) { ssize_t ret; uint32_t addr = startblock * SPI_FLASH_BLK_SIZE; @@ -412,7 +648,7 @@ static ssize_t esp32c3_bread_decrypt(struct mtd_dev_s *dev, return ret; } - ret = spi_flash_read_encrypted(addr, buffer, size); + ret = esp32c3_readdata_encrypted(addr, buffer, size); nxsem_post(&g_exclsem); diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/Kconfig b/boards/risc-v/esp32c3/esp32c3-devkit/Kconfig index e26862b59bd..40bd0dbdf8b 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/Kconfig +++ b/boards/risc-v/esp32c3/esp32c3-devkit/Kconfig @@ -65,4 +65,20 @@ choice endchoice +config ESP32C3_SPIFLASH_ENCRYPTION_TEST + bool "SPI Flash encryption test" + default n + depends on ESP32C3_SPIFLASH + select DEBUG_ASSERTIONS + ---help--- + Enable SPI Flash encryption test. This option will also select + DEBUG_ASSERTIONS to enable kernel assert macro. + +config ESP32C3_SPIFLASH_TEST_ADDRESS + hex "SPI Flash test address" + default 0x180000 + depends on ESP32C3_SPIFLASH_ENCRYPTION_TEST + ---help--- + SPI Flash encryption test read/write address. + endif # ARCH_BOARD_ESP32C3_DEVKIT diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/scripts/esp32c3_rom.ld b/boards/risc-v/esp32c3/esp32c3-devkit/scripts/esp32c3_rom.ld index 55dc5f3f767..f282eef8bff 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/scripts/esp32c3_rom.ld +++ b/boards/risc-v/esp32c3/esp32c3-devkit/scripts/esp32c3_rom.ld @@ -296,7 +296,7 @@ PROVIDE( Cache_Enable_Defalut_ICache_Mode = 0x400004c4 ); PROVIDE( ROM_Boot_Cache_Init = 0x400004c8 ); PROVIDE( Cache_Invalidate_ICache_Items = 0x400004cc ); PROVIDE( Cache_Op_Addr = 0x400004d0 ); -PROVIDE( Cache_Invalidate_Addr = 0x400004d4 ); +PROVIDE( cache_invalidate_addr = 0x400004d4 ); PROVIDE( Cache_Invalidate_ICache_All = 0x400004d8 ); PROVIDE( Cache_Mask_All = 0x400004dc ); PROVIDE( Cache_UnMask_Dram0 = 0x400004e0 ); @@ -316,8 +316,8 @@ PROVIDE( Cache_Lock_Addr = 0x40000514 ); PROVIDE( Cache_Unlock_Addr = 0x40000518 ); PROVIDE( Cache_Disable_ICache = 0x4000051c ); PROVIDE( Cache_Enable_ICache = 0x40000520 ); -PROVIDE( Cache_Suspend_ICache = 0x40000524 ); -PROVIDE( Cache_Resume_ICache = 0x40000528 ); +PROVIDE( cache_suspend_icache = 0x40000524 ); +PROVIDE( cache_resume_icache = 0x40000528 ); PROVIDE( Cache_Freeze_ICache_Enable = 0x4000052c ); PROVIDE( Cache_Freeze_ICache_Disable = 0x40000530 ); PROVIDE( Cache_Pms_Lock = 0x40000534 ); diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3-devkit.h b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3-devkit.h index ac4ba6d8e36..7f903521ca5 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3-devkit.h +++ b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3-devkit.h @@ -181,6 +181,24 @@ int board_bmp180_initialize(int devno, int busno); int esp32c3_spiflash_init(void); #endif +/**************************************************************************** + * Name: esp32c3_spiflash_encrypt_test + * + * Description: + * Test ESP32-C3 SPI Flash driver read/write with encryption. + * + * Input Parameters: + * None + * + * Returned Value: + * None. + * + ****************************************************************************/ + +#ifdef CONFIG_ESP32C3_SPIFLASH_ENCRYPTION_TEST +void esp32c3_spiflash_encrypt_test(void); +#endif + /**************************************************************************** * Name: esp32c3_ledc_setup * diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_bringup.c b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_bringup.c index 55c4915ac09..405ee9d09bb 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_bringup.c +++ b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_bringup.c @@ -144,6 +144,11 @@ int esp32c3_bringup(void) #endif #ifdef CONFIG_ESP32C3_SPIFLASH + +# ifdef CONFIG_ESP32C3_SPIFLASH_ENCRYPTION_TEST + esp32c3_spiflash_encrypt_test(); +# endif + ret = esp32c3_spiflash_init(); if (ret) { diff --git a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_spiflash.c b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_spiflash.c index ea7f1df324a..17f24021167 100644 --- a/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_spiflash.c +++ b/boards/risc-v/esp32c3/esp32c3-devkit/src/esp32c3_spiflash.c @@ -26,6 +26,7 @@ #include +#include "inttypes.h" #include #include #include @@ -126,8 +127,8 @@ void esp32c3_spiflash_encrypt_test(void) uint32_t erase_nblocks; uint32_t rw_block; uint32_t rw_nblocks; - struct mtd_dev_s *mtd = esp32c3_spiflash_get_mtd(); - struct mtd_dev_s *enc_mtd = esp32c3_spiflash_encrypt_get_mtd(); + struct mtd_dev_s *mtd = esp32c3_spiflash_mtd(); + struct mtd_dev_s *enc_mtd = esp32c3_spiflash_encrypt_mtd(); const uint32_t address = CONFIG_ESP32C3_SPIFLASH_TEST_ADDRESS; const uint32_t size = 4096; @@ -142,14 +143,14 @@ void esp32c3_spiflash_encrypt_test(void) wbuf = kmm_malloc(size); if (!wbuf) { - ferr("ERROR: Failed to alloc %d heap\n", size); + ferr("ERROR: Failed to alloc %" PRIu32 " heap\n", size); DEBUGASSERT(0); } rbuf = kmm_malloc(size); if (!rbuf) { - ferr("ERROR: Failed to alloc %d heap\n", size); + ferr("ERROR: Failed to alloc %" PRIu32 " heap\n", size); DEBUGASSERT(0); } From 8403fe650325a66a41e1cd4f9cc4833d4ed2d4df Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:48:18 +0900 Subject: [PATCH 198/739] boards: spresense: Fix PMIC setting during boot-up When RTC clock is still unstable, the continuous PMIC settings may not be reflected. This commit adds a delay time to avoid such problem. --- boards/arm/cxd56xx/spresense/src/cxd56_power.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/boards/arm/cxd56xx/spresense/src/cxd56_power.c b/boards/arm/cxd56xx/spresense/src/cxd56_power.c index 7a02860059c..b1370c37e85 100644 --- a/boards/arm/cxd56xx/spresense/src/cxd56_power.c +++ b/boards/arm/cxd56xx/spresense/src/cxd56_power.c @@ -205,6 +205,13 @@ int board_power_control(int target, bool en) if (pfunc) { ret = pfunc(PMIC_GET_CH(target), en); + + /* If RTC clock is unstable, delay 1 tick for PMIC setting. */ + + if (!g_rtc_enabled) + { + usleep(1); + } } return ret; @@ -236,6 +243,13 @@ int board_power_control_tristate(int target, int value) /* set HiZ to PMIC GPO channel */ ret = cxd56_pmic_set_gpo_hiz(PMIC_GET_CH(target)); + + /* If RTC clock is unstable, delay 1 tick for PMIC setting. */ + + if (!g_rtc_enabled) + { + usleep(1); + } } else { From 8b5425d661cb3fc6d03d35c95b1e7783959dadab Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:48:28 +0900 Subject: [PATCH 199/739] boards: spresense: Add delay only for PMIC GPO setting When RTC clock is still unstable, add a delay time only for PMIC GPO setting to avoid a problem that the setting is not reflected. --- boards/arm/cxd56xx/spresense/src/cxd56_power.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/boards/arm/cxd56xx/spresense/src/cxd56_power.c b/boards/arm/cxd56xx/spresense/src/cxd56_power.c index b1370c37e85..b957a3e6a7c 100644 --- a/boards/arm/cxd56xx/spresense/src/cxd56_power.c +++ b/boards/arm/cxd56xx/spresense/src/cxd56_power.c @@ -206,9 +206,9 @@ int board_power_control(int target, bool en) { ret = pfunc(PMIC_GET_CH(target), en); - /* If RTC clock is unstable, delay 1 tick for PMIC setting. */ + /* If RTC clock is unstable, delay 1 tick for PMIC GPO setting. */ - if (!g_rtc_enabled) + if (!g_rtc_enabled && (PMIC_GET_TYPE(target) == PMIC_TYPE_GPO)) { usleep(1); } From ca775beccb86f52bd9858af9a835257652530c78 Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:48:30 +0900 Subject: [PATCH 200/739] boards: spresense: Support board_reset on interrupt context When CONFIG_BOARD_RESET_ON_ASSERT is enabled, board_reset() may be called on interrupt context. This commit changes to be able to call the function on interrupt context. --- boards/arm/cxd56xx/spresense/src/cxd56_power.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/boards/arm/cxd56xx/spresense/src/cxd56_power.c b/boards/arm/cxd56xx/spresense/src/cxd56_power.c index b957a3e6a7c..b28383777b4 100644 --- a/boards/arm/cxd56xx/spresense/src/cxd56_power.c +++ b/boards/arm/cxd56xx/spresense/src/cxd56_power.c @@ -509,9 +509,12 @@ int board_reset(int status) { /* Restore the original state for bootup after power cycle */ - board_xtal_power_control(true); - board_flash_power_control(true); - up_pm_acquire_freqlock(&g_hv_lock); + if (!up_interrupt_context()) + { + board_xtal_power_control(true); + board_flash_power_control(true); + up_pm_acquire_freqlock(&g_hv_lock); + } /* System reboot */ From 6cc60f3bd98f45215094c3788f54f4c6613fa2c7 Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:48:33 +0900 Subject: [PATCH 201/739] boards: cxd56xx: Set the pin number to the argument of gpio handler Make it easy to get the pin number on GPIO interrupt handler. --- boards/arm/cxd56xx/spresense/src/cxd56_gpioif.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/boards/arm/cxd56xx/spresense/src/cxd56_gpioif.c b/boards/arm/cxd56xx/spresense/src/cxd56_gpioif.c index 236a34dc2a2..27c8415f6b8 100644 --- a/boards/arm/cxd56xx/spresense/src/cxd56_gpioif.c +++ b/boards/arm/cxd56xx/spresense/src/cxd56_gpioif.c @@ -188,7 +188,8 @@ int board_gpio_intconfig(uint32_t pin, int mode, bool filter, xcpt_t isr) gpiocfg |= GPIOINT_NOISE_FILTER_ENABLE; } - ret = cxd56_gpioint_config(pin, gpiocfg, isr, NULL); + ret = cxd56_gpioint_config(pin, gpiocfg, isr, (void *)pin); + return ret; #else return -ENOTSUP; From 21ed297adc50fd404e78a31b1d8ef326d4b20b4b Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:48:36 +0900 Subject: [PATCH 202/739] boards: cxd56xx: Fix configuration to compile bmp280 sensor Fix the configuration name to compile cxd56_bmp280_i2c.c. --- boards/arm/cxd56xx/common/src/Make.defs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boards/arm/cxd56xx/common/src/Make.defs b/boards/arm/cxd56xx/common/src/Make.defs index 0895c224801..239b84432ab 100644 --- a/boards/arm/cxd56xx/common/src/Make.defs +++ b/boards/arm/cxd56xx/common/src/Make.defs @@ -88,7 +88,7 @@ ifeq ($(CONFIG_SENSORS_BMI160_SPI),y) CSRCS += cxd56_bmi160_spi.c endif -ifeq ($(CONFIG_SENSORS_BMP280_I2C),y) +ifeq ($(CONFIG_SENSORS_BMP280),y) CSRCS += cxd56_bmp280_i2c.c endif From 14c57b077468e897fc8f75e03d9d0100b176a082 Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 17:48:39 +0900 Subject: [PATCH 203/739] boards: cxd56xx: Fix uninitialized variable Fix uninitialized variable. CodeSonar Warning 520074 --- boards/arm/cxd56xx/spresense/src/cxd56_power.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/boards/arm/cxd56xx/spresense/src/cxd56_power.c b/boards/arm/cxd56xx/spresense/src/cxd56_power.c index b28383777b4..5305d8e342a 100644 --- a/boards/arm/cxd56xx/spresense/src/cxd56_power.c +++ b/boards/arm/cxd56xx/spresense/src/cxd56_power.c @@ -127,7 +127,8 @@ int board_pmic_write(uint8_t addr, void *buf, uint32_t size) int board_power_setup(int status) { #ifdef CONFIG_BOARD_USB_DISABLE_IN_DEEP_SLEEPING - uint8_t val; + int ret; + uint8_t val = 0; uint32_t bootcause; /* Enable USB after wakeup from deep sleeping */ @@ -140,8 +141,8 @@ int board_power_setup(int status) case PM_BOOT_DEEP_WKUPS: case PM_BOOT_DEEP_RTC: case PM_BOOT_DEEP_OTHERS: - cxd56_pmic_read(PMIC_REG_CNT_USB2, &val, sizeof(val)); - if (val & PMIC_SET_CHGOFF) + ret = cxd56_pmic_read(PMIC_REG_CNT_USB2, &val, sizeof(val)); + if ((ret == 0) && (val & PMIC_SET_CHGOFF)) { val &= ~PMIC_SET_CHGOFF; cxd56_pmic_write(PMIC_REG_CNT_USB2, &val, sizeof(val)); From 01462311660752239c4596b4df4a1a4d586bd06f Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 19 May 2021 18:38:29 +0900 Subject: [PATCH 204/739] boards: cxd56xx: Fix bug that modem may miss the GPIO interrupt If the GPIO falls within 300us after raising (or GPIO raises within 300us after falling), the modem may miss the GPIO interrupt. So add delay by 300us before changing the GPIO. --- boards/arm/cxd56xx/common/src/cxd56_altmdm.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/boards/arm/cxd56xx/common/src/cxd56_altmdm.c b/boards/arm/cxd56xx/common/src/cxd56_altmdm.c index 7753a90e59a..47d129e19d1 100644 --- a/boards/arm/cxd56xx/common/src/cxd56_altmdm.c +++ b/boards/arm/cxd56xx/common/src/cxd56_altmdm.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -74,6 +75,8 @@ # error "Select LTE SPI 4 or 5" #endif +#define WAIT_READY_TO_GPIO_INTERRUPT 300 /* micro seconds */ + /**************************************************************************** * Private Function Prototypes ****************************************************************************/ @@ -313,6 +316,12 @@ static bool altmdm_sready(void) static void altmdm_master_request(bool request) { + /* If the GPIO falls within 300us after raising + * (or GPIO raises within 300us after falling), the modem may miss the GPIO + * interrupt. So delay by 300us before changing the GPIO. + */ + + up_udelay(WAIT_READY_TO_GPIO_INTERRUPT); cxd56_gpio_write(ALTMDM_MASTER_REQ, request); } From 001e7c3e763e228a91736286c3e0d0a8493a694c Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Fri, 14 May 2021 10:03:23 +0800 Subject: [PATCH 205/739] sched: Don't include nuttx/sched.h inside sched.h But let nuttx/sched.h include sched.h instead to avoid expose nuttx kernel API to userspace. Signed-off-by: Xiang Xiao --- arch/arm/src/common/arm_modifyreg16.c | 3 +- arch/arm/src/common/arm_modifyreg32.c | 3 +- arch/arm/src/common/arm_modifyreg8.c | 3 +- arch/arm/src/cxd56xx/cxd56_gpioint.c | 1 + arch/arm/src/cxd56xx/cxd56_irq.c | 2 +- arch/arm/src/cxd56xx/cxd56_rtc.c | 1 + arch/arm/src/cxd56xx/cxd56_uart.c | 2 +- arch/arm/src/imx6/imx_enet.c | 1 + arch/arm/src/imxrt/imxrt_edma.c | 1 + arch/arm/src/imxrt/imxrt_enet.c | 1 + arch/arm/src/imxrt/imxrt_hprtc.c | 1 + arch/arm/src/imxrt/imxrt_serial.c | 1 + arch/arm/src/imxrt/imxrt_wdog.c | 1 + arch/arm/src/lc823450/lc823450_dma.c | 1 + arch/arm/src/lc823450/lc823450_dvfs2.c | 1 + arch/arm/src/lc823450/lc823450_gpio.c | 1 + arch/arm/src/lc823450/lc823450_irq.c | 2 +- arch/arm/src/lc823450/lc823450_syscontrol.c | 2 +- arch/arm/src/lc823450/lc823450_timer.c | 1 + arch/arm/src/lc823450/lc823450_usbdev.c | 1 + arch/arm/src/max326xx/max32660/max32660_dma.c | 1 + .../arm/src/max326xx/max32660/max32660_gpio.c | 2 +- .../src/max326xx/max32660/max32660_lowputc.c | 2 + arch/arm/src/max326xx/max32660/max32660_rtc.c | 1 + .../src/max326xx/max32660/max32660_serial.c | 1 + arch/arm/src/max326xx/max32660/max32660_wdt.c | 1 + arch/arm/src/nrf52/nrf52_gpio.c | 2 +- arch/arm/src/rp2040/rp2040_uart.c | 2 +- arch/arm/src/s32k1xx/s32k1xx_edma.c | 1 + arch/arm/src/s32k1xx/s32k1xx_enet.c | 1 + arch/arm/src/s32k1xx/s32k1xx_serial.c | 1 + arch/arm/src/stm32/stm32_hciuart.c | 1 + arch/arm/src/tiva/cc13xx/cc13xx_enablepwr.c | 2 +- arch/arm/src/tiva/cc13xx/cc13xx_gpio.c | 2 +- arch/arm/src/tiva/common/tiva_hciuart.c | 1 + arch/or1k/src/common/up_modifyreg16.c | 3 +- arch/or1k/src/common/up_modifyreg32.c | 3 +- arch/or1k/src/common/up_modifyreg8.c | 3 +- arch/risc-v/src/bl602/bl602_timerisr.c | 1 + arch/risc-v/src/c906/c906_timerisr.c | 1 + arch/risc-v/src/common/riscv_modifyreg32.c | 3 +- arch/risc-v/src/esp32c3/esp32c3_idle.c | 2 +- arch/risc-v/src/esp32c3/esp32c3_std_atomic.c | 3 +- .../risc-v/src/esp32c3/esp32c3_wifi_adapter.c | 5 +- arch/risc-v/src/fe310/fe310_gpio.c | 1 + arch/risc-v/src/fe310/fe310_timerisr.c | 1 + arch/risc-v/src/k210/k210_timerisr.c | 1 + arch/risc-v/src/litex/litex_timerisr.c | 1 + .../src/rv64gc/riscv_schedulesigaction.c | 2 +- arch/x86_64/include/intel64/arch.h | 4 - arch/xtensa/include/arch.h | 4 + arch/xtensa/src/esp32/esp32_himem.c | 1 + arch/xtensa/src/esp32/esp32_idle.c | 2 +- .../src/esp32/esp32_intercpu_interrupt.c | 1 - arch/xtensa/src/esp32/esp32_spiram.c | 2 +- arch/xtensa/src/esp32/esp32_wifi_adapter.c | 4 +- .../imxrt/imxrt1020-evk/src/imxrt_ethernet.c | 1 + .../imxrt/imxrt1050-evk/src/imxrt_ethernet.c | 1 + .../imxrt/imxrt1060-evk/src/imxrt_ethernet.c | 1 + .../imxrt/imxrt1064-evk/src/imxrt_ethernet.c | 1 + .../arm/imxrt/teensy-4.x/src/imxrt_ethernet.c | 1 + .../max32660-evsys/src/max326_button.c | 1 + .../stm32f4discovery/src/stm32_gs2200m.c | 1 + drivers/audio/cxd56.c | 1 + drivers/audio/cxd56_src.c | 2 +- drivers/audio/wm8776.c | 2 +- drivers/i2c/i2c_bitbang.c | 2 +- drivers/ioexpander/gpio.c | 1 + drivers/usbmonitor/usbmonitor.c | 2 +- drivers/wireless/bluetooth/bt_uart_shim.c | 3 +- graphics/vnc/server/vnc_fbdev.c | 1 + include/nuttx/arch.h | 2 +- include/nuttx/fs/fs.h | 5 +- include/nuttx/irq.h | 79 +------------------ include/nuttx/sched.h | 1 + include/nuttx/semaphore.h | 66 ---------------- include/nuttx/spinlock.h | 77 ++++++++++++++++++ include/pthread.h | 3 +- include/sched.h | 3 +- include/semaphore.h | 66 ++++++++++++++++ include/stdio.h | 2 +- libs/libc/pthread/pthread_create.c | 2 +- libs/libc/pthread/pthread_spinlock.c | 13 +-- libs/libc/sched/task_startup.c | 1 + libs/libc/tls/task_getinfo.c | 3 +- libs/libc/unistd/lib_getpriority.c | 3 +- libs/libc/unistd/lib_setpriority.c | 1 + libs/libc/wqueue/work_lock.c | 2 + net/socket/net_dup2.c | 1 + net/tcp/tcp_txdrain.c | 2 + net/udp/udp_txdrain.c | 2 + sched/clock/clock_gettime.c | 2 +- sched/group/group_exitinfo.c | 2 +- sched/group/group_tlsalloc.c | 2 +- sched/group/group_tlsfree.c | 2 +- sched/group/group_tlsgetdtor.c | 1 + sched/group/group_tlsgetset.c | 1 + sched/group/group_tlssetdtor.c | 1 + sched/pthread/pthread.h | 3 +- sched/semaphore/semaphore.h | 2 +- sched/signal/sig_default.c | 2 +- wireless/bluetooth/bt_atomic.c | 2 +- wireless/bluetooth/bt_buf.c | 2 +- wireless/bluetooth/bt_hcicore.c | 1 + wireless/bluetooth/bt_netdev.c | 3 +- 105 files changed, 256 insertions(+), 224 deletions(-) diff --git a/arch/arm/src/common/arm_modifyreg16.c b/arch/arm/src/common/arm_modifyreg16.c index d307f8610e7..b2280637594 100644 --- a/arch/arm/src/common/arm_modifyreg16.c +++ b/arch/arm/src/common/arm_modifyreg16.c @@ -27,8 +27,7 @@ #include #include -#include -#include +#include #include "arm_arch.h" diff --git a/arch/arm/src/common/arm_modifyreg32.c b/arch/arm/src/common/arm_modifyreg32.c index 06d6457776a..bdbf3091db0 100644 --- a/arch/arm/src/common/arm_modifyreg32.c +++ b/arch/arm/src/common/arm_modifyreg32.c @@ -27,8 +27,7 @@ #include #include -#include -#include +#include #include "arm_arch.h" diff --git a/arch/arm/src/common/arm_modifyreg8.c b/arch/arm/src/common/arm_modifyreg8.c index 93d7da49c58..d819d269a3b 100644 --- a/arch/arm/src/common/arm_modifyreg8.c +++ b/arch/arm/src/common/arm_modifyreg8.c @@ -27,8 +27,7 @@ #include #include -#include -#include +#include #include "arm_arch.h" diff --git a/arch/arm/src/cxd56xx/cxd56_gpioint.c b/arch/arm/src/cxd56xx/cxd56_gpioint.c index 2259de1e0ea..1b1eab08995 100644 --- a/arch/arm/src/cxd56xx/cxd56_gpioint.c +++ b/arch/arm/src/cxd56xx/cxd56_gpioint.c @@ -29,6 +29,7 @@ #include #include +#include #include "arm_arch.h" #include "chip.h" diff --git a/arch/arm/src/cxd56xx/cxd56_irq.c b/arch/arm/src/cxd56xx/cxd56_irq.c index 2ef2d7360cc..7e03f435e6d 100644 --- a/arch/arm/src/cxd56xx/cxd56_irq.c +++ b/arch/arm/src/cxd56xx/cxd56_irq.c @@ -30,7 +30,7 @@ #include #include #include -#include +#include #include #include "chip.h" diff --git a/arch/arm/src/cxd56xx/cxd56_rtc.c b/arch/arm/src/cxd56xx/cxd56_rtc.c index 410f09f39d9..7880a5afa39 100644 --- a/arch/arm/src/cxd56xx/cxd56_rtc.c +++ b/arch/arm/src/cxd56xx/cxd56_rtc.c @@ -32,6 +32,7 @@ #include #include +#include #include #include diff --git a/arch/arm/src/cxd56xx/cxd56_uart.c b/arch/arm/src/cxd56xx/cxd56_uart.c index 3ddfac640e6..54cc65bbc6f 100644 --- a/arch/arm/src/cxd56xx/cxd56_uart.c +++ b/arch/arm/src/cxd56xx/cxd56_uart.c @@ -26,7 +26,7 @@ #include -#include +#include #include #include diff --git a/arch/arm/src/imx6/imx_enet.c b/arch/arm/src/imx6/imx_enet.c index 59e71193f6a..3dda1867d13 100644 --- a/arch/arm/src/imx6/imx_enet.c +++ b/arch/arm/src/imx6/imx_enet.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include diff --git a/arch/arm/src/imxrt/imxrt_edma.c b/arch/arm/src/imxrt/imxrt_edma.c index 93542826591..737c8a112ad 100644 --- a/arch/arm/src/imxrt/imxrt_edma.c +++ b/arch/arm/src/imxrt/imxrt_edma.c @@ -55,6 +55,7 @@ #include #include +#include #include #include "arm_arch.h" diff --git a/arch/arm/src/imxrt/imxrt_enet.c b/arch/arm/src/imxrt/imxrt_enet.c index a677908af8c..61ed27a1622 100644 --- a/arch/arm/src/imxrt/imxrt_enet.c +++ b/arch/arm/src/imxrt/imxrt_enet.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include diff --git a/arch/arm/src/imxrt/imxrt_hprtc.c b/arch/arm/src/imxrt/imxrt_hprtc.c index 0e0c4e5a0c4..fb15ad66b27 100644 --- a/arch/arm/src/imxrt/imxrt_hprtc.c +++ b/arch/arm/src/imxrt/imxrt_hprtc.c @@ -33,6 +33,7 @@ #include #include +#include #include #include diff --git a/arch/arm/src/imxrt/imxrt_serial.c b/arch/arm/src/imxrt/imxrt_serial.c index bebf19ef275..65076760e25 100644 --- a/arch/arm/src/imxrt/imxrt_serial.c +++ b/arch/arm/src/imxrt/imxrt_serial.c @@ -38,6 +38,7 @@ #include #include +#include #include #include #include diff --git a/arch/arm/src/imxrt/imxrt_wdog.c b/arch/arm/src/imxrt/imxrt_wdog.c index 283d28e50fc..b785a9c9ee5 100644 --- a/arch/arm/src/imxrt/imxrt_wdog.c +++ b/arch/arm/src/imxrt/imxrt_wdog.c @@ -31,6 +31,7 @@ #include #include +#include #include #include "arm_arch.h" diff --git a/arch/arm/src/lc823450/lc823450_dma.c b/arch/arm/src/lc823450/lc823450_dma.c index 195700c2ffe..1ed240c16fc 100644 --- a/arch/arm/src/lc823450/lc823450_dma.c +++ b/arch/arm/src/lc823450/lc823450_dma.c @@ -35,6 +35,7 @@ #include #include +#include #include "arm_arch.h" #include "lc823450_dma.h" diff --git a/arch/arm/src/lc823450/lc823450_dvfs2.c b/arch/arm/src/lc823450/lc823450_dvfs2.c index 5ad33918455..fabc4c06ac6 100644 --- a/arch/arm/src/lc823450/lc823450_dvfs2.c +++ b/arch/arm/src/lc823450/lc823450_dvfs2.c @@ -25,6 +25,7 @@ #include #include +#include #include #include #include diff --git a/arch/arm/src/lc823450/lc823450_gpio.c b/arch/arm/src/lc823450/lc823450_gpio.c index b179245d0e2..7a6e400e8c8 100644 --- a/arch/arm/src/lc823450/lc823450_gpio.c +++ b/arch/arm/src/lc823450/lc823450_gpio.c @@ -26,6 +26,7 @@ #include #include +#include #include #include diff --git a/arch/arm/src/lc823450/lc823450_irq.c b/arch/arm/src/lc823450/lc823450_irq.c index 38ffeb3d97c..ffaf86882c3 100644 --- a/arch/arm/src/lc823450/lc823450_irq.c +++ b/arch/arm/src/lc823450/lc823450_irq.c @@ -29,7 +29,7 @@ #include #include -#include +#include #include #include diff --git a/arch/arm/src/lc823450/lc823450_syscontrol.c b/arch/arm/src/lc823450/lc823450_syscontrol.c index 35e6b89f1d0..410fa142f75 100644 --- a/arch/arm/src/lc823450/lc823450_syscontrol.c +++ b/arch/arm/src/lc823450/lc823450_syscontrol.c @@ -23,8 +23,8 @@ ****************************************************************************/ #include -#include #include +#include #include #include diff --git a/arch/arm/src/lc823450/lc823450_timer.c b/arch/arm/src/lc823450/lc823450_timer.c index 526886d538f..18b4dce9b08 100644 --- a/arch/arm/src/lc823450/lc823450_timer.c +++ b/arch/arm/src/lc823450/lc823450_timer.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include "nvic.h" diff --git a/arch/arm/src/lc823450/lc823450_usbdev.c b/arch/arm/src/lc823450/lc823450_usbdev.c index dba9ce6e5de..3cec641d2fa 100644 --- a/arch/arm/src/lc823450/lc823450_usbdev.c +++ b/arch/arm/src/lc823450/lc823450_usbdev.c @@ -39,6 +39,7 @@ #endif #include +#include #include #include #include diff --git a/arch/arm/src/max326xx/max32660/max32660_dma.c b/arch/arm/src/max326xx/max32660/max32660_dma.c index 4ce5beb0038..9a311afdfd5 100644 --- a/arch/arm/src/max326xx/max32660/max32660_dma.c +++ b/arch/arm/src/max326xx/max32660/max32660_dma.c @@ -29,6 +29,7 @@ #include #include +#include #include "arm_arch.h" diff --git a/arch/arm/src/max326xx/max32660/max32660_gpio.c b/arch/arm/src/max326xx/max32660/max32660_gpio.c index 54b969f7080..1693851e4fd 100644 --- a/arch/arm/src/max326xx/max32660/max32660_gpio.c +++ b/arch/arm/src/max326xx/max32660/max32660_gpio.c @@ -28,7 +28,7 @@ #include #include -#include +#include #include "arm_arch.h" diff --git a/arch/arm/src/max326xx/max32660/max32660_lowputc.c b/arch/arm/src/max326xx/max32660/max32660_lowputc.c index 72efa184529..e2d3419b8f7 100644 --- a/arch/arm/src/max326xx/max32660/max32660_lowputc.c +++ b/arch/arm/src/max326xx/max32660/max32660_lowputc.c @@ -27,6 +27,8 @@ #include #include +#include + #include "arm_arch.h" #include "arm_internal.h" diff --git a/arch/arm/src/max326xx/max32660/max32660_rtc.c b/arch/arm/src/max326xx/max32660/max32660_rtc.c index bfcc5c59010..08fc3edf1b2 100644 --- a/arch/arm/src/max326xx/max32660/max32660_rtc.c +++ b/arch/arm/src/max326xx/max32660/max32660_rtc.c @@ -33,6 +33,7 @@ #include #include +#include #include #include diff --git a/arch/arm/src/max326xx/max32660/max32660_serial.c b/arch/arm/src/max326xx/max32660/max32660_serial.c index b5d47ee9950..2b10d3e7d13 100644 --- a/arch/arm/src/max326xx/max32660/max32660_serial.c +++ b/arch/arm/src/max326xx/max32660/max32660_serial.c @@ -34,6 +34,7 @@ #include #include +#include #include #include diff --git a/arch/arm/src/max326xx/max32660/max32660_wdt.c b/arch/arm/src/max326xx/max32660/max32660_wdt.c index cb887b2555e..6c974e4b41d 100644 --- a/arch/arm/src/max326xx/max32660/max32660_wdt.c +++ b/arch/arm/src/max326xx/max32660/max32660_wdt.c @@ -30,6 +30,7 @@ #include #include +#include #include #include #include diff --git a/arch/arm/src/nrf52/nrf52_gpio.c b/arch/arm/src/nrf52/nrf52_gpio.c index df17959bd51..f914f1c8e3b 100644 --- a/arch/arm/src/nrf52/nrf52_gpio.c +++ b/arch/arm/src/nrf52/nrf52_gpio.c @@ -30,7 +30,7 @@ #include #include -#include +#include #include "arm_arch.h" #include "hardware/nrf52_gpio.h" diff --git a/arch/arm/src/rp2040/rp2040_uart.c b/arch/arm/src/rp2040/rp2040_uart.c index b2a146c8727..f37e073cfe0 100644 --- a/arch/arm/src/rp2040/rp2040_uart.c +++ b/arch/arm/src/rp2040/rp2040_uart.c @@ -26,7 +26,7 @@ #include -#include +#include #include #include diff --git a/arch/arm/src/s32k1xx/s32k1xx_edma.c b/arch/arm/src/s32k1xx/s32k1xx_edma.c index 60939744bf2..5e9360253ba 100644 --- a/arch/arm/src/s32k1xx/s32k1xx_edma.c +++ b/arch/arm/src/s32k1xx/s32k1xx_edma.c @@ -56,6 +56,7 @@ #include #include +#include #include #include "arm_arch.h" diff --git a/arch/arm/src/s32k1xx/s32k1xx_enet.c b/arch/arm/src/s32k1xx/s32k1xx_enet.c index 7bf9cfc227d..65dc59a00bb 100644 --- a/arch/arm/src/s32k1xx/s32k1xx_enet.c +++ b/arch/arm/src/s32k1xx/s32k1xx_enet.c @@ -37,6 +37,7 @@ #include #include #include +#include #include #include #include diff --git a/arch/arm/src/s32k1xx/s32k1xx_serial.c b/arch/arm/src/s32k1xx/s32k1xx_serial.c index c131ac168a8..400896a02e8 100644 --- a/arch/arm/src/s32k1xx/s32k1xx_serial.c +++ b/arch/arm/src/s32k1xx/s32k1xx_serial.c @@ -38,6 +38,7 @@ #include #include +#include #include #include #include diff --git a/arch/arm/src/stm32/stm32_hciuart.c b/arch/arm/src/stm32/stm32_hciuart.c index 96457b9ff95..0bcc8ee8ae6 100644 --- a/arch/arm/src/stm32/stm32_hciuart.c +++ b/arch/arm/src/stm32/stm32_hciuart.c @@ -35,6 +35,7 @@ #include #include +#include #include #include #include diff --git a/arch/arm/src/tiva/cc13xx/cc13xx_enablepwr.c b/arch/arm/src/tiva/cc13xx/cc13xx_enablepwr.c index 0d9b833a3c1..8f461b052c4 100644 --- a/arch/arm/src/tiva/cc13xx/cc13xx_enablepwr.c +++ b/arch/arm/src/tiva/cc13xx/cc13xx_enablepwr.c @@ -28,7 +28,7 @@ #include #include -#include +#include #include "hardware/tiva_prcm.h" #include "tiva_enablepwr.h" diff --git a/arch/arm/src/tiva/cc13xx/cc13xx_gpio.c b/arch/arm/src/tiva/cc13xx/cc13xx_gpio.c index bf122f13792..bde6b9b771a 100644 --- a/arch/arm/src/tiva/cc13xx/cc13xx_gpio.c +++ b/arch/arm/src/tiva/cc13xx/cc13xx_gpio.c @@ -30,7 +30,7 @@ #include #include -#include +#include #include "arm_arch.h" #include "tiva_gpio.h" diff --git a/arch/arm/src/tiva/common/tiva_hciuart.c b/arch/arm/src/tiva/common/tiva_hciuart.c index 0539af71518..1e1fd238311 100644 --- a/arch/arm/src/tiva/common/tiva_hciuart.c +++ b/arch/arm/src/tiva/common/tiva_hciuart.c @@ -34,6 +34,7 @@ #include #include +#include #include #include #include diff --git a/arch/or1k/src/common/up_modifyreg16.c b/arch/or1k/src/common/up_modifyreg16.c index 2ad9f6ecdc2..9778c548709 100644 --- a/arch/or1k/src/common/up_modifyreg16.c +++ b/arch/or1k/src/common/up_modifyreg16.c @@ -27,8 +27,7 @@ #include #include -#include -#include +#include #include "up_arch.h" diff --git a/arch/or1k/src/common/up_modifyreg32.c b/arch/or1k/src/common/up_modifyreg32.c index 29ad133a2ed..ca8e2d7a131 100644 --- a/arch/or1k/src/common/up_modifyreg32.c +++ b/arch/or1k/src/common/up_modifyreg32.c @@ -27,8 +27,7 @@ #include #include -#include -#include +#include #include "up_arch.h" diff --git a/arch/or1k/src/common/up_modifyreg8.c b/arch/or1k/src/common/up_modifyreg8.c index d8110de0fd2..8b20abd9287 100644 --- a/arch/or1k/src/common/up_modifyreg8.c +++ b/arch/or1k/src/common/up_modifyreg8.c @@ -27,8 +27,7 @@ #include #include -#include -#include +#include #include "up_arch.h" diff --git a/arch/risc-v/src/bl602/bl602_timerisr.c b/arch/risc-v/src/bl602/bl602_timerisr.c index f889ca576db..1ccd6c60b6a 100644 --- a/arch/risc-v/src/bl602/bl602_timerisr.c +++ b/arch/risc-v/src/bl602/bl602_timerisr.c @@ -30,6 +30,7 @@ #include #include +#include #include #include "hardware/bl602_clic.h" #include "riscv_arch.h" diff --git a/arch/risc-v/src/c906/c906_timerisr.c b/arch/risc-v/src/c906/c906_timerisr.c index 677550bc4b9..a3c89fa8bac 100644 --- a/arch/risc-v/src/c906/c906_timerisr.c +++ b/arch/risc-v/src/c906/c906_timerisr.c @@ -29,6 +29,7 @@ #include #include +#include #include #include "riscv_arch.h" diff --git a/arch/risc-v/src/common/riscv_modifyreg32.c b/arch/risc-v/src/common/riscv_modifyreg32.c index b620463b4fa..9e56a9228aa 100644 --- a/arch/risc-v/src/common/riscv_modifyreg32.c +++ b/arch/risc-v/src/common/riscv_modifyreg32.c @@ -27,8 +27,7 @@ #include #include -#include -#include +#include #include "riscv_arch.h" diff --git a/arch/risc-v/src/esp32c3/esp32c3_idle.c b/arch/risc-v/src/esp32c3/esp32c3_idle.c index 85f52b18b62..057aa2fa6ca 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_idle.c +++ b/arch/risc-v/src/esp32c3/esp32c3_idle.c @@ -24,8 +24,8 @@ #include #include -#include #include +#include #include #include "esp32c3.h" diff --git a/arch/risc-v/src/esp32c3/esp32c3_std_atomic.c b/arch/risc-v/src/esp32c3/esp32c3_std_atomic.c index 6027fc3b7ae..50d1e89b354 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_std_atomic.c +++ b/arch/risc-v/src/esp32c3/esp32c3_std_atomic.c @@ -26,8 +26,7 @@ #include #include -#include -#include +#include /**************************************************************************** * Pre-processor Definitions diff --git a/arch/risc-v/src/esp32c3/esp32c3_wifi_adapter.c b/arch/risc-v/src/esp32c3/esp32c3_wifi_adapter.c index bb03d69b075..542fdcf2634 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_wifi_adapter.c +++ b/arch/risc-v/src/esp32c3/esp32c3_wifi_adapter.c @@ -37,10 +37,9 @@ #include #include #include -#include "nuttx/kmalloc.h" +#include #include -#include "nuttx/spinlock.h" -#include +#include #include #include #include diff --git a/arch/risc-v/src/fe310/fe310_gpio.c b/arch/risc-v/src/fe310/fe310_gpio.c index 32c87d2fccf..41165969cc3 100644 --- a/arch/risc-v/src/fe310/fe310_gpio.c +++ b/arch/risc-v/src/fe310/fe310_gpio.c @@ -29,6 +29,7 @@ #include #include +#include #include #include "riscv_arch.h" diff --git a/arch/risc-v/src/fe310/fe310_timerisr.c b/arch/risc-v/src/fe310/fe310_timerisr.c index 2a7dd36cfc5..1e93c8a3c29 100644 --- a/arch/risc-v/src/fe310/fe310_timerisr.c +++ b/arch/risc-v/src/fe310/fe310_timerisr.c @@ -30,6 +30,7 @@ #include #include +#include #include #include "riscv_arch.h" diff --git a/arch/risc-v/src/k210/k210_timerisr.c b/arch/risc-v/src/k210/k210_timerisr.c index 9e4136fc1cd..25f684cb0db 100644 --- a/arch/risc-v/src/k210/k210_timerisr.c +++ b/arch/risc-v/src/k210/k210_timerisr.c @@ -29,6 +29,7 @@ #include #include +#include #include #include "riscv_arch.h" diff --git a/arch/risc-v/src/litex/litex_timerisr.c b/arch/risc-v/src/litex/litex_timerisr.c index a1507adf735..a5652c64cdd 100644 --- a/arch/risc-v/src/litex/litex_timerisr.c +++ b/arch/risc-v/src/litex/litex_timerisr.c @@ -30,6 +30,7 @@ #include #include +#include #include #include "riscv_arch.h" diff --git a/arch/risc-v/src/rv64gc/riscv_schedulesigaction.c b/arch/risc-v/src/rv64gc/riscv_schedulesigaction.c index 8f9ee8cb099..4eee0974262 100644 --- a/arch/risc-v/src/rv64gc/riscv_schedulesigaction.c +++ b/arch/risc-v/src/rv64gc/riscv_schedulesigaction.c @@ -29,8 +29,8 @@ #include #include -#include #include +#include #include "sched/sched.h" #include "riscv_internal.h" diff --git a/arch/x86_64/include/intel64/arch.h b/arch/x86_64/include/intel64/arch.h index 2e4624e78e7..dbf7143984c 100644 --- a/arch/x86_64/include/intel64/arch.h +++ b/arch/x86_64/include/intel64/arch.h @@ -395,10 +395,6 @@ static inline void set_pcid(uint64_t pcid) "%%rbx; mov %%rbx, %%cr3;" ::"g"(pcid):"memory", "rbx", "rax"); } - else - { - PANIC(); - } } static inline unsigned long read_msr(unsigned int msr) diff --git a/arch/xtensa/include/arch.h b/arch/xtensa/include/arch.h index 55db7cb7ea3..435de1f4c47 100644 --- a/arch/xtensa/include/arch.h +++ b/arch/xtensa/include/arch.h @@ -30,6 +30,10 @@ ****************************************************************************/ #include +#ifndef __ASSEMBLY__ +# include +# include +#endif /**************************************************************************** * Pre-processor Definitions diff --git a/arch/xtensa/src/esp32/esp32_himem.c b/arch/xtensa/src/esp32/esp32_himem.c index 99fc475c762..269a2eba13e 100644 --- a/arch/xtensa/src/esp32/esp32_himem.c +++ b/arch/xtensa/src/esp32/esp32_himem.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "esp32_spiram.h" #include "esp32_himem.h" diff --git a/arch/xtensa/src/esp32/esp32_idle.c b/arch/xtensa/src/esp32/esp32_idle.c index 0374f52579f..0dcbc3d06c3 100644 --- a/arch/xtensa/src/esp32/esp32_idle.c +++ b/arch/xtensa/src/esp32/esp32_idle.c @@ -24,8 +24,8 @@ #include #include -#include #include +#include #include #include "esp32_pm.h" diff --git a/arch/xtensa/src/esp32/esp32_intercpu_interrupt.c b/arch/xtensa/src/esp32/esp32_intercpu_interrupt.c index ce33f2a5033..c2b5d69e7ed 100644 --- a/arch/xtensa/src/esp32/esp32_intercpu_interrupt.c +++ b/arch/xtensa/src/esp32/esp32_intercpu_interrupt.c @@ -30,7 +30,6 @@ #include #include -#include #include "hardware/esp32_dport.h" #include "xtensa.h" diff --git a/arch/xtensa/src/esp32/esp32_spiram.c b/arch/xtensa/src/esp32/esp32_spiram.c index 5274f29428a..4276219cbd3 100644 --- a/arch/xtensa/src/esp32/esp32_spiram.c +++ b/arch/xtensa/src/esp32/esp32_spiram.c @@ -33,7 +33,7 @@ #include #include #include -#include +#include #include "esp32_spiram.h" #include "esp32_spicache.h" diff --git a/arch/xtensa/src/esp32/esp32_wifi_adapter.c b/arch/xtensa/src/esp32/esp32_wifi_adapter.c index f4418afb4c7..eba234e5f3c 100644 --- a/arch/xtensa/src/esp32/esp32_wifi_adapter.c +++ b/arch/xtensa/src/esp32/esp32_wifi_adapter.c @@ -37,9 +37,9 @@ #include #include #include -#include "nuttx/kmalloc.h" +#include #include -#include "nuttx/spinlock.h" +#include #include #include #include diff --git a/boards/arm/imxrt/imxrt1020-evk/src/imxrt_ethernet.c b/boards/arm/imxrt/imxrt1020-evk/src/imxrt_ethernet.c index 91b9af17788..bfa09e8a187 100644 --- a/boards/arm/imxrt/imxrt1020-evk/src/imxrt_ethernet.c +++ b/boards/arm/imxrt/imxrt1020-evk/src/imxrt_ethernet.c @@ -40,6 +40,7 @@ #include #include +#include #include "imxrt_gpio.h" diff --git a/boards/arm/imxrt/imxrt1050-evk/src/imxrt_ethernet.c b/boards/arm/imxrt/imxrt1050-evk/src/imxrt_ethernet.c index 7dd1a3471fc..1698afcfa25 100644 --- a/boards/arm/imxrt/imxrt1050-evk/src/imxrt_ethernet.c +++ b/boards/arm/imxrt/imxrt1050-evk/src/imxrt_ethernet.c @@ -40,6 +40,7 @@ #include #include +#include #include "imxrt_gpio.h" #include "imxrt_enet.h" diff --git a/boards/arm/imxrt/imxrt1060-evk/src/imxrt_ethernet.c b/boards/arm/imxrt/imxrt1060-evk/src/imxrt_ethernet.c index 0c74f85ecf4..6540324a4de 100644 --- a/boards/arm/imxrt/imxrt1060-evk/src/imxrt_ethernet.c +++ b/boards/arm/imxrt/imxrt1060-evk/src/imxrt_ethernet.c @@ -40,6 +40,7 @@ #include #include +#include #include "imxrt_gpio.h" #include "imxrt_enet.h" diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_ethernet.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_ethernet.c index abbd5cb1cbd..f6bddd9bbe8 100644 --- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_ethernet.c +++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_ethernet.c @@ -40,6 +40,7 @@ #include #include +#include #include "imxrt_gpio.h" #include "imxrt_enet.h" diff --git a/boards/arm/imxrt/teensy-4.x/src/imxrt_ethernet.c b/boards/arm/imxrt/teensy-4.x/src/imxrt_ethernet.c index 786738c1acc..b2d9f71d4a1 100644 --- a/boards/arm/imxrt/teensy-4.x/src/imxrt_ethernet.c +++ b/boards/arm/imxrt/teensy-4.x/src/imxrt_ethernet.c @@ -40,6 +40,7 @@ #include #include +#include #include "imxrt_gpio.h" #include "imxrt_enet.h" diff --git a/boards/arm/max326xx/max32660-evsys/src/max326_button.c b/boards/arm/max326xx/max32660-evsys/src/max326_button.c index 5ab402ec119..e0b40668026 100644 --- a/boards/arm/max326xx/max32660-evsys/src/max326_button.c +++ b/boards/arm/max326xx/max32660-evsys/src/max326_button.c @@ -30,6 +30,7 @@ #include #include #include +#include #include diff --git a/boards/arm/stm32/stm32f4discovery/src/stm32_gs2200m.c b/boards/arm/stm32/stm32f4discovery/src/stm32_gs2200m.c index bdd220a82c2..004c9fabac4 100644 --- a/boards/arm/stm32/stm32f4discovery/src/stm32_gs2200m.c +++ b/boards/arm/stm32/stm32f4discovery/src/stm32_gs2200m.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include "arm_arch.h" diff --git a/drivers/audio/cxd56.c b/drivers/audio/cxd56.c index 296b1162e8f..bff508f435e 100644 --- a/drivers/audio/cxd56.c +++ b/drivers/audio/cxd56.c @@ -32,6 +32,7 @@ #include #include #include +#include #include #include diff --git a/drivers/audio/cxd56_src.c b/drivers/audio/cxd56_src.c index f21e177326a..01348418b7b 100644 --- a/drivers/audio/cxd56_src.c +++ b/drivers/audio/cxd56_src.c @@ -30,7 +30,7 @@ #include #include -#include +#include #include #include diff --git a/drivers/audio/wm8776.c b/drivers/audio/wm8776.c index 2216715d53d..1b67dda4b3b 100644 --- a/drivers/audio/wm8776.c +++ b/drivers/audio/wm8776.c @@ -37,7 +37,7 @@ #include #include -#include +#include #include #include #include diff --git a/drivers/i2c/i2c_bitbang.c b/drivers/i2c/i2c_bitbang.c index 5f9a0299c69..96bcd5cac86 100644 --- a/drivers/i2c/i2c_bitbang.c +++ b/drivers/i2c/i2c_bitbang.c @@ -27,7 +27,7 @@ #include #include -#include +#include #include #include #include diff --git a/drivers/ioexpander/gpio.c b/drivers/ioexpander/gpio.c index 54165f90026..2032159622e 100644 --- a/drivers/ioexpander/gpio.c +++ b/drivers/ioexpander/gpio.c @@ -33,6 +33,7 @@ #include #include +#include #include #ifdef CONFIG_DEV_GPIO diff --git a/drivers/usbmonitor/usbmonitor.c b/drivers/usbmonitor/usbmonitor.c index cad9d176657..fc100211d48 100644 --- a/drivers/usbmonitor/usbmonitor.c +++ b/drivers/usbmonitor/usbmonitor.c @@ -30,8 +30,8 @@ #include #include #include -#include #include +#include #include #include diff --git a/drivers/wireless/bluetooth/bt_uart_shim.c b/drivers/wireless/bluetooth/bt_uart_shim.c index 85671cd3e09..a7c340482c7 100644 --- a/drivers/wireless/bluetooth/bt_uart_shim.c +++ b/drivers/wireless/bluetooth/bt_uart_shim.c @@ -52,9 +52,8 @@ #include #include -#include #include -#include +#include #include #include #include diff --git a/graphics/vnc/server/vnc_fbdev.c b/graphics/vnc/server/vnc_fbdev.c index 6f83af77dd0..bdee741b810 100644 --- a/graphics/vnc/server/vnc_fbdev.c +++ b/graphics/vnc/server/vnc_fbdev.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #if defined(CONFIG_VNCSERVER_DEBUG) && !defined(CONFIG_DEBUG_GRAPHICS) diff --git a/include/nuttx/arch.h b/include/nuttx/arch.h index 37c5c7f8934..04b052cdb8f 100644 --- a/include/nuttx/arch.h +++ b/include/nuttx/arch.h @@ -78,13 +78,13 @@ #include #include -#include #include #include #include #include +#include /**************************************************************************** * Pre-processor definitions diff --git a/include/nuttx/fs/fs.h b/include/nuttx/fs/fs.h index ec497b2af3d..6a2a5572841 100644 --- a/include/nuttx/fs/fs.h +++ b/include/nuttx/fs/fs.h @@ -32,11 +32,8 @@ #include #include #include -#include -#ifdef CONFIG_FS_NAMED_SEMAPHORES -# include -#endif +#include /**************************************************************************** * Pre-processor Definitions diff --git a/include/nuttx/irq.h b/include/nuttx/irq.h index c5758b0fc6f..c5dfbb2861b 100644 --- a/include/nuttx/irq.h +++ b/include/nuttx/irq.h @@ -30,10 +30,7 @@ #ifndef __ASSEMBLY__ # include # include -# ifdef CONFIG_SMP -# include -# include -# endif +# include #endif /* Now include architecture-specific types */ @@ -270,80 +267,6 @@ void leave_critical_section(irqstate_t flags); # define leave_critical_section(f) up_irq_restore(f) #endif -/**************************************************************************** - * Name: spin_lock_irqsave - * - * Description: - * If SMP is are enabled: - * If the argument lock is not specified (i.e. NULL), - * disable local interrupts and take the global spinlock (g_irq_spin) - * if the call counter (g_irq_spin_count[cpu]) equals to 0. Then the - * counter on the CPU is increment to allow nested call and return - * the interrupt state. - * - * If the argument lock is specified, - * disable local interrupts and take the lock spinlock and return - * the interrupt state. - * - * NOTE: This API is very simple to protect data (e.g. H/W register - * or internal data structure) in SMP mode. But do not use this API - * with kernel APIs which suspend a caller thread. (e.g. nxsem_wait) - * - * If SMP is not enabled: - * This function is equivalent to up_irq_save(). - * - * Input Parameters: - * lock - Caller specific spinlock. If specified NULL, g_irq_spin is used - * and can be nested. Otherwise, nested call for the same lock - * would cause a deadlock - * - * Returned Value: - * An opaque, architecture-specific value that represents the state of - * the interrupts prior to the call to spin_lock_irqsave(lock); - * - ****************************************************************************/ - -#if defined(CONFIG_SMP) -irqstate_t spin_lock_irqsave(spinlock_t *lock); -#else -# define spin_lock_irqsave(l) up_irq_save() -#endif - -/**************************************************************************** - * Name: spin_unlock_irqrestore - * - * Description: - * If SMP is enabled: - * If the argument lock is not specified (i.e. NULL), - * decrement the call counter (g_irq_spin_count[cpu]) and if it - * decrements to zero then release the spinlock (g_irq_spin) and - * restore the interrupt state as it was prior to the previous call to - * spin_lock_irqsave(NULL). - * - * If the argument lock is specified, release the the lock and - * restore the interrupt state as it was prior to the previous call to - * spin_lock_irqsave(lock). - * - * If SMP is not enabled: - * This function is equivalent to up_irq_restore(). - * - * Input Parameters: - * lock - Caller specific spinlock. If specified NULL, g_irq_spin is used. - * - * flags - The architecture-specific value that represents the state of - * the interrupts prior to the call to spin_lock_irqsave(lock); - * - * Returned Value: - * None - * - ****************************************************************************/ - -#if defined(CONFIG_SMP) -void spin_unlock_irqrestore(spinlock_t *lock, irqstate_t flags); -#else -# define spin_unlock_irqrestore(l, f) up_irq_restore(f) -#endif - #undef EXTERN #ifdef __cplusplus } diff --git a/include/nuttx/sched.h b/include/nuttx/sched.h index 5e841c11a91..8f324402a7c 100644 --- a/include/nuttx/sched.h +++ b/include/nuttx/sched.h @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include diff --git a/include/nuttx/semaphore.h b/include/nuttx/semaphore.h index 53c2783132e..42bd308f658 100644 --- a/include/nuttx/semaphore.h +++ b/include/nuttx/semaphore.h @@ -36,12 +36,6 @@ * Pre-processor Definitions ****************************************************************************/ -/* Values for protocol attribute */ - -#define SEM_PRIO_NONE 0 -#define SEM_PRIO_INHERIT 1 -#define SEM_PRIO_PROTECT 2 - /* Most internal nxsem_* interfaces are not available in the user space in * PROTECTED and KERNEL builds. In that context, the application semaphore * interfaces must be used. The differences between the two sets of @@ -461,27 +455,6 @@ int nxsem_reset(FAR sem_t *sem, int16_t count); #define nxsem_get_protocol(s,p) sem_getprotocol(s,p) -/**************************************************************************** - * Name: sem_getprotocol - * - * Description: - * Return the value of the semaphore protocol attribute. - * - * Input Parameters: - * sem - A pointer to the semaphore whose attributes are to be - * queried. - * protocol - The user provided location in which to store the protocol - * value. - * - * Returned Value: - * This function is exposed as a non-standard application interface. It - * returns zero (OK) if successful. Otherwise, -1 (ERROR) is returned and - * the errno value is set appropriately. - * - ****************************************************************************/ - -int sem_getprotocol(FAR sem_t *sem, FAR int *protocol); - /**************************************************************************** * Name: nxsem_set_protocol * @@ -521,45 +494,6 @@ int sem_getprotocol(FAR sem_t *sem, FAR int *protocol); int nxsem_set_protocol(FAR sem_t *sem, int protocol); -/**************************************************************************** - * Name: sem_setprotocol - * - * Description: - * Set semaphore protocol attribute. - * - * One particularly important use of this function is when a semaphore - * is used for inter-task communication like: - * - * TASK A TASK B - * sem_init(sem, 0, 0); - * sem_wait(sem); - * sem_post(sem); - * Awakens as holder - * - * In this case priority inheritance can interfere with the operation of - * the semaphore. The problem is that when TASK A is restarted it is a - * holder of the semaphore. However, it never calls sem_post(sem) so it - * becomes *permanently* a holder of the semaphore and may have its - * priority boosted when any other task tries to acquire the semaphore. - * - * The fix is to call sem_setprotocol(SEM_PRIO_NONE) immediately after - * the sem_init() call so that there will be no priority inheritance - * operations on this semaphore. - * - * Input Parameters: - * sem - A pointer to the semaphore whose attributes are to be - * modified - * protocol - The new protocol to use - * - * Returned Value: - * This function is exposed as a non-standard application interface. It - * returns zero (OK) if successful. Otherwise, -1 (ERROR) is returned and - * the errno value is set appropriately. - * - ****************************************************************************/ - -int sem_setprotocol(FAR sem_t *sem, int protocol); - /**************************************************************************** * Name: nxsem_wait_uninterruptible * diff --git a/include/nuttx/spinlock.h b/include/nuttx/spinlock.h index d0a4f13f08c..e930c05a037 100644 --- a/include/nuttx/spinlock.h +++ b/include/nuttx/spinlock.h @@ -30,6 +30,8 @@ #include #include +#include + #ifndef CONFIG_SPINLOCK typedef struct { @@ -350,4 +352,79 @@ void spin_clrbit(FAR volatile cpu_set_t *set, unsigned int cpu, #endif #endif /* CONFIG_SPINLOCK */ + +/**************************************************************************** + * Name: spin_lock_irqsave + * + * Description: + * If SMP is are enabled: + * If the argument lock is not specified (i.e. NULL), + * disable local interrupts and take the global spinlock (g_irq_spin) + * if the call counter (g_irq_spin_count[cpu]) equals to 0. Then the + * counter on the CPU is increment to allow nested call and return + * the interrupt state. + * + * If the argument lock is specified, + * disable local interrupts and take the lock spinlock and return + * the interrupt state. + * + * NOTE: This API is very simple to protect data (e.g. H/W register + * or internal data structure) in SMP mode. But do not use this API + * with kernel APIs which suspend a caller thread. (e.g. nxsem_wait) + * + * If SMP is not enabled: + * This function is equivalent to up_irq_save(). + * + * Input Parameters: + * lock - Caller specific spinlock. If specified NULL, g_irq_spin is used + * and can be nested. Otherwise, nested call for the same lock + * would cause a deadlock + * + * Returned Value: + * An opaque, architecture-specific value that represents the state of + * the interrupts prior to the call to spin_lock_irqsave(lock); + * + ****************************************************************************/ + +#if defined(CONFIG_SMP) +irqstate_t spin_lock_irqsave(spinlock_t *lock); +#else +# define spin_lock_irqsave(l) up_irq_save() +#endif + +/**************************************************************************** + * Name: spin_unlock_irqrestore + * + * Description: + * If SMP is enabled: + * If the argument lock is not specified (i.e. NULL), + * decrement the call counter (g_irq_spin_count[cpu]) and if it + * decrements to zero then release the spinlock (g_irq_spin) and + * restore the interrupt state as it was prior to the previous call to + * spin_lock_irqsave(NULL). + * + * If the argument lock is specified, release the the lock and + * restore the interrupt state as it was prior to the previous call to + * spin_lock_irqsave(lock). + * + * If SMP is not enabled: + * This function is equivalent to up_irq_restore(). + * + * Input Parameters: + * lock - Caller specific spinlock. If specified NULL, g_irq_spin is used. + * + * flags - The architecture-specific value that represents the state of + * the interrupts prior to the call to spin_lock_irqsave(lock); + * + * Returned Value: + * None + * + ****************************************************************************/ + +#if defined(CONFIG_SMP) +void spin_unlock_irqrestore(spinlock_t *lock, irqstate_t flags); +#else +# define spin_unlock_irqrestore(l, f) up_irq_restore(f) +#endif + #endif /* __INCLUDE_NUTTX_SPINLOCK_H */ diff --git a/include/pthread.h b/include/pthread.h index e7618bae0cb..4fd3bfdfb35 100644 --- a/include/pthread.h +++ b/include/pthread.h @@ -36,8 +36,7 @@ #include /* For getpid */ #include /* Needed for sigset_t, includes this file */ #include /* Needed for struct timespec */ - -#include /* For sem_t and SEM_PRIO_* defines */ +#include /* For sem_t and SEM_PRIO_* defines */ #ifdef CONFIG_PTHREAD_SPINLOCKS /* The architecture specific spinlock.h header file must provide the diff --git a/include/sched.h b/include/sched.h index e1a06b135d4..306d88abc22 100644 --- a/include/sched.h +++ b/include/sched.h @@ -31,10 +31,9 @@ #include #include #include +#include #include "queue.h" -#include - /******************************************************************************** * Pre-processor Definitions ********************************************************************************/ diff --git a/include/semaphore.h b/include/semaphore.h index 785a135c15f..8c427be406b 100644 --- a/include/semaphore.h +++ b/include/semaphore.h @@ -35,6 +35,12 @@ * Pre-processor Definitions ****************************************************************************/ +/* Values for protocol attribute */ + +#define SEM_PRIO_NONE 0 +#define SEM_PRIO_INHERIT 1 +#define SEM_PRIO_PROTECT 2 + /* Value returned by sem_open() in the event of a failure. */ #define SEM_FAILED ((FAR sem_t *)NULL) @@ -140,6 +146,66 @@ int sem_close(FAR sem_t *sem); int sem_unlink(FAR const char *name); #endif +/**************************************************************************** + * Name: sem_setprotocol + * + * Description: + * Set semaphore protocol attribute. + * + * One particularly important use of this function is when a semaphore + * is used for inter-task communication like: + * + * TASK A TASK B + * sem_init(sem, 0, 0); + * sem_wait(sem); + * sem_post(sem); + * Awakens as holder + * + * In this case priority inheritance can interfere with the operation of + * the semaphore. The problem is that when TASK A is restarted it is a + * holder of the semaphore. However, it never calls sem_post(sem) so it + * becomes *permanently* a holder of the semaphore and may have its + * priority boosted when any other task tries to acquire the semaphore. + * + * The fix is to call sem_setprotocol(SEM_PRIO_NONE) immediately after + * the sem_init() call so that there will be no priority inheritance + * operations on this semaphore. + * + * Input Parameters: + * sem - A pointer to the semaphore whose attributes are to be + * modified + * protocol - The new protocol to use + * + * Returned Value: + * This function is exposed as a non-standard application interface. It + * returns zero (OK) if successful. Otherwise, -1 (ERROR) is returned and + * the errno value is set appropriately. + * + ****************************************************************************/ + +int sem_setprotocol(FAR sem_t *sem, int protocol); + +/**************************************************************************** + * Name: sem_getprotocol + * + * Description: + * Return the value of the semaphore protocol attribute. + * + * Input Parameters: + * sem - A pointer to the semaphore whose attributes are to be + * queried. + * protocol - The user provided location in which to store the protocol + * value. + * + * Returned Value: + * This function is exposed as a non-standard application interface. It + * returns zero (OK) if successful. Otherwise, -1 (ERROR) is returned and + * the errno value is set appropriately. + * + ****************************************************************************/ + +int sem_getprotocol(FAR sem_t *sem, FAR int *protocol); + #undef EXTERN #ifdef __cplusplus } diff --git a/include/stdio.h b/include/stdio.h index 59f658f2092..9db74589c80 100644 --- a/include/stdio.h +++ b/include/stdio.h @@ -29,10 +29,10 @@ #include #include -#include #include #include +#include /**************************************************************************** * Pre-processor Definitions diff --git a/libs/libc/pthread/pthread_create.c b/libs/libc/pthread/pthread_create.c index fe85127c60e..c46e36fc602 100644 --- a/libs/libc/pthread/pthread_create.c +++ b/libs/libc/pthread/pthread_create.c @@ -24,7 +24,7 @@ #include -#include +#include #include diff --git a/libs/libc/pthread/pthread_spinlock.c b/libs/libc/pthread/pthread_spinlock.c index 83d97c700e7..249c6816ea2 100644 --- a/libs/libc/pthread/pthread_spinlock.c +++ b/libs/libc/pthread/pthread_spinlock.c @@ -27,19 +27,12 @@ #include #include +#include +#include +#include #include #include -/* The architecture specific spinlock.h header file must provide the - * following: - * - * SP_LOCKED - A definition of the locked state value (usually 1) - * SP_UNLOCKED - A definition of the unlocked state value (usually 0) - * spinlock_t - The type of a spinlock memory object (usually uint8_t). - */ - -#include - #ifdef CONFIG_PTHREAD_SPINLOCKS /**************************************************************************** diff --git a/libs/libc/sched/task_startup.c b/libs/libc/sched/task_startup.c index bbfee7252d8..3b111c5a572 100644 --- a/libs/libc/sched/task_startup.c +++ b/libs/libc/sched/task_startup.c @@ -27,6 +27,7 @@ #include #include #include +#include #ifndef CONFIG_BUILD_KERNEL diff --git a/libs/libc/tls/task_getinfo.c b/libs/libc/tls/task_getinfo.c index 8ae77a183ce..26941274154 100644 --- a/libs/libc/tls/task_getinfo.c +++ b/libs/libc/tls/task_getinfo.c @@ -24,8 +24,7 @@ #include -#include - +#include #include /**************************************************************************** diff --git a/libs/libc/unistd/lib_getpriority.c b/libs/libc/unistd/lib_getpriority.c index 0029743c7d5..95996d23137 100644 --- a/libs/libc/unistd/lib_getpriority.c +++ b/libs/libc/unistd/lib_getpriority.c @@ -24,8 +24,9 @@ #include #include -#include +#include +#include #include /**************************************************************************** diff --git a/libs/libc/unistd/lib_setpriority.c b/libs/libc/unistd/lib_setpriority.c index 14195eb7491..057f05fa735 100644 --- a/libs/libc/unistd/lib_setpriority.c +++ b/libs/libc/unistd/lib_setpriority.c @@ -26,6 +26,7 @@ #include #include +#include /**************************************************************************** * Public Functions diff --git a/libs/libc/wqueue/work_lock.c b/libs/libc/wqueue/work_lock.c index 04ebaade086..26e6e6ee5da 100644 --- a/libs/libc/wqueue/work_lock.c +++ b/libs/libc/wqueue/work_lock.c @@ -28,6 +28,8 @@ #include #include +#include + #include "wqueue/wqueue.h" #if defined(CONFIG_LIB_USRWORK) && !defined(__KERNEL__) diff --git a/net/socket/net_dup2.c b/net/socket/net_dup2.c index ff765b481ed..c36981fb4ce 100644 --- a/net/socket/net_dup2.c +++ b/net/socket/net_dup2.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include diff --git a/net/tcp/tcp_txdrain.c b/net/tcp/tcp_txdrain.c index 08206cf1cca..0562a1eb123 100644 --- a/net/tcp/tcp_txdrain.c +++ b/net/tcp/tcp_txdrain.c @@ -29,8 +29,10 @@ #include #include +#include #include +#include "utils/utils.h" #include "tcp/tcp.h" #if defined(CONFIG_NET_TCP_WRITE_BUFFERS) && defined(CONFIG_NET_TCP_NOTIFIER) diff --git a/net/udp/udp_txdrain.c b/net/udp/udp_txdrain.c index 130dfeefad5..2f86393c3db 100644 --- a/net/udp/udp_txdrain.c +++ b/net/udp/udp_txdrain.c @@ -29,8 +29,10 @@ #include #include +#include #include +#include "utils/utils.h" #include "udp/udp.h" #if defined(CONFIG_NET_UDP_WRITE_BUFFERS) && defined(CONFIG_NET_UDP_NOTIFIER) diff --git a/sched/clock/clock_gettime.c b/sched/clock/clock_gettime.c index 93eafa4a41e..172c2db10f3 100644 --- a/sched/clock/clock_gettime.c +++ b/sched/clock/clock_gettime.c @@ -30,8 +30,8 @@ #include #include -#include #include +#include #include "clock/clock.h" #ifdef CONFIG_CLOCK_TIMEKEEPING diff --git a/sched/group/group_exitinfo.c b/sched/group/group_exitinfo.c index 55951708040..4cd54d06e5a 100644 --- a/sched/group/group_exitinfo.c +++ b/sched/group/group_exitinfo.c @@ -28,7 +28,7 @@ #include #include -#include +#include #include #include "sched/sched.h" diff --git a/sched/group/group_tlsalloc.c b/sched/group/group_tlsalloc.c index ef4a7d527e6..5b09073abc5 100644 --- a/sched/group/group_tlsalloc.c +++ b/sched/group/group_tlsalloc.c @@ -29,7 +29,7 @@ #include #include -#include +#include #include #include "sched/sched.h" diff --git a/sched/group/group_tlsfree.c b/sched/group/group_tlsfree.c index f07f68f005f..c1eccaf25df 100644 --- a/sched/group/group_tlsfree.c +++ b/sched/group/group_tlsfree.c @@ -28,7 +28,7 @@ #include #include -#include +#include #include #include "sched/sched.h" diff --git a/sched/group/group_tlsgetdtor.c b/sched/group/group_tlsgetdtor.c index 2aa41452835..c6e25f3f703 100644 --- a/sched/group/group_tlsgetdtor.c +++ b/sched/group/group_tlsgetdtor.c @@ -28,6 +28,7 @@ #include #include +#include #include #include diff --git a/sched/group/group_tlsgetset.c b/sched/group/group_tlsgetset.c index 55c5dac9a24..a3405c44a5f 100644 --- a/sched/group/group_tlsgetset.c +++ b/sched/group/group_tlsgetset.c @@ -28,6 +28,7 @@ #include #include +#include #include #include diff --git a/sched/group/group_tlssetdtor.c b/sched/group/group_tlssetdtor.c index 5e4447c3c39..040ff65822f 100644 --- a/sched/group/group_tlssetdtor.c +++ b/sched/group/group_tlssetdtor.c @@ -28,6 +28,7 @@ #include #include +#include #include #include diff --git a/sched/pthread/pthread.h b/sched/pthread/pthread.h index db04ba234a9..8a3317a5f70 100644 --- a/sched/pthread/pthread.h +++ b/sched/pthread/pthread.h @@ -31,9 +31,10 @@ #include #include #include -#include #include +#include +#include /**************************************************************************** * Public Type Declarations diff --git a/sched/semaphore/semaphore.h b/sched/semaphore/semaphore.h index e19e49506b3..28995e1c4b1 100644 --- a/sched/semaphore/semaphore.h +++ b/sched/semaphore/semaphore.h @@ -28,10 +28,10 @@ #include #include #include +#include #include #include -#include #include /**************************************************************************** diff --git a/sched/signal/sig_default.c b/sched/signal/sig_default.c index 0078f476870..5f4ad913379 100644 --- a/sched/signal/sig_default.c +++ b/sched/signal/sig_default.c @@ -33,7 +33,7 @@ #include #include -#include +#include #include #include "group/group.h" diff --git a/wireless/bluetooth/bt_atomic.c b/wireless/bluetooth/bt_atomic.c index c674ee3837a..184d81431bb 100644 --- a/wireless/bluetooth/bt_atomic.c +++ b/wireless/bluetooth/bt_atomic.c @@ -24,7 +24,7 @@ ****************************************************************************/ #include -#include +#include #include "bt_atomic.h" diff --git a/wireless/bluetooth/bt_buf.c b/wireless/bluetooth/bt_buf.c index e4f0992ea93..296fe0dde7b 100644 --- a/wireless/bluetooth/bt_buf.c +++ b/wireless/bluetooth/bt_buf.c @@ -51,7 +51,7 @@ #include #include -#include +#include #include #include #include diff --git a/wireless/bluetooth/bt_hcicore.c b/wireless/bluetooth/bt_hcicore.c index 0ebd9111791..1d14839e7b4 100644 --- a/wireless/bluetooth/bt_hcicore.c +++ b/wireless/bluetooth/bt_hcicore.c @@ -58,6 +58,7 @@ #include #include +#include #include #include #include diff --git a/wireless/bluetooth/bt_netdev.c b/wireless/bluetooth/bt_netdev.c index a43b3abcfe8..82f455aa1a2 100644 --- a/wireless/bluetooth/bt_netdev.c +++ b/wireless/bluetooth/bt_netdev.c @@ -35,8 +35,7 @@ #include -#include -#include +#include #include #include #include From 8a14a13819f7f621e6f45b0a8c26433ede182bb3 Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Mon, 24 May 2021 02:32:34 +0800 Subject: [PATCH 206/739] binfmt: Rename dump_module to binfmt_dumpmodule follow other binfmt function naming convention Signed-off-by: Xiang Xiao --- binfmt/binfmt.h | 6 +++--- binfmt/binfmt_dumpmodule.c | 4 ++-- binfmt/binfmt_loadmodule.c | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/binfmt/binfmt.h b/binfmt/binfmt.h index 6a570f5ed48..011e7c3ca4b 100644 --- a/binfmt/binfmt.h +++ b/binfmt/binfmt.h @@ -59,7 +59,7 @@ EXTERN FAR struct binfmt_s *g_binfmts; ****************************************************************************/ /**************************************************************************** - * Name: dump_module + * Name: binfmt_dumpmodule * * Description: * Dump the contents of struct binary_s. @@ -73,9 +73,9 @@ EXTERN FAR struct binfmt_s *g_binfmts; ****************************************************************************/ #if defined(CONFIG_DEBUG_FEATURES) && defined(CONFIG_DEBUG_BINFMT) -int dump_module(FAR const struct binary_s *bin); +int binfmt_dumpmodule(FAR const struct binary_s *bin); #else -# define dump_module(bin) +# define binfmt_dumpmodule(bin) #endif /**************************************************************************** diff --git a/binfmt/binfmt_dumpmodule.c b/binfmt/binfmt_dumpmodule.c index 488d178a2a5..6c7a78c4de1 100644 --- a/binfmt/binfmt_dumpmodule.c +++ b/binfmt/binfmt_dumpmodule.c @@ -39,7 +39,7 @@ ****************************************************************************/ /**************************************************************************** - * Name: dump_module + * Name: binfmt_dumpmodule * * Description: * Dump the contents of struct binary_s. @@ -52,7 +52,7 @@ * ****************************************************************************/ -int dump_module(FAR const struct binary_s *bin) +int binfmt_dumpmodule(FAR const struct binary_s *bin) { if (bin) { diff --git a/binfmt/binfmt_loadmodule.c b/binfmt/binfmt_loadmodule.c index 604f0be4aff..04614fdef62 100644 --- a/binfmt/binfmt_loadmodule.c +++ b/binfmt/binfmt_loadmodule.c @@ -127,7 +127,7 @@ static int load_absmodule(FAR struct binary_s *bin) /* Save the unload method for use by unload_module */ bin->unload = binfmt->unload; - dump_module(bin); + binfmt_dumpmodule(bin); break; } } From 3144a5a272b86f67ba81b568ed3ac22730afd69a Mon Sep 17 00:00:00 2001 From: Sara Souza Date: Tue, 4 May 2021 09:44:00 -0300 Subject: [PATCH 207/739] xtensa: Fixes names of serial functions --- arch/xtensa/src/common/xtensa.h | 4 ++-- arch/xtensa/src/common/xtensa_initialize.c | 2 +- arch/xtensa/src/esp32/esp32_serial.c | 4 ++-- arch/xtensa/src/esp32/esp32_start.c | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/arch/xtensa/src/common/xtensa.h b/arch/xtensa/src/common/xtensa.h index 70d3ed9fbfc..63eb4f1c9df 100644 --- a/arch/xtensa/src/common/xtensa.h +++ b/arch/xtensa/src/common/xtensa.h @@ -311,8 +311,8 @@ void xtensa_add_region(void); /* Serial output */ void up_lowputc(char ch); -void xtensa_early_serial_initialize(void); -void xtensa_serial_initialize(void); +void xtensa_earlyserialinit(void); +void xtensa_serialinit(void); void rpmsg_serialinit(void); diff --git a/arch/xtensa/src/common/xtensa_initialize.c b/arch/xtensa/src/common/xtensa_initialize.c index dd380f5c403..a098d96365f 100644 --- a/arch/xtensa/src/common/xtensa_initialize.c +++ b/arch/xtensa/src/common/xtensa_initialize.c @@ -181,7 +181,7 @@ void up_initialize(void) /* Initialize the serial device driver */ #ifdef USE_SERIALDRIVER - xtensa_serial_initialize(); + xtensa_serialinit(); #endif #ifdef CONFIG_RPMSG_UART diff --git a/arch/xtensa/src/esp32/esp32_serial.c b/arch/xtensa/src/esp32/esp32_serial.c index 686610f4527..b6d75a68a62 100644 --- a/arch/xtensa/src/esp32/esp32_serial.c +++ b/arch/xtensa/src/esp32/esp32_serial.c @@ -1285,7 +1285,7 @@ void esp32_lowsetup(void) ****************************************************************************/ #ifdef USE_EARLYSERIALINIT -void xtensa_early_serial_initialize(void) +void xtensa_earlyserialinit(void) { /* NOTE: All GPIO configuration for the UARTs was performed in * esp32_lowsetup @@ -1319,7 +1319,7 @@ void xtensa_early_serial_initialize(void) * ****************************************************************************/ -void xtensa_serial_initialize(void) +void xtensa_serialinit(void) { /* Register the console */ diff --git a/arch/xtensa/src/esp32/esp32_start.c b/arch/xtensa/src/esp32/esp32_start.c index c0da802b02e..e4345a9ab81 100644 --- a/arch/xtensa/src/esp32/esp32_start.c +++ b/arch/xtensa/src/esp32/esp32_start.c @@ -155,7 +155,7 @@ void IRAM_ATTR __start(void) #ifdef USE_EARLYSERIALINIT /* Perform early serial initialization */ - xtensa_early_serial_initialize(); + xtensa_earlyserialinit(); #endif showprogress("A"); From f61214cc0dc007d839d98f78643348fb30786793 Mon Sep 17 00:00:00 2001 From: Nathan Hartman <59230071+hartmannathan@users.noreply.github.com> Date: Mon, 24 May 2021 17:40:48 -0400 Subject: [PATCH 208/739] mqueue, btqueue: Fix some typos (e.g., essage -> message) include/nuttx/mqueue.h: sched/mqueue/mq_msgqfree.c: wireless/bluetooth/bt_queue.c: * Fix typos in comments only. No functional changes. --- include/nuttx/mqueue.h | 12 ++++++------ sched/mqueue/mq_msgqfree.c | 8 ++++---- wireless/bluetooth/bt_queue.c | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/include/nuttx/mqueue.h b/include/nuttx/mqueue.h index 9752d7d1ed6..90688cdca06 100644 --- a/include/nuttx/mqueue.h +++ b/include/nuttx/mqueue.h @@ -360,12 +360,12 @@ ssize_t nxmq_timedreceive(mqd_t mqdes, FAR char *msg, size_t msglen, * Description: * This function deallocates an initialized message queue structure. * First, it deallocates all of the queued messages in the message - * queue. It is assumed that this message is fully unlinked and - * closed so that no thread will attempt access it while it is being - * deleted. + * queue. It is assumed that this message queue is fully unlinked + * and closed so that no thread will attempt to access it while it + * is being deleted. * * Input Parameters: - * msgq - Named essage queue to be freed + * msgq - Named message queue to be freed * * Returned Value: * None @@ -400,10 +400,10 @@ FAR struct mqueue_inode_s *nxmq_alloc_msgq(mode_t mode, * Name: nxmq_pollnotify * * Description: - * pollnotify, used for notify the poll + * pollnotify, used for notifying the poll * * Input Parameters: - * msgq - Named essage queue + * msgq - Named message queue * eventset - evnet * * Returned Value: diff --git a/sched/mqueue/mq_msgqfree.c b/sched/mqueue/mq_msgqfree.c index c681a797a2d..2b99cc86dd3 100644 --- a/sched/mqueue/mq_msgqfree.c +++ b/sched/mqueue/mq_msgqfree.c @@ -38,12 +38,12 @@ * Description: * This function deallocates an initialized message queue structure. * First, it deallocates all of the queued messages in the message - * queue. It is assumed that this message is fully unlinked and - * closed so that no thread will attempt access it while it is being - * deleted. + * queue. It is assumed that this message queue is fully unlinked + * and closed so that no thread will attempt to access it while it + * is being deleted. * * Input Parameters: - * msgq - Named essage queue to be freed + * msgq - Named message queue to be freed * * Returned Value: * None diff --git a/wireless/bluetooth/bt_queue.c b/wireless/bluetooth/bt_queue.c index 1c26b70b253..3d237f59103 100644 --- a/wireless/bluetooth/bt_queue.c +++ b/wireless/bluetooth/bt_queue.c @@ -40,7 +40,7 @@ * Pre-processor Definitions ****************************************************************************/ -/* Common essage queue attributes */ +/* Common message queue attributes */ #define BT_MSGSIZE sizeof(struct bt_bufmsg_s) #define BT_MSGFLAGS 0 From 0a604d7edd4e53462da173dc48e9eba246a56246 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Mon, 24 May 2021 15:55:02 +0900 Subject: [PATCH 209/739] libs/libc/libc.h: Fix a comment typo --- libs/libc/libc.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libs/libc/libc.h b/libs/libc/libc.h index 338e590eb17..9b2a230d995 100644 --- a/libs/libc/libc.h +++ b/libs/libc/libc.h @@ -52,11 +52,11 @@ # define CONFIG_LIB_HOMEDIR "/" #endif -/* The NuttX C library an be build in two modes: (1) as a standard, C-library - * that can be used by normal, user-space applications, or (2) as a special, - * kernel-mode C-library only used within the OS. If NuttX is not being - * built as separated kernel- and user-space modules, then only the first - * mode is supported. +/* The NuttX C library can be built in two modes: (1) as a standard, + * C-library that can be used by normal, user-space applications, or + * (2) as a special, kernel-mode C-library only used within the OS. + * If NuttX is not being built as separated kernel- and user-space modules, + * then only the first mode is supported. */ #if !defined(CONFIG_BUILD_FLAT) && defined(__KERNEL__) From d6205642ab18342e12449552d1d22b87838061d8 Mon Sep 17 00:00:00 2001 From: Janne Rosberg Date: Tue, 4 May 2021 13:56:52 +0300 Subject: [PATCH 210/739] add support for PolarFire SoC and icicle board Co-authored-by: Eero Nurkkala --- arch/risc-v/Kconfig | 11 + arch/risc-v/include/mpfs/chip.h | 34 + arch/risc-v/include/mpfs/irq.h | 340 ++++++ arch/risc-v/src/mpfs/Kconfig | 93 ++ arch/risc-v/src/mpfs/Make.defs | 63 + arch/risc-v/src/mpfs/chip.h | 32 + arch/risc-v/src/mpfs/hardware/mpfs_clint.h | 42 + arch/risc-v/src/mpfs/hardware/mpfs_gpio.h | 96 ++ .../risc-v/src/mpfs/hardware/mpfs_memorymap.h | 120 ++ arch/risc-v/src/mpfs/hardware/mpfs_plic.h | 131 ++ arch/risc-v/src/mpfs/hardware/mpfs_sysctl.h | 34 + arch/risc-v/src/mpfs/hardware/mpfs_uart.h | 207 ++++ arch/risc-v/src/mpfs/mpfs.h | 38 + arch/risc-v/src/mpfs/mpfs_allocateheap.c | 132 ++ arch/risc-v/src/mpfs/mpfs_clockconfig.c | 80 ++ arch/risc-v/src/mpfs/mpfs_clockconfig.h | 66 + arch/risc-v/src/mpfs/mpfs_config.h | 68 ++ arch/risc-v/src/mpfs/mpfs_gpio.c | 184 +++ arch/risc-v/src/mpfs/mpfs_gpio.h | 272 +++++ arch/risc-v/src/mpfs/mpfs_head.S | 328 +++++ arch/risc-v/src/mpfs/mpfs_idle.c | 65 + arch/risc-v/src/mpfs/mpfs_irq.c | 330 +++++ arch/risc-v/src/mpfs/mpfs_irq_dispatch.c | 175 +++ arch/risc-v/src/mpfs/mpfs_lowputc.c | 228 ++++ arch/risc-v/src/mpfs/mpfs_lowputc.h | 59 + arch/risc-v/src/mpfs/mpfs_memorymap.h | 53 + arch/risc-v/src/mpfs/mpfs_serial.c | 1069 +++++++++++++++++ arch/risc-v/src/mpfs/mpfs_start.c | 144 +++ arch/risc-v/src/mpfs/mpfs_timerisr.c | 132 ++ arch/risc-v/src/mpfs/mpfs_userspace.c | 127 ++ arch/risc-v/src/mpfs/mpfs_userspace.h | 49 + arch/risc-v/src/mpfs/mpfs_vectors.S | 53 + boards/Kconfig | 12 + boards/risc-v/mpfs/icicle/Kconfig | 8 + .../risc-v/mpfs/icicle/configs/nsh/defconfig | 76 ++ boards/risc-v/mpfs/icicle/include/board.h | 111 ++ boards/risc-v/mpfs/icicle/kernel/Makefile | 107 ++ .../mpfs/icicle/kernel/mpfs_userspace.c | 121 ++ boards/risc-v/mpfs/icicle/scripts/Make.defs | 98 ++ boards/risc-v/mpfs/icicle/scripts/gnu-elf.ld | 115 ++ .../risc-v/mpfs/icicle/scripts/hss-nuttx.yml | 12 + boards/risc-v/mpfs/icicle/scripts/ld.script | 97 ++ boards/risc-v/mpfs/icicle/scripts/memory.ld | 35 + .../risc-v/mpfs/icicle/scripts/user-space.ld | 104 ++ boards/risc-v/mpfs/icicle/src/Makefile | 37 + boards/risc-v/mpfs/icicle/src/mpfs_appinit.c | 75 ++ boards/risc-v/mpfs/icicle/src/mpfs_autoleds.c | 147 +++ boards/risc-v/mpfs/icicle/src/mpfs_boot.c | 58 + boards/risc-v/mpfs/icicle/src/mpfs_bringup.c | 61 + boards/risc-v/mpfs/icicle/src/mpfs_ostest.c | 92 ++ boards/risc-v/mpfs/icicle/src/mpfsicicle.h | 46 + 51 files changed, 6267 insertions(+) create mode 100755 arch/risc-v/include/mpfs/chip.h create mode 100755 arch/risc-v/include/mpfs/irq.h create mode 100755 arch/risc-v/src/mpfs/Kconfig create mode 100755 arch/risc-v/src/mpfs/Make.defs create mode 100755 arch/risc-v/src/mpfs/chip.h create mode 100755 arch/risc-v/src/mpfs/hardware/mpfs_clint.h create mode 100755 arch/risc-v/src/mpfs/hardware/mpfs_gpio.h create mode 100755 arch/risc-v/src/mpfs/hardware/mpfs_memorymap.h create mode 100755 arch/risc-v/src/mpfs/hardware/mpfs_plic.h create mode 100755 arch/risc-v/src/mpfs/hardware/mpfs_sysctl.h create mode 100755 arch/risc-v/src/mpfs/hardware/mpfs_uart.h create mode 100755 arch/risc-v/src/mpfs/mpfs.h create mode 100755 arch/risc-v/src/mpfs/mpfs_allocateheap.c create mode 100755 arch/risc-v/src/mpfs/mpfs_clockconfig.c create mode 100755 arch/risc-v/src/mpfs/mpfs_clockconfig.h create mode 100755 arch/risc-v/src/mpfs/mpfs_config.h create mode 100644 arch/risc-v/src/mpfs/mpfs_gpio.c create mode 100644 arch/risc-v/src/mpfs/mpfs_gpio.h create mode 100755 arch/risc-v/src/mpfs/mpfs_head.S create mode 100755 arch/risc-v/src/mpfs/mpfs_idle.c create mode 100755 arch/risc-v/src/mpfs/mpfs_irq.c create mode 100755 arch/risc-v/src/mpfs/mpfs_irq_dispatch.c create mode 100755 arch/risc-v/src/mpfs/mpfs_lowputc.c create mode 100755 arch/risc-v/src/mpfs/mpfs_lowputc.h create mode 100755 arch/risc-v/src/mpfs/mpfs_memorymap.h create mode 100755 arch/risc-v/src/mpfs/mpfs_serial.c create mode 100755 arch/risc-v/src/mpfs/mpfs_start.c create mode 100755 arch/risc-v/src/mpfs/mpfs_timerisr.c create mode 100755 arch/risc-v/src/mpfs/mpfs_userspace.c create mode 100755 arch/risc-v/src/mpfs/mpfs_userspace.h create mode 100755 arch/risc-v/src/mpfs/mpfs_vectors.S create mode 100755 boards/risc-v/mpfs/icicle/Kconfig create mode 100644 boards/risc-v/mpfs/icicle/configs/nsh/defconfig create mode 100755 boards/risc-v/mpfs/icicle/include/board.h create mode 100755 boards/risc-v/mpfs/icicle/kernel/Makefile create mode 100755 boards/risc-v/mpfs/icicle/kernel/mpfs_userspace.c create mode 100755 boards/risc-v/mpfs/icicle/scripts/Make.defs create mode 100755 boards/risc-v/mpfs/icicle/scripts/gnu-elf.ld create mode 100644 boards/risc-v/mpfs/icicle/scripts/hss-nuttx.yml create mode 100755 boards/risc-v/mpfs/icicle/scripts/ld.script create mode 100755 boards/risc-v/mpfs/icicle/scripts/memory.ld create mode 100755 boards/risc-v/mpfs/icicle/scripts/user-space.ld create mode 100755 boards/risc-v/mpfs/icicle/src/Makefile create mode 100755 boards/risc-v/mpfs/icicle/src/mpfs_appinit.c create mode 100755 boards/risc-v/mpfs/icicle/src/mpfs_autoleds.c create mode 100755 boards/risc-v/mpfs/icicle/src/mpfs_boot.c create mode 100755 boards/risc-v/mpfs/icicle/src/mpfs_bringup.c create mode 100755 boards/risc-v/mpfs/icicle/src/mpfs_ostest.c create mode 100755 boards/risc-v/mpfs/icicle/src/mpfsicicle.h diff --git a/arch/risc-v/Kconfig b/arch/risc-v/Kconfig index 074827444e2..8adee3a09e8 100644 --- a/arch/risc-v/Kconfig +++ b/arch/risc-v/Kconfig @@ -60,6 +60,13 @@ config ARCH_CHIP_C906 ---help--- THEAD C906 processor (RISC-V 64bit core with GCVX extensions). +config ARCH_CHIP_MPFS + bool "MicroChip Polarfire (MPFS)" + select ARCH_RV64GC + select ARCH_HAVE_MPU + ---help--- + MicroChip Polarfire processor (RISC-V 64bit core with GCVX extensions). + config ARCH_CHIP_RISCV_CUSTOM bool "Custom RISC-V chip" select ARCH_CHIP_CUSTOM @@ -97,6 +104,7 @@ config ARCH_CHIP default "bl602" if ARCH_CHIP_BL602 default "esp32c3" if ARCH_CHIP_ESP32C3 default "c906" if ARCH_CHIP_C906 + default "mpfs" if ARCH_CHIP_MPFS if ARCH_RV32IM source arch/risc-v/src/rv32im/Kconfig @@ -122,4 +130,7 @@ endif if ARCH_CHIP_C906 source arch/risc-v/src/c906/Kconfig endif +if ARCH_CHIP_MPFS +source arch/risc-v/src/mpfs/Kconfig +endif endif diff --git a/arch/risc-v/include/mpfs/chip.h b/arch/risc-v/include/mpfs/chip.h new file mode 100755 index 00000000000..0efd02220d0 --- /dev/null +++ b/arch/risc-v/include/mpfs/chip.h @@ -0,0 +1,34 @@ +/**************************************************************************** + * arch/risc-v/include/mpfs/chip.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_INCLUDE_MPFS_CHIP_H +#define __ARCH_RISCV_INCLUDE_MPFS_CHIP_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include +#include + +#include + +#endif /* __ARCH_RISCV_INCLUDE_MPFS_CHIP_H */ diff --git a/arch/risc-v/include/mpfs/irq.h b/arch/risc-v/include/mpfs/irq.h new file mode 100755 index 00000000000..89c78785a30 --- /dev/null +++ b/arch/risc-v/include/mpfs/irq.h @@ -0,0 +1,340 @@ +/**************************************************************************** + * arch/risc-v/include/mpfs/irq.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_INCLUDE_MPFS_IRQ_H +#define __ARCH_RISCV_INCLUDE_MPFS_IRQ_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Map RISC-V exception code to NuttX IRQ */ + +/* IRQ 0-15 : (exception:interrupt=0) */ + +#define MPFS_IRQ_IAMISALIGNED (0) /* Instruction Address Misaligned */ +#define MPFS_IRQ_IAFAULT (1) /* Instruction Address Fault */ +#define MPFS_IRQ_IINSTRUCTION (2) /* Illegal Instruction */ +#define MPFS_IRQ_BPOINT (3) /* Break Point */ +#define MPFS_IRQ_LAMISALIGNED (4) /* Load Address Misaligned */ +#define MPFS_IRQ_LAFAULT (5) /* Load Access Fault */ +#define MPFS_IRQ_SAMISALIGNED (6) /* Store/AMO Address Misaligned */ +#define MPFS_IRQ_SAFAULT (7) /* Store/AMO Access Fault */ +#define MPFS_IRQ_ECALLU (8) /* Environment Call from U-mode */ +#define MPFS_IRQ_ECALLS (9) /* Environment Call from S-mode */ +#define MPFS_IRQ_ECALLH (10) /* Environment Call from H-mode */ +#define MPFS_IRQ_ECALLM (11) /* Environment Call from M-mode */ +#define MPFS_IRQ_INSTRUCTIONPF (12) /* Instruction page fault */ +#define MPFS_IRQ_LOADPF (13) /* Load page fault */ +#define MPFS_IRQ_RESERVED (14) /* Reserved */ +#define MPFS_IRQ_SROREPF (15) /* Store/AMO page fault */ + +/* IRQ 16- : (async event:interrupt=1) */ + +#define MPFS_IRQ_ASYNC (16) +#define MPFS_IRQ_SSOFT (MPFS_IRQ_ASYNC + 1) /* Supervisor Software Int */ +#define MPFS_IRQ_MSOFT (MPFS_IRQ_ASYNC + 3) /* Machine Software Int */ +#define MPFS_IRQ_STIMER (MPFS_IRQ_ASYNC + 5) /* Supervisor Timer Int */ +#define MPFS_IRQ_MTIMER (MPFS_IRQ_ASYNC + 7) /* Machine Timer Int */ +#define MPFS_IRQ_SEXT (MPFS_IRQ_ASYNC + 9) /* Supervisor External Int */ +#define MPFS_IRQ_MEXT (MPFS_IRQ_ASYNC + 11) /* Machine External Int */ + +/* IRQ 32-79 : 47 Local interrupts. */ + +#define MPFS_IRQ_LOCAL_START (MPFS_IRQ_ASYNC + 16) +#define MPFS_IRQ_LOCAL_0 (MPFS_IRQ_LOCAL_START + 0) /* Local 0 spare */ +#define MPFS_IRQ_LOCAL_1 (MPFS_IRQ_LOCAL_START + 1) /* Local 1 spare */ +#define MPFS_IRQ_LOCAL_2 (MPFS_IRQ_LOCAL_START + 2) /* Local 2 spare */ +#define MPFS_IRQ_LOCAL_U54_MAC_MMSL (MPFS_IRQ_LOCAL_START + 3) /* check hartid for mac source */ +#define MPFS_IRQ_LOCAL_U54_MAC_EMAC (MPFS_IRQ_LOCAL_START + 4) +#define MPFS_IRQ_LOCAL_U54_MAC_QUE3 (MPFS_IRQ_LOCAL_START + 5) +#define MPFS_IRQ_LOCAL_U54_MAC_QUE2 (MPFS_IRQ_LOCAL_START + 6) +#define MPFS_IRQ_LOCAL_U54_MAC_QUE1 (MPFS_IRQ_LOCAL_START + 7) +#define MPFS_IRQ_LOCAL_U54_MAC_INT (MPFS_IRQ_LOCAL_START + 8) +#define MPFS_IRQ_LOCAL_U54_WDOG_TOUT (MPFS_IRQ_LOCAL_START + 9) /* check hartid for wdog source */ +#define MPFS_IRQ_LOCAL_U54_MVRP (MPFS_IRQ_LOCAL_START + 10) +#define MPFS_IRQ_LOCAL_E51_MMUART0 (MPFS_IRQ_LOCAL_START + 11) +#define MPFS_IRQ_LOCAL_U54_H1_MMUART1 (MPFS_IRQ_LOCAL_START + 11) +#define MPFS_IRQ_LOCAL_U54_H2_MMUART2 (MPFS_IRQ_LOCAL_START + 11) +#define MPFS_IRQ_LOCAL_U54_H3_MMUART3 (MPFS_IRQ_LOCAL_START + 11) +#define MPFS_IRQ_LOCAL_U54_H4_MMUART4 (MPFS_IRQ_LOCAL_START + 11) +#define MPFS_IRQ_LOCAL_12 (MPFS_IRQ_LOCAL_START + 12) /* Local 12 spare */ +#define MPFS_IRQ_LOCAL_13 (MPFS_IRQ_LOCAL_START + 13) /* Local 13 spare */ +#define MPFS_IRQ_LOCAL_14 (MPFS_IRQ_LOCAL_START + 14) /* Local 14 spare */ +#define MPFS_IRQ_LOCAL_15 (MPFS_IRQ_LOCAL_START + 15) /* Local 15 spare */ +#define MPFS_IRQ_LOCAL_U54_F2H_0 (MPFS_IRQ_LOCAL_START + 16) /* Fabric 0 */ +#define MPFS_IRQ_LOCAL_U54_F2H_1 (MPFS_IRQ_LOCAL_START + 17) /* Fabric 1 */ +#define MPFS_IRQ_LOCAL_U54_F2H_2 (MPFS_IRQ_LOCAL_START + 18) /* Fabric 2 */ +#define MPFS_IRQ_LOCAL_U54_F2H_3 (MPFS_IRQ_LOCAL_START + 19) /* Fabric 3 */ +#define MPFS_IRQ_LOCAL_U54_F2H_4 (MPFS_IRQ_LOCAL_START + 20) /* Fabric 4 */ +#define MPFS_IRQ_LOCAL_U54_F2H_5 (MPFS_IRQ_LOCAL_START + 21) /* Fabric 5 */ +#define MPFS_IRQ_LOCAL_U54_F2H_6 (MPFS_IRQ_LOCAL_START + 22) /* Fabric 6 */ +#define MPFS_IRQ_LOCAL_U54_F2H_7 (MPFS_IRQ_LOCAL_START + 23) /* Fabric 7 */ +#define MPFS_IRQ_LOCAL_U54_F2H_8 (MPFS_IRQ_LOCAL_START + 24) /* Fabric 8 */ +#define MPFS_IRQ_LOCAL_U54_F2H_9 (MPFS_IRQ_LOCAL_START + 25) /* Fabric 9 */ +#define MPFS_IRQ_LOCAL_U54_F2H_10 (MPFS_IRQ_LOCAL_START + 26) /* Fabric 10 */ +#define MPFS_IRQ_LOCAL_U54_F2H_11 (MPFS_IRQ_LOCAL_START + 27) /* Fabric 11 */ +#define MPFS_IRQ_LOCAL_U54_F2H_12 (MPFS_IRQ_LOCAL_START + 28) /* Fabric 12 */ +#define MPFS_IRQ_LOCAL_U54_F2H_13 (MPFS_IRQ_LOCAL_START + 29) /* Fabric 13 */ +#define MPFS_IRQ_LOCAL_U54_F2H_14 (MPFS_IRQ_LOCAL_START + 30) /* Fabric 14 */ +#define MPFS_IRQ_LOCAL_U54_F2H_15 (MPFS_IRQ_LOCAL_START + 31) /* Fabric 15 */ +#define MPFS_IRQ_LOCAL_U54_F2H_16 (MPFS_IRQ_LOCAL_START + 32) /* Fabric 16 */ +#define MPFS_IRQ_LOCAL_U54_F2H_17 (MPFS_IRQ_LOCAL_START + 33) /* Fabric 17 */ +#define MPFS_IRQ_LOCAL_U54_F2H_18 (MPFS_IRQ_LOCAL_START + 34) /* Fabric 18 */ +#define MPFS_IRQ_LOCAL_U54_F2H_19 (MPFS_IRQ_LOCAL_START + 35) /* Fabric 19 */ +#define MPFS_IRQ_LOCAL_U54_F2H_20 (MPFS_IRQ_LOCAL_START + 36) /* Fabric 20 */ +#define MPFS_IRQ_LOCAL_U54_F2H_21 (MPFS_IRQ_LOCAL_START + 37) /* Fabric 21 */ +#define MPFS_IRQ_LOCAL_U54_F2H_22 (MPFS_IRQ_LOCAL_START + 38) /* Fabric 22 */ +#define MPFS_IRQ_LOCAL_U54_F2H_23 (MPFS_IRQ_LOCAL_START + 39) /* Fabric 23 */ +#define MPFS_IRQ_LOCAL_U54_F2H_24 (MPFS_IRQ_LOCAL_START + 40) /* Fabric 24 */ +#define MPFS_IRQ_LOCAL_U54_F2H_25 (MPFS_IRQ_LOCAL_START + 41) /* Fabric 25 */ +#define MPFS_IRQ_LOCAL_U54_F2H_26 (MPFS_IRQ_LOCAL_START + 42) /* Fabric 26 */ +#define MPFS_IRQ_LOCAL_U54_F2H_27 (MPFS_IRQ_LOCAL_START + 43) /* Fabric 27 */ +#define MPFS_IRQ_LOCAL_U54_F2H_28 (MPFS_IRQ_LOCAL_START + 44) /* Fabric 28 */ +#define MPFS_IRQ_LOCAL_U54_F2H_29 (MPFS_IRQ_LOCAL_START + 45) /* Fabric 29 */ +#define MPFS_IRQ_LOCAL_U54_F2H_30 (MPFS_IRQ_LOCAL_START + 46) /* Fabric 30 */ +#define MPFS_IRQ_LOCAL_U54_F2H_31 (MPFS_IRQ_LOCAL_START + 47) /* Fabric 31 */ + +/* External Interrupts. if irq is MPFS_IRQ_MEXT or MPFS_IRQ_SEXT */ + +#define MPFS_IRQ_EXT_START (MPFS_IRQ_ASYNC + 80U) +#define MPFS_IRQ_INVALID (MPFS_IRQ_EXT_START + 0) +#define MPFS_IRQ_L2_METADATA_CORR (MPFS_IRQ_EXT_START + 1) +#define MPFS_IRQ_L2_METADATA_UNCORR (MPFS_IRQ_EXT_START + 2) +#define MPFS_IRQ_L2_DATA_CORR (MPFS_IRQ_EXT_START + 3) +#define MPFS_IRQ_L2_DATA_UNCORR (MPFS_IRQ_EXT_START + 4) +#define MPFS_IRQ_DMA_CH0_DONE (MPFS_IRQ_EXT_START + 5) +#define MPFS_IRQ_DMA_CH0_ERR (MPFS_IRQ_EXT_START + 6) +#define MPFS_IRQ_DMA_CH1_DONE (MPFS_IRQ_EXT_START + 7) +#define MPFS_IRQ_DMA_CH1_ERR (MPFS_IRQ_EXT_START + 8) +#define MPFS_IRQ_DMA_CH2_DONE (MPFS_IRQ_EXT_START + 9) +#define MPFS_IRQ_DMA_CH2_ERR (MPFS_IRQ_EXT_START + 10) +#define MPFS_IRQ_DMA_CH3_DONE (MPFS_IRQ_EXT_START + 11) +#define MPFS_IRQ_DMA_CH3_ERR (MPFS_IRQ_EXT_START + 12) + +/* Global Interrupts */ + +#define OFFSET_TO_MSS_GLOBAL_INTS (13U) +#define MPFS_IRQ_GLOBAL_START (MPFS_IRQ_EXT_START + OFFSET_TO_MSS_GLOBAL_INTS) +#define MPFS_IRQ_GPIO02_BIT0 (MPFS_IRQ_GLOBAL_START + 0) +#define MPFS_IRQ_GPIO02_BIT1 (MPFS_IRQ_GLOBAL_START + 1) +#define MPFS_IRQ_GPIO02_BIT2 (MPFS_IRQ_GLOBAL_START + 2) +#define MPFS_IRQ_GPIO02_BIT3 (MPFS_IRQ_GLOBAL_START + 3) +#define MPFS_IRQ_GPIO02_BIT4 (MPFS_IRQ_GLOBAL_START + 4) +#define MPFS_IRQ_GPIO02_BIT5 (MPFS_IRQ_GLOBAL_START + 5) +#define MPFS_IRQ_GPIO02_BIT6 (MPFS_IRQ_GLOBAL_START + 6) +#define MPFS_IRQ_GPIO02_BIT7 (MPFS_IRQ_GLOBAL_START + 7) +#define MPFS_IRQ_GPIO02_BIT8 (MPFS_IRQ_GLOBAL_START + 8) +#define MPFS_IRQ_GPIO02_BIT9 (MPFS_IRQ_GLOBAL_START + 9) +#define MPFS_IRQ_GPIO02_BIT10 (MPFS_IRQ_GLOBAL_START + 10) +#define MPFS_IRQ_GPIO02_BIT11 (MPFS_IRQ_GLOBAL_START + 11) +#define MPFS_IRQ_GPIO02_BIT12 (MPFS_IRQ_GLOBAL_START + 12) +#define MPFS_IRQ_GPIO02_BIT13 (MPFS_IRQ_GLOBAL_START + 13) +#define MPFS_IRQ_GPIO1_BIT0_OR_GPIO2_BIT14 (MPFS_IRQ_GLOBAL_START + 14) +#define MPFS_IRQ_GPIO1_BIT1_OR_GPIO2_BIT15 (MPFS_IRQ_GLOBAL_START + 15) +#define MPFS_IRQ_GPIO1_BIT2_OR_GPIO2_BIT16 (MPFS_IRQ_GLOBAL_START + 16) +#define MPFS_IRQ_GPIO1_BIT3_OR_GPIO2_BIT17 (MPFS_IRQ_GLOBAL_START + 17) +#define MPFS_IRQ_GPIO1_BIT4_OR_GPIO2_BIT18 (MPFS_IRQ_GLOBAL_START + 18) +#define MPFS_IRQ_GPIO1_BIT5_OR_GPIO2_BIT19 (MPFS_IRQ_GLOBAL_START + 19) +#define MPFS_IRQ_GPIO1_BIT6_OR_GPIO2_BIT20 (MPFS_IRQ_GLOBAL_START + 20) +#define MPFS_IRQ_GPIO1_BIT7_OR_GPIO2_BIT21 (MPFS_IRQ_GLOBAL_START + 21) +#define MPFS_IRQ_GPIO1_BIT8_OR_GPIO2_BIT22 (MPFS_IRQ_GLOBAL_START + 22) +#define MPFS_IRQ_GPIO1_BIT9_OR_GPIO2_BIT23 (MPFS_IRQ_GLOBAL_START + 23) +#define MPFS_IRQ_GPIO1_BIT10_OR_GPIO2_BIT24 (MPFS_IRQ_GLOBAL_START + 24) +#define MPFS_IRQ_GPIO1_BIT11_OR_GPIO2_BIT25 (MPFS_IRQ_GLOBAL_START + 25) +#define MPFS_IRQ_GPIO1_BIT12_OR_GPIO2_BIT26 (MPFS_IRQ_GLOBAL_START + 26) +#define MPFS_IRQ_GPIO1_BIT13_OR_GPIO2_BIT27 (MPFS_IRQ_GLOBAL_START + 27) +#define MPFS_IRQ_GPIO1_BIT14_OR_GPIO2_BIT28 (MPFS_IRQ_GLOBAL_START + 28) +#define MPFS_IRQ_GPIO1_BIT15_OR_GPIO2_BIT29 (MPFS_IRQ_GLOBAL_START + 29) +#define MPFS_IRQ_GPIO1_BIT16_OR_GPIO2_BIT30 (MPFS_IRQ_GLOBAL_START + 30) +#define MPFS_IRQ_GPIO1_BIT17_OR_GPIO2_BIT31 (MPFS_IRQ_GLOBAL_START + 31) +#define MPFS_IRQ_GPIO1_BIT18 (MPFS_IRQ_GLOBAL_START + 32) +#define MPFS_IRQ_GPIO1_BIT19 (MPFS_IRQ_GLOBAL_START + 33) +#define MPFS_IRQ_GPIO1_BIT20 (MPFS_IRQ_GLOBAL_START + 34) +#define MPFS_IRQ_GPIO1_BIT21 (MPFS_IRQ_GLOBAL_START + 35) +#define MPFS_IRQ_GPIO1_BIT22 (MPFS_IRQ_GLOBAL_START + 36) +#define MPFS_IRQ_GPIO1_BIT23 (MPFS_IRQ_GLOBAL_START + 37) +#define MPFS_IRQ_GPIO0_NON_DIRECT (MPFS_IRQ_GLOBAL_START + 38) +#define MPFS_IRQ_GPIO1_NON_DIRECT (MPFS_IRQ_GLOBAL_START + 39) +#define MPFS_IRQ_GPIO2_NON_DIRECT (MPFS_IRQ_GLOBAL_START + 40) +#define MPFS_IRQ_SPI0 (MPFS_IRQ_GLOBAL_START + 41) +#define MPFS_IRQ_SPI1 (MPFS_IRQ_GLOBAL_START + 42) +#define MPFS_IRQ_CAN0 (MPFS_IRQ_GLOBAL_START + 43) +#define MPFS_IRQ_CAN1 (MPFS_IRQ_GLOBAL_START + 44) +#define MPFS_IRQ_I2C0_MAIN (MPFS_IRQ_GLOBAL_START + 45) +#define MPFS_IRQ_I2C0_ALERT (MPFS_IRQ_GLOBAL_START + 46) +#define MPFS_IRQ_I2C0_SUS (MPFS_IRQ_GLOBAL_START + 47) +#define MPFS_IRQ_I2C1_MAIN (MPFS_IRQ_GLOBAL_START + 48) +#define MPFS_IRQ_I2C1_ALERT (MPFS_IRQ_GLOBAL_START + 49) +#define MPFS_IRQ_I2C1_SUS (MPFS_IRQ_GLOBAL_START + 50) +#define MPFS_IRQ_MAC0_INT (MPFS_IRQ_GLOBAL_START + 51) +#define MPFS_IRQ_MAC0_QUEUE1 (MPFS_IRQ_GLOBAL_START + 52) +#define MPFS_IRQ_MAC0_QUEUE2 (MPFS_IRQ_GLOBAL_START + 53) +#define MPFS_IRQ_MAC0_QUEUE3 (MPFS_IRQ_GLOBAL_START + 54) +#define MPFS_IRQ_MAC0_EMAC (MPFS_IRQ_GLOBAL_START + 55) +#define MPFS_IRQ_MAC0_MMSL (MPFS_IRQ_GLOBAL_START + 56) +#define MPFS_IRQ_MAC1_INT (MPFS_IRQ_GLOBAL_START + 57) +#define MPFS_IRQ_MAC1_QUEUE1 (MPFS_IRQ_GLOBAL_START + 58) +#define MPFS_IRQ_MAC1_QUEUE2 (MPFS_IRQ_GLOBAL_START + 59) +#define MPFS_IRQ_MAC1_QUEUE3 (MPFS_IRQ_GLOBAL_START + 60) +#define MPFS_IRQ_MAC1_EMAC (MPFS_IRQ_GLOBAL_START + 61) +#define MPFS_IRQ_MAC1_MMSL (MPFS_IRQ_GLOBAL_START + 62) +#define MPFS_IRQ_DDRC_TRAIN (MPFS_IRQ_GLOBAL_START + 63) +#define MPFS_IRQ_SCB_INTERRUPT (MPFS_IRQ_GLOBAL_START + 64) +#define MPFS_IRQ_ECC_ERROR (MPFS_IRQ_GLOBAL_START + 65) +#define MPFS_IRQ_ECC_CORRECT (MPFS_IRQ_GLOBAL_START + 66) +#define MPFS_IRQ_RTC_WAKEUP (MPFS_IRQ_GLOBAL_START + 67) +#define MPFS_IRQ_RTC_MATCH (MPFS_IRQ_GLOBAL_START + 68) +#define MPFS_IRQ_TIMER1 (MPFS_IRQ_GLOBAL_START + 69) +#define MPFS_IRQ_TIMER2 (MPFS_IRQ_GLOBAL_START + 70) +#define MPFS_IRQ_ENVM (MPFS_IRQ_GLOBAL_START + 71) +#define MPFS_IRQ_QSPI (MPFS_IRQ_GLOBAL_START + 72) +#define MPFS_IRQ_USB_DMA (MPFS_IRQ_GLOBAL_START + 73) +#define MPFS_IRQ_USB_MC (MPFS_IRQ_GLOBAL_START + 74) +#define MPFS_IRQ_MMC_MAIN (MPFS_IRQ_GLOBAL_START + 75) +#define MPFS_IRQ_MMC_WAKEUP (MPFS_IRQ_GLOBAL_START + 76) +#define MPFS_IRQ_MMUART0 (MPFS_IRQ_GLOBAL_START + 77) +#define MPFS_IRQ_MMUART1 (MPFS_IRQ_GLOBAL_START + 78) +#define MPFS_IRQ_MMUART2 (MPFS_IRQ_GLOBAL_START + 79) +#define MPFS_IRQ_MMUART3 (MPFS_IRQ_GLOBAL_START + 80) +#define MPFS_IRQ_MMUART4 (MPFS_IRQ_GLOBAL_START + 81) +#define MPFS_IRQ_WDOG0_MRVP (MPFS_IRQ_GLOBAL_START + 87) +#define MPFS_IRQ_WDOG1_MRVP (MPFS_IRQ_GLOBAL_START + 88) +#define MPFS_IRQ_WDOG2_MRVP (MPFS_IRQ_GLOBAL_START + 89) +#define MPFS_IRQ_WDOG3_MRVP (MPFS_IRQ_GLOBAL_START + 90) +#define MPFS_IRQ_WDOG4_MRVP (MPFS_IRQ_GLOBAL_START + 91) +#define MPFS_IRQ_WDOG0_TOUT (MPFS_IRQ_GLOBAL_START + 92) +#define MPFS_IRQ_WDOG1_TOUT (MPFS_IRQ_GLOBAL_START + 93) +#define MPFS_IRQ_WDOG2_TOUT (MPFS_IRQ_GLOBAL_START + 94) +#define MPFS_IRQ_WDOG3_TOUT (MPFS_IRQ_GLOBAL_START + 95) +#define MPFS_IRQ_WDOG4_TOUT (MPFS_IRQ_GLOBAL_START + 96) +#define MPFS_IRQ_FABRIC_F2H_0 (MPFS_IRQ_GLOBAL_START + 105) +#define MPFS_IRQ_FABRIC_F2H_1 (MPFS_IRQ_GLOBAL_START + 106) +#define MPFS_IRQ_FABRIC_F2H_2 (MPFS_IRQ_GLOBAL_START + 107) +#define MPFS_IRQ_FABRIC_F2H_3 (MPFS_IRQ_GLOBAL_START + 108) +#define MPFS_IRQ_FABRIC_F2H_4 (MPFS_IRQ_GLOBAL_START + 109) +#define MPFS_IRQ_FABRIC_F2H_5 (MPFS_IRQ_GLOBAL_START + 110) +#define MPFS_IRQ_FABRIC_F2H_6 (MPFS_IRQ_GLOBAL_START + 111) +#define MPFS_IRQ_FABRIC_F2H_7 (MPFS_IRQ_GLOBAL_START + 112) +#define MPFS_IRQ_FABRIC_F2H_8 (MPFS_IRQ_GLOBAL_START + 113) +#define MPFS_IRQ_FABRIC_F2H_9 (MPFS_IRQ_GLOBAL_START + 114) +#define MPFS_IRQ_FABRIC_F2H_10 (MPFS_IRQ_GLOBAL_START + 115) +#define MPFS_IRQ_FABRIC_F2H_11 (MPFS_IRQ_GLOBAL_START + 116) +#define MPFS_IRQ_FABRIC_F2H_12 (MPFS_IRQ_GLOBAL_START + 117) +#define MPFS_IRQ_FABRIC_F2H_13 (MPFS_IRQ_GLOBAL_START + 118) +#define MPFS_IRQ_FABRIC_F2H_14 (MPFS_IRQ_GLOBAL_START + 119) +#define MPFS_IRQ_FABRIC_F2H_15 (MPFS_IRQ_GLOBAL_START + 120) +#define MPFS_IRQ_FABRIC_F2H_16 (MPFS_IRQ_GLOBAL_START + 121) +#define MPFS_IRQ_FABRIC_F2H_17 (MPFS_IRQ_GLOBAL_START + 122) +#define MPFS_IRQ_FABRIC_F2H_18 (MPFS_IRQ_GLOBAL_START + 123) +#define MPFS_IRQ_FABRIC_F2H_19 (MPFS_IRQ_GLOBAL_START + 124) +#define MPFS_IRQ_FABRIC_F2H_20 (MPFS_IRQ_GLOBAL_START + 125) +#define MPFS_IRQ_FABRIC_F2H_21 (MPFS_IRQ_GLOBAL_START + 126) +#define MPFS_IRQ_FABRIC_F2H_22 (MPFS_IRQ_GLOBAL_START + 127) +#define MPFS_IRQ_FABRIC_F2H_23 (MPFS_IRQ_GLOBAL_START + 128) +#define MPFS_IRQ_FABRIC_F2H_24 (MPFS_IRQ_GLOBAL_START + 129) +#define MPFS_IRQ_FABRIC_F2H_25 (MPFS_IRQ_GLOBAL_START + 130) +#define MPFS_IRQ_FABRIC_F2H_26 (MPFS_IRQ_GLOBAL_START + 131) +#define MPFS_IRQ_FABRIC_F2H_27 (MPFS_IRQ_GLOBAL_START + 132) +#define MPFS_IRQ_FABRIC_F2H_28 (MPFS_IRQ_GLOBAL_START + 133) +#define MPFS_IRQ_FABRIC_F2H_29 (MPFS_IRQ_GLOBAL_START + 134) +#define MPFS_IRQ_FABRIC_F2H_30 (MPFS_IRQ_GLOBAL_START + 135) +#define MPFS_IRQ_FABRIC_F2H_31 (MPFS_IRQ_GLOBAL_START + 136) +#define MPFS_IRQ_FABRIC_F2H_32 (MPFS_IRQ_GLOBAL_START + 137) +#define MPFS_IRQ_FABRIC_F2H_33 (MPFS_IRQ_GLOBAL_START + 138) +#define MPFS_IRQ_FABRIC_F2H_34 (MPFS_IRQ_GLOBAL_START + 139) +#define MPFS_IRQ_FABRIC_F2H_35 (MPFS_IRQ_GLOBAL_START + 140) +#define MPFS_IRQ_FABRIC_F2H_36 (MPFS_IRQ_GLOBAL_START + 141) +#define MPFS_IRQ_FABRIC_F2H_37 (MPFS_IRQ_GLOBAL_START + 142) +#define MPFS_IRQ_FABRIC_F2H_38 (MPFS_IRQ_GLOBAL_START + 143) +#define MPFS_IRQ_FABRIC_F2H_39 (MPFS_IRQ_GLOBAL_START + 144) +#define MPFS_IRQ_FABRIC_F2H_40 (MPFS_IRQ_GLOBAL_START + 145) +#define MPFS_IRQ_FABRIC_F2H_41 (MPFS_IRQ_GLOBAL_START + 146) +#define MPFS_IRQ_FABRIC_F2H_42 (MPFS_IRQ_GLOBAL_START + 147) +#define MPFS_IRQ_FABRIC_F2H_43 (MPFS_IRQ_GLOBAL_START + 148) +#define MPFS_IRQ_FABRIC_F2H_44 (MPFS_IRQ_GLOBAL_START + 149) +#define MPFS_IRQ_FABRIC_F2H_45 (MPFS_IRQ_GLOBAL_START + 150) +#define MPFS_IRQ_FABRIC_F2H_46 (MPFS_IRQ_GLOBAL_START + 151) +#define MPFS_IRQ_FABRIC_F2H_47 (MPFS_IRQ_GLOBAL_START + 152) +#define MPFS_IRQ_FABRIC_F2H_48 (MPFS_IRQ_GLOBAL_START + 153) +#define MPFS_IRQ_FABRIC_F2H_49 (MPFS_IRQ_GLOBAL_START + 154) +#define MPFS_IRQ_FABRIC_F2H_50 (MPFS_IRQ_GLOBAL_START + 155) +#define MPFS_IRQ_FABRIC_F2H_51 (MPFS_IRQ_GLOBAL_START + 156) +#define MPFS_IRQ_FABRIC_F2H_52 (MPFS_IRQ_GLOBAL_START + 157) +#define MPFS_IRQ_FABRIC_F2H_53 (MPFS_IRQ_GLOBAL_START + 158) +#define MPFS_IRQ_FABRIC_F2H_54 (MPFS_IRQ_GLOBAL_START + 159) +#define MPFS_IRQ_FABRIC_F2H_55 (MPFS_IRQ_GLOBAL_START + 160) +#define MPFS_IRQ_FABRIC_F2H_56 (MPFS_IRQ_GLOBAL_START + 161) +#define MPFS_IRQ_FABRIC_F2H_57 (MPFS_IRQ_GLOBAL_START + 162) +#define MPFS_IRQ_FABRIC_F2H_58 (MPFS_IRQ_GLOBAL_START + 163) +#define MPFS_IRQ_FABRIC_F2H_59 (MPFS_IRQ_GLOBAL_START + 164) +#define MPFS_IRQ_FABRIC_F2H_60 (MPFS_IRQ_GLOBAL_START + 165) +#define MPFS_IRQ_FABRIC_F2H_61 (MPFS_IRQ_GLOBAL_START + 166) +#define MPFS_IRQ_FABRIC_F2H_62 (MPFS_IRQ_GLOBAL_START + 167) +#define MPFS_IRQ_FABRIC_F2H_63 (MPFS_IRQ_GLOBAL_START + 168) +#define MPFS_IRQ_BUS_ERROR_UNIT_HART_0 (MPFS_IRQ_GLOBAL_START + 169) +#define MPFS_IRQ_BUS_ERROR_UNIT_HART_1 (MPFS_IRQ_GLOBAL_START + 170) +#define MPFS_IRQ_BUS_ERROR_UNIT_HART_2 (MPFS_IRQ_GLOBAL_START + 171) +#define MPFS_IRQ_BUS_ERROR_UNIT_HART_3 (MPFS_IRQ_GLOBAL_START + 172) +#define MPFS_IRQ_BUS_ERROR_UNIT_HART_4 (MPFS_IRQ_GLOBAL_START + 173) + +/* Total number of IRQs */ + +#define NR_IRQS (MPFS_IRQ_BUS_ERROR_UNIT_HART_4 + 1) + +/**************************************************************************** + * Public Types + ****************************************************************************/ + +#ifndef __ASSEMBLY__ + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +#undef EXTERN +#if defined(__cplusplus) +#define EXTERN extern "C" +extern "C" +{ +#else +#define EXTERN extern +#endif + +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ + +EXTERN irqstate_t up_irq_save(void); +EXTERN void up_irq_restore(irqstate_t); +EXTERN irqstate_t up_irq_enable(void); + +#undef EXTERN +#if defined(__cplusplus) +} +#endif +#endif /* __ASSEMBLY__ */ +#endif /* __ARCH_RISCV_INCLUDE_MPFS_IRQ_H */ diff --git a/arch/risc-v/src/mpfs/Kconfig b/arch/risc-v/src/mpfs/Kconfig new file mode 100755 index 00000000000..3531c9772ff --- /dev/null +++ b/arch/risc-v/src/mpfs/Kconfig @@ -0,0 +1,93 @@ +# +# For a description of the syntax of this configuration file, +# see the file kconfig-language.txt in the NuttX tools repository. +# + +comment "Polarfire Configuration Options" + +config MPFS_ENABLE_DPFPU + bool "MPFS DP_FPU Support" + default n + select ARCH_HAVE_FPU + select ARCH_HAVE_DPFPU + ---help--- + Enable the RISC-V Double-Precision Floating Point Unit (DP-FPU). + +menu "MPFS Peripheral Support" + +# These "hidden" settings determine whether a peripheral option is available +# for the selected MCU + +config MPFS_HAVE_UART0 + bool + default n + select UART0_SERIALDRIVER + select ARCH_HAVE_SERIAL_TERMIOS + +config MPFS_HAVE_UART1 + bool + default n + select UART1_SERIALDRIVER + select ARCH_HAVE_SERIAL_TERMIOS + +config MPFS_HAVE_UART2 + bool + default n + select UART2_SERIALDRIVER + select ARCH_HAVE_SERIAL_TERMIOS + +config MPFS_HAVE_UART3 + bool + default n + select UART3_SERIALDRIVER + select ARCH_HAVE_SERIAL_TERMIOS + +config MPFS_HAVE_UART4 + bool + default n + select UART4_SERIALDRIVER + select ARCH_HAVE_SERIAL_TERMIOS + +# These are the peripheral selections proper + +config MPFS_UART0 + bool "UART 0" + default n + select ARCH_HAVE_UART0 + select ARCH_HAVE_SERIAL_TERMIOS + select MPFS_HAVE_UART0 + +config MPFS_UART1 + bool "UART 1" + default n + select ARCH_HAVE_UART1 + select ARCH_HAVE_SERIAL_TERMIOS + select MPFS_HAVE_UART1 + +config MPFS_UART2 + bool "UART 2" + default n + select ARCH_HAVE_UART2 + select ARCH_HAVE_SERIAL_TERMIOS + select MPFS_HAVE_UART2 + +config MPFS_UART3 + bool "UART 3" + default n + select ARCH_HAVE_UART3 + select ARCH_HAVE_SERIAL_TERMIOS + select MPFS_HAVE_UART3 + +config MPFS_UART4 + bool "UART 4" + default n + select ARCH_HAVE_UART4 + select ARCH_HAVE_SERIAL_TERMIOS + select MPFS_HAVE_UART4 + +endmenu + +menu "MPFS Others" + + +endmenu diff --git a/arch/risc-v/src/mpfs/Make.defs b/arch/risc-v/src/mpfs/Make.defs new file mode 100755 index 00000000000..ec15c7482b5 --- /dev/null +++ b/arch/risc-v/src/mpfs/Make.defs @@ -0,0 +1,63 @@ +############################################################################ +# arch/risc-v/src/mpfs/Make.defs +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +############################################################################ + +# Specify our HEAD assembly file. This will be linked as +# the first object file, so it will appear at address 0 +HEAD_ASRC = mpfs_vectors.S + +# Specify our general Assembly files +CHIP_ASRCS = mpfs_head.S + +# Specify C code within the common directory to be included +CMN_CSRCS += riscv_initialize.c riscv_swint.c +CMN_CSRCS += riscv_createstack.c riscv_exit.c riscv_fault.c +CMN_CSRCS += riscv_assert.c riscv_blocktask.c riscv_copystate.c riscv_initialstate.c +CMN_CSRCS += riscv_interruptcontext.c riscv_modifyreg32.c riscv_puts.c +CMN_CSRCS += riscv_releasepending.c riscv_reprioritizertr.c +CMN_CSRCS += riscv_releasestack.c riscv_stackframe.c riscv_schedulesigaction.c +CMN_CSRCS += riscv_sigdeliver.c riscv_unblocktask.c riscv_usestack.c +CMN_CSRCS += riscv_mdelay.c riscv_copyfullstate.c + +ifeq ($(CONFIG_STACK_COLORATION),y) +CMN_CSRCS += riscv_checkstack.c +endif + +ifeq ($(CONFIG_ARCH_FPU),y) +CMN_ASRCS += riscv_fpu.S +endif + +ifeq ($(CONFIG_ARCH_HAVE_VFORK),y) +CMN_CSRCS += riscv_vfork.c +endif + +# Specify our C code within this directory to be included +CHIP_CSRCS = mpfs_allocateheap.c mpfs_clockconfig.c +CHIP_CSRCS += mpfs_idle.c mpfs_irq.c mpfs_irq_dispatch.c +CHIP_CSRCS += mpfs_lowputc.c mpfs_serial.c +CHIP_CSRCS += mpfs_start.c mpfs_timerisr.c +CHIP_CSRCS += mpfs_gpio.c + +ifeq ($(CONFIG_BUILD_PROTECTED),y) +CMN_CSRCS += riscv_task_start.c riscv_pthread_start.c +CMN_CSRCS += riscv_signal_dispatch.c riscv_pmp.c +CMN_UASRCS += riscv_signal_handler.S + +CHIP_CSRCS += mpfs_userspace.c +endif diff --git a/arch/risc-v/src/mpfs/chip.h b/arch/risc-v/src/mpfs/chip.h new file mode 100755 index 00000000000..960c76b8f23 --- /dev/null +++ b/arch/risc-v/src/mpfs/chip.h @@ -0,0 +1,32 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/chip.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_MPFS_CHIP_H +#define __ARCH_RISCV_SRC_MPFS_CHIP_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include "mpfs_memorymap.h" + +#endif /* __ARCH_RISCV_SRC_MPFS_CHIP_H */ diff --git a/arch/risc-v/src/mpfs/hardware/mpfs_clint.h b/arch/risc-v/src/mpfs/hardware/mpfs_clint.h new file mode 100755 index 00000000000..a15d8492679 --- /dev/null +++ b/arch/risc-v/src/mpfs/hardware/mpfs_clint.h @@ -0,0 +1,42 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/hardware/mpfs_clint.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_MPFS_HARDWARE_MPFS_CLINT_H +#define __ARCH_RISCV_SRC_MPFS_HARDWARE_MPFS_CLINT_H + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#define MPFS_CLINT_MSIP0 (MPFS_CLINT_BASE + 0x0000) +#define MPFS_CLINT_MSIP1 (MPFS_CLINT_BASE + 0x0004) +#define MPFS_CLINT_MSIP2 (MPFS_CLINT_BASE + 0x0008) +#define MPFS_CLINT_MSIP3 (MPFS_CLINT_BASE + 0x000C) +#define MPFS_CLINT_MSIP4 (MPFS_CLINT_BASE + 0x0010) + +#define MPFS_CLINT_MTIMECMP0 (MPFS_CLINT_BASE + 0x4000) +#define MPFS_CLINT_MTIMECMP1 (MPFS_CLINT_BASE + 0x4008) +#define MPFS_CLINT_MTIMECMP2 (MPFS_CLINT_BASE + 0x4010) +#define MPFS_CLINT_MTIMECMP3 (MPFS_CLINT_BASE + 0x4018) +#define MPFS_CLINT_MTIMECMP4 (MPFS_CLINT_BASE + 0x4020) + +#define MPFS_CLINT_MTIME (MPFS_CLINT_BASE + 0xbff8) + +#endif /* __ARCH_RISCV_SRC_MPFS_HARDWARE_MPFS_CLINT_H */ diff --git a/arch/risc-v/src/mpfs/hardware/mpfs_gpio.h b/arch/risc-v/src/mpfs/hardware/mpfs_gpio.h new file mode 100755 index 00000000000..6f40fcae9bb --- /dev/null +++ b/arch/risc-v/src/mpfs/hardware/mpfs_gpio.h @@ -0,0 +1,96 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/hardware/mpfs_gpio.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_MPFS_HARDWARE_MPFS_GPIO_H +#define __ARCH_RISCV_SRC_MPFS_HARDWARE_MPFS_GPIO_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include "hardware/mpfs_memorymap.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Register offsets *********************************************************/ + +#define MPFS_GPIO_CONFIG_0_OFFSET 0x0000 /* GPIO Config 0 */ +#define MPFS_GPIO_CONFIG_1_OFFSET 0x0004 /* GPIO Config 1 */ +#define MPFS_GPIO_CONFIG_2_OFFSET 0x0008 /* GPIO Config 2 */ +#define MPFS_GPIO_CONFIG_3_OFFSET 0x000C /* GPIO Config 3 */ +#define MPFS_GPIO_CONFIG_4_OFFSET 0x0010 /* GPIO Config 4 */ +#define MPFS_GPIO_CONFIG_5_OFFSET 0x0014 /* GPIO Config 5 */ +#define MPFS_GPIO_CONFIG_6_OFFSET 0x0018 /* GPIO Config 6 */ +#define MPFS_GPIO_CONFIG_7_OFFSET 0x001C /* GPIO Config 7 */ +#define MPFS_GPIO_CONFIG_8_OFFSET 0x0020 /* GPIO Config 8 */ +#define MPFS_GPIO_CONFIG_9_OFFSET 0x0024 /* GPIO Config 9 */ +#define MPFS_GPIO_CONFIG_10_OFFSET 0x0028 /* GPIO Config 10 */ +#define MPFS_GPIO_CONFIG_11_OFFSET 0x002C /* GPIO Config 11 */ +#define MPFS_GPIO_CONFIG_12_OFFSET 0x0020 /* GPIO Config 12 */ +#define MPFS_GPIO_CONFIG_13_OFFSET 0x0024 /* GPIO Config 13 */ +#define MPFS_GPIO_CONFIG_14_OFFSET 0x0028 /* GPIO Config 14 */ +#define MPFS_GPIO_CONFIG_15_OFFSET 0x002C /* GPIO Config 15 */ +#define MPFS_GPIO_CONFIG_16_OFFSET 0x0040 /* GPIO Config 16 */ +#define MPFS_GPIO_CONFIG_17_OFFSET 0x0044 /* GPIO Config 17 */ +#define MPFS_GPIO_CONFIG_18_OFFSET 0x0048 /* GPIO Config 18 */ +#define MPFS_GPIO_CONFIG_19_OFFSET 0x004C /* GPIO Config 19 */ +#define MPFS_GPIO_CONFIG_20_OFFSET 0x0050 /* GPIO Config 20 */ +#define MPFS_GPIO_CONFIG_21_OFFSET 0x0054 /* GPIO Config 21 */ +#define MPFS_GPIO_CONFIG_22_OFFSET 0x0058 /* GPIO Config 22 */ +#define MPFS_GPIO_CONFIG_23_OFFSET 0x005C /* GPIO Config 23 */ +#define MPFS_GPIO_CONFIG_24_OFFSET 0x0060 /* GPIO Config 24 */ +#define MPFS_GPIO_CONFIG_25_OFFSET 0x0064 /* GPIO Config 25 */ +#define MPFS_GPIO_CONFIG_26_OFFSET 0x0068 /* GPIO Config 26 */ +#define MPFS_GPIO_CONFIG_27_OFFSET 0x006C /* GPIO Config 27 */ +#define MPFS_GPIO_CONFIG_28_OFFSET 0x0070 /* GPIO Config 28 */ +#define MPFS_GPIO_CONFIG_29_OFFSET 0x0074 /* GPIO Config 29 */ +#define MPFS_GPIO_CONFIG_30_OFFSET 0x0078 /* GPIO Config 30 */ +#define MPFS_GPIO_CONFIG_31_OFFSET 0x007C /* GPIO Config 31 */ +#define MPFS_GPIO_INTR_OFFSET 0x0080 /* GPIO Irq state */ +#define MPFS_GPIO_GPIN_OFFSET 0x0084 /* GPIO Input states */ +#define MPFS_GPIO_GPOUT_OFFSET 0x0088 /* GPIO Ouput states */ +#define MPFS_GPIO_CONFIG_ALL_OFFSET 0x008C /* GPIO set all configs */ +#define MPFS_GPIO_CONFIG_BYTE0_OFFSET 0x0090 /* GPIO set all configs in byte-0 */ +#define MPFS_GPIO_CONFIG_BYTE1_OFFSET 0x0094 /* GPIO set all configs in byte-1 */ +#define MPFS_GPIO_CONFIG_BYTE2_OFFSET 0x0098 /* GPIO set all configs in byte-3 */ +#define MPFS_GPIO_CONFIG_BYTE3_OFFSET 0x009C /* GPIO set all configs in byte-4 */ +#define MPFS_GPIO_CLEAR_BITS_OFFSET 0x00A0 /* GPIO Clear bits */ +#define MPFS_GPIO_SET_BITS_OFFSET 0x00A4 /* GPIO Set bits */ + +/* Register bit field definitions *******************************************/ + +/* CONFIG_X */ + +#define GPIO_CONFIG_EN_OUT (1 << 0) /* Output enable */ +#define GPIO_CONFIG_EN_IN (1 << 1) /* Input enable */ +#define GPIO_CONFIG_EN_OE_BUF (1 << 2) /* Output buffer enable */ +#define GPIO_CONFIG_EN_INT (1 << 3) /* Interrupt enable */ +#define GPIO_CONFIG_INT_SHIFT (5) /* Bits: 5-7: Interrupt Types */ +#define GPIO_CONFIG_INT_MASK (7) +# define GPIO_CONFIG_INT_HIGH (0 << GPIO_CONFIG_INT_SHIFT) +# define GPIO_CONFIG_INT_LOW (1 << GPIO_CONFIG_INT_SHIFT) +# define GPIO_CONFIG_INT_EDGE_POS (2 << GPIO_CONFIG_INT_SHIFT) +# define GPIO_CONFIG_INT_EDGE_NEG (3 << GPIO_CONFIG_INT_SHIFT) +# define GPIO_CONFIG_INT_EDGE_BOTH (4 << GPIO_CONFIG_INT_SHIFT) + +#endif /* __ARCH_RISCV_SRC_MPFS_HARDWARE_MPFS_GPIO_H */ diff --git a/arch/risc-v/src/mpfs/hardware/mpfs_memorymap.h b/arch/risc-v/src/mpfs/hardware/mpfs_memorymap.h new file mode 100755 index 00000000000..4d07554114f --- /dev/null +++ b/arch/risc-v/src/mpfs/hardware/mpfs_memorymap.h @@ -0,0 +1,120 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/hardware/mpfs_memorymap.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_MPFS_HARDWARE_MPFS_MEMORYMAP_H +#define __ARCH_RISCV_SRC_MPFS_HARDWARE_MPFS_MEMORYMAP_H + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Register Base Address ****************************************************/ + +#define MPFS_PLIC_BASE (0x0C000000UL) +#define MPFS_CLINT_BASE (0x02000000UL) + +#define MPFS_UART0_LO_BASE (0x20000000UL) +#define MPFS_WDOG0_LO_BASE (0x20001000UL) +#define MPFS_SYSREG_BASE (0x20002000UL) +#define MPFS_SYSREGSCB_BASE (0x20003000UL) +#define MPFS_AXISW_BASE (0x20004000UL) +#define MPFS_MPUCFG_BASE (0x20005000UL) +#define MPFS_FMETER_BASE (0x20006000UL) +#define MPFS_CFG_DDR_SGMII_PHY_BASE (0x20007000UL) +#define MPFS_EMMC_SD_BASE (0x20008000UL) +#define MPFS_DDRCFG_BASE (0x20080000UL) +#define MPFS_UART1_LO_BASE (0x20100000UL) +#define MPFS_WDOG1_LO_BASE (0x20101000UL) +#define MPFS_UART2_LO_BASE (0x20102000UL) +#define MPFS_WDOG2_LO_BASE (0x20103000UL) +#define MPFS_UART3_LO_BASE (0x20104000UL) +#define MPFS_WDOG3_LO_BASE (0x20105000UL) +#define MPFS_UART4_LO_BASE (0x20106000UL) +#define MPFS_WDOG4_LO_BASE (0x20107000UL) +#define MPFS_SPI0_LO_BASE (0x20108000UL) +#define MPFS_SPI1_LO_BASE (0x20109000UL) +#define MPFS_I2C0_LO_BASE (0x2010A000UL) +#define MPFS_I2C1_LO_BASE (0x2010B000UL) +#define MPFS_CAN0_LO_BASE (0x2010C000UL) +#define MPFS_CAN1_LO_BASE (0x2010D000UL) +#define MPFS_GEM0_LO_BASE (0x20110000UL) +#define MPFS_GEM1_LO_BASE (0x20112000UL) +#define MPFS_GPIO0_LO_BASE (0x20120000UL) +#define MPFS_GPIO1_LO_BASE (0x20121000UL) +#define MPFS_GPIO2_LO_BASE (0x20122000UL) +#define MPFS_MSRTC_LO_BASE (0x20124000UL) +#define MPFS_MSTIMER_LO_BASE (0x20125000UL) +#define MPFS_H2FINT_LO_BASE (0x20126000UL) +#define MPFS_CRYPTO_BASE (0x20127000UL) +#define MPFS_ENVMCFG_BASE (0x20200000UL) +#define MPFS_USB_BASE (0x20201000UL) +#define MPFS_QSPIXIP_BASE (0x21000000UL) +#define MPFS_ATHENA_BASE (0x22000000UL) +#define MPFS_TRACE_BASE (0x23000000UL) + +/* These are high base */ + +#define MPFS_UART0_HI_BASE (0x28000000UL) +#define MPFS_WDOG0_HI_BASE (0x28001000UL) +#define MPFS_UART1_HI_BASE (0x28100000UL) +#define MPFS_WDOG1_HI_BASE (0x28101000UL) +#define MPFS_UART2_HI_BASE (0x28102000UL) +#define MPFS_WDOG2_HI_BASE (0x28103000UL) +#define MPFS_UART3_HI_BASE (0x28104000UL) +#define MPFS_WDOG3_HI_BASE (0x28105000UL) +#define MPFS_UART4_HI_BASE (0x28106000UL) +#define MPFS_WDOG4_HI_BASE (0x28107000UL) +#define MPFS_SPI0_HI_BASE (0x28108000UL) +#define MPFS_SPI1_HI_BASE (0x28109000UL) +#define MPFS_I2C0_HI_BASE (0x2810A000UL) +#define MPFS_I2C1_HI_BASE (0x2810B000UL) +#define MPFS_CAN0_HI_BASE (0x2810C000UL) +#define MPFS_CAN1_HI_BASE (0x2810D000UL) +#define MPFS_GEM0_HI_BASE (0x28110000UL) +#define MPFS_GEM1_HI_BASE (0x28112000UL) +#define MPFS_GPIO0_HI_BASE (0x28120000UL) +#define MPFS_GPIO1_HI_BASE (0x28121000UL) +#define MPFS_GPIO2_HI_BASE (0x28122000UL) +#define MPFS_MSRTC_HI_BASE (0x28124000UL) +#define MPFS_MSTIMER_HI_BASE (0x28125000UL) +#define MPFS_H2FINT_HI_BASE (0x28126000UL) + +#define MPFS_IOSCBCFG_BASE (0x37080000UL) + +/* TODO: How to select if peripheral is on HI base address kconfig? + * + * On PolarFire SoC an AXI switch forms a bus matrix interconnect among + * multiple masters and multiple slaves. Five RISC-V CPUs connect to the + * Master ports M10 to M14 of the AXI switch. By default, all the APB + * peripherals are accessible on AXI-Slave 5 of the AXI switch via the AXI to + * AHB and AHB to APB bridges (referred as main APB bus). + * However, to support logical separation in the Asymmetric Multi-Processing + * (AMP) mode of operation, the APB peripherals can alternatively be accessed + * on the AXI-Slave 6 via the AXI to AHB and AHB to APB bridges + * (referred as the AMP APB bus). + */ + +#define MPFS_UART0_BASE MPFS_UART0_LO_BASE +#define MPFS_UART1_BASE MPFS_UART1_LO_BASE +#define MPFS_UART2_BASE MPFS_UART2_LO_BASE +#define MPFS_UART3_BASE MPFS_UART3_LO_BASE +#define MPFS_UART4_BASE MPFS_UART4_LO_BASE + +#endif /* __ARCH_RISCV_SRC_MPFS_HARDWARE_MPFS_MEMORYMAP_H */ diff --git a/arch/risc-v/src/mpfs/hardware/mpfs_plic.h b/arch/risc-v/src/mpfs/hardware/mpfs_plic.h new file mode 100755 index 00000000000..17895244361 --- /dev/null +++ b/arch/risc-v/src/mpfs/hardware/mpfs_plic.h @@ -0,0 +1,131 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/hardware/mpfs_plic.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_MPFS_HARDWARE_MPFS_PLIC_H +#define __ARCH_RISCV_SRC_MPFS_HARDWARE_MPFS_PLIC_H + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* following 187 uint32_t for irq priority */ + +#define MPFS_PLIC_PRIORITY (MPFS_PLIC_BASE + 0x000000) + +#define MPFS_PLIC_IP0 (MPFS_PLIC_BASE + 0x001000) +#define MPFS_PLIC_IP1 (MPFS_PLIC_BASE + 0x001004) +#define MPFS_PLIC_IP2 (MPFS_PLIC_BASE + 0x001008) +#define MPFS_PLIC_IP3 (MPFS_PLIC_BASE + 0x00100C) +#define MPFS_PLIC_IP4 (MPFS_PLIC_BASE + 0x001010) +#define MPFS_PLIC_I51 (MPFS_PLIC_BASE + 0x001014) + +#define MPFS_HART_MIE_OFFSET (0x100) + +#define MPFS_PLIC_H0_MIE0 (MPFS_PLIC_BASE + 0x002000) +#define MPFS_PLIC_H0_MIE1 (MPFS_PLIC_BASE + 0x002004) +#define MPFS_PLIC_H0_MIE2 (MPFS_PLIC_BASE + 0x002008) +#define MPFS_PLIC_H0_MIE3 (MPFS_PLIC_BASE + 0x00200C) +#define MPFS_PLIC_H0_MIE4 (MPFS_PLIC_BASE + 0x002010) +#define MPFS_PLIC_H0_MIE5 (MPFS_PLIC_BASE + 0x002014) + +#define MPFS_PLIC_H1_MIE0 (MPFS_PLIC_BASE + 0x002080) +#define MPFS_PLIC_H1_MIE1 (MPFS_PLIC_BASE + 0x002084) +#define MPFS_PLIC_H1_MIE2 (MPFS_PLIC_BASE + 0x002088) +#define MPFS_PLIC_H1_MIE3 (MPFS_PLIC_BASE + 0x00208C) +#define MPFS_PLIC_H1_MIE4 (MPFS_PLIC_BASE + 0x002090) +#define MPFS_PLIC_H1_MIE5 (MPFS_PLIC_BASE + 0x002094) +#define MPFS_PLIC_H1_SIE0 (MPFS_PLIC_BASE + 0x002100) +#define MPFS_PLIC_H1_SIE1 (MPFS_PLIC_BASE + 0x002104) +#define MPFS_PLIC_H1_SIE2 (MPFS_PLIC_BASE + 0x002108) +#define MPFS_PLIC_H1_SIE3 (MPFS_PLIC_BASE + 0x00210C) +#define MPFS_PLIC_H1_SIE4 (MPFS_PLIC_BASE + 0x002110) +#define MPFS_PLIC_H1_SIE5 (MPFS_PLIC_BASE + 0x002114) + +#define MPFS_PLIC_H2_MIE0 (MPFS_PLIC_BASE + 0x002180) +#define MPFS_PLIC_H2_MIE1 (MPFS_PLIC_BASE + 0x002184) +#define MPFS_PLIC_H2_MIE2 (MPFS_PLIC_BASE + 0x002188) +#define MPFS_PLIC_H2_MIE3 (MPFS_PLIC_BASE + 0x00218C) +#define MPFS_PLIC_H2_MIE4 (MPFS_PLIC_BASE + 0x002190) +#define MPFS_PLIC_H2_MIE5 (MPFS_PLIC_BASE + 0x002194) +#define MPFS_PLIC_H2_SIE0 (MPFS_PLIC_BASE + 0x002200) +#define MPFS_PLIC_H2_SIE1 (MPFS_PLIC_BASE + 0x002204) +#define MPFS_PLIC_H2_SIE2 (MPFS_PLIC_BASE + 0x002208) +#define MPFS_PLIC_H2_SIE3 (MPFS_PLIC_BASE + 0x00220C) +#define MPFS_PLIC_H2_SIE4 (MPFS_PLIC_BASE + 0x002210) +#define MPFS_PLIC_H2_SIE5 (MPFS_PLIC_BASE + 0x002214) + +#define MPFS_PLIC_H3_MIE0 (MPFS_PLIC_BASE + 0x002280) +#define MPFS_PLIC_H3_MIE1 (MPFS_PLIC_BASE + 0x002284) +#define MPFS_PLIC_H3_MIE2 (MPFS_PLIC_BASE + 0x002288) +#define MPFS_PLIC_H3_MIE3 (MPFS_PLIC_BASE + 0x00228C) +#define MPFS_PLIC_H3_MIE4 (MPFS_PLIC_BASE + 0x002290) +#define MPFS_PLIC_H3_MIE5 (MPFS_PLIC_BASE + 0x002294) +#define MPFS_PLIC_H3_SIE0 (MPFS_PLIC_BASE + 0x002300) +#define MPFS_PLIC_H3_SIE1 (MPFS_PLIC_BASE + 0x002304) +#define MPFS_PLIC_H3_SIE2 (MPFS_PLIC_BASE + 0x002308) +#define MPFS_PLIC_H3_SIE3 (MPFS_PLIC_BASE + 0x00230C) +#define MPFS_PLIC_H3_SIE4 (MPFS_PLIC_BASE + 0x002310) +#define MPFS_PLIC_H3_SIE5 (MPFS_PLIC_BASE + 0x002314) + +#define MPFS_PLIC_H4_MIE0 (MPFS_PLIC_BASE + 0x002380) +#define MPFS_PLIC_H4_MIE1 (MPFS_PLIC_BASE + 0x002384) +#define MPFS_PLIC_H4_MIE2 (MPFS_PLIC_BASE + 0x002388) +#define MPFS_PLIC_H4_MIE3 (MPFS_PLIC_BASE + 0x00238C) +#define MPFS_PLIC_H4_MIE4 (MPFS_PLIC_BASE + 0x002390) +#define MPFS_PLIC_H4_MIE5 (MPFS_PLIC_BASE + 0x002394) +#define MPFS_PLIC_H4_SIE0 (MPFS_PLIC_BASE + 0x002400) +#define MPFS_PLIC_H4_SIE1 (MPFS_PLIC_BASE + 0x002404) +#define MPFS_PLIC_H4_SIE2 (MPFS_PLIC_BASE + 0x002408) +#define MPFS_PLIC_H4_SIE3 (MPFS_PLIC_BASE + 0x00240C) +#define MPFS_PLIC_H4_SIE4 (MPFS_PLIC_BASE + 0x002410) +#define MPFS_PLIC_H4_SIE5 (MPFS_PLIC_BASE + 0x002414) + +#define MPFS_PLIC_CTRL (MPFS_PLIC_BASE + 0x1FFFFC) + +#define MPFS_PLIC_NEXTHART_OFFSET (0x2000) +#define MPFS_PLIC_MTHRESHOLD_OFFSET (0x0000) +#define MPFS_PLIC_MCLAIM_OFFSET (0x0004) +#define MPFS_PLIC_STHRESHOLD_OFFSET (0x1000) +#define MPFS_PLIC_SCLAIM_OFFSET (0x1004) + +#define MPFS_PLIC_H0_MTHRESHOLD (MPFS_PLIC_BASE + 0x200000) +#define MPFS_PLIC_H0_MCLAIM (MPFS_PLIC_BASE + 0x200004) + +#define MPFS_PLIC_H1_MTHRESHOLD (MPFS_PLIC_BASE + 0x201000) +#define MPFS_PLIC_H1_MCLAIM (MPFS_PLIC_BASE + 0x201004) +#define MPFS_PLIC_H1_STHRESHOLD (MPFS_PLIC_BASE + 0x202000) +#define MPFS_PLIC_H1_SCLAIM (MPFS_PLIC_BASE + 0x202004) + +#define MPFS_PLIC_H2_MTHRESHOLD (MPFS_PLIC_BASE + 0x203000) +#define MPFS_PLIC_H2_MCLAIM (MPFS_PLIC_BASE + 0x203004) +#define MPFS_PLIC_H2_STHRESHOLD (MPFS_PLIC_BASE + 0x204000) +#define MPFS_PLIC_H2_SCLAIM (MPFS_PLIC_BASE + 0x204004) + +#define MPFS_PLIC_H3_MTHRESHOLD (MPFS_PLIC_BASE + 0x205000) +#define MPFS_PLIC_H3_MCLAIM (MPFS_PLIC_BASE + 0x205004) +#define MPFS_PLIC_H3_STHRESHOLD (MPFS_PLIC_BASE + 0x206000) +#define MPFS_PLIC_H3_SCLAIM (MPFS_PLIC_BASE + 0x206004) + +#define MPFS_PLIC_H4_MTHRESHOLD (MPFS_PLIC_BASE + 0x207000) +#define MPFS_PLIC_H4_MCLAIM (MPFS_PLIC_BASE + 0x207004) +#define MPFS_PLIC_H4_STHRESHOLD (MPFS_PLIC_BASE + 0x208000) +#define MPFS_PLIC_H4_SCLAIM (MPFS_PLIC_BASE + 0x208004) + +#endif /* __ARCH_RISCV_SRC_MPFS_HARDWARE_MPFS_PLIC_H */ diff --git a/arch/risc-v/src/mpfs/hardware/mpfs_sysctl.h b/arch/risc-v/src/mpfs/hardware/mpfs_sysctl.h new file mode 100755 index 00000000000..a8d51039dc7 --- /dev/null +++ b/arch/risc-v/src/mpfs/hardware/mpfs_sysctl.h @@ -0,0 +1,34 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/hardware/mpfs_sysctl.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_MPFS_HARDWARE_MPFS_SYSCTL_H +#define __ARCH_RISCV_SRC_MPFS_HARDWARE_MPFS_SYSCTL_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#endif /* __ARCH_RISCV_SRC_MPFS_HARDWARE_MPFS_SYSCTL_H */ diff --git a/arch/risc-v/src/mpfs/hardware/mpfs_uart.h b/arch/risc-v/src/mpfs/hardware/mpfs_uart.h new file mode 100755 index 00000000000..2d3b0ccf91e --- /dev/null +++ b/arch/risc-v/src/mpfs/hardware/mpfs_uart.h @@ -0,0 +1,207 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/hardware/mpfs_uart.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_MPFS_HARDWARE_MPFS_UART_H +#define __ARCH_RISCV_SRC_MPFS_HARDWARE_MPFS_UART_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include "hardware/mpfs_memorymap.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Register offsets *********************************************************/ + +#define MPFS_UART_RBR_OFFSET 0x0000 /* UART Receive Buffer Register */ +#define MPFS_UART_THR_OFFSET 0x0000 /* UART Transmit Holding Register */ +#define MPFS_UART_DLL_OFFSET 0x0000 /* UART Divisor Latch Low Register */ +#define MPFS_UART_DLH_OFFSET 0x0004 /* UART Divisor Latch High Register */ +#define MPFS_UART_IER_OFFSET 0x0004 /* UART Interrupt Enable Register */ +#define MPFS_UART_IIR_OFFSET 0x0008 /* UART Interrupt Identity Register */ +#define MPFS_UART_FCR_OFFSET 0x0008 /* UART FIFO Control Register */ +#define MPFS_UART_LCR_OFFSET 0x000c /* UART Line Control Register */ +#define MPFS_UART_MCR_OFFSET 0x0010 /* UART Modem Control Register */ +#define MPFS_UART_LSR_OFFSET 0x0014 /* UART Line Status Register */ +#define MPFS_UART_MSR_OFFSET 0x0018 /* UART Modem Status Register */ +#define MPFS_UART_SCH_OFFSET 0x001c /* UART Scratch Register */ +#define MPFS_UART_IEM_OFFSET 0x0024 /* UART Multi-mode interrupt enable register */ +#define MPFS_UART_IIM_OFFSET 0x0028 /* UART Multi-mode interrupt identification register */ +#define MPFS_UART_MM0_OFFSET 0x0030 /* UART Multi-mode control register 0 */ +#define MPFS_UART_MM1_OFFSET 0x0034 /* UART Multi-mode control register 1 */ +#define MPFS_UART_MM2_OFFSET 0x0038 /* UART Multi-mode control register 2 */ +#define MPFS_UART_DFR_OFFSET 0x003C /* UART Fractional divisor register */ +#define MPFS_UART_GFR_OFFSET 0x0044 /* UART Glitch filter register */ +#define MPFS_UART_TTG_OFFSET 0x0048 /* UART Transmitter time guard register */ +#define MPFS_UART_RTO_OFFSET 0x004C /* UART Receiver time-out register */ +#define MPFS_UART_ADR_OFFSET 0x0050 /* UART Address register */ + +/* Register virtual addresses ***********************************************/ + +#define MPFS250_UART0_VADDR MPFS_UART0_BASE +#define MPFS250_UART1_VADDR MPFS_UART1_BASE +#define MPFS250_UART2_VADDR MPFS_UART2_BASE +#define MPFS250_UART3_VADDR MPFS_UART3_BASE +#define MPFS250_UART4_VADDR MPFS_UART4_BASE + +/* Register bit field definitions *******************************************/ + +/* UART Receive Buffer Register */ + +#define UART_RBR_MASK 0x000000ff + +/* UART Transmit Holding Register */ + +#define UART_THR_MASK 0x000000ff + +/* UART Divisor Latch Low Register */ + +#define UART_DLL_MASK 0x000000ff + +/* UART Divisor Latch High Register */ + +#define UART_DLH_MASK 0x000000ff + +/* UART Interrupt Enable Register */ + +#define UART_IER_ERBFI (1 << 0) /* Bit 0: Enable Received Data Available Interrupt */ +#define UART_IER_ETBEI (1 << 1) /* Bit 1: Enable Transmit Holding Register Empty Interrupt */ +#define UART_IER_ELSI (1 << 2) /* Bit 2: Enable Receiver Line Status Interrupt */ +#define UART_IER_EDSSI (1 << 3) /* Bit 3: Enable Modem Status Interrupt */ +#define UART_IER_PTIME (1 << 7) /* Bit 7: Programmable THRE Interrupt Mode Enable */ +#define UART_IER_ALLIE 0x0000008f + +/* UART Interrupt Identity Register */ + +#define UART_IIR_IID_SHIFT (0) /* Bits: 0-3: Interrupt ID */ +#define UART_IIR_IID_MASK (15 << UART_IIR_IID_SHIFT) +# define UART_IIR_IID_MODEM (0 << UART_IIR_IID_SHIFT) /* Modem status */ +# define UART_IIR_IID_NONE (1 << UART_IIR_IID_SHIFT) /* No interrupt pending */ +# define UART_IIR_IID_TXEMPTY (2 << UART_IIR_IID_SHIFT) /* THR empty */ +# define UART_IIR_IID_RECV (4 << UART_IIR_IID_SHIFT) /* Received data available */ +# define UART_IIR_IID_LINESTATUS (6 << UART_IIR_IID_SHIFT) /* Receiver line status */ +# define UART_IIR_IID_TIMEOUT (12 << UART_IIR_IID_SHIFT) /* Character timeout */ + +#define UART_IIR_FEFLAG_SHIFT (6) /* Bits 6-7: FIFOs Enable Flag */ +#define UART_IIR_FEFLAG_MASK (3 << UART_IIR_FEFLAG_SHIFT) +# define UART_IIR_FEFLAG_DISABLE (0 << UART_IIR_FEFLAG_SHIFT) +# define UART_IIR_FEFLAG_ENABLE (3 << UART_IIR_FEFLAG_SHIFT) + +/* UART FIFO Control Register */ + +#define UART_FCR_FIFOE (1 << 0) /* Bit 0: Enable FIFOs */ +#define UART_FCR_RFIFOR (1 << 1) /* Bit 1: RCVR FIFO Reset */ +#define UART_FCR_XFIFOR (1 << 2) /* Bit 2: XMIT FIFO reset */ +#define UART_FCR_DMAM (1 << 3) /* Bit 3: DMA mode */ +#define UART_FCR_TFT_SHIFT (4) /* Bits 4-5: TX Empty Trigger */ +#define UART_FCR_TFT_MASK (3 << UART_FCR_TFT_SHIFT) +# define UART_FCR_TFT_EMPTY (0 << UART_FCR_TFT_SHIFT) /* FIFO empty */ +# define UART_FCR_TFT_TWO (1 << UART_FCR_TFT_SHIFT) /* 2 characters in the FIFO */ +# define UART_FCR_TFT_QUARTER (2 << UART_FCR_TFT_SHIFT) /* FIFO 1/4 full */ +# define UART_FCR_TFT_HALF (3 << UART_FCR_TFT_SHIFT) /* FIFO 1/2 full */ + +#define UART_FCR_RT_SHIFT (6) /* Bits 6-7: RCVR Trigger */ +#define UART_FCR_RT_MASK (3 << UART_FCR_RT_SHIFT) +# define UART_FCR_RT_ONE (0 << UART_FCR_RT_SHIFT) /* 1 character in the FIFO */ +# define UART_FCR_RT_QUARTER (1 << UART_FCR_RT_SHIFT) /* FIFO 1/4 full */ +# define UART_FCR_RT_HALF (2 << UART_FCR_RT_SHIFT) /* FIFO 1/2 full */ +# define UART_FCR_RT_MINUS2 (3 << UART_FCR_RT_SHIFT) /* FIFO-2 less than full */ + +/* UART Line Control Register */ + +#define UART_LCR_DLS_SHIFT (0) /* Bits 0-1: Data Length Select */ +#define UART_LCR_DLS_MASK (3 << UART_LCR_DLS_SHIFT) +# define UART_LCR_DLS_5BITS (0 << UART_LCR_DLS_SHIFT) /* 5 bits */ +# define UART_LCR_DLS_6BITS (1 << UART_LCR_DLS_SHIFT) /* 6 bits */ +# define UART_LCR_DLS_7BITS (2 << UART_LCR_DLS_SHIFT) /* 7 bits */ +# define UART_LCR_DLS_8BITS (3 << UART_LCR_DLS_SHIFT) /* 8 bits */ + +#define UART_LCR_STOP (1 << 2) /* Bit 2: Number of stop bits */ +#define UART_LCR_PEN (1 << 3) /* Bit 3: Parity Enable */ +#define UART_LCR_EPS (1 << 4) /* Bit 4: Even Parity Select */ +#define UART_LCR_BC (1 << 6) /* Bit 6: Break Control Bit */ +#define UART_LCR_DLAB (1 << 7) /* Bit 7: Divisor Latch Access Bit */ + +/* UART Modem Control Register */ + +#define UART_MCR_DTR (1 << 0) /* Bit 0: Data Terminal Ready */ +#define UART_MCR_RTS (1 << 1) /* Bit 1: Request to Send */ +#define UART_MCR_LOOP (1 << 4) /* Bit 4: Loop Back Mode */ +#define UART_MCR_AFCE (1 << 5) /* Bit 5: Auto Flow Control Enable */ +#define UART_MCR_SIRE (1 << 6) /* Bit 6: SIR Mode Enable */ + +/* UART Line Status Register */ + +#define UART_LSR_DR (1 << 0) /* Bit 0: Data Ready */ +#define UART_LSR_OE (1 << 1) /* Bit 1: Overrun Error */ +#define UART_LSR_PE (1 << 2) /* Bit 2: Parity Error */ +#define UART_LSR_FE (1 << 3) /* Bit 3: Framing Error */ +#define UART_LSR_BI (1 << 4) /* Bit 4: Break Interrupt */ +#define UART_LSR_THRE (1 << 5) /* Bit 5: TX Holding Register Empty */ +#define UART_LSR_TEMT (1 << 6) /* Bit 6: Transmitter Empty */ +#define UART_LSR_FIFOERR (1 << 7) /* Bit 7: RX Data Error in FIFO */ + +/* UART Modem Status Register */ + +#define UART_MSR_DCTS (1 << 0) /* Bit 0: Delta Clear to Send */ +#define UART_MSR_DDSR (1 << 1) /* Bit 1: Delta Data Set Ready */ +#define UART_MSR_TERI (1 << 2) /* Bit 2: Trailing Edge Ring Indicator */ +#define UART_MSR_DDCD (1 << 3) /* Bit 3: Delta Data Carrier Detect */ +#define UART_MSR_CTS (1 << 4) /* Bit 4: Line State of Clear To Send */ +#define UART_MSR_DSR (1 << 5) /* Bit 5: Line State of Data Set Ready */ +#define UART_MSR_RI (1 << 6) /* Bit 6: Line State of Ring Indicator */ +#define UART_MSR_DCD (1 << 7) /* Bit 7: Line State of Data Carrier Detect */ + +/* UART Scratch Register */ + +#define UART_SCH_MASK 0x000000ff + +/* UART Status Register */ + +#define UART_USR_BUSY (1 << 0) /* Bit 0: UART Busy Bit */ +#define UART_USR_TFNF (1 << 1) /* Bit 1: Transmit FIFO Not Full */ +#define UART_USR_TFE (1 << 2) /* Bit 2: Transmit FIFO Empty */ +#define UART_USR_RFNE (1 << 3) /* Bit 3: Receive FIFO Not Empty */ +#define UART_USR_RFF (1 << 4) /* Bit 4: Receive FIFO Full */ + +/* UART Transmit FIFO Level */ + +#define UART_TFL_SHIFT (0) /* Bits 0-6: Transmit FIFO Level */ +#define UART_TFL_MASK (0x7f << UART_TFL_SHIFT) +# define UART_TFL(n) ((uint32_t)(n) << UART_TFL_SHIFT) + +/* UART Receive FIFO Level */ + +#define UART_RFL_SHIFT (0) /* Bits 0-6: Receive FIFO Level */ +#define UART_RFL_MASK (0x7f << UART_RFL_SHIFT) +# define UART_RFL(n) ((uint32_t)(n) << UART_RFL_SHIFT) + +/* Multimode register 0 */ + +#define UART_MM0_ELIN (1 << 3) /* Bit 3: Enable LIN header detection */ +#define UART_MM0_ETIG (1 << 5) /* Bit 5: Enable transmitter time guard */ +#define UART_MM0_ERTO (1 << 6) /* Bit 6: Enable receiver time-out */ +#define UART_MM0_EFBR (1 << 7) /* Bit 7: Enable fractional baud rate mode */ + +#endif /* __ARCH_RISCV_SRC_MPFS_HARDWARE_MPFS_UART_H */ diff --git a/arch/risc-v/src/mpfs/mpfs.h b/arch/risc-v/src/mpfs/mpfs.h new file mode 100755 index 00000000000..8d78f2c6060 --- /dev/null +++ b/arch/risc-v/src/mpfs/mpfs.h @@ -0,0 +1,38 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/mpfs.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_MPFS_MPFS_H +#define __ARCH_RISCV_SRC_MPFS_MPFS_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include +#include +#include + +#include "chip.h" +#include "mpfs_lowputc.h" +#include "riscv_internal.h" +#include + +#endif /* __ARCH_RISCV_SRC_MPFS_MPFS_H */ diff --git a/arch/risc-v/src/mpfs/mpfs_allocateheap.c b/arch/risc-v/src/mpfs/mpfs_allocateheap.c new file mode 100755 index 00000000000..c6bb153fb83 --- /dev/null +++ b/arch/risc-v/src/mpfs/mpfs_allocateheap.c @@ -0,0 +1,132 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/mpfs_allocateheap.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +#include +#include +#include + +#include "mpfs.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#define KRAM_END CONFIG_RAM_END + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: up_allocate_heap + * + * Description: + * This function will be called to dynamically set aside the heap region. + * + * For the kernel build (CONFIG_BUILD_PROTECTED=y) with both kernel- and + * user-space heaps (CONFIG_MM_KERNEL_HEAP=y), this function provides the + * size of the unprotected, user-space heap. + * + * If a protected kernel-space heap is provided, the kernel heap must be + * allocated (and protected) by an analogous up_allocate_kheap(). + * + * The following memory map is assumed for the flat build: + * + * .data region. Size determined at link time. + * .bss region Size determined at link time. + * IDLE thread stack. Size determined by CONFIG_IDLETHREAD_STACKSIZE. + * Heap. Extends to the end of User SRAM. + * + * The following memory map is assumed for the protect build. + * The kernel and user space have it's own dedicated heap space. + * + * User .data region Size determined at link time + * User .bss region Size determined at link time + * User heap Extends to the end of User SRAM + * Kernel .data region Size determined at link time + * Kernel .bss region Size determined at link time + * Kernel IDLE thread stack Size determined by CONFIG_IDLETHREAD_STACKSIZE + * Kernel heap Size determined by CONFIG_MM_KERNEL_HEAPSIZE + * + ****************************************************************************/ + +void up_allocate_heap(FAR void **heap_start, size_t *heap_size) +{ +#if defined(CONFIG_BUILD_PROTECTED) && defined(CONFIG_MM_KERNEL_HEAP) + /* Get the size and position of the user-space heap. + * This heap begins after the user-space .bss section. + */ + + uintptr_t ubase = (uintptr_t)USERSPACE->us_bssend; + size_t usize = (uintptr_t)USERSPACE->us_heapend - ubase; + + /* Return the user-space heap settings */ + + *heap_start = (FAR void *)ubase; + *heap_size = usize; + + /* Allow user-mode access to the user heap memory in PMP + * is already done in mpfs_userspace(). + */ + +#else + /* Return the heap settings */ + + *heap_start = (FAR void *)g_idle_topstack; + *heap_size = KRAM_END - g_idle_topstack; +#endif +} + +/**************************************************************************** + * Name: up_allocate_kheap + * + * Description: + * For the kernel build (CONFIG_BUILD_PROTECTED=y) with both kernel- and + * user-space heaps (CONFIG_MM_KERNEL_HEAP=y), this function allocates + * (and protects) the kernel-space heap. + * + ****************************************************************************/ + +#if defined(CONFIG_BUILD_PROTECTED) && defined(CONFIG_MM_KERNEL_HEAP) +void up_allocate_kheap(FAR void **heap_start, size_t *heap_size) +{ + /* Return the kernel heap settings. */ + + *heap_start = (FAR void *)g_idle_topstack; + *heap_size = KRAM_END - g_idle_topstack; +} +#endif + +/**************************************************************************** + * Name: up_addregion + ****************************************************************************/ + +void up_addregion(void) +{ +} diff --git a/arch/risc-v/src/mpfs/mpfs_clockconfig.c b/arch/risc-v/src/mpfs/mpfs_clockconfig.c new file mode 100755 index 00000000000..90aaee60fd3 --- /dev/null +++ b/arch/risc-v/src/mpfs/mpfs_clockconfig.c @@ -0,0 +1,80 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/mpfs_clockconfig.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include + +#include +#include + +#include "mpfs_clockconfig.h" +#include "riscv_arch.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#define OSC_FREQ 80000000UL + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static uint64_t g_cpu_clock = MPFS_MSS_COREPLEX_CPU_CLK; + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: mpfs_get_cpuclk + ****************************************************************************/ + +uint64_t mpfs_get_cpuclk(void) +{ + return g_cpu_clock; +} + +/**************************************************************************** + * Name: mpfs_get_pll0clk + ****************************************************************************/ + +#ifndef CONFIG_MPFS_WITH_QEMU +uint64_t mpfs_get_pll0clk(void) +{ + return 0; +} +#endif + +/**************************************************************************** + * Name: mpfs_clockconfig + ****************************************************************************/ + +void mpfs_clockconfig(void) +{ + /* All is currently done in bootloader HSS */ +} diff --git a/arch/risc-v/src/mpfs/mpfs_clockconfig.h b/arch/risc-v/src/mpfs/mpfs_clockconfig.h new file mode 100755 index 00000000000..2e317a76be8 --- /dev/null +++ b/arch/risc-v/src/mpfs/mpfs_clockconfig.h @@ -0,0 +1,66 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/mpfs_clockconfig.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_MPFS_MPFS_CLOCKCONFIG_H +#define __ARCH_RISCV_SRC_MPFS_MPFS_CLOCKCONFIG_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include "mpfs_memorymap.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Public Types + ****************************************************************************/ + +#ifndef __ASSEMBLY__ + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +#ifdef __cplusplus +#define EXTERN extern "C" +extern "C" +{ +#else +#define EXTERN extern +#endif + +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ + +EXTERN uint64_t mpfs_get_cpuclk(void); +EXTERN uint64_t mpfs_get_pll0clk(void); +EXTERN void mpfs_clockconfig(void); + +#if defined(__cplusplus) +} +#endif +#undef EXTERN + +#endif /* __ASSEMBLY__ */ +#endif /* __ARCH_RISCV_SRC_MPFS_MPFS_CLOCKCONFIG_H */ diff --git a/arch/risc-v/src/mpfs/mpfs_config.h b/arch/risc-v/src/mpfs/mpfs_config.h new file mode 100755 index 00000000000..48020199b69 --- /dev/null +++ b/arch/risc-v/src/mpfs/mpfs_config.h @@ -0,0 +1,68 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/mpfs_config.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_MPFS_MPFS_CONFIG_H +#define __ARCH_RISCV_SRC_MPFS_MPFS_CONFIG_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#undef HAVE_UART_DEVICE +#if defined(CONFIG_MPFS_UART0) || defined(CONFIG_MPFS_UART1) || \ + defined(CONFIG_MPFS_UART2) || defined(CONFIG_MPFS_UART3) || \ + defined(CONFIG_MPFS_UART4) +# define HAVE_UART_DEVICE 1 +#endif + +#if defined(CONFIG_UART0_SERIAL_CONSOLE) && defined(CONFIG_MPFS_UART0) +# undef CONFIG_UART1_SERIAL_CONSOLE +# undef CONFIG_UART2_SERIAL_CONSOLE +# undef CONFIG_UART3_SERIAL_CONSOLE +# undef CONFIG_UART4_SERIAL_CONSOLE +# define HAVE_SERIAL_CONSOLE 1 +#elif defined(CONFIG_UART1_SERIAL_CONSOLE) && defined(CONFIG_MPFS_UART1) +# undef CONFIG_UART0_SERIAL_CONSOLE +# undef CONFIG_UART2_SERIAL_CONSOLE +# undef CONFIG_UART3_SERIAL_CONSOLE +# undef CONFIG_UART4_SERIAL_CONSOLE +# define HAVE_SERIAL_CONSOLE 1 +#elif defined(CONFIG_UART2_SERIAL_CONSOLE) && defined(CONFIG_MPFS_UART2) +# undef CONFIG_UART0_SERIAL_CONSOLE +# undef CONFIG_UART1_SERIAL_CONSOLE +# undef CONFIG_UART3_SERIAL_CONSOLE +# undef CONFIG_UART4_SERIAL_CONSOLE +# define HAVE_SERIAL_CONSOLE 1 +#else +# undef CONFIG_UART0_SERIAL_CONSOLE +# undef CONFIG_UART1_SERIAL_CONSOLE +# undef HAVE_SERIAL_CONSOLE +#endif + +#endif /* __ARCH_RISCV_SRC_MPFS_MPFS_CONFIG_H */ diff --git a/arch/risc-v/src/mpfs/mpfs_gpio.c b/arch/risc-v/src/mpfs/mpfs_gpio.c new file mode 100644 index 00000000000..8e9e74be846 --- /dev/null +++ b/arch/risc-v/src/mpfs/mpfs_gpio.c @@ -0,0 +1,184 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/mpfs_gpio.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include "riscv_arch.h" + +#include "hardware/mpfs_gpio.h" +#include "mpfs_gpio.h" + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +static uintptr_t g_gpio_base[] = +{ + MPFS_GPIO0_LO_BASE, /* Bank-0 Normal GPIO */ + MPFS_GPIO1_LO_BASE, /* Bank-1 Normal GPIO */ + MPFS_GPIO2_LO_BASE /* Bank-2 Fabric only */ +}; + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: mpfs_configgpio + * + * Description: + * Configure a GPIO pin based on bit-encoded description of the pin. + * + * Returned Value: + * OK on success + * ERROR on invalid port. + * + ****************************************************************************/ + +int mpfs_configgpio(gpio_pinset_t cfgset) +{ + uintptr_t baseaddr; + uint32_t cfg = 0; + uint8_t pin = (cfgset & GPIO_PIN_MASK) >> GPIO_PIN_SHIFT; + uint8_t bank = (cfgset & GPIO_BANK_MASK) >> GPIO_BANK_SHIFT; + uint8_t irq_mode = (cfgset & GPIO_IRQ_MASK) >> GPIO_IRQ_SHIFT; + + if (bank == 3) + { + return ERROR; + } + + /* REVISIT: limit the gpios as + * bank0 0 - 13 + * bank1 0 - 23 + * bank2 0 - 31 + */ + + baseaddr = g_gpio_base[bank] + (pin * sizeof(uint32_t)); + + if (cfgset & GPIO_INPUT) + { + cfg |= GPIO_CONFIG_EN_IN; + } + + if (cfgset & GPIO_OUTPUT) + { + cfg |= GPIO_CONFIG_EN_OUT; + } + + if (cfgset & GPIO_BUFFER_ENABLE) + { + cfg |= GPIO_CONFIG_EN_OE_BUF; + } + + if (cfgset & GPIO_IRQ_ENABLE) + { + cfg |= GPIO_CONFIG_EN_INT; + + /* Clear irq bit */ + + putreg32(1 << pin, baseaddr + MPFS_GPIO_INTR_OFFSET); + } + + /* set irq mode bits */ + + irq_mode &= 7; + cfg |= irq_mode << 5; + + putreg32(cfg, baseaddr); + + return OK; +} + +/**************************************************************************** + * Name: mpfs_gpio_deinit + * + * Description: + * Deinit a GPIO (Set GPIO to input state) + * + * Returned Value: + * OK on success + * ERROR on invalid port. + * + ****************************************************************************/ + +/* REVISIT: */ + +int mpfs_gpio_deinit(uint8_t pin) +{ + mpfs_configgpio(pin); + return OK; +} + +/**************************************************************************** + * Name: mpfs_gpiowrite + * + * Description: + * Write one or zero to the selected GPIO pin + * + ****************************************************************************/ + +void mpfs_gpiowrite(gpio_pinset_t pinset, bool value) +{ + uint8_t pin = (pinset & GPIO_PIN_MASK) >> GPIO_PIN_SHIFT; + uint8_t bank = (pinset & GPIO_BANK_MASK) >> GPIO_BANK_SHIFT; + uintptr_t baseaddr = g_gpio_base[bank]; + + if (bank == 3) + { + return; + } + + if (value) + { + putreg32((1 << pin), baseaddr + MPFS_GPIO_SET_BITS_OFFSET); + } + else + { + putreg32((1 << pin), baseaddr + MPFS_GPIO_CLEAR_BITS_OFFSET); + } +} + +/**************************************************************************** + * Name: mpfs_gpioread + * + * Description: + * Read one or zero from the selected GPIO pin + * + ****************************************************************************/ + +bool mpfs_gpioread(gpio_pinset_t pinset) +{ + uint8_t pin = (pinset & GPIO_PIN_MASK) >> GPIO_PIN_SHIFT; + uint8_t bank = (pinset & GPIO_BANK_MASK) >> GPIO_BANK_SHIFT; + uintptr_t baseaddr = g_gpio_base[bank]; + + if (bank == 3) + { + return 0; + } + + return ((getreg32(baseaddr + MPFS_GPIO_GPIN_OFFSET) & (1 << pin)) ? 1 : 0); +} + diff --git a/arch/risc-v/src/mpfs/mpfs_gpio.h b/arch/risc-v/src/mpfs/mpfs_gpio.h new file mode 100644 index 00000000000..2c15ef084e2 --- /dev/null +++ b/arch/risc-v/src/mpfs/mpfs_gpio.h @@ -0,0 +1,272 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/mpfs_gpio.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_MPFS_MPFS_GPIO_H +#define __ARCH_RISCV_SRC_MPFS_MPFS_GPIO_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#ifndef __ASSEMBLY__ +#include +#include +#endif + +#include +#include + +#include "chip.h" +#include "hardware/mpfs_gpio.h" + +/**************************************************************************** + * Pre-Processor Declarations + ****************************************************************************/ + +/* Bit-encoded input to mpfs_configgpio() */ + +/* Each port bit of the general-purpose I/O (GPIO) ports can be individually + * configured by software in several modes: + * + * - Input + * - Output + * - Output with buffer enable + * - Output with buffer disable + * - Input with irq level high + * - Input with irq level low + * - Input with irq edge positive + * - Input with irq edge negative + * + * 16-bit Encoding: 1111 1100 0000 0000 + * 5432 1098 7654 3210 + * ---- ---- ---- ---- + * MMBI III. .bbP PPPP + */ + +/* Mode: + * + * 1111 1100 0000 0000 + * 5432 1098 7654 3210 + * ---- ---- ---- ---- + * MM.. .... .... .... + */ + +#define GPIO_MODE_SHIFT (14) /* Bit 14-15: IO Mode */ +#define GPIO_MODE_MASK (3 << GPIO_MODE_SHIFT) +# define GPIO_NOINOUT (0 << GPIO_MODE_SHIFT) /* No input or output */ +# define GPIO_INPUT (1 << GPIO_MODE_SHIFT) /* Input Enable */ +# define GPIO_OUTPUT (2 << GPIO_MODE_SHIFT) /* Output Enable */ + +/* Output buffer: + * + * 1111 1100 0000 0000 + * 5432 1098 7654 3210 + * ---- ---- ---- ---- + * ..B. .... .... .... + */ + +#define GPIO_BUFFER_SHIFT (13) /* Bit 13: Output buffer enabled */ +#define GPIO_BUFFER_MASK (1 << GPIO_BUFFER_SHIFT) +#define GPIO_BUFFER_DISABLE (0 << GPIO_BUFFER_SHIFT) /* Disable Output buffer */ +#define GPIO_BUFFER_ENABLE (1 << GPIO_BUFFER_SHIFT) /* Enable Output buffer */ + +/* Irq: + * + * 1111 1100 0000 0000 + * 5432 1098 7654 3210 + * ---- ---- ---- ---- + * ...I III. .... .... + */ + +#define GPIO_IRQ_SHIFT (9) /* Bits 9-12: Irq Mode */ +#define GPIO_IRQ_MASK (15 << GPIO_IRQ_SHIFT) +#define GPIO_IRQ_HIGH (0 << GPIO_IRQ_SHIFT) +#define GPIO_IRQ_LOW (1 << GPIO_IRQ_SHIFT) +#define GPIO_IRQ_EDGE_POS (2 << GPIO_IRQ_SHIFT) +#define GPIO_IRQ_EDGE_NEG (3 << GPIO_IRQ_SHIFT) +#define GPIO_IRQ_EDGE_BOTH (4 << GPIO_IRQ_SHIFT) +#define GPIO_IRQ_ENABLE (8 << GPIO_IRQ_SHIFT) +#define GPIO_IRQ_DISABLE (0 << GPIO_IRQ_SHIFT) + +/* Bank: + * + * 1111 1100 0000 0000 + * 5432 1098 7654 3210 + * ---- ---- ---- ---- + * .... .... .bb. .... + */ + +#define GPIO_BANK_SHIFT (5) /* Bits 5-6: Bank */ +#define GPIO_BANK_MASK (3 << GPIO_BANK_SHIFT) +#define GPIO_BANK0 (0 << GPIO_BANK_SHIFT) +#define GPIO_BANK1 (1 << GPIO_BANK_SHIFT) +#define GPIO_BANK2 (2 << GPIO_BANK_SHIFT) + +/* This identifies the bit in the bank: + * + * 1111 1100 0000 0000 + * 5432 1098 7654 3210 + * ---- ---- ---- ---- + * .... .... ...P PPPP + */ + +#define GPIO_PIN_SHIFT (0) /* Bits 0-4: GPIO number: 0-31 */ +#define GPIO_PIN_MASK (0x1f << GPIO_PIN_SHIFT) +#define GPIO_PIN0 (0 << GPIO_PIN_SHIFT) +#define GPIO_PIN1 (1 << GPIO_PIN_SHIFT) +#define GPIO_PIN2 (2 << GPIO_PIN_SHIFT) +#define GPIO_PIN3 (3 << GPIO_PIN_SHIFT) +#define GPIO_PIN4 (4 << GPIO_PIN_SHIFT) +#define GPIO_PIN5 (5 << GPIO_PIN_SHIFT) +#define GPIO_PIN6 (6 << GPIO_PIN_SHIFT) +#define GPIO_PIN7 (7 << GPIO_PIN_SHIFT) +#define GPIO_PIN8 (8 << GPIO_PIN_SHIFT) +#define GPIO_PIN9 (9 << GPIO_PIN_SHIFT) +#define GPIO_PIN10 (10 << GPIO_PIN_SHIFT) +#define GPIO_PIN11 (11 << GPIO_PIN_SHIFT) +#define GPIO_PIN12 (12 << GPIO_PIN_SHIFT) +#define GPIO_PIN13 (13 << GPIO_PIN_SHIFT) +#define GPIO_PIN14 (14 << GPIO_PIN_SHIFT) +#define GPIO_PIN15 (15 << GPIO_PIN_SHIFT) +#define GPIO_PIN16 (16 << GPIO_PIN_SHIFT) +#define GPIO_PIN17 (17 << GPIO_PIN_SHIFT) +#define GPIO_PIN18 (18 << GPIO_PIN_SHIFT) +#define GPIO_PIN19 (19 << GPIO_PIN_SHIFT) +#define GPIO_PIN20 (20 << GPIO_PIN_SHIFT) +#define GPIO_PIN21 (21 << GPIO_PIN_SHIFT) +#define GPIO_PIN22 (22 << GPIO_PIN_SHIFT) +#define GPIO_PIN23 (23 << GPIO_PIN_SHIFT) +#define GPIO_PIN24 (24 << GPIO_PIN_SHIFT) +#define GPIO_PIN25 (25 << GPIO_PIN_SHIFT) +#define GPIO_PIN26 (26 << GPIO_PIN_SHIFT) +#define GPIO_PIN27 (27 << GPIO_PIN_SHIFT) +#define GPIO_PIN28 (28 << GPIO_PIN_SHIFT) +#define GPIO_PIN29 (29 << GPIO_PIN_SHIFT) +#define GPIO_PIN30 (30 << GPIO_PIN_SHIFT) +#define GPIO_PIN31 (31 << GPIO_PIN_SHIFT) + +/**************************************************************************** + * Public Types + ****************************************************************************/ + +/* The smallest integer type that can hold the GPIO encoding */ + +typedef uint16_t gpio_pinset_t; + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +#ifndef __ASSEMBLY__ + +#undef EXTERN +#if defined(__cplusplus) +#define EXTERN extern "C" +extern "C" +{ +#else +#define EXTERN extern +#endif + +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ + +/**************************************************************************** + * Name: mpfs_configgpio + * + * Description: + * Configure a GPIO pin based on bit-encoded description of the pin. + * + * Returned Value: + * OK on success + * ERROR on invalid port. + * + ****************************************************************************/ + +int mpfs_configgpio(gpio_pinset_t cfgset); + +/**************************************************************************** + * Name: mpfs_gpio_deinit + * + * Description: + * Deinit a GPIO (Set GPIO to floating input state) + * + * Returned Value: + * OK on success + * ERROR on invalid port. + * + ****************************************************************************/ + +int mpfs_gpio_deinit(uint8_t pin); + +/**************************************************************************** + * Name: mpfs_gpiowrite + * + * Description: + * Write one or zero to the selected GPIO pin + * + ****************************************************************************/ + +void mpfs_gpiowrite(gpio_pinset_t pinset, bool value); + +/**************************************************************************** + * Name: mpfs_gpioread + * + * Description: + * Read one or zero from the selected GPIO pin + * + ****************************************************************************/ + +bool mpfs_gpioread(gpio_pinset_t pinset); + +/**************************************************************************** + * Name: mpfs_gpio_initialize + * + * Description: + * Initialize GPIO drivers for use with /apps/examples/gpio + * + ****************************************************************************/ + +int mpfs_gpio_initialize(void); + +/**************************************************************************** + * Function: mpfs_dumpgpio + * + * Description: + * Dump all GPIO registers associated with the provided base address + * + ****************************************************************************/ + +#ifdef CONFIG_DEBUG_GPIO_INFO +int mpfs_dumpgpio(gpio_pinset_t pinset, const char *msg); +#else +#define mpfs_dumpgpio(p, m) +#endif + +#undef EXTERN +#if defined(__cplusplus) +} +#endif + +#endif /* __ASSEMBLY__ */ +#endif /* __ARCH_RISCV_SRC_MPFS_MPFS_GPIO_H */ diff --git a/arch/risc-v/src/mpfs/mpfs_head.S b/arch/risc-v/src/mpfs/mpfs_head.S new file mode 100755 index 00000000000..c99cd9f40a8 --- /dev/null +++ b/arch/risc-v/src/mpfs/mpfs_head.S @@ -0,0 +1,328 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/mpfs_head.S + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include +#include + +#include "chip.h" +#include "mpfs_memorymap.h" +#include "riscv_internal.h" + +/**************************************************************************** + * Public Symbols + ****************************************************************************/ + + .global exception_common + + /* Imported symbols */ + + .extern __trap_vec + + .section .text + .global __start_mpfs + +__start_mpfs: + + /* invalid all MMU TLB Entry */ + + sfence.vma x0, x0 + + /* Disable all interrupts (i.e. timer, external) in mie */ + + csrw mie, zero + csrw mip, zero + + /* Initialize the Machine Trap Vector */ + + la t0, __trap_vec + csrw mtvec, t0 + + /* Make sure that mtvec is updated before continuing */ + +1: + csrr t1, mtvec + bne t0, t1, 1b + + /* Init delegation registers, mideleg, medeleg, if a U54 + * These are not initialised by the hardware and come up in a random state + */ + + csrr a0, mhartid + beqz a0, .skip_e51 + csrw mideleg, 0 + csrw medeleg, 0 +.skip_e51: + + /* mscratch must be init to zero- we are not using scratch memory */ + + csrw mscratch, zero + csrw mcause, zero + csrw mepc, zero + li x1, 0 + li x2, 0 + li x3, 0 + li x4, 0 + li x5, 0 + li x6, 0 + li x7, 0 + li x8, 0 + li x9, 0 + li x10, 0 + li x11, 0 + li x12, 0 + li x13, 0 + li x14, 0 + li x15, 0 + li x16, 0 + li x17, 0 + li x18, 0 + li x19, 0 + li x20, 0 + li x21, 0 + li x22, 0 + li x23, 0 + li x24, 0 + li x25, 0 + li x26, 0 + li x27, 0 + li x28, 0 + li x29, 0 + li x30, 0 + li x31, 0 + + /* enable FPU and accelerator if present, setting ignored on E51 + * 15,16 = MSTATUS_XS, 17,18 = MSTATUS_MPRV + * not defined on riscv-v/include/csr.h + */ + + li t0, MSTATUS_FS_DIRTY | (1 << 15) | (1 << 16) | (1 << 17) | (1 << 18) + csrs mstatus, t0 + + /* Init floating point control register to zero. skip if E51 */ + + csrr a0, mhartid + beqz a0, .no_float +#ifdef __riscv_flen + fscsr x0 +#endif +.no_float: + + /* Set stack pointer to the idle thread stack */ + + la sp, MPFS_IDLESTACK_TOP + + +/* initialize global pointer, global data + * The __global_pointer is allocated in the linker script. + * It points to a location between _sdata and _edata as the offsets used in the gp are +/- 2k + * See https://www.sifive.com/blog/2017/08/28/all-aboard-part-3-linker-relaxation-in-riscv-toolchain/ + * see: http://www.rowleydownload.co.uk/arm/documentation/gnu/as/RISC_002dV_002dDirectives.html + */ + +.option push +.option norelax + la gp, __global_pointer$ +.option pop + + +#ifdef CONFIG_STACK_COLORATION + + /* Write a known value to the IDLE thread stack to support stack + * monitoring logic + */ + + la t0, MPFS_IDLESTACK_BASE + la t1, MPFS_IDLESTACK_TOP + li t2, STACK_COLOR + bgeu t0, t1, 2f + + /* t0 = start of IDLE stack; t1 = top of stack; t2 = coloration */ + +1: + sw t2, 0(t0) + addi t0, t0, 4 + bne t0, t1, 1b +2: + +#endif + + /* Jump to __mpfs_start with mhartid in a0 */ + + j __mpfs_start + + /* We shouldn't return from __mpfs_start + * in case of return, loop forever. nop's added so can be seen in debugger + */ + +1: + nop + nop + j 1b + + .global _init + .global _fini + +_init: +_fini: + + /* These don't have to do anything since we use init_array/fini_array. */ + + ret + +/**************************************************************************** + * Name: exception_common + ****************************************************************************/ + +exception_common: + + addi sp, sp, -XCPTCONTEXT_SIZE + + sd x1, 1*8(sp) /* ra */ + + /* leave gp(x3) in 3*8(sp) untouched */ + + sd x4, 4*8(sp) /* tp */ + sd x5, 5*8(sp) /* t0 */ + sd x6, 6*8(sp) /* t1 */ + sd x7, 7*8(sp) /* t2 */ + sd x8, 8*8(sp) /* s0 */ + sd x9, 9*8(sp) /* s1 */ + sd x10, 10*8(sp) /* a0 */ + sd x11, 11*8(sp) /* a1 */ + sd x12, 12*8(sp) /* a2 */ + sd x13, 13*8(sp) /* a3 */ + sd x14, 14*8(sp) /* a4 */ + sd x15, 15*8(sp) /* a5 */ + sd x16, 16*8(sp) /* a6 */ + sd x17, 17*8(sp) /* a7 */ + sd x18, 18*8(sp) /* s2 */ + sd x19, 19*8(sp) /* s3 */ + sd x20, 20*8(sp) /* s4 */ + sd x21, 21*8(sp) /* s5 */ + sd x22, 22*8(sp) /* s6 */ + sd x23, 23*8(sp) /* s7 */ + sd x24, 24*8(sp) /* s8 */ + sd x25, 25*8(sp) /* s9 */ + sd x26, 26*8(sp) /* s10 */ + sd x27, 27*8(sp) /* s11 */ + sd x28, 28*8(sp) /* t3 */ + sd x29, 29*8(sp) /* t4 */ + sd x30, 30*8(sp) /* t5 */ + sd x31, 31*8(sp) /* t6 */ + + csrr s0, mstatus + sd s0, 32*8(sp) /* mstatus */ + + addi s0, sp, XCPTCONTEXT_SIZE + sd s0, 2*8(sp) /* original SP */ + + /* Setup arg0(exception cause), arg1(context) */ + + csrr a0, mcause /* exception cause */ + csrr s0, mepc + sd s0, 0(sp) /* exception PC */ + + mv a1, sp /* context = sp */ + +#if CONFIG_ARCH_INTERRUPTSTACK > 15 + /* Load mhartid (cpuid) */ + + csrr s0, mhartid + + /* Switch to interrupt stack TODO: select correct for hart */ + + la sp, g_intstacktop + +#endif + + /* Call interrupt handler in C */ + + jal x1, mpfs_dispatch_irq + + /* If context switch is needed, return a new sp */ + + mv sp, a0 + ld s0, 0(sp) /* restore mepc */ + csrw mepc, s0 + + ld s0, 32*8(sp) /* restore mstatus */ + csrw mstatus, s0 + + /* leave gp(x3) in 3*8(sp) untouched */ + + ld x4, 4*8(sp) /* tp */ + ld x5, 5*8(sp) /* t0 */ + ld x6, 6*8(sp) /* t1 */ + ld x7, 7*8(sp) /* t2 */ + ld x8, 8*8(sp) /* s0 */ + ld x9, 9*8(sp) /* s1 */ + ld x10, 10*8(sp) /* a0 */ + ld x11, 11*8(sp) /* a1 */ + ld x12, 12*8(sp) /* a2 */ + ld x13, 13*8(sp) /* a3 */ + ld x14, 14*8(sp) /* a4 */ + ld x15, 15*8(sp) /* a5 */ + ld x16, 16*8(sp) /* a6 */ + ld x17, 17*8(sp) /* a7 */ + ld x18, 18*8(sp) /* s2 */ + ld x19, 19*8(sp) /* s3 */ + ld x20, 20*8(sp) /* s4 */ + ld x21, 21*8(sp) /* s5 */ + ld x22, 22*8(sp) /* s6 */ + ld x23, 23*8(sp) /* s7 */ + ld x24, 24*8(sp) /* s8 */ + ld x25, 25*8(sp) /* s9 */ + ld x26, 26*8(sp) /* s10 */ + ld x27, 27*8(sp) /* s11 */ + ld x28, 28*8(sp) /* t3 */ + ld x29, 29*8(sp) /* t4 */ + ld x30, 30*8(sp) /* t5 */ + ld x31, 31*8(sp) /* t6 */ + + ld x1, 1*8(sp) /* ra */ + + ld sp, 2*8(sp) /* restore original sp */ + + /* Return from Machine Interrupt */ + + mret + +/************************************************************************************ + * Name: g_intstackalloc and g_intstackbase + ************************************************************************************/ + +#if CONFIG_ARCH_INTERRUPTSTACK > 15 + .bss + .balign 16 + .global g_intstackalloc + .global g_intstacktop + .type g_intstackalloc, object + .type g_intstacktop, object +g_intstackalloc: + .skip (((CONFIG_ARCH_INTERRUPTSTACK + 8) & ~15)) +g_intstacktop: + .size g_intstacktop, 0 + .size g_intstackalloc, (CONFIG_ARCH_INTERRUPTSTACK & ~15) +#endif diff --git a/arch/risc-v/src/mpfs/mpfs_idle.c b/arch/risc-v/src/mpfs/mpfs_idle.c new file mode 100755 index 00000000000..53960bb5276 --- /dev/null +++ b/arch/risc-v/src/mpfs/mpfs_idle.c @@ -0,0 +1,65 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/mpfs_idle.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include +#include + +#include "riscv_internal.h" + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: up_idle + * + * Description: + * up_idle() is the logic that will be executed when their is no other + * ready-to-run task. This is processor idle time and will continue until + * some interrupt occurs to cause a context switch from the idle task. + * + * Processing in this state may be processor-specific. e.g., this is where + * power management operations might be performed. + * + ****************************************************************************/ + +void up_idle(void) +{ +#if defined(CONFIG_SUPPRESS_INTERRUPTS) || defined(CONFIG_SUPPRESS_TIMER_INTS) + /* If the system is idle and there are no timer interrupts, then process + * "fake" timer interrupts. Hopefully, something will wake up. + */ + + nxsched_process_timer(); +#else + + /* This would be an appropriate place to put some MCU-specific logic to + * sleep in a reduced power mode until an interrupt occurs to save power + */ + + asm("WFI"); + +#endif +} diff --git a/arch/risc-v/src/mpfs/mpfs_irq.c b/arch/risc-v/src/mpfs/mpfs_irq.c new file mode 100755 index 00000000000..64eda615383 --- /dev/null +++ b/arch/risc-v/src/mpfs/mpfs_irq.c @@ -0,0 +1,330 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/mpfs_irq.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include + +#include +#include + +#include "riscv_internal.h" +#include "riscv_arch.h" + +#include "mpfs.h" + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +volatile uint64_t *g_current_regs[1]; + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: up_irqinitialize + ****************************************************************************/ + +void up_irqinitialize(void) +{ + /* Disable Machine interrupts */ + + up_irq_save(); + + /* Disable timer interrupt (in case of hotloading with debugger) */ + + up_disable_irq(MPFS_IRQ_MTIMER); + + /* enable access from supervisor mode */ + + putreg32(0x1, MPFS_PLIC_CTRL); + + /* Disable all global interrupts for current hart */ + + uint64_t hart_id = READ_CSR(mhartid); + + /* hart0 is E51 we can't run on that (need different irq handling) */ + + DEBUGASSERT(hart_id != 0); + + uint32_t *miebase = (uint32_t *)(MPFS_PLIC_H1_MIE0 + + (hart_id - 1) * MPFS_HART_MIE_OFFSET); + + putreg32(0x0, miebase + 0); + putreg32(0x0, miebase + 1); + putreg32(0x0, miebase + 2); + putreg32(0x0, miebase + 3); + putreg32(0x0, miebase + 4); + putreg32(0x0, miebase + 5); + + /* Clear pendings in PLIC (for current hart) */ + + uintptr_t claim_address = MPFS_PLIC_H1_MCLAIM + + ((hart_id - 1) * MPFS_PLIC_NEXTHART_OFFSET); + uint32_t val = getreg32(claim_address); + putreg32(val, claim_address); + + /* Colorize the interrupt stack for debug purposes */ + +#if defined(CONFIG_STACK_COLORATION) && CONFIG_ARCH_INTERRUPTSTACK > 15 + size_t intstack_size = (CONFIG_ARCH_INTERRUPTSTACK & ~15); + riscv_stack_color((FAR void *)&g_intstackalloc, intstack_size); +#endif + + /* Set priority for all global interrupts to 1 (lowest) */ + + int id; + + for (id = 1; id <= NR_IRQS; id++) + { + putreg32(1, (uintptr_t)(MPFS_PLIC_PRIORITY + (4 * id))); + } + + /* Set irq threshold to 0 (permits all global interrupts) */ + + uint32_t *threshold_address = (uint32_t *)(MPFS_PLIC_H1_MTHRESHOLD + + ((hart_id - 1) * MPFS_PLIC_NEXTHART_OFFSET)); + putreg32(0, threshold_address); + + /* currents_regs is non-NULL only while processing an interrupt */ + + CURRENT_REGS = NULL; + + /* Attach the ecall interrupt handler */ + + irq_attach(MPFS_IRQ_ECALLM, riscv_swint, NULL); + +#ifdef CONFIG_BUILD_PROTECTED + irq_attach(MPFS_IRQ_ECALLU, riscv_swint, NULL); +#endif + +#ifndef CONFIG_SUPPRESS_INTERRUPTS + + /* And finally, enable interrupts */ + + up_irq_enable(); +#endif +} + +/**************************************************************************** + * Name: up_disable_irq + * + * Description: + * Disable the IRQ specified by 'irq' + * + ****************************************************************************/ + +void up_disable_irq(int irq) +{ + int extirq = 0; + uint64_t oldstat = 0; + + if (irq == MPFS_IRQ_MSOFT) + { + /* Read mstatus & clear machine software interrupt enable in mie */ + + asm volatile ("csrrc %0, mie, %1": "=r" (oldstat) : "r"(MIE_MSIE)); + } + else if (irq == MPFS_IRQ_MTIMER) + { + /* Read mstatus & clear machine timer interrupt enable in mie */ + + asm volatile ("csrrc %0, mie, %1": "=r" (oldstat) : "r"(MIE_MTIE)); + } + else if (irq >= MPFS_IRQ_GLOBAL_START) + { + /* REVISIT: + * Comment from baremetal lib: + * OFFSET_TO_MSS_GLOBAL_INTS: + * "Think this was required in early bitfile" + * Seems to be still true with 2021.04 release + */ + + extirq = (irq - MPFS_IRQ_GLOBAL_START) + OFFSET_TO_MSS_GLOBAL_INTS; + + /* Clear enable bit for the irq */ + + uint64_t hart_id = READ_CSR(mhartid); + uintptr_t miebase = MPFS_PLIC_H1_MIE0 + + ((hart_id - 1) * MPFS_HART_MIE_OFFSET); + + if (0 <= extirq && extirq <= NR_IRQS - MPFS_IRQ_GLOBAL_START) + { + modifyreg32(miebase + (4 * (extirq / 32)), 1 << (extirq % 32), 0); + } + else + { + ASSERT(false); + } + } +} + +/**************************************************************************** + * Name: up_enable_irq + * + * Description: + * Enable the IRQ specified by 'irq' + * + ****************************************************************************/ + +void up_enable_irq(int irq) +{ + int extirq; + uint64_t oldstat; + + if (irq == MPFS_IRQ_MSOFT) + { + /* Read mstatus & set machine software interrupt enable in mie */ + + asm volatile ("csrrs %0, mie, %1": "=r" (oldstat) : "r"(MIE_MSIE)); + } + else if (irq == MPFS_IRQ_MTIMER) + { + /* Read mstatus & set machine timer interrupt enable in mie */ + + asm volatile ("csrrs %0, mie, %1": "=r" (oldstat) : "r"(MIE_MTIE)); + } + else if (irq >= MPFS_IRQ_GLOBAL_START) + { + /* REVISIT: + * Comment from baremetal lib: + * OFFSET_TO_MSS_GLOBAL_INTS: + * "Think this was required in early bitfile" + * Seems to be still true with 2021.04 release + */ + + extirq = (irq - MPFS_IRQ_GLOBAL_START) + OFFSET_TO_MSS_GLOBAL_INTS; + + /* Set enable bit for the irq */ + + uint64_t hart_id = READ_CSR(mhartid); + uintptr_t miebase = MPFS_PLIC_H1_MIE0 + + ((hart_id - 1) * MPFS_HART_MIE_OFFSET); + + if (0 <= extirq && extirq <= NR_IRQS - MPFS_IRQ_GLOBAL_START) + { + modifyreg32(miebase + (4 * (extirq / 32)), 0, 1 << (extirq % 32)); + } + else + { + ASSERT(false); + } + } +} + +/**************************************************************************** + * Name: riscv_get_newintctx + * + * Description: + * Return initial mstatus when a task is created. + * + ****************************************************************************/ + +uint32_t riscv_get_newintctx(void) +{ + /* Set machine previous privilege mode to machine mode. Reegardless of + * how NuttX is configured and of what kind of thread is being started. + * That is because all threads, even user-mode threads will start in + * kernel trampoline at nxtask_start() or pthread_start(). + * The thread's privileges will be dropped before transitioning to + * user code. Also set machine previous interrupt enable. + */ + +#ifdef CONFIG_ARCH_FPU + return (MSTATUS_FS_INIT | MSTATUS_MPPM | MSTATUS_MPIE); +#else + return (MSTATUS_MPPM | MSTATUS_MPIE); +#endif +} + +/**************************************************************************** + * Name: riscv_ack_irq + * + * Description: + * Acknowledge the IRQ + * + ****************************************************************************/ + +void riscv_ack_irq(int irq) +{ +} + +/**************************************************************************** + * Name: up_irq_save + * + * Description: + * Return the current interrupt state and disable interrupts + * + ****************************************************************************/ + +irqstate_t up_irq_save(void) +{ + uint64_t oldstat; + + /* Read mstatus & clear machine interrupt enable (MIE) in mstatus */ + + asm volatile ("csrrc %0, mstatus, %1": "=r" (oldstat) : "r"(MSTATUS_MIE)); + return oldstat; +} + +/**************************************************************************** + * Name: up_irq_restore + * + * Description: + * Restore previous IRQ mask state + * + ****************************************************************************/ + +void up_irq_restore(irqstate_t flags) +{ + /* Write flags to mstatus */ + + asm volatile("csrw mstatus, %0" : /* no output */ : "r" (flags)); +} + +/**************************************************************************** + * Name: up_irq_enable + * + * Description: + * Return the current interrupt state and enable interrupts + * + ****************************************************************************/ + +irqstate_t up_irq_enable(void) +{ + uint64_t oldstat; + + /* Enable MEIE (machine external interrupt enable) */ + + asm volatile ("csrrs %0, mie, %1": "=r" (oldstat) : "r"(MIE_MEIE)); + + /* Read mstatus & set machine interrupt enable (MIE) in mstatus */ + + asm volatile ("csrrs %0, mstatus, %1": "=r" (oldstat) : "r"(MSTATUS_MIE)); + return oldstat; +} diff --git a/arch/risc-v/src/mpfs/mpfs_irq_dispatch.c b/arch/risc-v/src/mpfs/mpfs_irq_dispatch.c new file mode 100755 index 00000000000..2632aa6589c --- /dev/null +++ b/arch/risc-v/src/mpfs/mpfs_irq_dispatch.c @@ -0,0 +1,175 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/mpfs_irq_dispatch.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +#include +#include +#include +#include + +#include "riscv_arch.h" +#include "riscv_internal.h" + +#include "group/group.h" +#include "hardware/mpfs_memorymap.h" +#include "hardware/mpfs_plic.h" + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +extern void up_fault(int irq, uint64_t *regs); + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * mpfs_dispatch_irq + ****************************************************************************/ + +void *mpfs_dispatch_irq(uint64_t vector, uint64_t *regs) +{ + uint32_t irq = (vector & 0x3f); + uint64_t *mepc = regs; + + board_autoled_on(LED_INIRQ); + + /* Check if fault happened */ + + if (vector < MPFS_IRQ_ECALLU || + vector == MPFS_IRQ_INSTRUCTIONPF || + vector == MPFS_IRQ_LOADPF || + vector == MPFS_IRQ_SROREPF || + vector == MPFS_IRQ_RESERVED) + { + up_fault((int)irq, regs); + } + + if (vector & 0x8000000000000000) + { + irq += MPFS_IRQ_ASYNC; + } + + /* Firstly, check if the irq is machine external interrupt */ + + uint64_t hart_id = READ_CSR(mhartid); + uintptr_t claim_address = MPFS_PLIC_H1_MCLAIM + + ((hart_id - 1) * MPFS_PLIC_NEXTHART_OFFSET); + + if (irq == MPFS_IRQ_MEXT) + { + uint32_t ext = getreg32(claim_address); + + /* Add the value to nuttx irq which is offset to the mext */ + + irq = MPFS_IRQ_EXT_START + ext; + } + + /* NOTE: In case of ecall, we need to adjust mepc in the context */ + + if (irq == MPFS_IRQ_ECALLM || irq == MPFS_IRQ_ECALLU) + { + *mepc += 4; + } + + /* Acknowledge the interrupt */ + + riscv_ack_irq(irq); + +#ifdef CONFIG_SUPPRESS_INTERRUPTS + PANIC(); +#else + /* Current regs non-zero indicates that we are processing an interrupt; + * CURRENT_REGS is also used to manage interrupt level context switches. + * + * Nested interrupts are not supported + */ + + ASSERT(CURRENT_REGS == NULL); + CURRENT_REGS = regs; + + /* MEXT means no interrupt */ + + if (irq != MPFS_IRQ_MEXT && irq != MPFS_IRQ_INVALID) + { + /* Deliver the IRQ */ + + irq_dispatch(irq, regs); + } + + if (irq > MPFS_IRQ_EXT_START) + { + /* Then write PLIC_CLAIM to clear pending in PLIC */ + + putreg32(irq - MPFS_IRQ_EXT_START, claim_address); + } + +#if defined(CONFIG_ARCH_FPU) || defined(CONFIG_ARCH_ADDRENV) + /* Check for a context switch. If a context switch occurred, then + * CURRENT_REGS will have a different value than it did on entry. If an + * interrupt level context switch has occurred, then restore the floating + * point state and the establish the correct address environment before + * returning from the interrupt. + */ + + if (regs != CURRENT_REGS) + { +#ifdef CONFIG_ARCH_FPU + /* Restore floating point registers */ + + riscv_restorefpu((uint64_t *)CURRENT_REGS); +#endif + +#ifdef CONFIG_ARCH_ADDRENV + /* Make sure that the address environment for the previously + * running task is closed down gracefully (data caches dump, + * MMU flushed) and set up the address environment for the new + * thread at the head of the ready-to-run list. + */ + + group_addrenv(NULL); +#endif + } +#endif + +#endif + + /* If a context switch occurred while processing the interrupt then + * CURRENT_REGS may have change value. If we return any value different + * from the input regs, then the lower level will know that a context + * switch occurred during interrupt processing. + */ + + regs = (uint64_t *)CURRENT_REGS; + CURRENT_REGS = NULL; + + board_autoled_off(LED_INIRQ); + + return regs; +} diff --git a/arch/risc-v/src/mpfs/mpfs_lowputc.c b/arch/risc-v/src/mpfs/mpfs_lowputc.c new file mode 100755 index 00000000000..a294e720298 --- /dev/null +++ b/arch/risc-v/src/mpfs/mpfs_lowputc.c @@ -0,0 +1,228 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/mpfs_lowputc.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include + +#include + +#include "riscv_internal.h" +#include "riscv_arch.h" + +#include "hardware/mpfs_memorymap.h" +#include "hardware/mpfs_uart.h" +#include "mpfs.h" +#include "mpfs_clockconfig.h" +#include "mpfs_config.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Select UART parameters for the selected console */ +#if defined(CONFIG_UART0_SERIAL_CONSOLE) +# define MPFS_CONSOLE_BASE MPFS_UART0_BASE +# define MPFS_CONSOLE_BAUD CONFIG_UART0_BAUD +# define MPFS_CONSOLE_BITS CONFIG_UART0_BITS +# define MPFS_CONSOLE_PARITY CONFIG_UART0_PARITY +# define MPFS_CONSOLE_2STOP CONFIG_UART0_2STOP +# define HAVE_UART +#elif defined(CONFIG_UART1_SERIAL_CONSOLE) +# define MPFS_CONSOLE_BASE MPFS_UART1_BASE +# define MPFS_CONSOLE_BAUD CONFIG_UART1_BAUD +# define MPFS_CONSOLE_BITS CONFIG_UART1_BITS +# define MPFS_CONSOLE_PARITY CONFIG_UART1_PARITY +# define MPFS_CONSOLE_2STOP CONFIG_UART1_2STOP +# define HAVE_UART +#elif defined(CONFIG_UART2_SERIAL_CONSOLE) +# define MPFS_CONSOLE_BASE MPFS_UART2_BASE +# define MPFS_CONSOLE_BAUD CONFIG_UART2_BAUD +# define MPFS_CONSOLE_BITS CONFIG_UART2_BITS +# define MPFS_CONSOLE_PARITY CONFIG_UART2_PARITY +# define MPFS_CONSOLE_2STOP CONFIG_UART2_2STOP +# define HAVE_UART +# elif defined(CONFIG_UART3_SERIAL_CONSOLE) +# define MPFS_CONSOLE_BASE MPFS_UART3_BASE +# define MPFS_CONSOLE_BAUD CONFIG_UART3_BAUD +# define MPFS_CONSOLE_BITS CONFIG_UART3_BITS +# define MPFS_CONSOLE_PARITY CONFIG_UART3_PARITY +# define MPFS_CONSOLE_2STOP CONFIG_UART3_2STOP +# define HAVE_UART +# elif defined(CONFIG_UART4_SERIAL_CONSOLE) +# define MPFS_CONSOLE_BASE MPFS_UART4_BASE +# define MPFS_CONSOLE_BAUD CONFIG_UART4_BAUD +# define MPFS_CONSOLE_BITS CONFIG_UART4BITS +# define MPFS_CONSOLE_PARITY CONFIG_UART4_PARITY +# define MPFS_CONSOLE_2STOP CONFIG_UART4_2STOP +# define HAVE_UART +# elif defined(HAVE_UART) +# error "No CONFIG_UARTn_SERIAL_CONSOLE Setting" +# endif + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +#if !defined(CONFIG_SUPPRESS_UART_CONFIG) + +/**************************************************************************** + * Name: config_baud_divisors + * + * Description: + * Configure the UART baudrate divisors. + * + ****************************************************************************/ + +static void config_baud_divisors(void) +{ + uint32_t baud_value; + uint32_t baud_value_by_64; + uint32_t baud_value_by_128; + uint32_t fractional_baud_value; + uint64_t pclk_freq; + + pclk_freq = MPFS_MSS_APB_AHB_CLK; + + /* Compute baud value based on requested baud rate and PCLK frequency. + * The baud value is computed using the following equation: + * baud_value = PCLK_Frequency / (baud_rate * 16) + */ + + baud_value_by_128 = (uint32_t)((8UL * pclk_freq) / MPFS_CONSOLE_BAUD); + baud_value_by_64 = baud_value_by_128 / 2U; + baud_value = baud_value_by_64 / 64U; + fractional_baud_value = baud_value_by_64 - (baud_value * 64U); + fractional_baud_value += (baud_value_by_128 - (baud_value * 128U)) + - (fractional_baud_value * 2U); + + if (baud_value <= (uint32_t)UINT16_MAX) + { + putreg32(baud_value >> 8, MPFS_CONSOLE_BASE + MPFS_UART_DLH_OFFSET); + putreg32(baud_value & 0xff, MPFS_CONSOLE_BASE + MPFS_UART_DLH_OFFSET); + + if (baud_value > 1) + { + /* Enable Fractional baud rate */ + + uint8_t mm0 = getreg32(MPFS_CONSOLE_BASE + MPFS_UART_MM0_OFFSET); + mm0 |= UART_MM0_EFBR; + putreg32(mm0, MPFS_CONSOLE_BASE + MPFS_UART_MM0_OFFSET); + putreg32(fractional_baud_value, + MPFS_CONSOLE_BASE + MPFS_UART_DFR_OFFSET); + } + } +} +#endif + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: riscv_lowputc + * + * Description: + * Output one byte on the serial console + * + ****************************************************************************/ + +void riscv_lowputc(char ch) +{ +#if defined HAVE_UART && defined HAVE_SERIAL_CONSOLE + /* Wait for the transmitter to be available */ + + while ((getreg32(MPFS_CONSOLE_BASE + MPFS_UART_LSR_OFFSET) + & UART_LSR_THRE) == 0); + + /* Send the character */ + + putreg32((uint32_t)ch, MPFS_CONSOLE_BASE + MPFS_UART_THR_OFFSET); +#endif +} + +/**************************************************************************** + * Name: mpfs_lowsetup + * + * Description: + * This performs basic initialization of the UART used for the serial + * console. Its purpose is to get the console output available as soon + * as possible. + * + ****************************************************************************/ + +void mpfs_lowsetup(void) +{ +#if defined(HAVE_UART) + + /* Enable and configure the selected console device */ + + /* REVISIT: bringup UART from reset and set clocking. + * Currently done by HSS bootloader + */ + +#if defined(HAVE_SERIAL_CONSOLE) && !defined(CONFIG_SUPPRESS_UART_CONFIG) + uint32_t lcr = 0; + + lcr = 0; + switch (MPFS_CONSOLE_BITS) + { + case 5: + lcr |= UART_LCR_DLS_5BITS; + break; + + case 6: + lcr |= UART_LCR_DLS_6BITS; + break; + + case 7: + lcr |= UART_LCR_DLS_7BITS; + break; + + case 8: + default: + lcr |= UART_LCR_DLS_8BITS; + break; + } + +#ifdef MPFS_CONSOLE_2STOP + lcr |= UART_LCR_STOP; +#endif + + if (MPFS_CONSOLE_PARITY == 1) + { + lcr |= UART_LCR_PEN; + } + else if (MPFS_CONSOLE_PARITY == 2) + { + lcr |= (UART_LCR_PEN | UART_LCR_EPS); + } + + putreg32(lcr | UART_LCR_DLAB, MPFS_CONSOLE_BASE + MPFS_UART_LCR_OFFSET); + config_baud_divisors(); + putreg32(lcr, MPFS_CONSOLE_BASE + MPFS_UART_LCR_OFFSET); + +#endif /* HAVE_SERIAL_CONSOLE && !CONFIG_SUPPRESS_UART_CONFIG */ +#endif /* HAVE_UART */ +} diff --git a/arch/risc-v/src/mpfs/mpfs_lowputc.h b/arch/risc-v/src/mpfs/mpfs_lowputc.h new file mode 100755 index 00000000000..710a16c866d --- /dev/null +++ b/arch/risc-v/src/mpfs/mpfs_lowputc.h @@ -0,0 +1,59 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/mpfs_lowputc.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_MPFS_MPFS_LOWPUTC_H +#define __ARCH_RISCV_SRC_MPFS_MPFS_LOWPUTC_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include "chip.h" + +/**************************************************************************** + * Public Functions Prototypes + ****************************************************************************/ + +#ifndef __ASSEMBLY__ + +#undef EXTERN +#if defined(__cplusplus) +#define EXTERN extern "C" +extern "C" +{ +#else +#define EXTERN extern +#endif + +/**************************************************************************** + * Name: mpfs_lowsetup + ****************************************************************************/ + +EXTERN void mpfs_lowsetup(void); + +#undef EXTERN +#if defined(__cplusplus) +} +#endif + +#endif /* __ASSEMBLY__ */ +#endif /* __ARCH_RISCV_SRC_MPFS_MPFS_LOWPUTC_H */ diff --git a/arch/risc-v/src/mpfs/mpfs_memorymap.h b/arch/risc-v/src/mpfs/mpfs_memorymap.h new file mode 100755 index 00000000000..68620c06f2f --- /dev/null +++ b/arch/risc-v/src/mpfs/mpfs_memorymap.h @@ -0,0 +1,53 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/mpfs_memorymap.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef _ARCH_RISCV_SRC_MPFS_MPFS_MEMORYMAP_H +#define _ARCH_RISCV_SRC_MPFS_MPFS_MEMORYMAP_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include "hardware/mpfs_clint.h" +#include "hardware/mpfs_memorymap.h" +#include "hardware/mpfs_plic.h" +#include "hardware/mpfs_sysctl.h" +#include "hardware/mpfs_uart.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Idle thread stack starts from _default_stack_limit */ + +#ifndef __ASSEMBLY__ +extern uintptr_t *_default_stack_limit; +#define MPFS_IDLESTACK_BASE (uintptr_t)&_default_stack_limit +#else +#define MPFS_IDLESTACK_BASE _default_stack_limit +#endif + +#define MPFS_IDLESTACK_SIZE (CONFIG_IDLETHREAD_STACKSIZE & ~15) + +#define MPFS_IDLESTACK0_TOP (MPFS_IDLESTACK_BASE + MPFS_IDLESTACK_SIZE) + +#define MPFS_IDLESTACK_TOP (MPFS_IDLESTACK0_TOP) + +#endif /* _ARCH_RISCV_SRC_MPFS_MPFS_MEMORYMAP_H */ diff --git a/arch/risc-v/src/mpfs/mpfs_serial.c b/arch/risc-v/src/mpfs/mpfs_serial.c new file mode 100755 index 00000000000..26e20ff6420 --- /dev/null +++ b/arch/risc-v/src/mpfs/mpfs_serial.c @@ -0,0 +1,1069 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/mpfs_serial.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include "riscv_arch.h" +#include "riscv_internal.h" + +#include "chip.h" +#include "mpfs.h" +#include "mpfs_config.h" +#include "mpfs_clockconfig.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* If we are not using the serial driver for the console, then we still must + * provide some minimal implementation of up_putc. + */ + +#ifdef USE_SERIALDRIVER + +/* Which UART with be tty0/console and which tty1? The console will always + * be ttyS0. If there is no console then will use the lowest numbered UART. + */ + +#ifdef HAVE_SERIAL_CONSOLE +# if defined(CONFIG_UART0_SERIAL_CONSOLE) +# define CONSOLE_DEV g_uart0port /* UART0 is console */ +# define SERIAL_CONSOLE 1 +# elif defined(CONFIG_UART1_SERIAL_CONSOLE) +# define CONSOLE_DEV g_uart1port /* UART1 is console */ +# define SERIAL_CONSOLE 2 +# elif defined(CONFIG_UART2_SERIAL_CONSOLE) +# define CONSOLE_DEV g_uart2port /* UART2 is console */ +# define SERIAL_CONSOLE 3 +# elif defined(CONFIG_UART3_SERIAL_CONSOLE) +# define CONSOLE_DEV g_uart3port /* UART3 is console */ +# define SERIAL_CONSOLE 4 +# elif defined(CONFIG_UART4_SERIAL_CONSOLE) +# define CONSOLE_DEV g_uart4port /* UART4 is console */ +# define SERIAL_CONSOLE 5 +# else +# error "I'm confused... Do we have a serial console or not?" +# endif +#else +# undef CONSOLE_DEV /* No console */ +# undef CONFIG_UART0_SERIAL_CONSOLE +# undef CONFIG_UART1_SERIAL_CONSOLE +# undef CONFIG_UART2_SERIAL_CONSOLE +# undef CONFIG_UART3_SERIAL_CONSOLE +# undef CONFIG_UART4_SERIAL_CONSOLE +# if defined(CONFIG_MPFS_UART0) +# define SERIAL_CONSOLE 1 +# elif defined(CONFIG_MPFS_UART1) +# define SERIAL_CONSOLE 2 +# elif defined(CONFIG_MPFS_UART2) +# define SERIAL_CONSOLE 3 +# elif defined(CONFIG_MPFS_UART3) +# define SERIAL_CONSOLE 4 +# elif defined(CONFIG_MPFS_UART4) +# define SERIAL_CONSOLE 5 +# else +# undef TTYS0_DEV +# undef TTYS1_DEV +# endif +#endif + +/* Common initialization logic will not not know that the all of the UARTs + * have been disabled. So, as a result, we may still have to provide + * stub implementations of riscv_earlyserialinit(), riscv_serialinit(), and + * up_putc(). + */ + +#ifdef HAVE_UART_DEVICE + +/**************************************************************************** + * Private Types + ****************************************************************************/ + +struct up_dev_s +{ + uintptr_t uartbase; /* Base address of UART registers */ + uint32_t baud; /* Configured baud */ + uint32_t ier; /* Saved IER value */ + uint8_t irq; /* IRQ associated with this UART */ + uint8_t parity; /* 0=none, 1=odd, 2=even */ + uint8_t bits; /* Number of bits (7 or 8) */ + bool stopbits2; /* true: Configure with 2 stop bits instead of 1 */ +}; + +/**************************************************************************** + * Private Function Prototypes + ****************************************************************************/ + +static int up_setup(struct uart_dev_s *dev); +static void up_shutdown(struct uart_dev_s *dev); +static int up_attach(struct uart_dev_s *dev); +static void up_detach(struct uart_dev_s *dev); +static int uart_interrupt(int irq, void *context, void *arg); +static int up_ioctl(struct file *filep, int cmd, unsigned long arg); +static int up_receive(struct uart_dev_s *dev, unsigned int *status); +static void up_rxint(struct uart_dev_s *dev, bool enable); +static bool up_rxavailable(struct uart_dev_s *dev); +static void up_send(struct uart_dev_s *dev, int ch); +static void up_txint(struct uart_dev_s *dev, bool enable); +static bool up_txready(struct uart_dev_s *dev); +static bool up_txempty(struct uart_dev_s *dev); + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static const struct uart_ops_s g_uart_ops = +{ + .setup = up_setup, + .shutdown = up_shutdown, + .attach = up_attach, + .detach = up_detach, + .ioctl = up_ioctl, + .receive = up_receive, + .rxint = up_rxint, + .rxavailable = up_rxavailable, +#ifdef CONFIG_SERIAL_IFLOWCONTROL + .rxflowcontrol = NULL, +#endif + .send = up_send, + .txint = up_txint, + .txready = up_txready, + .txempty = up_txempty, +}; + +/* I/O buffers */ + +#ifdef CONFIG_MPFS_UART0 +static char g_uart0rxbuffer[CONFIG_UART0_RXBUFSIZE]; +static char g_uart0txbuffer[CONFIG_UART0_TXBUFSIZE]; +#endif + +#ifdef CONFIG_MPFS_UART1 +static char g_uart1rxbuffer[CONFIG_UART1_RXBUFSIZE]; +static char g_uart1txbuffer[CONFIG_UART1_TXBUFSIZE]; +#endif + +#ifdef CONFIG_MPFS_UART2 +static char g_uart2rxbuffer[CONFIG_UART2_RXBUFSIZE]; +static char g_uart2txbuffer[CONFIG_UART2_TXBUFSIZE]; +#endif + +#ifdef CONFIG_MPFS_UART3 +static char g_uart3rxbuffer[CONFIG_UART3_RXBUFSIZE]; +static char g_uart3txbuffer[CONFIG_UART3_TXBUFSIZE]; +#endif + +#ifdef CONFIG_MPFS_UART4 +static char g_uart4rxbuffer[CONFIG_UART4_RXBUFSIZE]; +static char g_uart4txbuffer[CONFIG_UART4_TXBUFSIZE]; +#endif + +#ifdef CONFIG_MPFS_UART0 +static struct up_dev_s g_uart0priv = +{ + .uartbase = MPFS_UART0_BASE, + .baud = CONFIG_UART0_BAUD, + .irq = MPFS_IRQ_MMUART0, + .parity = CONFIG_UART0_PARITY, + .bits = CONFIG_UART0_BITS, + .stopbits2 = CONFIG_UART0_2STOP, +}; + +static uart_dev_t g_uart0port = +{ +#if SERIAL_CONSOLE == 1 + .isconsole = 1, +#endif + .recv = + { + .size = CONFIG_UART0_RXBUFSIZE, + .buffer = g_uart0rxbuffer, + }, + .xmit = + { + .size = CONFIG_UART0_TXBUFSIZE, + .buffer = g_uart0txbuffer, + }, + .ops = &g_uart_ops, + .priv = &g_uart0priv, +}; +#endif + +#ifdef CONFIG_MPFS_UART1 +static struct up_dev_s g_uart1priv = +{ + .uartbase = MPFS_UART1_BASE, + .baud = CONFIG_UART1_BAUD, + .irq = MPFS_IRQ_MMUART1, + .parity = CONFIG_UART1_PARITY, + .bits = CONFIG_UART1_BITS, + .stopbits2 = CONFIG_UART1_2STOP, +}; + +static uart_dev_t g_uart1port = +{ +#if SERIAL_CONSOLE == 2 + .isconsole = 1, +#endif + .recv = + { + .size = CONFIG_UART1_RXBUFSIZE, + .buffer = g_uart1rxbuffer, + }, + .xmit = + { + .size = CONFIG_UART1_TXBUFSIZE, + .buffer = g_uart1txbuffer, + }, + .ops = &g_uart_ops, + .priv = &g_uart1priv, +}; +#endif + +#ifdef CONFIG_MPFS_UART2 +static struct up_dev_s g_uart2priv = +{ + .uartbase = MPFS_UART2_BASE, + .baud = CONFIG_UART2_BAUD, + .irq = MPFS_IRQ_MMUART2, + .parity = CONFIG_UART2_PARITY, + .bits = CONFIG_UART2_BITS, + .stopbits2 = CONFIG_UART2_2STOP, +}; + +static uart_dev_t g_uart2port = +{ +#if SERIAL_CONSOLE == 3 + .isconsole = 1, +#endif + .recv = + { + .size = CONFIG_UART2_RXBUFSIZE, + .buffer = g_uart2rxbuffer, + }, + .xmit = + { + .size = CONFIG_UART2_TXBUFSIZE, + .buffer = g_uart2txbuffer, + }, + .ops = &g_uart_ops, + .priv = &g_uart2priv, +}; +#endif + +#ifdef CONFIG_MPFS_UART3 +static struct up_dev_s g_uart3priv = +{ + .uartbase = MPFS_UART3_BASE, + .baud = CONFIG_UART3_BAUD, + .irq = MPFS_IRQ_MMUART3, + .parity = CONFIG_UART3_PARITY, + .bits = CONFIG_UART3_BITS, + .stopbits2 = CONFIG_UART3_2STOP, +}; + +static uart_dev_t g_uart3port = +{ +#if SERIAL_CONSOLE == 4 + .isconsole = 1, +#endif + .recv = + { + .size = CONFIG_UART3_RXBUFSIZE, + .buffer = g_uart3rxbuffer, + }, + .xmit = + { + .size = CONFIG_UART3_TXBUFSIZE, + .buffer = g_uart3txbuffer, + }, + .ops = &g_uart_ops, + .priv = &g_uart3priv, +}; +#endif + +#ifdef CONFIG_MPFS_UART4 +static struct up_dev_s g_uart4priv = +{ + .uartbase = MPFS_UART4_BASE, + .baud = CONFIG_UART4_BAUD, + .irq = MPFS_IRQ_MMUART4, + .parity = CONFIG_UART4_PARITY, + .bits = CONFIG_UART4_BITS, + .stopbits2 = CONFIG_UART4_2STOP, +}; + +static uart_dev_t g_uart4port = +{ +#if SERIAL_CONSOLE == 5 + .isconsole = 1, +#endif + .recv = + { + .size = CONFIG_UART4_RXBUFSIZE, + .buffer = g_uart4rxbuffer, + }, + .xmit = + { + .size = CONFIG_UART3_TXBUFSIZE, + .buffer = g_uart4txbuffer, + }, + .ops = &g_uart_ops, + .priv = &g_uart4priv, +}; +#endif + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: up_serialin + ****************************************************************************/ + +static inline uint32_t up_serialin(struct up_dev_s *priv, uint32_t offset) +{ + return getreg32(priv->uartbase + offset); +} + +/**************************************************************************** + * Name: up_serialout + ****************************************************************************/ + +static inline void up_serialout(struct up_dev_s *priv, int offset, + uint32_t value) +{ + putreg32(value, priv->uartbase + offset); +} + +/**************************************************************************** + * Name: up_disableuartint + ****************************************************************************/ + +static inline void up_disableuartint(struct up_dev_s *priv, uint32_t *ier) +{ + if (ier) + { + *ier = priv->ier & UART_IER_ALLIE; + } + + priv->ier &= ~UART_IER_ALLIE; + up_serialout(priv, MPFS_UART_IER_OFFSET, priv->ier); +} + +/**************************************************************************** + * Name: up_restoreuartint + ****************************************************************************/ + +static inline void up_restoreuartint(struct up_dev_s *priv, uint32_t ier) +{ + priv->ier |= ier & UART_IER_ALLIE; + up_serialout(priv, MPFS_UART_IER_OFFSET, priv->ier); +} + +/**************************************************************************** + * Name: up_enablebreaks + ****************************************************************************/ + +static inline void up_enablebreaks(struct up_dev_s *priv, bool enable) +{ + uint32_t lcr = up_serialin(priv, MPFS_UART_LCR_OFFSET); + + if (enable) + { + lcr |= UART_LCR_BC; + } + else + { + lcr &= ~UART_LCR_BC; + } + + up_serialout(priv, MPFS_UART_LCR_OFFSET, lcr); +} + +/**************************************************************************** + * Name: up_config_baud_divisors + * + * Description: + * Configure the UART baudrate divisors. + * + ****************************************************************************/ + +static void up_config_baud_divisors(struct up_dev_s *priv, uint32_t baudrate) +{ + uint32_t baud_value; + uint32_t baud_value_by_64; + uint32_t baud_value_by_128; + uint32_t fractional_baud_value; + uint64_t pclk_freq; + + pclk_freq = MPFS_MSS_APB_AHB_CLK; + + /* Compute baud value based on requested baud rate and PCLK frequency. + * The baud value is computed using the following equation: + * baud_value = PCLK_Frequency / (baud_rate * 16) + */ + + baud_value_by_128 = (uint32_t)((8UL * pclk_freq) / baudrate); + baud_value_by_64 = baud_value_by_128 / 2U; + baud_value = baud_value_by_64 / 64U; + fractional_baud_value = baud_value_by_64 - (baud_value * 64U); + fractional_baud_value += (baud_value_by_128 - (baud_value * 128U)) + - (fractional_baud_value * 2U); + + if (baud_value <= (uint32_t)UINT16_MAX) + { + up_serialout(priv, MPFS_UART_DLH_OFFSET, baud_value >> 8); + up_serialout(priv, MPFS_UART_DLL_OFFSET, baud_value & 0xff); + + if (baud_value > 1) + { + /* Enable Fractional baud rate */ + + uint8_t mm0 = up_serialin(priv, MPFS_UART_MM0_OFFSET); + mm0 |= UART_MM0_EFBR; + up_serialout(priv, MPFS_UART_MM0_OFFSET, mm0); + up_serialout(priv, MPFS_UART_DFR_OFFSET, fractional_baud_value); + } + } +} + +/**************************************************************************** + * Name: up_setup + * + * Description: + * Configure the UART baud, bits, parity, etc. This method is called the + * first time that the serial port is opened. + * + ****************************************************************************/ + +static int up_setup(struct uart_dev_s *dev) +{ +#ifndef CONFIG_SUPPRESS_UART_CONFIG + struct up_dev_s *priv = (struct up_dev_s *)dev->priv; + uint32_t lcr; + + /* Clear fifos */ + + up_serialout(priv, MPFS_UART_FCR_OFFSET, + (UART_FCR_RFIFOR | UART_FCR_XFIFOR)); + + /* set filter to minimum value */ + + up_serialout(priv, MPFS_UART_GFR_OFFSET, 0); + + /* set default TX time guard */ + + up_serialout(priv, MPFS_UART_TTG_OFFSET, 0); + + /* Set trigger */ + + up_serialout(priv, MPFS_UART_FCR_OFFSET, + (UART_FCR_FIFOE | UART_FCR_RT_HALF)); + + /* Set up the IER */ + + priv->ier = up_serialin(priv, MPFS_UART_IER_OFFSET); + + /* Set up the LCR */ + + lcr = 0; + + switch (priv->bits) + { + case 5: + lcr |= UART_LCR_DLS_5BITS; + break; + + case 6: + lcr |= UART_LCR_DLS_6BITS; + break; + + case 7: + lcr |= UART_LCR_DLS_7BITS; + break; + + case 8: + default: + lcr |= UART_LCR_DLS_8BITS; + break; + } + + if (priv->stopbits2) + { + lcr |= UART_LCR_STOP; + } + + if (priv->parity == 1) + { + lcr |= UART_LCR_PEN; + } + else if (priv->parity == 2) + { + lcr |= (UART_LCR_PEN | UART_LCR_EPS); + } + + /* Enter DLAB=1 */ + + up_serialout(priv, MPFS_UART_LCR_OFFSET, (lcr | UART_LCR_DLAB)); + + /* Set the BAUD divisor */ + + up_config_baud_divisors(priv, priv->baud); + + /* Clear DLAB */ + + up_serialout(priv, MPFS_UART_LCR_OFFSET, lcr); + + /* Configure the FIFOs */ + + up_serialout(priv, MPFS_UART_FCR_OFFSET, + (UART_FCR_RT_HALF | UART_FCR_XFIFOR | UART_FCR_RFIFOR | + UART_FCR_FIFOE)); + + /* Enable Auto-Flow Control in the Modem Control Register */ + +#if defined(CONFIG_SERIAL_IFLOWCONTROL) || defined(CONFIG_SERIAL_OFLOWCONTROL) +# warning Missing logic +#endif + +#endif + return OK; +} + +/**************************************************************************** + * Name: up_shutdown + * + * Description: + * Disable the UART. This method is called when the serial port is closed + * + ****************************************************************************/ + +static void up_shutdown(struct uart_dev_s *dev) +{ + struct up_dev_s *priv = (struct up_dev_s *)dev->priv; + + /* Disable interrupts */ + + up_disableuartint(priv, NULL); +} + +/**************************************************************************** + * Name: up_attach + * + * Description: + * Configure the UART to operation in interrupt driven mode. This method is + * called when the serial port is opened. Normally, this is just after the + * the setup() method is called, however, the serial console may operate in + * a non-interrupt driven mode during the boot phase. + * + * RX and TX interrupts are not enabled by the attach method (unless the + * hardware supports multiple levels of interrupt enabling). The RX and TX + * interrupts are not enabled until the txint() and rxint() are called. + * + ****************************************************************************/ + +static int up_attach(struct uart_dev_s *dev) +{ + struct up_dev_s *priv = (struct up_dev_s *)dev->priv; + int ret; + + /* Attach and enable the IRQ */ + + ret = irq_attach(priv->irq, uart_interrupt, dev); + if (ret == OK) + { + /* Enable the interrupt (RX and TX interrupts are still disabled + * in the UART + */ + + up_enable_irq(priv->irq); + } + + return ret; +} + +/**************************************************************************** + * Name: up_detach + * + * Description: + * Detach UART interrupts. This method is called when the serial port is + * closed normally just before the shutdown method is called. The exception + * is the serial console which is never shutdown. + * + ****************************************************************************/ + +static void up_detach(struct uart_dev_s *dev) +{ + struct up_dev_s *priv = (struct up_dev_s *)dev->priv; + + /* Disable interrupts */ + + up_disable_irq(priv->irq); + + /* Detach from the interrupt */ + + irq_detach(priv->irq); +} + +/**************************************************************************** + * Name: up_interrupt + * + * Description: + * This is the UART interrupt handler. It will be invoked when an + * interrupt received on the 'irq' It should call uart_transmitchars or + * uart_receivechar to perform the appropriate data transfers. The + * interrupt handling logic must be able to map the 'irq' number into the + * appropriate uart_dev_s structure in order to call these functions. + * + ****************************************************************************/ + +static int uart_interrupt(int irq, void *context, void *arg) +{ + struct uart_dev_s *dev = (struct uart_dev_s *)arg; + struct up_dev_s *priv; + uint32_t status; + int passes; + + DEBUGASSERT(dev != NULL && dev->priv != NULL); + priv = (struct up_dev_s *)dev->priv; + + /* Loop until there are no characters to be transferred or, + * until we have been looping for a long time. + */ + + for (passes = 0; passes < 256; passes++) + { + /* Get the current UART status */ + + status = up_serialin(priv, MPFS_UART_IIR_OFFSET); + + /* Handle the interrupt by its interrupt ID field */ + + switch (status & UART_IIR_IID_MASK) + { + /* Handle incoming, receive bytes (with or without timeout) */ + + case UART_IIR_IID_RECV: + case UART_IIR_IID_TIMEOUT: + { + uart_recvchars(dev); + break; + } + + /* Handle outgoing, transmit bytes */ + + case UART_IIR_IID_TXEMPTY: + { + uart_xmitchars(dev); + break; + } + + /* Just clear modem status interrupts */ + + case UART_IIR_IID_MODEM: + { + /* Read the modem status register (MSR) to clear */ + + status = up_serialin(priv, MPFS_UART_MSR_OFFSET); + _info("MSR: %02" PRIx32 "\n", status); + break; + } + + /* Just clear any line status interrupts */ + + case UART_IIR_IID_LINESTATUS: + { + /* Read the line status register (LSR) to clear */ + + status = up_serialin(priv, MPFS_UART_LSR_OFFSET); + _info("LSR: %02" PRIx32 "\n", status); + break; + } + + /* No further interrupts pending... return now */ + + case UART_IIR_IID_NONE: + { + return OK; + } + + /* Otherwise we have received an interrupt + * that we cannot handle + */ + + default: + { + _err("ERROR: Unexpected IIR: %02" PRIx32 "\n", status); + break; + } + } + } + + return OK; +} + +/**************************************************************************** + * Name: up_ioctl + * + * Description: + * All ioctl calls will be routed through this method + * + ****************************************************************************/ + +static int up_ioctl(struct file *filep, int cmd, unsigned long arg) +{ + return -ENOTTY; +} + +/**************************************************************************** + * Name: up_receive + * + * Description: + * Called (usually) from the interrupt level to receive one + * character from the UART. Error bits associated with the + * receipt are provided in the return 'status'. + * + ****************************************************************************/ + +static int up_receive(struct uart_dev_s *dev, uint32_t *status) +{ + struct up_dev_s *priv = (struct up_dev_s *)dev->priv; + uint32_t rbr; + + *status = up_serialin(priv, MPFS_UART_LSR_OFFSET); + rbr = up_serialin(priv, MPFS_UART_RBR_OFFSET); + return rbr; +} + +/**************************************************************************** + * Name: up_rxint + * + * Description: + * Call to enable or disable RX interrupts + * + ****************************************************************************/ + +static void up_rxint(struct uart_dev_s *dev, bool enable) +{ + struct up_dev_s *priv = (struct up_dev_s *)dev->priv; + if (enable) + { +#ifndef CONFIG_SUPPRESS_SERIAL_INTS + priv->ier |= UART_IER_ERBFI; +#endif + } + else + { + priv->ier &= ~UART_IER_ERBFI; + } + + up_serialout(priv, MPFS_UART_IER_OFFSET, priv->ier); +} + +/**************************************************************************** + * Name: up_rxavailable + * + * Description: + * Return true if the receive fifo is not empty + * + ****************************************************************************/ + +static bool up_rxavailable(struct uart_dev_s *dev) +{ + struct up_dev_s *priv = (struct up_dev_s *)dev->priv; + return ((up_serialin(priv, MPFS_UART_LSR_OFFSET) & UART_LSR_DR) != 0); +} + +/**************************************************************************** + * Name: up_send + * + * Description: + * This method will send one byte on the UART. + * + ****************************************************************************/ + +static void up_send(struct uart_dev_s *dev, int ch) +{ + struct up_dev_s *priv = (struct up_dev_s *)dev->priv; + + while ((up_serialin(priv, MPFS_UART_LSR_OFFSET) + & UART_LSR_THRE) == 0); + + up_serialout(priv, MPFS_UART_THR_OFFSET, (uint32_t)ch); +} + +/**************************************************************************** + * Name: up_txint + * + * Description: + * Call to enable or disable TX interrupts + * + ****************************************************************************/ + +static void up_txint(struct uart_dev_s *dev, bool enable) +{ + struct up_dev_s *priv = (struct up_dev_s *)dev->priv; + irqstate_t flags; + + flags = enter_critical_section(); + if (enable) + { +#ifndef CONFIG_SUPPRESS_SERIAL_INTS + priv->ier |= UART_IER_ETBEI; + up_serialout(priv, MPFS_UART_IER_OFFSET, priv->ier); + + /* Fake a TX interrupt here by just calling uart_xmitchars() with + * interrupts disabled (note this may recurse). + */ + + uart_xmitchars(dev); +#endif + } + else + { + priv->ier &= ~UART_IER_ETBEI; + up_serialout(priv, MPFS_UART_IER_OFFSET, priv->ier); + } + + leave_critical_section(flags); +} + +/**************************************************************************** + * Name: up_txready + * + * Description: + * Return true if the tranmsit data register is not full + * + ****************************************************************************/ + +static bool up_txready(struct uart_dev_s *dev) +{ + struct up_dev_s *priv = (struct up_dev_s *)dev->priv; + return ((up_serialin(priv, MPFS_UART_LSR_OFFSET) & UART_LSR_THRE) != 0); +} + +/**************************************************************************** + * Name: up_txempty + * + * Description: + * Return true if the tranmsit data register is empty + * + ****************************************************************************/ + +static bool up_txempty(struct uart_dev_s *dev) +{ + struct up_dev_s *priv = (struct up_dev_s *)dev->priv; + return ((up_serialin(priv, MPFS_UART_LSR_OFFSET) & UART_LSR_THRE) != 0); +} + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +#ifdef USE_EARLYSERIALINIT + +/**************************************************************************** + * Name: riscv_earlyserialinit + * + * Description: + * Performs the low level UART initialization early in debug so that the + * serial console will be available during bootup. This must be called + * before riscv_serialinit. NOTE: This function depends on GPIO pin + * configuration performed in up_consoleinit() and main clock iniialization + * performed in up_clkinitialize(). + * + ****************************************************************************/ + +void riscv_earlyserialinit(void) +{ + /* Disable interrupts from all UARTS. The console is enabled in + * mpfs_consoleinit(). + */ + +#ifdef CONFIG_MPFS_UART0 + up_disableuartint(g_uart0port.priv, NULL); +#endif + +#ifdef CONFIG_MPFS_UART1 + up_disableuartint(g_uart1port.priv, NULL); +#endif + +#ifdef CONFIG_MPFS_UART2 + up_disableuartint(g_uart2port.priv, NULL); +#endif + +#ifdef CONFIG_MPFS_UART3 + up_disableuartint(g_uart3port.priv, NULL); +#endif + +#ifdef CONFIG_MPFS_UART4 + up_disableuartint(g_uart4port.priv, NULL); +#endif + + /* Configuration whichever one is the console */ + +#ifdef HAVE_SERIAL_CONSOLE + CONSOLE_DEV.isconsole = true; + up_setup(&CONSOLE_DEV); +#endif +} +#endif + +/**************************************************************************** + * Name: riscv_serialinit + * + * Description: + * Register serial console and serial ports. This assumes + * that riscv_earlyserialinit was called previously. + * + ****************************************************************************/ + +void riscv_serialinit(void) +{ + /* Register the console */ + +#ifdef HAVE_SERIAL_CONSOLE + uart_register("/dev/console", &CONSOLE_DEV); +#endif + + /* Register all UARTs NOTE: we don't reorganize the numbering */ + +#ifdef CONFIG_MPFS_UART0 + uart_register("/dev/ttyS0", &g_uart0port); +#endif +#ifdef CONFIG_MPFS_UART1 + uart_register("/dev/ttyS1", &g_uart1port); +#endif +#ifdef CONFIG_MPFS_UART2 + uart_register("/dev/ttyS2", &g_uart2port); +#endif +#ifdef CONFIG_MPFS_UART3 + uart_register("/dev/ttyS3", &g_uart3port); +#endif +#ifdef CONFIG_MPFS_UART4 + uart_register("/dev/ttyS4", &g_uart4port); +#endif +} + +/**************************************************************************** + * Name: up_putc + * + * Description: + * Provide priority, low-level access to support OS debug writes + * + ****************************************************************************/ + +int up_putc(int ch) +{ +#ifdef HAVE_SERIAL_CONSOLE + struct up_dev_s *priv = (struct up_dev_s *)CONSOLE_DEV.priv; + uint32_t ier; + up_disableuartint(priv, &ier); +#endif + + /* Check for LF */ + + if (ch == '\n') + { + /* Add CR */ + + riscv_lowputc('\r'); + } + + riscv_lowputc(ch); +#ifdef HAVE_SERIAL_CONSOLE + up_restoreuartint(priv, ier); +#endif + return ch; +} + +/**************************************************************************** + * Name: riscv_earlyserialinit, riscv_serialinit, and up_putc + * + * Description: + * stubs that may be needed. These stubs would be used if all UARTs are + * disabled. In that case, the logic in common/up_initialize() is not + * smart enough to know that there are not UARTs and will still expect + * these interfaces to be provided. + * + ****************************************************************************/ + +#else /* HAVE_UART_DEVICE */ +void riscv_earlyserialinit(void) +{ +} + +void riscv_serialinit(void) +{ +} + +int up_putc(int ch) +{ + return ch; +} + +#endif /* HAVE_UART_DEVICE */ +#else /* USE_SERIALDRIVER */ + +/**************************************************************************** + * Name: up_putc + * + * Description: + * Provide priority, low-level access to support OS debug writes + * + ****************************************************************************/ + +int up_putc(int ch) +{ +#ifdef HAVE_SERIAL_CONSOLE + /* Check for LF */ + + if (ch == '\n') + { + /* Add CR */ + + riscv_lowputc('\r'); + } + + riscv_lowputc(ch); +#endif + return ch; +} + +#endif /* USE_SERIALDRIVER */ diff --git a/arch/risc-v/src/mpfs/mpfs_start.c b/arch/risc-v/src/mpfs/mpfs_start.c new file mode 100755 index 00000000000..487fc398ab4 --- /dev/null +++ b/arch/risc-v/src/mpfs/mpfs_start.c @@ -0,0 +1,144 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/mpfs_start.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include + +#include "chip.h" +#include "mpfs.h" +#include "mpfs_clockconfig.h" +#include "mpfs_userspace.h" +#include "riscv_arch.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#ifdef CONFIG_DEBUG_FEATURES +# define showprogress(c) riscv_lowputc(c) +#else +# define showprogress(c) +#endif + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +/* g_idle_topstack: _sbss is the start of the BSS region as defined by the + * linker script. _ebss lies at the end of the BSS region. The idle task + * stack starts at the end of BSS and is of size CONFIG_IDLETHREAD_STACKSIZE. + * The IDLE thread is the thread that the system boots on and, eventually, + * becomes the IDLE, do nothing task that runs only when there is nothing + * else to run. The heap continues from there until the end of memory. + * g_idle_topstack is a read-only variable the provides this computed + * address. + */ + +uintptr_t g_idle_topstack = MPFS_IDLESTACK_TOP; +volatile bool g_serial_ok = false; + +extern void mpfs_cpu_boot(uint32_t); + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: __mpfs_start + ****************************************************************************/ + +void __mpfs_start(uint32_t mhartid) +{ + const uint32_t *src; + uint32_t *dest; + + /* Clear .bss. We'll do this inline (vs. calling memset) just to be + * certain that there are no issues with the state of global variables. + */ + + for (dest = &_sbss; dest < &_ebss; ) + { + *dest++ = 0; + } + + /* Move the initialized data section from his temporary holding spot in + * FLASH into the correct place in SRAM. The correct place in SRAM is + * give by _sdata and _edata. The temporary location is in FLASH at the + * end of all of the other read-only data (.text, .rodata) at _eronly. + */ + + for (src = &_eronly, dest = &_sdata; dest < &_edata; ) + { + *dest++ = *src++; + } + + /* Setup PLL */ + + mpfs_clockconfig(); + + /* Configure the UART so we can get debug output */ + + mpfs_lowsetup(); + + showprogress('A'); + +#ifdef USE_EARLYSERIALINIT + riscv_earlyserialinit(); +#endif + + showprogress('B'); + + g_serial_ok = true; + + /* Do board initialization */ + + mpfs_boardinitialize(); + + showprogress('C'); + + /* For the case of the separate user-/kernel-space build, perform whatever + * platform specific initialization of the user memory is required. + * Normally this just means initializing the user space .data and .bss + * segments. + */ + +#ifdef CONFIG_BUILD_PROTECTED + mpfs_userspace(); + showprogress('D'); +#endif + + /* Call nx_start() */ + + nx_start(); + + showprogress('a'); + + while (true) + { + asm("WFI"); + } +} diff --git a/arch/risc-v/src/mpfs/mpfs_timerisr.c b/arch/risc-v/src/mpfs/mpfs_timerisr.c new file mode 100755 index 00000000000..444a4c1ad68 --- /dev/null +++ b/arch/risc-v/src/mpfs/mpfs_timerisr.c @@ -0,0 +1,132 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/mpfs_timerisr.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include + +#include +#include +#include + +#include "riscv_arch.h" + +#include "mpfs.h" +#include "mpfs_clockconfig.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#define TICK_COUNT (MPFS_MSS_RTC_TOGGLE_CLK / TICK_PER_SEC) + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static bool _b_tick_started = false; +static uint64_t *_mtime_cmp = 0L; + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: mpfs_reload_mtimecmp + ****************************************************************************/ + +static void mpfs_reload_mtimecmp(void) +{ + irqstate_t flags = spin_lock_irqsave(NULL); + + uint64_t current; + uint64_t next; + + if (!_b_tick_started) + { + _b_tick_started = true; + current = getreg64(MPFS_CLINT_MTIME); + } + else + { + current = getreg64(_mtime_cmp); + } + + uint64_t tick = TICK_COUNT; + next = current + tick; + + putreg64(next, _mtime_cmp); + + spin_unlock_irqrestore(NULL, flags); +} + +/**************************************************************************** + * Name: mpfs_timerisr + ****************************************************************************/ + +static int mpfs_timerisr(int irq, void *context, FAR void *arg) +{ + mpfs_reload_mtimecmp(); + + /* Process timer interrupt */ + + nxsched_process_timer(); + + return 0; +} + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: up_timer_initialize + * + * Description: + * This function is called during start-up to initialize + * the timer interrupt. + * + ****************************************************************************/ + +void up_timer_initialize(void) +{ + /* what is our timecmp address for this hart */ + + uint64_t hart_id = READ_CSR(mhartid); + _mtime_cmp = (uint64_t *)MPFS_CLINT_MTIMECMP0 + hart_id; + + /* Attach timer interrupt handler */ + + irq_attach(MPFS_IRQ_MTIMER, mpfs_timerisr, NULL); + + /* Reload CLINT mtimecmp */ + + mpfs_reload_mtimecmp(); + + /* And enable the timer interrupt */ + + up_enable_irq(MPFS_IRQ_MTIMER); +} diff --git a/arch/risc-v/src/mpfs/mpfs_userspace.c b/arch/risc-v/src/mpfs/mpfs_userspace.c new file mode 100755 index 00000000000..eb3c5cd16d7 --- /dev/null +++ b/arch/risc-v/src/mpfs/mpfs_userspace.c @@ -0,0 +1,127 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/mpfs_userspace.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include + +#include + +#include "mpfs_userspace.h" +#include "riscv_internal.h" + +#ifdef CONFIG_BUILD_PROTECTED + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Configuration ************************************************************/ + +/* TODO: get user space mem layout info from ld script or Configuration ? */ + +#ifndef CONFIG_NUTTX_USERSPACE_SIZE +# define CONFIG_NUTTX_USERSPACE_SIZE (0x00100000) +#endif + +#ifndef CONFIG_NUTTX_USERSPACE_RAM_START +# define CONFIG_NUTTX_USERSPACE_RAM_START (0x00100000) +#endif + +#ifndef CONFIG_NUTTX_USERSPACE_RAM_SIZE +# define CONFIG_NUTTX_USERSPACE_RAM_SIZE (0x00100000) +#endif + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: mpfs_userspace + * + * Description: + * For the case of the separate user-/kernel-space build, perform whatever + * platform specific initialization of the user memory is required. + * Normally this just means initializing the user space .data and .bss + * segments. + * + ****************************************************************************/ + +void mpfs_userspace(void) +{ + uint8_t *src; + uint8_t *dest; + uint8_t *end; + + /* Clear all of user-space .bss */ + + DEBUGASSERT(USERSPACE->us_bssstart != 0 && USERSPACE->us_bssend != 0 && + USERSPACE->us_bssstart <= USERSPACE->us_bssend); + + dest = (uint8_t *)USERSPACE->us_bssstart; + end = (uint8_t *)USERSPACE->us_bssend; + + while (dest != end) + { + *dest++ = 0; + } + + /* Initialize all of user-space .data */ + + DEBUGASSERT(USERSPACE->us_datasource != 0 && + USERSPACE->us_datastart != 0 && USERSPACE->us_dataend != 0 && + USERSPACE->us_datastart <= USERSPACE->us_dataend); + + src = (uint8_t *)USERSPACE->us_datasource; + dest = (uint8_t *)USERSPACE->us_datastart; + end = (uint8_t *)USERSPACE->us_dataend; + + while (dest != end) + { + *dest++ = *src++; + } + + /* Configure the PMP to permit user-space access to its ROM and RAM. + * Now this is done by simply adding the whole memory area to PMP. + * 1. no access for the 1st 4KB + * 2. "RX" for the left space until 1MB + * 3. "RW" for the user RAM area + * TODO: more accurate memory size control. + */ + + riscv_config_pmp_region(0, PMPCFG_A_NAPOT, + 0, + 0x1000); + + riscv_config_pmp_region(1, PMPCFG_A_TOR | PMPCFG_X | PMPCFG_R, + 0 + CONFIG_NUTTX_USERSPACE_SIZE, + 0); + + riscv_config_pmp_region(2, PMPCFG_A_NAPOT | PMPCFG_W | PMPCFG_R, + CONFIG_NUTTX_USERSPACE_RAM_START, + CONFIG_NUTTX_USERSPACE_RAM_SIZE); +} + +#endif /* CONFIG_BUILD_PROTECTED */ diff --git a/arch/risc-v/src/mpfs/mpfs_userspace.h b/arch/risc-v/src/mpfs/mpfs_userspace.h new file mode 100755 index 00000000000..d59073a7d77 --- /dev/null +++ b/arch/risc-v/src/mpfs/mpfs_userspace.h @@ -0,0 +1,49 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/mpfs_userspace.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __ARCH_RISCV_SRC_MPFS_MPFS_USERSPACE_H +#define __ARCH_RISCV_SRC_MPFS_MPFS_USERSPACE_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +/**************************************************************************** + * Public Functions Prototypes + ****************************************************************************/ + +/**************************************************************************** + * Name: mpfs_userspace + * + * Description: + * For the case of the separate user-/kernel-space build, perform whatever + * platform specific initialization of the user memory is required. + * Normally this just means initializing the user space .data and .bss + * segments. + * + ****************************************************************************/ + +#ifdef CONFIG_BUILD_PROTECTED +void mpfs_userspace(void); +#endif + +#endif /* __ARCH_RISCV_SRC_MPFS_MPFS_USERSPACE_H */ diff --git a/arch/risc-v/src/mpfs/mpfs_vectors.S b/arch/risc-v/src/mpfs/mpfs_vectors.S new file mode 100755 index 00000000000..94a7173fc63 --- /dev/null +++ b/arch/risc-v/src/mpfs/mpfs_vectors.S @@ -0,0 +1,53 @@ +/**************************************************************************** + * arch/risc-v/src/mpfs/mpfs_vectors.S + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + + .section .text.vec + .global __reset_vec + .global __trap_vec + .global __start + +/**************************************************************************** + * Name: __reset_vec + * + * Description: + * Also __start symbol is defined to be on start of image. This is expected + * by some of Microchip tools, which can be used to e.g. flash the image + * + ****************************************************************************/ + +__start: +__reset_vec: + j __start_mpfs + +/**************************************************************************** + * Name: exception_common + * + * Description: + * All exceptions and interrupts will be handled from here. + * + ****************************************************************************/ + +__trap_vec: + j exception_common + nop diff --git a/boards/Kconfig b/boards/Kconfig index 7b97fb3f8f9..ad482a95056 100644 --- a/boards/Kconfig +++ b/boards/Kconfig @@ -633,6 +633,14 @@ config ARCH_BOARD_SMARTL_C906 This is the board configuration for the port of NuttX to the THEAD smartl-c906 board. This board features the RISC-V C906. +config ARCH_BOARD_ICICLE_MPFS + bool "Polarfire Icicle evaluation board for MPFS" + depends on ARCH_CHIP_MPFS + select ARCH_HAVE_LEDS if !MPFS_WITH_QEMU + ---help--- + This is the board configuration for the port of NuttX to the + MicroChip icicle-mpfs board. This board features the RISC-V MPFS. + config ARCH_BOARD_MAX32660_EVSYS bool "Maxim Integrated MAX32660-EVSYS" depends on ARCH_CHIP_MAX32660 @@ -2329,6 +2337,7 @@ config ARCH_BOARD default "lx_cpu" if ARCH_BOARD_LX_CPU default "maix-bit" if ARCH_BOARD_MAIX_BIT default "smartl-c906" if ARCH_BOARD_SMARTL_C906 + default "icicle" if ARCH_BOARD_ICICLE_MPFS default "maple" if ARCH_BOARD_MAPLE default "makerlisp" if ARCH_BOARD_MAKERLISP default "max32660-evsys" if ARCH_BOARD_MAX32660_EVSYS @@ -3128,6 +3137,9 @@ endif if ARCH_BOARD_SMARTL_C906 source "boards/risc-v/c906/smartl-c906/Kconfig" endif +if ARCH_BOARD_ICICLE_MPFS +source "boards/risc-v/mpfs/icicle/Kconfig" +endif if ARCH_BOARD_ESP32C3_DEVKIT source "boards/risc-v/esp32c3/esp32c3-devkit/Kconfig" endif diff --git a/boards/risc-v/mpfs/icicle/Kconfig b/boards/risc-v/mpfs/icicle/Kconfig new file mode 100755 index 00000000000..6dba7cd4c95 --- /dev/null +++ b/boards/risc-v/mpfs/icicle/Kconfig @@ -0,0 +1,8 @@ +# +# For a description of the syntax of this configuration file, +# see misc/tools/kconfig-language.txt. +# + +if ARCH_BOARD_ICICLE_MPFS + +endif diff --git a/boards/risc-v/mpfs/icicle/configs/nsh/defconfig b/boards/risc-v/mpfs/icicle/configs/nsh/defconfig new file mode 100644 index 00000000000..0df8eb81a1b --- /dev/null +++ b/boards/risc-v/mpfs/icicle/configs/nsh/defconfig @@ -0,0 +1,76 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_DISABLE_OS_API is not set +# CONFIG_NSH_DISABLE_LOSMART is not set +CONFIG_ARCH="risc-v" +CONFIG_ARCH_BOARD="icicle" +CONFIG_ARCH_BOARD_ICICLE_MPFS=y +CONFIG_ARCH_CHIP="mpfs" +CONFIG_ARCH_CHIP_MPFS=y +CONFIG_ARCH_INTERRUPTSTACK=2048 +CONFIG_ARCH_RISCV=y +CONFIG_ARCH_STACKDUMP=y +CONFIG_BOARD_LOOPSPERMSEC=54000 +CONFIG_BUILTIN=y +CONFIG_DEBUG_ASSERTIONS=y +CONFIG_DEBUG_ERROR=y +CONFIG_DEBUG_FEATURES=y +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DEBUG_WARN=y +CONFIG_DEV_ZERO=y +CONFIG_EXPERIMENTAL=y +CONFIG_FS_PROCFS=y +CONFIG_FS_ROMFS=y +CONFIG_IDLETHREAD_STACKSIZE=2048 +CONFIG_INTELHEX_BINARY=y +CONFIG_LIBC_FLOATINGPOINT=y +CONFIG_LIBC_PERROR_STDOUT=y +CONFIG_LIBC_STRERROR=y +CONFIG_LIB_HOSTNAME="icicle" +CONFIG_MAX_TASKS=64 +CONFIG_MEMSET_64BIT=y +CONFIG_MEMSET_OPTSPEED=y +CONFIG_MPFS_ENABLE_DPFPU=y +CONFIG_MPFS_UART1=y +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_DISABLE_IFUPDOWN=y +CONFIG_NSH_DISABLE_MKDIR=y +CONFIG_NSH_DISABLE_RM=y +CONFIG_NSH_DISABLE_RMDIR=y +CONFIG_NSH_DISABLE_UMOUNT=y +CONFIG_NSH_LINELEN=160 +CONFIG_NSH_STRERROR=y +CONFIG_PREALLOC_TIMERS=4 +CONFIG_RAM_SIZE=1048576 +CONFIG_RAM_START=0x80200000 +CONFIG_RAW_BINARY=y +CONFIG_READLINE_CMD_HISTORY=y +CONFIG_READLINE_TABCOMPLETION=y +CONFIG_RR_INTERVAL=200 +CONFIG_SCHED_HPWORK=y +CONFIG_SCHED_LPWORK=y +CONFIG_SCHED_WAITPID=y +CONFIG_SERIAL_NPOLLWAITERS=2 +CONFIG_STACK_COLORATION=y +CONFIG_START_MONTH=4 +CONFIG_START_YEAR=2021 +CONFIG_SYSLOG_COLOR_OUTPUT=y +CONFIG_SYSTEM_CLE_CMD_HISTORY=y +CONFIG_SYSTEM_COLOR_CLE=y +CONFIG_SYSTEM_NSH=y +CONFIG_SYSTEM_TIME64=y +CONFIG_TASK_NAME_SIZE=20 +CONFIG_TESTING_GETPRIME=y +CONFIG_TESTING_OSTEST=y +CONFIG_TESTING_OSTEST_FPUSIZE=264 +CONFIG_UART1_SERIAL_CONSOLE=y +CONFIG_USERMAIN_STACKSIZE=3072 +CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/boards/risc-v/mpfs/icicle/include/board.h b/boards/risc-v/mpfs/icicle/include/board.h new file mode 100755 index 00000000000..680915d27e7 --- /dev/null +++ b/boards/risc-v/mpfs/icicle/include/board.h @@ -0,0 +1,111 @@ +/**************************************************************************** + * boards/risc-v/mpfs/icicle/include/board.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __BOARDS_RISCV_ICICLE_MPFS_INCLUDE_BOARD_H +#define __BOARDS_RISCV_ICICLE_MPFS_INCLUDE_BOARD_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#ifndef __ASSEMBLY__ +# include +#endif + +#include "mpfs_gpio.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Clocking TODO: */ + +#define MPFS_MSS_EXT_SGMII_REF_CLK (125000000UL) +#define MPFS_MSS_COREPLEX_CPU_CLK (600000000UL) +#define MPFS_MSS_SYSTEM_CLK (600000000UL) +#define MPFS_MSS_RTC_TOGGLE_CLK (1000000UL) +#define MPFS_MSS_AXI_CLK (300000000UL) +#define MPFS_MSS_APB_AHB_CLK (150000000UL) + +/* LED definitions **********************************************************/ + +/* LED index values for use with board_userled() */ + +#define BOARD_LED1 0 +#define BOARD_LED2 1 +#define BOARD_LED3 2 +#define BOARD_LED4 3 +#define BOARD_NLEDS 4 + +#define BOARD_LED_ORANGE1 BOARD_LED1 +#define BOARD_LED_ORANGE2 BOARD_LED2 +#define BOARD_LED_RED1 BOARD_LED3 +#define BOARD_LED_RED2 BOARD_LED4 + +#define LED_STARTED 0 /* LED1 */ +#define LED_HEAPALLOCATE 1 /* LED2 */ +#define LED_IRQSENABLED 2 /* LED1 + LED2 */ +#define LED_STACKCREATED 3 /* LED3 */ +#define LED_INIRQ 4 /* LED3 + LED1 */ +#define LED_SIGNAL 5 /* LED3 + LED2 */ +#define LED_ASSERTION 6 /* LED3 + LED2 + LED1 */ +#define LED_PANIC 7 /* LED4 */ + +/* Button definitions *******************************************************/ + +/* The Icicle supports 3 buttons: */ + +#define BUTTON_USER1 0 +#define BUTTON_USER2 1 +#define BUTTON_USER3 2 +#define NUM_BUTTONS 3 +#define BUTTON_USER1_BIT (1 << BUTTON_USER1) +#define BUTTON_USER2_BIT (1 << BUTTON_USER2) +#define BUTTON_USER3_BIT (1 << BUTTON_USER3) + +#ifndef __ASSEMBLY__ + +#undef EXTERN +#if defined(__cplusplus) +#define EXTERN extern "C" +extern "C" +{ +#else +#define EXTERN extern +#endif + +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ + +/**************************************************************************** + * Name: mpfs_boardinitialize + ****************************************************************************/ + +void mpfs_boardinitialize(void); + +#undef EXTERN +#if defined(__cplusplus) +} +#endif +#endif /* __ASSEMBLY__ */ +#endif /* __BOARDS_RISCV_ICICLE_MPFS_INCLUDE_BOARD_H */ diff --git a/boards/risc-v/mpfs/icicle/kernel/Makefile b/boards/risc-v/mpfs/icicle/kernel/Makefile new file mode 100755 index 00000000000..919e2d9965c --- /dev/null +++ b/boards/risc-v/mpfs/icicle/kernel/Makefile @@ -0,0 +1,107 @@ +############################################################################ +# boards/risc-v/mpfs/icicle//kernel/Makefile +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +############################################################################ + +include $(TOPDIR)/Make.defs + +# The entry point name (if none is provided in the .config file) + +CONFIG_USER_ENTRYPOINT ?= user_start +ENTRYPT = $(patsubst "%",%,$(CONFIG_USER_ENTRYPOINT)) + +# The memory layout + +MEM_LAYOUT = memory.ld + +# Get the paths to the libraries and the links script path in format that +# is appropriate for the host OS + +ifeq ($(CONFIG_CYGWIN_WINTOOL),y) + # Windows-native toolchains + USER_LIBPATHS = ${shell for path in $(USERLIBS); do dir=`dirname $(TOPDIR)$(DELIM)$$path`;echo "-L\"`cygpath -w $$dir`\"";done} + USER_LDSCRIPT = -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(MEM_LAYOUT)}" + USER_LDSCRIPT += -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)user-space.ld}" + USER_HEXFILE += "${shell cygpath -w $(TOPDIR)$(DELIM)nuttx_user.hex}" + USER_SRECFILE += "${shell cygpath -w $(TOPDIR)$(DELIM)nuttx_user.srec}" + USER_BINFILE += "${shell cygpath -w $(TOPDIR)$(DELIM)nuttx_user.bin}" +else + # Linux/Cygwin-native toolchain + USER_LIBPATHS = $(addprefix -L$(TOPDIR)$(DELIM),$(dir $(USERLIBS))) + USER_LDSCRIPT = -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)$(MEM_LAYOUT) + USER_LDSCRIPT += -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)user-space.ld + USER_HEXFILE += "$(TOPDIR)$(DELIM)nuttx_user.hex" + USER_SRECFILE += "$(TOPDIR)$(DELIM)nuttx_user.srec" + USER_BINFILE += "$(TOPDIR)$(DELIM)nuttx_user.bin" +endif + +USER_LDFLAGS = --undefined=$(ENTRYPT) --entry=$(ENTRYPT) $(USER_LDSCRIPT) +USER_LDLIBS = $(patsubst lib%,-l%,$(basename $(notdir $(USERLIBS)))) +USER_LIBGCC = "${shell "$(CC)" $(ARCHCPUFLAGS) -print-libgcc-file-name}" + +# Source files + +CSRCS = mpfs_userspace.c +COBJS = $(CSRCS:.c=$(OBJEXT)) +OBJS = $(COBJS) + +# Targets: + +all: $(TOPDIR)$(DELIM)nuttx_user.elf $(TOPDIR)$(DELIM)User.map +.PHONY: nuttx_user.elf depend clean distclean + +$(COBJS): %$(OBJEXT): %.c + $(call COMPILE, $<, $@) + +# Create the nuttx_user.elf file containing all of the user-mode code + +nuttx_user.elf: $(OBJS) + $(Q) $(LD) -o $@ $(USER_LDFLAGS) $(USER_LIBPATHS) $(OBJS) --start-group $(USER_LDLIBS) --end-group $(USER_LIBGCC) + +$(TOPDIR)$(DELIM)nuttx_user.elf: nuttx_user.elf + @echo "LD: nuttx_user.elf" + $(Q) cp -a nuttx_user.elf $(TOPDIR)$(DELIM)nuttx_user.elf +ifeq ($(CONFIG_INTELHEX_BINARY),y) + @echo "CP: nuttx_user.hex" + $(Q) $(OBJCOPY) $(OBJCOPYARGS) -O ihex nuttx_user.elf $(USER_HEXFILE) +endif +ifeq ($(CONFIG_MOTOROLA_SREC),y) + @echo "CP: nuttx_user.srec" + $(Q) $(OBJCOPY) $(OBJCOPYARGS) -O srec nuttx_user.elf $(USER_SRECFILE) +endif +ifeq ($(CONFIG_RAW_BINARY),y) + @echo "CP: nuttx_user.bin" + $(Q) $(OBJCOPY) $(OBJCOPYARGS) -O binary nuttx_user.elf $(USER_BINFILE) +endif + +$(TOPDIR)$(DELIM)User.map: nuttx_user.elf + @echo "MK: User.map" + $(Q) $(NM) -n nuttx_user.elf >$(TOPDIR)$(DELIM)User.map + $(Q) $(CROSSDEV)size nuttx_user.elf + +.depend: + +depend: .depend + +clean: + $(call DELFILE, nuttx_user.elf) + $(call DELFILE, "$(TOPDIR)$(DELIM)nuttx_user.*") + $(call DELFILE, "$(TOPDIR)$(DELIM)User.map") + $(call CLEAN) + +distclean: clean diff --git a/boards/risc-v/mpfs/icicle/kernel/mpfs_userspace.c b/boards/risc-v/mpfs/icicle/kernel/mpfs_userspace.c new file mode 100755 index 00000000000..6fda7b7c8fb --- /dev/null +++ b/boards/risc-v/mpfs/icicle/kernel/mpfs_userspace.c @@ -0,0 +1,121 @@ +/**************************************************************************** + * boards/risc-v/mpfs/icicle/kernel/mpfs_userspace.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include + +#include +#include +#include +#include + +#if defined(CONFIG_BUILD_PROTECTED) && !defined(__KERNEL__) + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Configuration ************************************************************/ + +#ifndef CONFIG_NUTTX_USERSPACE +# error "CONFIG_NUTTX_USERSPACE not defined" +#endif + +#if CONFIG_NUTTX_USERSPACE != 0x00001000 +# error "CONFIG_NUTTX_USERSPACE must match the value in memory.ld" +#endif + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +/* These 'addresses' of these values are setup by the linker script. + * They are not actual uint32_t storage locations! + * They are only used meaningfully in the following way: + * + * - The linker script defines, for example, the symbol_sdata. + * - The declaration extern uint32_t _sdata; makes C happy. C will believe + * that the value _sdata is the address of a uint32_t variable _data + * (it is not!). + * - We can recover the linker value then by simply taking the address of + * of _data. like: uint32_t *pdata = &_sdata; + */ + +extern uint32_t _stext; /* Start of .text */ +extern uint32_t _etext; /* End_1 of .text + .rodata */ +extern const uint32_t _eronly; /* End+1 of read only section */ +extern uint32_t _sdata; /* Start of .data */ +extern uint32_t _edata; /* End+1 of .data */ +extern uint32_t _sbss; /* Start of .bss */ +extern uint32_t _ebss; /* End+1 of .bss */ + +extern uintptr_t *__ld_usram_end; /* End+1 of user ram section */ + +/* This is the user space entry point */ + +int CONFIG_USER_ENTRYPOINT(int argc, char *argv[]); + +const struct userspace_s userspace __attribute__ ((section (".userspace"))) = +{ + /* General memory map */ + + .us_entrypoint = (main_t)CONFIG_USER_ENTRYPOINT, + .us_textstart = (uintptr_t)&_stext, + .us_textend = (uintptr_t)&_etext, + .us_datasource = (uintptr_t)&_eronly, + .us_datastart = (uintptr_t)&_sdata, + .us_dataend = (uintptr_t)&_edata, + .us_bssstart = (uintptr_t)&_sbss, + .us_bssend = (uintptr_t)&_ebss, + + .us_heapend = (uintptr_t)&__ld_usram_end, + + /* Memory manager heap structure */ + + .us_heap = &g_mmheap, + + /* Task/thread startup routines */ + + .task_startup = nxtask_startup, +#ifndef CONFIG_DISABLE_PTHREAD + .pthread_startup = pthread_startup, +#endif + + /* Signal handler trampoline */ + + .signal_handler = up_signal_handler, + + /* User-space work queue support (declared in include/nuttx/wqueue.h) */ + +#ifdef CONFIG_LIB_USRWORK + .work_usrstart = work_usrstart, +#endif +}; + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +#endif /* CONFIG_BUILD_PROTECTED && !__KERNEL__ */ diff --git a/boards/risc-v/mpfs/icicle/scripts/Make.defs b/boards/risc-v/mpfs/icicle/scripts/Make.defs new file mode 100755 index 00000000000..bdf6da11a5d --- /dev/null +++ b/boards/risc-v/mpfs/icicle/scripts/Make.defs @@ -0,0 +1,98 @@ +############################################################################ +# boards/risc-v/mpfs/icicle/scripts/Make.defs +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +############################################################################ + +include $(TOPDIR)/.config +include $(TOPDIR)/tools/Config.mk +include $(TOPDIR)/arch/risc-v/src/rv64gc/Toolchain.defs + +LDSCRIPT = ld.script + +ifeq ($(CONFIG_CYGWIN_WINTOOL),y) + ARCHSCRIPT = -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT)}" +else + ARCHSCRIPT = -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT) +endif + +ifeq ($(CONFIG_DEBUG_SYMBOLS),y) + ARCHOPTIMIZATION = -g + ASARCHCPUFLAGS += -Wa,-g +endif + +MAXOPTIMIZATION = -Os + +ifneq ($(CONFIG_DEBUG_NOOPT),y) + ARCHOPTIMIZATION += $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce +endif + +# The following options are for the toolchain from T-HEAD. +# For more info ahout the T-HEAD ISA extensions, please refer to the MPFS user guide. +# ARCHCPUFLAGS = -march=rv64gcxthead -mabi=lp64d -mcmodel=medany +# TODO: We are not going to enable this at this time for the CI compatiblity. + +ifeq ($(CONFIG_ARCH_HAVE_DPFPU),y) + ARCHCPUFLAGS = -march=rv64gc -mabi=lp64d -mcmodel=medany +else + ARCHCPUFLAGS = -march=rv64imac -mabi=lp64 -mcmodel=medany +endif + +ARCHCFLAGS = -fno-builtin -ffunction-sections -fdata-sections -fno-omit-frame-pointer +ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fcheck-new -fno-rtti +ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow -Wundef +ARCHWARNINGSXX = -Wall -Wshadow -Wundef + +CFLAGS = $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe +CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS) +CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe +CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS) +CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) +AFLAGS += $(CFLAGS) -D__ASSEMBLY__ $(ASARCHCPUFLAGS) + +# NXFLAT module definitions + +NXFLATLDFLAGS1 = -r -d -warn-common +NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-pcrel.ld -no-check-sections +LDNXFLATFLAGS = -e main -s 2048 + +# Loadable module definitions + +CMODULEFLAGS = $(CFLAGS) + +LDMODULEFLAGS = -r -e module_initialize +ifeq ($(CONFIG_CYGWIN_WINTOOL),y) + LDMODULEFLAGS += -T "${shell cygpath -w $(TOPDIR)/libs/libc/modlib/gnu-elf.ld}" +else + LDMODULEFLAGS += -T $(TOPDIR)/libs/libc/modlib/gnu-elf.ld +endif + +# ELF module definitions + +CELFFLAGS = $(CFLAGS) -fno-common +CXXELFFLAGS = $(CXXFLAGS) -fno-common + +LDELFFLAGS = -r -e main +ifeq ($(CONFIG_CYGWIN_WINTOOL),y) + LDELFFLAGS += -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)gnu-elf.ld}" +else + LDELFFLAGS += -T $(BOARD_DIR)$(DELIM)scripts$(DELIM)gnu-elf.ld +endif + +# File extensions + +LDFLAGS += --gc-sections -melf64lriscv diff --git a/boards/risc-v/mpfs/icicle/scripts/gnu-elf.ld b/boards/risc-v/mpfs/icicle/scripts/gnu-elf.ld new file mode 100755 index 00000000000..b513bc6063d --- /dev/null +++ b/boards/risc-v/mpfs/icicle/scripts/gnu-elf.ld @@ -0,0 +1,115 @@ +/**************************************************************************** + * boards/risc-v/mpfs/icicle/scripts/gnu-elf.ld + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +SECTIONS +{ + .text 0x00000000 : + { + _stext = . ; + *(.text) + *(.text.*) + *(.gnu.warning) + *(.stub) + *(.glue_7) + *(.glue_7t) + *(.jcr) + + /* C++ support: The .init and .fini sections contain specific logic + * to manage static constructors and destructors. + */ + + *(.gnu.linkonce.t.*) + *(.init) /* Old ABI */ + *(.fini) /* Old ABI */ + _etext = . ; + } + + .rodata : + { + _srodata = . ; + *(.rodata) + *(.rodata1) + *(.rodata.*) + *(.gnu.linkonce.r*) + _erodata = . ; + } + + .data : + { + _sdata = . ; + *(.data) + *(.data1) + *(.data.*) + *(.gnu.linkonce.d*) + . = ALIGN(4); + _edata = . ; + } + + /* C++ support. For each global and static local C++ object, + * GCC creates a small subroutine to construct the object. Pointers + * to these routines (not the routines themselves) are stored as + * simple, linear arrays in the .ctors section of the object file. + * Similarly, pointers to global/static destructor routines are + * stored in .dtors. + */ + + .ctors : + { + _sctors = . ; + *(.ctors) /* Old ABI: Unallocated */ + *(.init_array) /* New ABI: Allocated */ + _edtors = . ; + } + + .dtors : + { + _sdtors = . ; + *(.dtors) /* Old ABI: Unallocated */ + *(.fini_array) /* New ABI: Allocated */ + _edtors = . ; + } + + .bss : + { + _sbss = . ; + *(.bss) + *(.bss.*) + *(.sbss) + *(.sbss.*) + *(.gnu.linkonce.b*) + *(COMMON) + _ebss = . ; + } + + /* Stabs debugging sections. */ + + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_info 0 : { *(.debug_info) } + .debug_line 0 : { *(.debug_line) } + .debug_pubnames 0 : { *(.debug_pubnames) } + .debug_aranges 0 : { *(.debug_aranges) } +} diff --git a/boards/risc-v/mpfs/icicle/scripts/hss-nuttx.yml b/boards/risc-v/mpfs/icicle/scripts/hss-nuttx.yml new file mode 100644 index 00000000000..05b4214a024 --- /dev/null +++ b/boards/risc-v/mpfs/icicle/scripts/hss-nuttx.yml @@ -0,0 +1,12 @@ +# HSS Payload Generator + +# First, we can optionally set a name for our image, otherwise one will be created dynamically +set-name: 'PolarFire-SoC-HSS::nuttx' + +# Next, we'll define the entry point addresses for each hart, as follows: +hart-entry-points: {u54_1: '0x80000000', u54_2: '0x80000000', u54_3: '0x80000000', u54_4: '0x80000000'} + +# +payloads: + nuttx.bin: {exec-addr: '0x80000000', owner-hart: u54_1, priv-mode: prv_m} + diff --git a/boards/risc-v/mpfs/icicle/scripts/ld.script b/boards/risc-v/mpfs/icicle/scripts/ld.script new file mode 100755 index 00000000000..4fa073525af --- /dev/null +++ b/boards/risc-v/mpfs/icicle/scripts/ld.script @@ -0,0 +1,97 @@ +/**************************************************************************** + * boards/risc-v/mpfs/icicle/scripts/ld.script + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +MEMORY +{ + progmem (rx) : ORIGIN = 0x80000000, LENGTH = 2M /* w/ cache */ + sram (rwx) : ORIGIN = 0x80200000, LENGTH = 1M /* w/ cache */ +} + +OUTPUT_ARCH("riscv") + +ENTRY(_stext) +EXTERN(_vectors) +SECTIONS +{ + .text : { + _stext = ABSOLUTE(.); + *(.vectors) + *(.text .text.*) + *(.fixup) + *(.gnu.warning) + *(.rodata .rodata.* .srodata .srodata.*) + *(.gnu.linkonce.t.*) + *(.glue_7) + *(.glue_7t) + *(.got) + *(.gcc_except_table) + *(.gnu.linkonce.r.*) + _etext = ABSOLUTE(.); + } > progmem + + .init_section : ALIGN(4) { + _sinit = ABSOLUTE(.); + KEEP(*(.init_array .init_array.*)) + _einit = ABSOLUTE(.); + } > progmem + + _eronly = ABSOLUTE(.); + + .data : ALIGN(4) { + _sdata = ABSOLUTE(.); + *(.data .data.*) + *(.sdata .sdata.* .sdata2.*) + *(.gnu.linkonce.d.*) + *(.gnu.linkonce.s.*) + CONSTRUCTORS + . = ALIGN(4); + _edata = ABSOLUTE(.); + } > sram AT > progmem + + PROVIDE(__global_pointer$ = _sdata + ((_edata - _sdata) / 2)); + + .bss : ALIGN(4) { + _sbss = ABSOLUTE(.); + *(.bss .bss.*) + *(.sbss .sbss.*) + *(.gnu.linkonce.b.*) + *(.gnu.linkonce.sb.*) + *(COMMON) + . = ALIGN(4); + _ebss = ABSOLUTE(.); + . = ALIGN(32); + _default_stack_limit = ABSOLUTE(.); + } > sram + + /* Stabs debugging sections. */ + + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_info 0 : { *(.debug_info) } + .debug_line 0 : { *(.debug_line) } + .debug_pubnames 0 : { *(.debug_pubnames) } + .debug_aranges 0 : { *(.debug_aranges) } +} diff --git a/boards/risc-v/mpfs/icicle/scripts/memory.ld b/boards/risc-v/mpfs/icicle/scripts/memory.ld new file mode 100755 index 00000000000..3b38cc4bbc3 --- /dev/null +++ b/boards/risc-v/mpfs/icicle/scripts/memory.ld @@ -0,0 +1,35 @@ +/**************************************************************************** + * boards/risc-v/mpfs/icicle/scripts/memory.ld + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* Reg Access Start addr End addr Size + * QEMU CPU w/ cache 0x00000000 - 0x003fffff : 4MB + * QEMU CPU w/o cache 0x1f000000 - 0x1f01ffff : 128KB + */ + +MEMORY +{ + kflash (rx) : ORIGIN = 0x80000000, LENGTH = 256K /* w/ cache */ + uflash (rx) : ORIGIN = 0x80040000, LENGTH = 256K /* w/ cache */ + xflash (rx) : ORIGIN = 0x80080000, LENGTH = 256K /* w/o cache */ + + ksram (rwx) : ORIGIN = 0x800C0000, LENGTH = 256K /* w/ cache */ + usram (rwx) : ORIGIN = 0x80100000, LENGTH = 256K /* w/ cache */ + xsram (rwx) : ORIGIN = 0x80140000, LENGTH = 256K /* w/o cache */ +} diff --git a/boards/risc-v/mpfs/icicle/scripts/user-space.ld b/boards/risc-v/mpfs/icicle/scripts/user-space.ld new file mode 100755 index 00000000000..0e1204971cf --- /dev/null +++ b/boards/risc-v/mpfs/icicle/scripts/user-space.ld @@ -0,0 +1,104 @@ +/**************************************************************************** + * boards/risc-v/mpfs/icicle/scripts/user-space.ld + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* NOTE: This depends on the memory.ld script having been included prior to + * this script. + */ + +OUTPUT_ARCH("riscv") + +SECTIONS +{ + /* section info */ + + __ld_uflash_start = ORIGIN(uflash); + __ld_uflash_end = ORIGIN(uflash)+ LENGTH(uflash); + __ld_uflash_size = LENGTH(uflash); + + __ld_usram_start = ORIGIN(usram); + __ld_usram_end = ORIGIN(usram)+ LENGTH(usram); + __ld_usram_size = LENGTH(usram); + + .userspace : { + *(.userspace) + } > uflash + + .text : { + _stext = ABSOLUTE(.); + *(.text .text.*) + *(.fixup) + *(.gnu.warning) + *(.rodata .rodata.*) + *(.gnu.linkonce.t.*) + *(.glue_7) + *(.glue_7t) + *(.got) + *(.gcc_except_table) + *(.gnu.linkonce.r.*) + _etext = ABSOLUTE(.); + } > uflash + + .init_section : { + _sinit = ABSOLUTE(.); + KEEP(*(.init_array .init_array.*)) + _einit = ABSOLUTE(.); + } > uflash + + __exidx_start = ABSOLUTE(.); + + __exidx_end = ABSOLUTE(.); + + _eronly = ABSOLUTE(.); + + .data : { + _sdata = ABSOLUTE(.); + *(.data .data.*) + *(.sdata .sdata.* .sdata2.*) + *(.gnu.linkonce.d.*) + CONSTRUCTORS + . = ALIGN(4); + _edata = ABSOLUTE(.); + } > usram AT > uflash + + .bss : { + _sbss = ABSOLUTE(.); + *(.bss .bss.*) + *(.sbss .sbss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + . = ALIGN(4); + _ebss = ABSOLUTE(.); + } > usram + + /* Stabs debugging sections */ + + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_info 0 : { *(.debug_info) } + .debug_line 0 : { *(.debug_line) } + .debug_pubnames 0 : { *(.debug_pubnames) } + .debug_aranges 0 : { *(.debug_aranges) } +} diff --git a/boards/risc-v/mpfs/icicle/src/Makefile b/boards/risc-v/mpfs/icicle/src/Makefile new file mode 100755 index 00000000000..3fcb0f558f1 --- /dev/null +++ b/boards/risc-v/mpfs/icicle/src/Makefile @@ -0,0 +1,37 @@ +############################################################################ +# boards/risc-v/mpfs/icicle/src/Makefile +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +############################################################################ + +include $(TOPDIR)/Make.defs + +CSRCS = mpfs_bringup.c mpfs_boot.c + +ifeq ($(CONFIG_LIB_BOARDCTL),y) +CSRCS += mpfs_appinit.c +endif + +ifeq ($(CONFIG_ARCH_LEDS),y) +CSRCS += mpfs_autoleds.c +endif + +ifeq ($(CONFIG_ARCH_FPU),y) +CSRCS += mpfs_ostest.c +endif + +include $(TOPDIR)/boards/Board.mk diff --git a/boards/risc-v/mpfs/icicle/src/mpfs_appinit.c b/boards/risc-v/mpfs/icicle/src/mpfs_appinit.c new file mode 100755 index 00000000000..c4a28c00be7 --- /dev/null +++ b/boards/risc-v/mpfs/icicle/src/mpfs_appinit.c @@ -0,0 +1,75 @@ +/**************************************************************************** + * boards/risc-v/mpfs/icicle/src/mpfs_appinit.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include +#include + +#include + +#include "mpfs.h" +#include "mpfsicicle.h" + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: board_app_initialize + * + * Description: + * Perform architecture specific initialization + * + * Input Parameters: + * arg - The boardctl() argument is passed to the board_app_initialize() + * implementation without modification. The argument has no + * meaning to NuttX; the meaning of the argument is a contract + * between the board-specific initialization logic and the + * matching application logic. The value could be such things as a + * mode enumeration value, a set of DIP switch switch settings, a + * pointer to configuration data read from a file or serial FLASH, + * or whatever you would like to do with it. Every implementation + * should accept zero/NULL as a default configuration. + * + * Returned Value: + * Zero (OK) is returned on success; a negated errno value is returned on + * any failure to indicate the nature of the failure. + * + ****************************************************************************/ + +int board_app_initialize(uintptr_t arg) +{ +#ifdef CONFIG_BOARD_LATE_INITIALIZE + /* Board initialization already performed by board_late_initialize() */ + + return OK; +#else + /* Perform board-specific initialization */ + + return mpfs_bringup(); +#endif +} diff --git a/boards/risc-v/mpfs/icicle/src/mpfs_autoleds.c b/boards/risc-v/mpfs/icicle/src/mpfs_autoleds.c new file mode 100755 index 00000000000..5bc8b3b5442 --- /dev/null +++ b/boards/risc-v/mpfs/icicle/src/mpfs_autoleds.c @@ -0,0 +1,147 @@ +/**************************************************************************** + * boards/risc-v/mpfs/icicle/src/mpfs_autoleds.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include + +#include +#include +#include "mpfsicicle.h" + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: board_autoled_initialize + * + * Description: + * Init the LEDs. + * + ****************************************************************************/ + +void board_autoled_initialize(void) +{ + mpfs_configgpio(ICICLE_GPIO_LED1); + mpfs_configgpio(ICICLE_GPIO_LED2); + mpfs_configgpio(ICICLE_GPIO_LED3); + mpfs_configgpio(ICICLE_GPIO_LED4); + mpfs_gpiowrite(ICICLE_GPIO_LED1, false); + mpfs_gpiowrite(ICICLE_GPIO_LED2, false); + mpfs_gpiowrite(ICICLE_GPIO_LED3, false); + mpfs_gpiowrite(ICICLE_GPIO_LED4, false); +} + +/**************************************************************************** + * Name: board_autoled_on + * + * Description: + * Turn on the LED specificed. + * + * Input Parameters: + * led - The LED which is under this control + * + ****************************************************************************/ + +void board_autoled_on(int led) +{ + switch (led) + { + case LED_STARTED: + mpfs_gpiowrite(ICICLE_GPIO_LED1, true); + mpfs_gpiowrite(ICICLE_GPIO_LED2, false); + mpfs_gpiowrite(ICICLE_GPIO_LED3, false); + mpfs_gpiowrite(ICICLE_GPIO_LED4, false); + break; + case LED_HEAPALLOCATE: + mpfs_gpiowrite(ICICLE_GPIO_LED2, true); + break; + case LED_IRQSENABLED: + mpfs_gpiowrite(ICICLE_GPIO_LED1, true); + mpfs_gpiowrite(ICICLE_GPIO_LED2, true); + break; + case LED_STACKCREATED: + mpfs_gpiowrite(ICICLE_GPIO_LED3, true); + mpfs_gpiowrite(ICICLE_GPIO_LED1, false); + mpfs_gpiowrite(ICICLE_GPIO_LED2, false); + break; + case LED_INIRQ: + mpfs_gpiowrite(ICICLE_GPIO_LED1, true); + mpfs_gpiowrite(ICICLE_GPIO_LED2, false); + mpfs_gpiowrite(ICICLE_GPIO_LED3, false); + break; + case LED_SIGNAL: + mpfs_gpiowrite(ICICLE_GPIO_LED3, true); + mpfs_gpiowrite(ICICLE_GPIO_LED1, false); + mpfs_gpiowrite(ICICLE_GPIO_LED2, false); + break; + case LED_ASSERTION: + mpfs_gpiowrite(ICICLE_GPIO_LED3, true); + mpfs_gpiowrite(ICICLE_GPIO_LED2, true); + mpfs_gpiowrite(ICICLE_GPIO_LED1, true); + break; + case LED_PANIC: + mpfs_gpiowrite(ICICLE_GPIO_LED4, true); + break; + + default: + break; + } +} + +/**************************************************************************** + * Name: board_autoled_off + * + * Description: + * Turn off the LED specificed. + * + * Input Parameters: + * led - The LED which is under this control + * + ****************************************************************************/ + +void board_autoled_off(int led) +{ + switch (led) + { + case LED_INIRQ: + mpfs_gpiowrite(ICICLE_GPIO_LED1, false); + break; + case LED_SIGNAL: + mpfs_gpiowrite(ICICLE_GPIO_LED3, false); + break; + case LED_ASSERTION: + mpfs_gpiowrite(ICICLE_GPIO_LED3, false); + mpfs_gpiowrite(ICICLE_GPIO_LED2, false); + mpfs_gpiowrite(ICICLE_GPIO_LED1, false); + break; + case LED_PANIC: + mpfs_gpiowrite(ICICLE_GPIO_LED4, false); + break; + + default: + break; + } +} diff --git a/boards/risc-v/mpfs/icicle/src/mpfs_boot.c b/boards/risc-v/mpfs/icicle/src/mpfs_boot.c new file mode 100755 index 00000000000..183ee9591aa --- /dev/null +++ b/boards/risc-v/mpfs/icicle/src/mpfs_boot.c @@ -0,0 +1,58 @@ +/**************************************************************************** + * boards/risc-v/mpfs/icicle/src/mpfs_boot.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include + +#include +#include + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: mpfs_boardinitialize + * + * Description: + * All mpfs architectures must provide the following entry point. + * This entry point is called early in the initialization -- after all + * memory has been configured and mapped but before any devices have been + * initialized. + * + ****************************************************************************/ + +void mpfs_boardinitialize(void) +{ + board_autoled_initialize(); +} diff --git a/boards/risc-v/mpfs/icicle/src/mpfs_bringup.c b/boards/risc-v/mpfs/icicle/src/mpfs_bringup.c new file mode 100755 index 00000000000..559901b61c8 --- /dev/null +++ b/boards/risc-v/mpfs/icicle/src/mpfs_bringup.c @@ -0,0 +1,61 @@ +/**************************************************************************** + * boards/risc-v/mpfs/icicle/src/mpfs_bringup.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include "mpfs.h" + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: mpfs_bringup + ****************************************************************************/ + +int mpfs_bringup(void) +{ + int ret = OK; + +#ifdef CONFIG_FS_PROCFS + /* Mount the procfs file system */ + + ret = mount(NULL, "/proc", "procfs", 0, NULL); + if (ret < 0) + { + serr("ERROR: Failed to mount procfs at %s: %d\n", "/proc", ret); + } +#endif + + return ret; +} diff --git a/boards/risc-v/mpfs/icicle/src/mpfs_ostest.c b/boards/risc-v/mpfs/icicle/src/mpfs_ostest.c new file mode 100755 index 00000000000..715ccc6504c --- /dev/null +++ b/boards/risc-v/mpfs/icicle/src/mpfs_ostest.c @@ -0,0 +1,92 @@ +/**************************************************************************** + * boards/risc-v/mpfs/icicle/src/mpfs_ostest.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include +#include + +#include + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Configuration ************************************************************/ + +#undef HAVE_FPU +#if defined(CONFIG_ARCH_FPU) && \ + !defined(CONFIG_TESTING_OSTEST_FPUTESTDISABLE) && \ + defined(CONFIG_TESTING_OSTEST_FPUSIZE) && \ + defined(CONFIG_SCHED_WAITPID) +# define HAVE_FPU 1 +#endif + +#ifdef HAVE_FPU + +#if CONFIG_TESTING_OSTEST_FPUSIZE != (8 * FPU_XCPT_REGS) +# error "CONFIG_TESTING_OSTEST_FPUSIZE has the wrong size" +#endif + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static uint64_t g_saveregs[XCPTCONTEXT_REGS]; + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/* Given an array of size CONFIG_TESTING_OSTEST_FPUSIZE, this function will + * return the current FPU registers. + */ + +void arch_getfpu(FAR uint32_t *fpusave) +{ + irqstate_t flags; + + /* Take a snapshot of the thread context right now */ + + flags = enter_critical_section(); + riscv_saveusercontext(g_saveregs); + + /* Return only the floating register values */ + + memcpy(fpusave, &g_saveregs[INT_XCPT_REGS], (8 * FPU_XCPT_REGS)); + leave_critical_section(flags); +} + +/* Given two arrays of size CONFIG_TESTING_OSTEST_FPUSIZE this function + * will compare them and return true if they are identical. + */ + +bool arch_cmpfpu(FAR const uint32_t *fpusave1, FAR const uint32_t *fpusave2) +{ + return memcmp(fpusave1, fpusave2, (8 * FPU_XCPT_REGS)) == 0; +} + +#endif /* HAVE_FPU */ diff --git a/boards/risc-v/mpfs/icicle/src/mpfsicicle.h b/boards/risc-v/mpfs/icicle/src/mpfsicicle.h new file mode 100755 index 00000000000..4bfbc5b8151 --- /dev/null +++ b/boards/risc-v/mpfs/icicle/src/mpfsicicle.h @@ -0,0 +1,46 @@ +/**************************************************************************** + * boards/risc-v/mpfs/icicle/src/mpfsicicle.h + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +#ifndef __BOARDS_RISCV_ICICLE_MPFS_SRC_MPFSICICLE_H +#define __BOARDS_RISCV_ICICLE_MPFS_SRC_MPFSICICLE_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#define ICICLE_GPIO_LED1 (GPIO_BANK2 | GPIO_PIN19 | GPIO_OUTPUT) +#define ICICLE_GPIO_LED2 (GPIO_BANK2 | GPIO_PIN18 | GPIO_OUTPUT) +#define ICICLE_GPIO_LED3 (GPIO_BANK2 | GPIO_PIN17 | GPIO_OUTPUT) +#define ICICLE_GPIO_LED4 (GPIO_BANK2 | GPIO_PIN16 | GPIO_OUTPUT) + +/* note: button1 don't have gpio. Only irq */ + +#define ICICLE_GPIO_BUTTON2 (GPIO_BANK2 | GPIO_PIN30 | GPIO_INPUT | \ + GPIO_IRQ_ENABLE | GPIO_IRQ_EDGE_POS) +#define ICICLE_GPIO_BUTTON2_ALT (GPIO_BANK2 | GPIO_PIN26 | GPIO_OUTPUT) +#define ICICLE_GPIO_BUTTON3 (GPIO_BANK2 | GPIO_PIN31 | GPIO_INPUT | \ + GPIO_IRQ_ENABLE | GPIO_IRQ_EDGE_POS) +#define ICICLE_GPIO_BUTTON3_ALT (GPIO_BANK2 | GPIO_PIN27 | GPIO_OUTPUT) + +int mpfs_bringup(void); + +#endif /* __BOARDS_RISCV_ICICLE_MPFS_SRC_MPFSICICLE_H */ From 39274937e4ddf5020ee2a383584e5f4764ec60a9 Mon Sep 17 00:00:00 2001 From: Janne Rosberg Date: Fri, 14 May 2021 09:30:52 +0300 Subject: [PATCH 211/739] documentation/mpfs: add mpfs and icile board to documentation --- .../risc-v/mpfs/boards/icicle/icicle.png | Bin 0 -> 2606726 bytes .../risc-v/mpfs/boards/icicle/index.rst | 79 +++++++++++++++++ Documentation/platforms/risc-v/mpfs/index.rst | 82 ++++++++++++++++++ 3 files changed, 161 insertions(+) create mode 100644 Documentation/platforms/risc-v/mpfs/boards/icicle/icicle.png create mode 100644 Documentation/platforms/risc-v/mpfs/boards/icicle/index.rst create mode 100644 Documentation/platforms/risc-v/mpfs/index.rst diff --git a/Documentation/platforms/risc-v/mpfs/boards/icicle/icicle.png b/Documentation/platforms/risc-v/mpfs/boards/icicle/icicle.png new file mode 100644 index 0000000000000000000000000000000000000000..3ed60749767d8dda9ed77990bb9210126a3ad1e5 GIT binary patch literal 2606726 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 z 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

(F45qKDkW|)SVP>&SR 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�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�G^3tI!{v1^gxy=Hxann~*_g=c9HvHU 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ⅈ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�?|VE+sYIm<<1TUybhVah@8+pn&4!?^+hb{7gl7 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