diff options
Diffstat (limited to 'chip/mchp/tfdp.c')
-rw-r--r-- | chip/mchp/tfdp.c | 499 |
1 files changed, 0 insertions, 499 deletions
diff --git a/chip/mchp/tfdp.c b/chip/mchp/tfdp.c deleted file mode 100644 index b4368b46a8..0000000000 --- a/chip/mchp/tfdp.c +++ /dev/null @@ -1,499 +0,0 @@ -/* Copyright 2017 The Chromium OS Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -/** @file tfdp.c - *MCHP Trace FIFO Data Port hardware access - */ -/** @defgroup MCHP Peripherals TFDP - * @{ - */ - -#include "common.h" -#include "gpio.h" -#include "registers.h" -#include "tfdp_chip.h" - -#ifdef CONFIG_MCHP_TFDP - - -static uint32_t get_disable_intr(void) -{ - uint32_t m; - - __asm__ __volatile__ ("mrs %0, primask;cpsid i" : "=r" (m)); - - return m; -} - -static void restore_intr(uint32_t m) -{ - if (!m) - __asm__ __volatile__ ("cpsie i" : : : "memory"); -} - - -/** - * tfdp_power - Gate clocks On/Off to TFDP block when idle - * - * @param pwr_on (0=Gate clocks when idle), (1=Do not gate - * clocks when idle) - */ -void tfdp_power(uint8_t pwr_on) -{ - if (pwr_on) - MCHP_PCR_SLP_DIS_DEV(MCHP_PCR_TFDP); - else - MCHP_PCR_SLP_EN_DEV(MCHP_PCR_TFDP); -} - - -/** - * tfdp_enable - Init Trace FIFO Data Port - * @param uint8_t non-zero=enable TFDP, false=disable TFDP - * @param uint8_t non-zero=change TFDP pin configuration. - * If TFDP is enabled then GPIO170/171 set to Alt. Func. 1 - * Else GPIO170/171 set to GPIO input, internal pull-up enabled. - * @note - - */ -#define MCHP_TFDP_DATA REG8(MCHP_TFDP_BASE + 0x00) -#define MCHP_TFDP_CTRL REG8(MCHP_TFDP_BASE + 0x04) - -void tfdp_enable(uint8_t en, uint8_t pin_cfg) -{ - if (en) { - MCHP_TFDP_CTRL = 0x01u; - if (pin_cfg) - gpio_config_module(MODULE_TFDP, 1); - } else { - MCHP_TFDP_CTRL = 0x00u; - if (pin_cfg) - gpio_config_module(MODULE_TFDP, 0); - } -} /* end tfdp_enable() */ - - -/** - * TFDPTrace0 - TRACE0: transmit 16-bit trace number lsb first - * over TFDP. - * - * @param nbr 16-bit trace number - * @param b unused - * - * @return uint8_t always TRUE - * @note Function implements critical section. - * Uses tool kit __disable_irq()/__enable_irq() pair which may use - * priviledged Cortex-Mx instructions. - */ -void TFDPTrace0(uint16_t nbr) -{ -#ifdef MCHP_TRACE_MASK_IRQ - uint32_t prim; - - prim = get_disable_intr(); -#endif - - MCHP_TFDP_DATA = (TFDP_FRAME_START); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)nbr; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(nbr >> 8); - TFDP_DELAY(); - -#ifdef MCHP_TRACE_MASK_IRQ - restore_intr(prim); -#endif -} - - -/** - * TRDPTrace1 - TRACE1: transmit 16-bit trace number lsb first - * and 16-bit data lsb first over TFDP. - * - * @param nbr 16-bit trace number - * @param b unused - * @param uint32_t p1 16-bit data1 in b[15:0] - * - * @return uint8_t always TRUE - * @note Function implements critical section. - * Uses tool kit __disable_irq()/__enable_irq() pair which may use - * priviledged Cortex-Mx instructions. - */ -void TFDPTrace1(uint16_t nbr, uint32_t p1) -{ -#ifdef MCHP_TRACE_MASK_IRQ - uint32_t prim; - - prim = get_disable_intr(); -#endif - - MCHP_TFDP_DATA = (TFDP_FRAME_START); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)nbr; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(nbr >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)p1; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p1 >> 8); - TFDP_DELAY(); - -#ifdef MCHP_TRACE_MASK_IRQ - restore_intr(prim); -#endif -} - - -/** - * TFDPTrace2 - TRACE2: transmit 16-bit trace number lsb first - * and two 16-bit data parameters lsb first over TFDP. - * - * @param nbr trace number - * @param b unused - * @param uint32_t p1 16-bit data1 in b[15:0] - * @param uint32_t p2 16-bit data2 in b[15:0] - * - * @return uint8_t always TRUE - * @note Uses tool kit functions to save/disable/restore - * interrupts for critical section. These may use - * priviledged instructions. - */ -void TFDPTrace2(uint16_t nbr, uint32_t p1, uint32_t p2) -{ -#ifdef MCHP_TRACE_MASK_IRQ - uint32_t prim; - - prim = get_disable_intr(); -#endif - - MCHP_TFDP_DATA = (TFDP_FRAME_START); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)nbr; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(nbr >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)p1; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p1 >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)p2; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p2 >> 8); - TFDP_DELAY(); - -#ifdef MCHP_TRACE_MASK_IRQ - restore_intr(prim); -#endif -} - - -/** - * TFDPTrace3 - TRACE3: transmit 16-bit trace number lsb first - * and three 16-bit data parameters lsb first over TFDP. - * - * @param nbr trace number - * @param b unused - * @param uint32_t p1 16-bit data1 in b[15:0] - * @param uint32_t p2 16-bit data2 in b[15:0] - * @param uint32_t p3 16-bit data3 in b[15:0] - * - * @return uint8_t always TRUE - * @note Uses tool kit functions to save/disable/restore - * interrupts for critical section. These may use - * priviledged instructions. - */ -void TFDPTrace3(uint16_t nbr, uint32_t p1, - uint32_t p2, uint32_t p3) -{ -#ifdef MCHP_TRACE_MASK_IRQ - uint32_t prim; - - prim = get_disable_intr(); -#endif - - MCHP_TFDP_DATA = (TFDP_FRAME_START); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)nbr; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(nbr >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)p1; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p1 >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)p2; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p2 >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)p3; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p3 >> 8); - TFDP_DELAY(); - -#ifdef MCHP_TRACE_MASK_IRQ - restore_intr(prim); -#endif -} - - -/** - * TFDPTrace4 - TRACE3: transmit 16-bit trace number lsb first - * and four 16-bit data parameters lsb first over TFDP. - * - * @param nbr trace number - * @param b unused - * @param uint32_t p1 16-bit data1 in b[15:0] - * @param uint32_t p2 16-bit data2 in b[15:0] - * @param uint32_t p3 16-bit data3 in b[15:0] - * @param uint32_t p4 16-bit data4 in b[15:0] - * - * @return uint8_t always TRUE - * @note Uses tool kit functions to save/disable/restore - * interrupts for critical section. These may use - * priviledged instructions. - */ -void TFDPTrace4(uint16_t nbr, uint32_t p1, uint32_t p2, - uint32_t p3, uint32_t p4) -{ -#ifdef MCHP_TRACE_MASK_IRQ - uint32_t prim; - - prim = get_disable_intr(); -#endif - - MCHP_TFDP_DATA = (TFDP_FRAME_START); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)nbr; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(nbr >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)p1; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p1 >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)p2; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p2 >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)p3; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p3 >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)p4; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p4 >> 8); - TFDP_DELAY(); - -#ifdef MCHP_TRACE_MASK_IRQ - restore_intr(prim); -#endif -} - - -/** - * TFDPTrace11 - Transmit one 32-bit data item over TFDP - * - * @param nbr trace number - * @param b unused - * @param uint32_t p1 32-bit data to be transmitted - * - */ -void TFDPTrace11(uint16_t nbr, uint32_t p1) -{ -#ifdef MCHP_TRACE_MASK_IRQ - uint32_t prim; - - prim = get_disable_intr(); -#endif - - MCHP_TFDP_DATA = (TFDP_FRAME_START); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)nbr; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(nbr >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)p1; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p1 >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p1 >> 16); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p1 >> 24); - TFDP_DELAY(); - -#ifdef MCHP_TRACE_MASK_IRQ - restore_intr(prim); -#endif -} - - -/** - * TFDPTrace12 - Transmit two 32-bit data items over TFDP - * - * @param nbr trace number - * @param b unused - * @param uint32_t p1 32-bit data1 to be transmitted - * @param uint32_t p2 32-bit data2 to be transmitted - * - */ -void TFDPTrace12(uint16_t nbr, uint32_t p1, uint32_t p2) -{ -#ifdef MCHP_TRACE_MASK_IRQ - uint32_t prim; - - prim = get_disable_intr(); -#endif - - MCHP_TFDP_DATA = (TFDP_FRAME_START); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)nbr; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(nbr >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)p1; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p1 >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p1 >> 16); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p1 >> 24); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)p2; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p2 >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p2 >> 16); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p2 >> 24); - TFDP_DELAY(); - -#ifdef MCHP_TRACE_MASK_IRQ - restore_intr(prim); -#endif -} - -/** - * TFDPTrace13 - Transmit three 32-bit data items over TFDP - * - * @param nbr trace number - * @param b unused - * @param uint32_t p1 32-bit data1 to be transmitted - * @param uint32_t p2 32-bit data2 to be transmitted - * @param uint32_t p3 32-bit data3 to be transmitted - * - */ -void TFDPTrace13(uint16_t nbr, uint32_t p1, - uint32_t p2, uint32_t p3) -{ -#ifdef MCHP_TRACE_MASK_IRQ - uint32_t prim; - - prim = get_disable_intr(); -#endif - - MCHP_TFDP_DATA = (TFDP_FRAME_START); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)nbr; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(nbr >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)p1; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p1 >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p1 >> 16); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p1 >> 24); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)p2; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p2 >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p2 >> 16); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p2 >> 24); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)p3; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p3 >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p3 >> 16); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p3 >> 24); - TFDP_DELAY(); - -#ifdef MCHP_TRACE_MASK_IRQ - restore_intr(prim); -#endif -} - -/** - * TFDPTrace14 - Transmit four 32-bit data items over TFDP - * - * @param nbr trace number - * @param b unused - * @param uint32_t p1 32-bit data1 to be transmitted - * @param uint32_t p2 32-bit data2 to be transmitted - * @param uint32_t p3 32-bit data3 to be transmitted - * @param uint32_t p4 32-bit data4 to be transmitted - */ -void TFDPTrace14(uint16_t nbr, uint32_t p1, uint32_t p2, - uint32_t p3, uint32_t p4) -{ -#ifdef MCHP_TRACE_MASK_IRQ - uint32_t prim; - - prim = get_disable_intr(); -#endif - - MCHP_TFDP_DATA = (TFDP_FRAME_START); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)nbr; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(nbr >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)p1; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p1 >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p1 >> 16); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p1 >> 24); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)p2; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p2 >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p2 >> 16); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p2 >> 24); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)p3; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p3 >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p3 >> 16); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p3 >> 24); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)p4; - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p4 >> 8); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p4 >> 16); - TFDP_DELAY(); - MCHP_TFDP_DATA = (uint8_t)(p4 >> 24); - TFDP_DELAY(); - -#ifdef MCHP_TRACE_MASK_IRQ - restore_intr(prim); -#endif -} - -#endif /* #ifdef CONFIG_MCHP_TFDP */ - - -/* end tfdp.c */ -/** @} - */ |