Files
MilkV-Duo/u-boot-2021.10/drivers/video/cvitek/vip_common.h
sam.xiang 3a4bcfca2f [uboot] porting cvitek asic chips:
1. add cvitek folders to u-boot-2021.10
	2. add cv183x/cv182x part
	3. add cv181x/cv180x part

Change-Id: I6dc2e5ff509dbab16bd60bfb3fd61852da5e01f6
2023-03-10 20:31:12 +08:00

151 lines
2.9 KiB
C

#ifndef _COMMON_VIP_H_
#define _COMMON_VIP_H_
#include <linux/kernel.h>
#include "reg_vip_sys.h"
#define BASE_OFFSET 0x000000000
#define GOP_FRAME_OFFSET 0x200000
#define CLIP(x, _min, _max) max(min(x, _max), _min)
#define VIP_ALIGN(x) (((x) + 0x1F) & ~0x1F) // for 32byte alignment
#define R_IDX 0
#define G_IDX 1
#define B_IDX 2
struct vip_rect {
u16 x;
u16 y;
u16 w;
u16 h;
};
union vip_sys_reg0 {
struct {
u32 rst_axi : 1;
u32 rst_isp_top : 1;
u32 rst_img_d : 1;
u32 rst_img_v : 1;
u32 rst_sc_top : 1;
u32 rst_sc_d : 1;
u32 rst_sc_v1 : 1;
u32 rst_sc_v2 : 1;
u32 rst_sc_v3 : 1;
u32 rst_disp : 1;
u32 rst_bt : 1;
u32 rst_dsi_mac : 1;
u32 resv_12 : 2;
u32 rst_dwa : 1;
u32 rst_clk_div : 1;
u32 rsv_16 : 2;
u32 clk_isp_top_en : 1;
u32 clk_axi_isp_en : 1;
u32 clk_csi_mac0_en : 1;
u32 clk_csi_mac1_en : 1;
u32 rsv_22 : 10;
} b;
u32 raw;
};
union vip_sys_reg4 {
struct {
u32 rst_csi_mac0 : 1;
u32 rst_csi_mac1 : 1;
u32 rsv_2 : 30;
} b;
u32 raw;
};
union vip_sys_reset {
struct {
u32 axi : 1;
u32 isp_top : 1;
u32 img_d : 1;
u32 img_v : 1;
u32 sc_top : 1;
u32 sc_d : 1;
u32 sc_v1 : 1;
u32 sc_v2 : 1;
u32 sc_v3 : 1;
u32 disp : 1;
u32 bt : 1;
u32 dsi_mac : 1;
u32 csi_mac0 : 1;
u32 csi_mac1 : 1;
u32 dwa : 1;
u32 clk_div : 1;
u32 rsv : 16;
} b;
u32 raw;
};
union vip_sys_isp_clk {
struct {
u32 rsv : 18;
u32 clk_isp_top_en : 1;
u32 clk_axi_isp_en : 1;
u32 clk_csi_mac0_en : 1;
u32 clk_csi_mac1_en : 1;
} b;
u32 raw;
};
union vip_sys_clk {
struct {
u32 sc_top : 1;
u32 isp_top : 1;
u32 dwa : 1;
u32 rot_top : 1;
u32 vip_sys : 1;
u32 rsv1 : 3;
u32 csi_mac0 : 1;
u32 csi_mac1 : 1;
u32 rsv2 : 6;
u32 auto_sc_top : 1;
u32 auto_isp_top : 1;
u32 auto_dwa : 1;
u32 auto_rot_top : 1;
u32 auto_vip_sys : 1;
u32 rsv3 : 3;
u32 auto_csi_mac0 : 1;
u32 auto_csi_mac1 : 1;
} b;
u32 raw;
};
union vip_sys_intr {
struct {
u32 sc : 1;
u32 rsv1 : 15;
u32 isp : 1;
u32 rsv2 : 7;
u32 dwa : 1;
u32 rsv3 : 3;
u32 rot : 1;
u32 csi_mac0 : 1;
u32 csi_mac1 : 1;
} b;
u32 raw;
};
/********************************************************************
* APIs to replace bmtest's standard APIs
********************************************************************/
void vip_set_base_addr(void *base);
union vip_sys_clk vip_get_clk_lp(void);
void vip_set_clk_lp(union vip_sys_clk clk);
union vip_sys_isp_clk vip_get_isp_clk(void);
void vip_set_isp_clk(union vip_sys_isp_clk clk);
union vip_sys_reset vip_get_reset(void);
void vip_set_reset(union vip_sys_reset reset);
void vip_toggle_reset(union vip_sys_reset mask);
union vip_sys_intr vip_get_intr_status(void);
union vip_sys_intr vip_get_intr_mask(void);
void vip_set_intr_mask(union vip_sys_intr intr);
void vip_isp_clk_reset(void);
void vip_sys_reg_read(uintptr_t addr);
void vip_sys_reg_write_mask(uintptr_t addr, u32 mask, u32 data);
#endif