# 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/vbluno52

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:  8
    UART_0_PIN_RTS:
        description: 'RTS pin for UART0'
        value:  5
    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:  15
    SPI_0_MASTER_PIN_MOSI:
        description: 'MOSI pin for SPI_0_MASTER'
        value:  13
    SPI_0_MASTER_PIN_MISO:
        description: 'MISO pin for SPI_0_MASTER'
        value:  14

    SPI_0_SLAVE_PIN_SCK:
        description: 'SCK pin for SPI_0_SLAVE'
        value:  15
    SPI_0_SLAVE_PIN_MOSI:
        description: 'MOSI pin for SPI_0_SLAVE'
        value:  13
    SPI_0_SLAVE_PIN_MISO:
        description: 'MISO pin for SPI_0_SLAVE'
        value:  14
    SPI_0_SLAVE_PIN_SS:
        description: 'SS pin for SPI_0_SLAVE'
        value:  11

    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

    I2C_1_PIN_SCL:
        description: 'SCL pin for I2C_1'
        value:  31
    I2C_1_PIN_SDA:
        description: 'SDA pin for I2C_1'
        value:  30
    I2C_1_FREQ_KHZ:
        description: 'Frequency in khz for I2C_1 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
    I2C_0: 1
    I2C_1: 1
    XTAL_32768: 1

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