project:cfg:BoardConfig_IPC: Added fastboot BoardConfig file and firmware post-scripts, distinguishing between the BoardConfigs for Luckfox Pico Pro and Luckfox Pico Max. project:app: Added fastboot_client and rk_smart_door for quick boot applications; updated rkipc app to adapt to the latest media library. media:samples: Added more usage examples. media:rockit: Fixed bugs; removed support for retrieving data frames from VPSS. media:isp: Updated rkaiq library and related tools to support connection to RKISP_Tuner. sysdrv:Makefile: Added support for compiling drv_ko on Luckfox Pico Ultra W using Ubuntu; added support for custom root filesystem. sysdrv:tools:board: Updated Buildroot optional mirror sources, updated some software versions, and stored device tree files and configuration files that undergo multiple modifications for U-Boot and kernel separately. sysdrv:source:mcu: Used RISC-V MCU SDK with RT-Thread system, mainly for initializing camera AE during quick boot. sysdrv:source:uboot: Added support for fastboot; added high baud rate DDR bin for serial firmware upgrades. sysdrv:source:kernel: Upgraded to version 5.10.160; increased NPU frequency for RV1106G3; added support for fastboot. Signed-off-by: luckfox-eng29 <eng29@luckfox.com>
134 lines
3.9 KiB
C
134 lines
3.9 KiB
C
/**
|
|
****************************************************************************************
|
|
*
|
|
* @file rwnx_prof.h
|
|
*
|
|
* Copyright (C) RivieraWaves 2012-2019
|
|
*
|
|
****************************************************************************************
|
|
*/
|
|
|
|
#ifndef _RWNX_PROF_H_
|
|
#define _RWNX_PROF_H_
|
|
|
|
#include "reg_access.h"
|
|
#include "rwnx_platform.h"
|
|
|
|
static inline void rwnx_prof_set(struct rwnx_hw *rwnx_hw, int val)
|
|
{
|
|
struct rwnx_plat *rwnx_plat = rwnx_hw->plat;
|
|
RWNX_REG_WRITE(val, rwnx_plat, RWNX_ADDR_SYSTEM, NXMAC_SW_SET_PROFILING_ADDR);
|
|
}
|
|
|
|
static inline void rwnx_prof_clear(struct rwnx_hw *rwnx_hw, int val)
|
|
{
|
|
struct rwnx_plat *rwnx_plat = rwnx_hw->plat;
|
|
RWNX_REG_WRITE(val, rwnx_plat, RWNX_ADDR_SYSTEM, NXMAC_SW_CLEAR_PROFILING_ADDR);
|
|
}
|
|
|
|
#if 0
|
|
/* Defines for SW Profiling registers values */
|
|
enum {
|
|
TX_IPC_IRQ,
|
|
TX_IPC_EVT,
|
|
TX_PREP_EVT,
|
|
TX_DMA_IRQ,
|
|
TX_MAC_IRQ,
|
|
TX_PAYL_HDL,
|
|
TX_CFM_EVT,
|
|
TX_IPC_CFM,
|
|
RX_MAC_IRQ, // 8
|
|
RX_TRIGGER_EVT,
|
|
RX_DMA_IRQ,
|
|
RX_DMA_EVT,
|
|
RX_IPC_IND,
|
|
RX_MPDU_XFER,
|
|
DBG_PROF_MAX
|
|
};
|
|
#endif
|
|
|
|
enum {
|
|
SW_PROF_HOSTBUF_IDX = 12,
|
|
/****** IPC IRQs related signals ******/
|
|
/* E2A direction */
|
|
SW_PROF_IRQ_E2A_RXDESC = 16, // to make sure we let 16 bits available for LMAC FW
|
|
SW_PROF_IRQ_E2A_TXCFM,
|
|
SW_PROF_IRQ_E2A_DBG,
|
|
SW_PROF_IRQ_E2A_MSG,
|
|
SW_PROF_IPC_MSGPUSH,
|
|
SW_PROF_MSGALLOC,
|
|
SW_PROF_MSGIND,
|
|
SW_PROF_DBGIND,
|
|
|
|
/* A2E direction */
|
|
SW_PROF_IRQ_A2E_TXCFM_BACK,
|
|
|
|
/****** Driver functions related signals ******/
|
|
SW_PROF_WAIT_QUEUE_STOP,
|
|
SW_PROF_WAIT_QUEUE_WAKEUP,
|
|
SW_PROF_RWNXDATAIND,
|
|
SW_PROF_RWNX_IPC_IRQ_HDLR,
|
|
SW_PROF_RWNX_IPC_THR_IRQ_HDLR,
|
|
SW_PROF_IEEE80211RX,
|
|
SW_PROF_RWNX_PATTERN,
|
|
SW_PROF_MAX
|
|
};
|
|
|
|
// [LT]For debug purpose only
|
|
#if (0)
|
|
#define SW_PROF_CHAN_CTXT_CFM_HDL_BIT (21)
|
|
#define SW_PROF_CHAN_CTXT_CFM_BIT (22)
|
|
#define SW_PROF_CHAN_CTXT_CFM_SWDONE_BIT (23)
|
|
#define SW_PROF_CHAN_CTXT_PUSH_BIT (24)
|
|
#define SW_PROF_CHAN_CTXT_QUEUE_BIT (25)
|
|
#define SW_PROF_CHAN_CTXT_TX_BIT (26)
|
|
#define SW_PROF_CHAN_CTXT_TX_PAUSE_BIT (27)
|
|
#define SW_PROF_CHAN_CTXT_PSWTCH_BIT (28)
|
|
#define SW_PROF_CHAN_CTXT_SWTCH_BIT (29)
|
|
|
|
// TO DO: update this
|
|
|
|
#define REG_SW_SET_PROFILING_CHAN(env, bit) \
|
|
rwnx_prof_set((struct rwnx_hw*)env, BIT(bit))
|
|
|
|
#define REG_SW_CLEAR_PROFILING_CHAN(env, bit) \
|
|
rwnx_prof_clear((struct rwnx_hw*)env, BIT(bit))
|
|
|
|
#else
|
|
#define SW_PROF_CHAN_CTXT_CFM_HDL_BIT (0)
|
|
#define SW_PROF_CHAN_CTXT_CFM_BIT (0)
|
|
#define SW_PROF_CHAN_CTXT_CFM_SWDONE_BIT (0)
|
|
#define SW_PROF_CHAN_CTXT_PUSH_BIT (0)
|
|
#define SW_PROF_CHAN_CTXT_QUEUE_BIT (0)
|
|
#define SW_PROF_CHAN_CTXT_TX_BIT (0)
|
|
#define SW_PROF_CHAN_CTXT_TX_PAUSE_BIT (0)
|
|
#define SW_PROF_CHAN_CTXT_PSWTCH_BIT (0)
|
|
#define SW_PROF_CHAN_CTXT_SWTCH_BIT (0)
|
|
|
|
#define REG_SW_SET_PROFILING_CHAN(env, bit) do {} while (0)
|
|
#define REG_SW_CLEAR_PROFILING_CHAN(env, bit) do {} while (0)
|
|
#endif
|
|
|
|
#ifdef CONFIG_RWNX_SW_PROFILING
|
|
/* Macros for SW PRofiling registers access */
|
|
#define REG_SW_SET_PROFILING(env, bit) \
|
|
rwnx_prof_set((struct rwnx_hw*)env, BIT(bit))
|
|
|
|
#define REG_SW_SET_HOSTBUF_IDX_PROFILING(env, val) \
|
|
rwnx_prof_set((struct rwnx_hw*)env, val<<(SW_PROF_HOSTBUF_IDX))
|
|
|
|
#define REG_SW_CLEAR_PROFILING(env, bit) \
|
|
rwnx_prof_clear((struct rwnx_hw*)env, BIT(bit))
|
|
|
|
#define REG_SW_CLEAR_HOSTBUF_IDX_PROFILING(env) \
|
|
rwnx_prof_clear((struct rwnx_hw*)env,0x0F<<(SW_PROF_HOSTBUF_IDX))
|
|
|
|
#else
|
|
#define REG_SW_SET_PROFILING(env, value) do {} while (0)
|
|
#define REG_SW_CLEAR_PROFILING(env, value) do {} while (0)
|
|
#define REG_SW_SET_HOSTBUF_IDX_PROFILING(env, val) do {} while (0)
|
|
#define REG_SW_CLEAR_HOSTBUF_IDX_PROFILING(env) do {} while (0)
|
|
#endif
|
|
|
|
#endif /* _RWNX_PROF_H_ */
|