1 /* 2 * Support for Intel Camera Imaging ISP subsystem. 3 * Copyright (c) 2015, Intel Corporation. 4 * 5 * This program is free software; you can redistribute it and/or modify it 6 * under the terms and conditions of the GNU General Public License, 7 * version 2, as published by the Free Software Foundation. 8 * 9 * This program is distributed in the hope it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12 * more details. 13 */ 14 15 #ifndef __PIXELGEN_PRIVATE_H_INCLUDED__ 16 #define __PIXELGEN_PRIVATE_H_INCLUDED__ 17 #include "pixelgen_public.h" 18 #include "PixelGen_SysBlock_defs.h" 19 #include "device_access.h" /* ia_css_device_load_uint32 */ 20 #include "assert_support.h" /* assert */ 21 22 /***************************************************** 23 * 24 * Native command interface (NCI). 25 * 26 *****************************************************/ 27 /** 28 * @brief Get the pixelgen state. 29 * Refer to "pixelgen_public.h" for details. 30 */ 31 STORAGE_CLASS_PIXELGEN_C void pixelgen_ctrl_get_state( 32 const pixelgen_ID_t ID, 33 pixelgen_ctrl_state_t *state) 34 { 35 state->com_enable = 36 pixelgen_ctrl_reg_load(ID, _PXG_COM_ENABLE_REG_IDX); 37 state->prbs_rstval0 = 38 pixelgen_ctrl_reg_load(ID, _PXG_PRBS_RSTVAL_REG0_IDX); 39 state->prbs_rstval1 = 40 pixelgen_ctrl_reg_load(ID, _PXG_PRBS_RSTVAL_REG1_IDX); 41 state->syng_sid = 42 pixelgen_ctrl_reg_load(ID, _PXG_SYNG_SID_REG_IDX); 43 state->syng_free_run = 44 pixelgen_ctrl_reg_load(ID, _PXG_SYNG_FREE_RUN_REG_IDX); 45 state->syng_pause = 46 pixelgen_ctrl_reg_load(ID, _PXG_SYNG_PAUSE_REG_IDX); 47 state->syng_nof_frames = 48 pixelgen_ctrl_reg_load(ID, _PXG_SYNG_NOF_FRAME_REG_IDX); 49 state->syng_nof_pixels = 50 pixelgen_ctrl_reg_load(ID, _PXG_SYNG_NOF_PIXEL_REG_IDX); 51 state->syng_nof_line = 52 pixelgen_ctrl_reg_load(ID, _PXG_SYNG_NOF_LINE_REG_IDX); 53 state->syng_hblank_cyc = 54 pixelgen_ctrl_reg_load(ID, _PXG_SYNG_HBLANK_CYC_REG_IDX); 55 state->syng_vblank_cyc = 56 pixelgen_ctrl_reg_load(ID, _PXG_SYNG_VBLANK_CYC_REG_IDX); 57 state->syng_stat_hcnt = 58 pixelgen_ctrl_reg_load(ID, _PXG_SYNG_STAT_HCNT_REG_IDX); 59 state->syng_stat_vcnt = 60 pixelgen_ctrl_reg_load(ID, _PXG_SYNG_STAT_VCNT_REG_IDX); 61 state->syng_stat_fcnt = 62 pixelgen_ctrl_reg_load(ID, _PXG_SYNG_STAT_FCNT_REG_IDX); 63 state->syng_stat_done = 64 pixelgen_ctrl_reg_load(ID, _PXG_SYNG_STAT_DONE_REG_IDX); 65 state->tpg_mode = 66 pixelgen_ctrl_reg_load(ID, _PXG_TPG_MODE_REG_IDX); 67 state->tpg_hcnt_mask = 68 pixelgen_ctrl_reg_load(ID, _PXG_TPG_HCNT_MASK_REG_IDX); 69 state->tpg_vcnt_mask = 70 pixelgen_ctrl_reg_load(ID, _PXG_TPG_VCNT_MASK_REG_IDX); 71 state->tpg_xycnt_mask = 72 pixelgen_ctrl_reg_load(ID, _PXG_TPG_XYCNT_MASK_REG_IDX); 73 state->tpg_hcnt_delta = 74 pixelgen_ctrl_reg_load(ID, _PXG_TPG_HCNT_DELTA_REG_IDX); 75 state->tpg_vcnt_delta = 76 pixelgen_ctrl_reg_load(ID, _PXG_TPG_VCNT_DELTA_REG_IDX); 77 state->tpg_r1 = 78 pixelgen_ctrl_reg_load(ID, _PXG_TPG_R1_REG_IDX); 79 state->tpg_g1 = 80 pixelgen_ctrl_reg_load(ID, _PXG_TPG_G1_REG_IDX); 81 state->tpg_b1 = 82 pixelgen_ctrl_reg_load(ID, _PXG_TPG_B1_REG_IDX); 83 state->tpg_r2 = 84 pixelgen_ctrl_reg_load(ID, _PXG_TPG_R2_REG_IDX); 85 state->tpg_g2 = 86 pixelgen_ctrl_reg_load(ID, _PXG_TPG_G2_REG_IDX); 87 state->tpg_b2 = 88 pixelgen_ctrl_reg_load(ID, _PXG_TPG_B2_REG_IDX); 89 } 90 91 /** 92 * @brief Dump the pixelgen state. 93 * Refer to "pixelgen_public.h" for details. 94 */ 95 STORAGE_CLASS_PIXELGEN_C void pixelgen_ctrl_dump_state( 96 const pixelgen_ID_t ID, 97 pixelgen_ctrl_state_t *state) 98 { 99 ia_css_print("Pixel Generator ID %d Enable 0x%x\n", ID, state->com_enable); 100 ia_css_print("Pixel Generator ID %d PRBS reset value 0 0x%x\n", ID, 101 state->prbs_rstval0); 102 ia_css_print("Pixel Generator ID %d PRBS reset value 1 0x%x\n", ID, 103 state->prbs_rstval1); 104 ia_css_print("Pixel Generator ID %d SYNC SID 0x%x\n", ID, state->syng_sid); 105 ia_css_print("Pixel Generator ID %d syng free run 0x%x\n", ID, 106 state->syng_free_run); 107 ia_css_print("Pixel Generator ID %d syng pause 0x%x\n", ID, state->syng_pause); 108 ia_css_print("Pixel Generator ID %d syng no of frames 0x%x\n", ID, 109 state->syng_nof_frames); 110 ia_css_print("Pixel Generator ID %d syng no of pixels 0x%x\n", ID, 111 state->syng_nof_pixels); 112 ia_css_print("Pixel Generator ID %d syng no of line 0x%x\n", ID, 113 state->syng_nof_line); 114 ia_css_print("Pixel Generator ID %d syng hblank cyc 0x%x\n", ID, 115 state->syng_hblank_cyc); 116 ia_css_print("Pixel Generator ID %d syng vblank cyc 0x%x\n", ID, 117 state->syng_vblank_cyc); 118 ia_css_print("Pixel Generator ID %d syng stat hcnt 0x%x\n", ID, 119 state->syng_stat_hcnt); 120 ia_css_print("Pixel Generator ID %d syng stat vcnt 0x%x\n", ID, 121 state->syng_stat_vcnt); 122 ia_css_print("Pixel Generator ID %d syng stat fcnt 0x%x\n", ID, 123 state->syng_stat_fcnt); 124 ia_css_print("Pixel Generator ID %d syng stat done 0x%x\n", ID, 125 state->syng_stat_done); 126 ia_css_print("Pixel Generator ID %d tpg modee 0x%x\n", ID, state->tpg_mode); 127 ia_css_print("Pixel Generator ID %d tpg hcnt mask 0x%x\n", ID, 128 state->tpg_hcnt_mask); 129 ia_css_print("Pixel Generator ID %d tpg hcnt mask 0x%x\n", ID, 130 state->tpg_hcnt_mask); 131 ia_css_print("Pixel Generator ID %d tpg xycnt mask 0x%x\n", ID, 132 state->tpg_xycnt_mask); 133 ia_css_print("Pixel Generator ID %d tpg hcnt delta 0x%x\n", ID, 134 state->tpg_hcnt_delta); 135 ia_css_print("Pixel Generator ID %d tpg vcnt delta 0x%x\n", ID, 136 state->tpg_vcnt_delta); 137 ia_css_print("Pixel Generator ID %d tpg r1 0x%x\n", ID, state->tpg_r1); 138 ia_css_print("Pixel Generator ID %d tpg g1 0x%x\n", ID, state->tpg_g1); 139 ia_css_print("Pixel Generator ID %d tpg b1 0x%x\n", ID, state->tpg_b1); 140 ia_css_print("Pixel Generator ID %d tpg r2 0x%x\n", ID, state->tpg_r2); 141 ia_css_print("Pixel Generator ID %d tpg g2 0x%x\n", ID, state->tpg_g2); 142 ia_css_print("Pixel Generator ID %d tpg b2 0x%x\n", ID, state->tpg_b2); 143 } 144 145 /* end of NCI */ 146 /***************************************************** 147 * 148 * Device level interface (DLI). 149 * 150 *****************************************************/ 151 /** 152 * @brief Load the register value. 153 * Refer to "pixelgen_public.h" for details. 154 */ 155 STORAGE_CLASS_PIXELGEN_C hrt_data pixelgen_ctrl_reg_load( 156 const pixelgen_ID_t ID, 157 const hrt_address reg) 158 { 159 assert(ID < N_PIXELGEN_ID); 160 assert(PIXELGEN_CTRL_BASE[ID] != (hrt_address) - 1); 161 return ia_css_device_load_uint32(PIXELGEN_CTRL_BASE[ID] + reg * sizeof( 162 hrt_data)); 163 } 164 165 /** 166 * @brief Store a value to the register. 167 * Refer to "pixelgen_ctrl_public.h" for details. 168 */ 169 STORAGE_CLASS_PIXELGEN_C void pixelgen_ctrl_reg_store( 170 const pixelgen_ID_t ID, 171 const hrt_address reg, 172 const hrt_data value) 173 { 174 assert(ID < N_PIXELGEN_ID); 175 assert(PIXELGEN_CTRL_BASE[ID] != (hrt_address)-1); 176 177 ia_css_device_store_uint32(PIXELGEN_CTRL_BASE[ID] + reg * sizeof(hrt_data), 178 value); 179 } 180 181 /* end of DLI */ 182 #endif /* __PIXELGEN_PRIVATE_H_INCLUDED__ */ 183