Commit 5200401a authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab
Browse files

V4L/DVB (12808): tm6000: Move analog tv standards to tm6000-stds



tm5600/6000/6010 requires a large config table for video standards. Better to
move this to their own file.

Also added register settings for tm6010 (needs testing.

Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent d544f2c3
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
tm6000-objs := tm6000-cards.o \
		   tm6000-core.o  \
		   tm6000-i2c.o   \
		   tm6000-video.o
		   tm6000-video.o \
		   tm6000-stds.o

ifeq ($(CONFIG_VIDEO_TM6000_DVB),y)
tm6000-objs += tm6000-dvb.o \
+0 −340
Original line number Diff line number Diff line
@@ -380,346 +380,6 @@ int tm6000_init (struct tm6000_core *dev)
	return 0;
}

#define tm6000_wrt(dev,req,reg,val, data...)				\
	{ const static u8 _val[] = data;				\
	tm6000_read_write_usb(dev,USB_DIR_OUT | USB_TYPE_VENDOR,	\
	req,reg, val, (u8 *) _val, ARRAY_SIZE(_val));			\
	}

/*
TM5600/6000 register values to set video standards.
	There's an adjust, common to all, for composite video
	Additional adjustments are required for S-Video, based on std.

      Standards values for TV             S-Video Changes
REG   PAL   PAL_M PAL_N SECAM NTSC  Comp. PAL  PAL_M PAL_N SECAM NTSC
0xdf  0x1f  0x1f  0x1f  0x1f  0x1f
0xe2  0x00  0x00  0x00  0x00  0x00
0xe8  0x0f  0x0f  0x0f  0x0f  0x0f        0x00 0x00  0x00  0x00  0x00
0xeb  0x60  0x60  0x60  0x60  0x60  0x64  0x64 0x64  0x64  0x64  0x64
0xd5  0x5f  0x5f  0x5f  0x4f  0x4f        0x4f 0x4f  0x4f  0x4f  0x4f
0xe3  0x00  0x00  0x00  0x00  0x00  0x10  0x10 0x10  0x10  0x10  0x10
0xe5  0x00  0x00  0x00  0x00  0x00        0x10 0x10  0x10  0x10  0x10
0x3f  0x01  0x01  0x01  0x01  0x01
0x00  0x32  0x04  0x36  0x38  0x00        0x33 0x05  0x37  0x39  0x01
0x01  0x0e  0x0e  0x0e  0x0e  0x0f
0x02  0x5f  0x5f  0x5f  0x5f  0x5f
0x03  0x02  0x00  0x02  0x02  0x00        0x04 0x04  0x04  0x03  0x03
0x07  0x01  0x01  0x01  0x01  0x01        0x00                   0x00
0x17  0xcd  0xcd  0xcd  0xcd  0xcd                               0x8b
0x18  0x25  0x1e  0x1e  0x24  0x1e
0x19  0xd5  0x83  0x91  0x92  0x8b
0x1a  0x63  0x0a  0x1f  0xe8  0xa2
0x1b  0x50  0xe0  0x0c  0xed  0xe9
0x1c  0x1c  0x1c  0x1c  0x1c  0x1c
0x1d  0xcc  0xcc  0xcc  0xcc  0xcc
0x1e  0xcc  0xcc  0xcc  0xcc  0xcc
0x1f  0xcd  0xcd  0xcd  0xcd  0xcd
0x2e  0x8c  0x88  0x8c  0x8c  0x88                   0x88
0x30  0x2c  0x20  0x2c  0x2c  0x22        0x2a 0x22  0x22  0x2a
0x31  0xc1  0x61  0xc1  0xc1  0x61
0x33  0x0c  0x0c  0x0c  0x2c  0x1c
0x35  0x1c  0x1c  0x1c  0x18  0x1c
0x82  0x52  0x52  0x52  0x42  0x42
0x04  0xdc  0xdc  0xdc        0xdd
0x0d  0x07  0x07  0x07  0x87  0x07
0x3f  0x00  0x00  0x00  0x00  0x00
*/


void tm6000_get_std_res(struct tm6000_core *dev)
{
	/* Currently, those are the only supported resoltions */
	if (dev->norm & V4L2_STD_525_60) {
		dev->height=480;
	} else {
		dev->height=576;
	}
	dev->width=720;

printk("tm6000: res= %dx%d\n",dev->width,dev->height);
}

int tm6000_set_standard (struct tm6000_core *dev, v4l2_std_id *norm)
{
	dev->norm=*norm;
	tm6000_get_std_res(dev);

	/* HACK: Should use, instead, the common code!!! */
	if (*norm & V4L2_STD_PAL_M) {
printk("calling PAL/M hack\n");
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xdf, 0x1f);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe2, 0x00);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe8, 0x0f);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xeb, 0x60);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xd5, 0x5f);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe3, 0x00);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe5, 0x00);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x3f, 0x01);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x04);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x01, 0x0e);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x02, 0x5f);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x00);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x07, 0x01);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x18, 0x1e);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x19, 0x83);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1a, 0x0a);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1b, 0xe0);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1c, 0x1c);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1d, 0xcc);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1e, 0xcc);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1f, 0xcd);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x2e, 0x88);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x20);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x31, 0x61);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x33, 0x0c);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x35, 0x1c);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x82, 0x52);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x04, 0xdc);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x0d, 0x07);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x3f, 0x00);

	/* Enables audio and AV */
	/* maybe it should be, instead, 0x20 */
	tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xcc, 0x60);
	tm6000_set_reg (dev, REQ_08_SET_GET_AVREG_BIT, 0x01, 0x80);

		return 0;
	}

	if (*norm & V4L2_STD_PAL) {
printk("calling PAL hack\n");
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xdf, 0x1f);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe2, 0x00);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe8, 0x0f);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xeb, 0x60);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xd5, 0x5f);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe3, 0x00);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe5, 0x00);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x3f, 0x01);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x32);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x01, 0x0e);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x02, 0x5f);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x02);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x07, 0x01);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x18, 0x25);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x19, 0xd5);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1a, 0x63);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1b, 0x50);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1c, 0x1c);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1d, 0xcc);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1e, 0xcc);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1f, 0xcd);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x2e, 0x8c);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x2c);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x31, 0xc1);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x33, 0x0c);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x35, 0x1c);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x82, 0x52);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x04, 0xdc);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x0d, 0x07);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x3f, 0x00);

		return 0;
	}

	/* */
//	tm6000_set_reg (dev, REQ_04_EN_DISABLE_MCU_INT, 0x02, 0x01);
//	tm6000_set_reg (dev, REQ_04_EN_DISABLE_MCU_INT, 0x02, 0x00);

	/* Set registers common to all standards */
	tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xdf, 0x1f);
	tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe2, 0x00);

	switch (dev->input) {
	case TM6000_INPUT_TV:
		/* Seems to disable ADC2 - needed for TV and RCA */
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe8, 0x0f);

		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xeb, 0x60);

		if (*norm & V4L2_STD_PAL) {
			/* Enable UV_FLT_EN */
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xd5, 0x5f);
		} else {
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xd5, 0x4f);
		}

		/* E3: Select input 0 */
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe3, 0x00);

		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe5, 0x10);

		break;
	case TM6000_INPUT_COMPOSITE:
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xeb, 0x64);
		/* E3: Select input 1 */
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe3, 0x10);
		break;
	case TM6000_INPUT_SVIDEO:
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe8, 0x00);

		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xeb, 0x64);

		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xd5, 0x4f);
		/* E3: Select input 1 */
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe3, 0x10);

		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0xe5, 0x10);

		break;
	}

	/* Software reset */
	tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x3f, 0x01);

	tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x02, 0x5f);

	tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x07, 0x01);
//	tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x17, 0xcd);

	/* Horizontal Sync DTO = 0x1ccccccd */
	tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1c, 0x1c);
	tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1d, 0xcc);
	tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1e, 0xcc);
	tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1f, 0xcd);

	/* Vertical Height */
	if (*norm & V4L2_STD_525_60) {
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x31, 0x61);
	} else {
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x31, 0xc1);
	}

	/* Horizontal Length */
	tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x2f, 640/8);

	if (*norm & V4L2_STD_PAL) {
		/* Common to All PAL Standards */

		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x01, 0x0e);

		/* Vsync Hsinc Lockout End */
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x33, 0x0c);

		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x35, 0x1c);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x82, 0x52);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x04, 0xdc);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x0d, 0x07);
		if (*norm & V4L2_STD_PAL_M) {

			/* Chroma DTO */
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x18, 0x1e);
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x19, 0x83);
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1a, 0x0a);
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1b, 0xe0);

			/* Active Video Horiz Start Time */
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x2e, 0x88);

			if (dev->input==TM6000_INPUT_SVIDEO) {
				tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x05);
				tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x04);
				tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x22);
			} else {
				tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x04);
				tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x00);
				tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x20);
			}
		} else if (*norm & V4L2_STD_PAL_N) {
			/* Chroma DTO */
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x18, 0x1e);
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x19, 0x91);
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1a, 0x1f);
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1b, 0x0c);

			if (dev->input==TM6000_INPUT_SVIDEO) {
				tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x37);
				tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x04);
				tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x2e, 0x88);
				tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x22);
			} else {
				tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x36);
				tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x02);
				tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x2e, 0x8c);
				tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x2c);
			}
		} else {	// Other PAL standards
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x18, 0x25);
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x19, 0xd5);
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1a, 0x63);
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1b, 0x50);
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x2e, 0x8c);

			if (dev->input==TM6000_INPUT_SVIDEO) {
				tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x33);
				tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x04);
				tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x2a);

				tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x2c);
			} else {
				tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x32);
				tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x02);
				tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x2c);
			}
		}
	} if (*norm & V4L2_STD_SECAM) {
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x01, 0x0e);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x18, 0x24);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x19, 0x92);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1a, 0xe8);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1b, 0xed);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x2e, 0x8c);

		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x33, 0x2c);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x35, 0x18);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x82, 0x42);
		// Register 0x04 is not initialized on SECAM
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x0d, 0x87);

		if (dev->input==TM6000_INPUT_SVIDEO) {
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x39);
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x03);
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x2a);
		} else {
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x38);
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x02);
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x2c);
		}
	} else {	/* NTSC */
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x01, 0x0f);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x18, 0x1e);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x19, 0x8b);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1a, 0xa2);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x1b, 0xe9);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x2e, 0x88);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x30, 0x22);

		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x33, 0x1c);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x35, 0x1c);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x82, 0x42);
		tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x0d, 0x07);
		if (dev->input==TM6000_INPUT_SVIDEO) {
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x01);
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x03);

			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x07, 0x00);
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x17, 0x8b);
		} else {
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x00, 0x00);
			tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x03, 0x00);
		}
	}


	/* End of software reset */
	tm6000_set_reg (dev, REQ_07_SET_GET_AVREG, 0x3f, 0x00);

	msleep(40);

	return 0;
}

int tm6000_set_audio_bitrate (struct tm6000_core *dev, int bitrate)
{
	int val;
+852 −0

File added.

Preview size limit exceeded, changes collapsed.

+4 −2
Original line number Diff line number Diff line
@@ -206,8 +206,6 @@ int tm6000_init_after_firmware (struct tm6000_core *dev);

int tm6000_init_analog_mode (struct tm6000_core *dev);
int tm6000_init_digital_mode (struct tm6000_core *dev);
void tm6000_get_std_res(struct tm6000_core *dev);
int tm6000_set_standard (struct tm6000_core *dev, v4l2_std_id *norm);
int tm6000_set_audio_bitrate (struct tm6000_core *dev, int bitrate);

int tm6000_dvb_register(struct tm6000_core *dev);
@@ -218,6 +216,10 @@ int tm6000_v4l2_unregister(struct tm6000_core *dev);
int tm6000_v4l2_exit(void);
void tm6000_set_fourcc_format(struct tm6000_core *dev);

/* In tm6000-stds.c */
void tm6000_get_std_res(struct tm6000_core *dev);
int tm6000_set_standard (struct tm6000_core *dev, v4l2_std_id *norm);

/* In tm6000-i2c.c */
int tm6000_i2c_register(struct tm6000_core *dev);
int tm6000_i2c_unregister(struct tm6000_core *dev);