Commit Graph

16624 Commits

Author SHA1 Message Date
YAMAMOTO Takashi
8fc5a24710 arch/arm/src/stm32/stm32_dma_v2.c: Fix a syslog format 2020-11-20 22:22:53 -08:00
YAMAMOTO Takashi
c7bfb85584 arch/arm/src/stm32f0l0g0/stm32_tim_lowerhalf.c: Appease nxstyle 2020-11-20 22:22:53 -08:00
YAMAMOTO Takashi
66895762db arch/arm/src/stm32f0l0g0/stm32_tim.c: Appease nxstyle 2020-11-20 22:22:53 -08:00
YAMAMOTO Takashi
2ac76ea918 arch/arm/src/stm32f0l0g0/stm32_i2c.c: Appease nxstyle 2020-11-20 22:22:53 -08:00
YAMAMOTO Takashi
cefa1b28e1 arch/arm/src/stm32/stm32_otgfsdev.c: Appease nxstyle 2020-11-20 22:22:53 -08:00
Michal Lenc
8cf6cfda1a imxrt: Added support for DP83825I PHY
Signed-off-by: Michal Lenc <lencmich@fel.cvut.cz>
2020-11-20 20:34:57 -03:00
Masayuki Ishikawa
1914aac05f arch: xtensa: Fix the pause handler for SMP
Summary:
- Apply the same logic added to cxd56_cpupause.c

Impact:
- SMP only

Testing:
- Tested with esp32-core:smp (QEMU)
- Run smp and ostest

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2020-11-20 00:49:25 -08:00
Masayuki Ishikawa
a500bd0238 arch: k210: Fix the pause handler for SMP
Summary:
- Apply the same logic added to cxd56_cpupause.c

Impact:
- SMP only

Testing:
- Tested with maix-bit:smp (QEMU)
- Run smp and ostest

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2020-11-20 00:49:25 -08:00
Masayuki Ishikawa
42dea9edf9 arch: lc823450: Fix the pause handler for SMP
Summary:
- Apply the same logic added to cxd56_cpupause.c

Impact:
- SMP only

Testing:
- Tested with lc823450-xgevk:rndis
- Run smp and ostest

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2020-11-20 00:49:25 -08:00
Masayuki Ishikawa
1978dcc9a9 arch: armv7-a: Fix the pause handler for SMP
Summary:
- Apply the same logic added to cxd56_cpupause.c

Impact:
- SMP only

Testing:
- Tested with sabre-6quad:smp (QEMU and dev board)
- Run smp and ostest

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2020-11-20 00:49:25 -08:00
Masayuki Ishikawa
55c00ad3d9 arch: cxd56xx: Fix the pause handler for SMP
Summary:
- I noticed that sched_add_readytorun() runs on multiple CPUs simultaneously
- Finally, I found the root cause which was described in TODO
- Actually, the task newly scheduled on remote CPU did not acquire g_cpu_irqlock
- This commit fixes this issue by adding a critical section to the pause handler
- Which will acquire g_cpu_irqlock on the remote CPU explicitly

Impact:
- SMP only

Testing:
- Tested with spresense:wifi_smp (NCPUS=2 and 4)
- Run smp, ostest, nxplayer

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2020-11-20 00:49:25 -08:00
Masayuki Ishikawa
12862c7b33 armv7-a: Fix comments on Cortex-A SGI
Summary:
- I noticed that Cortex-A SGI can be masked
- We thought the SGI is not maskable
- Although I can not remember how I tested it before
- It actually works as expected now
- Also, fixed the number of remaining bugs in TODO

Impact:
- No impact

Testing:
- Tested with sabre-6quad:smp (QEMU and dev board)
- Add the following code in up_idle() before calling asm("WFI");
+  if (0 != up_cpu_index())
+    {
+      up_irq_save();
+    }
- Run the hello app, you can see "Hello, World!!"
- But nsh will freeze soon because arm_pause_handler is not called.

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
2020-11-19 18:01:30 -08:00
Abdelatif Guettouche
79b07e6c94 arch/xtensa/src/esp32/esp32_gpio.c: Fix GPIO IRQ assert condition.
Signed-off-by: Abdelatif Guettouche <abdelatif.guettouche@espressif.com>
2020-11-19 07:38:59 -08:00
YAMAMOTO Takashi
6ee7fdf874 include/inttypes.h: Provide PRIdMAX and friends using 'j' modifier
Replace definitions in other places.
2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
123d882027 sim types.h: A workaround for macOS MODULECC 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
a863fa30f9 sim: Make int64_t match the host OS 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
c97f6f1b59 sim: Add _intmax_t and _uintmax_t 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
09fca224ec arch/sim/include/inttypes.h: Fix intptr_t
64-bit size_t/intptr_t/ptrdiff_t are long, not long long,
for macOS and Linux.

Note: we don't care CONFIG_SIM_M32 on macOS.

macOS:
    spacetanuki% uname -a
    Darwin spacetanuki.lan 18.7.0 Darwin Kernel Version 18.7.0: Mon Aug 31 20:53:32 PDT 2020; root:xnu-4903.278.44~1/RELEASE_X86_64 x86_64
    spacetanuki% cc --version
    Apple clang version 11.0.0 (clang-1100.0.33.17)
    Target: x86_64-apple-darwin18.7.0
    Thread model: posix
    InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
    spacetanuki% cc -dM -E - < /dev/null|grep __SIZE_TYPE__
    #define __SIZE_TYPE__ long unsigned int
    spacetanuki% cc -m32 -dM -E - < /dev/null|grep __SIZE_TYPE__
    #define __SIZE_TYPE__ long unsigned int
    spacetanuki%

Linux:
    root@4c2e9e83ac82:/tools# uname -a
    Linux 4c2e9e83ac82 5.4.39-linuxkit #1 SMP Fri May 8 23:03:06 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
    root@4c2e9e83ac82:/tools# cc --version
    cc (Ubuntu 9.3.0-10ubuntu2) 9.3.0
    Copyright (C) 2019 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    root@4c2e9e83ac82:/tools# cc -dM -E - < /dev/null|grep __SIZE_TYPE__
    #define __SIZE_TYPE__ long unsigned int
    root@4c2e9e83ac82:/tools# cc -m32 -dM -E - < /dev/null|grep __SIZE_TYPE__
    #define __SIZE_TYPE__ unsigned int
    root@4c2e9e83ac82:/tools#
2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
fca3b63800 mips: Add _intmax_t and _uintmax_t 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
a0ed2b64c9 mips: Use types matching the compiler types
root@212cf3f52994:/tools# p32-gcc -mlong32 -dM -E - < /dev/null | grep "__INT.*_TYPE__"|sort
    #define __INT16_TYPE__ short int
    #define __INT32_TYPE__ long int
    #define __INT64_TYPE__ long long int
    #define __INT8_TYPE__ signed char
    #define __INTMAX_TYPE__ long long int
    #define __INTPTR_TYPE__ int
    #define __INT_FAST16_TYPE__ int
    #define __INT_FAST32_TYPE__ int
    #define __INT_FAST64_TYPE__ long long int
    #define __INT_FAST8_TYPE__ int
    #define __INT_LEAST16_TYPE__ short int
    #define __INT_LEAST32_TYPE__ long int
    #define __INT_LEAST64_TYPE__ long long int
    #define __INT_LEAST8_TYPE__ signed char
    root@212cf3f52994:/tools#
2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
152a6e67ea hcs12: Add _intmax_t and _uintmax_t 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
e33f5c1c6a hc12: Add _intmax_t and _uintmax_t 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
27352716fd z16: Add _intmax_t and _uintmax_t 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
8a54cca442 ez80: Add _intmax_t and _uintmax_t 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
173916dcdc z80: Add _intmax_t and _uintmax_t 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
be94340adb z8: Add _intmax_t and _uintmax_t 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
2cda13b642 z180: Add _intmax_t and _uintmax_t 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
5995cfc2ce or1k: Add _intmax_t and _uintmax_t 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
7d45dc3e6a misoc: Add _intmax_t and _uintmax_t 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
ff9ee6902e m16c: Add _intmax_t and _uintmax_t 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
54a0037981 sh1: Add _intmax_t and _uintmax_t 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
7890fc6f59 rx65n: Add _intmax_t and _uintmax_t 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
6ee85aef07 rx65n: Fix int32_t to match the compiler
root@212cf3f52994:/tools# rx-elf-gcc -dM -E - < /dev/null | grep "__INT.*_TYPE__"|sort
    #define __INT16_TYPE__ short int
    #define __INT32_TYPE__ long int
    #define __INT64_TYPE__ long long int
    #define __INT8_TYPE__ signed char
    #define __INTMAX_TYPE__ long long int
    #define __INTPTR_TYPE__ long int
    #define __INT_FAST16_TYPE__ int
    #define __INT_FAST32_TYPE__ int
    #define __INT_FAST64_TYPE__ long long int
    #define __INT_FAST8_TYPE__ int
    #define __INT_LEAST16_TYPE__ short int
    #define __INT_LEAST32_TYPE__ long int
    #define __INT_LEAST64_TYPE__ long long int
    #define __INT_LEAST8_TYPE__ signed char
    root@212cf3f52994:/tools#
2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
1f20f83fa0 i486: Add _intmax_t and _uintmax_t 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
a462644e32 intel64: Add _intmax_t and _uintmax_t 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
7eef194a93 intel64: Switch int64_t from long long to long
To make it match what the compiler expects.

on nuttx-ci-linux image:
    root@fec5a6192c70:/tools# gcc -dM -E - < /dev/null | grep -E "UINT(32|64)_TYPE"
    #define __UINT64_TYPE__ long unsigned int
    #define __UINT32_TYPE__ unsigned int
    root@fec5a6192c70:/tools#

on macOS:
    spacetanuki% x86_64-elf-gcc -dM -E - < /dev/null | grep -E "UINT(32|64)_TYPE"
    #define __UINT32_TYPE__ unsigned int
    #define __UINT64_TYPE__ long unsigned int
    spacetanuki%
2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
cce626b545 risc-v: Add _intmax_t and _uintmax_t 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
e99321bf9d risc-v 32-bit: Fix types to match what the compiler expects
spacetanuki% riscv64-unknown-elf-gcc -march=rv32im -mabi=ilp32 -dM -E - < /dev/null | grep INT32_TYPE
    #define __INT32_TYPE__ long int
    #define __UINT32_TYPE__ long unsigned int
    spacetanuki% riscv64-unknown-elf-gcc -march=rv32im -mabi=ilp32 -dM -E - < /dev/null | grep INT64_TYPE
    #define __INT64_TYPE__ long long int
    #define __UINT64_TYPE__ long long unsigned int
    spacetanuki% riscv64-unknown-elf-gcc -dM -E - < /dev/null | grep LP64
    #define __LP64__ 1
    #define _LP64 1
    spacetanuki%
2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
723cc14009 risc-v: Switch int64_t from long long to long
So that it matches what the toolchain expects.

    spacetanuki% riscv64-unknown-elf-gcc --version
    riscv64-unknown-elf-gcc (SiFive GCC 8.3.0-2019.08.0) 8.3.0
    Copyright (C) 2018 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    spacetanuki% riscv64-unknown-elf-gcc -dM -E - < /dev/null | grep UINT64_TYPE
    #define __UINT64_TYPE__ long unsigned int
    spacetanuki%
2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
9c1d235329 avr: Add _intmax_t and _uintmax_t 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
e3a9fe8992 avr32: Add _intmax_t and _uintmax_t 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
03c332acf0 arm: Add _intmax_t and _uintmax_t 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
e8a9ce4988 arm inttypes.h: Use long for 32-bit integer 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
b1ed95f29d arm: Change _int32_t from int to long to match the compiler 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
b8e559bb2e xtensa: Add _intmax_t and _uintmax_t 2020-11-19 00:49:56 -08:00
YAMAMOTO Takashi
c18f074830 xtensa: Change _int32_t from long to int to match the compiler
PRIx32 etc is already "x" etc.
2020-11-19 00:49:56 -08:00
Pavel Pisa
4d2727c193 stm32l4: correct macros STM32L4_CAN_MCR_OFFSET, etc... to match defines.
It seems that part of the patch
stm32l4: correct build of stm32l4_can.c to respect L4 variant
has been lost on its way to mainline.

Signed-off-by: Pavel Pisa <ppisa@pikron.com>
2020-11-18 19:31:07 -08:00
Alan C. Assis
50e1a49c6e Fix the SPIRAM_BANKSWITCH that was defined incorrectly 2020-11-18 22:21:53 +01:00
Alan C. Assis
f09d103528 xtensa/esp32: Add high memory support to work with PSRAM 2020-11-18 22:21:53 +01:00
zhongan
a396b191d4 rv32im: set compressed instruction enabled as default.
Signed-off-by: zhongan <zhongan@xiaomi.com>
2020-11-17 18:53:10 -08:00
zhongan
9eae6edfde rv32im: fix typo.
Signed-off-by: zhongan <zhongan@xiaomi.com>
2020-11-17 18:53:10 -08:00
Abdelatif Guettouche
2d7e063eb0 arch/xtensa/src/esp32/esp32_tim.c: Fix build when debug is enabled.
A non-existent variable was used.

Signed-off-by: Abdelatif Guettouche <abdelatif.guettouche@espressif.com>
2020-11-17 18:46:06 -08:00
Abdelatif Guettouche
fa713c09e8 arch/arm/src/stm32h7/stm32_otghost.c: Fix undeclared "ret". 2020-11-17 03:20:54 -08:00
YAMAMOTO Takashi
46f17a6f36 arch/arm/src/xmc4/xmc4_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
1a24e9c0da arch/arm/src/nrf52/nrf52_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
4bb2d92679 arch/arm/src/eoss3/eoss3_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
dbd0c4aa0b arch/arm/src/lpc17xx_40xx/lpc17_40_sdcard.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
a2ee706832 arch/arm/src/samd2l2/sam_usb.c: Fix type mismatches 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
ba8e40d424 arch/arm/src/max326xx/max32660/max32660_serial.c: Fix a printf format warning 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
04883b2604 arch/arm/src/lc823450/lc823450_mtd.c: Fix a printf format warning 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
c3d87ed46c arch/arm/src/lc823450/lc823450_procfs_dvfs.c: Fix printf format warnings 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
0d0aae2f00 arch/arm/src/s32k1xx/s32k1xx_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
2341dc5180 arch/arm/src/kinetis/kinetis_sdhc.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
b4815f8fc9 arch/arm/src/kinetis/kinetis_lpserial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
4a8d0d15d4 arch/arm/src/imxrt/imxrt_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
457f5f5155 arch/arm/src/samd5e5/sam_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
ab6fed1021 arch/arm/src/samd2l2/sam_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
6dec360169 arch/arm/src/samv7/sam_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
41b357128d arch/arm/src/sam34/sam_udp.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
b142c9c7cf arch/arm/src/sama5/sam_dbgu.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
4b269aaea5 arch/arm/src/lpc54xx/lpc54_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
f755d3cb3a arch/arm/src/sama5/sam_udphs.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
fbc55c184e arch/arm/src/sama5/sam_sdmmc.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
3b9e72c898 arch/arm/src/cxd56xx/cxd56_irq.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
10a4243fcf arch/arm/src/c5471/c5471_watchdog.c: Fix printf format warnings 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
01abc41caf stm32: Use the consistent type for stm32_dmacapable 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
7999ff0633 arch/arm/src/stm32l4/stm32l4_sdmmc.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
bb8a7e8e83 arch/arm/src/stm32h7/stm32_sdmmc.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
3051965e45 arch/arm/src/stm32f7/stm32_sdmmc.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
3661cb5709 arch/arm/src/stm32/stm32_sdio.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
56a79d7248 arch/arm/src/am335x/am335x_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
ea3aab240c arch/arm/src/cxd56xx/cxd56_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
761ae07be7 arch/arm/src/imx1/imx_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
570535d887 arch/arm/src/kinetis/kinetis_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
ec9d00bd84 arch/arm/src/kl/kl_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
ce054f5ac4 arch/arm/src/lc823450/lc823450_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
8bf2ab7b98 arch/arm/src/lpc17xx_40xx/lpc17_40_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
2894f62de1 arch/arm/src/lpc214x/lpc214x_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
f217542272 arch/arm/src/lpc2378/lpc23xx_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
a9d006b0a5 arch/arm/src/sam34/sam_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
fa9a517fcd arch/arm/src/sama5/sam_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
9d114e655d arch/arm/src/str71x/str71x_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
ede1dcf706 arch/arm/src/tiva/common/tiva_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
2652d4127e arch/hc/src/m9s12/m9s12_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
50bddb23d0 arch/mips/src/pic32mx/pic32mx_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
97fc5ed7e9 arch/arm/src/lpc31xx/lpc31_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
c72a6c4e5b arch/arm/src/lpc43xx/lpc43_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
7d5cebe265 arch/avr/src/at32uc3/at32uc3_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
9897f115cf arch/mips/src/pic32mz/pic32mz_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00
YAMAMOTO Takashi
7cd2dd1c32 arch/arm/src/nuc1xx/nuc_serial.c: Fix a type mismatch 2020-11-16 08:29:00 -08:00