1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * STK1160 driver 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2012 Ezequiel Garcia 6*4882a593Smuzhiyun * <elezegarcia--a.t--gmail.com> 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * Based on Easycap driver by R.M. Thomas 9*4882a593Smuzhiyun * Copyright (C) 2010 R.M. Thomas 10*4882a593Smuzhiyun * <rmthomas--a.t--sciolus.org> 11*4882a593Smuzhiyun */ 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun /* GPIO Control */ 14*4882a593Smuzhiyun #define STK1160_GCTRL 0x000 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun /* Remote Wakeup Control */ 17*4882a593Smuzhiyun #define STK1160_RMCTL 0x00c 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun /* Power-on Strapping Data */ 20*4882a593Smuzhiyun #define STK1160_POSVA 0x010 21*4882a593Smuzhiyun #define STK1160_POSV_L 0x010 22*4882a593Smuzhiyun #define STK1160_POSV_M 0x011 23*4882a593Smuzhiyun #define STK1160_POSV_H 0x012 24*4882a593Smuzhiyun #define STK1160_POSV_L_ACDOUT BIT(3) 25*4882a593Smuzhiyun #define STK1160_POSV_L_ACSYNC BIT(2) 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun /* 28*4882a593Smuzhiyun * Decoder Control Register: 29*4882a593Smuzhiyun * This byte controls capture start/stop 30*4882a593Smuzhiyun * with bit #7 (0x?? OR 0x80 to activate). 31*4882a593Smuzhiyun */ 32*4882a593Smuzhiyun #define STK1160_DCTRL 0x100 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun /* 35*4882a593Smuzhiyun * Decimation Control Register: 36*4882a593Smuzhiyun * Byte 104: Horizontal Decimation Line Unit Count 37*4882a593Smuzhiyun * Byte 105: Vertical Decimation Line Unit Count 38*4882a593Smuzhiyun * Byte 106: Decimation Control 39*4882a593Smuzhiyun * Bit 0 - Horizontal Decimation Control 40*4882a593Smuzhiyun * 0 Horizontal decimation is disabled. 41*4882a593Smuzhiyun * 1 Horizontal decimation is enabled. 42*4882a593Smuzhiyun * Bit 1 - Decimates Half or More Column 43*4882a593Smuzhiyun * 0 Decimates less than half from original column, 44*4882a593Smuzhiyun * send count unit (0x105) before each unit skipped. 45*4882a593Smuzhiyun * 1 Decimates half or more from original column, 46*4882a593Smuzhiyun * skip count unit (0x105) before each unit sent. 47*4882a593Smuzhiyun * Bit 2 - Vertical Decimation Control 48*4882a593Smuzhiyun * 0 Vertical decimation is disabled. 49*4882a593Smuzhiyun * 1 Vertical decimation is enabled. 50*4882a593Smuzhiyun * Bit 3 - Vertical Greater or Equal to Half 51*4882a593Smuzhiyun * 0 Decimates less than half from original row, 52*4882a593Smuzhiyun * send count unit (0x105) before each unit skipped. 53*4882a593Smuzhiyun * 1 Decimates half or more from original row, 54*4882a593Smuzhiyun * skip count unit (0x105) before each unit sent. 55*4882a593Smuzhiyun * Bit 4 - Decimation Unit 56*4882a593Smuzhiyun * 0 Decimation will work with 2 rows or columns per unit. 57*4882a593Smuzhiyun * 1 Decimation will work with 4 rows or columns per unit. 58*4882a593Smuzhiyun */ 59*4882a593Smuzhiyun #define STK1160_DMCTRL_H_UNITS 0x104 60*4882a593Smuzhiyun #define STK1160_DMCTRL_V_UNITS 0x105 61*4882a593Smuzhiyun #define STK1160_DMCTRL 0x106 62*4882a593Smuzhiyun #define STK1160_H_DEC_EN BIT(0) 63*4882a593Smuzhiyun #define STK1160_H_DEC_MODE BIT(1) 64*4882a593Smuzhiyun #define STK1160_V_DEC_EN BIT(2) 65*4882a593Smuzhiyun #define STK1160_V_DEC_MODE BIT(3) 66*4882a593Smuzhiyun #define STK1160_DEC_UNIT_SIZE BIT(4) 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun /* Capture Frame Start Position */ 69*4882a593Smuzhiyun #define STK116_CFSPO 0x110 70*4882a593Smuzhiyun #define STK116_CFSPO_STX_L 0x110 71*4882a593Smuzhiyun #define STK116_CFSPO_STX_H 0x111 72*4882a593Smuzhiyun #define STK116_CFSPO_STY_L 0x112 73*4882a593Smuzhiyun #define STK116_CFSPO_STY_H 0x113 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun /* Capture Frame End Position */ 76*4882a593Smuzhiyun #define STK116_CFEPO 0x114 77*4882a593Smuzhiyun #define STK116_CFEPO_ENX_L 0x114 78*4882a593Smuzhiyun #define STK116_CFEPO_ENX_H 0x115 79*4882a593Smuzhiyun #define STK116_CFEPO_ENY_L 0x116 80*4882a593Smuzhiyun #define STK116_CFEPO_ENY_H 0x117 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun /* Serial Interface Control */ 83*4882a593Smuzhiyun #define STK1160_SICTL 0x200 84*4882a593Smuzhiyun #define STK1160_SICTL_CD 0x202 85*4882a593Smuzhiyun #define STK1160_SICTL_SDA 0x203 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun /* Serial Bus Write */ 88*4882a593Smuzhiyun #define STK1160_SBUSW 0x204 89*4882a593Smuzhiyun #define STK1160_SBUSW_WA 0x204 90*4882a593Smuzhiyun #define STK1160_SBUSW_WD 0x205 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun /* Serial Bus Read */ 93*4882a593Smuzhiyun #define STK1160_SBUSR 0x208 94*4882a593Smuzhiyun #define STK1160_SBUSR_RA 0x208 95*4882a593Smuzhiyun #define STK1160_SBUSR_RD 0x209 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun /* Alternate Serial Interface Control */ 98*4882a593Smuzhiyun #define STK1160_ASIC 0x2fc 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun /* PLL Select Options */ 101*4882a593Smuzhiyun #define STK1160_PLLSO 0x018 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun /* PLL Frequency Divider */ 104*4882a593Smuzhiyun #define STK1160_PLLFD 0x01c 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun /* Timing Generator */ 107*4882a593Smuzhiyun #define STK1160_TIGEN 0x300 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun /* Timing Control Parameter */ 110*4882a593Smuzhiyun #define STK1160_TICTL 0x350 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun /* AC97 Audio Control */ 113*4882a593Smuzhiyun #define STK1160_AC97CTL_0 0x500 114*4882a593Smuzhiyun #define STK1160_AC97CTL_1 0x504 115*4882a593Smuzhiyun #define STK1160_AC97CTL_0_CR BIT(1) 116*4882a593Smuzhiyun #define STK1160_AC97CTL_0_CW BIT(2) 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun /* Use [0:6] bits of register 0x504 to set codec command address */ 119*4882a593Smuzhiyun #define STK1160_AC97_ADDR 0x504 120*4882a593Smuzhiyun /* Use [16:31] bits of register 0x500 to set codec command data */ 121*4882a593Smuzhiyun #define STK1160_AC97_CMD 0x502 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun /* Audio I2S Interface */ 124*4882a593Smuzhiyun #define STK1160_I2SCTL 0x50c 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun /* EEPROM Interface */ 127*4882a593Smuzhiyun #define STK1160_EEPROM_SZ 0x5f0 128