Added support for mt9t111 sensor in the existing mt9t112 driver. Also added support for media controller framework. The sensor driver currently supports only VGA resolution. Signed-off-by: Deepthy Ravi <deepthy.ravi@xxxxxx> --- drivers/media/video/Kconfig | 7 + drivers/media/video/Makefile | 1 + drivers/media/video/mt9t111_reg.h | 1367 +++++++++++++++++++++++++++++++++++++ drivers/media/video/mt9t112.c | 320 ++++++++- include/media/mt9t111.h | 45 ++ 5 files changed, 1704 insertions(+), 36 deletions(-) create mode 100644 drivers/media/video/mt9t111_reg.h create mode 100644 include/media/mt9t111.h diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig index 14326d7..b5806e8 100644 --- a/drivers/media/video/Kconfig +++ b/drivers/media/video/Kconfig @@ -482,6 +482,13 @@ config VIDEO_MT9V032 This is a Video4Linux2 sensor-level driver for the Micron MT9V032 752x480 CMOS sensor. +config VIDEO_MT9T111 + tristate "Aptina MT9T111 VGA CMOS IMAGE SENSOR" + depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API + ---help--- + This is a Video4Linux2 sensor-level driver for the Aptina MT9T111 + image sensor. + config VIDEO_TCM825X tristate "TCM825x camera sensor support" depends on I2C && VIDEO_V4L2 diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile index c06f515..02a8b70 100644 --- a/drivers/media/video/Makefile +++ b/drivers/media/video/Makefile @@ -68,6 +68,7 @@ obj-$(CONFIG_VIDEO_TVEEPROM) += tveeprom.o obj-$(CONFIG_VIDEO_MT9V011) += mt9v011.o obj-$(CONFIG_VIDEO_MT9V032) += mt9v032.o obj-$(CONFIG_VIDEO_SR030PC30) += sr030pc30.o +obj-$(CONFIG_VIDEO_MT9T111) += mt9t112.o obj-$(CONFIG_VIDEO_NOON010PC30) += noon010pc30.o obj-$(CONFIG_VIDEO_M5MOLS) += m5mols/ obj-$(CONFIG_VIDEO_ADP1653) += adp1653.o diff --git a/drivers/media/video/mt9t111_reg.h b/drivers/media/video/mt9t111_reg.h new file mode 100644 index 0000000..2f610d4 --- /dev/null +++ b/drivers/media/video/mt9t111_reg.h @@ -0,0 +1,1367 @@ +/* + * drivers/media/video/mt9t111_reg.h + * + * mt9t111 sensor driver header file + * + * Copyright (C) 2009 Leopard Imaging + * + * This file is licensed under the terms of the GNU General Public License + * version 2. This program is licensed "as is" without any warranty of any + * kind, whether express or implied. + */ + +#ifndef MT9T111_REG_H +#define MT9T111_REG_H + +/* register addr */ +#define MT9T111_CHIP_ID (0x0000) + +/* register value */ +#define MT9T111_CHIP_ID_VALUE (0x2680) + +#define MT9T111_IMAGE_WIDTH (640) +#define MT9T111_IMAGE_HEIGHT (480) + +typedef struct { + u16 delay_time; + u16 addr; + u16 data; +} mt9t111_regs; + +mt9t111_regs patch_rev6[] = { + {0, 0x0982, 0x0}, + {0, 0x098A, 0xCE7}, + {0, 0x0990, 0x3C3C}, + {0, 0x0992, 0x3C3C}, + {0, 0x0994, 0x3C5F}, + {0, 0x0996, 0x4F30}, + {0, 0x0998, 0xED08}, + {0, 0x099a, 0xBD61}, + {0, 0x099c, 0xD5CE}, + {0, 0x099e, 0x4CD}, + {0, 0x098A, 0xCF7}, + {0, 0x0990, 0x1F17}, + {0, 0x0992, 0x211}, + {0, 0x0994, 0xCC33}, + {0, 0x0996, 0x2E30}, + {0, 0x0998, 0xED02}, + {0, 0x099a, 0xCCFF}, + {0, 0x099c, 0xFDED}, + {0, 0x099e, 0xCC}, + {0, 0x098A, 0xD07}, + {0, 0x0990, 0x2}, + {0, 0x0992, 0xBD70}, + {0, 0x0994, 0x6D18}, + {0, 0x0996, 0xDE1F}, + {0, 0x0998, 0x181F}, + {0, 0x099a, 0x8E01}, + {0, 0x099c, 0x10CC}, + {0, 0x099e, 0x3C52}, + {0, 0x098A, 0xD17}, + {0, 0x0990, 0x30ED}, + {0, 0x0992, 0x18}, + {0, 0x0994, 0xECA0}, + {0, 0x0996, 0xC4FD}, + {0, 0x0998, 0xBD70}, + {0, 0x099a, 0x2120}, + {0, 0x099c, 0x1ECC}, + {0, 0x099e, 0x3C52}, + {0, 0x098A, 0xD27}, + {0, 0x0990, 0x30ED}, + {0, 0x0992, 0xDE}, + {0, 0x0994, 0x1FEC}, + {0, 0x0996, 0xA0BD}, + {0, 0x0998, 0x7021}, + {0, 0x099a, 0xCC3C}, + {0, 0x099c, 0x5230}, + {0, 0x099e, 0xED02}, + {0, 0x098A, 0xD37}, + {0, 0x0990, 0xCCFF}, + {0, 0x0992, 0xFCED}, + {0, 0x0994, 0xCC}, + {0, 0x0996, 0x2}, + {0, 0x0998, 0xBD70}, + {0, 0x099a, 0x6DFC}, + {0, 0x099c, 0x4E1}, + {0, 0x099e, 0x1A83}, + {0, 0x098A, 0xD47}, + {0, 0x0990, 0x1}, + {0, 0x0992, 0x2720}, + {0, 0x0994, 0x1A83}, + {0, 0x0996, 0x4}, + {0, 0x0998, 0x271E}, + {0, 0x099a, 0x1A83}, + {0, 0x099c, 0x8}, + {0, 0x099e, 0x271C}, + {0, 0x098A, 0xD57}, + {0, 0x0990, 0x1A83}, + {0, 0x0992, 0x10}, + {0, 0x0994, 0x271A}, + {0, 0x0996, 0x1A83}, + {0, 0x0998, 0x20}, + {0, 0x099a, 0x2718}, + {0, 0x099c, 0x1A83}, + {0, 0x099e, 0x40}, + {0, 0x098A, 0xD67}, + {0, 0x0990, 0x2716}, + {0, 0x0992, 0x2019}, + {0, 0x0994, 0xC61E}, + {0, 0x0996, 0x2012}, + {0, 0x0998, 0xC622}, + {0, 0x099a, 0x200E}, + {0, 0x099c, 0xC621}, + {0, 0x099e, 0x200A}, + {0, 0x098A, 0xD77}, + {0, 0x0990, 0xC620}, + {0, 0x0992, 0x2006}, + {0, 0x0994, 0xC62A}, + {0, 0x0996, 0x2002}, + {0, 0x0998, 0xC62B}, + {0, 0x099a, 0x30ED}, + {0, 0x099c, 0x8CC}, + {0, 0x099e, 0x3400}, + {0, 0x098A, 0xD87}, + {0, 0x0990, 0x30ED}, + {0, 0x0992, 0x34}, + {0, 0x0994, 0xBD6F}, + {0, 0x0996, 0xD184}, + {0, 0x0998, 0x330}, + {0, 0x099a, 0xED07}, + {0, 0x099c, 0xA60A}, + {0, 0x099e, 0x4848}, + {0, 0x098A, 0xD97}, + {0, 0x0990, 0x5FED}, + {0, 0x0992, 0x5EA}, + {0, 0x0994, 0x8AA}, + {0, 0x0996, 0x731}, + {0, 0x0998, 0xBD70}, + {0, 0x099a, 0x2130}, + {0, 0x099c, 0xC60A}, + {0, 0x099e, 0x3A35}, + {0, 0x098A, 0xDA7}, + {0, 0x0990, 0x3937}, + {0, 0x0992, 0x3C3C}, + {0, 0x0994, 0x3C34}, + {0, 0x0996, 0xDE2F}, + {0, 0x0998, 0xEE0E}, + {0, 0x099a, 0xAD00}, + {0, 0x099c, 0x7D13}, + {0, 0x099e, 0xEF27}, + {0, 0x098A, 0xDB7}, + {0, 0x0990, 0x7CCE}, + {0, 0x0992, 0x13E0}, + {0, 0x0994, 0x1E05}, + {0, 0x0996, 0x1060}, + {0, 0x0998, 0xE60E}, + {0, 0x099a, 0x4FC3}, + {0, 0x099c, 0x13F0}, + {0, 0x099e, 0x8FE6}, + {0, 0x098A, 0xDC7}, + {0, 0x0990, 0x30}, + {0, 0x0992, 0xE107}, + {0, 0x0994, 0x2216}, + {0, 0x0996, 0xF613}, + {0, 0x0998, 0xEE4F}, + {0, 0x099a, 0xC313}, + {0, 0x099c, 0xF38F}, + {0, 0x099e, 0xE600}, + {0, 0x098A, 0xDD7}, + {0, 0x0990, 0x30E1}, + {0, 0x0992, 0x725}, + {0, 0x0994, 0x7F6}, + {0, 0x0996, 0x13EE}, + {0, 0x0998, 0xC103}, + {0, 0x099a, 0x253C}, + {0, 0x099c, 0x7F13}, + {0, 0x099e, 0xEEF6}, + {0, 0x098A, 0xDE7}, + {0, 0x0990, 0x13EF}, + {0, 0x0992, 0xE706}, + {0, 0x0994, 0xCC13}, + {0, 0x0996, 0xF0ED}, + {0, 0x0998, 0x4CC}, + {0, 0x099a, 0x13F3}, + {0, 0x099c, 0x200F}, + {0, 0x099e, 0x7C13}, + {0, 0x098A, 0xDF7}, + {0, 0x0990, 0xEEEC}, + {0, 0x0992, 0x4C3}, + {0, 0x0994, 0x1}, + {0, 0x0996, 0xED04}, + {0, 0x0998, 0xEC02}, + {0, 0x099a, 0xC300}, + {0, 0x099c, 0x1ED}, + {0, 0x099e, 0x2F6}, + {0, 0x098A, 0xE07}, + {0, 0x0990, 0x13EE}, + {0, 0x0992, 0xE106}, + {0, 0x0994, 0x2412}, + {0, 0x0996, 0xEE04}, + {0, 0x0998, 0xE600}, + {0, 0x099a, 0x30E1}, + {0, 0x099c, 0x722}, + {0, 0x099e, 0xDFEE}, + {0, 0x098A, 0xE17}, + {0, 0x0990, 0x2E6}, + {0, 0x0992, 0x30}, + {0, 0x0994, 0xE107}, + {0, 0x0996, 0x25D6}, + {0, 0x0998, 0xDE49}, + {0, 0x099a, 0xEE08}, + {0, 0x099c, 0xAD00}, + {0, 0x099e, 0xCC13}, + {0, 0x098A, 0xE27}, + {0, 0x0990, 0xF630}, + {0, 0x0992, 0xED00}, + {0, 0x0994, 0xDE2F}, + {0, 0x0996, 0xEE10}, + {0, 0x0998, 0xCC13}, + {0, 0x099a, 0xFAAD}, + {0, 0x099c, 0x38}, + {0, 0x099e, 0x3838}, + {0, 0x098A, 0xE37}, + {0, 0x0990, 0x3839}, + {0, 0x098A, 0x1000}, + {0, 0x0990, 0xCC10}, + {0, 0x0992, 0x9BD}, + {0, 0x0994, 0x4224}, + {0, 0x0996, 0x7E10}, + {0, 0x0998, 0x9C6}, + {0, 0x099a, 0x1F7}, + {0, 0x099c, 0x18A}, + {0, 0x099e, 0xC606}, + {0, 0x098A, 0x1010}, + {0, 0x0990, 0xF701}, + {0, 0x0992, 0x8BDE}, + {0, 0x0994, 0x3F18}, + {0, 0x0996, 0xCE0B}, + {0, 0x0998, 0xF1CC}, + {0, 0x099a, 0x11}, + {0, 0x099c, 0xBDD7}, + {0, 0x099e, 0xCC}, + {0, 0x098A, 0x1020}, + {0, 0x0990, 0xBF1}, + {0, 0x0992, 0xDD3F}, + {0, 0x0994, 0xDE35}, + {0, 0x0996, 0x18CE}, + {0, 0x0998, 0xC03}, + {0, 0x099a, 0xCC00}, + {0, 0x099c, 0x3FBD}, + {0, 0x099e, 0xD700}, + {0, 0x098A, 0x1030}, + {0, 0x0990, 0xCC0C}, + {0, 0x0992, 0x3DD}, + {0, 0x0994, 0x35DE}, + {0, 0x0996, 0x4718}, + {0, 0x0998, 0xCE0C}, + {0, 0x099a, 0x43CC}, + {0, 0x099c, 0x15}, + {0, 0x099e, 0xBDD7}, + {0, 0x098A, 0x1040}, + {0, 0x0990, 0xCC}, + {0, 0x0992, 0xC43}, + {0, 0x0994, 0xDD47}, + {0, 0x0996, 0xFE00}, + {0, 0x0998, 0x3318}, + {0, 0x099a, 0xCE0C}, + {0, 0x099c, 0x59CC}, + {0, 0x099e, 0x9}, + {0, 0x098A, 0x1050}, + {0, 0x0990, 0xBDD7}, + {0, 0x0992, 0xCC}, + {0, 0x0994, 0xC59}, + {0, 0x0996, 0xFD00}, + {0, 0x0998, 0x33DE}, + {0, 0x099a, 0x4118}, + {0, 0x099c, 0xCE0C}, + {0, 0x099e, 0x63CC}, + {0, 0x098A, 0x1060}, + {0, 0x0990, 0xD}, + {0, 0x0992, 0xBDD7}, + {0, 0x0994, 0xCC}, + {0, 0x0996, 0xC63}, + {0, 0x0998, 0xDD41}, + {0, 0x099a, 0xFE00}, + {0, 0x099c, 0x3118}, + {0, 0x099e, 0xCE0C}, + {0, 0x098A, 0x1070}, + {0, 0x0990, 0x71CC}, + {0, 0x0992, 0x29}, + {0, 0x0994, 0xBDD7}, + {0, 0x0996, 0xCC}, + {0, 0x0998, 0xC71}, + {0, 0x099a, 0xFD00}, + {0, 0x099c, 0x31DE}, + {0, 0x099e, 0x3918}, + {0, 0x098A, 0x1080}, + {0, 0x0990, 0xCE0C}, + {0, 0x0992, 0x9BCC}, + {0, 0x0994, 0x23}, + {0, 0x0996, 0xBDD7}, + {0, 0x0998, 0xCC}, + {0, 0x099a, 0xC9B}, + {0, 0x099c, 0xDD39}, + {0, 0x099e, 0xDE49}, + {0, 0x098A, 0x1090}, + {0, 0x0990, 0x18CE}, + {0, 0x0992, 0xCBF}, + {0, 0x0994, 0xCC00}, + {0, 0x0996, 0xDBD}, + {0, 0x0998, 0xD700}, + {0, 0x099a, 0xCC0C}, + {0, 0x099c, 0xBFDD}, + {0, 0x099e, 0x49CC}, + {0, 0x098A, 0x10A0}, + {0, 0x0990, 0x1162}, + {0, 0x0992, 0xFD0B}, + {0, 0x0994, 0xFDCC}, + {0, 0x0996, 0xCE7}, + {0, 0x0998, 0xFD0C}, + {0, 0x099a, 0x1FCC}, + {0, 0x099c, 0x1245}, + {0, 0x099e, 0xFD0C}, + {0, 0x098A, 0x10B0}, + {0, 0x0990, 0x51CC}, + {0, 0x0992, 0x110B}, + {0, 0x0994, 0xFD0C}, + {0, 0x0996, 0x5BCC}, + {0, 0x0998, 0x1108}, + {0, 0x099a, 0xFD0C}, + {0, 0x099c, 0x65CC}, + {0, 0x099e, 0x10D0}, + {0, 0x098A, 0x10C0}, + {0, 0x0990, 0xFD0C}, + {0, 0x0992, 0x7BCC}, + {0, 0x0994, 0x12DE}, + {0, 0x0996, 0xFD0C}, + {0, 0x0998, 0xA7CC}, + {0, 0x099a, 0xDA8}, + {0, 0x099c, 0xFD0C}, + {0, 0x099e, 0xCB39}, + {0, 0x098A, 0x10D0}, + {0, 0x0990, 0x37DE}, + {0, 0x0992, 0x1DEC}, + {0, 0x0994, 0xC5F}, + {0, 0x0996, 0x8402}, + {0, 0x0998, 0x4416}, + {0, 0x099a, 0x4FF7}, + {0, 0x099c, 0xCCD}, + {0, 0x099e, 0xE60B}, + {0, 0x098A, 0x10E0}, + {0, 0x0990, 0xC407}, + {0, 0x0992, 0xF70C}, + {0, 0x0994, 0xCE7F}, + {0, 0x0996, 0x30C4}, + {0, 0x0998, 0xEC25}, + {0, 0x099a, 0xFD30}, + {0, 0x099c, 0xC5FC}, + {0, 0x099e, 0x6D6}, + {0, 0x098A, 0x10F0}, + {0, 0x0990, 0xFD30}, + {0, 0x0992, 0xC701}, + {0, 0x0994, 0xFC30}, + {0, 0x0996, 0xC0FD}, + {0, 0x0998, 0xBED}, + {0, 0x099a, 0xFC30}, + {0, 0x099c, 0xC2FD}, + {0, 0x099e, 0xBEF}, + {0, 0x098A, 0x1100}, + {0, 0x0990, 0x30E6}, + {0, 0x0992, 0xBD}, + {0, 0x0994, 0x5203}, + {0, 0x0996, 0x3139}, + {0, 0x0998, 0x7E9E}, + {0, 0x099a, 0x143C}, + {0, 0x099c, 0x3C3C}, + {0, 0x099e, 0x2101}, + {0, 0x098A, 0x1110}, + {0, 0x0990, 0xCC00}, + {0, 0x0992, 0x18BD}, + {0, 0x0994, 0x6FD1}, + {0, 0x0996, 0xC504}, + {0, 0x0998, 0x26F5}, + {0, 0x099a, 0xDC25}, + {0, 0x099c, 0x30ED}, + {0, 0x099e, 0x420}, + {0, 0x098A, 0x1120}, + {0, 0x0990, 0x12EE}, + {0, 0x0992, 0x43C}, + {0, 0x0994, 0x1838}, + {0, 0x0996, 0xE621}, + {0, 0x0998, 0x18E7}, + {0, 0x099a, 0xBE30}, + {0, 0x099c, 0xEE04}, + {0, 0x099e, 0xEC1D}, + {0, 0x098A, 0x1130}, + {0, 0x0990, 0x30ED}, + {0, 0x0992, 0x4EC}, + {0, 0x0994, 0x426}, + {0, 0x0996, 0xEACC}, + {0, 0x0998, 0x1A}, + {0, 0x099a, 0xED02}, + {0, 0x099c, 0xCCFB}, + {0, 0x099e, 0xFFED}, + {0, 0x098A, 0x1140}, + {0, 0x0990, 0xCC}, + {0, 0x0992, 0x400}, + {0, 0x0994, 0xBD70}, + {0, 0x0996, 0x6DCC}, + {0, 0x0998, 0x1A}, + {0, 0x099a, 0x30ED}, + {0, 0x099c, 0x2CC}, + {0, 0x099e, 0xFBFF}, + {0, 0x098A, 0x1150}, + {0, 0x0990, 0xED00}, + {0, 0x0992, 0x5F4F}, + {0, 0x0994, 0xBD70}, + {0, 0x0996, 0x6D5F}, + {0, 0x0998, 0xBD5B}, + {0, 0x099a, 0x17BD}, + {0, 0x099c, 0x558B}, + {0, 0x099e, 0x3838}, + {0, 0x098A, 0x1160}, + {0, 0x0990, 0x3839}, + {0, 0x0992, 0x3C3C}, + {0, 0x0994, 0xC640}, + {0, 0x0996, 0xF730}, + {0, 0x0998, 0xC4FC}, + {0, 0x099a, 0xBED}, + {0, 0x099c, 0xFD30}, + {0, 0x099e, 0xC0FC}, + {0, 0x098A, 0x1170}, + {0, 0x0990, 0xBEF}, + {0, 0x0992, 0xFD30}, + {0, 0x0994, 0xC2DE}, + {0, 0x0996, 0x1DEC}, + {0, 0x0998, 0x25FD}, + {0, 0x099a, 0x30C5}, + {0, 0x099c, 0x101}, + {0, 0x099e, 0x1FC}, + {0, 0x098A, 0x1180}, + {0, 0x0990, 0x30C2}, + {0, 0x0992, 0xFD06}, + {0, 0x0994, 0xD6EC}, + {0, 0x0996, 0xC5F}, + {0, 0x0998, 0x8402}, + {0, 0x099a, 0x4416}, + {0, 0x099c, 0x4F30}, + {0, 0x099e, 0xE703}, + {0, 0x098A, 0x1190}, + {0, 0x0990, 0xF10C}, + {0, 0x0992, 0xCD27}, + {0, 0x0994, 0x15F1}, + {0, 0x0996, 0xCCD}, + {0, 0x0998, 0x2309}, + {0, 0x099a, 0xFC06}, + {0, 0x099c, 0xD604}, + {0, 0x099e, 0xFD06}, + {0, 0x098A, 0x11A0}, + {0, 0x0990, 0xD620}, + {0, 0x0992, 0x7FC}, + {0, 0x0994, 0x6D6}, + {0, 0x0996, 0x5FD}, + {0, 0x0998, 0x6D6}, + {0, 0x099a, 0xDE1D}, + {0, 0x099c, 0xE60B}, + {0, 0x099e, 0xC407}, + {0, 0x098A, 0x11B0}, + {0, 0x0990, 0x30E7}, + {0, 0x0992, 0x2F1}, + {0, 0x0994, 0xCCE}, + {0, 0x0996, 0x272C}, + {0, 0x0998, 0x7D0C}, + {0, 0x099a, 0xCE27}, + {0, 0x099c, 0x275D}, + {0, 0x099e, 0x2724}, + {0, 0x098A, 0x11C0}, + {0, 0x0990, 0x7F30}, + {0, 0x0992, 0xC4FC}, + {0, 0x0994, 0x6D6}, + {0, 0x0996, 0xFD30}, + {0, 0x0998, 0xC5F6}, + {0, 0x099a, 0xCCE}, + {0, 0x099c, 0x4FFD}, + {0, 0x099e, 0x30C7}, + {0, 0x098A, 0x11D0}, + {0, 0x0990, 0xC640}, + {0, 0x0992, 0xF730}, + {0, 0x0994, 0xC4E6}, + {0, 0x0996, 0x24F}, + {0, 0x0998, 0xFD30}, + {0, 0x099a, 0xC501}, + {0, 0x099c, 0x101}, + {0, 0x099e, 0xFC30}, + {0, 0x098A, 0x11E0}, + {0, 0x0990, 0xC2FD}, + {0, 0x0992, 0x6D6}, + {0, 0x0994, 0x7D06}, + {0, 0x0996, 0xCB27}, + {0, 0x0998, 0x2EC6}, + {0, 0x099a, 0x40F7}, + {0, 0x099c, 0x30C4}, + {0, 0x099e, 0xFC06}, + {0, 0x098A, 0x11F0}, + {0, 0x0990, 0xC104}, + {0, 0x0992, 0xF306}, + {0, 0x0994, 0xD6ED}, + {0, 0x0996, 0x5F}, + {0, 0x0998, 0x6D00}, + {0, 0x099a, 0x2A01}, + {0, 0x099c, 0x5317}, + {0, 0x099e, 0xFD30}, + {0, 0x098A, 0x1200}, + {0, 0x0990, 0xC0EC}, + {0, 0x0992, 0xFD}, + {0, 0x0994, 0x30C2}, + {0, 0x0996, 0xFC06}, + {0, 0x0998, 0xC1FD}, + {0, 0x099a, 0x30C5}, + {0, 0x099c, 0x101}, + {0, 0x099e, 0x1FC}, + {0, 0x098A, 0x1210}, + {0, 0x0990, 0x30C2}, + {0, 0x0992, 0xFD06}, + {0, 0x0994, 0xC720}, + {0, 0x0996, 0x227F}, + {0, 0x0998, 0x30C4}, + {0, 0x099a, 0xDE1D}, + {0, 0x099c, 0xEC25}, + {0, 0x099e, 0xFD30}, + {0, 0x098A, 0x1220}, + {0, 0x0990, 0xC5FC}, + {0, 0x0992, 0x6D6}, + {0, 0x0994, 0xFD30}, + {0, 0x0996, 0xC701}, + {0, 0x0998, 0xFC30}, + {0, 0x099a, 0xC0FD}, + {0, 0x099c, 0x6D0}, + {0, 0x099e, 0xFC30}, + {0, 0x098A, 0x1230}, + {0, 0x0990, 0xC2FD}, + {0, 0x0992, 0x6D2}, + {0, 0x0994, 0xEC25}, + {0, 0x0996, 0xFD06}, + {0, 0x0998, 0xC3BD}, + {0, 0x099a, 0x953C}, + {0, 0x099c, 0xDE3F}, + {0, 0x099e, 0xEE10}, + {0, 0x098A, 0x1240}, + {0, 0x0990, 0xAD00}, + {0, 0x0992, 0x3838}, + {0, 0x0994, 0x3930}, + {0, 0x0996, 0x8FC3}, + {0, 0x0998, 0xFFE9}, + {0, 0x099a, 0x8F35}, + {0, 0x099c, 0xBDAD}, + {0, 0x099e, 0x1530}, + {0, 0x098A, 0x1250}, + {0, 0x0990, 0x6F16}, + {0, 0x0992, 0x18DE}, + {0, 0x0994, 0x1918}, + {0, 0x0996, 0x8FC3}, + {0, 0x0998, 0x14B}, + {0, 0x099a, 0x188F}, + {0, 0x099c, 0x18EC}, + {0, 0x099e, 0xFD}, + {0, 0x098A, 0x1260}, + {0, 0x0990, 0x50E}, + {0, 0x0992, 0x18EC}, + {0, 0x0994, 0x2FD}, + {0, 0x0996, 0x510}, + {0, 0x0998, 0xE616}, + {0, 0x099a, 0x4FED}, + {0, 0x099c, 0x418}, + {0, 0x099e, 0x8FC3}, + {0, 0x098A, 0x1270}, + {0, 0x0990, 0xFFCB}, + {0, 0x0992, 0xE304}, + {0, 0x0994, 0x8FE6}, + {0, 0x0996, 0xF7}, + {0, 0x0998, 0x514}, + {0, 0x099a, 0x18DE}, + {0, 0x099c, 0x1930}, + {0, 0x099e, 0xE616}, + {0, 0x098A, 0x1280}, + {0, 0x0990, 0x4FED}, + {0, 0x0992, 0x418}, + {0, 0x0994, 0x8FC3}, + {0, 0x0996, 0x119}, + {0, 0x0998, 0xE304}, + {0, 0x099a, 0x8FE6}, + {0, 0x099c, 0xF7}, + {0, 0x099e, 0x515}, + {0, 0x098A, 0x1290}, + {0, 0x0990, 0xFC05}, + {0, 0x0992, 0x5BFD}, + {0, 0x0994, 0x512}, + {0, 0x0996, 0xDE37}, + {0, 0x0998, 0xEE08}, + {0, 0x099a, 0xAD00}, + {0, 0x099c, 0x30E6}, + {0, 0x099e, 0x164F}, + {0, 0x098A, 0x12A0}, + {0, 0x0990, 0x5ED}, + {0, 0x0992, 0x48F}, + {0, 0x0994, 0xC300}, + {0, 0x0996, 0x630}, + {0, 0x0998, 0xE304}, + {0, 0x099a, 0x8FF6}, + {0, 0x099c, 0x516}, + {0, 0x099e, 0x4FED}, + {0, 0x098A, 0x12B0}, + {0, 0x0990, 0x30}, + {0, 0x0992, 0x6C16}, + {0, 0x0994, 0xE616}, + {0, 0x0996, 0xC103}, + {0, 0x0998, 0x2598}, + {0, 0x099a, 0xCC32}, + {0, 0x099c, 0x8EED}, + {0, 0x099e, 0xEC}, + {0, 0x098A, 0x12C0}, + {0, 0x0990, 0x6BD}, + {0, 0x0992, 0x7021}, + {0, 0x0994, 0xCC32}, + {0, 0x0996, 0x6C30}, + {0, 0x0998, 0xED02}, + {0, 0x099a, 0xCCF8}, + {0, 0x099c, 0xED}, + {0, 0x099e, 0xA6}, + {0, 0x098A, 0x12D0}, + {0, 0x0990, 0x9E3}, + {0, 0x0992, 0xA84}, + {0, 0x0994, 0x7BD}, + {0, 0x0996, 0x706D}, + {0, 0x0998, 0x30C6}, + {0, 0x099a, 0x173A}, + {0, 0x099c, 0x3539}, + {0, 0x099e, 0x3CBD}, + {0, 0x098A, 0x12E0}, + {0, 0x0990, 0x776D}, + {0, 0x0992, 0xCC32}, + {0, 0x0994, 0x5C30}, + {0, 0x0996, 0xED00}, + {0, 0x0998, 0xFC13}, + {0, 0x099a, 0x8683}, + {0, 0x099c, 0x1}, + {0, 0x099e, 0xBD70}, + {0, 0x098A, 0x12F0}, + {0, 0x0990, 0x21CC}, + {0, 0x0992, 0x325E}, + {0, 0x0994, 0x30ED}, + {0, 0x0996, 0xFC}, + {0, 0x0998, 0x1388}, + {0, 0x099a, 0x8300}, + {0, 0x099c, 0x1BD}, + {0, 0x099e, 0x7021}, + {0, 0x098A, 0x1300}, + {0, 0x0990, 0x3839}, + {0, 0x098E, 0x0010}, + {0, 0x0990, 0x1000}, + {0, 0x098E, 0x0003}, + {100, 0x0990, 0x0004} +}; + +mt9t111_regs def_regs1[] = { + {0, 0x001A, 0x0218}, + {0, 0x001E, 0x0777}, + {0, 0x3084, 0x2409}, + {0, 0x3092, 0x0A49}, + {0, 0x3094, 0x4949}, + {0, 0x3096, 0x4950}, + {0, 0x0018, 0x402D}, + {100, 0x0018, 0x402C}, + {0, 0x098E, 0x6800}, + {0, 0x0990, 0x0280}, + {0, 0x098E, 0x6802}, + {0, 0x0990, 0x01E0}, + {0, 0x098E, 0xE88E}, + {0, 0x0990, 0x0000}, + {0, 0x098E, 0x68A0}, + {0, 0x0990, 0x082D}, + {0, 0x098E, 0x4802}, + {0, 0x0990, 0x0000}, + {0, 0x098E, 0x4804}, + {0, 0x0990, 0x0000}, + {0, 0x098E, 0x4806}, + {0, 0x0990, 0x060D}, + {0, 0x098E, 0x4808}, + {0, 0x0990, 0x080D}, + {0, 0x098E, 0x480A}, + {0, 0x0990, 0x0111}, + {0, 0x098E, 0x480C}, + {0, 0x0990, 0x046C}, + {0, 0x098E, 0x480F}, + {0, 0x0990, 0x00CC}, + {0, 0x098E, 0x4811}, + {0, 0x0990, 0x0381}, + {0, 0x098E, 0x4813}, + {0, 0x0990, 0x024F}, + {0, 0x098E, 0x481D}, + {0, 0x0990, 0x05AE}, + {0, 0x098E, 0x481F}, + {0, 0x0990, 0x05D0}, + {0, 0x098E, 0x4825}, + {0, 0x0990, 0x07AC}, + {0, 0x098E, 0x6C00}, + {0, 0x0990, 0x0800}, + {0, 0x098E, 0x6C02}, + {0, 0x0990, 0x0600}, + {0, 0x098E, 0xEC8E}, + {0, 0x0990, 0x0000}, + {0, 0x098E, 0x6CA0}, + {0, 0x0990, 0x082D}, + {0, 0x098E, 0x484A}, + {0, 0x0990, 0x0000}, + {0, 0x098E, 0x484C}, + {0, 0x0990, 0x0000}, + {0, 0x098E, 0x484E}, + {0, 0x0990, 0x060D}, + {0, 0x098E, 0x4850}, + {0, 0x0990, 0x080D}, + {0, 0x098E, 0x4852}, + {0, 0x0990, 0x0111}, + {0, 0x098E, 0x4854}, + {0, 0x0990, 0x146C}, + {0, 0x098E, 0x4857}, + {0, 0x0990, 0x00CC}, + {0, 0x098E, 0x4859}, + {0, 0x0990, 0x0381}, + {0, 0x098E, 0x485B}, + {0, 0x0990, 0x024F}, + {0, 0x098E, 0x4865}, + {0, 0x0990, 0x05AE}, + {0, 0x098E, 0x4867}, + {0, 0x0990, 0x05D0}, + {0, 0x098E, 0x486D}, + {0, 0x0990, 0x07AC}, + {0, 0x098E, 0xC8A5}, + {0, 0x0990, 0x001D}, + {0, 0x098E, 0xC8A6}, + {0, 0x0990, 0x0020}, + {0, 0x098E, 0xC8A7}, + {0, 0x0990, 0x0023}, + {0, 0x098E, 0xC8A8}, + {0, 0x0990, 0x0026}, + {0, 0x098E, 0xC844}, + {0, 0x0990, 0x0091}, + {0, 0x098E, 0xC92F}, + {0, 0x0990, 0x0000}, + {0, 0x098E, 0xC845}, + {0, 0x0990, 0x0079}, + {0, 0x098E, 0xC92D}, + {0, 0x0990, 0x0000}, + {0, 0x098E, 0xC88C}, + {0, 0x0990, 0x0091}, + {0, 0x098E, 0xC930}, + {0, 0x0990, 0x0000}, + {0, 0x098E, 0xC88D}, + {0, 0x0990, 0x0079}, + {0, 0x098E, 0xC92E}, + {0, 0x0990, 0x0000}, + {0, 0x098E, 0xA002}, + {0, 0x0990, 0x0010}, + {0, 0x098E, 0xA009}, + {0, 0x0990, 0x0002}, + {0, 0x098E, 0xA00A}, + {0, 0x0990, 0x0003}, + {0, 0x098E, 0xA00C}, + {0, 0x0990, 0x000A}, + {0, 0x098E, 0x4846}, + {0, 0x0990, 0x0014}, + {0, 0x098E, 0x68AA}, + {0, 0x0990, 0x0278}, + {0, 0x098E, 0x488E}, + {0, 0x0990, 0x0014}, + {0, 0x098E, 0x6CAA}, + {0, 0x0990, 0x0218}, + {0, 0x098E, 0x8400}, + {0, 0x0990, 0x0006}, + {0, 0x098E, 0x8400}, + {0, 0x0990, 0x0005}, + {0, 0x3C20, 0x0001}, + {0, 0x364A, 0x7D2F}, + {0, 0x364C, 0x79EB}, + {0, 0x364E, 0x18D2}, + {0, 0x3650, 0x9F8F}, + {0, 0x3652, 0xA7D2}, + {0, 0x368A, 0x460C}, + {0, 0x368C, 0x14F0}, + {0, 0x368E, 0x946F}, + {0, 0x3690, 0xC471}, + {0, 0x3692, 0x04B1}, + {0, 0x36CA, 0x0433}, + {0, 0x36CC, 0x680D}, + {0, 0x36CE, 0xEEF3}, + {0, 0x36D0, 0x4850}, + {0, 0x36D2, 0xF233}, + {0, 0x370A, 0xB2AF}, + {0, 0x370C, 0x2CF0}, + {0, 0x370E, 0x3F10}, + {0, 0x3710, 0xC673}, + {0, 0x3712, 0xA972}, + {0, 0x374A, 0x0590}, + {0, 0x374C, 0xAFB3}, + {0, 0x374E, 0x93D7}, + {0, 0x3750, 0x8D12}, + {0, 0x3752, 0x2539}, + {0, 0x3640, 0x0350}, + {0, 0x3642, 0x322C}, + {0, 0x3644, 0x77D1}, + {0, 0x3646, 0xA26F}, + {0, 0x3648, 0xC872}, + {0, 0x3680, 0x0C4C}, + {0, 0x3682, 0x9510}, + {0, 0x3684, 0x110E}, + {0, 0x3686, 0x4331}, + {0, 0x3688, 0xC1CF}, + {0, 0x36C0, 0x6152}, + {0, 0x36C2, 0x038E}, + {0, 0x36C4, 0x9AF4}, + {0, 0x36C6, 0xE12F}, + {0, 0x36C8, 0x09F3}, + {0, 0x3700, 0xC5AF}, + {0, 0x3702, 0xCA90}, + {0, 0x3704, 0x5D0F}, + {0, 0x3706, 0x3293}, + {0, 0x3708, 0x2B92}, + {0, 0x3740, 0xC590}, + {0, 0x3742, 0x8133}, + {0, 0x3744, 0xE0F6}, + {0, 0x3746, 0x0254}, + {0, 0x3748, 0x10B9}, + {0, 0x3654, 0x7F8F}, + {0, 0x3656, 0x6F6C}, + {0, 0x3658, 0x5971}, + {0, 0x365A, 0x9A0F}, + {0, 0x365C, 0xA1B2}, + {0, 0x3694, 0xB00C}, + {0, 0x3696, 0xEBCF}, + {0, 0x3698, 0x06AD}, + {0, 0x369A, 0x4D31}, + {0, 0x369C, 0x2A4E}, + {0, 0x36D4, 0x4752}, + {0, 0x36D6, 0x724D}, + {0, 0x36D8, 0xAD34}, + {0, 0x36DA, 0x1350}, + {0, 0x36DC, 0x4E94}, + {0, 0x3714, 0xA06E}, + {0, 0x3716, 0x9152}, + {0, 0x3718, 0x1F53}, + {0, 0x371A, 0x3933}, + {0, 0x371C, 0xBA94}, + {0, 0x3754, 0x1233}, + {0, 0x3756, 0xA032}, + {0, 0x3758, 0xE936}, + {0, 0x375A, 0xBE34}, + {0, 0x375C, 0x02D9}, + {0, 0x365E, 0x7DEF}, + {0, 0x3660, 0x434B}, + {0, 0x3662, 0x69F1}, + {0, 0x3664, 0x8A0F}, + {0, 0x3666, 0xBDB2}, + {0, 0x369E, 0x290D}, + {0, 0x36A0, 0x42CF}, + {0, 0x36A2, 0xDC6D}, + {0, 0x36A4, 0x91B1}, + {0, 0x36A6, 0x9DE9}, + {0, 0x36DE, 0x70B2}, + {0, 0x36E0, 0x02AC}, + {0, 0x36E2, 0x9714}, + {0, 0x36E4, 0xF3CF}, + {0, 0x36E6, 0x6BD1}, + {0, 0x371E, 0xE42E}, + {0, 0x3720, 0x1D32}, + {0, 0x3722, 0xCC31}, + {0, 0x3724, 0xAE94}, + {0, 0x3726, 0x6413}, + {0, 0x375E, 0xE290}, + {0, 0x3760, 0x8F53}, + {0, 0x3762, 0xF936}, + {0, 0x3764, 0x4614}, + {0, 0x3766, 0x1B59}, + {0, 0x3784, 0x0404}, + {0, 0x3782, 0x0304}, + {0, 0x3210, 0x01B8}, + {0, 0x098E, 0xC913}, + {0, 0x0990, 0x000A}, + {0, 0x098E, 0x686B}, + {0, 0x0990, 0x05DC}, + {0, 0x098E, 0x686D}, + {0, 0x0990, 0x0BB8}, + {0, 0x098E, 0x6C6B}, + {0, 0x0990, 0x05DC}, + {0, 0x098E, 0x6C6D}, + {0, 0x0990, 0x0BB8}, + {0, 0x098E, 0x3439}, + {0, 0x0990, 0x05DC}, + {0, 0x098E, 0x343B}, + {0, 0x0990, 0x0BB8}, + {0, 0x098E, 0x4926}, + {0, 0x0990, 0x0001}, + {0, 0x098E, 0x4928}, + {0, 0x0990, 0x0002}, + {0, 0x098E, 0x492A}, + {0, 0x0990, 0x0656}, + {0, 0x098E, 0x4D26}, + {0, 0x0990, 0x0001}, + {0, 0x098E, 0x4D28}, + {0, 0x0990, 0x0002}, + {0, 0x098E, 0x4D2A}, + {0, 0x0990, 0x0656}, + {0, 0x33F4, 0x040B}, + {0, 0x098E, 0xC916}, + {0, 0x0990, 0x0014}, + {0, 0x098E, 0xC919}, + {0, 0x0990, 0x0028}, + {0, 0x098E, 0xC917}, + {0, 0x0990, 0x0004}, + {0, 0x098E, 0xC918}, + {0, 0x0990, 0x0000}, + {0, 0x098E, 0xC91A}, + {0, 0x0990, 0x0001}, + {0, 0x098E, 0xC91B}, + {0, 0x0990, 0x0009}, + {0, 0x326C, 0x0C00}, + {0, 0x098E, 0x494B}, + {0, 0x0990, 0x0042}, + {0, 0x098E, 0x494D}, + {0, 0x0990, 0x012C}, + {0, 0x098E, 0xC91E}, + {0, 0x0990, 0x0012}, + {0, 0x098E, 0xC91F}, + {0, 0x0990, 0x000A}, + {0, 0x098E, 0xC920}, + {0, 0x0990, 0x0012}, + {0, 0x098E, 0xC921}, + {0, 0x0990, 0x000A}, + {0, 0x098E, 0xC922}, + {0, 0x0990, 0x0026}, + {0, 0x098E, 0xC923}, + {0, 0x0990, 0x001E}, + {0, 0x098E, 0xC924}, + {0, 0x0990, 0x0026}, + {0, 0x098E, 0xC925}, + {0, 0x0990, 0x0026}, + {0, 0x098E, 0xBC02}, + {0, 0x0990, 0x0003}, + {0, 0x098E, 0xBC05}, + {0, 0x0990, 0x000E}, + {0, 0x098E, 0xC950}, + {0, 0x0990, 0x0064}, + {0, 0x098E, 0xC94F}, + {0, 0x0990, 0x0038}, + {0, 0x098E, 0xC952}, + {0, 0x0990, 0x0064}, + {0, 0x098E, 0xC951}, + {0, 0x0990, 0x0051}, + {0, 0x098E, 0xC954}, + {0, 0x0990, 0x0010}, + {0, 0x098E, 0xC953}, + {0, 0x0990, 0x0020}, + {0, 0x098E, 0xC956}, + {0, 0x0990, 0x0010}, + {0, 0x098E, 0xC955}, + {0, 0x0990, 0x0020}, + {0, 0x098E, 0xC958}, + {0, 0x0990, 0x0020}, + {0, 0x098E, 0xC957}, + {0, 0x0990, 0x0014}, + {0, 0x098E, 0xC95A}, + {0, 0x0990, 0x001D}, + {0, 0x098E, 0xC959}, + {0, 0x0990, 0x0020}, + {0, 0x098E, 0xC95C}, + {0, 0x0990, 0x000C}, + {0, 0x098E, 0xC95B}, + {0, 0x0990, 0x0008}, + {0, 0x098E, 0xC95E}, + {0, 0x0990, 0x000C}, + {0, 0x098E, 0xC95D}, + {0, 0x0990, 0x0008}, + {0, 0x098E, 0xC95F}, + {0, 0x0990, 0x0064}, + {0, 0x098E, 0x48DC}, + {0, 0x0990, 0x004D}, + {0, 0x098E, 0x48DE}, + {0, 0x0990, 0x0096}, + {0, 0x098E, 0x48E0}, + {0, 0x0990, 0x001D}, + {0, 0x098E, 0x48E2}, + {0, 0x0990, 0x004D}, + {0, 0x098E, 0x48E4}, + {0, 0x0990, 0x0096}, + {0, 0x098E, 0x48E6}, + {0, 0x0990, 0x001D}, + {0, 0x098E, 0x48E8}, + {0, 0x0990, 0x004D}, + {0, 0x098E, 0x48EA}, + {0, 0x0990, 0x0096}, + {0, 0x098E, 0x48EC}, + {0, 0x0990, 0x001D}, + {0, 0x098E, 0xDC2A}, + {0, 0x0990, 0x000B}, + {0, 0x098E, 0xDC2B}, + {0, 0x0990, 0x0017}, + {0, 0x098E, 0xBC0B}, + {0, 0x0990, 0x0000}, + {0, 0x098E, 0xBC0C}, + {0, 0x0990, 0x001B}, + {0, 0x098E, 0xBC0D}, + {0, 0x0990, 0x002A}, + {0, 0x098E, 0xBC0E}, + {0, 0x0990, 0x003E}, + {0, 0x098E, 0xBC0F}, + {0, 0x0990, 0x005A}, + {0, 0x098E, 0xBC10}, + {0, 0x0990, 0x0070}, + {0, 0x098E, 0xBC11}, + {0, 0x0990, 0x0081}, + {0, 0x098E, 0xBC12}, + {0, 0x0990, 0x0090}, + {0, 0x098E, 0xBC13}, + {0, 0x0990, 0x009E}, + {0, 0x098E, 0xBC14}, + {0, 0x0990, 0x00AB}, + {0, 0x098E, 0xBC15}, + {0, 0x0990, 0x00B6}, + {0, 0x098E, 0xBC16}, + {0, 0x0990, 0x00C1}, + {0, 0x098E, 0xBC17}, + {0, 0x0990, 0x00CB}, + {0, 0x098E, 0xBC18}, + {0, 0x0990, 0x00D5}, + {0, 0x098E, 0xBC19}, + {0, 0x0990, 0x00DE}, + {0, 0x098E, 0xBC1A}, + {0, 0x0990, 0x00E7}, + {0, 0x098E, 0xBC1B}, + {0, 0x0990, 0x00EF}, + {0, 0x098E, 0xBC1C}, + {0, 0x0990, 0x00F7}, + {0, 0x098E, 0xBC1D}, + {0, 0x0990, 0x00FF}, + {0, 0x098E, 0xBC1E}, + {0, 0x0990, 0x0000}, + {0, 0x098E, 0xBC1F}, + {0, 0x0990, 0x001B}, + {0, 0x098E, 0xBC20}, + {0, 0x0990, 0x002A}, + {0, 0x098E, 0xBC21}, + {0, 0x0990, 0x003E}, + {0, 0x098E, 0xBC22}, + {0, 0x0990, 0x005A}, + {0, 0x098E, 0xBC23}, + {0, 0x0990, 0x0070}, + {0, 0x098E, 0xBC24}, + {0, 0x0990, 0x0081}, + {0, 0x098E, 0xBC25}, + {0, 0x0990, 0x0090}, + {0, 0x098E, 0xBC26}, + {0, 0x0990, 0x009E}, + {0, 0x098E, 0xBC27}, + {0, 0x0990, 0x00AB}, + {0, 0x098E, 0xBC28}, + {0, 0x0990, 0x00B6}, + {0, 0x098E, 0xBC29}, + {0, 0x0990, 0x00C1}, + {0, 0x098E, 0xBC2A}, + {0, 0x0990, 0x00CB}, + {0, 0x098E, 0xBC2B}, + {0, 0x0990, 0x00D5}, + {0, 0x098E, 0xBC2C}, + {0, 0x0990, 0x00DE}, + {0, 0x098E, 0xBC2D}, + {0, 0x0990, 0x00E7}, + {0, 0x098E, 0xBC2E}, + {0, 0x0990, 0x00EF}, + {0, 0x098E, 0xBC2F}, + {0, 0x0990, 0x00F7}, + {0, 0x098E, 0xBC30}, + {0, 0x0990, 0x00FF}, + {0, 0x098E, 0xBC31}, + {0, 0x0990, 0x0000}, + {0, 0x098E, 0xBC32}, + {0, 0x0990, 0x000D}, + {0, 0x098E, 0xBC33}, + {0, 0x0990, 0x0019}, + {0, 0x098E, 0xBC34}, + {0, 0x0990, 0x0030}, + {0, 0x098E, 0xBC35}, + {0, 0x0990, 0x0056}, + {0, 0x098E, 0xBC36}, + {0, 0x0990, 0x0070}, + {0, 0x098E, 0xBC37}, + {0, 0x0990, 0x0081}, + {0, 0x098E, 0xBC38}, + {0, 0x0990, 0x0090}, + {0, 0x098E, 0xBC39}, + {0, 0x0990, 0x009E}, + {0, 0x098E, 0xBC3A}, + {0, 0x0990, 0x00AB}, + {0, 0x098E, 0xBC3B}, + {0, 0x0990, 0x00B6}, + {0, 0x098E, 0xBC3C}, + {0, 0x0990, 0x00C1}, + {0, 0x098E, 0xBC3D}, + {0, 0x0990, 0x00CB}, + {0, 0x098E, 0xBC3E}, + {0, 0x0990, 0x00D5}, + {0, 0x098E, 0xBC3F}, + {0, 0x0990, 0x00DE}, + {0, 0x098E, 0xBC40}, + {0, 0x0990, 0x00E7}, + {0, 0x098E, 0xBC41}, + {0, 0x0990, 0x00EF}, + {0, 0x098E, 0xBC42}, + {0, 0x0990, 0x00F7}, + {0, 0x098E, 0xBC43}, + {0, 0x0990, 0x00FF}, + {0, 0x098E, 0x6865}, + {0, 0x0990, 0x00E0}, + {0, 0x098E, 0x6867}, + {0, 0x0990, 0x00F4}, + {0, 0x098E, 0x8400}, + {0, 0x0990, 0x0006}, + {0, 0x098E, 0xBC4A}, + {0, 0x0990, 0x007F}, + {0, 0x098E, 0xBC4B}, + {0, 0x0990, 0x007F}, + {0, 0x098E, 0xBC4C}, + {0, 0x0990, 0x007F}, + {0, 0x3542, 0x0010}, + {0, 0x3544, 0x0030}, + {0, 0x3546, 0x0040}, + {0, 0x3548, 0x0080}, + {0, 0x354A, 0x0100}, + {0, 0x354C, 0x0200}, + {0, 0x354E, 0x0300}, + {0, 0x3550, 0x0010}, + {0, 0x3552, 0x0030}, + {0, 0x3554, 0x0040}, + {0, 0x3556, 0x0080}, + {0, 0x3558, 0x012C}, + {0, 0x355A, 0x0320}, + {0, 0x355C, 0x03E8}, + {0, 0x3560, 0x0040}, + {0, 0x3562, 0x0020}, + {0, 0x3564, 0x0040}, + {0, 0x3566, 0x0010}, + {0, 0x3568, 0x0008}, + {0, 0x356A, 0x0004}, + {0, 0x356C, 0x0004}, + {0, 0x356E, 0x0004}, + {0, 0x098E, 0x3C4D}, + {0, 0x0990, 0x0DAC}, + {0, 0x098E, 0x3C4F}, + {0, 0x0990, 0x148A}, + {0, 0x098E, 0xC911}, + {0, 0x0990, 0x00C8}, + {0, 0x098E, 0xC8F4}, + {0, 0x0990, 0x0004}, + {0, 0x098E, 0xC8F5}, + {0, 0x0990, 0x0002}, + {0, 0x098E, 0x48F6}, + {0, 0x0990, 0x3B4D}, + {0, 0x098E, 0x48F8}, + {0, 0x0990, 0x6380}, + {0, 0x098E, 0x48FA}, + {0, 0x0990, 0x9B18}, + {0, 0x098E, 0x48FC}, + {0, 0x0990, 0x5D51}, + {0, 0x098E, 0x48FE}, + {0, 0x0990, 0xEDE8}, + {0, 0x098E, 0x4900}, + {0, 0x0990, 0xE515}, + {0, 0x098E, 0x4902}, + {0, 0x0990, 0xBFF4}, + {0, 0x098E, 0x4904}, + {0, 0x0990, 0x001E}, + {0, 0x098E, 0x4906}, + {0, 0x0990, 0x0026}, + {0, 0x098E, 0x4908}, + {0, 0x0990, 0x0033}, + {0, 0x098E, 0xE84A}, + {0, 0x0990, 0x0083}, + {0, 0x098E, 0xE84D}, + {0, 0x0990, 0x0083}, + {0, 0x098E, 0xE84C}, + {0, 0x0990, 0x0080}, + {0, 0x098E, 0xE84F}, + {0, 0x0990, 0x0080}, + {0, 0x098E, 0x8400}, + {0, 0x0990, 0x0006}, + {0, 0x098E, 0x48B0}, + {0, 0x0990, 0x0180}, + {0, 0x098E, 0x48B2}, + {0, 0x0990, 0xFF7A}, + {0, 0x098E, 0x48B4}, + {0, 0x0990, 0x0018}, + {0, 0x098E, 0x48B6}, + {0, 0x0990, 0xFFCA}, + {0, 0x098E, 0x48B8}, + {0, 0x0990, 0x017C}, + {0, 0x098E, 0x48BA}, + {0, 0x0990, 0xFFCC}, + {0, 0x098E, 0x48BC}, + {0, 0x0990, 0x000C}, + {0, 0x098E, 0x48BE}, + {0, 0x0990, 0xFF1F}, + {0, 0x098E, 0x48C0}, + {0, 0x0990, 0x01E8}, + {0, 0x098E, 0x48C2}, + {0, 0x0990, 0x0020}, + {0, 0x098E, 0x48C4}, + {0, 0x0990, 0x0044}, + {0, 0x098E, 0x48C6}, + {0, 0x0990, 0x0079}, + {0, 0x098E, 0x48C8}, + {0, 0x0990, 0xFFAD}, + {0, 0x098E, 0x48CA}, + {0, 0x0990, 0xFFE2}, + {0, 0x098E, 0x48CC}, + {0, 0x0990, 0x0033}, + {0, 0x098E, 0x48CE}, + {0, 0x0990, 0x002A}, + {0, 0x098E, 0x48D0}, + {0, 0x0990, 0xFFAA}, + {0, 0x098E, 0x48D2}, + {0, 0x0990, 0x0017}, + {0, 0x098E, 0x48D4}, + {0, 0x0990, 0x004B}, + {0, 0x098E, 0x48D6}, + {0, 0x0990, 0xFFA5}, + {0, 0x098E, 0x48D8}, + {0, 0x0990, 0x0015}, + {0, 0x098E, 0x48DA}, + {0, 0x0990, 0xFFE2}, + {0, 0x35A2, 0x0014}, + {0, 0x098E, 0xC949}, + {0, 0x0990, 0x0024}, + {0, 0x35A4, 0x0596}, + {0, 0x098E, 0xC94A}, + {0, 0x0990, 0x0062}, + {0, 0x098E, 0xC948}, + {0, 0x0990, 0x0006}, + {0, 0x098E, 0xC914}, + {0, 0x0990, 0x0000}, + {0, 0x098E, 0xC915}, + {0, 0x0990, 0x00FF}, + {0, 0x098E, 0xE86F}, + {0, 0x0990, 0x0060}, + {0, 0x098E, 0xE870}, + {0, 0x0990, 0x003C}, + {0, 0x098E, 0xEC6F}, + {0, 0x0990, 0x0060}, + {0, 0x098E, 0xEC70}, + {0, 0x0990, 0x003C}, + {0, 0x098E, 0xE883}, + {0, 0x0990, 0x0000}, + {0, 0x098E, 0xEC83}, + {0, 0x0990, 0x0000}, + {0, 0x098E, 0x8400}, + {0, 0x0990, 0x0006}, + {0, 0x098E, 0xE885}, + {0, 0x0990, 0x001E}, + {0, 0x098E, 0xE886}, + {0, 0x0990, 0x00D8}, + {0, 0x098E, 0xEC85}, + {0, 0x0990, 0x001E}, + {0, 0x098E, 0xEC86}, + {0, 0x0990, 0x00D8}, + {0, 0x098E, 0xE884}, + {0, 0x0990, 0x005C}, + {0, 0x098E, 0xEC84}, + {0, 0x0990, 0x005C}, + {0, 0x098E, 0x490A}, + {0, 0x0990, 0x0666}, + {0, 0x098E, 0x490C}, + {0, 0x0990, 0x0140}, + {0, 0x098E, 0x6857}, + {0, 0x0990, 0x0014}, + {0, 0x098E, 0x685C}, + {0, 0x0990, 0x0005}, + {0, 0x098E, 0x490E}, + {0, 0x0990, 0x00A4}, + {0, 0x098E, 0xB43D}, + {0, 0x0990, 0x0031}, + {0, 0x098E, 0xB43E}, + {0, 0x0990, 0x001B}, + {0, 0x098E, 0xB43F}, + {0, 0x0990, 0x0028}, + {0, 0x098E, 0xB440}, + {0, 0x0990, 0x0003}, + {0, 0x098E, 0xB441}, + {0, 0x0990, 0x00CD}, + {0, 0x098E, 0xB442}, + {0, 0x0990, 0x0064}, + {0, 0x098E, 0xB443}, + {0, 0x0990, 0x000F}, + {0, 0x098E, 0xB444}, + {0, 0x0990, 0x0007}, + {0, 0x098E, 0x300D}, + {0, 0x0990, 0x000F}, + {0, 0x098E, 0x3017}, + {0, 0x0990, 0x0F0F}, + {0, 0x098E, 0x8400}, + {0, 0x0990, 0x0006}, + {0, 0x098E, 0xE81F}, + {0, 0x0990, 0x0020}, + {0, 0x098E, 0x68A0}, + {0, 0x0990, 0x082E}, + {0, 0x098E, 0x6CA0}, + {0, 0x0990, 0x082E}, + {0, 0x098E, 0x70A0}, + {0, 0x0990, 0x082E}, + {0, 0x098E, 0x74A0}, + {0, 0x0990, 0x082E}, + {0, 0x3C52, 0x082E}, + {0, 0x098E, 0x488E}, + {0, 0x0990, 0x0020}, + {0, 0x098E, 0xECAC}, + {0, 0x0990, 0x0000} +}; + +mt9t111_regs def_regs2[] = { + {100, 0x0018, 0x0028}, + {0, 0x316C, 0x350F}, + {0, 0x098E, 0x6817}, + {0, 0x0990, 0x000C}, + {0, 0x0034, 0x0000} +}; + +mt9t111_regs pll_regs1[] = { + {0, 0x0014, 0x2425}, + {0, 0x0014, 0x2425}, + {0, 0x0014, 0x2145}, + {0, 0x0010, 0x0219}, + {0, 0x0012, 0x0090}, + {0, 0x002A, 0x79DD}, + {0, 0x0014, 0x2545}, + {0, 0x0014, 0x2547}, + {0, 0x0014, 0x3447}, + {0, 0x0014, 0x3047} +}; + +mt9t111_regs pll_regs2[] = { + {0, 0x0014, 0x3046}, + {0, 0x0022, 0x01E0}, + {0, 0x001E, 0x0707}, + {0, 0x3B84, 0x011D} +}; + +mt9t111_regs bayer_pattern_regs[] = { + {0, 0x098E, 0x6807}, + {0, 0x0990, 0x0100}, + {0, 0x098E, 0x6809}, + {0, 0x0990, 0x0000}, + {0, 0x098E, 0xE88E}, + {0, 0x0990, 0x0000}, + {0, 0x098E, 0x6C07}, + {0, 0x0990, 0x0100}, + {0, 0x098E, 0x6C09}, + {0, 0x0990, 0x0000}, + {0, 0x098E, 0xEC8E}, + {0, 0x0990, 0x0000} +}; + +#endif diff --git a/drivers/media/video/mt9t112.c b/drivers/media/video/mt9t112.c index 32114a3..aba49e2 100644 --- a/drivers/media/video/mt9t112.c +++ b/drivers/media/video/mt9t112.c @@ -24,12 +24,16 @@ #include <linux/slab.h> #include <linux/v4l2-mediabus.h> #include <linux/videodev2.h> +#include <linux/regulator/consumer.h> #include <media/mt9t112.h> +#include <media/mt9t111.h> #include <media/soc_camera.h> #include <media/v4l2-chip-ident.h> #include <media/v4l2-common.h> +#include "mt9t111_reg.h" + /* you can check PLL/clock info */ /* #define EXT_CLOCK 24000000 */ @@ -88,11 +92,15 @@ struct mt9t112_format { struct mt9t112_priv { struct v4l2_subdev subdev; struct mt9t112_camera_info *info; + struct media_pad pad; struct i2c_client *client; struct v4l2_rect frame; const struct mt9t112_format *format; + struct v4l2_mbus_framefmt fmt; int model; u32 flags; + struct regulator *omap3evm_1v8; + struct regulator *omap3evm_2v8; /* for flags */ #define INIT_DONE (1 << 0) #define PCLK_RISING (1 << 1) @@ -206,6 +214,33 @@ static int __mt9t112_reg_write(const struct i2c_client *client, return ret; } +static int mt9t111_write_regs(struct i2c_client *client, + mt9t111_regs *reg_in, int cnt) +{ + int err = 0, i; + mt9t111_regs *reg = reg_in; + + for (i = 0; i < cnt; i++) { + if (reg->delay_time == 0) { + mt9t112_reg_write(err, client, reg->addr, reg->data); + } else if (reg->addr != 0 || reg->data != 0) { + mt9t112_reg_write(err, client, reg->addr, reg->data); + mdelay(reg->delay_time); + } else { + mdelay(reg->delay_time); + } + if (err < 0) { + dev_warn(&client->dev, "write reg error, addr = 0x%x," + "data = 0x%x\n", + reg->addr, reg->data); + return err; + } + reg++; + } + + return err; +} + static int __mt9t112_reg_mask_set(const struct i2c_client *client, u16 command, u16 mask, @@ -733,6 +768,82 @@ static int mt9t112_init_camera(const struct i2c_client *client) return ret; } +static int mt9t111_configure(struct v4l2_subdev *subdev) +{ + int i, ret = 0; + unsigned short value; + struct i2c_client *client = v4l2_get_subdevdata(subdev); + + mt9t112_reg_write(ret, client, 0x001A, 0x001D); + if (ret) + goto out; + + msleep(1); + + mt9t112_reg_write(ret, client, 0x001A, 0x0018); + if (ret) + goto out; + + ret = mt9t111_write_regs(client, pll_regs1, + sizeof(pll_regs1) / sizeof(mt9t111_regs)); + if (ret) + goto out; + + for (i = 0; i < 100; i++) { + mt9t112_reg_read(value, client, 0x0014); + if ((value & 0x8000) != 0) + break; + mdelay(2); + } + + ret = mt9t111_write_regs(client, pll_regs2, + sizeof(pll_regs2) / sizeof(mt9t111_regs)); + if (ret) + goto out; + + ret = mt9t111_write_regs(client, def_regs1, + sizeof(def_regs1) / sizeof(mt9t111_regs)); + if (ret) + goto out; + + ret = mt9t111_write_regs(client, patch_rev6, + sizeof(patch_rev6) / sizeof(mt9t111_regs)); + if (ret) + goto out; + + ret = mt9t111_write_regs(client, def_regs2, + sizeof(def_regs2) / sizeof(mt9t111_regs)); + if (ret) + goto out; + + /* MCU_ADDRESS [SEQ_CMD] -- refresh mode */ + mt9t112_reg_write(ret, client, 0x098E, 0x8400); + if (ret) + goto out; + mt9t112_reg_write(ret, client, 0x0990, 0x0006); + if (ret) + goto out; + + /* refresh command */ + mt9t112_reg_write(ret, client, 0x098E, 0x8400); + if (ret) + goto out; + mt9t112_reg_write(ret, client, 0x0990, 0x0005); + if (ret) + goto out; + for (i = 0; i < 100; i++) { + mt9t112_reg_write(ret, client, 0x098E, 0x8400); + if (ret) + break; + mt9t112_reg_read(value , client, 0x0990); + if (value == 0) + break; + mdelay(5); + } +out: + return ret; +} + /************************************************************************ v4l2_subdev_core_ops ************************************************************************/ @@ -775,15 +886,72 @@ static int mt9t112_s_register(struct v4l2_subdev *sd, } #endif +static int omap3evm_regulator_ctrl(struct mt9t112_priv *priv, u32 on) +{ + if (!(priv->omap3evm_1v8) || !(priv->omap3evm_2v8)) { + printk(KERN_ERR "No regulator available\n"); + return -ENODEV; + } + if (on) { + regulator_enable(priv->omap3evm_1v8); + mdelay(1); + regulator_enable(priv->omap3evm_2v8); + mdelay(50); + } else { + if (regulator_is_enabled(priv->omap3evm_1v8)) + regulator_disable(priv->omap3evm_1v8); + if (regulator_is_enabled(priv->omap3evm_2v8)) + regulator_disable(priv->omap3evm_2v8); + } + return 0; +} + +static int mt9t111_s_power(struct v4l2_subdev *subdev, int on) +{ + struct i2c_client *client = v4l2_get_subdevdata(subdev); + struct soc_camera_link *icl = soc_camera_i2c_to_link(client); + struct mt9t112_priv *priv = to_mt9t112(client); + struct mt9t111_platform_data *pdata; + int rval; + + pdata = (struct mt9t111_platform_data *) icl; + if (on) { + rval = omap3evm_regulator_ctrl(priv, on); + if (rval) + goto out; + + rval = pdata->s_power(subdev, 1); + if (rval) + goto out; + + rval = mt9t111_configure(subdev); + if (rval) { + pdata->s_power(subdev, 0); + goto out; + } + + } else { + rval = pdata->s_power(subdev, 0); + if (rval) + goto out; + } + +out: + if (rval) + v4l_err(client, "Unable to set target power state\n"); + + return rval; +} + static struct v4l2_subdev_core_ops mt9t112_subdev_core_ops = { .g_chip_ident = mt9t112_g_chip_ident, + .s_power = mt9t111_s_power, #ifdef CONFIG_VIDEO_ADV_DEBUG - .g_register = mt9t112_g_register, - .s_register = mt9t112_s_register, + .g_register = mt9t112_g_register, + .s_register = mt9t112_s_register, #endif }; - /************************************************************************ v4l2_subdev_video_ops ************************************************************************/ @@ -793,51 +961,56 @@ static int mt9t112_s_stream(struct v4l2_subdev *sd, int enable) struct mt9t112_priv *priv = to_mt9t112(client); int ret = 0; - if (!enable) { - /* FIXME - * - * If user selected large output size, - * and used it long time, - * mt9t112 camera will be very warm. - * - * But current driver can not stop mt9t112 camera. - * So, set small size here to solve this problem. - */ - mt9t112_set_a_frame_size(client, VGA_WIDTH, VGA_HEIGHT); + if (priv->model == V4L2_IDENT_MT9T111) { return ret; - } - if (!(priv->flags & INIT_DONE)) { - u16 param = PCLK_RISING & priv->flags ? 0x0001 : 0x0000; + } else { + if (!enable) { + /* FIXME + * + * If user selected large output size, + * and used it long time, + * mt9t112 camera will be very warm. + * + * But current driver can not stop mt9t112 camera. + * So, set small size here to solve this problem. + */ + mt9t112_set_a_frame_size(client, VGA_WIDTH, VGA_HEIGHT); + return ret; + } - ECHECKER(ret, mt9t112_init_camera(client)); + if (!(priv->flags & INIT_DONE)) { + u16 param = PCLK_RISING & priv->flags ? 0x0001 : 0x0000; - /* Invert PCLK (Data sampled on falling edge of pixclk) */ - mt9t112_reg_write(ret, client, 0x3C20, param); + ECHECKER(ret, mt9t112_init_camera(client)); - mdelay(5); + /* Invert PCLK (Data sampled on falling edge of pixclk) */ + mt9t112_reg_write(ret, client, 0x3C20, param); - priv->flags |= INIT_DONE; - } + mdelay(5); - mt9t112_mcu_write(ret, client, VAR(26, 7), priv->format->fmt); - mt9t112_mcu_write(ret, client, VAR(26, 9), priv->format->order); - mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x06); + priv->flags |= INIT_DONE; + } - mt9t112_set_a_frame_size(client, - priv->frame.width, - priv->frame.height); + mt9t112_mcu_write(ret, client, VAR(26, 7), priv->format->fmt); + mt9t112_mcu_write(ret, client, VAR(26, 9), priv->format->order); + mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x06); - ECHECKER(ret, mt9t112_auto_focus_trigger(client)); + mt9t112_set_a_frame_size(client, + priv->frame.width, + priv->frame.height); - dev_dbg(&client->dev, "format : %d\n", priv->format->code); - dev_dbg(&client->dev, "size : %d x %d\n", - priv->frame.width, - priv->frame.height); + ECHECKER(ret, mt9t112_auto_focus_trigger(client)); - CLOCK_INFO(client, EXT_CLOCK); + dev_dbg(&client->dev, "format : %d\n", priv->format->code); + dev_dbg(&client->dev, "size : %d x %d\n", + priv->frame.width, + priv->frame.height); - return ret; + CLOCK_INFO(client, EXT_CLOCK); + + return ret; + } } static int mt9t112_set_params(struct mt9t112_priv *priv, @@ -1019,11 +1192,60 @@ static struct v4l2_subdev_video_ops mt9t112_subdev_video_ops = { }; /************************************************************************ + v4l2_subdev_pad_ops +************************************************************************/ +static int mt9t111_get_pad_format(struct v4l2_subdev *subdev, + struct v4l2_subdev_fh *fh, + struct v4l2_subdev_format *fmt) +{ + struct i2c_client *client = v4l2_get_subdevdata(subdev); + struct mt9t112_priv *priv = to_mt9t112(client); + + fmt->format = priv->fmt; + return 0; +} + +static int mt9t111_set_pad_format(struct v4l2_subdev *subdev, + struct v4l2_subdev_fh *fh, + struct v4l2_subdev_format *fmt) +{ + int i; + struct i2c_client *client = v4l2_get_subdevdata(subdev); + struct mt9t112_priv *priv = to_mt9t112(client); + + for (i = 0; i < ARRAY_SIZE(mt9t112_cfmts); i++) { + if (fmt->format.code == mt9t112_cfmts[i].code) + goto fmt_found; + } + if (i >= ARRAY_SIZE(mt9t112_cfmts)) + return -EINVAL; + +fmt_found: + /* + * Only VGA resolution supported + */ + fmt->format.width = VGA_WIDTH; + fmt->format.height = VGA_HEIGHT; + fmt->format.field = V4L2_FIELD_NONE; + fmt->format.colorspace = V4L2_COLORSPACE_JPEG; + + priv->fmt = fmt->format; + + return 0; +} + +static const struct v4l2_subdev_pad_ops mt9t111_pad_ops = { + .get_fmt = mt9t111_get_pad_format, + .set_fmt = mt9t111_set_pad_format, +}; + +/************************************************************************ i2c driver ************************************************************************/ static struct v4l2_subdev_ops mt9t112_subdev_ops = { .core = &mt9t112_subdev_core_ops, .video = &mt9t112_subdev_video_ops, + .pad = &mt9t111_pad_ops, }; static int mt9t112_camera_probe(struct i2c_client *client) @@ -1089,6 +1311,32 @@ static int mt9t112_probe(struct i2c_client *client, /* Cannot fail: using the default supported pixel code */ mt9t112_set_params(priv, &rect, V4L2_MBUS_FMT_UYVY8_2X8); + if (priv->model == V4L2_IDENT_MT9T111) { + priv->omap3evm_1v8 = regulator_get(NULL, "vio_1v8"); + if (IS_ERR(priv->omap3evm_1v8)) { + printk(KERN_ERR "vio_1v8 regulator missing\n"); + ret = PTR_ERR(priv->omap3evm_1v8); + goto err_1; + } + priv->omap3evm_2v8 = regulator_get(NULL, "cam_2v8"); + if (IS_ERR(priv->omap3evm_2v8)) { + printk(KERN_ERR "cam_2v8 regulator missing\n"); + ret = PTR_ERR(priv->omap3evm_2v8); + goto err_2; + } + + priv->subdev.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; + priv->pad.flags = MEDIA_PAD_FL_SOURCE; + ret = media_entity_init(&priv->subdev.entity, 1, &priv->pad, 0); + if (!ret) + return 0; + kfree(priv); +err_2: + regulator_put(priv->omap3evm_2v8); +err_1: + regulator_put(priv->omap3evm_1v8); + } + return ret; } diff --git a/include/media/mt9t111.h b/include/media/mt9t111.h new file mode 100644 index 0000000..372dc0d --- /dev/null +++ b/include/media/mt9t111.h @@ -0,0 +1,45 @@ +/* + * include/media/mt9t111.h + * + * mt9t111 sensor driver + * + * Copyright (C) 2009 Leopard Imaging + * + * This file is licensed under the terms of the GNU General Public License + * version 2. This program is licensed "as is" without any warranty of any + * kind, whether express or implied. + */ + +#ifndef MT9T111_H +#define MT9T111_H + +struct v4l2_subdev; + +/* + * Defines and Macros and globals + */ +#define MT9T111_MODULE_NAME "mt9t112" + +/*i2c adress for MT9T111*/ +#define MT9T111_I2C_ADDR (0x78 >> 1) + +#define MT9T111_CLK_MAX (96000000) /* 96MHz */ +#define MT9T111_CLK_MIN (6000000) /* 6Mhz */ + +#define MT9T111_I2C_CONFIG (1) +#define I2C_ONE_BYTE_TRANSFER (1) +#define I2C_TWO_BYTE_TRANSFER (2) +#define I2C_THREE_BYTE_TRANSFER (3) +#define I2C_FOUR_BYTE_TRANSFER (4) +#define I2C_TXRX_DATA_MASK (0x00FF) +#define I2C_TXRX_DATA_MASK_UPPER (0xFF00) +#define I2C_TXRX_DATA_SHIFT (8) + +struct mt9t111_platform_data { + int (*s_power) (struct v4l2_subdev *subdev, u32 on); + int (*set_xclk) (struct v4l2_subdev *subdev, u32 hz); + int (*configure_interface) (struct v4l2_subdev *subdev, u32 pixclk); +}; + +#endif /* ifndef MT9T111 */ + -- 1.7.0.4 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html