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) 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 __GDC_GLOBAL_H_INCLUDED__
179d4fa1a1SMauro Carvalho Chehab #define __GDC_GLOBAL_H_INCLUDED__
189d4fa1a1SMauro Carvalho Chehab 
199d4fa1a1SMauro Carvalho Chehab #define IS_GDC_VERSION_2
209d4fa1a1SMauro Carvalho Chehab 
219d4fa1a1SMauro Carvalho Chehab #include <type_support.h>
229d4fa1a1SMauro Carvalho Chehab #include "gdc_v2_defs.h"
239d4fa1a1SMauro Carvalho Chehab 
249d4fa1a1SMauro Carvalho Chehab /*
259d4fa1a1SMauro Carvalho Chehab  * Storage addresses for packed data transfer
269d4fa1a1SMauro Carvalho Chehab  */
279d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_ICX_LEFT_ROUNDED_IDX            0
289d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_OXDIM_FLOORED_IDX               1
299d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_OXDIM_LAST_IDX                  2
309d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_WOIX_LAST_IDX                   3
319d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_IY_TOPLEFT_IDX                  4
329d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_CHUNK_CNT_IDX                   5
339d4fa1a1SMauro Carvalho Chehab /*#define GDC_PARAM_ELEMENTS_PER_XMEM_ADDR_IDX    6 */		/* Derived from bpp */
349d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_BPP_IDX                         6
359d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_BLOCK_HEIGHT_IDX                7
369d4fa1a1SMauro Carvalho Chehab /*#define GDC_PARAM_DMA_CHANNEL_STRIDE_A_IDX      8*/		/* The DMA stride == the GDC buffer stride */
379d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_WOIX_IDX                        8
389d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_DMA_CHANNEL_STRIDE_B_IDX        9
399d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_DMA_CHANNEL_WIDTH_A_IDX        10
409d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_DMA_CHANNEL_WIDTH_B_IDX        11
419d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_VECTORS_PER_LINE_IN_IDX        12
429d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_VECTORS_PER_LINE_OUT_IDX       13
439d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_VMEM_IN_DIMY_IDX               14
449d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_COMMAND_IDX                    15
459d4fa1a1SMauro Carvalho Chehab #define N_GDC_PARAM                              16
469d4fa1a1SMauro Carvalho Chehab 
479d4fa1a1SMauro Carvalho Chehab /* Because of the packed parameter transfer max(params) == max(fragments) */
489d4fa1a1SMauro Carvalho Chehab #define	N_GDC_FRAGMENTS		N_GDC_PARAM
499d4fa1a1SMauro Carvalho Chehab 
509d4fa1a1SMauro Carvalho Chehab /* The GDC is capable of higher internal precision than the parameter data structures */
519d4fa1a1SMauro Carvalho Chehab #define HRT_GDC_COORD_SCALE_BITS	6
529d4fa1a1SMauro Carvalho Chehab #define HRT_GDC_COORD_SCALE			BIT(HRT_GDC_COORD_SCALE_BITS)
539d4fa1a1SMauro Carvalho Chehab 
549d4fa1a1SMauro Carvalho Chehab typedef enum {
559d4fa1a1SMauro Carvalho Chehab 	GDC_CH0_ID = 0,
569d4fa1a1SMauro Carvalho Chehab 	N_GDC_CHANNEL_ID
579d4fa1a1SMauro Carvalho Chehab } gdc_channel_ID_t;
589d4fa1a1SMauro Carvalho Chehab 
599d4fa1a1SMauro Carvalho Chehab typedef enum {
609d4fa1a1SMauro Carvalho Chehab 	gdc_8_bpp  = 8,
619d4fa1a1SMauro Carvalho Chehab 	gdc_10_bpp = 10,
629d4fa1a1SMauro Carvalho Chehab 	gdc_12_bpp = 12,
639d4fa1a1SMauro Carvalho Chehab 	gdc_14_bpp = 14
649d4fa1a1SMauro Carvalho Chehab } gdc_bits_per_pixel_t;
659d4fa1a1SMauro Carvalho Chehab 
669d4fa1a1SMauro Carvalho Chehab typedef struct gdc_scale_param_mem_s {
679d4fa1a1SMauro Carvalho Chehab 	u16  params[N_GDC_PARAM];
689d4fa1a1SMauro Carvalho Chehab 	u16  ipx_start_array[N_GDC_PARAM];
699d4fa1a1SMauro Carvalho Chehab 	u16  ibuf_offset[N_GDC_PARAM];
709d4fa1a1SMauro Carvalho Chehab 	u16  obuf_offset[N_GDC_PARAM];
719d4fa1a1SMauro Carvalho Chehab } gdc_scale_param_mem_t;
729d4fa1a1SMauro Carvalho Chehab 
739d4fa1a1SMauro Carvalho Chehab typedef struct gdc_warp_param_mem_s {
749d4fa1a1SMauro Carvalho Chehab 	u32      origin_x;
759d4fa1a1SMauro Carvalho Chehab 	u32      origin_y;
769d4fa1a1SMauro Carvalho Chehab 	u32      in_addr_offset;
779d4fa1a1SMauro Carvalho Chehab 	u32      in_block_width;
789d4fa1a1SMauro Carvalho Chehab 	u32      in_block_height;
799d4fa1a1SMauro Carvalho Chehab 	u32      p0_x;
809d4fa1a1SMauro Carvalho Chehab 	u32      p0_y;
819d4fa1a1SMauro Carvalho Chehab 	u32      p1_x;
829d4fa1a1SMauro Carvalho Chehab 	u32      p1_y;
839d4fa1a1SMauro Carvalho Chehab 	u32      p2_x;
849d4fa1a1SMauro Carvalho Chehab 	u32      p2_y;
859d4fa1a1SMauro Carvalho Chehab 	u32      p3_x;
869d4fa1a1SMauro Carvalho Chehab 	u32      p3_y;
879d4fa1a1SMauro Carvalho Chehab 	u32      padding[3];
889d4fa1a1SMauro Carvalho Chehab } gdc_warp_param_mem_t;
899d4fa1a1SMauro Carvalho Chehab 
909d4fa1a1SMauro Carvalho Chehab #endif /* __GDC_GLOBAL_H_INCLUDED__ */
91