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 __INPUT_SYSTEM_2400_PRIVATE_H_INCLUDED__
8 #define __INPUT_SYSTEM_2400_PRIVATE_H_INCLUDED__
9 
10 #include "input_system_public.h"
11 
12 #include "device_access.h"
13 
14 #include "assert_support.h"
15 
input_system_reg_store(const input_system_ID_t ID,const hrt_address reg,const hrt_data value)16 STORAGE_CLASS_INPUT_SYSTEM_C void input_system_reg_store(
17     const input_system_ID_t			ID,
18     const hrt_address			reg,
19     const hrt_data				value)
20 {
21 	assert(ID < N_INPUT_SYSTEM_ID);
22 	assert(INPUT_SYSTEM_BASE[ID] != (hrt_address)-1);
23 	ia_css_device_store_uint32(INPUT_SYSTEM_BASE[ID] + reg * sizeof(hrt_data),
24 				   value);
25 	return;
26 }
27 
input_system_reg_load(const input_system_ID_t ID,const hrt_address reg)28 STORAGE_CLASS_INPUT_SYSTEM_C hrt_data input_system_reg_load(
29     const input_system_ID_t			ID,
30     const hrt_address			reg)
31 {
32 	assert(ID < N_INPUT_SYSTEM_ID);
33 	assert(INPUT_SYSTEM_BASE[ID] != (hrt_address)-1);
34 	return ia_css_device_load_uint32(INPUT_SYSTEM_BASE[ID] + reg * sizeof(
35 					     hrt_data));
36 }
37 
receiver_reg_store(const rx_ID_t ID,const hrt_address reg,const hrt_data value)38 STORAGE_CLASS_INPUT_SYSTEM_C void receiver_reg_store(
39     const rx_ID_t				ID,
40     const hrt_address			reg,
41     const hrt_data				value)
42 {
43 	assert(ID < N_RX_ID);
44 	assert(RX_BASE[ID] != (hrt_address)-1);
45 	ia_css_device_store_uint32(RX_BASE[ID] + reg * sizeof(hrt_data), value);
46 	return;
47 }
48 
receiver_reg_load(const rx_ID_t ID,const hrt_address reg)49 STORAGE_CLASS_INPUT_SYSTEM_C hrt_data receiver_reg_load(
50     const rx_ID_t				ID,
51     const hrt_address			reg)
52 {
53 	assert(ID < N_RX_ID);
54 	assert(RX_BASE[ID] != (hrt_address)-1);
55 	return ia_css_device_load_uint32(RX_BASE[ID] + reg * sizeof(hrt_data));
56 }
57 
receiver_port_reg_store(const rx_ID_t ID,const enum mipi_port_id port_ID,const hrt_address reg,const hrt_data value)58 STORAGE_CLASS_INPUT_SYSTEM_C void receiver_port_reg_store(
59     const rx_ID_t				ID,
60     const enum mipi_port_id			port_ID,
61     const hrt_address			reg,
62     const hrt_data				value)
63 {
64 	assert(ID < N_RX_ID);
65 	assert(port_ID < N_MIPI_PORT_ID);
66 	assert(RX_BASE[ID] != (hrt_address)-1);
67 	assert(MIPI_PORT_OFFSET[port_ID] != (hrt_address)-1);
68 	ia_css_device_store_uint32(RX_BASE[ID] + MIPI_PORT_OFFSET[port_ID] + reg *
69 				   sizeof(hrt_data), value);
70 	return;
71 }
72 
receiver_port_reg_load(const rx_ID_t ID,const enum mipi_port_id port_ID,const hrt_address reg)73 STORAGE_CLASS_INPUT_SYSTEM_C hrt_data receiver_port_reg_load(
74     const rx_ID_t				ID,
75     const enum mipi_port_id			port_ID,
76     const hrt_address			reg)
77 {
78 	assert(ID < N_RX_ID);
79 	assert(port_ID < N_MIPI_PORT_ID);
80 	assert(RX_BASE[ID] != (hrt_address)-1);
81 	assert(MIPI_PORT_OFFSET[port_ID] != (hrt_address)-1);
82 	return ia_css_device_load_uint32(RX_BASE[ID] + MIPI_PORT_OFFSET[port_ID] + reg *
83 					 sizeof(hrt_data));
84 }
85 
input_system_sub_system_reg_store(const input_system_ID_t ID,const sub_system_ID_t sub_ID,const hrt_address reg,const hrt_data value)86 STORAGE_CLASS_INPUT_SYSTEM_C void input_system_sub_system_reg_store(
87     const input_system_ID_t			ID,
88     const sub_system_ID_t			sub_ID,
89     const hrt_address			reg,
90     const hrt_data				value)
91 {
92 	assert(ID < N_INPUT_SYSTEM_ID);
93 	assert(sub_ID < N_SUB_SYSTEM_ID);
94 	assert(INPUT_SYSTEM_BASE[ID] != (hrt_address)-1);
95 	assert(SUB_SYSTEM_OFFSET[sub_ID] != (hrt_address)-1);
96 	ia_css_device_store_uint32(INPUT_SYSTEM_BASE[ID] + SUB_SYSTEM_OFFSET[sub_ID] +
97 				   reg * sizeof(hrt_data), value);
98 	return;
99 }
100 
input_system_sub_system_reg_load(const input_system_ID_t ID,const sub_system_ID_t sub_ID,const hrt_address reg)101 STORAGE_CLASS_INPUT_SYSTEM_C hrt_data input_system_sub_system_reg_load(
102     const input_system_ID_t			ID,
103     const sub_system_ID_t			sub_ID,
104     const hrt_address			reg)
105 {
106 	assert(ID < N_INPUT_SYSTEM_ID);
107 	assert(sub_ID < N_SUB_SYSTEM_ID);
108 	assert(INPUT_SYSTEM_BASE[ID] != (hrt_address)-1);
109 	assert(SUB_SYSTEM_OFFSET[sub_ID] != (hrt_address)-1);
110 	return ia_css_device_load_uint32(INPUT_SYSTEM_BASE[ID] +
111 					 SUB_SYSTEM_OFFSET[sub_ID] + reg * sizeof(hrt_data));
112 }
113 
114 #endif /* __INPUT_SYSTEM_PRIVATE_H_INCLUDED__ */
115