1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Support for Intel Camera Imaging ISP subsystem. 4 * Copyright (c) 2010-2015, Intel Corporation. 5 */ 6 7 #ifndef __FIFO_MONITOR_LOCAL_H_INCLUDED__ 8 #define __FIFO_MONITOR_LOCAL_H_INCLUDED__ 9 10 #include <type_support.h> 11 #include "fifo_monitor_global.h" 12 13 #include "hive_isp_css_defs.h" /* ISP_STR_MON_PORT_SND_SP, ... */ 14 15 #define _hive_str_mon_valid_offset 0 16 #define _hive_str_mon_accept_offset 1 17 18 #define FIFO_CHANNEL_SP_VALID_MASK 0x55555555 19 #define FIFO_CHANNEL_SP_VALID_B_MASK 0x00000055 20 #define FIFO_CHANNEL_ISP_VALID_MASK 0x15555555 21 #define FIFO_CHANNEL_MOD_VALID_MASK 0x55555555 22 23 typedef enum fifo_switch { 24 FIFO_SWITCH_IF, 25 FIFO_SWITCH_GDC0, 26 FIFO_SWITCH_GDC1, 27 N_FIFO_SWITCH 28 } fifo_switch_t; 29 30 typedef enum fifo_channel { 31 FIFO_CHANNEL_ISP0_TO_SP0, 32 FIFO_CHANNEL_SP0_TO_ISP0, 33 FIFO_CHANNEL_ISP0_TO_IF0, 34 FIFO_CHANNEL_IF0_TO_ISP0, 35 FIFO_CHANNEL_ISP0_TO_IF1, 36 FIFO_CHANNEL_IF1_TO_ISP0, 37 FIFO_CHANNEL_ISP0_TO_DMA0, 38 FIFO_CHANNEL_DMA0_TO_ISP0, 39 FIFO_CHANNEL_ISP0_TO_GDC0, 40 FIFO_CHANNEL_GDC0_TO_ISP0, 41 FIFO_CHANNEL_ISP0_TO_GDC1, 42 FIFO_CHANNEL_GDC1_TO_ISP0, 43 FIFO_CHANNEL_ISP0_TO_HOST0, 44 FIFO_CHANNEL_HOST0_TO_ISP0, 45 FIFO_CHANNEL_SP0_TO_IF0, 46 FIFO_CHANNEL_IF0_TO_SP0, 47 FIFO_CHANNEL_SP0_TO_IF1, 48 FIFO_CHANNEL_IF1_TO_SP0, 49 FIFO_CHANNEL_SP0_TO_IF2, 50 FIFO_CHANNEL_IF2_TO_SP0, 51 FIFO_CHANNEL_SP0_TO_DMA0, 52 FIFO_CHANNEL_DMA0_TO_SP0, 53 FIFO_CHANNEL_SP0_TO_GDC0, 54 FIFO_CHANNEL_GDC0_TO_SP0, 55 FIFO_CHANNEL_SP0_TO_GDC1, 56 FIFO_CHANNEL_GDC1_TO_SP0, 57 FIFO_CHANNEL_SP0_TO_HOST0, 58 FIFO_CHANNEL_HOST0_TO_SP0, 59 FIFO_CHANNEL_SP0_TO_STREAM2MEM0, 60 FIFO_CHANNEL_STREAM2MEM0_TO_SP0, 61 FIFO_CHANNEL_SP0_TO_INPUT_SYSTEM0, 62 FIFO_CHANNEL_INPUT_SYSTEM0_TO_SP0, 63 /* 64 * No clue what this is 65 * 66 FIFO_CHANNEL_SP0_TO_IRQ0, 67 FIFO_CHANNEL_IRQ0_TO_SP0, 68 */ 69 N_FIFO_CHANNEL 70 } fifo_channel_t; 71 72 struct fifo_channel_state_s { 73 bool src_valid; 74 bool fifo_accept; 75 bool fifo_valid; 76 bool sink_accept; 77 }; 78 79 /* The switch is tri-state */ 80 struct fifo_switch_state_s { 81 bool is_none; 82 bool is_isp; 83 bool is_sp; 84 }; 85 86 struct fifo_monitor_state_s { 87 struct fifo_channel_state_s fifo_channels[N_FIFO_CHANNEL]; 88 struct fifo_switch_state_s fifo_switches[N_FIFO_SWITCH]; 89 }; 90 91 #endif /* __FIFO_MONITOR_LOCAL_H_INCLUDED__ */ 92