xref: /linux/drivers/media/pci/tw68/tw68-reg.h (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*c942fddfSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
25740f4e7SHans Verkuil /*
35740f4e7SHans Verkuil  *  tw68-reg.h - TW68xx register offsets
45740f4e7SHans Verkuil  *
55740f4e7SHans Verkuil  *  Much of this code is derived from the cx88 and sa7134 drivers, which
65740f4e7SHans Verkuil  *  were in turn derived from the bt87x driver.  The original work was by
75740f4e7SHans Verkuil  *  Gerd Knorr; more recently the code was enhanced by Mauro Carvalho Chehab,
85740f4e7SHans Verkuil  *  Hans Verkuil, Andy Walls and many others.  Their work is gratefully
95740f4e7SHans Verkuil  *  acknowledged.  Full credit goes to them - any problems within this code
105740f4e7SHans Verkuil  *  are mine.
115740f4e7SHans Verkuil  *
12e15d1c12SHans Verkuil  *  Copyright (C) William M. Brack
13e15d1c12SHans Verkuil  *
14e15d1c12SHans Verkuil  *  Refactored and updated to the latest v4l core frameworks:
15e15d1c12SHans Verkuil  *
16e15d1c12SHans Verkuil  *  Copyright (C) 2014 Hans Verkuil <hverkuil@xs4all.nl>
175740f4e7SHans Verkuil */
185740f4e7SHans Verkuil 
195740f4e7SHans Verkuil #ifndef _TW68_REG_H_
205740f4e7SHans Verkuil #define _TW68_REG_H_
215740f4e7SHans Verkuil 
225740f4e7SHans Verkuil /* ---------------------------------------------------------------------- */
235740f4e7SHans Verkuil #define	TW68_DMAC		0x000
245740f4e7SHans Verkuil #define	TW68_DMAP_SA		0x004
255740f4e7SHans Verkuil #define	TW68_DMAP_EXE		0x008
265740f4e7SHans Verkuil #define	TW68_DMAP_PP		0x00c
275740f4e7SHans Verkuil #define	TW68_VBIC		0x010
285740f4e7SHans Verkuil #define	TW68_SBUSC		0x014
295740f4e7SHans Verkuil #define	TW68_SBUSSD		0x018
305740f4e7SHans Verkuil #define	TW68_INTSTAT		0x01C
315740f4e7SHans Verkuil #define	TW68_INTMASK		0x020
325740f4e7SHans Verkuil #define	TW68_GPIOC		0x024
335740f4e7SHans Verkuil #define	TW68_GPOE		0x028
345740f4e7SHans Verkuil #define	TW68_TESTREG		0x02C
355740f4e7SHans Verkuil #define	TW68_SBUSRD		0x030
365740f4e7SHans Verkuil #define	TW68_SBUS_TRIG		0x034
375740f4e7SHans Verkuil #define	TW68_CAP_CTL		0x040
385740f4e7SHans Verkuil #define	TW68_SUBSYS		0x054
395740f4e7SHans Verkuil #define	TW68_I2C_RST		0x064
405740f4e7SHans Verkuil #define	TW68_VBIINST		0x06C
415740f4e7SHans Verkuil /* define bits in FIFO and DMAP Control reg */
425740f4e7SHans Verkuil #define	TW68_DMAP_EN		(1 << 0)
435740f4e7SHans Verkuil #define	TW68_FIFO_EN		(1 << 1)
445740f4e7SHans Verkuil /* define the Interrupt Status Register bits */
455740f4e7SHans Verkuil #define	TW68_SBDONE		(1 << 0)
465740f4e7SHans Verkuil #define	TW68_DMAPI		(1 << 1)
475740f4e7SHans Verkuil #define	TW68_GPINT		(1 << 2)
485740f4e7SHans Verkuil #define	TW68_FFOF		(1 << 3)
495740f4e7SHans Verkuil #define	TW68_FDMIS		(1 << 4)
505740f4e7SHans Verkuil #define	TW68_DMAPERR		(1 << 5)
515740f4e7SHans Verkuil #define	TW68_PABORT		(1 << 6)
525740f4e7SHans Verkuil #define	TW68_SBDONE2		(1 << 12)
535740f4e7SHans Verkuil #define	TW68_SBERR2		(1 << 13)
545740f4e7SHans Verkuil #define	TW68_PPERR		(1 << 14)
555740f4e7SHans Verkuil #define	TW68_FFERR		(1 << 15)
565740f4e7SHans Verkuil #define	TW68_DET50		(1 << 16)
575740f4e7SHans Verkuil #define	TW68_FLOCK		(1 << 17)
585740f4e7SHans Verkuil #define	TW68_CCVALID		(1 << 18)
595740f4e7SHans Verkuil #define	TW68_VLOCK		(1 << 19)
605740f4e7SHans Verkuil #define	TW68_FIELD		(1 << 20)
615740f4e7SHans Verkuil #define	TW68_SLOCK		(1 << 21)
625740f4e7SHans Verkuil #define	TW68_HLOCK		(1 << 22)
635740f4e7SHans Verkuil #define	TW68_VDLOSS		(1 << 23)
645740f4e7SHans Verkuil #define	TW68_SBERR		(1 << 24)
655740f4e7SHans Verkuil /* define the i2c control register bits */
665740f4e7SHans Verkuil #define	TW68_SBMODE		(0)
675740f4e7SHans Verkuil #define	TW68_WREN		(1)
685740f4e7SHans Verkuil #define	TW68_SSCLK		(6)
695740f4e7SHans Verkuil #define	TW68_SSDAT		(7)
705740f4e7SHans Verkuil #define	TW68_SBCLK		(8)
715740f4e7SHans Verkuil #define	TW68_WDLEN		(16)
725740f4e7SHans Verkuil #define	TW68_RDLEN		(20)
735740f4e7SHans Verkuil #define	TW68_SBRW		(24)
745740f4e7SHans Verkuil #define	TW68_SBDEV		(25)
755740f4e7SHans Verkuil 
765740f4e7SHans Verkuil #define	TW68_SBMODE_B		(1 << TW68_SBMODE)
775740f4e7SHans Verkuil #define	TW68_WREN_B		(1 << TW68_WREN)
785740f4e7SHans Verkuil #define	TW68_SSCLK_B		(1 << TW68_SSCLK)
795740f4e7SHans Verkuil #define	TW68_SSDAT_B		(1 << TW68_SSDAT)
805740f4e7SHans Verkuil #define	TW68_SBRW_B		(1 << TW68_SBRW)
815740f4e7SHans Verkuil 
825740f4e7SHans Verkuil #define	TW68_GPDATA		0x100
835740f4e7SHans Verkuil #define	TW68_STATUS1		0x204
845740f4e7SHans Verkuil #define	TW68_INFORM		0x208
855740f4e7SHans Verkuil #define	TW68_OPFORM		0x20C
865740f4e7SHans Verkuil #define	TW68_HSYNC		0x210
875740f4e7SHans Verkuil #define	TW68_ACNTL		0x218
885740f4e7SHans Verkuil #define	TW68_CROP_HI		0x21C
895740f4e7SHans Verkuil #define	TW68_VDELAY_LO		0x220
905740f4e7SHans Verkuil #define	TW68_VACTIVE_LO		0x224
915740f4e7SHans Verkuil #define	TW68_HDELAY_LO		0x228
925740f4e7SHans Verkuil #define	TW68_HACTIVE_LO		0x22C
935740f4e7SHans Verkuil #define	TW68_CNTRL1		0x230
945740f4e7SHans Verkuil #define	TW68_VSCALE_LO		0x234
955740f4e7SHans Verkuil #define	TW68_SCALE_HI		0x238
965740f4e7SHans Verkuil #define	TW68_HSCALE_LO		0x23C
975740f4e7SHans Verkuil #define	TW68_BRIGHT		0x240
985740f4e7SHans Verkuil #define	TW68_CONTRAST		0x244
995740f4e7SHans Verkuil #define	TW68_SHARPNESS		0x248
1005740f4e7SHans Verkuil #define	TW68_SAT_U		0x24C
1015740f4e7SHans Verkuil #define	TW68_SAT_V		0x250
1025740f4e7SHans Verkuil #define	TW68_HUE		0x254
1035740f4e7SHans Verkuil #define	TW68_SHARP2		0x258
1045740f4e7SHans Verkuil #define	TW68_VSHARP		0x25C
1055740f4e7SHans Verkuil #define	TW68_CORING		0x260
1065740f4e7SHans Verkuil #define	TW68_VBICNTL		0x264
1075740f4e7SHans Verkuil #define	TW68_CNTRL2		0x268
1085740f4e7SHans Verkuil #define	TW68_CC_DATA		0x26C
1095740f4e7SHans Verkuil #define	TW68_SDT		0x270
1105740f4e7SHans Verkuil #define	TW68_SDTR		0x274
1115740f4e7SHans Verkuil #define	TW68_RESERV2		0x278
1125740f4e7SHans Verkuil #define	TW68_RESERV3		0x27C
1135740f4e7SHans Verkuil #define	TW68_CLMPG		0x280
1145740f4e7SHans Verkuil #define	TW68_IAGC		0x284
1155740f4e7SHans Verkuil #define	TW68_AGCGAIN		0x288
1165740f4e7SHans Verkuil #define	TW68_PEAKWT		0x28C
1175740f4e7SHans Verkuil #define	TW68_CLMPL		0x290
1185740f4e7SHans Verkuil #define	TW68_SYNCT		0x294
1195740f4e7SHans Verkuil #define	TW68_MISSCNT		0x298
1205740f4e7SHans Verkuil #define	TW68_PCLAMP		0x29C
1215740f4e7SHans Verkuil #define	TW68_VCNTL1		0x2A0
1225740f4e7SHans Verkuil #define	TW68_VCNTL2		0x2A4
1235740f4e7SHans Verkuil #define	TW68_CKILL		0x2A8
1245740f4e7SHans Verkuil #define	TW68_COMB		0x2AC
1255740f4e7SHans Verkuil #define	TW68_LDLY		0x2B0
1265740f4e7SHans Verkuil #define	TW68_MISC1		0x2B4
1275740f4e7SHans Verkuil #define	TW68_LOOP		0x2B8
1285740f4e7SHans Verkuil #define	TW68_MISC2		0x2BC
1295740f4e7SHans Verkuil #define	TW68_MVSN		0x2C0
1305740f4e7SHans Verkuil #define	TW68_STATUS2		0x2C4
1315740f4e7SHans Verkuil #define	TW68_HFREF		0x2C8
1325740f4e7SHans Verkuil #define	TW68_CLMD		0x2CC
1335740f4e7SHans Verkuil #define	TW68_IDCNTL		0x2D0
1345740f4e7SHans Verkuil #define	TW68_CLCNTL1		0x2D4
1355740f4e7SHans Verkuil 
1365740f4e7SHans Verkuil /* Audio */
1375740f4e7SHans Verkuil #define	TW68_ACKI1		0x300
1385740f4e7SHans Verkuil #define	TW68_ACKI2		0x304
1395740f4e7SHans Verkuil #define	TW68_ACKI3		0x308
1405740f4e7SHans Verkuil #define	TW68_ACKN1		0x30C
1415740f4e7SHans Verkuil #define	TW68_ACKN2		0x310
1425740f4e7SHans Verkuil #define	TW68_ACKN3		0x314
1435740f4e7SHans Verkuil #define	TW68_SDIV		0x318
1445740f4e7SHans Verkuil #define	TW68_LRDIV		0x31C
1455740f4e7SHans Verkuil #define	TW68_ACCNTL		0x320
1465740f4e7SHans Verkuil 
1475740f4e7SHans Verkuil #define	TW68_VSCTL		0x3B8
1485740f4e7SHans Verkuil #define	TW68_CHROMAGVAL		0x3BC
1495740f4e7SHans Verkuil 
1505740f4e7SHans Verkuil #define	TW68_F2CROP_HI		0x3DC
1515740f4e7SHans Verkuil #define	TW68_F2VDELAY_LO	0x3E0
1525740f4e7SHans Verkuil #define	TW68_F2VACTIVE_LO	0x3E4
1535740f4e7SHans Verkuil #define	TW68_F2HDELAY_LO	0x3E8
1545740f4e7SHans Verkuil #define	TW68_F2HACTIVE_LO	0x3EC
1555740f4e7SHans Verkuil #define	TW68_F2CNT		0x3F0
1565740f4e7SHans Verkuil #define	TW68_F2VSCALE_LO	0x3F4
1575740f4e7SHans Verkuil #define	TW68_F2SCALE_HI		0x3F8
1585740f4e7SHans Verkuil #define	TW68_F2HSCALE_LO	0x3FC
1595740f4e7SHans Verkuil 
1605740f4e7SHans Verkuil #define	RISC_INT_BIT		0x08000000
1615740f4e7SHans Verkuil #define	RISC_SYNCO		0xC0000000
1625740f4e7SHans Verkuil #define	RISC_SYNCE		0xD0000000
1635740f4e7SHans Verkuil #define	RISC_JUMP		0xB0000000
1645740f4e7SHans Verkuil #define	RISC_LINESTART		0x90000000
1655740f4e7SHans Verkuil #define	RISC_INLINE		0xA0000000
1665740f4e7SHans Verkuil 
1675740f4e7SHans Verkuil #define VideoFormatNTSC		 0
1685740f4e7SHans Verkuil #define VideoFormatNTSCJapan	 0
1695740f4e7SHans Verkuil #define VideoFormatPALBDGHI	 1
1705740f4e7SHans Verkuil #define VideoFormatSECAM	 2
1715740f4e7SHans Verkuil #define VideoFormatNTSC443	 3
1725740f4e7SHans Verkuil #define VideoFormatPALM		 4
1735740f4e7SHans Verkuil #define VideoFormatPALN		 5
1745740f4e7SHans Verkuil #define VideoFormatPALNC	 5
1755740f4e7SHans Verkuil #define VideoFormatPAL60	 6
1765740f4e7SHans Verkuil #define VideoFormatAuto		 7
1775740f4e7SHans Verkuil 
1785740f4e7SHans Verkuil #define ColorFormatRGB32	 0x00
1795740f4e7SHans Verkuil #define ColorFormatRGB24	 0x10
1805740f4e7SHans Verkuil #define ColorFormatRGB16	 0x20
1815740f4e7SHans Verkuil #define ColorFormatRGB15	 0x30
1825740f4e7SHans Verkuil #define ColorFormatYUY2		 0x40
1835740f4e7SHans Verkuil #define ColorFormatBSWAP         0x04
1845740f4e7SHans Verkuil #define ColorFormatWSWAP         0x08
1855740f4e7SHans Verkuil #define ColorFormatGamma         0x80
1865740f4e7SHans Verkuil #endif
187