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 __GDC_GLOBAL_H_INCLUDED__ 17 #define __GDC_GLOBAL_H_INCLUDED__ 18 19 #define IS_GDC_VERSION_2 20 21 #include <type_support.h> 22 #include "gdc_v2_defs.h" 23 24 /* 25 * Storage addresses for packed data transfer 26 */ 27 #define GDC_PARAM_ICX_LEFT_ROUNDED_IDX 0 28 #define GDC_PARAM_OXDIM_FLOORED_IDX 1 29 #define GDC_PARAM_OXDIM_LAST_IDX 2 30 #define GDC_PARAM_WOIX_LAST_IDX 3 31 #define GDC_PARAM_IY_TOPLEFT_IDX 4 32 #define GDC_PARAM_CHUNK_CNT_IDX 5 33 /*#define GDC_PARAM_ELEMENTS_PER_XMEM_ADDR_IDX 6 */ /* Derived from bpp */ 34 #define GDC_PARAM_BPP_IDX 6 35 #define GDC_PARAM_BLOCK_HEIGHT_IDX 7 36 /*#define GDC_PARAM_DMA_CHANNEL_STRIDE_A_IDX 8*/ /* The DMA stride == the GDC buffer stride */ 37 #define GDC_PARAM_WOIX_IDX 8 38 #define GDC_PARAM_DMA_CHANNEL_STRIDE_B_IDX 9 39 #define GDC_PARAM_DMA_CHANNEL_WIDTH_A_IDX 10 40 #define GDC_PARAM_DMA_CHANNEL_WIDTH_B_IDX 11 41 #define GDC_PARAM_VECTORS_PER_LINE_IN_IDX 12 42 #define GDC_PARAM_VECTORS_PER_LINE_OUT_IDX 13 43 #define GDC_PARAM_VMEM_IN_DIMY_IDX 14 44 #define GDC_PARAM_COMMAND_IDX 15 45 #define N_GDC_PARAM 16 46 47 /* Because of the packed parameter transfer max(params) == max(fragments) */ 48 #define N_GDC_FRAGMENTS N_GDC_PARAM 49 50 /* The GDC is capable of higher internal precision than the parameter data structures */ 51 #define HRT_GDC_COORD_SCALE_BITS 6 52 #define HRT_GDC_COORD_SCALE BIT(HRT_GDC_COORD_SCALE_BITS) 53 54 typedef enum { 55 GDC_CH0_ID = 0, 56 N_GDC_CHANNEL_ID 57 } gdc_channel_ID_t; 58 59 typedef enum { 60 gdc_8_bpp = 8, 61 gdc_10_bpp = 10, 62 gdc_12_bpp = 12, 63 gdc_14_bpp = 14 64 } gdc_bits_per_pixel_t; 65 66 typedef struct gdc_scale_param_mem_s { 67 u16 params[N_GDC_PARAM]; 68 u16 ipx_start_array[N_GDC_PARAM]; 69 u16 ibuf_offset[N_GDC_PARAM]; 70 u16 obuf_offset[N_GDC_PARAM]; 71 } gdc_scale_param_mem_t; 72 73 typedef struct gdc_warp_param_mem_s { 74 u32 origin_x; 75 u32 origin_y; 76 u32 in_addr_offset; 77 u32 in_block_width; 78 u32 in_block_height; 79 u32 p0_x; 80 u32 p0_y; 81 u32 p1_x; 82 u32 p1_y; 83 u32 p2_x; 84 u32 p2_y; 85 u32 p3_x; 86 u32 p3_y; 87 u32 padding[3]; 88 } gdc_warp_param_mem_t; 89 90 #endif /* __GDC_GLOBAL_H_INCLUDED__ */ 91