| /* |
| * Copyright (c) 2016-2017 Nordic Semiconductor ASA |
| * Copyright (c) 2016 Vinayak Kariappa Chettimada |
| * Copyright 2019 NXP |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /* CONFIG_BT_CTLR_DEBUG_PINS */ |
| /* CONFIG_BT_CTLR_DEBUG_PINS */ |
| /* |
| * The BLE SW link layer defines 10 GPIO pins for debug related |
| * information (but really only uses 7 pins). Zephyr has a block of |
| * 10 GPIOs routed to J2 odd pins 1-19 (inside bank of J2). |
| * |
| * Mapping: |
| * |
| * J2.1 : DEBUG_CPU_SLEEP |
| * J2.3 : DEBUG_TICKER_ISR, DEBUG_TICKER_TASK |
| * J2.5 : DEBUG_TICKER_JOB |
| * J2.7 : DEBUG_RADIO_PREPARE_A, DEBUG_RADIO_CLOSE_A |
| * J2.9 : DEBUG_RADIO_PREPARE_S, DEBUG_RADIO_START_S, DEBUG_RADIO_CLOSE_S |
| * J2.11 : DEBUG_RADIO_PREPARE_O, DEBUG_RADIO_START_O, DEBUG_RADIO_CLOSE_O |
| * J2.13 : DEBUG_RADIO_PREPARE_M, DEBUG_RADIO_START_M, DEBUG_RADIO_CLOSE_M |
| * J2.15 : DEBUG_RADIO_ISR |
| * J2.17 : DEBUG_RADIO_XTAL |
| * J2.19 : DEBUG_RADIO_ACTIVE |
| * |
| */ |
| #ifdef CONFIG_BT_CTLR_DEBUG_PINS |
| |
| #include <zephyr/drivers/gpio.h> |
| |
| extern const struct device *vega_debug_portb; |
| extern const struct device *vega_debug_portc; |
| extern const struct device *vega_debug_portd; |
| |
| #define DEBUG0_PIN 5 |
| #define DEBUG0_PORT vega_debug_portd |
| |
| #define DEBUG1_PIN 4 |
| #define DEBUG1_PORT vega_debug_portd |
| |
| #define DEBUG2_PIN 3 |
| #define DEBUG2_PORT vega_debug_portd |
| |
| #define DEBUG3_PIN 2 |
| #define DEBUG3_PORT vega_debug_portd |
| |
| #define DEBUG4_PIN 1 |
| #define DEBUG4_PORT vega_debug_portd |
| |
| #define DEBUG5_PIN 0 |
| #define DEBUG5_PORT vega_debug_portd |
| |
| #define DEBUG6_PIN 30 |
| #define DEBUG6_PORT vega_debug_portc |
| |
| #define DEBUG7_PIN 29 |
| #define DEBUG7_PORT vega_debug_portc |
| |
| #define DEBUG8_PIN 28 |
| #define DEBUG8_PORT vega_debug_portc |
| |
| #define DEBUG9_PIN 29 |
| #define DEBUG9_PORT vega_debug_portb |
| |
| |
| |
| /* below are some interesting macros referenced by controller |
| * which can be defined to SoC's GPIO toggle to observe/debug the |
| * controller's runtime behavior. |
| * |
| * The ULL/LLL has defined 10 bits for doing debug output to be captured |
| * by a logic analyzer (i.e. minimally invasive). Vega board has some |
| * GPIO routed to the headers. Unfortunately they are spread across |
| * ports if you want to implement the 10 unique bits. |
| * |
| * portd |
| * |
| */ |
| #define DEBUG_INIT() \ |
| do { \ |
| vega_debug_portb = DEVICE_DT_GET(DT_NODELABEL(gpiob)); \ |
| vega_debug_portc = DEVICE_DT_GET(DT_NODELABEL(gpioc)); \ |
| vega_debug_portd = DEVICE_DT_GET(DT_NODELABEL(gpiod)); \ |
| \ |
| gpio_pin_set(DEBUG0_PORT, DEBUG0_PIN, 1); \ |
| gpio_pin_set(DEBUG0_PORT, DEBUG0_PIN, 0); \ |
| } while (0) |
| |
| #define DEBUG_CPU_SLEEP(flag) gpio_pin_set(DEBUG0_PORT, DEBUG0_PIN, flag) |
| |
| #define DEBUG_TICKER_ISR(flag) gpio_pin_set(DEBUG1_PORT, DEBUG1_PIN, flag) |
| |
| #define DEBUG_TICKER_TASK(flag) gpio_pin_set(DEBUG1_PORT, DEBUG1_PIN, flag) |
| |
| #define DEBUG_TICKER_JOB(flag) gpio_pin_set(DEBUG2_PORT, DEBUG2_PIN, flag) |
| |
| #define DEBUG_RADIO_ISR(flag) gpio_pin_set(DEBUG7_PORT, DEBUG7_PIN, flag) |
| |
| #define DEBUG_RADIO_XTAL(flag) gpio_pin_set(DEBUG8_PORT, DEBUG8_PIN, flag) |
| |
| #define DEBUG_RADIO_ACTIVE(flag) gpio_pin_set(DEBUG9_PORT, DEBUG9_PIN, flag) |
| |
| #define DEBUG_RADIO_CLOSE(flag) \ |
| do { \ |
| if (!flag) { \ |
| gpio_pin_set(DEBUG3_PORT, DEBUG3_PIN, flag); \ |
| gpio_pin_set(DEBUG4_PORT, DEBUG4_PIN, flag); \ |
| gpio_pin_set(DEBUG5_PORT, DEBUG5_PIN, flag); \ |
| gpio_pin_set(DEBUG6_PORT, DEBUG6_PIN, flag); \ |
| } \ |
| } while (0) |
| |
| #define DEBUG_RADIO_PREPARE_A(flag) \ |
| gpio_pin_set(DEBUG3_PORT, DEBUG3_PIN, flag) |
| |
| #define DEBUG_RADIO_START_A(flag) \ |
| gpio_pin_set(DEBUG3_PORT, DEBUG3_PIN, flag) |
| |
| #define DEBUG_RADIO_CLOSE_A(flag) \ |
| gpio_pin_set(DEBUG3_PORT, DEBUG3_PIN, flag) |
| |
| #define DEBUG_RADIO_PREPARE_S(flag) \ |
| gpio_pin_set(DEBUG4_PORT, DEBUG4_PIN, flag) |
| |
| #define DEBUG_RADIO_START_S(flag) \ |
| gpio_pin_set(DEBUG4_PORT, DEBUG4_PIN, flag) |
| |
| #define DEBUG_RADIO_CLOSE_S(flag) \ |
| gpio_pin_set(DEBUG4_PORT, DEBUG4_PIN, flag) |
| |
| #define DEBUG_RADIO_PREPARE_O(flag) \ |
| gpio_pin_set(DEBUG5_PORT, DEBUG5_PIN, flag) |
| |
| #define DEBUG_RADIO_START_O(flag) \ |
| gpio_pin_set(DEBUG5_PORT, DEBUG5_PIN, flag) |
| |
| #define DEBUG_RADIO_CLOSE_O(flag) \ |
| gpio_pin_set(DEBUG5_PORT, DEBUG5_PIN, flag) |
| |
| #define DEBUG_RADIO_PREPARE_M(flag) \ |
| gpio_pin_set(DEBUG6_PORT, DEBUG6_PIN, flag) |
| |
| #define DEBUG_RADIO_START_M(flag) \ |
| gpio_pin_set(DEBUG6_PORT, DEBUG6_PIN, flag) |
| |
| #define DEBUG_RADIO_CLOSE_M(flag) \ |
| gpio_pin_set(DEBUG6_PORT, DEBUG6_PIN, flag) |
| |
| #else |
| |
| #define DEBUG_INIT() |
| #define DEBUG_CPU_SLEEP(flag) |
| #define DEBUG_TICKER_ISR(flag) |
| #define DEBUG_TICKER_TASK(flag) |
| #define DEBUG_TICKER_JOB(flag) |
| #define DEBUG_RADIO_ISR(flag) |
| #define DEBUG_RADIO_HCTO(flag) |
| #define DEBUG_RADIO_XTAL(flag) |
| #define DEBUG_RADIO_ACTIVE(flag) |
| #define DEBUG_RADIO_CLOSE(flag) |
| #define DEBUG_RADIO_PREPARE_A(flag) |
| #define DEBUG_RADIO_START_A(flag) |
| #define DEBUG_RADIO_CLOSE_A(flag) |
| #define DEBUG_RADIO_PREPARE_S(flag) |
| #define DEBUG_RADIO_START_S(flag) |
| #define DEBUG_RADIO_CLOSE_S(flag) |
| #define DEBUG_RADIO_PREPARE_O(flag) |
| #define DEBUG_RADIO_START_O(flag) |
| #define DEBUG_RADIO_CLOSE_O(flag) |
| #define DEBUG_RADIO_PREPARE_M(flag) |
| #define DEBUG_RADIO_START_M(flag) |
| #define DEBUG_RADIO_CLOSE_M(flag) |
| |
| #endif |