162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Zoran ZR36060 basic configuration functions - header file 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2002 Laurent Pinchart <laurent.pinchart@skynet.be> 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#ifndef ZR36060_H 962306a36Sopenharmony_ci#define ZR36060_H 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#include "videocodec.h" 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci/* data stored for each zoran jpeg codec chip */ 1462306a36Sopenharmony_cistruct zr36060 { 1562306a36Sopenharmony_ci char name[32]; 1662306a36Sopenharmony_ci int num; 1762306a36Sopenharmony_ci /* io datastructure */ 1862306a36Sopenharmony_ci struct videocodec *codec; 1962306a36Sopenharmony_ci // last coder status 2062306a36Sopenharmony_ci __u8 status; 2162306a36Sopenharmony_ci // actual coder setup 2262306a36Sopenharmony_ci int mode; 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci __u16 width; 2562306a36Sopenharmony_ci __u16 height; 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci __u16 bitrate_ctrl; 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci __u32 total_code_vol; 3062306a36Sopenharmony_ci __u32 real_code_vol; 3162306a36Sopenharmony_ci __u16 max_block_vol; 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci __u8 h_samp_ratio[8]; 3462306a36Sopenharmony_ci __u8 v_samp_ratio[8]; 3562306a36Sopenharmony_ci __u16 scalefact; 3662306a36Sopenharmony_ci __u16 dri; 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci /* app/com marker data */ 3962306a36Sopenharmony_ci struct jpeg_app_marker app; 4062306a36Sopenharmony_ci struct jpeg_com_marker com; 4162306a36Sopenharmony_ci}; 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci/* ZR36060 register addresses */ 4462306a36Sopenharmony_ci#define ZR060_LOAD 0x000 4562306a36Sopenharmony_ci#define ZR060_CFSR 0x001 4662306a36Sopenharmony_ci#define ZR060_CIR 0x002 4762306a36Sopenharmony_ci#define ZR060_CMR 0x003 4862306a36Sopenharmony_ci#define ZR060_MBZ 0x004 4962306a36Sopenharmony_ci#define ZR060_MBCVR 0x005 5062306a36Sopenharmony_ci#define ZR060_MER 0x006 5162306a36Sopenharmony_ci#define ZR060_IMR 0x007 5262306a36Sopenharmony_ci#define ZR060_ISR 0x008 5362306a36Sopenharmony_ci#define ZR060_TCV_NET_HI 0x009 5462306a36Sopenharmony_ci#define ZR060_TCV_NET_MH 0x00a 5562306a36Sopenharmony_ci#define ZR060_TCV_NET_ML 0x00b 5662306a36Sopenharmony_ci#define ZR060_TCV_NET_LO 0x00c 5762306a36Sopenharmony_ci#define ZR060_TCV_DATA_HI 0x00d 5862306a36Sopenharmony_ci#define ZR060_TCV_DATA_MH 0x00e 5962306a36Sopenharmony_ci#define ZR060_TCV_DATA_ML 0x00f 6062306a36Sopenharmony_ci#define ZR060_TCV_DATA_LO 0x010 6162306a36Sopenharmony_ci#define ZR060_SF_HI 0x011 6262306a36Sopenharmony_ci#define ZR060_SF_LO 0x012 6362306a36Sopenharmony_ci#define ZR060_AF_HI 0x013 6462306a36Sopenharmony_ci#define ZR060_AF_M 0x014 6562306a36Sopenharmony_ci#define ZR060_AF_LO 0x015 6662306a36Sopenharmony_ci#define ZR060_ACV_HI 0x016 6762306a36Sopenharmony_ci#define ZR060_ACV_MH 0x017 6862306a36Sopenharmony_ci#define ZR060_ACV_ML 0x018 6962306a36Sopenharmony_ci#define ZR060_ACV_LO 0x019 7062306a36Sopenharmony_ci#define ZR060_ACT_HI 0x01a 7162306a36Sopenharmony_ci#define ZR060_ACT_MH 0x01b 7262306a36Sopenharmony_ci#define ZR060_ACT_ML 0x01c 7362306a36Sopenharmony_ci#define ZR060_ACT_LO 0x01d 7462306a36Sopenharmony_ci#define ZR060_ACV_TURN_HI 0x01e 7562306a36Sopenharmony_ci#define ZR060_ACV_TURN_MH 0x01f 7662306a36Sopenharmony_ci#define ZR060_ACV_TURN_ML 0x020 7762306a36Sopenharmony_ci#define ZR060_ACV_TURN_LO 0x021 7862306a36Sopenharmony_ci#define ZR060_IDR_DEV 0x022 7962306a36Sopenharmony_ci#define ZR060_IDR_REV 0x023 8062306a36Sopenharmony_ci#define ZR060_TCR_HI 0x024 8162306a36Sopenharmony_ci#define ZR060_TCR_LO 0x025 8262306a36Sopenharmony_ci#define ZR060_VCR 0x030 8362306a36Sopenharmony_ci#define ZR060_VPR 0x031 8462306a36Sopenharmony_ci#define ZR060_SR 0x032 8562306a36Sopenharmony_ci#define ZR060_BCR_Y 0x033 8662306a36Sopenharmony_ci#define ZR060_BCR_U 0x034 8762306a36Sopenharmony_ci#define ZR060_BCR_V 0x035 8862306a36Sopenharmony_ci#define ZR060_SGR_VTOTAL_HI 0x036 8962306a36Sopenharmony_ci#define ZR060_SGR_VTOTAL_LO 0x037 9062306a36Sopenharmony_ci#define ZR060_SGR_HTOTAL_HI 0x038 9162306a36Sopenharmony_ci#define ZR060_SGR_HTOTAL_LO 0x039 9262306a36Sopenharmony_ci#define ZR060_SGR_VSYNC 0x03a 9362306a36Sopenharmony_ci#define ZR060_SGR_HSYNC 0x03b 9462306a36Sopenharmony_ci#define ZR060_SGR_BVSTART 0x03c 9562306a36Sopenharmony_ci#define ZR060_SGR_BHSTART 0x03d 9662306a36Sopenharmony_ci#define ZR060_SGR_BVEND_HI 0x03e 9762306a36Sopenharmony_ci#define ZR060_SGR_BVEND_LO 0x03f 9862306a36Sopenharmony_ci#define ZR060_SGR_BHEND_HI 0x040 9962306a36Sopenharmony_ci#define ZR060_SGR_BHEND_LO 0x041 10062306a36Sopenharmony_ci#define ZR060_AAR_VSTART_HI 0x042 10162306a36Sopenharmony_ci#define ZR060_AAR_VSTART_LO 0x043 10262306a36Sopenharmony_ci#define ZR060_AAR_VEND_HI 0x044 10362306a36Sopenharmony_ci#define ZR060_AAR_VEND_LO 0x045 10462306a36Sopenharmony_ci#define ZR060_AAR_HSTART_HI 0x046 10562306a36Sopenharmony_ci#define ZR060_AAR_HSTART_LO 0x047 10662306a36Sopenharmony_ci#define ZR060_AAR_HEND_HI 0x048 10762306a36Sopenharmony_ci#define ZR060_AAR_HEND_LO 0x049 10862306a36Sopenharmony_ci#define ZR060_SWR_VSTART_HI 0x04a 10962306a36Sopenharmony_ci#define ZR060_SWR_VSTART_LO 0x04b 11062306a36Sopenharmony_ci#define ZR060_SWR_VEND_HI 0x04c 11162306a36Sopenharmony_ci#define ZR060_SWR_VEND_LO 0x04d 11262306a36Sopenharmony_ci#define ZR060_SWR_HSTART_HI 0x04e 11362306a36Sopenharmony_ci#define ZR060_SWR_HSTART_LO 0x04f 11462306a36Sopenharmony_ci#define ZR060_SWR_HEND_HI 0x050 11562306a36Sopenharmony_ci#define ZR060_SWR_HEND_LO 0x051 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ci#define ZR060_SOF_IDX 0x060 11862306a36Sopenharmony_ci#define ZR060_SOS_IDX 0x07a 11962306a36Sopenharmony_ci#define ZR060_DRI_IDX 0x0c0 12062306a36Sopenharmony_ci#define ZR060_DQT_IDX 0x0cc 12162306a36Sopenharmony_ci#define ZR060_DHT_IDX 0x1d4 12262306a36Sopenharmony_ci#define ZR060_APP_IDX 0x380 12362306a36Sopenharmony_ci#define ZR060_COM_IDX 0x3c0 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ci/* ZR36060 LOAD register bits */ 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ci#define ZR060_LOAD_LOAD BIT(7) 12862306a36Sopenharmony_ci#define ZR060_LOAD_SYNC_RST BIT(0) 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ci/* ZR36060 Code FIFO Status register bits */ 13162306a36Sopenharmony_ci 13262306a36Sopenharmony_ci#define ZR060_CFSR_BUSY BIT(7) 13362306a36Sopenharmony_ci#define ZR060_CFSR_C_BUSY BIT(2) 13462306a36Sopenharmony_ci#define ZR060_CFSR_CFIFO (3 << 0) 13562306a36Sopenharmony_ci 13662306a36Sopenharmony_ci/* ZR36060 Code Interface register */ 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_ci#define ZR060_CIR_CODE16 BIT(7) 13962306a36Sopenharmony_ci#define ZR060_CIR_ENDIAN BIT(6) 14062306a36Sopenharmony_ci#define ZR060_CIR_CFIS BIT(2) 14162306a36Sopenharmony_ci#define ZR060_CIR_CODE_MSTR BIT(0) 14262306a36Sopenharmony_ci 14362306a36Sopenharmony_ci/* ZR36060 Codec Mode register */ 14462306a36Sopenharmony_ci 14562306a36Sopenharmony_ci#define ZR060_CMR_COMP BIT(7) 14662306a36Sopenharmony_ci#define ZR060_CMR_ATP BIT(6) 14762306a36Sopenharmony_ci#define ZR060_CMR_PASS2 BIT(5) 14862306a36Sopenharmony_ci#define ZR060_CMR_TLM BIT(4) 14962306a36Sopenharmony_ci#define ZR060_CMR_BRB BIT(2) 15062306a36Sopenharmony_ci#define ZR060_CMR_FSF BIT(1) 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_ci/* ZR36060 Markers Enable register */ 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_ci#define ZR060_MER_APP BIT(7) 15562306a36Sopenharmony_ci#define ZR060_MER_COM BIT(6) 15662306a36Sopenharmony_ci#define ZR060_MER_DRI BIT(5) 15762306a36Sopenharmony_ci#define ZR060_MER_DQT BIT(4) 15862306a36Sopenharmony_ci#define ZR060_MER_DHT BIT(3) 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci/* ZR36060 Interrupt Mask register */ 16162306a36Sopenharmony_ci 16262306a36Sopenharmony_ci#define ZR060_IMR_EOAV BIT(3) 16362306a36Sopenharmony_ci#define ZR060_IMR_EOI BIT(2) 16462306a36Sopenharmony_ci#define ZR060_IMR_END BIT(1) 16562306a36Sopenharmony_ci#define ZR060_IMR_DATA_ERR BIT(0) 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ci/* ZR36060 Interrupt Status register */ 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_ci#define ZR060_ISR_PRO_CNT (3 << 6) 17062306a36Sopenharmony_ci#define ZR060_ISR_EOAV BIT(3) 17162306a36Sopenharmony_ci#define ZR060_ISR_EOI BIT(2) 17262306a36Sopenharmony_ci#define ZR060_ISR_END BIT(1) 17362306a36Sopenharmony_ci#define ZR060_ISR_DATA_ERR BIT(0) 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ci/* ZR36060 Video Control register */ 17662306a36Sopenharmony_ci 17762306a36Sopenharmony_ci#define ZR060_VCR_VIDEO8 BIT(7) 17862306a36Sopenharmony_ci#define ZR060_VCR_RANGE BIT(6) 17962306a36Sopenharmony_ci#define ZR060_VCR_FI_DET BIT(3) 18062306a36Sopenharmony_ci#define ZR060_VCR_FI_VEDGE BIT(2) 18162306a36Sopenharmony_ci#define ZR060_VCR_FI_EXT BIT(1) 18262306a36Sopenharmony_ci#define ZR060_VCR_SYNC_MSTR BIT(0) 18362306a36Sopenharmony_ci 18462306a36Sopenharmony_ci/* ZR36060 Video Polarity register */ 18562306a36Sopenharmony_ci 18662306a36Sopenharmony_ci#define ZR060_VPR_VCLK_POL BIT(7) 18762306a36Sopenharmony_ci#define ZR060_VPR_P_VAL_POL BIT(6) 18862306a36Sopenharmony_ci#define ZR060_VPR_POE_POL BIT(5) 18962306a36Sopenharmony_ci#define ZR060_VPR_S_IMG_POL BIT(4) 19062306a36Sopenharmony_ci#define ZR060_VPR_BL_POL BIT(3) 19162306a36Sopenharmony_ci#define ZR060_VPR_FI_POL BIT(2) 19262306a36Sopenharmony_ci#define ZR060_VPR_HS_POL BIT(1) 19362306a36Sopenharmony_ci#define ZR060_VPR_VS_POL BIT(0) 19462306a36Sopenharmony_ci 19562306a36Sopenharmony_ci/* ZR36060 Scaling register */ 19662306a36Sopenharmony_ci 19762306a36Sopenharmony_ci#define ZR060_SR_V_SCALE BIT(2) 19862306a36Sopenharmony_ci#define ZR060_SR_H_SCALE2 BIT(0) 19962306a36Sopenharmony_ci#define ZR060_SR_H_SCALE4 (2 << 0) 20062306a36Sopenharmony_ci 20162306a36Sopenharmony_ciint zr36060_init_module(void); 20262306a36Sopenharmony_civoid zr36060_cleanup_module(void); 20362306a36Sopenharmony_ci#endif /*fndef ZR36060_H */ 204