162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Zoran ZR36050 basic configuration functions - header file 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2001 Wolfgang Scherr <scherr@net4you.at> 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#ifndef ZR36050_H 962306a36Sopenharmony_ci#define ZR36050_H 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#include "videocodec.h" 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci/* data stored for each zoran jpeg codec chip */ 1462306a36Sopenharmony_cistruct zr36050 { 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 status1; 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 /* com/app marker */ 3962306a36Sopenharmony_ci struct jpeg_com_marker com; 4062306a36Sopenharmony_ci struct jpeg_app_marker app; 4162306a36Sopenharmony_ci}; 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci/* zr36050 register addresses */ 4462306a36Sopenharmony_ci#define ZR050_GO 0x000 4562306a36Sopenharmony_ci#define ZR050_HARDWARE 0x002 4662306a36Sopenharmony_ci#define ZR050_MODE 0x003 4762306a36Sopenharmony_ci#define ZR050_OPTIONS 0x004 4862306a36Sopenharmony_ci#define ZR050_MBCV 0x005 4962306a36Sopenharmony_ci#define ZR050_MARKERS_EN 0x006 5062306a36Sopenharmony_ci#define ZR050_INT_REQ_0 0x007 5162306a36Sopenharmony_ci#define ZR050_INT_REQ_1 0x008 5262306a36Sopenharmony_ci#define ZR050_TCV_NET_HI 0x009 5362306a36Sopenharmony_ci#define ZR050_TCV_NET_MH 0x00a 5462306a36Sopenharmony_ci#define ZR050_TCV_NET_ML 0x00b 5562306a36Sopenharmony_ci#define ZR050_TCV_NET_LO 0x00c 5662306a36Sopenharmony_ci#define ZR050_TCV_DATA_HI 0x00d 5762306a36Sopenharmony_ci#define ZR050_TCV_DATA_MH 0x00e 5862306a36Sopenharmony_ci#define ZR050_TCV_DATA_ML 0x00f 5962306a36Sopenharmony_ci#define ZR050_TCV_DATA_LO 0x010 6062306a36Sopenharmony_ci#define ZR050_SF_HI 0x011 6162306a36Sopenharmony_ci#define ZR050_SF_LO 0x012 6262306a36Sopenharmony_ci#define ZR050_AF_HI 0x013 6362306a36Sopenharmony_ci#define ZR050_AF_M 0x014 6462306a36Sopenharmony_ci#define ZR050_AF_LO 0x015 6562306a36Sopenharmony_ci#define ZR050_ACV_HI 0x016 6662306a36Sopenharmony_ci#define ZR050_ACV_MH 0x017 6762306a36Sopenharmony_ci#define ZR050_ACV_ML 0x018 6862306a36Sopenharmony_ci#define ZR050_ACV_LO 0x019 6962306a36Sopenharmony_ci#define ZR050_ACT_HI 0x01a 7062306a36Sopenharmony_ci#define ZR050_ACT_MH 0x01b 7162306a36Sopenharmony_ci#define ZR050_ACT_ML 0x01c 7262306a36Sopenharmony_ci#define ZR050_ACT_LO 0x01d 7362306a36Sopenharmony_ci#define ZR050_ACV_TURN_HI 0x01e 7462306a36Sopenharmony_ci#define ZR050_ACV_TURN_MH 0x01f 7562306a36Sopenharmony_ci#define ZR050_ACV_TURN_ML 0x020 7662306a36Sopenharmony_ci#define ZR050_ACV_TURN_LO 0x021 7762306a36Sopenharmony_ci#define ZR050_STATUS_0 0x02e 7862306a36Sopenharmony_ci#define ZR050_STATUS_1 0x02f 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ci#define ZR050_SOF_IDX 0x040 8162306a36Sopenharmony_ci#define ZR050_SOS1_IDX 0x07a 8262306a36Sopenharmony_ci#define ZR050_SOS2_IDX 0x08a 8362306a36Sopenharmony_ci#define ZR050_SOS3_IDX 0x09a 8462306a36Sopenharmony_ci#define ZR050_SOS4_IDX 0x0aa 8562306a36Sopenharmony_ci#define ZR050_DRI_IDX 0x0c0 8662306a36Sopenharmony_ci#define ZR050_DNL_IDX 0x0c6 8762306a36Sopenharmony_ci#define ZR050_DQT_IDX 0x0cc 8862306a36Sopenharmony_ci#define ZR050_DHT_IDX 0x1d4 8962306a36Sopenharmony_ci#define ZR050_APP_IDX 0x380 9062306a36Sopenharmony_ci#define ZR050_COM_IDX 0x3c0 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci/* zr36050 hardware register bits */ 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci#define ZR050_HW_BSWD 0x80 9562306a36Sopenharmony_ci#define ZR050_HW_MSTR 0x40 9662306a36Sopenharmony_ci#define ZR050_HW_DMA 0x20 9762306a36Sopenharmony_ci#define ZR050_HW_CFIS_1_CLK 0x00 9862306a36Sopenharmony_ci#define ZR050_HW_CFIS_2_CLK 0x04 9962306a36Sopenharmony_ci#define ZR050_HW_CFIS_3_CLK 0x08 10062306a36Sopenharmony_ci#define ZR050_HW_CFIS_4_CLK 0x0C 10162306a36Sopenharmony_ci#define ZR050_HW_CFIS_5_CLK 0x10 10262306a36Sopenharmony_ci#define ZR050_HW_CFIS_6_CLK 0x14 10362306a36Sopenharmony_ci#define ZR050_HW_CFIS_7_CLK 0x18 10462306a36Sopenharmony_ci#define ZR050_HW_CFIS_8_CLK 0x1C 10562306a36Sopenharmony_ci#define ZR050_HW_BELE 0x01 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ci/* zr36050 mode register bits */ 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ci#define ZR050_MO_COMP 0x80 11062306a36Sopenharmony_ci#define ZR050_MO_ATP 0x40 11162306a36Sopenharmony_ci#define ZR050_MO_PASS2 0x20 11262306a36Sopenharmony_ci#define ZR050_MO_TLM 0x10 11362306a36Sopenharmony_ci#define ZR050_MO_DCONLY 0x08 11462306a36Sopenharmony_ci#define ZR050_MO_BRC 0x04 11562306a36Sopenharmony_ci 11662306a36Sopenharmony_ci#define ZR050_MO_ATP 0x40 11762306a36Sopenharmony_ci#define ZR050_MO_PASS2 0x20 11862306a36Sopenharmony_ci#define ZR050_MO_TLM 0x10 11962306a36Sopenharmony_ci#define ZR050_MO_DCONLY 0x08 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_ci/* zr36050 option register bits */ 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci#define ZR050_OP_NSCN_1 0x00 12462306a36Sopenharmony_ci#define ZR050_OP_NSCN_2 0x20 12562306a36Sopenharmony_ci#define ZR050_OP_NSCN_3 0x40 12662306a36Sopenharmony_ci#define ZR050_OP_NSCN_4 0x60 12762306a36Sopenharmony_ci#define ZR050_OP_NSCN_5 0x80 12862306a36Sopenharmony_ci#define ZR050_OP_NSCN_6 0xA0 12962306a36Sopenharmony_ci#define ZR050_OP_NSCN_7 0xC0 13062306a36Sopenharmony_ci#define ZR050_OP_NSCN_8 0xE0 13162306a36Sopenharmony_ci#define ZR050_OP_OVF 0x10 13262306a36Sopenharmony_ci 13362306a36Sopenharmony_ci/* zr36050 markers-enable register bits */ 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ci#define ZR050_ME_APP 0x80 13662306a36Sopenharmony_ci#define ZR050_ME_COM 0x40 13762306a36Sopenharmony_ci#define ZR050_ME_DRI 0x20 13862306a36Sopenharmony_ci#define ZR050_ME_DQT 0x10 13962306a36Sopenharmony_ci#define ZR050_ME_DHT 0x08 14062306a36Sopenharmony_ci#define ZR050_ME_DNL 0x04 14162306a36Sopenharmony_ci#define ZR050_ME_DQTI 0x02 14262306a36Sopenharmony_ci#define ZR050_ME_DHTI 0x01 14362306a36Sopenharmony_ci 14462306a36Sopenharmony_ci/* zr36050 status0/1 register bit masks */ 14562306a36Sopenharmony_ci 14662306a36Sopenharmony_ci#define ZR050_ST_RST_MASK 0x20 14762306a36Sopenharmony_ci#define ZR050_ST_SOF_MASK 0x02 14862306a36Sopenharmony_ci#define ZR050_ST_SOS_MASK 0x02 14962306a36Sopenharmony_ci#define ZR050_ST_DATRDY_MASK 0x80 15062306a36Sopenharmony_ci#define ZR050_ST_MRKDET_MASK 0x40 15162306a36Sopenharmony_ci#define ZR050_ST_RFM_MASK 0x10 15262306a36Sopenharmony_ci#define ZR050_ST_RFD_MASK 0x08 15362306a36Sopenharmony_ci#define ZR050_ST_END_MASK 0x04 15462306a36Sopenharmony_ci#define ZR050_ST_TCVOVF_MASK 0x02 15562306a36Sopenharmony_ci#define ZR050_ST_DATOVF_MASK 0x01 15662306a36Sopenharmony_ci 15762306a36Sopenharmony_ci/* pixel component idx */ 15862306a36Sopenharmony_ci 15962306a36Sopenharmony_ci#define ZR050_Y_COMPONENT 0 16062306a36Sopenharmony_ci#define ZR050_U_COMPONENT 1 16162306a36Sopenharmony_ci#define ZR050_V_COMPONENT 2 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ciint zr36050_init_module(void); 16462306a36Sopenharmony_civoid zr36050_cleanup_module(void); 16562306a36Sopenharmony_ci#endif /*fndef ZR36050_H */ 166