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

    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

    I2C_0_PIN_SCL:
        description: 'SCL pin for I2C_0'
        value:  19
    I2C_0_PIN_SDA:
        description: 'SDA pin for I2C_0'
        value:  20
    I2C_0_FREQ_KHZ:
        description: 'Frequency in khz for I2C_0 bus'
        value:  100
    I2C_0_FREQ:
        description: 'Use I2C_0_FREQ_KHZ instead'
        defunct: 1
        value:  100

    I2C_1_PIN_SCL:
        description: 'SCL pin for I2C_1'
        value:  13
    I2C_1_PIN_SDA:
        description: 'SDA pin for I2C_1'
        value:  12
    I2C_1_FREQ_KHZ:
        description: 'Frequency in khz for I2C_1 bus'
        value:  100

    BUTTON_A:
        description: 'enable Button A'
        value: 0
    BUTTON_B:
        description: 'enable Button B'
        value: 0

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

syscfg.vals:
    CONFIG_FCB_FLASH_AREA: FLASH_AREA_FCB_CONF
    REBOOT_LOG_FLASH_AREA: FLASH_AREA_REBOOT_LOG
    NFFS_FLASH_AREA: FLASH_AREA_FCB_LOG
    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 
