#
# 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.
#

# Package: hw/bsp/rb-nano2

syscfg.defs:
    BSP_NRF52:
        description: 'Set to indicate that BSP has NRF52'
        value: 1

    UART_0:
        description: 'Whether to enable UART0'
        value: 1
    UART_0_PIN_TX:
        description: 'TX pin for UART0'
        value: 29
    UART_0_PIN_RX:
        description: 'RX pin for UART0'
        value: 30
    UART_0_PIN_RTS:
        description: 'RTS pin for UART0'
        value: 2
    UART_0_PIN_CTS:
        description: 'CTS pin for UART0'
        value: 28

    UART_1:
        description: 'Whether to enable bitbanger UART1'
        value:  0
    UART_1_PIN_TX:
        description: 'TX pin for UART1'
        value:  -1
    UART_1_PIN_RX:
        description: 'RX pin for UART1'
        value:  -1

    SPI_0_MASTER_PIN_SCK:
        description: 'SCK pin for SPI_0_MASTER'
        value:  23
    SPI_0_MASTER_PIN_MOSI:
        description: 'MOSI pin for SPI_0_MASTER'
        value:  24
    SPI_0_MASTER_PIN_MISO:
        description: 'MISO pin for SPI_0_MASTER'
        value:  25

    SPI_0_SLAVE_PIN_SCK:
        description: 'SCK pin for SPI_0_SLAVE'
        value:  23
    SPI_0_SLAVE_PIN_MOSI:
        description: 'MOSI pin for SPI_0_SLAVE'
        value:  24
    SPI_0_SLAVE_PIN_MISO:
        description: 'MISO pin for SPI_0_SLAVE'
        value:  25
    SPI_0_SLAVE_PIN_SS:
        description: 'SS pin for SPI_0_SLAVE'
        value:  22

    TIMER_0:
        description: 'NRF52 Timer 0'
        value:  1
    TIMER_1:
        description: 'NRF52 Timer 1'
        value:  0
    TIMER_2:
        description: 'NRF52 Timer 2'
        value:  0
    TIMER_3:
        description: 'NRF52 Timer 3'
        value:  0
    TIMER_4:
        description: 'NRF52 Timer 4'
        value:  0
    TIMER_5:
        description: 'NRF52 RTC 0'
        value:  0

syscfg.defs.BLE_LP_CLOCK:
    TIMER_0:
        value: 0
    TIMER_5:
        value: 1

syscfg.vals:
    CONFIG_FCB_FLASH_AREA: FLASH_AREA_NFFS
    REBOOT_LOG_FLASH_AREA: FLASH_AREA_REBOOT_LOG
    NFFS_FLASH_AREA: FLASH_AREA_NFFS
    COREDUMP_FLASH_AREA: FLASH_AREA_IMAGE_1
    MCU_DCDC_ENABLED: 1
    XTAL_32768: 1

syscfg.vals.BLE_LP_CLOCK:
    OS_CPUTIME_FREQ: 32768
    OS_CPUTIME_TIMER_NUM: 5
    BLE_XTAL_SETTLE_TIME: 1500
