linux/drivers/media/pci/tw68/tw68-reg.h
Hans Verkuil e15d1c12c5 [media] tw68: refactor and cleanup the tw68 driver
Refactor and clean up the tw68 driver. It's now using the proper
V4L2 core frameworks.

Tested with my Techwell tw6805a and tw6816 grabber boards.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
2014-09-04 11:30:53 -03:00

196 lines
5.6 KiB
C

/*
* tw68-reg.h - TW68xx register offsets
*
* Much of this code is derived from the cx88 and sa7134 drivers, which
* were in turn derived from the bt87x driver. The original work was by
* Gerd Knorr; more recently the code was enhanced by Mauro Carvalho Chehab,
* Hans Verkuil, Andy Walls and many others. Their work is gratefully
* acknowledged. Full credit goes to them - any problems within this code
* are mine.
*
* Copyright (C) William M. Brack
*
* Refactored and updated to the latest v4l core frameworks:
*
* Copyright (C) 2014 Hans Verkuil <hverkuil@xs4all.nl>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef _TW68_REG_H_
#define _TW68_REG_H_
/* ---------------------------------------------------------------------- */
#define TW68_DMAC 0x000
#define TW68_DMAP_SA 0x004
#define TW68_DMAP_EXE 0x008
#define TW68_DMAP_PP 0x00c
#define TW68_VBIC 0x010
#define TW68_SBUSC 0x014
#define TW68_SBUSSD 0x018
#define TW68_INTSTAT 0x01C
#define TW68_INTMASK 0x020
#define TW68_GPIOC 0x024
#define TW68_GPOE 0x028
#define TW68_TESTREG 0x02C
#define TW68_SBUSRD 0x030
#define TW68_SBUS_TRIG 0x034
#define TW68_CAP_CTL 0x040
#define TW68_SUBSYS 0x054
#define TW68_I2C_RST 0x064
#define TW68_VBIINST 0x06C
/* define bits in FIFO and DMAP Control reg */
#define TW68_DMAP_EN (1 << 0)
#define TW68_FIFO_EN (1 << 1)
/* define the Interrupt Status Register bits */
#define TW68_SBDONE (1 << 0)
#define TW68_DMAPI (1 << 1)
#define TW68_GPINT (1 << 2)
#define TW68_FFOF (1 << 3)
#define TW68_FDMIS (1 << 4)
#define TW68_DMAPERR (1 << 5)
#define TW68_PABORT (1 << 6)
#define TW68_SBDONE2 (1 << 12)
#define TW68_SBERR2 (1 << 13)
#define TW68_PPERR (1 << 14)
#define TW68_FFERR (1 << 15)
#define TW68_DET50 (1 << 16)
#define TW68_FLOCK (1 << 17)
#define TW68_CCVALID (1 << 18)
#define TW68_VLOCK (1 << 19)
#define TW68_FIELD (1 << 20)
#define TW68_SLOCK (1 << 21)
#define TW68_HLOCK (1 << 22)
#define TW68_VDLOSS (1 << 23)
#define TW68_SBERR (1 << 24)
/* define the i2c control register bits */
#define TW68_SBMODE (0)
#define TW68_WREN (1)
#define TW68_SSCLK (6)
#define TW68_SSDAT (7)
#define TW68_SBCLK (8)
#define TW68_WDLEN (16)
#define TW68_RDLEN (20)
#define TW68_SBRW (24)
#define TW68_SBDEV (25)
#define TW68_SBMODE_B (1 << TW68_SBMODE)
#define TW68_WREN_B (1 << TW68_WREN)
#define TW68_SSCLK_B (1 << TW68_SSCLK)
#define TW68_SSDAT_B (1 << TW68_SSDAT)
#define TW68_SBRW_B (1 << TW68_SBRW)
#define TW68_GPDATA 0x100
#define TW68_STATUS1 0x204
#define TW68_INFORM 0x208
#define TW68_OPFORM 0x20C
#define TW68_HSYNC 0x210
#define TW68_ACNTL 0x218
#define TW68_CROP_HI 0x21C
#define TW68_VDELAY_LO 0x220
#define TW68_VACTIVE_LO 0x224
#define TW68_HDELAY_LO 0x228
#define TW68_HACTIVE_LO 0x22C
#define TW68_CNTRL1 0x230
#define TW68_VSCALE_LO 0x234
#define TW68_SCALE_HI 0x238
#define TW68_HSCALE_LO 0x23C
#define TW68_BRIGHT 0x240
#define TW68_CONTRAST 0x244
#define TW68_SHARPNESS 0x248
#define TW68_SAT_U 0x24C
#define TW68_SAT_V 0x250
#define TW68_HUE 0x254
#define TW68_SHARP2 0x258
#define TW68_VSHARP 0x25C
#define TW68_CORING 0x260
#define TW68_VBICNTL 0x264
#define TW68_CNTRL2 0x268
#define TW68_CC_DATA 0x26C
#define TW68_SDT 0x270
#define TW68_SDTR 0x274
#define TW68_RESERV2 0x278
#define TW68_RESERV3 0x27C
#define TW68_CLMPG 0x280
#define TW68_IAGC 0x284
#define TW68_AGCGAIN 0x288
#define TW68_PEAKWT 0x28C
#define TW68_CLMPL 0x290
#define TW68_SYNCT 0x294
#define TW68_MISSCNT 0x298
#define TW68_PCLAMP 0x29C
#define TW68_VCNTL1 0x2A0
#define TW68_VCNTL2 0x2A4
#define TW68_CKILL 0x2A8
#define TW68_COMB 0x2AC
#define TW68_LDLY 0x2B0
#define TW68_MISC1 0x2B4
#define TW68_LOOP 0x2B8
#define TW68_MISC2 0x2BC
#define TW68_MVSN 0x2C0
#define TW68_STATUS2 0x2C4
#define TW68_HFREF 0x2C8
#define TW68_CLMD 0x2CC
#define TW68_IDCNTL 0x2D0
#define TW68_CLCNTL1 0x2D4
/* Audio */
#define TW68_ACKI1 0x300
#define TW68_ACKI2 0x304
#define TW68_ACKI3 0x308
#define TW68_ACKN1 0x30C
#define TW68_ACKN2 0x310
#define TW68_ACKN3 0x314
#define TW68_SDIV 0x318
#define TW68_LRDIV 0x31C
#define TW68_ACCNTL 0x320
#define TW68_VSCTL 0x3B8
#define TW68_CHROMAGVAL 0x3BC
#define TW68_F2CROP_HI 0x3DC
#define TW68_F2VDELAY_LO 0x3E0
#define TW68_F2VACTIVE_LO 0x3E4
#define TW68_F2HDELAY_LO 0x3E8
#define TW68_F2HACTIVE_LO 0x3EC
#define TW68_F2CNT 0x3F0
#define TW68_F2VSCALE_LO 0x3F4
#define TW68_F2SCALE_HI 0x3F8
#define TW68_F2HSCALE_LO 0x3FC
#define RISC_INT_BIT 0x08000000
#define RISC_SYNCO 0xC0000000
#define RISC_SYNCE 0xD0000000
#define RISC_JUMP 0xB0000000
#define RISC_LINESTART 0x90000000
#define RISC_INLINE 0xA0000000
#define VideoFormatNTSC 0
#define VideoFormatNTSCJapan 0
#define VideoFormatPALBDGHI 1
#define VideoFormatSECAM 2
#define VideoFormatNTSC443 3
#define VideoFormatPALM 4
#define VideoFormatPALN 5
#define VideoFormatPALNC 5
#define VideoFormatPAL60 6
#define VideoFormatAuto 7
#define ColorFormatRGB32 0x00
#define ColorFormatRGB24 0x10
#define ColorFormatRGB16 0x20
#define ColorFormatRGB15 0x30
#define ColorFormatYUY2 0x40
#define ColorFormatBSWAP 0x04
#define ColorFormatWSWAP 0x08
#define ColorFormatGamma 0x80
#endif