1f5fbb83fSMauro Carvalho Chehab /* SPDX-License-Identifier: GPL-2.0 */
29d4fa1a1SMauro Carvalho Chehab /*
39d4fa1a1SMauro Carvalho Chehab  * Support for Intel Camera Imaging ISP subsystem.
49d4fa1a1SMauro Carvalho Chehab  * Copyright (c) 2010-2015, Intel Corporation.
59d4fa1a1SMauro Carvalho Chehab  *
69d4fa1a1SMauro Carvalho Chehab  * This program is free software; you can redistribute it and/or modify it
79d4fa1a1SMauro Carvalho Chehab  * under the terms and conditions of the GNU General Public License,
89d4fa1a1SMauro Carvalho Chehab  * version 2, as published by the Free Software Foundation.
99d4fa1a1SMauro Carvalho Chehab  *
109d4fa1a1SMauro Carvalho Chehab  * This program is distributed in the hope it will be useful, but WITHOUT
119d4fa1a1SMauro Carvalho Chehab  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
129d4fa1a1SMauro Carvalho Chehab  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
139d4fa1a1SMauro Carvalho Chehab  * more details.
149d4fa1a1SMauro Carvalho Chehab  */
159d4fa1a1SMauro Carvalho Chehab 
169d4fa1a1SMauro Carvalho Chehab #ifndef __FIFO_MONITOR_LOCAL_H_INCLUDED__
179d4fa1a1SMauro Carvalho Chehab #define __FIFO_MONITOR_LOCAL_H_INCLUDED__
189d4fa1a1SMauro Carvalho Chehab 
199d4fa1a1SMauro Carvalho Chehab #include <type_support.h>
209d4fa1a1SMauro Carvalho Chehab #include "fifo_monitor_global.h"
219d4fa1a1SMauro Carvalho Chehab 
229d4fa1a1SMauro Carvalho Chehab #include "hive_isp_css_defs.h"	/* ISP_STR_MON_PORT_SND_SP, ... */
239d4fa1a1SMauro Carvalho Chehab 
249d4fa1a1SMauro Carvalho Chehab #define _hive_str_mon_valid_offset   0
259d4fa1a1SMauro Carvalho Chehab #define _hive_str_mon_accept_offset  1
269d4fa1a1SMauro Carvalho Chehab 
279d4fa1a1SMauro Carvalho Chehab #define	FIFO_CHANNEL_SP_VALID_MASK		0x55555555
289d4fa1a1SMauro Carvalho Chehab #define	FIFO_CHANNEL_SP_VALID_B_MASK	0x00000055
299d4fa1a1SMauro Carvalho Chehab #define	FIFO_CHANNEL_ISP_VALID_MASK		0x15555555
309d4fa1a1SMauro Carvalho Chehab #define	FIFO_CHANNEL_MOD_VALID_MASK		0x55555555
319d4fa1a1SMauro Carvalho Chehab 
329d4fa1a1SMauro Carvalho Chehab typedef enum fifo_switch {
339d4fa1a1SMauro Carvalho Chehab 	FIFO_SWITCH_IF,
349d4fa1a1SMauro Carvalho Chehab 	FIFO_SWITCH_GDC0,
359d4fa1a1SMauro Carvalho Chehab 	FIFO_SWITCH_GDC1,
369d4fa1a1SMauro Carvalho Chehab 	N_FIFO_SWITCH
379d4fa1a1SMauro Carvalho Chehab } fifo_switch_t;
389d4fa1a1SMauro Carvalho Chehab 
399d4fa1a1SMauro Carvalho Chehab typedef enum fifo_channel {
409d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_ISP0_TO_SP0,
419d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_SP0_TO_ISP0,
429d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_ISP0_TO_IF0,
439d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_IF0_TO_ISP0,
449d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_ISP0_TO_IF1,
459d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_IF1_TO_ISP0,
469d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_ISP0_TO_DMA0,
479d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_DMA0_TO_ISP0,
489d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_ISP0_TO_GDC0,
499d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_GDC0_TO_ISP0,
509d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_ISP0_TO_GDC1,
519d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_GDC1_TO_ISP0,
529d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_ISP0_TO_HOST0,
539d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_HOST0_TO_ISP0,
549d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_SP0_TO_IF0,
559d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_IF0_TO_SP0,
569d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_SP0_TO_IF1,
579d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_IF1_TO_SP0,
589d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_SP0_TO_IF2,
599d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_IF2_TO_SP0,
609d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_SP0_TO_DMA0,
619d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_DMA0_TO_SP0,
629d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_SP0_TO_GDC0,
639d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_GDC0_TO_SP0,
649d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_SP0_TO_GDC1,
659d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_GDC1_TO_SP0,
669d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_SP0_TO_HOST0,
679d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_HOST0_TO_SP0,
689d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_SP0_TO_STREAM2MEM0,
699d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_STREAM2MEM0_TO_SP0,
709d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_SP0_TO_INPUT_SYSTEM0,
719d4fa1a1SMauro Carvalho Chehab 	FIFO_CHANNEL_INPUT_SYSTEM0_TO_SP0,
729d4fa1a1SMauro Carvalho Chehab 	/*
739d4fa1a1SMauro Carvalho Chehab 	 * No clue what this is
749d4fa1a1SMauro Carvalho Chehab 	 *
759d4fa1a1SMauro Carvalho Chehab 		FIFO_CHANNEL_SP0_TO_IRQ0,
769d4fa1a1SMauro Carvalho Chehab 		FIFO_CHANNEL_IRQ0_TO_SP0,
779d4fa1a1SMauro Carvalho Chehab 	 */
789d4fa1a1SMauro Carvalho Chehab 	N_FIFO_CHANNEL
799d4fa1a1SMauro Carvalho Chehab } fifo_channel_t;
809d4fa1a1SMauro Carvalho Chehab 
819d4fa1a1SMauro Carvalho Chehab struct fifo_channel_state_s {
829d4fa1a1SMauro Carvalho Chehab 	bool	src_valid;
839d4fa1a1SMauro Carvalho Chehab 	bool	fifo_accept;
849d4fa1a1SMauro Carvalho Chehab 	bool	fifo_valid;
859d4fa1a1SMauro Carvalho Chehab 	bool	sink_accept;
869d4fa1a1SMauro Carvalho Chehab };
879d4fa1a1SMauro Carvalho Chehab 
889d4fa1a1SMauro Carvalho Chehab /* The switch is tri-state */
899d4fa1a1SMauro Carvalho Chehab struct fifo_switch_state_s {
909d4fa1a1SMauro Carvalho Chehab 	bool	is_none;
919d4fa1a1SMauro Carvalho Chehab 	bool	is_isp;
929d4fa1a1SMauro Carvalho Chehab 	bool	is_sp;
939d4fa1a1SMauro Carvalho Chehab };
949d4fa1a1SMauro Carvalho Chehab 
959d4fa1a1SMauro Carvalho Chehab struct fifo_monitor_state_s {
969d4fa1a1SMauro Carvalho Chehab 	struct fifo_channel_state_s	fifo_channels[N_FIFO_CHANNEL];
979d4fa1a1SMauro Carvalho Chehab 	struct fifo_switch_state_s	fifo_switches[N_FIFO_SWITCH];
989d4fa1a1SMauro Carvalho Chehab };
999d4fa1a1SMauro Carvalho Chehab 
1009d4fa1a1SMauro Carvalho Chehab #endif /* __FIFO_MONITOR_LOCAL_H_INCLUDED__ */
101