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

syscfg.defs:
    BSP_NRF51:
        description: 'Set to indicate that BSP has NRF51'
        value: 1

    UART_0:
        description: 'Whether to enable UART0'
        value: 1
    UART_0_PIN_TX:
        description: 'TX pin for UART0'
        value: 24
    UART_0_PIN_RX:
        description: 'RX pin for UART0'
        value: 25
    UART_0_PIN_RTS:
        description: 'RTS pin for UART0'
        value: 0
    UART_0_PIN_CTS:
        description: 'CTS pin for UART0'
        value: 0

    SPI_0_MASTER_PIN_SCK:
        description: 'SCK pin for SPI_0_MASTER'
        value:  29
    SPI_0_MASTER_PIN_MOSI:
        description: 'MOSI pin for SPI_0_MASTER'
        value:  25
    SPI_0_MASTER_PIN_MISO:
        description: 'MISO pin for SPI_0_MASTER'
        value:  28

    SPI_1_SLAVE_PIN_SCK:
        description: 'SCK pin for SPI_1_SLAVE'
        value:  29
    SPI_1_SLAVE_PIN_MOSI:
        description: 'MOSI pin for SPI_1_SLAVE'
        value:  25
    SPI_1_SLAVE_PIN_MISO:
        description: 'MISO pin for SPI_1_SLAVE'
        value:  28
    SPI_1_SLAVE_PIN_SS:
        description: 'SS pin for SPI_1_SLAVE'
        value:  24

    I2C_0_PIN_SCL:
        description: 'SCL pin for I2C_0'
        value:  29
    I2C_0_PIN_SDA:
        description: 'SDA pin for I2C_0'
        value:  25
    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:  29
    I2C_1_PIN_SDA:
        description: 'SDA pin for I2C_1'
        value:  25
    I2C_1_FREQ_KHZ:
        description: 'Frequency in khz for I2C_1 bus'
        value:  100

    TIMER_0:
        description: 'NRF51 Timer 0'
        value:  1
    TIMER_1:
        description: 'NRF51 Timer 1'
        value:  0
    TIMER_2:
        description: 'NRF51 Timer 2'
        value:  0
    TIMER_3:
        description: 'NRF51 RTC0'
        value:  0

    JLINK_DEBUG:
        description: 'Use Segger JLINK OBE firmware'
        value: 0

syscfg.defs.BLE_LP_CLOCK:
    TIMER_0:
        value: 0
    TIMER_3:
        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
    XTAL_32768_SYNTH: 1

syscfg.vals.BLE_LP_CLOCK:
    OS_CPUTIME_FREQ: 32768
    OS_CPUTIME_TIMER_NUM: 3
    # need to keep HFXO running all the time to have accurate 32k synthesized clock
    BLE_XTAL_SETTLE_TIME: 0
    # synthesized 32k clock has 250ppm accuracy
    BLE_LL_OUR_SCA: 250
    BLE_LL_MASTER_SCA: 1
