# 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/nina-b1

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:  6
    UART_0_PIN_RX:
        description: 'RX pin for UART0'
        value:  5
    UART_0_PIN_RTS:
        description: 'RTS pin for UART0'
        value:  31
    UART_0_PIN_CTS:
        description: 'CTS pin for UART0'
        value: 7

    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

    I2C_0_PIN_SCL:
        description: 'SCL pin for I2C_0'
        value:  27
    I2C_0_PIN_SDA:
        description: 'SDA pin for I2C_0'
        value:  26
    I2C_0_FREQ_KHZ:
        description: 'Frequency in khz for I2C_0 bus'
        value:  100

    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
    BOOT_SERIAL_DETECT_PIN: 16  # on IRC-BTLE board P0.16=SWITCH_1
    # BOOT_SERIAL_DETECT_PIN 30 # on IRC-BTLE board P0.30=SWITCH_2

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