1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * Support for Intel Camera Imaging ISP subsystem. 4 * Copyright (c) 2015, Intel Corporation. 5 * 6 * This program is free software; you can redistribute it and/or modify it 7 * under the terms and conditions of the GNU General Public License, 8 * version 2, as published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope it will be useful, but WITHOUT 11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 13 * more details. 14 */ 15 16#ifndef __DEBUG_GLOBAL_H_INCLUDED__ 17#define __DEBUG_GLOBAL_H_INCLUDED__ 18 19#include <type_support.h> 20 21#define DEBUG_BUF_SIZE 1024 22#define DEBUG_BUF_MASK (DEBUG_BUF_SIZE - 1) 23 24#define DEBUG_DATA_ENABLE_ADDR 0x00 25#define DEBUG_DATA_BUF_MODE_ADDR 0x04 26#define DEBUG_DATA_HEAD_ADDR 0x08 27#define DEBUG_DATA_TAIL_ADDR 0x0C 28#define DEBUG_DATA_BUF_ADDR 0x10 29 30#define DEBUG_DATA_ENABLE_DDR_ADDR 0x00 31#define DEBUG_DATA_BUF_MODE_DDR_ADDR HIVE_ISP_DDR_WORD_BYTES 32#define DEBUG_DATA_HEAD_DDR_ADDR (2 * HIVE_ISP_DDR_WORD_BYTES) 33#define DEBUG_DATA_TAIL_DDR_ADDR (3 * HIVE_ISP_DDR_WORD_BYTES) 34#define DEBUG_DATA_BUF_DDR_ADDR (4 * HIVE_ISP_DDR_WORD_BYTES) 35 36#define DEBUG_BUFFER_ISP_DMEM_ADDR 0x0 37 38/* 39 * Enable HAS_WATCHDOG_SP_THREAD_DEBUG for additional SP thread and 40 * pipe information on watchdog output 41 * #undef HAS_WATCHDOG_SP_THREAD_DEBUG 42 * #define HAS_WATCHDOG_SP_THREAD_DEBUG 43 */ 44 45/* 46 * The linear buffer mode will accept data until the first 47 * overflow and then stop accepting new data 48 * The circular buffer mode will accept if there is place 49 * and discard the data if the buffer is full 50 */ 51typedef enum { 52 DEBUG_BUFFER_MODE_LINEAR = 0, 53 DEBUG_BUFFER_MODE_CIRCULAR, 54 N_DEBUG_BUFFER_MODE 55} debug_buf_mode_t; 56 57struct debug_data_s { 58 u32 enable; 59 u32 bufmode; 60 u32 head; 61 u32 tail; 62 u32 buf[DEBUG_BUF_SIZE]; 63}; 64 65/* thread.sp.c doesn't have a notion of HIVE_ISP_DDR_WORD_BYTES 66 still one point of control is needed for debug purposes */ 67 68#ifdef HIVE_ISP_DDR_WORD_BYTES 69struct debug_data_ddr_s { 70 u32 enable; 71 s8 padding1[HIVE_ISP_DDR_WORD_BYTES - sizeof(uint32_t)]; 72 u32 bufmode; 73 s8 padding2[HIVE_ISP_DDR_WORD_BYTES - sizeof(uint32_t)]; 74 u32 head; 75 s8 padding3[HIVE_ISP_DDR_WORD_BYTES - sizeof(uint32_t)]; 76 u32 tail; 77 s8 padding4[HIVE_ISP_DDR_WORD_BYTES - sizeof(uint32_t)]; 78 u32 buf[DEBUG_BUF_SIZE]; 79}; 80#endif 81 82#endif /* __DEBUG_GLOBAL_H_INCLUDED__ */ 83