From 109691985ab1bfeacfc69506a3d19d732fb1fb3d Mon Sep 17 00:00:00 2001 From: Wang Panzhenzhuan Date: Wed, 2 Dec 2020 09:10:04 +0800 Subject: [PATCH] meida: i2c: nvp6158: cherry-pick from kernel-4.19 and adapt to kernel-5.10 media: i2c: add nvp6158 sensor driver from NEXTCHIP Inc Change-Id: I9f58e128889db55333e90e75144687ce9cc6d40f media: i2c: nvp6158: add v4l2 interface Change-Id: I7932353657f5a75f2787647c7b4f31c6c9dbde44 media: i2c: nvp6158: add workqueue & more resolution support Change-Id: I6c7b762cacefe7de473a63cb275e1861c9ef096b Signed-off-by: Wang Panzhenzhuan Signed-off-by: Jianwei Fan Change-Id: I9f58e128889db55333e90e75144687ce9cc6d40f --- drivers/media/i2c/Kconfig | 10 + drivers/media/i2c/Makefile | 1 + drivers/media/i2c/nvp6158_drv/Makefile | 9 + drivers/media/i2c/nvp6158_drv/nvp6158_audio.c | 1410 ++++ drivers/media/i2c/nvp6158_drv/nvp6158_audio.h | 50 + .../i2c/nvp6158_drv/nvp6158_coax_protocol.c | 1536 ++++ .../i2c/nvp6158_drv/nvp6158_coax_protocol.h | 205 + .../i2c/nvp6158_drv/nvp6158_coax_table.h | 3346 ++++++++ .../media/i2c/nvp6158_drv/nvp6158_common.h | 537 ++ drivers/media/i2c/nvp6158_drv/nvp6158_dev.c | 309 + drivers/media/i2c/nvp6158_drv/nvp6158_drv.c | 1073 +++ drivers/media/i2c/nvp6158_drv/nvp6158_drv.h | 34 + drivers/media/i2c/nvp6158_drv/nvp6158_i2c.c | 83 + .../media/i2c/nvp6158_drv/nvp6158_motion.c | 278 + .../media/i2c/nvp6158_drv/nvp6158_motion.h | 41 + drivers/media/i2c/nvp6158_drv/nvp6158_v4l2.c | 1580 ++++ drivers/media/i2c/nvp6158_drv/nvp6158_video.c | 1682 ++++ drivers/media/i2c/nvp6158_drv/nvp6158_video.h | 130 + .../nvp6158_drv/nvp6158_video_auto_detect.c | 1730 ++++ .../nvp6158_drv/nvp6158_video_auto_detect.h | 260 + .../media/i2c/nvp6158_drv/nvp6158_video_eq.c | 1994 +++++ .../media/i2c/nvp6158_drv/nvp6158_video_eq.h | 228 + .../i2c/nvp6158_drv/nvp6158_video_eq_table.h | 7105 +++++++++++++++++ .../media/i2c/nvp6158_drv/nvp6168_eq_table.h | 6940 ++++++++++++++++ 24 files changed, 30571 insertions(+) create mode 100644 drivers/media/i2c/nvp6158_drv/Makefile create mode 100644 drivers/media/i2c/nvp6158_drv/nvp6158_audio.c create mode 100644 drivers/media/i2c/nvp6158_drv/nvp6158_audio.h create mode 100644 drivers/media/i2c/nvp6158_drv/nvp6158_coax_protocol.c create mode 100644 drivers/media/i2c/nvp6158_drv/nvp6158_coax_protocol.h create mode 100644 drivers/media/i2c/nvp6158_drv/nvp6158_coax_table.h create mode 100644 drivers/media/i2c/nvp6158_drv/nvp6158_common.h create mode 100644 drivers/media/i2c/nvp6158_drv/nvp6158_dev.c create mode 100644 drivers/media/i2c/nvp6158_drv/nvp6158_drv.c create mode 100644 drivers/media/i2c/nvp6158_drv/nvp6158_drv.h create mode 100644 drivers/media/i2c/nvp6158_drv/nvp6158_i2c.c create mode 100644 drivers/media/i2c/nvp6158_drv/nvp6158_motion.c create mode 100644 drivers/media/i2c/nvp6158_drv/nvp6158_motion.h create mode 100644 drivers/media/i2c/nvp6158_drv/nvp6158_v4l2.c create mode 100644 drivers/media/i2c/nvp6158_drv/nvp6158_video.c create mode 100644 drivers/media/i2c/nvp6158_drv/nvp6158_video.h create mode 100644 drivers/media/i2c/nvp6158_drv/nvp6158_video_auto_detect.c create mode 100644 drivers/media/i2c/nvp6158_drv/nvp6158_video_auto_detect.h create mode 100644 drivers/media/i2c/nvp6158_drv/nvp6158_video_eq.c create mode 100644 drivers/media/i2c/nvp6158_drv/nvp6158_video_eq.h create mode 100644 drivers/media/i2c/nvp6158_drv/nvp6158_video_eq_table.h create mode 100644 drivers/media/i2c/nvp6158_drv/nvp6168_eq_table.h diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig index 4262d3993ccb..4d529452fc15 100644 --- a/drivers/media/i2c/Kconfig +++ b/drivers/media/i2c/Kconfig @@ -356,6 +356,16 @@ config VIDEO_ML86V7667 To compile this driver as a module, choose M here: the module will be called ml86v7667. +config VIDEO_NVP6158 + tristate "NEXTCHIP nvp6158 driver support" + depends on VIDEO_V4L2 && I2C + help + Support for the Nextchip NVP6158 multi channels digital decode to + BT656/BT1120 bridge. + + To compile this driver as a module, choose M here: the + module will be called nvp6158_drv. + config VIDEO_NVP6324 tristate "NEXTCHIP nvp6324 driver support" depends on VIDEO_V4L2 && I2C diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile index 72eac92aec10..805bc4cb402a 100644 --- a/drivers/media/i2c/Makefile +++ b/drivers/media/i2c/Makefile @@ -6,6 +6,7 @@ obj-$(CONFIG_VIDEO_SMIAPP) += smiapp/ obj-$(CONFIG_VIDEO_ET8EK8) += et8ek8/ obj-$(CONFIG_VIDEO_CX25840) += cx25840/ obj-$(CONFIG_VIDEO_M5MOLS) += m5mols/ +obj-$(CONFIG_VIDEO_NVP6158) += nvp6158_drv/ obj-$(CONFIG_VIDEO_NVP6324) += jaguar1_drv/ obj-$(CONFIG_VIDEO_APTINA_PLL) += aptina-pll.o diff --git a/drivers/media/i2c/nvp6158_drv/Makefile b/drivers/media/i2c/nvp6158_drv/Makefile new file mode 100644 index 000000000000..e4cc0be8860a --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/Makefile @@ -0,0 +1,9 @@ +# SPDX-License-Identifier: GPL-2.0 +subdir-ccflags-y += -DNC_DEBUG +nvp6158-objs += nvp6158_drv.o nvp6158_i2c.o \ + nvp6158_video.o nvp6158_coax_protocol.o \ + nvp6158_motion.o nvp6158_video_eq.o \ + nvp6158_audio.o nvp6158_video_auto_detect.o \ + nvp6158_v4l2.o + +obj-$(CONFIG_VIDEO_NVP6158) += nvp6158.o diff --git a/drivers/media/i2c/nvp6158_drv/nvp6158_audio.c b/drivers/media/i2c/nvp6158_drv/nvp6158_audio.c new file mode 100644 index 000000000000..552e8b456265 --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/nvp6158_audio.c @@ -0,0 +1,1410 @@ +// SPDX-License-Identifier: GPL-2.0 +/******************************************************************************** +* +* Copyright (C) 2017 NEXTCHIP Inc. All rights reserved. +* Module : The decoder's audio module +* Description : Audio i/o +* Author : +* Date : +* Version : Version 2.0 +* +******************************************************************************** +* History : +* +* +********************************************************************************/ +#include +#include + +#include "nvp6158_common.h" +#include "nvp6158_audio.h" + +/******************************************************************************* + * extern variable + *******************************************************************************/ +extern int nvp6158_chip_id[4]; /* Chip ID */ +extern int nvp6158_rev_id[4]; /* Reversion ID */ +static int g_ai_type = NC_AD_AI; +static int g_aud_sample = NC_AD_SAMPLE_RATE_8000; +extern unsigned int nvp6158_cnt; /* Chip count */ +extern unsigned int nvp6158_iic_addr[4]; /* Slave address of Chip */ + +/******************************************************************************* +* Description : initialize audio +* Argurments : recmaster(0[slave],1[master];), pbmaster(), ch_num(audio channel number) +* samplerate(sample rate), bits(bits) +* Return value : void +* Modify : +* warning : +* +* param: +* - xxmaster:0[slave],1[master]; +* - ch_num: audio channel number +* - samplerate: 0[8k], 1[16k] +* - bits: 0[16bits], 1[8bits] +* +*******************************************************************************/ +void nvp6158_audio_init(unsigned char recmaster, unsigned char pbmaster, + unsigned char ch_num, unsigned char samplerate, unsigned char bits) +{ + int i; + unsigned char val_1x39; + for(i=0; i %d\r\n", __func__, g_ai_type, type); + g_ai_type = type; + } else { + printk("[%s] Invalid argument %d\r\n", __func__, type); + } +} + +int nvp6158_audio_in_type_get(void) +{ + return g_ai_type; +} + +void nvp6158_audio_sample_rate_set(int sample) +{ + if(sample < NC_AD_SAMPLE_RATE_MAX) { + printk("[%s] Change audio sampling rate %d > %d\r\n", __func__, g_aud_sample, sample); + g_aud_sample = sample; + } else { + printk("[%s] Invalid argument %d\r\n", __func__, sample); + } +} + +int nvp6158_audio_sample_rate_get(void) +{ + return g_aud_sample; +} + +void nvp6158_audio_re_initialize(int devnum) +{ + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x01); + + // Set audio sampling rate +// if(g_aud_sample == NC_AD_SAMPLE_RATE_8000) +// { +// gpio_i2c_write(nvp6158_iic_addr[devnum], 0x07, 0x80); +// } +// else if(g_aud_sample == NC_AD_SAMPLE_RATE_16000) +// { +// gpio_i2c_write(nvp6158_iic_addr[devnum], 0x07, 0x88); +// } +// else +// { +// printk("[%s] Not supported yet [%d] \r\n", __func__, g_aud_sample); +// } + + // Set audio input type + if(g_ai_type == NC_AD_AOC) { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x00, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x31, 0x08); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x46, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x58, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x62, 0xFF); + } else if(g_ai_type == NC_AD_AI) { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x00, 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x31, 0x0A); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x46, 0x10); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x58, 0x0f); //05.29 org=0x02 + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x62, 0x00); + } +} + +static void nvp6158_set_aoc_720_25p_ex_b(decoder_dev_ch_info_s *decoder_info) +{ + int ch = decoder_info->ch; + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF, 0x12); + + if(g_aud_sample == NC_AD_SAMPLE_RATE_8000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0x11); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x0F); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0x50); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x17); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x0E); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } else if(g_aud_sample == NC_AD_SAMPLE_RATE_16000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x10); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0x11); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x1E); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0xA0); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x0B); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x18); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } +} + +static void nvp6158_set_aoc_720_30p_ex_b(decoder_dev_ch_info_s *decoder_info) +{ + int ch = decoder_info->ch; + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF, 0x12); + + if(g_aud_sample == NC_AD_SAMPLE_RATE_8000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0x12); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x0F); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0x50); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x17); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x0E); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } else if(g_aud_sample == NC_AD_SAMPLE_RATE_16000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x10); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0x12); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x1E); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0xA0); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x0B); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x18); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } +} + +static void nvp6158_set_aoc_720_50p(decoder_dev_ch_info_s *decoder_info) +{ + int ch = decoder_info->ch; + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF, 0x12); + + if(g_aud_sample == NC_AD_SAMPLE_RATE_8000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0x10); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x0A); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0x28); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x17); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x08); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } else if(g_aud_sample == NC_AD_SAMPLE_RATE_16000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x10); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0x11); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x14); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0x50); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x0B); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x12); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } +} + +static void nvp6158_set_aoc_720_60p(decoder_dev_ch_info_s *decoder_info) +{ + int ch = decoder_info->ch; + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF, 0x12); + + if(g_aud_sample == NC_AD_SAMPLE_RATE_8000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x03); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0x10); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x0A); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0x28); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x17); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x08); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } else if(g_aud_sample == NC_AD_SAMPLE_RATE_16000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x03); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x10); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0x11); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x14); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0x50); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x0B); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x12); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } +} + +static void nvp6158_set_aoc_1080_25p(decoder_dev_ch_info_s *decoder_info) +{ + int ch = decoder_info->ch; + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF, 0x12); + + if(g_aud_sample == NC_AD_SAMPLE_RATE_8000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0x12); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x0A); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0x50); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x13); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x08); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } else if(g_aud_sample == NC_AD_SAMPLE_RATE_16000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x10); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0x12); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x14); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0xA0); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x09); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x12); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } +} + +static void nvp6158_set_aoc_1080_30p(decoder_dev_ch_info_s *decoder_info) +{ + int ch = decoder_info->ch; + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF, 0x12); + + if(g_aud_sample == NC_AD_SAMPLE_RATE_8000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x03); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0x12); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x0A); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0x50); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x13); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x08); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } else if(g_aud_sample == NC_AD_SAMPLE_RATE_16000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x03); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x10); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0x12); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x14); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0xA0); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x09); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x12); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } +} + +static void nvp6158_set_aoc_3m_25p(decoder_dev_ch_info_s *decoder_info) +{ + int ch = decoder_info->ch; + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF, 0x12); + + if(g_aud_sample == NC_AD_SAMPLE_RATE_8000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x10); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x06); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0x6A); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x0A); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0x50); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x13); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x08); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } else if(g_aud_sample == NC_AD_SAMPLE_RATE_16000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x10); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x10); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x06); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0x6A); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x14); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0xA0); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x09); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x12); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } +} + +static void nvp6158_set_aoc_3m_30p(decoder_dev_ch_info_s *decoder_info) +{ + int ch = decoder_info->ch; + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF, 0x12); + + if(g_aud_sample == NC_AD_SAMPLE_RATE_8000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x03); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x10); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x06); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0x6A); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x0A); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0x50); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x13); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x08); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } else if(g_aud_sample == NC_AD_SAMPLE_RATE_16000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x03); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x10); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x10); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x06); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0x6A); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x14); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0xA0); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x09); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x12); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } +} + +static void nvp6158_set_aoc_4m_25p(decoder_dev_ch_info_s *decoder_info) +{ + int ch = decoder_info->ch; + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF, 0x12); + + if(g_aud_sample == NC_AD_SAMPLE_RATE_8000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x10); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x05); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0xD4); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x0A); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0x50); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x17); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x08); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } else if(g_aud_sample == NC_AD_SAMPLE_RATE_16000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x10); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x10); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x05); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0xD4); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x14); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0xA0); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x0B); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x12); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } +} + +static void nvp6158_set_aoc_4m_30p(decoder_dev_ch_info_s *decoder_info) +{ + int ch = decoder_info->ch; + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF, 0x12); + + if(g_aud_sample == NC_AD_SAMPLE_RATE_8000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x03); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x10); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x05); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0xD4); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x0A); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0x50); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x17); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x08); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } else if(g_aud_sample == NC_AD_SAMPLE_RATE_16000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x03); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x10); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x10); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x05); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0xD4); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x14); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0xA0); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x0B); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x12); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } +} + +static void nvp6158_set_aoc_4m_15p(decoder_dev_ch_info_s *decoder_info) +{ + int ch = decoder_info->ch; + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF, 0x12); + + if(g_aud_sample == NC_AD_SAMPLE_RATE_8000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x03); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x05); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0xD4); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x0A); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0xA0); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x0B); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x08); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } else if(g_aud_sample == NC_AD_SAMPLE_RATE_16000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x03); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x11); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x05); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0xD4); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x14); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0x40); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x05); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x12); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } +} + +static void nvp6158_set_aoc_5m_12_5p(decoder_dev_ch_info_s *decoder_info) +{ + int ch = decoder_info->ch; + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF, 0x12); + + if(g_aud_sample == NC_AD_SAMPLE_RATE_8000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x07); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0xB6); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x0A); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0xA0); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x0B); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x08); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } else if(g_aud_sample == NC_AD_SAMPLE_RATE_16000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x10); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x07); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0xB6); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x14); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0x40); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x05); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x12); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } +} + +static void nvp6158_set_aoc_5m_20p(decoder_dev_ch_info_s *decoder_info) +{ + int ch = decoder_info->ch; + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF, 0x12); + + if(g_aud_sample == NC_AD_SAMPLE_RATE_8000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x10); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x07); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0xB6); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x0A); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0x64); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x13); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x08); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } else if(g_aud_sample == NC_AD_SAMPLE_RATE_16000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x10); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x10); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x07); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0xB6); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x14); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0xC8); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x09); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x12); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } +} + +static void nvp6158_set_aoc_5_3m_20p(decoder_dev_ch_info_s *decoder_info) +{ + int ch = decoder_info->ch; + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF, 0x12); + + if(g_aud_sample == NC_AD_SAMPLE_RATE_8000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x10); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x07); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0x4D); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x0A); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0xA0); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x13); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x08); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } else if(g_aud_sample == NC_AD_SAMPLE_RATE_16000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x10); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x10); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x07); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0x4D); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x14); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0xC8); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x0B); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x12); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } +} + +static void nvp6158_set_aoc_8m_12_5p(decoder_dev_ch_info_s *decoder_info) +{ + int ch = decoder_info->ch; + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF, 0x12); + + if(g_aud_sample == NC_AD_SAMPLE_RATE_8000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x10); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x08); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0xC4); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x0A); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0xA0); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x13); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x08); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } else if(g_aud_sample == NC_AD_SAMPLE_RATE_16000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x10); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x10); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x08); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0xC4); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x14); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0x40); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x09); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x12); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } +} + +static void nvp6158_set_aoc_8m_15p(decoder_dev_ch_info_s *decoder_info) +{ + int ch = decoder_info->ch; + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF, 0x12); + + if(g_aud_sample == NC_AD_SAMPLE_RATE_8000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x03); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x10); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x08); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0xC4); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x0A); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0xA0); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x13); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x08); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } else if(g_aud_sample == NC_AD_SAMPLE_RATE_16000) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x01 + (ch*0x40), 0x03); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x02 + (ch*0x40), 0x10); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x18 + (ch*0x40), 0x11); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x04 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x05 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x06 + (ch*0x40), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x07 + (ch*0x40), 0x08); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x08 + (ch*0x40), 0xC4); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x09 + (ch*0x40), 0x03); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0A + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0B + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0C + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0D + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0E + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x0F + (ch*0x40), 0x40); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x10 + (ch*0x40), 0x04); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x11 + (ch*0x40), 0x14); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x12 + (ch*0x40), 0x01); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x13 + (ch*0x40), 0x40); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x14 + (ch*0x40), 0x09); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x15 + (ch*0x40), 0x12); + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x17 + (ch*0x40), 0x00); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x19 + (ch*0x40), 0xA0); + } +} + +void nvp6158_audio_set_aoc_format(decoder_dev_ch_info_s *decoder_info) +{ + switch(decoder_info->fmt_def) { + // 1M + case AHD20_720P_25P_EX_Btype : + nvp6158_set_aoc_720_25p_ex_b(decoder_info); + break; + case AHD20_720P_30P_EX_Btype : + nvp6158_set_aoc_720_30p_ex_b(decoder_info); + break; + case AHD20_720P_50P : + nvp6158_set_aoc_720_50p(decoder_info); + case AHD20_720P_60P : + nvp6158_set_aoc_720_60p(decoder_info); + printk("[%s] Not supported yet. [0x%X] \r\n", __func__, decoder_info->fmt_def); + break; + // 2M + case AHD20_1080P_25P : + nvp6158_set_aoc_1080_25p(decoder_info); + break; + case AHD20_1080P_30P : + nvp6158_set_aoc_1080_30p(decoder_info); + break; + // 3M + case AHD30_3M_25P : + nvp6158_set_aoc_3m_25p(decoder_info); + case AHD30_3M_30P : + nvp6158_set_aoc_3m_30p(decoder_info); + printk("[%s] Not supported yet. [0x%X] \r\n", __func__, decoder_info->fmt_def); + break; + // 4M + case AHD30_4M_25P : + nvp6158_set_aoc_4m_25p(decoder_info); + case AHD30_4M_30P : + nvp6158_set_aoc_4m_30p(decoder_info); + case AHD30_4M_15P : + nvp6158_set_aoc_4m_15p(decoder_info); + printk("[%s] Not supported yet. [0x%X] \r\n", __func__, decoder_info->fmt_def); + break; + // 5M + case AHD30_5M_12_5P : + nvp6158_set_aoc_5m_12_5p(decoder_info); + case AHD30_5M_20P : + nvp6158_set_aoc_5m_20p(decoder_info); + printk("[%s] Not supported yet. [0x%X] \r\n", __func__, decoder_info->fmt_def); + break; + // 5.3M + case AHD30_5_3M_20P : + nvp6158_set_aoc_5_3m_20p(decoder_info); + printk("[%s] Not supported yet. [0x%X] \r\n", __func__, decoder_info->fmt_def); + break; + // 8M + case AHD30_8M_12_5P : + nvp6158_set_aoc_8m_12_5p(decoder_info); + case AHD30_8M_15P : + nvp6158_set_aoc_8m_15p(decoder_info); + printk("[%s] Not supported yet. [0x%X] \r\n", __func__, decoder_info->fmt_def); + break; + default : + printk("[%s] Not supported format [0x%X] \r\n", __func__, decoder_info->fmt_def); + break; + } +} + diff --git a/drivers/media/i2c/nvp6158_drv/nvp6158_audio.h b/drivers/media/i2c/nvp6158_drv/nvp6158_audio.h new file mode 100644 index 000000000000..c890f82a39b8 --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/nvp6158_audio.h @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: GPL-2.0 +/******************************************************************************** +* +* Copyright (C) 2017 NEXTCHIP Inc. All rights reserved. +* Module : The decoder's audio header file +* Description : Audio i/o +* Author : +* Date : +* Version : Version 2.0 +* +******************************************************************************** +* History : +* +* +********************************************************************************/ +#ifndef _AUDIO_H_ +#define _AUDIO_H_ + +/******************************************************************** + * define and enum + ********************************************************************/ +#define AIG_DEF 0x08 +#define AOG_DEF 0x08 + +/******************************************************************** + * structure + ********************************************************************/ + +/******************************************************************** + * external api + ********************************************************************/ +extern void nvp6158_audio_init(unsigned char recmaster, unsigned char pbmaster, + unsigned char ch_num, unsigned char samplerate, unsigned char bits); +extern void nvp6168_audio_init(unsigned char recmaster, unsigned char pbmaster, + unsigned char ch_num, unsigned char samplerate, unsigned char bits); +extern void nvp6158_audio_powerdown(unsigned char chip); +// Add for Raptor4 +void nvp6158_audio_in_type_set(int type); +int nvp6158_audio_in_type_get(void); +void nvp6158_audio_sample_rate_set(int sample); +int nvp6158_audio_sample_rate_get(void); +void nvp6158_audio_re_initialize(int devnum); +void nvp6158_audio_set_aoc_format(decoder_dev_ch_info_s *decoder_info); + +#endif // End of _AUDIO_H_ + +/******************************************************************** + * End of file + ********************************************************************/ + diff --git a/drivers/media/i2c/nvp6158_drv/nvp6158_coax_protocol.c b/drivers/media/i2c/nvp6158_drv/nvp6158_coax_protocol.c new file mode 100644 index 000000000000..71710abd189d --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/nvp6158_coax_protocol.c @@ -0,0 +1,1536 @@ +// SPDX-License-Identifier: GPL-2.0 +/******************************************************************************** +* +* Copyright (C) 2017 NEXTCHIP Inc. All rights reserved. +* Module : Raptor3 Device Driver +* Description : coax_protocol.c +* Author : +* Date : +* Version : Version 1.0 +* +******************************************************************************** +* History : +* +* +********************************************************************************/ +#include +#include +#include +#include "nvp6158_common.h" +#include "nvp6158_coax_table.h" +#include "nvp6158_coax_protocol.h" +#include "nvp6158_video.h" +extern unsigned int nvp6158_iic_addr[4]; + +/*======================================================================================================= + ******************************************************************************************************** + **************************** Coaxial protocol up stream function *************************************** + ******************************************************************************************************** + * Coaxial protocol up stream Flow + * 1. Up stream initialize - nvp6158_coax_tx_init + * 2. Fill upstream data & Send - nvp6158_coax_tx_16bit_init + * + * Coaxial protocol up stream register(example: channel 0) + * (3x00) tx_baud : 1 bit duty + * (3x02) tx_pel_baud : 1 bit duty of pelco(SD) + * (3x03) tx_line_pos0 : up stream line position(low) + * (3x04) tx_line_pos1 : up stream line position(high) + * (3x05) tx_line_count : up stream output line number in 1 frame + * (3x07) tx_pel_line_pos0 : up stream line position of pelco(low) + * (3x08) tx_pel_line_pos1 : up stream line position of pelco(high) + * (3x0A) tx_line_count_max : up stream output total line + * (3x0B) tx_mode : up stream Mode set (ACP, CCP, TCP) + * (3x0D) tx_sync_pos0 : up stream sync start position(low) + * (3x0E) tx_sync_pos1 : up stream sync start position(high) + * (3x2F) tx_even : up stream SD..Interlace + * (3x0C) tx_zero_length : Only CVI 4M + ========================================================================================================*/ + +/************************************************************************************** +* @desc +* RAPTOR3's This function initializes the register associated with the UP Stream.. +* +* @param_in (NC_VD_COAX_Tx_Init_STR *)coax_tx_mode UP Stream Initialize structure +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_TX_INIT +***************************************************************************************/ +static NC_VD_ACP_CMDDEF_STR *__NC_VD_ACP_Get_CommandFormat_Get(NC_COAX_CMD_DEF def) +{ + NC_VD_ACP_CMDDEF_STR *pRet = &nvp6158_coax_cmd_lists[def]; + if( pRet == NULL ) { + printk("Not Supported format Yet!!!(%d)\n",def); + } + return pRet; +} + +static NC_VD_COAX_Init_STR *__NC_VD_COAX_InitFormat_Get(NC_VIVO_CH_FORMATDEF def) +{ + NC_VD_COAX_Init_STR *pRet = &nvp6158_coax_init_lists[def]; + if( pRet == NULL ) { + printk("Not Supported format Yet!!!(%d)\n",def); + } + return pRet; +} + +static NC_VD_COAX_Init_STR *__NC_VD_COAX_16bit_InitFormat_Get(NC_VIVO_CH_FORMATDEF def) +{ + NC_VD_COAX_Init_STR *pRet = &nvp6158_coax_acp_16bit_init_lists[def]; + if( pRet == NULL ) { + printk("Not Supported format Yet!!!(%d)\n",def); + } + return pRet; +} + +static int __NC_VD_COAX_Command_Each_Copy(unsigned char *Dst, int *Src) +{ + int items = 0; + + while( Src[items] != EOD ) { + Dst[items] = Src[items]; + items++; + } + + return items; +} + +static int __NC_VD_COAX_Command_Copy(NC_FORMAT_STANDARD format, NC_VIVO_CH_FORMATDEF vivofmt, + unsigned char *Dst, NC_VD_ACP_CMDDEF_STR *pCMD) +{ + int cmd_cnt = 0; + + if( format == FMT_SD ) { + cmd_cnt = __NC_VD_COAX_Command_Each_Copy(Dst, pCMD->sd); + } else if((format == FMT_AHD20) || (format == FMT_AHD30)) { + if(vivofmt == AHD30_4M_30P || vivofmt == AHD30_4M_25P || vivofmt == AHD30_4M_15P || + vivofmt == AHD30_5M_20P || vivofmt == AHD30_5M_12_5P || vivofmt == AHD30_5_3M_20P || + vivofmt == AHD30_8M_12_5P || vivofmt == AHD30_8M_15P) + cmd_cnt = __NC_VD_COAX_Command_Each_Copy(Dst, pCMD->ahd_4_5m); + //cmd_cnt = __NC_VD_COAX_Command_Each_Copy( Dst, pCMD->ahd_4_5m ); + //else if( vivofmt == AHD30_4M_30P || vivofmt == AHD30_4M_25P || vivofmt == AHD30_4M_15P ) + //cmd_cnt = __NC_VD_COAX_Command_Each_Copy( Dst, pCMD->ahd_4_5m ); + else + cmd_cnt = __NC_VD_COAX_Command_Each_Copy(Dst, pCMD->ahd_8bit); + } else if(format == FMT_CVI) { + cmd_cnt= __NC_VD_COAX_Command_Each_Copy(Dst, pCMD->cvi_cmd); + } else if(format == FMT_TVI) { + if((vivofmt == TVI_4M_30P) || (vivofmt == TVI_4M_25P) || (vivofmt == TVI_4M_15P) || + (vivofmt == TVI_5M_20P) || (vivofmt == TVI_5M_12_5P) || (vivofmt == TVI_8M_12_5P) || (vivofmt == TVI_8M_15P)) + cmd_cnt = __NC_VD_COAX_Command_Each_Copy(Dst, pCMD->tvi_v2_0); + else + cmd_cnt = __NC_VD_COAX_Command_Each_Copy(Dst, pCMD->tvi_v1_0); + } else { + printk("NC_VD_COAX_Tx_Command_Send::Command Copy Error!!\n"); + } + + return cmd_cnt; +} + +static int __NC_VD_COAX_16bit_Command_Copy(NC_FORMAT_STANDARD format, NC_VIVO_CH_FORMATDEF vivofmt, + unsigned char *Dst, NC_VD_ACP_CMDDEF_STR *pCMD) +{ + int cmd_cnt = 0; + + if((vivofmt == AHD20_720P_25P) || (vivofmt == AHD20_720P_30P) ||\ + (vivofmt == AHD20_720P_25P_EX) || (vivofmt == AHD20_720P_30P_EX) ||\ + (vivofmt == AHD20_720P_25P_EX_Btype) || (vivofmt == AHD20_720P_30P_EX_Btype)) { + cmd_cnt = __NC_VD_COAX_Command_Each_Copy( Dst, pCMD->ahd_16bit ); + } else if((vivofmt == CVI_4M_25P) || (vivofmt == CVI_4M_30P) ||\ + (vivofmt == CVI_5M_20P) || (vivofmt == CVI_8M_15P) || (vivofmt == CVI_8M_12_5P)) { + cmd_cnt = __NC_VD_COAX_Command_Each_Copy(Dst, pCMD->cvi_new_cmd); + } else { + printk("[drv_coax] Can not send commands!! Unsupported format!!\n"); + return 0; + } + + return cmd_cnt; +} + +/************************************************************************************** +* @desc +* RAPTOR3's This function initializes the register associated with the UP Stream.. +* +* @param_in (NC_VD_COAX_Tx_Init_STR *)coax_tx_mode UP Stream Initialize structure +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_TX_INIT +***************************************************************************************/ +void nvp6158_coax_tx_init(nvp6158_coax_str *ps_coax_str) +{ + unsigned char ch = ps_coax_str->ch % 4; + unsigned char devnum = ps_coax_str->ch / 4; + unsigned char distance = 0; + NC_VD_COAX_Init_STR *CoaxVal = __NC_VD_COAX_InitFormat_Get( ps_coax_str->fmt_def); + printk("[drv_coax]Ch: %d Format >>>>> %s\n", ch, CoaxVal->name ); + + // MPP Coaxial mode select Ch1~4 + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x01); // BANK 1 + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xA8+ch, 0x08+ch); // MPP_TST_SEL1 + + // Coaxial each mode set + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05 + ch % 4); // BANK 5 + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x2F, 0x00); // MPP_H_INV, MPP_V_INV, MPP_F_INV + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30, 0xE0); // MPP_H_S[7~4], MPP_H_E[3:0] + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x31, 0x43); // MPP_H_S[7:0] + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x32, 0xA2); // MPP_H_E[7:0] + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7C, CoaxVal->rx_src); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7D, CoaxVal->rx_slice_lev); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x03 + ((ch % 4) / 2)); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x00 + ((ch % 2) * 0x80), CoaxVal->tx_baud[distance]); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x02 + ((ch % 2) * 0x80), CoaxVal->tx_pel_baud[distance]); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x03 + ((ch % 2) * 0x80), CoaxVal->tx_line_pos0[distance]); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x04 + ((ch % 2) * 0x80), CoaxVal->tx_line_pos1[distance]); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05 + ((ch % 2) * 0x80), CoaxVal->tx_line_count); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x07 + ((ch % 2) * 0x80), CoaxVal->tx_pel_line_pos0[distance]); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x08 + ((ch % 2) * 0x80), CoaxVal->tx_pel_line_pos1[distance]); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0A + ((ch % 2) * 0x80), CoaxVal->tx_line_count_max); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0B + ((ch % 2) * 0x80), CoaxVal->tx_mode); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0D + ((ch % 2) * 0x80), CoaxVal->tx_sync_pos0[distance]); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0E + ((ch % 2) * 0x80), CoaxVal->tx_sync_pos1[distance]); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x2F + ((ch % 2) * 0x80), CoaxVal->tx_even); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0C + ((ch % 2) * 0x80), CoaxVal->tx_zero_length); + +#if DBG_TX_INIT_PRINT + printk("[drv]tx_src: 5x7C>> 0x%02X\n", CoaxVal->rx_src ); + printk("[drv]tx_slice_lev: 5x7D>> 0x%02X\n", CoaxVal->rx_slice_lev ); + printk("[drv]tx_pel_baud: 3x02>> 0x%02X\n", CoaxVal->tx_baud[distance] ); + printk("[drv]tx_pel_line_pos0: 3x07>> 0x%02X\n", CoaxVal->tx_pel_line_pos0[distance] ); + printk("[drv]tx_pel_line_pos1: 3x08>> 0x%02X\n", CoaxVal->tx_pel_line_pos1[distance] ); + printk("[drv]tx_mode: 3x0B>> 0x%02X\n", CoaxVal->tx_mode ); + printk("[drv]tx_baud: 3x00>> 0x%02X\n", CoaxVal->tx_baud[distance]); + printk("[drv]tx_line_pos0: 3x03>> 0x%02X\n", CoaxVal->tx_line_pos0[distance] ); + printk("[drv]tx_line_pos1: 3x04>> 0x%02X\n", CoaxVal->tx_line_pos1[distance] ); + printk("[drv]tx_line_count: 3x05>> 0x%02X\n", CoaxVal->tx_line_count ); + printk("[drv]tx_line_count_max: 3x0A>> 0x%02X\n", CoaxVal->tx_line_count_max ); + printk("[drv]tx_sync_pos0: 3x0D>> 0x%02X\n", CoaxVal->tx_sync_pos0[distance] ); + printk("[drv]tx_sync_pos1: 3x0E>> 0x%02X\n", CoaxVal->tx_sync_pos1[distance] ); + printk("[drv]tx_even: 3x2F>> 0x%02X\n", CoaxVal->tx_even ); + printk("[drv]tx_zero_length: 3x0C>> 0x%02X\n", CoaxVal->tx_zero_length); +#endif + +} + +/************************************************************************************** +* @desc +* RAPTOR3's This function initializes the register associated with the UP Stream.. +* +* @param_in (NC_VD_COAX_Tx_Init_STR *)coax_tx_mode UP Stream Initialize structure +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_TX_INIT +***************************************************************************************/ +int nvp6158_coax_tx_16bit_init( nvp6158_coax_str *ps_coax_str ) +{ + //NC_VD_COAX_STR *coax_tx = (NC_VD_COAX_STR*)p_param; + NC_VD_COAX_Init_STR *CoaxVal; + + unsigned char ch = ps_coax_str->ch % 4; + unsigned char devnum = ps_coax_str->ch / 4; + NC_VIVO_CH_FORMATDEF fmt_def = ps_coax_str->fmt_def; + //int fmt = coax_tx->vivo_fmt; + unsigned char distance = 0; + + if((fmt_def == AHD20_720P_25P) || (fmt_def == AHD20_720P_30P) ||\ + (fmt_def == AHD20_720P_25P_EX) || (fmt_def == AHD20_720P_30P_EX) ||\ + (fmt_def == AHD20_720P_25P_EX_Btype) || (fmt_def == AHD20_720P_30P_EX_Btype)) { + printk("[drv_coax]Ch: %d ACP 16bit initialize!!!\n", ch); + } else if((fmt_def == CVI_4M_25P) || (fmt_def == CVI_4M_30P)) { //some fh cams may need this + // (fmt_def == CVI_8M_15P) || (fmt_def == CVI_8M_12_5P) ) + printk("[drv_coax]Ch: %d CVI New Protocol initialize!!!\n", ch); + } else { + printk("[drv_coax]Ch: %d Can not initialize!! Unsupported format!!\n", ch); + return -1; + } + + CoaxVal = __NC_VD_COAX_16bit_InitFormat_Get( fmt_def ); + printk("[drv_coax]Ch: %d Format >>>>> %s\n", ch, CoaxVal->name ); + + // MPP Coaxial mode select Ch1~4 + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x01); // BANK 1 + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xA8 + ch, 0x08 + ch % 4); // MPP_TST_SEL1 + + // Coaxial each mode set + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05 + ch % 4); // BANK 5 + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x2F, 0x00); // MPP_H_INV, MPP_V_INV, MPP_F_INV + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30, 0xE0); // MPP_H_S[7~4], MPP_H_E[3:0] + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x31, 0x43); // MPP_H_S[7:0] + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x32, 0xA2); // MPP_H_E[7:0] + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7C, CoaxVal->rx_src); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7D, CoaxVal->rx_slice_lev); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x03 + ((ch % 4) / 2)); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x00 + ((ch%2)*0x80), CoaxVal->tx_baud[distance]); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x02 + ((ch%2)*0x80), CoaxVal->tx_pel_baud[distance]); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x03 + ((ch%2)*0x80), CoaxVal->tx_line_pos0[distance]); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x04 + ((ch%2)*0x80), CoaxVal->tx_line_pos1[distance]); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05 + ((ch%2)*0x80), CoaxVal->tx_line_count); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x07 + ((ch%2)*0x80), CoaxVal->tx_pel_line_pos0[distance]); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x08 + ((ch%2)*0x80), CoaxVal->tx_pel_line_pos1[distance]); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0A + ((ch%2)*0x80), CoaxVal->tx_line_count_max); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0B + ((ch%2)*0x80), CoaxVal->tx_mode); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0D + ((ch%2)*0x80), CoaxVal->tx_sync_pos0[distance]); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0E + ((ch%2)*0x80), CoaxVal->tx_sync_pos1[distance]); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x2F + ((ch%2)*0x80), CoaxVal->tx_even); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0C + ((ch%2)*0x80), CoaxVal->tx_zero_length); + +#if DBG_TX_INIT_PRINT + printk("[drv]tx_src: 5x7C>> 0x%02X\n", CoaxVal->rx_src ); + printk("[drv]tx_slice_lev: 5x7D>> 0x%02X\n", CoaxVal->rx_slice_lev ); + printk("[drv]tx_pel_baud: 3x02>> 0x%02X\n", CoaxVal->tx_baud[distance] ); + printk("[drv]tx_pel_line_pos0: 3x07>> 0x%02X\n", CoaxVal->tx_pel_line_pos0[distance] ); + printk("[drv]tx_pel_line_pos1: 3x08>> 0x%02X\n", CoaxVal->tx_pel_line_pos1[distance] ); + printk("[drv]tx_mode: 3x0B>> 0x%02X\n", CoaxVal->tx_mode ); + printk("[drv]tx_baud: 3x00>> 0x%02X\n", CoaxVal->tx_baud[distance]); + printk("[drv]tx_line_pos0: 3x03>> 0x%02X\n", CoaxVal->tx_line_pos0[distance] ); + printk("[drv]tx_line_pos1: 3x04>> 0x%02X\n", CoaxVal->tx_line_pos1[distance] ); + printk("[drv]tx_line_count: 3x05>> 0x%02X\n", CoaxVal->tx_line_count ); + printk("[drv]tx_line_count_max: 3x0A>> 0x%02X\n", CoaxVal->tx_line_count_max ); + printk("[drv]tx_sync_pos0: 3x0D>> 0x%02X\n", CoaxVal->tx_sync_pos0[distance] ); + printk("[drv]tx_sync_pos1: 3x0E>> 0x%02X\n", CoaxVal->tx_sync_pos1[distance] ); + printk("[drv]tx_even: 3x2F>> 0x%02X\n", CoaxVal->tx_even ); + printk("[drv]tx_zero_length: 3x0C>> 0x%02X\n", CoaxVal->tx_zero_length); +#endif + return 0; +} + +/************************************************************************************** +* @desc +* RAPTOR3's Send UP Stream command. +* +* @param_in (NC_VD_COAX_SET_STR *)coax_tx_mode UP Stream Command structure +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_TX_CMD_SEND +***************************************************************************************/ +void nvp6158_coax_tx_cmd_send( nvp6158_coax_str *ps_coax_str ) +//void nvp6158_coax_tx_16bit_init( const unsigned char txch, NC_VIVO_CH_FORMATDEF fmt_def , NC_FORMAT_STANDARD vformat, NC_COAX_CMD_DEF txcmd) +{ + //NC_VD_COAX_STR *coax_tx = (NC_VD_COAX_STR*)p_param; + int i; + int cmd_cnt = 0; + unsigned char ch = ps_coax_str->ch % 4; + unsigned char devnum = ps_coax_str->ch/4; + NC_COAX_CMD_DEF cmd = ps_coax_str->cmd; + NC_VIVO_CH_FORMATDEF vivofmt = ps_coax_str->fmt_def; + NC_FORMAT_STANDARD format = NVP6158_GetFmtStd_from_Fmtdef(vivofmt); + + unsigned char tx_bank = 0x00; + unsigned char tx_cmd_addr = 0x00; + unsigned char tx_shot_addr = 0x00; + unsigned char command[32] = {0,}; + unsigned char TCP_CMD_Stop_v10[10] = { 0xb5, 0x00, 0x14, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc9, 0x80 }; + //unsigned char TCP_CMD_Stop_v20[10] = { 0xb5, 0x01, 0x14, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc5, 0x80 }; + + // UP Stream get from coax table + NC_VD_COAX_Init_STR *CoaxVal = __NC_VD_COAX_InitFormat_Get(vivofmt); // Get from Coax_Tx_Init Table + NC_VD_ACP_CMDDEF_STR *pCMD = __NC_VD_ACP_Get_CommandFormat_Get(cmd); // Get From Coax_Tx_Command Table + printk("[drv_coax]Ch: %d Command >>>>> %s >>> autostop = %d\n", ch, pCMD->name, pCMD->autostop); + + tx_bank = CoaxVal->tx_bank; + tx_cmd_addr = CoaxVal->tx_cmd_addr; + tx_shot_addr = CoaxVal->tx_shot_addr; + + // UP Stream command copy in coax command table + cmd_cnt = __NC_VD_COAX_Command_Copy( format, vivofmt, command, pCMD ); + + //printk("tx_bank[%2x], tx_cmd_addr[%2x], tx_shot_addr[%2x]\n", tx_bank, tx_cmd_addr, tx_shot_addr); + //for(i=0;ishot_delay); + gpio_i2c_write(nvp6158_iic_addr[devnum], tx_shot_addr + ((ch % 2) * 0x80), 0x00); + + msleep(CoaxVal->reset_delay); + + for(i=0; ishot_delay); + //if(cmd == COAX_CMD_STOP) + gpio_i2c_write(nvp6158_iic_addr[devnum], tx_shot_addr + ((ch % 2) * 0x80), 0x00); + } else if(format == FMT_CVI) { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, tx_bank + (ch % 4)); + for(i=0; iautostop == 1)) + gpio_i2c_write(nvp6158_iic_addr[devnum], tx_shot_addr +((ch % 2) * 0x80), 0x00); + } else if(format == FMT_TVI) { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, tx_bank + ((ch % 4) / 2) ); + for(i=0; iautostop == 1)) + gpio_i2c_write(nvp6158_iic_addr[devnum], tx_shot_addr + ((ch % 2) * 0x80), 0x00); + + if(pCMD->autostop == 1) { + if(vivofmt == TVI_4M_15P) + msleep(70); + else + msleep(30); + #if 0 + if( (vivofmt == TVI_4M_30P) || (vivofmt == TVI_4M_25P) || (vivofmt == TVI_4M_15P) ) + { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, tx_bank+((ch%4)/2)); + for(i=0;i<10;i++) + { + gpio_i2c_write(nvp6158_iic_addr[devnum], tx_cmd_addr+((ch%2)*0x80)+i, TCP_CMD_Stop_v20[i]); + } + } + // shot + gpio_i2c_write(nvp6158_iic_addr[devnum], tx_shot_addr+((ch%2)*0x80), 0x01); + gpio_i2c_write(nvp6158_iic_addr[devnum], tx_shot_addr+((ch%2)*0x80), 0x00); + else + #endif + { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, tx_bank + ((ch % 4) / 2)); + for(i=0; i<10; i++) { + gpio_i2c_write(nvp6158_iic_addr[devnum], tx_cmd_addr + + ((ch % 2) * 0x80) + i, TCP_CMD_Stop_v10[i]); + } + } + + // shot + gpio_i2c_write(nvp6158_iic_addr[devnum], tx_shot_addr + ((ch % 2) * 0x80), 0x08); + gpio_i2c_write(nvp6158_iic_addr[devnum], tx_shot_addr + ((ch % 2) * 0x80), 0x00); + } + } else { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, tx_bank+((ch % 4) / 2) ); + for(i=0; iautostop == 1)) + gpio_i2c_write(nvp6158_iic_addr[devnum], tx_shot_addr + ((ch % 2) * 0x80), 0x00); + } + + if(cmd == COAX_CMD_STOP) {//stop command sends twice in case of AF camera losses response... + msleep(35); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x03 + ((ch % 4) / 2) ); + gpio_i2c_write(nvp6158_iic_addr[devnum], tx_shot_addr + ((ch % 2) * 0x80), 0x01); + gpio_i2c_write(nvp6158_iic_addr[devnum], tx_shot_addr + ((ch % 2) * 0x80), 0x00); + } +} + +/************************************************************************************** +* @desc +* RAPTOR3's Send UP Stream command. +* +* @param_in (NC_VD_COAX_SET_STR *)coax_tx_mode UP Stream Command structure +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_TX_CMD_SEND +***************************************************************************************/ +void nvp6158_coax_tx_16bit_cmd_send( nvp6158_coax_str *ps_coax_str ) +{ + //NC_VD_COAX_STR *coax_tx = (NC_VD_COAX_STR*)p_param; + int i; + int cmd_cnt = 0; + unsigned char ch = ps_coax_str->ch % 4; + unsigned char devnum = ps_coax_str->ch / 4; + NC_COAX_CMD_DEF cmd = ps_coax_str->cmd; + NC_VIVO_CH_FORMATDEF vivofmt = ps_coax_str->fmt_def; + NC_FORMAT_STANDARD format = NVP6158_GetFmtStd_from_Fmtdef(vivofmt); + + unsigned char tx_bank = 0x00; + unsigned char tx_cmd_addr = 0x00; + unsigned char tx_shot_addr = 0x00; + unsigned char command[32] ={0,}; + + // UP Stream get from coax table + NC_VD_COAX_Init_STR *CoaxVal = __NC_VD_COAX_InitFormat_Get(vivofmt); // Get from Coax_Tx_Init Table + NC_VD_ACP_CMDDEF_STR *pCMD = __NC_VD_ACP_Get_CommandFormat_Get(cmd); // Get From Coax_Tx_Command Table + printk("[drv_coax]Ch: %d Command >>>>> %s\n", ch, pCMD->name ); + + tx_bank = CoaxVal->tx_bank; + tx_cmd_addr = CoaxVal->tx_cmd_addr; + tx_shot_addr = CoaxVal->tx_shot_addr; + + // UP Stream command copy in coax command table + cmd_cnt = __NC_VD_COAX_16bit_Command_Copy( format, vivofmt, command, pCMD ); + + // Adjust Bank + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x03 + ((ch % 4) / 2) ); + + // fill Reset + for(i=0; ich % 4; + unsigned char devnum = ps_coax_str->ch / 4; + NC_COAX_CMD_DEF cmd = ps_coax_str->cmd; + NC_VIVO_CH_FORMATDEF vivofmt = ps_coax_str->fmt_def; + NC_FORMAT_STANDARD format = NVP6158_GetFmtStd_from_Fmtdef(vivofmt); + + unsigned char tx_bank = 0x00; + unsigned char tx_cmd_addr = 0x00; + unsigned char tx_shot_addr = 0x00; + unsigned char command[32] ={0,}; + + // UP Stream get from coax table + NC_VD_COAX_Init_STR *CoaxVal = __NC_VD_COAX_InitFormat_Get(vivofmt); // Get from Coax_Tx_Init Table + NC_VD_ACP_CMDDEF_STR *pCMD = __NC_VD_ACP_Get_CommandFormat_Get(cmd); // Get From Coax_Tx_Command Table + printk("[drv_coax]Ch: %d Command >>>>> %s\n", ch, pCMD->name ); + + tx_bank = CoaxVal->tx_bank; + tx_cmd_addr = CoaxVal->tx_cmd_addr; + tx_shot_addr = CoaxVal->tx_shot_addr; + + // UP Stream command copy in coax command table + cmd_cnt = __NC_VD_COAX_16bit_Command_Copy( format, vivofmt, command, pCMD ); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, tx_bank + (ch % 4)); + for(i=0; ich % 4; + unsigned char devnum = ps_coax_str->ch / 4; + //NC_VIVO_CH_FORMATDEF vivofmt = coax_rx->vivo_fmt; + + NC_VD_COAX_Init_STR *coax_rx_val = __NC_VD_COAX_InitFormat_Get(ps_coax_str->fmt_def); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x03 + ((ch % 4) / 2)); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x63 + ((ch%2)*0x80), coax_rx_val->rx_comm_on); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x62 + ((ch%2)*0x80), coax_rx_val->rx_area); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x66 + ((ch%2)*0x80), coax_rx_val->rx_signal_enhance); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x69 + ((ch%2)*0x80), coax_rx_val->rx_manual_duty); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x60 + ((ch%2)*0x80), coax_rx_val->rx_head_matching); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x61 + ((ch%2)*0x80), coax_rx_val->rx_data_rz); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x68 + ((ch%2)*0x80), coax_rx_val->rx_sz); +#if DBG_RX_INIT_PRINT + printk("[drv]Channel %d Format >>>>> %s\n", ch, coax_rx_val->name ); + printk("[drv]rx_head_matching: 0x60 >> 0x%02X\n", coax_rx_val->rx_head_matching); + printk("[drv]rx_data_rz: 0x61 >> 0x%02X\n", coax_rx_val->rx_data_rz); + printk("[drv]rx_area: 0x62 >> 0x%02X\n", coax_rx_val->rx_area); + printk("[drv]rx_comm_on: 0x63 >> 0x%02X\n", coax_rx_val->rx_comm_on ); + printk("[drv]rx_signal_enhance: 0x66 >> 0x%02X\n", coax_rx_val->rx_signal_enhance); + printk("[drv]rx_sz: 0x68 >> 0x%02X\n", coax_rx_val->rx_sz); + printk("[drv]rx_manual_duty: 0x69 >> 0x%02X\n", coax_rx_val->rx_manual_duty); +#endif + +} + +/************************************************************************************** +* @desc +* RAPTOR3's Read down stream data. +* +* @param_in (NC_VD_COAX_SET_STR *)coax_tx_mode Down Stream read structure +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_RX_DATA_READ +***************************************************************************************/ +void nvp6158_coax_rx_data_get( nvp6158_coax_str *coax_rx ) +{ + //NC_VD_COAX_STR *coax_rx = (NC_VD_COAX_STR*)p_param; + + int ii = 0; + unsigned char ch = coax_rx->ch % 4; + unsigned char devnum = coax_rx->ch / 4; + NC_FORMAT_STANDARD format = NVP6158_GetFmtStd_from_Fmtdef(coax_rx->fmt_def); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x03 + ((ch % 4) / 2)); + + if( (format == FMT_CVI) || (format == FMT_TVI) ) { + for(ii=0; ii<5; ii++) { + coax_rx->rx_data1[ii] = gpio_i2c_read(nvp6158_iic_addr[devnum], (0x40+((ch%2)*0x80))+ii); // ChX_Rx_Line_1 : 0x40 ~ 0x44 5byte + coax_rx->rx_data2[ii] = gpio_i2c_read(nvp6158_iic_addr[devnum], (0x45+((ch%2)*0x80))+ii); // ChX_Rx_Line_2 : 0x45 ~ 0x49 5byte + coax_rx->rx_data3[ii] = gpio_i2c_read(nvp6158_iic_addr[devnum], (0x4A+((ch%2)*0x80))+ii); // ChX_Rx_Line_3 : 0x4A ~ 0x4E 5byte + coax_rx->rx_data4[ii] = gpio_i2c_read(nvp6158_iic_addr[devnum], (0x6C+((ch%2)*0x80))+ii); // ChX_Rx_Line_4 : 0x6C ~ 0x70 5byte + coax_rx->rx_data5[ii] = gpio_i2c_read(nvp6158_iic_addr[devnum], (0x71+((ch%2)*0x80))+ii); // ChX_Rx_Line_5 : 0x71 ~ 0x75 5byte + coax_rx->rx_data6[ii] = gpio_i2c_read(nvp6158_iic_addr[devnum], (0x76+((ch%2)*0x80))+ii); // ChX_Rx_Line_6 : 0x76 ~ 0x7A 5byte + } + } else {// AHD + for(ii=0; ii<8; ii++) { + coax_rx->rx_pelco_data[ii] = gpio_i2c_read(nvp6158_iic_addr[devnum], (0x50+((ch%2)*0x80))+ii); // ChX_PELCO_Rx_Line_1 ~ 8 : 0x50 ~ 0x57 8byte + } + } +} + +/************************************************************************************** +* @desc +* RAPTOR3's Down stream buffer clear. +* +* @param_in (NC_VD_COAX_SET_STR *)coax_tx_mode UP Stream Command structure +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_RX_BUF_CLEAR +***************************************************************************************/ +void nvp6158_coax_rx_buffer_clear( nvp6158_coax_str *ps_coax_str ) +{ + //NC_VD_COAX_STR *coax_val = (NC_VD_COAX_STR*)p_param; + + unsigned char ch = ps_coax_str->ch%4; + unsigned char devnum = ps_coax_str->ch/4; + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x03+((ch%4)/2)); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x3A+((ch%2)*0x80), 0x01); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x3A+((ch%2)*0x80), 0x00); +} + +/************************************************************************************** +* @desc +* RAPTOR3's Down stream mode off. +* +* @param_in (NC_VD_COAX_SET_STR *)coax_tx_mode UP Stream Command structure +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_RX_DEINIT +***************************************************************************************/ +void nvp6158_coax_rx_deinit( nvp6158_coax_str *ps_coax_str ) +{ + //NC_VD_COAX_STR *coax_val = (NC_VD_COAX_STR*)p_param; + + unsigned char ch = ps_coax_str->ch%4; + unsigned char devnum = ps_coax_str->ch/4; + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x03+((ch%4)/2)); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x63+((ch%2)*0x80), 0); +} + +/*======================================================================================================= +******************************************************************************************************** +************************** Coaxial protocol firmware upgrade function ********************************** +******************************************************************************************************** + * + * Coaxial protocol firmware upgrade Flow + * 1. ACP Check - Down Stream Header 0x55 - nvp6158_coax_fw_ready_header_check_from_isp_recv + * 2.1 FW ready send - nvp6158_coax_fw_ready_cmd_to_isp_send + * 2.2 FW ready ACK receive - nvp6158_coax_fw_ready_cmd_ack_from_isp_recv + * 3.1 FW start send - nvp6158_coax_fw_start_cmd_to_isp_send + * 3.2 FW start ACK receive - nvp6158_coax_fw_start_cmd_ack_from_isp_recv + * 4.1 FW data send - 139byte - nvp6158_coax_fw_one_packet_data_to_isp_send + * 4.2 FW data ACK receive - offset - nvp6158_coax_fw_one_packet_data_ack_from_isp_recv + * 5.1 FW end send - nvp6158_coax_fw_end_cmd_to_isp_send + * 5.2 FW end ACK receive - nvp6158_coax_fw_end_cmd_ack_from_isp_recv + ========================================================================================================*/ + +/************************************************************************************** +* @desc +* RAPTOR3's Down stream check header value.(AHD : 0x55) +* +* @param_in (FIRMWARE_UP_FILE_INFO *)p_param->channel FW Update channel +* @param_out (FIRMWARE_UP_FILE_INFO *)p_param->result Header check result +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_FW_ACP_HEADER_GET +***************************************************************************************/ +void nvp6158_coax_fw_ready_header_check_from_isp_recv(void *p_param) +{ + int ret = FW_FAILURE; + int ch = 0; + int devnum = 0; + unsigned char readval = 0; + + FIRMWARE_UP_FILE_INFO *pstFileInfo = (FIRMWARE_UP_FILE_INFO*)p_param; + ch = pstFileInfo->channel; + devnum = pstFileInfo->channel/4; + + /* set register */ + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x03+((ch%4)/2)); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x50+((ch%2)*0x80), 0x05 ); // PELCO Down Stream Read 1st Line + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x60+((ch%2)*0x80), 0x55 ); // Header Matching + + /* If the header is (0x50=>0x55) and chip information is (0x51=>0x3X, 0x4X, 0x5X ), it can update firmware */ + if( gpio_i2c_read( nvp6158_iic_addr[devnum], 0x50+((ch%2)*0x80) ) == 0x55 ) { + printk(">>>>> DRV[%s:%d] CH:%d, this camera can update, please, wait! = 0x%x\n", + __func__, __LINE__, ch, gpio_i2c_read( nvp6158_iic_addr[ch/4], 0x51+((ch%2)*0x80))); + ret = FW_SUCCESS; + } else { + readval= gpio_i2c_read( nvp6158_iic_addr[devnum], 0x50+((ch%2)*0x80) ); + printk(">>>>> DRV[%s:%d] check ACP_STATUS_MODE::0x%x\n", __func__, __LINE__, readval ); + ret = FW_FAILURE; + } + + pstFileInfo->result = ret; +} + +/************************************************************************************** +* @desc +* RAPTOR3's FW Ready command send to camera ( Mode change to FHD@25P ) +* +* @param_in (FIRMWARE_UP_FILE_INFO *)p_param->channel FW Update channel +* @param_in (FIRMWARE_UP_FILE_INFO *)p_param->cp_mode Camera Format +* @param_out (FIRMWARE_UP_FILE_INFO *)p_param->result Function execution result +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_FW_READY_CMD_SET +***************************************************************************************/ +void nvp6158_coax_fw_ready_cmd_to_isp_send(void *p_param) // FW Ready +{ + int ch = 0; + int devnum = 0; + int ret = FW_FAILURE; + int cp_mode = 0; + + FIRMWARE_UP_FILE_INFO *pstFileInfo = (FIRMWARE_UP_FILE_INFO*)p_param; + ch = pstFileInfo->channel; + cp_mode = pstFileInfo->cp_mode; + devnum = pstFileInfo->channel/4; + + /* Adjust Tx */ + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x03+((ch%4)/2)); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0A+((ch%2)*0x80), 0x04); // Tx Line count max + + /* change video mode FHD@25P Command Send */ + if( (cp_mode == FMT_AHD20) || (cp_mode == FMT_AHD30)) { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x10+((ch%2)*0x80), 0x60); // Register Write Control - 17th line + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x11+((ch%2)*0x80), 0xB0); // table(Mode Change Command) - 18th line + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x12+((ch%2)*0x80), 0x02); // Flash Update Mode(big data) - 19th line + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x13+((ch%2)*0x80), 0x02); // Init Value(FW Information Check Mode) - 20th line + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x09+((ch%2)*0x80), 0x08); // trigger on + msleep(400); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x09+((ch%2)*0x80), 0x10); // reset + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x09+((ch%2)*0x80), 0x00); // trigger Off + printk(">>>>> DRV[%s:%d] CH:%d, nvp6158_coax_fw_ready_cmd_to_isp_send!!- AHD\n", + __func__, __LINE__, ch ); + ret = FW_SUCCESS; + } else if((cp_mode == FMT_CVI) || (cp_mode == FMT_TVI)) { + /* change video mode FHD@25P Command Send */ + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x03+((ch%4)/2) ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x10+((ch%2)*0x80), 0x55); // 0x55(header) - 16th line + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x11+((ch%2)*0x80), 0x60); // Register Write Control - 17th line + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x12+((ch%2)*0x80), 0xB0); // table(Mode Change Command) - 18th line + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x13+((ch%2)*0x80), 0x02); // Flash Update Mode - 19th line + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x14+((ch%2)*0x80), 0x00); // Init Value(FW Information Check Mode) - 20th line + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x09+((ch%2)*0x80), 0x08); // trigger on + msleep(1000); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x09+((ch%2)*0x80), 0x10); // reset + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x09+((ch%2)*0x80), 0x00); // trigger Off + printk(">>>>> DRV[%s:%d] CH:%d, nvp6158_coax_fw_ready_cmd_to_isp_send!!- AHD\n", + __func__, __LINE__, ch ); + ret = FW_SUCCESS; + } else { + printk(">>>> DRV[%s:%d] CH:%d, FMT:%d > Unknown Format!!! \n", __func__, __LINE__, ch, cp_mode ); + ret = FW_FAILURE; + } + + pstFileInfo->result = ret; +} + +/************************************************************************************** +* @desc +* RAPTOR3's FW Ready ACK receive from camera +* +* @param_in (FIRMWARE_UP_FILE_INFO *)p_param->channel FW Update channel + +* @param_out (FIRMWARE_UP_FILE_INFO *)p_param->result Function execution result +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_FW_READY_ACK_GET +***************************************************************************************/ +void nvp6158_coax_fw_ready_cmd_ack_from_isp_recv(void *p_param) +{ + int ret = FW_FAILURE; + int ch = 0; + int devnum = 0; + unsigned char retval = 0x00; + unsigned char retval2 = 0x00; + FIRMWARE_UP_FILE_INFO *pstFileInfo = (FIRMWARE_UP_FILE_INFO*)p_param; + ch = pstFileInfo->channel; + devnum = pstFileInfo->channel/4; + + /* Adjust Rx FHD@25P */ + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x03+((ch%4)/2)); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x63+((ch%2)*0x80), 0x01 ); // Ch_X Rx ON + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x62+((ch%2)*0x80), 0x05 ); // Ch_X Rx Area + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x66+((ch%2)*0x80), 0x81 ); // Ch_X Rx Signal enhance + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x69+((ch%2)*0x80), 0x2D ); // Ch_X Rx Manual duty + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x60+((ch%2)*0x80), 0x55 ); // Ch_X Rx Header matching + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x61+((ch%2)*0x80), 0x00 ); // Ch_X Rx data_rz + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x68+((ch%2)*0x80), 0x80 ); // Ch_X Rx SZ + + if(gpio_i2c_read( nvp6158_iic_addr[devnum], 0x57+((ch%2)*0x80) ) == 0x02) { + /* get status, If the status is 0x00(Camera information), 0x01(Firmware version */ + if(gpio_i2c_read( nvp6158_iic_addr[devnum], 0x56+((ch%2)*0x80) ) == 0x00) { + printk(">>>>> DRV[%s:%d]CH:%d Receive ISP status : [READY]\n", __func__, __LINE__, ch ); + ret = FW_SUCCESS; + } + } else { + retval = gpio_i2c_read( nvp6158_iic_addr[devnum], 0x56+((ch%2)*0x80) ); + retval2 = gpio_i2c_read( nvp6158_iic_addr[devnum], 0x57+((ch%2)*0x80) ); + printk(">>>>> DRV[%s:%d]CH:%d retry : Receive ISP status[READY], [0x56-true[0x00]:0x%x], [0x57-true[0x02]:0x%x]\n", + __func__, __LINE__, ch, retval, retval2 ); + ret = FW_FAILURE; + } + + /* Rx Buffer clear */ + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x03+((ch%4)/2)); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x3A+((ch%2)*0x80), 0x01); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x3A+((ch%2)*0x80), 0x00); + + pstFileInfo->result = ret; +} + +/************************************************************************************** +* @desc +* RAPTOR3's FW start command send to camera ( change to black pattern ) +* +* @param_in (FIRMWARE_UP_FILE_INFO *)p_param->channel FW Update channel +* @param_in (FIRMWARE_UP_FILE_INFO *)p_param->cp_mode Camera Format +* @param_out (FIRMWARE_UP_FILE_INFO *)p_param->result Function execution result +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_FW_START_CMD_SET +***************************************************************************************/ +void nvp6158_coax_fw_start_cmd_to_isp_send(void *p_param) +{ + int ch = 0; + int devnum = 0; + + FIRMWARE_UP_FILE_INFO *pstFileInfo = (FIRMWARE_UP_FILE_INFO*)p_param; + + ch = pstFileInfo->channel; + devnum = pstFileInfo->channel/4; + + /* Adjust Tx */ + gpio_i2c_write( nvp6158_iic_addr[devnum], 0xFF, 0x03+((ch%4)/2) ); + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x00+((ch%2)*0x80), 0x2D); // Duty + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x03+((ch%2)*0x80), 0x0D); // line + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x05+((ch%2)*0x80), 0x03); // tx_line_count + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x0A+((ch%2)*0x80), 0x04); // tx_line_count_max + + // Tx Command set + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x10+((ch%2)*0x80), 0x60); // Register Write Control - 17th line + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x11+((ch%2)*0x80), 0xB0); // table(Mode Change Command) - 18th line + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x12+((ch%2)*0x80), 0x02); // Flash Update Mode(big data) - 19th line + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x13+((ch%2)*0x80), 0x40); // Start firmware update - 20th line + + // Tx Command Shot + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x09+((ch%2)*0x80), 0x08); // trigger on + msleep(200); + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x09+((ch%2)*0x80), 0x10); // reset + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x09+((ch%2)*0x80), 0x00); // trigger Off + + printk(">>>>> DRV[%s:%d]CH:%d >> Send command[START]\n", __func__, __LINE__, ch ); + +} + +/************************************************************************************** +* @desc +* RAPTOR3's FW Start ACK receive from camera +* +* @param_in (FIRMWARE_UP_FILE_INFO *)p_param->channel FW Update channel +* @param_in (FIRMWARE_UP_FILE_INFO *)p_param->cp_mode Camera Format +* @param_out (FIRMWARE_UP_FILE_INFO *)p_param->result Function execution result +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_FW_START_ACK_GET +***************************************************************************************/ +void nvp6158_coax_fw_start_cmd_ack_from_isp_recv( void *p_param ) +{ + int ch = 0; + int devnum = 0; + int ret = FW_FAILURE; + + FIRMWARE_UP_FILE_INFO *pstFileInfo = (FIRMWARE_UP_FILE_INFO*)p_param; + ch = pstFileInfo->channel; + devnum = pstFileInfo->channel/4; + + /* Adjust Rx FHD@25P */ + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x03+((ch%4)/2)); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x63+((ch%2)*0x80), 0x01 ); // Ch_X Rx ON + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x62+((ch%2)*0x80), 0x05 ); // Ch_X Rx Area + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x66+((ch%2)*0x80), 0x81 ); // Ch_X Rx Signal enhance + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x69+((ch%2)*0x80), 0x2D ); // Ch_X Rx Manual duty + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x60+((ch%2)*0x80), 0x55 ); // Ch_X Rx Header matching + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x61+((ch%2)*0x80), 0x00 ); // Ch_X Rx data_rz + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x68+((ch%2)*0x80), 0x80 ); // Ch_X Rx SZ + + if( gpio_i2c_read( nvp6158_iic_addr[devnum], 0x57+((ch%2)*0x80) ) == 0x02) { + if( gpio_i2c_read( nvp6158_iic_addr[devnum], 0x56+((ch%2)*0x80) ) == 0x00) { + printk(">>>>> DRV[%s:%d]CH:%d Receive ISP status : [START]\n", __func__, __LINE__, ch ); + ret = FW_SUCCESS; + } else { + unsigned char retval1; + unsigned char retval2; + gpio_i2c_write( nvp6158_iic_addr[devnum], 0xFF, 0x03+((ch%4)/2)); + retval1 = gpio_i2c_read( nvp6158_iic_addr[devnum], 0x56+((ch%2)*0x80) ); + retval2 = gpio_i2c_read( nvp6158_iic_addr[devnum], 0x57+((ch%2)*0x80) ); + ret = FW_FAILURE; + printk(">>>>> DRV[%s:%d]CH:%d retry : Receive ISP status[START], [0x56-true[0x02]:0x%x], [0x57-true[0x02]:0x%x]\n", + __func__, __LINE__, ch, retval1, retval2 ); + } + } + + /* Rx Buffer clear */ + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x03+((ch%4)/2)); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x3A+((ch%2)*0x80), 0x01); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x3A+((ch%2)*0x80), 0x00); + + pstFileInfo->result = ret; +} + +/************************************************************************************** +* @desc +* RAPTOR3's FW Data send to camera(One packet data size 139byte) +* +* @param_in (FIRMWARE_UP_FILE_INFO *)p_param->channel FW Update channel +* @param_in (FIRMWARE_UP_FILE_INFO *)p_param->readsize One packet data size +* @param_out (FIRMWARE_UP_FILE_INFO *)p_param->currentFileOffset File offset +* @param_out (FIRMWARE_UP_FILE_INFO *)p_param->result Function execution result +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_FW_SEND_DATA_SET +***************************************************************************************/ +void nvp6158_coax_fw_one_packet_data_to_isp_send( void *p_param ) +{ + int ch = 0; + int devnum = 0; + int ii = 0; + unsigned int low = 0x00; + unsigned int mid = 0x00; + unsigned int high = 0x00; + unsigned int readsize = 0; + int byteNumOfPacket = 0; + FIRMWARE_UP_FILE_INFO *pstFileInfo = (FIRMWARE_UP_FILE_INFO*)p_param; + + /* file information */ + ch = pstFileInfo->channel; + readsize = pstFileInfo->readsize; + devnum = pstFileInfo->channel/4; + + /* fill packet(139bytes), end packet is filled with 0xff */ + gpio_i2c_write( nvp6158_iic_addr[devnum], 0xff, 0x0c+(ch%4) ); + for( ii = 0; ii < 139; ii++ ) { + if( byteNumOfPacket < readsize) { + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x00+ii, pstFileInfo->onepacketbuf[ii] ); + byteNumOfPacket++; + } else if( byteNumOfPacket >= readsize ) {// end packet : fill 0xff + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x00+ii, 0xff ); + byteNumOfPacket++; + } + + if( ii == 0 ) + low = pstFileInfo->onepacketbuf[ii]; + else if( ii == 1 ) + mid = pstFileInfo->onepacketbuf[ii]; + else if( ii == 2 ) + high = pstFileInfo->onepacketbuf[ii]; + } + + /* offset */ + pstFileInfo->currentFileOffset = (unsigned int)((high << 16 )&(0xFF0000)) | + (unsigned int)((mid << 8 )&(0xFF00)) | (unsigned char)(low); + + /* Tx Change mode to use Big data */ + gpio_i2c_write( nvp6158_iic_addr[devnum], 0xFF, 0x03+((ch%4)/2) ); + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x0B+((ch%2)*0x80), 0x30); + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x05+((ch%2)*0x80), 0x8A); + + /* Tx Shot */ + gpio_i2c_write( nvp6158_iic_addr[devnum], 0xFF, 0x03+((ch%4)/2) ); + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x09+((ch%2)*0x80), 0x08); // trigger on +} + +/************************************************************************************** +* @desc +* RAPTOR3's FW Data ACK receive from camera +* +* @param_in (FIRMWARE_UP_FILE_INFO *)p_param->channel FW Update channel +* @param_in (FIRMWARE_UP_FILE_INFO *)p_param->currentFileOffset File offset + +* @param_out (FIRMWARE_UP_FILE_INFO *)p_param->result Function execution result +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_FW_SEND_ACK_GET +***************************************************************************************/ +void nvp6158_coax_fw_one_packet_data_ack_from_isp_recv( void *p_param ) +{ + int ret = FW_FAILURE; + int ch = 0; + int devnum = 0; + unsigned int onepacketaddr = 0; + unsigned int receive_addr = 0; + + FIRMWARE_UP_FILE_INFO *pstFileInfo = (FIRMWARE_UP_FILE_INFO*)p_param; + ch = pstFileInfo->channel; + onepacketaddr = pstFileInfo->currentFileOffset; + devnum = pstFileInfo->channel/4; + + /* Adjust Rx FHD@25P */ + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x03+((ch%4)/2)); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x63+((ch%2)*0x80), 0x01 ); // Ch_X Rx ON + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x62+((ch%2)*0x80), 0x05 ); // Ch_X Rx Area + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x66+((ch%2)*0x80), 0x81 ); // Ch_X Rx Signal enhance + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x69+((ch%2)*0x80), 0x2D ); // Ch_X Rx Manual duty + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x60+((ch%2)*0x80), 0x55 ); // Ch_X Rx Header matching + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x61+((ch%2)*0x80), 0x00 ); // Ch_X Rx data_rz + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x68+((ch%2)*0x80), 0x80 ); // Ch_X Rx SZ + + if( gpio_i2c_read( nvp6158_iic_addr[devnum], 0x57+((ch%2)*0x80) ) == 0x02 ) { + /* check ISP status - only check first packet */ + if( pstFileInfo->currentpacketnum == 0 ) { + if( gpio_i2c_read( nvp6158_iic_addr[devnum], 0x56+((ch%2)*0x80) ) == 0x03 ) { + pstFileInfo->result = FW_FAILURE; + printk(">>>>> DRV[%s:%d] CH:%d, Failed, error status, code=3..................\n", + __func__, __LINE__, ch ); + return; + } + } + + /* check offset */ + receive_addr = (( gpio_i2c_read( nvp6158_iic_addr[devnum], 0x53+((ch%2)*0x80))<<16) + \ + (gpio_i2c_read( nvp6158_iic_addr[devnum], 0x54+((ch%2)*0x80))<<8) + + gpio_i2c_read( nvp6158_iic_addr[devnum], 0x55+((ch%2)*0x80))); + if( onepacketaddr == receive_addr ) { + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x09+((ch%2)*0x80), 0x10); // Reset + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x09+((ch%2)*0x80), 0x00); // trigger off + ret = FW_SUCCESS; + pstFileInfo->receive_addr = receive_addr; + pstFileInfo->result = ret; + } + } + + pstFileInfo->result = ret; +} + +/************************************************************************************** +* @desc +* RAPTOR3's FW End command send to camera +* +* @param_in (FIRMWARE_UP_FILE_INFO *)p_param->channel FW Update channel +* @param_in (FIRMWARE_UP_FILE_INFO *)p_param->result FW Data send result +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_FW_END_CMD_SET +***************************************************************************************/ +void nvp6158_coax_fw_end_cmd_to_isp_send(void *p_param) +{ + int ch = 0; + int devnum = 0; + int send_success = 0; + + FIRMWARE_UP_FILE_INFO *pstFileInfo = (FIRMWARE_UP_FILE_INFO*)p_param; + + ch = pstFileInfo->channel; + send_success = pstFileInfo->result; + devnum = pstFileInfo->channel/4; + + /* adjust Tx line */ + gpio_i2c_write( nvp6158_iic_addr[devnum], 0xFF, 0x03+((ch%4)/2) ); + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x00+((ch%2)*0x80), 0x2D); // Duty + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x0B+((ch%2)*0x80), 0x10); // Tx_Mode + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x03+((ch%2)*0x80), 0x0D); // line + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x05+((ch%2)*0x80), 0x03); // Tx_Line Count 3 line number + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x0A+((ch%2)*0x80), 0x03); // Tx Total Line Count 3 line number + + /* Fill end command */ + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x10+((ch%2)*0x80), 0x60); + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x11+((ch%2)*0x80), 0xb0); + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x12+((ch%2)*0x80), 0x02); + if( send_success == FW_FAILURE ) { + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x13+((ch%2)*0x80), 0xE0/*0xC0*/); + printk(">>>>> DRV[%s:%d] CH:%d, Camera UPDATE error signal. send Abnormal ending!\n", + __func__, __LINE__, ch ); + } else { + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x13+((ch%2)*0x80), 0x80/*0x60*/); + printk(">>>>> DVR[%s:%d] CH:%d, Camera UPDATE ending signal. wait please!\n", + __func__, __LINE__, ch ); + } + + /* Shot */ + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x09+((ch%2)*0x80), 0x08); + msleep(400); + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x09+((ch%2)*0x80), 0x00); + +} + +/************************************************************************************** +* @desc +* RAPTOR3's FW End command ACK receive from camera +* +* @param_in (FIRMWARE_UP_FILE_INFO *)p_param->channel FW Update channel +* +* @param_out (FIRMWARE_UP_FILE_INFO *)p_param->result Function execution result +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_FW_END_ACK_GET +***************************************************************************************/ +void nvp6158_coax_fw_end_cmd_ack_from_isp_recv(void *p_param) +{ + int ch = 0; + int devnum = 0; + + unsigned char videofm = 0x00; + unsigned char ack_return = 0x00; + unsigned char isp_status = 0x00; + FIRMWARE_UP_FILE_INFO *pstFileInfo = (FIRMWARE_UP_FILE_INFO*)p_param; + + ch = pstFileInfo->channel; + devnum = pstFileInfo->channel/4; + + /* check video format(video loss), 0:videoloss, 1:video on */ + gpio_i2c_write( nvp6158_iic_addr[devnum], 0xFF, 0x05+(ch%4)); + videofm = gpio_i2c_read( nvp6158_iic_addr[devnum], 0xF0); + + if( videofm == 0xFF ) { + printk(">>>>> DRV[%s:%d] Final[CH:%d], No video[END]!\n", __func__, __LINE__, ch ); + pstFileInfo->result = FW_FAILURE; + return; + } + + /* Adjust Rx FHD@25P */ + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x03+((ch%4)/2)); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x63+((ch%2)*0x80), 0x01 ); // Ch_X Rx ON + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x62+((ch%2)*0x80), 0x05 ); // Ch_X Rx Area + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x66+((ch%2)*0x80), 0x81 ); // Ch_X Rx Signal enhance + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x69+((ch%2)*0x80), 0x2D ); // Ch_X Rx Manual duty + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x60+((ch%2)*0x80), 0x55 ); // Ch_X Rx Header matching + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x61+((ch%2)*0x80), 0x00 ); // Ch_X Rx data_rz + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x68+((ch%2)*0x80), 0x80 ); // Ch_X Rx SZ + + /* get status, If the ack_return(0x56) is 0x05(completed writing f/w file to isp's flash) */ + gpio_i2c_write( nvp6158_iic_addr[devnum], 0xFF, 0x03+((ch%4)/2)); + ack_return = gpio_i2c_read( nvp6158_iic_addr[devnum], 0x56+((ch%2)*0x80) ); + isp_status = gpio_i2c_read( nvp6158_iic_addr[devnum], 0x57+((ch%2)*0x80) ); + if( isp_status == 0x02 && ack_return == 0x05 ) { + printk(">>>>> DRV[%s:%d]CH:%d Receive ISP status : [END]\n", __func__, __LINE__, ch ); + pstFileInfo->result = FW_SUCCESS; + return; + } else { + printk(">>>>> DRV[%s:%d]CH:%d retry : Receive ISP status[END], [0x56-true[0x05]:0x%x], [0x57-true[0x02]:0x%x]\n", + __func__, __LINE__, ch, ack_return, isp_status ); + pstFileInfo->result = FW_FAILURE; + return; + } + +} + +/*======================================================================================================= + * Coaxial protocol Support option function + * + ========================================================================================================*/ +/************************************************************************************** +* @desc +* RAPTOR3's RT/NRT Mode change +* +* @param_in (NC_VD_COAX_Tx_Init_STR *)p_param->channel Coax read channel +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_TEST_TX_INIT_DATA_READ +***************************************************************************************/ +void nvp6158_coax_option_rt_nrt_mode_change_set(void *p_param) +{ + NC_VD_COAX_STR *coax_val = (NC_VD_COAX_STR*)p_param; + + unsigned char ch = coax_val->ch; + unsigned char param = coax_val->param; + unsigned char fmtdef = coax_val->vivo_fmt; + unsigned char tx_line = 0; + unsigned char tx_line_max = 0; + // + gpio_i2c_write(nvp6158_iic_addr[coax_val->vd_dev], 0xFF, 0x03+((ch%4)/2)); + + tx_line = gpio_i2c_read( nvp6158_iic_addr[coax_val->vd_dev], 0x05+((ch%2)*0x80) ); + tx_line_max = gpio_i2c_read( nvp6158_iic_addr[coax_val->vd_dev], 0x0A+((ch%2)*0x80) ); + + // Adjust Tx + if( fmtdef == AHD30_3M_30P || fmtdef == AHD30_3M_25P || fmtdef == AHD30_3M_18P || + fmtdef == AHD30_4M_30P || fmtdef == AHD30_4M_25P || fmtdef == AHD30_4M_15P || + fmtdef == AHD30_5M_12_5P || fmtdef == AHD30_5M_20P) { // 3M Upper Format + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x05+((ch%2)*0x80), 0x07); // Tx line set + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x0A+((ch%2)*0x80), 0x08); // Tx max line set + } else {// 3M Under Format + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x05+((ch%2)*0x80), 0x03); // Tx line set + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x0A+((ch%2)*0x80), 0x04); // Tx max line set + } + + if( param == 0 ) {// RT Mode + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x10+((ch%2)*0x80), 0x60); // Register write + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x11+((ch%2)*0x80), 0xb1); // Output command + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x12+((ch%2)*0x80), 0x00); // RT Mode + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x13+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x14+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x15+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x16+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x17+((ch%2)*0x80), 0x00); + } else if( param == 1 ) {// NRT Mode + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x10+((ch%2)*0x80), 0x60); // Register write + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x11+((ch%2)*0x80), 0xb1); // Output command + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x12+((ch%2)*0x80), 0x01); // NRT Mode + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x13+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x14+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x15+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x16+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x17+((ch%2)*0x80), 0x00); + } else if( param == 2 ) {// AHD 5M 20P + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x10+((ch%2)*0x80), 0x60); // Register write + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x11+((ch%2)*0x80), 0xb1); // Output command + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x12+((ch%2)*0x80), 0x02); // Change Format + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x13+((ch%2)*0x80), 0x00); // AHD 5M 20P + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x14+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x15+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x16+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x17+((ch%2)*0x80), 0x00); + } else if( param == 3 ) {// AHD 5M 12.5P + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x10+((ch%2)*0x80), 0x60); // Register write + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x11+((ch%2)*0x80), 0xb1); // Output command + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x12+((ch%2)*0x80), 0x02); // Change Format + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x13+((ch%2)*0x80), 0x01); // AHD 5M 12.5P + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x14+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x15+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x16+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x17+((ch%2)*0x80), 0x00); + } else if( param == 4 ) {// AHD 4M 30P + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x10+((ch%2)*0x80), 0x60); // Register write + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x11+((ch%2)*0x80), 0xb1); // Output command + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x12+((ch%2)*0x80), 0x02); // Change Format + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x13+((ch%2)*0x80), 0x02); // AHD 4M 30P + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x14+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x15+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x16+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x17+((ch%2)*0x80), 0x00); + } else if( param == 5 ) {// AHD 4M 25P + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x10+((ch%2)*0x80), 0x60); // Register write + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x11+((ch%2)*0x80), 0xb1); // Output command + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x12+((ch%2)*0x80), 0x02); // Change Format + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x13+((ch%2)*0x80), 0x03); // AHD 4M 25P + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x14+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x15+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x16+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x17+((ch%2)*0x80), 0x00); + } else if( param == 6 ) {// AHD 4M 15P + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x10+((ch%2)*0x80), 0x60); // Register write + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x11+((ch%2)*0x80), 0xb1); // Output command + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x12+((ch%2)*0x80), 0x02); // Change Format + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x13+((ch%2)*0x80), 0x04); // AHD 4M 15P + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x14+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x15+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x16+((ch%2)*0x80), 0x00); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x17+((ch%2)*0x80), 0x00); + } + + // Tx Command Shot + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x09+((ch%2)*0x80), 0x08); // trigger on + msleep(300); + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x09+((ch%2)*0x80), 0x10); // reset + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x09+((ch%2)*0x80), 0x00); // trigger Off + + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x05+((ch%2)*0x80), tx_line); // Tx line set + gpio_i2c_write( nvp6158_iic_addr[coax_val->vd_dev], 0x0A+((ch%2)*0x80), tx_line_max); // Tx max line set + +} + +/*======================================================================================================= + * Coaxial protocol test function + * + ========================================================================================================*/ +/************************************************************************************** +* @desc +* RAPTOR3's Test function. Read coax Tx initialize value +* +* @param_in (NC_VD_COAX_Tx_Init_STR *)p_param->channel Coax read channel +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_TEST_TX_INIT_DATA_READ +***************************************************************************************/ +void nvp6158_coax_test_tx_init_read(NC_VD_COAX_TEST_STR *coax_tx_mode) +{ + //int ch = coax_tx_mode->ch; + //int devnum = coax_tx_mode->chip_num; + + int ch = 0; + int devnum = 0; + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch%4); + coax_tx_mode->rx_src = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x7C); + coax_tx_mode->rx_slice_lev = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x7D); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x03+((ch%4)/2)); + coax_tx_mode->tx_baud = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x00+((ch%2)*0x80)); + coax_tx_mode->tx_pel_baud = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x02+((ch%2)*0x80)); + coax_tx_mode->tx_line_pos0 = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x03+((ch%2)*0x80)); + coax_tx_mode->tx_line_pos1 = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x04+((ch%2)*0x80)); + coax_tx_mode->tx_line_count = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x05+((ch%2)*0x80)); + coax_tx_mode->tx_pel_line_pos0 = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x07+((ch%2)*0x80)); + coax_tx_mode->tx_pel_line_pos1 = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x08+((ch%2)*0x80)); + coax_tx_mode->tx_line_count_max = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x0A+((ch%2)*0x80)); + coax_tx_mode->tx_mode = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x0B+((ch%2)*0x80)); + coax_tx_mode->tx_sync_pos0 = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x0D+((ch%2)*0x80)); + coax_tx_mode->tx_sync_pos1 = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x0E +((ch%2)*0x80)); + coax_tx_mode->tx_even = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x2F+((ch%2)*0x80)); + coax_tx_mode->tx_zero_length = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x0C+((ch%2)*0x80)); +} + +/************************************************************************************** +* @desc +* RAPTOR3's Test function. bank, address, value setting. get from application +* +* @param_in (NC_VD_COAX_TEST_STR *)coax_data Coax Tx setting value +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_TEST_DATA_SET +***************************************************************************************/ +void nvp6158_coax_test_data_set(NC_VD_COAX_TEST_STR *coax_data) +{ + unsigned char temp_reg; + printk("[DRV_Set]bank(0x%02X)/addr(0x%02X)/param(0x%02X)\n", + coax_data->bank, coax_data->data_addr, coax_data->param ); + + gpio_i2c_write(nvp6158_iic_addr[coax_data->chip_num], 0xFF, coax_data->bank); + + if(coax_data->bank == 0x01 && coax_data->data_addr == 0xED) { + temp_reg = gpio_i2c_read(nvp6158_iic_addr[coax_data->chip_num], coax_data->data_addr); + temp_reg = ((temp_reg & ~(0x01 << coax_data->param)) | (0x01 << coax_data->param)); + } else if(coax_data->bank == 0x01 && coax_data->data_addr == 0x7A) { + temp_reg = gpio_i2c_read(nvp6158_iic_addr[coax_data->chip_num], coax_data->data_addr); + temp_reg = (temp_reg & ~(0x01 << coax_data->param)); + } else if(coax_data->bank == 0x09 && coax_data->data_addr == 0x44) { + temp_reg = gpio_i2c_read(nvp6158_iic_addr[coax_data->chip_num], coax_data->data_addr); + temp_reg = ((temp_reg & ~(0x01 << coax_data->param)) | (0x01 << coax_data->param)); + } + else + temp_reg = coax_data->param ; + + gpio_i2c_write(nvp6158_iic_addr[coax_data->chip_num], coax_data->data_addr, temp_reg ); +} + +/************************************************************************************** +* @desc +* RAPTOR3's Test function. Read value bank, address, value. To application +* +* @param_in (NC_VD_COAX_TEST_STR *)coax_data Coax read channel +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_TEST_DATA_READ +***************************************************************************************/ +void nvp6158_coax_test_data_get(NC_VD_COAX_TEST_STR *coax_data) +{ + gpio_i2c_write(nvp6158_iic_addr[coax_data->chip_num], 0xFF, coax_data->bank); + coax_data->param = gpio_i2c_read(nvp6158_iic_addr[coax_data->chip_num], coax_data->data_addr); + printk("[DRV_Get]bank(0x%02X), addr(0x%02X), param(0x%02X)\n", + coax_data->bank, coax_data->data_addr, coax_data->param ); +} + +/************************************************************************************** +* @desc +* RAPTOR3's Test function. Bank Dump To application +* +* @param_in (NC_VD_COAX_BANK_DUMP_STR *)coax_data Coax read channel +* +* @return void None +* +* ioctl : IOC_VDEC_COAX_TEST_DATA_READ +***************************************************************************************/ +void nvp6158_coax_test_Bank_dump_get(NC_VD_COAX_BANK_DUMP_STR *coax_data) +{ + int ii = 0; + + gpio_i2c_write(nvp6158_iic_addr[coax_data->vd_dev], 0xFF, coax_data->bank); + + for(ii=0; ii<256; ii++) { + coax_data->rx_pelco_data[ii] = gpio_i2c_read(nvp6158_iic_addr[coax_data->vd_dev], 0x00+ii); + } +} + + +/******************************************************************************* +* Description : read acp data of ISP +* Argurments : ch(channel ID), reg_addr(high[1byte]:bank, low[1byte]:register) +* Return value : void +* Modify : +* warning : +*******************************************************************************/ +unsigned char nvp6158_coax_acp_isp_read(unsigned char ch, unsigned int reg_addr) +{ + unsigned int data_3x50[8]; + unsigned char lcnt_bak, lcntm_bak, crc_bak; + unsigned char bank; + unsigned char addr; + int i; + + bank = (reg_addr>>8)&0xFF; + addr = reg_addr&0xFF; + + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x03+((ch%4)/2)); + lcnt_bak = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0x05+((ch%2)*0x80)); + lcntm_bak = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0x0A+((ch%2)*0x80)); + crc_bak = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0x60+((ch%2)*0x80)); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x05+((ch%2)*0x80), 0x03); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x0A+((ch%2)*0x80), 0x03); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x60+((ch%2)*0x80), 0x61); + + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x03+((ch%4)/2)); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x10+(ch%2)*0x80, 0x61); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x10+1+(ch%2)*0x80, bank); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x10+2+(ch%2)*0x80, addr); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x10+3+(ch%2)*0x80, 0x00); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x09+(ch%2)*0x80, 0x08); + msleep(100); + for(i=0; i<8; i++) { + data_3x50[i] = gpio_i2c_read(nvp6158_iic_addr[ch/4],0x50+i+((ch%2)*0x80)); + printk("acp_isp_read ch = %d, reg_addr = %x, reg_data = %x\n", ch,reg_addr, data_3x50[i]); + } + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x05+((ch%2)*0x80), lcnt_bak); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x0A+((ch%2)*0x80), lcntm_bak); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x60+((ch%2)*0x80), crc_bak); + gpio_i2c_write( nvp6158_iic_addr[ch/4], 0x09+((ch%2)*0x80), 0x10); + gpio_i2c_write( nvp6158_iic_addr[ch/4], 0x09+((ch%2)*0x80), 0x00); + msleep(100); + //gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x03+((ch%4)/2)); + //gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x63+((ch%2)*0x80), 0); + + return data_3x50[3]; +} + +unsigned char nvp6158_coax_acp_isp_write(unsigned char ch, unsigned int reg_addr, unsigned char reg_data) +{ + unsigned int data_3x50[8]; + unsigned char lcnt_bak, lcntm_bak, crc_bak; + unsigned char bank; + unsigned char addr; + int i; + + bank = (reg_addr>>8)&0xFF; + addr = reg_addr&0xFF; + + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x03+((ch%4)/2)); + lcnt_bak = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0x05+((ch%2)*0x80)); + lcntm_bak = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0x0A+((ch%2)*0x80)); + crc_bak = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0x60+((ch%2)*0x80)); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x05+((ch%2)*0x80), 0x03); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x0A+((ch%2)*0x80), 0x03); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x60+((ch%2)*0x80), 0x60); + + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x03+((ch%4)/2)); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x10+(ch%2)*0x80, 0x60); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x10+1+(ch%2)*0x80, bank); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x10+2+(ch%2)*0x80, addr); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x10+3+(ch%2)*0x80, reg_data); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x09+(ch%2)*0x80, 0x08); + msleep(100); + for(i=0; i<8; i++) { + data_3x50[i] = gpio_i2c_read(nvp6158_iic_addr[ch/4],0x50+i+((ch%2)*0x80)); + printk("acp_isp_write ch = %d, reg_addr = %x, reg_data = %x\n", ch,reg_addr, data_3x50[i]); + } + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x05+((ch%2)*0x80), lcnt_bak); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x0A+((ch%2)*0x80), lcntm_bak); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x60+((ch%2)*0x80), crc_bak); + gpio_i2c_write( nvp6158_iic_addr[ch/4], 0x09+((ch%2)*0x80), 0x10); + gpio_i2c_write( nvp6158_iic_addr[ch/4], 0x09+((ch%2)*0x80), 0x00); + //msleep(100); + //gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x03+((ch%4)/2)); + //gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x63+((ch%2)*0x80), 0); + + return data_3x50[3]; +} + + + + + diff --git a/drivers/media/i2c/nvp6158_drv/nvp6158_coax_protocol.h b/drivers/media/i2c/nvp6158_drv/nvp6158_coax_protocol.h new file mode 100644 index 000000000000..b7c782e4bc25 --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/nvp6158_coax_protocol.h @@ -0,0 +1,205 @@ +// SPDX-License-Identifier: GPL-2.0 +/******************************************************************************** +* +* Copyright (C) 2017 NEXTCHIP Inc. All rights reserved. +* Module : Raptor3 Device Driver +* Description : coax_protocol.h +* Author : +* Date : +* Version : Version 1.0 +* +******************************************************************************** +* History : +* +* +********************************************************************************/ +#ifndef _RAPTOR3_COAX_PROTOCOL_ +#define _RAPTOR3_COAX_PROTOCOL_ + +#include "nvp6158_common.h" + +//#define BANK1 0x01 +//#define BANK2 0x02 +//#define BANK3 0x03 +//#define BANKC 0x0C + +#define FW_SUCCESS 0 +#define FW_FAILURE -1 + +#define DBG_TX_INIT_PRINT 0 +#define DBG_TX_CMD_PRINT 0 +#define DBG_RX_INIT_PRINT 0 + +typedef enum NC_COAX_CMD_DEF +{ + COAX_CMD_UNKNOWN = 0, + COAX_CMD_IRIS_INC, + COAX_CMD_IRIS_DEC, + COAX_CMD_FOCUS_INC, + COAX_CMD_FOCUS_DEC, + COAX_CMD_ZOOM_INC, + COAX_CMD_ZOOM_DEC, + COAX_CMD_OSD_ON, + COAX_CMD_PTZ_UP, + COAX_CMD_PTZ_DOWN, + COAX_CMD_PTZ_LEFT, + COAX_CMD_PTZ_RIGHT, + COAX_CMD_OSD_ENTER, + COAX_CMD_SPECIAL_FW, + COAX_CMD_SPECIAL_CAMEQ, + COAX_CMD_SPECIAL_FPS, + COAX_CMD_SPECIAL_MOTION, + COAX_CMD_SPECIAL_3DNR_REQUEST, + COAX_CMD_TVI_DOWNSTREAM_REQUEST, + COAX_CMD_OSD_UP, + COAX_CMD_OSD_DOWN, + COAX_CMD_OSD_LEFT, + COAX_CMD_OSD_RIGHT, + COAX_CMD_STOP, + + COAX_CMD_MAX, + +} NC_COAX_CMD_DEF; + +/*============================================================= + * Coaxial Test Structure[APP <-> DRV] + ==============================================================*/ +typedef struct NC_VD_COAX_TEST_STR{ + unsigned char ch; + unsigned char chip_num; + unsigned char bank; + unsigned char data_addr; + unsigned char param; + + unsigned char rx_src; //B5/6/7/8 0x7C + unsigned char rx_slice_lev; //B5/6/7/8 0x7D + unsigned char tx_baud; //B3/4 0x00/80 + unsigned char tx_pel_baud; //B3/4 0x02/82 + unsigned char tx_line_pos0; //B3/4 0x03/83 + unsigned char tx_line_pos1; //B3/4 0x04/84 + unsigned char tx_pel_line_pos0; //B3/4 0x07/87 + unsigned char tx_pel_line_pos1; //B3/4 0x08/88 + unsigned char tx_line_count; //B3/4 0x05/85 + unsigned char tx_line_count_max; //B3/4 0x0A/8A + unsigned char tx_mode; //B3/4 0x0B/8B + unsigned char tx_sync_pos0; //B3/4 0x0D/8D + unsigned char tx_sync_pos1; //B3/4 0x0E/8E + unsigned char tx_even; //B3/4 0x2F/AF + unsigned char tx_zero_length; //B3/4 0x0C/ +} NC_VD_COAX_TEST_STR; + +typedef struct NC_VD_COAX_BANK_DUMP_STR{ + unsigned char ch; + unsigned char vd_dev; + unsigned char bank; + + unsigned char rx_pelco_data[256]; + +} NC_VD_COAX_BANK_DUMP_STR; + +/*============================================================= + * Coaxial UP/Down Stream Initialize Structure[APP -> DRV] + ==============================================================*/ +typedef struct NC_VD_COAX_STR{ + char *name; + unsigned char ch; + unsigned char vd_dev; + unsigned char param; + NC_FORMAT_STANDARD format_standard; + NC_FORMAT_RESOLUTION format_resolution; + NC_FORMAT_FPS format_fps; + NC_VIVO_CH_FORMATDEF vivo_fmt; + NC_COAX_CMD_DEF cmd; + + unsigned char rx_pelco_data[8]; + unsigned char rx_data1[8]; + unsigned char rx_data2[8]; + unsigned char rx_data3[8]; + unsigned char rx_data4[8]; + unsigned char rx_data5[8]; + unsigned char rx_data6[8]; + +} NC_VD_COAX_STR; + +typedef struct _nvp6158_coax_str{ + unsigned char ch; + unsigned char param; + NC_VIVO_CH_FORMATDEF fmt_def; + NC_COAX_CMD_DEF cmd; + unsigned char rx_pelco_data[8]; + unsigned char rx_data1[8]; + unsigned char rx_data2[8]; + unsigned char rx_data3[8]; + unsigned char rx_data4[8]; + unsigned char rx_data5[8]; + unsigned char rx_data6[8]; + +} nvp6158_coax_str; + +/*============================================================= + * COAX FW Upgrade + ==============================================================*/ +typedef struct __file_information +{ + unsigned int channel; // FirmUP Channel + unsigned int cp_mode; // Channel Format + unsigned char filename[64]; // + unsigned char filePullname[64+32]; // FirmUP FileNmae + unsigned int filesize; + unsigned int filechecksum; // (sum of file&0x0000FFFFF) + unsigned int currentpacketnum; // current packet sequnce number(0,1,2........) + unsigned int filepacketnum; // file packet number = (total size/128bytes), if remain exist, file packet number++ + unsigned char onepacketbuf[128+32]; + + unsigned int currentFileOffset; // Current file offset + unsigned int readsize; // currnet read size + + unsigned int receive_addr; + + unsigned int ispossiblefirmup[16]; // is it possible to update firmware? + int result; + + int appstatus[16]; // Application status + +} FIRMWARE_UP_FILE_INFO, *PFIRMWARE_UP_FILE_INFO; + +// Coaxial UP Stream Function +void nvp6158_coax_tx_init( nvp6158_coax_str *ps_coax_str ); // Coax Tx : Initialize +void nvp6158_coax_tx_cmd_send( nvp6158_coax_str *ps_coax_str ); // Coax Tx : Command Send + +int nvp6158_coax_tx_16bit_init( nvp6158_coax_str *ps_coax_str ); +void nvp6158_coax_tx_16bit_cmd_send( nvp6158_coax_str *ps_coax_str ); +void nvp6158_coax_tx_cvi_new_cmd_send( nvp6158_coax_str *ps_coax_str ); + +// Coaxial Down Stream Function +void nvp6158_coax_rx_init( nvp6158_coax_str *ps_coax_str ); // Coax Rx : Initialize +void nvp6158_coax_rx_data_get( nvp6158_coax_str *coax_rx ); // Coax Rx : All Rx Buffer read +void nvp6158_coax_rx_buffer_clear( nvp6158_coax_str *ps_coax_str ); // Coax Rx : Rx Buffer Clear +void nvp6158_coax_rx_deinit( nvp6158_coax_str *ps_coax_str ); // Coax Rx : 3x63 Set[ 1 -> 0 ] + +// Coaxial FW Update Function +void nvp6158_coax_fw_ready_header_check_from_isp_recv(void *p_param); +void nvp6158_coax_fw_ready_cmd_to_isp_send(void *p_param); // 1.1 FW Update Ready Command Send +void nvp6158_coax_fw_ready_cmd_ack_from_isp_recv(void *p_param); // 1.2 FW Update Ready ACK +void nvp6158_coax_fw_start_cmd_to_isp_send( void *p_param ); // 2.1 FW Update Start Command Send +void nvp6158_coax_fw_start_cmd_ack_from_isp_recv( void *p_param ); // 2.2 FW Update Start ACK +void nvp6158_coax_fw_one_packet_data_to_isp_send( void *p_param ); // 3.1 FW Update One Packet Data Send +void nvp6158_coax_fw_one_packet_data_ack_from_isp_recv( void *p_param ); // 3.2 FW Update One Packet Data ACK +void nvp6158_coax_fw_end_cmd_to_isp_send( void *p_param ); // 4.1 FW Update End Command Send +void nvp6158_coax_fw_end_cmd_ack_from_isp_recv( void *p_param ); // 4.2 FW Update End ACK + +// Coaxial Option +void nvp6158_coax_option_rt_nrt_mode_change_set(void *p_param); // RT, NRT Mode change + +// Coaxial Test Function +void nvp6158_coax_test_tx_init_read(NC_VD_COAX_TEST_STR *coax_tx_mode); // Coax Test : Tx Init Read +void nvp6158_coax_test_data_set(NC_VD_COAX_TEST_STR *coax_data); // Coax Test : 1byte Data write +void nvp6158_coax_test_data_get(NC_VD_COAX_TEST_STR *coax_data); // Coax Test : 1byte Data read +void nvp6158_coax_test_Bank_dump_get(NC_VD_COAX_BANK_DUMP_STR *coax_data); // Bank Dump +unsigned char nvp6158_coax_acp_isp_read(unsigned char ch, unsigned int reg_addr); +unsigned char nvp6158_coax_acp_isp_write(unsigned char ch, unsigned int reg_addr, unsigned char reg_data); + +#endif +/******************************************************************** + * End of file + ********************************************************************/ diff --git a/drivers/media/i2c/nvp6158_drv/nvp6158_coax_table.h b/drivers/media/i2c/nvp6158_drv/nvp6158_coax_table.h new file mode 100644 index 000000000000..1ef3fd9e650a --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/nvp6158_coax_table.h @@ -0,0 +1,3346 @@ +// SPDX-License-Identifier: GPL-2.0 +/******************************************************************************** +* +* Copyright (C) 2017 NEXTCHIP Inc. All rights reserved. +* Module : Raptor3 Device Driver +* Description : coax_table.h +* Author : +* Date : +* Version : Version 1.0 +* +******************************************************************************** +* History : +* +* +********************************************************************************/ +#ifndef _RAPTOR3_COAX_TABLE_ +#define _RAPTOR3_COAX_TABLE_ + + +#include "nvp6158_coax_protocol.h" + +#define EOD (-1) + +#define CHANGEDRIVER 1 + +/*============================================================= + * Coaxial UP/Down stream initialize structure + ==============================================================*/ +typedef struct NC_VD_COAX_Init_STR{ + char *name; + unsigned char ch; + unsigned char rx_src; //B5/6/7/8 0x7C + unsigned char rx_slice_lev; //B5/6/7/8 0x7D + unsigned char tx_bank; + unsigned char tx_cmd_addr; + unsigned char tx_shot_addr; + unsigned char tx_baud[6]; //B3/4 0x00/80 + unsigned char tx_pel_baud[6]; //B3/4 0x02/82 + unsigned char tx_line_pos0[6]; //B3/4 0x03/83 + unsigned char tx_line_pos1[6]; //B3/4 0x04/84 + unsigned char tx_pel_line_pos0[6]; //B3/4 0x07/87 + unsigned char tx_pel_line_pos1[6]; //B3/4 0x08/88 + unsigned char tx_line_count; //B3/4 0x05/85 + unsigned char tx_line_count_max; //B3/4 0x0A/8A + unsigned char tx_mode; //B3/4 0x0B/8B + unsigned char tx_sync_pos0[6]; //B3/4 0x0D/8D + unsigned char tx_sync_pos1[6]; //B3/4 0x0E/8E + unsigned char tx_even; //B3/4 0x2F/AF + unsigned char tx_zero_length; //B3/4 0x0C/ + + unsigned char rx_comm_on; // + unsigned char rx_area; // + unsigned char rx_signal_enhance; // + unsigned char rx_manual_duty; // + unsigned char rx_head_matching; // + unsigned char rx_data_rz; // + unsigned char rx_sz; // + + int shot_delay; + int reset_delay; +}NC_VD_COAX_Init_STR; + +/*============================================================= + * Coaxial UP/Down stream command structure + ==============================================================*/ +typedef struct NC_VD_ACP_CMDDEF_STR{ + char *name; + int ahd_16bit[16]; + int ahd_8bit[16]; + int ahd_4_5m[32]; + int cvi_cmd[32]; + int cvi_new_cmd[32]; + int cvi_checksum[16]; + int tvi_v1_0[16]; + int tvi_v2_0[16]; + int sd[16]; + int autostop; +}NC_VD_ACP_CMDDEF_STR; + +static NC_VD_COAX_Init_STR nvp6158_coax_acp_16bit_init_lists[]= +{ + [ AHD20_720P_30P ] = { + .name = "AHD20_720P_30P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x20, + .tx_shot_addr = 0x0c, + .tx_baud = { 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 }, + .tx_pel_baud = { 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 }, + .tx_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x06, + .tx_sync_pos0 = { 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2 }, + .tx_sync_pos1 = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ AHD20_720P_25P ] = { + .name = "AHD20_720P_25P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x20, + .tx_shot_addr = 0x0c, + .tx_baud = { 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 }, + .tx_pel_baud = { 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 }, + .tx_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x06, + .tx_sync_pos0 = { 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2 }, + .tx_sync_pos1 = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ AHD20_720P_30P_EX ] = { + .name = "AHD20_720P_30P_EX", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x20, + .tx_shot_addr = 0x0c, + .tx_baud = { 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 }, + .tx_pel_baud = { 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c }, + .tx_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x06, + .tx_sync_pos0 = { 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2 }, + .tx_sync_pos1 = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ AHD20_720P_25P_EX ] = { + .name = "AHD20_720P_25P_EX", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x20, + .tx_shot_addr = 0x0c, + .tx_baud = { 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 }, + .tx_pel_baud = { 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c }, + .tx_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x06, + .tx_sync_pos0 = { 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2 }, + .tx_sync_pos1 = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ AHD20_720P_30P_EX_Btype ] = { + .name = "AHD20_720P_30P_EX_Btype", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x20, + .tx_shot_addr = 0x0c, + .tx_baud = { 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 }, + .tx_pel_baud = { 0x26, 0x26, 0x26, 0x26, 0x26, 0x26 }, + .tx_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x06, + .tx_sync_pos0 = { 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0 }, + .tx_sync_pos1 = { 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ AHD20_720P_25P_EX_Btype ] = { + .name = "AHD20_720P_25P_EX_Btype", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x20, + .tx_shot_addr = 0x0c, + .tx_baud = { 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 }, + .tx_pel_baud = { 0x26, 0x26, 0x26, 0x26, 0x26, 0x26 }, + .tx_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x06, + .tx_sync_pos0 = { 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0 }, + .tx_sync_pos1 = { 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ CVI_4M_25P ] = { + .name = "CVI_4M_25P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x0C, + .tx_cmd_addr = 0x00, + .tx_shot_addr = 0x09, + .tx_baud = { 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x16, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x04, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x09, + .tx_mode = 0x60, + .tx_sync_pos0 = { 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x10, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x64, + .rx_head_matching = 0xAB, + .rx_data_rz = 0x85, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ CVI_4M_30P ] = { + .name = "CVI_4M_30P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x0C, + .tx_cmd_addr = 0x00, + .tx_shot_addr = 0x09, + .tx_baud = { 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x16, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x04, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x09, + .tx_mode = 0x60, + .tx_sync_pos0 = { 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x10, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x64, + .rx_head_matching = 0xAB, + .rx_data_rz = 0x85, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, + [ CVI_5M_20P ] = { + .name = "CVI_5M_20P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x0C, + .tx_cmd_addr = 0x00, + .tx_shot_addr = 0x09, + .tx_baud = { 0x16, 0x00, 0x00, 0x2b, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x05, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x0c, + .tx_mode = 0x60, + .tx_sync_pos0 = { 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x10, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x64, + .rx_head_matching = 0xAB, + .rx_data_rz = 0x85, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ CVI_8M_15P ] = { + .name = "CVI_8M_15P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x0C, + .tx_cmd_addr = 0x00, + .tx_shot_addr = 0x09, + .tx_baud = { 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x16, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x04, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x09, + .tx_mode = 0x60, + .tx_sync_pos0 = { 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x10, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x64, + .rx_head_matching = 0xAB, + .rx_data_rz = 0x85, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ CVI_8M_12_5P ] = { + .name = "CVI_8M_12_5P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x0C, + .tx_cmd_addr = 0x00, + .tx_shot_addr = 0x09, + .tx_baud = { 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x16, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x04, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x09, + .tx_mode = 0x60, + .tx_sync_pos0 = { 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x10, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x64, + .rx_head_matching = 0xAB, + .rx_data_rz = 0x85, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, + +}; + +static NC_VD_COAX_Init_STR nvp6158_coax_init_lists[]= +{ + [ AHD20_SD_H960_2EX_Btype_NT ] = { + .name = "AHD20_SD_H960_2EX_Btype_NT", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x20, + .tx_shot_addr = 0x0c, // 0x0C + .tx_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 }, + .tx_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x01, + .tx_mode = 0x06, + .tx_sync_pos0 = { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }, + .tx_sync_pos1 = { 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 }, + .tx_even = 0x01, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ AHD20_SD_H960_2EX_Btype_PAL ] = { + .name = "AHD20_SD_H960_2EX_Btype_PAL", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x20, + .tx_shot_addr = 0x0c, + .tx_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 }, + .tx_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x01, + .tx_mode = 0x06, + .tx_sync_pos0 = { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }, + .tx_sync_pos1 = { 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 }, + .tx_even = 0x01, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ AHD20_SD_H960_NT ] = { + .name = "AHD20_SD_H960_NT", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x20, + .tx_shot_addr = 0x0c, + .tx_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b }, + .tx_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x01, + .tx_mode = 0x06, + .tx_sync_pos0 = { 0x70, 0x70, 0x70, 0x70, 0x70, 0x70 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x01, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ AHD20_SD_H960_PAL ] = { + .name = "AHD20_SD_H960_PAL", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x20, + .tx_shot_addr = 0x0c, + .tx_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b }, + .tx_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x01, + .tx_mode = 0x06, + .tx_sync_pos0 = { 0x70, 0x70, 0x70, 0x70, 0x70, 0x70 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x01, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ AHD20_SD_H1280_NT ] = { + .name = "AHD20_SD_H1280_NT", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x20, + .tx_shot_addr = 0x0c, + .tx_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 }, + .tx_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x01, + .tx_mode = 0x06, + .tx_sync_pos0 = { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }, + .tx_sync_pos1 = { 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 }, + .tx_even = 0x01, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 35, + .reset_delay = 35, + }, + + [ AHD20_SD_H1280_PAL ] = { + .name = "AHD20_SD_H1280_PAL", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x20, + .tx_shot_addr = 0x0c, + .tx_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 }, + .tx_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x01, + .tx_mode = 0x06, + .tx_sync_pos0 = { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }, + .tx_sync_pos1 = { 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 }, + .tx_even = 0x01, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 35, + .reset_delay = 35, + }, + + [ AHD20_SD_H1440_NT ] = { + .name = "AHD20_SD_H1440_NT", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x20, + .tx_shot_addr = 0x0c, + .tx_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 }, + .tx_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x01, + .tx_mode = 0x06, + .tx_sync_pos0 = { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }, + .tx_sync_pos1 = { 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 }, + .tx_even = 0x01, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ AHD20_SD_H1440_PAL ] = { + .name = "AHD20_SD_H1440_PAL", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x20, + .tx_shot_addr = 0x0c, + .tx_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 }, + .tx_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x01, + .tx_mode = 0x06, + .tx_sync_pos0 = { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }, + .tx_sync_pos1 = { 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 }, + .tx_even = 0x01, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ AHD20_SD_H960_EX_NT ] = { + .name = "AHD20_SD_H960_EX_NT", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x20, + .tx_shot_addr = 0x0c, + .tx_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x19, 0x19, 0x19, 0x19, 0x19, 0x19 }, + .tx_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x01, + .tx_mode = 0x06, + .tx_sync_pos0 = { 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x01, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ AHD20_SD_H960_EX_PAL ] = { + .name = "AHD20_SD_H960_EX_PAL", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x20, + .tx_shot_addr = 0x0c, + .tx_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x19, 0x19, 0x19, 0x19, 0x19, 0x19 }, + .tx_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x01, + .tx_mode = 0x06, + .tx_sync_pos0 = { 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x01, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ AHD20_SD_H960_2EX_NT ] = { + .name = "AHD20_SD_H960_2EX_NT", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x20, + .tx_shot_addr = 0x0c, + .tx_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x50, 0x50, 0x50, 0x50, 0x50, 0x50 }, + .tx_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x01, + .tx_mode = 0x06, + .tx_sync_pos0 = { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }, + .tx_sync_pos1 = { 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 }, + .tx_even = 0x01, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ AHD20_SD_H960_2EX_PAL ] = { + .name = "AHD20_SD_H960_2EX_PAL", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x20, + .tx_shot_addr = 0x0c, + .tx_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 }, + .tx_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x01, + .tx_mode = 0x06, + .tx_sync_pos0 = { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }, + .tx_sync_pos1 = { 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 }, + .tx_even = 0x01, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ AHD20_1080P_60P ] = { + .name = "AHD20_1080P_60P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x31, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x08, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x70, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ AHD20_1080P_50P ] = { + .name = "AHD20_1080P_50P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x31, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x08, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x70, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ AHD20_1080P_30P ] = { + .name = "AHD20_1080P_30P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + //.tx_baud = { 0x2D, 0x2D, 0x2D, 0x28, 0x28, 0x28 }, + .tx_baud = { 0x26, 0x26, 0x26, 0x26, 0x26, 0x26 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x08, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0 }, + .tx_sync_pos1 = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x80, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ AHD20_1080P_25P ] = { + .name = "AHD20_1080P_25P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + //.tx_baud = { 0x2D, 0x2D, 0x2D, 0x28, 0x28, 0x28 }, + .tx_baud = { 0x26, 0x26, 0x26, 0x26, 0x26, 0x26 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x08, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0 }, + .tx_sync_pos1 = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x80, + + .shot_delay = 25, + .reset_delay = 25, + }, + [ AHD20_1080P_15P_EX ] = { + .name = "AHD20_1080P_15P_EX", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + //.tx_baud = { 0x2D, 0x2D, 0x2D, 0x28, 0x28, 0x28 }, + .tx_baud = { 0x26, 0x26, 0x26, 0x26, 0x26, 0x26 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x08, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0 }, + .tx_sync_pos1 = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x80, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ AHD20_1080P_12_5P_EX ] = { + .name = "AHD20_1080P_12_5P_EX", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + //.tx_baud = { 0x2D, 0x2D, 0x2D, 0x28, 0x28, 0x28 }, + .tx_baud = { 0x26, 0x26, 0x26, 0x26, 0x26, 0x26 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x08, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0 }, + .tx_sync_pos1 = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x80, + + .shot_delay = 25, + .reset_delay = 25, + }, + [ AHD20_960P_30P ] = { + .name = "AHD20_960P_30P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + //.tx_baud = { 0x2D, 0x2D, 0x2D, 0x28, 0x28, 0x28 }, + .tx_baud = { 0x26, 0x26, 0x26, 0x26, 0x26, 0x26 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x08, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0 }, + .tx_sync_pos1 = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x80, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ AHD20_960P_25P ] = { + .name = "AHD20_960P_25P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + //.tx_baud = { 0x2D, 0x2D, 0x2D, 0x28, 0x28, 0x28 }, + .tx_baud = { 0x26, 0x26, 0x26, 0x26, 0x26, 0x26 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x08, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0 }, + .tx_sync_pos1 = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x80, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ AHD20_720P_60P ] = { + .name = "AHD20_720P_60P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x03, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ AHD20_720P_50P ] = { + .name = "AHD20_720P_50P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x03, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0x16, 0x16, 0x16, 0x16, 0x16, 0x16 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ AHD20_720P_30P ] = { + .name = "AHD20_720P_30P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x15, 0x15, 0x15, 0x15, 0x15, 0x15 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x03, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ AHD20_720P_25P ] = { + .name = "AHD20_720P_25P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x15, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x03, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ AHD20_720P_30P_EX ] = { + .name = "AHD20_720P_30P_EX", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x30, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ AHD20_720P_25P_EX ] = { + .name = "AHD20_720P_25P_EX", + .ch = 0, + .rx_src = 0x11, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x30, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ AHD20_720P_30P_EX_Btype ] = { + .name = "AHD20_720P_30P_EX_Btype", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 }, + .tx_pel_baud = { 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c }, + .tx_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0 }, + .tx_sync_pos1 = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ AHD20_720P_25P_EX_Btype ] = { + .name = "AHD20_720P_25P_EX_Btype", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c }, + .tx_pel_baud = { 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c }, + .tx_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2 }, + .tx_sync_pos1 = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ AHD30_4M_30P ] = { + .name = "AHD30_4M_30P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x07, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x70, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ AHD30_4M_25P ] = { + .name = "AHD30_4M_25P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x07, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x70, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ AHD30_4M_15P ] = { + .name = "AHD30_4M_15P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x07, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x70, + + .shot_delay = 70, + .reset_delay = 0, + }, + + [ AHD30_3M_30P ] = { + .name = "AHD30_3M_30P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x33, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ AHD30_3M_25P ] = { + .name = "AHD30_3M_25P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x33, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ AHD30_3M_18P ] = { + .name = "AHD30_3M_18P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x33, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x03, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0x30, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x60, + + .shot_delay = 55, + .reset_delay = 0, + }, + + [ AHD30_5M_12_5P ] = { + .name = "AHD30_5M_12_5P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x07, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x70, + + .shot_delay = 90, + .reset_delay = 0, + }, + + [ AHD30_5M_20P ] = { + .name = "AHD30_5M_20P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x07, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x70, + + .shot_delay = 55, + .reset_delay = 0, + }, + + [ AHD30_5_3M_20P ] = { + .name = "AHD30_5_3M_20P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x38, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x07, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x70, + + .shot_delay = 55, + .reset_delay = 0, + }, + + [ AHD30_8M_X_30P ] = { + .name = "AHD30_8M_X_30P", + .ch = 0, + .rx_src = 0x11, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x07, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x70, + + .shot_delay = 90, + .reset_delay = 0, + }, + + [ AHD30_8M_X_25P ] = { + .name = "AHD30_8M_X_25P", + .ch = 0, + .rx_src = 0x11, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x07, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x70, + + .shot_delay = 90, + .reset_delay = 0, + }, + + [ AHD30_8M_7_5P ] = { + .name = "AHD30_8M_7_5P", + .ch = 0, + .rx_src = 0x11, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x07, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x70, + + .shot_delay = 90, + .reset_delay = 0, + }, + + [ AHD30_8M_12_5P ] = { + .name = "AHD30_8M_12_5P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x07, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0x60, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x03, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x70, + + .shot_delay = 90, + .reset_delay = 0, + }, + + [ AHD30_8M_15P ] = { + .name = "AHD30_8M_15P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00 }, //0x34 + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x07, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x07, + .tx_mode = 0x10, + .tx_sync_pos0 = { 0x60, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x03, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x81, + .rx_manual_duty = 0x2D, + .rx_head_matching = 0x55, + .rx_data_rz = 0x00, + .rx_sz = 0x70, + + .shot_delay = 70, + .reset_delay = 25, + }, + + [ TVI_FHD_30P ] = { + .name = "TVI_FHD_30P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x34, 0x34, 0x34, 0x34, 0x34, 0x34 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0B, 0x00, 0x00, 0x00, 0x00, 0x0A }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x02, + .tx_mode = 0x08, + .tx_sync_pos0 = { 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x20 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x3E, + .rx_head_matching = 0xAD, + .rx_data_rz = 0x0F, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ TVI_FHD_25P ] = { + .name = "TVI_FHD_25P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x34, 0x34, 0x34, 0x34, 0x34, 0x34 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x02, + .tx_mode = 0x08, + .tx_sync_pos0 = { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x3E, + .rx_head_matching = 0xAD, + .rx_data_rz = 0x0F, + .rx_sz = 0x60, + + .shot_delay = 40, + .reset_delay = 40, + }, + + [ TVI_HD_60P ] = { + .name = "TVI_HD_60P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x34, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x02, + .tx_mode = 0x08, + .tx_sync_pos0 = { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x3E, + .rx_head_matching = 0xAD, + .rx_data_rz = 0x8F, + .rx_sz = 0x60, + + .shot_delay = 20, + .reset_delay = 20, + }, + + [ TVI_HD_50P ] = { + .name = "TVI_HD_50P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x34, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x02, + .tx_mode = 0x08, + .tx_sync_pos0 = { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x3E, + .rx_head_matching = 0xAD, + .rx_data_rz = 0x8F, + .rx_sz = 0x60, + + .shot_delay = 20, + .reset_delay = 20, + }, + + [ TVI_HD_30P ] = { + .name = "TVI_HD_30P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x34, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x02, + .tx_mode = 0x08, + .tx_sync_pos0 = { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x3E, + .rx_head_matching = 0xAD, + .rx_data_rz = 0x8F, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ TVI_HD_25P ] = { + .name = "TVI_HD_25P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x34, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x02, + .tx_mode = 0x08, + .tx_sync_pos0 = { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x3E, + .rx_head_matching = 0xAD, + .rx_data_rz = 0x8F, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ TVI_HD_30P_EX ] = { + .name = "TVI_HD_30P_EX", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x34, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x02, + .tx_mode = 0x08, + .tx_sync_pos0 = { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x3E, + .rx_head_matching = 0xAD, + .rx_data_rz = 0x8F, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ TVI_HD_25P_EX ] = { + .name = "TVI_HD_25P_EX", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x34, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x02, + .tx_mode = 0x08, + .tx_sync_pos0 = { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x3E, + .rx_head_matching = 0xAD, + .rx_data_rz = 0x8F, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ TVI_HD_B_30P ] = { + .name = "TVI_HD_B_30P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x34, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x02, + .tx_mode = 0x08, + .tx_sync_pos0 = { 0x52, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x3E, + .rx_head_matching = 0xAD, + .rx_data_rz = 0x8F, + .rx_sz = 0x60, + + .shot_delay = 40, + .reset_delay = 40, + }, + + [ TVI_HD_B_25P ] = { + .name = "TVI_HD_B_25P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x34, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x02, + .tx_mode = 0x08, + .tx_sync_pos0 = { 0x52, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x3E, + .rx_head_matching = 0xAD, + .rx_data_rz = 0x8F, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ TVI_HD_B_30P_EX ] = { + .name = "TVI_HD_B_30P_EX", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x34, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x02, + .tx_mode = 0x08, + .tx_sync_pos0 = { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x3E, + .rx_head_matching = 0xAD, + .rx_data_rz = 0x8F, + .rx_sz = 0x60, + + .shot_delay = 35, + .reset_delay = 35, + }, + + [ TVI_HD_B_25P_EX ] = { + .name = "TVI_HD_B_25P_EX", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x34, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x02, + .tx_mode = 0x08, + .tx_sync_pos0 = { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x3E, + .rx_head_matching = 0xAD, + .rx_data_rz = 0x8F, + .rx_sz = 0x60, + + .shot_delay = 40, + .reset_delay = 40, + }, + + [ TVI_3M_18P ] = { + .name = "TVI_3M_18P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x34, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x02, + .tx_mode = 0x08, + .tx_sync_pos0 = { 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x3E, + .rx_head_matching = 0xAD, + .rx_data_rz = 0x8F, + .rx_sz = 0x60, + + .shot_delay = 55, + .reset_delay = 55, + }, + + [ TVI_5M_12_5P ] = { + .name = "TVI_5M_12_5P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x34, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x02, + .tx_mode = 0x08, + .tx_sync_pos0 = { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x3E, + .rx_head_matching = 0xAD, + .rx_data_rz = 0x8F, + .rx_sz = 0x60, + + .shot_delay = 80, + .reset_delay = 80, + }, + + [ TVI_5M_20P ] = { + .name = "TVI_5M_20P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x34, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x02, + .tx_mode = 0x08, + .tx_sync_pos0 = { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x3E, + .rx_head_matching = 0xAD, + .rx_data_rz = 0x8F, + .rx_sz = 0x60, + + .shot_delay = 80, + .reset_delay = 80, + }, + + [ TVI_4M_30P ] = { + .name = "TVI_4M_30P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x34, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x02, + .tx_mode = 0x08, + .tx_sync_pos0 = { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x3E, + .rx_head_matching = 0xAD, + .rx_data_rz = 0x8F, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ TVI_4M_25P ] = { + .name = "TVI_4M_25P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x34, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x02, + .tx_mode = 0x08, + .tx_sync_pos0 = { 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x3E, + .rx_head_matching = 0xAD, + .rx_data_rz = 0x8F, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + + [ TVI_4M_15P ] = { + .name = "TVI_4M_15P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x34, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x02, + .tx_mode = 0x08, + .tx_sync_pos0 = { 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x3E, + .rx_head_matching = 0xAD, + .rx_data_rz = 0x8F, + .rx_sz = 0x60, + + .shot_delay = 55, + .reset_delay = 55, + }, + [ TVI_8M_15P ] = { + .name = "TVI_8M_15P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x34, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x02, + .tx_mode = 0x08, + .tx_sync_pos0 = { 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x3E, + .rx_head_matching = 0xAD, + .rx_data_rz = 0x8F, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + [ TVI_8M_12_5P ] = { + .name = "TVI_8M_12_5P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x03, + .tx_cmd_addr = 0x10, + .tx_shot_addr = 0x09, + .tx_baud = { 0x34, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x01, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x02, + .tx_mode = 0x08, + .tx_sync_pos0 = { 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x06, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x3E, + .rx_head_matching = 0xAD, + .rx_data_rz = 0x8F, + .rx_sz = 0x60, + + .shot_delay = 30, + .reset_delay = 30, + }, + [ CVI_HD_60P ] = { + .name = "CVI_HD_60P", + .ch = 0, + .rx_src = 0x01, // 1 + .rx_slice_lev = 0x80, + .tx_bank = 0x0C, + .tx_cmd_addr = 0x00, + .tx_shot_addr = 0x09, + .tx_baud = { 0x16, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x05, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x0c, + .tx_mode = 0x60, + .tx_sync_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x64, + .rx_head_matching = 0xAB, + .rx_data_rz = 0x8D, + .rx_sz = 0x60, + + .shot_delay = 20, + .reset_delay = 20, + }, + + [ CVI_HD_50P ] = { + .name = "CVI_HD_50P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x0C, + .tx_cmd_addr = 0x00, + .tx_shot_addr = 0x09, + .tx_baud = { 0x16, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x05, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x0c, + .tx_mode = 0x60, + .tx_sync_pos0 ={ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x64, + .rx_head_matching = 0xAB, + .rx_data_rz = 0x8D, + .rx_sz = 0x60, + + .shot_delay = 20, + .reset_delay = 20, + }, + + [ CVI_HD_30P ] = { + .name = "CVI_HD_30P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x0C, + .tx_cmd_addr = 0x00, + .tx_shot_addr = 0x09, + .tx_baud = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x05, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x0c, + .tx_mode = 0x60, + .tx_sync_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x03, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x32, + .rx_head_matching = 0xAB, + .rx_data_rz = 0x8D, + .rx_sz = 0x60, + + .shot_delay = 35, + .reset_delay = 35, + }, + + [ CVI_HD_25P ] = { + .name = "CVI_HD_25P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x0C, + .tx_cmd_addr = 0x00, + .tx_shot_addr = 0x09, + .tx_baud = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x05, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x0c, + .tx_mode = 0x60, + .tx_sync_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x03, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x32, + .rx_head_matching = 0xAB, + .rx_data_rz = 0x8D, + .rx_sz = 0x60, + + .shot_delay = 40, + .reset_delay = 40, + }, + + [ CVI_HD_30P_EX ] = { + .name = "CVI_HD_30P_EX", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x0C, + .tx_cmd_addr = 0x00, + .tx_shot_addr = 0x09, + .tx_baud = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x05, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x0c, + .tx_mode = 0x60, + .tx_sync_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x03, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x32, + .rx_head_matching = 0xAB, + .rx_data_rz = 0x8D, + .rx_sz = 0x60, + + .shot_delay = 35, + .reset_delay = 33, + }, + + [ CVI_HD_25P_EX ] = { + .name = "CVI_HD_25P_EX", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x0C, + .tx_cmd_addr = 0x00, + .tx_shot_addr = 0x09, + .tx_baud = { 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x05, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x0c, + .tx_mode = 0x60, + .tx_sync_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x03, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x32, + .rx_head_matching = 0xAB, + .rx_data_rz = 0x8D, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ CVI_FHD_30P ] = { + .name = "CVI_FHD_30P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x0C, + .tx_cmd_addr = 0x00, + .tx_shot_addr = 0x09, + .tx_baud = { 0x16, 0x16, 0x16, 0x16, 0x16, 0x16 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x05, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x0c, + .tx_mode = 0x60, + .tx_sync_pos0 = { 0x08, 0x08, 0x08, 0x08, 0x08, 0x08 }, + .tx_sync_pos1 = { 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x64, + .rx_head_matching = 0xAB, + .rx_data_rz = 0x8D, + .rx_sz = 0x60, + + .shot_delay = 35, + .reset_delay = 35, + }, + + [ CVI_FHD_25P ] = { + .name = "CVI_FHD_25P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x0C, + .tx_cmd_addr = 0x00, + .tx_shot_addr = 0x09, + .tx_baud = { 0x16, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x05, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x0c, + .tx_mode = 0x60, + .tx_sync_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x06, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x00, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x64, + .rx_head_matching = 0xAB, + .rx_data_rz = 0x8D, + .rx_sz = 0x60, + + .shot_delay = 40, + .reset_delay = 40, + }, + + [ CVI_4M_25P ] = { + .name = "CVI_4M_25P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x0C, + .tx_cmd_addr = 0x00, + .tx_shot_addr = 0x09, + .tx_baud = { 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x16, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x0f, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x01, + .tx_mode = 0x60, + .tx_sync_pos0 = { 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x10, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x64, + .rx_head_matching = 0xAB, + .rx_data_rz = 0x85, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ CVI_4M_30P ] = { + .name = "CVI_4M_30P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x0C, + .tx_cmd_addr = 0x00, + .tx_shot_addr = 0x09, + .tx_baud = { 0x2b, 0x00, 0x00, 0x2b, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x16, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x0f, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x1e, + .tx_mode = 0x60, + .tx_sync_pos0 = { 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x10, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x64, + .rx_head_matching = 0xAB, + .rx_data_rz = 0x85, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ CVI_5M_20P ] = { + .name = "CVI_5M_20P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x0C, + .tx_cmd_addr = 0x00, + .tx_shot_addr = 0x09, + .tx_baud = { 0x16, 0x00, 0x00, 0x2b, 0x00, 0x00 }, + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x05, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x0c, + .tx_mode = 0x60, + .tx_sync_pos0 = { 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x10, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x64, + .rx_head_matching = 0xAB, + .rx_data_rz = 0x85, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ CVI_8M_15P ] = { + .name = "CVI_8M_15P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x0C, + .tx_cmd_addr = 0x00, + .tx_shot_addr = 0x09, + .tx_baud = { 0x36, 0x00, 0x00, 0x00, 0x00, 0x00 }, //[0x35->0x37] + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x0f, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x01, + .tx_mode = 0x60, + .tx_sync_pos0 = { 0x90, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x10, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x58, //[0x54~0x5D] + .rx_head_matching = 0xAB, + .rx_data_rz = 0x85, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, + + [ CVI_8M_12_5P ] = { + .name = "CVI_8M_12_5P", + .ch = 0, + .rx_src = 0x01, + .rx_slice_lev = 0x80, + .tx_bank = 0x0C, + .tx_cmd_addr = 0x00, + .tx_shot_addr = 0x09, + .tx_baud = { 0x36, 0x00, 0x00, 0x00, 0x00, 0x00 }, //[0x35->0x39] + .tx_pel_baud = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos0 = { 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count = 0x0f, + .tx_pel_line_pos0 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_pel_line_pos1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_line_count_max = 0x1e, + .tx_mode = 0x60, + .tx_sync_pos0 = { 0x90, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_sync_pos1 = { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00 }, + .tx_even = 0x00, + .tx_zero_length = 0x10, + + .rx_comm_on = 0x01, + .rx_area = 0x05, + .rx_signal_enhance = 0x01, + .rx_manual_duty = 0x61, //[0x5E~0x64] + .rx_head_matching = 0xAB, + .rx_data_rz = 0x85, + .rx_sz = 0x60, + + .shot_delay = 25, + .reset_delay = 25, + }, +}; + + +NC_VD_ACP_CMDDEF_STR nvp6158_coax_cmd_lists[]= +{ + [ COAX_CMD_IRIS_INC ] = { + .name = "COAX_CMD_IRIS_INC", + .ahd_16bit = { 0x40, 0x00, 0x00, 0x00, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, EOD }, + .ahd_4_5m = { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, EOD }, + .cvi_cmd = { 0xa5, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .cvi_new_cmd = { 0xa5, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x6f, 0xff, 0xff, 0xff, EOD }, + .cvi_checksum = { 0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, EOD }, + .tvi_v1_0 = { 0xb5, 0x00, 0x0f, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc4, 0x80, EOD }, + .tvi_v2_0 = { 0xb5, 0x01, 0x0f, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc5, 0x80, EOD }, + .sd = { 0x40, 0x00, 0x00, 0x00, EOD }, + .autostop = 0, + }, + + [ COAX_CMD_IRIS_DEC ] = { + .name = "COAX_CMD_IRIS_DEC", + .ahd_16bit = { 0x20, 0x00, 0x00, 0x00, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, EOD }, + .ahd_4_5m = { 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, EOD }, + .cvi_cmd = { 0xa5, 0x80, 0x06, 0x00, 0x00, 0x00, 0x60, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .cvi_new_cmd = { 0xa5, 0x80, 0x06, 0x00, 0x00, 0x00, 0x60, 0xff, 0xff, 0xff, EOD }, + .cvi_checksum = { 0x60, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .tvi_v1_0 = { 0xb5, 0x00, 0x0e, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc3, 0x80, EOD }, + .tvi_v2_0 = { 0xb5, 0x01, 0x0e, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc4, 0x80, EOD }, + .sd = { 0x20, 0x00, 0x00, 0x00, EOD }, + .autostop = 0, + }, + + [ COAX_CMD_FOCUS_INC ] = { + .name = "COAX_CMD_FOCUS_INC", + .ahd_16bit = { 0x80, 0x00, 0x00, 0x00, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, EOD }, + .ahd_4_5m = { 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, EOD }, + .cvi_cmd = { 0xa5, 0x80, 0x22, 0x00, 0x0A, 0x00, 0x5C, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .cvi_new_cmd = { 0xa5, 0x80, 0x22, 0x00, 0x0A, 0x00, 0x5C, 0xff, 0xff, 0xff, EOD }, + .cvi_checksum = { 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .tvi_v1_0 = { 0xb5, 0x00, 0x11, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc6, 0x80, EOD }, + .tvi_v2_0 = { 0xb5, 0x01, 0x11, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc7, 0x80, EOD }, + .sd = { 0x80, 0x00, 0x00, 0x00, EOD }, + .autostop = 0, + }, + + [ COAX_CMD_FOCUS_DEC ] = { + .name = "COAX_CMD_FOCUS_DEC", + .ahd_16bit = { 0x00, 0x01, 0x01, 0x00, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, EOD }, + .ahd_4_5m = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, EOD }, + .cvi_cmd = { 0xa5, 0x80, 0x12, 0x00, 0x0A, 0x00, 0x7C, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .cvi_new_cmd = { 0xa5, 0x80, 0x12, 0x00, 0x0A, 0x00, 0x7C, 0xff, 0xff, 0xff, EOD }, + .cvi_checksum = { 0x57, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .tvi_v1_0 = { 0xb5, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc5, 0x80, EOD }, + .tvi_v2_0 = { 0xb5, 0x01, 0x10, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc6, 0x80, EOD }, + .sd = { 0x00, 0x01, 0x00, 0x00, EOD }, + .autostop = 0, + }, + + [ COAX_CMD_ZOOM_INC ] = { + .name = "COAX_CMD_ZOOM_INC", + .ahd_16bit = { 0x00, 0x02, 0x02, 0x00, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, EOD }, + .ahd_4_5m = { 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, EOD }, + .cvi_cmd = { 0xa5, 0x80, 0x82, 0x00, 0x00, 0x00, 0xE7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .cvi_new_cmd = { 0xa5, 0x80, 0x82, 0x00, 0x00, 0x00, 0xE7, 0xff, 0xff, 0xff, EOD }, + .cvi_checksum = { 0x17, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .tvi_v1_0 = { 0xb5, 0x00, 0x13, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc8, 0x80, EOD }, + .tvi_v2_0 = { 0xb5, 0x01, 0x13, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc9, 0x80, EOD }, + .sd = { 0x00, 0x02, 0x00, 0x00, EOD }, + .autostop = 0, + }, + + [ COAX_CMD_ZOOM_DEC ] = { + .name = "COAX_CMD_ZOOM_DEC", + .ahd_16bit = { 0x00, 0x04, 0x04, 0x00, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, EOD }, + .ahd_4_5m = { 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, EOD }, + .cvi_cmd = { 0xa5, 0x80, 0x42, 0x00, 0x00, 0x00, 0x17, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .cvi_new_cmd = { 0xa5, 0x80, 0x42, 0x00, 0x00, 0x00, 0x17, 0xff, 0xff, 0xff, EOD }, + .cvi_checksum = { 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .tvi_v1_0 = { 0xb5, 0x00, 0x12, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc7, 0x80, EOD }, + .tvi_v2_0 = { 0xb5, 0x01, 0x12, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc8, 0x80, EOD }, + .sd = { 0x00, 0x04, 0x00, 0x00, EOD }, + .autostop = 0, + }, + + [ COAX_CMD_OSD_ON ] = { + .name = "COAX_CMD_OSD_ON", + .ahd_16bit = { 0x00, 0xc0, 0xc0, 0xfa, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x5F, EOD }, + .ahd_4_5m = { 0x00, 0x03, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x00, EOD }, + .cvi_cmd = { 0xa5, 0x80, 0x91, 0x80, 0x00, 0x00, 0x0C, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .cvi_new_cmd = { 0xa5, 0x80, 0x91, 0x10, 0x00, 0x00, 0xEC, 0xff, 0xff, 0xff, EOD }, + .cvi_checksum = { 0x0C, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .tvi_v1_0 = { 0xb5, 0x00, 0x0f, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc4, 0x80, EOD }, + .tvi_v2_0 = { 0xb5, 0x01, 0x0f, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc5, 0x80, EOD }, + .sd = { 0x00, 0xC0, 0x00, 0xFA, EOD }, + .autostop = 1, + }, + + [ COAX_CMD_PTZ_UP ] = { + .name = "COAX_CMD_PTZ_UP", + .ahd_16bit = { 0x00, 0x10, 0x10, 0x4c, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, EOD }, + .ahd_4_5m = { 0x00, 0x08, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, EOD }, + .cvi_cmd = { 0xa5, 0x80, 0x10, 0x00, 0xf9, 0x00, 0xb2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .cvi_new_cmd = { 0xa5, 0x80, 0x91, 0x20, 0x00, 0x00, 0xCC, 0xff, 0xff, 0xff, EOD }, + .cvi_checksum = { 0xb2, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, EOD }, + .tvi_v1_0 = { 0xb5, 0x00, 0x06, 0x24, 0x80, 0x00, 0x00, 0x00, 0xdf, 0x80, EOD }, + .tvi_v2_0 = { 0xb5, 0x01, 0x06, 0xff, 0x80, 0x00, 0x00, 0x00, 0xbb, 0x80, EOD }, + .sd = { 0x00, 0x10, 0x00, 0x00, EOD }, + .autostop = 0, + }, + + [ COAX_CMD_PTZ_DOWN ] = { + .name = "COAX_CMD_PTZ_DOWN", + .ahd_16bit = { 0x00, 0x08, 0x08, 0x4c, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x32, EOD }, + .ahd_4_5m = { 0x00, 0x10, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, EOD }, + .cvi_cmd = { 0xa5, 0x80, 0x20, 0x00, 0xf9, 0x00, 0x92, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .cvi_new_cmd = { 0xa5, 0x80, 0x91, 0xA0, 0x00, 0x00, 0x2C, 0xff, 0xff, 0xff, EOD }, + .cvi_checksum = { 0x92, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .tvi_v1_0 = { 0xb5, 0x00, 0x07, 0x24, 0x80, 0x00, 0x00, 0x00, 0xe0, 0x80, EOD }, + .tvi_v2_0 = { 0xb5, 0x01, 0x07, 0xff, 0x80, 0x00, 0x00, 0x00, 0xbc, 0x80, EOD }, + .sd = { 0x00, 0x08, 0x00, 0x00, EOD }, + .autostop = 0, + }, + + [ COAX_CMD_PTZ_LEFT ] = { + .name = "COAX_CMD_PTZ_LEFT", + .ahd_16bit = { 0x00, 0x20, 0x20, 0x00, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x32, 0x00, EOD }, + .ahd_4_5m = { 0x00, 0x04, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, EOD }, + .cvi_cmd = { 0xa5, 0x80, 0x40, 0xf9, 0x00, 0x00, 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .cvi_new_cmd = { 0xa5, 0x80, 0x91, 0x60, 0x00, 0x00, 0xAC, 0xff, 0xff, 0xff, EOD }, + .cvi_checksum = { 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .tvi_v1_0 = { 0xb5, 0x00, 0x09, 0x00, 0x80, 0x24, 0x00, 0x00, 0xe2, 0x80, EOD }, + .tvi_v2_0 = { 0xb5, 0x01, 0x09, 0x00, 0x80, 0xff, 0x00, 0x00, 0xbe, 0x80, EOD }, + .sd = { 0x00, 0x20, 0x4C, 0x00, EOD }, + .autostop = 0, + }, + + [ COAX_CMD_PTZ_RIGHT ] = { + .name = "COAX_CMD_PTZ_RIGHT", + .ahd_16bit = { 0x00, 0x40, 0x40, 0x00, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x32, 0x00, EOD }, + .ahd_4_5m = { 0x00, 0x02, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, EOD }, + .cvi_cmd = { 0xa5, 0x80, 0x80, 0xf9, 0x00, 0x00, 0x62, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .cvi_new_cmd = { 0xa5, 0x80, 0x91, 0xE0, 0x00, 0x00, 0x6C, 0xff, 0xff, 0xff, EOD }, + .cvi_checksum = { 0x62, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .tvi_v1_0 = { 0xb5, 0x00, 0x08, 0x00, 0x80, 0x24, 0x00, 0x00, 0xe1, 0x80, EOD }, + .tvi_v2_0 = { 0xb5, 0x01, 0x08, 0x00, 0x80, 0xff, 0x00, 0x00, 0xbd, 0x80, EOD }, + .sd = { 0x00, 0x40, 0x4C, 0x00, EOD }, + .autostop = 0, + }, + + [ COAX_CMD_OSD_ENTER ] = { + .name = "COAX_CMD_OSD_ENTER", + .ahd_16bit = { 0x40, 0x00, 0x00, 0x00, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, EOD }, + .ahd_4_5m = { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, EOD }, + .cvi_cmd = { 0xa5, 0x80, 0x91, 0x10, 0x00, 0x00, 0xec, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .cvi_new_cmd = { 0xa5, 0x80, 0x91, 0x10, 0x00, 0x00, 0xEC, 0xff, 0xff, 0xff, EOD }, + .cvi_checksum = { 0xec, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .tvi_v1_0 = { 0xb5, 0x00, 0x17, 0x5f, 0x80, 0x00, 0x00, 0x00, 0x2b, 0x80, EOD }, + .tvi_v2_0 = { 0xb5, 0x01, 0x17, 0x5f, 0x80, 0x00, 0x00, 0x00, 0x2c, 0x80, EOD }, + .sd = { 0x40, 0x00, 0x00, 0x00, EOD }, + .autostop = 1, + }, + + [ COAX_CMD_SPECIAL_FW ] = { + .name = "COAX_CMD_SPECIAL_FW", + .ahd_16bit = { 0xAA, 0xAB, 0xAA, 0xAB, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, EOD }, + .ahd_4_5m = { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, EOD }, + .cvi_cmd = { 0xa5, 0x80, 0xAA, 0xAB, 0xAC, 0x00, 0x0A, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .cvi_new_cmd = { 0xa5, 0x80, 0xAA, 0xAB, 0xAC, 0x00, 0x0A, 0xff, 0xff, 0xff, EOD }, + .cvi_checksum = { 0xec, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .tvi_v1_0 = { 0xb5, 0xAA, 0xAB, 0xAC, 0x80, 0x00, 0x00, 0x00, 0xD5, 0x80, EOD }, + .tvi_v2_0 = { 0xb5, 0xAA, 0xAB, 0xAC, 0x80, 0x00, 0x00, 0x00, 0xD5, 0x80, EOD }, + .sd = { 0xAA, 0xAB, 0xAA, 0xAB, EOD }, + .autostop = 1, + }, + + [ COAX_CMD_SPECIAL_CAMEQ ] = { + .name = "COAX_CMD_SPECIAL_CAMEQ", + .ahd_16bit = { 0x00, 0x00, 0x00, 0x00, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, EOD }, + .ahd_4_5m = { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, EOD }, + .cvi_cmd = { 0x00, 0x03, 0x40, EOD }, + .cvi_new_cmd = { 0xa5, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x6f, 0xff, 0xff, 0xff, EOD }, + .cvi_checksum = { 0x81, 0x92, 0xc1, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xc1, 0xff, EOD }, + .tvi_v1_0 = { 0x00, EOD }, + .tvi_v2_0 = { 0x00, EOD }, + .sd = { 0x00, EOD }, + .autostop = 1, + }, + + [ COAX_CMD_SPECIAL_FPS ] = { + .name = "COAX_CMD_SPECIAL_FPS", + .ahd_16bit = { 0x00, 0x00, 0x00, 0x00, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, EOD }, + .ahd_4_5m = { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, EOD }, + .cvi_cmd = { 0x00, 0x03, 0x40, EOD}, + .cvi_new_cmd = { 0xa5, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x6f, 0xff, 0xff, 0xff, EOD }, + .cvi_checksum = { 0x81, 0x92, 0xc1, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xc1, 0xff, EOD }, + .tvi_v1_0 = { 0x00, EOD }, + .tvi_v2_0 = { 0x00, EOD }, + .sd = { 0x00, EOD }, + .autostop = 1, + }, + + [ COAX_CMD_SPECIAL_MOTION ] = { + .name = "COAX_CMD_SPECIAL_MOTION", + .ahd_16bit = { 0x00, 0x00, 0x00, 0x00, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, EOD }, + .ahd_4_5m = { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, EOD }, + .cvi_cmd = { 0x00, 0x03, 0x40, EOD }, + .cvi_new_cmd = { 0xa5, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x6f, 0xff, 0xff, 0xff, EOD }, + .cvi_checksum = { 0x81, 0x92, 0xc1, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xc1, 0xff, 0xc1, 0xff, EOD }, + .tvi_v1_0 = { 0x00, EOD }, + .tvi_v2_0 = { 0x00, EOD }, + .sd = { 0x00, EOD }, + .autostop = 1, + }, + + [ COAX_CMD_SPECIAL_3DNR_REQUEST ] = { + .name = "COAX_CMD_SPECIAL_3DNR_REQUEST", + .ahd_16bit = { 0x00, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, EOD }, + .ahd_4_5m = { 0x60, 0xB0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xB0, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, EOD }, + + .cvi_cmd = { 0x00, EOD }, + .cvi_new_cmd = { 0x00, EOD }, + .cvi_checksum = { 0x00, EOD }, + + .tvi_v1_0 = { 0x00, EOD }, + .tvi_v2_0 = { 0x00, EOD }, + + .sd = { 0x00, EOD }, + }, + + [ COAX_CMD_TVI_DOWNSTREAM_REQUEST ] = { + .name = "COAX_CMD_SPECIAL_MOTION", + .ahd_16bit = { 0x00, EOD }, + .ahd_8bit = { 0x00, EOD }, + .ahd_4_5m = { 0x00, EOD }, + .cvi_cmd = { 0x00, EOD }, + .cvi_new_cmd = { 0x00, EOD }, + .cvi_checksum = { 0x00, EOD }, + .tvi_v1_0 = { 0xb5, 0x00, 0x87, 0x00, 0x80, 0x00, 0x00, 0x00, 0x3c, 0x80, EOD }, + .tvi_v2_0 = { 0xb5, 0x01, 0x87, 0x00, 0x80, 0x00, 0x00, 0x00, 0x3d, 0x80, EOD }, + .sd = { 0x00, EOD }, + .autostop = 1, + }, + + [ COAX_CMD_OSD_UP ] = { + .name = "COAX_CMD_OSD_UP", + .ahd_16bit = { 0x00, 0x10, 0x10, 0x4c, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, EOD }, + .ahd_4_5m = { 0x00, 0x08, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, EOD }, + .cvi_cmd = { 0xa5, 0x80, 0x10, 0x00, 0xf9, 0x00, 0xb2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .cvi_new_cmd = { 0xa5, 0x80, 0x91, 0x20, 0x00, 0x00, 0xCC, 0xff, 0xff, 0xff, EOD }, + .cvi_checksum = { 0xb2, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, EOD }, + .tvi_v1_0 = { 0xb5, 0x00, 0x06, 0x24, 0x80, 0x00, 0x00, 0x00, 0xdf, 0x80, EOD }, + .tvi_v2_0 = { 0xb5, 0x01, 0x06, 0xff, 0x80, 0x00, 0x00, 0x00, 0xbb, 0x80, EOD }, + .sd = { 0x00, 0x10, 0x00, 0x00, EOD }, + .autostop = 1, + }, + + [ COAX_CMD_OSD_DOWN ] = { + .name = "COAX_CMD_OSD_DOWN", + .ahd_16bit = { 0x00, 0x08, 0x08, 0x4c, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x32, EOD }, + .ahd_4_5m = { 0x00, 0x10, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, EOD }, + .cvi_cmd = { 0xa5, 0x80, 0x20, 0x00, 0xf9, 0x00, 0x92, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .cvi_new_cmd = { 0xa5, 0x80, 0x91, 0xA0, 0x00, 0x00, 0x2C, 0xff, 0xff, 0xff, EOD }, + .cvi_checksum = { 0x92, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .tvi_v1_0 = { 0xb5, 0x00, 0x07, 0x24, 0x80, 0x00, 0x00, 0x00, 0xe0, 0x80, EOD }, + .tvi_v2_0 = { 0xb5, 0x01, 0x07, 0xff, 0x80, 0x00, 0x00, 0x00, 0xbc, 0x80, EOD }, + .sd = { 0x00, 0x08, 0x00, 0x00, EOD }, + .autostop = 1, + }, + + [ COAX_CMD_OSD_LEFT ] = { + .name = "COAX_CMD_OSD_LEFT", + .ahd_16bit = { 0x00, 0x20, 0x20, 0x00, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x32, 0x00, EOD }, + .ahd_4_5m = { 0x00, 0x04, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, EOD }, + .cvi_cmd = { 0xa5, 0x80, 0x40, 0xf9, 0x00, 0x00, 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .cvi_new_cmd = { 0xa5, 0x80, 0x91, 0x60, 0x00, 0x00, 0xAC, 0xff, 0xff, 0xff, EOD }, + .cvi_checksum = { 0xe2, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .tvi_v1_0 = { 0xb5, 0x00, 0x09, 0x00, 0x80, 0x24, 0x00, 0x00, 0xe2, 0x80, EOD }, + .tvi_v2_0 = { 0xb5, 0x01, 0x09, 0x00, 0x80, 0xff, 0x00, 0x00, 0xbe, 0x80, EOD }, + .sd = { 0x00, 0x20, 0x4C, 0x00, EOD }, + .autostop = 1, + }, + + [ COAX_CMD_OSD_RIGHT ] = { + .name = "COAX_CMD_OSD_RIGHT", + .ahd_16bit = { 0x00, 0x40, 0x40, 0x00, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x32, 0x00, EOD }, + .ahd_4_5m = { 0x00, 0x02, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, EOD }, + .cvi_cmd = { 0xa5, 0x80, 0x80, 0xf9, 0x00, 0x00, 0x62, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .cvi_new_cmd = { 0xa5, 0x80, 0x91, 0xE0, 0x00, 0x00, 0x6C, 0xff, 0xff, 0xff, EOD }, + .cvi_checksum = { 0x62, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .tvi_v1_0 = { 0xb5, 0x00, 0x08, 0x00, 0x80, 0x24, 0x00, 0x00, 0xe1, 0x80, EOD }, + .tvi_v2_0 = { 0xb5, 0x01, 0x08, 0x00, 0x80, 0xff, 0x00, 0x00, 0xbd, 0x80, EOD }, + .sd = { 0x00, 0x40, 0x4C, 0x00, EOD }, + .autostop = 1, + }, + + [ COAX_CMD_STOP ] = { + .name = "COAX_CMD_STOP", + .ahd_16bit = { 0x00, 0x00, 0x00, 0x00, EOD }, + .ahd_8bit = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, EOD }, + .ahd_4_5m = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, EOD }, + .cvi_cmd = { 0xa5, 0x80, 0x02, 0x00, 0x00, 0x00, 0x67, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .cvi_new_cmd = { 0xa5, 0x80, 0x02, 0x00, 0x00, 0x00, 0x67, 0xff, 0xff, 0xff, EOD }, + .cvi_checksum = { 0xec, 0xff, 0xff, 0xff, 0xff, 0xff, EOD }, + .tvi_v1_0 = { 0xb5, 0x00, 0x14, 0x00, 0x80, 0x00, 0x00, 0x00, 0xc9, 0x80, EOD }, + .tvi_v2_0 = { 0xb5, 0x01, 0x14, 0x00, 0x80, 0x00, 0x00, 0x00, 0xca, 0x80, EOD }, + .sd = { 0x40, 0x00, 0x00, 0x00, EOD }, + .autostop = 1, + }, +}; + + + + +/******************************************************************** + * End of file + ********************************************************************/ + +#endif diff --git a/drivers/media/i2c/nvp6158_drv/nvp6158_common.h b/drivers/media/i2c/nvp6158_drv/nvp6158_common.h new file mode 100644 index 000000000000..5b68ba649b89 --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/nvp6158_common.h @@ -0,0 +1,537 @@ +// SPDX-License-Identifier: GPL-2.0 +/******************************************************************************** +* +* Copyright (C) 2017 NEXTCHIP Inc. All rights reserved. +* Module : Common header file +* Description : This file is common header file +* Author : +* Date : +* Version : Version 2.0 +* +******************************************************************************** +* History : +* +* +********************************************************************************/ +#ifndef __COMMON_H__ +#define __COMMON_H__ + +unsigned char nvp6158_I2CReadByte8(unsigned char devaddress, unsigned char address); +void nvp6158_I2CWriteByte8(unsigned char devaddress, unsigned char address, unsigned char data); + +#define gpio_i2c_read nvp6158_I2CReadByte8 +#define gpio_i2c_write nvp6158_I2CWriteByte8 + +//#define STREAM_ON_DEFLAULT + +#define I2C_0 (0) +#define I2C_1 (1) +#define I2C_2 (2) +#define I2C_3 (3) + +// device address define +#define NVP6158_R0_ID 0xA1 +#define NVP6158C_R0_ID 0xA0 //6158B AND 6158C USES THE SAME CHIPID,DIFF IN REV_ID +#define NVP6158_REV_ID 0x00 +#define NVP6168_R0_ID 0xC1 +#define NVP6168C_R0_ID 0xC0 +//#define NVP6158C_REV_ID 0x01 +#define CH_PER_CHIP 4 + +#define NTSC 0x00 +#define PAL 0x01 + +#define AHD_PELCO_16BIT + +enum { + NC_AD_SAMPLE_RATE_8000 = 8000, + NC_AD_SAMPLE_RATE_16000 = 16000, + NC_AD_SAMPLE_RATE_32000 = 32000, + NC_AD_SAMPLE_RATE_44100 = 44100, + + NC_AD_SAMPLE_RATE_MAX, +}; + +enum { + NC_AD_AI = 0, + NC_AD_AOC, + + NC_AD_MAX +}; + +enum { + NC_AD_BIT_WIDTH_8 = 0, + NC_AD_BIT_WIDTH_16, + NC_AD_BIT_WIDTH_24, + + NC_AD_BIT_WIDTH_MAX +}; + +//FIXME HI3520 Register +#define VIU_CH_CTRL 0x08 +#define VIU_ANC0_START 0x9c +#define VIU_ANC0_SIZE 0xa0 +#define VIU_ANC1_START 0xa4 +#define VIU_ANC1_SIZE 0xa8 +#define VIU_BLANK_DATA_ADDR 0xac + +#define IOC_VDEC_GET_EQ_DIST 0x07 +#define IOC_VDEC_GET_INPUT_VIDEO_FMT 0x08 +#define IOC_VDEC_GET_VIDEO_LOSS 0x09 +#define IOC_VDEC_SET_SYNC 0x0A +#define IOC_VDEC_SET_EQUALIZER 0x0B +#define IOC_VDEC_GET_DRIVERVER 0x0C +#define IOC_VDEC_PTZ_ACP_READ 0x0D +#define IOC_VDEC_SET_BRIGHTNESS 0x0E +#define IOC_VDEC_SET_CONTRAST 0x0F +#define IOC_VDEC_SET_HUE 0x10 +#define IOC_VDEC_SET_SATURATION 0x11 +#define IOC_VDEC_SET_SHARPNESS 0x12 +#define IOC_VDEC_SET_CHNMODE 0x13 +#define IOC_VDEC_SET_OUTPORTMODE 0x14 +#define IOC_VDEC_SET_CHDETMODE 0x15 + +#define IOC_VDEC_ACP_WRITE 0x2f +#define IOC_VDEC_ACP_WRITE_EXTENTION 0x30 +#define IOC_VDEC_PTZ_ACP_READ_EACH_CH 0x31 + +#define IOC_VDEC_INIT_MOTION 0x40 +#define IOC_VDEC_ENABLE_MOTION 0x41 +#define IOC_VDEC_DISABLE_MOTION 0x42 +#define IOC_VDEC_SET_MOTION_AREA 0x43 +#define IOC_VDEC_GET_MOTION_INFO 0x44 +#define IOC_VDEC_SET_MOTION_DISPLAY 0x45 +#define IOC_VDEC_SET_MOTION_SENS 0x46 + +#define IOC_AUDIO_SET_CHNNUM 0x80 +#define IOC_AUDIO_SET_SAMPLE_RATE 0x81 +#define IOC_AUDIO_SET_BITWIDTH 0x82 +#define IOC_VDEC_SET_I2C 0x83 + +#define IOC_VDEC_ACP_POSSIBLE_FIRMUP 0xA0 // by Andy(2016-06-26) +#define IOC_VDEC_ACP_CHECK_ISPSTATUS 0xA1 // by Andy(2016-07-12) +#define IOC_VDEC_ACP_START_FIRMUP 0xA2 // by Andy(2016-07-12) +#define IOC_VDEC_ACP_FIRMUP 0xA3 // by Andy(2016-06-26) +#define IOC_VDEC_ACP_FIRMUP_END 0xA4 // by Andy(2016-06-26) + +#define IOC_VDEC_GET_ADC_CLK 0xB1 +#define IOC_VDEC_SET_ADC_CLK 0xB2 + +/*----------------------- Coaxial protocol ---------------------*/ +// Coax UP Stream - 8bit +#define IOC_VDEC_COAX_TX_INIT 0xA0 +#define IOC_VDEC_COAX_TX_CMD_SEND 0xA1 + +// Coax UP Stream - 16bit only ACP 720P Support +#define IOC_VDEC_COAX_TX_16BIT_INIT 0xB4 +#define IOC_VDEC_COAX_TX_16BIT_CMD_SEND 0xB5 +#define IOC_VDEC_COAX_TX_CVI_NEW_CMD_SEND 0xB6 + +// Coax Down Stream +#define IOC_VDEC_COAX_RX_INIT 0xA2 +#define IOC_VDEC_COAX_RX_DATA_READ 0xA3 +#define IOC_VDEC_COAX_RX_BUF_CLEAR 0xA4 +#define IOC_VDEC_COAX_RX_DEINIT 0xA5 + +// Coax Test +#define IOC_VDEC_COAX_TEST_TX_INIT_DATA_READ 0xA6 +#define IOC_VDEC_COAX_TEST_DATA_SET 0xA7 +#define IOC_VDEC_COAX_TEST_DATA_READ 0xA8 + +// Coax FW Update +#define IOC_VDEC_COAX_FW_ACP_HEADER_GET 0xA9 +#define IOC_VDEC_COAX_FW_READY_CMD_SET 0xAA +#define IOC_VDEC_COAX_FW_READY_ACK_GET 0xAB +#define IOC_VDEC_COAX_FW_START_CMD_SET 0xAC +#define IOC_VDEC_COAX_FW_START_ACK_GET 0xAD +#define IOC_VDEC_COAX_FW_SEND_DATA_SET 0xAE +#define IOC_VDEC_COAX_FW_SEND_ACK_GET 0xAF +#define IOC_VDEC_COAX_FW_END_CMD_SET 0xB0 +#define IOC_VDEC_COAX_FW_END_ACK_GET 0xB1 + +// Bank Dump Test +#define IOC_VDEC_COAX_BANK_DUMP_GET 0xB2 + +// ACP Option +#define IOC_VDEC_COAX_RT_NRT_MODE_CHANGE_SET 0xB3 + +/*----------------------- MOTION -----------------*/ +#define IOC_VDEC_MOTION_SET 0x70 +#define IOC_VDEC_MOTION_PIXEL_SET 0x71 +#define IOC_VDEC_MOTION_PIXEL_GET 0x72 +#define IOC_VDEC_MOTION_TSEN_SET 0x73 +#define IOC_VDEC_MOTION_PSEN_SET 0x74 +#define IOC_VDEC_MOTION_ALL_PIXEL_SET 0x75 +#define IOC_VDEC_MOTION_DETECTION_GET 0x76 + +typedef struct _nvp6158_video_mode +{ + unsigned int chip; + unsigned int mode; + unsigned char vformat[16]; + unsigned char chmode[16]; +}nvp6158_video_mode; + +typedef struct _nvp6158_chn_mode +{ + unsigned char ch; + unsigned char vformat; + unsigned char chmode; +}nvp6158_chn_mode; + +typedef struct _nvp6158_opt_mode +{ + unsigned char chipsel; + unsigned char portsel; + unsigned char portmode; + unsigned char chid; +}nvp6158_opt_mode; + +typedef struct _nvp6158_input_videofmt +{ + unsigned int inputvideofmt[16]; + unsigned int getvideofmt[16]; + unsigned int geteqstage[16]; + unsigned int getacpdata[16][8]; +}nvp6158_input_videofmt; + +typedef struct _nvp6158_input_videofmt_ch +{ + unsigned char ch; + nvp6158_input_videofmt vfmt; +}nvp6158_input_videofmt_ch; + +typedef struct _nvp6124_i2c_mode +{ + unsigned char flag; // 0: read, 1 : write + unsigned char slaveaddr; + unsigned char bank; + unsigned char address; + unsigned char data; +}nvp6124_i2c_mode; + +typedef struct _nvp6158_video_adjust +{ + unsigned char ch; + unsigned char value; +}nvp6158_video_adjust; + +typedef struct _nvp6158_motion_area +{ + unsigned char ch; + int m_info[12]; +}nvp6158_motion_area; + +typedef struct _nvp6158_audio_playback +{ + unsigned char chip; + unsigned char ch; +}nvp6158_audio_playback; + +typedef struct _nvp6158_audio_da_mute +{ + unsigned char chip; +}nvp6158_audio_da_mute; + +typedef struct _nvp6158_audio_da_volume +{ + unsigned char chip; + unsigned char volume; +}nvp6158_audio_da_volume; + +typedef struct _nvp6158_audio_format +{ + unsigned char format; /* 0:i2s; 1:dsp */ + unsigned char mode; /* 0:slave 1:master*/ + unsigned char dspformat; /*0:dsp;1:ssp*/ + unsigned char clkdir; /*0:inverted;1:non-inverted*/ + unsigned char chn_num; /*2,4,8,16*/ + unsigned char bitrate; /*0:256fs 1:384fs invalid for nvp6114 2:320fs*/ + unsigned char precision;/*0:16bit;1:8bit*/ + unsigned char samplerate;/*0:8kHZ;1:16kHZ; 2:32kHZ*/ +} nvp6158_audio_format; + +// by Andy(2016-06-26) +/*typedef struct __file_information +{ + unsigned int channel; + unsigned char filename[64]; + unsigned char filePullname[64+32]; + unsigned int filesize; + unsigned int filechecksum; // (sum of file&0x0000FFFFF) + unsigned int currentpacketnum; // current packet sequnce number(0,1,2........) + unsigned int filepacketnum; // file packet number = (total size/128bytes), if remain exist, file packet number++ + unsigned char onepacketbuf[128+32]; + + unsigned int currentFileOffset; // Current file offset + unsigned int readsize; // currnet read size + + unsigned int ispossiblefirmup[16]; // is it possible to update firmware? + int result; + + int appstatus[16]; // Application status + +} FIRMWARE_UP_FILE_INFO, *PFIRMWARE_UP_FILE_INFO; +*/ +enum __CABLE_TYPE_INFORMATION__ +{ + CABLE_TYPE_COAX=0, + CABLE_TYPE_UTP, + + CABLE_TYPE_MAX +}; + +enum __DETECTION_TYPE_INFORMATION__ +{ + DETECTION_TYPE_AUTO=0, + DETECTION_TYPE_AHD, + DETECTION_TYPE_CHD, + DETECTION_TYPE_THD, + DETECTION_TYPE_CVBS, + + DETECTION_TYPE_MAX +}; + +#define NVP6158_IOC_MAGIC 'n' + +#define NVP6158_SET_AUDIO_PLAYBACK _IOW(NVP6158_IOC_MAGIC, 0x21, nvp6158_audio_playback) +#define NVP6158_SET_AUDIO_DA_MUTE _IOW(NVP6158_IOC_MAGIC, 0x22, nvp6158_audio_da_mute) +#define NVP6158_SET_AUDIO_DA_VOLUME _IOW(NVP6158_IOC_MAGIC, 0x23, nvp6158_audio_da_volume) +/*set record format*/ +#define NVP6158_SET_AUDIO_R_FORMAT _IOW(NVP6158_IOC_MAGIC, 0x24, nvp6158_audio_format) +/*set playback format*/ +#define NVP6158_SET_AUDIO_PB_FORMAT _IOW(NVP6158_IOC_MAGIC, 0x25, nvp6158_audio_format) + +#define _SET_BIT(data,bit) ((data)|=(1<<(bit))) +#define _CLE_BIT(data,bit) ((data)&=(~(1<<(bit)))) +////////////////////////////////////// +typedef enum _NC_VIDEO_ONOFF +{ + VIDEO_LOSS_ON = 0, + VIDEO_LOSS_OFF = 1, + +} NC_VIDEO_ONOFF; + +typedef struct _decoder_dev_ch_info_s +{ + unsigned char ch; + unsigned char devnum; + unsigned char fmt_def; +}decoder_dev_ch_info_s; + +typedef enum NC_VIVO_CH_FORMATDEF +{ + NC_VIVO_CH_FORMATDEF_UNKNOWN = 0, + NC_VIVO_CH_FORMATDEF_AUTO, + + AHD20_SD_H960_NT, //960h*480i + AHD20_SD_H960_PAL, //960h*576i + AHD20_SD_SH720_NT, //720h*480i + AHD20_SD_SH720_PAL, //720h*576i + AHD20_SD_H1280_NT, + AHD20_SD_H1280_PAL, + AHD20_SD_H1440_NT, + AHD20_SD_H1440_PAL, + AHD20_SD_H960_EX_NT, //1920h*480i + AHD20_SD_H960_EX_PAL, //1920h*576i + AHD20_SD_H960_2EX_NT, + AHD20_SD_H960_2EX_PAL, + AHD20_SD_H960_2EX_Btype_NT, //3840h*480i + AHD20_SD_H960_2EX_Btype_PAL, //3840h*576i + + AHD30_4M_30P, + AHD30_4M_25P, + AHD30_4M_15P, + AHD30_3M_30P, + AHD30_3M_25P, + AHD30_3M_18P, //2048 x 1536 + AHD30_5M_12_5P, //2592 x 1944 + AHD30_5M_20P, //2592 x 1944 + + AHD30_5_3M_20P, + AHD30_6M_18P, + AHD30_6M_20P, + AHD30_8M_X_30P, + AHD30_8M_X_25P, + AHD30_8M_7_5P, + AHD30_8M_12_5P, + AHD30_8M_15P, + + TVI_FHD_30P, + TVI_FHD_25P, + TVI_HD_60P, + TVI_HD_50P, + TVI_HD_30P, + TVI_HD_25P, + TVI_HD_30P_EX, + TVI_HD_25P_EX, + TVI_HD_B_30P, + TVI_HD_B_25P, + TVI_HD_B_30P_EX, + TVI_HD_B_25P_EX, + TVI_3M_18P, //1920 x 1536 + TVI_5M_12_5P, + TVI_5M_20P, + TVI_4M_30P, + TVI_4M_25P, + TVI_4M_15P, + TVI_8M_15P, + TVI_8M_12_5P, + + CVI_FHD_30P, + CVI_FHD_25P, + CVI_HD_60P, + CVI_HD_50P, + CVI_HD_30P, + CVI_HD_25P, + CVI_HD_30P_EX, + CVI_HD_25P_EX, + CVI_4M_30P, + CVI_4M_25P, + CVI_5M_20P, + CVI_8M_15P, + CVI_8M_12_5P, + + AHD20_1080P_60P, + AHD20_1080P_50P, + AHD20_1080P_15P, + AHD20_1080P_12_5P, + + TVI_FHD_60P, + TVI_FHD_50P, + + AHD20_960P_30P, + AHD20_960P_25P, + AHD20_960P_60P, + AHD20_960P_50P, + + AHD20_1080P_15P_EX, // Hidden For test + AHD20_1080P_12_5P_EX, // Hidden For test + + AHD20_720P_15P_2EX_Btype, // Hidden For test + AHD20_720P_12_5P_2EX_Btype, // Hidden For test + + AHD20_720P_15P_EX_Btype, // Hidden For test + AHD20_720P_12_5P_EX_Btype, // Hidden For test + + AHD20_1080P_30P, + AHD20_1080P_25P, + + AHD20_720P_60P, + AHD20_720P_50P, + AHD20_720P_30P, + AHD20_720P_25P, + AHD20_720P_30P_EX, + AHD20_720P_25P_EX, + AHD20_720P_30P_EX_Btype, + AHD20_720P_25P_EX_Btype, + + NC_VIVO_CH_FORMATDEF_MAX, + +} NC_VIVO_CH_FORMATDEF; + +typedef enum NC_FORMAT_FPS +{ + FMT_FPS_UNKNOWN = 0, + FMT_NT = 1, + FMT_PAL, + FMT_12_5P, + FMT_7_5P, + FMT_30P, + FMT_25P, + FMT_50P, + FMT_60P, + FMT_15P, + FMT_18P, + FMT_18_75P, + FMT_20P, + + FMT_FPS_MAX, + +} NC_FORMAT_FPS; + +typedef enum NC_FORMAT_STANDARD +{ + FMT_STD_UNKNOWN = 0, + FMT_SD, + FMT_AHD20, + FMT_AHD30, + FMT_TVI, + FMT_CVI, + + FMT_AUTO, // FIXME + + FMT_STD_MAX, + +} NC_FORMAT_STANDARD; + +typedef enum NC_FORMAT_RESOLUTION +{ + FMT_RESOL_UNKNOWN = 0, + FMT_SH720, + FMT_H960, + FMT_H1280, + FMT_H1440, + FMT_H960_EX, + FMT_H960_2EX, + FMT_H960_Btype_2EX, + FMT_720P, + FMT_720P_EX, + FMT_720P_Btype, + FMT_720P_Btype_EX, + FMT_1080P, + FMT_1080P_EX, + FMT_3M, + FMT_4M, + FMT_5M, + FMT_5_3M, + FMT_6M, + FMT_8M_X, + FMT_8M, + + FMT_H960_Btype_2EX_SP, + FMT_720P_Btype_EX_SP, + + FMT_RESOL_MAX, + +} NC_FORMAT_RESOLUTION; + +typedef enum _dvp_mode +{ + BT601 = 0, + BT656_1MUX, + BT656_2MUX, + BT656_4MUX, + BT656I_TEST_MODES, + BT1120_1MUX, + BT1120_2MUX, + BT1120_4MUX, + NVP6158_DVP_MODES_END +} NVP6158_DVP_MODE; + +typedef struct VDEC_DEV_INFORM_S{ + + unsigned char nvp6158_chip_id[4]; + unsigned char chip_rev[4]; + unsigned char chip_addr[4]; + + unsigned char Total_Port_Num; + unsigned char Total_Chip_Cnt; + +}VDEC_DEV_INFORM_S; + +typedef struct _NVP6158_INFORMATION_S +{ + unsigned char ch; + NC_VIVO_CH_FORMATDEF curvideofmt[ 16 ]; + NC_VIVO_CH_FORMATDEF prevideofmt[ 16 ]; + unsigned char curvideoloss[ 16 ]; + unsigned char vfc[16]; + unsigned char debounce[16][5]; + unsigned char debounceidx[16]; + VDEC_DEV_INFORM_S chipinform; + +} NVP6158_INFORMATION_S; + +#endif + diff --git a/drivers/media/i2c/nvp6158_drv/nvp6158_dev.c b/drivers/media/i2c/nvp6158_drv/nvp6158_dev.c new file mode 100644 index 000000000000..19182dab2065 --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/nvp6158_dev.c @@ -0,0 +1,309 @@ +// SPDX-License-Identifier: GPL-2.0 +/******************************************************************************** +* +* Copyright (C) 2017 NEXTCHIP Inc. All rights reserved. +* Copyright (c) 2021 Rockchip Electronics Co. Ltd.All rights reserved. +* Module : install driver main +* Description : driver main +* Author : +* Date : +* Version : Version 2.0 +* +******************************************************************************** +* History : +* +* +********************************************************************************/ +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef CONFIG_HISI_SNAPSHOT_BOOT +#include +#endif + +#include +#include +#include +#include +#include +//#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +//#include "gpio_i2c.h" +#include "nvp6158_video.h" +#include "nvp6158_coax_protocol.h" +#include "nvp6158_motion.h" +#include "nvp6158_common.h" +#include "nvp6158_audio.h" +#include "nvp6158_video_auto_detect.h" +//#include "acp_firmup.h" +#include "nvp6158_video_eq.h" +#include "nvp6158_drv.h" + +unsigned int nvp6158_mode = PAL; //0:ntsc, 1: pal +unsigned int nvp6158_kthread = 0; + +module_param(nvp6158_mode, uint, S_IRUGO); + +module_param(nvp6158_kthread, uint, S_IRUGO); +#ifdef CONFIG_HISI_SNAPSHOT_BOOT +static struct himedia_device s_stNvp6158Device; +#endif + +#ifdef CONFIG_HISI_SNAPSHOT_BOOT +static int nvp6158_freeze(struct himedia_device* pdev) +{ + printk(KERN_ALERT "%s %d\n", __FUNCTION__, __LINE__); + return 0; +} + +static int nvp6158_restore(struct himedia_device* pdev) +{ + printk(KERN_ALERT "%s %d\n", __FUNCTION__, __LINE__); + return 0; +} +#endif + +static const struct file_operations nvp6158_fops = { + .owner = THIS_MODULE, + .unlocked_ioctl = nvp6158_native_ioctl, + .open = nvp6158_open, + .release = nvp6158_close, +}; + +#ifdef CONFIG_HISI_SNAPSHOT_BOOT +struct himedia_ops stNvp6158DrvOps = +{ + .pm_freeze = nvp6158_freeze, + .pm_restore = nvp6158_restore +}; +#endif + +/******************************************************************************* +* Description : kernel thread for EQ (now, not used) +* Argurments : void +* Return value : 0 +* Modify : +* warning : +*******************************************************************************/ +#ifdef STREAM_ON_DEFLAULT +static int nvp6158_kernel_thread(void *data) +{ + //int ch; + //nvp6158_input_videofmt videofmt; + NVP6158_INFORMATION_S s_nvp6158_vfmts; + video_equalizer_info_s s_eq_info; + unsigned char prefmt=0, curfmt=0, chvloss=0; + unsigned char ch = 0; + + memset(&s_nvp6158_vfmts, 0, sizeof(NVP6158_INFORMATION_S)); + + while(!kthread_should_stop()) { + #if 1 //standard rutine of a process + down(&nvp6158_lock); + ch = ch % (nvp6158_cnt*4); + nvp6158_getvideoloss(); + if(nvp6158_chip_id[0]==NVP6158C_R0_ID || nvp6158_chip_id[0]==NVP6158_R0_ID) { + nvp6158_video_fmt_det(ch, &s_nvp6158_vfmts); + curfmt = s_nvp6158_vfmts.curvideofmt[ch]; + prefmt = s_nvp6158_vfmts.prevideofmt[ch]; + chvloss = s_nvp6158_vfmts.curvideoloss[ch]; + //printk(">>>>>>%s CH[%d] chvloss = %d curfmt = %x prefmt = %x\n", __func__, ch, chvloss, curfmt, prefmt); + + if(chvloss == 0x00) { + if(nvp6158_ch_mode_status[ch] != prefmt) { + nvp6158_set_chnmode(ch, curfmt); + nvp6158_set_portmode(0, ch%4, NVP6158_OUTMODE_1MUX_FHD, ch%4); + s_eq_info.Ch = ch%4; + s_eq_info.devnum = ch/4; + s_eq_info.FmtDef = curfmt; + nvp6158_get_eq_dist(&s_eq_info); + s_nvp6158_vfmts.prevideofmt[ch] = curfmt; + printk(">>>>>>%s CH[%d] s_eq_info.distance = %d\n", + __func__, ch, s_eq_info.distance); + nvp6158_set_equalizer(&s_eq_info); + + } + } else { + if(nvp6158_ch_mode_status[ch] != NC_VIVO_CH_FORMATDEF_UNKNOWN) { + nvp6158_set_chnmode(ch, NC_VIVO_CH_FORMATDEF_UNKNOWN); + nvp6158_set_portmode(0, ch%4, NVP6158_OUTMODE_1MUX_FHD, ch%4); + } + } + } else { + nvp6168_video_fmt_det(ch, &s_nvp6158_vfmts); + curfmt = s_nvp6158_vfmts.curvideofmt[ch]; + prefmt = s_nvp6158_vfmts.prevideofmt[ch]; + chvloss = s_nvp6158_vfmts.curvideoloss[ch]; + //printk(">>>>>>%s CH[%d] chvloss = %d curfmt = %x prefmt = %x nvp6158_ch_mode_status[%d]=%x\n", __func__, ch, chvloss, curfmt, prefmt, ch, nvp6158_ch_mode_status[ch]); + + if(chvloss == 0x00) { + if(nvp6158_ch_mode_status[ch] != prefmt) { + nvp6168_set_chnmode(ch, curfmt); + nvp6158_set_portmode(0, ch%4, NVP6158_OUTMODE_1MUX_FHD, ch%4); + s_eq_info.Ch = ch%4; + s_eq_info.devnum = ch/4; + s_eq_info.FmtDef = curfmt; + nvp6158_get_eq_dist(&s_eq_info); + s_nvp6158_vfmts.prevideofmt[ch] = curfmt; + printk(">>>>>>%s CH[%d] s_eq_info.distance = %d\n", __func__, ch, s_eq_info.distance); + nvp6168_set_equalizer(&s_eq_info); + } + } else { + if(nvp6158_ch_mode_status[ch] != NC_VIVO_CH_FORMATDEF_UNKNOWN) { + nvp6168_set_chnmode(ch, NC_VIVO_CH_FORMATDEF_UNKNOWN); + nvp6158_set_portmode(0, ch%4, NVP6158_OUTMODE_1MUX_FHD, ch%4); + } + } + } + ch ++; + up(&nvp6158_lock); + #endif + schedule_timeout_interruptible(msecs_to_jiffies(200)); + //printk("nvp6158_kernel_thread running\n"); + } + + return 0; +} +#endif + +/******************************************************************************* +* Description : It is called when "insmod nvp61XX_ex.ko" command run +* Argurments : void +* Return value : -1(could not register nvp61XX device), 0(success) +* Modify : +* warning : +*******************************************************************************/ +struct proc_dir_entry *nvp6158_dir; +#define NVP6158_PROC_ENTRY "nvp6158" + +#ifndef CONFIG_VIDEO_NVP6158 + +#ifdef STREAM_ON_DEFLAULT +static struct task_struct *nvp6158_kt = NULL; +#endif + +#ifndef CONFIG_HISI_SNAPSHOT_BOOT +static struct miscdevice nvp6158_dev = { + .minor = MISC_DYNAMIC_MINOR, + .name = "nc_vdec", + .fops = &nvp6158_fops, +}; +#endif + +static int __init nvp6158_module_init(void) +{ + int ret = 0; + //char entry[20]; +#ifdef CONFIG_HISI_SNAPSHOT_BOOT + snprintf(s_stNvp6158Device.devfs_name, sizeof(s_stNvp6158Device.devfs_name), DEV_NAME); + s_stNvp6158Device.minor = HIMEDIA_DYNAMIC_MINOR; + s_stNvp6158Device.fops = &nvp6158_fops; + s_stNvp6158Device.drvops = &stNvp6158DrvOps; + s_stNvp6158Device.owner = THIS_MODULE; + + ret = himedia_register(&s_stNvp6158Device); + if (ret) { + printk(0, "could not register nvp6158_dev device"); + return -1; + } +#else + ret = misc_register(&nvp6158_dev); + if (ret) { + printk("ERROR: could not register nvp6158_dev devices:%#x \n",ret); + return -1; + } +#endif + +#ifdef STREAM_ON_DEFLAULT + //printk("NVP6158/68(C) ex Driver %s COMPILE TIME[%s %s]\n", NVP6158_DRIVER_VER, __DATE__,__TIME__); + nvp6158_init(I2C_1); + if (ret) { + printk(KERN_ERR "ERROR: jaguar1 init failed\n"); + return -1; + } + down(&nvp6158_lock); + nvp6158_video_decoder_init(); + /* initialize Audio + * recmaster, pbmaster, ch_num, samplerate, bits */ + if(nvp6158_chip_id[0] == NVP6158C_R0_ID || nvp6158_chip_id[0] == NVP6158_R0_ID) + nvp6158_audio_init(1, 0, 16, 0, 0); + else + nvp6168_audio_init(1, 0, 16, 0, 0); + //VDO_1/2 enable, VCLK_x ebable + gpio_i2c_write(0x60, 0xFF, 0x01); + gpio_i2c_write(0x60, 0xCA, 0x66); + up(&nvp6158_lock); + + /* create kernel thread for EQ, But Now not used. */ + if(nvp6158_kthread == 1) { + nvp6158_kt = kthread_create(nvp6158_kernel_thread, NULL, "nvp6158_kt"); + if(!IS_ERR(nvp6158_kt)) + wake_up_process(nvp6158_kt); + else { + printk("create nvp6158 watchdog thread failed!!\n"); + nvp6158_kt = 0; + return 0; + } + } +#endif + return 0; +} + +/******************************************************************************* +* Description : It is called when "rmmod nvp61XX_ex.ko" command run +* Argurments : void +* Return value : void +* Modify : +* warning : +*******************************************************************************/ +static void __exit nvp6158_module_exit(void) +{ +#ifdef STREAM_ON_DEFLAULT + if(nvp6158_kt) + kthread_stop(nvp6158_kt); +#endif +#ifdef CONFIG_HISI_SNAPSHOT_BOOT + himedia_unregister(&s_stNvp6158Device); +#else + misc_deregister(&nvp6158_dev); +#endif + nvp6158_i2c_client_exit(); + //printk("NVP6158(C) ex Driver %s COMPILE TIME[%s %s] removed\n", NVP6158_DRIVER_VER, __DATE__,__TIME__); +} + +module_init(nvp6158_module_init); +module_exit(nvp6158_module_exit); +#endif + +MODULE_LICENSE("GPL"); + +/******************************************************************************* +* End of file +*******************************************************************************/ + diff --git a/drivers/media/i2c/nvp6158_drv/nvp6158_drv.c b/drivers/media/i2c/nvp6158_drv/nvp6158_drv.c new file mode 100644 index 000000000000..076c3cc33dc1 --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/nvp6158_drv.c @@ -0,0 +1,1073 @@ +// SPDX-License-Identifier: GPL-2.0 +/******************************************************************************** +* +* Copyright (C) 2017 NEXTCHIP Inc. All rights reserved. +* Copyright (c) 2021 Rockchip Electronics Co. Ltd.All rights reserved. +* Module : install driver main +* Description : driver main +* Author : +* Date : +* Version : Version 2.0 +* +******************************************************************************** +* History : +* +* +********************************************************************************/ +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef CONFIG_HISI_SNAPSHOT_BOOT +#include +#endif + +#include +#include +#include +#include +#include +//#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +//#include "gpio_i2c.h" +#include "nvp6158_video.h" +#include "nvp6158_coax_protocol.h" +#include "nvp6158_motion.h" +#include "nvp6158_common.h" +#include "nvp6158_audio.h" +#include "nvp6158_video_auto_detect.h" +//#include "acp_firmup.h" +#include "nvp6158_video_eq.h" +#include "nvp6158_drv.h" + +//#define STREAM_ON_DEFLAULT +/*BT601 is not used by Nextchip */ +//#define BT601 +#define BT1120 + +#define AF_CNT 1 + +#ifdef CONFIG_HISI_SNAPSHOT_BOOT +#include "himedia.h" +#define DEV_NAME "nvp6158" +#endif + +static struct i2c_board_info nvp6158_hi_info = +{ + I2C_BOARD_INFO("nvp6158", 0x60), +}; +static bool nvp6158_init_state; +unsigned int nvp6158_gCoaxFirmUpdateFlag[16] = {0,}; +unsigned char nvp6158_det_mode[16] = {NVP6158_DET_MODE_AUTO,}; +struct semaphore nvp6158_lock; +extern unsigned char nvp6158_ch_mode_status[16]; +extern unsigned char nvp6158_ch_vfmt_status[16]; +extern unsigned char nvp6158_acp_isp_wr_en[16]; + +#define NVP6158_DRIVER_VER "1.1.01" +#define NVP6158_HW_REG(reg) *((volatile unsigned int *)(reg)) + +int nvp6158_g_soc_chiptype = 0x3521; +int nvp6158_chip_id[4]; +int nvp6158_rev_id[4]; + +unsigned int nvp6158_cnt = 0; +unsigned int nvp6158_iic_addr[4] = {0x60, 0x62, 0x64, 0x66}; +struct i2c_client* nvp6158_client; + +/******************************************************************************* +* Description : Get rev ID +* Argurments : dec(slave address) +* Return value : rev ID +* Modify : +* warning : +*******************************************************************************/ +static int nvp6158_check_rev(unsigned int dec) +{ + int ret; + gpio_i2c_write(dec, 0xFF, 0x00); + ret = gpio_i2c_read(dec, 0xf5); + return ret; +} + +/******************************************************************************* +* Description : Get Device ID +* Argurments : dec(slave address) +* Return value : Device ID +* Modify : +* warning : +*******************************************************************************/ +static int nvp6158_check_id(unsigned int dec) +{ + int ret; + gpio_i2c_write(dec, 0xFF, 0x00); + ret = gpio_i2c_read(dec, 0xf4); + return ret; +} + +/******************************************************************************* + * Description : Check decoder count + * Argurments : void + * Return value : (total chip count - 1) or -1(not found any chip) + * Modify : + * warning : + *******************************************************************************/ +static int nvp6158_check_decoder_count(void) +{ + int chip; + int ret = -1; + + /* check Device ID of maxium 4chip on the slave address, + * manage slave address. chip count. */ + for(chip = 0; chip < 4; chip ++) { + nvp6158_chip_id[chip] = nvp6158_check_id(nvp6158_iic_addr[chip]); + nvp6158_rev_id[chip] = nvp6158_check_rev(nvp6158_iic_addr[chip]); + if( (nvp6158_chip_id[chip] != NVP6158_R0_ID ) && (nvp6158_chip_id[chip] != NVP6158C_R0_ID) && + (nvp6158_chip_id[chip] != NVP6168_R0_ID ) && (nvp6158_chip_id[chip] != NVP6168C_R0_ID)) { + printk("[NVP6158_DRV]Device ID Error... 0x%x\n", nvp6158_chip_id[chip]); + } else { + printk("[NVP6158_DRV]Device (0x%x) ID OK... 0x%x\n", nvp6158_iic_addr[chip], nvp6158_chip_id[chip]); + printk("[NVP6158_DRV]Device (0x%x) REV ... 0x%x\n", nvp6158_iic_addr[chip], nvp6158_rev_id[chip]); + nvp6158_iic_addr[nvp6158_cnt] = nvp6158_iic_addr[chip]; + if(nvp6158_cnt>>>> DRV[%s:%d] Now cam f/w update mode. so Skip other command.\n", __func__, __LINE__ ); + //return 0; + //} + down(&nvp6158_lock); + switch (cmd) { + case IOC_VDEC_SET_I2C : // nextchip demoboard test + if (copy_from_user(&i2c, argp, sizeof(nvp6124_i2c_mode))) { + up(&nvp6158_lock); + return -1; + } + + if(i2c.flag == 0) {// read + gpio_i2c_write(i2c.slaveaddr, 0xFF, i2c.bank); + i2c.data = gpio_i2c_read(i2c.slaveaddr, i2c.address); + } else {//write + gpio_i2c_write(i2c.slaveaddr, 0xFF, i2c.bank); + gpio_i2c_write(i2c.slaveaddr, i2c.address, i2c.data); + } + if(copy_to_user(argp, &i2c, sizeof(nvp6124_i2c_mode))) + printk("IOC_VDEC_I2C error\n"); + break; + case IOC_VDEC_GET_VIDEO_LOSS: // Not use + //nvp6158_g_vloss = nvp6158_getvideoloss(); + if(copy_to_user(argp, &nvp6158_g_vloss, sizeof(unsigned int))) + printk("IOC_VDEC_GET_VIDEO_LOSS error\n"); + break; + case IOC_VDEC_GET_EQ_DIST: + if (copy_from_user(&s_eq_dist, argp, sizeof(video_equalizer_info_s))) { + up(&nvp6158_lock); + return -1; + } + + s_eq_dist.distance = nvp6158_get_eq_dist(&s_eq_dist); + if(copy_to_user(argp, &s_eq_dist, sizeof(video_equalizer_info_s))) + printk("IOC_VDEC_GET_EQ_DIST error\n"); + break; + case IOC_VDEC_SET_EQUALIZER: + if (copy_from_user(&s_eq_dist, argp, sizeof(video_equalizer_info_s))) { + up(&nvp6158_lock); + return -1; + } + if(nvp6158_chip_id[0] == NVP6158C_R0_ID || nvp6158_chip_id[0] == NVP6158_R0_ID) + nvp6158_set_equalizer(&s_eq_dist); + else + nvp6168_set_equalizer(&s_eq_dist); + break; + case IOC_VDEC_GET_DRIVERVER: + if(copy_to_user(argp, &NVP6158_DRIVER_VER, sizeof(NVP6158_DRIVER_VER))) + printk("IOC_VDEC_GET_DRIVERVER error\n"); + break; + case IOC_VDEC_ACP_WRITE: + /*if (copy_from_user(&ispdata, argp, sizeof(nvp6158_acp_rw_data))) + return -1; + if(ispdata.opt == 0) + acp_isp_write(ispdata.ch, ispdata.addr, ispdata.data); + else + { + ispdata.data = acp_isp_read(ispdata.ch, ispdata.addr); + if(copy_to_user(argp, &ispdata, sizeof(nvp6158_acp_rw_data))) + printk("IOC_VDEC_ACP_WRITE error\n"); + }*/ + break; + case IOC_VDEC_ACP_WRITE_EXTENTION: + + break; + case IOC_VDEC_PTZ_ACP_READ: + //if (copy_from_user(&vfmt, argp, sizeof(nvp6158_input_videofmt))) + // return -1; + //for(i=0;i<(4*nvp6158_cnt);i++) + //{ + // if(1) + // { + /* read A-CP */ + //if(((nvp6158_g_vloss>>i)&0x01) == 0x00) + // acp_read(&vfmt, i); + // } + //} + //if(copy_to_user(argp, &vfmt, sizeof(nvp6158_input_videofmt))) + // printk("IOC_VDEC_PTZ_ACP_READ error\n"); + break; + case IOC_VDEC_PTZ_ACP_READ_EACH_CH: + if (copy_from_user(&vfmt_ch, argp, sizeof(nvp6158_input_videofmt_ch))) { + up(&nvp6158_lock); + return -1; + } + /* read A-CP */ + if(((nvp6158_g_vloss>>vfmt_ch.ch) & 0x01) == 0x00) { + //acp_read(&vfmt_ch.vfmt, vfmt_ch.ch); + } + + if(copy_to_user(argp, &vfmt_ch, sizeof(nvp6158_input_videofmt_ch))) + printk("IOC_VDEC_PTZ_ACP_READ_EACH_CH error\n"); + break; + case IOC_VDEC_GET_INPUT_VIDEO_FMT: + if (copy_from_user(&vfmt, argp, sizeof(NVP6158_INFORMATION_S))) { + up(&nvp6158_lock); + return -1; + } + if(nvp6158_chip_id[0] == NVP6158C_R0_ID || nvp6158_chip_id[0] == NVP6158_R0_ID) + nvp6158_video_fmt_det(vfmt.ch, &vfmt); + else + nvp6168_video_fmt_det(vfmt.ch, &vfmt); + if(copy_to_user(argp, &vfmt, sizeof(NVP6158_INFORMATION_S))) + printk("IOC_VDEC_GET_INPUT_VIDEO_FMT error\n"); + break; + case IOC_VDEC_SET_CHDETMODE: + if (copy_from_user(&nvp6158_det_mode, argp, sizeof(unsigned char) * 16)) { + up(&nvp6158_lock); + return -1; + } + for(i = 0; i<(nvp6158_cnt * 4); i++) { + printk("IOC_VDEC_SET_CHNMODE nvp6158_det_mode[%d]==%d\n", + i, nvp6158_det_mode[i]); + if(nvp6158_chip_id[0] == NVP6158C_R0_ID || nvp6158_chip_id[0] == NVP6158_R0_ID) + nvp6158_set_chnmode(i, NC_VIVO_CH_FORMATDEF_UNKNOWN); + else + nvp6168_set_chnmode(i, NC_VIVO_CH_FORMATDEF_UNKNOWN); + } + break; + case IOC_VDEC_SET_CHNMODE: + if (copy_from_user(&schnmode, argp, sizeof(nvp6158_chn_mode))) { + up(&nvp6158_lock); + return -1; + } + if(nvp6158_chip_id[0] == NVP6158C_R0_ID || nvp6158_chip_id[0] == NVP6158_R0_ID) { + if(0 == nvp6158_set_chnmode(schnmode.ch, schnmode.chmode)) + printk("IOC_VDEC_SET_CHNMODE OK\n"); + } else { + if(0 == nvp6168_set_chnmode(schnmode.ch, schnmode.chmode)) + printk("IOC_VDEC_SET_CHNMODE OK\n"); + } + break; + case IOC_VDEC_SET_OUTPORTMODE: + if(copy_from_user(&optmode, argp, sizeof(nvp6158_opt_mode))) { + up(&nvp6158_lock); + return -1; + } + nvp6158_set_portmode(optmode.chipsel, optmode.portsel, optmode.portmode, optmode.chid); + break; + case IOC_VDEC_SET_BRIGHTNESS: + if(copy_from_user(&v_adj, argp, sizeof(nvp6158_video_adjust))) { + up(&nvp6158_lock); + return -1; + } + //nvp6158_video_set_brightness(v_adj.ch, v_adj.value, nvp6158_ch_vfmt_status[v_adj.ch]); + break; + case IOC_VDEC_SET_CONTRAST: + if(copy_from_user(&v_adj, argp, sizeof(nvp6158_video_adjust))) { + up(&nvp6158_lock); + return -1; + } + //nvp6158_video_set_contrast(v_adj.ch, v_adj.value, nvp6158_ch_vfmt_status[v_adj.ch]); + break; + case IOC_VDEC_SET_HUE: + if(copy_from_user(&v_adj, argp, sizeof(nvp6158_video_adjust))) { + up(&nvp6158_lock); + return -1; + } + //nvp6158_video_set_hue(v_adj.ch, v_adj.value, nvp6158_ch_vfmt_status[v_adj.ch]); + break; + case IOC_VDEC_SET_SATURATION: + if(copy_from_user(&v_adj, argp, sizeof(nvp6158_video_adjust))) { + up(&nvp6158_lock); + return -1; + } + //nvp6158_video_set_saturation(v_adj.ch, v_adj.value, nvp6158_ch_vfmt_status[v_adj.ch]); + break; + case IOC_VDEC_SET_SHARPNESS: + if(copy_from_user(&v_adj, argp, sizeof(nvp6158_video_adjust))) { + up(&nvp6158_lock); + return -1; + } + nvp6158_video_set_sharpness(v_adj.ch, v_adj.value); + break; + /*----------------------- Coaxial Protocol ----------------------*/ + case IOC_VDEC_COAX_TX_INIT: //SK_CHANGE 170703 + if(copy_from_user(&coax_val, argp, sizeof(nvp6158_coax_str))) + printk("IOC_VDEC_COAX_TX_INIT error\n"); + nvp6158_coax_tx_init(&coax_val); + break; + case IOC_VDEC_COAX_TX_16BIT_INIT: //SK_CHANGE 170703 + if(copy_from_user(&coax_val, argp, sizeof(nvp6158_coax_str))) + printk("IOC_VDEC_COAX_TX_INIT error\n"); + nvp6158_coax_tx_16bit_init(&coax_val); + break; + case IOC_VDEC_COAX_TX_CMD_SEND: //SK_CHANGE 170703 + if(copy_from_user(&coax_val, argp, sizeof(nvp6158_coax_str))) + printk(" IOC_VDEC_COAX_TX_CMD_SEND error\n"); + nvp6158_coax_tx_cmd_send(&coax_val); + break; + case IOC_VDEC_COAX_TX_16BIT_CMD_SEND: //SK_CHANGE 170703 + if(copy_from_user(&coax_val, argp, sizeof(nvp6158_coax_str))) + printk(" IOC_VDEC_COAX_TX_CMD_SEND error\n"); + nvp6158_coax_tx_16bit_cmd_send(&coax_val); + break; + case IOC_VDEC_COAX_TX_CVI_NEW_CMD_SEND: //SK_CHANGE 170703 + if(copy_from_user(&coax_val, argp, sizeof(nvp6158_coax_str))) + printk(" IOC_VDEC_COAX_TX_CMD_SEND error\n"); + nvp6158_coax_tx_cvi_new_cmd_send(&coax_val); + break; + case IOC_VDEC_COAX_RX_INIT: + if(copy_from_user(&coax_val, argp, sizeof(nvp6158_coax_str))) + printk(" IOC_VDEC_COAX_RX_INIT error\n"); + nvp6158_coax_rx_init(&coax_val); + break; + case IOC_VDEC_COAX_RX_DATA_READ: + if(copy_from_user(&coax_val, argp, sizeof(nvp6158_coax_str))) + printk(" IOC_VDEC_COAX_RX_DATA_READ error\n"); + nvp6158_coax_rx_data_get(&coax_val); + cpy2usr_ret = copy_to_user(argp, &coax_val, sizeof(nvp6158_coax_str)); + break; + case IOC_VDEC_COAX_RX_BUF_CLEAR: + if(copy_from_user(&coax_val, argp, sizeof(nvp6158_coax_str))) + printk(" IOC_VDEC_COAX_RX_BUF_CLEAR error\n"); + nvp6158_coax_rx_buffer_clear(&coax_val); + break; + case IOC_VDEC_COAX_RX_DEINIT: + if(copy_from_user(&coax_val, argp, sizeof(nvp6158_coax_str))) + printk("IOC_VDEC_COAX_RX_DEINIT error\n"); + nvp6158_coax_rx_deinit(&coax_val); + break; + /*=============== Coaxial Protocol A-CP Option ===============*/ + case IOC_VDEC_COAX_RT_NRT_MODE_CHANGE_SET: + if(copy_from_user(&coax_val, argp, sizeof(nvp6158_coax_str))) + printk(" IOC_VDEC_COAX_SHOT_SET error\n"); + nvp6158_coax_option_rt_nrt_mode_change_set(&coax_val); + cpy2usr_ret = copy_to_user(argp, &coax_val, sizeof(nvp6158_coax_str)); + break; + /*=========== Coaxial Protocol Firmware Update ==============*/ + case IOC_VDEC_COAX_FW_ACP_HEADER_GET: + if(copy_from_user(&coax_fw_val, argp, sizeof(FIRMWARE_UP_FILE_INFO))) + printk("IOC_VDEC_COAX_FW_READY_CMD_SET error\n"); + nvp6158_coax_fw_ready_header_check_from_isp_recv(&coax_fw_val); + cpy2usr_ret = copy_to_user(argp, &coax_fw_val, sizeof(FIRMWARE_UP_FILE_INFO)); + break; + case IOC_VDEC_COAX_FW_READY_CMD_SET: + if(copy_from_user(&coax_fw_val, argp, sizeof(FIRMWARE_UP_FILE_INFO))) + printk("IOC_VDEC_COAX_FW_READY_CMD_SET error\n"); + nvp6158_coax_fw_ready_cmd_to_isp_send(&coax_fw_val); + cpy2usr_ret = copy_to_user(argp, &coax_fw_val, sizeof(FIRMWARE_UP_FILE_INFO)); + break; + case IOC_VDEC_COAX_FW_READY_ACK_GET: + if(copy_from_user(&coax_fw_val, argp, sizeof(FIRMWARE_UP_FILE_INFO))) + printk("IOC_VDEC_COAX_FW_READY_ISP_STATUS_GET error\n"); + nvp6158_coax_fw_ready_cmd_ack_from_isp_recv(&coax_fw_val); + cpy2usr_ret = copy_to_user(argp, &coax_fw_val, sizeof(FIRMWARE_UP_FILE_INFO)); + break; + case IOC_VDEC_COAX_FW_START_CMD_SET: + if(copy_from_user(&coax_fw_val, argp, sizeof(FIRMWARE_UP_FILE_INFO))) + printk("IOC_VDEC_COAX_FW_START_CMD_SET error\n"); + nvp6158_coax_fw_start_cmd_to_isp_send(&coax_fw_val); + cpy2usr_ret = copy_to_user(argp, &coax_fw_val, sizeof(FIRMWARE_UP_FILE_INFO)); + break; + case IOC_VDEC_COAX_FW_START_ACK_GET: + if(copy_from_user(&coax_fw_val, argp, sizeof(FIRMWARE_UP_FILE_INFO))) + printk("IOC_VDEC_COAX_FW_START_CMD_SET error\n"); + nvp6158_coax_fw_start_cmd_ack_from_isp_recv(&coax_fw_val); + cpy2usr_ret = copy_to_user(argp, &coax_fw_val, sizeof(FIRMWARE_UP_FILE_INFO)); + break; + case IOC_VDEC_COAX_FW_SEND_DATA_SET: + if(copy_from_user(&coax_fw_val, argp, sizeof(FIRMWARE_UP_FILE_INFO))) + printk("IOC_VDEC_COAX_FW_START_CMD_SET error\n"); + nvp6158_coax_fw_one_packet_data_to_isp_send(&coax_fw_val); + cpy2usr_ret = copy_to_user(argp, &coax_fw_val, sizeof(FIRMWARE_UP_FILE_INFO)); + break; + case IOC_VDEC_COAX_FW_SEND_ACK_GET: + if(copy_from_user(&coax_fw_val, argp, sizeof(FIRMWARE_UP_FILE_INFO))) + printk("IOC_VDEC_COAX_FW_START_CMD_SET error\n"); + nvp6158_coax_fw_one_packet_data_ack_from_isp_recv(&coax_fw_val); + cpy2usr_ret = copy_to_user(argp, &coax_fw_val, sizeof(FIRMWARE_UP_FILE_INFO)); + break; + case IOC_VDEC_COAX_FW_END_CMD_SET: + if(copy_from_user(&coax_fw_val, argp, sizeof(FIRMWARE_UP_FILE_INFO))) + printk("IOC_VDEC_COAX_FW_START_CMD_SET error\n"); + nvp6158_coax_fw_end_cmd_to_isp_send(&coax_fw_val); + cpy2usr_ret = copy_to_user(argp, &coax_fw_val, sizeof(FIRMWARE_UP_FILE_INFO)); + break; + case IOC_VDEC_COAX_FW_END_ACK_GET: + if(copy_from_user(&coax_fw_val, argp, sizeof(FIRMWARE_UP_FILE_INFO))) + printk("IOC_VDEC_COAX_FW_START_CMD_SET error\n"); + nvp6158_coax_fw_end_cmd_ack_from_isp_recv(&coax_fw_val); + cpy2usr_ret = copy_to_user(argp, &coax_fw_val, sizeof(FIRMWARE_UP_FILE_INFO)); + break; + /*=========== Coaxial Protocol Firmware Update END ==============*/ + /*----------------------- MOTION ----------------------*/ + case IOC_VDEC_MOTION_DETECTION_GET : + if(copy_from_user(&motion_set, argp, sizeof(motion_set))) + printk("IOC_VDEC_MOTION_SET error\n"); + nvp6158_motion_detection_get(&motion_set); + cpy2usr_ret = copy_to_user(argp, &motion_set, sizeof(motion_mode)); + break; + case IOC_VDEC_MOTION_SET : + if(copy_from_user(&motion_set, argp, sizeof(motion_set))) + printk("IOC_VDEC_MOTION_SET error\n"); + nvp6158_motion_onoff_set(&motion_set); + break; + case IOC_VDEC_MOTION_PIXEL_SET : + if(copy_from_user(&motion_set, argp, sizeof(motion_set))) + printk("IOC_VDEC_MOTION_Pixel_SET error\n"); + nvp6158_motion_pixel_onoff_set(&motion_set); + break; + case IOC_VDEC_MOTION_PIXEL_GET : + if(copy_from_user(&motion_set, argp, sizeof(motion_set))) + printk("IOC_VDEC_MOTION_Pixel_SET error\n"); + nvp6158_motion_pixel_onoff_get(&motion_set); + cpy2usr_ret = copy_to_user(argp, &motion_set, sizeof(motion_mode)); + break; + case IOC_VDEC_MOTION_ALL_PIXEL_SET : + if(copy_from_user(&motion_set, argp, sizeof(motion_set))) + printk("IOC_VDEC_MOTION_Pixel_SET error\n"); + nvp6158_motion_pixel_all_onoff_set(&motion_set); + break; + case IOC_VDEC_MOTION_TSEN_SET : + if(copy_from_user(&motion_set, argp, sizeof(motion_set))) + printk("IOC_VDEC_MOTION_TSEN_SET error\n"); + nvp6158_motion_tsen_set(&motion_set); + break; + case IOC_VDEC_MOTION_PSEN_SET : + if(copy_from_user(&motion_set, argp, sizeof(motion_set))) + printk("IOC_VDEC_MOTION_PSEN_SET error\n"); + nvp6158_motion_psen_set(&motion_set); + break; + default: + //printk("drv:invalid nc decoder ioctl cmd[%x]\n", cmd); + break; + } + up(&nvp6158_lock); + return 0; +} + +#ifdef TEST +void nvp6158_set_bt656_601_mode(void) +{ + unsigned char ch = 0; + int chip = 0; + + printk("[NVP6158_DRV] %s(%d) \n", __func__, __LINE__); + for(ch = 0; ch < nvp6158_cnt * 4; ch++) { + nvp6158_set_chnmode(ch, AHD20_1080P_30P); + } + + for(chip = 0; chip < nvp6158_cnt; chip++) { + nvp6158_set_portmode(chip, 1, NVP6158_OUTMODE_1MUX_FHD, 0); + nvp6158_set_portmode(chip, 2, NVP6158_OUTMODE_1MUX_FHD, 1); + } + //VDO1 diabled + gpio_i2c_write(0x60, 0xFF, 0x01); + gpio_i2c_write(0x60, 0xCA, 0x64); +#ifdef BT601 + //BT601 test + gpio_i2c_write(0x60, 0xFF, 0x01); + gpio_i2c_write(0x60, 0xA8, 0x80); //BT601 out + gpio_i2c_write(0x60, 0xAB, 0x80); //BT601 out + gpio_i2c_write(0x60, 0xBD, 0x00); //BT601 VSYNC HSYNC + gpio_i2c_write(0x60, 0xBE, 0x00); //BT601 VSYNC HSYNC + gpio_i2c_write(0x60, 0xA9, 0x10); //CH1 Signal out for BT601 (MPP1 = V_BLK1, MPP2=H_BLK1) + gpio_i2c_write(0x60, 0xAA, 0x20); //CH2 Signal out for BT601 (MPP3 = V_BLK1, MPP4=H_BLK1) +#endif +} + +void nvp6158_set_bt1120_720P_mode(void) +{ + unsigned char ch = 0; + int chip = 0; + + printk("[NVP6158_DRV] %s(%d) \n", __func__, __LINE__); + for(ch = 0; ch < nvp6158_cnt * 4; ch++) { + nvp6158_set_chnmode(ch, AHD20_720P_30P); + } + + for(chip = 0; chip < nvp6158_cnt; chip ++) { + nvp6158_set_portmode(chip, 1, NVP6158_OUTMODE_1MUX_BT1120S_720P, 1); + nvp6158_set_portmode(chip, 2, NVP6158_OUTMODE_1MUX_BT1120S_720P, 1); + } +} + +void nvp6158_set_bt1120_1080P_mode(void) +{ + unsigned char ch = 0; + int chip = 0; + + printk("[NVP6158_DRV] %s(%d) \n", __func__, __LINE__); + for(ch = 0; ch < nvp6158_cnt * 4; ch++) { + nvp6158_set_chnmode(ch, AHD20_1080P_30P); + } + + for(chip = 0; chip < nvp6158_cnt; chip++) { + nvp6158_set_portmode(chip, 1, NVP6158_OUTMODE_1MUX_BT1120S_1080P, 0); + nvp6158_set_portmode(chip, 2, NVP6158_OUTMODE_1MUX_BT1120S_1080P, 0); + } +} +#endif + +void nvp6158_start(video_init_all *video_init, bool dual_edge) +{ + unsigned char ch = 0; + int chip = 0; + NC_VIVO_CH_FORMATDEF fmt_idx; + NVP6158_DVP_MODE mode; + + fmt_idx = video_init->ch_param[0].format; + mode = video_init->mode; + down(&nvp6158_lock); + nvp6158_video_decoder_init(); + /* initialize Audio + * recmaster, pbmaster, ch_num, samplerate, bits */ + if(nvp6158_chip_id[0] == NVP6158C_R0_ID || nvp6158_chip_id[0] == NVP6158_R0_ID) + nvp6158_audio_init(1,0,16,0,0); + else + nvp6168_audio_init(1,0,16,0,0); + + switch (fmt_idx) { + /* normal output */ + case AHD20_720P_25P: + for (ch = 0; ch < nvp6158_cnt * 4; ch++) + nvp6158_set_chnmode(ch, AHD20_720P_25P); + break; + case AHD20_720P_30P: + for (ch = 0; ch < nvp6158_cnt * 4; ch++) + nvp6158_set_chnmode(ch, AHD20_720P_30P); + break; + case AHD20_1080P_25P: + for (ch = 0; ch < nvp6158_cnt * 4; ch++) + nvp6158_set_chnmode(ch, AHD20_1080P_25P); + break; + case AHD20_1080P_30P: + for (ch = 0; ch < nvp6158_cnt * 4; ch++) + nvp6158_set_chnmode(ch, AHD20_1080P_30P); + break; + case AHD30_3M_18P: + for (ch = 0; ch < nvp6158_cnt * 4; ch++) { + if (dual_edge) + nvp6158_set_chnmode(ch, AHD30_3M_30P); + else + nvp6158_set_chnmode(ch, AHD30_3M_18P); + + } + break; + case AHD30_4M_15P: + for (ch = 0; ch < nvp6158_cnt * 4; ch++) { + if (dual_edge) + nvp6158_set_chnmode(ch, AHD30_4M_30P); + else + nvp6158_set_chnmode(ch, AHD30_4M_15P); + } + break; + case AHD30_5M_12_5P: + for (ch = 0; ch < nvp6158_cnt * 4; ch++) { + if (dual_edge) + nvp6158_set_chnmode(ch, AHD30_5M_20P); + else + nvp6158_set_chnmode(ch, AHD30_5M_12_5P); + } + break; + case AHD30_8M_7_5P: + for (ch = 0; ch < nvp6158_cnt * 4; ch++) { + if (dual_edge) + nvp6158_set_chnmode(ch, AHD30_8M_15P); + else + nvp6158_set_chnmode(ch, AHD30_8M_7_5P); + } + break; + + /* test output */ + case AHD20_SD_SH720_NT: + for (ch = 0; ch < nvp6158_cnt * 4; ch++) + nvp6158_set_chnmode(ch, AHD20_SD_SH720_NT); /* 720*480i*/ + break; + case AHD20_SD_SH720_PAL: + for (ch = 0; ch < nvp6158_cnt * 4; ch++) + nvp6158_set_chnmode(ch, AHD20_SD_SH720_PAL); /* 720*576i*/ + break; + case AHD20_SD_H960_PAL: + for (ch = 0; ch < nvp6158_cnt * 4; ch++) + nvp6158_set_chnmode(ch, AHD20_SD_H960_PAL); /* 960*576i*/ + break; + case AHD20_SD_H960_EX_PAL: + for (ch = 0; ch < nvp6158_cnt * 4; ch++) + nvp6158_set_chnmode(ch, AHD20_SD_H960_EX_PAL); /*1920*576i*/ + break; + default: + for (ch = 0; ch < nvp6158_cnt * 4; ch++) + nvp6158_set_chnmode(ch, AHD20_1080P_30P); + break; + } + + nvp6158_set_colorpattern(); + //nvp6158_set_colorpattern2(); + //nvp6158_set_colorpattern3(); + + switch (mode) { + /* normal output */ + case BT656_1MUX: + if ((fmt_idx == AHD20_1080P_25P) || (fmt_idx == AHD20_1080P_30P)) { + for (chip = 0; chip < nvp6158_cnt; chip++) { + nvp6158_set_portmode(chip, 1, NVP6158_OUTMODE_1MUX_FHD, 0); + nvp6158_set_portmode(chip, 2, NVP6158_OUTMODE_1MUX_FHD, 1); + } + } else if ((fmt_idx == AHD20_720P_25P) || (fmt_idx == AHD20_720P_30P)) { + for (chip = 0; chip < nvp6158_cnt; chip++) { + nvp6158_set_portmode(chip, 1, NVP6158_OUTMODE_1MUX_HD, 0); + nvp6158_set_portmode(chip, 2, NVP6158_OUTMODE_1MUX_HD, 1); + } + } else if ((fmt_idx == AHD30_3M_18P) || (fmt_idx == AHD30_4M_15P) || + (fmt_idx == AHD30_5M_12_5P) || (fmt_idx == AHD30_8M_7_5P)) { + for (chip = 0; chip < nvp6158_cnt; chip++) { + nvp6158_set_portmode(chip, 1, NVP6158_OUTMODE_1MUX_FHD, 0); + nvp6158_set_portmode(chip, 2, NVP6158_OUTMODE_1MUX_FHD, 1); + } + } else if ((fmt_idx == AHD20_1080P_50P) || (fmt_idx == AHD20_1080P_60P) || + (fmt_idx == AHD30_3M_30P) || (fmt_idx == AHD30_4M_30P) || + (fmt_idx == AHD30_3M_25P) || (fmt_idx == AHD30_4M_25P) || + (fmt_idx == AHD30_5M_20P) || (fmt_idx == AHD30_8M_15P)) { + for (chip = 0; chip < nvp6158_cnt; chip++) { + nvp6158_set_portmode(chip, 1, NVP6158_OUTMODE_1MUX_FHD, 0); + nvp6158_set_portmode(chip, 2, NVP6158_OUTMODE_1MUX_FHD, 1); + } + } + //standard sync head + gpio_i2c_write(0x60, 0xFF, 0x00); + gpio_i2c_write(0x60, 0x54, 0x00); + //VDO2/VDO1 enabled VCLK_1/2_EN + gpio_i2c_write(0x60, 0xFF, 0x01); + gpio_i2c_write(0x60, 0xCA, 0x66); + break; + case BT656_2MUX: + if ((fmt_idx == AHD20_1080P_25P) || (fmt_idx == AHD20_1080P_30P)) { + for (chip = 0; chip < nvp6158_cnt; chip++) { + nvp6158_set_portmode(chip, 1, NVP6158_OUTMODE_2MUX_FHD, 0); + nvp6158_set_portmode(chip, 2, NVP6158_OUTMODE_2MUX_FHD, 0); + } + } else if ((fmt_idx == AHD20_720P_25P) || (fmt_idx == AHD20_720P_30P)) { + for (chip = 0; chip < nvp6158_cnt; chip++) { + nvp6158_set_portmode(chip, 1, NVP6158_OUTMODE_2MUX_HD, 0); + nvp6158_set_portmode(chip, 2, NVP6158_OUTMODE_2MUX_HD, 0); + } + } + //standard sync head + gpio_i2c_write(0x60, 0xFF, 0x00); + gpio_i2c_write(0x60, 0x54, 0x00); + //VDO2 enabled VDO1 disabled VCLK_1_EN + gpio_i2c_write(0x60, 0xFF, 0x01); + gpio_i2c_write(0x60, 0xCA, 0x66); + break; + case BT1120_1MUX: + if ((fmt_idx == AHD20_1080P_25P) || (fmt_idx == AHD20_1080P_30P)) { + for (chip = 0; chip < nvp6158_cnt; chip++) { + nvp6158_set_portmode(chip, 1, NVP6158_OUTMODE_1MUX_BT1120S_1080P, 0); + nvp6158_set_portmode(chip, 2, NVP6158_OUTMODE_1MUX_BT1120S_1080P, 0); + } + } else if ((fmt_idx == AHD20_720P_25P) || (fmt_idx == AHD20_720P_30P)) { + for (chip = 0; chip < nvp6158_cnt; chip++) { + nvp6158_set_portmode(chip, 1, NVP6158_OUTMODE_1MUX_BT1120S_720P, 1); + nvp6158_set_portmode(chip, 2, NVP6158_OUTMODE_1MUX_BT1120S_720P, 1); + } + } + //VDO2/VDO1 enabled VCLK_1_EN/VCLK_2_EN + gpio_i2c_write(0x60, 0xFF, 0x01); + gpio_i2c_write(0x60, 0xCA, 0x66); + break; + case BT1120_2MUX: + if ((fmt_idx == AHD20_1080P_25P) || (fmt_idx == AHD20_1080P_30P)) { + for (chip = 0; chip < nvp6158_cnt; chip++) { + nvp6158_set_portmode(chip, 1, NVP6158_OUTMODE_2MUX_BT1120S_1080P, 0); + nvp6158_set_portmode(chip, 2, NVP6158_OUTMODE_2MUX_BT1120S_1080P, 1); + } + } else if ((fmt_idx == AHD20_720P_25P) || (fmt_idx == AHD20_720P_30P)) { + for (chip = 0; chip < nvp6158_cnt; chip++) { + nvp6158_set_portmode(chip, 1, NVP6158_OUTMODE_2MUX_BT1120S_720P, 0); + nvp6158_set_portmode(chip, 2, NVP6158_OUTMODE_2MUX_BT1120S_720P, 1); + } + } + //VDO2/VDO1 enabled VCLK_1_EN/VCLK_2_EN + gpio_i2c_write(0x60, 0xFF, 0x01); + gpio_i2c_write(0x60, 0xCA, 0x66); + break; + case BT1120_4MUX: + if ((fmt_idx == AHD20_1080P_25P) || (fmt_idx == AHD20_1080P_30P)) { + for (chip = 0; chip < nvp6158_cnt; chip++) { + nvp6158_set_portmode(chip, 1, NVP6158_OUTMODE_4MUX_BT1120S_1080P, 0); + nvp6158_set_portmode(chip, 2, NVP6158_OUTMODE_4MUX_BT1120S_1080P, 1); + } + } else if ((fmt_idx == AHD20_720P_25P) || (fmt_idx == AHD20_720P_30P)) { + for (chip = 0; chip < nvp6158_cnt; chip++) { + if (dual_edge) { + nvp6158_set_portmode(chip, 1, NVP6158_OUTMODE_4MUX_BT1120S_DDR, 0); + nvp6158_set_portmode(chip, 2, NVP6158_OUTMODE_4MUX_BT1120S_DDR, 1); + } else { + nvp6158_set_portmode(chip, 1, NVP6158_OUTMODE_4MUX_BT1120S, 0); + nvp6158_set_portmode(chip, 2, NVP6158_OUTMODE_4MUX_BT1120S, 1); + } + } + } + //VDO2/VDO1 enabled VCLK_1_EN/VCLK_2_EN + gpio_i2c_write(0x60, 0xFF, 0x01); + gpio_i2c_write(0x60, 0xCA, 0x66); + break; + /* test output */ + case BT656I_TEST_MODES: + if (fmt_idx == AHD20_SD_H960_EX_PAL) { + for (chip = 0; chip < nvp6158_cnt; chip++) { + nvp6158_set_portmode(chip, 1, NVP6158_OUTMODE_1MUX_HD, 0); + nvp6158_set_portmode(chip, 2, NVP6158_OUTMODE_1MUX_HD, 1); + } + } else { + for (chip = 0; chip < nvp6158_cnt; chip++) { + nvp6158_set_portmode(chip, 1, NVP6158_OUTMODE_1MUX_SD, 0); + nvp6158_set_portmode(chip, 2, NVP6158_OUTMODE_1MUX_SD, 1); + } + } + //VDO2 enabled VDO1 disabled VCLK_1_EN + gpio_i2c_write(0x60, 0xFF, 0x01); + //gpio_i2c_write(0x60, 0xCA, 0x64); + //VDO2/VDO1 enabled VCLK_1_EN/VCLK_2_EN + gpio_i2c_write(0x60, 0xCA, 0x66); + break; + default: + printk("mode %d not supported yet\n", mode); + break; + } + up(&nvp6158_lock); +} + +void nvp6158_stop(void) +{ + unsigned char ch = 0; + + down(&nvp6158_lock); + //VDO_1/2 disabled, VCLK_x disabled + gpio_i2c_write(0x60, 0xFF, 0x01); + gpio_i2c_write(0x60, 0xCA, 0x00); + + for(ch = 0; ch < 4;ch++) { + nvp6158_channel_reset(ch); + } + up(&nvp6158_lock); +} + +/******************************************************************************* + * Description : i2c client initial + * Argurments : int + * Return value : 0 + * Modify : + * warning : + *******************************************************************************/ +static int nvp6158_i2c_client_init(int i2c_bus) +{ + struct i2c_adapter* i2c_adap; + + printk("[DRV] I2C Client Init \n"); + i2c_adap = i2c_get_adapter(i2c_bus); + + nvp6158_client = i2c_new_client_device(i2c_adap, &nvp6158_hi_info); + i2c_put_adapter(i2c_adap); + + return 0; +} + +/******************************************************************************* + * Description : i2c client release + * Argurments : void + * Return value : void + * Modify : + * warning : + *******************************************************************************/ +void nvp6158_i2c_client_exit(void) +{ + i2c_unregister_device(nvp6158_client); +} + +int nvp6158_init(int i2c_bus) +{ + int ret = 0; +#ifdef FMT_SETTING_SAMPLE + int dev_num = 0; +#endif + + if (nvp6158_init_state) + return 0; + + ret = nvp6158_i2c_client_init(i2c_bus); + if (ret) { + printk(KERN_ERR "ERROR: could not find nvp6158\n"); + return ret; + } + + /* decoder count function */ + ret = nvp6158_check_decoder_count(); + if (ret <= 0) { + printk(KERN_ERR "ERROR: could not find nvp6158 devices:%#x\n", ret); + nvp6158_i2c_client_exit(); + return -ENODEV; + } + + /* initialize semaphore */ + sema_init(&nvp6158_lock, 1); + nvp6158_init_state = true; + + return 0; +} + +void nvp6158_exit(void) +{ + nvp6158_i2c_client_exit(); + nvp6158_init_state = false; +} + +/******************************************************************************* +* End of file +*******************************************************************************/ + diff --git a/drivers/media/i2c/nvp6158_drv/nvp6158_drv.h b/drivers/media/i2c/nvp6158_drv/nvp6158_drv.h new file mode 100644 index 000000000000..35f52ba53e67 --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/nvp6158_drv.h @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: GPL-2.0 +/******************************************************************************** + * + * Copyright (C) 2017 NEXTCHIP Inc. All rights reserved. + * Module : Nvp6158 Device Driver + * Description : BT1120 + * Author : + * Date : + * Version : Version 1.0 + * + ******************************************************************************** + * History : + * + * + ********************************************************************************/ +#ifndef _NVP6158_DRV_ +#define _NVP6158_DRV_ + +#include "nvp6158_video.h" + +extern void nvp6158_datareverse(unsigned char chip, unsigned char port); + +int nvp6158_open(struct inode * inode, struct file * file); +int nvp6158_close(struct inode * inode, struct file * file); +long nvp6158_native_ioctl(struct file *file, unsigned int cmd, unsigned long arg); +void nvp6158_i2c_client_exit(void); + +void nvp6158_set_mclk(unsigned int mclk); +void nvp6158_start(video_init_all *video_init, bool dual_edge); +void nvp6158_stop(void); +int nvp6158_init(int i2c_bus); +void nvp6158_exit(void); + +#endif diff --git a/drivers/media/i2c/nvp6158_drv/nvp6158_i2c.c b/drivers/media/i2c/nvp6158_drv/nvp6158_i2c.c new file mode 100644 index 000000000000..40728131bc1a --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/nvp6158_i2c.c @@ -0,0 +1,83 @@ +// SPDX-License-Identifier: GPL-2.0 +/******************************************************************************** + * + * Copyright (C) 2017 NEXTCHIP Inc. All rights reserved. + * Module : nvp6158_i2c.c + * Description : + * Author : + * Date : + * Version : Version 1.0 + * + ******************************************************************************** + * History : + * + * + ********************************************************************************/ +#include +#include +#include +#include +#include "nvp6158_common.h" + +extern struct i2c_client* nvp6158_client; +//origin +#if 0 +void nvp6158_I2CWriteByte8(unsigned char chip_addr, unsigned char reg_addr, unsigned char value) +{ + int ret; + unsigned char buf[2]; + struct i2c_client* client = nvp6158_client; + + nvp6158_client->addr = chip_addr; + + buf[0] = reg_addr; + buf[1] = value; + + ret = i2c_master_send(client, buf, 2); + udelay(300); + //return ret; +} + +unsigned char nvp6158_I2CReadByte8(unsigned char chip_addr, unsigned char reg_addr) +{ + int ret_data = 0xFF; + int ret; + struct i2c_client* client = nvp6158_client; + unsigned char buf[2]; + + nvp6158_client->addr = chip_addr; + + buf[0] = reg_addr; + ret = i2c_master_recv(client, buf, 1); + if (ret >= 0) + { + ret_data = buf[0]; + } + return ret_data; +} +#endif + + +void nvp6158_I2CWriteByte8(unsigned char chip_addr, unsigned char reg_addr, unsigned char value) +{ + int ret; + unsigned char buf[2]; + struct i2c_client* client = nvp6158_client; + + client->addr = chip_addr>>1; + + buf[0] = reg_addr; + buf[1] = value; + + ret = i2c_master_send(client, buf, 2); + udelay(300); +} + +unsigned char nvp6158_I2CReadByte8(unsigned char chip_addr, unsigned char reg_addr) +{ + struct i2c_client* client = nvp6158_client; + + client->addr = chip_addr>>1; + + return i2c_smbus_read_byte_data(client, reg_addr); +} diff --git a/drivers/media/i2c/nvp6158_drv/nvp6158_motion.c b/drivers/media/i2c/nvp6158_drv/nvp6158_motion.c new file mode 100644 index 000000000000..9e03cf7d39f3 --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/nvp6158_motion.c @@ -0,0 +1,278 @@ +// SPDX-License-Identifier: GPL-2.0 +/******************************************************************************** +* +* Copyright (C) 2017 NEXTCHIP Inc. All rights reserved. +* Module : motion.c +* Description : +* Author : +* Date : +* Version : Version 1.0 +* +******************************************************************************** +* History : +* +* +********************************************************************************/ +#include +#include +#include "nvp6158_common.h" + +extern unsigned int nvp6158_iic_addr[4]; + +#include "nvp6158_motion.h" + +/************************************************************************************** +* @desc +* RAPTOR3's +* +* @param_in (motion_mode *)p_param->channel FW Update channel +* +* @return void None +* +* ioctl : IOC_VDEC_MOTION_SET +***************************************************************************************/ +void nvp6158_motion_detection_get(motion_mode *motion_set) +{ + //BANK2_MOTION + unsigned char ReadVal = 0; + unsigned char ch_mask = 1; + unsigned char ch = motion_set->ch; + unsigned char ret = 0; + + ch_mask = ch_mask<devnum], 0xFF, 0x00); + ReadVal = gpio_i2c_read(nvp6158_iic_addr[motion_set->devnum], 0xA9); + + ret = ReadVal&ch_mask; + motion_set->set_val = ret; + +// printk("motion_detection_get:: %x\n", motion_set->set_val); + +} + +void nvp6158_motion_onoff_set(motion_mode *motion_set) +{ + //BANK2_MOTION + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0xFF, 0x02); + + if(motion_set->fmtdef == TVI_3M_18P || motion_set->fmtdef == TVI_5M_12_5P || + motion_set->fmtdef == TVI_5M_20P) { + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x00 + (0x07 * motion_set->ch), 0x0C); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x02 + (0x07 * motion_set->ch), 0x23); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x28 + (0x06 * motion_set->ch), 0x11); + + if(motion_set->fmtdef == TVI_3M_18P) { + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x29 + (0x06 * motion_set->ch), 0x78); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2A + (0x06 * motion_set->ch), 0x40); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2C + (0x06 * motion_set->ch), 0x72); + } else if(motion_set->fmtdef == TVI_5M_12_5P) { + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x29 + (0x06 * motion_set->ch), 0xA2); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2A + (0x06 * motion_set->ch), 0x51); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2C + (0x06 * motion_set->ch), 0x9c); + } else if(motion_set->fmtdef == TVI_5M_20P) { + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x29 + (0x06 * motion_set->ch), 0xA0); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2A + (0x06 * motion_set->ch), 0x51); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2C + (0x06 * motion_set->ch), 0x9a); + } + + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2B + (0x06 * motion_set->ch), 0x6); + + printk("[DRV_Motion_OnOff] ch(%d) fmtdef(%d)\n", motion_set->ch, motion_set->fmtdef); + } else if( motion_set->fmtdef == AHD20_1080P_15P_EX || motion_set->fmtdef == AHD20_1080P_12_5P_EX ) { + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x00 + (0x07 * motion_set->ch), 0x0C); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x02 + (0x07 * motion_set->ch), 0x23); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x28 + (0x06 * motion_set->ch), 0x11); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x29 + (0x06 * motion_set->ch), 0xf0); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2A + (0x06 * motion_set->ch), 0x2d); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2B + (0x06 * motion_set->ch), 0x06); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2C + (0x06 * motion_set->ch), 0xea); + } else { + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x28 + (0x06 * motion_set->ch), 0x00); + } + + if(motion_set->set_val<0 || motion_set->set_val>1) { + printk("[DRV_Motion_OnOff]Error!! ch(%d) Setting Value Over:%x!! Only 0 or 1\n", motion_set->ch, motion_set->set_val); + return; + } + + switch(motion_set->set_val) { + case FUNC_OFF : gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], (0x00 + (0x07 * motion_set->ch)), 0x0D); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x28 + (0x06 * motion_set->ch), 0x00); + break; + case FUNC_ON : gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], (0x00 + (0x07 * motion_set->ch)), 0x0C); + break; + } + + +} + +void nvp6158_motion_pixel_all_onoff_set(motion_mode *motion_set) +{ + int ii=0; + unsigned char addr = 0; + + //BANK2_MOTION + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0xFF, 0x02); + + if(motion_set->fmtdef == TVI_3M_18P || motion_set->fmtdef == TVI_5M_12_5P || + motion_set->fmtdef == TVI_5M_20P) { + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x00 + (0x07 * motion_set->ch), 0x0C); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x02 + (0x07 * motion_set->ch), 0x23); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x28 + (0x06 * motion_set->ch), 0x11); + + if(motion_set->fmtdef == TVI_3M_18P) { + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x29 + (0x06 * motion_set->ch), 0x78); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2A + (0x06 * motion_set->ch), 0x40); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2C + (0x06 * motion_set->ch), 0x72); + } else if(motion_set->fmtdef == TVI_5M_12_5P) { + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x29 + (0x06 * motion_set->ch), 0xA2); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2A + (0x06 * motion_set->ch), 0x51); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2C + (0x06 * motion_set->ch), 0x9c); + } else if(motion_set->fmtdef == TVI_5M_20P) { + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x29 + (0x06 * motion_set->ch), 0xA0); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2A + (0x06 * motion_set->ch), 0x51); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2C + (0x06 * motion_set->ch), 0x9a); + } + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2B + (0x06 * motion_set->ch), 0x6); + + printk("[DRV_Motion_OnOff] ch(%d) fmtdef(%d)\n", motion_set->ch, motion_set->fmtdef); + } else if( motion_set->fmtdef == AHD20_1080P_15P_EX || motion_set->fmtdef == AHD20_1080P_12_5P_EX ) { + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x00 + (0x07 * motion_set->ch), 0x0C); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x02 + (0x07 * motion_set->ch), 0x23); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x28 + (0x06 * motion_set->ch), 0x11); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x29 + (0x06 * motion_set->ch), 0xf0); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2A + (0x06 * motion_set->ch), 0x2d); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2B + (0x06 * motion_set->ch), 0x06); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2C + (0x06 * motion_set->ch), 0xea); + } else { + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x28 + (0x06 * motion_set->ch), 0x00); + } + + for(ii=0; ii<24; ii++) { + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], (0x40 +(0x18 *motion_set->ch)) + ii, motion_set->set_val); + addr = (0x40 +(0x18 *motion_set->ch)) + ii; + } +} + +void nvp6158_motion_pixel_onoff_set(motion_mode *motion_set) +{ + unsigned char val = 0x80; + unsigned char ReadVal; + unsigned char on; + + unsigned char ch = motion_set->ch; + unsigned char SetPix = motion_set->set_val/8; + unsigned char SetVal = motion_set->set_val%8; + + val = val >> SetVal; + + //BANK2_MOTION + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0xFF, 0x02); + + if(motion_set->fmtdef == TVI_3M_18P || motion_set->fmtdef == TVI_5M_12_5P || + motion_set->fmtdef == TVI_5M_20P) { + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x00 + (0x07 * motion_set->ch), 0x0C); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x02 + (0x07 * motion_set->ch), 0x23); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x28 + (0x06 * motion_set->ch), 0x11); + + if(motion_set->fmtdef == TVI_3M_18P) { + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x29 + (0x06 * motion_set->ch), 0x78); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2A + (0x06 * motion_set->ch), 0x40); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2C + (0x06 * motion_set->ch), 0x72); + } else if(motion_set->fmtdef == TVI_4M_15P) { + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x29 + (0x06 * motion_set->ch), 0xA0); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2A + (0x06 * motion_set->ch), 0x3C); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2C + (0x06 * motion_set->ch), 0x9a); + } else if(motion_set->fmtdef == TVI_5M_12_5P) { + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x29 + (0x06 * motion_set->ch), 0xA2); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2A + (0x06 * motion_set->ch), 0x51); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2C + (0x06 * motion_set->ch), 0x9c); + } else if(motion_set->fmtdef == TVI_5M_20P) { + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x29 + (0x06 * motion_set->ch), 0xA0); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2A + (0x06 * motion_set->ch), 0x51); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2C + (0x06 * motion_set->ch), 0x9a); + } + + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2B + (0x06 * motion_set->ch), 0x6); + + printk("[DRV_Motion_OnOff] ch(%d) fmtdef(%d)\n", motion_set->ch, motion_set->fmtdef); + } else if( motion_set->fmtdef == AHD20_1080P_15P_EX || motion_set->fmtdef == AHD20_1080P_12_5P_EX ) { + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x00 + (0x07 * motion_set->ch), 0x0C); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x02 + (0x07 * motion_set->ch), 0x23); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x28 + (0x06 * motion_set->ch), 0x11); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x29 + (0x06 * motion_set->ch), 0xf0); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2A + (0x06 * motion_set->ch), 0x2d); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2B + (0x06 * motion_set->ch), 0x06); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x2C + (0x06 * motion_set->ch), 0xea); + } else { + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0x28 + (0x06 * motion_set->ch), 0x00); + } + + ReadVal = gpio_i2c_read(nvp6158_iic_addr[motion_set->devnum], (0x40 +(0x18 *ch)) + SetPix); + on = val&ReadVal; + if(on) { + val = ~val; + val = val&ReadVal; + } else { + val = val|ReadVal; + } + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], (0x40 +(0x18 *ch)) + SetPix, val); +} + +void nvp6158_motion_pixel_onoff_get(motion_mode *motion_set) +{ + unsigned char val = 0x80; + unsigned char ReadVal; + unsigned char on; + + unsigned char Ch = motion_set->ch; + unsigned char SetPix = motion_set->set_val/8; + unsigned char SetVal = motion_set->set_val%8; + + val = val >> SetVal; + + //BANK2_MOTION + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0xFF, 0x02); + ReadVal = gpio_i2c_read(nvp6158_iic_addr[motion_set->devnum], (0x40 +(0x18 *Ch)) + SetPix); + + on = val&ReadVal; + + if(on) { + motion_set->set_val = 1; + } else { + motion_set->set_val = 0; + } +} + +void nvp6158_motion_tsen_set(motion_mode *motion_set) +{ + unsigned char ch = motion_set->ch; + unsigned char SetVal = motion_set->set_val; + + //BANK2_MOTION + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0xFF, 0x02); + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], (0x01 +(0x07 * ch)), SetVal); + printk("[DRV_Motion]ch(%d), TSEN Val(%x)\n", ch, SetVal); +} + +void nvp6158_motion_psen_set(motion_mode *motion_set) +{ + unsigned char msb_mask = 0xf0; + unsigned char lsb_mask = 0x07; + unsigned char ch = motion_set->ch; + unsigned char SetVal = motion_set->set_val; + unsigned char ReadVal; + + //BANK2_MOTION + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], 0xFF, 0x02); + ReadVal = gpio_i2c_read(nvp6158_iic_addr[motion_set->devnum], (0x02 +(0x07 * ch))); + + msb_mask = msb_mask&ReadVal; + SetVal = lsb_mask&SetVal; + + SetVal = SetVal|msb_mask; + + gpio_i2c_write(nvp6158_iic_addr[motion_set->devnum], (0x02 +(0x07 * ch)), SetVal); + printk("[DRV_Motion]ch(%d), readVal(%x), SetVal(%x)\n", ch, ReadVal, SetVal); +} diff --git a/drivers/media/i2c/nvp6158_drv/nvp6158_motion.h b/drivers/media/i2c/nvp6158_drv/nvp6158_motion.h new file mode 100644 index 000000000000..3fbe587644b2 --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/nvp6158_motion.h @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: GPL-2.0 +/******************************************************************************** +* +* Copyright (C) 2017 NEXTCHIP Inc. All rights reserved. +* Module : motion.h +* Description : +* Author : +* Date : +* Version : Version 1.0 +* +******************************************************************************** +* History : +* +* +********************************************************************************/ +#ifndef _MOTION_H_ +#define _MOTION_H_ + +#include "nvp6158_common.h" + +#define FUNC_ON 0x01 +#define FUNC_OFF 0x00 + +typedef struct _motion_mode{ + unsigned char ch; + unsigned char devnum; + unsigned char set_val; + + unsigned char fmtdef; +}motion_mode; + +void nvp6158_motion_onoff_set(motion_mode *motion_set); +void nvp6158_motion_display_onoff_set(motion_mode *motion_set); +void nvp6158_motion_pixel_all_onoff_set(motion_mode *motion_set); +void nvp6158_motion_pixel_onoff_set(motion_mode *motion_set); +void nvp6158_motion_pixel_onoff_get(motion_mode *motion_set); +void nvp6158_motion_tsen_set(motion_mode *motion_set); +void nvp6158_motion_psen_set(motion_mode *motion_set); +void nvp6158_motion_detection_get(motion_mode *motion_set); + +#endif /* _MOTION_H_ */ diff --git a/drivers/media/i2c/nvp6158_drv/nvp6158_v4l2.c b/drivers/media/i2c/nvp6158_drv/nvp6158_v4l2.c new file mode 100644 index 000000000000..0f163d0af7e0 --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/nvp6158_v4l2.c @@ -0,0 +1,1580 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * nvp6158_v4l2 interface driver + * + * Copyright (c) 2021 Rockchip Electronics Co. Ltd. + * + * V0.0X01.0X00 first version. + * V0.0X01.0X01 + * 1. add workqueue to detect ahd state. + * 2. add more resolution support. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "nvp6158_common.h" +#include "nvp6158_video.h" +#include "nvp6158_coax_protocol.h" +#include "nvp6158_motion.h" +#include "nvp6158_video_eq.h" +#include "nvp6158_drv.h" +#include "nvp6158_audio.h" +#include "nvp6158_video_auto_detect.h" +#include "nvp6158_drv.h" + +//#define WORK_QUEUE + +#ifdef WORK_QUEUE +#include + +struct sensor_state_check_work { + struct workqueue_struct *state_check_wq; + struct delayed_work d_work; +}; + +#endif + +#define DRIVER_VERSION KERNEL_VERSION(0, 0x01, 0x1) + +#ifndef V4L2_CID_DIGITAL_GAIN +#define V4L2_CID_DIGITAL_GAIN V4L2_CID_GAIN +#endif + +#define NVP6158_XVCLK_FREQ 24000000 +#define NVP6158_BITS_PER_SAMPLE 8 + +/* pixel rate = link frequency * 2 * lanes / BITS_PER_SAMPLE */ +#define NVP6158_PIXEL_RATE 297000000LL + +#define OF_CAMERA_PINCTRL_STATE_DEFAULT "rockchip,camera_default" +#define OF_CAMERA_PINCTRL_STATE_SLEEP "rockchip,camera_sleep" + +#define OF_CAMERA_MODULE_REGULATORS "rockchip,regulator-names" +#define OF_CAMERA_MODULE_REGULATOR_VOLTAGES "rockchip,regulator-voltages" + +/* DVP MODE, BT1120 or BT656 */ +#define RK_CAMERA_MODULE_DVP_MODE "rockchip,dvp_mode" +#define RK_CAMERA_MODULE_CHANNEL_NUMS "rockchip,channel_nums" +#define RK_CAMERA_MODULE_DUAL_EDGE "rockchip,dual_edge" +#define RK_CAMERA_MODULE_DEFAULT_RECT "rockchip,default_rect" + +#define NVP6158_DEFAULT_DVP_MODE "BT1120" +#define NVP6158_DEFAULT_CHANNEL_NUMS 4U +#define NVP6158_DEFAULT_DUAL_EDGE 0U +#define NVP6158_NAME "nvp6158" +#define NVP6158_DEFAULT_WIDTH 1920 +#define NVP6158_DEFAULT_HEIGHT 1080 + +struct nvp6158_gpio { + int pltfrm_gpio; + const char *label; + enum of_gpio_flags active_low; +}; + +struct nvp6158_regulator { + struct regulator *regulator; + u32 min_uV; + u32 max_uV; +}; + +struct nvp6158_regulators { + u32 cnt; + struct nvp6158_regulator *regulator; +}; + +struct nvp6158_pixfmt { + u32 code; +}; + +struct nvp6158_framesize { + u16 width; + u16 height; + NC_VIVO_CH_FORMATDEF fmt_idx; + struct v4l2_fract max_fps; +}; + +struct nvp6158_default_rect { + unsigned int width; + unsigned int height; +}; + +#ifdef WORK_QUEUE +enum nvp6158_hot_plug_state { + PLUG_IN = 0, + PLUG_OUT, + PLUG_STATE_MAX, +}; +#endif + +struct nvp6158 { + struct i2c_client *client; + struct clk *xvclk; + struct gpio_desc *pwr_gpio; + struct gpio_desc *pwr2_gpio; + struct gpio_desc *rst_gpio; + struct gpio_desc *rst2_gpio; + struct gpio_desc *pwdn_gpio; + struct gpio_desc *pwdn2_gpio; + + struct pinctrl *pinctrl; + struct pinctrl_state *pins_default; + struct pinctrl_state *pins_sleep; + + struct v4l2_subdev subdev; + struct media_pad pad[PAD_MAX]; + struct v4l2_ctrl_handler ctrl_handler; + struct mutex mutex; + bool power_on; + struct nvp6158_regulators regulators; + + u32 module_index; + const char *module_facing; + const char *module_name; + const char *len_name; + const char *dvp_mode; + NVP6158_DVP_MODE mode; + u32 ch_nums; + u32 dual_edge; + + struct v4l2_mbus_framefmt format; + const struct nvp6158_framesize *frame_size; + int streaming; + struct nvp6158_default_rect defrect; +#ifdef WORK_QUEUE + struct sensor_state_check_work plug_state_check; + u8 cur_detect_status; + u8 last_detect_status; +#endif + bool hot_plug; + u8 is_reset; + +}; + +#define to_nvp6158(sd) container_of(sd, struct nvp6158, subdev) + +static const struct nvp6158_framesize nvp6158_framesizes[] = { + { + .width = 1280, + .height = 720, + .fmt_idx = AHD20_720P_30P, + .max_fps = { + .numerator = 10000, + .denominator = 250000, + }, + }, { + .width = 1920, + .height = 1080, + .fmt_idx = AHD20_1080P_25P, + .max_fps = { + .numerator = 10000, + .denominator = 250000, + }, + }, { + .width = 2048, + .height = 1536, + .fmt_idx = AHD30_3M_18P, + .max_fps = { + .numerator = 10000, + .denominator = 180000, + }, + }, { + .width = 1280, + .height = 1440, + .fmt_idx = AHD30_4M_30P, + .max_fps = { + .numerator = 10000, + .denominator = 300000, + }, + }, { + .width = 2560, + .height = 1440, + .fmt_idx = AHD30_4M_15P, + .max_fps = { + .numerator = 10000, + .denominator = 150000, + }, + }, { + .width = 2592, + .height = 1944, + .fmt_idx = AHD30_5M_12_5P, + .max_fps = { + .numerator = 10000, + .denominator = 125000, + }, + }, { + .width = 3840, + .height = 2160, + .fmt_idx = AHD30_8M_7_5P, + .max_fps = { + .numerator = 10000, + .denominator = 75000, + }, + }, {/* test modes, Interlace mode*/ + .width = 720, + .height = 480, + .fmt_idx = AHD20_SD_SH720_NT, + .max_fps = { + .numerator = 10000, + .denominator = 250000, + }, + }, { + .width = 720, + .height = 576, + .fmt_idx = AHD20_SD_SH720_PAL, + .max_fps = { + .numerator = 10000, + .denominator = 250000, + }, + }, { + .width = 960, + .height = 576, + .fmt_idx = AHD20_SD_H960_PAL, + .max_fps = { + .numerator = 10000, + .denominator = 250000, + }, + }, { + .width = 1920, + .height = 576, + .fmt_idx = AHD20_SD_H960_EX_PAL, + .max_fps = { + .numerator = 10000, + .denominator = 250000, + }, + } +}; + +static char *nvp6158_dvp_mode_lists[] = { + [BT601] = "BT601", + [BT656_1MUX] = "BT656_1MUX", + [BT656_2MUX] = "BT656_2MUX", + [BT656_4MUX] = "BT656_4MUX", + [BT1120_1MUX] = "BT1120_1MUX", + [BT1120_2MUX] = "BT1120_2MUX", + [BT1120_4MUX] = "BT1120_4MUX", + [BT656I_TEST_MODES] = "BT656I_TEST_MODES" +}; + +static const struct nvp6158_pixfmt nvp6158_formats[] = { + { + .code = MEDIA_BUS_FMT_UYVY8_2X8 + }, +}; + +static int nvp6158_querystd(struct v4l2_subdev *sd, v4l2_std_id *std) +{ + struct nvp6158 *nvp6158 = to_nvp6158(sd); + + if ((nvp6158->mode > BT656I_TEST_MODES) && + (nvp6158->mode < NVP6158_DVP_MODES_END)) { + /* for vicap detect bt1120 */ + *std = V4L2_STD_ATSC; + } else { + *std = V4L2_STD_PAL; + } + return 0; +} + +/* sensor register write */ +static int nvp6158_write(struct i2c_client *client, u8 reg, u8 val) +{ + struct i2c_msg msg; + u8 buf[2]; + int ret; + + dev_info(&client->dev, "write reg(0x%x val:0x%x)!\n", reg, val); + buf[0] = reg & 0xFF; + buf[1] = val; + + msg.addr = client->addr; + msg.flags = client->flags; + msg.buf = buf; + msg.len = sizeof(buf); + + ret = i2c_transfer(client->adapter, &msg, 1); + if (ret >= 0) + return 0; + + dev_err(&client->dev, + "nvp6158 write reg(0x%x val:0x%x) failed !\n", reg, val); + + return ret; +} + +/* sensor register read */ +static int nvp6158_read(struct i2c_client *client, u8 reg, u8 *val) +{ + struct i2c_msg msg[2]; + u8 buf[1]; + int ret; + + buf[0] = reg & 0xFF; + + msg[0].addr = client->addr; + msg[0].flags = client->flags; + msg[0].buf = buf; + msg[0].len = sizeof(buf); + + msg[1].addr = client->addr; + msg[1].flags = client->flags | I2C_M_RD; + msg[1].buf = buf; + msg[1].len = 1; + + ret = i2c_transfer(client->adapter, msg, 2); + if (ret >= 0) { + *val = buf[0]; + return 0; + } + + dev_err(&client->dev, "nvp6158 read reg(0x%x) failed !\n", reg); + + return ret; +} + +static int __nvp6158_power_on(struct nvp6158 *nvp6158) +{ + u32 i; + int ret; + struct nvp6158_regulator *regulator; + struct device *dev = &nvp6158->client->dev; + + dev_info(dev, "%s(%d)\n", __func__, __LINE__); + + if (!IS_ERR_OR_NULL(nvp6158->pins_default)) { + ret = pinctrl_select_state(nvp6158->pinctrl, + nvp6158->pins_default); + if (ret < 0) + dev_err(dev, "could not set pins. ret=%d\n", ret); + } + + ret = clk_prepare_enable(nvp6158->xvclk); + if (ret < 0) { + dev_err(dev, "Failed to enable xvclk\n"); + return ret; + } + + if (nvp6158->regulators.regulator) { + for (i = 0; i < nvp6158->regulators.cnt; i++) { + regulator = nvp6158->regulators.regulator + i; + if (IS_ERR(regulator->regulator)) + continue; + regulator_set_voltage( + regulator->regulator, + regulator->min_uV, + regulator->max_uV); + if (regulator_enable(regulator->regulator)) { + dev_err(dev, + "regulator_enable failed!\n"); + goto disable_clk; + } + } + } + usleep_range(3000, 5000); + + if (!IS_ERR(nvp6158->pwr_gpio)) { + gpiod_direction_output(nvp6158->pwr_gpio, 1); + usleep_range(3000, 5000); + } + + if (!IS_ERR(nvp6158->pwr2_gpio)) { + gpiod_direction_output(nvp6158->pwr2_gpio, 1); + usleep_range(3000, 5000); + } + + if (!IS_ERR(nvp6158->pwdn_gpio)) { + gpiod_direction_output(nvp6158->pwdn_gpio, 1); + usleep_range(1500, 2000); + } + + if (!IS_ERR(nvp6158->pwdn2_gpio)) { + gpiod_direction_output(nvp6158->pwdn2_gpio, 1); + usleep_range(1500, 2000); + } + + if (!IS_ERR(nvp6158->rst_gpio)) { + gpiod_direction_output(nvp6158->rst_gpio, 0); + usleep_range(50000, 100000); + gpiod_direction_output(nvp6158->rst_gpio, 1); + usleep_range(3000, 5000); + } + + if (!IS_ERR(nvp6158->rst2_gpio)) { + gpiod_direction_output(nvp6158->rst2_gpio, 0); + usleep_range(1500, 2000); + gpiod_direction_output(nvp6158->rst2_gpio, 1); + usleep_range(3000, 5000); + } + + return 0; + +disable_clk: + clk_disable_unprepare(nvp6158->xvclk); + + return ret; +} + +static void __nvp6158_power_off(struct nvp6158 *nvp6158) +{ + u32 i; + int ret; + struct nvp6158_regulator *regulator; + struct device *dev = &nvp6158->client->dev; + + dev_info(dev, "%s(%d)\n", __func__, __LINE__); + clk_disable_unprepare(nvp6158->xvclk); + + if (!IS_ERR(nvp6158->rst_gpio)) + gpiod_direction_output(nvp6158->rst_gpio, 0); + + if (!IS_ERR(nvp6158->rst2_gpio)) + gpiod_direction_output(nvp6158->rst2_gpio, 0); + + if (!IS_ERR(nvp6158->pwdn_gpio)) + gpiod_direction_output(nvp6158->pwdn_gpio, 0); + + if (!IS_ERR(nvp6158->pwdn_gpio)) + gpiod_direction_output(nvp6158->pwdn2_gpio, 0); + + if (!IS_ERR(nvp6158->pwr_gpio)) + gpiod_direction_output(nvp6158->pwr_gpio, 0); + + if (!IS_ERR(nvp6158->pwr2_gpio)) + gpiod_direction_output(nvp6158->pwr2_gpio, 0); + + if (!IS_ERR_OR_NULL(nvp6158->pins_sleep)) { + ret = pinctrl_select_state(nvp6158->pinctrl, + nvp6158->pins_sleep); + if (ret < 0) + dev_err(dev, "could not set pins\n"); + } + + if (nvp6158->regulators.regulator) { + for (i = 0; i < nvp6158->regulators.cnt; i++) { + regulator = nvp6158->regulators.regulator + i; + if (IS_ERR(regulator->regulator)) + continue; + regulator_disable(regulator->regulator); + } + } +} + +static int nvp6158_power(struct v4l2_subdev *sd, int on) +{ + struct i2c_client *client = v4l2_get_subdevdata(sd); + struct nvp6158 *nvp6158 = to_nvp6158(sd); + int ret = 0; + + dev_info(&client->dev, "%s: on %d\n", __func__, on); + mutex_lock(&nvp6158->mutex); + + /* If the power state is not modified - no work to do. */ + if (nvp6158->power_on == !!on) + goto exit; + + if (on) { + ret = __nvp6158_power_on(nvp6158); + if (ret < 0) + goto exit; + + nvp6158->power_on = true; + } else { + __nvp6158_power_off(nvp6158); + nvp6158->power_on = false; + } + +exit: + mutex_unlock(&nvp6158->mutex); + + return ret; +} + +#define CROP_START(SRC, DST) (((SRC) - (DST)) / 2 / 4 * 4) +/* + * The resolution of the driver configuration needs to be exactly + * the same as the current output resolution of the sensor, + * the input width of the isp needs to be 16 aligned, + * the input height of the isp needs to be 8 aligned. + * Can be cropped to standard resolution by this function, + * otherwise it will crop out strange resolution according + * to the alignment rules. + */ +static int nvp6158_get_selection(struct v4l2_subdev *sd, + struct v4l2_subdev_pad_config *cfg, + struct v4l2_subdev_selection *sel) +{ + struct nvp6158 *nvp6158 = to_nvp6158(sd); + + if (sel->target == V4L2_SEL_TGT_CROP_BOUNDS) { + sel->r.left = CROP_START(0, 0); + sel->r.width = nvp6158->frame_size->width; + sel->r.top = CROP_START(0, 0); + sel->r.height = nvp6158->frame_size->height; + return 0; + } + return -EINVAL; +} + +static int nvp6158_initialize_controls(struct nvp6158 *nvp6158) +{ + struct v4l2_ctrl_handler *handler; + int ret; + + handler = &nvp6158->ctrl_handler; + ret = v4l2_ctrl_handler_init(handler, 2); + if (ret) + return ret; + handler->lock = &nvp6158->mutex; + + v4l2_ctrl_new_std(handler, NULL, V4L2_CID_PIXEL_RATE, + 0, NVP6158_PIXEL_RATE, 1, NVP6158_PIXEL_RATE); + + if (handler->error) { + ret = handler->error; + dev_err(&nvp6158->client->dev, + "Failed to init controls(%d)\n", ret); + goto err_free_handler; + } + + nvp6158->subdev.ctrl_handler = handler; + + return 0; + +err_free_handler: + v4l2_ctrl_handler_free(handler); + + return ret; +} +static void nvp6158_get_default_format(struct nvp6158 *nvp6158) +{ + + const struct nvp6158_framesize *fsize = &nvp6158_framesizes[0]; + const struct nvp6158_framesize *match = NULL; + int i = ARRAY_SIZE(nvp6158_framesizes); + unsigned int min_err = UINT_MAX; + struct v4l2_mbus_framefmt *format = &nvp6158->format; + struct nvp6158_default_rect *rect = &nvp6158->defrect; + + while (i--) { + unsigned int err = abs(fsize->width - rect->width) + + abs(fsize->height - rect->height); + if (err < min_err) { + min_err = err; + match = fsize; + } + fsize++; + } + + if (!match) + match = &nvp6158_framesizes[0]; + + format->width = match->width; + format->height = match->height; + format->colorspace = V4L2_COLORSPACE_SRGB; + format->code = nvp6158_formats[0].code; + if (BT656I_TEST_MODES == nvp6158->mode) + format->field = V4L2_FIELD_INTERLACED; + else + format->field = V4L2_FIELD_NONE; + nvp6158->frame_size = match; +} + +static int nvp6158_stream(struct v4l2_subdev *sd, int on) +{ + struct i2c_client *client = v4l2_get_subdevdata(sd); + struct nvp6158 *nvp6158 = to_nvp6158(sd); + video_init_all video_init; + NC_VIVO_CH_FORMATDEF fmt_idx; + int ch; + + dev_info(&client->dev, "%s: on: %d, %dx%d\n", __func__, on, + nvp6158->frame_size->width, + nvp6158->frame_size->height); + + mutex_lock(&nvp6158->mutex); + on = !!on; + + if (nvp6158->streaming == on) + goto unlock; + + if (on) { + for (ch = 0; ch < 4; ch++) { + fmt_idx = nvp6158->frame_size->fmt_idx; + video_init.ch_param[ch].ch = ch; + video_init.ch_param[ch].format = fmt_idx; + } + video_init.mode = nvp6158->mode; + nvp6158_start(&video_init, nvp6158->dual_edge ? true : false); +#ifdef WORK_QUEUE + if (nvp6158->plug_state_check.state_check_wq) { + dev_info(&client->dev, "%s queue_delayed_work 1000ms", __func__); + queue_delayed_work(nvp6158->plug_state_check.state_check_wq, + &nvp6158->plug_state_check.d_work, + msecs_to_jiffies(1000)); + } +#endif + } else { +#ifdef WORK_QUEUE + cancel_delayed_work_sync(&nvp6158->plug_state_check.d_work); + dev_info(&client->dev, "cancle_queue_delayed_work"); +#endif + nvp6158_stop(); + } + + nvp6158->streaming = on; + +unlock: + mutex_unlock(&nvp6158->mutex); + + return 0; +} + +static int nvp6158_enum_frame_interval(struct v4l2_subdev *sd, + struct v4l2_subdev_pad_config *cfg, + struct v4l2_subdev_frame_interval_enum *fie) +{ + struct nvp6158 *nvp6158 = to_nvp6158(sd); + struct i2c_client *client = nvp6158->client; + + dev_dbg(&client->dev, "%s enter.\n", __func__); + + if (fie->index >= ARRAY_SIZE(nvp6158_framesizes)) + return -EINVAL; + + fie->width = nvp6158_framesizes[fie->index].width; + fie->height = nvp6158_framesizes[fie->index].height; + fie->interval = nvp6158_framesizes[fie->index].max_fps; + return 0; +} + +static int nvp6158_enum_mbus_code(struct v4l2_subdev *sd, + struct v4l2_subdev_pad_config *cfg, + struct v4l2_subdev_mbus_code_enum *code) +{ + if (code->index >= ARRAY_SIZE(nvp6158_formats)) + return -EINVAL; + + code->code = nvp6158_formats[code->index].code; + + return 0; +} + +static int nvp6158_enum_frame_sizes(struct v4l2_subdev *sd, + struct v4l2_subdev_pad_config *cfg, + struct v4l2_subdev_frame_size_enum *fse) +{ + struct i2c_client *client = v4l2_get_subdevdata(sd); + int i = ARRAY_SIZE(nvp6158_formats); + + dev_dbg(&client->dev, "%s: enter!\n", __func__); + + if (fse->index >= ARRAY_SIZE(nvp6158_framesizes)) + return -EINVAL; + + while (--i) + if (fse->code == nvp6158_formats[i].code) + break; + + fse->code = nvp6158_formats[i].code; + + fse->min_width = nvp6158_framesizes[fse->index].width; + fse->max_width = fse->min_width; + fse->max_height = nvp6158_framesizes[fse->index].height; + fse->min_height = fse->max_height; + + return 0; +} + +/* indicate N4 no signal channel */ +static inline bool nvp6158_no_signal(struct v4l2_subdev *sd, u8 *novid) +{ + struct nvp6158 *nvp6158 = to_nvp6158(sd); + struct i2c_client *client = nvp6158->client; + u8 videoloss = 0; + int ret; + bool no_signal = false; + + nvp6158_write(client, 0xff, 0x00); + ret = nvp6158_read(client, 0xa8, &videoloss); + if (ret < 0) + dev_err(&client->dev, "Failed to read videoloss state!\n"); + + *novid = videoloss; + dev_info(&client->dev, "%s: video loss status:0x%x.\n", __func__, videoloss); + if (videoloss == 0xf) { + dev_info(&client->dev, "%s: all channels No Video detected.\n", __func__); + no_signal = true; + } else { + dev_info(&client->dev, "%s: channel has some video detection.\n", __func__); + no_signal = false; + } + return no_signal; +} + +/* indicate N4 channel locked status */ +static inline bool nvp6158_sync(struct v4l2_subdev *sd, u8 *lock_st) +{ + struct i2c_client *client = v4l2_get_subdevdata(sd); + u8 video_lock_status = 0; + int ret; + bool has_sync = false; + + nvp6158_write(client, 0xff, 0x00); + ret = nvp6158_read(client, 0xe0, &video_lock_status); + if (ret < 0) + dev_err(&client->dev, "Failed to read sync state!\n"); + + dev_info(&client->dev, "%s: video AGC LOCK status:0x%x.\n", + __func__, video_lock_status); + *lock_st = video_lock_status; + if (video_lock_status) { + dev_info(&client->dev, "%s: channel has AGC LOCK.\n", __func__); + has_sync = true; + } else { + dev_info(&client->dev, "%s: channel has no AGC LOCK.\n", __func__); + has_sync = false; + } + return has_sync; +} + +#ifdef WORK_QUEUE +static void nvp6158_plug_state_check_work(struct work_struct *work) +{ + struct sensor_state_check_work *params_check = + container_of(work, struct sensor_state_check_work, d_work.work); + struct nvp6158 *nvp6158 = + container_of(params_check, struct nvp6158, plug_state_check); + struct i2c_client *client = nvp6158->client; + struct v4l2_subdev *sd = &nvp6158->subdev; + u8 novid_status = 0x00; + u8 sync_status = 0x00; + + nvp6158_no_signal(sd, &novid_status); + nvp6158_sync(sd, &sync_status); + nvp6158->cur_detect_status = novid_status; + + /* detect state change to determine is there has plug motion */ + novid_status = nvp6158->cur_detect_status ^ nvp6158->last_detect_status; + if (novid_status) + nvp6158->hot_plug = true; + else + nvp6158->hot_plug = false; + nvp6158->last_detect_status = nvp6158->cur_detect_status; + + dev_info(&client->dev, "%s has plug motion? (%s)", __func__, + nvp6158->hot_plug ? "true" : "false"); + if (nvp6158->hot_plug) { + dev_info(&client->dev, "queue_delayed_work 1500ms, if has hot plug motion."); + queue_delayed_work(nvp6158->plug_state_check.state_check_wq, + &nvp6158->plug_state_check.d_work, msecs_to_jiffies(1500)); + nvp6158_write(client, 0xFF, 0x20); + nvp6158_write(client, 0x00, (sync_status << 4) | sync_status); + usleep_range(3000, 5000); + nvp6158_write(client, 0x00, 0xFF); + } else { + dev_info(&client->dev, "queue_delayed_work 100ms, if no hot plug motion."); + queue_delayed_work(nvp6158->plug_state_check.state_check_wq, + &nvp6158->plug_state_check.d_work, msecs_to_jiffies(100)); + } +} +#endif + +static int nvp6158_g_mbus_config(struct v4l2_subdev *sd, unsigned int pad, + struct v4l2_mbus_config *cfg) +{ + struct nvp6158 *nvp6158 = to_nvp6158(sd); + + cfg->type = V4L2_MBUS_BT656; + if (nvp6158->dual_edge == 1) { + cfg->flags = RKMODULE_CAMERA_BT656_CHANNELS | + V4L2_MBUS_PCLK_SAMPLE_RISING | + V4L2_MBUS_PCLK_SAMPLE_FALLING; + } else { + cfg->flags = RKMODULE_CAMERA_BT656_CHANNELS | + V4L2_MBUS_PCLK_SAMPLE_RISING; + } + return 0; +} + +static int nvp6158_get_fmt(struct v4l2_subdev *sd, + struct v4l2_subdev_pad_config *cfg, + struct v4l2_subdev_format *fmt) +{ + struct i2c_client *client = v4l2_get_subdevdata(sd); + struct nvp6158 *nvp6158 = to_nvp6158(sd); + + if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) { +#ifdef CONFIG_VIDEO_V4L2_SUBDEV_API + struct v4l2_mbus_framefmt *mf; + + mf = v4l2_subdev_get_try_format(sd, cfg, 0); + mutex_lock(&nvp6158->mutex); + fmt->format = *mf; + mutex_unlock(&nvp6158->mutex); + return 0; +#else + return -ENOTTY; +#endif + } + + mutex_lock(&nvp6158->mutex); + fmt->format = nvp6158->format; + mutex_unlock(&nvp6158->mutex); + + dev_dbg(&client->dev, "%s: %x %dx%d\n", __func__, + nvp6158->format.code, nvp6158->format.width, + nvp6158->format.height); + + return 0; +} + +static void __nvp6158_try_frame_size(struct v4l2_mbus_framefmt *mf, + const struct nvp6158_framesize **size) +{ + const struct nvp6158_framesize *fsize = &nvp6158_framesizes[0]; + const struct nvp6158_framesize *match = NULL; + int i = ARRAY_SIZE(nvp6158_framesizes); + unsigned int min_err = UINT_MAX; + + while (i--) { + unsigned int err = abs(fsize->width - mf->width) + + abs(fsize->height - mf->height); + if (err < min_err) { + min_err = err; + match = fsize; + } + fsize++; + } + + if (!match) + match = &nvp6158_framesizes[0]; + + mf->width = match->width; + mf->height = match->height; + + if (size) + *size = match; +} + +static int nvp6158_set_fmt(struct v4l2_subdev *sd, + struct v4l2_subdev_pad_config *cfg, + struct v4l2_subdev_format *fmt) +{ + int index = ARRAY_SIZE(nvp6158_formats); + struct v4l2_mbus_framefmt *mf = &fmt->format; + const struct nvp6158_framesize *size = NULL; + struct nvp6158 *nvp6158 = to_nvp6158(sd); + int ret = 0; + + __nvp6158_try_frame_size(mf, &size); + + while (--index >= 0) + if (nvp6158_formats[index].code == mf->code) + break; + + if (index < 0) + return -EINVAL; + + mf->colorspace = V4L2_COLORSPACE_SRGB; + mf->code = nvp6158_formats[index].code; + mf->field = nvp6158->format.field; + + mutex_lock(&nvp6158->mutex); + + if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) { +#ifdef CONFIG_VIDEO_V4L2_SUBDEV_API + mf = v4l2_subdev_get_try_format(sd, cfg, fmt->pad); + *mf = fmt->format; +#else + return -ENOTTY; +#endif + } else { + if (nvp6158->streaming) { + mutex_unlock(&nvp6158->mutex); + return -EBUSY; + } + + nvp6158->frame_size = size; + nvp6158->format = fmt->format; + } + + mutex_unlock(&nvp6158->mutex); + return ret; +} + +static void nvp6158_get_module_inf(struct nvp6158 *nvp6158, + struct rkmodule_inf *inf) +{ + memset(inf, 0, sizeof(*inf)); + strlcpy(inf->base.sensor, NVP6158_NAME, sizeof(inf->base.sensor)); + strlcpy(inf->base.module, nvp6158->module_name, + sizeof(inf->base.module)); + strlcpy(inf->base.lens, nvp6158->len_name, sizeof(inf->base.lens)); +} + +static __maybe_unused void +nvp6158_get_bt656_module_inf(struct nvp6158 *nvp6158, + struct rkmodule_bt656_mbus_info *inf) +{ + memset(inf, 0, sizeof(*inf)); + inf->flags = RKMODULE_CAMERA_BT656_PARSE_ID_LSB; + switch (nvp6158->ch_nums) { + case 1: + inf->flags |= RKMODULE_CAMERA_BT656_CHANNEL_0; + break; + case 2: + inf->flags |= RKMODULE_CAMERA_BT656_CHANNEL_0 | + RKMODULE_CAMERA_BT656_CHANNEL_1; + break; + case 4: + inf->flags |= RKMODULE_CAMERA_BT656_CHANNELS; + break; + default: + inf->flags |= RKMODULE_CAMERA_BT656_CHANNELS; + } +} + +static void nvp6158_get_vicap_rst_inf(struct nvp6158 *nvp6158, + struct rkmodule_vicap_reset_info *rst_info) +{ + struct i2c_client *client = nvp6158->client; + + rst_info->is_reset = nvp6158->hot_plug; + nvp6158->hot_plug = false; + rst_info->src = RKCIF_RESET_SRC_ERR_HOTPLUG; + dev_info(&client->dev, "%s: rst_info->is_reset:%d.\n", __func__, rst_info->is_reset); +} + +static void nvp6158_set_vicap_rst_inf(struct nvp6158 *nvp6158, + struct rkmodule_vicap_reset_info rst_info) +{ + nvp6158->is_reset = rst_info.is_reset; +} + +static void nvp6158_set_streaming(struct nvp6158 *nvp6158, int on) +{ + struct i2c_client *client = nvp6158->client; + + + dev_info(&client->dev, "%s: on: %d\n", __func__, on); + + if (on) { + //VDO2/VDO1 enabled VCLK_1_EN/VCLK_2_EN + nvp6158_write(client, 0xFF, 0x01); + nvp6158_write(client, 0xCA, 0x66); + } else { + //VDO2/VDO1 disable VCLK_1/VCLK_2_DISABLE + nvp6158_write(client, 0xFF, 0x01); + nvp6158_write(client, 0xCA, 0x00); + } +} + +static long nvp6158_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg) +{ + struct nvp6158 *nvp6158 = to_nvp6158(sd); + long ret = 0; + u32 stream = 0; + + switch (cmd) { + case RKMODULE_GET_MODULE_INFO: + nvp6158_get_module_inf(nvp6158, (struct rkmodule_inf *)arg); + break; + case RKMODULE_GET_BT656_MBUS_INFO: + nvp6158_get_bt656_module_inf(nvp6158, + (struct rkmodule_bt656_mbus_info + *)arg); + break; + case RKMODULE_GET_START_STREAM_SEQ: + if ((nvp6158->mode > BT656_4MUX) && + (nvp6158->mode < NVP6158_DVP_MODES_END)) + *(int *)arg = RKMODULE_START_STREAM_FRONT; + break; + case RKMODULE_GET_VICAP_RST_INFO: + nvp6158_get_vicap_rst_inf(nvp6158, (struct rkmodule_vicap_reset_info *)arg); + break; + case RKMODULE_SET_VICAP_RST_INFO: + nvp6158_set_vicap_rst_inf(nvp6158, *(struct rkmodule_vicap_reset_info *)arg); + break; + case RKMODULE_SET_QUICK_STREAM: + stream = *((u32 *)arg); + nvp6158_set_streaming(nvp6158, !!stream); + break; + default: + ret = -ENOTTY; + break; + } + + return ret; +} + +#ifdef CONFIG_COMPAT +static long nvp6158_compat_ioctl32(struct v4l2_subdev *sd, + unsigned int cmd, unsigned long arg) +{ + void __user *up = compat_ptr(arg); + struct rkmodule_inf *inf; + struct rkmodule_awb_cfg *cfg; + long ret; + struct rkmodule_bt656_mbus_info *bt565_inf; + int *seq; + struct rkmodule_vicap_reset_info *vicap_rst_inf; + u32 stream = 0; + + switch (cmd) { + case RKMODULE_GET_MODULE_INFO: + inf = kzalloc(sizeof(*inf), GFP_KERNEL); + if (!inf) { + ret = -ENOMEM; + return ret; + } + + ret = nvp6158_ioctl(sd, cmd, inf); + if (!ret) { + ret = copy_to_user(up, inf, sizeof(*inf)); + if (ret) + ret = -EFAULT; + } + kfree(inf); + break; + case RKMODULE_AWB_CFG: + cfg = kzalloc(sizeof(*cfg), GFP_KERNEL); + if (!cfg) { + ret = -ENOMEM; + return ret; + } + + ret = copy_from_user(cfg, up, sizeof(*cfg)); + if (!ret) + ret = nvp6158_ioctl(sd, cmd, cfg); + else + ret = -EFAULT; + kfree(cfg); + break; + case RKMODULE_GET_BT656_MBUS_INFO: + bt565_inf = kzalloc(sizeof(*bt565_inf), GFP_KERNEL); + if (!bt565_inf) { + ret = -ENOMEM; + return ret; + } + + ret = nvp6158_ioctl(sd, cmd, bt565_inf); + if (!ret) { + ret = copy_to_user(up, bt565_inf, sizeof(*bt565_inf)); + if (ret) + ret = -EFAULT; + } + kfree(bt565_inf); + break; + case RKMODULE_GET_START_STREAM_SEQ: + seq = kzalloc(sizeof(*seq), GFP_KERNEL); + if (!seq) { + ret = -ENOMEM; + return ret; + } + ret = nvp6158_ioctl(sd, cmd, seq); + if (!ret) { + ret = copy_to_user(up, seq, sizeof(*seq)); + if (ret) + ret = -EFAULT; + } + kfree(seq); + break; + case RKMODULE_GET_VICAP_RST_INFO: + vicap_rst_inf = kzalloc(sizeof(*vicap_rst_inf), GFP_KERNEL); + if (!vicap_rst_inf) { + ret = -ENOMEM; + return ret; + } + + ret = nvp6158_ioctl(sd, cmd, vicap_rst_inf); + if (!ret) { + ret = copy_to_user(up, vicap_rst_inf, sizeof(*vicap_rst_inf)); + if (ret) + ret = -EFAULT; + } + kfree(vicap_rst_inf); + break; + case RKMODULE_SET_VICAP_RST_INFO: + vicap_rst_inf = kzalloc(sizeof(*vicap_rst_inf), GFP_KERNEL); + if (!vicap_rst_inf) { + ret = -ENOMEM; + return ret; + } + + ret = copy_from_user(vicap_rst_inf, up, sizeof(*vicap_rst_inf)); + if (!ret) + ret = nvp6158_ioctl(sd, cmd, vicap_rst_inf); + else + ret = -EFAULT; + kfree(vicap_rst_inf); + break; + case RKMODULE_SET_QUICK_STREAM: + ret = copy_from_user(&stream, up, sizeof(u32)); + if (!ret) + ret = nvp6158_ioctl(sd, cmd, &stream); + else + ret = -EFAULT; + break; + default: + ret = -ENOIOCTLCMD; + break; + } + + return ret; +} +#endif + +static int nvp6158_runtime_resume(struct device *dev) +{ + struct i2c_client *client = to_i2c_client(dev); + struct v4l2_subdev *sd = i2c_get_clientdata(client); + struct nvp6158 *nvp6158 = to_nvp6158(sd); + + return __nvp6158_power_on(nvp6158); +} + +static int nvp6158_runtime_suspend(struct device *dev) +{ + struct i2c_client *client = to_i2c_client(dev); + struct v4l2_subdev *sd = i2c_get_clientdata(client); + struct nvp6158 *nvp6158 = to_nvp6158(sd); + + __nvp6158_power_off(nvp6158); + + return 0; +} + +static const struct dev_pm_ops nvp6158_pm_ops = { + SET_RUNTIME_PM_OPS(nvp6158_runtime_suspend, + nvp6158_runtime_resume, NULL) +}; + +static const struct v4l2_subdev_video_ops nvp6158_video_ops = { + .s_stream = nvp6158_stream, + .querystd = nvp6158_querystd, +}; + +static const struct v4l2_subdev_pad_ops nvp6158_subdev_pad_ops = { + .enum_mbus_code = nvp6158_enum_mbus_code, + .enum_frame_size = nvp6158_enum_frame_sizes, + .get_fmt = nvp6158_get_fmt, + .set_fmt = nvp6158_set_fmt, + .get_selection = nvp6158_get_selection, + .enum_frame_interval = nvp6158_enum_frame_interval, + .get_mbus_config = nvp6158_g_mbus_config, +}; + +static const struct v4l2_subdev_core_ops nvp6158_core_ops = { + .s_power = nvp6158_power, + .ioctl = nvp6158_ioctl, +#ifdef CONFIG_COMPAT + .compat_ioctl32 = nvp6158_compat_ioctl32, +#endif +}; + +static const struct v4l2_subdev_ops nvp6158_subdev_ops = { + .core = &nvp6158_core_ops, + .video = &nvp6158_video_ops, + .pad = &nvp6158_subdev_pad_ops, +}; + +static void get_dvp_mode(struct nvp6158 *nvp6158) +{ + struct device *dev = &nvp6158->client->dev; + char mode[128]; + u32 i; + + sprintf(mode, "%s_%dMUX", nvp6158->dvp_mode, nvp6158->ch_nums); + dev_info(dev, "combined dvp mode is(%s)\n", mode); + for (i = 0; i < NVP6158_DVP_MODES_END; i++) { + if (!strcmp(mode, nvp6158_dvp_mode_lists[i])) + break; + } + + if (i < NVP6158_DVP_MODES_END) + nvp6158->mode = i; + else + nvp6158->mode = BT656I_TEST_MODES; + dev_info(dev, "get dvp mode (%s)\n", nvp6158_dvp_mode_lists[nvp6158->mode]); +} + +static int nvp6158_parse_dts(struct nvp6158 *nvp6158) +{ + int ret; + int elem_size, elem_index; + const char *str = ""; + struct property *prop; + struct nvp6158_regulator *regulator; + struct device *dev = &nvp6158->client->dev; + struct device_node *np = of_node_get(dev->of_node); + + nvp6158->xvclk = devm_clk_get(dev, "xvclk"); + if (IS_ERR(nvp6158->xvclk)) { + dev_err(dev, "Failed to get xvclk\n"); + return -EINVAL; + } + ret = clk_set_rate(nvp6158->xvclk, NVP6158_XVCLK_FREQ); + if (ret < 0) { + dev_err(dev, "Failed to set xvclk rate (24MHz)\n"); + return ret; + } + if (clk_get_rate(nvp6158->xvclk) != NVP6158_XVCLK_FREQ) + dev_warn(dev, "xvclk mismatched, modes are based on 24MHz\n"); + + nvp6158->pinctrl = devm_pinctrl_get(dev); + if (!IS_ERR(nvp6158->pinctrl)) { + nvp6158->pins_default = + pinctrl_lookup_state(nvp6158->pinctrl, + OF_CAMERA_PINCTRL_STATE_DEFAULT); + if (IS_ERR(nvp6158->pins_default)) + dev_err(dev, "could not get default pinstate\n"); + + nvp6158->pins_sleep = + pinctrl_lookup_state(nvp6158->pinctrl, + OF_CAMERA_PINCTRL_STATE_SLEEP); + if (IS_ERR(nvp6158->pins_sleep)) + dev_err(dev, "could not get sleep pinstate\n"); + } else { + dev_err(dev, "no pinctrl\n"); + } + + elem_size = of_property_count_elems_of_size( + np, + OF_CAMERA_MODULE_REGULATOR_VOLTAGES, + sizeof(u32)); + prop = of_find_property( + np, + OF_CAMERA_MODULE_REGULATORS, + NULL); + if (elem_size > 0 && !IS_ERR_OR_NULL(prop)) { + nvp6158->regulators.regulator = + devm_kzalloc(&nvp6158->client->dev, + elem_size * sizeof(struct nvp6158_regulator), + GFP_KERNEL); + if (!nvp6158->regulators.regulator) + dev_err(dev, "could not malloc nvp6158_regulator\n"); + + nvp6158->regulators.cnt = elem_size; + + str = NULL; + elem_index = 0; + regulator = nvp6158->regulators.regulator; + if (regulator) { + do { + str = of_prop_next_string(prop, str); + if (!str) { + dev_err(dev, "%s is not match %s in dts\n", + OF_CAMERA_MODULE_REGULATORS, + OF_CAMERA_MODULE_REGULATOR_VOLTAGES); + break; + } + regulator->regulator = + devm_regulator_get_optional(dev, str); + if (IS_ERR(regulator->regulator)) + dev_err(dev, "devm_regulator_get %s failed\n", + str); + of_property_read_u32_index( + np, + OF_CAMERA_MODULE_REGULATOR_VOLTAGES, + elem_index++, + ®ulator->min_uV); + regulator->max_uV = regulator->min_uV; + regulator++; + } while (--elem_size); + } + } + + if (of_property_read_string(np, + RK_CAMERA_MODULE_DVP_MODE, + &nvp6158->dvp_mode)) { + nvp6158->dvp_mode = NVP6158_DEFAULT_DVP_MODE; + dev_warn(dev, + "can not get module %s from dts, use default(%s)!\n", + RK_CAMERA_MODULE_DVP_MODE, + NVP6158_DEFAULT_DVP_MODE); + } else { + dev_info(dev, + "get module %s from dts, dvp mode(%s)!\n", + RK_CAMERA_MODULE_DVP_MODE, nvp6158->dvp_mode); + } + + if (of_property_read_u32(np, + RK_CAMERA_MODULE_CHANNEL_NUMS, + &nvp6158->ch_nums)) { + nvp6158->ch_nums = NVP6158_DEFAULT_CHANNEL_NUMS; + dev_warn(dev, + "can not get module %s from dts, use default(%d)!\n", + RK_CAMERA_MODULE_CHANNEL_NUMS, + NVP6158_DEFAULT_CHANNEL_NUMS); + } else { + dev_info(dev, + "get module %s from dts, channel_nums(%d)!\n", + RK_CAMERA_MODULE_DVP_MODE, nvp6158->ch_nums); + } + + if (of_property_read_u32(np, + RK_CAMERA_MODULE_DUAL_EDGE, + &nvp6158->dual_edge)) { + nvp6158->dual_edge = NVP6158_DEFAULT_DUAL_EDGE; + dev_warn(dev, + "can not get module %s from dts, use default(%d)!\n", + RK_CAMERA_MODULE_DUAL_EDGE, + NVP6158_DEFAULT_DUAL_EDGE); + } else { + dev_info(dev, + "get module %s from dts, dual_edge(%d)!\n", + RK_CAMERA_MODULE_DUAL_EDGE, nvp6158->dual_edge); + } + + + + if (of_property_read_u32_array(np, + RK_CAMERA_MODULE_DEFAULT_RECT, + (unsigned int *)&nvp6158->defrect, 2)) { + nvp6158->defrect.width = NVP6158_DEFAULT_WIDTH; + nvp6158->defrect.height = NVP6158_DEFAULT_HEIGHT; + dev_warn(dev, + "can not get module %s from dts, use default wxh(%dx%d)!\n", + RK_CAMERA_MODULE_DEFAULT_RECT, + NVP6158_DEFAULT_WIDTH, NVP6158_DEFAULT_HEIGHT); + } else { + dev_info(dev, + "get module %s from dts, wxh(%dx%d)!\n", + RK_CAMERA_MODULE_DEFAULT_RECT, + nvp6158->defrect.width, + nvp6158->defrect.height); + } + + /* AHD_PWR_EN */ + nvp6158->pwr_gpio = devm_gpiod_get(dev, "pwr", GPIOD_OUT_LOW); + if (IS_ERR(nvp6158->pwr_gpio)) + dev_warn(dev, "can not find pd-gpios, error %ld\n", + PTR_ERR(nvp6158->pwr_gpio)); + /* AHD CAM_PWR_EN*/ + nvp6158->pwr2_gpio = devm_gpiod_get(dev, "pwr2", GPIOD_OUT_LOW); + if (IS_ERR(nvp6158->pwr2_gpio)) + dev_warn(dev, "can not find pd2-gpios, error %ld\n", + PTR_ERR(nvp6158->pwr2_gpio)); + + nvp6158->rst_gpio = devm_gpiod_get(dev, "rst", GPIOD_OUT_LOW); + if (IS_ERR(nvp6158->rst_gpio)) + dev_warn(dev, "can not find rst-gpios, error %ld\n", + PTR_ERR(nvp6158->rst_gpio)); + + nvp6158->rst2_gpio = devm_gpiod_get(dev, "rst2", GPIOD_OUT_LOW); + if (IS_ERR(nvp6158->rst2_gpio)) + dev_warn(dev, "can not find rst2-gpios, error %ld\n", + PTR_ERR(nvp6158->rst2_gpio)); + + nvp6158->pwdn_gpio = devm_gpiod_get(dev, "pwdn", GPIOD_OUT_LOW); + if (IS_ERR(nvp6158->pwdn_gpio)) + dev_warn(dev, "can not find pwd-gpios, error %ld\n", + PTR_ERR(nvp6158->pwdn_gpio)); + + nvp6158->pwdn2_gpio = devm_gpiod_get(dev, "pwdn2", GPIOD_OUT_LOW); + if (IS_ERR(nvp6158->pwdn2_gpio)) + dev_warn(dev, "can not find pwd2-gpios, error %ld\n", + PTR_ERR(nvp6158->pwdn2_gpio)); + + return 0; +} + + +static int nvp6158_probe(struct i2c_client *client, + const struct i2c_device_id *id) +{ + struct device *dev = &client->dev; + struct device_node *node = dev->of_node; + struct nvp6158 *nvp6158; + struct v4l2_subdev *sd; + __maybe_unused char facing[2]; + int ret, index; + + dev_info(dev, "driver version: %02x.%02x.%02x", + DRIVER_VERSION >> 16, + (DRIVER_VERSION & 0xff00) >> 8, + DRIVER_VERSION & 0x00ff); + + nvp6158 = devm_kzalloc(dev, sizeof(*nvp6158), GFP_KERNEL); + if (!nvp6158) + return -ENOMEM; + + ret = of_property_read_u32(node, RKMODULE_CAMERA_MODULE_INDEX, + &nvp6158->module_index); + ret |= of_property_read_string(node, RKMODULE_CAMERA_MODULE_FACING, + &nvp6158->module_facing); + ret |= of_property_read_string(node, RKMODULE_CAMERA_MODULE_NAME, + &nvp6158->module_name); + ret |= of_property_read_string(node, RKMODULE_CAMERA_LENS_NAME, + &nvp6158->len_name); + if (ret) { + dev_err(dev, "could not get %s!\n", RKMODULE_CAMERA_LENS_NAME); + return -EINVAL; + } + + nvp6158->client = client; + + ret = nvp6158_parse_dts(nvp6158); + if (ret) { + dev_err(dev, "Failed to analyze dts\n"); + return ret; + } + get_dvp_mode(nvp6158); + + mutex_init(&nvp6158->mutex); + nvp6158_get_default_format(nvp6158); + + sd = &nvp6158->subdev; + v4l2_i2c_subdev_init(sd, client, &nvp6158_subdev_ops); + ret = nvp6158_initialize_controls(nvp6158); + if (ret) + goto err_destroy_mutex; + + __nvp6158_power_on(nvp6158); + ret = nvp6158_init(i2c_adapter_id(client->adapter)); + if (ret) { + dev_err(dev, "Failed to init nvp6158\n"); + goto err_power_off; + } + +#ifdef CONFIG_VIDEO_V4L2_SUBDEV_API + sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; +#endif + +#if defined(CONFIG_MEDIA_CONTROLLER) + for (index = 0; index < nvp6158->ch_nums; index++) + nvp6158->pad[index].flags = MEDIA_PAD_FL_SOURCE; + sd->entity.function = MEDIA_ENT_F_CAM_SENSOR; + ret = media_entity_pads_init(&sd->entity, nvp6158->ch_nums, nvp6158->pad); + if (ret < 0) + goto err_power_off; +#endif + + memset(facing, 0, sizeof(facing)); + if (strcmp(nvp6158->module_facing, "back") == 0) + facing[0] = 'b'; + else + facing[0] = 'f'; + + snprintf(sd->name, sizeof(sd->name), "m%02d_%s_%s %s", + nvp6158->module_index, facing, + NVP6158_NAME, dev_name(sd->dev)); + + ret = v4l2_async_register_subdev_sensor_common(sd); + if (ret) { + dev_err(dev, "v4l2 async register subdev failed\n"); + goto err_clean_entity; + } + pm_runtime_set_active(dev); + pm_runtime_enable(dev); + pm_runtime_idle(dev); +#ifdef WORK_QUEUE + /* init work_queue for state_check */ + INIT_DELAYED_WORK(&nvp6158->plug_state_check.d_work, nvp6158_plug_state_check_work); + nvp6158->plug_state_check.state_check_wq = + create_singlethread_workqueue("nvp6158_work_queue"); + if (nvp6158->plug_state_check.state_check_wq == NULL) { + dev_err(dev, "%s(%d): %s create failed.\n", __func__, __LINE__, + "nvp6158_work_queue"); + } + nvp6158->cur_detect_status = 0x0; + nvp6158->last_detect_status = 0x0; + nvp6158->hot_plug = false; + nvp6158->is_reset = 0; + +#endif + return 0; + +err_clean_entity: +#if defined(CONFIG_MEDIA_CONTROLLER) + media_entity_cleanup(&sd->entity); +#endif +err_power_off: + __nvp6158_power_off(nvp6158); +err_destroy_mutex: + mutex_destroy(&nvp6158->mutex); + + return ret; +} + +static int nvp6158_remove(struct i2c_client *client) +{ + struct v4l2_subdev *sd = i2c_get_clientdata(client); + struct nvp6158 *nvp6158 = to_nvp6158(sd); + + nvp6158_exit(); + v4l2_ctrl_handler_free(&nvp6158->ctrl_handler); + mutex_destroy(&nvp6158->mutex); + + pm_runtime_disable(&client->dev); + if (!pm_runtime_status_suspended(&client->dev)) + __nvp6158_power_off(nvp6158); + pm_runtime_set_suspended(&client->dev); +#ifdef WORK_QUEUE + if (nvp6158->plug_state_check.state_check_wq != NULL) + destroy_workqueue(nvp6158->plug_state_check.state_check_wq); +#endif + return 0; +} + +#if IS_ENABLED(CONFIG_OF) +static const struct of_device_id nvp6158_of_match[] = { + { .compatible = "nvp6158-v4l2" }, + {}, +}; +MODULE_DEVICE_TABLE(of, nvp6158_of_match); +#endif + +static const struct i2c_device_id nvp6158_match_id[] = { + { "nvp6158-v4l2", 0 }, + { }, +}; + +static struct i2c_driver nvp6158_i2c_driver = { + .driver = { + .name = NVP6158_NAME, + .pm = &nvp6158_pm_ops, + .of_match_table = of_match_ptr(nvp6158_of_match), + }, + .probe = &nvp6158_probe, + .remove = &nvp6158_remove, + .id_table = nvp6158_match_id, +}; + +static int __init sensor_mod_init(void) +{ + return i2c_add_driver(&nvp6158_i2c_driver); +} + +static void __exit sensor_mod_exit(void) +{ + i2c_del_driver(&nvp6158_i2c_driver); +} + +device_initcall_sync(sensor_mod_init); +module_exit(sensor_mod_exit); + +MODULE_DESCRIPTION("nvp6158 sensor driver"); +MODULE_LICENSE("GPL v2"); diff --git a/drivers/media/i2c/nvp6158_drv/nvp6158_video.c b/drivers/media/i2c/nvp6158_drv/nvp6158_video.c new file mode 100644 index 000000000000..35353ff2422e --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/nvp6158_video.c @@ -0,0 +1,1682 @@ +// SPDX-License-Identifier: GPL-2.0 +/******************************************************************************** +* +* Copyright (C) 2017 NEXTCHIP Inc. All rights reserved. +* Module : The decoder's video format module +* Description : Video format +* Author : +* Date : +* Version : Version 2.0 +* +******************************************************************************** +* History : +* +* +********************************************************************************/ +#include +#include + +//#include "eq_common.h" +#include "nvp6158_video.h" +#include "nvp6158_video_auto_detect.h" +#include "nvp6158_coax_protocol.h" +//#include "acp.h" +#include "nvp6158_video_eq.h" +#define _ENABLE_DET_DEBOUNCE_ +#define AHD_720P30_Detect_Count 1 //1:1time 0:2time check //2020-12-16 +/******************************************************************************* + * extern variable + *******************************************************************************/ +extern unsigned int nvp6158_cnt; +extern int nvp6158_chip_id[4]; +extern unsigned int nvp6158_g_vloss; +extern unsigned int nvp6158_iic_addr[4]; +unsigned char nvp6158_g_ch_video_fmt[16] = {[0 ... 15] = 0xFF}; // save user's video format +extern unsigned char nvp6158_det_mode[16]; +extern unsigned int nvp6158_gCoaxFirmUpdateFlag[16]; + +unsigned char nvp6158_motion_sens_tbl[8] = {0xe0, 0xc8, 0xa0, 0x98, 0x78, 0x68, 0x50, 0x48}; +unsigned char nvp6158_ch_mode_status[16] = {[0 ... 15] = 0xff}; +unsigned char nvp6158_ch_vfmt_status[16] = {[0 ... 15] = 0xff}; +#ifdef _ENABLE_DET_DEBOUNCE_ +NVP6158_INFORMATION_S nvp6158_s_raptor3_vfmts; +#endif + +void nvp6158_dump_reg( unsigned char ch, unsigned char bank ) +{ + int tmp = 0; + int i = 0, j= 0; + + printk("***************IIC ADDR 0x%02x - CH[%02d] *****************\r\n", + nvp6158_iic_addr[ch/4], ch ); + printk("***************Chip[0x%02x] Bank[0x%x]*****************\r\n", + nvp6158_iic_addr[ch/4], bank ); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, bank ); + for (i = 0; i <= 0xF; i++) { + if(i == 0) { + printk("0x%02x ",i); + } else if (i==0xF) { + printk("0x%02x\r\n",i); + } else { + printk("0x%02x ",i); + } + } + for (i = 0; i <= 0xF; i++) { + for(j = 0; j <= 0xF; j++) { + tmp = gpio_i2c_read(nvp6158_iic_addr[ch / 4], (i << 4) | j); + if (j == 0) { + printk("0x%02x-0x%02x ",(i << 4) | j, tmp); + } else if (j == 0xF) { + printk("0x%02x\r\n",tmp); + } else { + printk("0x%02x ",tmp); + } + } + } +} + +unsigned char nvp6158_video_get_adcclk(unsigned char ch) +{ + unsigned char adc_value; + + gpio_i2c_write(nvp6158_iic_addr[ch / 4], 0xFF, 0x01); + adc_value = gpio_i2c_read(nvp6158_iic_addr[ch / 4], 0x84 + ch % 4); + printk(">>>>> DRV[%s:%d] CH:%d, Bank:0x%02x, ADC clock delay:0x%x\n", + __func__, __LINE__, ch, nvp6158_iic_addr[ch/4], adc_value ); + return adc_value; +} + +void nvp6158_video_set_adcclk(unsigned char ch, unsigned char value) +{ + gpio_i2c_write(nvp6158_iic_addr[ch / 4], 0xFF, 0x01); + gpio_i2c_write(nvp6158_iic_addr[ch / 4], 0x84 + ch % 4, value); + printk(">>>>> DRV[%s:%d] CH:%d, Bank:0x%02x, ADC clock delay:0x%x\n", + __func__, __LINE__, ch, nvp6158_iic_addr[ch/4], value ); +} + +static __maybe_unused void NVP6158_set_afe(unsigned char ch, unsigned char onoff) +{ + unsigned char afe_value; + { + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x00); + afe_value = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0x00+ch%4); + if(onoff==1) + _CLE_BIT(afe_value, 0); + else + _SET_BIT(afe_value, 0); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x00+ch%4, afe_value); + msleep(10); + printk("NVP6158_set_afe ch[%d] [%s] done\n", ch, onoff?"ON":"OFF"); + } +} + +static __maybe_unused void nvp6158_datareverse(unsigned char chip, unsigned char port) +{ + + unsigned char tmp; + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x01); + tmp = gpio_i2c_read(nvp6158_iic_addr[chip], 0xCB); + _SET_BIT(tmp, port); + gpio_i2c_write(nvp6158_iic_addr[chip], 0xCB, tmp); + printk("nvp6158[%d] port[%d] data reversed\n", chip, port); +} + +static __maybe_unused void nvp6158_pll_bypass(unsigned char chip, int flag) +{ + unsigned char val_1x81; + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x01); + val_1x81 = gpio_i2c_read(nvp6158_iic_addr[chip], 0x81); + if(flag == 1) { + val_1x81 |= 0x02; + } else { + val_1x81 &= 0xFD; + } + gpio_i2c_write(nvp6158_iic_addr[chip], 0x81, val_1x81); +} + + +static void nvp6158_system_init(unsigned char chip) +{ + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x80, 0x0F); + + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x01); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x80, 0x40); + msleep(30); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x80, 0x61); + msleep(30); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x80, 0x60); + + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x01); + if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || nvp6158_chip_id[chip] == NVP6168C_R0_ID) + gpio_i2c_write(nvp6158_iic_addr[chip], 0xCA, 0x66); //NVP6158C/6158B ONLY HAS 2 PORTS + else + gpio_i2c_write(nvp6158_iic_addr[chip], 0xCA, 0xFF); //NVP6158 HAS 4 PORTS + + printk("nvp6158[C]_system_init\n"); +} + +/******************************************************************************* +* Description : Initialize common value of AHD +* Argurments : dec(slave address) +* Return value : rev ID +* Modify : +* warning : +*******************************************************************************/ +void nvp6158_common_init(unsigned char chip) +{ + int ch; + /* initialize chip */ + nvp6158_system_init(chip); + //VDO_1/2 disabled, VCLK_x disabled + gpio_i2c_write(0x60, 0xFF, 0x01); + gpio_i2c_write(0x60, 0xCA, 0x00); + for(ch = 0; ch < 4; ch++) { + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x00); + //gpio_i2c_write(nvp6158_iic_addr[chip], 0x00+ch, 0x10); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x22+ 4 * ch, 0x0B); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x23+ 4 * ch, 0x41); + + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x05 + ch % 4); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x00, 0xD0); // Clamp speed + gpio_i2c_write(nvp6158_iic_addr[chip], 0xA9, 0x80); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[chip], 0xD5, 0x80); + } +} + +#define MAX_DEBOUNCE_CNT 5 +static int nvp6158_AutoDebouceCheck( unsigned char ch, NVP6158_INFORMATION_S *pInformation ) +{ + int i; + int ret = 0; + //unsigned char oDevNum = 0; + unsigned char oDebncIdx = 0; + unsigned char oVfc = 0; + NC_VIVO_CH_FORMATDEF oFmtB5Def; + video_input_vfc sVFC; + //decoder_dev_ch_info_s sDevChInfo; + + + sVFC.ch = ch % 4; + sVFC.devnum = ch / 4; + nvp6158_video_input_onvideo_check_data(&sVFC); + + oDebncIdx = pInformation->debounceidx[ch]; + pInformation->debounce[ch][oDebncIdx%MAX_DEBOUNCE_CNT] = sVFC.vfc; + + /* For Debug Ch1 Only */ + /* + if( ch == 0) + printk("debunce:0x%02X, debncIdx:%d\n", pInformation->debounce[ch][pInformation->debounceidx[ch]], pInformation->debounceidx[ch]); + */ + pInformation->debounceidx[ch]++; + pInformation->debounceidx[ch] = ( (pInformation->debounceidx[ch] % MAX_DEBOUNCE_CNT) == 0 ) ? + 0 : pInformation->debounceidx[ch]; + + oVfc = pInformation->debounce[ch][pInformation->debounceidx[ch]]; + for( i = 0; i < MAX_DEBOUNCE_CNT; i++ ) { + if( oVfc != pInformation->debounce[ch][i]) { + break; + } + } + if( i == MAX_DEBOUNCE_CNT ) { + oFmtB5Def = NVP6158_NC_VD_AUTO_VFCtoFMTDEF(ch, oVfc); + //if( ( oFmtB5Def != AHD30_5M_20P ) && ( oFmtB5Def != pInformation->prevideofmt[ch] ) ) + if( ( ( oFmtB5Def != AHD30_5M_20P ) && ( oFmtB5Def != CVI_8M_15P ) && + ( oFmtB5Def != CVI_8M_12_5P ) && ( oFmtB5Def != CVI_HD_30P_EX ) && + ( oFmtB5Def != AHD20_1080P_25P ) && ( oFmtB5Def != AHD20_1080P_30P ) && + ( oFmtB5Def != CVI_FHD_25P ) ) && ( oFmtB5Def != pInformation->prevideofmt[ch] ) ) { + printk("\n\n\n>>>>>>WATCH OUT<<<<<prevideofmt[%2x]\n\n\n", + ch, oVfc, oFmtB5Def , pInformation->prevideofmt[ch]); + ret = -1; + } + } + + + return ret; +} + +void nvp6158_channel_reset(unsigned char ch) +{ + unsigned char reg_1x97, bank_save; + bank_save = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0xFF); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x01); + reg_1x97 = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0x97); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x97, reg_1x97&(~(1<<(ch%4)))); + msleep(30); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x97, reg_1x97|0x0F); + msleep(30); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, bank_save); + printk("CH[%d] channel been resetted\n", ch); +} + +void nvp6158_set_colorpattern(void) +{ + int chip; + for(chip = 0; chip < nvp6158_cnt; chip++) { + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x78, 0xaa); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x79, 0xaa); + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x05); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x2c, 0x08); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x6a, 0x90); + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x06); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x2c, 0x08); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x6a, 0x90); + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x07); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x2c, 0x08); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x6a, 0x90); + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x08); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x2c, 0x08); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x6a, 0x90); + } +} + +void nvp6158_set_colorpattern2(void) +{ + int chip; + + printk("[NVP6158_VIDEO] %s(%d) \n", __func__, __LINE__); + for(chip = 0; chip < nvp6158_cnt; chip++) { + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x05); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x2c, 0x08); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x6a, 0x80); + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x06); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x2c, 0x08); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x6a, 0x80); + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x07); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x2c, 0x08); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x6a, 0x80); + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x08); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x2c, 0x08); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x6a, 0x80); + + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x00); + /* gpio_i2c_write(nvp6158_iic_addr[0], 0x78, 0x42);//ch1:Blue *//* ch2:Yellow ch3:Green ch4:Red */ + /* gpio_i2c_write(nvp6158_iic_addr[0], 0x79, 0x76); */ + gpio_i2c_write(nvp6158_iic_addr[chip], 0x78, 0xce); /* ch1:Blue ch2:Yellow ch3:Green ch4:Red */ + gpio_i2c_write(nvp6158_iic_addr[chip], 0x79, 0xba); + } +} + +void nvp6158_set_colorpattern3(void) +{ + int chip; + + printk("[NVP6158_VIDEO] %s(%d) \n", __func__, __LINE__); + for(chip = 0; chip < nvp6158_cnt; chip++) { + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x05); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x2c, 0x08); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x6a, 0x80); + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x06); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x2c, 0x08); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x6a, 0x80); + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x07); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x2c, 0x08); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x6a, 0x80); + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x08); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x2c, 0x08); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x6a, 0x80); + + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x00); + /* gpio_i2c_write(nvp6158_iic_addr[0], 0x78, 0x42); //ch1:Green ch2:Green ch3:Green ch4:Green */ + /* gpio_i2c_write(nvp6158_iic_addr[0], 0x79, 0x76); */ + gpio_i2c_write(nvp6158_iic_addr[chip], 0x78, 0x44); /* ch1:Green ch2:Green ch3:Green ch4:Green */ + gpio_i2c_write(nvp6158_iic_addr[chip], 0x79, 0x44); + } +} + +static __maybe_unused void nvp6158_adc_reset(unsigned char ch) +{ + unsigned char bank_save; + bank_save = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0xFF); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x05+ch%4); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x0B, 0xF0); + msleep(30); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x0B, 0x0F); + msleep(30); + printk("CH[%d] adc been resetted\n", ch); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, bank_save); +} + +static int nvp6158_GetFormatEachCh( unsigned char ch, NVP6158_INFORMATION_S *pInformation ) +{ + video_input_vfc sVFC; + video_input_vfc svin_vfc_bak; + video_input_novid sNoVideo; + NC_VIVO_CH_FORMATDEF oCurVidFmt; + //NC_VIDEO_ONOFF oCurVideoloss; + + /* initialize current video format - pInformation structure is for app */ + pInformation->curvideofmt[ch] = NC_VIVO_CH_FORMATDEF_UNKNOWN; + pInformation->curvideoloss[ch] = VIDEO_LOSS_OFF; + pInformation->vfc[ch] = 0xff; + + /* initialize vfc(B5xF0) and videoloss information(B0xA8) */ + sVFC.ch = ch%4; + sVFC.devnum = ch/4; + sNoVideo.ch = ch%4; + sNoVideo.devnum = ch/4; + + /* get vfc and videoloss */ + if(nvp6158_chip_id[ch/4]==NVP6158C_R0_ID || nvp6158_chip_id[ch/4] == NVP6158_R0_ID) + nvp6158_video_input_vfc_read(&sVFC); + else + nvp6168_video_input_vfc_read(&sVFC); + nvp6158_video_input_novid_read(&sNoVideo); + svin_vfc_bak.ch = ch%4; + svin_vfc_bak.devnum = ch/4; + if(nvp6158_chip_id[ch/4]==NVP6158C_R0_ID || nvp6158_chip_id[ch/4] == NVP6158_R0_ID) + nvp6158_video_input_onvideo_check_data(&svin_vfc_bak); + + /* check vfc&videoloss and run debounce */ + if(((((sVFC.vfc >> 4 ) & 0xF) != 0xF) && ((sVFC.vfc & 0x0F) != 0xF)) && !sNoVideo.novid) {// OnVideo + /* convert vfc to formatDefine for APP and save videoloss information */ + oCurVidFmt = NVP6158_NC_VD_AUTO_VFCtoFMTDEF(ch, sVFC.vfc); + + /* debouce */ + pInformation->curvideofmt[ch] = oCurVidFmt; + pInformation->vfc[ch] = sVFC.vfc; + } else if (((((sVFC.vfc >> 4 ) & 0xF) == 0xF) && ((sVFC.vfc & 0x0F) == 0xF)) && !sNoVideo.novid) { + if(nvp6158_chip_id[ch/4]==NVP6158C_R0_ID || nvp6158_chip_id[ch/4]==NVP6158_R0_ID) { + if(svin_vfc_bak.vfc == 0xFF) { + //nvp6158_channel_reset(ch); + //nvp6158_adc_reset(ch); + } + } + } + + /* check novideo option */ + if( !sNoVideo.novid ) { + pInformation->curvideoloss[ch] = VIDEO_LOSS_ON; + } + + return 0; +} + +/******************************************************************************* +* Description : get videoloss information and get video format. +* Argurments : pvideofmt(video format buffer point) +* Return value : vloss(video loss information) +* Modify : +* warning : +*******************************************************************************/ +#if(AHD_720P30_Detect_Count == 0) +static int CVI_720P30[16]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; +#else +static int CVI_720P30[16]={1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; //2020-12-16 for ahd 720p30 detect slow +#endif +unsigned int nvp6158_video_fmt_det(const unsigned char ch, NVP6158_INFORMATION_S *ps_nvp6158_vfmts) +{ + int ret; + unsigned char oCurVideofmt = 0x00; + unsigned char oPreVideofmt = 0x00; + NC_VIVO_CH_FORMATDEF oFmtDef; + decoder_dev_ch_info_s sDevChInfo; + video_input_vfc sVFC_B13; + video_input_vfc sVFC_B5; + + //for(ch=0; chcurvideofmt[ch]; + oPreVideofmt = ps_nvp6158_vfmts->prevideofmt[ch]; + + if( ps_nvp6158_vfmts->curvideoloss[ch] == VIDEO_LOSS_ON) { + /* on video */ + if( (oCurVideofmt != NC_VIVO_CH_FORMATDEF_UNKNOWN) && (oPreVideofmt == NC_VIVO_CH_FORMATDEF_UNKNOWN) ) { + oFmtDef = NVP6158_NC_VD_AUTO_VFCtoFMTDEF( ch, ps_nvp6158_vfmts->vfc[ch] ); + sDevChInfo.ch = ch%4; + sDevChInfo.devnum = ch/4; + sDevChInfo.fmt_def = oFmtDef; + if(oFmtDef == AHD30_5M_20P ) { + printk("[CH:%d] >> finding format: %x....\n", ch, oFmtDef); + + nvp6158_video_input_ahd_tvi_distinguish(&sDevChInfo); + oFmtDef = sDevChInfo.fmt_def; + + ps_nvp6158_vfmts->curvideofmt[ch] = oFmtDef; + } else if( oFmtDef == CVI_8M_15P || oFmtDef == CVI_8M_12_5P ) { + if( oFmtDef == CVI_8M_15P ) + printk("[CH:%d] >> finding format:CVI 8M 15P....\n", ch); + else + printk("[CH:%d] >> finding format:CVI 8M 12.5P....\n", ch); + + if(-1 == nvp6158_video_input_cvi_tvi_distinguish(&sDevChInfo)) { + printk("error nvp6158_video_input_cvi_tvi_distinguish\n"); + return 1; + } + oFmtDef = sDevChInfo.fmt_def; + + if( oFmtDef == TVI_8M_15P ) { + printk("[CH:%d] >> changing format:TVI 8M 15P....\n", ch); + ps_nvp6158_vfmts->curvideofmt[ch] = TVI_8M_15P; + } else if( oFmtDef == TVI_8M_12_5P ) { + printk("[CH:%d] >> changing format:TVI 8M 12_5P....\n", ch); + ps_nvp6158_vfmts->curvideofmt[ch] = TVI_8M_12_5P; + } + } else if( oFmtDef == AHD20_720P_30P_EX_Btype/* || oFmtDef == CVI_HD_30P_EX*/) { + if(CVI_720P30[ch] == 0) { + oFmtDef = CVI_HD_30P_EX; + ps_nvp6158_vfmts->curvideofmt[ch] = CVI_HD_30P_EX; + CVI_720P30[ch] = 1; + printk("[CH:%d] >> AHD20_720P_30P_EX_Btype changing format:CVI CVI_HD_30P_EX ....\n", ch); //2020-12-16 + } else + printk("[CH:%d] >> AHD20_720P_30P_EX_Btype non changing format:CVI CVI_HD_30P_EX ....\n", ch); //2020-12-16 + } else if(oFmtDef == CVI_FHD_25P ) { + printk("[CH:%d] >> finding format: %x....\n", ch, oFmtDef); + + nvp6158_video_input_cvi_ahd_1080p_distinguish(&sDevChInfo); + oFmtDef = sDevChInfo.fmt_def; + + if( oFmtDef == AHD20_1080P_25P ) { + printk("[CH:%d] >> changing format:AHD 2M 25P....\n", ch); + + ps_nvp6158_vfmts->curvideofmt[ch] = AHD20_1080P_25P; + } + } + + if(ps_nvp6158_vfmts->vfc[ch] == 0x2B) { + sDevChInfo.ch = ch%4; + sDevChInfo.devnum = ch/4; + sDevChInfo.fmt_def = ps_nvp6158_vfmts->vfc[ch]; + nvp6158_video_input_ahd_tvi_distinguish(&sDevChInfo); + oFmtDef = sDevChInfo.fmt_def; + + if( oFmtDef == TVI_4M_15P ) { + if((nvp6158_det_mode[ch] == NVP6158_DET_MODE_AUTO)||(nvp6158_det_mode[ch] == NVP6158_DET_MODE_TVI)) { + printk("[CH:%d] >> changing format:TVI 4M 15P....\n", ch); + + ps_nvp6158_vfmts->curvideofmt[ch] = TVI_4M_15P; + } else + ps_nvp6158_vfmts->curvideofmt[ch] = NC_VIVO_CH_FORMATDEF_UNKNOWN; + } + } + + ps_nvp6158_vfmts->prevideofmt[ch] = ps_nvp6158_vfmts->curvideofmt[ch]; + #ifdef _ENABLE_DET_DEBOUNCE_ + nvp6158_s_raptor3_vfmts.debounce[ch][0] = 0; //clear debounce param status + nvp6158_s_raptor3_vfmts.debounce[ch][1] = 0; + nvp6158_s_raptor3_vfmts.debounce[ch][2] = 0; + nvp6158_s_raptor3_vfmts.debounce[ch][3] = 0; + nvp6158_s_raptor3_vfmts.debounce[ch][4] = 0; + nvp6158_s_raptor3_vfmts.debounceidx[ch] = 0; + nvp6158_s_raptor3_vfmts.prevideofmt[ch] = ps_nvp6158_vfmts->curvideofmt[ch]; //information for debounce. + #endif + //nvp6158_set_chnmode(ch, ps_nvp6158_vfmts->prevideofmt[ch]); + printk(">>>>> CH[%d], Set video format : 0x%02X\n", ch, oCurVideofmt); + } else if( (oCurVideofmt == NC_VIVO_CH_FORMATDEF_UNKNOWN ) && (oPreVideofmt == NC_VIVO_CH_FORMATDEF_UNKNOWN) ) { + int ii = 0; + int retry_cnt = 0; + + /* AHD 1080P, 720P NRT Detection Part */ + /* + 1. Check Bank13 0xF0 + 2. Check NoVideo Register ( Bank0 0xA8 ) + 3. Set Value 0x7f to Bank5 0x82 + 4. Read Bank13 0xf0 + 5. Read Bank5 0xf0 + 6. Check H Count + 7. AHD 1080P or 720P Set + 8. Set value 0x00 to bank5 0x82 + */ + + sVFC_B13.ch = ch%4; + sVFC_B13.devnum = ch / 4; + sVFC_B5.ch = ch%4; + sVFC_B5.devnum = ch / 4; + + sDevChInfo.ch = ch%4; + sDevChInfo.devnum = ch / 4; + + //nvp6158_video_input_manual_agc_stable_endi(&sDevChInfo, 1); + + for(ii = 0; ii < 20; ii++ ) { + nvp6158_video_input_vfc_read( &sVFC_B13 ); + nvp6158_video_input_onvideo_check_data( &sVFC_B5 ); + + if( ((sVFC_B5.vfc >> 4) & 0xf ) < 0x2) { + break; + } + + if( sVFC_B13.vfc == 0x2b && sVFC_B5.vfc == 0x3f) { + printk("[DRV] CH[%d] Bank13 0xF0 [%02x], Bank5 0xF0[%02x]\n", ch, sVFC_B13.vfc, sVFC_B5.vfc ); + printk("[DRV] CH[%d] AFHD 15P or 12.5P [%d]\n" , ch, retry_cnt ); + break; + } else if(sVFC_B5.vfc != 0x2f) { + printk("[DRV] CH[%d] Bank13 0xF0 [%02x], Bank5 0xF0[%02x]\n", ch, sVFC_B13.vfc, sVFC_B5.vfc ); + printk("[DRV] CH[%d] Unknown Status [%d] \n", ch, retry_cnt ); + } + + if(retry_cnt >= 20 ) { + printk("CH[%d] Unknown Status Disitinguish Finished ...\n", ch ); + break; + } + + retry_cnt++; + msleep( 33 ); + } + + if( ((sVFC_B5.vfc >> 4) & 0xf ) < 0x2) + return 0; + + nvp6158_video_input_ahd_nrt_distinguish( &sDevChInfo ); + + if( sDevChInfo.fmt_def == NC_VIVO_CH_FORMATDEF_UNKNOWN ) { + printk("[DRV] CH[%d] unknown format \n", ch); + return 0; + } + + oFmtDef = sDevChInfo.fmt_def; + /* set video format(DEC) */ + ps_nvp6158_vfmts->curvideofmt[ ch ] = oFmtDef; + ps_nvp6158_vfmts->prevideofmt[ch] = ps_nvp6158_vfmts->curvideofmt[ch]; + #ifdef _ENABLE_DET_DEBOUNCE_ + nvp6158_s_raptor3_vfmts.debounce[ch][0] = 0; //clear debounce param status + nvp6158_s_raptor3_vfmts.debounce[ch][1] = 0; + nvp6158_s_raptor3_vfmts.debounce[ch][2] = 0; + nvp6158_s_raptor3_vfmts.debounce[ch][3] = 0; + nvp6158_s_raptor3_vfmts.debounce[ch][4] = 0; + nvp6158_s_raptor3_vfmts.debounceidx[ch] = 0; + nvp6158_s_raptor3_vfmts.prevideofmt[ch] = ps_nvp6158_vfmts->curvideofmt[ch]; //information for debounce. + #endif + + /* save onvideo to prevideofmt */ + //nvp6158_s_raptor3_vfmts.prevideofmt[ch] = nvp6158_s_raptor3_vfmts.curvideofmt[ch]; + + //nvp6158_video_input_manual_agc_stable_endi(&sDevChInfo, 0); + printk(">>>>> CH[%d], Auto, Set video format : 0x%02X\n", ch, oCurVideofmt ); + + } + #ifdef _ENABLE_DET_DEBOUNCE_ + else { + ret = nvp6158_AutoDebouceCheck( ch, &nvp6158_s_raptor3_vfmts ); //note!!!! + if( ( ret == -1 ) && ( nvp6158_gCoaxFirmUpdateFlag[ch] == 0 ) ) { + sDevChInfo.ch = ch % 4; + sDevChInfo.devnum = ch/4; + /* hide decoder */ + nvp6158_hide_ch(ch); + + /* decoder afe power down */ + nvp6158_video_input_vafe_control(&sDevChInfo, 0); + /* set no video- first(i:channel, raptor3_vfmts:information */ + //nvp6158_set_chnmode(ch, NC_VIVO_CH_FORMATDEF_UNKNOWN); + + nvp6158_video_input_vafe_control(&sDevChInfo, 1); + + /* for forced agc stable */ + //nvp6158_video_input_manual_agc_stable_endi(&sDevChInfo, 0); + //msleep(50); + + /* save onvideo to prevideofmt */ + ps_nvp6158_vfmts->prevideofmt[ch] = NC_VIVO_CH_FORMATDEF_UNKNOWN; + nvp6158_s_raptor3_vfmts.prevideofmt[ch] = NC_VIVO_CH_FORMATDEF_UNKNOWN; + printk( ">>>>> CH[%d], Reset, Set No video : 0x%02X\n", ch, oCurVideofmt ); + } + } + #endif + } + else { + /* no video */ + if( oPreVideofmt != NC_VIVO_CH_FORMATDEF_UNKNOWN ) { + //nvp6158_set_chnmode(ch, NC_VIVO_CH_FORMATDEF_UNKNOWN); + ps_nvp6158_vfmts->prevideofmt[ch] = NC_VIVO_CH_FORMATDEF_UNKNOWN; + + #if(AHD_720P30_Detect_Count == 0) //wait 2s to redetect + CVI_720P30[ch] = 0; + #else + CVI_720P30[ch] = 1; //2020-12-16 + #endif + + #ifdef _ENABLE_DET_DEBOUNCE_ + nvp6158_s_raptor3_vfmts.prevideofmt[ch] = NC_VIVO_CH_FORMATDEF_UNKNOWN; + #endif + printk( ">>>>> CH[%d], Set No video : 0x%02X\n", ch, oCurVideofmt ); + } + + } + } + + return ps_nvp6158_vfmts->prevideofmt[ch]; +} + +unsigned int nvp6168_video_fmt_det(const unsigned char ch, NVP6158_INFORMATION_S *ps_nvp6158_vfmts) +{ + //int ret; + unsigned char oCurVideofmt = 0x00; + unsigned char oPreVideofmt = 0x00; + NC_VIVO_CH_FORMATDEF oFmtDef; + decoder_dev_ch_info_s sDevChInfo; + //video_input_vfc sVFC_B13; + //video_input_vfc sVFC_B5; + + //for(ch=0; chcurvideofmt[ch]; + oPreVideofmt = ps_nvp6158_vfmts->prevideofmt[ch]; + + if( ps_nvp6158_vfmts->curvideoloss[ch] == VIDEO_LOSS_ON) { + /* on video */ + if( (oCurVideofmt != NC_VIVO_CH_FORMATDEF_UNKNOWN) && + (oPreVideofmt == NC_VIVO_CH_FORMATDEF_UNKNOWN) ) { + oFmtDef = NVP6158_NC_VD_AUTO_VFCtoFMTDEF( ch, ps_nvp6158_vfmts->vfc[ch] ); + sDevChInfo.ch = ch%4; + sDevChInfo.devnum = ch/4; + sDevChInfo.fmt_def = oFmtDef; + + if(oFmtDef == TVI_5M_20P) {//needs 2nd identify + nvp6168_video_input_cvi_tvi_5M20p_distinguish(&sDevChInfo); + oFmtDef = sDevChInfo.fmt_def; + + ps_nvp6158_vfmts->curvideofmt[ch] = oFmtDef; + } + + ps_nvp6158_vfmts->prevideofmt[ch] = ps_nvp6158_vfmts->curvideofmt[ch]; + + //nvp6158_set_chnmode(ch, ps_nvp6158_vfmts->prevideofmt[ch]); + printk(">>>>> CH[%d], Set video format : 0x%02X\n", ch, oCurVideofmt); + } + + } else { + /* no video */ + if( oPreVideofmt != NC_VIVO_CH_FORMATDEF_UNKNOWN ) { + //nvp6158_set_chnmode(ch, NC_VIVO_CH_FORMATDEF_UNKNOWN); + ps_nvp6158_vfmts->prevideofmt[ch] = NC_VIVO_CH_FORMATDEF_UNKNOWN; + + printk( ">>>>> CH[%d], Set No video : 0x%02X\n", ch, oCurVideofmt ); + } + + } + } + + return ps_nvp6158_vfmts->prevideofmt[ch]; +} + + +unsigned int nvp6158_getvideoloss(void) +{ + unsigned int vloss=0, i; + unsigned char vlossperchip[4]; + + for(i = 0; i < nvp6158_cnt; i++) { + gpio_i2c_write(nvp6158_iic_addr[i], 0xFF, 0x00); + vlossperchip[i] = (gpio_i2c_read(nvp6158_iic_addr[i], 0xA8)&0x0F); + vloss |= (vlossperchip[i]<<(4*i)); + } + + return vloss; +} +static unsigned char nvp6158_vloss_pre = 0xFF; +static unsigned char nvp6158_ch_first_plug_status[8]={1, 1, 1, 1, 1, 1, 1, 1}; +static __maybe_unused unsigned char nvp6158_is_first_plugin(unsigned char ch) +{ + unsigned int vloss=0; + + vloss = nvp6158_getvideoloss(); + //for(ch=0;ch<(nvp6158_cnt*4);ch++) + { + if( ( ((vloss>>ch)&0x01)==0 ) && ( ((nvp6158_vloss_pre>>ch)&0x01)==1 )) //video first input + { + nvp6158_ch_first_plug_status[ch] = 0; + nvp6158_vloss_pre &= ~(1<>(ch%4))&0x01); + + return ret; +} + +/*0:fsc unlocked; 1:fsc locked*/ +int nvp6158_GetFSCLockStatus(unsigned char ch) +{ + int fsc_lock, ret; + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x00); + fsc_lock = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0xE8+(ch%4)); + ret = ((fsc_lock>>1)&0x01); + + return ret; +} + +void nvp6158_ResetFSCLock(unsigned char ch) +{ + unsigned char acc_ref=0; + unsigned char check_cnt = 4; + do { + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x05+(ch%4)); + acc_ref = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0x27); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x23, 0x80); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x27, 0x10); + msleep(35); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x23, 0x00); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x27, acc_ref); + msleep(300); + } + while((nvp6158_GetFSCLockStatus(ch)==0) && ((check_cnt--)>0)); + + printk("%s, %d\n", __FUNCTION__, __LINE__); +} + +void nvp6158_chn_killcolor(unsigned char ch, unsigned char onoff) +{ + unsigned char colorkill; + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x00); + colorkill = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0x22+(ch%4)*4); + if(onoff==1) + _SET_BIT(colorkill, 4); + else + _CLE_BIT(colorkill, 4); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x22+(ch%4)*4, colorkill); + printk("%s, %d %x %x\n", __FUNCTION__, __LINE__, onoff, colorkill); +} + +void nvp6158_hide_ch(unsigned char ch) +{ + unsigned char reg_0x7a; + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x00); + reg_0x7a = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0x7A+((ch%4)/2)); + reg_0x7a &= (ch%2==0?0xF0:0x0F); + reg_0x7a |= (ch%2==0?0x0F:0xF0); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x7A+((ch%4)/2),reg_0x7a); + //printk("%s, %d\n", __FUNCTION__, __LINE__); +} + +void nvp6158_show_ch(unsigned char ch) +{ + unsigned char reg_0x7a; + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x00); + reg_0x7a = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0x7A+((ch%4)/2)); + reg_0x7a &= (ch%2==0?0xF0:0x0F); + reg_0x7a |= (ch%2==0?0x01:0x10); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x7A+((ch%4)/2),reg_0x7a); + //printk("%s, %d\n", __FUNCTION__, __LINE__); +} + + +/* +support AHD 3M/4M real-time camera switch between NTSC and PAL +*/ +int nvp6158_acp_SetVFmt(unsigned char ch, const unsigned char vfmt) +{ + /*nvp6158_acp_rw_data_extention acpdata; + + if((vfmt!=NTSC) && (vfmt!=PAL)) + { + printk("%s vfmt[%d] out of range!!!\n", __FUNCTION__, vfmt); + return -1; + } + if(nvp6158_ch_vfmt_status[ch] == vfmt) + { + printk("%s vfmt is %d now!!!\n", __FUNCTION__, vfmt); + return -2; + } + + acpdata.ch = ch; + acpdata.data[0] = 0x60; // register write + acpdata.data[1] = 0x82; // Output mode command + acpdata.data[2] = 0x19; // Output Format Change mode + acpdata.data[3] = 0x00; // Output Mode value + acpdata.data[4] = 0x00; + acpdata.data[5] = 0x00; + acpdata.data[6] = 0x00; + acpdata.data[7] = 0x00; + if( (nvp6158_ch_mode_status[ch] == NVP6158_VI_3M || + nvp6158_ch_mode_status[ch] == NVP6158_VI_3M_NRT || + nvp6158_ch_mode_status[ch] == NVP6158_VI_4M_NRT || + nvp6158_ch_mode_status[ch] == NVP6158_VI_4M ) && + nvp6158_GetAgcLockStatus(ch)==1) + { + acpdata.data[3] = vfmt^1; //CAUTION!!! IN CAMERA SIDE 0:PAL, 1:NTSC. + acp_isp_write_extention(ch, &acpdata); + msleep(100); + printk("%s change ch[%d] to %s!!!\n", __FUNCTION__, ch, vfmt==NTSC?"NTSC":"PAL"); + } +*/ + return 0; +} + +void nvp6158_video_set_contrast(unsigned char ch, unsigned int value, unsigned int v_format) +{ + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[ch/4], (0x10+(ch%4)), value); +} + +void nvp6158_video_set_brightness(unsigned char ch, unsigned int value, unsigned int v_format) +{ + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[ch/4], (0x0C+(ch%4)), value); +} + +void nvp6158_video_set_saturation(unsigned char ch, unsigned int value, unsigned int v_format) +{ + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[ch/4], (0x3C+(ch%4)),value); +} + +void nvp6158_video_set_hue(unsigned char ch, unsigned int value, unsigned int v_format) +{ + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[ch/4], (0x40+(ch%4)), value); +} + +void nvp6158_video_set_sharpness(unsigned char ch, unsigned int value) +{ + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[ch/4], (0x14+(ch%4)), (0x90+value-100)); +} + +//u-gain value B0 0x44~0x47 +void nvp6158_video_set_ugain(unsigned char ch, unsigned int value) +{ + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[ch/4], (0x44+(ch%4)), value); +} + +//v-gain value B0 0x48~0x4b +void nvp6158_video_set_vgain(unsigned char ch, unsigned int value) +{ + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[ch/4], (0x48+(ch%4)), value); +} + +void nvp6158_video_input_new_format_set(const unsigned char ch, const unsigned char chnmode) +{ + unsigned char val_9x44; + + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x11); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x00 + ( (ch%4) * 0x20 ), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF,0x09); + val_9x44 = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0x44); + val_9x44 &= ~(1 << (ch%4)); + + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x44, val_9x44); + + /* CVI HD 30P PN Value Set */ + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x50 + ( (ch%4) * 4 ) , 0x30); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x51 + ( (ch%4) * 4 ) , 0x6F); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x52 + ( (ch%4) * 4 ) , 0x67); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x53 + ( (ch%4) * 4 ) , 0x48); + +} + +static void nvp6158_set_chn_ycmerge(const unsigned char ch, unsigned char onoff) +{ + unsigned char YCmerge, val5x69; + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x01); + YCmerge = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0xed); + _CLE_BIT(YCmerge, (ch%4)); + if(onoff == 1) + _SET_BIT(YCmerge, (ch%4)); + + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xed, YCmerge); + + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x05+ch%4); + val5x69 = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0x69); + _CLE_BIT(val5x69, 4); + if(onoff == 1) + _SET_BIT(val5x69, 4); + + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x69, val5x69); +} + +/******************************************************************************* +* Description : set this value +* Argurments : ch(channel) +* Return value : void +* Modify : +* warning : You don't have to change these values. +*******************************************************************************/ +void nvp6158_set_chn_commonvalue(const unsigned char ch, const unsigned char chnmode) +{ + decoder_dev_ch_info_s decoder_info; + unsigned char val_0x54; + unsigned char vfmt = chnmode%2; + + if((chnmode <= AHD20_SD_H960_2EX_Btype_PAL) && (chnmode>=AHD20_SD_H960_NT)) { + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x00); + val_0x54 = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0x54); + _CLE_BIT(val_0x54, (ch%4+4)); + if(vfmt != PAL) + _SET_BIT(val_0x54, (ch%4+4)); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x54, val_0x54); + + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x05+ch%4); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x69,0x01); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xB8,0xB8); + } else { + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x00); + val_0x54 = gpio_i2c_read(nvp6158_iic_addr[ch/4], 0x54); + _CLE_BIT(val_0x54, (ch%4+4)); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x54, val_0x54); + + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xFF, 0x05+ch%4); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x69, 0x00); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xB8,0x39); + } + + decoder_info.ch = ch%4; + decoder_info.devnum = ch/4; + decoder_info.fmt_def = chnmode; + if(__nvp6158_IsOver3MRTVideoFormat( &decoder_info )) + nvp6158_set_chn_ycmerge(ch, 1); + else + nvp6158_set_chn_ycmerge(ch, 0); + if(nvp6158_chip_id[decoder_info.devnum]==NVP6158C_R0_ID || nvp6158_chip_id[decoder_info.devnum]==NVP6158_R0_ID) + nvp6158_video_input_onvideo_set( &decoder_info ); + else + nvp6168_video_input_onvideo_set( &decoder_info ); +} + +int nvp6158_set_chnmode(const unsigned char ch, const unsigned char chnmode) +{ + //unsigned char tmp; + video_equalizer_info_s vin_eq_set; + video_input_novid auto_novid; + nvp6158_coax_str s_coax_str; + + if(ch >= (nvp6158_cnt*4)) { + printk("func[nvp6158_set_chnmode] Channel %d is out of range!!!\n", ch); + return -1; + } + + /* set video format each format */ + if(chnmode < NC_VIVO_CH_FORMATDEF_MAX) { + if(NC_VIVO_CH_FORMATDEF_UNKNOWN != chnmode) { + nvp6158_set_chn_commonvalue( ch, chnmode ); + + nvp6158_video_input_new_format_set(ch, chnmode); + + s_coax_str.ch = ch; + s_coax_str.fmt_def = chnmode; + nvp6158_coax_tx_init(&s_coax_str); + nvp6158_coax_tx_16bit_init(&s_coax_str); //for ahd 720P and CVI 4M + nvp6158_coax_rx_init(&s_coax_str); + + vin_eq_set.Ch = ch%4; + vin_eq_set.devnum = ch/4; + vin_eq_set.distance = 0; + vin_eq_set.FmtDef = chnmode; + nvp6158_set_equalizer(&vin_eq_set); + + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xff,0x09); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x40+ch%4,0x61); + msleep(35); + if(AHD20_SD_H960_2EX_Btype_PAL >= chnmode) + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x40+ch%4,0x60); //for comet setting + else + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x40+ch%4,0x00); + + nvp6158_show_ch(ch); + } else { + nvp6158_hide_ch(ch); + auto_novid.ch = ch%4; + auto_novid.devnum = ch/4; + nvp6158_video_input_no_video_set(&auto_novid); + nvp6158_set_chn_ycmerge(ch, 0); + } + nvp6158_ch_mode_status[ch] = chnmode; + //nvp6158_ch_vfmt_status[ch] = chnmode%2; + + printk(">>>>%s CH[%d] been setted to %2x mode\n", __func__, ch, chnmode); + } + + return 0; +} + +int nvp6168_set_chnmode(const unsigned char ch, const unsigned char chnmode) +{ + //unsigned char tmp; + video_equalizer_info_s vin_eq_set; + video_input_novid auto_novid; + nvp6158_coax_str s_coax_str; + + if(ch >= (nvp6158_cnt*4)) { + printk("func[nvp6168_set_chnmode] Channel %d is out of range!!!\n", ch); + return -1; + } + + /* set video format each format */ + if(chnmode < NC_VIVO_CH_FORMATDEF_MAX) { + if(NC_VIVO_CH_FORMATDEF_UNKNOWN != chnmode) { + nvp6158_set_chn_commonvalue( ch, chnmode ); + + //nvp6158_video_input_new_format_set(ch, chnmode); + + s_coax_str.ch = ch; + s_coax_str.fmt_def = chnmode; + nvp6158_coax_tx_init(&s_coax_str); + nvp6158_coax_tx_16bit_init(&s_coax_str); //for ahd 720P and CVI 4M + nvp6158_coax_rx_init(&s_coax_str); + + vin_eq_set.Ch = ch%4; + vin_eq_set.devnum = ch/4; + vin_eq_set.distance = 0; + vin_eq_set.FmtDef = chnmode; + nvp6168_set_equalizer(&vin_eq_set); + + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0xff,0x09); + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x40+ch%4,0x61); + msleep(35); + if(AHD20_SD_H960_2EX_Btype_PAL >= chnmode) + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x40+ch%4,0x60); //for comet setting + else + gpio_i2c_write(nvp6158_iic_addr[ch/4], 0x40+ch%4,0x00); + + nvp6158_show_ch(ch); + } else { + nvp6158_hide_ch(ch); + auto_novid.ch = ch%4; + auto_novid.devnum = ch/4; + nvp6168_video_input_no_video_set(&auto_novid); + nvp6158_set_chn_ycmerge(ch, 0); + } + nvp6158_ch_mode_status[ch] = chnmode; + //nvp6158_ch_vfmt_status[ch] = chnmode%2; + + printk(">>>>%s CH[%d] been setted to %2x mode\n", __func__, ch, chnmode); + } + + return 0; +} + + +/* +chip:chip select[0,1,2,3]; +portsel: port select->6158c[1,2],6158[0,1,2,3]; +portmode: port mode select[1mux,2mux,4mux] +chid: channel id, 1mux[0,1,2,3], 2mux[0,1], 4mux[0] +*/ +/******************************************************************************* +* Description : select port +* Argurments : chip(chip select[0,1,2,3]), +* portsel(port select->6158c[1,2],6158[0,1,2,3];) +* portmode(port mode select[1mux,2mux,4mux]), +* chid(channel id, 1mux[0,1,2,3], 2mux[0,1], 4mux[0]) +* Return value : 0 +* Modify : +* warning : +*******************************************************************************/ +int nvp6158_set_portmode(const unsigned char chip, const unsigned char portsel, + const unsigned char portmode, const unsigned char chid) +{ + unsigned char chipaddr = nvp6158_iic_addr[chip]; + unsigned char tmp=0, tmp1=0, reg1=0, reg2=0; + + if((portsel!=1) && (portsel!=2) && (nvp6158_chip_id[chip]==NVP6158C_R0_ID || + nvp6158_chip_id[chip] == NVP6168C_R0_ID)) { + printk("nvp6158C_set_portmode portsel[%d] error!!!\n", portsel); + //return -1; + } + + switch(portmode) { + case NVP6158_OUTMODE_1MUX_SD: + /*Output 720H/960H Single Channel data, Data Rate 37.125MHz,Pclk 37.125MHz, Single Edge.*/ + gpio_i2c_write(chipaddr, 0xFF, 0x00); + gpio_i2c_write(chipaddr, 0x56, 0x10); + gpio_i2c_write(chipaddr, 0xFF, 0x01); + gpio_i2c_write(chipaddr, 0xC0+portsel*2, (chid<<4)|chid); + gpio_i2c_write(chipaddr, 0xC1+portsel*2, (chid<<4)|chid); + tmp = gpio_i2c_read(chipaddr, 0xC8+(portsel/2)) & (portsel%2?0x0F:0xF0); + gpio_i2c_write(chipaddr, 0xC8+(portsel/2), tmp); + gpio_i2c_write(chipaddr, 0xCC+portsel, 0x86); + break; + case NVP6158_OUTMODE_1MUX_HD: + /*Output 720P/1280H/1440H Single Channel data,Data Rate 74.25MHz,Pclk 74.25MHz, Single Edge.*/ + gpio_i2c_write(chipaddr, 0xFF, 0x00); + gpio_i2c_write(chipaddr, 0x56, 0x10); + gpio_i2c_write(chipaddr, 0xFF, 0x01); + gpio_i2c_write(chipaddr, 0xC0+portsel*2, (chid<<4)|chid); + gpio_i2c_write(chipaddr, 0xC1+portsel*2, (chid<<4)|chid); + tmp = gpio_i2c_read(chipaddr, 0xC8+(portsel/2)) & (portsel%2?0x0F:0xF0); + gpio_i2c_write(chipaddr, 0xC8+(portsel/2), tmp); + gpio_i2c_write(chipaddr, 0xCC+portsel, 0x16); + break; + case NVP6158_OUTMODE_1MUX_FHD: + /*Output 720P@5060 /1080P Single Channel data,Data Rate 148.5MHz,Pclk 148.5MHz, Single Edge.*/ + gpio_i2c_write(chipaddr, 0xFF, 0x00); + gpio_i2c_write(chipaddr, 0x56, 0x10); + gpio_i2c_write(chipaddr, 0xFF, 0x01); + gpio_i2c_write(chipaddr, 0xC0+portsel*2, (chid<<4)|chid); + gpio_i2c_write(chipaddr, 0xC1+portsel*2, (chid<<4)|chid); + tmp = gpio_i2c_read(chipaddr, 0xC8+(portsel/2)) & (portsel%2?0x0F:0xF0); + gpio_i2c_write(chipaddr, 0xC8+(portsel/2), tmp); + gpio_i2c_write(chipaddr, 0xCC+portsel, 0x56); //0x40~0x5f adjust delay + break; + case NVP6158_OUTMODE_1MUX_FHD_DDR: + /*Output 720P@5060 /1080P Single Channel data,Data Rate 148.5MHz,Pclk 148.5MHz, Single Edge.*/ + gpio_i2c_write(chipaddr, 0xFF, 0x00); + gpio_i2c_write(chipaddr, 0x56, 0x10); + gpio_i2c_write(chipaddr, 0xFF, 0x01); + gpio_i2c_write(chipaddr, 0xC0+portsel*2, (chid<<4)|chid); + gpio_i2c_write(chipaddr, 0xC1+portsel*2, (chid<<4)|chid); + tmp = gpio_i2c_read(chipaddr, 0xC8+(portsel/2)) & (portsel%2?0x0F:0xF0); + gpio_i2c_write(chipaddr, 0xC8+(portsel/2), tmp); + gpio_i2c_write(chipaddr, 0xCC+portsel, 0x06); //0x00~0x3f adjust delay + break; + case NVP6158_OUTMODE_2MUX_SD: + /*Output 720H/960H 2 Channel data,Data Rate 74.25MHz,Pclk 74.25MHz, Single Edge.*/ + gpio_i2c_write(chipaddr, 0xFF, 0x00); + gpio_i2c_write(chipaddr, 0x56, 0x10); + gpio_i2c_write(chipaddr, 0xFF, 0x01); + gpio_i2c_write(chipaddr, 0xC0+portsel*2, chid==0?0x10:0x32); + gpio_i2c_write(chipaddr, 0xC1+portsel*2, chid==0?0x10:0x32); + tmp = gpio_i2c_read(chipaddr, 0xC8+(portsel/2)) & (portsel%2?0x0F:0xF0); + tmp |= (portsel%2?0x20:0x02); + gpio_i2c_write(chipaddr, 0xC8+(portsel/2), tmp); + gpio_i2c_write(chipaddr, 0xCC+portsel, 0x16); + break; + case NVP6158_OUTMODE_2MUX_HD: + /*Output HD 2 Channel data,Data Rate 148.5MHz,Pclk 148.5MHz, Single Edge.*/ + gpio_i2c_write(chipaddr, 0xFF, 0x00); + gpio_i2c_write(chipaddr, 0x56, 0x10); + gpio_i2c_write(chipaddr, 0xFF, 0x01); + gpio_i2c_write(chipaddr, 0xC0+portsel*2, chid==0?0x10:0x32); + gpio_i2c_write(chipaddr, 0xC1+portsel*2, chid==0?0x10:0x32); + tmp = gpio_i2c_read(chipaddr, 0xC8+(portsel/2)) & (portsel%2?0x0F:0xF0); + tmp |= (portsel%2?0x20:0x02); + gpio_i2c_write(chipaddr, 0xC8+(portsel/2), tmp); + gpio_i2c_write(chipaddr, 0xCC+portsel, 0x58); + break; + case NVP6158_OUTMODE_4MUX_SD: + /*Output 720H/960H 4 Channel data,Data Rate 148.5MHz,Pclk 148.5MHz, Single Edge.*/ + gpio_i2c_write(chipaddr, 0xFF, 0x00); + gpio_i2c_write(chipaddr, 0x56, 0x32); + gpio_i2c_write(chipaddr, 0xFF, 0x01); + gpio_i2c_write(chipaddr, 0xC0+portsel*2, 0x10); + gpio_i2c_write(chipaddr, 0xC1+portsel*2, 0x32); + tmp = gpio_i2c_read(chipaddr, 0xC8+(portsel/2)) & (portsel%2?0x0F:0xF0); + tmp |= (portsel%2?0x80:0x08); + gpio_i2c_write(chipaddr, 0xC8+(portsel/2), tmp); + gpio_i2c_write(chipaddr, 0xCC+portsel, 0x58); + break; + case NVP6158_OUTMODE_4MUX_HD: + /*Output 720P 4 Channel data,Data Rate 297MHz,Pclk 297MHz, Single Edge.*/ + gpio_i2c_write(chipaddr, 0xFF, 0x00); + gpio_i2c_write(chipaddr, 0x56, 0x32); + gpio_i2c_write(chipaddr, 0xFF, 0x01); + gpio_i2c_write(chipaddr, 0xC0+portsel*2, 0x98); + gpio_i2c_write(chipaddr, 0xC1+portsel*2, 0xba); + tmp = gpio_i2c_read(chipaddr, 0xC8+(portsel/2)) & (portsel%2?0x0F:0xF0); + tmp |= (portsel%2?0x80:0x08); + gpio_i2c_write(chipaddr, 0xC8+(portsel/2), tmp); + gpio_i2c_write(chipaddr, 0xCC+portsel, 0x58); + //gpio_i2c_write(chipaddr, 0xCC+portsel, 0x66); //single up + break; + case NVP6158_OUTMODE_2MUX_FHD: + /*5M_20P,5M_12P,4M_RT,4M_15P,3M_RT/NRT,FHD,3840H,HDEX 2mux mix, ,Data Rate 297MHz,Pclk 297MHz, Dual Edge. + SOC VI Port abandon some data, Realize 3840H->960H, HDEX->720P.*/ + gpio_i2c_write(chipaddr, 0xFF, 0x00); + gpio_i2c_write(chipaddr, 0x56, 0x10); + #if 1 + //CHANNEL 1 JUDGE + tmp = gpio_i2c_read(chipaddr, 0x81)&0x0F; + tmp1 = gpio_i2c_read(chipaddr, 0x85)&0x0F; + if(((tmp == 0x02) || (tmp == 0x03)) && (tmp1 == 0x04)) + reg1 |= 0x08; //3M_RT, THEN OUTPUT 3M_CIF DATA + else if(((tmp == 0x0E) || (tmp == 0x0F)) && (tmp1 == 0x00)) + reg1 |= 0x08; //4M, THEN OUTPUT 4M_CIF DATA + else if((tmp == 0x01) && (tmp1 == 0x05)) //ahd 5m20p + reg1 |= 0x08; + else if(((tmp == 0x0E) || (tmp == 0x0F)) && ((tmp1 == 0x02) || (tmp1 == 0x03))) //tvi/cvi 4m rt + reg1 |= 0x08; + else if(((tmp == 0x01) || (tmp == 0x02)) && ((tmp1 == 0x08) || (tmp1 == 0x09) || (tmp1 == 0x0a))) //8M + reg1 |= 0x08; + else + reg1 &= 0xF0; + //CHANNEL 2 JUDGE + tmp = gpio_i2c_read(chipaddr, 0x82)&0x0F; + tmp1 = gpio_i2c_read(chipaddr, 0x86)&0x0F; + if(((tmp == 0x02) || (tmp == 0x03)) && (tmp1 == 0x04)) + reg1 |= 0x80; + else if(((tmp == 0x0E) || (tmp == 0x0F)) && (tmp1 == 0x00)) + reg1 |= 0x80; + else if((tmp == 0x01) && (tmp1 == 0x05)) + reg1 |= 0x80; + else if(((tmp == 0x0E) || (tmp == 0x0F)) && ((tmp1 == 0x02) || (tmp1 == 0x03))) //tvi/cvi 4m rt + reg1 |= 0x80; + else if(((tmp == 0x01) || (tmp == 0x02)) && ((tmp1 == 0x08) || (tmp1 == 0x09) ||(tmp1 == 0x0a))) //8M + reg1 |= 0x80; + else + reg1 &= 0x0F; + //CHANNEL 3 JUDGE + tmp = gpio_i2c_read(chipaddr, 0x83)&0x0F; + tmp1 = gpio_i2c_read(chipaddr, 0x87)&0x0F; + if(((tmp == 0x02) || (tmp == 0x03)) && (tmp1 == 0x04)) + reg2 |= 0x08; + else if(((tmp == 0x0E) || (tmp == 0x0F)) && (tmp1 == 0x00)) + reg2 |= 0x08; + else if((tmp == 0x01) && (tmp1 == 0x05)) + reg2 |= 0x08; + else if(((tmp == 0x0E) || (tmp == 0x0F)) && ((tmp1 == 0x02) || (tmp1 == 0x03))) //tvi/cvi 4m rt + reg2 |= 0x08; + else if(((tmp == 0x01) || (tmp == 0x02)) && ((tmp1 == 0x08) || (tmp1 == 0x09) ||(tmp1 == 0x0a))) //8M + reg2 |= 0x08; + else + reg2 &= 0xF0; + //CHANNEL 4 JUDGE + tmp = gpio_i2c_read(chipaddr, 0x84)&0x0F; + tmp1 = gpio_i2c_read(chipaddr, 0x88)&0x0F; + if(((tmp == 0x02) || (tmp == 0x03)) && (tmp1 == 0x04)) + reg2 |= 0x80; + else if(((tmp == 0x0E) || (tmp == 0x0F)) && (tmp1 == 0x00)) + reg2 |= 0x80; + else if((tmp == 0x01) && (tmp1 == 0x05)) + reg2 |= 0x80; + else if(((tmp == 0x0E) || (tmp == 0x0F)) && ((tmp1 == 0x02) || (tmp1 == 0x03))) //tvi/cvi 4m rt + reg2 |= 0x80; + else if(((tmp == 0x01) || (tmp == 0x02)) && ((tmp1 == 0x08) || (tmp1 == 0x09) ||(tmp1 == 0x0a))) //ahd 8M + reg2 |= 0x80; + else + reg2 &= 0x0F; + gpio_i2c_write(chipaddr, 0xFF, 0x01); + gpio_i2c_write(chipaddr, 0xC0+portsel*2, chid==0?(0x10|reg1):(0x32|reg2)); + gpio_i2c_write(chipaddr, 0xC1+portsel*2, chid==0?(0x10|reg1):(0x32|reg2)); + #else + gpio_i2c_write(chipaddr, 0xFF, 0x01); + gpio_i2c_write(chipaddr, 0xC0+portsel*2, chid==0?0x10:0x32); + gpio_i2c_write(chipaddr, 0xC1+portsel*2, chid==0?0x10:0x32); + #endif + tmp = gpio_i2c_read(chipaddr, 0xC8+(portsel/2)) & (portsel%2?0x0F:0xF0); + tmp |= (portsel%2?0x20:0x02); + gpio_i2c_write(chipaddr, 0xC8+(portsel/2), tmp); + gpio_i2c_write(chipaddr, 0xCC+portsel, 0x56); + //gpio_i2c_write(chipaddr, 0xCC+portsel, 0x66); //single up + break; + case NVP6158_OUTMODE_4MUX_MIX: + /*HD,1920H,FHD-X 4mux mix,Data Rate 297MHz,Pclk 297MHz, Dual Edge. + SOC VI Port Abandon some data��realize 1920H->960H */ + gpio_i2c_write(chipaddr, 0xFF, 0x00); + gpio_i2c_write(chipaddr, 0x56, 0x32); + gpio_i2c_write(chipaddr, 0xFF, 0x01); + gpio_i2c_write(chipaddr, 0xC0+portsel*2, 0x98); + gpio_i2c_write(chipaddr, 0xC1+portsel*2, 0xba); + tmp = gpio_i2c_read(chipaddr, 0xC8+(portsel/2)) & (portsel%2?0x0F:0xF0); + tmp |= (portsel%2?0x80:0x08); + gpio_i2c_write(chipaddr, 0xC8+(portsel/2), tmp); + gpio_i2c_write(chipaddr, 0xCC+portsel, 0x58); + //gpio_i2c_write(chipaddr, 0xCC+portsel, 0x66); //single up + break; + case NVP6158_OUTMODE_2MUX_MIX: + /*HD,1920H,FHD-X 2mux mix,Data Rate 148.5MHz,Pclk 148.5MHz, Single Edge. + SOC VI Port Abandon some data, realize 1920H->960H */ + gpio_i2c_write(chipaddr, 0xFF, 0x00); + gpio_i2c_write(chipaddr, 0x56, 0x10); + gpio_i2c_write(chipaddr, 0xFF, 0x01); + gpio_i2c_write(chipaddr, 0xC0+portsel*2, chid==0?0x98:0xba); + gpio_i2c_write(chipaddr, 0xC1+portsel*2, chid==0?0x98:0xba); + tmp = gpio_i2c_read(chipaddr, 0xC8+(portsel/2)) & (portsel%2?0x0F:0xF0); + tmp |= (portsel%2?0x20:0x02); + gpio_i2c_write(chipaddr, 0xC8+(portsel/2), tmp); + gpio_i2c_write(chipaddr, 0xCC+portsel, 0x58); + break; + case NVP6158_OUTMODE_1MUX_BT1120S_720P: + /*Output 720P Single Channel data,Data Rate 37.125MHz,Pclk 37.125MHz, Single Edge.*/ + gpio_i2c_write(chipaddr, 0xFF, 0x00); + gpio_i2c_write(chipaddr, 0x56, 0x10); + gpio_i2c_write(chipaddr, 0xFF, 0x01); + if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || + nvp6158_chip_id[chip] == NVP6168C_R0_ID) { + //6158C makes 2 bt656 ports to 1 bt1120 port. portsel=[1,2] to choose clock. + gpio_i2c_write(chipaddr, 0xC2, (((chid%4)+0x04)<<4)|((chid%4)+0x04)); + gpio_i2c_write(chipaddr, 0xC3, (((chid%4)+0x04)<<4)|((chid%4)+0x04)); + gpio_i2c_write(chipaddr, 0xC4, (((chid%4)+0x0C)<<4)|((chid%4)+0x0C)); + gpio_i2c_write(chipaddr, 0xC5, (((chid%4)+0x0C)<<4)|((chid%4)+0x0C)); + gpio_i2c_write(chipaddr, 0xC8, 0x00); + gpio_i2c_write(chipaddr, 0xC9, 0x00); + gpio_i2c_write(chipaddr, 0xCC+portsel, 0x86); //37.125MHz clock + } else { + //6158 makes 4 bt656 ports to 2 bt1120 port. portsel=[0,1] to choose clock. + gpio_i2c_write(chipaddr, 0xC0+portsel*4, (((chid%4)+0x0C)<<4)|((chid%4)+0x0C)); + gpio_i2c_write(chipaddr, 0xC1+portsel*4, (((chid%4)+0x0C)<<4)|((chid%4)+0x0C)); + gpio_i2c_write(chipaddr, 0xC2+portsel*4, (((chid%4)+0x04)<<4)|((chid%4)+0x04)); + gpio_i2c_write(chipaddr, 0xC3+portsel*4, (((chid%4)+0x04)<<4)|((chid%4)+0x04)); + gpio_i2c_write(chipaddr, 0xC8+(portsel), 0x00); + gpio_i2c_write(chipaddr, 0xCC+portsel*2, 0x86); //37.125MHz clock + } + break; + case NVP6158_OUTMODE_1MUX_BT1120S_1080P: + /*Output 1080 Single Channel data,Data Rate 74.25MHz,Pclk 74.25MHz, Single Edge.*/ + gpio_i2c_write(chipaddr, 0xFF, 0x00); + gpio_i2c_write(chipaddr, 0x56, 0x10); + gpio_i2c_write(chipaddr, 0xFF, 0x01); + if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || + nvp6158_chip_id[chip] == NVP6168C_R0_ID) { + //6158C makes 2 bt656 ports to 1 bt1120 port. portsel=[1,2] to choose clock. + gpio_i2c_write(chipaddr, 0xC2, (((chid%4)+0x04)<<4)|((chid%4)+0x04)); + gpio_i2c_write(chipaddr, 0xC3, (((chid%4)+0x04)<<4)|((chid%4)+0x04)); + gpio_i2c_write(chipaddr, 0xC4, (((chid%4)+0x0C)<<4)|((chid%4)+0x0C)); + gpio_i2c_write(chipaddr, 0xC5, (((chid%4)+0x0C)<<4)|((chid%4)+0x0C)); + gpio_i2c_write(chipaddr, 0xC8, 0x00); + gpio_i2c_write(chipaddr, 0xC9, 0x00); + gpio_i2c_write(chipaddr, 0xCC+portsel, 0x06); //74.25MHz clock + } else { + //6158 makes 4 bt656 ports to 2 bt1120 port. portsel=[0,1] to choose clock. + gpio_i2c_write(chipaddr, 0xC0+portsel*4, (((chid%4)+0x0C)<<4)|((chid%4)+0x0C)); + gpio_i2c_write(chipaddr, 0xC1+portsel*4, (((chid%4)+0x0C)<<4)|((chid%4)+0x0C)); + gpio_i2c_write(chipaddr, 0xC2+portsel*4, (((chid%4)+0x04)<<4)|((chid%4)+0x04)); + gpio_i2c_write(chipaddr, 0xC3+portsel*4, (((chid%4)+0x04)<<4)|((chid%4)+0x04)); + gpio_i2c_write(chipaddr, 0xC8+(portsel), 0x00); + gpio_i2c_write(chipaddr, 0xCC+portsel*2, 0x86); //37.125MHz clock + } + break; + case NVP6158_OUTMODE_2MUX_BT1120S: + case NVP6158_OUTMODE_2MUX_BT1120S_720P: + gpio_i2c_write(chipaddr, 0xFF, 0x00); + gpio_i2c_write(chipaddr, 0x56, 0x10); + gpio_i2c_write(chipaddr, 0xFF, 0x01); + if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || + nvp6158_chip_id[chip] == NVP6168C_R0_ID) { + //6158C makes 2 bt656 ports to 1 bt1120 port. portsel=[1,2] to choose clock. + gpio_i2c_write(chipaddr, 0xC2, 0xdc); + gpio_i2c_write(chipaddr, 0xC3, 0xdc); + gpio_i2c_write(chipaddr, 0xC4, 0x54); + gpio_i2c_write(chipaddr, 0xC5, 0x54); + gpio_i2c_write(chipaddr, 0xC8, 0x22); + gpio_i2c_write(chipaddr, 0xC9, 0x22); + gpio_i2c_write(chipaddr, 0xCD, 0x1f); //74.25MHz clock + gpio_i2c_write(chipaddr, 0xCE, 0x1f); //74.25MHz clock + } else { + //6158 makes 4 bt656 ports to 2 bt1120 port. portsel=[0,1] to choose clock. + gpio_i2c_write(chipaddr, 0xC0+portsel*4, 0xdc); + gpio_i2c_write(chipaddr, 0xC1+portsel*4, 0xdc); + gpio_i2c_write(chipaddr, 0xC2+portsel*4, 0x54); + gpio_i2c_write(chipaddr, 0xC3+portsel*4, 0x54); + gpio_i2c_write(chipaddr, 0xC8+(portsel), 0x00); + gpio_i2c_write(chipaddr, 0xCC+portsel*2, 0x06); //74.25MHz clock + } + break; + case NVP6158_OUTMODE_2MUX_BT1120S_1080P: + gpio_i2c_write(chipaddr, 0xFF, 0x00); + gpio_i2c_write(chipaddr, 0x56, 0x10); + gpio_i2c_write(chipaddr, 0xFF, 0x01); + if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || + nvp6158_chip_id[chip] == NVP6168C_R0_ID) { + //6158C makes 2 bt656 ports to 1 bt1120 port. portsel=[1,2] to choose clock. + gpio_i2c_write(chipaddr, 0xC2, 0x54); + gpio_i2c_write(chipaddr, 0xC3, 0x54); + gpio_i2c_write(chipaddr, 0xC4, 0xdc); + gpio_i2c_write(chipaddr, 0xC5, 0xdc); + gpio_i2c_write(chipaddr, 0xC8, 0x22); + gpio_i2c_write(chipaddr, 0xC9, 0x22); + gpio_i2c_write(chipaddr, 0xCD, 0x56); //148.5MHz clock + gpio_i2c_write(chipaddr, 0xCE, 0x56); //148.5MHz clock + } else { + //6158 makes 4 bt656 ports to 2 bt1120 port. portsel=[0,1] to choose clock. + gpio_i2c_write(chipaddr, 0xC0+portsel*4, 0xdc); + gpio_i2c_write(chipaddr, 0xC1+portsel*4, 0xdc); + gpio_i2c_write(chipaddr, 0xC2+portsel*4, 0x54); + gpio_i2c_write(chipaddr, 0xC3+portsel*4, 0x54); + gpio_i2c_write(chipaddr, 0xC8+(portsel), 0x00); + gpio_i2c_write(chipaddr, 0xCC+portsel*2, 0x06); //74.25MHz clock + } + break; + case NVP6158_OUTMODE_4MUX_BT1120S: + gpio_i2c_write(chipaddr, 0xFF, 0x00); + gpio_i2c_write(chipaddr, 0x56, 0x32); + gpio_i2c_write(chipaddr, 0xFF, 0x01); + if (nvp6158_chip_id[chip] == NVP6158C_R0_ID || + nvp6158_chip_id[chip] == NVP6168C_R0_ID) { + //6158C makes 2 bt656 ports to 1 bt1120 port. portsel=[1,2] to choose clock. + gpio_i2c_write(chipaddr, 0xC2, 0x54); + gpio_i2c_write(chipaddr, 0xC3, 0x76); + gpio_i2c_write(chipaddr, 0xC4, 0xdc); + gpio_i2c_write(chipaddr, 0xC5, 0xfe); + gpio_i2c_write(chipaddr, 0xC8, 0x88); + gpio_i2c_write(chipaddr, 0xC9, 0x88); + + //single edge + gpio_i2c_write(chipaddr, 0xCD, 0x46); //148.5MHz clock + gpio_i2c_write(chipaddr, 0xCE, 0x46); //148.5MHz clock +// //dual_edge +// gpio_i2c_write(chipaddr, 0xCD, 0x06); //74.25MHz clock +// gpio_i2c_write(chipaddr, 0xCE, 0x06); //74.25MHz clock + } else { + //6158 makes 4 bt656 ports to 2 bt1120 port. portsel=[0,1] to choose clock. + gpio_i2c_write(chipaddr, 0xC0+portsel*4, 0xdc); + gpio_i2c_write(chipaddr, 0xC1+portsel*4, 0xfe); + gpio_i2c_write(chipaddr, 0xC2+portsel*4, 0x54); + gpio_i2c_write(chipaddr, 0xC3+portsel*4, 0x76); + gpio_i2c_write(chipaddr, 0xC8+(portsel), 0x88); + gpio_i2c_write(chipaddr, 0xCC+portsel*2, 0x58); //148.5MHz clock + } + break; + case NVP6158_OUTMODE_4MUX_BT1120S_DDR: + gpio_i2c_write(chipaddr, 0xFF, 0x00); + gpio_i2c_write(chipaddr, 0x56, 0x32); + gpio_i2c_write(chipaddr, 0xFF, 0x01); + if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || + nvp6158_chip_id[chip] == NVP6168C_R0_ID) { + //6158C makes 2 bt656 ports to 1 bt1120 port. portsel=[1,2] to choose clock. + gpio_i2c_write(chipaddr, 0xC2, 0x54); + gpio_i2c_write(chipaddr, 0xC3, 0x76); + gpio_i2c_write(chipaddr, 0xC4, 0xdc); + gpio_i2c_write(chipaddr, 0xC5, 0xfe); + gpio_i2c_write(chipaddr, 0xC8, 0x88); + gpio_i2c_write(chipaddr, 0xC9, 0x88); + //dual_edge + gpio_i2c_write(chipaddr, 0xCD, 0x06); //74.25MHz clock + gpio_i2c_write(chipaddr, 0xCE, 0x06); //74.25MHz clock + } else { + //6158 makes 4 bt656 ports to 2 bt1120 port. portsel=[0,1] to choose clock. + gpio_i2c_write(chipaddr, 0xC0+portsel*4, 0xdc); + gpio_i2c_write(chipaddr, 0xC1+portsel*4, 0xfe); + gpio_i2c_write(chipaddr, 0xC2+portsel*4, 0x54); + gpio_i2c_write(chipaddr, 0xC3+portsel*4, 0x76); + gpio_i2c_write(chipaddr, 0xC8+(portsel), 0x88); + gpio_i2c_write(chipaddr, 0xCC+portsel*2, 0x58); //148.5MHz clock + } + break; + + case NVP6158_OUTMODE_4MUX_BT1120S_1080P: + gpio_i2c_write(chipaddr, 0xFF, 0x00); + gpio_i2c_write(chipaddr, 0x56, 0x32); + gpio_i2c_write(chipaddr, 0xFF, 0x01); + if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || + nvp6158_chip_id[chip] == NVP6168C_R0_ID) { + //6158C makes 2 bt656 ports to 1 bt1120 port. portsel=[1,2] to choose clock. + gpio_i2c_write(chipaddr, 0xC2, 0x54); + gpio_i2c_write(chipaddr, 0xC3, 0x76); + gpio_i2c_write(chipaddr, 0xC4, 0xdc); + gpio_i2c_write(chipaddr, 0xC5, 0xfe); + gpio_i2c_write(chipaddr, 0xC8, 0x88); + gpio_i2c_write(chipaddr, 0xC9, 0x88); + gpio_i2c_write(chipaddr, 0xCD, 0x40); //148.5MHz clock + gpio_i2c_write(chipaddr, 0xCE, 0x40); //148.5MHz clock + } else { + //6158 makes 4 bt656 ports to 2 bt1120 port. portsel=[0,1] to choose clock. + gpio_i2c_write(chipaddr, 0xC0+portsel*4, 0xdc); + gpio_i2c_write(chipaddr, 0xC1+portsel*4, 0xfe); + gpio_i2c_write(chipaddr, 0xC2+portsel*4, 0x54); + gpio_i2c_write(chipaddr, 0xC3+portsel*4, 0x76); + gpio_i2c_write(chipaddr, 0xC8+(portsel), 0x88); + gpio_i2c_write(chipaddr, 0xCC+portsel*2, 0x58); //148.5MHz clock + } + break; + case NVP6158_OUTMODE_1MUX_297MHz: + /*1MUX data output, Pclk 297MHZ*/ + gpio_i2c_write(chipaddr, 0xFF, 0x00); + gpio_i2c_write(chipaddr, 0x56, 0x10); + gpio_i2c_write(chipaddr, 0xFF, 0x01); + gpio_i2c_write(chipaddr, 0xC0+portsel*2, (chid<<4)|chid); /* Port selection */ + gpio_i2c_write(chipaddr, 0xC1+portsel*2, (chid<<4)|chid); /* Port selection */ + tmp = gpio_i2c_read(chipaddr, 0xC8+(portsel/2)) & (portsel%2?0x0F:0xF0); + gpio_i2c_write(chipaddr, 0xC8+(portsel/2), tmp); + gpio_i2c_write(chipaddr, 0xCC+portsel, 0x66); + break; + default: + printk("portmode %d not supported yet\n", portmode); + break; + } + + printk("nvp6158(b)_set_portmode portsel %d portmode %d setting\n", portsel, portmode); + + if(portmode==NVP6158_OUTMODE_2MUX_SD ||\ + portmode==NVP6158_OUTMODE_4MUX_SD ||\ + portmode==NVP6158_OUTMODE_2MUX_HD ||\ + portmode==NVP6158_OUTMODE_2MUX_MIX ||\ + portmode==NVP6158_OUTMODE_2MUX_BT1120S ||\ + portmode==NVP6158_OUTMODE_2MUX_BT1120S_720P ||\ + portmode==NVP6158_OUTMODE_2MUX_BT1120S_1080P ||\ + portmode==NVP6158_OUTMODE_4MUX_BT1120S) { + gpio_i2c_write(chipaddr, 0xFF, 0x01); + gpio_i2c_write(chipaddr, 0xA0+portsel, 0x20); //TM clock mode sel manual + printk("TM clock mode sel manual mode \n"); + + } else { + gpio_i2c_write(chipaddr, 0xFF, 0x01); + gpio_i2c_write(chipaddr, 0xA0+portsel, 0x00); //TM clock mode sel auto + printk("TM clock mode sel auto mode \n"); + } + + return 0; +} + + +/* +chip:0~3 +portsel: 6158b/c->1/2, 6158->0~3 +enclk: enable clock pin, 1:enable,0:disable; +endata: enable data port, 1:enable,0:disable; +*/ +void nvp6158_set_portcontrol(const unsigned char chip, const unsigned char portsel, + const unsigned char enclk, const unsigned char endata) +{ + unsigned char reg_portctl; + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x01); + reg_portctl = gpio_i2c_read(nvp6158_iic_addr[chip], 0xCA); + if(nvp6158_chip_id[chip] == NVP6158C_R0_ID || + nvp6158_chip_id[chip] == NVP6168C_R0_ID) { + if(enclk == 1) + _SET_BIT(reg_portctl, (portsel+5)); + else + _CLE_BIT(reg_portctl, (portsel+5)); + + if(endata == 1) + _SET_BIT(reg_portctl, portsel); + else + _CLE_BIT(reg_portctl, portsel); + } else if(nvp6158_chip_id[chip] == NVP6158_R0_ID) { + if(enclk == 1) + _SET_BIT(reg_portctl, (portsel+4)); + else + _CLE_BIT(reg_portctl, (portsel+4)); + + if(endata == 1) + _SET_BIT(reg_portctl, portsel); + else + _CLE_BIT(reg_portctl, portsel); + } +} + +NC_FORMAT_STANDARD NVP6158_GetFmtStd_from_Fmtdef(NC_VIVO_CH_FORMATDEF vivofmt) +{ + NC_FORMAT_STANDARD vformat_std= FMT_STD_UNKNOWN; + if((vivofmt>=AHD20_SD_H960_NT) && (vivofmt<=AHD20_SD_H960_2EX_Btype_PAL)) + vformat_std = FMT_SD; + else if((vivofmt>=CVI_FHD_30P) && (vivofmt<=CVI_8M_12_5P)) + vformat_std = FMT_CVI; + else if((vivofmt>=TVI_FHD_30P) && (vivofmt<=TVI_8M_12_5P)) + vformat_std = FMT_TVI; + else if((vivofmt>=AHD20_1080P_60P) && (vivofmt<=AHD20_720P_25P_EX_Btype)) + vformat_std = FMT_AHD20; + else if((vivofmt>=AHD30_4M_30P) && (vivofmt<=AHD30_8M_15P)) + vformat_std = FMT_AHD30; + else + vformat_std = FMT_STD_UNKNOWN; + return vformat_std; +} + +void nvp6158_additional_for3MoverDef(unsigned char chip) +{ + unsigned char ch = 0; + + for(ch = 0; ch < 4; ch++) { + gpio_i2c_write(nvp6158_iic_addr[chip], 0xff, 0x0a + (ch / 2)); + + gpio_i2c_write(nvp6158_iic_addr[chip], 0x00 + ( 0x80 * (ch % 2)), 0x80 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x01 + ( 0x80 * (ch % 2)), 0x02 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x02 + ( 0x80 * (ch % 2)), 0x04 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x03 + ( 0x80 * (ch % 2)), 0x80 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x04 + ( 0x80 * (ch % 2)), 0x06 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x05 + ( 0x80 * (ch % 2)), 0x07 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x06 + ( 0x80 * (ch % 2)), 0x80 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x07 + ( 0x80 * (ch % 2)), 0x07 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x08 + ( 0x80 * (ch % 2)), 0x03 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x09 + ( 0x80 * (ch % 2)), 0x08 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x0a + ( 0x80 * (ch % 2)), 0x04 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x0b + ( 0x80 * (ch % 2)), 0x10 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x0c + ( 0x80 * (ch % 2)), 0x08 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x0d + ( 0x80 * (ch % 2)), 0x1f ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x0e + ( 0x80 * (ch % 2)), 0x2e ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x0f + ( 0x80 * (ch % 2)), 0x08 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x10 + ( 0x80 * (ch % 2)), 0x38 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x11 + ( 0x80 * (ch % 2)), 0x35 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x12 + ( 0x80 * (ch % 2)), 0x00 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x13 + ( 0x80 * (ch % 2)), 0x20 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x14 + ( 0x80 * (ch % 2)), 0x0d ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x15 + ( 0x80 * (ch % 2)), 0x80 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x16 + ( 0x80 * (ch % 2)), 0x54 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x17 + ( 0x80 * (ch % 2)), 0xb1 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x18 + ( 0x80 * (ch % 2)), 0x91 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x19 + ( 0x80 * (ch % 2)), 0x1c ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x1a + ( 0x80 * (ch % 2)), 0x87 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x1b + ( 0x80 * (ch % 2)), 0x92 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x1c + ( 0x80 * (ch % 2)), 0xe2 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x1d + ( 0x80 * (ch % 2)), 0x20 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x1e + ( 0x80 * (ch % 2)), 0xd0 ); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x1f + ( 0x80 * (ch % 2)), 0xcc ); + } +} + +void nvp6158_video_powerdown(unsigned char ch) +{ + unsigned char val_0x00; //video afe; + unsigned char val_1x97; //clock; + unsigned char val_1x98; //channel; + unsigned char chip = ch / 4; + + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x00); + val_0x00 = gpio_i2c_read(nvp6158_iic_addr[chip], 0x00+(ch%4)); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x00+(ch%4), (val_0x00|0x01)); + + gpio_i2c_write(nvp6158_iic_addr[chip], 0xFF, 0x01); + val_1x97 = gpio_i2c_read(nvp6158_iic_addr[chip], 0x97); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x97, (val_1x97&(~(0x01<<(ch%4))))); + + val_1x98 = gpio_i2c_read(nvp6158_iic_addr[chip], 0x98); + gpio_i2c_write(nvp6158_iic_addr[chip], 0x98, (val_1x98|(0x01<<(ch%4)))); + printk(">>>>%s CH[%d] been setted to powerdown mode\n", __func__, ch); +} + +/******************************************************************************** +* End of file +********************************************************************************/ diff --git a/drivers/media/i2c/nvp6158_drv/nvp6158_video.h b/drivers/media/i2c/nvp6158_drv/nvp6158_video.h new file mode 100644 index 000000000000..4073a7983ad3 --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/nvp6158_video.h @@ -0,0 +1,130 @@ +// SPDX-License-Identifier: GPL-2.0 +/******************************************************************************** +* +* Copyright (C) 2017 NEXTCHIP Inc. All rights reserved. +* Module : The decoder's video format module +* Description : Video format +* Author : +* Date : +* Version : Version 2.0 +* +******************************************************************************** +* History : +* +* +********************************************************************************/ +#ifndef _NVP6158_VIDEO_HI_ +#define _NVP6158_VIDEO_HI_ + +#include "nvp6158_common.h" +/* =============================================== + * APP -> DRV + * =============================================== */ +typedef struct _video_input_init { + unsigned char ch; + unsigned char format; + unsigned char dist; + unsigned char input; + unsigned char val; + unsigned char interface; +} video_input_init; + +typedef struct _video_init_all { + video_input_init ch_param[4]; + NVP6158_DVP_MODE mode; +} video_init_all; + +/******************************************************************** + * define and enum + ********************************************************************/ + +typedef enum _nvp6158_outmode_sel { + NVP6158_OUTMODE_1MUX_SD = 0, + NVP6158_OUTMODE_1MUX_HD, + NVP6158_OUTMODE_1MUX_FHD, + NVP6158_OUTMODE_1MUX_FHD_DDR, + NVP6158_OUTMODE_2MUX_SD, + NVP6158_OUTMODE_2MUX_HD, + NVP6158_OUTMODE_2MUX_MIX, + NVP6158_OUTMODE_2MUX_FHD, + NVP6158_OUTMODE_4MUX_SD, + NVP6158_OUTMODE_4MUX_HD, + NVP6158_OUTMODE_4MUX_MIX, + NVP6158_OUTMODE_1MUX_297MHz, + NVP6158_OUTMODE_1MUX_BT1120S_720P, + NVP6158_OUTMODE_1MUX_BT1120S_1080P, + NVP6158_OUTMODE_2MUX_BT1120S, + NVP6158_OUTMODE_2MUX_BT1120S_720P, + NVP6158_OUTMODE_2MUX_BT1120S_1080P, + NVP6158_OUTMODE_4MUX_BT1120S, + NVP6158_OUTMODE_4MUX_BT1120S_DDR, + NVP6158_OUTMODE_4MUX_BT1120S_720P, + NVP6158_OUTMODE_4MUX_BT1120S_1080P, + NVP6158_OUTMODE_BUTT +} NVP6158_OUTMODE_SEL; + +typedef enum _nvp6158_det_sel { + NVP6158_DET_MODE_AUTO = 0, + NVP6158_DET_MODE_AHD, + NVP6158_DET_MODE_CVI, + NVP6158_DET_MODE_TVI, + NVP6158_DET_MODE_OTHER, + NVP6158_DET_MODE_BUTT +} NVP6158_DET_SEL; + +/******************************************************************** + * structure + ********************************************************************/ + +/******************************************************************** + * external api + ********************************************************************/ +void nvp6158_common_init(unsigned char chip); +int nvp6158_set_portmode(const unsigned char chip, const unsigned char portsel, + const unsigned char portmode, const unsigned char chid); +int nvp6158_set_chnmode(const unsigned char ch, const unsigned char chnmode); +int nvp6168_set_chnmode(const unsigned char ch, const unsigned char chnmode); +void nvp6158_set_portcontrol(unsigned char chip, unsigned char portsel, + unsigned char enclk, unsigned char endata); +void nvp6158_set_chn_commonvalue(const unsigned char ch, const unsigned char chnmode); + +unsigned int nvp6158_video_fmt_det(const unsigned char ch, NVP6158_INFORMATION_S *ps_nvp6158_vfmts); +unsigned int nvp6168_video_fmt_det(const unsigned char ch, NVP6158_INFORMATION_S *ps_nvp6158_vfmts); +unsigned char nvp6158_video_fmt_debounce(unsigned char ch, + unsigned char keep_fmt, unsigned int keep_sync_width); +unsigned int nvp6158_getvideoloss(void); + +void nvp6158_video_set_contrast(unsigned char ch, unsigned int value, unsigned int v_format); +void nvp6158_video_set_brightness(unsigned char ch, unsigned int value, unsigned int v_format); +void nvp6158_video_set_saturation(unsigned char ch, unsigned int value, unsigned int v_format); +void nvp6158_video_set_hue(unsigned char ch, unsigned int value, unsigned int v_format); +void nvp6158_video_set_sharpness(unsigned char ch, unsigned int value); +void nvp6158_video_set_ugain(unsigned char ch, unsigned int value); +void nvp6158_video_set_vgain(unsigned char ch, unsigned int value); +void nvp6158_video_set_adcclk(unsigned char ch, unsigned char value); +unsigned char nvp6158_video_get_adcclk(unsigned char ch); +void nvp6158_hide_ch(unsigned char ch); +void nvp6158_show_ch(unsigned char ch); + +void nvp6158_vd_chnreset(unsigned char ch); +int nvp6158_GetAgcLockStatus(unsigned char ch); +int nvp6158_GetFSCLockStatus(unsigned char ch); +void nvp6158_ResetFSCLock(unsigned char ch); +void nvp6158_chn_killcolor(unsigned char ch, unsigned char onoff); +int nvp6158_acp_SetVFmt(unsigned char ch, const unsigned char vfmt); +void nvp6158_video_input_new_format_set(const unsigned char ch, const unsigned char chnmode); +void nvp6158_dump_reg(unsigned char ch, unsigned char bank); +NC_FORMAT_STANDARD NVP6158_GetFmtStd_from_Fmtdef(NC_VIVO_CH_FORMATDEF vivofmt); +void nvp6158_additional_for3MoverDef(unsigned char chip); +void nvp6158_video_powerdown(unsigned char ch); +void nvp6158_set_colorpattern(void); +void nvp6158_set_colorpattern2(void); +void nvp6158_set_colorpattern3(void); +void nvp6158_channel_reset(unsigned char ch); + + +#endif // End of _NVP6158_VIDEO_HI_ + +/******************************************************************** + * End of file + ********************************************************************/ diff --git a/drivers/media/i2c/nvp6158_drv/nvp6158_video_auto_detect.c b/drivers/media/i2c/nvp6158_drv/nvp6158_video_auto_detect.c new file mode 100644 index 000000000000..8901b2153941 --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/nvp6158_video_auto_detect.c @@ -0,0 +1,1730 @@ +// SPDX-License-Identifier: GPL-2.0 +/******************************************************************************** +* +* Copyright (C) 2017 NEXTCHIP Inc. All rights reserved. +* Module : video_auto_detect.c +* Description : +* Author : +* Date : +* Version : Version 1.0 +* +******************************************************************************** +* History : +* +* +********************************************************************************/ +#include +#include +#include "nvp6158_common.h" +#include "nvp6158_video_auto_detect.h" +#include "nvp6158_video.h" + +#define ACC_GAIN_NORMAL 0 +#define ACC_GAIN_DEBUG 1 + +extern int nvp6158_chip_id[4]; +extern unsigned int nvp6158_iic_addr[4]; + +NC_VIVO_CH_FORMATDEF nvp6158_arrVfcType[0x100] = { + /* 0x00 */ AHD20_SD_H960_2EX_Btype_NT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x10 */ AHD20_SD_H960_2EX_Btype_PAL,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x20 */ AHD20_720P_30P_EX_Btype, AHD20_720P_25P_EX_Btype, AHD20_720P_60P, AHD20_720P_50P,0, + /* 0x25 */ TVI_HD_30P_EX, TVI_HD_25P_EX, TVI_HD_60P, TVI_HD_50P, TVI_HD_B_30P_EX, TVI_HD_B_25P_EX, + /* 0x2B */ CVI_HD_30P_EX, CVI_HD_25P_EX, CVI_HD_60P, CVI_HD_50P,0, + /* 0x30 */ AHD20_1080P_30P, AHD20_1080P_25P, 0,TVI_FHD_30P, TVI_FHD_25P,CVI_FHD_30P, CVI_FHD_25P, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x40 */ AHD30_3M_30P, AHD30_3M_25P, AHD30_3M_18P, 0,TVI_3M_18P, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, TVI_4M_15P, + /* 0x50 */ AHD30_4M_30P, AHD30_4M_25P, AHD30_4M_15P, 0,CVI_4M_30P, CVI_4M_25P, 0,TVI_4M_30P, TVI_4M_25P, TVI_4M_15P, 0, 0, 0, 0, 0, 0, + /* 0x60 */ AHD30_8M_X_30P, AHD30_8M_X_25P, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x70 */ AHD30_5M_20P, AHD30_5M_12_5P, AHD30_5_3M_20P, TVI_5M_12_5P, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x80 */ AHD30_8M_15P, AHD30_8M_7_5P, AHD30_8M_12_5P, CVI_8M_15P, CVI_8M_12_5P, TVI_8M_15P, TVI_8M_12_5P, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x90 */ AHD30_6M_18P, AHD30_6M_20P, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0xA0 */ +}; + +NC_VIVO_CH_FORMATDEF nvp6158_arrVfcType_ahd[0x100] = { + /* 0x00 */ AHD20_SD_H960_2EX_Btype_NT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x10 */ AHD20_SD_H960_2EX_Btype_PAL,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x20 */ AHD20_720P_30P_EX_Btype, AHD20_720P_25P_EX_Btype, AHD20_720P_60P, AHD20_720P_50P,0, + /* 0x25 */ 0, 0, 0, 0, 0, 0, + /* 0x2B */ AHD20_720P_30P_EX_Btype, AHD20_720P_25P_EX_Btype, AHD20_720P_60P, AHD20_720P_50P,0, + /* 0x30 */ AHD20_1080P_30P, AHD20_1080P_25P, 0,0, 0,AHD20_1080P_30P, AHD20_1080P_25P, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x40 */ AHD30_3M_30P, AHD30_3M_25P, AHD30_3M_18P, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x50 */ AHD30_4M_30P, AHD30_4M_25P, AHD30_4M_15P, 0,0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x60 */ AHD30_8M_X_30P, AHD30_8M_X_25P, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x70 */ AHD30_5M_20P, AHD30_5M_12_5P, AHD30_5_3M_20P, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x80 */ AHD30_8M_15P, AHD30_8M_7_5P, AHD30_8M_12_5P, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x90 */ AHD30_6M_18P, AHD30_6M_20P, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0xA0 */ +}; + +NC_VIVO_CH_FORMATDEF nvp6158_arrVfcType_cvi[0x100] = { + /* 0x00 */ AHD20_SD_H960_2EX_Btype_NT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x10 */ AHD20_SD_H960_2EX_Btype_PAL,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x20 */ CVI_HD_30P_EX, CVI_HD_25P_EX, CVI_HD_60P, CVI_HD_50P,0, + /* 0x25 */ 0, 0, 0, 0, 0, 0, + /* 0x2B */ CVI_HD_30P_EX, CVI_HD_25P_EX, CVI_HD_60P, CVI_HD_50P,0, + /* 0x30 */ CVI_FHD_30P, CVI_FHD_25P, 0,0, 0,CVI_FHD_30P, CVI_FHD_25P, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x40 */ 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x50 */ 0, 0, 0, 0,CVI_4M_30P, CVI_4M_25P, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x60 */ 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x70 */ CVI_5M_20P, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x80 */ 0, 0, 0, CVI_8M_15P, CVI_8M_12_5P, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x90 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0xA0 */ +}; + +NC_VIVO_CH_FORMATDEF nvp6158_arrVfcType_tvi[0x100] = { + /* 0x00 */ AHD20_SD_H960_2EX_Btype_NT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x10 */ AHD20_SD_H960_2EX_Btype_PAL,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x20 */ 0, 0, 0, 0, 0, + /* 0x25 */ TVI_HD_30P_EX, TVI_HD_25P_EX, TVI_HD_60P, TVI_HD_50P, TVI_HD_B_30P_EX, TVI_HD_B_25P_EX, + /* 0x2B */ TVI_4M_15P, 0, 0, 0,0, + /* 0x30 */ 0, 0, 0,TVI_FHD_30P, TVI_FHD_25P,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x40 */ 0, 0, 0, 0,TVI_3M_18P, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, TVI_4M_15P, + /* 0x50 */ 0, 0, 0, 0, 0, 0, 0, TVI_4M_30P, TVI_4M_25P, TVI_4M_15P, 0, 0, 0, 0, 0, 0, + /* 0x60 */ 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x70 */ TVI_5M_20P, 0, 0, TVI_5M_12_5P, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x80 */ 0, 0, 0, TVI_8M_15P, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x90 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0xA0 */ +}; + +NC_VIVO_CH_FORMATDEF nvp6158_arrVfcType_raptor4[0x100] = { + /* 0x00 */ AHD20_SD_H960_2EX_Btype_NT, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x10 */ AHD20_SD_H960_2EX_Btype_PAL, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x20 */ AHD20_720P_30P_EX_Btype, AHD20_720P_25P_EX_Btype, AHD20_720P_60P, AHD20_720P_50P, + 0, + /* 0x25 */ TVI_HD_30P_EX, TVI_HD_25P_EX, TVI_HD_60P, TVI_HD_50P, TVI_HD_B_30P_EX, TVI_HD_B_25P_EX, + /* 0x2B */ CVI_HD_30P_EX, CVI_HD_25P_EX, CVI_HD_60P, CVI_HD_50P, + 0, + /* 0x30 */ AHD20_1080P_30P, AHD20_1080P_25P, + 0, + /* 0x33 */ TVI_FHD_30P, TVI_FHD_25P, + /* 0x35 */ CVI_FHD_30P, CVI_FHD_25P, + 0, + /* 0x38 */ AHD20_1080P_60P, AHD20_1080P_50P, + /* 0x3A */ TVI_FHD_60P, TVI_FHD_50P, + /* 0x3C */ AHD20_1080P_15P_EX, AHD20_1080P_12_5P_EX, + 0, 0, + /* 0x40 */ AHD30_3M_30P, AHD30_3M_25P, AHD30_3M_18P, + 0, + /* 0x44 */ TVI_3M_18P, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x50 */ AHD30_4M_30P, AHD30_4M_25P, AHD30_4M_15P, + 0, + /* 0x54 */ CVI_4M_30P, CVI_4M_25P, + 0, + /* 0x57 */ TVI_4M_30P, TVI_4M_25P, TVI_4M_15P, + 0, 0, 0, 0, 0, 0, + /* 0x60 */ AHD30_8M_X_30P, AHD30_8M_X_25P, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x70 */ AHD30_5M_20P, AHD30_5M_12_5P, AHD30_5_3M_20P, + /* 0x73 */ TVI_5M_12_5P, TVI_5M_20P, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x80 */ AHD30_8M_15P, AHD30_8M_7_5P, AHD30_8M_12_5P, CVI_8M_15P, CVI_8M_12_5P, TVI_8M_15P, TVI_8M_12_5P, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0x90 */ AHD30_6M_18P, AHD30_6M_20P, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* 0xA0 */ AHD20_960P_30P, AHD20_960P_25P, AHD20_960P_60P, AHD20_960P_50P, +}; + +//unsigned char current_fmt[16] = {NVP6158_DET_MODE_AUTO, NVP6158_DET_MODE_AUTO, NVP6158_DET_MODE_AUTO, NVP6158_DET_MODE_AUTO}; +extern unsigned char nvp6158_det_mode[16]; +NC_VIVO_CH_FORMATDEF NVP6158_NC_VD_AUTO_VFCtoFMTDEF(unsigned char ch, unsigned char VFC) +{ + if((nvp6158_chip_id[ch/4] == NVP6168C_R0_ID) || + (nvp6158_chip_id[ch/4] == NVP6168_R0_ID)) { + return nvp6158_arrVfcType_raptor4[VFC]; + } else { + if(nvp6158_det_mode[ch] == NVP6158_DET_MODE_AUTO) + return nvp6158_arrVfcType[VFC]; + else if(nvp6158_det_mode[ch] == NVP6158_DET_MODE_CVI) + return nvp6158_arrVfcType_cvi[VFC]; + else if(nvp6158_det_mode[ch] == NVP6158_DET_MODE_TVI) + return nvp6158_arrVfcType_tvi[VFC]; + else + return nvp6158_arrVfcType_ahd[VFC]; + } +} + +static void _nvp6158_video_input_auto_detect_vafe_set(video_input_auto_detect *vin_auto_det) +{ + unsigned char val_1x7A; + unsigned char val_5678x00; + unsigned char val_5678x01; + unsigned char val_5678x58; + unsigned char val_5678x59; + unsigned char val_5678x5B; + unsigned char val_5678x5C; + + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0xFF, 0x01); + val_1x7A = gpio_i2c_read(nvp6158_iic_addr[vin_auto_det->devnum], 0x7A); + val_1x7A |= (1 << vin_auto_det->ch); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x7A, val_1x7A); + + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0xFF, 0x00); + //B0 0x00/1/2/3 gain[4], powerdown[0] + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x00 + vin_auto_det->ch, + ((vin_auto_det->vafe.gain & 0x01) << 4) | (vin_auto_det->vafe.powerdown & 0x01)); + + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0xFF, 0x01); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x84 + vin_auto_det->ch, 0x00); + + /////////////////////////////////////////////////////////////////////////////////////////////////////////// + + //B5/6/7/8 + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0xFF, 0x05 + vin_auto_det->ch); + + //B5/6/7/8 0x01 spd[2], lpf_back_band[1:0] + val_5678x00 = gpio_i2c_read(nvp6158_iic_addr[vin_auto_det->devnum], 0x00); + val_5678x00 &= ~(0xF << 4); + val_5678x00 |= vin_auto_det->vafe.spd << 4; + + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x00, val_5678x00); + + val_5678x01 = ((vin_auto_det->vafe.ctrlreg << 6) | (vin_auto_det->vafe.ctrlibs << 4) | + (vin_auto_det->vafe.adcspd << 2) | (vin_auto_det->vafe.clplevel)); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x01, val_5678x01 ); + + //B5/6/7/8 0x58 eq_band[7:4], lpf_front_band[1:0] + val_5678x58 = ((vin_auto_det->vafe.eq_band << 4) | (vin_auto_det->vafe.lpf_front_band)); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x58, val_5678x58); + + //B5/6/7/8 0x5B ref_vol[1:0] + val_5678x59 = ((vin_auto_det->vafe.clpmode << 7) | (vin_auto_det->vafe.f_lpf_bypass << 4) | + (vin_auto_det->vafe.clproff << 3) | (vin_auto_det->vafe.b_lpf_bypass)); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x59, val_5678x59); + + val_5678x5B = ((vin_auto_det->vafe.duty << 4) | (vin_auto_det->vafe.ref_vol)); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x5B, val_5678x5B); + + val_5678x5C = ((vin_auto_det->vafe.lpf_back_band << 4) | + (vin_auto_det->vafe.clk_sel << 3) | (vin_auto_det->vafe.eq_gainsel)); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x5C, val_5678x5C); +} + +void nvp6158_video_input_manual_mode_set(video_input_manual_mode *vin_manual_det) +{ + unsigned char val_0x30; + unsigned char val_0x31; + unsigned char val_0x32; + + unsigned char val_1x7A; + + unsigned char val_9x44; + //B13 0x30 AUTO_FMT_SET_EN_2[3:0], AUTO_FMT_SET_EN [3:0] + //B13 0x31 AUTO_FMT_SET_EN_4[3:0], AUTO_FMT_SET_EN_3 [3:0] + //B13 0x32 [ RESERVED ], NOVIDEO_VFC_INIT_EN[3:0] + + gpio_i2c_write(nvp6158_iic_addr[vin_manual_det->dev_num], 0xFF, 0x01); + val_1x7A = gpio_i2c_read(nvp6158_iic_addr[vin_manual_det->dev_num], 0x7A); + val_1x7A &= ~(1 << vin_manual_det->ch); + val_1x7A |= (1 << vin_manual_det->ch); + gpio_i2c_write(nvp6158_iic_addr[vin_manual_det->dev_num], 0x7A, val_1x7A); + + gpio_i2c_write(nvp6158_iic_addr[vin_manual_det->dev_num], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[vin_manual_det->dev_num], 0x23 + (vin_manual_det->ch*4), 0x41); + + gpio_i2c_write(nvp6158_iic_addr[vin_manual_det->dev_num], 0xFF, 0x13); + val_0x30 = gpio_i2c_read(nvp6158_iic_addr[vin_manual_det->dev_num], 0x30); + val_0x31 = gpio_i2c_read(nvp6158_iic_addr[vin_manual_det->dev_num], 0x31); + val_0x32 = gpio_i2c_read(nvp6158_iic_addr[vin_manual_det->dev_num], 0x32); + + val_0x30 &= (~(1 << (vin_manual_det->ch + 4)) & (~(1 << vin_manual_det->ch))); + val_0x31 &= (~(1 << (vin_manual_det->ch + 4)) & (~(1 << vin_manual_det->ch))); + val_0x32 &= (~(1 << vin_manual_det->ch)); + + gpio_i2c_write(nvp6158_iic_addr[vin_manual_det->dev_num], 0x30, val_0x30); + gpio_i2c_write(nvp6158_iic_addr[vin_manual_det->dev_num], 0x31, val_0x31); + gpio_i2c_write(nvp6158_iic_addr[vin_manual_det->dev_num], 0x32, val_0x32); + + gpio_i2c_write(nvp6158_iic_addr[vin_manual_det->dev_num], 0xFF, 0x05 + vin_manual_det->ch); + //B5/6/7/8 0xB9 HAFC_LPF_SEL[7:6] GAIN1[5:4] GAIN2[3:0] + gpio_i2c_write(nvp6158_iic_addr[vin_manual_det->dev_num], 0xB9, 0xB2); + + + // EXT PN VALUE Disable + gpio_i2c_write(nvp6158_iic_addr[vin_manual_det->dev_num], 0xFF,0x09); + val_9x44 = gpio_i2c_read(nvp6158_iic_addr[vin_manual_det->dev_num], 0x44); + val_9x44 &= ~(1 << vin_manual_det->ch); + gpio_i2c_write(nvp6158_iic_addr[vin_manual_det->dev_num], 0x44, val_9x44); +} + +void nvp6168_video_input_manual_mode_set(video_input_manual_mode *vin_manual_det) +{ + unsigned char val_1x7A; + unsigned char val_9x44; + + gpio_i2c_write(nvp6158_iic_addr[vin_manual_det->dev_num], 0xFF, 0x01); + val_1x7A = gpio_i2c_read(nvp6158_iic_addr[vin_manual_det->dev_num], 0x7A); + val_1x7A &= ~(1 << vin_manual_det->ch); + val_1x7A |= (1 << vin_manual_det->ch); + gpio_i2c_write(nvp6158_iic_addr[vin_manual_det->dev_num], 0x7A, val_1x7A); + + gpio_i2c_write(nvp6158_iic_addr[vin_manual_det->dev_num], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[vin_manual_det->dev_num], 0x30, 0x00); + gpio_i2c_write(nvp6158_iic_addr[vin_manual_det->dev_num], 0x70, 0x00); + + gpio_i2c_write(nvp6158_iic_addr[vin_manual_det->dev_num], 0xFF, 0x05 + vin_manual_det->ch); + gpio_i2c_write(nvp6158_iic_addr[vin_manual_det->dev_num], 0xB9, 0x72); + + gpio_i2c_write(nvp6158_iic_addr[vin_manual_det->dev_num], 0xFF, 0x09); + val_9x44 = gpio_i2c_read(nvp6158_iic_addr[vin_manual_det->dev_num], 0x44); + val_9x44 &= ~(1 << vin_manual_det->ch); + gpio_i2c_write(nvp6158_iic_addr[vin_manual_det->dev_num], 0x44, val_9x44); +} + +void nvp6158_video_input_auto_detect_set(video_input_auto_detect *vin_auto_det) +{ + unsigned char val_0x30; + unsigned char val_0x31; + unsigned char val_0x32; + + vin_auto_det->vafe.powerdown = 0x00; + vin_auto_det->vafe.gain = 0x01; + vin_auto_det->vafe.spd = 0x0d; + vin_auto_det->vafe.ctrlreg = 0x01; + vin_auto_det->vafe.ctrlibs = 0x02; + vin_auto_det->vafe.adcspd = 0x00; + vin_auto_det->vafe.clplevel = 0x02; + vin_auto_det->vafe.eq_band = 0x00; + vin_auto_det->vafe.lpf_front_band = 0x07; + vin_auto_det->vafe.clpmode = 0x00; + vin_auto_det->vafe.f_lpf_bypass = 0x01; + vin_auto_det->vafe.clproff = 0x00; + vin_auto_det->vafe.b_lpf_bypass = 0x00; + vin_auto_det->vafe.duty = 0x04; + vin_auto_det->vafe.ref_vol = 0x03; + vin_auto_det->vafe.lpf_back_band = 0x07; + vin_auto_det->vafe.clk_sel = 0x01; + vin_auto_det->vafe.eq_gainsel = 0x07; + + vin_auto_det->d_cmp = 0x3f; + vin_auto_det->slice_level = 0x5a; + vin_auto_det->stable_mode_1 = 0x04; + vin_auto_det->stable_mode_2 = 0x00; + vin_auto_det->novid_det = 0x41; + + _nvp6158_video_input_auto_detect_vafe_set(vin_auto_det); + + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0xFF, 0x05 + vin_auto_det->ch); + + //B5/6/7/8 0x03 Digital Clamp + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x03, vin_auto_det->d_cmp); + //B5/6/7/8 0x08 Slice Level + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x08, vin_auto_det->slice_level); + //B5/6/7/8 0xB9 HAFC_LPF_SEL[7:6] GAIN1[5:4] GAIN2[3:0] + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0xB9, 0x72); + + //B5/6/7/8 0xCA ADV_V_DELAY_AD[4] ADV_V_DELAY_ON[0] + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0xCA, 0x10); + + //B13 0x30 AUTO_FMT_SET_EN_2[3:0], AUTO_FMT_SET_EN [3:0] + //B13 0x31 AUTO_FMT_SET_EN_4[3:0], AUTO_FMT_SET_EN_3 [3:0] + //B13 0x32 [ RESERVED ], NOVIDEO_VFC_INIT_EN[3:0] + + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0xFF, 0x13); + val_0x30 = gpio_i2c_read(nvp6158_iic_addr[vin_auto_det->devnum], 0x30); + val_0x31 = gpio_i2c_read(nvp6158_iic_addr[vin_auto_det->devnum], 0x31); + val_0x32 = gpio_i2c_read(nvp6158_iic_addr[vin_auto_det->devnum], 0x32); + val_0x30 |= ((1 << (vin_auto_det->ch + 4)) | (1 << vin_auto_det->ch)); + val_0x31 |= ((1 << (vin_auto_det->ch + 4)) | (1 << vin_auto_det->ch)); + val_0x32 |= ((1 << vin_auto_det->ch) & 0xF); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x30, val_0x30); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x31, val_0x31); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x32, val_0x32); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x36, 0x0A); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x37, 0x82); + + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x81+vin_auto_det->ch, 0x0A); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x85+vin_auto_det->ch, 0x02); + + //////////////////////////////////////////////////////////////////////////////////////////////////////////// + + //B13 + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0xFF, 0x13); + //B13 0x00 Stable Mode set + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x00, vin_auto_det->stable_mode_1); + //B13 0x01 Stable Mode Set + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x01, ((vin_auto_det->stable_mode_2) & 0x3)); + //B13 0x40 VFC_EQ_BAND_SEL[7:4] VFC_LPF_F_SEL[1:0] + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x40, 0x07); + //B13 0x41 VFC_REF_VTG + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x41, 0x01); + //B13 0x42 VFC_D_CMP_SET + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x42, 0x3F); + //B13 0x43 VFC_SLICE_VALUE + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x43, 0x5A); + //B13 0x44 VFC_SLICE_MD2 + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x44, 0x30); + //B13 0x45 VFC_CONTROL_MODES + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x45, 0xEE); + //B13 0x46 VFC_GDF_FIX_COEFF + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x46, 0xC6); + //B13 0x47 VFC_DFE_REF_SEL_OLD[4] VFC_DFE_REF_SEL_NEW[0] + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x47, 0x00); + //B13 0x48 VFC_D_BLK_CNT_NEW[[7:4] VFC_HAFC_BYPASS_NEW[1] VFC_UPDN_SEL[0] + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x48, 0x80); + //B13 0x49 VFC_OLD_WPD_ON[4] VFC_NEW_WPD_ON[0] + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x49, 0x00); + //B13 0x4A VFC_D_CMP_FZ_OLD[4] VFC_D_CMP_FZ_NEW[1] + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x4A, 0x11); + //B13 0x4B VFC_AUTO_GNOS_MODE + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x4B, 0x7F); + //B13 0x4C VFC_AUTO_SYNC_MODE + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x4C, 0x00); + //B13 0x4D VFC_HAFC_BYPASS[7] ??? [6:0] + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x4D, 0xB9); + //B13 0x4E VFC_VAFE_B_LPF_SEL[6:4] VFC_VAFE_CKSEL[3] VFC_VAFE_EQ_GAIN_SEL[2:0] + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x4E, 0x78); + //B13 0x4F VFC_VAFE_CTRL_RES[7:6] VFC_VAFE_IBS_CTRL[5:4] VFC_VAFE_SPD[2] VFC_VAFE_CLP_LEVEL[1:0] + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x4F, 0x62); + + //B0 0x23/0x27/0x2B/0x2F No Video Detect + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0xFF, 0x0); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x23 + ((vin_auto_det->ch) * 4), vin_auto_det->novid_det); + + /* clock set */ + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0xFF, 0x1); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x84 + vin_auto_det->ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x8c + vin_auto_det->ch, 0x55); + +} + +void nvp6168_video_input_auto_detect_set(video_input_auto_detect *vin_auto_det) +{ + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0xFF, 0x13); + + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x12, 0x04); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x2E, 0x10); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x30, 0x7f); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x31, 0xff); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x32, 0xff); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x33, 0xff); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x3a, 0xff); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x3b, 0xff); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x3c, 0xff); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x3d, 0xff); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x3e, 0xff); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x3f, 0xff); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x70, 0xf0); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x72, 0x05); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x7A, 0x10); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x61, 0x0A); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x62, 0x02); + //gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x60, 0x01); + //gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x60, 0x00); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x07, 0x47); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x59, 0x24); + + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x01, 0x0c); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x2f, 0xc8); + + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x73, 0x23); + + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0xff, 0x09 ); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0x96, 0x03); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0xB6, 0x03); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0xD6, 0x03); + gpio_i2c_write(nvp6158_iic_addr[vin_auto_det->devnum], 0xF6, 0x03); +} + +void nvp6158_video_input_vfc_read(video_input_vfc *vin_vfc) +{ + gpio_i2c_write(nvp6158_iic_addr[vin_vfc->devnum], 0xFF, 0x13); + vin_vfc->vfc = gpio_i2c_read(nvp6158_iic_addr[vin_vfc->devnum], 0xF0 + vin_vfc->ch); +} + +void nvp6168_video_input_vfc_read(video_input_vfc *vin_vfc) +{ + gpio_i2c_write(nvp6158_iic_addr[vin_vfc->devnum], 0xFF, 0x05 + vin_vfc->ch); + vin_vfc->vfc = gpio_i2c_read(nvp6158_iic_addr[vin_vfc->devnum], 0xF0); +} + +void nvp6158_video_input_novid_read(video_input_novid *vin_novid) +{ + unsigned char val_0xA8; + + gpio_i2c_write(nvp6158_iic_addr[vin_novid->devnum], 0xFF, 0x00); + val_0xA8 = gpio_i2c_read(nvp6158_iic_addr[vin_novid->devnum], 0xA8); + + vin_novid->novid = (((val_0xA8 >> vin_novid->ch) & 0x1)) ; +} + + +void nvp6158_video_input_no_video_set(video_input_novid *auto_novid) +{ + unsigned char val_13x30; + unsigned char val_13x31; + unsigned char val_13x32; + unsigned char val_9x44; + unsigned char val_1x7A; + + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x21 + (auto_novid->ch * 4), 0x82); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x23 + (auto_novid->ch * 4), 0x41); + + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0xFF, 0x09); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x80 + (auto_novid->ch * 0x20), 0x00); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x81 + (auto_novid->ch * 0x20), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0xFF, 0x0A+auto_novid->ch/2); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x3D + ((auto_novid->ch%2) * 0x80), 0x00); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x3C + ((auto_novid->ch%2) * 0x80), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0xFF, 0x05 + auto_novid->ch); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x2C, 0x00); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x01, 0x62); + + /* Before 08/28 */ + //gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x58, 0x07); + //gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x5C, 0x78); + /* After 08/28 */ + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x47, 0xEE); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x50, 0xc6); //recovery to std value. + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x58, 0x47); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x5C, 0x7f); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x6E, 0x00); //VBLK default setting + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x6F, 0x00); + /* Low-Poass Filter (LPF) Bypass Enable Bank5/6/7/8 0x59 */ + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x59, 0x10); + + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0xB8, 0xB9); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0xB9, 0xB2); + + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x43, 0x5a); + + val_13x30 = gpio_i2c_read(nvp6158_iic_addr[auto_novid->devnum], 0x30); + val_13x31 = gpio_i2c_read(nvp6158_iic_addr[auto_novid->devnum], 0x31); + val_13x32 = gpio_i2c_read(nvp6158_iic_addr[auto_novid->devnum], 0x32); + val_13x30 |= ((1 << (auto_novid->ch + 4)) | (1 << auto_novid->ch)); + val_13x31 |= ((1 << (auto_novid->ch + 4)) | (1 << auto_novid->ch)); + val_13x32 |= ((1 << auto_novid->ch) & 0xF); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x30, val_13x30); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x31, val_13x31); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x32, val_13x32); + + /* disable Bank11 0x00, if before setting format TVI 5M 20P when onvideo */ + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0xFF, 0x11); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x00 + ( auto_novid->ch * 0x20 ), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0xFF, 0x09); + val_9x44 = gpio_i2c_read(nvp6158_iic_addr[auto_novid->devnum], 0x44); + val_9x44 |= (1 << auto_novid->ch); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x50 + (auto_novid->ch*4) , 0x30); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x51 + (auto_novid->ch*4) , 0x6F); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x52 + (auto_novid->ch*4) , 0x67); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x53 + (auto_novid->ch*4) , 0x48); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x44 , val_9x44); + + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x81+auto_novid->ch, 0x0A); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x85+auto_novid->ch, 0x02); + /* clock set */ + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0xFF, 0x01); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x84 + auto_novid->ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x8c + auto_novid->ch, 0x55); + val_1x7A = gpio_i2c_read(nvp6158_iic_addr[auto_novid->devnum], 0x7A); + val_1x7A |= (1 << auto_novid->ch); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x7A, val_1x7A); +} + +void nvp6168_video_input_no_video_set(video_input_novid *auto_novid) +{ + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x21 + (auto_novid->ch * 4), 0x82); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x23 + (auto_novid->ch * 4), 0x41); + + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0xFF, 0x09); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x80 + (auto_novid->ch * 0x20), 0x00); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x81 + (auto_novid->ch * 0x20), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0xff, (auto_novid->ch < 2 ? 0x0a : 0x0b) ); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x3d + (auto_novid->ch%2 * 0x80), 0x00); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x3c + (auto_novid->ch%2 * 0x80), 0x00); + + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0xFF, 0x05 + auto_novid->ch); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x01, 0x62); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x2C, 0x00); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x50, 0xc6); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x58, 0x47); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x59, 0x10); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x5C, 0x7f); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0xB8, 0xB8); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0xB9, 0x72); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x6E, 0x00); //VBLK default setting + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x6F, 0x00); + + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0xFF, 0x11); + gpio_i2c_write(nvp6158_iic_addr[auto_novid->devnum], 0x00 + ( auto_novid->ch * 0x20 ), 0x00); +} + +void nvp6158_video_input_cable_dist_read(video_input_cable_dist *vin_cable_dist) +{ + gpio_i2c_write(nvp6158_iic_addr[vin_cable_dist->devnum], 0xFF, 0x13); + + //B13 0xA0 [3:0] Cable Distance Value + vin_cable_dist->dist = gpio_i2c_read(nvp6158_iic_addr[vin_cable_dist->devnum], 0xA0 + vin_cable_dist->ch ) & 0xF; +} + + + +void nvp6158_video_input_sam_val_read(video_input_sam_val *vin_sam_val ) +{ + unsigned char val1, val2; + + // Channel Change Sequence + gpio_i2c_write(nvp6158_iic_addr[vin_sam_val->devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[vin_sam_val->devnum], 0x2B, vin_sam_val->ch); + + gpio_i2c_write(nvp6158_iic_addr[vin_sam_val->devnum], 0xFF, 0x13); /* + vin_sam_val->ch ); */ + //B13 0xC9 [7:0] SAM Value + val1 = gpio_i2c_read(nvp6158_iic_addr[vin_sam_val->devnum], 0xC9) ; + //B13 0xC8 [9:8] SAM Value + val2 = gpio_i2c_read(nvp6158_iic_addr[vin_sam_val->devnum], 0xC8) & 0x3; + + vin_sam_val->sam_val = ((val2 << 8) | val1); +} + +void nvp6158_video_input_hsync_accum_read(video_input_hsync_accum *vin_hsync_accum ) +{ + unsigned char val01, val02, val03, val04; + unsigned char val11, val12, val13, val14; + + unsigned char h_lock; + unsigned int val_1; + unsigned int val_2; + unsigned int val_result; + + gpio_i2c_write(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xFF, 0x00); + h_lock = (gpio_i2c_read(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xE2) >> vin_hsync_accum->ch) & 0x1; + + vin_hsync_accum->h_lock = h_lock; + + gpio_i2c_write(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[vin_hsync_accum->devnum], 0x2B, vin_hsync_accum->ch); + + + gpio_i2c_write(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xFF, 0x13); /* + vin_sam_val->ch */ + + //B13 0xB4 [ 7:0] Hsync Accumulation Value + val01 = gpio_i2c_read(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xD0); // 170214 0xB4 -> 0xD0 Fix + //B13 0xB5 [15:8] Hsync Accumulation Value + val02 = gpio_i2c_read(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xD1); // 170214 0xB5 -> 0xD1 Fix + //B13 0xB6 [23:16] Hsync Accumulation Value + val03 = gpio_i2c_read(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xD2); // 170214 0xB6 -> 0xD2 Fix + //B13 0xB7 [31:24] Hsync Accumulation Value + val04 = gpio_i2c_read(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xD3); // 170214 0xB7 -> 0xD3 Fix + + //B13 0xB4 [ 7:0] Hsync Accumulation Value + val11 = gpio_i2c_read(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xD4); // 170214 0xB8 -> 0xD4 Fix + //B13 0xB5 [15:8] Hsync Accumulation Value + val12 = gpio_i2c_read(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xD5); // 170214 0xB9 -> 0xD5 Fix + //B13 0xB6 [23:16] Hsync Accumulation Value + val13 = gpio_i2c_read(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xD6); // 170214 0xBA -> 0xD6 Fix + //B13 0xB7 [31:24] Hsync Accumulation Value + val14 = gpio_i2c_read(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xD7); // 170214 0xBB -> 0xD7 Fix + + val_1 = ((val04 << 24) | (val03 << 16) | (val02 << 8) | val01); + val_2 = ((val14 << 24) | (val13 << 16) | (val12 << 8) | val11); + + val_result = val_1 - val_2; + + vin_hsync_accum->hsync_accum_val1 = val_1; + vin_hsync_accum->hsync_accum_val2 = val_2; + vin_hsync_accum->hsync_accum_result = val_result; +} + +static int nvp6168_get_eq_read_cnt(unsigned char devnum, unsigned char ch) +{ + unsigned char vfc; + int ret = 50; + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05 + ch); + vfc = gpio_i2c_read(nvp6158_iic_addr[devnum], 0xF0); + + switch(vfc) + { + // 25fps, 3frame=120ms + case 0x10 : + case 0x21 : + case 0x26 : + case 0x2A : + case 0x2C : + case 0x31 : + case 0x34 : + case 0x36 : + case 0x41 : + case 0x51 : + case 0x55 : + case 0x58 : + case 0x61 : + case 0xA1 : + case 0xA5 : + ret = 24; + break; + + // 30fps, 3frame=100ms + case 0x00 : + case 0x20 : + case 0x25 : + case 0x29 : + case 0x2B : + case 0x30 : + case 0x33 : + case 0x35 : + case 0x40 : + case 0x50 : + case 0x54 : + case 0x57 : + case 0x60 : + case 0xA0 : + case 0xA4 : + ret = 20; + break; + + // 50fps, 3frame=60ms + case 0x23 : + case 0x28 : + case 0x2E : + case 0x39 : + case 0x3B : + case 0xA3 : + case 0xA7 : + ret = 12; + break; + + // 60fps, 3frame=50ms + case 0x22 : + case 0x27 : + case 0x2D : + case 0x38 : + case 0x3A : + case 0xA2 : + case 0xA6 : + ret = 10; + break; + + // 20fps, 3frame=150ms + case 0x70 : + case 0x72 : + case 0x74 : + ret = 30; + break; + + // 18fps, 3frame=167ms + case 0x42 : + case 0x44 : + case 0x90 : + ret = 34; + break; + + // 15fps, 3frame=200ms + case 0x3C : + case 0x52 : + case 0x59 : + case 0x80 : + case 0x83 : + case 0x85 : + ret = 40; + break; + + // 12.5fps, 3frame=240ms + case 0x3D : + case 0x71 : + case 0x73 : + case 0x82 : + case 0x84 : + case 0x86 : + ret = 48; + break; + + // 7.5fps, 3frame=400ms + case 0x81 : + ret = 80; + break; + + default : + break; + } + + return ret; +} + +void nvp6168_video_input_hsync_accum_read(video_input_hsync_accum *vin_hsync_accum ) +{ + unsigned char val01, val02, val03, val04; + unsigned char val11, val12, val13, val14; + + unsigned int val_1 = 0; + unsigned int val_2 = 0; + unsigned int val_result; + + static unsigned int pre_val_1; + static unsigned int pre_val_2; + + unsigned char rst_reg = 1<ch; + unsigned char vfc, video_loss; + int read_cnt=0, total_cnt; + video_input_novid s_auto_novid; + + total_cnt = nvp6168_get_eq_read_cnt(vin_hsync_accum->devnum, vin_hsync_accum->ch); + + gpio_i2c_write(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[vin_hsync_accum->devnum], 0x2B, vin_hsync_accum->ch); + + while(read_cnt < total_cnt) { + gpio_i2c_write(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xFF, 0x00); + video_loss = gpio_i2c_read(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xA8); + video_loss = (((video_loss >> vin_hsync_accum->ch) & 0x1)) ; + + gpio_i2c_write(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xFF, 0x05 + vin_hsync_accum->ch); + vfc = gpio_i2c_read(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xF0); + + if((video_loss == 1) && (vfc == 0xFF)) { + printk("[%s] CH:%d, video_loss:%02X, vfc:0x%X \r\n", __func__, + vin_hsync_accum->ch, video_loss, vfc); + vin_hsync_accum->hsync_accum_val1 = 0; + vin_hsync_accum->hsync_accum_val2 = 0; + vin_hsync_accum->hsync_accum_result = 0xffffffff; + s_auto_novid.ch = vin_hsync_accum->ch; + s_auto_novid.devnum = vin_hsync_accum->devnum; + nvp6168_video_input_no_video_set(&s_auto_novid); + return; + } + + gpio_i2c_write(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xFF, 0x13); + //B13 0xB4 [ 7:0] Hsync Accumulation Value + val01 = gpio_i2c_read(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xD0); // 170214 0xB4 -> 0xD0 Fix + //B13 0xB5 [15:8] Hsync Accumulation Value + val02 = gpio_i2c_read(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xD1); // 170214 0xB5 -> 0xD1 Fix + //B13 0xB6 [23:16] Hsync Accumulation Value + val03 = gpio_i2c_read(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xD2); // 170214 0xB6 -> 0xD2 Fix + //B13 0xB7 [31:24] Hsync Accumulation Value + val04 = gpio_i2c_read(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xD3); // 170214 0xB7 -> 0xD3 Fix + + //B13 0xB4 [ 7:0] Hsync Accumulation Value + val11 = gpio_i2c_read(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xD4); // 170214 0xB8 -> 0xD4 Fix + //B13 0xB5 [15:8] Hsync Accumulation Value + val12 = gpio_i2c_read(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xD5); // 170214 0xB9 -> 0xD5 Fix + //B13 0xB6 [23:16] Hsync Accumulation Value + val13 = gpio_i2c_read(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xD6); // 170214 0xBA -> 0xD6 Fix + //B13 0xB7 [31:24] Hsync Accumulation Value + val14 = gpio_i2c_read(nvp6158_iic_addr[vin_hsync_accum->devnum], 0xD7); // 170214 0xBB -> 0xD7 Fix + + val_1 = ((val04 << 24) | (val03 << 16) | (val02 << 8) | val01); + val_2 = ((val14 << 24) | (val13 << 16) | (val12 << 8) | val11); + + //printk("[%s] CH:%d, video_loss:%02X, vfc:0x%X val1:%08X / val2:%08X \r\n", __func__, vin_hsync_accum->ch, video_loss, vfc, val_1, val_2); + + if((val_1 != 0) && (val_2 != 0)) { + if((pre_val_1 != val_1) || (pre_val_2 != val_2)) { + gpio_i2c_write(nvp6158_iic_addr[vin_hsync_accum->devnum], 0x7A, rst_reg); + gpio_i2c_write(nvp6158_iic_addr[vin_hsync_accum->devnum], 0x7A, 0x10); + pre_val_1 = val_1; + pre_val_2 = val_2; + break; + } + } + msleep(10); + read_cnt++; + } + val_result = val_1 - val_2; + + vin_hsync_accum->hsync_accum_val1 = val_1; + vin_hsync_accum->hsync_accum_val2 = val_2; + vin_hsync_accum->hsync_accum_result = val_result; +} + +void nvp6158_video_input_agc_val_read(video_input_agc_val *vin_agc_val) +{ + unsigned char agc_lock; + + gpio_i2c_write(nvp6158_iic_addr[vin_agc_val->devnum], 0xFF, 0x00); + agc_lock = (gpio_i2c_read(nvp6158_iic_addr[vin_agc_val->devnum], 0xE0) >> vin_agc_val->ch) & 0x1; + + vin_agc_val->agc_lock = agc_lock; + + gpio_i2c_write(nvp6158_iic_addr[vin_agc_val->devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[vin_agc_val->devnum], 0x2B, vin_agc_val->ch); + + gpio_i2c_write(nvp6158_iic_addr[vin_agc_val->devnum], 0xFF, 0x13); /* + vin_sam_val->ch ); */ + + //B13 0xB8 [ 7:0] Hsync Accumulation Value + vin_agc_val->agc_val = gpio_i2c_read(nvp6158_iic_addr[vin_agc_val->devnum], 0xC4); // 170213 0xA9 -> 0xC5 // 170310 0xC5 -> 0xC4 +} + +void nvp6158_video_input_fsc_val_read(video_input_fsc_val *vin_fsc_val) +{ + unsigned char val01, val02, val03, val04; + unsigned char val11, val12, val13, val14; + unsigned char val21, val22, val23, val24; + + unsigned int val_1, val_2, val_final; + + // Channel Change Sequence + gpio_i2c_write(nvp6158_iic_addr[vin_fsc_val->devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[vin_fsc_val->devnum], 0x2B, vin_fsc_val->ch); + + gpio_i2c_write(nvp6158_iic_addr[vin_fsc_val->devnum], 0xFF, 0x13); + + //B13 0xB4 [ 7:0] r_fsc_line_diff_sts + val01 = gpio_i2c_read(nvp6158_iic_addr[vin_fsc_val->devnum], 0xB4); + //B13 0xB5 [15:8] r_fsc_line_diff_sts + val02 = gpio_i2c_read(nvp6158_iic_addr[vin_fsc_val->devnum], 0xB5); + //B13 0xB6 [23:16] r_fsc_line_diff_sts + val03 = gpio_i2c_read(nvp6158_iic_addr[vin_fsc_val->devnum], 0xB6); + //B13 0xB7 [31:24] r_fsc_line_diff_sts + val04 = gpio_i2c_read(nvp6158_iic_addr[vin_fsc_val->devnum], 0xB7); + + //B13 0xB4 [ 7:0] r_fsc_line2_diff_sts + val11 = gpio_i2c_read(nvp6158_iic_addr[vin_fsc_val->devnum], 0xB8); + //B13 0xB5 [15:8] r_fsc_line2_diff_sts + val12 = gpio_i2c_read(nvp6158_iic_addr[vin_fsc_val->devnum], 0xB9); + //B13 0xB6 [23:16] r_fsc_line2_diff_sts + val13 = gpio_i2c_read(nvp6158_iic_addr[vin_fsc_val->devnum], 0xBA); + //B13 0xB7 [31:24] r_fsc_line2_diff_sts + val14 = gpio_i2c_read(nvp6158_iic_addr[vin_fsc_val->devnum], 0xBB); + + //B13 0xB4 [ 7:0] r_fsc_line_diff_final + val21 = gpio_i2c_read(nvp6158_iic_addr[vin_fsc_val->devnum], 0xBC); + //B13 0xB5 [15:8] r_fsc_line_diff_final + val22 = gpio_i2c_read(nvp6158_iic_addr[vin_fsc_val->devnum], 0xBD); + //B13 0xB6 [23:16] r_fsc_line_diff_final + val23 = gpio_i2c_read(nvp6158_iic_addr[vin_fsc_val->devnum], 0xBE); + //B13 0xB7 [31:24] r_fsc_line_diff_final + val24 = gpio_i2c_read(nvp6158_iic_addr[vin_fsc_val->devnum], 0xBF); + + + val_1 = ((val04 << 24) | (val03 << 16) | (val02 << 8) | val01); + val_2 = ((val14 << 24) | (val13 << 16) | (val12 << 8) | val11); + val_final = ((val24 << 24) | (val23 << 16) | (val22 << 8) | val21); + + vin_fsc_val->fsc_val1 = val_1; + vin_fsc_val->fsc_val2 = val_2; + vin_fsc_val->fsc_final = val_final; +} + +// 170420 RAPTOR3 DR2 DEMO ONLY +void nvp6158_video_input_aeq_val_set(video_input_aeq_set *vin_aeq_val) // 170214 aeq value set +{ +// if(vin_aeq_val->aeq_val == 0x00) +// { +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0xFF, 0x05 + vin_aeq_val->ch); +// +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x58, 0x03); +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x59, 0x00); +// } +// +// else if(vin_aeq_val->aeq_val == 0x02) +// { +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0xFF, 0x05 + vin_aeq_val->ch); +// +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x58, 0xD3); +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x59, 0x11); +// } + +} + +// 170420 RAPTOR3 DR2 DEMO ONLY +void nvp6158_video_input_deq_val_set(video_input_deq_set *vin_deq_val) // 170214 deq value set +{ + // B9 0x80/0xA0/0xC0/0xE0 [3:0] +// if(vin_deq_val->deq_val == 0x00) +// { +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0xFF, 0x09); +// +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x80 + ((vin_deq_val->ch)*0x20), 0x00); +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x84 + ((vin_deq_val->ch)*0x20), 0x21); +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x85 + ((vin_deq_val->ch)*0x20), 0x60); +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x86 + ((vin_deq_val->ch)*0x20), 0xF6); +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x87 + ((vin_deq_val->ch)*0x20), 0x20); +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x88 + ((vin_deq_val->ch)*0x20), 0x00); +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x89 + ((vin_deq_val->ch)*0x20), 0xDC); +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x8a + ((vin_deq_val->ch)*0x20), 0x02); +// +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0xFF, 0x00); +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x30, 0x18); +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x3C, 0x90); +// } +// else if(vin_deq_val->deq_val == 0x02) +// { +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0xFF, 0x09); +// +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x80 + ((vin_deq_val->ch)*0x20), 0xA7); +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x84 + ((vin_deq_val->ch)*0x20), 0x21); +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x85 + ((vin_deq_val->ch)*0x20), 0x60); +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x86 + ((vin_deq_val->ch)*0x20), 0xF6); +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x87 + ((vin_deq_val->ch)*0x20), 0x20); +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x88 + ((vin_deq_val->ch)*0x20), 0x00); +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x89 + ((vin_deq_val->ch)*0x20), 0xDC); +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x8a + ((vin_deq_val->ch)*0x20), 0x02); +// +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0xFF, 0x00); +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x30, 0x16); +// } + +// val = gpio_i2c_read(nvp6158_iic_addr[chip_num], 0x80 + ((vin_deq_val->ch)*0x20)); +// val = (vin_deq_val->deq_val & 0xF) | val; +// +// gpio_i2c_write(nvp6158_iic_addr[chip_num], 0x80 + ((vin_deq_val->ch)*0x20), val); +} + +void nvp6158_video_input_acc_gain_val_read(video_input_acc_gain_val *vin_acc_gain) // 170215 acc gain read +{ + unsigned char val1, val2; + + if(vin_acc_gain->func_sel == ACC_GAIN_NORMAL) { + + gpio_i2c_write(nvp6158_iic_addr[vin_acc_gain->devnum], 0xFF, 0x05 + vin_acc_gain->ch); + + val1 = gpio_i2c_read(nvp6158_iic_addr[vin_acc_gain->devnum],0xE2) & 0x7; // B5 0xE2 acc gain [10:8] + val2 = gpio_i2c_read(nvp6158_iic_addr[vin_acc_gain->devnum],0xE3); // B5 0xE3 acc gain [7:0] + } else if(vin_acc_gain->func_sel == ACC_GAIN_DEBUG) { // DEBUG + gpio_i2c_write(nvp6158_iic_addr[vin_acc_gain->devnum], 0xFF, 0x00); + val1 = 0; + val2 = gpio_i2c_read(nvp6158_iic_addr[vin_acc_gain->devnum],0xD8 + vin_acc_gain->ch); // B13 0xC6 acc gain [9:8] + } else { + gpio_i2c_write(nvp6158_iic_addr[vin_acc_gain->devnum], 0xFF, 0x05); + + val1 = gpio_i2c_read(nvp6158_iic_addr[vin_acc_gain->devnum],0xE2) & 0x7; // B5 0xE2 acc gain [10:8] + val2 = gpio_i2c_read(nvp6158_iic_addr[vin_acc_gain->devnum],0xE3); // B5 0xE3 acc gain [7:0] + } + + vin_acc_gain->acc_gain_val = val1 << 8 | val2; +} + +void nvp6158_video_output_data_out_mode_set(video_output_data_out_mode *vo_data_out_mode) +{ + unsigned char temp_val = 0x0; + + // Show/Hide mode is using register Bank 0 0x7A, 7B + // CH2 CH1 CH4 CH3 + // 0x7A [7 : 4][3 : 0] 0x7B [7 : 4][3 : 0] + gpio_i2c_write(nvp6158_iic_addr[vo_data_out_mode->devnum], 0xFF, 0x00); + + switch(vo_data_out_mode -> ch) { + case CH1 : + case CH2 : temp_val = gpio_i2c_read(nvp6158_iic_addr[vo_data_out_mode->devnum], 0x7A); + break; + case CH3 : + case CH4 : temp_val = gpio_i2c_read(nvp6158_iic_addr[vo_data_out_mode->devnum], 0x7B); + break; + } + + switch(vo_data_out_mode -> ch) { + case CH1 : + case CH3 : temp_val = ((temp_val & 0xF0) | (vo_data_out_mode -> set_val & 0xF)); + break; + case CH2 : + case CH4 : temp_val = ((temp_val & 0x0F) | ((vo_data_out_mode -> set_val & 0xF) << 4)); + break; + } + + // printk("[%s:%s] : %s >>>> temp_val [ %x ]\n", __FILE__, __LINE__, __FUNCTION__,temp_val); + switch(vo_data_out_mode -> ch) { + case CH1 : + case CH2 : gpio_i2c_write(nvp6158_iic_addr[vo_data_out_mode->devnum], 0x7A, temp_val); + break; + case CH3 : + case CH4 : gpio_i2c_write(nvp6158_iic_addr[vo_data_out_mode->devnum], 0x7B, temp_val); + break; + } +} + + +unsigned char __nvp6158_IsOver3MRTVideoFormat( decoder_dev_ch_info_s *decoder_info ) +{ + unsigned char ret = 0; // + + if((decoder_info->fmt_def == AHD30_3M_30P) || + (decoder_info->fmt_def == AHD30_3M_25P) || + (decoder_info->fmt_def == AHD30_4M_30P) || + (decoder_info->fmt_def == AHD30_4M_25P) || + (decoder_info->fmt_def == AHD30_5M_20P) || + (decoder_info->fmt_def == AHD30_5_3M_20P) || + (decoder_info->fmt_def == AHD30_6M_18P) || + (decoder_info->fmt_def == AHD30_6M_20P) || + (decoder_info->fmt_def == AHD30_8M_12_5P) || + (decoder_info->fmt_def == AHD30_8M_15P) || + (decoder_info->fmt_def == TVI_4M_30P) || + (decoder_info->fmt_def == TVI_4M_25P) || + (decoder_info->fmt_def == TVI_5M_20P) || + (decoder_info->fmt_def == TVI_8M_12_5P) || + (decoder_info->fmt_def == TVI_8M_15P) || + (decoder_info->fmt_def == CVI_4M_25P) || + (decoder_info->fmt_def == CVI_4M_30P) || + (decoder_info->fmt_def == CVI_5M_20P) || + (decoder_info->fmt_def == CVI_8M_15P) || + (decoder_info->fmt_def == CVI_8M_12_5P)) { + ret = 1; + } + return ret; // 0:Over 3M RT, 1:other formation +} + +unsigned char nvp6158_s_only_onetime_run[32] = {0, }; +void nvp6158_video_input_onvideo_set(decoder_dev_ch_info_s *decoder_info) +{ + unsigned char format_3M_RT; + + printk("onvideo_set dev_num[%x] ch_num[%x] fmt_def[%d]", + decoder_info->devnum, decoder_info->ch, decoder_info->fmt_def); + + /* after 09/12 */ + format_3M_RT = __nvp6158_IsOver3MRTVideoFormat(decoder_info); + + if(format_3M_RT) { + /* DECI_FILTER_ON */ + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF, 0x05 + decoder_info->ch); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x50, 0x76); + } else { + /* DECI_FILTER_OFF */ + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF, 0x05 + decoder_info->ch); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x50, 0xc6); + } + + + if(decoder_info->fmt_def == CVI_HD_30P || decoder_info->fmt_def == CVI_HD_30P_EX || + decoder_info->fmt_def == AHD20_720P_30P || decoder_info->fmt_def == AHD20_720P_30P_EX || + decoder_info->fmt_def == AHD20_720P_30P_EX_Btype) { + //meant to remove pre-connection issue. 07.31 + if( nvp6158_s_only_onetime_run[decoder_info->ch + 4 * decoder_info->devnum] == 0) { + nvp6158_video_input_vafe_reset(decoder_info); + nvp6158_s_only_onetime_run[decoder_info->ch + 4 * decoder_info->devnum] = 1; + } + } else { + if( nvp6158_s_only_onetime_run[decoder_info->ch + 4 * decoder_info->devnum] == 0) { + nvp6158_s_only_onetime_run[decoder_info->ch + 4 * decoder_info->devnum] = 1; + } + } +} + +void nvp6168_video_input_onvideo_set(decoder_dev_ch_info_s *decoder_info) +{ +// unsigned char format_3M_RT; + unsigned char ch = decoder_info->ch % 4; + unsigned char devnum = decoder_info->devnum; + unsigned char val_9x44; +#ifndef _NVP6168_USE_MANUAL_MODE_ + unsigned char set_done=0xF0; +#endif + printk("onvideo_set dev_num[%x] ch_num[%x] fmt_def[%d]", + decoder_info->devnum, decoder_info->ch, decoder_info->fmt_def); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x09); + val_9x44 = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x44); + val_9x44 &= ~(1 << ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x44, val_9x44); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x50 + (ch*4) , 0x30); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x51 + (ch*4) , 0x6F); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x52 + (ch*4) , 0x67); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x53 + (ch*4) , 0x48); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x00 + (ch*0x20), 0x00); +#ifndef _NVP6168_USE_MANUAL_MODE_ + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + set_done |= gpio_i2c_read(nvp6158_iic_addr[devnum], 0x70); + set_done |= (1<devnum], 0xFF, 0x05 + vin_vfc->ch); + val_5678xF0 = gpio_i2c_read(nvp6158_iic_addr[vin_vfc->devnum], 0xF0); + vin_vfc->vfc = val_5678xF0; +} + +void nvp6158_video_input_auto_ch_sw_rst(decoder_dev_ch_info_s *decoder_info) +{ + unsigned char val_1x97; + //Software Reset + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF,0x01); + val_1x97 = gpio_i2c_read(nvp6158_iic_addr[decoder_info->devnum], 0x97); + val_1x97 &= ~(1 << decoder_info->ch); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x97, val_1x97); + msleep(10); + val_1x97 = gpio_i2c_read(nvp6158_iic_addr[decoder_info->devnum], 0x97); + val_1x97 |= (1 << decoder_info->ch); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x97, val_1x97); + + printk("[DRV] Decoder CH[%d] Software Reset done\n",decoder_info->ch); +} + +void nvp6158_video_input_vafe_reset(decoder_dev_ch_info_s *decoder_info) +{ + unsigned char val_0x00; + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF, 0x00); + val_0x00 = gpio_i2c_read(nvp6158_iic_addr[decoder_info->devnum], 0x00 + decoder_info->ch); + _SET_BIT(val_0x00, 0); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + decoder_info->ch, val_0x00); + msleep(10); + _CLE_BIT(val_0x00, 0); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + decoder_info->ch, val_0x00); + printk("[DRV] AFE CH:[%d] Reset done\n", decoder_info->ch); +} + +void nvp6158_video_input_manual_agc_stable_endi(decoder_dev_ch_info_s *decoder_info, int endi) +{ + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF, 0x05+decoder_info->ch); + if( endi == 1 ) { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x82, 0xff); + printk("[DRV] MANUAL AGC STABLE ENABLE CH:[%d]\n", decoder_info->ch); + } else { + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x82, 0x00); + printk("[DRV] MANUAL AGC STABLE ENABLE CH:[%d]\n", decoder_info->ch); + } +} + +void nvp6158_video_input_vafe_control(decoder_dev_ch_info_s *decoder_info, int cmd) +{ + unsigned char val_0x00; + + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0xFF, 0x00); + + if(cmd == 0) { + val_0x00 = gpio_i2c_read(nvp6158_iic_addr[decoder_info->devnum], 0x00 + decoder_info->ch); + _SET_BIT(val_0x00, 0); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + decoder_info->ch, val_0x00); + + printk("[DRV] [Ch:%d] AFE Power Down ... \n", decoder_info->ch); + + msleep(10); + } else if(cmd == 1) { + val_0x00 = gpio_i2c_read(nvp6158_iic_addr[decoder_info->devnum], 0x00 + decoder_info->ch); + _CLE_BIT(val_0x00, 0); + gpio_i2c_write(nvp6158_iic_addr[decoder_info->devnum], 0x00 + decoder_info->ch, val_0x00); + + printk("[DRV] [Ch:%d] AFE Power Up ... \n", decoder_info->ch); + + msleep(10); + } +} + +static __maybe_unused unsigned int __nvp6158_s_max_min_exclude_avg_func(unsigned int* input_arry, int cnt) +{ + unsigned int max, min, sum = 0, result = 0; + unsigned int ii; + + max = input_arry[0]; + min = input_arry[0]; + + for(ii = 0; ii < cnt; ii++) { + max = max > input_arry[ii] ? max : input_arry[ii]; + min = min > input_arry[ii] ? input_arry[ii] : min; + + sum += input_arry[ii]; + } + + result = sum - (max + min); + + if(result == 0) { + return 0; + } else { + result /= ( cnt - 2 ); + } + + return result; +} + +static unsigned int __nvp6158_s_distinguish_5M_ahd_tvi_func(unsigned int* input_arry, int cnt) +{ + unsigned int chk1, chk2; + unsigned int max, max_idx = 0; + unsigned int calc_array[10][10] = { {0, 0}, }; + unsigned int need_update = 0; + unsigned int find_idx = 0; + unsigned int ii, ij; + unsigned int inner_idx = 0; + + chk1 = input_arry[0]; + + for(ii = 0; ii < cnt; ii++) { + chk2 = input_arry[ii]; + + if( chk1 == chk2) { + calc_array[0][inner_idx] += 1; + calc_array[1][inner_idx] = chk1; + } else if( chk1 != chk2 ) { + for(ij = 0; ij < ii; ij++) { + if( calc_array[1][ij] == chk2 ) { + find_idx = ij; + calc_array[0][find_idx] += 1; + calc_array[1][find_idx] = chk2; + need_update = 0; + break; + } + need_update = 1; + } + + if(need_update) { + inner_idx += 1; + calc_array[0][inner_idx] += 1; + calc_array[1][inner_idx] = chk2; + } + } + chk1 = chk2; + } + + max = calc_array[0][0]; + + for(ii = 0; ii < cnt; ii++) { + if( max < calc_array[0][ii] ) { + max_idx = ii; + max = calc_array[0][ii]; + } + } + + + for(ii = 0; ii < cnt; ii++) { + printk("[DRV] [ idx %d ] [ num %d ] [ val %x ]\n", ii, calc_array[0][ii], calc_array[1][ii]); + } + + printk("[DRV] [ max_idx : %d ]\n", max_idx); + printk("[DRV] [ inner_idx : %d ]\n", inner_idx); + + return calc_array[1][max_idx]; +} + + +void nvp6158_video_input_ahd_tvi_distinguish(decoder_dev_ch_info_s *decoder_info) +{ + unsigned char ch = decoder_info->ch; + unsigned char devnum = decoder_info->devnum; + unsigned char fmtdef = decoder_info->fmt_def; + unsigned char ii; + unsigned int check_point; + + unsigned char check_time = 10; + + +#if 1 + unsigned int B5xF5_F4[10]; + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05 + ch); + + for(ii = 0; ii < check_time; ii++) { + msleep(100); + B5xF5_F4[ii] = ( gpio_i2c_read(nvp6158_iic_addr[devnum], 0xF5) << 8 ) | + gpio_i2c_read(nvp6158_iic_addr[devnum], 0xF4); + printk("[DRV] [Ch:%d] %d time B5xF3_F4 : %x \n", ch, ii, B5xF5_F4[ii]); + } + + check_point = __nvp6158_s_distinguish_5M_ahd_tvi_func( B5xF5_F4, check_time ); + + if( fmtdef == AHD30_5M_20P ) { + if( ( check_point & 0xfff ) == 0x7c2) { + decoder_info->fmt_def = TVI_5M_20P; + printk("[DRV] [Ch:%d] Get Format : AHD 5M 20P, Change Format : TVI 5M 20P\n", decoder_info->ch); + } else if( ( check_point & 0xfff ) == 0x7c4) { + decoder_info->fmt_def = CVI_5M_20P; + printk("[DRV] [Ch:%d] Get Format : AHD 5M 20P, Change Format : CVI 5M 20P\n", decoder_info->ch); + } else { + + printk("[DRV] [Ch:%d] Get Format : AHD 5M 20P, Not Change Format\n", decoder_info->ch); + } + } else if( fmtdef == 0x2B) { + if( ( check_point & 0xfff ) >= 0x673) { + decoder_info->fmt_def = TVI_4M_15P; + printk("[DRV] [Ch:%d] Get Format : AHD 4M15P #0P, Change Format : TVI 4M 15P\n", decoder_info->ch); + } + } else { + decoder_info->fmt_def = fmtdef; + } + + +#else + unsigned int B5xE8_E9[10] = {0, }; + unsigned int B5xEA_EB[10] = {0, }; + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05 + ch); + + + for(ii = 0; ii < check_time; ii++) + { + msleep(10); + B5xE8_E9[ii] = ( gpio_i2c_read(nvp6158_iic_addr[devnum], 0xE8) << 8 ) | gpio_i2c_read(nvp6158_iic_addr[devnum], 0xE9); + B5xEA_EB[ii] = ( gpio_i2c_read(nvp6158_iic_addr[devnum], 0xEA) << 8 ) | gpio_i2c_read(nvp6158_iic_addr[devnum], 0xEB); + printk("[DRV] [Ch:%d] %d time 0xE8_0xE9 : %x \n", decoder_info->ch, ii, B5xE8_E9[ii]); + printk("[DRV] [Ch:%d] %d time 0xEA_0xEB : %x \n", decoder_info->ch, ii, B5xEA_EB[ii]); + } + + check_point1 = __nvp6158_s_max_min_exclude_avg_func( B5xE8_E9, check_time ); + check_point2 = __nvp6158_s_max_min_exclude_avg_func( B5xEA_EB, check_time ); + + printk("[DRV] [Ch:%d] AVG 0xE8_0xE9 : %x \n", decoder_info->ch, check_point1); + printk("[DRV] [Ch:%d] AVG 0xEA_0xEB : %x \n", decoder_info->ch, check_point2); + + if( ( check_point1 < 0x30 ) && ( check_point2 < 0x30 ) ) + { + if( fmtdef == AHD30_5M_20P ) + { + decoder_info->fmt_def = TVI_5M_20P; + + printk("[DRV] [Ch:%d] Get Format : AHD 5M 20P, Change Format : TVI 5M 20P\n", decoder_info->ch); + } + else if( fmtdef == AHD30_3M_30P ) /* Not Yet Support , only add item */ + { + decoder_info->fmt_def = TVI_4M_15P; + + printk("[DRV] [Ch:%d] Get Format : AHD 3M #0P, Change Format : TVI 4M 15P\n", decoder_info->ch); + } + else + { + decoder_info->fmt_def = fmtdef; + } + } + else + { + decoder_info->fmt_def = fmtdef; + } +#endif +} + +void nvp6168_video_input_cvi_tvi_5M20p_distinguish(decoder_dev_ch_info_s *decoder_info) +{ + unsigned char ch = decoder_info->ch; + unsigned char devnum = decoder_info->devnum; +// unsigned char fmtdef = decoder_info->fmt_def; + unsigned char ii; + unsigned int check_point; + + unsigned char check_time = 10; + + + unsigned int B5xF5_F4[10]; + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05 + ch); + + for(ii = 0; ii < check_time; ii++) { + msleep(100); + B5xF5_F4[ii] = ( gpio_i2c_read(nvp6158_iic_addr[devnum], 0xF5) << 8 ) | + gpio_i2c_read(nvp6158_iic_addr[devnum], 0xF4); + printk("[DRV] [Ch:%d] %d time B5xF3_F4 : %x \n", ch, ii, B5xF5_F4[ii]); + } + + check_point = __nvp6158_s_distinguish_5M_ahd_tvi_func( B5xF5_F4, check_time ); + + if( ( check_point & 0xfff ) == 0x7c4) { + decoder_info->fmt_def = CVI_5M_20P; + printk("[DRV] [Ch:%d] Get Format : AHD 5M 20P, Change Format : CVI 5M 20P\n", decoder_info->ch); + } else { + + decoder_info->fmt_def = TVI_5M_20P; + printk("[DRV] [Ch:%d] Get Format : AHD 5M 20P, Change Format : TVI 5M 20P\n", decoder_info->ch); + } + +} + + +static unsigned int __nvp6158_s_distinguish_8M_cvi_tvi_func(unsigned int* input_arry, int cnt) +{ + unsigned int chk1, chk2; + unsigned int max, max_idx = 0; + unsigned int calc_array[10][10] = { {0, 0}, }; + unsigned int need_update = 0; + unsigned int find_idx = 0; + unsigned int ii, ij; + unsigned int inner_idx = 0; + + chk1 = input_arry[0]; + + for(ii = 0; ii < cnt; ii++) { + chk2 = input_arry[ii]; + + if( chk1 == chk2) { + calc_array[0][inner_idx] += 1; + calc_array[1][inner_idx] = chk1; + } else if( chk1 != chk2 ) { + for(ij = 0; ij < ii; ij++) { + if( calc_array[1][ij] == chk2 ) { + find_idx = ij; + calc_array[0][find_idx] += 1; + calc_array[1][find_idx] = chk2; + need_update = 0; + break; + } + need_update = 1; + } + + if(need_update) { + inner_idx += 1; + calc_array[0][inner_idx] += 1; + calc_array[1][inner_idx] = chk2; + } + } + chk1 = chk2; + } + + max = calc_array[0][0]; + + for(ii = 0; ii < cnt; ii++) { + if( max < calc_array[0][ii] ) { + max_idx = ii; + max = calc_array[0][ii]; + } + } + + + for(ii = 0; ii < cnt; ii++) { + printk("[DRV] [ idx %d ] [ num %d ] [ val %x ]\n", ii, calc_array[0][ii], calc_array[1][ii]); + } + + printk("[DRV] [ max_idx : %d ]\n", max_idx); + printk("[DRV] [ inner_idx : %d ]\n", inner_idx); + + return calc_array[1][max_idx]; +} + + +int nvp6158_video_input_cvi_tvi_distinguish(decoder_dev_ch_info_s *decoder_info) +{ + unsigned char ch = decoder_info->ch; + unsigned char devnum = decoder_info->devnum; + unsigned char fmtdef = decoder_info->fmt_def; + unsigned char ii; + unsigned int check_point; + + unsigned char check_time = 10; + + unsigned int B13xAB[10], B13xAB_zerocnt=0; + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x2B, ch % 4 ); + + for(ii = 0; ii < check_time; ii++) { + msleep(100); + B13xAB[ii] = gpio_i2c_read(nvp6158_iic_addr[devnum], 0xAB); + if(B13xAB[ii] == 0) { + B13xAB_zerocnt ++; + } + printk("[DRV] [Ch:%d] %d time B13xAB : %x \n", ch, ii, B13xAB[ii]); + } + + if(B13xAB_zerocnt > 2) + return -1; + + check_point = __nvp6158_s_distinguish_8M_cvi_tvi_func( B13xAB, check_time ); + + if( fmtdef == CVI_8M_15P || fmtdef == CVI_8M_12_5P ) { + if( ( check_point & 0xff ) > 0x1A ) { + if( fmtdef == CVI_8M_12_5P ) { + decoder_info->fmt_def = TVI_8M_12_5P; + printk("[DRV] [Ch:%d] Get Format : CVI 8M 12_5P, Change Format : TVI 8M 12_5P\n", decoder_info->ch); + } else { + decoder_info->fmt_def = TVI_8M_15P; + printk("[DRV] [Ch:%d] Get Format : CVI 8M 15P, Change Format : TVI 8M 15P\n", decoder_info->ch); + } + } else { + printk("[DRV] [Ch:%d] Get Format : CVI 8M, Not Change Format\n", decoder_info->ch); + } + } else { + decoder_info->fmt_def = fmtdef; + } + return 0; +} + +static unsigned int __nvp6158_s_distinguish_ahd_nrt_func(unsigned int* input_arry, int cnt) +{ + unsigned int chk1, chk2; + unsigned int max, max_idx = 0; + unsigned int calc_array[10][10] = { {0, 0}, }; + unsigned int need_update = 0; + unsigned int find_idx = 0; + unsigned int ii, ij; + unsigned int inner_idx = 0; + + chk1 = input_arry[0]; + + for(ii = 0; ii < cnt; ii++) { + chk2 = input_arry[ii]; + + if( chk1 == chk2) { + calc_array[0][inner_idx] += 1; + calc_array[1][inner_idx] = chk1; + } else if( chk1 != chk2 ) { + for(ij = 0; ij < ii; ij++) { + if( calc_array[1][ij] == chk2 ) { + find_idx = ij; + calc_array[0][find_idx] += 1; + calc_array[1][find_idx] = chk2; + need_update = 0; + break; + } + need_update = 1; + } + + if(need_update) { + inner_idx += 1; + calc_array[0][inner_idx] += 1; + calc_array[1][inner_idx] = chk2; + } + } + chk1 = chk2; + } + + max = calc_array[0][0]; + + for(ii = 0; ii < cnt; ii++) { + if( max < calc_array[0][ii] ) { + max_idx = ii; + max = calc_array[0][ii]; + } + } + + + for(ii = 0; ii < cnt; ii++) { + printk("[DRV] [ idx %d ] [ num %d ] [ val %x ]\n", ii, calc_array[0][ii], calc_array[1][ii]); + } + + printk("[DRV] [ max_idx : %d ]\n", max_idx); + printk("[DRV] [ inner_idx : %d ]\n", inner_idx); + + return calc_array[1][max_idx]; +} + + +void nvp6158_video_input_ahd_nrt_distinguish(decoder_dev_ch_info_s *decoder_info) +{ + unsigned char ch = decoder_info->ch; + unsigned char devnum = decoder_info->devnum; + unsigned char ii; + unsigned int check_point; + + unsigned char check_time = 10; + + unsigned int B5xF3[10]; + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05 + ch); + + for(ii = 0; ii < check_time; ii++) { + msleep(30); + B5xF3[ii] = gpio_i2c_read(nvp6158_iic_addr[devnum], 0xF3); + printk("[DRV] [Ch:%d] %d time B5xF3 : %x \n", ch, ii, B5xF3[ii]); + } + + check_point = __nvp6158_s_distinguish_ahd_nrt_func( B5xF3, check_time ); + + if( ( check_point & 0xff ) == 0x14 ) { + decoder_info->fmt_def = AHD20_1080P_12_5P_EX; + printk("[DRV] [Ch:%d] Get Format : AHD 1080P 12.5P\n", decoder_info->ch); + } else if( ( check_point & 0xff ) == 0x11 ) { + decoder_info->fmt_def = AHD20_1080P_15P_EX; + printk("[DRV] [Ch:%d] Get Format : AHD 1080P 15P\n", decoder_info->ch); + } else { + decoder_info->fmt_def = NC_VIVO_CH_FORMATDEF_UNKNOWN; + printk("[DRV] [Ch:%d] Get Format : Unknown Format \n", decoder_info->ch); + } +} + +static unsigned int __nvp6158_s_distinguish_2M_cvi_ahd_func(unsigned int* input_arry, int cnt) +{ + unsigned int chk1, chk2; + unsigned int max, max_idx = 0; + unsigned int calc_array[10][10] = { {0, 0}, }; + unsigned int need_update = 0; + unsigned int find_idx = 0; + unsigned int ii, ij; + unsigned int inner_idx = 0; + + chk1 = input_arry[0]; + + for(ii = 0; ii < cnt; ii++) { + chk2 = input_arry[ii]; + + if( chk1 == chk2) { + calc_array[0][inner_idx] += 1; + calc_array[1][inner_idx] = chk1; + } else if( chk1 != chk2 ) { + for(ij = 0; ij < ii; ij++) { + if( calc_array[1][ij] == chk2 ) { + find_idx = ij; + calc_array[0][find_idx] += 1; + calc_array[1][find_idx] = chk2; + need_update = 0; + break; + } + need_update = 1; + } + + if(need_update) { + inner_idx += 1; + calc_array[0][inner_idx] += 1; + calc_array[1][inner_idx] = chk2; + } + } + + chk1 = chk2; + } + + max = calc_array[0][0]; + + for(ii = 0; ii < cnt; ii++) { + if( max < calc_array[0][ii] ) { + max_idx = ii; + max = calc_array[0][ii]; + } + } + + + for(ii = 0; ii < cnt; ii++) { + printk("[DRV] [ idx %d ] [ num %d ] [ val %x ]\n", ii, calc_array[0][ii], calc_array[1][ii]); + } + + printk("[DRV] [ max_idx : %d ]\n", max_idx); + printk("[DRV] [ inner_idx : %d ]\n", inner_idx); + + return calc_array[1][max_idx]; +} + + +void nvp6158_video_input_cvi_ahd_1080p_distinguish(decoder_dev_ch_info_s *decoder_info) +{ + unsigned char ch = decoder_info->ch; + unsigned char devnum = decoder_info->devnum; + unsigned char fmtdef = decoder_info->fmt_def; + unsigned char ii; + unsigned int check_point; + + unsigned char check_time = 10; + + unsigned int B13xAB[10]; + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x2B, ch % 4 ); + + for(ii = 0; ii < check_time; ii++) { + msleep(100); + B13xAB[ii] = gpio_i2c_read(nvp6158_iic_addr[devnum], 0xAB); + printk("[DRV] [Ch:%d] %d time B13xAB : %x \n", ch, ii, B13xAB[ii]); + } + + check_point = __nvp6158_s_distinguish_2M_cvi_ahd_func( B13xAB, check_time ); + + if( fmtdef == CVI_FHD_25P ) { + if( ( check_point & 0xff ) <= 0x09 ) { + + decoder_info->fmt_def = AHD20_1080P_25P; + printk("[DRV] [Ch:%d] Get Format : CVI 2M 25P, Change Format : AHD 2M 25P\n", decoder_info->ch); + } else { + printk("[DRV] [Ch:%d] Get Format : CVI 2M, Not Change Format\n", decoder_info->ch); + } + } else { + decoder_info->fmt_def = fmtdef; + } +} + + diff --git a/drivers/media/i2c/nvp6158_drv/nvp6158_video_auto_detect.h b/drivers/media/i2c/nvp6158_drv/nvp6158_video_auto_detect.h new file mode 100644 index 000000000000..a3be6527fcfe --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/nvp6158_video_auto_detect.h @@ -0,0 +1,260 @@ +// SPDX-License-Identifier: GPL-2.0 +/******************************************************************************** +* +* Copyright (C) 2017 NEXTCHIP Inc. All rights reserved. +* Module : video_auto_detect.h +* Description : +* Author : +* Date : +* Version : Version 1.0 +* +******************************************************************************** +* History : +* +* +********************************************************************************/ +#ifndef _RAPTOR3_VIDEO_AUTO_DETECT_H_ +#define _RAPTOR3_VIDEO_AUTO_DETECT_H_ + +#include "nvp6158_common.h" + +typedef enum CH_NUM +{ + CH1 = 0, + CH2, + CH3, + CH4 +} CH_NUM; + +typedef struct _video_input_vafe { + unsigned char powerdown; //B0 0x00/1/2/3 [0] + unsigned char gain; //B0 0x00/1/2/3 [4] + unsigned char spd; //B5/6/7/8 0x00 [5:4] + + unsigned char ctrlreg; //B5/6/7/8 0x01 [6] + unsigned char ctrlibs; //B5/6/7/8 0x01 [5:4] + unsigned char adcspd; //B5/6/7/8 0x01 [2] + unsigned char clplevel; //B5/6/7/8 0x01 [1:0] + + + unsigned char eq_band; //B5/6/7/8 0x58 [6:4] + unsigned char lpf_front_band; //B5/6/7/8 0x58 [1:0] + + unsigned char clpmode; //B5/6/7/8 0x59 [7] + unsigned char f_lpf_bypass; //B5/6/7/8 0x59 [4] + unsigned char clproff; //B5/6/7/8 0x59 [3] + unsigned char b_lpf_bypass; //B5/6/7/8 0x59 [0] + + unsigned char duty; //B5/6/7/8 0x5B [6:4] + unsigned char ref_vol; //B5/6/7/8 0x5B [1:0] + + unsigned char lpf_back_band; //B5/6/7/8 0x5C [6:4] + unsigned char clk_sel; //B5/6/7/8 0x5C [3] + unsigned char eq_gainsel; //B5/6/7/8 0x5C [2:0] + +} video_input_vafe; + +typedef struct _video_input_auto_detect { + unsigned char ch; + unsigned char devnum; + + unsigned char d_cmp; //B5/6/7/8 0x03 + unsigned char slice_level; //B5/6/7/8 0x08 + unsigned char control_mode; //B5/6/7/8 0x47 + unsigned char gdf_fix_coeff; //B5/6/7/8 0x50 + unsigned char dfe_ref_sel; //B5/6/7/8 0x76 + unsigned char wpd_77; //B5/6/7/8 0x77 + unsigned char wpd_78; //B5/6/7/8 0x78 + unsigned char wpd_79; //B5/6/7/8 0x79 + unsigned char auto_gnos_mode; //B5/6/7/8 0x82 + unsigned char auto_sync_mode; //B5/6/7/8 0x83 + unsigned char hafc_bypass; //B5/6/7/8 0xB8 + + unsigned char novid_vfc_init; //B13 0x31 + unsigned char stable_mode_1; //B13 0x0 + unsigned char stable_mode_2; //B13 0x1 + + unsigned char novid_det; //B0 0x23/0x27/0x2B/0x2F + video_input_vafe vafe; +} video_input_auto_detect; + +typedef struct _video_input_novid { + unsigned char ch; + unsigned char novid; //B0 0xa8 [3:0] MSB 1Ch ~ LSB 4Ch + unsigned char devnum; +} video_input_novid; + +typedef struct _video_input_vfc { + unsigned char ch; + unsigned char vfc; //B5/6/7/8 0xf0 + unsigned char devnum; +} video_input_vfc; + +typedef struct _video_input_onvid_set { + unsigned char ch; + unsigned char auto_gnos_mode; //B5/6/7/8 0x82 + unsigned char auto_sync_mode; //B5/6/7/8 0x83 + unsigned char op_md; //B5/6/7/8 0xB8 +} video_input_onvid_set; + +typedef struct _video_input_onvid_set_2 { + unsigned char ch; + unsigned char dfe_ref_sel; //B5/6/7/8 0x76 + unsigned char wpd_77; //B5/6/7/8 0x77 + unsigned char wpd_78; //B5/6/7/8 0x78 + unsigned char wpd_79; //B5/6/7/8 0x79 + unsigned char slice_mode; //B5/6/7/8 0x0E +} video_input_onvid_set_2; + +typedef struct _video_input_novid_set { + unsigned char ch; + unsigned char devnum; + unsigned char control_mode; + unsigned char gdf_fix_coeff; + unsigned char auto_gnos_mode; + unsigned char auto_sync_mode; + unsigned char hafc_bypass; + unsigned char dfe_ref_sel; //B5/6/7/8 0x76 + unsigned char wpd_77; //B5/6/7/8 0x77 + unsigned char wpd_78; //B5/6/7/8 0x78 + unsigned char wpd_79; //B5/6/7/8 0x79 + unsigned char slice_mode; //B5/6/7/8 0x0E +} video_input_novid_set; + +typedef struct _video_input_cable_dist { + unsigned char ch; + unsigned char devnum; + unsigned char dist; // B13 0xA0 + unsigned char FmtDef; + unsigned char cabletype; // 0:coax, 1:utp, 2:reserved1, 3:reserved2 +} video_input_cable_dist; + +typedef struct _video_input_sam_val { + unsigned char ch; + unsigned char devnum; + /* + unsigned char sam_val_1; // B13 0xCD [7:0] + unsigned char sam_val_2; // B13 0xCC [9:8] + */ + unsigned int sam_val; +} video_input_sam_val; + +typedef struct _video_input_hsync_accum { + unsigned char ch; + unsigned char devnum; + unsigned char h_lock; // Bank 0 0xE2 [3:0] [Ch3:Ch0] + unsigned int hsync_accum_val1; // Value 1 // 170210 Add + unsigned int hsync_accum_val2; // Value 2 // 170210 Add + unsigned int hsync_accum_result; // Value 1 - Value 2 // 170210 Fix +} video_input_hsync_accum; + +typedef struct _video_input_agc_val { + unsigned char ch; + unsigned char devnum; + unsigned char agc_lock; + unsigned char agc_val; // B13 0xB8 +} video_input_agc_val; + +typedef struct _video_input_format_set_done { // [add] 170209 format set done + unsigned char ch; + unsigned char set_val; // B13 0x70 [3:0] each channel +} video_input_format_set_done; + +typedef struct _video_input_fsc_val { + unsigned char ch; + unsigned char devnum; + unsigned int fsc_val1; + unsigned int fsc_val2; + unsigned int fsc_final; +} video_input_fsc_val; + +typedef struct _video_input_aeq_set { // 170214 AEQ Set + unsigned char ch; + unsigned char aeq_val; //B5/6/7/8 0x58 [7:4] +} video_input_aeq_set; + +typedef struct _video_input_deq_set { // 170214 DEQ Set + unsigned char ch; + unsigned char deq_val; // B9 0x80/0xA0/0xC0/0xE0 [3:0] +} video_input_deq_set; + +typedef struct _video_input_vfc_set { // 170215 VFC Setting Enable (temp) + unsigned char ch; + unsigned char set_val; +} video_input_vfc_set; + + +typedef struct _video_input_acc_gain_val { // 170215 acc gain value read + unsigned char ch; + unsigned char devnum; + unsigned int acc_gain_val; + unsigned char func_sel; +} video_input_acc_gain_val; + +typedef struct _video_input_sleep_time_val { // 170215 acc gain value read + unsigned char sleep_val; +} video_input_sleep_time_val; + +typedef struct _video_input_agc_reset_val { // 170221 agc init + unsigned char ch; + unsigned char reset_val; +} video_input_agc_reset_val; + +typedef struct _video_output_data_out_mode { + unsigned char ch; + unsigned char devnum; + unsigned char set_val; +} video_output_data_out_mode; + +typedef struct _video_input_manual_mode { + unsigned char ch; + unsigned char dev_num; +} video_input_manual_mode; + +typedef struct _video_input_onvideo_check_s { + unsigned char vfc; + unsigned char sw_rst_ret; + decoder_dev_ch_info_s info; +} video_input_onvideo_check_s; + + +void nvp6158_video_input_auto_detect_set(video_input_auto_detect *vin_auto_det); +void nvp6158_video_input_vfc_read(video_input_vfc *vin_vfc); +void nvp6158_video_input_novid_read(video_input_novid *vin_novid); // 170204 novid +void nvp6158_video_input_no_video_set(video_input_novid *auto_novid); // 170206 novideo set +void nvp6158_video_input_cable_dist_read(video_input_cable_dist *vin_cable_dist); // 170207 Cable Distance +void nvp6158_video_input_sam_val_read(video_input_sam_val *vin_sam_val ); // 170207 SAM Value +void nvp6158_video_input_hsync_accum_read(video_input_hsync_accum *vin_hsync_accum ); // 170207 Hsync Accumulation +void nvp6158_video_input_agc_val_read(video_input_agc_val *vin_agc_val); // 170207 AGC Value +void nvp6158_video_input_fsc_val_read(video_input_fsc_val *vin_fsc_val); // 170214 fsc value read +void nvp6158_video_input_aeq_val_set(video_input_aeq_set *vin_aeq_val); // 170214 aeq value set +void nvp6158_video_input_deq_val_set(video_input_deq_set *vin_deq_val); // 170214 deq value set +void nvp6158_video_input_acc_gain_val_read(video_input_acc_gain_val *vin_acc_gain); // 170215 acc gain value read +void nvp6158_video_output_data_out_mode_set(video_output_data_out_mode *vo_data_out_mode); // 170329 Data Out Mode Setting Func +void nvp6158_video_input_manual_mode_set(video_input_manual_mode *vin_manual_det); // 170330 Manual Mode Set +void nvp6158_video_input_onvideo_set(decoder_dev_ch_info_s *decoder_info); + +void nvp6158_video_input_onvideo_check_data(video_input_vfc *vin_vfc); +void nvp6158_video_input_auto_ch_sw_rst(decoder_dev_ch_info_s *decoder_info); + +int nvp6158_video_input_cable_measure_way( unsigned char ch, unsigned char devnum ); +void nvp6158_video_input_vafe_reset(decoder_dev_ch_info_s *decoder_info); +void nvp6158_video_input_vafe_control(decoder_dev_ch_info_s *decoder_info, int cmd); +void nvp6158_video_input_manual_agc_stable_endi(decoder_dev_ch_info_s *decoder_info, int endi); +void nvp6158_video_input_ahd_tvi_distinguish(decoder_dev_ch_info_s *decoder_info); +int nvp6158_video_input_cvi_tvi_distinguish(decoder_dev_ch_info_s *decoder_info); +void nvp6158_video_input_cvi_ahd_1080p_distinguish(decoder_dev_ch_info_s *decoder_info); +void nvp6158_video_input_ahd_nrt_distinguish(decoder_dev_ch_info_s *decoder_info); +unsigned char __nvp6158_IsOver3MRTVideoFormat( decoder_dev_ch_info_s *decoder_info ); +NC_VIVO_CH_FORMATDEF NVP6158_NC_VD_AUTO_VFCtoFMTDEF(unsigned char ch, unsigned char VFC); +void nvp6168_video_input_hsync_accum_read(video_input_hsync_accum *vin_hsync_accum ); +void nvp6168_video_input_onvideo_set(decoder_dev_ch_info_s *decoder_info); +void nvp6168_video_input_vfc_read(video_input_vfc *vin_vfc); +void nvp6168_video_input_auto_detect_set(video_input_auto_detect * vin_auto_det); +void nvp6168_video_input_no_video_set(video_input_novid * auto_novid); +void nvp6168_video_input_cvi_tvi_5M20p_distinguish(decoder_dev_ch_info_s *decoder_info); +void nvp6168_video_input_manual_mode_set(video_input_manual_mode *vin_manual_det); + + + +#endif /* _RAPTOR3_VIDEO_AUTO_DETECT_H_ */ diff --git a/drivers/media/i2c/nvp6158_drv/nvp6158_video_eq.c b/drivers/media/i2c/nvp6158_drv/nvp6158_video_eq.c new file mode 100644 index 000000000000..b06c23585f06 --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/nvp6158_video_eq.c @@ -0,0 +1,1994 @@ +// SPDX-License-Identifier: GPL-2.0 +/******************************************************************************** +* +* Copyright (C) 2017 NEXTCHIP Inc. All rights reserved. +* Module : video_auto_detect.c +* Description : +* Author : +* Date : +* Version : Version 1.0 +* +******************************************************************************** +* History : +* +* +********************************************************************************/ +#include +#include +#include "nvp6158_common.h" +#include "nvp6158_video_eq.h" +#include "nvp6158_video_eq_table.h" +#include "nvp6168_eq_table.h" +#include "nvp6158_audio.h" +#include "nvp6158_video_auto_detect.h" + +extern unsigned int nvp6158_iic_addr[4]; +extern int nvp6158_chip_id[4]; + +/******************************************************************************* +* Description : get eq stage(manual) +* Argurments : Ch(channel), pDistance(distance structure) +* Return value : distance( eq stage) +* Modify : +* warning : +*******************************************************************************/ +CABLE_DISTANCE NVP6158_NC_VD_MANUAL_CABLE_DISTANCE_Get (unsigned char Ch, video_input_cable_dist *pDistance) +{ + unsigned char sGetDistCnt = 0; + unsigned char sGetDist[10] = {0, }; + unsigned char sMaxGetDistVal; + unsigned char sMaxDistVal; + unsigned char ii; + int sMaxDistCnt; + + if((nvp6158_chip_id[Ch/4] == NVP6168C_R0_ID) || (nvp6158_chip_id[Ch/4] == NVP6168_R0_ID)) + { + sMaxDistCnt = 3; + } + else + { + sMaxDistCnt = 10; + } + + /* Get Distance 10 Times */ + while(sGetDistCnt < sMaxDistCnt) + { + msleep(1); + + //NC_VD_MANUAL_CABLE_DISTANCE_Read(pDistance); + if((nvp6158_chip_id[Ch/4] == NVP6168C_R0_ID) || (nvp6158_chip_id[Ch/4] == NVP6168_R0_ID)) + nvp6168_video_input_cable_manualdist_read(pDistance); + else + nvp6158_video_input_cable_manualdist_read(pDistance); + + sGetDist[ pDistance->dist ]++; + + sGetDistCnt++; + } + + sMaxDistVal = sGetDist[0]; + sMaxGetDistVal = 0; + + for(ii = 1; ii < 6; ii++) + { + if( sMaxDistVal < sGetDist[ii] ) + { + sMaxDistVal = sGetDist[ii]; + sMaxGetDistVal = ii; + } + } + + + printk("TESTING... Get Distance Value : "); + for(ii = 0; ii < 6; ii++) + printk("[ stage: %d _ get_value: %d ]\n", ii, sGetDist[ii]); + + printk(" Distance distinguish result : [%d]\n", sMaxGetDistVal); +// return (CABLE_DISTANCE)pDistance->Dist; + return sMaxGetDistVal; +} + +//0:video on; 1: video loss +static int nvp6158_IsChAlive(video_equalizer_info_s *ps_eq_info) +{ + unsigned char vloss; + unsigned char vloss_ch; + + gpio_i2c_write(nvp6158_iic_addr[ps_eq_info->devnum], 0xFF, 0x00); + vloss = gpio_i2c_read(nvp6158_iic_addr[ps_eq_info->devnum], 0xA8); + vloss_ch = ((vloss>>ps_eq_info->Ch)&0x01); + return vloss_ch; +} + +/************************************************************************************** +* @desc +* Function to read cable distance for EQ setting according to cable distance.(manual) +* +* @param_in (unsigned char)Ch Video Channel +* +* @return (CABLE_DISTANCE) 0 Short ( < 2M ) +* @return 1 100M +* @return 2 200M +* @return 3 300M +* @return 4 400M +* @return 5 500M +***************************************************************************************/ +//CABLE_DISTANCE NC_APP_VD_MANUAL_CABLE_DISTANCE_Get(unsigned char Ch, NC_VIVO_CH_FORMATDEF FmtDef ) +CABLE_DISTANCE nvp6158_get_eq_dist(video_equalizer_info_s *ps_eq_info) +{ + unsigned int Waiting_AGC_Stable_cnt = 0; + unsigned char oChannel = 0; + CABLE_DISTANCE Distance=0; + unsigned char oMaxTimeCnt = 20; + + video_input_hsync_accum Hsync_Accumulation; + video_input_sam_val SAM; + video_input_agc_val AGC; + NC_VD_AUTO_CABLE_DIST_STR Cable_Distance; + video_input_cable_dist sManualDistance; + + unsigned char oDevAddr = 0x00; + unsigned int AGC_Stable_Check = 0; + + oChannel = ps_eq_info->Ch; + oDevAddr = ps_eq_info->devnum; + + SAM.ch = oChannel; + SAM.devnum = oDevAddr; + Hsync_Accumulation.ch = oChannel; + Hsync_Accumulation.devnum = oDevAddr; + AGC.ch = oChannel; + AGC.devnum = oDevAddr; + Cable_Distance.Ch = oChannel; + Cable_Distance.devnum = oDevAddr; + if(nvp6158_chip_id[oChannel/4]==NVP6158_R0_ID || nvp6158_chip_id[oChannel/4]==NVP6158C_R0_ID) + { + while(1) + { + if(0==nvp6158_IsChAlive(ps_eq_info)) //when camera disconnect during eq caculation. + { + Distance = 0; + ps_eq_info->distance = Distance; + return Distance; + } + msleep(300); + + //NC_VD_AUTO_SAM_Get(oChannel, &SAM); + nvp6158_video_input_sam_val_read(&SAM); + //NC_VD_AUTO_HSYNC_Get(oChannel, &Hsync_Accumulation); + nvp6158_video_input_hsync_accum_read(&Hsync_Accumulation); + //NC_VD_AUTO_AGC_Get(oChannel, &AGC); + nvp6158_video_input_agc_val_read(&AGC); + //NC_VD_AUTO_ACC_GAIN_Get(Ch, ACC_GAIN_NORMAL); + //nvp6158_video_input_acc_gain_val_read(); + + //AGC_Stable_Check = NC_APP_VD_AGC_STABLE_Check(&Hsync_Accumulation, &AGC, &SAM); + AGC_Stable_Check = ((Hsync_Accumulation.hsync_accum_result!=0)&&(SAM.sam_val!=0)); + + if(AGC_Stable_Check || Waiting_AGC_Stable_cnt >= oMaxTimeCnt) + { + /* temp by edward */ + msleep(500); + //NC_VD_AUTO_HSYNC_Get(oChannel, &Hsync_Accumulation); + nvp6158_video_input_hsync_accum_read(&Hsync_Accumulation); + //NC_VD_AUTO_AGC_Get(oChannel, &AGC); + nvp6158_video_input_agc_val_read(&AGC); + //NC_VD_AUTO_SAM_Get(oChannel, &SAM); + nvp6158_video_input_sam_val_read(&SAM); + + printk("CH:[%d] Hsync 1 : %08x\n", oChannel, Hsync_Accumulation.hsync_accum_val1); + printk("CH:[%d] Hsync 2 : %08x\n", oChannel, Hsync_Accumulation.hsync_accum_val2); + printk("CH:[%d] Hsync Result : %08x\n", oChannel, Hsync_Accumulation.hsync_accum_result); + + printk("CH:[%d] Waiting for AGC Stable >>> %d\n", oChannel, Waiting_AGC_Stable_cnt + 1); + + if(Waiting_AGC_Stable_cnt >= oMaxTimeCnt) + { + printk("CH:[%d] AGC Stable Fail\n", oChannel); + } + else + { + printk("CH:[%d] AGC Stable Success.\n", oChannel); + } + Waiting_AGC_Stable_cnt = 0; + break; + } + + Waiting_AGC_Stable_cnt++; + } + } + /* convert vfc to formatDefine for APP and save videoloss information */ + sManualDistance.ch = oChannel; + sManualDistance.FmtDef = ps_eq_info->FmtDef; + sManualDistance.devnum = oDevAddr; + sManualDistance.cabletype = 0; // Now, we use coaxial cable(0:coax, 1:utp, 2:reserved1, 3:reserved2 + + Distance = NVP6158_NC_VD_MANUAL_CABLE_DISTANCE_Get(oChannel, &sManualDistance); + ps_eq_info->distance = Distance; + return Distance; +} + +unsigned char __nvp6158_video_cable_manualdistance( unsigned char cabletype, video_input_hsync_accum *pvin_hsync_accum, video_input_acc_gain_val *pvin_acc_val, nvp6158_video_equalizer_distance_table_s *pdistance_value ) +{ + int i = 0; + unsigned char distance = 0; /* default : short(0) */ + + /* for coaxial */ + if( cabletype == 0 ) + { + for( i = 0; i < 6; i++ ) + { + if( (pvin_hsync_accum->hsync_accum_result > pdistance_value->hsync_stage.hsync_stage[i]) ) + { + distance = i; + break; + } + + } + if( i == 6 ) + { + distance = 5; + } + } + + if( pvin_hsync_accum->hsync_accum_result == 0 ) + { + distance = 0; /* set default value(short:0) */ + } + + printk(">>>>> DRV[%s:%d] CH:%d, distance:%d\n", __func__, __LINE__, pvin_hsync_accum->ch, distance ); + + return distance; +} + +void __nvp6158_eq_base_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_base_s *pbase ) +{ + unsigned char devnum = pvin_eq_set->devnum; + unsigned char ch = pvin_eq_set->Ch; + unsigned char dist = pvin_eq_set->distance; + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05 + ch ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x01, pbase->eq_bypass[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x58, pbase->eq_band_sel[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5C, pbase->eq_gain_sel[dist] ); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xff, (ch < 2 ? 0x0a : 0x0b) ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x3d + (ch%2 * 0x80), pbase->deq_a_on[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x3c + (ch%2 * 0x80), pbase->deq_a_sel[dist] ); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x09 ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x80 + (ch * 0x20), pbase->deq_b_sel[dist] ); + +#if 0 //test + printk("ch[%d]: BASE, dist:%d, eq_bypass[%02x]\n", ch, dist, pbase->eq_bypass[dist] ); + printk("ch[%d]: BASE, dist:%d, eq_band_sel[%02x]\n", ch, dist, pbase->eq_band_sel[dist] ); + printk("ch[%d]: BASE, dist:%d, eq_gain_sel[%02x]\n", ch, dist, pbase->eq_gain_sel[dist] ); + printk("ch[%d]: BASE, dist:%d, deq_a_on[%02x]\n", ch, dist, pbase->deq_a_on[dist] ); + printk("ch[%d]: BASE, dist:%d, deq_a_sel[%02x]\n", ch, dist, pbase->deq_a_sel[dist] ); + printk("ch[%d]: BASE, dist:%d, deq_b_sel[%02x]\n", ch, dist, pbase->deq_b_sel[dist] ); +#endif +} + +void __nvp6158_eq_coeff_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_coeff_s *pcoeff ) +{ + unsigned char devnum = pvin_eq_set->devnum; + unsigned char ch = pvin_eq_set->Ch; + unsigned char dist = pvin_eq_set->distance; + +// unsigned char val_0x30; +// unsigned char val_0x31; +// unsigned char val_0x32; + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xff, (ch < 2 ? 0x0a : 0x0b) ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + (ch%2 * 0x80), pcoeff->deqA_01[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x31 + (ch%2 * 0x80), pcoeff->deqA_02[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x32 + (ch%2 * 0x80), pcoeff->deqA_03[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x33 + (ch%2 * 0x80), pcoeff->deqA_04[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + (ch%2 * 0x80), pcoeff->deqA_05[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x35 + (ch%2 * 0x80), pcoeff->deqA_06[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x36 + (ch%2 * 0x80), pcoeff->deqA_07[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x37 + (ch%2 * 0x80), pcoeff->deqA_08[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x38 + (ch%2 * 0x80), pcoeff->deqA_09[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x39 + (ch%2 * 0x80), pcoeff->deqA_10[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x3a + (ch%2 * 0x80), pcoeff->deqA_11[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x3b + (ch%2 * 0x80), pcoeff->deqA_12[dist] ); + +#if 0 + printk("ch[%d]: COEFF, dist:%d, deqA_01[%02x]\n", ch, dist, pcoeff->deqA_01[dist] ); + printk("ch[%d]: COEFF, dist:%d, deqA_02[%02x]\n", ch, dist, pcoeff->deqA_02[dist] ); + printk("ch[%d]: COEFF, dist:%d, deqA_03[%02x]\n", ch, dist, pcoeff->deqA_03[dist] ); + printk("ch[%d]: COEFF, dist:%d, deqA_04[%02x]\n", ch, dist, pcoeff->deqA_04[dist] ); + printk("ch[%d]: COEFF, dist:%d, deqA_05[%02x]\n", ch, dist, pcoeff->deqA_05[dist] ); + printk("ch[%d]: COEFF, dist:%d, deqA_06[%02x]\n", ch, dist, pcoeff->deqA_06[dist] ); + printk("ch[%d]: COEFF, dist:%d, deqA_07[%02x]\n", ch, dist, pcoeff->deqA_07[dist] ); + printk("ch[%d]: COEFF, dist:%d, deqA_08[%02x]\n", ch, dist, pcoeff->deqA_08[dist] ); + printk("ch[%d]: COEFF, dist:%d, deqA_09[%02x]\n", ch, dist, pcoeff->deqA_09[dist] ); + printk("ch[%d]: COEFF, dist:%d, deqA_10[%02x]\n", ch, dist, pcoeff->deqA_10[dist] ); + printk("ch[%d]: COEFF, dist:%d, deqA_11[%02x]\n", ch, dist, pcoeff->deqA_11[dist] ); + printk("ch[%d]: COEFF, dist:%d, deqA_12[%02x]\n", ch, dist, pcoeff->deqA_12[dist] ); +#endif +} + +void __nvp6158_eq_color_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_color_s *pcolor ) +{ + unsigned char devnum = pvin_eq_set->devnum; + unsigned char ch = pvin_eq_set->Ch; + unsigned char dist = pvin_eq_set->distance; + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xff, 0x00 ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x10 + ch, pcolor->contrast[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x18 + ch, pcolor->h_peaking[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x21 + ch*4, pcolor->c_filter[dist] ); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x40 + ch, pcolor->hue[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x44 + ch, pcolor->u_gain[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x48 + ch, pcolor->v_gain[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x4C + ch, pcolor->u_offset[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x50 + ch, pcolor->v_offset[dist] ); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xff, 0x05 + ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x20, pcolor->black_level[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x27, pcolor->acc_ref[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x28, pcolor->cti_delay[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x2b, pcolor->sub_saturation[dist] ); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x24, pcolor->burst_dec_a[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5f, pcolor->burst_dec_b[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xd1, pcolor->burst_dec_c[dist] ); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xd5, pcolor->c_option[dist] ); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xff, (ch < 2 ? 0x0a : 0x0b) ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x25 + (ch%2 * 0x80), pcolor->y_filter_b[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x27 + (ch%2 * 0x80), pcolor->y_filter_b_sel[dist] ); + + if( pvin_eq_set->FmtDef == TVI_8M_15P || pvin_eq_set->FmtDef == TVI_8M_12_5P ) + { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xff, 0x00 ); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0c + ch, 0xf0 ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x3c + ch, 0xB8 ); + } + else + { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xff, 0x00 ); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0c + ch, 0x00 ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x3c + ch, 0x80 ); + } + +#if 0 + printk("ch[%d]: COLOR, dist:%d, contrast[%02x]\n", ch, dist, pcolor->contrast[dist] ); + printk("ch[%d]: COLOR, dist:%d, h_peaking[%02x]\n", ch, dist, pcolor->h_peaking[dist] ); + printk("ch[%d]: COLOR, dist:%d, c_filter[%02x]\n", ch, dist, pcolor->c_filter[dist] ); + + printk("ch[%d]: COLOR, dist:%d, hue[%02x]\n", ch, dist, pcolor->hue[dist] ); + printk("ch[%d]: COLOR, dist:%d, u_gain[%02x]\n", ch, dist, pcolor->u_gain[dist] ); + printk("ch[%d]: COLOR, dist:%d, v_gain[%02x]\n", ch, dist, pcolor->v_gain[dist] ); + printk("ch[%d]: COLOR, dist:%d, u_offset[%02x]\n", ch, dist, pcolor->u_offset[dist] ); + printk("ch[%d]: COLOR, dist:%d, v_offset[%02x]\n", ch, dist, pcolor->v_offset[dist] ); + + printk("ch[%d]: COLOR, dist:%d, black_level[%02x]\n", ch, dist, pcolor->black_level[dist] ); + printk("ch[%d]: COLOR, dist:%d, cti_delay[%02x]\n", ch, dist, pcolor->cti_delay[dist] ); + printk("ch[%d]: COLOR, dist:%d, sub_saturation[%02x]\n", ch, dist, pcolor->sub_saturation[dist] ); + + printk("ch[%d]: COLOR, dist:%d, burst_dec_a[%02x]\n", ch, dist, pcolor->burst_dec_a[dist] ); + printk("ch[%d]: COLOR, dist:%d, burst_dec_b[%02x]\n", ch, dist, pcolor->burst_dec_b[dist] ); + printk("ch[%d]: COLOR, dist:%d, burst_dec_c[%02x]\n", ch, dist, pcolor->burst_dec_c[dist] ); + + printk("ch[%d]: COLOR, dist:%d, c_option[%02x]\n", ch, dist, pcolor->c_option[dist] ); +#endif +} + +void __nvp6158_eq_timing_a_set_value(video_equalizer_info_s * pvin_eq_set, video_equalizer_timing_a_s * ptiming_a) +{ + unsigned char devnum = pvin_eq_set->devnum; + unsigned char ch = pvin_eq_set->Ch; + unsigned char dist = pvin_eq_set->distance; + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00 ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x58 + ch, ptiming_a->h_delay_a[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x89 + ch, ptiming_a->h_delay_b[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x8e + ch, ptiming_a->h_delay_c[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xa0 + ch, ptiming_a->y_delay[dist] ); + +#if 0 + printk("ch[%d]: TIMING_A, dist:%d, h_delay_a[%02x]\n", ch, dist, ptiming_a->h_delay_a[dist] ); + printk("ch[%d]: TIMING_A, dist:%d, h_delay_b[%02x]\n", ch, dist, ptiming_a->h_delay_b[dist] ); + printk("ch[%d]: TIMING_A, dist:%d, h_delay_c[%02x]\n", ch, dist, ptiming_a->h_delay_c[dist] ); + printk("ch[%d]: TIMING_A, dist:%d, y_delay[%02x]\n", ch, dist, ptiming_a->y_delay[dist] ); +#endif +} + +void __nvp6158_eq_clk_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_clk_s *pclk ) +{ + unsigned char devnum = pvin_eq_set->devnum; + unsigned char ch = pvin_eq_set->Ch; + unsigned char dist = pvin_eq_set->distance; + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x01 ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x84 + ch, pclk->clk_adc[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x8C + ch, pclk->clk_dec[dist] ); +} +void __nvp6158_eq_timing_b_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_timing_b_s *ptiming_b ) +{ + unsigned char devnum = pvin_eq_set->devnum; + unsigned char ch = pvin_eq_set->Ch; + unsigned char dist = pvin_eq_set->distance; + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xff, 0x09 ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x96 + (ch * 0x20), ptiming_b->h_scaler1[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x97 + (ch * 0x20), ptiming_b->h_scaler2[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x98 + (ch * 0x20), ptiming_b->h_scaler3[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x99 + (ch * 0x20), ptiming_b->h_scaler4[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x9A + (ch * 0x20), ptiming_b->h_scaler5[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x9B + (ch * 0x20), ptiming_b->h_scaler6[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x9C + (ch * 0x20), ptiming_b->h_scaler7[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x9D + (ch * 0x20), ptiming_b->h_scaler8[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x9E + (ch * 0x20), ptiming_b->h_scaler9[dist] ); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x40 + ch , ptiming_b->pn_auto[dist] ); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xff, 0x05 + ch ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x90, ptiming_b->comb_mode[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xb9, ptiming_b->h_pll_op_a[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x57, ptiming_b->mem_path[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x25, ptiming_b->fsc_lock_speed[dist] ); + + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xff, 0x00 ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x81 + ch, ptiming_b->format_set1[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x85 + ch, ptiming_b->format_set2[dist] ); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x64 + ch, ptiming_b->v_delay[dist] ); + +#if 0 + printk("ch[%d]: TIMING_B, dist:%d, h_scaler1[%02x]\n", ch, dist, ptiming_b->h_scaler1[dist] ); + printk("ch[%d]: TIMING_B, dist:%d, h_scaler2[%02x]\n", ch, dist, ptiming_b->h_scaler2[dist] ); + printk("ch[%d]: TIMING_B, dist:%d, h_scaler3[%02x]\n", ch, dist, ptiming_b->h_scaler3[dist] ); + printk("ch[%d]: TIMING_B, dist:%d, h_scaler4[%02x]\n", ch, dist, ptiming_b->h_scaler4[dist] ); + + printk("ch[%d]: TIMING_B, dist:%d, pn_auto[%02x]\n", ch, dist, ptiming_b->pn_auto[dist] ); + printk("ch[%d]: TIMING_B, dist:%d, comb_mode[%02x]\n", ch, dist, ptiming_b->comb_mode[dist] ); + printk("ch[%d]: TIMING_B, dist:%d, h_pll_op_a[%02x]\n", ch, dist, ptiming_b->h_pll_op_a[dist] ); + printk("ch[%d]: TIMING_B, dist:%d, mem_path[%02x]\n", ch, dist, ptiming_b->mem_path[dist] ); + printk("ch[%d]: TIMING_B, dist:%d, format_set1[%02x]\n", ch, dist, ptiming_b->format_set1[dist] ); + printk("ch[%d]: TIMING_B, dist:%d, format_set2[%02x]\n", ch, dist, ptiming_b->format_set2[dist] ); + printk("ch[%d]: TIMING_B, dist:%d, v_delay[%02x]\n", ch, dist, ptiming_b->v_delay[dist] ); +#endif + +} + +unsigned int __nvp6158_get_acc_gain(unsigned char ch, unsigned char devnum) +{ + unsigned int acc_gain_status; + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF,0x05+ch%4); + acc_gain_status = gpio_i2c_read(nvp6158_iic_addr[devnum],0xE2); + acc_gain_status <<= 8; + acc_gain_status |= gpio_i2c_read(nvp6158_iic_addr[devnum],0xE3); + + return acc_gain_status; +} + +unsigned int __nvp6158_get_yplus_slope(unsigned char ch, unsigned char devnum) +{ + unsigned int y_plus_slp_status; + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF,0x05+ch%4); + y_plus_slp_status = gpio_i2c_read(nvp6158_iic_addr[devnum],0xE8)&0x07; + y_plus_slp_status <<= 8; + y_plus_slp_status |= gpio_i2c_read(nvp6158_iic_addr[devnum],0xE9); + + return y_plus_slp_status; +} + +unsigned int __nvp6158_get_yminus_slope(unsigned char ch, unsigned char devnum) +{ + unsigned int y_minus_slp_status; + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF,0x05+ch%4); + y_minus_slp_status = gpio_i2c_read(nvp6158_iic_addr[devnum],0xEA)&0x07; + y_minus_slp_status <<= 8; + y_minus_slp_status |= gpio_i2c_read(nvp6158_iic_addr[devnum],0xEB); + + return y_minus_slp_status; +} + +unsigned int __nvp6158_get_sync_width( unsigned char ch, unsigned char devnum ) +{ + unsigned char reg_B0_E0 = 0; + unsigned char agc_stable = 0; + unsigned int sync_width = 0; + unsigned int check_timeout = 0; + + while(agc_stable == 0) + { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + reg_B0_E0 = gpio_i2c_read(nvp6158_iic_addr[devnum], 0xE0 )&0xF; + agc_stable = reg_B0_E0 & (0x01 << (ch%4)); + + if( check_timeout++ > 100 ) + { + printk(">>>>> DRV[%s:%d] CH:%d, TimeOut, AGC_stable[%x] check[%x] in get sync width\n", __func__, __LINE__, ch, reg_B0_E0, agc_stable ); + break; + } + msleep(1); + } + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+(ch%4)); + sync_width = gpio_i2c_read(nvp6158_iic_addr[devnum], 0xC4)&0x0F; + sync_width <<=8; + sync_width |= gpio_i2c_read(nvp6158_iic_addr[devnum], 0xC5); + sync_width = sync_width & 0x0FFF; + printk(">>>>> DRV[%s:%d] CH:%d, sync_width:0x%x\n", __func__, __LINE__, ch, sync_width ); + + return sync_width; +} + +int nvp6158_video_input_cable_measure_way( unsigned char ch, unsigned char devnum ) +{ + unsigned int acc_gain; + unsigned int y_slope; + unsigned char y_plus_slope; + unsigned char y_minus_slope; + unsigned int sync_width; + + acc_gain = __nvp6158_get_acc_gain(ch, devnum); + y_plus_slope = __nvp6158_get_yplus_slope(ch, devnum); + y_minus_slope = __nvp6158_get_yminus_slope(ch, devnum); + y_slope = y_plus_slope + y_minus_slope; + sync_width = __nvp6158_get_sync_width(ch, devnum); + + printk(">>>>> DRV[%s:%d] CH:%d, accgain=0x%x(%d), yslope=0x%x(%d), syncwidth=0x%x(%d)\n", \ + __func__, __LINE__, ch, acc_gain, acc_gain, y_slope, y_slope, sync_width, sync_width ); + + return 0; +} + +void nvp6158_video_input_cable_manualdist_read(video_input_cable_dist *vin_cable_dist ) +{ + video_input_acc_gain_val vin_acc; + video_input_hsync_accum vin_hsync_accum; + + /* cable type => 0:coaxial, 1:utp, 2:reserved1, 3:reserved2 */ + nvp6158_video_equalizer_distance_table_s distance_value = (nvp6158_video_equalizer_distance_table_s)equalizer_distance_fmtdef[vin_cable_dist->FmtDef]; + + if( vin_cable_dist->FmtDef >= AHD20_SD_H960_NT && vin_cable_dist->FmtDef <= AHD20_SD_H960_2EX_Btype_PAL ) + { + /* CVBS Resolution not need distance distinguish, because cvbs format has low color frequency */ + vin_cable_dist->dist = 0; + } + else if(distance_value.hsync_stage.hsync_stage[0] != 0) + { + /* get hsync*/ + vin_hsync_accum.ch = vin_cable_dist->ch; + vin_hsync_accum.devnum = vin_cable_dist->devnum; + nvp6158_video_input_hsync_accum_read(&vin_hsync_accum); + + /* get acc */ + vin_acc.ch = vin_cable_dist->ch; + vin_acc.devnum = vin_cable_dist->devnum; + vin_acc.func_sel = 0; + /* 1 is ACC_GAIN_DEBUG + 0 is ACC_GAIN_NORMAL */ + nvp6158_video_input_acc_gain_val_read(&vin_acc); + + /* measure eq */ + nvp6158_video_input_cable_measure_way(vin_cable_dist->ch, vin_cable_dist->devnum); + + /* decision distance using hsync and distance table */ + vin_cable_dist->dist = __nvp6158_video_cable_manualdistance( vin_cable_dist->cabletype, &vin_hsync_accum, &vin_acc, &distance_value ); + + + printk(">>>>> DRV, CH:%d, hsync : %08x\n", vin_cable_dist->ch, vin_hsync_accum.hsync_accum_result); + printk(">>>>> DRV, CH:%d, eq stage:%d\n", vin_cable_dist->ch, vin_cable_dist->dist); + } + else + { + vin_cable_dist->dist = 0; + + printk(">>>>> DRV, CH:%d, This Format Not support Yet [%d] eq stage:%d\n", vin_cable_dist->ch, vin_cable_dist->FmtDef ,vin_cable_dist->dist); + + } +} + +void nvp6168_video_input_cable_manualdist_read(video_input_cable_dist *vin_cable_dist ) +{ + video_input_hsync_accum vin_hsync_accum; + nvp6158_video_equalizer_distance_table_s distance_value = (nvp6158_video_equalizer_distance_table_s)nvp6168_equalizer_distance_fmtdef[vin_cable_dist->FmtDef]; + + if( vin_cable_dist->FmtDef >= AHD20_SD_H960_NT && vin_cable_dist->FmtDef <= AHD20_SD_H960_2EX_Btype_PAL ) + { + /* CVBS Resolution not need distance distinguish, because cvbs format has low color frequency */ + vin_cable_dist->dist = 0; + return; + } + + /* get hsync*/ + vin_hsync_accum.ch = vin_cable_dist->ch; + vin_hsync_accum.devnum = vin_cable_dist->devnum; + nvp6168_video_input_hsync_accum_read(&vin_hsync_accum ); + + if(((vin_hsync_accum.hsync_accum_val1|vin_hsync_accum.hsync_accum_val2) == 0) && + (vin_hsync_accum.hsync_accum_result == 0xffffffff)) + { + vin_cable_dist->dist = 0xFF; + return; + } + + /* decision distance using hsync and distance table */ + vin_cable_dist->dist = __nvp6158_video_cable_manualdistance( vin_cable_dist->cabletype, &vin_hsync_accum, 0, &distance_value ); + + if(vin_cable_dist->dist > 5) + vin_cable_dist->dist = 5; + + printk(">>>>> DRV, CH:%d, hsync : %08x\n", vin_cable_dist->ch, vin_hsync_accum.hsync_accum_result); + printk(">>>>> DRV, CH:%d, eq stage:%d\n", vin_cable_dist->ch, vin_cable_dist->dist); +} +int nvp6158_set_equalizer(video_equalizer_info_s *pvin_eq_set) +{ + int ii; + unsigned char val_13x30; + unsigned char val_13x31; + unsigned char val_13x32; + unsigned char val_0x54; + //unsigned char val_5678x69; + unsigned char val_9x44; + + unsigned char ch = pvin_eq_set->Ch; + unsigned char devnum = pvin_eq_set->devnum; + video_equalizer_value_table_s eq_value; + + /* cable type => 0:coaxial, 1:utp, 2:reserved1, 3:reserved2 */ + //video_equalizer_value_table_s eq_value = (video_equalizer_value_table_s)nvp6158_equalizer_value_fmtdef[pvin_eq_set->FmtDef]; + memset(&eq_value, 0xFF,sizeof(video_equalizer_value_table_s)); + memcpy(&eq_value,&nvp6158_equalizer_value_fmtdef[pvin_eq_set->FmtDef],sizeof(video_equalizer_value_table_s)); + if(0xFF == eq_value.eq_base.eq_band_sel[pvin_eq_set->distance] || 0x00 == eq_value.eq_base.eq_bypass[pvin_eq_set->distance]) //if 5x58==0xFF it's not a valid value. + { + printk(">>>>>>DRV %s not supported video format[%2x]\n\n\n", __func__, pvin_eq_set->FmtDef); + /* Auto Mode ON */ + gpio_i2c_write(nvp6158_iic_addr[pvin_eq_set->devnum], 0xff, 0x13 ); + val_13x30 = gpio_i2c_read(nvp6158_iic_addr[pvin_eq_set->devnum], 0x30); + val_13x30 |= (0x11 << pvin_eq_set->Ch); + gpio_i2c_write(nvp6158_iic_addr[pvin_eq_set->devnum], 0x30, val_13x30 ); + + val_13x31 = gpio_i2c_read(nvp6158_iic_addr[pvin_eq_set->devnum], 0x31); + val_13x31 |= (0x11 << pvin_eq_set->Ch); + gpio_i2c_write(nvp6158_iic_addr[pvin_eq_set->devnum], 0x31, val_13x31 ); + + val_13x32 = gpio_i2c_read(nvp6158_iic_addr[pvin_eq_set->devnum], 0x32); + val_13x32 |= (0x01 << pvin_eq_set->Ch); + gpio_i2c_write(nvp6158_iic_addr[pvin_eq_set->devnum], 0x32, val_13x32 ); + return -1; + } + /* for verification by edward */ + + if(pvin_eq_set->FmtDef == AHD20_720P_30P_EX_Btype || pvin_eq_set->FmtDef == AHD20_720P_25P_EX_Btype || + pvin_eq_set->FmtDef == AHD20_720P_30P || pvin_eq_set->FmtDef == AHD20_720P_25P || + pvin_eq_set->FmtDef == CVI_HD_30P_EX || pvin_eq_set->FmtDef == CVI_HD_25P_EX || + pvin_eq_set->FmtDef == CVI_HD_30P || pvin_eq_set->FmtDef == CVI_HD_25P || + pvin_eq_set->FmtDef == TVI_HD_30P || pvin_eq_set->FmtDef == TVI_HD_25P || + pvin_eq_set->FmtDef == TVI_HD_30P_EX || pvin_eq_set->FmtDef == TVI_HD_25P_EX || + pvin_eq_set->FmtDef == TVI_HD_B_30P || pvin_eq_set->FmtDef == TVI_HD_B_25P || + pvin_eq_set->FmtDef == TVI_HD_B_30P_EX || pvin_eq_set->FmtDef == TVI_HD_B_25P_EX + ) + { + printk("DRV >> This Format Support Maximum EQ Stage 10\n"); + printk("DRV >> Now Select EQ Stage %d\n", pvin_eq_set->distance); + } + else + { + if(pvin_eq_set->distance > 5) + { + printk("DRV >> This Format Only Support Maximum EQ Stage 5\n"); + printk("DRV >> Now Select EQ Stage %d\n", pvin_eq_set->distance); + pvin_eq_set->distance = 5; + } + } + + /* set eq value */ + __nvp6158_eq_base_set_value( pvin_eq_set, &eq_value.eq_base ); + __nvp6158_eq_coeff_set_value( pvin_eq_set, &eq_value.eq_coeff ); + __nvp6158_eq_color_set_value( pvin_eq_set, &eq_value.eq_color); + __nvp6158_eq_timing_a_set_value( pvin_eq_set, &eq_value.eq_timing_a ); + __nvp6158_eq_clk_set_value( pvin_eq_set, &eq_value.eq_clk ); + __nvp6158_eq_timing_b_set_value( pvin_eq_set, &eq_value.eq_timing_b ); + + if( pvin_eq_set->FmtDef >= AHD20_SD_H960_NT && pvin_eq_set->FmtDef <= AHD20_SD_H960_2EX_Btype_PAL ) + { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xff, 0x00); + if((pvin_eq_set->FmtDef >= AHD20_SD_H960_NT)&&(pvin_eq_set->FmtDef <= AHD20_SD_H960_EX_PAL)) + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); /* line_mem_mode disable */ + else + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x01); /* line_mem_mode Enable */ + + if( (pvin_eq_set->FmtDef%2) == 0 ) //NTSC + { + val_0x54 = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x54); + val_0x54 &= ~((0x1 << (ch+4))); + val_0x54 |= ((0x1 << (ch+4))); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x54, val_0x54); /* Enable FLD_INV for CVBS NT format */ + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x08 + ch, 0xa0); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0xd0); /* Set V_Delay */ + } + else //if( pvin_eq_set->FmtDef == AHD20_SD_H960_2EX_Btype_PAL ) + { + val_0x54 = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x54); + val_0x54 &= ~((0x1 << (ch+4))); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x54, val_0x54); /* Disable FLD_INV for CVBS PAL format */ + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x08 + ch, 0xdd); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0xbf); /* Set V_Delay */ + + } + + gpio_i2c_write( nvp6158_iic_addr[devnum], 0xff, 0x05 + ch ); + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x2C, 0x08); + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x47, 0x04); + if((pvin_eq_set->FmtDef >= AHD20_SD_H960_NT)&&(pvin_eq_set->FmtDef <= AHD20_SD_H960_EX_PAL)) + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x64, 0x00 ); /* disable Mem_Path */ + else + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x64, 0x01 ); /* Enable Mem_Path */ + } + else + { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xff, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); /* line_mem_mode Disable */ + val_0x54 = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x54); + val_0x54 &= ~((0x1 << (ch+4))); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x54, val_0x54); /* Disable FLD_INV */ + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x08 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x80); /* Recovery V_Delay */ + + gpio_i2c_write( nvp6158_iic_addr[devnum], 0xff, 0x05 + ch ); + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x2C, 0x00); + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x47, 0xEE); + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x64, 0x00 ); /* Disable Mem_Path */ + + if(pvin_eq_set->FmtDef == TVI_4M_15P ) + { + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x6E, 0x10 ); //VBLK setting + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x6F, 0x7e ); + } + else + { + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x6E, 0x00 ); //VBLK default setting + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x6F, 0x00 ); + } + } + + /* Auto Mode Off */ + gpio_i2c_write(nvp6158_iic_addr[pvin_eq_set->devnum], 0xff, 0x13 ); + val_13x30 = gpio_i2c_read(nvp6158_iic_addr[pvin_eq_set->devnum], 0x30); + val_13x30 &= ~(0x11 << pvin_eq_set->Ch); + gpio_i2c_write(nvp6158_iic_addr[pvin_eq_set->devnum], 0x30, val_13x30 ); + + val_13x31 = gpio_i2c_read(nvp6158_iic_addr[pvin_eq_set->devnum], 0x31); + val_13x31 &= ~(0x11 << pvin_eq_set->Ch); + gpio_i2c_write(nvp6158_iic_addr[pvin_eq_set->devnum], 0x31, val_13x31 ); + + val_13x32 = gpio_i2c_read(nvp6158_iic_addr[pvin_eq_set->devnum], 0x32); + val_13x32 &= ~(0x01 << pvin_eq_set->Ch); + gpio_i2c_write(nvp6158_iic_addr[pvin_eq_set->devnum], 0x32, val_13x32 ); + + gpio_i2c_write(nvp6158_iic_addr[pvin_eq_set->devnum], 0xff, 0x05 + ch); + gpio_i2c_write(nvp6158_iic_addr[pvin_eq_set->devnum], 0x59, 0x00 ); + + gpio_i2c_write(nvp6158_iic_addr[pvin_eq_set->devnum], 0xff, 0x00 ); + gpio_i2c_write(nvp6158_iic_addr[pvin_eq_set->devnum], 0x23 + (pvin_eq_set->Ch * 4), 0x41); + + for(ii=0;ii<0x16;ii++) + { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x00 + ( ch * 0x20 ) + ii, 0x00); //first set bank11 to default values. + } + + if( pvin_eq_set->FmtDef == TVI_5M_20P || pvin_eq_set->FmtDef == TVI_5M_12_5P || + pvin_eq_set->FmtDef == TVI_4M_30P || pvin_eq_set->FmtDef == TVI_4M_25P || + pvin_eq_set->FmtDef == TVI_8M_15P || pvin_eq_set->FmtDef == TVI_8M_12_5P || + pvin_eq_set->FmtDef == TVI_4M_15P ) + + { + if(pvin_eq_set->FmtDef != TVI_4M_15P) + { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF,0x09); + val_9x44 = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x44); + val_9x44 &= ~(1 << ch); + val_9x44 |= (1 << ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x44 , val_9x44); + } + + if( pvin_eq_set->FmtDef == TVI_5M_20P) + { + /* TVI 5M 20P PN Value Set */ + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x50 + ( ch * 4 ) , 0x36); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x51 + ( ch * 4 ) , 0x40); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x52 + ( ch * 4 ) , 0xa7); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x53 + ( ch * 4 ) , 0x74); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x02 + ( ch * 0x20 ), 0xdb); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x03 + ( ch * 0x20 ), 0x0a); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05 + ( ch * 0x20 ), 0x0e); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x06 + ( ch * 0x20 ), 0xa6); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x08 + ( ch * 0x20 ), 0x96); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0a + ( ch * 0x20 ), 0x07); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0b + ( ch * 0x20 ), 0x98); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0c + ( ch * 0x20 ), 0x07); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0d + ( ch * 0x20 ), 0xbc); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x11 + ( ch * 0x20 ), 0xa0); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x13 + ( ch * 0x20 ), 0xfa); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x15 + ( ch * 0x20 ), 0x65); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x00 + ( ch * 0x20 ), 0x0f); + } + else if( pvin_eq_set->FmtDef == TVI_4M_15P) + { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x02 + ( ch * 0x20 ), 0xd0); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x03 + ( ch * 0x20 ), 0x0a); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05 + ( ch * 0x20 ), 0x97); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x06 + ( ch * 0x20 ), 0x70); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x08 + ( ch * 0x20 ), 0x78); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0a + ( ch * 0x20 ), 0x05); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0b + ( ch * 0x20 ), 0xa0); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0c + ( ch * 0x20 ), 0x06); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0d + ( ch * 0x20 ), 0x71); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x11 + ( ch * 0x20 ), 0x50); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x13 + ( ch * 0x20 ), 0x96); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x15 + ( ch * 0x20 ), 0x30); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x00 + ( ch * 0x20 ), 0x0f); + } + else if( pvin_eq_set->FmtDef == TVI_5M_12_5P) + { + /* TVI 5M 12_5P PN Value Set */ + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x50 + ( ch * 4 ) , 0x8b); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x51 + ( ch * 4 ) , 0xae); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x52 + ( ch * 4 ) , 0xbb); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x53 + ( ch * 4 ) , 0x48); + } + else if( pvin_eq_set->FmtDef == TVI_4M_30P || pvin_eq_set->FmtDef == TVI_4M_25P ) + { + /* TVI 4M 30P PN Value Set */ + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x50 + ( ch * 4 ) , 0x9e); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x51 + ( ch * 4 ) , 0x48); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x52 + ( ch * 4 ) , 0x59); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x53 + ( ch * 4 ) , 0x74); + } + else if( pvin_eq_set->FmtDef == TVI_8M_15P || pvin_eq_set->FmtDef == TVI_8M_12_5P ) + { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x50 + ( ch * 4 ) , 0x73); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x51 + ( ch * 4 ) , 0x76); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x52 + ( ch * 4 ) , 0x58); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x53 + ( ch * 4 ) , 0x74); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x11); + + if( pvin_eq_set->FmtDef == TVI_8M_12_5P ) + { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x02 + ( ch * 0x20 ), 0x9b); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x03 + ( ch * 0x20 ), 0x0f); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05 + ( ch * 0x20 ), 0x14); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x06 + ( ch * 0x20 ), 0xa0); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x08 + ( ch * 0x20 ), 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0a + ( ch * 0x20 ), 0x08); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0b + ( ch * 0x20 ), 0x70); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0c + ( ch * 0x20 ), 0x08); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0d + ( ch * 0x20 ), 0xca); + // gpio_i2c_write(nvp6158_iic_addr[devnum], 0x11 + ( ch * 0x20 ), 0xa0); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x12 + ( ch * 0x20 ), 0x01); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x13 + ( ch * 0x20 ), 0xcc); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x15 + ( ch * 0x20 ), 0x3c); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x00 + ( ch * 0x20 ), 0x0d); + + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch%4); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x25, 0xda); + msleep(100); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x2a, 0xd4); + msleep(40); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x2a, 0xd2); + printk("TVI_8M_12_5P adopted test\n"); + } + else + { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x02 + ( ch * 0x20 ), 0x9b); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x03 + ( ch * 0x20 ), 0x0f); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05 + ( ch * 0x20 ), 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x06 + ( ch * 0x20 ), 0x30); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x08 + ( ch * 0x20 ), 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0a + ( ch * 0x20 ), 0x08); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0b + ( ch * 0x20 ), 0x70); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0c + ( ch * 0x20 ), 0x08); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0d + ( ch * 0x20 ), 0xca); + // gpio_i2c_write(nvp6158_iic_addr[devnum], 0x11 + ( ch * 0x20 ), 0xa0); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x12 + ( ch * 0x20 ), 0x01); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x13 + ( ch * 0x20 ), 0xcc); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x15 + ( ch * 0x20 ), 0x3c); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x00 + ( ch * 0x20 ), 0x0d); + } + + } + + } + else + { + if( pvin_eq_set->FmtDef == CVI_5M_20P) + { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x11); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x01 + ( ch * 0x20 ), 0x01); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x02 + ( ch * 0x20 ), 0x30); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x03 + ( ch * 0x20 ), 0x0a); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x04 + ( ch * 0x20 ), 0x20); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05 + ( ch * 0x20 ), 0x0e); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x06 + ( ch * 0x20 ), 0xa6); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x07 + ( ch * 0x20 ), 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x08 + ( ch * 0x20 ), 0x96); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0a + ( ch * 0x20 ), 0x07); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0b + ( ch * 0x20 ), 0x98); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0c + ( ch * 0x20 ), 0x07); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0d + ( ch * 0x20 ), 0xbc); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0e + ( ch * 0x20 ), 0x07); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0f + ( ch * 0x20 ), 0xad); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x10 + ( ch * 0x20 ), 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x11 + ( ch * 0x20 ), 0xfa); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x12 + ( ch * 0x20 ), 0x01); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x13 + ( ch * 0x20 ), 0x22); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x14 + ( ch * 0x20 ), 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x15 + ( ch * 0x20 ), 0x6e); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x00 + ( ch * 0x20 ), 0x0f); + } + else + { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x04 + ( ch * 0x20 ), 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x00 + ( ch * 0x20 ), 0x00); + } + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF,0x09); + val_9x44 = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x44); + val_9x44 &= ~(1 << ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x44 , val_9x44); + } + + if( pvin_eq_set->FmtDef == AHD20_1080P_15P_EX || pvin_eq_set->FmtDef == AHD20_1080P_12_5P_EX ) + { + unsigned char val_1x7a = 0x00; + unsigned char val_11x00 = 0x00; + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF,0x01); + val_1x7a = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x7a); + val_1x7a &= ~(0x1 << ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7A, val_1x7a); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF,0x11); + val_11x00 = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x00 + (ch*0x20)); + val_11x00 |= 0x10; + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x00 + (ch * 0x20) , val_11x00); + } + else + { + unsigned char val_11x00 = 0x00; + unsigned char val_1x7a = 0x00; + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF,0x01); + val_1x7a = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x7a); + val_1x7a |= (0x1 << ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7A, val_1x7a); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF,0x11); + val_11x00 = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x00 + (ch*0x20)); + val_11x00 &= ~0x10; + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x00 + (ch * 0x20) , val_11x00); + } + return 0; +} + +void __nvp6168_set_eq_ext_val(video_equalizer_info_s *pvin_eq_set) +{ + int devnum = pvin_eq_set->devnum; + int ch = pvin_eq_set->Ch; + unsigned char tmp_val; + + // 0x54 : FIELD_INV + // 0x69 : SD_FREQ - always 0 + // 0x22 : COLOR_OFF/C_KILL + // 0x30 : Y_DELAY_1 + // 0x5C : V_DELAY_1 + // 5x05 : About AGC + // 5x7B : SD:0x00, Others:0x11 + // 13x74/75 : HSYNC_FALLING MIN/MAX + // 13x76/77 : HSYNC_RISING MIN/MAX + // 13x78/79 : SHORT-HSYNC_FALLING MIN/MAX + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + tmp_val = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x54); + tmp_val &= ~(0x01<<(ch+4)); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x54, tmp_val); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x69, 0x00); + + switch(pvin_eq_set->FmtDef) + { + // CVBS + case AHD20_SD_H960_2EX_Btype_NT : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x10); + tmp_val = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x54); + tmp_val |= 0x01<<(ch+4); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x54, tmp_val); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0xD0); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case AHD20_SD_H960_2EX_Btype_PAL : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x10); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0xBF); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + + // AHD + case AHD20_720P_30P_EX_Btype : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x12); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case AHD20_720P_25P_EX_Btype : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x12); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case AHD20_1080P_30P : + case AHD20_1080P_15P_EX : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case AHD20_1080P_25P : + case AHD20_1080P_12_5P_EX : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case AHD20_1080P_60P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); + break; + case AHD20_1080P_50P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); + break; + case AHD30_4M_30P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case AHD30_4M_25P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case AHD30_4M_15P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x16); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case AHD30_3M_30P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case AHD30_3M_25P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case AHD30_3M_18P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x16); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case AHD30_5M_12_5P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x16); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case AHD30_5M_20P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case AHD30_5_3M_20P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case AHD30_8M_12_5P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case AHD30_8M_15P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); + break; + case AHD20_960P_30P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case AHD20_960P_25P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case AHD20_960P_60P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); + break; + case AHD20_960P_50P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); + break; + + // TVI + case TVI_FHD_30P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); + break; + case TVI_FHD_25P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); + break; + case TVI_HD_30P_EX : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); + break; + case TVI_HD_25P_EX : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); + break; + case TVI_HD_B_30P_EX : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x16); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); + break; + case TVI_HD_B_25P_EX : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x16); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); + break; + case TVI_HD_60P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x16); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); + break; + case TVI_HD_50P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x16); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); + break; + case TVI_3M_18P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x16); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); + break; + case TVI_5M_12_5P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x16); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); + break; + case TVI_5M_20P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); + break; + case TVI_4M_30P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); + break; + case TVI_4M_25P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); + break; + case TVI_4M_15P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x16); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); + break; + case TVI_8M_15P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); + break; + case TVI_8M_12_5P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); + break; + + // CVI + case CVI_FHD_30P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + break; + case CVI_FHD_25P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case CVI_HD_60P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case CVI_HD_50P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case CVI_HD_30P_EX : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x16); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case CVI_HD_25P_EX : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x16); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case CVI_4M_30P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case CVI_4M_25P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case CVI_8M_15P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + case CVI_8M_12_5P : + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x22+(ch*4), 0x02); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x30 + ch, 0x17); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x34 + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x5c + ch, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05+ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05, 0x24); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x7B, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB5, 0x80); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x74, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x76, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x75, 0xff); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x77, 0xff); + break; + + case AHD20_SD_H960_NT : + case AHD20_SD_H960_PAL : + case AHD20_SD_SH720_NT : + case AHD20_SD_SH720_PAL : + case AHD20_SD_H1280_NT : + case AHD20_SD_H1280_PAL : + case AHD20_SD_H1440_NT : + case AHD20_SD_H1440_PAL : + case AHD20_SD_H960_EX_NT : + case AHD20_SD_H960_EX_PAL : + case AHD20_SD_H960_2EX_NT : + case AHD20_SD_H960_2EX_PAL : + case AHD20_720P_60P : + case AHD20_720P_50P : + case AHD20_720P_30P : + case AHD20_720P_25P : + case AHD20_720P_30P_EX : + case AHD20_720P_25P_EX : + case AHD30_6M_18P : + case AHD30_6M_20P : + case AHD30_8M_X_30P : + case AHD30_8M_X_25P : + case AHD30_8M_7_5P : + case TVI_HD_30P : + case TVI_HD_25P : + case TVI_HD_B_30P : + case TVI_HD_B_25P : + case CVI_HD_30P : + case CVI_HD_25P : + case TVI_FHD_60P : +#if 0 + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); +#endif + case TVI_FHD_50P : +#if 0 + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x13); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x78, 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x79, 0xff); +#endif + + default : + break; + } +} + +int nvp6168_set_equalizer(video_equalizer_info_s *pvin_eq_set) +{ + unsigned char val_9x44, ii; + unsigned char ch = pvin_eq_set->Ch; + unsigned char devnum = pvin_eq_set->devnum; + + decoder_dev_ch_info_s pDecoder_info; + + video_equalizer_value_table_s eq_value;// = (video_equalizer_value_table_s)nvp6168_equalizer_value_fmtdef[pvin_eq_set->FmtDef]; + + /* cable type => 0:coaxial, 1:utp, 2:reserved1, 3:reserved2 */ + //video_equalizer_value_table_s eq_value = (video_equalizer_value_table_s)nvp6158_equalizer_value_fmtdef[pvin_eq_set->FmtDef]; + memset(&eq_value, 0xFF,sizeof(video_equalizer_value_table_s)); + memcpy(&eq_value,&nvp6168_equalizer_value_fmtdef[pvin_eq_set->FmtDef],sizeof(video_equalizer_value_table_s)); + if(0xFF == eq_value.eq_base.eq_band_sel[pvin_eq_set->distance] || 0x00 == eq_value.eq_base.eq_bypass[pvin_eq_set->distance]) //if 5x58==0xFF it's not a valid value. + { + printk("func[%s] eq_value[fmt:%d] not found\n", __func__, pvin_eq_set->FmtDef); + return -1; + } + + /* set eq value */ + __nvp6158_eq_base_set_value( pvin_eq_set, &eq_value.eq_base ); + __nvp6158_eq_coeff_set_value( pvin_eq_set, &eq_value.eq_coeff ); + __nvp6158_eq_color_set_value( pvin_eq_set, &eq_value.eq_color); + __nvp6158_eq_timing_a_set_value( pvin_eq_set, &eq_value.eq_timing_a ); + __nvp6158_eq_clk_set_value( pvin_eq_set, &eq_value.eq_clk ); + __nvp6158_eq_timing_b_set_value( pvin_eq_set, &eq_value.eq_timing_b ); + + __nvp6168_set_eq_ext_val(pvin_eq_set); + + if(nvp6158_audio_in_type_get() == NC_AD_AOC) + { + pDecoder_info.ch = ch; + pDecoder_info.devnum = devnum; + pDecoder_info.fmt_def = pvin_eq_set->FmtDef; + + nvp6158_audio_set_aoc_format(&pDecoder_info); + } + + for(ii=0;ii<0x16;ii++) + { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x00 + ( ch * 0x20 ) + ii, 0x00); //first set bank11 to default values. + } + + + if( pvin_eq_set->FmtDef == CVI_5M_20P) + { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x11); + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x01 + ( ch * 0x20 ), 0x01); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x02 + ( ch * 0x20 ), 0x30); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x03 + ( ch * 0x20 ), 0x0a); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x04 + ( ch * 0x20 ), 0x20); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x05 + ( ch * 0x20 ), 0x0e); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x06 + ( ch * 0x20 ), 0xa6); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x07 + ( ch * 0x20 ), 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x08 + ( ch * 0x20 ), 0x96); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0a + ( ch * 0x20 ), 0x07); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0b + ( ch * 0x20 ), 0x98); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0c + ( ch * 0x20 ), 0x07); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0d + ( ch * 0x20 ), 0xbc); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0e + ( ch * 0x20 ), 0x07); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x0f + ( ch * 0x20 ), 0xad); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x10 + ( ch * 0x20 ), 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x11 + ( ch * 0x20 ), 0xfa); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x12 + ( ch * 0x20 ), 0x01); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x13 + ( ch * 0x20 ), 0x22); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x14 + ( ch * 0x20 ), 0x00); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x15 + ( ch * 0x20 ), 0x6e); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x00 + ( ch * 0x20 ), 0x0f); + } + else if(pvin_eq_set->FmtDef == AHD20_1080P_15P_EX || pvin_eq_set->FmtDef == AHD20_1080P_12_5P_EX) + { + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x11); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x00 + ( ch * 0x20 ), 0x10); + } + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF,0x09); + val_9x44 = gpio_i2c_read(nvp6158_iic_addr[devnum], 0x44); + val_9x44 &= ~(1 << ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0x44 , val_9x44); + + if(pvin_eq_set->FmtDef == TVI_4M_15P ) + { + gpio_i2c_write( nvp6158_iic_addr[devnum], 0xFF, 0x05 + ch ); + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x6E, 0x10 ); //VBLK setting + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x6F, 0x7e ); + } + else + { + gpio_i2c_write( nvp6158_iic_addr[devnum], 0xFF, 0x05 + ch ); + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x6E, 0x00 ); //VBLK default setting + gpio_i2c_write( nvp6158_iic_addr[devnum], 0x6F, 0x00 ); + } + + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xFF, 0x05 + ch); + gpio_i2c_write(nvp6158_iic_addr[devnum], 0xB8, 0x39); + + return 0; +} + diff --git a/drivers/media/i2c/nvp6158_drv/nvp6158_video_eq.h b/drivers/media/i2c/nvp6158_drv/nvp6158_video_eq.h new file mode 100644 index 000000000000..b931b314b336 --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/nvp6158_video_eq.h @@ -0,0 +1,228 @@ +// SPDX-License-Identifier: GPL-2.0 +/******************************************************************************** +* +* Copyright (C) 2017 NEXTCHIP Inc. All rights reserved. +* Module : video_eq.h +* Description : +* Author : +* Date : +* Version : Version 1.0 +* +******************************************************************************** +* History : +* +* +********************************************************************************/ +#ifndef _RAPTOR3_VIDEO_EQ_H_ +#define _RAPTOR3_VIDEO_EQ_H_ + +#include "nvp6158_common.h" +#include "nvp6158_video_auto_detect.h" +/////////////////////////////// +typedef enum ACC_DEBUG +{ + ACC_GAIN_NORMAL, + ACC_GAIN_DEBUG, + +}ACC_DEBUG; + +typedef enum DISTANCE +{ + SHORT_2M, + LONG_100M, + LONG_200M, + LONG_300M, + LONG_400M, + LONG_500M, +}CABLE_DISTANCE; + +typedef struct _NC_VD_AUTO_HSYNC_STR{ // 170207 Hsync Accumulation + unsigned char Ch; + unsigned char dev_addr; + unsigned char h_lock; // Bank 0 0xE2 [3:0] [Ch3:Ch0] + unsigned int Hsync_Accum_Val1; // Value 1 // 170210 Add + unsigned int Hsync_Accum_Val2; // Value 2 // 170210 Add + unsigned int Hsync_Accum_Result; // Value 1 - Value 2 // 170210 Fix +}NC_VD_AUTO_HSYNC_STR; + +typedef struct _NC_VD_AUTO_SAM_STR{ // 170207 SAM Value 항목 추가 + unsigned char Ch; + unsigned char dev_addr; + /* + unsigned char SAMval_CD; // B13 0xCD [7:0] + unsigned char SAMval_CC; // B13 0xCC [9:8] + */ + unsigned int SAMval; +}NC_VD_AUTO_SAM_STR; + +typedef struct _NC_VD_AUTO_AGC_STR{ // 170207 AGC Value 항목 추가 + unsigned char Ch; + unsigned char devnum; + unsigned char agc_lock; // Bank 0 0xE0 [3:0] [Ch3:Ch0] + unsigned char AGCval; // B13 0xB8 +}NC_VD_AUTO_AGC_STR; + +typedef struct _NC_VD_AUTO_DIST_STR{ // 170207 Cable Distance 항목 추가 + unsigned char Ch; + unsigned char devnum; + unsigned char Dist; // B13 0xA0 +}NC_VD_AUTO_CABLE_DIST_STR; + +typedef struct _NC_VD_MANUAL_DIST_STR{ + unsigned char Ch; + unsigned char dev_addr; + unsigned char Dist; + unsigned char FmtDef; + unsigned char cabletype; // 0:coax, 1:utp, 2:reserved1, 3:reserved2 +}NC_VD_MANUAL_CABLE_DIST_STR; + +/////////////////////////////////// +typedef struct _video_equalizer_hsync_stage_s{ + unsigned int hsync_stage[9]; +}video_equalizer_hsync_stage_s; + +typedef struct _video_equalizer_agc_stage_s{ + unsigned int agc_stage[9]; +}video_equalizer_agc_stage_s; + +typedef struct _video_equalizer_distance_table_s{ + video_equalizer_hsync_stage_s hsync_stage; + video_equalizer_agc_stage_s agc_stage; +} nvp6158_video_equalizer_distance_table_s; + + +typedef struct _video_equalizer_base_s{ + unsigned char eq_bypass[11]; // B5x01 + unsigned char eq_band_sel[11]; // B5x58 + unsigned char eq_gain_sel[11]; // B5x5C + + unsigned char deq_a_on[11]; // BAx3d + unsigned char deq_a_sel[11]; // BAx3C + unsigned char deq_b_sel[11]; // B9x80 + +} video_equalizer_base_s; + +typedef struct _video_equalizer_coeff_s{ + + unsigned char deqA_01[11]; // BankA 0x30 + unsigned char deqA_02[11]; // BankA 0x31 + unsigned char deqA_03[11]; // BankA 0x32 + unsigned char deqA_04[11]; // BankA 0x33 + unsigned char deqA_05[11]; // BankA 0x34 + unsigned char deqA_06[11]; // BankA 0x35 + unsigned char deqA_07[11]; // BankA 0x36 + unsigned char deqA_08[11]; // BankA 0x37 + unsigned char deqA_09[11]; // BankA 0x38 + unsigned char deqA_10[11]; // BankA 0x39 + unsigned char deqA_11[11]; // BankA 0x3A + unsigned char deqA_12[11]; // BankA 0x3B + +} video_equalizer_coeff_s; + +typedef struct _video_equalizer_color_s{ + unsigned char contrast[11]; // Bank0 0x10 + unsigned char h_peaking[11]; // Bank0 0x18 + unsigned char c_filter[11]; // Bank0 0x21 + unsigned char hue[11]; // Bank0 0x40 + unsigned char u_gain[11]; // Bank0 0x44 + unsigned char v_gain[11]; // Bank0 0x48 + unsigned char u_offset[11]; // Bank0 0x4c + unsigned char v_offset[11]; // Bank0 0x50 + + unsigned char black_level[11]; // Bank5 0x20 + unsigned char acc_ref[11]; // Bank5 0x27 + + unsigned char cti_delay[11]; // Bank5 0x28 + unsigned char sub_saturation[11]; // Bank5 0x2B + unsigned char burst_dec_a[11]; // Bank5 0x24 + unsigned char burst_dec_b[11]; // Bank5 0x5F + unsigned char burst_dec_c[11]; // Bank5 0xD1 + unsigned char c_option[11]; // Bank5 0xD5 + + unsigned char y_filter_b[11]; // BankA 0x25 + unsigned char y_filter_b_sel[11]; // BankA 0x27 + +} video_equalizer_color_s; + +typedef struct _video_equalizer_timing_a_s{ + unsigned char h_delay_a[11]; // Bank0 0x58 + unsigned char h_delay_b[11]; // Bank0 0x89 + unsigned char h_delay_c[11]; // Bank0 0x8E + unsigned char y_delay[11]; // Bank0 0xA0 + +} video_equalizer_timing_a_s; + +typedef struct _video_equalizer_clk_s{ + unsigned char clk_adc[11]; // Bank1 0x84 + unsigned char clk_dec[11]; // Bank1 0x8C + +} video_equalizer_clk_s; + +typedef struct _video_equalizer_timing_b_s{ + unsigned char h_scaler1[11]; // B9x96 + ch*0x20 + unsigned char h_scaler2[11]; // B9x97 + ch*0x20 + unsigned char h_scaler3[11]; // B9x98 + ch*0x20 + unsigned char h_scaler4[11]; // B9x99 + ch*0x20 + unsigned char h_scaler5[11]; // B9x9a + ch*0x20 + unsigned char h_scaler6[11]; // B9x9b + ch*0x20 + unsigned char h_scaler7[11]; // B9x9c + ch*0x20 + unsigned char h_scaler8[11]; // B9x9d + ch*0x20 + unsigned char h_scaler9[11]; // B9x9e + ch*0x20 + + unsigned char pn_auto[11]; // B9x40 + ch + + unsigned char comb_mode[11]; // B5x90 + unsigned char h_pll_op_a[11]; // B5xB9 + unsigned char mem_path[11]; // B5x57 + unsigned char fsc_lock_speed[11]; //B5x25 + + unsigned char format_set1[11]; // B0x81 + unsigned char format_set2[11]; // B0x85 + + unsigned char v_delay[11]; // B0x64 +} video_equalizer_timing_b_s; + + +typedef struct _video_equalizer_value_table_s{ + video_equalizer_base_s eq_base; + video_equalizer_coeff_s eq_coeff; + video_equalizer_color_s eq_color; + + video_equalizer_timing_a_s eq_timing_a; + video_equalizer_clk_s eq_clk; + video_equalizer_timing_b_s eq_timing_b; + +} video_equalizer_value_table_s; + +typedef struct _video_equalizer_info{ + unsigned char Ch; + unsigned char devnum; + unsigned char distance; + unsigned char FmtDef; +} video_equalizer_info_s; + +CABLE_DISTANCE NVP6158_NC_VD_MANUAL_CABLE_DISTANCE_Get (unsigned char Ch, video_input_cable_dist *pDistance); +CABLE_DISTANCE nvp6158_get_eq_dist(video_equalizer_info_s *ps_eq_info); +unsigned char __nvp6158_video_cable_manualdistance( unsigned char cabletype, video_input_hsync_accum *pvin_hsync_accum, + video_input_acc_gain_val *pvin_acc_val, nvp6158_video_equalizer_distance_table_s *pdistance_value ); +void __nvp6158_eq_base_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_base_s *pbase ); +void __nvp6158_eq_coeff_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_coeff_s *pcoeff ); +void __nvp6158_eq_color_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_color_s *pcolor ); +void __nvp6158_eq_timing_a_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_timing_a_s *ptiming_a ); +void __nvp6158_eq_clk_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_clk_s *pclk ); +void __nvp6158_eq_timing_b_set_value( video_equalizer_info_s *pvin_eq_set, video_equalizer_timing_b_s *ptiming_b ); +unsigned int __nvp6158_get_acc_gain(unsigned char ch, unsigned char devnum); +unsigned int __nvp6158_get_yplus_slope(unsigned char ch, unsigned char devnum); +unsigned int __nvp6158_get_yminus_slope(unsigned char ch, unsigned char devnum); +unsigned int __nvp6158_get_sync_width( unsigned char ch, unsigned char devnum ); +void __nvp6168_set_eq_ext_val(video_equalizer_info_s *pvin_eq_set); + +void nvp6158_video_input_cable_manualdist_read(video_input_cable_dist *vin_cable_dist ); +void nvp6168_video_input_cable_manualdist_read(video_input_cable_dist *vin_cable_dist ); + +int nvp6158_set_equalizer(video_equalizer_info_s *pvin_eq_set); +int nvp6168_set_equalizer(video_equalizer_info_s *pvin_eq_set); +int nvp6158_video_input_cable_measure_way( unsigned char ch, unsigned char devnum ); +CABLE_DISTANCE nvp6158_get_eq_dist(video_equalizer_info_s *ps_eq_info); + +#endif /* _RAPTOR3_VIDEO_EQ_H_ */ diff --git a/drivers/media/i2c/nvp6158_drv/nvp6158_video_eq_table.h b/drivers/media/i2c/nvp6158_drv/nvp6158_video_eq_table.h new file mode 100644 index 000000000000..aed976c8dd10 --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/nvp6158_video_eq_table.h @@ -0,0 +1,7105 @@ +// SPDX-License-Identifier: GPL-2.0 +/******************************************************************************** +* +* Copyright (C) 2017 NEXTCHIP Inc. All rights reserved. +* Module : video_eq_table.c +* Description : +* Author : +* Date : +* Version : Version 1.0 +* +******************************************************************************** +* History : +* +* +********************************************************************************/ +#ifndef _VIDEO_EQ_TABLE_H_ +#define _VIDEO_EQ_TABLE_H_ + +/* + * EQ distance + */ +static nvp6158_video_equalizer_distance_table_s equalizer_distance_fmtdef[ NC_VIVO_CH_FORMATDEF_MAX ] = +{ + [ CVI_4M_30P ] = { /* o */ + { + .hsync_stage[0] = 0x8cabde, /* short */ + .hsync_stage[1] = 0x8a8db4, /* 100m */ + .hsync_stage[2] = 0x85d2eb, /* 200m */ + .hsync_stage[3] = 0x83216f, /* 300m */ + .hsync_stage[4] = 0x7f4090, /* 400m */ + .hsync_stage[5] = 0x3e3847, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ CVI_4M_25P ] = { /* o */ + { + .hsync_stage[0] = 0x8d96c3, /* short */ + .hsync_stage[1] = 0x87dbdb, /* 100m */ + .hsync_stage[2] = 0x84493a, /* 200m */ + .hsync_stage[3] = 0x80efff, /* 300m */ + .hsync_stage[4] = 0x7dd118, /* 400m */ + .hsync_stage[5] = 0x3c5cf7, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + + }, + }, + [ CVI_5M_20P ] = { /* o */ + { + .hsync_stage[0] = 0x8d96c3, /* short */ + .hsync_stage[1] = 0x87dbdb, /* 100m */ + .hsync_stage[2] = 0x84493a, /* 200m */ + .hsync_stage[3] = 0x80efff, /* 300m */ + .hsync_stage[4] = 0x7dd118, /* 400m */ + .hsync_stage[5] = 0x3c5cf7, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + + }, + }, + [ CVI_8M_15P ] = { /* x */ + { + .hsync_stage[0] = 0x330dfb, /* short */ + .hsync_stage[1] = 0x2f689a, /* 100m */ + .hsync_stage[2] = 0x2bc294, /* 200m */ + .hsync_stage[3] = 0x27d880, /* 300m */ + .hsync_stage[4] = 0x250014, /* 400m */ + .hsync_stage[5] = 0x127ff6, /* 500m */ + }, + { + .agc_stage[0] = 0x0C, + .agc_stage[1] = 0x26, + .agc_stage[2] = 0xFF, + .agc_stage[3] = 0xFF, + .agc_stage[4] = 0xFF, + .agc_stage[5] = 0xFF, + }, + }, + [ CVI_8M_12_5P ] = { /* x */ + { + .hsync_stage[0] = 0x330dfb, /* short */ + .hsync_stage[1] = 0x2f689a, /* 100m */ + .hsync_stage[2] = 0x2bc294, /* 200m */ + .hsync_stage[3] = 0x27d880, /* 300m */ + .hsync_stage[4] = 0x250014, /* 400m */ + .hsync_stage[5] = 0x127ff6, /* 500m */ + }, + { + .agc_stage[0] = 0x0C, + .agc_stage[1] = 0x26, + .agc_stage[2] = 0xFF, + .agc_stage[3] = 0xFF, + .agc_stage[4] = 0xFF, + .agc_stage[5] = 0xFF, + }, + }, + [ CVI_FHD_30P ] = { /* x */ + { + .hsync_stage[0] = 0x8d1c6e, /* short */ + .hsync_stage[1] = 0x89a53c, /* 100m */ + .hsync_stage[2] = 0x84516d, /* 200m */ + .hsync_stage[3] = 0x7fd755, /* 300m */ + .hsync_stage[4] = 0x7bf03d, /* 400m */ + .hsync_stage[5] = 0x3ba64a, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + + }, + [ CVI_FHD_25P ] = { /* x */ + { + .hsync_stage[0] = 0x8d1c6e, /* short */ + .hsync_stage[1] = 0x89a53c, /* 100m */ + .hsync_stage[2] = 0x84516d, /* 200m */ + .hsync_stage[3] = 0x7fd755, /* 300m */ + .hsync_stage[4] = 0x7bf03d, /* 400m */ + .hsync_stage[5] = 0x3ba64a, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ CVI_HD_30P ] = { /* x */ + { + .hsync_stage[0] = 0x8d1c6e, /* short */ + .hsync_stage[1] = 0x89a53c, /* 100m */ + .hsync_stage[2] = 0x84516d, /* 200m */ + .hsync_stage[3] = 0x7fd755, /* 300m */ + .hsync_stage[4] = 0x7bf03d, /* 400m */ + .hsync_stage[5] = 0x3ba64a, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + + }, + [ CVI_HD_25P ] = { /* x */ + { + .hsync_stage[0] = 0x8d1c6e, /* short */ + .hsync_stage[1] = 0x89a53c, /* 100m */ + .hsync_stage[2] = 0x84516d, /* 200m */ + .hsync_stage[3] = 0x7fd755, /* 300m */ + .hsync_stage[4] = 0x7bf03d, /* 400m */ + .hsync_stage[5] = 0x3ba64a, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + [ AHD30_4M_25P ] = { /* x */ + { + .hsync_stage[0] = 0x34a700, /* short */ + .hsync_stage[1] = 0x300726, /* 100m */ + .hsync_stage[2] = 0x2c4744, /* 200m */ + .hsync_stage[3] = 0x29a0c2, /* 300m */ + .hsync_stage[4] = 0x262662, /* 400m */ + .hsync_stage[5] = 0x125205, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + [ AHD30_4M_30P ] = { /* x */ + { + .hsync_stage[0] = 0x34a06e, /* short */ + .hsync_stage[1] = 0x2ffd08, /* 100m */ + .hsync_stage[2] = 0x2c0e66, /* 200m */ + .hsync_stage[3] = 0x28a597, /* 300m */ + .hsync_stage[4] = 0x25ddfb, /* 400m */ + .hsync_stage[5] = 0x123296, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + [ AHD30_4M_15P ] = { /* x */ + { + .hsync_stage[0] = 0x345843, /* short */ + .hsync_stage[1] = 0x2fd262, /* 100m */ + .hsync_stage[2] = 0x2930b7, /* 200m */ + .hsync_stage[3] = 0x2c134f, /* 300m */ + .hsync_stage[4] = 0x297697, /* 400m */ + .hsync_stage[5] = 0x141b60, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + [ AHD30_8M_15P ] = { /* x */ + { + .hsync_stage[0] = 0x34a06e, /* short */ + .hsync_stage[1] = 0x2ffd08, /* 100m */ + .hsync_stage[2] = 0x2c0e66, /* 200m */ + .hsync_stage[3] = 0x28a597, /* 300m */ + .hsync_stage[4] = 0x25ddfb, /* 400m */ + .hsync_stage[5] = 0x123296, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + [ AHD30_8M_12_5P ] = { /* x */ + { + .hsync_stage[0] = 0x34a06e, /* short */ + .hsync_stage[1] = 0x2ffd08, /* 100m */ + .hsync_stage[2] = 0x2c0e66, /* 200m */ + .hsync_stage[3] = 0x28a597, /* 300m */ + .hsync_stage[4] = 0x25ddfb, /* 400m */ + .hsync_stage[5] = 0x123296, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + [ TVI_4M_25P ] = { /* x */ + { + .hsync_stage[0] = 0x3381f9, /* short */ + .hsync_stage[1] = 0x2faa9d, /* 100m */ + .hsync_stage[2] = 0x2bc444, /* 200m */ + .hsync_stage[3] = 0x29931F, /* 300m */ + .hsync_stage[4] = 0x278019, /* 400m */ + .hsync_stage[5] = 0x12F1C5, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + [ TVI_4M_30P ] = { /* x */ + { + .hsync_stage[0] = 0x337437, /* short */ + .hsync_stage[1] = 0x2F515F, /* 100m */ + .hsync_stage[2] = 0x2B933F, /* 200m */ + .hsync_stage[3] = 0x28E08D, /* 300m */ + .hsync_stage[4] = 0x26C97D, /* 400m */ + .hsync_stage[5] = 0x12EF4B, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + [ TVI_4M_15P ] = { /* o */ + { + .hsync_stage[0] = 0x6D67CA, /* short */ + .hsync_stage[1] = 0x648B0E, /* 100m */ + .hsync_stage[2] = 0x5E7398, /* 200m */ + .hsync_stage[3] = 0x592369, /* 300m */ + .hsync_stage[4] = 0x4E362E, /* 400m */ + .hsync_stage[5] = 0x1DC8C7, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ TVI_8M_15P ] = { /* x */ + { + .hsync_stage[0] = 0x330dfb, /* short */ + .hsync_stage[1] = 0x2f689a, /* 100m */ + .hsync_stage[2] = 0x2bc294, /* 200m */ + .hsync_stage[3] = 0x27d880, /* 300m */ + .hsync_stage[4] = 0x250014, /* 400m */ + .hsync_stage[5] = 0x127ff6, /* 500m */ + }, + { + .agc_stage[0] = 0x0C, + .agc_stage[1] = 0x26, + .agc_stage[2] = 0xFF, + .agc_stage[3] = 0xFF, + .agc_stage[4] = 0xFF, + .agc_stage[5] = 0xFF, + }, + }, + [ TVI_8M_12_5P ] = { /* x */ + { + .hsync_stage[0] = 0x330dfb, /* short */ + .hsync_stage[1] = 0x2f689a, /* 100m */ + .hsync_stage[2] = 0x2bc294, /* 200m */ + .hsync_stage[3] = 0x27d880, /* 300m */ + .hsync_stage[4] = 0x250014, /* 400m */ + .hsync_stage[5] = 0x127ff6, /* 500m */ + }, + { + .agc_stage[0] = 0x0C, + .agc_stage[1] = 0x26, + .agc_stage[2] = 0xFF, + .agc_stage[3] = 0xFF, + .agc_stage[4] = 0xFF, + .agc_stage[5] = 0xFF, + }, + }, + [ AHD30_5M_20P ] = { /* x */ + { + .hsync_stage[0] = 0x90a634, /* short */ + .hsync_stage[1] = 0x8bc1a8, /* 100m */ + .hsync_stage[2] = 0x878cbc, /* 200m */ + .hsync_stage[3] = 0x83dea5, /* 300m */ + .hsync_stage[4] = 0x800490, /* 400m */ + .hsync_stage[5] = 0x3ef336, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + [ AHD30_5_3M_20P ] = { /* x */ + { + .hsync_stage[0] = 0x90a634, /* short */ + .hsync_stage[1] = 0x8bc1a8, /* 100m */ + .hsync_stage[2] = 0x878cbc, /* 200m */ + .hsync_stage[3] = 0x83dea5, /* 300m */ + .hsync_stage[4] = 0x800490, /* 400m */ + .hsync_stage[5] = 0x3ef336, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + + [ TVI_5M_12_5P ] = { /* o */ + { + .hsync_stage[0] = 0x32dd89, /* short */ + .hsync_stage[1] = 0x2f483a, /* 100m */ + .hsync_stage[2] = 0x2bba9d, /* 200m */ + .hsync_stage[3] = 0x290792, /* 300m */ + .hsync_stage[4] = 0x26a191, /* 400m */ + .hsync_stage[5] = 0x12bbd8, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ TVI_5M_20P ] = { /* o */ + { + .hsync_stage[0] = 0x6E67CA, /* short */ + .hsync_stage[1] = 0x698B0E, /* 100m */ + .hsync_stage[2] = 0x657398, /* 200m */ + .hsync_stage[3] = 0x622369, /* 300m */ + .hsync_stage[4] = 0x5E362E, /* 400m */ + .hsync_stage[5] = 0x2DC8C7, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ TVI_3M_18P ] = { /* o */ + { + .hsync_stage[0] = 0x33efe3, /* short */ + .hsync_stage[1] = 0x313b04, /* 100m */ + .hsync_stage[2] = 0x2d6833, /* 200m */ + .hsync_stage[3] = 0x2a8695, /* 300m */ + .hsync_stage[4] = 0x27d113, /* 400m */ + .hsync_stage[5] = 0x13101d, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ AHD20_1080P_25P ] = { /* o */ + { + .hsync_stage[0] = 0x8FC27B, /* short */ + .hsync_stage[1] = 0x8D5419, /* 100m */ + .hsync_stage[2] = 0x89E49A, /* 200m */ + .hsync_stage[3] = 0x86AF2D, /* 300m */ + .hsync_stage[4] = 0x846EAE, /* 400m */ + .hsync_stage[5] = 0x41789C, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ AHD20_1080P_30P ] = { /* o */ + { + .hsync_stage[0] = 0x8FACC0, /* short */ + .hsync_stage[1] = 0x8be6bd, /* 100m */ + .hsync_stage[2] = 0x8811a7, /* 200m */ + .hsync_stage[3] = 0x85aecc, /* 300m */ + .hsync_stage[4] = 0x825e98, /* 400m */ + .hsync_stage[5] = 0x4029ee, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ AHD20_1080P_12_5P_EX ] = { /* o */ + { + .hsync_stage[0] = 0x8F06D5, /* short */ + .hsync_stage[1] = 0x8C3CA0, /* 100m */ + .hsync_stage[2] = 0x896997, /* 200m */ + .hsync_stage[3] = 0x859D32, /* 300m */ + .hsync_stage[4] = 0x821cdc, /* 400m */ + .hsync_stage[5] = 0x7EB58A, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ AHD20_1080P_15P_EX ] = { /* o */ + { + .hsync_stage[0] = 0x8F0A3E, /* short */ + .hsync_stage[1] = 0x8BE9B4, /* 100m */ + .hsync_stage[2] = 0x8924F4, /* 200m */ + .hsync_stage[3] = 0x84E8EB, /* 300m */ + .hsync_stage[4] = 0x8108d5, /* 400m */ + .hsync_stage[5] = 0x7BE0E9, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ TVI_FHD_30P ] = { /* o */ + { + .hsync_stage[0] = 0x335c95, /* short */ + .hsync_stage[1] = 0x2ef0cf, /* 100m */ + .hsync_stage[2] = 0x2ad6af, /* 200m */ + .hsync_stage[3] = 0x271c03, /* 300m */ + .hsync_stage[4] = 0x24828b, /* 400m */ + .hsync_stage[5] = 0x117635, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ TVI_FHD_25P ] = { /* o */ + { + .hsync_stage[0] = 0x32c93b, /* short */ + .hsync_stage[1] = 0x2e9e42, /* 100m */ + .hsync_stage[2] = 0x2b0956, /* 200m */ + .hsync_stage[3] = 0x28462f, /* 300m */ + .hsync_stage[4] = 0x25b863, /* 400m */ + .hsync_stage[5] = 0x123103, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ AHD20_720P_25P_EX_Btype ] = { /* o */ + { + .hsync_stage[0] = 0x8f23e4, /* short */ + .hsync_stage[1] = 0x8bc71b, /* 100m */ + .hsync_stage[2] = 0x88b447, /* 200m */ + .hsync_stage[3] = 0x85d75a, /* 300m */ + .hsync_stage[4] = 0x821cdc, /* 400m */ + .hsync_stage[5] = 0x3fe13b, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ AHD20_720P_30P_EX_Btype ] = { /* o */ + { + .hsync_stage[0] = 0x8F939B, /* short */ + .hsync_stage[1] = 0x8CBD2B, /* 100m */ + .hsync_stage[2] = 0x8975CE, /* 200m */ + .hsync_stage[3] = 0x84B30C, /* 300m */ + .hsync_stage[4] = 0x817A57, /* 400m */ + .hsync_stage[5] = 0x3F4376, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ AHD20_720P_25P ] = { /* o */ + { + .hsync_stage[0] = 0x8f23e4, /* short */ + .hsync_stage[1] = 0x8bc71b, /* 100m */ + .hsync_stage[2] = 0x88b447, /* 200m */ + .hsync_stage[3] = 0x85d75a, /* 300m */ + .hsync_stage[4] = 0x821cdc, /* 400m */ + .hsync_stage[5] = 0x3fe13b, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ AHD20_720P_30P ] = { /* o */ + { + .hsync_stage[0] = 0x8c9768, /* short */ + .hsync_stage[1] = 0x8947f1, /* 100m */ + .hsync_stage[2] = 0x867be1, /* 200m */ + .hsync_stage[3] = 0x8e9248, /* 300m */ + .hsync_stage[4] = 0x7ed392, /* 400m */ + .hsync_stage[5] = 0x3cf779, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ AHD20_720P_50P ] = { /* o */ + { + .hsync_stage[0] = 0x8f23e4, /* short */ + .hsync_stage[1] = 0x8bc71b, /* 100m */ + .hsync_stage[2] = 0x88b447, /* 200m */ + .hsync_stage[3] = 0x85d75a, /* 300m */ + .hsync_stage[4] = 0x821cdc, /* 400m */ + .hsync_stage[5] = 0x3fe13b, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ AHD20_720P_60P ] = { /* o */ + { + .hsync_stage[0] = 0x8F939B, /* short */ + .hsync_stage[1] = 0x8CBD2B, /* 100m */ + .hsync_stage[2] = 0x8975CE, /* 200m */ + .hsync_stage[3] = 0x84B30C, /* 300m */ + .hsync_stage[4] = 0x817A57, /* 400m */ + .hsync_stage[5] = 0x3F4376, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + + [ CVI_HD_30P_EX ] = { /* o */ + { + .hsync_stage[0] = 0x8d6537, /* short */ + .hsync_stage[1] = 0x89efdf, /* 100m */ + .hsync_stage[2] = 0x87258d, /* 200m */ + .hsync_stage[3] = 0x83c382, /* 300m */ + .hsync_stage[4] = 0x7e8606, /* 400m */ + .hsync_stage[5] = 0x3cbc38, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + + [ CVI_HD_25P_EX ] = { /* o */ + { + .hsync_stage[0] = 0x8d2de6, /* short */ + .hsync_stage[1] = 0x89e054, /* 100m */ + .hsync_stage[2] = 0x8700c9, /* 200m */ + .hsync_stage[3] = 0x83fc26, /* 300m */ + .hsync_stage[4] = 0x7f6b15, /* 400m */ + .hsync_stage[5] = 0x3d3ae7, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + + [ TVI_HD_30P_EX ] = { /* o */ + { + .hsync_stage[0] = 0x326abb, /* short */ + .hsync_stage[1] = 0x2fcab9, /* 100m */ + .hsync_stage[2] = 0x2cdb21, /* 200m */ + .hsync_stage[3] = 0x2a977c, /* 300m */ + .hsync_stage[4] = 0x2808d5, /* 400m */ + .hsync_stage[5] = 0x134e66, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + + [ TVI_HD_25P_EX ] = { /* o */ + { + .hsync_stage[0] = 0x32f22c, /* short */ + .hsync_stage[1] = 0x2f560b, /* 100m */ + .hsync_stage[2] = 0x2d12cd, /* 200m */ + .hsync_stage[3] = 0x299f9d, /* 300m */ + .hsync_stage[4] = 0x2832ed, /* 400m */ + .hsync_stage[5] = 0x1369c2, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + + [ TVI_HD_B_30P_EX ] = { /* o */ + { + .hsync_stage[0] = 0x326abb, /* short */ + .hsync_stage[1] = 0x2fcab9, /* 100m */ + .hsync_stage[2] = 0x2cdb21, /* 200m */ + .hsync_stage[3] = 0x2a977c, /* 300m */ + .hsync_stage[4] = 0x2808d5, /* 400m */ + .hsync_stage[5] = 0x134e66, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + + [ TVI_HD_B_25P_EX ] = { /* o */ + { + .hsync_stage[0] = 0x32f22c, /* short */ + .hsync_stage[1] = 0x2f560b, /* 100m */ + .hsync_stage[2] = 0x2d12cd, /* 200m */ + .hsync_stage[3] = 0x299f9d, /* 300m */ + .hsync_stage[4] = 0x2832ed, /* 400m */ + .hsync_stage[5] = 0x1369c2, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + + [ AHD30_5M_12_5P ] = { /* x */ + { + .hsync_stage[0] = 0x9000e1, /* short */ + .hsync_stage[1] = 0x8d8c0b, /* 100m */ + .hsync_stage[2] = 0x8b84d2, /* 200m */ + .hsync_stage[3] = 0x8833af, /* 300m */ + .hsync_stage[4] = 0x8462c5, /* 400m */ + .hsync_stage[5] = 0x3d69db, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + + [ AHD30_3M_25P ] = { /* x */ + { + .hsync_stage[0] = 0x8b4538, /* short */ + .hsync_stage[1] = 0x8c969c, /* 100m */ + .hsync_stage[2] = 0x8a715b, /* 200m */ + .hsync_stage[3] = 0x8378a6, /* 300m */ + .hsync_stage[4] = 0x828834, /* 400m */ + .hsync_stage[5] = 0x406cea, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + + [ AHD30_3M_30P ] = { /* x */ + { + .hsync_stage[0] = 0x8d3a42, /* short */ + .hsync_stage[1] = 0x8c72ec, /* 100m */ + .hsync_stage[2] = 0x896ba3, /* 200m */ + .hsync_stage[3] = 0x86f215, /* 300m */ + .hsync_stage[4] = 0x8317f0, /* 400m */ + .hsync_stage[5] = 0x40bedd, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + +}; + +#if 1 +/* + * EQ value + */ +static video_equalizer_value_table_s nvp6158_equalizer_value_fmtdef[ NC_VIVO_CH_FORMATDEF_MAX ] = +{ + [ CVI_4M_25P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7a, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x95, .deq_a_sel[4] = 0x94, .deq_a_sel[5] = 0x95, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x81, .contrast[1] = 0x81, .contrast[2] = 0x7d, .contrast[3] = 0x7a, .contrast[4] = 0x7b, .contrast[5] = 0x82, + .h_peaking[0] = 0x20, .h_peaking[1] = 0x20, .h_peaking[2] = 0x30, .h_peaking[3] = 0x30, .h_peaking[4] = 0x30, .h_peaking[5] = 0x30, + .c_filter[0] = 0x92, .c_filter[1] = 0xb2, .c_filter[2] = 0xb2, .c_filter[3] = 0xb2, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x04, .hue[1] = 0x04, .hue[2] = 0x04, .hue[3] = 0x04, .hue[4] = 0x04, .hue[5] = 0x04, + .u_gain[0] = 0xe3, .u_gain[1] = 0x00, .u_gain[2] = 0x04, .u_gain[3] = 0x14, .u_gain[4] = 0x14, .u_gain[5] = 0x14, + .v_gain[0] = 0xe8, .v_gain[1] = 0x08, .v_gain[2] = 0x04, .v_gain[3] = 0x14, .v_gain[4] = 0x14, .v_gain[5] = 0x14, + .u_offset[0] = 0xfe, .u_offset[1] = 0xfb, .u_offset[2] = 0xf6, .u_offset[3] = 0xf6, .u_offset[4] = 0xf6, .u_offset[5] = 0xf6, + .v_offset[0] = 0xfa, .v_offset[1] = 0xfc, .v_offset[2] = 0xfc, .v_offset[3] = 0xfc, .v_offset[4] = 0xfc, .v_offset[5] = 0xfc, + + .black_level[0] = 0x81, .black_level[1] = 0x82, .black_level[2] = 0x83, .black_level[3] = 0x88, .black_level[4] = 0x90, .black_level[5] = 0x92, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x27, .acc_ref[5] = 0x17, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0x90, .sub_saturation[1] = 0x90, .sub_saturation[2] = 0x90, .sub_saturation[3] = 0x40, .sub_saturation[4] = 0x40, .sub_saturation[5] = 0x40, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0xb0, .c_option[5] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x82, .h_delay_a[1] = 0x82, .h_delay_a[2] = 0x81, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x10, .h_delay_c[1] = 0x10, .h_delay_c[2] = 0x10, .h_delay_c[3] = 0x10, .h_delay_c[4] = 0x10, .h_delay_c[5] = 0x10, + .y_delay[0] = 0x04, .y_delay[1] = 0x04, .y_delay[2] = 0x04, .y_delay[3] = 0x04, .y_delay[4] = 0x04, .y_delay[5] = 0x04, + + }, + /* clk */ + { + .clk_adc[0] = 0x04, .clk_adc[1] = 0x04, .clk_adc[2] = 0x04, .clk_adc[3] = 0x04, .clk_adc[4] = 0x04, .clk_adc[5] = 0x04, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { +/*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, +/*B9 0x97*/ .h_scaler2[0] = 0xe9, .h_scaler2[1] = 0xe9, .h_scaler2[2] = 0xe9, .h_scaler2[3] = 0xe9, .h_scaler2[4] = 0xe9, .h_scaler2[5] = 0xe9, +/*B9 0x98*/ .h_scaler3[0] = 0x69, .h_scaler3[1] = 0x69, .h_scaler3[2] = 0x69, .h_scaler3[3] = 0x69, .h_scaler3[4] = 0x69, .h_scaler3[5] = 0x69, +/*B9 0x99*/ .h_scaler4[0] = 0x01, .h_scaler4[1] = 0x01, .h_scaler4[2] = 0x01, .h_scaler4[3] = 0x01, .h_scaler4[4] = 0x01, .h_scaler4[5] = 0x01, +/*B9 0x9a*/ .h_scaler5[0] = 0xc0, .h_scaler5[1] = 0xc0, .h_scaler5[2] = 0xc0, .h_scaler5[3] = 0xc0, .h_scaler5[4] = 0xc0, .h_scaler5[5] = 0xc0, +/*B9 0x9b*/ .h_scaler6[0] = 0x02, .h_scaler6[1] = 0x02, .h_scaler6[2] = 0x02, .h_scaler6[3] = 0x02, .h_scaler6[4] = 0x02, .h_scaler6[5] = 0x02, +/*B9 0x9c*/ .h_scaler7[0] = 0x9e, .h_scaler7[1] = 0x9e, .h_scaler7[2] = 0x9e, .h_scaler7[3] = 0x9e, .h_scaler7[4] = 0x9e, .h_scaler7[5] = 0x9e, +/*B9 0x9d*/ .h_scaler8[0] = 0x50, .h_scaler8[1] = 0x50, .h_scaler8[2] = 0x50, .h_scaler8[3] = 0x50, .h_scaler8[4] = 0x50, .h_scaler8[5] = 0x50, +/*B9 0x9e*/ .h_scaler9[0] = 0x14, .h_scaler9[1] = 0x14, .h_scaler9[2] = 0x14, .h_scaler9[3] = 0x14, .h_scaler9[4] = 0x14, .h_scaler9[5] = 0x14, + + +/*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + +/*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, +/*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, +/*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, +/*B0 0x81*/ .format_set1[0] = 0x0f, .format_set1[1] = 0x0f, .format_set1[2] = 0x0f, .format_set1[3] = 0x0f, .format_set1[4] = 0x0f, .format_set1[5] = 0x0f, +/*B0 0x85*/ .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, + +/*B0 0x64*/ .v_delay[0] = 0x80, .v_delay[1] = 0x80, .v_delay[2] = 0x80, .v_delay[3] = 0x80, .v_delay[4] = 0x80, .v_delay[5] = 0x80, + }, + }, + [ CVI_4M_30P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7a, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x95, .deq_a_sel[4] = 0x94, .deq_a_sel[5] = 0x95, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x81, .contrast[1] = 0x81, .contrast[2] = 0x7d, .contrast[3] = 0x7a, .contrast[4] = 0x7b, .contrast[5] = 0x82, + .h_peaking[0] = 0x20, .h_peaking[1] = 0x20, .h_peaking[2] = 0x30, .h_peaking[3] = 0x30, .h_peaking[4] = 0x30, .h_peaking[5] = 0x30, + .c_filter[0] = 0x92, .c_filter[1] = 0xb2, .c_filter[2] = 0xb2, .c_filter[3] = 0xb2, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x04, .hue[1] = 0x04, .hue[2] = 0x04, .hue[3] = 0x04, .hue[4] = 0x04, .hue[5] = 0x04, + .u_gain[0] = 0xe3, .u_gain[1] = 0x00, .u_gain[2] = 0x04, .u_gain[3] = 0x14, .u_gain[4] = 0x14, .u_gain[5] = 0x14, + .v_gain[0] = 0xe8, .v_gain[1] = 0x08, .v_gain[2] = 0x04, .v_gain[3] = 0x14, .v_gain[4] = 0x14, .v_gain[5] = 0x14, + .u_offset[0] = 0xfe, .u_offset[1] = 0xfb, .u_offset[2] = 0xf6, .u_offset[3] = 0xf6, .u_offset[4] = 0xf6, .u_offset[5] = 0xf6, + .v_offset[0] = 0xfa, .v_offset[1] = 0xfc, .v_offset[2] = 0xfc, .v_offset[3] = 0xfc, .v_offset[4] = 0xfc, .v_offset[5] = 0xfc, + + .black_level[0] = 0x81, .black_level[1] = 0x82, .black_level[2] = 0x83, .black_level[3] = 0x88, .black_level[4] = 0x90, .black_level[5] = 0x92, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x27, .acc_ref[5] = 0x17, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0x90, .sub_saturation[1] = 0x90, .sub_saturation[2] = 0x90, .sub_saturation[3] = 0x40, .sub_saturation[4] = 0x40, .sub_saturation[5] = 0x40, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0xb0, .c_option[5] = 0xb0, + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x04, .y_delay[1] = 0x04, .y_delay[2] = 0x04, .y_delay[3] = 0x04, .y_delay[4] = 0x04, .y_delay[5] = 0x04, + + }, + /* clk */ + { + .clk_adc[0] = 0x04, .clk_adc[1] = 0x04, .clk_adc[2] = 0x04, .clk_adc[3] = 0x04, .clk_adc[4] = 0x04, .clk_adc[5] = 0x04, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + .h_scaler2[0] = 0xf9, .h_scaler2[1] = 0xf9, .h_scaler2[2] = 0xf9, .h_scaler2[3] = 0xf9, .h_scaler2[4] = 0xf9, .h_scaler2[5] = 0xf9, + .h_scaler3[0] = 0x08, .h_scaler3[1] = 0x08, .h_scaler3[2] = 0x08, .h_scaler3[3] = 0x08, .h_scaler3[4] = 0x08, .h_scaler3[5] = 0x08, + .h_scaler4[0] = 0x01, .h_scaler4[1] = 0x01, .h_scaler4[2] = 0x01, .h_scaler4[3] = 0x01, .h_scaler4[4] = 0x01, .h_scaler4[5] = 0x01, +/*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, +/*B9 0x9b*/ .h_scaler6[0] = 0x01, .h_scaler6[1] = 0x01, .h_scaler6[2] = 0x01, .h_scaler6[3] = 0x01, .h_scaler6[4] = 0x01, .h_scaler6[5] = 0x01, +/*B9 0x9c*/ .h_scaler7[0] = 0x83, .h_scaler7[1] = 0x83, .h_scaler7[2] = 0x83, .h_scaler7[3] = 0x83, .h_scaler7[4] = 0x83, .h_scaler7[5] = 0x83, +/*B9 0x9d*/ .h_scaler8[0] = 0x50, .h_scaler8[1] = 0x50, .h_scaler8[2] = 0x50, .h_scaler8[3] = 0x50, .h_scaler8[4] = 0x50, .h_scaler8[5] = 0x50, +/*B9 0x9e*/ .h_scaler9[0] = 0x14, .h_scaler9[1] = 0x14, .h_scaler9[2] = 0x14, .h_scaler9[3] = 0x14, .h_scaler9[4] = 0x14, .h_scaler9[5] = 0x14, + + .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + .format_set1[0] = 0x0e, .format_set1[1] = 0x0e, .format_set1[2] = 0x0e, .format_set1[3] = 0x0e, .format_set1[4] = 0x0e, .format_set1[5] = 0x0e, + .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, + + .v_delay[0] = 0x80, .v_delay[1] = 0x80, .v_delay[2] = 0x80, .v_delay[3] = 0x80, .v_delay[4] = 0x80, .v_delay[5] = 0x80, + }, + }, + [ CVI_5M_20P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7A, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x94, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x88, .contrast[2] = 0x88, .contrast[3] = 0x88, .contrast[4] = 0x88, .contrast[5] = 0x88, + .h_peaking[0] = 0x10, .h_peaking[1] = 0x10, .h_peaking[2] = 0x10, .h_peaking[3] = 0x00, .h_peaking[4] = 0x30, .h_peaking[5] = 0x20, + .c_filter[0] = 0x92, .c_filter[1] = 0x92, .c_filter[2] = 0xb2, .c_filter[3] = 0xb2, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, + .u_gain[0] = 0x50, .u_gain[1] = 0x50, .u_gain[2] = 0x50, .u_gain[3] = 0x50, .u_gain[4] = 0x50, .u_gain[5] = 0x50, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, + .u_offset[0] = 0xfc, .u_offset[1] = 0xfc, .u_offset[2] = 0xfc, .u_offset[3] = 0xfc, .u_offset[4] = 0xfc, .u_offset[5] = 0xfc, + .v_offset[0] = 0xfc, .v_offset[1] = 0xfc, .v_offset[2] = 0xfc, .v_offset[3] = 0xfc, .v_offset[4] = 0xfc, .v_offset[5] = 0xfc, + + .black_level[0] = 0x88, .black_level[1] = 0x88, .black_level[2] = 0x88, .black_level[3] = 0x8a, .black_level[4] = 0x8d, .black_level[5] = 0x8e, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x47, .acc_ref[4] = 0x30, .acc_ref[5] = 0x17, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0xa0, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa0, .sub_saturation[1] = 0xa0, .sub_saturation[2] = 0xa0, .sub_saturation[3] = 0x80, .sub_saturation[4] = 0x50, .sub_saturation[5] = 0x20, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x00, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0xa0, .c_option[2] = 0xb0, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x8e, .h_delay_a[1] = 0x8f, .h_delay_a[2] = 0x90, .h_delay_a[3] = 0x90, .h_delay_a[4] = 0x90, .h_delay_a[5] = 0x90, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x0f, .h_delay_c[1] = 0x0f, .h_delay_c[2] = 0x0f, .h_delay_c[3] = 0x0f, .h_delay_c[4] = 0x0f, .h_delay_c[5] = 0x0f, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0f, .format_set1[1] = 0x0f, .format_set1[2] = 0x0f, .format_set1[3] = 0x0f, .format_set1[4] = 0x0f, .format_set1[5] = 0x0f, + /*B0 0x85*/ .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, + + /*B0 0x64*/ .v_delay[0] = 0x27, .v_delay[1] = 0x27, .v_delay[2] = 0x27, .v_delay[3] = 0x27, .v_delay[4] = 0x27, .v_delay[5] = 0x27, + }, + }, + [ CVI_8M_12_5P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7a, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x95, .deq_a_sel[4] = 0x94, .deq_a_sel[5] = 0x95, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x68, .contrast[1] = 0x68, .contrast[2] = 0x68, .contrast[3] = 0x68, .contrast[4] = 0x68, .contrast[5] = 0x68, + .h_peaking[0] = 0x20, .h_peaking[1] = 0x20, .h_peaking[2] = 0x30, .h_peaking[3] = 0x30, .h_peaking[4] = 0x30, .h_peaking[5] = 0x30, + .c_filter[0] = 0x81, .c_filter[1] = 0x91, .c_filter[2] = 0x91, .c_filter[3] = 0xa2, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x24, .hue[1] = 0x24, .hue[2] = 0x24, .hue[3] = 0x24, .hue[4] = 0x24, .hue[5] = 0x24, + .u_gain[0] = 0x60, .u_gain[1] = 0x60, .u_gain[2] = 0x60, .u_gain[3] = 0x60, .u_gain[4] = 0x60, .u_gain[5] = 0x60, + .v_gain[0] = 0xf0, .v_gain[1] = 0xf0, .v_gain[2] = 0xf0, .v_gain[3] = 0xf0, .v_gain[4] = 0xf0, .v_gain[5] = 0xf0, + .u_offset[0] = 0xfa, .u_offset[1] = 0xfa, .u_offset[2] = 0xfa, .u_offset[3] = 0xfa, .u_offset[4] = 0xfa, .u_offset[5] = 0xfa, + .v_offset[0] = 0xfa, .v_offset[1] = 0xfa, .v_offset[2] = 0xfa, .v_offset[3] = 0xfa, .v_offset[4] = 0xfa, .v_offset[5] = 0xfa, + + .black_level[0] = 0x84, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x8b, .black_level[5] = 0x8b, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x47, .acc_ref[5] = 0x37, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0x88, .sub_saturation[1] = 0x88, .sub_saturation[2] = 0x88, .sub_saturation[3] = 0x88, .sub_saturation[4] = 0x48, .sub_saturation[5] = 0x20, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0xc0, .c_option[1] = 0xc0, .c_option[2] = 0xc0, .c_option[3] = 0xc0, .c_option[4] = 0xc0, .c_option[5] = 0xc0, + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0xc0, .h_delay_a[1] = 0xc0, .h_delay_a[2] = 0xc0, .h_delay_a[3] = 0xc0, .h_delay_a[4] = 0xc0, .h_delay_a[5] = 0xc0, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x20, .h_delay_c[1] = 0x20, .h_delay_c[2] = 0x20, .h_delay_c[3] = 0x20, .h_delay_c[4] = 0x20, .h_delay_c[5] = 0x20, + .y_delay[0] = 0x14, .y_delay[1] = 0x14, .y_delay[2] = 0x24, .y_delay[3] = 0x24, .y_delay[4] = 0x24, .y_delay[5] = 0x24, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + .h_scaler2[0] = 0xd9, .h_scaler2[1] = 0xd9, .h_scaler2[2] = 0xd9, .h_scaler2[3] = 0xd9, .h_scaler2[4] = 0xd9, .h_scaler2[5] = 0xd9, + .h_scaler3[0] = 0x68, .h_scaler3[1] = 0x68, .h_scaler3[2] = 0x68, .h_scaler3[3] = 0x68, .h_scaler3[4] = 0x68, .h_scaler3[5] = 0x68, + .h_scaler4[0] = 0x01, .h_scaler4[1] = 0x01, .h_scaler4[2] = 0x01, .h_scaler4[3] = 0x01, .h_scaler4[4] = 0x01, .h_scaler4[5] = 0x01, +/*B9 0x9a*/ .h_scaler5[0] = 0xc0, .h_scaler5[1] = 0xc0, .h_scaler5[2] = 0xc0, .h_scaler5[3] = 0xc0, .h_scaler5[4] = 0xc0, .h_scaler5[5] = 0xc0, +/*B9 0x9b*/ .h_scaler6[0] = 0x01, .h_scaler6[1] = 0x01, .h_scaler6[2] = 0x01, .h_scaler6[3] = 0x01, .h_scaler6[4] = 0x01, .h_scaler6[5] = 0x01, +/*B9 0x9c*/ .h_scaler7[0] = 0x8d, .h_scaler7[1] = 0x8d, .h_scaler7[2] = 0x8d, .h_scaler7[3] = 0x8d, .h_scaler7[4] = 0x8d, .h_scaler7[5] = 0x8d, +/*B9 0x9d*/ .h_scaler8[0] = 0xf0, .h_scaler8[1] = 0xf0, .h_scaler8[2] = 0xf0, .h_scaler8[3] = 0xf0, .h_scaler8[4] = 0xf0, .h_scaler8[5] = 0xf0, +/*B9 0x9e*/ .h_scaler9[0] = 0x0f, .h_scaler9[1] = 0x0f, .h_scaler9[2] = 0x0f, .h_scaler9[3] = 0x0f, .h_scaler9[4] = 0x0f, .h_scaler9[5] = 0x0f, + + .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + .format_set1[0] = 0x01, .format_set1[1] = 0x01, .format_set1[2] = 0x01, .format_set1[3] = 0x01, .format_set1[4] = 0x01, .format_set1[5] = 0x01, + .format_set2[0] = 0x0a, .format_set2[1] = 0x0a, .format_set2[2] = 0x0a, .format_set2[3] = 0x0a, .format_set2[4] = 0x0a, .format_set2[5] = 0x0a, + + .v_delay[0] = 0x80, .v_delay[1] = 0x80, .v_delay[2] = 0x80, .v_delay[3] = 0x80, .v_delay[4] = 0x80, .v_delay[5] = 0x80, + }, + }, + [ CVI_8M_15P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7a, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x95, .deq_a_sel[4] = 0x94, .deq_a_sel[5] = 0x95, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x68, .contrast[1] = 0x68, .contrast[2] = 0x68, .contrast[3] = 0x68, .contrast[4] = 0x68, .contrast[5] = 0x68, + .h_peaking[0] = 0x20, .h_peaking[1] = 0x20, .h_peaking[2] = 0x30, .h_peaking[3] = 0x30, .h_peaking[4] = 0x30, .h_peaking[5] = 0x30, + .c_filter[0] = 0x81, .c_filter[1] = 0x91, .c_filter[2] = 0x91, .c_filter[3] = 0xa2, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x24, .hue[1] = 0x24, .hue[2] = 0x24, .hue[3] = 0x24, .hue[4] = 0x24, .hue[5] = 0x24, + .u_gain[0] = 0x60, .u_gain[1] = 0x60, .u_gain[2] = 0x60, .u_gain[3] = 0x60, .u_gain[4] = 0x60, .u_gain[5] = 0x60, + .v_gain[0] = 0xf0, .v_gain[1] = 0xf0, .v_gain[2] = 0xf0, .v_gain[3] = 0xf0, .v_gain[4] = 0xf0, .v_gain[5] = 0xf0, + .u_offset[0] = 0xfa, .u_offset[1] = 0xfa, .u_offset[2] = 0xfa, .u_offset[3] = 0xfa, .u_offset[4] = 0xfa, .u_offset[5] = 0xfa, + .v_offset[0] = 0xfa, .v_offset[1] = 0xfa, .v_offset[2] = 0xfa, .v_offset[3] = 0xfa, .v_offset[4] = 0xfa, .v_offset[5] = 0xfa, + + .black_level[0] = 0x84, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x8b, .black_level[5] = 0x8b, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x47, .acc_ref[5] = 0x37, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0x88, .sub_saturation[1] = 0x88, .sub_saturation[2] = 0x88, .sub_saturation[3] = 0x88, .sub_saturation[4] = 0x48, .sub_saturation[5] = 0x20, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0xc0, .c_option[1] = 0xc0, .c_option[2] = 0xc0, .c_option[3] = 0xc0, .c_option[4] = 0xc0, .c_option[5] = 0xc0, + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x02, .h_delay_c[1] = 0x02, .h_delay_c[2] = 0x02, .h_delay_c[3] = 0x02, .h_delay_c[4] = 0x02, .h_delay_c[5] = 0x02, + .y_delay[0] = 0x14, .y_delay[1] = 0x14, .y_delay[2] = 0x24, .y_delay[3] = 0x24, .y_delay[4] = 0x24, .y_delay[5] = 0x24, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, + .h_scaler2[0] = 0xf9, .h_scaler2[1] = 0xf9, .h_scaler2[2] = 0xf9, .h_scaler2[3] = 0xf9, .h_scaler2[4] = 0xf9, .h_scaler2[5] = 0xf9, + .h_scaler3[0] = 0xa8, .h_scaler3[1] = 0xa8, .h_scaler3[2] = 0xa8, .h_scaler3[3] = 0xa8, .h_scaler3[4] = 0xa8, .h_scaler3[5] = 0xa8, + .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, +/*B9 0x9a*/ .h_scaler5[0] = 0x10, .h_scaler5[1] = 0x10, .h_scaler5[2] = 0x10, .h_scaler5[3] = 0x10, .h_scaler5[4] = 0x10, .h_scaler5[5] = 0x10, +/*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, +/*B9 0x9c*/ .h_scaler7[0] = 0x74, .h_scaler7[1] = 0x74, .h_scaler7[2] = 0x74, .h_scaler7[3] = 0x74, .h_scaler7[4] = 0x74, .h_scaler7[5] = 0x74, +/*B9 0x9d*/ .h_scaler8[0] = 0xf0, .h_scaler8[1] = 0xf0, .h_scaler8[2] = 0xf0, .h_scaler8[3] = 0xf0, .h_scaler8[4] = 0xf0, .h_scaler8[5] = 0xf0, +/*B9 0x9e*/ .h_scaler9[0] = 0x14, .h_scaler9[1] = 0x14, .h_scaler9[2] = 0x14, .h_scaler9[3] = 0x14, .h_scaler9[4] = 0x14, .h_scaler9[5] = 0x14, + .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + .format_set1[0] = 0x02, .format_set1[1] = 0x02, .format_set1[2] = 0x02, .format_set1[3] = 0x02, .format_set1[4] = 0x02, .format_set1[5] = 0x02, + .format_set2[0] = 0x0a, .format_set2[1] = 0x0a, .format_set2[2] = 0x0a, .format_set2[3] = 0x0a, .format_set2[4] = 0x0a, .format_set2[5] = 0x0a, + + .v_delay[0] = 0x80, .v_delay[1] = 0x80, .v_delay[2] = 0x80, .v_delay[3] = 0x80, .v_delay[4] = 0x80, .v_delay[5] = 0x80, + }, + }, + [ CVI_FHD_25P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x07, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x47, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7A, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x95, .deq_a_sel[5] = 0x93, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x98, .contrast[1] = 0x98, .contrast[2] = 0x98, .contrast[3] = 0x98, .contrast[4] = 0x98, .contrast[5] = 0x98, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, + .c_filter[0] = 0x92, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0xfe, .hue[1] = 0xfe, .hue[2] = 0xfe, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x0c, .u_gain[1] = 0x0c, .u_gain[2] = 0x0c, .u_gain[3] = 0x0c, .u_gain[4] = 0x0c, .u_gain[5] = 0x0c, + .v_gain[0] = 0x1a, .v_gain[1] = 0x1a, .v_gain[2] = 0x1a, .v_gain[3] = 0x1a, .v_gain[4] = 0x1a, .v_gain[5] = 0x1a, + .u_offset[0] = 0xfa, .u_offset[1] = 0xfa, .u_offset[2] = 0xfa, .u_offset[3] = 0xfa, .u_offset[4] = 0xfa, .u_offset[5] = 0xfa, + .v_offset[0] = 0xfa, .v_offset[1] = 0xfa, .v_offset[2] = 0xfa, .v_offset[3] = 0xfa, .v_offset[4] = 0xfa, .v_offset[5] = 0xfa, + + .black_level[0] = 0x86, .black_level[1] = 0x7a, .black_level[2] = 0x88, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x84, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x47, .acc_ref[5] = 0x37, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa0, .sub_saturation[2] = 0xa0, .sub_saturation[3] = 0x90, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0xc0, .c_option[1] = 0xc0, .c_option[2] = 0xc0, .c_option[3] = 0xc0, .c_option[4] = 0xc0, .c_option[5] = 0xc0, + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x02, .y_delay[1] = 0x02, .y_delay[2] = 0x02, .y_delay[3] = 0x02, .y_delay[4] = 0x02, .y_delay[5] = 0x02, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, + .h_scaler2[0] = 0x49, .h_scaler2[1] = 0x49, .h_scaler2[2] = 0x49, .h_scaler2[3] = 0x49, .h_scaler2[4] = 0x49, .h_scaler2[5] = 0x49, + .h_scaler3[0] = 0x4f, .h_scaler3[1] = 0x4f, .h_scaler3[2] = 0x4f, .h_scaler3[3] = 0x4f, .h_scaler3[4] = 0x4f, .h_scaler3[5] = 0x4f, + .h_scaler4[0] = 0x02, .h_scaler4[1] = 0x02, .h_scaler4[2] = 0x02, .h_scaler4[3] = 0x02, .h_scaler4[4] = 0x02, .h_scaler4[5] = 0x02, +/*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, +/*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, +/*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, +/*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, +/*B9 0x9e*/ .h_scaler9[0] = 0x80, .h_scaler9[1] = 0x80, .h_scaler9[2] = 0x80, .h_scaler9[3] = 0x80, .h_scaler9[4] = 0x80, .h_scaler9[5] = 0x80, + + .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + .format_set1[0] = 0x03, .format_set1[1] = 0x03, .format_set1[2] = 0x03, .format_set1[3] = 0x03, .format_set1[4] = 0x03, .format_set1[5] = 0x03, + .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, + + .v_delay[0] = 0x80, .v_delay[1] = 0x80, .v_delay[2] = 0x80, .v_delay[3] = 0x80, .v_delay[4] = 0x80, .v_delay[5] = 0x80, + }, + }, + [ CVI_FHD_30P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x07, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x47, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7A, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x95, .deq_a_sel[5] = 0x93, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x98, .contrast[1] = 0x98, .contrast[2] = 0x98, .contrast[3] = 0x98, .contrast[4] = 0x98, .contrast[5] = 0x98, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, + .c_filter[0] = 0x92, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0xfe, .hue[1] = 0xfe, .hue[2] = 0xfe, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x0c, .u_gain[1] = 0x0c, .u_gain[2] = 0x0c, .u_gain[3] = 0x0c, .u_gain[4] = 0x0c, .u_gain[5] = 0x0c, + .v_gain[0] = 0x1a, .v_gain[1] = 0x1a, .v_gain[2] = 0x1a, .v_gain[3] = 0x1a, .v_gain[4] = 0x1a, .v_gain[5] = 0x1a, + .u_offset[0] = 0xfa, .u_offset[1] = 0xfa, .u_offset[2] = 0xfa, .u_offset[3] = 0xfa, .u_offset[4] = 0xfa, .u_offset[5] = 0xfa, + .v_offset[0] = 0xfa, .v_offset[1] = 0xfa, .v_offset[2] = 0xfa, .v_offset[3] = 0xfa, .v_offset[4] = 0xfa, .v_offset[5] = 0xfa, + + .black_level[0] = 0x86, .black_level[1] = 0x7a, .black_level[2] = 0x88, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x84, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x47, .acc_ref[5] = 0x37, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa0, .sub_saturation[2] = 0xa0, .sub_saturation[3] = 0x90, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0xc0, .c_option[1] = 0xc0, .c_option[2] = 0xc0, .c_option[3] = 0xc0, .c_option[4] = 0xc0, .c_option[5] = 0xc0, + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + + }, + /* timing_a */ + { + .h_delay_a[0] = 0x84, .h_delay_a[1] = 0x84, .h_delay_a[2] = 0x84, .h_delay_a[3] = 0x84, .h_delay_a[4] = 0x84, .h_delay_a[5] = 0x84, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x06, .h_delay_c[1] = 0x06, .h_delay_c[2] = 0x06, .h_delay_c[3] = 0x06, .h_delay_c[4] = 0x06, .h_delay_c[5] = 0x06, + .y_delay[0] = 0x02, .y_delay[1] = 0x02, .y_delay[2] = 0x02, .y_delay[3] = 0x02, .y_delay[4] = 0x02, .y_delay[5] = 0x02, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, + .h_scaler2[0] = 0x39, .h_scaler2[1] = 0x39, .h_scaler2[2] = 0x39, .h_scaler2[3] = 0x39, .h_scaler2[4] = 0x39, .h_scaler2[5] = 0x39, + .h_scaler3[0] = 0x50, .h_scaler3[1] = 0x50, .h_scaler3[2] = 0x50, .h_scaler3[3] = 0x50, .h_scaler3[4] = 0x50, .h_scaler3[5] = 0x50, + .h_scaler4[0] = 0x01, .h_scaler4[1] = 0x01, .h_scaler4[2] = 0x01, .h_scaler4[3] = 0x01, .h_scaler4[4] = 0x01, .h_scaler4[5] = 0x01, +/*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, +/*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, +/*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, +/*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, +/*B9 0x9e*/ .h_scaler9[0] = 0x80, .h_scaler9[1] = 0x80, .h_scaler9[2] = 0x80, .h_scaler9[3] = 0x80, .h_scaler9[4] = 0x80, .h_scaler9[5] = 0x80, + .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + .format_set1[0] = 0x02, .format_set1[1] = 0x02, .format_set1[2] = 0x02, .format_set1[3] = 0x02, .format_set1[4] = 0x02, .format_set1[5] = 0x02, + .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, + + .v_delay[0] = 0x80, .v_delay[1] = 0x80, .v_delay[2] = 0x80, .v_delay[3] = 0x80, .v_delay[4] = 0x80, .v_delay[5] = 0x80, + }, + }, + [ TVI_4M_25P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7A, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x6e, .contrast[1] = 0x6b, .contrast[2] = 0x98, .contrast[3] = 0x66, .contrast[4] = 0x61, .contrast[5] = 0x65, + .h_peaking[0] = 0x10, .h_peaking[1] = 0x10, .h_peaking[2] = 0x10, .h_peaking[3] = 0x00, .h_peaking[4] = 0x30, .h_peaking[5] = 0x20, + .c_filter[0] = 0x92, .c_filter[1] = 0xB2, .c_filter[2] = 0xb2, .c_filter[3] = 0xb2, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x02, .hue[3] = 0x02, .hue[4] = 0x02, .hue[5] = 0x02, + .u_gain[0] = 0x30, .u_gain[1] = 0x28, .u_gain[2] = 0x34, .u_gain[3] = 0x34, .u_gain[4] = 0x34, .u_gain[5] = 0x34, + .v_gain[0] = 0x3a, .v_gain[1] = 0x38, .v_gain[2] = 0x40, .v_gain[3] = 0x40, .v_gain[4] = 0x40, .v_gain[5] = 0x40, + .u_offset[0] = 0x02, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, + + .black_level[0] = 0x87, .black_level[1] = 0x87, .black_level[2] = 0x88, .black_level[3] = 0x8a, .black_level[4] = 0x8d, .black_level[5] = 0x8e, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x47, .acc_ref[4] = 0x37, .acc_ref[5] = 0x27, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0xa0, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0x80, .sub_saturation[1] = 0x80, .sub_saturation[2] = 0x80, .sub_saturation[3] = 0x60, .sub_saturation[4] = 0x50, .sub_saturation[5] = 0x20, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x00, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0xa0, .c_option[2] = 0x90, .c_option[3] = 0xa0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x7e, .h_delay_a[3] = 0x7e, .h_delay_a[4] = 0x7e, .h_delay_a[5] = 0x7e, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x02, .h_delay_c[1] = 0x02, .h_delay_c[2] = 0x02, .h_delay_c[3] = 0x02, .h_delay_c[4] = 0x02, .h_delay_c[5] = 0x02, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { +/*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, +/*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, +/*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, +/*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, +/*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, +/*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, +/*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, +/*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, +/*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + +/*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + +/*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, +/*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, +/*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + +/*B0 0x81*/ .format_set1[0] = 0x0f, .format_set1[1] = 0x0f, .format_set1[2] = 0x0f, .format_set1[3] = 0x0f, .format_set1[4] = 0x0f, .format_set1[5] = 0x0f, +/*B0 0x85*/ .format_set2[0] = 0x03, .format_set2[1] = 0x03, .format_set2[2] = 0x03, .format_set2[3] = 0x03, .format_set2[4] = 0x03, .format_set2[5] = 0x03, + +/*B0 0x64*/ .v_delay[0] = 0x80, .v_delay[1] = 0x80, .v_delay[2] = 0x80, .v_delay[3] = 0x80, .v_delay[4] = 0x80, .v_delay[5] = 0x80, + }, + }, + [ TVI_4M_30P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7A, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x93, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x6e, .contrast[1] = 0x6b, .contrast[2] = 0x98, .contrast[3] = 0x66, .contrast[4] = 0x61, .contrast[5] = 0x65, + .h_peaking[0] = 0x10, .h_peaking[1] = 0x10, .h_peaking[2] = 0x10, .h_peaking[3] = 0x00, .h_peaking[4] = 0x30, .h_peaking[5] = 0x20, + .c_filter[0] = 0x92, .c_filter[1] = 0x92, .c_filter[2] = 0xb2, .c_filter[3] = 0xb2, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x02, .hue[3] = 0x02, .hue[4] = 0x02, .hue[5] = 0x02, + .u_gain[0] = 0x30, .u_gain[1] = 0x28, .u_gain[2] = 0x34, .u_gain[3] = 0x34, .u_gain[4] = 0x34, .u_gain[5] = 0x34, + .v_gain[0] = 0x3a, .v_gain[1] = 0x38, .v_gain[2] = 0x40, .v_gain[3] = 0x40, .v_gain[4] = 0x40, .v_gain[5] = 0x40, + .u_offset[0] = 0x02, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, + + .black_level[0] = 0x87, .black_level[1] = 0x87, .black_level[2] = 0x88, .black_level[3] = 0x8a, .black_level[4] = 0x8d, .black_level[5] = 0x8e, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x47, .acc_ref[4] = 0x37, .acc_ref[5] = 0x27, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0xa0, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0x80, .sub_saturation[1] = 0x80, .sub_saturation[2] = 0x80, .sub_saturation[3] = 0x60, .sub_saturation[4] = 0x50, .sub_saturation[5] = 0x20, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x00, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0xa0, .c_option[2] = 0x90, .c_option[3] = 0xa0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x7e, .h_delay_a[3] = 0x7e, .h_delay_a[4] = 0x7e, .h_delay_a[5] = 0x7e, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x02, .h_delay_c[1] = 0x02, .h_delay_c[2] = 0x02, .h_delay_c[3] = 0x02, .h_delay_c[4] = 0x02, .h_delay_c[5] = 0x02, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0e, .format_set1[1] = 0x0e, .format_set1[2] = 0x0e, .format_set1[3] = 0x0e, .format_set1[4] = 0x0e, .format_set1[5] = 0x0e, + /*B0 0x85*/ .format_set2[0] = 0x03, .format_set2[1] = 0x03, .format_set2[2] = 0x03, .format_set2[3] = 0x03, .format_set2[4] = 0x03, .format_set2[5] = 0x03, + + /*B0 0x64*/ .v_delay[0] = 0x80, .v_delay[1] = 0x80, .v_delay[2] = 0x80, .v_delay[3] = 0x80, .v_delay[4] = 0x80, .v_delay[5] = 0x80, + }, + }, + [ TVI_4M_15P ] = /* o */ + { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7A, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x93, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x6e, .contrast[1] = 0x6b, .contrast[2] = 0x98, .contrast[3] = 0x66, .contrast[4] = 0x61, .contrast[5] = 0x65, + .h_peaking[0] = 0x10, .h_peaking[1] = 0x10, .h_peaking[2] = 0x10, .h_peaking[3] = 0x00, .h_peaking[4] = 0x30, .h_peaking[5] = 0x20, + .c_filter[0] = 0x92, .c_filter[1] = 0x92, .c_filter[2] = 0xb2, .c_filter[3] = 0xb2, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x02, .hue[3] = 0x02, .hue[4] = 0x02, .hue[5] = 0x02, + .u_gain[0] = 0x30, .u_gain[1] = 0x28, .u_gain[2] = 0x34, .u_gain[3] = 0x34, .u_gain[4] = 0x34, .u_gain[5] = 0x34, + .v_gain[0] = 0x3a, .v_gain[1] = 0x38, .v_gain[2] = 0x40, .v_gain[3] = 0x40, .v_gain[4] = 0x40, .v_gain[5] = 0x40, + .u_offset[0] = 0x02, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, + + .black_level[0] = 0x87, .black_level[1] = 0x87, .black_level[2] = 0x88, .black_level[3] = 0x8a, .black_level[4] = 0x8d, .black_level[5] = 0x8e, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x47, .acc_ref[4] = 0x37, .acc_ref[5] = 0x27, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0xa0, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0x80, .sub_saturation[1] = 0x80, .sub_saturation[2] = 0x80, .sub_saturation[3] = 0x60, .sub_saturation[4] = 0x50, .sub_saturation[5] = 0x20, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x00, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0xa0, .c_option[2] = 0x90, .c_option[3] = 0xa0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x7e, .h_delay_a[3] = 0x7e, .h_delay_a[4] = 0x7e, .h_delay_a[5] = 0x7e, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x09, .format_set1[1] = 0x09, .format_set1[2] = 0x09, .format_set1[3] = 0x09, .format_set1[4] = 0x09, .format_set1[5] = 0x09, + /*B0 0x85*/ .format_set2[0] = 0x03, .format_set2[1] = 0x03, .format_set2[2] = 0x03, .format_set2[3] = 0x03, .format_set2[4] = 0x03, .format_set2[5] = 0x03, + + /*B0 0x64*/ .v_delay[0] = 0x80, .v_delay[1] = 0x80, .v_delay[2] = 0x80, .v_delay[3] = 0x80, .v_delay[4] = 0x80, .v_delay[5] = 0x80, + }, + }, + + [ TVI_8M_15P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x37, .eq_band_sel[5] = 0x37, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7a, .eq_gain_sel[2] = 0x7c, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x94, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x92, .deq_a_sel[5] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x80, .contrast[1] = 0x80, .contrast[2] = 0x80, .contrast[3] = 0x80, .contrast[4] = 0x80, .contrast[5] = 0x80, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x10, .h_peaking[2] = 0x20, .h_peaking[3] = 0x70, .h_peaking[4] = 0x70, .h_peaking[5] = 0x70, + .c_filter[0] = 0x92, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, + .u_gain[0] = 0x20, .u_gain[1] = 0x20, .u_gain[2] = 0x20, .u_gain[3] = 0x20, .u_gain[4] = 0x20, .u_gain[5] = 0x20, + .v_gain[0] = 0xE0, .v_gain[1] = 0xE0, .v_gain[2] = 0xE0, .v_gain[3] = 0xE0, .v_gain[4] = 0xE0, .v_gain[5] = 0xE0, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, + + .black_level[0] = 0x85, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x8c, .black_level[4] = 0x8c, .black_level[5] = 0x80, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x47, .acc_ref[5] = 0x47, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xF0, .sub_saturation[1] = 0xf0, .sub_saturation[2] = 0xf0, .sub_saturation[3] = 0xe0, .sub_saturation[4] = 0xc0, .sub_saturation[5] = 0xc0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x90, .c_option[1] = 0x90, .c_option[2] = 0xa0, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x14, .y_delay[1] = 0x14, .y_delay[2] = 0x24, .y_delay[3] = 0x24, .y_delay[4] = 0x24, .y_delay[5] = 0x24, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, +/*B9 0x9a*/ .h_scaler5[0] = 0xc0, .h_scaler5[1] = 0xc0, .h_scaler5[2] = 0xc0, .h_scaler5[3] = 0xc0, .h_scaler5[4] = 0xc0, .h_scaler5[5] = 0xc0, +/*B9 0x9b*/ .h_scaler6[0] = 0x01, .h_scaler6[1] = 0x01, .h_scaler6[2] = 0x01, .h_scaler6[3] = 0x01, .h_scaler6[4] = 0x01, .h_scaler6[5] = 0x01, +/*B9 0x9c*/ .h_scaler7[0] = 0x8c, .h_scaler7[1] = 0x8c, .h_scaler7[2] = 0x8c, .h_scaler7[3] = 0x8c, .h_scaler7[4] = 0x8c, .h_scaler7[5] = 0x8c, +/*B9 0x9d*/ .h_scaler8[0] = 0xf0, .h_scaler8[1] = 0xf0, .h_scaler8[2] = 0xf0, .h_scaler8[3] = 0xf0, .h_scaler8[4] = 0xf0, .h_scaler8[5] = 0xf0, +/*B9 0x9e*/ .h_scaler9[0] = 0x0f, .h_scaler9[1] = 0x0f, .h_scaler9[2] = 0x0f, .h_scaler9[3] = 0x0f, .h_scaler9[4] = 0x0f, .h_scaler9[5] = 0x0f, + + .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + .format_set1[0] = 0x02, .format_set1[1] = 0x02, .format_set1[2] = 0x02, .format_set1[3] = 0x02, .format_set1[4] = 0x02, .format_set1[5] = 0x02, + .format_set2[0] = 0x0a, .format_set2[1] = 0x0a, .format_set2[2] = 0x0a, .format_set2[3] = 0x0a, .format_set2[4] = 0x0a, .format_set2[5] = 0x0a, + + .v_delay[0] = 0x80, .v_delay[1] = 0x80, .v_delay[2] = 0x80, .v_delay[3] = 0x80, .v_delay[4] = 0x80, .v_delay[5] = 0x80, + }, + }, + + [ TVI_8M_12_5P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7a, .eq_gain_sel[2] = 0x7c, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x94, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x92, .deq_a_sel[5] = 0x95, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x80, .contrast[1] = 0x80, .contrast[2] = 0x80, .contrast[3] = 0x80, .contrast[4] = 0x80, .contrast[5] = 0x80, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x10, .h_peaking[2] = 0x20, .h_peaking[3] = 0x70, .h_peaking[4] = 0x70, .h_peaking[5] = 0x70, + .c_filter[0] = 0x92, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, + .u_gain[0] = 0x20, .u_gain[1] = 0x20, .u_gain[2] = 0x20, .u_gain[3] = 0x20, .u_gain[4] = 0x20, .u_gain[5] = 0x20, + .v_gain[0] = 0xE0, .v_gain[1] = 0xE0, .v_gain[2] = 0xE0, .v_gain[3] = 0xE0, .v_gain[4] = 0xE0, .v_gain[5] = 0xE0, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, + + .black_level[0] = 0x85, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x8c, .black_level[4] = 0x8c, .black_level[5] = 0x80, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x47, .acc_ref[5] = 0x47, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xF0, .sub_saturation[1] = 0xf0, .sub_saturation[2] = 0xf0, .sub_saturation[3] = 0xe0, .sub_saturation[4] = 0xc0, .sub_saturation[5] = 0xc0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x90, .c_option[1] = 0x90, .c_option[2] = 0xa0, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xc0, + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x14, .y_delay[1] = 0x14, .y_delay[2] = 0x14, .y_delay[3] = 0x14, .y_delay[4] = 0x14, .y_delay[5] = 0x24, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, +/*B9 0x9a*/ .h_scaler5[0] = 0xc0, .h_scaler5[1] = 0xc0, .h_scaler5[2] = 0xc0, .h_scaler5[3] = 0xc0, .h_scaler5[4] = 0xc0, .h_scaler5[5] = 0xc0, +/*B9 0x9b*/ .h_scaler6[0] = 0x01, .h_scaler6[1] = 0x01, .h_scaler6[2] = 0x01, .h_scaler6[3] = 0x01, .h_scaler6[4] = 0x01, .h_scaler6[5] = 0x01, +/*B9 0x9c*/ .h_scaler7[0] = 0x8c, .h_scaler7[1] = 0x8c, .h_scaler7[2] = 0x8c, .h_scaler7[3] = 0x8c, .h_scaler7[4] = 0x8c, .h_scaler7[5] = 0x8c, +/*B9 0x9d*/ .h_scaler8[0] = 0xf0, .h_scaler8[1] = 0xf0, .h_scaler8[2] = 0xf0, .h_scaler8[3] = 0xf0, .h_scaler8[4] = 0xf0, .h_scaler8[5] = 0xf0, +/*B9 0x9e*/ .h_scaler9[0] = 0x0f, .h_scaler9[1] = 0x0f, .h_scaler9[2] = 0x0f, .h_scaler9[3] = 0x0f, .h_scaler9[4] = 0x0f, .h_scaler9[5] = 0x0f, + + .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + .format_set1[0] = 0x01, .format_set1[1] = 0x01, .format_set1[2] = 0x01, .format_set1[3] = 0x01, .format_set1[4] = 0x01, .format_set1[5] = 0x01, + .format_set2[0] = 0x0a, .format_set2[1] = 0x0a, .format_set2[2] = 0x0a, .format_set2[3] = 0x0a, .format_set2[4] = 0x0a, .format_set2[5] = 0x0a, + + .v_delay[0] = 0x80, .v_delay[1] = 0x80, .v_delay[2] = 0x80, .v_delay[3] = 0x80, .v_delay[4] = 0x80, .v_delay[5] = 0x80, + }, + }, + + [ TVI_5M_20P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7A, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x94, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x6e, .contrast[1] = 0x6b, .contrast[2] = 0x98, .contrast[3] = 0x66, .contrast[4] = 0x61, .contrast[5] = 0x65, + .h_peaking[0] = 0x10, .h_peaking[1] = 0x10, .h_peaking[2] = 0x10, .h_peaking[3] = 0x00, .h_peaking[4] = 0x30, .h_peaking[5] = 0x20, + .c_filter[0] = 0x92, .c_filter[1] = 0xb2, .c_filter[2] = 0xb2, .c_filter[3] = 0xb2, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x02, .hue[3] = 0x02, .hue[4] = 0x02, .hue[5] = 0x02, + .u_gain[0] = 0x30, .u_gain[1] = 0x28, .u_gain[2] = 0x34, .u_gain[3] = 0x34, .u_gain[4] = 0x34, .u_gain[5] = 0x34, + .v_gain[0] = 0x3a, .v_gain[1] = 0x38, .v_gain[2] = 0x40, .v_gain[3] = 0x40, .v_gain[4] = 0x40, .v_gain[5] = 0x40, + .u_offset[0] = 0x02, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, + + .black_level[0] = 0x87, .black_level[1] = 0x87, .black_level[2] = 0x88, .black_level[3] = 0x8a, .black_level[4] = 0x8d, .black_level[5] = 0x8e, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x47, .acc_ref[4] = 0x30, .acc_ref[5] = 0x17, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0xa0, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0x80, .sub_saturation[1] = 0x80, .sub_saturation[2] = 0x80, .sub_saturation[3] = 0x60, .sub_saturation[4] = 0x50, .sub_saturation[5] = 0x20, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x00, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0xa0, .c_option[2] = 0xb0, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x7e, .h_delay_a[3] = 0x7e, .h_delay_a[4] = 0x7e, .h_delay_a[5] = 0x7e, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x15, .y_delay[1] = 0x15, .y_delay[2] = 0x15, .y_delay[3] = 0x15, .y_delay[4] = 0x15, .y_delay[5] = 0x15, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0e, .format_set1[1] = 0x0e, .format_set1[2] = 0x0e, .format_set1[3] = 0x0e, .format_set1[4] = 0x0e, .format_set1[5] = 0x0e, + /*B0 0x85*/ .format_set2[0] = 0x03, .format_set2[1] = 0x03, .format_set2[2] = 0x03, .format_set2[3] = 0x03, .format_set2[4] = 0x03, .format_set2[5] = 0x03, + + /*B0 0x64*/ .v_delay[0] = 0x25, .v_delay[1] = 0x25, .v_delay[2] = 0x25, .v_delay[3] = 0x25, .v_delay[4] = 0x25, .v_delay[5] = 0x25, + }, + }, + + + [ TVI_3M_18P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x47, .eq_band_sel[5] = 0x47, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7a, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7e, .eq_gain_sel[4] = 0x7e, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x92, .deq_a_sel[5] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x6e, .contrast[1] = 0x6b, .contrast[2] = 0x98, .contrast[3] = 0x66, .contrast[4] = 0x61, .contrast[5] = 0x65, + .h_peaking[0] = 0x10, .h_peaking[1] = 0x10, .h_peaking[2] = 0x10, .h_peaking[3] = 0x00, .h_peaking[4] = 0x30, .h_peaking[5] = 0x20, + .c_filter[0] = 0x81, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xa2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x02, .hue[3] = 0x02, .hue[4] = 0x02, .hue[5] = 0x02, + .u_gain[0] = 0x30, .u_gain[1] = 0x28, .u_gain[2] = 0x34, .u_gain[3] = 0x34, .u_gain[4] = 0x34, .u_gain[5] = 0x34, + .v_gain[0] = 0x3a, .v_gain[1] = 0x38, .v_gain[2] = 0x40, .v_gain[3] = 0x40, .v_gain[4] = 0x40, .v_gain[5] = 0x40, + .u_offset[0] = 0x02, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, + + .black_level[0] = 0x87, .black_level[1] = 0x87, .black_level[2] = 0x88, .black_level[3] = 0x8a, .black_level[4] = 0x8d, .black_level[5] = 0x8e, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x47, .acc_ref[5] = 0x37, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0xa0, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0x80, .sub_saturation[1] = 0xc0, .sub_saturation[2] = 0x80, .sub_saturation[3] = 0x9c, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0xa0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x00, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0xa0, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x7e, .h_delay_a[3] = 0x7e, .h_delay_a[4] = 0x7e, .h_delay_a[5] = 0x7e, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x02, .h_delay_c[2] = 0x02, .h_delay_c[3] = 0x02, .h_delay_c[4] = 0x02, .h_delay_c[5] = 0x02, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x08, .format_set1[1] = 0x08, .format_set1[2] = 0x08, .format_set1[3] = 0x08, .format_set1[4] = 0x08, .format_set1[5] = 0x08, + /*B0 0x85*/ .format_set2[0] = 0x03, .format_set2[1] = 0x03, .format_set2[2] = 0x03, .format_set2[3] = 0x03, .format_set2[4] = 0x03, .format_set2[5] = 0x03, + + /*B0 0x64*/ .v_delay[0] = 0x80, .v_delay[1] = 0x80, .v_delay[2] = 0x80, .v_delay[3] = 0x80, .v_delay[4] = 0x80, .v_delay[5] = 0x80, + }, + }, + + [ TVI_5M_12_5P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x47, .eq_band_sel[5] = 0x47, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7a, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7e, .eq_gain_sel[4] = 0x7e, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x92, .deq_a_sel[5] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x6e, .contrast[1] = 0x6b, .contrast[2] = 0x98, .contrast[3] = 0x66, .contrast[4] = 0x61, .contrast[5] = 0x65, + .h_peaking[0] = 0x10, .h_peaking[1] = 0x10, .h_peaking[2] = 0x10, .h_peaking[3] = 0x00, .h_peaking[4] = 0x30, .h_peaking[5] = 0x20, + .c_filter[0] = 0x81, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x02, .hue[3] = 0x02, .hue[4] = 0x02, .hue[5] = 0x02, + .u_gain[0] = 0x30, .u_gain[1] = 0x28, .u_gain[2] = 0x34, .u_gain[3] = 0x34, .u_gain[4] = 0x34, .u_gain[5] = 0x34, + .v_gain[0] = 0x3a, .v_gain[1] = 0x38, .v_gain[2] = 0x40, .v_gain[3] = 0x40, .v_gain[4] = 0x40, .v_gain[5] = 0x40, + .u_offset[0] = 0x02, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, + + .black_level[0] = 0x87, .black_level[1] = 0x87, .black_level[2] = 0x88, .black_level[3] = 0x8a, .black_level[4] = 0x8d, .black_level[5] = 0x8e, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x47, .acc_ref[5] = 0x37, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0xa0, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0x80, .sub_saturation[1] = 0xc0, .sub_saturation[2] = 0x80, .sub_saturation[3] = 0x9c, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0xa0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x00, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0xa0, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x7e, .h_delay_a[3] = 0x7e, .h_delay_a[4] = 0x7e, .h_delay_a[5] = 0x7e, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x02, .h_delay_c[2] = 0x02, .h_delay_c[3] = 0x02, .h_delay_c[4] = 0x02, .h_delay_c[5] = 0x02, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { +/*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, +/*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, +/*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, +/*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, +/*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, +/*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, +/*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, +/*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, +/*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + +/*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + +/*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, +/*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, +/*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + +/*B0 0x81*/ .format_set1[0] = 0x09, .format_set1[1] = 0x09, .format_set1[2] = 0x09, .format_set1[3] = 0x09, .format_set1[4] = 0x09, .format_set1[5] = 0x09, +/*B0 0x85*/ .format_set2[0] = 0x03, .format_set2[1] = 0x03, .format_set2[2] = 0x03, .format_set2[3] = 0x03, .format_set2[4] = 0x03, .format_set2[5] = 0x03, + +/*B0 0x64*/ .v_delay[0] = 0x80, .v_delay[1] = 0x80, .v_delay[2] = 0x80, .v_delay[3] = 0x80, .v_delay[4] = 0x80, .v_delay[5] = 0x80, + }, + }, + + [ AHD30_4M_15P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x86, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x10, .h_peaking[2] = 0x20, .h_peaking[3] = 0x30, .h_peaking[4] = 0x40, .h_peaking[5] = 0x40, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, + .u_gain[0] = 0x10, .u_gain[1] = 0x10, .u_gain[2] = 0x04, .u_gain[3] = 0xfc, .u_gain[4] = 0xfc, .u_gain[5] = 0xfc, + .v_gain[0] = 0x10, .v_gain[1] = 0x10, .v_gain[2] = 0x04, .v_gain[3] = 0xf4, .v_gain[4] = 0x08, .v_gain[5] = 0x08, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xfb, .u_offset[3] = 0xfb, .u_offset[4] = 0xfb, .u_offset[5] = 0xfe, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xfb, + + .black_level[0] = 0x80, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x83, .black_level[4] = 0x85, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x05, .y_delay[1] = 0x03, .y_delay[2] = 0x03, .y_delay[3] = 0x03, .y_delay[4] = 0x03, .y_delay[5] = 0x03, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0A, .format_set1[1] = 0x0A, .format_set1[2] = 0x0A, .format_set1[3] = 0x0A, .format_set1[4] = 0x0A, .format_set1[5] = 0x0A, + /*B0 0x85*/ .format_set2[0] = 0x04, .format_set2[1] = 0x04, .format_set2[2] = 0x04, .format_set2[3] = 0x04, .format_set2[4] = 0x04, .format_set2[5] = 0x04, + + /*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, + }, + }, + + [ AHD30_4M_25P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7e, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x98, .deq_a_sel[4] = 0x98, .deq_a_sel[5] = 0x98, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0xa0, .contrast[1] = 0x9c, .contrast[2] = 0x90, .contrast[3] = 0x95, .contrast[4] = 0x90, .contrast[5] = 0x8a, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x10, .h_peaking[2] = 0x20, .h_peaking[3] = 0x30, .h_peaking[4] = 0x40, .h_peaking[5] = 0x40, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0xff, .hue[1] = 0xff, .hue[2] = 0xff, .hue[3] = 0xff, .hue[4] = 0xff, .hue[5] = 0xff, + .u_gain[0] = 0x70, .u_gain[1] = 0x70, .u_gain[2] = 0x64, .u_gain[3] = 0x5c, .u_gain[4] = 0x5c, .u_gain[5] = 0x5c, + .v_gain[0] = 0xd8, .v_gain[1] = 0xd8, .v_gain[2] = 0xcc, .v_gain[3] = 0xbc, .v_gain[4] = 0xd0, .v_gain[5] = 0xd0, + .u_offset[0] = 0xfc, .u_offset[1] = 0xfc, .u_offset[2] = 0xfc, .u_offset[3] = 0xfc, .u_offset[4] = 0xfc, .u_offset[5] = 0xfc, + .v_offset[0] = 0xfa, .v_offset[1] = 0xfa, .v_offset[2] = 0xfa, .v_offset[3] = 0xfa, .v_offset[4] = 0xfa, .v_offset[5] = 0xfa, + + .black_level[0] = 0x8c, .black_level[1] = 0x8a, .black_level[2] = 0x8c, .black_level[3] = 0x8d, .black_level[4] = 0x91, .black_level[5] = 0x94, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xE0, .sub_saturation[1] = 0xE0, .sub_saturation[2] = 0xE0, .sub_saturation[3] = 0xd0, .sub_saturation[4] = 0xb4, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x50, .burst_dec_c[1] = 0x50, .burst_dec_c[2] = 0x50, .burst_dec_c[3] = 0x50, .burst_dec_c[4] = 0x50, .burst_dec_c[5] = 0x50, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x84, .h_delay_a[1] = 0x82, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x7f, .h_delay_a[4] = 0x7f, .h_delay_a[5] = 0x7f, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x02, .h_delay_c[1] = 0x02, .h_delay_c[2] = 0x02, .h_delay_c[3] = 0x02, .h_delay_c[4] = 0x02, .h_delay_c[5] = 0x02, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { +/*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, +/*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, +/*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, +/*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, +/*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, +/*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, +/*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, +/*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, +/*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + +/*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + +/*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, +/*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, +/*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + +/*B0 0x81*/ .format_set1[0] = 0x0f, .format_set1[1] = 0x0f, .format_set1[2] = 0x0f, .format_set1[3] = 0x0f, .format_set1[4] = 0x0f, .format_set1[5] = 0x0f, +/*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, + +/*B0 0x64*/ .v_delay[0] = 0x80, .v_delay[1] = 0x80, .v_delay[2] = 0x80, .v_delay[3] = 0x80, .v_delay[4] = 0x80, .v_delay[5] = 0x80, + }, + }, + [ AHD30_4M_30P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7e, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x98, .deq_a_sel[4] = 0x98, .deq_a_sel[5] = 0x98, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0xa0, .contrast[1] = 0x9c, .contrast[2] = 0x90, .contrast[3] = 0x95, .contrast[4] = 0x90, .contrast[5] = 0x8a, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x10, .h_peaking[2] = 0x20, .h_peaking[3] = 0x30, .h_peaking[4] = 0x40, .h_peaking[5] = 0x40, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0xff, .hue[1] = 0xff, .hue[2] = 0xff, .hue[3] = 0xff, .hue[4] = 0xff, .hue[5] = 0xff, + .u_gain[0] = 0x70, .u_gain[1] = 0x70, .u_gain[2] = 0x64, .u_gain[3] = 0x5c, .u_gain[4] = 0x5c, .u_gain[5] = 0x5c, + .v_gain[0] = 0xd8, .v_gain[1] = 0xd8, .v_gain[2] = 0xcc, .v_gain[3] = 0xbc, .v_gain[4] = 0xd0, .v_gain[5] = 0xd0, + .u_offset[0] = 0xfc, .u_offset[1] = 0xfc, .u_offset[2] = 0xfc, .u_offset[3] = 0xfc, .u_offset[4] = 0xfc, .u_offset[5] = 0xfc, + .v_offset[0] = 0xfa, .v_offset[1] = 0xfa, .v_offset[2] = 0xfa, .v_offset[3] = 0xfa, .v_offset[4] = 0xfa, .v_offset[5] = 0xfa, + + .black_level[0] = 0x8c, .black_level[1] = 0x8a, .black_level[2] = 0x8c, .black_level[3] = 0x8d, .black_level[4] = 0x91, .black_level[5] = 0x94, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xE0, .sub_saturation[1] = 0xE0, .sub_saturation[2] = 0xE0, .sub_saturation[3] = 0xd0, .sub_saturation[4] = 0xb4, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x50, .burst_dec_c[1] = 0x50, .burst_dec_c[2] = 0x50, .burst_dec_c[3] = 0x50, .burst_dec_c[4] = 0x50, .burst_dec_c[5] = 0x50, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x82, .h_delay_a[4] = 0x82, .h_delay_a[5] = 0x82, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x02, .h_delay_c[1] = 0x02, .h_delay_c[2] = 0x02, .h_delay_c[3] = 0x02, .h_delay_c[4] = 0x02, .h_delay_c[5] = 0x02, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0e, .format_set1[1] = 0x0e, .format_set1[2] = 0x0e, .format_set1[3] = 0x0e, .format_set1[4] = 0x0e, .format_set1[5] = 0x0e, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x80, .v_delay[1] = 0x80, .v_delay[2] = 0x80, .v_delay[3] = 0x80, .v_delay[4] = 0x80, .v_delay[5] = 0x80, + }, + }, + + [ AHD30_5M_12_5P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x86, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x0f, .h_peaking[2] = 0x0f, .h_peaking[3] = 0x0f, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, + .u_gain[0] = 0x10, .u_gain[1] = 0x10, .u_gain[2] = 0x04, .u_gain[3] = 0xfc, .u_gain[4] = 0xfc, .u_gain[5] = 0xfc, + .v_gain[0] = 0x10, .v_gain[1] = 0x10, .v_gain[2] = 0x04, .v_gain[3] = 0xf4, .v_gain[4] = 0x08, .v_gain[5] = 0x08, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xfb, .u_offset[3] = 0xfb, .u_offset[4] = 0xfb, .u_offset[5] = 0xfe, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xfb, + + .black_level[0] = 0x80, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x83, .black_level[4] = 0x85, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x03, .h_delay_c[1] = 0x03, .h_delay_c[2] = 0x03, .h_delay_c[3] = 0x03, .h_delay_c[4] = 0x03, .h_delay_c[5] = 0x03, + .y_delay[0] = 0x05, .y_delay[1] = 0x03, .y_delay[2] = 0x03, .y_delay[3] = 0x03, .y_delay[4] = 0x03, .y_delay[5] = 0x03, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x00, .format_set1[1] = 0x00, .format_set1[2] = 0x00, .format_set1[3] = 0x00, .format_set1[4] = 0x00, .format_set1[5] = 0x00, + /*B0 0x85*/ .format_set2[0] = 0x05, .format_set2[1] = 0x05, .format_set2[2] = 0x05, .format_set2[3] = 0x05, .format_set2[4] = 0x05, .format_set2[5] = 0x05, + + /*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, + }, + }, + + + [ AHD30_5M_20P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7e, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x98, .deq_a_sel[4] = 0x98, .deq_a_sel[5] = 0x98, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x8b, .contrast[1] = 0x87, .contrast[2] = 0x8b, .contrast[3] = 0x80, .contrast[4] = 0x7b, .contrast[5] = 0x75, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x10, .h_peaking[2] = 0x20, .h_peaking[3] = 0x30, .h_peaking[4] = 0x30, .h_peaking[5] = 0x30, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0xfe, .hue[1] = 0xfe, .hue[2] = 0xfe, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x70, .u_gain[1] = 0x70, .u_gain[2] = 0x64, .u_gain[3] = 0x5c, .u_gain[4] = 0x5c, .u_gain[5] = 0x5c, + .v_gain[0] = 0x10, .v_gain[1] = 0x10, .v_gain[2] = 0x04, .v_gain[3] = 0xf4, .v_gain[4] = 0x08, .v_gain[5] = 0x08, + .u_offset[0] = 0xfc, .u_offset[1] = 0xfc, .u_offset[2] = 0xfc, .u_offset[3] = 0xfc, .u_offset[4] = 0xfc, .u_offset[5] = 0xfc, + .v_offset[0] = 0xf7, .v_offset[1] = 0xf7, .v_offset[2] = 0xf7, .v_offset[3] = 0xf7, .v_offset[4] = 0xf7, .v_offset[5] = 0xf7, + + .black_level[0] = 0x80, .black_level[1] = 0x80, .black_level[2] = 0x80, .black_level[3] = 0x80, .black_level[4] = 0x80, .black_level[5] = 0x80, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xe8, .sub_saturation[1] = 0xe8, .sub_saturation[2] = 0xd8, .sub_saturation[3] = 0xf8, .sub_saturation[4] = 0xe8, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x40, .burst_dec_c[1] = 0x40, .burst_dec_c[2] = 0x40, .burst_dec_c[3] = 0x40, .burst_dec_c[4] = 0x40, .burst_dec_c[5] = 0x40, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0xa0, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x7f, .h_delay_a[4] = 0x7f, .h_delay_a[5] = 0x7f, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x01, .h_delay_c[1] = 0x01, .h_delay_c[2] = 0x01, .h_delay_c[3] = 0x01, .h_delay_c[4] = 0x01, .h_delay_c[5] = 0x01, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x01, .format_set1[1] = 0x01, .format_set1[2] = 0x01, .format_set1[3] = 0x01, .format_set1[4] = 0x01, .format_set1[5] = 0x01, + /*B0 0x85*/ .format_set2[0] = 0x05, .format_set2[1] = 0x05, .format_set2[2] = 0x05, .format_set2[3] = 0x05, .format_set2[4] = 0x05, .format_set2[5] = 0x05, + + /*B0 0x64*/ .v_delay[0] = 0x80, .v_delay[1] = 0x80, .v_delay[2] = 0x80, .v_delay[3] = 0x80, .v_delay[4] = 0x80, .v_delay[5] = 0x80, + }, + }, + + [ AHD30_5_3M_20P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7e, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x98, .deq_a_sel[4] = 0x98, .deq_a_sel[5] = 0x98, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x8b, .contrast[1] = 0x87, .contrast[2] = 0x8b, .contrast[3] = 0x80, .contrast[4] = 0x7b, .contrast[5] = 0x75, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x0f, .h_peaking[2] = 0x0f, .h_peaking[3] = 0x0f, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0xfe, .hue[1] = 0xfe, .hue[2] = 0xfe, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x70, .u_gain[1] = 0x70, .u_gain[2] = 0x64, .u_gain[3] = 0x5c, .u_gain[4] = 0x5c, .u_gain[5] = 0x5c, + .v_gain[0] = 0x10, .v_gain[1] = 0x10, .v_gain[2] = 0x04, .v_gain[3] = 0xf4, .v_gain[4] = 0x08, .v_gain[5] = 0x08, + .u_offset[0] = 0xfc, .u_offset[1] = 0xfc, .u_offset[2] = 0xfc, .u_offset[3] = 0xfc, .u_offset[4] = 0xfc, .u_offset[5] = 0xfc, + .v_offset[0] = 0xf7, .v_offset[1] = 0xf7, .v_offset[2] = 0xf7, .v_offset[3] = 0xf7, .v_offset[4] = 0xf7, .v_offset[5] = 0xf7, + + .black_level[0] = 0x80, .black_level[1] = 0x80, .black_level[2] = 0x80, .black_level[3] = 0x80, .black_level[4] = 0x80, .black_level[5] = 0x80, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xe8, .sub_saturation[1] = 0xe8, .sub_saturation[2] = 0xd8, .sub_saturation[3] = 0xf8, .sub_saturation[4] = 0xe8, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x40, .burst_dec_c[1] = 0x40, .burst_dec_c[2] = 0x40, .burst_dec_c[3] = 0x40, .burst_dec_c[4] = 0x40, .burst_dec_c[5] = 0x40, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0xa0, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x7f, .h_delay_a[4] = 0x7f, .h_delay_a[5] = 0x7f, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x02, .h_delay_c[1] = 0x02, .h_delay_c[2] = 0x02, .h_delay_c[3] = 0x02, .h_delay_c[4] = 0x02, .h_delay_c[5] = 0x02, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x01, .format_set1[1] = 0x01, .format_set1[2] = 0x01, .format_set1[3] = 0x01, .format_set1[4] = 0x01, .format_set1[5] = 0x01, + /*B0 0x85*/ .format_set2[0] = 0x06, .format_set2[1] = 0x06, .format_set2[2] = 0x06, .format_set2[3] = 0x06, .format_set2[4] = 0x06, .format_set2[5] = 0x06, + + /*B0 0x64*/ .v_delay[0] = 0x80, .v_delay[1] = 0x80, .v_delay[2] = 0x80, .v_delay[3] = 0x80, .v_delay[4] = 0x80, .v_delay[5] = 0x80, + }, + }, + + [ AHD30_3M_18P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x86, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x0f, .h_peaking[2] = 0x0f, .h_peaking[3] = 0x0f, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, + .u_gain[0] = 0x10, .u_gain[1] = 0x10, .u_gain[2] = 0x04, .u_gain[3] = 0xfc, .u_gain[4] = 0xfc, .u_gain[5] = 0xfc, + .v_gain[0] = 0x10, .v_gain[1] = 0x10, .v_gain[2] = 0x04, .v_gain[3] = 0xf4, .v_gain[4] = 0x08, .v_gain[5] = 0x08, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xfb, .u_offset[3] = 0xfb, .u_offset[4] = 0xfb, .u_offset[5] = 0xfe, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xfb, + + .black_level[0] = 0x80, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x83, .black_level[4] = 0x85, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x03, .h_delay_c[1] = 0x03, .h_delay_c[2] = 0x03, .h_delay_c[3] = 0x03, .h_delay_c[4] = 0x03, .h_delay_c[5] = 0x03, + .y_delay[0] = 0x05, .y_delay[1] = 0x03, .y_delay[2] = 0x03, .y_delay[3] = 0x03, .y_delay[4] = 0x03, .y_delay[5] = 0x03, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x04, .format_set1[1] = 0x04, .format_set1[2] = 0x04, .format_set1[3] = 0x04, .format_set1[4] = 0x04, .format_set1[5] = 0x04, + /*B0 0x85*/ .format_set2[0] = 0x04, .format_set2[1] = 0x04, .format_set2[2] = 0x04, .format_set2[3] = 0x04, .format_set2[4] = 0x04, .format_set2[5] = 0x04, + + /*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, + }, + }, + + [ AHD30_3M_25P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7e, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x98, .deq_a_sel[4] = 0x98, .deq_a_sel[5] = 0x98, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x80, .contrast[1] = 0x7c, .contrast[2] = 0x79, .contrast[3] = 0x75, .contrast[4] = 0x70, .contrast[5] = 0x7a, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x0f, .h_peaking[2] = 0x0f, .h_peaking[3] = 0x0f, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x92, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x04, .hue[1] = 0x04, .hue[2] = 0x04, .hue[3] = 0x04, .hue[4] = 0x04, .hue[5] = 0x04, + .u_gain[0] = 0x10, .u_gain[1] = 0x10, .u_gain[2] = 0x04, .u_gain[3] = 0xfc, .u_gain[4] = 0xfc, .u_gain[5] = 0xfc, + .v_gain[0] = 0x10, .v_gain[1] = 0x10, .v_gain[2] = 0x04, .v_gain[3] = 0xf4, .v_gain[4] = 0x08, .v_gain[5] = 0x08, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xfb, .u_offset[3] = 0xfb, .u_offset[4] = 0xfb, .u_offset[5] = 0xfb, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, + + .black_level[0] = 0x80, .black_level[1] = 0x82, .black_level[2] = 0x82, .black_level[3] = 0x85, .black_level[4] = 0x89, .black_level[5] = 0x8c, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xb0, .sub_saturation[1] = 0xb0, .sub_saturation[2] = 0xa0, .sub_saturation[3] = 0xd0, .sub_saturation[4] = 0xb4, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x03, .h_delay_c[1] = 0x03, .h_delay_c[2] = 0x03, .h_delay_c[3] = 0x03, .h_delay_c[4] = 0x03, .h_delay_c[5] = 0x03, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { +/*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, +/*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, +/*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, +/*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, +/*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, +/*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, +/*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, +/*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, +/*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + +/*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + +/*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, +/*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, +/*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + +/*B0 0x81*/ .format_set1[0] = 0x03, .format_set1[1] = 0x03, .format_set1[2] = 0x03, .format_set1[3] = 0x03, .format_set1[4] = 0x03, .format_set1[5] = 0x03, +/*B0 0x85*/ .format_set2[0] = 0x04, .format_set2[1] = 0x04, .format_set2[2] = 0x04, .format_set2[3] = 0x04, .format_set2[4] = 0x04, .format_set2[5] = 0x04, + +/*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, + }, + }, + [ AHD30_3M_30P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7e, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x98, .deq_a_sel[4] = 0x98, .deq_a_sel[5] = 0x98, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x80, .contrast[1] = 0x7c, .contrast[2] = 0x79, .contrast[3] = 0x75, .contrast[4] = 0x70, .contrast[5] = 0x7a, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x0f, .h_peaking[2] = 0x0f, .h_peaking[3] = 0x0f, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x92, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x04, .hue[1] = 0x04, .hue[2] = 0x04, .hue[3] = 0x04, .hue[4] = 0x04, .hue[5] = 0x04, + .u_gain[0] = 0x10, .u_gain[1] = 0x10, .u_gain[2] = 0x04, .u_gain[3] = 0xfc, .u_gain[4] = 0xfc, .u_gain[5] = 0xfc, + .v_gain[0] = 0x10, .v_gain[1] = 0x10, .v_gain[2] = 0x04, .v_gain[3] = 0xf4, .v_gain[4] = 0x08, .v_gain[5] = 0x08, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xfb, .u_offset[3] = 0xfb, .u_offset[4] = 0xfb, .u_offset[5] = 0xfb, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, + + .black_level[0] = 0x80, .black_level[1] = 0x82, .black_level[2] = 0x82, .black_level[3] = 0x85, .black_level[4] = 0x89, .black_level[5] = 0x8c, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xb0, .sub_saturation[1] = 0xb0, .sub_saturation[2] = 0xa0, .sub_saturation[3] = 0xd0, .sub_saturation[4] = 0xb4, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x04, .h_delay_c[1] = 0x04, .h_delay_c[2] = 0x04, .h_delay_c[3] = 0x04, .h_delay_c[4] = 0x04, .h_delay_c[5] = 0x04, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { +/*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, +/*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, +/*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, +/*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, +/*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, +/*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, +/*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, +/*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, +/*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + +/*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + +/*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, +/*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, +/*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + +/*B0 0x81*/ .format_set1[0] = 0x02, .format_set1[1] = 0x02, .format_set1[2] = 0x02, .format_set1[3] = 0x02, .format_set1[4] = 0x02, .format_set1[5] = 0x02, +/*B0 0x85*/ .format_set2[0] = 0x04, .format_set2[1] = 0x04, .format_set2[2] = 0x04, .format_set2[3] = 0x04, .format_set2[4] = 0x04, .format_set2[5] = 0x04, + +/*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, + }, + }, + + + [ AHD20_1080P_25P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x86, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x04, .u_gain[3] = 0x10, .u_gain[4] = 0x10, .u_gain[5] = 0x18, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0x0e, .v_gain[4] = 0x0e, .v_gain[5] = 0x14, + .u_offset[0] = 0xfe, .u_offset[1] = 0xfe, .u_offset[2] = 0xfe, .u_offset[3] = 0xfe, .u_offset[4] = 0xfe, .u_offset[5] = 0xfe, + .v_offset[0] = 0xfb, .v_offset[1] = 0xfb, .v_offset[2] = 0xfb, .v_offset[3] = 0xfb, .v_offset[4] = 0xfb, .v_offset[5] = 0xfb, + + .black_level[0] = 0x80, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x83, .black_level[4] = 0x83, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x86, .h_delay_a[1] = 0x84, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x03, .h_delay_c[1] = 0x03, .h_delay_c[2] = 0x03, .h_delay_c[3] = 0x03, .h_delay_c[4] = 0x03, .h_delay_c[5] = 0x03, + .y_delay[0] = 0x05, .y_delay[1] = 0x03, .y_delay[2] = 0x03, .y_delay[3] = 0x03, .y_delay[4] = 0x03, .y_delay[5] = 0x03, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x03, .format_set1[1] = 0x03, .format_set1[2] = 0x03, .format_set1[3] = 0x03, .format_set1[4] = 0x03, .format_set1[5] = 0x03, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, + }, + }, + [ AHD20_1080P_30P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x86, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x04, .u_gain[3] = 0x10, .u_gain[4] = 0x10, .u_gain[5] = 0x18, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0x0e, .v_gain[4] = 0x0e, .v_gain[5] = 0x14, + .u_offset[0] = 0xfe, .u_offset[1] = 0xfe, .u_offset[2] = 0xfe, .u_offset[3] = 0xfe, .u_offset[4] = 0xfe, .u_offset[5] = 0xfe, + .v_offset[0] = 0xfb, .v_offset[1] = 0xfb, .v_offset[2] = 0xfb, .v_offset[3] = 0xfb, .v_offset[4] = 0xfb, .v_offset[5] = 0xfb, + + .black_level[0] = 0x80, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x83, .black_level[4] = 0x83, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x86, .h_delay_a[1] = 0x84, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x03, .h_delay_c[1] = 0x03, .h_delay_c[2] = 0x03, .h_delay_c[3] = 0x03, .h_delay_c[4] = 0x03, .h_delay_c[5] = 0x03, + .y_delay[0] = 0x05, .y_delay[1] = 0x03, .y_delay[2] = 0x03, .y_delay[3] = 0x03, .y_delay[4] = 0x03, .y_delay[5] = 0x03, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x02, .format_set1[1] = 0x02, .format_set1[2] = 0x02, .format_set1[3] = 0x02, .format_set1[4] = 0x02, .format_set1[5] = 0x02, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, + }, + }, + + [ AHD20_1080P_12_5P_EX ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x62, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x86, .deq_a_sel[2] = 0x88, .deq_a_sel[3] = 0x8d, .deq_a_sel[4] = 0x94, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x86, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x04, .u_gain[3] = 0x10, .u_gain[4] = 0x10, .u_gain[5] = 0x18, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0x0e, .v_gain[4] = 0x0e, .v_gain[5] = 0x14, + .u_offset[0] = 0xfe, .u_offset[1] = 0xfe, .u_offset[2] = 0xfe, .u_offset[3] = 0xfe, .u_offset[4] = 0xfe, .u_offset[5] = 0xfe, + .v_offset[0] = 0xfb, .v_offset[1] = 0xfb, .v_offset[2] = 0xfb, .v_offset[3] = 0xfb, .v_offset[4] = 0xfb, .v_offset[5] = 0xfb, + + .black_level[0] = 0x80, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x83, .black_level[4] = 0x83, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x03, .h_delay_c[1] = 0x03, .h_delay_c[2] = 0x03, .h_delay_c[3] = 0x03, .h_delay_c[4] = 0x03, .h_delay_c[5] = 0x03, + .y_delay[0] = 0x05, .y_delay[1] = 0x03, .y_delay[2] = 0x03, .y_delay[3] = 0x03, .y_delay[4] = 0x03, .y_delay[5] = 0x03, + + }, + /* clk */ + { + + .clk_adc[0] = 0x0a, .clk_adc[1] = 0x0a, .clk_adc[2] = 0x0a, .clk_adc[3] = 0x0a, .clk_adc[4] = 0x0a, .clk_adc[5] = 0x0a, + .clk_dec[0] = 0x4a, .clk_dec[1] = 0x4a, .clk_dec[2] = 0x4a, .clk_dec[3] = 0x4a, .clk_dec[4] = 0x4a, .clk_dec[5] = 0x4a, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x03, .format_set1[1] = 0x03, .format_set1[2] = 0x03, .format_set1[3] = 0x03, .format_set1[4] = 0x03, .format_set1[5] = 0x03, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, + }, + }, + [ AHD20_1080P_15P_EX ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x62, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x86, .deq_a_sel[2] = 0x88, .deq_a_sel[3] = 0x8d, .deq_a_sel[4] = 0x94, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x86, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x04, .u_gain[3] = 0x10, .u_gain[4] = 0x10, .u_gain[5] = 0x18, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0x0e, .v_gain[4] = 0x0e, .v_gain[5] = 0x14, + .u_offset[0] = 0xfe, .u_offset[1] = 0xfe, .u_offset[2] = 0xfe, .u_offset[3] = 0xfe, .u_offset[4] = 0xfe, .u_offset[5] = 0xfe, + .v_offset[0] = 0xfb, .v_offset[1] = 0xfb, .v_offset[2] = 0xfb, .v_offset[3] = 0xfb, .v_offset[4] = 0xfb, .v_offset[5] = 0xfb, + + .black_level[0] = 0x80, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x83, .black_level[4] = 0x83, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x03, .h_delay_c[1] = 0x03, .h_delay_c[2] = 0x03, .h_delay_c[3] = 0x03, .h_delay_c[4] = 0x03, .h_delay_c[5] = 0x03, + .y_delay[0] = 0x05, .y_delay[1] = 0x03, .y_delay[2] = 0x03, .y_delay[3] = 0x03, .y_delay[4] = 0x03, .y_delay[5] = 0x03, + + }, + /* clk */ + { + .clk_adc[0] = 0x0a, .clk_adc[1] = 0x0a, .clk_adc[2] = 0x0a, .clk_adc[3] = 0x0a, .clk_adc[4] = 0x0a, .clk_adc[5] = 0x0a, + .clk_dec[0] = 0x4a, .clk_dec[1] = 0x4a, .clk_dec[2] = 0x4a, .clk_dec[3] = 0x4a, .clk_dec[4] = 0x4a, .clk_dec[5] = 0x4a, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x02, .format_set1[1] = 0x02, .format_set1[2] = 0x02, .format_set1[3] = 0x02, .format_set1[4] = 0x02, .format_set1[5] = 0x02, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, + }, + }, + + [ AHD30_8M_7_5P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x86, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x0f, .h_peaking[2] = 0x0f, .h_peaking[3] = 0x0f, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, + .u_gain[0] = 0x10, .u_gain[1] = 0x10, .u_gain[2] = 0x04, .u_gain[3] = 0xfc, .u_gain[4] = 0xfc, .u_gain[5] = 0xfc, + .v_gain[0] = 0x10, .v_gain[1] = 0x10, .v_gain[2] = 0x04, .v_gain[3] = 0xf4, .v_gain[4] = 0x08, .v_gain[5] = 0x08, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xfb, .u_offset[3] = 0xfb, .u_offset[4] = 0xfb, .u_offset[5] = 0xfe, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xfb, + + .black_level[0] = 0x80, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x83, .black_level[4] = 0x85, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x05, .y_delay[1] = 0x03, .y_delay[2] = 0x03, .y_delay[3] = 0x03, .y_delay[4] = 0x03, .y_delay[5] = 0x03, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x00, .format_set1[1] = 0x00, .format_set1[2] = 0x00, .format_set1[3] = 0x00, .format_set1[4] = 0x00, .format_set1[5] = 0x00, + /*B0 0x85*/ .format_set2[0] = 0x08, .format_set2[1] = 0x08, .format_set2[2] = 0x08, .format_set2[3] = 0x08, .format_set2[4] = 0x08, .format_set2[5] = 0x08, + + /*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, + }, + }, + + [ AHD30_8M_12_5P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7e, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x98, .deq_a_sel[4] = 0x98, .deq_a_sel[5] = 0x98, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0xa0, .contrast[1] = 0x9c, .contrast[2] = 0x90, .contrast[3] = 0x95, .contrast[4] = 0x90, .contrast[5] = 0x8a, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x0f, .h_peaking[2] = 0x0f, .h_peaking[3] = 0x0f, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x04, .hue[1] = 0x04, .hue[2] = 0x04, .hue[3] = 0x04, .hue[4] = 0x04, .hue[5] = 0x04, + .u_gain[0] = 0x10, .u_gain[1] = 0x10, .u_gain[2] = 0x04, .u_gain[3] = 0xfc, .u_gain[4] = 0xfc, .u_gain[5] = 0xfc, + .v_gain[0] = 0x10, .v_gain[1] = 0x10, .v_gain[2] = 0x04, .v_gain[3] = 0xf4, .v_gain[4] = 0x08, .v_gain[5] = 0x08, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xfb, .u_offset[3] = 0xfb, .u_offset[4] = 0xfb, .u_offset[5] = 0xfb, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, + + .black_level[0] = 0x84, .black_level[1] = 0x82, .black_level[2] = 0x84, .black_level[3] = 0x85, .black_level[4] = 0x89, .black_level[5] = 0x8c, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xb0, .sub_saturation[1] = 0xb0, .sub_saturation[2] = 0xa0, .sub_saturation[3] = 0xd0, .sub_saturation[4] = 0xb4, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x84, .h_delay_a[1] = 0x82, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x7f, .h_delay_a[4] = 0x7f, .h_delay_a[5] = 0x7f, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x02, .h_delay_c[1] = 0x02, .h_delay_c[2] = 0x02, .h_delay_c[3] = 0x02, .h_delay_c[4] = 0x02, .h_delay_c[5] = 0x02, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x01, .format_set1[1] = 0x01, .format_set1[2] = 0x01, .format_set1[3] = 0x01, .format_set1[4] = 0x01, .format_set1[5] = 0x01, + /*B0 0x85*/ .format_set2[0] = 0x08, .format_set2[1] = 0x08, .format_set2[2] = 0x08, .format_set2[3] = 0x08, .format_set2[4] = 0x08, .format_set2[5] = 0x08, + + /*B0 0x64*/ .v_delay[0] = 0x80, .v_delay[1] = 0x80, .v_delay[2] = 0x80, .v_delay[3] = 0x80, .v_delay[4] = 0x80, .v_delay[5] = 0x80, + }, + }, + [ AHD30_8M_15P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7e, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x98, .deq_a_sel[4] = 0x98, .deq_a_sel[5] = 0x98, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0xa0, .contrast[1] = 0x9c, .contrast[2] = 0x90, .contrast[3] = 0x95, .contrast[4] = 0x90, .contrast[5] = 0x8a, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x0f, .h_peaking[2] = 0x0f, .h_peaking[3] = 0x0f, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x04, .hue[1] = 0x04, .hue[2] = 0x04, .hue[3] = 0x04, .hue[4] = 0x04, .hue[5] = 0x04, + .u_gain[0] = 0x10, .u_gain[1] = 0x10, .u_gain[2] = 0x04, .u_gain[3] = 0xfc, .u_gain[4] = 0xfc, .u_gain[5] = 0xfc, + .v_gain[0] = 0x10, .v_gain[1] = 0x10, .v_gain[2] = 0x04, .v_gain[3] = 0xf4, .v_gain[4] = 0x08, .v_gain[5] = 0x08, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xfb, .u_offset[3] = 0xfb, .u_offset[4] = 0xfb, .u_offset[5] = 0xfb, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, + + .black_level[0] = 0x84, .black_level[1] = 0x82, .black_level[2] = 0x84, .black_level[3] = 0x85, .black_level[4] = 0x89, .black_level[5] = 0x8c, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xb0, .sub_saturation[1] = 0xb0, .sub_saturation[2] = 0xa0, .sub_saturation[3] = 0xd0, .sub_saturation[4] = 0xb4, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x7f, .h_delay_a[4] = 0x7f, .h_delay_a[5] = 0x7f, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x02, .h_delay_c[1] = 0x02, .h_delay_c[2] = 0x02, .h_delay_c[3] = 0x02, .h_delay_c[4] = 0x02, .h_delay_c[5] = 0x02, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x02, .format_set1[1] = 0x02, .format_set1[2] = 0x02, .format_set1[3] = 0x02, .format_set1[4] = 0x02, .format_set1[5] = 0x02, + /*B0 0x85*/ .format_set2[0] = 0x08, .format_set2[1] = 0x08, .format_set2[2] = 0x08, .format_set2[3] = 0x08, .format_set2[4] = 0x08, .format_set2[5] = 0x08, + + /*B0 0x64*/ .v_delay[0] = 0x80, .v_delay[1] = 0x80, .v_delay[2] = 0x80, .v_delay[3] = 0x80, .v_delay[4] = 0x80, .v_delay[5] = 0x80, + }, + }, + + + + + + + [ TVI_FHD_25P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x37, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x6f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x95, .deq_a_sel[5] = 0x93, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x82, .contrast[1] = 0x7c, .contrast[2] = 0x78, .contrast[3] = 0x6c, .contrast[4] = 0x70, .contrast[5] = 0x68, + .h_peaking[0] = 0x3f, .h_peaking[1] = 0x3f, .h_peaking[2] = 0x3f, .h_peaking[3] = 0x3f, .h_peaking[4] = 0x3f, .h_peaking[5] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0xb2, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0xfe, .hue[2] = 0xfe, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0xe0, .u_gain[1] = 0x00, .u_gain[2] = 0x00, .u_gain[3] = 0x00, .u_gain[4] = 0x00, .u_gain[5] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0xf8, .v_gain[2] = 0xf8, .v_gain[3] = 0xf8, .v_gain[4] = 0xf8, .v_gain[5] = 0xf8, + .u_offset[0] = 0xff, .u_offset[1] = 0xff, .u_offset[2] = 0xff, .u_offset[3] = 0xff, .u_offset[4] = 0xff, .u_offset[5] = 0xff, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, + + .black_level[0] = 0x86, .black_level[1] = 0x88, .black_level[2] = 0x88, .black_level[3] = 0x8c, .black_level[4] = 0x8f, .black_level[5] = 0x8f, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x27, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xdf, .sub_saturation[1] = 0xe0, .sub_saturation[2] = 0xe0, .sub_saturation[3] = 0xe0, .sub_saturation[4] = 0xa0, .sub_saturation[5] = 0x80, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0xa0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x82, .h_delay_a[1] = 0x82, .h_delay_a[2] = 0x82, .h_delay_a[3] = 0x82, .h_delay_a[4] = 0x82, .h_delay_a[5] = 0x82, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x02, .h_delay_c[1] = 0x02, .h_delay_c[2] = 0x02, .h_delay_c[3] = 0x02, .h_delay_c[4] = 0x02, .h_delay_c[5] = 0x02, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x20, .y_delay[5] = 0x20, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { +/*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, +/*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, +/*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, +/*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, +/*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, +/*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, +/*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, +/*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, +/*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + +/*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + +/*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, +/*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, +/*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + +/*B0 0x81*/ .format_set1[0] = 0x03, .format_set1[1] = 0x03, .format_set1[2] = 0x03, .format_set1[3] = 0x03, .format_set1[4] = 0x03, .format_set1[5] = 0x03, +/*B0 0x85*/ .format_set2[0] = 0x01, .format_set2[1] = 0x01, .format_set2[2] = 0x01, .format_set2[3] = 0x01, .format_set2[4] = 0x01, .format_set2[5] = 0x01, + +/*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, + }, + }, + [ TVI_FHD_30P ] = + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x37, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x6f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x95, .deq_a_sel[5] = 0x93, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x82, .contrast[1] = 0x7c, .contrast[2] = 0x78, .contrast[3] = 0x6c, .contrast[4] = 0x70, .contrast[5] = 0x68, + .h_peaking[0] = 0x3f, .h_peaking[1] = 0x3f, .h_peaking[2] = 0x3f, .h_peaking[3] = 0x3f, .h_peaking[4] = 0x3f, .h_peaking[5] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0xb2, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0xfe, .hue[2] = 0xfe, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0xe0, .u_gain[1] = 0x00, .u_gain[2] = 0x00, .u_gain[3] = 0x00, .u_gain[4] = 0x00, .u_gain[5] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0xf8, .v_gain[2] = 0xf8, .v_gain[3] = 0xf8, .v_gain[4] = 0xf8, .v_gain[5] = 0xf8, + .u_offset[0] = 0xff, .u_offset[1] = 0xff, .u_offset[2] = 0xff, .u_offset[3] = 0xff, .u_offset[4] = 0xff, .u_offset[5] = 0xff, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, + + .black_level[0] = 0x86, .black_level[1] = 0x88, .black_level[2] = 0x88, .black_level[3] = 0x8c, .black_level[4] = 0x8f, .black_level[5] = 0x8f, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x27, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xdf, .sub_saturation[1] = 0xe0, .sub_saturation[2] = 0xe0, .sub_saturation[3] = 0xe0, .sub_saturation[4] = 0xa0, .sub_saturation[5] = 0x80, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0xa0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x03, .h_delay_c[1] = 0x03, .h_delay_c[2] = 0x03, .h_delay_c[3] = 0x02, .h_delay_c[4] = 0x03, .h_delay_c[5] = 0x03, + .y_delay[0] = 0x07, .y_delay[1] = 0x07, .y_delay[2] = 0x07, .y_delay[3] = 0x05, .y_delay[4] = 0x20, .y_delay[5] = 0x20, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { +/*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, +/*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, +/*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, +/*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, +/*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, +/*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, +/*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, +/*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, +/*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + +/*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + +/*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, +/*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, +/*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + +/*B0 0x81*/ .format_set1[0] = 0x02, .format_set1[1] = 0x02, .format_set1[2] = 0x02, .format_set1[3] = 0x02, .format_set1[4] = 0x02, .format_set1[5] = 0x02, +/*B0 0x85*/ .format_set2[0] = 0x01, .format_set2[1] = 0x01, .format_set2[2] = 0x01, .format_set2[3] = 0x01, .format_set2[4] = 0x01, .format_set2[5] = 0x01, + +/*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, + }, + }, + + + [ AHD20_720P_25P_EX_Btype ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x62, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, .eq_band_sel[6] = 0x47, .eq_band_sel[7] = 0x47, .eq_band_sel[8] = 0x27, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x17, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x86, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x8e, .deq_a_sel[5] = 0x8e, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x8d, .deq_a_sel[10] = 0x8d, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x88, .contrast[2] = 0x78, .contrast[3] = 0x88, .contrast[4] = 0x88, .contrast[5] = 0x7e, .contrast[6] = 0x78, .contrast[7] = 0x78, .contrast[8] = 0x74, .contrast[9] = 0x74, .contrast[10] = 0x74, + .h_peaking[0] = 0x3f, .h_peaking[1] = 0x3f, .h_peaking[2] = 0x3f, .h_peaking[3] = 0x3f, .h_peaking[4] = 0x3f, .h_peaking[5] = 0x3f, .h_peaking[6] = 0x3f, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x4f, .h_peaking[10] = 0x4f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0x92, .c_filter[6] = 0x92, .c_filter[7] = 0x92, .c_filter[8] = 0x92, .c_filter[9] = 0x92, .c_filter[10] = 0x92, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x00, .u_gain[3] = 0x00, .u_gain[4] = 0x00, .u_gain[5] = 0x00, .u_gain[6] = 0x00, .u_gain[7] = 0x00, .u_gain[8] = 0x00, .u_gain[9] = 0x00, .u_gain[10] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, .u_offset[6] = 0x00, .u_offset[7] = 0x00, .u_offset[8] = 0x00, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x86, .black_level[6] = 0x86, .black_level[7] = 0x8c, .black_level[8] = 0x8c, .black_level[9] = 0x90, .black_level[10] = 0x90, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x57, .acc_ref[8] = 0x57, .acc_ref[9] = 0x47, .acc_ref[10] = 0x47, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x90, .cti_delay[10] = 0x90, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xab, .sub_saturation[2] = 0xb0, .sub_saturation[3] = 0xb0, .sub_saturation[4] = 0xa4, .sub_saturation[5] = 0xa0, .sub_saturation[6] = 0xa0, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x90, .sub_saturation[10] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, .burst_dec_c[6] = 0x30, .burst_dec_c[7] = 0x30, .burst_dec_c[8] = 0x30, .burst_dec_c[9] = 0x30, .burst_dec_c[10] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0x90, .c_option[5] = 0x90, .c_option[6] = 0x90, .c_option[7] = 0x90, .c_option[8] = 0x90, .c_option[9] = 0x90, .c_option[10] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x84, .h_delay_a[1] = 0x84, .h_delay_a[2] = 0x82, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x7e, .h_delay_a[5] = 0x7e, .h_delay_a[6] = 0x80, .h_delay_a[7] = 0x7c, .h_delay_a[8] = 0x7a, .h_delay_a[9] = 0x7c, .h_delay_a[10] = 0x7c, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, .h_delay_c[6] = 0x00, .h_delay_c[7] = 0x00, .h_delay_c[8] = 0x00, .h_delay_c[9] = 0x00, .h_delay_c[10] = 0x00, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { +/*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, .h_scaler1[6] = 0x00, .h_scaler1[7] = 0x00, .h_scaler1[8] = 0x00, .h_scaler1[9] = 0x00, .h_scaler1[10] = 0x00, +/*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, .h_scaler2[6] = 0x00, .h_scaler2[7] = 0x00, .h_scaler2[8] = 0x00, .h_scaler2[9] = 0x00, .h_scaler2[10] = 0x00, +/*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, .h_scaler3[6] = 0x00, .h_scaler3[7] = 0x00, .h_scaler3[8] = 0x00, .h_scaler3[9] = 0x00, .h_scaler3[10] = 0x00, +/*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, +/*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, +/*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, +/*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, +/*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, +/*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + +/*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + +/*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, .comb_mode[6] = 0x01, .comb_mode[7] = 0x01, .comb_mode[8] = 0x01, .comb_mode[9] = 0x01, .comb_mode[10] = 0x01, +/*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, +/*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, .mem_path[6] = 0x00, .mem_path[7] = 0x00, .mem_path[8] = 0x00, .mem_path[9] = 0x00, .mem_path[10] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + +/*B0 0x81*/ .format_set1[0] = 0x0d, .format_set1[1] = 0x0d, .format_set1[2] = 0x0d, .format_set1[3] = 0x0d, .format_set1[4] = 0x0d, .format_set1[5] = 0x0d, .format_set1[6] = 0x0d, .format_set1[7] = 0x0d, .format_set1[8] = 0x0d, .format_set1[9] = 0x0d, .format_set1[10] = 0x0d, +/*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, .format_set2[6] = 0x00, .format_set2[7] = 0x00, .format_set2[8] = 0x00, .format_set2[9] = 0x00, .format_set2[10] = 0x00, + +/*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, .v_delay[6] = 0x20, .v_delay[7] = 0x20, .v_delay[8] = 0x20, .v_delay[9] = 0x20, .v_delay[10] = 0x20, + }, + }, + [ AHD20_720P_30P_EX_Btype ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x62, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, .eq_band_sel[6] = 0x47, .eq_band_sel[7] = 0x47, .eq_band_sel[8] = 0x27, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x17, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x86, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x8e, .deq_a_sel[5] = 0x8e, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x8d, .deq_a_sel[10] = 0x8d, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x88, .contrast[2] = 0x78, .contrast[3] = 0x88, .contrast[4] = 0x88, .contrast[5] = 0x7e, .contrast[6] = 0x78, .contrast[7] = 0x78, .contrast[8] = 0x74, .contrast[9] = 0x74, .contrast[10] = 0x74, + .h_peaking[0] = 0x3f, .h_peaking[1] = 0x3f, .h_peaking[2] = 0x3f, .h_peaking[3] = 0x3f, .h_peaking[4] = 0x3f, .h_peaking[5] = 0x3f, .h_peaking[6] = 0x3f, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x4f, .h_peaking[10] = 0x4f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0x92, .c_filter[6] = 0x92, .c_filter[7] = 0x92, .c_filter[8] = 0x92, .c_filter[9] = 0x92, .c_filter[10] = 0x92, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x00, .u_gain[3] = 0x00, .u_gain[4] = 0x00, .u_gain[5] = 0x00, .u_gain[6] = 0x00, .u_gain[7] = 0x00, .u_gain[8] = 0x00, .u_gain[9] = 0x00, .u_gain[10] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, .u_offset[6] = 0x00, .u_offset[7] = 0x00, .u_offset[8] = 0x00, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x86, .black_level[6] = 0x86, .black_level[7] = 0x8c, .black_level[8] = 0x8c, .black_level[9] = 0x90, .black_level[10] = 0x90, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x57, .acc_ref[8] = 0x57, .acc_ref[9] = 0x47, .acc_ref[10] = 0x47, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x90, .cti_delay[10] = 0x90, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xab, .sub_saturation[2] = 0xb0, .sub_saturation[3] = 0xb0, .sub_saturation[4] = 0xa4, .sub_saturation[5] = 0xa0, .sub_saturation[6] = 0xa0, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x90, .sub_saturation[10] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, .burst_dec_c[6] = 0x30, .burst_dec_c[7] = 0x30, .burst_dec_c[8] = 0x30, .burst_dec_c[9] = 0x30, .burst_dec_c[10] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0x90, .c_option[5] = 0x90, .c_option[6] = 0x90, .c_option[7] = 0x90, .c_option[8] = 0x90, .c_option[9] = 0x90, .c_option[10] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x84, .h_delay_a[1] = 0x84, .h_delay_a[2] = 0x82, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x7e, .h_delay_a[5] = 0x7e, .h_delay_a[6] = 0x80, .h_delay_a[7] = 0x7c, .h_delay_a[8] = 0x7a, .h_delay_a[9] = 0x7c, .h_delay_a[10] = 0x7c, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, .h_delay_c[6] = 0x00, .h_delay_c[7] = 0x00, .h_delay_c[8] = 0x00, .h_delay_c[9] = 0x00, .h_delay_c[10] = 0x00, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { +/*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, .h_scaler1[6] = 0x00, .h_scaler1[7] = 0x00, .h_scaler1[8] = 0x00, .h_scaler1[9] = 0x00, .h_scaler1[10] = 0x00, +/*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, .h_scaler2[6] = 0x00, .h_scaler2[7] = 0x00, .h_scaler2[8] = 0x00, .h_scaler2[9] = 0x00, .h_scaler2[10] = 0x00, +/*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, .h_scaler3[6] = 0x00, .h_scaler3[7] = 0x00, .h_scaler3[8] = 0x00, .h_scaler3[9] = 0x00, .h_scaler3[10] = 0x00, +/*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, +/*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, +/*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, +/*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, +/*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, +/*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + +/*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + +/*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, .comb_mode[6] = 0x01, .comb_mode[7] = 0x01, .comb_mode[8] = 0x01, .comb_mode[9] = 0x01, .comb_mode[10] = 0x01, +/*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, +/*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, .mem_path[6] = 0x00, .mem_path[7] = 0x00, .mem_path[8] = 0x00, .mem_path[9] = 0x00, .mem_path[10] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + +/*B0 0x81*/ .format_set1[0] = 0x0c, .format_set1[1] = 0x0c, .format_set1[2] = 0x0c, .format_set1[3] = 0x0c, .format_set1[4] = 0x0c, .format_set1[5] = 0x0c, .format_set1[6] = 0x0c, .format_set1[7] = 0x0c, .format_set1[8] = 0x0c, .format_set1[9] = 0x0c, .format_set1[10] = 0x0c, +/*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, .format_set2[6] = 0x00, .format_set2[7] = 0x00, .format_set2[8] = 0x00, .format_set2[9] = 0x00, .format_set2[10] = 0x00, + +/*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, .v_delay[6] = 0x20, .v_delay[7] = 0x20, .v_delay[8] = 0x20, .v_delay[9] = 0x20, .v_delay[10] = 0x20, + }, + }, + + [ AHD20_720P_25P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x62, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, .eq_band_sel[6] = 0x47, .eq_band_sel[7] = 0x47, .eq_band_sel[8] = 0x27, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x17, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x86, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x8e, .deq_a_sel[5] = 0x8e, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x8d, .deq_a_sel[10] = 0x8d, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x88, .contrast[2] = 0x78, .contrast[3] = 0x88, .contrast[4] = 0x88, .contrast[5] = 0x7e, .contrast[6] = 0x78, .contrast[7] = 0x78, .contrast[8] = 0x74, .contrast[9] = 0x74, .contrast[10] = 0x74, + .h_peaking[0] = 0x3f, .h_peaking[1] = 0x3f, .h_peaking[2] = 0x3f, .h_peaking[3] = 0x3f, .h_peaking[4] = 0x3f, .h_peaking[5] = 0x3f, .h_peaking[6] = 0x3f, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x4f, .h_peaking[10] = 0x4f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0x92, .c_filter[6] = 0x92, .c_filter[7] = 0x92, .c_filter[8] = 0x92, .c_filter[9] = 0x92, .c_filter[10] = 0x92, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x00, .u_gain[3] = 0x00, .u_gain[4] = 0x00, .u_gain[5] = 0x00, .u_gain[6] = 0x00, .u_gain[7] = 0x00, .u_gain[8] = 0x00, .u_gain[9] = 0x00, .u_gain[10] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, .u_offset[6] = 0x00, .u_offset[7] = 0x00, .u_offset[8] = 0x00, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x86, .black_level[6] = 0x86, .black_level[7] = 0x8c, .black_level[8] = 0x8c, .black_level[9] = 0x90, .black_level[10] = 0x90, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x57, .acc_ref[8] = 0x57, .acc_ref[9] = 0x47, .acc_ref[10] = 0x47, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x90, .cti_delay[10] = 0x90, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xab, .sub_saturation[2] = 0xb0, .sub_saturation[3] = 0xb0, .sub_saturation[4] = 0xa4, .sub_saturation[5] = 0xa0, .sub_saturation[6] = 0xa0, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x90, .sub_saturation[10] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, .burst_dec_c[6] = 0x30, .burst_dec_c[7] = 0x30, .burst_dec_c[8] = 0x30, .burst_dec_c[9] = 0x30, .burst_dec_c[10] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0x90, .c_option[5] = 0x90, .c_option[6] = 0x90, .c_option[7] = 0x90, .c_option[8] = 0x90, .c_option[9] = 0x90, .c_option[10] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x7e, .h_delay_a[3] = 0x7b, .h_delay_a[4] = 0x79, .h_delay_a[5] = 0x79, .h_delay_a[6] = 0x7b, .h_delay_a[7] = 0x78, .h_delay_a[8] = 0x78, .h_delay_a[9] = 0x78, .h_delay_a[10] = 0x78, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, .h_delay_b[6] = 0x10, .h_delay_b[7] = 0x10, .h_delay_b[8] = 0x10, .h_delay_b[9] = 0x10, .h_delay_b[10] = 0x10, + .h_delay_c[0] = 0x06, .h_delay_c[1] = 0x06, .h_delay_c[2] = 0x06, .h_delay_c[3] = 0x06, .h_delay_c[4] = 0x06, .h_delay_c[5] = 0x06, .h_delay_c[6] = 0x06, .h_delay_c[7] = 0x06, .h_delay_c[8] = 0x06, .h_delay_c[9] = 0x06, .h_delay_c[10] = 0x06, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, .y_delay[6] = 0x00, .y_delay[7] = 0x00, .y_delay[8] = 0x00, .y_delay[9] = 0x00, .y_delay[10] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, .h_scaler1[6] = 0x00, .h_scaler1[7] = 0x00, .h_scaler1[8] = 0x00, .h_scaler1[9] = 0x00, .h_scaler1[10] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, .h_scaler2[6] = 0x00, .h_scaler2[7] = 0x00, .h_scaler2[8] = 0x00, .h_scaler2[9] = 0x00, .h_scaler2[10] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, .h_scaler3[6] = 0x00, .h_scaler3[7] = 0x00, .h_scaler3[8] = 0x00, .h_scaler3[9] = 0x00, .h_scaler3[10] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, .comb_mode[6] = 0x01, .comb_mode[7] = 0x01, .comb_mode[8] = 0x01, .comb_mode[9] = 0x01, .comb_mode[10] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, .mem_path[6] = 0x00, .mem_path[7] = 0x00, .mem_path[8] = 0x00, .mem_path[9] = 0x00, .mem_path[10] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x07, .format_set1[1] = 0x07, .format_set1[2] = 0x07, .format_set1[3] = 0x07, .format_set1[4] = 0x07, .format_set1[5] = 0x07, .format_set1[6] = 0x07, .format_set1[7] = 0x07, .format_set1[8] = 0x07, .format_set1[9] = 0x07, .format_set1[10] = 0x07, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, .format_set2[6] = 0x00, .format_set2[7] = 0x00, .format_set2[8] = 0x00, .format_set2[9] = 0x00, .format_set2[10] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, .v_delay[6] = 0x21, .v_delay[7] = 0x21, .v_delay[8] = 0x21, .v_delay[9] = 0x21, .v_delay[10] = 0x21, + }, + }, + [ AHD20_720P_30P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x62, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, .eq_band_sel[6] = 0x47, .eq_band_sel[7] = 0x47, .eq_band_sel[8] = 0x27, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x17, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x86, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x8e, .deq_a_sel[5] = 0x8e, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x8d, .deq_a_sel[10] = 0x8d, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x88, .contrast[2] = 0x78, .contrast[3] = 0x88, .contrast[4] = 0x88, .contrast[5] = 0x7e, .contrast[6] = 0x78, .contrast[7] = 0x78, .contrast[8] = 0x74, .contrast[9] = 0x74, .contrast[10] = 0x74, + .h_peaking[0] = 0x3f, .h_peaking[1] = 0x3f, .h_peaking[2] = 0x3f, .h_peaking[3] = 0x3f, .h_peaking[4] = 0x3f, .h_peaking[5] = 0x3f, .h_peaking[6] = 0x3f, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x4f, .h_peaking[10] = 0x4f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0x92, .c_filter[6] = 0x92, .c_filter[7] = 0x92, .c_filter[8] = 0x92, .c_filter[9] = 0x92, .c_filter[10] = 0x92, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x00, .u_gain[3] = 0x00, .u_gain[4] = 0x00, .u_gain[5] = 0x00, .u_gain[6] = 0x00, .u_gain[7] = 0x00, .u_gain[8] = 0x00, .u_gain[9] = 0x00, .u_gain[10] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, .u_offset[6] = 0x00, .u_offset[7] = 0x00, .u_offset[8] = 0x00, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x86, .black_level[6] = 0x86, .black_level[7] = 0x8c, .black_level[8] = 0x8c, .black_level[9] = 0x90, .black_level[10] = 0x90, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x57, .acc_ref[8] = 0x57, .acc_ref[9] = 0x47, .acc_ref[10] = 0x47, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x90, .cti_delay[10] = 0x90, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xab, .sub_saturation[2] = 0xb0, .sub_saturation[3] = 0xb0, .sub_saturation[4] = 0xa4, .sub_saturation[5] = 0xa0, .sub_saturation[6] = 0xa0, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x90, .sub_saturation[10] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, .burst_dec_c[6] = 0x30, .burst_dec_c[7] = 0x30, .burst_dec_c[8] = 0x30, .burst_dec_c[9] = 0x30, .burst_dec_c[10] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0x90, .c_option[5] = 0x90, .c_option[6] = 0x90, .c_option[7] = 0x90, .c_option[8] = 0x90, .c_option[9] = 0x90, .c_option[10] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x7e, .h_delay_a[3] = 0x7b, .h_delay_a[4] = 0x79, .h_delay_a[5] = 0x79, .h_delay_a[6] = 0x7b, .h_delay_a[7] = 0x78, .h_delay_a[8] = 0x78, .h_delay_a[9] = 0x78, .h_delay_a[10] = 0x78, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, .h_delay_b[6] = 0x10, .h_delay_b[7] = 0x10, .h_delay_b[8] = 0x10, .h_delay_b[9] = 0x10, .h_delay_b[10] = 0x10, + .h_delay_c[0] = 0x06, .h_delay_c[1] = 0x06, .h_delay_c[2] = 0x06, .h_delay_c[3] = 0x06, .h_delay_c[4] = 0x06, .h_delay_c[5] = 0x06, .h_delay_c[6] = 0x06, .h_delay_c[7] = 0x06, .h_delay_c[8] = 0x06, .h_delay_c[9] = 0x06, .h_delay_c[10] = 0x06, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, .y_delay[6] = 0x00, .y_delay[7] = 0x00, .y_delay[8] = 0x00, .y_delay[9] = 0x00, .y_delay[10] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, .h_scaler1[6] = 0x00, .h_scaler1[7] = 0x00, .h_scaler1[8] = 0x00, .h_scaler1[9] = 0x00, .h_scaler1[10] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, .h_scaler2[6] = 0x00, .h_scaler2[7] = 0x00, .h_scaler2[8] = 0x00, .h_scaler2[9] = 0x00, .h_scaler2[10] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, .h_scaler3[6] = 0x00, .h_scaler3[7] = 0x00, .h_scaler3[8] = 0x00, .h_scaler3[9] = 0x00, .h_scaler3[10] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, .comb_mode[6] = 0x01, .comb_mode[7] = 0x01, .comb_mode[8] = 0x01, .comb_mode[9] = 0x01, .comb_mode[10] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, .mem_path[6] = 0x00, .mem_path[7] = 0x00, .mem_path[8] = 0x00, .mem_path[9] = 0x00, .mem_path[10] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x06, .format_set1[1] = 0x06, .format_set1[2] = 0x06, .format_set1[3] = 0x06, .format_set1[4] = 0x06, .format_set1[5] = 0x06, .format_set1[6] = 0x06, .format_set1[7] = 0x06, .format_set1[8] = 0x06, .format_set1[9] = 0x06, .format_set1[10] = 0x06, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, .format_set2[6] = 0x00, .format_set2[7] = 0x00, .format_set2[8] = 0x00, .format_set2[9] = 0x00, .format_set2[10] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, .v_delay[6] = 0x21, .v_delay[7] = 0x21, .v_delay[8] = 0x21, .v_delay[9] = 0x21, .v_delay[10] = 0x21, + }, + }, + + [ CVI_HD_25P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x57, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x37, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x78, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x93, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x8c, .contrast[2] = 0x8a, .contrast[3] = 0x87, .contrast[4] = 0x85, .contrast[5] = 0x84, .contrast[6] = 0x80, .contrast[7] = 0x80, .contrast[8] = 0x79, .contrast[9] = 0x72, .contrast[10] = 0x72, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, .h_peaking[6] = 0x00, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xa2, .c_filter[6] = 0xb2, .c_filter[7] = 0xb2, .c_filter[8] = 0xb2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x00, .u_gain[3] = 0x00, .u_gain[4] = 0x00, .u_gain[5] = 0x00, .u_gain[6] = 0x00, .u_gain[7] = 0x00, .u_gain[8] = 0x00, .u_gain[9] = 0x00, .u_gain[10] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, .u_offset[6] = 0x00, .u_offset[7] = 0x00, .u_offset[8] = 0x00, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x86, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x86, .black_level[5] = 0x88, .black_level[6] = 0x8a, .black_level[7] = 0x90, .black_level[8] = 0x93, .black_level[9] = 0x96, .black_level[10] = 0x96, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x37, .acc_ref[8] = 0x20, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xaa, .sub_saturation[2] = 0xaa, .sub_saturation[3] = 0xac, .sub_saturation[4] = 0xa8, .sub_saturation[5] = 0xa6, .sub_saturation[6] = 0x98, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0xa0, .c_option[5] = 0xa0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x7e, .h_delay_a[3] = 0x7b, .h_delay_a[4] = 0x79, .h_delay_a[5] = 0x79, .h_delay_a[6] = 0x7b, .h_delay_a[7] = 0x78, .h_delay_a[8] = 0x78, .h_delay_a[9] = 0x78, .h_delay_a[10] = 0x78, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, .h_delay_b[6] = 0x10, .h_delay_b[7] = 0x10, .h_delay_b[8] = 0x10, .h_delay_b[9] = 0x10, .h_delay_b[10] = 0x10, + .h_delay_c[0] = 0x01, .h_delay_c[1] = 0x01, .h_delay_c[2] = 0x01, .h_delay_c[3] = 0x01, .h_delay_c[4] = 0x01, .h_delay_c[5] = 0x01, .h_delay_c[6] = 0x01, .h_delay_c[7] = 0x01, .h_delay_c[8] = 0x01, .h_delay_c[9] = 0x01, .h_delay_c[10] = 0x01, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { +/*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, .h_scaler1[6] = 0x01, .h_scaler1[7] = 0x01, .h_scaler1[8] = 0x01, .h_scaler1[9] = 0x01, .h_scaler1[10] = 0x01, +/*B9 0x97*/ .h_scaler2[0] = 0x29, .h_scaler2[1] = 0x29, .h_scaler2[2] = 0x29, .h_scaler2[3] = 0x29, .h_scaler2[4] = 0x29, .h_scaler2[5] = 0x29, .h_scaler2[6] = 0x29, .h_scaler2[7] = 0x29, .h_scaler2[8] = 0x29, .h_scaler2[9] = 0x29, .h_scaler2[10] = 0x29, +/*B9 0x98*/ .h_scaler3[0] = 0xc0, .h_scaler3[1] = 0xc0, .h_scaler3[2] = 0xc0, .h_scaler3[3] = 0xc0, .h_scaler3[4] = 0xc0, .h_scaler3[5] = 0xc0, .h_scaler3[6] = 0xc0, .h_scaler3[7] = 0xc0, .h_scaler3[8] = 0xc0, .h_scaler3[9] = 0xc0, .h_scaler3[10] = 0xc0, +/*B9 0x99*/ .h_scaler4[0] = 0x01, .h_scaler4[1] = 0x01, .h_scaler4[2] = 0x01, .h_scaler4[3] = 0x01, .h_scaler4[4] = 0x01, .h_scaler4[5] = 0x01, .h_scaler4[6] = 0x01, .h_scaler4[7] = 0x01, .h_scaler4[8] = 0x01, .h_scaler4[9] = 0x01, .h_scaler4[10] = 0x01, +/*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, +/*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, +/*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, +/*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, +/*B9 0x9e*/ .h_scaler9[0] = 0x80, .h_scaler9[1] = 0x80, .h_scaler9[2] = 0x80, .h_scaler9[3] = 0x80, .h_scaler9[4] = 0x80, .h_scaler9[5] = 0x80, .h_scaler9[6] = 0x80, .h_scaler9[7] = 0x80, .h_scaler9[8] = 0x80, .h_scaler9[9] = 0x80, .h_scaler9[10] = 0x80, + + +/*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + +/*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, +/*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, +/*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + +/*B0 0x81*/ .format_set1[0] = 0x07, .format_set1[1] = 0x07, .format_set1[2] = 0x07, .format_set1[3] = 0x07, .format_set1[4] = 0x07, .format_set1[5] = 0x07, .format_set1[6] = 0x07, .format_set1[7] = 0x07, .format_set1[8] = 0x07, .format_set1[9] = 0x07, .format_set1[10] = 0x07, +/*B0 0x85*/ .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, .format_set2[6] = 0x02, .format_set2[7] = 0x02, .format_set2[8] = 0x02, .format_set2[9] = 0x02, .format_set2[10] = 0x02, + + /*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, .v_delay[6] = 0x21, .v_delay[7] = 0x21, .v_delay[8] = 0x21, .v_delay[9] = 0x21, .v_delay[10] = 0x21, + }, + }, + [ CVI_HD_30P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x57, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x37, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x78, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x93, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x8c, .contrast[2] = 0x8a, .contrast[3] = 0x87, .contrast[4] = 0x85, .contrast[5] = 0x84, .contrast[6] = 0x80, .contrast[7] = 0x80, .contrast[8] = 0x79, .contrast[9] = 0x72, .contrast[10] = 0x72, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, .h_peaking[6] = 0x00, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xa2, .c_filter[6] = 0xb2, .c_filter[7] = 0xb2, .c_filter[8] = 0xb2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x00, .u_gain[3] = 0x00, .u_gain[4] = 0x00, .u_gain[5] = 0x00, .u_gain[6] = 0x00, .u_gain[7] = 0x00, .u_gain[8] = 0x00, .u_gain[9] = 0x00, .u_gain[10] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, .u_offset[6] = 0x00, .u_offset[7] = 0x00, .u_offset[8] = 0x00, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x86, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x86, .black_level[5] = 0x88, .black_level[6] = 0x8a, .black_level[7] = 0x90, .black_level[8] = 0x93, .black_level[9] = 0x96, .black_level[10] = 0x96, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x37, .acc_ref[8] = 0x20, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xaa, .sub_saturation[2] = 0xaa, .sub_saturation[3] = 0xac, .sub_saturation[4] = 0xa8, .sub_saturation[5] = 0xa6, .sub_saturation[6] = 0x98, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0xa0, .c_option[5] = 0xa0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x7e, .h_delay_a[3] = 0x7b, .h_delay_a[4] = 0x79, .h_delay_a[5] = 0x79, .h_delay_a[6] = 0x7b, .h_delay_a[7] = 0x78, .h_delay_a[8] = 0x78, .h_delay_a[9] = 0x78, .h_delay_a[10] = 0x78, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, .h_delay_b[6] = 0x10, .h_delay_b[7] = 0x10, .h_delay_b[8] = 0x10, .h_delay_b[9] = 0x10, .h_delay_b[10] = 0x10, + .h_delay_c[0] = 0x02, .h_delay_c[1] = 0x02, .h_delay_c[2] = 0x02, .h_delay_c[3] = 0x02, .h_delay_c[4] = 0x02, .h_delay_c[5] = 0x02, .h_delay_c[6] = 0x02, .h_delay_c[7] = 0x02, .h_delay_c[8] = 0x02, .h_delay_c[9] = 0x02, .h_delay_c[10] = 0x02, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, .h_scaler1[6] = 0x01, .h_scaler1[7] = 0x01, .h_scaler1[8] = 0x01, .h_scaler1[9] = 0x01, .h_scaler1[10] = 0x01, + /*B9 0x97*/ .h_scaler2[0] = 0x29, .h_scaler2[1] = 0x29, .h_scaler2[2] = 0x29, .h_scaler2[3] = 0x29, .h_scaler2[4] = 0x29, .h_scaler2[5] = 0x29, .h_scaler2[6] = 0x29, .h_scaler2[7] = 0x29, .h_scaler2[8] = 0x29, .h_scaler2[9] = 0x29, .h_scaler2[10] = 0x29, + /*B9 0x98*/ .h_scaler3[0] = 0x50, .h_scaler3[1] = 0x50, .h_scaler3[2] = 0x50, .h_scaler3[3] = 0x50, .h_scaler3[4] = 0x50, .h_scaler3[5] = 0x50, .h_scaler3[6] = 0x50, .h_scaler3[7] = 0x50, .h_scaler3[8] = 0x50, .h_scaler3[9] = 0x50, .h_scaler3[10] = 0x50, + /*B9 0x99*/ .h_scaler4[0] = 0x01, .h_scaler4[1] = 0x01, .h_scaler4[2] = 0x01, .h_scaler4[3] = 0x01, .h_scaler4[4] = 0x01, .h_scaler4[5] = 0x01, .h_scaler4[6] = 0x01, .h_scaler4[7] = 0x01, .h_scaler4[8] = 0x01, .h_scaler4[9] = 0x01, .h_scaler4[10] = 0x01, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x80, .h_scaler9[1] = 0x80, .h_scaler9[2] = 0x80, .h_scaler9[3] = 0x80, .h_scaler9[4] = 0x80, .h_scaler9[5] = 0x80, .h_scaler9[6] = 0x80, .h_scaler9[7] = 0x80, .h_scaler9[8] = 0x80, .h_scaler9[9] = 0x80, .h_scaler9[10] = 0x80, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x06, .format_set1[1] = 0x06, .format_set1[2] = 0x06, .format_set1[3] = 0x06, .format_set1[4] = 0x06, .format_set1[5] = 0x06, .format_set1[6] = 0x06, .format_set1[7] = 0x06, .format_set1[8] = 0x06, .format_set1[9] = 0x06, .format_set1[10] = 0x06, + /*B0 0x85*/ .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, .format_set2[6] = 0x02, .format_set2[7] = 0x02, .format_set2[8] = 0x02, .format_set2[9] = 0x02, .format_set2[10] = 0x02, + + /*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, .v_delay[6] = 0x20, .v_delay[7] = 0x20, .v_delay[8] = 0x20, .v_delay[9] = 0x20, .v_delay[10] = 0x20, + }, + }, + + [ CVI_HD_25P_EX ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x57, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x37, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x78, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x93, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x8c, .contrast[2] = 0x8a, .contrast[3] = 0x87, .contrast[4] = 0x85, .contrast[5] = 0x84, .contrast[6] = 0x80, .contrast[7] = 0x80, .contrast[8] = 0x79, .contrast[9] = 0x72, .contrast[10] = 0x72, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, .h_peaking[6] = 0x00, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xa2, .c_filter[6] = 0xb2, .c_filter[7] = 0xb2, .c_filter[8] = 0xb2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x00, .u_gain[3] = 0x00, .u_gain[4] = 0x00, .u_gain[5] = 0x00, .u_gain[6] = 0x00, .u_gain[7] = 0x00, .u_gain[8] = 0x00, .u_gain[9] = 0x00, .u_gain[10] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, .u_offset[6] = 0x00, .u_offset[7] = 0x00, .u_offset[8] = 0x00, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x86, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x86, .black_level[5] = 0x88, .black_level[6] = 0x8a, .black_level[7] = 0x90, .black_level[8] = 0x93, .black_level[9] = 0x96, .black_level[10] = 0x96, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x37, .acc_ref[8] = 0x20, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xaa, .sub_saturation[2] = 0xaa, .sub_saturation[3] = 0xac, .sub_saturation[4] = 0xa8, .sub_saturation[5] = 0xa6, .sub_saturation[6] = 0x98, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, .burst_dec_c[6] = 0x30, .burst_dec_c[7] = 0x30, .burst_dec_c[8] = 0x30, .burst_dec_c[9] = 0x30, .burst_dec_c[10] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0xa0, .c_option[5] = 0xa0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x7b, .h_delay_a[1] = 0x7b, .h_delay_a[2] = 0x7a, .h_delay_a[3] = 0x79, .h_delay_a[4] = 0x79, .h_delay_a[5] = 0x7a, .h_delay_a[6] = 0x7a, .h_delay_a[7] = 0x7a, .h_delay_a[8] = 0x7a, .h_delay_a[9] = 0x7a, .h_delay_a[10] = 0x7a, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, .h_delay_b[6] = 0x10, .h_delay_b[7] = 0x10, .h_delay_b[8] = 0x10, .h_delay_b[9] = 0x10, .h_delay_b[10] = 0x10, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, .h_delay_c[6] = 0x00, .h_delay_c[7] = 0x00, .h_delay_c[8] = 0x00, .h_delay_c[9] = 0x00, .h_delay_c[10] = 0x00, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { +/*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, .h_scaler1[6] = 0x01, .h_scaler1[7] = 0x01, .h_scaler1[8] = 0x01, .h_scaler1[9] = 0x01, .h_scaler1[10] = 0x01, +/*B9 0x97*/ .h_scaler2[0] = 0x29, .h_scaler2[1] = 0x29, .h_scaler2[2] = 0x29, .h_scaler2[3] = 0x29, .h_scaler2[4] = 0x29, .h_scaler2[5] = 0x29, .h_scaler2[6] = 0x29, .h_scaler2[7] = 0x29, .h_scaler2[8] = 0x29, .h_scaler2[9] = 0x29, .h_scaler2[10] = 0x29, +/*B9 0x98*/ .h_scaler3[0] = 0xc0, .h_scaler3[1] = 0xc0, .h_scaler3[2] = 0xc0, .h_scaler3[3] = 0xc0, .h_scaler3[4] = 0xc0, .h_scaler3[5] = 0xc0, .h_scaler3[6] = 0xc0, .h_scaler3[7] = 0xc0, .h_scaler3[8] = 0xc0, .h_scaler3[9] = 0xc0, .h_scaler3[10] = 0xc0, +/*B9 0x99*/ .h_scaler4[0] = 0x01, .h_scaler4[1] = 0x01, .h_scaler4[2] = 0x01, .h_scaler4[3] = 0x01, .h_scaler4[4] = 0x01, .h_scaler4[5] = 0x01, .h_scaler4[6] = 0x01, .h_scaler4[7] = 0x01, .h_scaler4[8] = 0x01, .h_scaler4[9] = 0x01, .h_scaler4[10] = 0x01, +/*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, +/*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, +/*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, +/*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, +/*B9 0x9e*/ .h_scaler9[0] = 0x80, .h_scaler9[1] = 0x80, .h_scaler9[2] = 0x80, .h_scaler9[3] = 0x80, .h_scaler9[4] = 0x80, .h_scaler9[5] = 0x80, .h_scaler9[6] = 0x80, .h_scaler9[7] = 0x80, .h_scaler9[8] = 0x80, .h_scaler9[9] = 0x80, .h_scaler9[10] = 0x80, + + +/*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + +/*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, +/*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, +/*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + +/*B0 0x81*/ .format_set1[0] = 0x0b, .format_set1[1] = 0x0b, .format_set1[2] = 0x0b, .format_set1[3] = 0x0b, .format_set1[4] = 0x0b, .format_set1[5] = 0x0b, .format_set1[6] = 0x0b, .format_set1[7] = 0x0b, .format_set1[8] = 0x0b, .format_set1[9] = 0x0b, .format_set1[10] = 0x0b, +/*B0 0x85*/ .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, .format_set2[6] = 0x02, .format_set2[7] = 0x02, .format_set2[8] = 0x02, .format_set2[9] = 0x02, .format_set2[10] = 0x02, + +/*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, .v_delay[6] = 0x21, .v_delay[7] = 0x21, .v_delay[8] = 0x21, .v_delay[9] = 0x21, .v_delay[10] = 0x21, + }, + }, + [ CVI_HD_30P_EX ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x57, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x37, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x78, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x93, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x8c, .contrast[2] = 0x8a, .contrast[3] = 0x87, .contrast[4] = 0x85, .contrast[5] = 0x84, .contrast[6] = 0x80, .contrast[7] = 0x80, .contrast[8] = 0x79, .contrast[9] = 0x72, .contrast[10] = 0x72, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, .h_peaking[6] = 0x00, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xa2, .c_filter[6] = 0xb2, .c_filter[7] = 0xb2, .c_filter[8] = 0xb2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x00, .u_gain[3] = 0x00, .u_gain[4] = 0x00, .u_gain[5] = 0x00, .u_gain[6] = 0x00, .u_gain[7] = 0x00, .u_gain[8] = 0x00, .u_gain[9] = 0x00, .u_gain[10] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, .u_offset[6] = 0x00, .u_offset[7] = 0x00, .u_offset[8] = 0x00, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x86, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x86, .black_level[5] = 0x88, .black_level[6] = 0x8a, .black_level[7] = 0x90, .black_level[8] = 0x93, .black_level[9] = 0x96, .black_level[10] = 0x96, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x37, .acc_ref[8] = 0x20, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xaa, .sub_saturation[2] = 0xaa, .sub_saturation[3] = 0xac, .sub_saturation[4] = 0xa8, .sub_saturation[5] = 0xa6, .sub_saturation[6] = 0x98, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, .burst_dec_c[6] = 0x30, .burst_dec_c[7] = 0x30, .burst_dec_c[8] = 0x30, .burst_dec_c[9] = 0x30, .burst_dec_c[10] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0xa0, .c_option[5] = 0xa0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x7b, .h_delay_a[1] = 0x7b, .h_delay_a[2] = 0x7a, .h_delay_a[3] = 0x79, .h_delay_a[4] = 0x79, .h_delay_a[5] = 0x7a, .h_delay_a[6] = 0x7a, .h_delay_a[7] = 0x7a, .h_delay_a[8] = 0x7a, .h_delay_a[9] = 0x7a, .h_delay_a[10] = 0x7a, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, .h_delay_b[6] = 0x10, .h_delay_b[7] = 0x10, .h_delay_b[8] = 0x10, .h_delay_b[9] = 0x10, .h_delay_b[10] = 0x10, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, .h_delay_c[6] = 0x00, .h_delay_c[7] = 0x00, .h_delay_c[8] = 0x00, .h_delay_c[9] = 0x00, .h_delay_c[10] = 0x00, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, .h_scaler1[6] = 0x01, .h_scaler1[7] = 0x01, .h_scaler1[8] = 0x01, .h_scaler1[9] = 0x01, .h_scaler1[10] = 0x01, + /*B9 0x97*/ .h_scaler2[0] = 0x19, .h_scaler2[1] = 0x19, .h_scaler2[2] = 0x19, .h_scaler2[3] = 0x19, .h_scaler2[4] = 0x19, .h_scaler2[5] = 0x19, .h_scaler2[6] = 0x19, .h_scaler2[7] = 0x19, .h_scaler2[8] = 0x19, .h_scaler2[9] = 0x19, .h_scaler2[10] = 0x19, + /*B9 0x98*/ .h_scaler3[0] = 0x20, .h_scaler3[1] = 0x20, .h_scaler3[2] = 0x20, .h_scaler3[3] = 0x20, .h_scaler3[4] = 0x20, .h_scaler3[5] = 0x20, .h_scaler3[6] = 0x20, .h_scaler3[7] = 0x20, .h_scaler3[8] = 0x20, .h_scaler3[9] = 0x20, .h_scaler3[10] = 0x20, + /*B9 0x99*/ .h_scaler4[0] = 0x01, .h_scaler4[1] = 0x01, .h_scaler4[2] = 0x01, .h_scaler4[3] = 0x01, .h_scaler4[4] = 0x01, .h_scaler4[5] = 0x01, .h_scaler4[6] = 0x01, .h_scaler4[7] = 0x01, .h_scaler4[8] = 0x01, .h_scaler4[9] = 0x01, .h_scaler4[10] = 0x01, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x80, .h_scaler9[1] = 0x80, .h_scaler9[2] = 0x80, .h_scaler9[3] = 0x80, .h_scaler9[4] = 0x80, .h_scaler9[5] = 0x80, .h_scaler9[6] = 0x80, .h_scaler9[7] = 0x80, .h_scaler9[8] = 0x80, .h_scaler9[9] = 0x80, .h_scaler9[10] = 0x80, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0a, .format_set1[1] = 0x0a, .format_set1[2] = 0x0a, .format_set1[3] = 0x0a, .format_set1[4] = 0x0a, .format_set1[5] = 0x0a, .format_set1[6] = 0x0a, .format_set1[7] = 0x0a, .format_set1[8] = 0x0a, .format_set1[9] = 0x0a, .format_set1[10] = 0x0a, + /*B0 0x85*/ .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, .format_set2[6] = 0x02, .format_set2[7] = 0x02, .format_set2[8] = 0x02, .format_set2[9] = 0x02, .format_set2[10] = 0x02, + + /*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, .v_delay[6] = 0x20, .v_delay[7] = 0x20, .v_delay[8] = 0x20, .v_delay[9] = 0x20, .v_delay[10] = 0x20, + }, + }, + [ CVI_HD_50P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x07, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x47, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7f, .eq_gain_sel[2] = 0x6f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x95, .deq_a_sel[5] = 0x93, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x98, .contrast[1] = 0x98, .contrast[2] = 0x98, .contrast[3] = 0x98, .contrast[4] = 0x98, .contrast[5] = 0x98, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, + .c_filter[0] = 0x92, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x03, .hue[1] = 0x03, .hue[2] = 0x04, .hue[3] = 0x04, .hue[4] = 0x04, .hue[5] = 0x04, + .u_gain[0] = 0x0c, .u_gain[1] = 0x0c, .u_gain[2] = 0x0c, .u_gain[3] = 0x0c, .u_gain[4] = 0x0c, .u_gain[5] = 0x0c, + .v_gain[0] = 0x1a, .v_gain[1] = 0x1a, .v_gain[2] = 0x1a, .v_gain[3] = 0x1a, .v_gain[4] = 0x1a, .v_gain[5] = 0x1a, + .u_offset[0] = 0xfa, .u_offset[1] = 0xfa, .u_offset[2] = 0xfa, .u_offset[3] = 0xfa, .u_offset[4] = 0xfa, .u_offset[5] = 0xfa, + .v_offset[0] = 0xfa, .v_offset[1] = 0xfa, .v_offset[2] = 0xfa, .v_offset[3] = 0xfa, .v_offset[4] = 0xfa, .v_offset[5] = 0xfa, + + .black_level[0] = 0x86, .black_level[1] = 0x7a, .black_level[2] = 0x88, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x84, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x47, .acc_ref[5] = 0x37, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa0, .sub_saturation[2] = 0xa0, .sub_saturation[3] = 0x90, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0xc0, .c_option[1] = 0xc0, .c_option[2] = 0xc0, .c_option[3] = 0xc0, .c_option[4] = 0xc0, .c_option[5] = 0xc0, + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x01, .h_delay_c[1] = 0x01, .h_delay_c[2] = 0x01, .h_delay_c[3] = 0x01, .h_delay_c[4] = 0x01, .h_delay_c[5] = 0x01, + .y_delay[0] = 0x02, .y_delay[1] = 0x02, .y_delay[2] = 0x02, .y_delay[3] = 0x02, .y_delay[4] = 0x02, .y_delay[5] = 0x02, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, + .h_scaler2[0] = 0x29, .h_scaler2[1] = 0x29, .h_scaler2[2] = 0x29, .h_scaler2[3] = 0x29, .h_scaler2[4] = 0x29, .h_scaler2[5] = 0x29, + .h_scaler3[0] = 0xc0, .h_scaler3[1] = 0xc0, .h_scaler3[2] = 0xc0, .h_scaler3[3] = 0xc0, .h_scaler3[4] = 0xc0, .h_scaler3[5] = 0xc0, + .h_scaler4[0] = 0x01, .h_scaler4[1] = 0x01, .h_scaler4[2] = 0x01, .h_scaler4[3] = 0x01, .h_scaler4[4] = 0x01, .h_scaler4[5] = 0x01, +/*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, +/*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, +/*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, +/*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, +/*B9 0x9e*/ .h_scaler9[0] = 0x80, .h_scaler9[1] = 0x80, .h_scaler9[2] = 0x80, .h_scaler9[3] = 0x80, .h_scaler9[4] = 0x80, .h_scaler9[5] = 0x80, + + .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + .format_set1[0] = 0x05, .format_set1[1] = 0x05, .format_set1[2] = 0x05, .format_set1[3] = 0x05, .format_set1[4] = 0x05, .format_set1[5] = 0x05, + .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, + + .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, + }, + }, + [ CVI_HD_60P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x07, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x47, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7f, .eq_gain_sel[2] = 0x6f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x95, .deq_a_sel[5] = 0x93, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x98, .contrast[1] = 0x98, .contrast[2] = 0x98, .contrast[3] = 0x98, .contrast[4] = 0x98, .contrast[5] = 0x98, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, + .c_filter[0] = 0x92, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x03, .hue[1] = 0x03, .hue[2] = 0x04, .hue[3] = 0x04, .hue[4] = 0x04, .hue[5] = 0x04, + .u_gain[0] = 0x0c, .u_gain[1] = 0x0c, .u_gain[2] = 0x0c, .u_gain[3] = 0x0c, .u_gain[4] = 0x0c, .u_gain[5] = 0x0c, + .v_gain[0] = 0x1a, .v_gain[1] = 0x1a, .v_gain[2] = 0x1a, .v_gain[3] = 0x1a, .v_gain[4] = 0x1a, .v_gain[5] = 0x1a, + .u_offset[0] = 0xfa, .u_offset[1] = 0xfa, .u_offset[2] = 0xfa, .u_offset[3] = 0xfa, .u_offset[4] = 0xfa, .u_offset[5] = 0xfa, + .v_offset[0] = 0xfa, .v_offset[1] = 0xfa, .v_offset[2] = 0xfa, .v_offset[3] = 0xfa, .v_offset[4] = 0xfa, .v_offset[5] = 0xfa, + + .black_level[0] = 0x86, .black_level[1] = 0x7a, .black_level[2] = 0x88, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x84, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x47, .acc_ref[5] = 0x37, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa0, .sub_saturation[2] = 0xa0, .sub_saturation[3] = 0x90, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0xc0, .c_option[1] = 0xc0, .c_option[2] = 0xc0, .c_option[3] = 0xc0, .c_option[4] = 0xc0, .c_option[5] = 0xc0, + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x02, .y_delay[1] = 0x02, .y_delay[2] = 0x02, .y_delay[3] = 0x02, .y_delay[4] = 0x02, .y_delay[5] = 0x02, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, + .h_scaler2[0] = 0x19, .h_scaler2[1] = 0x19, .h_scaler2[2] = 0x19, .h_scaler2[3] = 0x19, .h_scaler2[4] = 0x19, .h_scaler2[5] = 0x19, + .h_scaler3[0] = 0x19, .h_scaler3[1] = 0x19, .h_scaler3[2] = 0x19, .h_scaler3[3] = 0x19, .h_scaler3[4] = 0x19, .h_scaler3[5] = 0x19, + .h_scaler4[0] = 0x01, .h_scaler4[1] = 0x01, .h_scaler4[2] = 0x01, .h_scaler4[3] = 0x01, .h_scaler4[4] = 0x01, .h_scaler4[5] = 0x01, +/*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, +/*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, +/*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, +/*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, +/*B9 0x9e*/ .h_scaler9[0] = 0x80, .h_scaler9[1] = 0x80, .h_scaler9[2] = 0x80, .h_scaler9[3] = 0x80, .h_scaler9[4] = 0x80, .h_scaler9[5] = 0x80, + .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + .format_set1[0] = 0x04, .format_set1[1] = 0x04, .format_set1[2] = 0x04, .format_set1[3] = 0x04, .format_set1[4] = 0x04, .format_set1[5] = 0x04, + .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, + + .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, + }, + }, + + [ TVI_HD_25P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x57, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x37, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x78, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x93, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x82, .contrast[1] = 0x86, .contrast[2] = 0x84, .contrast[3] = 0x81, .contrast[4] = 0x7f, .contrast[5] = 0x7e, .contrast[6] = 0x7a, .contrast[7] = 0x7a, .contrast[8] = 0x72, .contrast[9] = 0x6d, .contrast[10] = 0x6d, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, .h_peaking[6] = 0x00, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0xa2, .c_filter[4] = 0xa2, .c_filter[5] = 0xa2, .c_filter[6] = 0xb2, .c_filter[7] = 0xb2, .c_filter[8] = 0xb2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0xe0, .u_gain[1] = 0xe0, .u_gain[2] = 0xe0, .u_gain[3] = 0xe0, .u_gain[4] = 0xe0, .u_gain[5] = 0xe0, .u_gain[6] = 0xe0, .u_gain[7] = 0xe0, .u_gain[8] = 0xe0, .u_gain[9] = 0x00, .u_gain[10] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0xff, .u_offset[1] = 0xff, .u_offset[2] = 0xff, .u_offset[3] = 0xff, .u_offset[4] = 0xff, .u_offset[5] = 0xff, .u_offset[6] = 0xff, .u_offset[7] = 0xff, .u_offset[8] = 0xff, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x86, .black_level[1] = 0x88, .black_level[2] = 0x86, .black_level[3] = 0x86, .black_level[4] = 0x88, .black_level[5] = 0x8a, .black_level[6] = 0x8c, .black_level[7] = 0x92, .black_level[8] = 0x95, .black_level[9] = 0x98, .black_level[10] = 0x98, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x37, .acc_ref[8] = 0x20, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xaa, .sub_saturation[2] = 0xaa, .sub_saturation[3] = 0xac, .sub_saturation[4] = 0xa8, .sub_saturation[5] = 0xa6, .sub_saturation[6] = 0x98, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x7e, .h_delay_a[2] = 0x7d, .h_delay_a[3] = 0x7c, .h_delay_a[4] = 0x5c, .h_delay_a[5] = 0x7d, .h_delay_a[6] = 0x7d, .h_delay_a[7] = 0x7d, .h_delay_a[8] = 0x7d, .h_delay_a[9] = 0x7d, .h_delay_a[10] = 0x7d, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x20, .h_delay_c[1] = 0x20, .h_delay_c[2] = 0x20, .h_delay_c[3] = 0x20, .h_delay_c[4] = 0x20, .h_delay_c[5] = 0x20, .h_delay_c[6] = 0x20, .h_delay_c[7] = 0x20, .h_delay_c[8] = 0x20, .h_delay_c[9] = 0x20, .h_delay_c[10] = 0x20, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, .clk_adc[6] = 0x05, .clk_adc[7] = 0x05, .clk_adc[8] = 0x05, .clk_adc[9] = 0x05, .clk_adc[10] = 0x05, + .clk_dec[0] = 0x04, .clk_dec[1] = 0x04, .clk_dec[2] = 0x04, .clk_dec[3] = 0x04, .clk_dec[4] = 0x04, .clk_dec[5] = 0x04, .clk_dec[6] = 0x04, .clk_dec[7] = 0x04, .clk_dec[8] = 0x04, .clk_dec[9] = 0x04, .clk_dec[10] = 0x04, + }, + /* timing_b */ + { +/*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, .h_scaler1[6] = 0x01, .h_scaler1[7] = 0x01, .h_scaler1[8] = 0x01, .h_scaler1[9] = 0x01, .h_scaler1[10] = 0x01, +/*B9 0x97*/ .h_scaler2[0] = 0x59, .h_scaler2[1] = 0x59, .h_scaler2[2] = 0x59, .h_scaler2[3] = 0x59, .h_scaler2[4] = 0x59, .h_scaler2[5] = 0x59, .h_scaler2[6] = 0x59, .h_scaler2[7] = 0x59, .h_scaler2[8] = 0x59, .h_scaler2[9] = 0x59, .h_scaler2[10] = 0x59, +/*B9 0x98*/ .h_scaler3[0] = 0xc0, .h_scaler3[1] = 0xc0, .h_scaler3[2] = 0xc0, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0xc0, .h_scaler3[5] = 0xc0, .h_scaler3[6] = 0xc0, .h_scaler3[7] = 0xc0, .h_scaler3[8] = 0xc0, .h_scaler3[9] = 0xc0, .h_scaler3[10] = 0xc0, +/*B9 0x99*/ .h_scaler4[0] = 0x01, .h_scaler4[1] = 0x01, .h_scaler4[2] = 0x01, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x01, .h_scaler4[5] = 0x01, .h_scaler4[6] = 0x01, .h_scaler4[7] = 0x01, .h_scaler4[8] = 0x01, .h_scaler4[9] = 0x01, .h_scaler4[10] = 0x01, +/*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, +/*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, +/*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, +/*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, +/*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + +/*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + +/*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, +/*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, +/*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + +/*B0 0x81*/ .format_set1[0] = 0x07, .format_set1[1] = 0x07, .format_set1[2] = 0x07, .format_set1[3] = 0x07, .format_set1[4] = 0x07, .format_set1[5] = 0x07, .format_set1[6] = 0x07, .format_set1[7] = 0x07, .format_set1[8] = 0x07, .format_set1[9] = 0x07, .format_set1[10] = 0x07, +/*B0 0x85*/ .format_set2[0] = 0x01, .format_set2[1] = 0x01, .format_set2[2] = 0x01, .format_set2[3] = 0x01, .format_set2[4] = 0x01, .format_set2[5] = 0x01, .format_set2[6] = 0x01, .format_set2[7] = 0x01, .format_set2[8] = 0x01, .format_set2[9] = 0x01, .format_set2[10] = 0x01, + +/*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, .v_delay[6] = 0x21, .v_delay[7] = 0x21, .v_delay[8] = 0x21, .v_delay[9] = 0x21, .v_delay[10] = 0x21, + }, + }, + [ TVI_HD_30P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x57, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x37, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x78, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x93, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x82, .contrast[1] = 0x86, .contrast[2] = 0x84, .contrast[3] = 0x81, .contrast[4] = 0x7f, .contrast[5] = 0x7e, .contrast[6] = 0x7a, .contrast[7] = 0x7a, .contrast[8] = 0x72, .contrast[9] = 0x6d, .contrast[10] = 0x6d, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, .h_peaking[6] = 0x00, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0xa2, .c_filter[4] = 0xa2, .c_filter[5] = 0xa2, .c_filter[6] = 0xb2, .c_filter[7] = 0xb2, .c_filter[8] = 0xb2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0xe0, .u_gain[1] = 0xe0, .u_gain[2] = 0xe0, .u_gain[3] = 0xe0, .u_gain[4] = 0xe0, .u_gain[5] = 0xe0, .u_gain[6] = 0xe0, .u_gain[7] = 0xe0, .u_gain[8] = 0xe0, .u_gain[9] = 0xe0, .u_gain[10] = 0xe0, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0xff, .u_offset[1] = 0xff, .u_offset[2] = 0xff, .u_offset[3] = 0xff, .u_offset[4] = 0xff, .u_offset[5] = 0xff, .u_offset[6] = 0xff, .u_offset[7] = 0xff, .u_offset[8] = 0xff, .u_offset[9] = 0xff, .u_offset[10] = 0xff, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x86, .black_level[1] = 0x88, .black_level[2] = 0x86, .black_level[3] = 0x86, .black_level[4] = 0x88, .black_level[5] = 0x8a, .black_level[6] = 0x8c, .black_level[7] = 0x92, .black_level[8] = 0x95, .black_level[9] = 0x98, .black_level[10] = 0x98, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x37, .acc_ref[8] = 0x20, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xaa, .sub_saturation[2] = 0xaa, .sub_saturation[3] = 0xac, .sub_saturation[4] = 0xa8, .sub_saturation[5] = 0xa6, .sub_saturation[6] = 0x98, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x20, .h_delay_a[1] = 0x1e, .h_delay_a[2] = 0x1d, .h_delay_a[3] = 0x1c, .h_delay_a[4] = 0x1c, .h_delay_a[5] = 0x1d, .h_delay_a[6] = 0x1d, .h_delay_a[7] = 0x1d, .h_delay_a[8] = 0x1d, .h_delay_a[9] = 0x1d, .h_delay_a[10] = 0x1d, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x10, .h_delay_c[1] = 0x10, .h_delay_c[2] = 0x10, .h_delay_c[3] = 0x10, .h_delay_c[4] = 0x10, .h_delay_c[5] = 0x10, .h_delay_c[6] = 0x10, .h_delay_c[7] = 0x10, .h_delay_c[8] = 0x10, .h_delay_c[9] = 0x10, .h_delay_c[10] = 0x10, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, .clk_adc[6] = 0x05, .clk_adc[7] = 0x05, .clk_adc[8] = 0x05, .clk_adc[9] = 0x05, .clk_adc[10] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, .clk_dec[6] = 0x44, .clk_dec[7] = 0x44, .clk_dec[8] = 0x44, .clk_dec[9] = 0x44, .clk_dec[10] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, .h_scaler1[6] = 0x01, .h_scaler1[7] = 0x01, .h_scaler1[8] = 0x01, .h_scaler1[9] = 0x01, .h_scaler1[10] = 0x01, + /*B9 0x97*/ .h_scaler2[0] = 0x59, .h_scaler2[1] = 0x59, .h_scaler2[2] = 0x59, .h_scaler2[3] = 0x59, .h_scaler2[4] = 0x59, .h_scaler2[5] = 0x59, .h_scaler2[6] = 0x59, .h_scaler2[7] = 0x59, .h_scaler2[8] = 0x59, .h_scaler2[9] = 0x59, .h_scaler2[10] = 0x59, + /*B9 0x98*/ .h_scaler3[0] = 0xff, .h_scaler3[1] = 0x30, .h_scaler3[2] = 0x30, .h_scaler3[3] = 0x30, .h_scaler3[4] = 0x30, .h_scaler3[5] = 0x30, .h_scaler3[6] = 0x30, .h_scaler3[7] = 0x30, .h_scaler3[8] = 0x30, .h_scaler3[9] = 0x30, .h_scaler3[10] = 0x30, + /*B9 0x99*/ .h_scaler4[0] = 0x001, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x06, .format_set1[1] = 0x06, .format_set1[2] = 0x06, .format_set1[3] = 0x06, .format_set1[4] = 0x06, .format_set1[5] = 0x06, .format_set1[6] = 0x06, .format_set1[7] = 0x06, .format_set1[8] = 0x06, .format_set1[9] = 0x06, .format_set1[10] = 0x06, + /*B0 0x85*/ .format_set2[0] = 0x01, .format_set2[1] = 0x01, .format_set2[2] = 0x01, .format_set2[3] = 0x01, .format_set2[4] = 0x01, .format_set2[5] = 0x01, .format_set2[6] = 0x01, .format_set2[7] = 0x01, .format_set2[8] = 0x01, .format_set2[9] = 0x01, .format_set2[10] = 0x01, + + /*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, .v_delay[6] = 0x21, .v_delay[7] = 0x21, .v_delay[8] = 0x21, .v_delay[9] = 0x21, .v_delay[10] = 0x21, + }, + }, + + [ TVI_HD_B_25P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x57, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x37, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x78, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x93, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x82, .contrast[1] = 0x86, .contrast[2] = 0x84, .contrast[3] = 0x81, .contrast[4] = 0x7f, .contrast[5] = 0x7e, .contrast[6] = 0x7a, .contrast[7] = 0x7a, .contrast[8] = 0x72, .contrast[9] = 0x6d, .contrast[10] = 0x6d, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, .h_peaking[6] = 0x00, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0xa2, .c_filter[4] = 0xa2, .c_filter[5] = 0xa2, .c_filter[6] = 0xb2, .c_filter[7] = 0xb2, .c_filter[8] = 0xb2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0xe0, .u_gain[1] = 0x00, .u_gain[2] = 0x00, .u_gain[3] = 0x00, .u_gain[4] = 0x00, .u_gain[5] = 0x00, .u_gain[6] = 0x00, .u_gain[7] = 0x00, .u_gain[8] = 0x00, .u_gain[9] = 0x00, .u_gain[10] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0xff, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, .u_offset[6] = 0x00, .u_offset[7] = 0x00, .u_offset[8] = 0x00, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x86, .black_level[1] = 0x88, .black_level[2] = 0x86, .black_level[3] = 0x86, .black_level[4] = 0x88, .black_level[5] = 0x8a, .black_level[6] = 0x8c, .black_level[7] = 0x92, .black_level[8] = 0x95, .black_level[9] = 0x98, .black_level[10] = 0x98, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x37, .acc_ref[8] = 0x20, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xaa, .sub_saturation[2] = 0xaa, .sub_saturation[3] = 0xac, .sub_saturation[4] = 0xa8, .sub_saturation[5] = 0xa6, .sub_saturation[6] = 0x98, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x82, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x7f, .h_delay_a[3] = 0x7e, .h_delay_a[4] = 0x7e, .h_delay_a[5] = 0x7f, .h_delay_a[6] = 0x7f, .h_delay_a[7] = 0x7f, .h_delay_a[8] = 0x7f, .h_delay_a[9] = 0x7f, .h_delay_a[10] = 0x7f, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, .h_delay_b[6] = 0x10, .h_delay_b[7] = 0x10, .h_delay_b[8] = 0x10, .h_delay_b[9] = 0x10, .h_delay_b[10] = 0x10, + .h_delay_c[0] = 0x01, .h_delay_c[1] = 0x01, .h_delay_c[2] = 0x01, .h_delay_c[3] = 0x01, .h_delay_c[4] = 0x01, .h_delay_c[5] = 0x01, .h_delay_c[6] = 0x01, .h_delay_c[7] = 0x01, .h_delay_c[8] = 0x01, .h_delay_c[9] = 0x01, .h_delay_c[10] = 0x01, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, .h_scaler1[6] = 0x01, .h_scaler1[7] = 0x01, .h_scaler1[8] = 0x01, .h_scaler1[9] = 0x01, .h_scaler1[10] = 0x01, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, .h_scaler2[6] = 0x00, .h_scaler2[7] = 0x00, .h_scaler2[8] = 0x00, .h_scaler2[9] = 0x00, .h_scaler2[10] = 0x59, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, .h_scaler3[6] = 0x00, .h_scaler3[7] = 0x00, .h_scaler3[8] = 0x00, .h_scaler3[9] = 0x00, .h_scaler3[10] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x07, .format_set1[1] = 0x07, .format_set1[2] = 0x07, .format_set1[3] = 0x07, .format_set1[4] = 0x07, .format_set1[5] = 0x07, .format_set1[6] = 0x07, .format_set1[7] = 0x07, .format_set1[8] = 0x07, .format_set1[9] = 0x07, .format_set1[10] = 0x07, + /*B0 0x85*/ .format_set2[0] = 0x03, .format_set2[1] = 0x03, .format_set2[2] = 0x03, .format_set2[3] = 0x03, .format_set2[4] = 0x03, .format_set2[5] = 0x03, .format_set2[6] = 0x03, .format_set2[7] = 0x03, .format_set2[8] = 0x03, .format_set2[9] = 0x03, .format_set2[10] = 0x03, + + /*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, .v_delay[6] = 0x20, .v_delay[7] = 0x20, .v_delay[8] = 0x20, .v_delay[9] = 0x20, .v_delay[10] = 0x20, + }, + }, + [ TVI_HD_B_30P ] = /* o */ + { +/* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x57, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x37, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x78, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x93, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x82, .contrast[1] = 0x86, .contrast[2] = 0x84, .contrast[3] = 0x81, .contrast[4] = 0x7f, .contrast[5] = 0x7e, .contrast[6] = 0x7a, .contrast[7] = 0x7a, .contrast[8] = 0x72, .contrast[9] = 0x6d, .contrast[10] = 0x6d, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, .h_peaking[6] = 0x00, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0xa2, .c_filter[4] = 0xa2, .c_filter[5] = 0xa2, .c_filter[6] = 0xb2, .c_filter[7] = 0xb2, .c_filter[8] = 0xb2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0xe0, .u_gain[1] = 0xe0, .u_gain[2] = 0xe0, .u_gain[3] = 0xe0, .u_gain[4] = 0xe0, .u_gain[5] = 0xe0, .u_gain[6] = 0xe0, .u_gain[7] = 0xe0, .u_gain[8] = 0xe0, .u_gain[9] = 0xe0, .u_gain[10] = 0xe0, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0xff, .u_offset[1] = 0xff, .u_offset[2] = 0xff, .u_offset[3] = 0xff, .u_offset[4] = 0xff, .u_offset[5] = 0xff, .u_offset[6] = 0xff, .u_offset[7] = 0xff, .u_offset[8] = 0xff, .u_offset[9] = 0xff, .u_offset[10] = 0xff, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x86, .black_level[1] = 0x88, .black_level[2] = 0x86, .black_level[3] = 0x86, .black_level[4] = 0x88, .black_level[5] = 0x8a, .black_level[6] = 0x8c, .black_level[7] = 0x92, .black_level[8] = 0x95, .black_level[9] = 0x98, .black_level[10] = 0x98, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x37, .acc_ref[8] = 0x20, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xaa, .sub_saturation[2] = 0xaa, .sub_saturation[3] = 0xac, .sub_saturation[4] = 0xa8, .sub_saturation[5] = 0xa6, .sub_saturation[6] = 0x98, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x7e, .h_delay_a[2] = 0x7d, .h_delay_a[3] = 0x7c, .h_delay_a[4] = 0x7c, .h_delay_a[5] = 0x7d, .h_delay_a[6] = 0x7d, .h_delay_a[7] = 0x7d, .h_delay_a[8] = 0x7d, .h_delay_a[9] = 0x7d, .h_delay_a[10] = 0x7d, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, .h_delay_b[6] = 0x10, .h_delay_b[7] = 0x10, .h_delay_b[8] = 0x10, .h_delay_b[9] = 0x10, .h_delay_b[10] = 0x10, + .h_delay_c[0] = 0x02, .h_delay_c[1] = 0x02, .h_delay_c[2] = 0x02, .h_delay_c[3] = 0x02, .h_delay_c[4] = 0x02, .h_delay_c[5] = 0x02, .h_delay_c[6] = 0x02, .h_delay_c[7] = 0x02, .h_delay_c[8] = 0x02, .h_delay_c[9] = 0x02, .h_delay_c[10] = 0x02, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, .h_scaler1[6] = 0x01, .h_scaler1[7] = 0x01, .h_scaler1[8] = 0x01, .h_scaler1[9] = 0x01, .h_scaler1[10] = 0x01, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, .h_scaler2[6] = 0x00, .h_scaler2[7] = 0x00, .h_scaler2[8] = 0x00, .h_scaler2[9] = 0x00, .h_scaler2[10] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, .h_scaler3[6] = 0x00, .h_scaler3[7] = 0x00, .h_scaler3[8] = 0x00, .h_scaler3[9] = 0x00, .h_scaler3[10] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x06, .format_set1[1] = 0x06, .format_set1[2] = 0x06, .format_set1[3] = 0x06, .format_set1[4] = 0x06, .format_set1[5] = 0x06, .format_set1[6] = 0x06, .format_set1[7] = 0x06, .format_set1[8] = 0x06, .format_set1[9] = 0x06, .format_set1[10] = 0x06, + /*B0 0x85*/ .format_set2[0] = 0x03, .format_set2[1] = 0x03, .format_set2[2] = 0x03, .format_set2[3] = 0x03, .format_set2[4] = 0x03, .format_set2[5] = 0x03, .format_set2[6] = 0x03, .format_set2[7] = 0x03, .format_set2[8] = 0x03, .format_set2[9] = 0x03, .format_set2[10] = 0x03, + + /*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, .v_delay[6] = 0x20, .v_delay[7] = 0x20, .v_delay[8] = 0x20, .v_delay[9] = 0x20, .v_delay[10] = 0x20, + }, + }, + + [ TVI_HD_25P_EX ] = /* o */ + { +/* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x57, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x37, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x78, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x93, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x82, .contrast[1] = 0x86, .contrast[2] = 0x84, .contrast[3] = 0x81, .contrast[4] = 0x7f, .contrast[5] = 0x7e, .contrast[6] = 0x7a, .contrast[7] = 0x7a, .contrast[8] = 0x72, .contrast[9] = 0x6d, .contrast[10] = 0x6d, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, .h_peaking[6] = 0x00, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0xa2, .c_filter[4] = 0xa2, .c_filter[5] = 0xa2, .c_filter[6] = 0xb2, .c_filter[7] = 0xb2, .c_filter[8] = 0xb2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0xe0, .u_gain[1] = 0xe0, .u_gain[2] = 0xe0, .u_gain[3] = 0xe0, .u_gain[4] = 0xe0, .u_gain[5] = 0xe0, .u_gain[6] = 0xe0, .u_gain[7] = 0xe0, .u_gain[8] = 0xe0, .u_gain[9] = 0x00, .u_gain[10] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0xff, .u_offset[1] = 0xff, .u_offset[2] = 0xff, .u_offset[3] = 0xff, .u_offset[4] = 0xff, .u_offset[5] = 0xff, .u_offset[6] = 0xff, .u_offset[7] = 0xff, .u_offset[8] = 0xff, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x86, .black_level[1] = 0x88, .black_level[2] = 0x86, .black_level[3] = 0x86, .black_level[4] = 0x88, .black_level[5] = 0x8a, .black_level[6] = 0x8c, .black_level[7] = 0x92, .black_level[8] = 0x95, .black_level[9] = 0x98, .black_level[10] = 0x98, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x37, .acc_ref[8] = 0x20, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xaa, .sub_saturation[2] = 0xaa, .sub_saturation[3] = 0xac, .sub_saturation[4] = 0xa8, .sub_saturation[5] = 0xa6, .sub_saturation[6] = 0x98, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x60, .h_delay_a[1] = 0x5e, .h_delay_a[2] = 0x5d, .h_delay_a[3] = 0x5c, .h_delay_a[4] = 0x5c, .h_delay_a[5] = 0x5d, .h_delay_a[6] = 0x5d, .h_delay_a[7] = 0x5d, .h_delay_a[8] = 0x5d, .h_delay_a[9] = 0x5d, .h_delay_a[10] = 0x5d, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, .h_delay_c[6] = 0x00, .h_delay_c[7] = 0x00, .h_delay_c[8] = 0x00, .h_delay_c[9] = 0x00, .h_delay_c[10] = 0x00, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, .clk_adc[6] = 0x05, .clk_adc[7] = 0x05, .clk_adc[8] = 0x05, .clk_adc[9] = 0x05, .clk_adc[10] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, .clk_dec[6] = 0x44, .clk_dec[7] = 0x44, .clk_dec[8] = 0x44, .clk_dec[9] = 0x44, .clk_dec[10] = 0x44, + }, + /* timing_b */ + { +/*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, .h_scaler1[6] = 0x01, .h_scaler1[7] = 0x01, .h_scaler1[8] = 0x01, .h_scaler1[9] = 0x01, .h_scaler1[10] = 0x01, +/*B9 0x97*/ .h_scaler2[0] = 0x59, .h_scaler2[1] = 0x59, .h_scaler2[2] = 0x59, .h_scaler2[3] = 0x59, .h_scaler2[4] = 0x59, .h_scaler2[5] = 0x59, .h_scaler2[6] = 0x59, .h_scaler2[7] = 0x59, .h_scaler2[8] = 0x59, .h_scaler2[9] = 0x59, .h_scaler2[10] = 0x59, +/*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, .h_scaler3[6] = 0x00, .h_scaler3[7] = 0x00, .h_scaler3[8] = 0x00, .h_scaler3[9] = 0x00, .h_scaler3[10] = 0x00, +/*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, +/*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, +/*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, +/*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, +/*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, +/*B9 0x9e*/ .h_scaler9[0] = 0x80, .h_scaler9[1] = 0x80, .h_scaler9[2] = 0x80, .h_scaler9[3] = 0x80, .h_scaler9[4] = 0x80, .h_scaler9[5] = 0x80, .h_scaler9[6] = 0x80, .h_scaler9[7] = 0x80, .h_scaler9[8] = 0x80, .h_scaler9[9] = 0x80, .h_scaler9[10] = 0x80, + + +/*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + +/*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, +/*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, +/*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + +/*B0 0x81*/ .format_set1[0] = 0x0b, .format_set1[1] = 0x0b, .format_set1[2] = 0x0b, .format_set1[3] = 0x0b, .format_set1[4] = 0x0b, .format_set1[5] = 0x0b, .format_set1[6] = 0x0b, .format_set1[7] = 0x0b, .format_set1[8] = 0x0b, .format_set1[9] = 0x0b, .format_set1[10] = 0x0b, +/*B0 0x85*/ .format_set2[0] = 0x01, .format_set2[1] = 0x01, .format_set2[2] = 0x01, .format_set2[3] = 0x01, .format_set2[4] = 0x01, .format_set2[5] = 0x01, .format_set2[6] = 0x01, .format_set2[7] = 0x01, .format_set2[8] = 0x01, .format_set2[9] = 0x01, .format_set2[10] = 0x01, + +/*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, .v_delay[6] = 0x20, .v_delay[7] = 0x20, .v_delay[8] = 0x20, .v_delay[9] = 0x20, .v_delay[10] = 0x20, + }, + }, + [ TVI_HD_30P_EX ] = /* o */ + { +/* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x57, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x37, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x78, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x93, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x82, .contrast[1] = 0x86, .contrast[2] = 0x84, .contrast[3] = 0x81, .contrast[4] = 0x7f, .contrast[5] = 0x7e, .contrast[6] = 0x7a, .contrast[7] = 0x7a, .contrast[8] = 0x72, .contrast[9] = 0x6d, .contrast[10] = 0x6d, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, .h_peaking[6] = 0x00, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0xa2, .c_filter[4] = 0xa2, .c_filter[5] = 0xa2, .c_filter[6] = 0xb2, .c_filter[7] = 0xb2, .c_filter[8] = 0xb2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0xe0, .u_gain[1] = 0xe0, .u_gain[2] = 0xe0, .u_gain[3] = 0xe0, .u_gain[4] = 0xe0, .u_gain[5] = 0xe0, .u_gain[6] = 0xe0, .u_gain[7] = 0xe0, .u_gain[8] = 0xe0, .u_gain[9] = 0xe0, .u_gain[10] = 0xe0, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0xff, .u_offset[1] = 0xff, .u_offset[2] = 0xff, .u_offset[3] = 0xff, .u_offset[4] = 0xff, .u_offset[5] = 0xff, .u_offset[6] = 0xff, .u_offset[7] = 0xff, .u_offset[8] = 0xff, .u_offset[9] = 0xff, .u_offset[10] = 0xff, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x86, .black_level[1] = 0x88, .black_level[2] = 0x86, .black_level[3] = 0x86, .black_level[4] = 0x88, .black_level[5] = 0x8a, .black_level[6] = 0x8c, .black_level[7] = 0x92, .black_level[8] = 0x95, .black_level[9] = 0x98, .black_level[10] = 0x98, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x37, .acc_ref[8] = 0x20, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xaa, .sub_saturation[2] = 0xaa, .sub_saturation[3] = 0xac, .sub_saturation[4] = 0xa8, .sub_saturation[5] = 0xa6, .sub_saturation[6] = 0x98, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x7e, .h_delay_a[2] = 0x7d, .h_delay_a[3] = 0x7c, .h_delay_a[4] = 0x7c, .h_delay_a[5] = 0x7d, .h_delay_a[6] = 0x7d, .h_delay_a[7] = 0x7d, .h_delay_a[8] = 0x7d, .h_delay_a[9] = 0x7d, .h_delay_a[10] = 0x7d, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, .h_delay_c[6] = 0x00, .h_delay_c[7] = 0x00, .h_delay_c[8] = 0x00, .h_delay_c[9] = 0x00, .h_delay_c[10] = 0x00, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, .clk_adc[6] = 0x05, .clk_adc[7] = 0x05, .clk_adc[8] = 0x05, .clk_adc[9] = 0x05, .clk_adc[10] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, .clk_dec[6] = 0x44, .clk_dec[7] = 0x44, .clk_dec[8] = 0x44, .clk_dec[9] = 0x44, .clk_dec[10] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, .h_scaler1[6] = 0x01, .h_scaler1[7] = 0x01, .h_scaler1[8] = 0x01, .h_scaler1[9] = 0x01, .h_scaler1[10] = 0x01, + /*B9 0x97*/ .h_scaler2[0] = 0x59, .h_scaler2[1] = 0x59, .h_scaler2[2] = 0x59, .h_scaler2[3] = 0x59, .h_scaler2[4] = 0x59, .h_scaler2[5] = 0x59, .h_scaler2[6] = 0x59, .h_scaler2[7] = 0x59, .h_scaler2[8] = 0x59, .h_scaler2[9] = 0x59, .h_scaler2[10] = 0x59, + /*B9 0x98*/ .h_scaler3[0] = 0x30, .h_scaler3[1] = 0x30, .h_scaler3[2] = 0x30, .h_scaler3[3] = 0x30, .h_scaler3[4] = 0x30, .h_scaler3[5] = 0x30, .h_scaler3[6] = 0x30, .h_scaler3[7] = 0x30, .h_scaler3[8] = 0x30, .h_scaler3[9] = 0x30, .h_scaler3[10] = 0x30, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x80, .h_scaler9[1] = 0x80, .h_scaler9[2] = 0x80, .h_scaler9[3] = 0x80, .h_scaler9[4] = 0x80, .h_scaler9[5] = 0x80, .h_scaler9[6] = 0x80, .h_scaler9[7] = 0x80, .h_scaler9[8] = 0x80, .h_scaler9[9] = 0x80, .h_scaler9[10] = 0x80, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0A, .format_set1[1] = 0x0A, .format_set1[2] = 0x0A, .format_set1[3] = 0x0A, .format_set1[4] = 0x0A, .format_set1[5] = 0x0A, .format_set1[6] = 0x0A, .format_set1[7] = 0x0A, .format_set1[8] = 0x0A, .format_set1[9] = 0x0A, .format_set1[10] = 0x0A, + /*B0 0x85*/ .format_set2[0] = 0x01, .format_set2[1] = 0x01, .format_set2[2] = 0x01, .format_set2[3] = 0x01, .format_set2[4] = 0x01, .format_set2[5] = 0x01, .format_set2[6] = 0x01, .format_set2[7] = 0x01, .format_set2[8] = 0x01, .format_set2[9] = 0x01, .format_set2[10] = 0x01, + + /*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, .v_delay[6] = 0x20, .v_delay[7] = 0x20, .v_delay[8] = 0x20, .v_delay[9] = 0x20, .v_delay[10] = 0x20, + }, + }, + + [ TVI_HD_B_25P_EX ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x57, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x37, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x78, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x93, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x82, .contrast[1] = 0x86, .contrast[2] = 0x84, .contrast[3] = 0x81, .contrast[4] = 0x7f, .contrast[5] = 0x7e, .contrast[6] = 0x7a, .contrast[7] = 0x7a, .contrast[8] = 0x72, .contrast[9] = 0x6d, .contrast[10] = 0x6d, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, .h_peaking[6] = 0x00, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0xa2, .c_filter[4] = 0xa2, .c_filter[5] = 0xa2, .c_filter[6] = 0xb2, .c_filter[7] = 0xb2, .c_filter[8] = 0xb2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0xe0, .u_gain[1] = 0x00, .u_gain[2] = 0x00, .u_gain[3] = 0x00, .u_gain[4] = 0x00, .u_gain[5] = 0x00, .u_gain[6] = 0x00, .u_gain[7] = 0x00, .u_gain[8] = 0x00, .u_gain[9] = 0x00, .u_gain[10] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0xff, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, .u_offset[6] = 0x00, .u_offset[7] = 0x00, .u_offset[8] = 0x00, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x86, .black_level[1] = 0x88, .black_level[2] = 0x86, .black_level[3] = 0x86, .black_level[4] = 0x88, .black_level[5] = 0x8a, .black_level[6] = 0x8c, .black_level[7] = 0x92, .black_level[8] = 0x95, .black_level[9] = 0x98, .black_level[10] = 0x98, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x37, .acc_ref[8] = 0x20, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xaa, .sub_saturation[2] = 0xaa, .sub_saturation[3] = 0xac, .sub_saturation[4] = 0xa8, .sub_saturation[5] = 0xa6, .sub_saturation[6] = 0x98, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x82, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x7f, .h_delay_a[3] = 0x7e, .h_delay_a[4] = 0x7e, .h_delay_a[5] = 0x7f, .h_delay_a[6] = 0x7f, .h_delay_a[7] = 0x7f, .h_delay_a[8] = 0x7f, .h_delay_a[9] = 0x7f, .h_delay_a[10] = 0x7f, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, .h_delay_b[6] = 0x10, .h_delay_b[7] = 0x10, .h_delay_b[8] = 0x10, .h_delay_b[9] = 0x10, .h_delay_b[10] = 0x10, + .h_delay_c[0] = 0x01, .h_delay_c[1] = 0x01, .h_delay_c[2] = 0x01, .h_delay_c[3] = 0x01, .h_delay_c[4] = 0x01, .h_delay_c[5] = 0x01, .h_delay_c[6] = 0x01, .h_delay_c[7] = 0x01, .h_delay_c[8] = 0x01, .h_delay_c[9] = 0x01, .h_delay_c[10] = 0x01, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, .h_scaler1[6] = 0x01, .h_scaler1[7] = 0x01, .h_scaler1[8] = 0x01, .h_scaler1[9] = 0x01, .h_scaler1[10] = 0x01, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, .h_scaler2[6] = 0x00, .h_scaler2[7] = 0x00, .h_scaler2[8] = 0x00, .h_scaler2[9] = 0x00, .h_scaler2[10] = 0x59, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, .h_scaler3[6] = 0x00, .h_scaler3[7] = 0x00, .h_scaler3[8] = 0x00, .h_scaler3[9] = 0x00, .h_scaler3[10] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + +/*B0 0x81*/ .format_set1[0] = 0x0b, .format_set1[1] = 0x0b, .format_set1[2] = 0x0b, .format_set1[3] = 0x0b, .format_set1[4] = 0x0b, .format_set1[5] = 0x0b, .format_set1[6] = 0x0b, .format_set1[7] = 0x0b, .format_set1[8] = 0x0b, .format_set1[9] = 0x0b, .format_set1[10] = 0x0b, +/*B0 0x85*/ .format_set2[0] = 0x03, .format_set2[1] = 0x03, .format_set2[2] = 0x03, .format_set2[3] = 0x03, .format_set2[4] = 0x03, .format_set2[5] = 0x03, .format_set2[6] = 0x03, .format_set2[7] = 0x03, .format_set2[8] = 0x03, .format_set2[9] = 0x03, .format_set2[10] = 0x03, + +/*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, .v_delay[6] = 0x20, .v_delay[7] = 0x20, .v_delay[8] = 0x20, .v_delay[9] = 0x20, .v_delay[10] = 0x20, + }, + }, + [ TVI_HD_B_30P_EX ] = /* o */ + { +/* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x57, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x37, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x78, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x93, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x82, .contrast[1] = 0x86, .contrast[2] = 0x84, .contrast[3] = 0x81, .contrast[4] = 0x7f, .contrast[5] = 0x7e, .contrast[6] = 0x7a, .contrast[7] = 0x7a, .contrast[8] = 0x72, .contrast[9] = 0x6d, .contrast[10] = 0x6d, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, .h_peaking[6] = 0x00, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0xa2, .c_filter[4] = 0xa2, .c_filter[5] = 0xa2, .c_filter[6] = 0xb2, .c_filter[7] = 0xb2, .c_filter[8] = 0xb2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0xe0, .u_gain[1] = 0xe0, .u_gain[2] = 0xe0, .u_gain[3] = 0xe0, .u_gain[4] = 0xe0, .u_gain[5] = 0xe0, .u_gain[6] = 0xe0, .u_gain[7] = 0xe0, .u_gain[8] = 0xe0, .u_gain[9] = 0xe0, .u_gain[10] = 0xe0, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0xff, .u_offset[1] = 0xff, .u_offset[2] = 0xff, .u_offset[3] = 0xff, .u_offset[4] = 0xff, .u_offset[5] = 0xff, .u_offset[6] = 0xff, .u_offset[7] = 0xff, .u_offset[8] = 0xff, .u_offset[9] = 0xff, .u_offset[10] = 0xff, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x86, .black_level[1] = 0x88, .black_level[2] = 0x86, .black_level[3] = 0x86, .black_level[4] = 0x88, .black_level[5] = 0x8a, .black_level[6] = 0x8c, .black_level[7] = 0x92, .black_level[8] = 0x95, .black_level[9] = 0x98, .black_level[10] = 0x98, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x37, .acc_ref[8] = 0x20, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xaa, .sub_saturation[2] = 0xaa, .sub_saturation[3] = 0xac, .sub_saturation[4] = 0xa8, .sub_saturation[5] = 0xa6, .sub_saturation[6] = 0x98, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x7e, .h_delay_a[2] = 0x7d, .h_delay_a[3] = 0x7c, .h_delay_a[4] = 0x7c, .h_delay_a[5] = 0x7d, .h_delay_a[6] = 0x7d, .h_delay_a[7] = 0x7d, .h_delay_a[8] = 0x7d, .h_delay_a[9] = 0x7d, .h_delay_a[10] = 0x7d, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, .h_delay_b[6] = 0x10, .h_delay_b[7] = 0x10, .h_delay_b[8] = 0x10, .h_delay_b[9] = 0x10, .h_delay_b[10] = 0x10, + .h_delay_c[0] = 0x02, .h_delay_c[1] = 0x02, .h_delay_c[2] = 0x02, .h_delay_c[3] = 0x02, .h_delay_c[4] = 0x02, .h_delay_c[5] = 0x02, .h_delay_c[6] = 0x02, .h_delay_c[7] = 0x02, .h_delay_c[8] = 0x02, .h_delay_c[9] = 0x02, .h_delay_c[10] = 0x02, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, .h_scaler1[6] = 0x01, .h_scaler1[7] = 0x01, .h_scaler1[8] = 0x01, .h_scaler1[9] = 0x01, .h_scaler1[10] = 0x01, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, .h_scaler2[6] = 0x00, .h_scaler2[7] = 0x00, .h_scaler2[8] = 0x00, .h_scaler2[9] = 0x00, .h_scaler2[10] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, .h_scaler3[6] = 0x00, .h_scaler3[7] = 0x00, .h_scaler3[8] = 0x00, .h_scaler3[9] = 0x00, .h_scaler3[10] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0A, .format_set1[1] = 0x0A, .format_set1[2] = 0x0A, .format_set1[3] = 0x0A, .format_set1[4] = 0x0A, .format_set1[5] = 0x0A, .format_set1[6] = 0x0A, .format_set1[7] = 0x0A, .format_set1[8] = 0x0A, .format_set1[9] = 0x0A, .format_set1[10] = 0x0A, + /*B0 0x85*/ .format_set2[0] = 0x03, .format_set2[1] = 0x03, .format_set2[2] = 0x03, .format_set2[3] = 0x03, .format_set2[4] = 0x03, .format_set2[5] = 0x03, .format_set2[6] = 0x03, .format_set2[7] = 0x03, .format_set2[8] = 0x03, .format_set2[9] = 0x03, .format_set2[10] = 0x03, + + /*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, .v_delay[6] = 0x20, .v_delay[7] = 0x20, .v_delay[8] = 0x20, .v_delay[9] = 0x20, .v_delay[10] = 0x20, + }, + }, + + [ AHD20_SD_H960_2EX_Btype_NT ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, // BankA 0x31 + .eq_gain_sel[0] = 0x78, // BankA 0x32 + .deq_a_on[0] = 0x00, // BankA 0x33 + .deq_a_sel[0] = 0x00, // BankA 0x34 + .deq_b_sel[0] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x90, + .h_peaking[0] = 0x08, + .c_filter[0] = 0x82, + + .hue[0] = 0x00, + .u_gain[0] = 0x00, + .v_gain[0] = 0x00, + .u_offset[0] = 0x00, + .v_offset[0] = 0x00, + + .black_level[0] = 0x90, + .acc_ref[0] = 0x57, + .cti_delay[0] = 0x80, + .sub_saturation[0] = 0xc0, + + .burst_dec_a[0] = 0x2a, + .burst_dec_b[0] = 0x00, + .burst_dec_c[0] = 0x30, + + .c_option[0] = 0x80, + + .y_filter_b[0] = 0x10, + .y_filter_b_sel[0] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0xC0, + .h_delay_b[0] = 0x00, + .h_delay_c[0] = 0x00, + .y_delay[0] = 0x18, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, + .clk_dec[0] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x10, + /*B9 0x97*/ .h_scaler2[0] = 0x10, + /*B9 0x98*/ .h_scaler3[0] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x60, + + /*B5 0x90*/ .comb_mode[0] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, + .fsc_lock_speed[0] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0xe0, + /*B0 0x85*/ .format_set2[0] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0xc0, + }, + }, + + [ AHD20_SD_H960_2EX_Btype_PAL ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, // BankA 0x31 + .eq_gain_sel[0] = 0x78, // BankA 0x32 + .deq_a_on[0] = 0x00, // BankA 0x33 + .deq_a_sel[0] = 0x00, // BankA 0x34 + .deq_b_sel[0] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x90, + .h_peaking[0] = 0x08, + .c_filter[0] = 0x82, + + .hue[0] = 0x00, + .u_gain[0] = 0x00, + .v_gain[0] = 0x00, + .u_offset[0] = 0x00, + .v_offset[0] = 0x00, + + .black_level[0] = 0x90, + .acc_ref[0] = 0x57, + .cti_delay[0] = 0x80, + .sub_saturation[0] = 0xc0, + + .burst_dec_a[0] = 0x2a, + .burst_dec_b[0] = 0x00, + .burst_dec_c[0] = 0x30, + + .c_option[0] = 0x80, + + .y_filter_b[0] = 0x10, + .y_filter_b_sel[0] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0xe0, + .h_delay_b[0] = 0x00, + .h_delay_c[0] = 0x00, + .y_delay[0] = 0x18, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, + .clk_dec[0] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x10, + /*B9 0x97*/ .h_scaler2[0] = 0x10, + /*B9 0x98*/ .h_scaler3[0] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x60, + + /*B5 0x90*/ .comb_mode[0] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, + .fsc_lock_speed[0] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0xf0, + /*B0 0x85*/ .format_set2[0] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x80, + }, + }, + + [ AHD20_SD_SH720_NT ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x78, // BankA 0x31 + .eq_gain_sel[0] = 0x78, // BankA 0x32 + .deq_a_on[0] = 0x00, // BankA 0x33 + .deq_a_sel[0] = 0x00, // BankA 0x34 + .deq_b_sel[0] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, + .h_peaking[0] = 0x08, + .c_filter[0] = 0x82, + + .hue[0] = 0x00, + .u_gain[0] = 0x00, + .v_gain[0] = 0x00, + .u_offset[0] = 0x00, + .v_offset[0] = 0x00, + + .black_level[0] = 0x84, + .acc_ref[0] = 0x57, + .cti_delay[0] = 0x80, + .sub_saturation[0] = 0xa8, + + .burst_dec_a[0] = 0x2a, + .burst_dec_b[0] = 0x00, + .burst_dec_c[0] = 0x30, + + .c_option[0] = 0x80, + + .y_filter_b[0] = 0x10, + .y_filter_b_sel[0] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0xc4, + .h_delay_b[0] = 0x10, + .h_delay_c[0] = 0x2f, + .y_delay[0] = 0x27, + + }, + /* clk */ + { + .clk_adc[0] = 0x06, + .clk_dec[0] = 0xA6, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x10, + /*B9 0x97*/ .h_scaler2[0] = 0x10, + /*B9 0x98*/ .h_scaler3[0] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x60, + + /*B5 0x90*/ .comb_mode[0] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, + .fsc_lock_speed[0] = 0xcc, + + /*B0 0x81*/ .format_set1[0] = 0x60, + /*B0 0x85*/ .format_set2[0] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0xc0, + }, + }, + + [ AHD20_SD_SH720_PAL ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x78, // BankA 0x31 + .eq_gain_sel[0] = 0x78, // BankA 0x32 + .deq_a_on[0] = 0x00, // BankA 0x33 + .deq_a_sel[0] = 0x00, // BankA 0x34 + .deq_b_sel[0] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, + .h_peaking[0] = 0x08, + .c_filter[0] = 0x82, + + .hue[0] = 0x00, + .u_gain[0] = 0x00, + .v_gain[0] = 0x00, + .u_offset[0] = 0x00, + .v_offset[0] = 0x00, + + .black_level[0] = 0x84, + .acc_ref[0] = 0x57, + .cti_delay[0] = 0x80, + .sub_saturation[0] = 0xa8, + + .burst_dec_a[0] = 0x2a, + .burst_dec_b[0] = 0x00, + .burst_dec_c[0] = 0x30, + + .c_option[0] = 0x80, + + .y_filter_b[0] = 0x10, + .y_filter_b_sel[0] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0xb0, + .h_delay_b[0] = 0x10, + .h_delay_c[0] = 0x2f, + .y_delay[0] = 0x18, + + }, + /* clk */ + { + .clk_adc[0] = 0x06, + .clk_dec[0] = 0xA6, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x10, + /*B9 0x97*/ .h_scaler2[0] = 0x10, + /*B9 0x98*/ .h_scaler3[0] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x60, + + /*B5 0x90*/ .comb_mode[0] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, + .fsc_lock_speed[0] = 0xcc, + + /*B0 0x81*/ .format_set1[0] = 0x70, + /*B0 0x85*/ .format_set2[0] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x80, + }, + }, + + [ AHD20_SD_H960_NT ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x78, // BankA 0x31 + .eq_gain_sel[0] = 0x78, // BankA 0x32 + .deq_a_on[0] = 0x00, // BankA 0x33 + .deq_a_sel[0] = 0x00, // BankA 0x34 + .deq_b_sel[0] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, + .h_peaking[0] = 0x08, + .c_filter[0] = 0x82, + + .hue[0] = 0x00, + .u_gain[0] = 0x00, + .v_gain[0] = 0x00, + .u_offset[0] = 0x00, + .v_offset[0] = 0x00, + + .black_level[0] = 0x84, + .acc_ref[0] = 0x57, + .cti_delay[0] = 0x80, + .sub_saturation[0] = 0xa8, + + .burst_dec_a[0] = 0x2a, + .burst_dec_b[0] = 0x00, + .burst_dec_c[0] = 0x30, + + .c_option[0] = 0x80, + + .y_filter_b[0] = 0x10, + .y_filter_b_sel[0] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, + .h_delay_b[0] = 0x00, + .h_delay_c[0] = 0x00, + .y_delay[0] = 0x27, + + }, + /* clk */ + { + .clk_adc[0] = 0x06, + .clk_dec[0] = 0xA6, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x10, + /*B9 0x97*/ .h_scaler2[0] = 0x10, + /*B9 0x98*/ .h_scaler3[0] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x60, + + /*B5 0x90*/ .comb_mode[0] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, + .fsc_lock_speed[0] = 0xcc, + + /*B0 0x81*/ .format_set1[0] = 0x00, + /*B0 0x85*/ .format_set2[0] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0xc0, + }, + }, + + [ AHD20_SD_H960_PAL ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x78, // BankA 0x31 + .eq_gain_sel[0] = 0x78, // BankA 0x32 + .deq_a_on[0] = 0x00, // BankA 0x33 + .deq_a_sel[0] = 0x00, // BankA 0x34 + .deq_b_sel[0] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, + .h_peaking[0] = 0x08, + .c_filter[0] = 0x82, + + .hue[0] = 0x00, + .u_gain[0] = 0x00, + .v_gain[0] = 0x00, + .u_offset[0] = 0x00, + .v_offset[0] = 0x00, + + .black_level[0] = 0x84, + .acc_ref[0] = 0x57, + .cti_delay[0] = 0x80, + .sub_saturation[0] = 0xa8, + + .burst_dec_a[0] = 0x2a, + .burst_dec_b[0] = 0x00, + .burst_dec_c[0] = 0x30, + + .c_option[0] = 0x80, + + .y_filter_b[0] = 0x10, + .y_filter_b_sel[0] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, + .h_delay_b[0] = 0x10, + .h_delay_c[0] = 0x03, + .y_delay[0] = 0x18, + + }, + /* clk */ + { + .clk_adc[0] = 0x06, + .clk_dec[0] = 0xA6, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x10, + /*B9 0x97*/ .h_scaler2[0] = 0x10, + /*B9 0x98*/ .h_scaler3[0] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x60, + + /*B5 0x90*/ .comb_mode[0] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, + .fsc_lock_speed[0] = 0xcc, + + /*B0 0x81*/ .format_set1[0] = 0x10, + /*B0 0x85*/ .format_set2[0] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x80, + }, + }, + + [ AHD20_SD_H960_EX_NT ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x78, // BankA 0x31 + .eq_gain_sel[0] = 0x78, // BankA 0x32 + .deq_a_on[0] = 0x00, // BankA 0x33 + .deq_a_sel[0] = 0x00, // BankA 0x34 + .deq_b_sel[0] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, + .h_peaking[0] = 0x08, + .c_filter[0] = 0x82, + + .hue[0] = 0x00, + .u_gain[0] = 0x00, + .v_gain[0] = 0x00, + .u_offset[0] = 0x00, + .v_offset[0] = 0x00, + + .black_level[0] = 0x84, + .acc_ref[0] = 0x57, + .cti_delay[0] = 0x80, + .sub_saturation[0] = 0xa8, + + .burst_dec_a[0] = 0x2a, + .burst_dec_b[0] = 0x00, + .burst_dec_c[0] = 0x30, + + .c_option[0] = 0x80, + + .y_filter_b[0] = 0x10, + .y_filter_b_sel[0] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x7B, + .h_delay_b[0] = 0x10, + .h_delay_c[0] = 0x01, + .y_delay[0] = 0x27, + + }, + /* clk */ + { + .clk_adc[0] = 0x00, + .clk_dec[0] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x10, + /*B9 0x97*/ .h_scaler2[0] = 0x10, + /*B9 0x98*/ .h_scaler3[0] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x60, + + /*B5 0x90*/ .comb_mode[0] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, + .fsc_lock_speed[0] = 0xcc, + + /*B0 0x81*/ .format_set1[0] = 0xa0, + /*B0 0x85*/ .format_set2[0] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0xc0, + }, + }, + + [ AHD20_SD_H960_EX_PAL ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x78, // BankA 0x31 + .eq_gain_sel[0] = 0x78, // BankA 0x32 + .deq_a_on[0] = 0x00, // BankA 0x33 + .deq_a_sel[0] = 0x00, // BankA 0x34 + .deq_b_sel[0] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, + .h_peaking[0] = 0x08, + .c_filter[0] = 0x82, + + .hue[0] = 0x00, + .u_gain[0] = 0x00, + .v_gain[0] = 0x00, + .u_offset[0] = 0x00, + .v_offset[0] = 0x00, + + .black_level[0] = 0x84, + .acc_ref[0] = 0x57, + .cti_delay[0] = 0x80, + .sub_saturation[0] = 0xa8, + + .burst_dec_a[0] = 0x2a, + .burst_dec_b[0] = 0x00, + .burst_dec_c[0] = 0x30, + + .c_option[0] = 0x80, + + .y_filter_b[0] = 0x10, + .y_filter_b_sel[0] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, + .h_delay_b[0] = 0x10, + .h_delay_c[0] = 0x07, + .y_delay[0] = 0x18, + + }, + /* clk */ + { + .clk_adc[0] = 0x00, + .clk_dec[0] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x10, + /*B9 0x97*/ .h_scaler2[0] = 0x10, + /*B9 0x98*/ .h_scaler3[0] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x60, + + /*B5 0x90*/ .comb_mode[0] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, + .fsc_lock_speed[0] = 0xcc, + + /*B0 0x81*/ .format_set1[0] = 0xb0, + /*B0 0x85*/ .format_set2[0] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x80, + }, + }, + + [ AHD20_1080P_50P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x86, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x04, .u_gain[3] = 0x10, .u_gain[4] = 0x10, .u_gain[5] = 0x18, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0x0e, .v_gain[4] = 0x0e, .v_gain[5] = 0x14, + .u_offset[0] = 0xfe, .u_offset[1] = 0xfe, .u_offset[2] = 0xfe, .u_offset[3] = 0xfe, .u_offset[4] = 0xfe, .u_offset[5] = 0xfe, + .v_offset[0] = 0xfb, .v_offset[1] = 0xfb, .v_offset[2] = 0xfb, .v_offset[3] = 0xfb, .v_offset[4] = 0xfb, .v_offset[5] = 0xfb, + + .black_level[0] = 0x80, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x83, .black_level[4] = 0x83, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x86, .h_delay_a[1] = 0x84, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x03, .h_delay_c[1] = 0x03, .h_delay_c[2] = 0x03, .h_delay_c[3] = 0x03, .h_delay_c[4] = 0x03, .h_delay_c[5] = 0x03, + .y_delay[0] = 0x05, .y_delay[1] = 0x03, .y_delay[2] = 0x03, .y_delay[3] = 0x03, .y_delay[4] = 0x03, .y_delay[5] = 0x03, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x03, .format_set1[1] = 0x03, .format_set1[2] = 0x03, .format_set1[3] = 0x03, .format_set1[4] = 0x03, .format_set1[5] = 0x03, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, + }, + }, + [ AHD20_1080P_60P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x86, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x04, .u_gain[3] = 0x10, .u_gain[4] = 0x10, .u_gain[5] = 0x18, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0x0e, .v_gain[4] = 0x0e, .v_gain[5] = 0x14, + .u_offset[0] = 0xfe, .u_offset[1] = 0xfe, .u_offset[2] = 0xfe, .u_offset[3] = 0xfe, .u_offset[4] = 0xfe, .u_offset[5] = 0xfe, + .v_offset[0] = 0xfb, .v_offset[1] = 0xfb, .v_offset[2] = 0xfb, .v_offset[3] = 0xfb, .v_offset[4] = 0xfb, .v_offset[5] = 0xfb, + + .black_level[0] = 0x80, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x83, .black_level[4] = 0x83, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x86, .h_delay_a[1] = 0x84, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x03, .h_delay_c[1] = 0x03, .h_delay_c[2] = 0x03, .h_delay_c[3] = 0x03, .h_delay_c[4] = 0x03, .h_delay_c[5] = 0x03, + .y_delay[0] = 0x05, .y_delay[1] = 0x03, .y_delay[2] = 0x03, .y_delay[3] = 0x03, .y_delay[4] = 0x03, .y_delay[5] = 0x03, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x02, .format_set1[1] = 0x02, .format_set1[2] = 0x02, .format_set1[3] = 0x02, .format_set1[4] = 0x02, .format_set1[5] = 0x02, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, + }, + }, + + [ AHD20_720P_50P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x86, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x04, .u_gain[3] = 0x10, .u_gain[4] = 0x10, .u_gain[5] = 0x18, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0x0e, .v_gain[4] = 0x0e, .v_gain[5] = 0x14, + .u_offset[0] = 0xfe, .u_offset[1] = 0xfe, .u_offset[2] = 0xfe, .u_offset[3] = 0xfe, .u_offset[4] = 0xfe, .u_offset[5] = 0xfe, + .v_offset[0] = 0xfb, .v_offset[1] = 0xfb, .v_offset[2] = 0xfb, .v_offset[3] = 0xfb, .v_offset[4] = 0xfb, .v_offset[5] = 0xfb, + + .black_level[0] = 0x80, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x83, .black_level[4] = 0x83, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x86, .h_delay_a[1] = 0x84, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x03, .h_delay_c[1] = 0x03, .h_delay_c[2] = 0x03, .h_delay_c[3] = 0x03, .h_delay_c[4] = 0x03, .h_delay_c[5] = 0x03, + .y_delay[0] = 0x05, .y_delay[1] = 0x03, .y_delay[2] = 0x03, .y_delay[3] = 0x03, .y_delay[4] = 0x03, .y_delay[5] = 0x03, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x05, .format_set1[1] = 0x05, .format_set1[2] = 0x05, .format_set1[3] = 0x05, .format_set1[4] = 0x05, .format_set1[5] = 0x05, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, + }, + }, + [ AHD20_720P_60P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x86, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x04, .u_gain[3] = 0x10, .u_gain[4] = 0x10, .u_gain[5] = 0x18, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0x0e, .v_gain[4] = 0x0e, .v_gain[5] = 0x14, + .u_offset[0] = 0xfe, .u_offset[1] = 0xfe, .u_offset[2] = 0xfe, .u_offset[3] = 0xfe, .u_offset[4] = 0xfe, .u_offset[5] = 0xfe, + .v_offset[0] = 0xfb, .v_offset[1] = 0xfb, .v_offset[2] = 0xfb, .v_offset[3] = 0xfb, .v_offset[4] = 0xfb, .v_offset[5] = 0xfb, + + .black_level[0] = 0x86, .black_level[1] = 0x86, .black_level[2] = 0x86, .black_level[3] = 0x86, .black_level[4] = 0x86, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x05, .h_delay_c[1] = 0x05, .h_delay_c[2] = 0x05, .h_delay_c[3] = 0x05, .h_delay_c[4] = 0x05, .h_delay_c[5] = 0x05, + .y_delay[0] = 0x05, .y_delay[1] = 0x03, .y_delay[2] = 0x03, .y_delay[3] = 0x03, .y_delay[4] = 0x03, .y_delay[5] = 0x03, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x04, .format_set1[1] = 0x04, .format_set1[2] = 0x04, .format_set1[3] = 0x04, .format_set1[4] = 0x04, .format_set1[5] = 0x04, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, + }, + }, + [ AHD20_960P_25P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x01, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x08, .u_gain[1] = 0x00, .u_gain[2] = 0x04, .u_gain[3] = 0x10, .u_gain[4] = 0x10, .u_gain[5] = 0x18, + .v_gain[0] = 0x08, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0x0e, .v_gain[4] = 0x0e, .v_gain[5] = 0x14, + .u_offset[0] = 0xfa, .u_offset[1] = 0xfe, .u_offset[2] = 0xfe, .u_offset[3] = 0xfe, .u_offset[4] = 0xfe, .u_offset[5] = 0xfe, + .v_offset[0] = 0xfa, .v_offset[1] = 0xfb, .v_offset[2] = 0xfb, .v_offset[3] = 0xfb, .v_offset[4] = 0xfb, .v_offset[5] = 0xfb, + + .black_level[0] = 0x80, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x83, .black_level[4] = 0x83, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x78, .h_delay_a[1] = 0x84, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x03, .h_delay_c[2] = 0x03, .h_delay_c[3] = 0x03, .h_delay_c[4] = 0x03, .h_delay_c[5] = 0x03, + .y_delay[0] = 0x04, .y_delay[1] = 0x03, .y_delay[2] = 0x03, .y_delay[3] = 0x03, .y_delay[4] = 0x03, .y_delay[5] = 0x03, + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x03, .format_set1[1] = 0x03, .format_set1[2] = 0x03, .format_set1[3] = 0x03, .format_set1[4] = 0x03, .format_set1[5] = 0x03, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, + }, + }, + + [ AHD20_960P_30P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x01, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x08, .u_gain[1] = 0x00, .u_gain[2] = 0x04, .u_gain[3] = 0x10, .u_gain[4] = 0x10, .u_gain[5] = 0x18, + .v_gain[0] = 0x08, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0x0e, .v_gain[4] = 0x0e, .v_gain[5] = 0x14, + .u_offset[0] = 0xfa, .u_offset[1] = 0xfe, .u_offset[2] = 0xfe, .u_offset[3] = 0xfe, .u_offset[4] = 0xfe, .u_offset[5] = 0xfe, + .v_offset[0] = 0xfa, .v_offset[1] = 0xfb, .v_offset[2] = 0xfb, .v_offset[3] = 0xfb, .v_offset[4] = 0xfb, .v_offset[5] = 0xfb, + + .black_level[0] = 0x80, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x83, .black_level[4] = 0x83, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x69, .h_delay_a[1] = 0x84, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x03, .h_delay_c[2] = 0x03, .h_delay_c[3] = 0x03, .h_delay_c[4] = 0x03, .h_delay_c[5] = 0x03, + .y_delay[0] = 0x04, .y_delay[1] = 0x03, .y_delay[2] = 0x03, .y_delay[3] = 0x03, .y_delay[4] = 0x03, .y_delay[5] = 0x03, + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x03, .format_set1[1] = 0x03, .format_set1[2] = 0x03, .format_set1[3] = 0x03, .format_set1[4] = 0x03, .format_set1[5] = 0x03, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, + }, + }, + + [ AHD20_960P_50P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x86, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x04, .u_gain[3] = 0x10, .u_gain[4] = 0x10, .u_gain[5] = 0x18, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0x0e, .v_gain[4] = 0x0e, .v_gain[5] = 0x14, + .u_offset[0] = 0xfe, .u_offset[1] = 0xfe, .u_offset[2] = 0xfe, .u_offset[3] = 0xfe, .u_offset[4] = 0xfe, .u_offset[5] = 0xfe, + .v_offset[0] = 0xfb, .v_offset[1] = 0xfb, .v_offset[2] = 0xfb, .v_offset[3] = 0xfb, .v_offset[4] = 0xfb, .v_offset[5] = 0xfb, + + .black_level[0] = 0x80, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x83, .black_level[4] = 0x83, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x86, .h_delay_a[1] = 0x84, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x03, .h_delay_c[1] = 0x03, .h_delay_c[2] = 0x03, .h_delay_c[3] = 0x03, .h_delay_c[4] = 0x03, .h_delay_c[5] = 0x03, + .y_delay[0] = 0x05, .y_delay[1] = 0x03, .y_delay[2] = 0x03, .y_delay[3] = 0x03, .y_delay[4] = 0x03, .y_delay[5] = 0x03, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x03, .format_set1[1] = 0x03, .format_set1[2] = 0x03, .format_set1[3] = 0x03, .format_set1[4] = 0x03, .format_set1[5] = 0x03, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, + }, + }, + + [ AHD20_960P_60P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x86, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x04, .u_gain[3] = 0x10, .u_gain[4] = 0x10, .u_gain[5] = 0x18, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0x0e, .v_gain[4] = 0x0e, .v_gain[5] = 0x14, + .u_offset[0] = 0xfe, .u_offset[1] = 0xfe, .u_offset[2] = 0xfe, .u_offset[3] = 0xfe, .u_offset[4] = 0xfe, .u_offset[5] = 0xfe, + .v_offset[0] = 0xfb, .v_offset[1] = 0xfb, .v_offset[2] = 0xfb, .v_offset[3] = 0xfb, .v_offset[4] = 0xfb, .v_offset[5] = 0xfb, + + .black_level[0] = 0x80, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x83, .black_level[4] = 0x83, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x86, .h_delay_a[1] = 0x84, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x03, .h_delay_c[1] = 0x03, .h_delay_c[2] = 0x03, .h_delay_c[3] = 0x03, .h_delay_c[4] = 0x03, .h_delay_c[5] = 0x03, + .y_delay[0] = 0x05, .y_delay[1] = 0x03, .y_delay[2] = 0x03, .y_delay[3] = 0x03, .y_delay[4] = 0x03, .y_delay[5] = 0x03, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x03, .format_set1[1] = 0x03, .format_set1[2] = 0x03, .format_set1[3] = 0x03, .format_set1[4] = 0x03, .format_set1[5] = 0x03, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, + }, + }, + [ AHD20_SD_H1440_NT ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, // BankA 0x31 + .eq_gain_sel[0] = 0x78, // BankA 0x32 + .deq_a_on[0] = 0x00, // BankA 0x33 + .deq_a_sel[0] = 0x00, // BankA 0x34 + .deq_b_sel[0] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x90, + .h_peaking[0] = 0x08, + .c_filter[0] = 0x82, + + .hue[0] = 0x00, + .u_gain[0] = 0x00, + .v_gain[0] = 0x00, + .u_offset[0] = 0x00, + .v_offset[0] = 0x00, + + .black_level[0] = 0x90, + .acc_ref[0] = 0x57, + .cti_delay[0] = 0x80, + .sub_saturation[0] = 0xc0, + + .burst_dec_a[0] = 0x2a, + .burst_dec_b[0] = 0x00, + .burst_dec_c[0] = 0x30, + + .c_option[0] = 0x80, + + .y_filter_b[0] = 0x10, + .y_filter_b_sel[0] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0xb8, + .h_delay_b[0] = 0x10, + .h_delay_c[0] = 0x0c, + .y_delay[0] = 0x1c, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, + .clk_dec[0] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x10, + /*B9 0x97*/ .h_scaler2[0] = 0x10, + /*B9 0x98*/ .h_scaler3[0] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, + .fsc_lock_speed[0] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x40, + /*B0 0x85*/ .format_set2[0] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0xc0, + }, + }, + + [ AHD20_SD_H1440_PAL ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, // BankA 0x31 + .eq_gain_sel[0] = 0x78, // BankA 0x32 + .deq_a_on[0] = 0x00, // BankA 0x33 + .deq_a_sel[0] = 0x00, // BankA 0x34 + .deq_b_sel[0] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x90, + .h_peaking[0] = 0x08, + .c_filter[0] = 0x82, + + .hue[0] = 0x00, + .u_gain[0] = 0x00, + .v_gain[0] = 0x00, + .u_offset[0] = 0x00, + .v_offset[0] = 0x00, + + .black_level[0] = 0x90, + .acc_ref[0] = 0x57, + .cti_delay[0] = 0x80, + .sub_saturation[0] = 0xc0, + + .burst_dec_a[0] = 0x2a, + .burst_dec_b[0] = 0x00, + .burst_dec_c[0] = 0x30, + + .c_option[0] = 0x80, + + .y_filter_b[0] = 0x10, + .y_filter_b_sel[0] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0xc0, + .h_delay_b[0] = 0x10, + .h_delay_c[0] = 0x0e, + .y_delay[0] = 0x0a, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, + .clk_dec[0] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x10, + /*B9 0x97*/ .h_scaler2[0] = 0x10, + /*B9 0x98*/ .h_scaler3[0] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x0d, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, + .fsc_lock_speed[0] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x50, + /*B0 0x85*/ .format_set2[0] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x21, + }, + }, +}; +#endif + +#endif /* EXTDRV_RAPTOR3_VIDEO_INPUT_TABLE_H_ */ diff --git a/drivers/media/i2c/nvp6158_drv/nvp6168_eq_table.h b/drivers/media/i2c/nvp6158_drv/nvp6168_eq_table.h new file mode 100644 index 000000000000..271d87c6d493 --- /dev/null +++ b/drivers/media/i2c/nvp6158_drv/nvp6168_eq_table.h @@ -0,0 +1,6940 @@ +// SPDX-License-Identifier: GPL-2.0 +/******************************************************************************** + * + * Copyright (C) 2018 NEXTCHIP Inc. All rights reserved. + * Module : nvp6168_eq_table.c + * Description : + * Author : + * Date : + * Version : Version 0.1 + * + ******************************************************************************** + * History : + * + * + ********************************************************************************/ +#ifndef _NVP6168_EQ_TABLE_H_ +#define _NVP6168_EQ_TABLE_H_ + +static nvp6158_video_equalizer_distance_table_s nvp6168_equalizer_distance_fmtdef[ NC_VIVO_CH_FORMATDEF_MAX ] = +{ + [ CVI_4M_30P ] = { + { + .hsync_stage[0] = 0x8ECE24, + .hsync_stage[1] = 0x8B9A7D, + .hsync_stage[2] = 0x874271, + .hsync_stage[3] = 0x828FA9, + .hsync_stage[4] = 0x80CC69, + .hsync_stage[5] = 0x7E35AA, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ CVI_4M_25P ] = { + { + .hsync_stage[0] = 0x91616A, + .hsync_stage[1] = 0x8D3C8E, + .hsync_stage[2] = 0x88D10A, + .hsync_stage[3] = 0x843841, + .hsync_stage[4] = 0x800696, + .hsync_stage[5] = 0x7D2AC6, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + + }, + }, + [ CVI_5M_20P ] = { + { + .hsync_stage[0] = 0x34EDD3, + .hsync_stage[1] = 0x3107C1, + .hsync_stage[2] = 0x2DBC0D, + .hsync_stage[3] = 0x2B6A06, + .hsync_stage[4] = 0x29946A, + .hsync_stage[5] = 0x2831D9, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + + }, + }, + + [ CVI_8M_15P ] = { + { + .hsync_stage[0] = 0x919833, + .hsync_stage[1] = 0x8D8CD8, + .hsync_stage[2] = 0x8874E5, + .hsync_stage[3] = 0x85C829, + .hsync_stage[4] = 0x822097, + .hsync_stage[5] = 0x7FF3B7, + }, + { + .agc_stage[0] = 0x0C, + .agc_stage[1] = 0x26, + .agc_stage[2] = 0xFF, + .agc_stage[3] = 0xFF, + .agc_stage[4] = 0xFF, + .agc_stage[5] = 0xFF, + }, + }, + [ CVI_8M_12_5P ] = { + { + .hsync_stage[0] = 0x8EEEBA, + .hsync_stage[1] = 0x8A8443, + .hsync_stage[2] = 0x8556D0, + .hsync_stage[3] = 0x83CAF0, + .hsync_stage[4] = 0x80ECCC, + .hsync_stage[5] = 0x7DC72D, + }, + { + .agc_stage[0] = 0x0C, + .agc_stage[1] = 0x26, + .agc_stage[2] = 0xFF, + .agc_stage[3] = 0xFF, + .agc_stage[4] = 0xFF, + .agc_stage[5] = 0xFF, + }, + }, + [ CVI_FHD_30P ] = { + { + .hsync_stage[0] = 0x8E26A8, + .hsync_stage[1] = 0x8ADEC6, + .hsync_stage[2] = 0x877648, + .hsync_stage[3] = 0x827821, + .hsync_stage[4] = 0x7F4122, + .hsync_stage[5] = 0x7CBF4C, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + + }, + [ CVI_FHD_25P ] = { + { + .hsync_stage[0] = 0x8FADED, + .hsync_stage[1] = 0x8B0FA4, + .hsync_stage[2] = 0x88E4C2, + .hsync_stage[3] = 0x837985, + .hsync_stage[4] = 0x7F0CC4, + .hsync_stage[5] = 0x7B6A7E, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ CVI_HD_30P ] = { + { + .hsync_stage[0] = 0x8C135D, + .hsync_stage[1] = 0x884F58, + .hsync_stage[2] = 0x83CC33, + .hsync_stage[3] = 0x8107AD, + .hsync_stage[4] = 0x7ACF88, + .hsync_stage[5] = 0x77D736, + .hsync_stage[6] = 0x770B9A, /* 600m */ + .hsync_stage[7] = 0x734573, /* 700m */ + .hsync_stage[8] = 0x38DA6A, /* 800m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + .agc_stage[6] = 0x00, + .agc_stage[7] = 0x00, + .agc_stage[8] = 0x00, + }, + }, + [ CVI_HD_25P ] = { + { + .hsync_stage[0] = 0x8BA573, + .hsync_stage[1] = 0x8860AE, + .hsync_stage[2] = 0x852324, + .hsync_stage[3] = 0x811FB1, + .hsync_stage[4] = 0x7CCAC8, + .hsync_stage[5] = 0x770BD1, + .hsync_stage[6] = 0x75B991, /* 600m */ + .hsync_stage[7] = 0x71D270, /* 700m */ + .hsync_stage[8] = 0x385CFF, /* 800m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + .agc_stage[6] = 0x00, + .agc_stage[7] = 0x00, + .agc_stage[8] = 0x00, + }, + }, + [ CVI_HD_50P ] = { + { + .hsync_stage[0] = 0x90215B, + .hsync_stage[1] = 0x8CB0AA, + .hsync_stage[2] = 0x87EC3B, + .hsync_stage[3] = 0x85D89F, + .hsync_stage[4] = 0x82449F, + .hsync_stage[5] = 0x7F59F9, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + .agc_stage[6] = 0x00, + .agc_stage[7] = 0x00, + .agc_stage[8] = 0x00, + }, + }, + [ CVI_HD_60P ] = { + { + .hsync_stage[0] = 0x90E55C, + .hsync_stage[1] = 0x8CD508, + .hsync_stage[2] = 0x896950, + .hsync_stage[3] = 0x868B76, + .hsync_stage[4] = 0x82D331, + .hsync_stage[5] = 0x809418, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + .agc_stage[6] = 0x00, + .agc_stage[7] = 0x00, + .agc_stage[8] = 0x00, + }, + }, + [ AHD30_4M_25P ] = { + { + .hsync_stage[0] = 0x9345D8, + .hsync_stage[1] = 0x8F586A, + .hsync_stage[2] = 0x8A92F4, + .hsync_stage[3] = 0x871984, + .hsync_stage[4] = 0x83FD7E, + .hsync_stage[5] = 0x823CFC, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + [ AHD30_4M_30P ] = { + { + .hsync_stage[0] = 0x91CF31, + .hsync_stage[1] = 0x8C8043, + .hsync_stage[2] = 0x8901BC, + .hsync_stage[3] = 0x858916, + .hsync_stage[4] = 0x82CC39, + .hsync_stage[5] = 0x7FE272, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + [ AHD30_4M_15P ] = { + { + .hsync_stage[0] = 0x8E6FD2, + .hsync_stage[1] = 0x8BB76E, + .hsync_stage[2] = 0x87F473, + .hsync_stage[3] = 0x84D01F, + .hsync_stage[4] = 0x823C59, + .hsync_stage[5] = 0x7FB8AF, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + [ AHD30_8M_7_5P ] = { + { + .hsync_stage[0] = 0x8EE2AC, + .hsync_stage[1] = 0x8BB641, + .hsync_stage[2] = 0x868E47, + .hsync_stage[3] = 0x83F341, + .hsync_stage[4] = 0x7FB13A, + .hsync_stage[5] = 0x7D8B13, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + [ AHD30_8M_15P ] = { + { + .hsync_stage[0] = 0x3799AE, + .hsync_stage[1] = 0x3444B5, + .hsync_stage[2] = 0x30D56F, + .hsync_stage[3] = 0x2E1A08, + .hsync_stage[4] = 0x2BE85F, + .hsync_stage[5] = 0x2A2AA3, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + [ AHD30_8M_12_5P ] = { + { + .hsync_stage[0] = 0x93534C, + .hsync_stage[1] = 0x8F4F50, + .hsync_stage[2] = 0x8B3DF0, + .hsync_stage[3] = 0x87AA86, + .hsync_stage[4] = 0x84E69C, + .hsync_stage[5] = 0x829302, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + [ TVI_4M_15P ] = { + { + .hsync_stage[0] = 0x36D233, + .hsync_stage[1] = 0x34188C, + .hsync_stage[2] = 0x31059E, + .hsync_stage[3] = 0x2E6C01, + .hsync_stage[4] = 0x2C188B, + .hsync_stage[5] = 0x2A870F, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + [ TVI_4M_15P ] = { + { + .hsync_stage[0] = 0x35DE4D, + .hsync_stage[1] = 0x331214, + .hsync_stage[2] = 0x2FDCA5, + .hsync_stage[3] = 0x2DA838, + .hsync_stage[4] = 0x2BEAFD, + .hsync_stage[5] = 0x2A702F, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + [ TVI_4M_25P ] = { + { + .hsync_stage[0] = 0x35DE4D, + .hsync_stage[1] = 0x331214, + .hsync_stage[2] = 0x2FDCA5, + .hsync_stage[3] = 0x2DA838, + .hsync_stage[4] = 0x2BEAFD, + .hsync_stage[5] = 0x2A702F, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + [ TVI_4M_30P ] = { + { + .hsync_stage[0] = 0x35CF85, + .hsync_stage[1] = 0x32B06F, + .hsync_stage[2] = 0x2F8C60, + .hsync_stage[3] = 0x2D2ACD, + .hsync_stage[4] = 0x2B7B57, + .hsync_stage[5] = 0x29F608, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + [ AHD30_5M_20P ] = { + { + .hsync_stage[0] = 0x9357E8, + .hsync_stage[1] = 0x8F2A88, + .hsync_stage[2] = 0x8B88DE, + .hsync_stage[3] = 0x8845A7, + .hsync_stage[4] = 0x8501D2, + .hsync_stage[5] = 0x82ED6D, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + [ AHD30_5_3M_20P ] = { + { + .hsync_stage[0] = 0x92DEB4, + .hsync_stage[1] = 0x8F64D1, + .hsync_stage[2] = 0x8B4B6B, + .hsync_stage[3] = 0x87590B, + .hsync_stage[4] = 0x844EBD, + .hsync_stage[5] = 0x81ADC9, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + + [ TVI_5M_12_5P ] = { + { + .hsync_stage[0] = 0x35BDFD, + .hsync_stage[1] = 0x32EA38, + .hsync_stage[2] = 0x2FC1E7, + .hsync_stage[3] = 0x2D1A7E, + .hsync_stage[4] = 0x2B3453, + .hsync_stage[5] = 0x29D1E2, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ TVI_5M_20P ] = { + { + .hsync_stage[0] = 0x37958B, + .hsync_stage[1] = 0x347FCB, + .hsync_stage[2] = 0x31012D, + .hsync_stage[3] = 0x2EF8E1, + .hsync_stage[4] = 0x2C8045, + .hsync_stage[5] = 0x2B972D, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ TVI_8M_15P ] = { + { + .hsync_stage[0] = 0x37568B, + .hsync_stage[1] = 0x33EE81, + .hsync_stage[2] = 0x303004, + .hsync_stage[3] = 0x2DB8ED, + .hsync_stage[4] = 0x2B7D96, + .hsync_stage[5] = 0x2A3514, + }, + { + .agc_stage[0] = 0x0C, + .agc_stage[1] = 0x26, + .agc_stage[2] = 0xFF, + .agc_stage[3] = 0xFF, + .agc_stage[4] = 0xFF, + .agc_stage[5] = 0xFF, + }, + }, + [ TVI_8M_12_5P ] = { + { + .hsync_stage[0] = 0x376F04, + .hsync_stage[1] = 0x33E296, + .hsync_stage[2] = 0x30A70C, + .hsync_stage[3] = 0x2EB24B, + .hsync_stage[4] = 0x2CED34, + .hsync_stage[5] = 0x2B7888, + }, + { + .agc_stage[0] = 0x0C, + .agc_stage[1] = 0x26, + .agc_stage[2] = 0xFF, + .agc_stage[3] = 0xFF, + .agc_stage[4] = 0xFF, + .agc_stage[5] = 0xFF, + }, + }, + [ TVI_3M_18P ] = { + { + .hsync_stage[0] = 0x359BAE, + .hsync_stage[1] = 0x332C43, + .hsync_stage[2] = 0x3005D7, + .hsync_stage[3] = 0x2DB71C, + .hsync_stage[4] = 0x2BC581, + .hsync_stage[5] = 0x2A24E6, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ AHD20_1080P_25P ] = { /* o */ + { + .hsync_stage[0] = 0x8E63AE, + .hsync_stage[1] = 0x8B90EE, + .hsync_stage[2] = 0x8849BD, + .hsync_stage[3] = 0x84D310, + .hsync_stage[4] = 0x826C8C, + .hsync_stage[5] = 0x8063F2, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ AHD20_1080P_30P ] = { /* o */ + { + .hsync_stage[0] = 0x8B3D4D, + .hsync_stage[1] = 0x8A1919, + .hsync_stage[2] = 0x84AB53, + .hsync_stage[3] = 0x807C8A, + .hsync_stage[4] = 0x7DF22E, + .hsync_stage[5] = 0x7A7F57, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ AHD20_1080P_12_5P_EX ] = { /* o */ + { + .hsync_stage[0] = 0x8F06D5, /* short */ + .hsync_stage[1] = 0x8C3CA0, /* 100m */ + .hsync_stage[2] = 0x896997, /* 200m */ + .hsync_stage[3] = 0x859D32, /* 300m */ + .hsync_stage[4] = 0x821cdc, /* 400m */ + .hsync_stage[5] = 0x7EB58A, /* 500m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ AHD20_1080P_15P_EX ] = { /* o */ + { + #if 0 + .hsync_stage[0] = 0x8F0A3E, /* short */ + .hsync_stage[1] = 0x8BE9B4, /* 100m */ + .hsync_stage[2] = 0x8924F4, /* 200m */ + .hsync_stage[3] = 0x84E8EB, /* 300m */ + .hsync_stage[4] = 0x8108d5, /* 400m */ + .hsync_stage[5] = 0x7BE0E9, /* 500m */ + #else + .hsync_stage[0] = 0x830A3E, /* short */ + .hsync_stage[1] = 0x79E9B4, /* 100m */ + .hsync_stage[2] = 0x7624F4, /* 200m */ + .hsync_stage[3] = 0x71E8EB, /* 300m */ + .hsync_stage[4] = 0x6d08d5, /* 400m */ + .hsync_stage[5] = 0x67E0E9, /* 500m */ + #endif + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ AHD20_960P_25P ] = { /* o */ + { + .hsync_stage[0] = 0x8E63AE, + .hsync_stage[1] = 0x8B90EE, + .hsync_stage[2] = 0x8849BD, + .hsync_stage[3] = 0x84D310, + .hsync_stage[4] = 0x826C8C, + .hsync_stage[5] = 0x8063F2, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ AHD20_960P_30P ] = { /* o */ + { + .hsync_stage[0] = 0x8B3D4D, + .hsync_stage[1] = 0x8A1919, + .hsync_stage[2] = 0x84AB53, + .hsync_stage[3] = 0x807C8A, + .hsync_stage[4] = 0x7DF22E, + .hsync_stage[5] = 0x7A7F57, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ TVI_FHD_30P ] = { + { + .hsync_stage[0] = 0x359F01, + .hsync_stage[1] = 0x32784D, + .hsync_stage[2] = 0x2F6A51, + .hsync_stage[3] = 0x2CDB9F, + .hsync_stage[4] = 0x2AE0D4, + .hsync_stage[5] = 0x297011, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ TVI_FHD_25P ] = { + { + .hsync_stage[0] = 0x35C41B, + .hsync_stage[1] = 0x33116E, + .hsync_stage[2] = 0x301917, + .hsync_stage[3] = 0x2DA0DF, + .hsync_stage[4] = 0x2B7660, + .hsync_stage[5] = 0x29D264, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + [ AHD20_720P_25P_EX_Btype ] = { /* o */ + { + .hsync_stage[0] = 0x8E6C4A, + .hsync_stage[1] = 0x8B1DB9, + .hsync_stage[2] = 0x86BC00, + .hsync_stage[3] = 0x8348E0, + .hsync_stage[4] = 0x7F7C83, + .hsync_stage[5] = 0x7D7E4C, + .hsync_stage[6] = 0x7B6922, /* 600m */ + .hsync_stage[7] = 0x7906E2, /* 700m */ + .hsync_stage[8] = 0x3C30A5, /* 800m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + .agc_stage[6] = 0x00, + .agc_stage[7] = 0x00, + .agc_stage[8] = 0x00, + }, + }, + [ AHD20_720P_30P_EX_Btype ] = { /* o */ + { + .hsync_stage[0] = 0x8BD1CB, + .hsync_stage[1] = 0x8822D9, + .hsync_stage[2] = 0x845130, + .hsync_stage[3] = 0x80C56E, + .hsync_stage[4] = 0x7B1554, + .hsync_stage[5] = 0x78945E, + .hsync_stage[6] = 0x76B80E, /* 600m */ + .hsync_stage[7] = 0x73CB89, /* 700m */ + .hsync_stage[8] = 0x3955E6, /* 800m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + .agc_stage[6] = 0x00, + .agc_stage[7] = 0x00, + .agc_stage[8] = 0x00, + }, + }, + [ AHD20_720P_25P ] = { /* o */ + { + .hsync_stage[0] = 0x8E6C4A, + .hsync_stage[1] = 0x8B1DB9, + .hsync_stage[2] = 0x86BC00, + .hsync_stage[3] = 0x8348E0, + .hsync_stage[4] = 0x7F7C83, + .hsync_stage[5] = 0x7D7E4C, + .hsync_stage[6] = 0x7B6922, /* 600m */ + .hsync_stage[7] = 0x7906E2, /* 700m */ + .hsync_stage[8] = 0x3C30A5, /* 800m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + .agc_stage[6] = 0x00, + .agc_stage[7] = 0x00, + .agc_stage[8] = 0x00, + }, + }, + [ AHD20_720P_30P ] = { /* o */ + { + .hsync_stage[0] = 0x8BD1CB, + .hsync_stage[1] = 0x8822D9, + .hsync_stage[2] = 0x845130, + .hsync_stage[3] = 0x80C56E, + .hsync_stage[4] = 0x7B1554, + .hsync_stage[5] = 0x78945E, + .hsync_stage[6] = 0x76B80E, /* 600m */ + .hsync_stage[7] = 0x73CB89, /* 700m */ + .hsync_stage[8] = 0x3955E6, /* 800m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + .agc_stage[6] = 0x00, + .agc_stage[7] = 0x00, + .agc_stage[8] = 0x00, + }, + }, + + [ CVI_HD_30P_EX ] = { + { + .hsync_stage[0] = 0x8C135D, + .hsync_stage[1] = 0x884F58, + .hsync_stage[2] = 0x83CC33, + .hsync_stage[3] = 0x8107AD, + .hsync_stage[4] = 0x7ACF88, + .hsync_stage[5] = 0x77D736, + .hsync_stage[6] = 0x770B9A, /* 600m */ + .hsync_stage[7] = 0x734573, /* 700m */ + .hsync_stage[8] = 0x38DA6A, /* 800m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + .agc_stage[6] = 0x00, + .agc_stage[7] = 0x00, + .agc_stage[8] = 0x00, + }, + }, + + [ CVI_HD_25P_EX ] = { + { + .hsync_stage[0] = 0x8BA573, + .hsync_stage[1] = 0x8860AE, + .hsync_stage[2] = 0x852324, + .hsync_stage[3] = 0x811FB1, + .hsync_stage[4] = 0x7CCAC8, + .hsync_stage[5] = 0x770BD1, + .hsync_stage[6] = 0x75B991, /* 600m */ + .hsync_stage[7] = 0x71D270, /* 700m */ + .hsync_stage[8] = 0x385CFF, /* 800m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + .agc_stage[6] = 0x00, + .agc_stage[7] = 0x00, + .agc_stage[8] = 0x00, + }, + }, + + [ TVI_HD_30P_EX ] = { + { + .hsync_stage[0] = 0x360C87, + .hsync_stage[1] = 0x32F15A, + .hsync_stage[2] = 0x2FDACA, + .hsync_stage[3] = 0x2D5591, + .hsync_stage[4] = 0x2B91DE, + .hsync_stage[5] = 0x2A1F7F, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + + [ TVI_HD_25P_EX ] = { + { + .hsync_stage[0] = 0x35F1DC, + .hsync_stage[1] = 0x330C82, + .hsync_stage[2] = 0x2FE3B2, + .hsync_stage[3] = 0x2D7E56, + .hsync_stage[4] = 0x2B96C2, + .hsync_stage[5] = 0x29F7F4, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + + [ TVI_HD_B_30P_EX ] = { + { + .hsync_stage[0] = 0x3259F8, + .hsync_stage[1] = 0x2F45CF, + .hsync_stage[2] = 0x2C13B5, + .hsync_stage[3] = 0x297E56, + .hsync_stage[4] = 0x270130, + .hsync_stage[5] = 0x250BB5, + .hsync_stage[6] = 0x23D592, /* 600m */ + .hsync_stage[7] = 0x226F62, /* 700m */ + .hsync_stage[8] = 0x10F18D, /* 800m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + .agc_stage[6] = 0x00, + .agc_stage[7] = 0x00, + .agc_stage[8] = 0x00, + }, + }, + + [ TVI_HD_B_25P_EX ] = { + { + .hsync_stage[0] = 0x31F0A9, + .hsync_stage[1] = 0x2EF3C6, + .hsync_stage[2] = 0x2BEC81, + .hsync_stage[3] = 0x298722, + .hsync_stage[4] = 0x276486, + .hsync_stage[5] = 0x25D71F, + .hsync_stage[6] = 0x24D534, /* 600m */ + .hsync_stage[7] = 0x237BB2, /* 700m */ + .hsync_stage[8] = 0x11768C, /* 800m */ + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + .agc_stage[6] = 0x00, + .agc_stage[7] = 0x00, + .agc_stage[8] = 0x00, + }, + }, + + [ TVI_HD_60P ] = { + { + .hsync_stage[0] = 0x360D63, + .hsync_stage[1] = 0x330DAD, + .hsync_stage[2] = 0x2F9AC6, + .hsync_stage[3] = 0x2D703E, + .hsync_stage[4] = 0x2BA16A, + .hsync_stage[5] = 0x2A31E5, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + + [ TVI_HD_50P ] = { + { + .hsync_stage[0] = 0x35FA7E, + .hsync_stage[1] = 0x333FE2, + .hsync_stage[2] = 0x3099B4, + .hsync_stage[3] = 0x2DFAE8, + .hsync_stage[4] = 0x2BDFC1, + .hsync_stage[5] = 0x2A734C, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + }, + }, + + [ AHD30_5M_12_5P ] = { + { + .hsync_stage[0] = 0x8EC141, + .hsync_stage[1] = 0x8B3C01, + .hsync_stage[2] = 0x86C788, + .hsync_stage[3] = 0x83DB08, + .hsync_stage[4] = 0x806731, + .hsync_stage[5] = 0x7E2193, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + + [ AHD30_3M_18P ] = { + { + .hsync_stage[0] = 0x8EE698, + .hsync_stage[1] = 0x8C3285, + .hsync_stage[2] = 0x88677E, + .hsync_stage[3] = 0x8429A3, + .hsync_stage[4] = 0x80DB83, + .hsync_stage[5] = 0x7EA105, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + + [ AHD30_3M_25P ] = { + { + .hsync_stage[0] = 0x92E5B1, + .hsync_stage[1] = 0x8F2E19, + .hsync_stage[2] = 0x8B3731, + .hsync_stage[3] = 0x885B7B, + .hsync_stage[4] = 0x857793, + .hsync_stage[5] = 0x835E8F, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + + [ AHD30_3M_30P ] = { + { + .hsync_stage[0] = 0x92748C, + .hsync_stage[1] = 0x8EA168, + .hsync_stage[2] = 0x8B1B23, + .hsync_stage[3] = 0x87A8FE, + .hsync_stage[4] = 0x84798B, + .hsync_stage[5] = 0x82277E, + }, + { + .agc_stage[0] = 0x00, + .agc_stage[1] = 0x00, + .agc_stage[2] = 0x00, + .agc_stage[3] = 0x00, + .agc_stage[4] = 0x00, + .agc_stage[5] = 0x00, + } + }, + +}; + +static video_equalizer_value_table_s nvp6168_equalizer_value_fmtdef[ NC_VIVO_CH_FORMATDEF_MAX ] = +{ + [ CVI_4M_25P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x47, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x37, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7a, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x91, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x81, .contrast[1] = 0x81, .contrast[2] = 0x81, .contrast[3] = 0x81, .contrast[4] = 0x81, .contrast[5] = 0x81, + .h_peaking[0] = 0x20, .h_peaking[1] = 0x20, .h_peaking[2] = 0x20, .h_peaking[3] = 0x20, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, + .c_filter[0] = 0x81, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0xa2, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x04, .hue[1] = 0x04, .hue[2] = 0x04, .hue[3] = 0x04, .hue[4] = 0x04, .hue[5] = 0x04, + .u_gain[0] = 0x20, .u_gain[1] = 0x20, .u_gain[2] = 0x20, .u_gain[3] = 0x20, .u_gain[4] = 0x20, .u_gain[5] = 0x20, + .v_gain[0] = 0xe8, .v_gain[1] = 0xe8, .v_gain[2] = 0xe8, .v_gain[3] = 0xe8, .v_gain[4] = 0xe8, .v_gain[5] = 0xe8, + .u_offset[0] = 0xfe, .u_offset[1] = 0xfe, .u_offset[2] = 0xfe, .u_offset[3] = 0xfe, .u_offset[4] = 0xfe, .u_offset[5] = 0xfe, + .v_offset[0] = 0xfa, .v_offset[1] = 0xfa, .v_offset[2] = 0xfa, .v_offset[3] = 0xfa, .v_offset[4] = 0xfa, .v_offset[5] = 0xfa, + + .black_level[0] = 0x81, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x81, .black_level[4] = 0x81, .black_level[5] = 0x92, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x37, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xd0, .sub_saturation[1] = 0xd0, .sub_saturation[2] = 0xd0, .sub_saturation[3] = 0xd0, .sub_saturation[4] = 0xd0, .sub_saturation[5] = 0x70, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x90, .c_option[2] = 0x90, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x82, .h_delay_a[2] = 0x81, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x79, .h_scaler2[1] = 0x79, .h_scaler2[2] = 0x79, .h_scaler2[3] = 0x79, .h_scaler2[4] = 0x79, .h_scaler2[5] = 0x79, + /*B9 0x98*/ .h_scaler3[0] = 0x80, .h_scaler3[1] = 0x80, .h_scaler3[2] = 0x80, .h_scaler3[3] = 0x80, .h_scaler3[4] = 0x80, .h_scaler3[5] = 0x80, + /*B9 0x99*/ .h_scaler4[0] = 0x01, .h_scaler4[1] = 0x01, .h_scaler4[2] = 0x01, .h_scaler4[3] = 0x01, .h_scaler4[4] = 0x01, .h_scaler4[5] = 0x01, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x03, .h_scaler6[1] = 0x03, .h_scaler6[2] = 0x03, .h_scaler6[3] = 0x03, .h_scaler6[4] = 0x03, .h_scaler6[5] = 0x03, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + /*B0 0x81*/ .format_set1[0] = 0x0f, .format_set1[1] = 0x0f, .format_set1[2] = 0x0f, .format_set1[3] = 0x0f, .format_set1[4] = 0x0f, .format_set1[5] = 0x0f, + /*B0 0x85*/ .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + [ CVI_4M_30P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x47, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x37, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7a, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x91, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x81, .contrast[1] = 0x81, .contrast[2] = 0x81, .contrast[3] = 0x81, .contrast[4] = 0x81, .contrast[5] = 0x81, + .h_peaking[0] = 0x20, .h_peaking[1] = 0x20, .h_peaking[2] = 0x20, .h_peaking[3] = 0x20, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, + .c_filter[0] = 0x81, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0xa2, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x04, .hue[1] = 0x04, .hue[2] = 0x04, .hue[3] = 0x04, .hue[4] = 0x04, .hue[5] = 0x04, + .u_gain[0] = 0x20, .u_gain[1] = 0x20, .u_gain[2] = 0x20, .u_gain[3] = 0x20, .u_gain[4] = 0x20, .u_gain[5] = 0x20, + .v_gain[0] = 0xe8, .v_gain[1] = 0xe8, .v_gain[2] = 0xe8, .v_gain[3] = 0xe8, .v_gain[4] = 0xe8, .v_gain[5] = 0xe8, + .u_offset[0] = 0xfe, .u_offset[1] = 0xfe, .u_offset[2] = 0xfe, .u_offset[3] = 0xfe, .u_offset[4] = 0xfe, .u_offset[5] = 0xfe, + .v_offset[0] = 0xfa, .v_offset[1] = 0xfa, .v_offset[2] = 0xfa, .v_offset[3] = 0xfa, .v_offset[4] = 0xfa, .v_offset[5] = 0xfa, + + .black_level[0] = 0x81, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x81, .black_level[4] = 0x81, .black_level[5] = 0x92, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x37, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xd0, .sub_saturation[1] = 0xd0, .sub_saturation[2] = 0xd0, .sub_saturation[3] = 0xd0, .sub_saturation[4] = 0xd0, .sub_saturation[5] = 0x70, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x90, .c_option[2] = 0x90, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x73, .h_delay_a[1] = 0x78, .h_delay_a[2] = 0x7a, .h_delay_a[3] = 0x7a, .h_delay_a[4] = 0x7a, .h_delay_a[5] = 0x7a, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + .h_scaler2[0] = 0x69, .h_scaler2[1] = 0x69, .h_scaler2[2] = 0x69, .h_scaler2[3] = 0x69, .h_scaler2[4] = 0x69, .h_scaler2[5] = 0x69, + .h_scaler3[0] = 0x90, .h_scaler3[1] = 0x90, .h_scaler3[2] = 0x90, .h_scaler3[3] = 0x90, .h_scaler3[4] = 0x90, .h_scaler3[5] = 0x90, + .h_scaler4[0] = 0x01, .h_scaler4[1] = 0x01, .h_scaler4[2] = 0x01, .h_scaler4[3] = 0x01, .h_scaler4[4] = 0x01, .h_scaler4[5] = 0x01, + .h_scaler5[0] = 0x04, .h_scaler5[1] = 0x04, .h_scaler5[2] = 0x04, .h_scaler5[3] = 0x04, .h_scaler5[4] = 0x04, .h_scaler5[5] = 0x04, + .h_scaler6[0] = 0x01, .h_scaler6[1] = 0x01, .h_scaler6[2] = 0x01, .h_scaler6[3] = 0x01, .h_scaler6[4] = 0x01, .h_scaler6[5] = 0x01, + .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + .format_set1[0] = 0x0e, .format_set1[1] = 0x0e, .format_set1[2] = 0x0e, .format_set1[3] = 0x0e, .format_set1[4] = 0x0e, .format_set1[5] = 0x0e, + .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, + + .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + [ CVI_5M_20P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x37, .eq_band_sel[5] = 0x37, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7A, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x92, .deq_a_sel[5] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x88, .contrast[2] = 0x88, .contrast[3] = 0x88, .contrast[4] = 0x88, .contrast[5] = 0x88, + .h_peaking[0] = 0x10, .h_peaking[1] = 0x10, .h_peaking[2] = 0x10, .h_peaking[3] = 0x00, .h_peaking[4] = 0x70, .h_peaking[5] = 0x70, + .c_filter[0] = 0x92, .c_filter[1] = 0x92, .c_filter[2] = 0xb2, .c_filter[3] = 0xb2, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x00, .u_gain[3] = 0x00, .u_gain[4] = 0x00, .u_gain[5] = 0x00, + .v_gain[0] = 0xf0, .v_gain[1] = 0xf0, .v_gain[2] = 0xf0, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, + .u_offset[0] = 0xfc, .u_offset[1] = 0xfc, .u_offset[2] = 0xfc, .u_offset[3] = 0xfc, .u_offset[4] = 0xfc, .u_offset[5] = 0xfc, + .v_offset[0] = 0xfc, .v_offset[1] = 0xfc, .v_offset[2] = 0xfc, .v_offset[3] = 0xfc, .v_offset[4] = 0xfc, .v_offset[5] = 0xfc, + + .black_level[0] = 0x80, .black_level[1] = 0x80, .black_level[2] = 0x80, .black_level[3] = 0x80, .black_level[4] = 0x80, .black_level[5] = 0x80, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x20, .acc_ref[5] = 0x20, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0xa0, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa0, .sub_saturation[1] = 0xa0, .sub_saturation[2] = 0xa0, .sub_saturation[3] = 0x9c, .sub_saturation[4] = 0x60, .sub_saturation[5] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x00, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0xa0, .c_option[2] = 0xb0, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x60, .h_delay_a[1] = 0x60, .h_delay_a[2] = 0x60, .h_delay_a[3] = 0x60, .h_delay_a[4] = 0x42, .h_delay_a[5] = 0x60, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x0f, .h_delay_c[1] = 0x0f, .h_delay_c[2] = 0x0f, .h_delay_c[3] = 0x0f, .h_delay_c[4] = 0x0f, .h_delay_c[5] = 0x0f, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0f, .format_set1[1] = 0x0f, .format_set1[2] = 0x0f, .format_set1[3] = 0x0f, .format_set1[4] = 0x0f, .format_set1[5] = 0x0f, + /*B0 0x85*/ .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, + + /*B0 0x64*/ .v_delay[0] = 0x27, .v_delay[1] = 0x27, .v_delay[2] = 0x27, .v_delay[3] = 0x27, .v_delay[4] = 0x27, .v_delay[5] = 0x27, + }, + }, + [ CVI_8M_12_5P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7a, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x95, .deq_a_sel[4] = 0x94, .deq_a_sel[5] = 0x95, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x7e, .contrast[1] = 0x7c, .contrast[2] = 0x7a, .contrast[3] = 0x79, .contrast[4] = 0x79, .contrast[5] = 0x79, + .h_peaking[0] = 0x20, .h_peaking[1] = 0x20, .h_peaking[2] = 0x30, .h_peaking[3] = 0x30, .h_peaking[4] = 0x30, .h_peaking[5] = 0x30, + .c_filter[0] = 0x81, .c_filter[1] = 0x91, .c_filter[2] = 0x91, .c_filter[3] = 0xa2, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x01, .hue[3] = 0x01, .hue[4] = 0x01, .hue[5] = 0x01, + .u_gain[0] = 0xd8, .u_gain[1] = 0xf0, .u_gain[2] = 0x14, .u_gain[3] = 0x14, .u_gain[4] = 0x14, .u_gain[5] = 0x14, + .v_gain[0] = 0xe0, .v_gain[1] = 0xf8, .v_gain[2] = 0x14, .v_gain[3] = 0x14, .v_gain[4] = 0x14, .v_gain[5] = 0x14, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xf6, .u_offset[3] = 0xf6, .u_offset[4] = 0xf6, .u_offset[5] = 0xf6, + .v_offset[0] = 0xfc, .v_offset[1] = 0xfc, .v_offset[2] = 0xfc, .v_offset[3] = 0xfc, .v_offset[4] = 0xfc, .v_offset[5] = 0xfc, + + .black_level[0] = 0x85, .black_level[1] = 0x85, .black_level[2] = 0x88, .black_level[3] = 0x8b, .black_level[4] = 0x8b, .black_level[5] = 0x8b, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x47, .acc_ref[5] = 0x37, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xb0, .sub_saturation[1] = 0x90, .sub_saturation[2] = 0x90, .sub_saturation[3] = 0x80, .sub_saturation[4] = 0x48, .sub_saturation[5] = 0x20, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0xc0, .c_option[1] = 0xc0, .c_option[2] = 0xc0, .c_option[3] = 0xc0, .c_option[4] = 0xc0, .c_option[5] = 0xc0, + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + .h_scaler2[0] = 0x99, .h_scaler2[1] = 0x99, .h_scaler2[2] = 0x99, .h_scaler2[3] = 0x99, .h_scaler2[4] = 0x99, .h_scaler2[5] = 0x99, + .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + .h_scaler4[0] = 0x02, .h_scaler4[1] = 0x02, .h_scaler4[2] = 0x02, .h_scaler4[3] = 0x02, .h_scaler4[4] = 0x02, .h_scaler4[5] = 0x02, + .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + .h_scaler6[0] = 0x02, .h_scaler6[1] = 0x02, .h_scaler6[2] = 0x02, .h_scaler6[3] = 0x02, .h_scaler6[4] = 0x02, .h_scaler6[5] = 0x02, + .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + .format_set1[0] = 0x01, .format_set1[1] = 0x01, .format_set1[2] = 0x01, .format_set1[3] = 0x01, .format_set1[4] = 0x01, .format_set1[5] = 0x01, + .format_set2[0] = 0x0a, .format_set2[1] = 0x0a, .format_set2[2] = 0x0a, .format_set2[3] = 0x0a, .format_set2[4] = 0x0a, .format_set2[5] = 0x0a, + + .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + [ CVI_8M_15P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7a, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x95, .deq_a_sel[4] = 0x94, .deq_a_sel[5] = 0x95, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x7e, .contrast[1] = 0x7c, .contrast[2] = 0x7a, .contrast[3] = 0x79, .contrast[4] = 0x79, .contrast[5] = 0x79, + .h_peaking[0] = 0x20, .h_peaking[1] = 0x20, .h_peaking[2] = 0x30, .h_peaking[3] = 0x30, .h_peaking[4] = 0x30, .h_peaking[5] = 0x30, + .c_filter[0] = 0x81, .c_filter[1] = 0x91, .c_filter[2] = 0x91, .c_filter[3] = 0xa2, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x01, .hue[3] = 0x01, .hue[4] = 0x01, .hue[5] = 0x01, + .u_gain[0] = 0xd8, .u_gain[1] = 0xf0, .u_gain[2] = 0x14, .u_gain[3] = 0x14, .u_gain[4] = 0x14, .u_gain[5] = 0x14, + .v_gain[0] = 0xe0, .v_gain[1] = 0xf8, .v_gain[2] = 0x14, .v_gain[3] = 0x14, .v_gain[4] = 0x14, .v_gain[5] = 0x14, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xf6, .u_offset[3] = 0xf6, .u_offset[4] = 0xf6, .u_offset[5] = 0xf6, + .v_offset[0] = 0xfc, .v_offset[1] = 0xfc, .v_offset[2] = 0xfc, .v_offset[3] = 0xfc, .v_offset[4] = 0xfc, .v_offset[5] = 0xfc, + + .black_level[0] = 0x85, .black_level[1] = 0x85, .black_level[2] = 0x88, .black_level[3] = 0x8b, .black_level[4] = 0x8b, .black_level[5] = 0x8b, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x47, .acc_ref[5] = 0x37, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xb0, .sub_saturation[1] = 0x90, .sub_saturation[2] = 0x90, .sub_saturation[3] = 0x80, .sub_saturation[4] = 0x48, .sub_saturation[5] = 0x20, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0xc0, .c_option[1] = 0xc0, .c_option[2] = 0xc0, .c_option[3] = 0xc0, .c_option[4] = 0xc0, .c_option[5] = 0xc0, + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + .h_scaler2[0] = 0x89, .h_scaler2[1] = 0x89, .h_scaler2[2] = 0x89, .h_scaler2[3] = 0x89, .h_scaler2[4] = 0x89, .h_scaler2[5] = 0x89, + .h_scaler3[0] = 0xc0, .h_scaler3[1] = 0xc0, .h_scaler3[2] = 0xc0, .h_scaler3[3] = 0xc0, .h_scaler3[4] = 0xc0, .h_scaler3[5] = 0xc0, + .h_scaler4[0] = 0x01, .h_scaler4[1] = 0x01, .h_scaler4[2] = 0x01, .h_scaler4[3] = 0x01, .h_scaler4[4] = 0x01, .h_scaler4[5] = 0x01, + .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + .h_scaler6[0] = 0x01, .h_scaler6[1] = 0x01, .h_scaler6[2] = 0x01, .h_scaler6[3] = 0x01, .h_scaler6[4] = 0x01, .h_scaler6[5] = 0x01, + .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + .format_set1[0] = 0x02, .format_set1[1] = 0x02, .format_set1[2] = 0x02, .format_set1[3] = 0x02, .format_set1[4] = 0x02, .format_set1[5] = 0x02, + .format_set2[0] = 0x0a, .format_set2[1] = 0x0a, .format_set2[2] = 0x0a, .format_set2[3] = 0x0a, .format_set2[4] = 0x0a, .format_set2[5] = 0x0a, + + .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + [ CVI_FHD_25P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x07, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x73, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7f, .eq_gain_sel[2] = 0x6f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7c, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x95, .deq_a_sel[5] = 0x93, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x84, .contrast[1] = 0x84, .contrast[2] = 0x84, .contrast[3] = 0x84, .contrast[4] = 0x84, .contrast[5] = 0x84, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, + .c_filter[0] = 0x92, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0xfc, .hue[1] = 0xfc, .hue[2] = 0xfc, .hue[3] = 0xfc, .hue[4] = 0xfc, .hue[5] = 0xfc, + .u_gain[0] = 0x0c, .u_gain[1] = 0x0c, .u_gain[2] = 0x0c, .u_gain[3] = 0x0c, .u_gain[4] = 0x40, .u_gain[5] = 0x40, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, + .u_offset[0] = 0x04, .u_offset[1] = 0x04, .u_offset[2] = 0x04, .u_offset[3] = 0x04, .u_offset[4] = 0x04, .u_offset[5] = 0x04, + .v_offset[0] = 0xfc, .v_offset[1] = 0xfa, .v_offset[2] = 0xfc, .v_offset[3] = 0xfc, .v_offset[4] = 0xfc, .v_offset[5] = 0xfc, + + .black_level[0] = 0x80, .black_level[1] = 0x80, .black_level[2] = 0x88, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x84, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x47, .acc_ref[5] = 0x47, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa0, .sub_saturation[1] = 0xa0, .sub_saturation[2] = 0xa0, .sub_saturation[3] = 0x90, .sub_saturation[4] = 0xc0, .sub_saturation[5] = 0xa0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0xa0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x7b, .h_delay_a[1] = 0x7b, .h_delay_a[2] = 0x7b, .h_delay_a[3] = 0x7b, .h_delay_a[4] = 0x7b, .h_delay_a[5] = 0x7b, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + .h_scaler2[0] = 0x49, .h_scaler2[1] = 0x49, .h_scaler2[2] = 0x49, .h_scaler2[3] = 0x49, .h_scaler2[4] = 0x49, .h_scaler2[5] = 0x49, + .h_scaler3[0] = 0x50, .h_scaler3[1] = 0x50, .h_scaler3[2] = 0x50, .h_scaler3[3] = 0x50, .h_scaler3[4] = 0x50, .h_scaler3[5] = 0x50, + .h_scaler4[0] = 0x02, .h_scaler4[1] = 0x02, .h_scaler4[2] = 0x02, .h_scaler4[3] = 0x02, .h_scaler4[4] = 0x02, .h_scaler4[5] = 0x02, + .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + .h_scaler9[0] = 0x80, .h_scaler9[1] = 0x80, .h_scaler9[2] = 0x80, .h_scaler9[3] = 0x80, .h_scaler9[4] = 0x80, .h_scaler9[5] = 0x80, + + .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + .format_set1[0] = 0x03, .format_set1[1] = 0x03, .format_set1[2] = 0x03, .format_set1[3] = 0x03, .format_set1[4] = 0x03, .format_set1[5] = 0x03, + .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, + + .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + [ CVI_FHD_30P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x07, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x73, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7f, .eq_gain_sel[2] = 0x6f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7c, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x95, .deq_a_sel[5] = 0x93, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x84, .contrast[1] = 0x84, .contrast[2] = 0x84, .contrast[3] = 0x84, .contrast[4] = 0x84, .contrast[5] = 0x84, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, + .c_filter[0] = 0x92, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0xfc, .hue[1] = 0xfc, .hue[2] = 0xfc, .hue[3] = 0xfc, .hue[4] = 0xfc, .hue[5] = 0xfc, + .u_gain[0] = 0x0c, .u_gain[1] = 0x0c, .u_gain[2] = 0x0c, .u_gain[3] = 0x0c, .u_gain[4] = 0x40, .u_gain[5] = 0x40, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, + .u_offset[0] = 0x04, .u_offset[1] = 0x04, .u_offset[2] = 0x04, .u_offset[3] = 0x04, .u_offset[4] = 0x04, .u_offset[5] = 0x04, + .v_offset[0] = 0xfc, .v_offset[1] = 0xfa, .v_offset[2] = 0xfc, .v_offset[3] = 0xfc, .v_offset[4] = 0xfc, .v_offset[5] = 0xfc, + + .black_level[0] = 0x80, .black_level[1] = 0x80, .black_level[2] = 0x88, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x84, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x47, .acc_ref[5] = 0x47, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa0, .sub_saturation[1] = 0xa0, .sub_saturation[2] = 0xa0, .sub_saturation[3] = 0x90, .sub_saturation[4] = 0xc0, .sub_saturation[5] = 0xa0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0xa0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x88, .h_delay_a[2] = 0x88, .h_delay_a[3] = 0x88, .h_delay_a[4] = 0x88, .h_delay_a[5] = 0x88, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + .h_scaler2[0] = 0x39, .h_scaler2[1] = 0x39, .h_scaler2[2] = 0x39, .h_scaler2[3] = 0x39, .h_scaler2[4] = 0x39, .h_scaler2[5] = 0x39, + .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + .h_scaler4[0] = 0x02, .h_scaler4[1] = 0x02, .h_scaler4[2] = 0x02, .h_scaler4[3] = 0x02, .h_scaler4[4] = 0x02, .h_scaler4[5] = 0x02, + .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + .h_scaler9[0] = 0x80, .h_scaler9[1] = 0x80, .h_scaler9[2] = 0x80, .h_scaler9[3] = 0x80, .h_scaler9[4] = 0x80, .h_scaler9[5] = 0x80, + .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + .format_set1[0] = 0x02, .format_set1[1] = 0x02, .format_set1[2] = 0x02, .format_set1[3] = 0x02, .format_set1[4] = 0x02, .format_set1[5] = 0x02, + .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, + + .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + + [ TVI_4M_25P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x73, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x37, .eq_band_sel[5] = 0x37, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7a, .eq_gain_sel[2] = 0x7c, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x94, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x92, .deq_a_sel[5] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x80, .contrast[1] = 0x7c, .contrast[2] = 0x7c, .contrast[3] = 0x80, .contrast[4] = 0x80, .contrast[5] = 0x80, + .h_peaking[0] = 0x10, .h_peaking[1] = 0x10, .h_peaking[2] = 0x70, .h_peaking[3] = 0x70, .h_peaking[4] = 0x70, .h_peaking[5] = 0x70, + .c_filter[0] = 0x92, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x04, .hue[2] = 0x04, .hue[3] = 0x04, .hue[4] = 0x04, .hue[5] = 0x04, + .u_gain[0] = 0x60, .u_gain[1] = 0x60, .u_gain[2] = 0x60, .u_gain[3] = 0x60, .u_gain[4] = 0x70, .u_gain[5] = 0x70, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x30, .v_gain[3] = 0x00, .v_gain[4] = 0x70, .v_gain[5] = 0x70, + .u_offset[0] = 0x0f, .u_offset[1] = 0x0f, .u_offset[2] = 0x28, .u_offset[3] = 0x0f, .u_offset[4] = 0x0f, .u_offset[5] = 0x0f, + .v_offset[0] = 0xf0, .v_offset[1] = 0xf0, .v_offset[2] = 0x00, .v_offset[3] = 0xf0, .v_offset[4] = 0xf0, .v_offset[5] = 0xf0, + + .black_level[0] = 0x84, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x8c, .black_level[4] = 0x80, .black_level[5] = 0x80, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x47, .acc_ref[3] = 0x57, .acc_ref[4] = 0x20, .acc_ref[5] = 0x20, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xe0, .sub_saturation[1] = 0xf0, .sub_saturation[2] = 0xf0, .sub_saturation[3] = 0xc0, .sub_saturation[4] = 0xc0, .sub_saturation[5] = 0xc0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x00, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0xa0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x79, .h_delay_a[1] = 0x7b, .h_delay_a[2] = 0x7b, .h_delay_a[3] = 0x7b, .h_delay_a[4] = 0x7b, .h_delay_a[5] = 0x7b, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0f, .format_set1[1] = 0x0f, .format_set1[2] = 0x0f, .format_set1[3] = 0x0f, .format_set1[4] = 0x0f, .format_set1[5] = 0x0f, + /*B0 0x85*/ .format_set2[0] = 0x03, .format_set2[1] = 0x03, .format_set2[2] = 0x03, .format_set2[3] = 0x03, .format_set2[4] = 0x03, .format_set2[5] = 0x03, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + [ TVI_4M_30P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x73, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x37, .eq_band_sel[5] = 0x37, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7a, .eq_gain_sel[2] = 0x7c, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x94, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x92, .deq_a_sel[5] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x80, .contrast[1] = 0x7c, .contrast[2] = 0x7c, .contrast[3] = 0x80, .contrast[4] = 0x80, .contrast[5] = 0x80, + .h_peaking[0] = 0x10, .h_peaking[1] = 0x10, .h_peaking[2] = 0x70, .h_peaking[3] = 0x70, .h_peaking[4] = 0x70, .h_peaking[5] = 0x70, + .c_filter[0] = 0x92, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x04, .hue[2] = 0x04, .hue[3] = 0x04, .hue[4] = 0x04, .hue[5] = 0x04, + .u_gain[0] = 0x60, .u_gain[1] = 0x60, .u_gain[2] = 0x60, .u_gain[3] = 0x60, .u_gain[4] = 0x70, .u_gain[5] = 0x70, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x30, .v_gain[3] = 0x00, .v_gain[4] = 0x70, .v_gain[5] = 0x70, + .u_offset[0] = 0x0f, .u_offset[1] = 0x0f, .u_offset[2] = 0x28, .u_offset[3] = 0x0f, .u_offset[4] = 0x0f, .u_offset[5] = 0x0f, + .v_offset[0] = 0xf0, .v_offset[1] = 0xf0, .v_offset[2] = 0x00, .v_offset[3] = 0xf0, .v_offset[4] = 0xf0, .v_offset[5] = 0xf0, + + .black_level[0] = 0x84, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x8c, .black_level[4] = 0x80, .black_level[5] = 0x80, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x47, .acc_ref[3] = 0x57, .acc_ref[4] = 0x20, .acc_ref[5] = 0x20, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xe0, .sub_saturation[1] = 0xf0, .sub_saturation[2] = 0xf0, .sub_saturation[3] = 0xc0, .sub_saturation[4] = 0xc0, .sub_saturation[5] = 0xc0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x00, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0xa0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x72, .h_delay_a[1] = 0x75, .h_delay_a[2] = 0x75, .h_delay_a[3] = 0x75, .h_delay_a[4] = 0x75, .h_delay_a[5] = 0x75, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x01, .h_delay_c[1] = 0x01, .h_delay_c[2] = 0x01, .h_delay_c[3] = 0x01, .h_delay_c[4] = 0x01, .h_delay_c[5] = 0x01, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0e, .format_set1[1] = 0x0e, .format_set1[2] = 0x0e, .format_set1[3] = 0x0e, .format_set1[4] = 0x0e, .format_set1[5] = 0x0e, + /*B0 0x85*/ .format_set2[0] = 0x03, .format_set2[1] = 0x03, .format_set2[2] = 0x03, .format_set2[3] = 0x03, .format_set2[4] = 0x03, .format_set2[5] = 0x03, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + + [ TVI_5M_20P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x37, .eq_band_sel[5] = 0x37, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7f, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x92, .deq_a_sel[5] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x6e, .contrast[1] = 0x6b, .contrast[2] = 0x98, .contrast[3] = 0x66, .contrast[4] = 0x80, .contrast[5] = 0x80, + .h_peaking[0] = 0x10, .h_peaking[1] = 0x10, .h_peaking[2] = 0x10, .h_peaking[3] = 0x00, .h_peaking[4] = 0x70, .h_peaking[5] = 0x70, + .c_filter[0] = 0x92, .c_filter[1] = 0xa2, .c_filter[2] = 0xb2, .c_filter[3] = 0xb2, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x02, .hue[3] = 0x02, .hue[4] = 0x04, .hue[5] = 0x04, + .u_gain[0] = 0x30, .u_gain[1] = 0x28, .u_gain[2] = 0x34, .u_gain[3] = 0x34, .u_gain[4] = 0x70, .u_gain[5] = 0x70, + .v_gain[0] = 0x3a, .v_gain[1] = 0x38, .v_gain[2] = 0x40, .v_gain[3] = 0x40, .v_gain[4] = 0x70, .v_gain[5] = 0x70, + .u_offset[0] = 0x02, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x0f, .u_offset[5] = 0x0f, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf0, .v_offset[5] = 0xf0, + + .black_level[0] = 0x87, .black_level[1] = 0x87, .black_level[2] = 0x88, .black_level[3] = 0x8a, .black_level[4] = 0x80, .black_level[5] = 0x80, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x20, .acc_ref[5] = 0x20, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0xa0, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0x80, .sub_saturation[1] = 0xa0, .sub_saturation[2] = 0xb0, .sub_saturation[3] = 0x9c, .sub_saturation[4] = 0x60, .sub_saturation[5] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x00, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0xa0, .c_option[2] = 0xb0, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x7b, .h_delay_a[1] = 0x7b, .h_delay_a[2] = 0x7b, .h_delay_a[3] = 0x7b, .h_delay_a[4] = 0x7b, .h_delay_a[5] = 0x7b, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0c, .format_set1[1] = 0x0c, .format_set1[2] = 0x0c, .format_set1[3] = 0x0c, .format_set1[4] = 0x0c, .format_set1[5] = 0x0c, + /*B0 0x85*/ .format_set2[0] = 0x03, .format_set2[1] = 0x03, .format_set2[2] = 0x03, .format_set2[3] = 0x03, .format_set2[4] = 0x03, .format_set2[5] = 0x03, + + /*B0 0x64*/ .v_delay[0] = 0x22, .v_delay[1] = 0x22, .v_delay[2] = 0x22, .v_delay[3] = 0x22, .v_delay[4] = 0x22, .v_delay[5] = 0x22, + }, + }, + + + [ TVI_3M_18P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x47, .eq_band_sel[5] = 0x47, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7a, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7e, .eq_gain_sel[4] = 0x7e, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x92, .deq_a_sel[5] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x6e, .contrast[1] = 0x6b, .contrast[2] = 0x98, .contrast[3] = 0x66, .contrast[4] = 0x61, .contrast[5] = 0x65, + .h_peaking[0] = 0x10, .h_peaking[1] = 0x10, .h_peaking[2] = 0x10, .h_peaking[3] = 0x00, .h_peaking[4] = 0x30, .h_peaking[5] = 0x20, + .c_filter[0] = 0x81, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xc4, .c_filter[5] = 0xc4, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x02, .hue[3] = 0x02, .hue[4] = 0x02, .hue[5] = 0x02, + .u_gain[0] = 0x30, .u_gain[1] = 0x28, .u_gain[2] = 0x34, .u_gain[3] = 0x34, .u_gain[4] = 0x34, .u_gain[5] = 0x34, + .v_gain[0] = 0x3a, .v_gain[1] = 0x38, .v_gain[2] = 0x40, .v_gain[3] = 0x40, .v_gain[4] = 0x40, .v_gain[5] = 0x40, + .u_offset[0] = 0x02, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, + + .black_level[0] = 0x87, .black_level[1] = 0x87, .black_level[2] = 0x88, .black_level[3] = 0x8a, .black_level[4] = 0x8d, .black_level[5] = 0x8e, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x47, .acc_ref[5] = 0x37, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0xa0, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0x80, .sub_saturation[1] = 0xc0, .sub_saturation[2] = 0x80, .sub_saturation[3] = 0x9c, .sub_saturation[4] = 0x00, .sub_saturation[5] = 0xa0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x00, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0xa0, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x70, .h_delay_a[1] = 0x78, .h_delay_a[2] = 0x75, .h_delay_a[3] = 0x75, .h_delay_a[4] = 0x75, .h_delay_a[5] = 0x75, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x05, .h_delay_c[1] = 0x05, .h_delay_c[2] = 0x05, .h_delay_c[3] = 0x05, .h_delay_c[4] = 0x05, .h_delay_c[5] = 0x05, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x08, .format_set1[1] = 0x08, .format_set1[2] = 0x08, .format_set1[3] = 0x08, .format_set1[4] = 0x08, .format_set1[5] = 0x08, + /*B0 0x85*/ .format_set2[0] = 0x03, .format_set2[1] = 0x03, .format_set2[2] = 0x03, .format_set2[3] = 0x03, .format_set2[4] = 0x03, .format_set2[5] = 0x03, + + /*B0 0x64*/ .v_delay[0] = 0x22, .v_delay[1] = 0x22, .v_delay[2] = 0x22, .v_delay[3] = 0x22, .v_delay[4] = 0x22, .v_delay[5] = 0x22, + }, + }, + [ TVI_4M_15P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x47, .eq_band_sel[5] = 0x47, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7a, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7e, .eq_gain_sel[4] = 0x7e, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x92, .deq_a_sel[5] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x6e, .contrast[1] = 0x6b, .contrast[2] = 0x98, .contrast[3] = 0x66, .contrast[4] = 0x61, .contrast[5] = 0x65, + .h_peaking[0] = 0x10, .h_peaking[1] = 0x10, .h_peaking[2] = 0x10, .h_peaking[3] = 0x00, .h_peaking[4] = 0x30, .h_peaking[5] = 0x20, + .c_filter[0] = 0x81, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xc4, .c_filter[5] = 0xc4, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x02, .hue[3] = 0x02, .hue[4] = 0x02, .hue[5] = 0x02, + .u_gain[0] = 0x30, .u_gain[1] = 0x28, .u_gain[2] = 0x34, .u_gain[3] = 0x34, .u_gain[4] = 0x34, .u_gain[5] = 0x34, + .v_gain[0] = 0x3a, .v_gain[1] = 0x38, .v_gain[2] = 0x40, .v_gain[3] = 0x40, .v_gain[4] = 0x40, .v_gain[5] = 0x40, + .u_offset[0] = 0x02, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, + + .black_level[0] = 0x87, .black_level[1] = 0x87, .black_level[2] = 0x88, .black_level[3] = 0x8a, .black_level[4] = 0x8d, .black_level[5] = 0x8e, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x47, .acc_ref[5] = 0x37, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0xa0, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0x80, .sub_saturation[1] = 0xc0, .sub_saturation[2] = 0x80, .sub_saturation[3] = 0x9c, .sub_saturation[4] = 0x00, .sub_saturation[5] = 0xa0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x00, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0xa0, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x7e, .h_delay_a[3] = 0x7e, .h_delay_a[4] = 0x7e, .h_delay_a[5] = 0x7e, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0d, .format_set1[1] = 0x0d, .format_set1[2] = 0x0d, .format_set1[3] = 0x0d, .format_set1[4] = 0x0d, .format_set1[5] = 0x0d, + /*B0 0x85*/ .format_set2[0] = 0x03, .format_set2[1] = 0x03, .format_set2[2] = 0x03, .format_set2[3] = 0x03, .format_set2[4] = 0x03, .format_set2[5] = 0x03, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + + + + [ TVI_5M_12_5P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x27, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7a, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7e, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x6e, .contrast[1] = 0x6b, .contrast[2] = 0x98, .contrast[3] = 0x66, .contrast[4] = 0x80, .contrast[5] = 0x80, + .h_peaking[0] = 0x10, .h_peaking[1] = 0x10, .h_peaking[2] = 0x10, .h_peaking[3] = 0x00, .h_peaking[4] = 0x70, .h_peaking[5] = 0x70, + .c_filter[0] = 0x81, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x02, .hue[3] = 0x02, .hue[4] = 0x05, .hue[5] = 0x05, + .u_gain[0] = 0x30, .u_gain[1] = 0x28, .u_gain[2] = 0x34, .u_gain[3] = 0x34, .u_gain[4] = 0x70, .u_gain[5] = 0x70, + .v_gain[0] = 0x3a, .v_gain[1] = 0x38, .v_gain[2] = 0x40, .v_gain[3] = 0x40, .v_gain[4] = 0x00, .v_gain[5] = 0x00, + .u_offset[0] = 0x02, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x04, .u_offset[5] = 0x04, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf0, .v_offset[5] = 0xf8, + + .black_level[0] = 0x87, .black_level[1] = 0x87, .black_level[2] = 0x88, .black_level[3] = 0x8a, .black_level[4] = 0x86, .black_level[5] = 0x86, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x27, .acc_ref[5] = 0x40, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0xa0, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0x80, .sub_saturation[1] = 0xc0, .sub_saturation[2] = 0x80, .sub_saturation[3] = 0x9c, .sub_saturation[4] = 0x60, .sub_saturation[5] = 0x80, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x00, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0xb0, .c_option[5] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x78, .h_delay_a[1] = 0x82, .h_delay_a[2] = 0x82, .h_delay_a[3] = 0x82, .h_delay_a[4] = 0x82, .h_delay_a[5] = 0x82, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x09, .format_set1[1] = 0x09, .format_set1[2] = 0x09, .format_set1[3] = 0x09, .format_set1[4] = 0x09, .format_set1[5] = 0x09, + /*B0 0x85*/ .format_set2[0] = 0x03, .format_set2[1] = 0x03, .format_set2[2] = 0x03, .format_set2[3] = 0x03, .format_set2[4] = 0x03, .format_set2[5] = 0x03, + + /*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, + }, + }, + + [ AHD30_4M_15P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x86, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x0f, .h_peaking[2] = 0x0f, .h_peaking[3] = 0x0f, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, + .u_gain[0] = 0x10, .u_gain[1] = 0x10, .u_gain[2] = 0x04, .u_gain[3] = 0xfc, .u_gain[4] = 0xfc, .u_gain[5] = 0xfc, + .v_gain[0] = 0x10, .v_gain[1] = 0x10, .v_gain[2] = 0x04, .v_gain[3] = 0xf4, .v_gain[4] = 0x08, .v_gain[5] = 0x08, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xfb, .u_offset[3] = 0xfb, .u_offset[4] = 0xfb, .u_offset[5] = 0xfe, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xfb, + + .black_level[0] = 0x80, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x83, .black_level[4] = 0x85, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x78, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0A, .format_set1[1] = 0x0A, .format_set1[2] = 0x0A, .format_set1[3] = 0x0A, .format_set1[4] = 0x0A, .format_set1[5] = 0x0A, + /*B0 0x85*/ .format_set2[0] = 0x04, .format_set2[1] = 0x04, .format_set2[2] = 0x04, .format_set2[3] = 0x04, .format_set2[4] = 0x04, .format_set2[5] = 0x04, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + + [ AHD30_4M_25P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x94, .deq_a_sel[3] = 0x98, .deq_a_sel[4] = 0x98, .deq_a_sel[5] = 0x98, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0xa0, .contrast[1] = 0x9c, .contrast[2] = 0x99, .contrast[3] = 0x95, .contrast[4] = 0x95, .contrast[5] = 0x8a, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x0f, .h_peaking[2] = 0x0f, .h_peaking[3] = 0x0f, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0x92, .c_filter[5] = 0xb2, + + .hue[0] = 0xfc, .hue[1] = 0xfc, .hue[2] = 0xfc, .hue[3] = 0xfc, .hue[4] = 0xfc, .hue[5] = 0xfc, + .u_gain[0] = 0x20, .u_gain[1] = 0x20, .u_gain[2] = 0x20, .u_gain[3] = 0x30, .u_gain[4] = 0x30, .u_gain[5] = 0x30, + .v_gain[0] = 0x40, .v_gain[1] = 0x40, .v_gain[2] = 0x40, .v_gain[3] = 0x20, .v_gain[4] = 0x20, .v_gain[5] = 0x20, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xfb, .u_offset[3] = 0xfb, .u_offset[4] = 0xfb, .u_offset[5] = 0xfb, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, + + .black_level[0] = 0x80, .black_level[1] = 0x8a, .black_level[2] = 0x82, .black_level[3] = 0x85, .black_level[4] = 0x85, .black_level[5] = 0x85, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xf0, .sub_saturation[1] = 0xf0, .sub_saturation[2] = 0xf0, .sub_saturation[3] = 0xf0, .sub_saturation[4] = 0xf0, .sub_saturation[5] = 0xf0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0xa0, .c_option[5] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x72, .h_delay_a[1] = 0x78, .h_delay_a[2] = 0x7a, .h_delay_a[3] = 0x7a, .h_delay_a[4] = 0x7a, .h_delay_a[5] = 0x7a, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x01, .h_delay_c[1] = 0x01, .h_delay_c[2] = 0x01, .h_delay_c[3] = 0x01, .h_delay_c[4] = 0x01, .h_delay_c[5] = 0x01, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0f, .format_set1[1] = 0x0f, .format_set1[2] = 0x0f, .format_set1[3] = 0x0f, .format_set1[4] = 0x0f, .format_set1[5] = 0x0f, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + [ AHD30_4M_30P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x94, .deq_a_sel[3] = 0x98, .deq_a_sel[4] = 0x98, .deq_a_sel[5] = 0x98, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0xa0, .contrast[1] = 0x9c, .contrast[2] = 0x99, .contrast[3] = 0x95, .contrast[4] = 0x95, .contrast[5] = 0x8a, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x0f, .h_peaking[2] = 0x0f, .h_peaking[3] = 0x0f, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0x92, .c_filter[5] = 0xb2, + + .hue[0] = 0xfc, .hue[1] = 0xfc, .hue[2] = 0xfc, .hue[3] = 0xfc, .hue[4] = 0xfc, .hue[5] = 0xfc, + .u_gain[0] = 0x20, .u_gain[1] = 0x20, .u_gain[2] = 0x20, .u_gain[3] = 0x30, .u_gain[4] = 0x30, .u_gain[5] = 0x30, + .v_gain[0] = 0x40, .v_gain[1] = 0x40, .v_gain[2] = 0x40, .v_gain[3] = 0x20, .v_gain[4] = 0x20, .v_gain[5] = 0x20, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xfb, .u_offset[3] = 0xfb, .u_offset[4] = 0xfb, .u_offset[5] = 0xfb, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, + + .black_level[0] = 0x80, .black_level[1] = 0x8a, .black_level[2] = 0x82, .black_level[3] = 0x85, .black_level[4] = 0x85, .black_level[5] = 0x85, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xf0, .sub_saturation[1] = 0xf0, .sub_saturation[2] = 0xf0, .sub_saturation[3] = 0xf0, .sub_saturation[4] = 0xf0, .sub_saturation[5] = 0xf0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0xa0, .c_option[5] = 0xb0, + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x73, .h_delay_a[1] = 0x76, .h_delay_a[2] = 0x76, .h_delay_a[3] = 0x76, .h_delay_a[4] = 0x76, .h_delay_a[5] = 0x76, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x01, .h_delay_c[1] = 0x01, .h_delay_c[2] = 0x01, .h_delay_c[3] = 0x01, .h_delay_c[4] = 0x01, .h_delay_c[5] = 0x01, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0e, .format_set1[1] = 0x0e, .format_set1[2] = 0x0e, .format_set1[3] = 0x0e, .format_set1[4] = 0x0e, .format_set1[5] = 0x0e, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + + [ AHD30_5M_12_5P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x86, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x0f, .h_peaking[2] = 0x0f, .h_peaking[3] = 0x0f, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, + .u_gain[0] = 0x10, .u_gain[1] = 0x10, .u_gain[2] = 0x04, .u_gain[3] = 0xfc, .u_gain[4] = 0xfc, .u_gain[5] = 0xfc, + .v_gain[0] = 0x10, .v_gain[1] = 0x10, .v_gain[2] = 0x04, .v_gain[3] = 0xf4, .v_gain[4] = 0x08, .v_gain[5] = 0x08, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xfb, .u_offset[3] = 0xfb, .u_offset[4] = 0xfb, .u_offset[5] = 0xfe, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xfb, + + .black_level[0] = 0x80, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x83, .black_level[4] = 0x85, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x75, .h_delay_a[1] = 0x78, .h_delay_a[2] = 0x78, .h_delay_a[3] = 0x78, .h_delay_a[4] = 0x78, .h_delay_a[5] = 0x78, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x00, .format_set1[1] = 0x00, .format_set1[2] = 0x00, .format_set1[3] = 0x00, .format_set1[4] = 0x00, .format_set1[5] = 0x00, + /*B0 0x85*/ .format_set2[0] = 0x05, .format_set2[1] = 0x05, .format_set2[2] = 0x05, .format_set2[3] = 0x05, .format_set2[4] = 0x05, .format_set2[5] = 0x05, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + + + [ AHD30_5M_20P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7e, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x98, .deq_a_sel[4] = 0x98, .deq_a_sel[5] = 0x98, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x8b, .contrast[1] = 0x87, .contrast[2] = 0x8b, .contrast[3] = 0x80, .contrast[4] = 0x7b, .contrast[5] = 0x75, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x0f, .h_peaking[2] = 0x0f, .h_peaking[3] = 0x0f, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0xfe, .hue[1] = 0xfe, .hue[2] = 0xfe, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x70, .u_gain[1] = 0x70, .u_gain[2] = 0x64, .u_gain[3] = 0x5c, .u_gain[4] = 0x5c, .u_gain[5] = 0x5c, + .v_gain[0] = 0x10, .v_gain[1] = 0x10, .v_gain[2] = 0x04, .v_gain[3] = 0xf4, .v_gain[4] = 0x08, .v_gain[5] = 0x08, + .u_offset[0] = 0xfc, .u_offset[1] = 0xfc, .u_offset[2] = 0xfc, .u_offset[3] = 0xfc, .u_offset[4] = 0xfc, .u_offset[5] = 0xfc, + .v_offset[0] = 0xf7, .v_offset[1] = 0xf7, .v_offset[2] = 0xf7, .v_offset[3] = 0xf7, .v_offset[4] = 0xf7, .v_offset[5] = 0xf7, + + .black_level[0] = 0x80, .black_level[1] = 0x80, .black_level[2] = 0x80, .black_level[3] = 0x80, .black_level[4] = 0x80, .black_level[5] = 0x80, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xe8, .sub_saturation[1] = 0xe8, .sub_saturation[2] = 0xd8, .sub_saturation[3] = 0xf8, .sub_saturation[4] = 0xe8, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0xa0, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x7b, .h_delay_a[1] = 0x7b, .h_delay_a[2] = 0x7b, .h_delay_a[3] = 0x7b, .h_delay_a[4] = 0x7b, .h_delay_a[5] = 0x7b, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x01, .format_set1[1] = 0x01, .format_set1[2] = 0x01, .format_set1[3] = 0x01, .format_set1[4] = 0x01, .format_set1[5] = 0x01, + /*B0 0x85*/ .format_set2[0] = 0x05, .format_set2[1] = 0x05, .format_set2[2] = 0x05, .format_set2[3] = 0x05, .format_set2[4] = 0x05, .format_set2[5] = 0x05, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + + [ AHD30_5_3M_20P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7e, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x98, .deq_a_sel[4] = 0x98, .deq_a_sel[5] = 0x98, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x8b, .contrast[1] = 0x87, .contrast[2] = 0x8b, .contrast[3] = 0x80, .contrast[4] = 0x7b, .contrast[5] = 0x75, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x0f, .h_peaking[2] = 0x0f, .h_peaking[3] = 0x0f, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0xfe, .hue[1] = 0xfe, .hue[2] = 0xfe, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x70, .u_gain[1] = 0x70, .u_gain[2] = 0x64, .u_gain[3] = 0x5c, .u_gain[4] = 0x5c, .u_gain[5] = 0x5c, + .v_gain[0] = 0x10, .v_gain[1] = 0x10, .v_gain[2] = 0x04, .v_gain[3] = 0xf4, .v_gain[4] = 0x08, .v_gain[5] = 0x08, + .u_offset[0] = 0xfc, .u_offset[1] = 0xfc, .u_offset[2] = 0xfc, .u_offset[3] = 0xfc, .u_offset[4] = 0xfc, .u_offset[5] = 0xfc, + .v_offset[0] = 0xf7, .v_offset[1] = 0xf7, .v_offset[2] = 0xf7, .v_offset[3] = 0xf7, .v_offset[4] = 0xf7, .v_offset[5] = 0xf7, + + .black_level[0] = 0x80, .black_level[1] = 0x80, .black_level[2] = 0x80, .black_level[3] = 0x80, .black_level[4] = 0x80, .black_level[5] = 0x80, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xe8, .sub_saturation[1] = 0xe8, .sub_saturation[2] = 0xd8, .sub_saturation[3] = 0xf8, .sub_saturation[4] = 0xe8, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0xa0, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x7f, .h_delay_a[4] = 0x7f, .h_delay_a[5] = 0x7f, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x03, .format_set1[1] = 0x03, .format_set1[2] = 0x03, .format_set1[3] = 0x03, .format_set1[4] = 0x03, .format_set1[5] = 0x03, + /*B0 0x85*/ .format_set2[0] = 0x05, .format_set2[1] = 0x05, .format_set2[2] = 0x05, .format_set2[3] = 0x05, .format_set2[4] = 0x05, .format_set2[5] = 0x05, + + /*B0 0x64*/ .v_delay[0] = 0x24, .v_delay[1] = 0x24, .v_delay[2] = 0x24, .v_delay[3] = 0x24, .v_delay[4] = 0x24, .v_delay[5] = 0x24, + }, + }, + + [ AHD30_3M_18P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x86, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x0f, .h_peaking[2] = 0x0f, .h_peaking[3] = 0x0f, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, + .u_gain[0] = 0x10, .u_gain[1] = 0x10, .u_gain[2] = 0x04, .u_gain[3] = 0xfc, .u_gain[4] = 0xfc, .u_gain[5] = 0xfc, + .v_gain[0] = 0x10, .v_gain[1] = 0x10, .v_gain[2] = 0x04, .v_gain[3] = 0xf4, .v_gain[4] = 0x08, .v_gain[5] = 0x08, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xfb, .u_offset[3] = 0xfb, .u_offset[4] = 0xfb, .u_offset[5] = 0xfe, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xfb, + + .black_level[0] = 0x80, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x83, .black_level[4] = 0x85, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x63, .h_delay_a[1] = 0x65, .h_delay_a[2] = 0x65, .h_delay_a[3] = 0x65, .h_delay_a[4] = 0x65, .h_delay_a[5] = 0x65, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x04, .format_set1[1] = 0x04, .format_set1[2] = 0x04, .format_set1[3] = 0x04, .format_set1[4] = 0x04, .format_set1[5] = 0x04, + /*B0 0x85*/ .format_set2[0] = 0x04, .format_set2[1] = 0x04, .format_set2[2] = 0x04, .format_set2[3] = 0x04, .format_set2[4] = 0x04, .format_set2[5] = 0x04, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + + [ AHD30_3M_25P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7e, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x98, .deq_a_sel[4] = 0x98, .deq_a_sel[5] = 0x98, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x80, .contrast[1] = 0x7c, .contrast[2] = 0x79, .contrast[3] = 0x75, .contrast[4] = 0x70, .contrast[5] = 0x7a, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x0f, .h_peaking[2] = 0x0f, .h_peaking[3] = 0x0f, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x04, .hue[1] = 0x04, .hue[2] = 0x04, .hue[3] = 0x04, .hue[4] = 0x04, .hue[5] = 0x04, + .u_gain[0] = 0x10, .u_gain[1] = 0x10, .u_gain[2] = 0x04, .u_gain[3] = 0xfc, .u_gain[4] = 0xfc, .u_gain[5] = 0xfc, + .v_gain[0] = 0x10, .v_gain[1] = 0x10, .v_gain[2] = 0x04, .v_gain[3] = 0xf4, .v_gain[4] = 0x08, .v_gain[5] = 0x08, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xfb, .u_offset[3] = 0xfb, .u_offset[4] = 0xfb, .u_offset[5] = 0xfb, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, + + .black_level[0] = 0x80, .black_level[1] = 0x82, .black_level[2] = 0x82, .black_level[3] = 0x85, .black_level[4] = 0x89, .black_level[5] = 0x8c, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xb0, .sub_saturation[1] = 0xb0, .sub_saturation[2] = 0xa0, .sub_saturation[3] = 0xd0, .sub_saturation[4] = 0xb4, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x03, .format_set1[1] = 0x03, .format_set1[2] = 0x03, .format_set1[3] = 0x03, .format_set1[4] = 0x03, .format_set1[5] = 0x03, + /*B0 0x85*/ .format_set2[0] = 0x04, .format_set2[1] = 0x04, .format_set2[2] = 0x04, .format_set2[3] = 0x04, .format_set2[4] = 0x04, .format_set2[5] = 0x04, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + [ AHD30_3M_30P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7e, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x98, .deq_a_sel[4] = 0x98, .deq_a_sel[5] = 0x98, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x80, .contrast[1] = 0x7c, .contrast[2] = 0x79, .contrast[3] = 0x75, .contrast[4] = 0x70, .contrast[5] = 0x7a, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x0f, .h_peaking[2] = 0x0f, .h_peaking[3] = 0x0f, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x04, .hue[1] = 0x04, .hue[2] = 0x04, .hue[3] = 0x04, .hue[4] = 0x04, .hue[5] = 0x04, + .u_gain[0] = 0x10, .u_gain[1] = 0x10, .u_gain[2] = 0x04, .u_gain[3] = 0xfc, .u_gain[4] = 0xfc, .u_gain[5] = 0xfc, + .v_gain[0] = 0x10, .v_gain[1] = 0x10, .v_gain[2] = 0x04, .v_gain[3] = 0xf4, .v_gain[4] = 0x08, .v_gain[5] = 0x08, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xfb, .u_offset[3] = 0xfb, .u_offset[4] = 0xfb, .u_offset[5] = 0xfb, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, + + .black_level[0] = 0x80, .black_level[1] = 0x82, .black_level[2] = 0x82, .black_level[3] = 0x85, .black_level[4] = 0x89, .black_level[5] = 0x8c, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xb0, .sub_saturation[1] = 0xb0, .sub_saturation[2] = 0xa0, .sub_saturation[3] = 0xd0, .sub_saturation[4] = 0xb4, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x02, .format_set1[1] = 0x02, .format_set1[2] = 0x02, .format_set1[3] = 0x02, .format_set1[4] = 0x02, .format_set1[5] = 0x02, + /*B0 0x85*/ .format_set2[0] = 0x04, .format_set2[1] = 0x04, .format_set2[2] = 0x04, .format_set2[3] = 0x04, .format_set2[4] = 0x04, .format_set2[5] = 0x04, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + + + [ AHD20_1080P_25P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x62, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x88, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x8e, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x88, .contrast[2] = 0x88, .contrast[3] = 0x88, .contrast[4] = 0x88, .contrast[5] = 0x7e, + .h_peaking[0] = 0x3f, .h_peaking[1] = 0x3f, .h_peaking[2] = 0x3f, .h_peaking[3] = 0x3f, .h_peaking[4] = 0x3f, .h_peaking[5] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0x92, + + .hue[0] = 0xfe, .hue[1] = 0xfe, .hue[2] = 0xfe, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x30, .u_gain[1] = 0x30, .u_gain[2] = 0x30, .u_gain[3] = 0x30, .u_gain[4] = 0x30, .u_gain[5] = 0x30, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0xf0, .v_gain[4] = 0xf0, .v_gain[5] = 0xf0, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x86, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xc0, .sub_saturation[1] = 0xc0, .sub_saturation[2] = 0xb8, .sub_saturation[3] = 0xb8, .sub_saturation[4] = 0xb0, .sub_saturation[5] = 0xb0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x78, .h_delay_a[1] = 0x7a, .h_delay_a[2] = 0x7a, .h_delay_a[3] = 0x7a, .h_delay_a[4] = 0x7a, .h_delay_a[5] = 0x7a, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x01, .h_delay_c[1] = 0x01, .h_delay_c[2] = 0x01, .h_delay_c[3] = 0x01, .h_delay_c[4] = 0x01, .h_delay_c[5] = 0x01, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x03, .format_set1[1] = 0x03, .format_set1[2] = 0x03, .format_set1[3] = 0x03, .format_set1[4] = 0x03, .format_set1[5] = 0x03, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + [ AHD20_1080P_30P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x62, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x88, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x8e, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x88, .contrast[2] = 0x88, .contrast[3] = 0x88, .contrast[4] = 0x88, .contrast[5] = 0x7e, + .h_peaking[0] = 0x3f, .h_peaking[1] = 0x3f, .h_peaking[2] = 0x3f, .h_peaking[3] = 0x3f, .h_peaking[4] = 0x3f, .h_peaking[5] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0x92, + + .hue[0] = 0xfe, .hue[1] = 0xfe, .hue[2] = 0xfe, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x30, .u_gain[1] = 0x30, .u_gain[2] = 0x30, .u_gain[3] = 0x30, .u_gain[4] = 0x30, .u_gain[5] = 0x30, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0xf0, .v_gain[4] = 0xf0, .v_gain[5] = 0xf0, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x86, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xc0, .sub_saturation[1] = 0xc0, .sub_saturation[2] = 0xb8, .sub_saturation[3] = 0xb8, .sub_saturation[4] = 0xb0, .sub_saturation[5] = 0xb0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x70, .h_delay_a[1] = 0x78, .h_delay_a[2] = 0x70, .h_delay_a[3] = 0x70, .h_delay_a[4] = 0x70, .h_delay_a[5] = 0x70, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x02, .format_set1[1] = 0x02, .format_set1[2] = 0x02, .format_set1[3] = 0x02, .format_set1[4] = 0x02, .format_set1[5] = 0x02, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + [ AHD20_1080P_12_5P_EX ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x62, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x86, .deq_a_sel[2] = 0x88, .deq_a_sel[3] = 0x8d, .deq_a_sel[4] = 0x94, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x86, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x04, .u_gain[3] = 0x10, .u_gain[4] = 0x10, .u_gain[5] = 0x18, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0x0e, .v_gain[4] = 0x0e, .v_gain[5] = 0x14, + .u_offset[0] = 0xfe, .u_offset[1] = 0xfe, .u_offset[2] = 0xfe, .u_offset[3] = 0xfe, .u_offset[4] = 0xfe, .u_offset[5] = 0xfe, + .v_offset[0] = 0xfb, .v_offset[1] = 0xfb, .v_offset[2] = 0xfb, .v_offset[3] = 0xfb, .v_offset[4] = 0xfb, .v_offset[5] = 0xfb, + + .black_level[0] = 0x80, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x83, .black_level[4] = 0x83, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x05, .y_delay[1] = 0x03, .y_delay[2] = 0x03, .y_delay[3] = 0x03, .y_delay[4] = 0x03, .y_delay[5] = 0x03, + + }, + /* clk */ + { + + .clk_adc[0] = 0x0a, .clk_adc[1] = 0x0a, .clk_adc[2] = 0x0a, .clk_adc[3] = 0x0a, .clk_adc[4] = 0x0a, .clk_adc[5] = 0x0a, + .clk_dec[0] = 0x4a, .clk_dec[1] = 0x4a, .clk_dec[2] = 0x4a, .clk_dec[3] = 0x4a, .clk_dec[4] = 0x4a, .clk_dec[5] = 0x4a, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x03, .format_set1[1] = 0x03, .format_set1[2] = 0x03, .format_set1[3] = 0x03, .format_set1[4] = 0x03, .format_set1[5] = 0x03, + /*B0 0x85*/ .format_set2[0] = 0x10, .format_set2[1] = 0x10, .format_set2[2] = 0x10, .format_set2[3] = 0x10, .format_set2[4] = 0x10, .format_set2[5] = 0x10, + + /*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, + }, + }, + [ AHD20_1080P_15P_EX ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x62, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x86, .deq_a_sel[2] = 0x88, .deq_a_sel[3] = 0x8d, .deq_a_sel[4] = 0x94, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x86, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x04, .u_gain[3] = 0x10, .u_gain[4] = 0x10, .u_gain[5] = 0x18, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0x0e, .v_gain[4] = 0x0e, .v_gain[5] = 0x14, + .u_offset[0] = 0xfe, .u_offset[1] = 0xfe, .u_offset[2] = 0xfe, .u_offset[3] = 0xfe, .u_offset[4] = 0xfe, .u_offset[5] = 0xfe, + .v_offset[0] = 0xfb, .v_offset[1] = 0xfb, .v_offset[2] = 0xfb, .v_offset[3] = 0xfb, .v_offset[4] = 0xfb, .v_offset[5] = 0xfb, + + .black_level[0] = 0x80, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x83, .black_level[4] = 0x83, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x30, .burst_dec_c[1] = 0x30, .burst_dec_c[2] = 0x30, .burst_dec_c[3] = 0x30, .burst_dec_c[4] = 0x30, .burst_dec_c[5] = 0x30, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x05, .y_delay[1] = 0x03, .y_delay[2] = 0x03, .y_delay[3] = 0x03, .y_delay[4] = 0x03, .y_delay[5] = 0x03, + + }, + /* clk */ + { + .clk_adc[0] = 0x0a, .clk_adc[1] = 0x0a, .clk_adc[2] = 0x0a, .clk_adc[3] = 0x0a, .clk_adc[4] = 0x0a, .clk_adc[5] = 0x0a, + .clk_dec[0] = 0x4a, .clk_dec[1] = 0x4a, .clk_dec[2] = 0x4a, .clk_dec[3] = 0x4a, .clk_dec[4] = 0x4a, .clk_dec[5] = 0x4a, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x02, .format_set1[1] = 0x02, .format_set1[2] = 0x02, .format_set1[3] = 0x02, .format_set1[4] = 0x02, .format_set1[5] = 0x02, + /*B0 0x85*/ .format_set2[0] = 0x10, .format_set2[1] = 0x10, .format_set2[2] = 0x10, .format_set2[3] = 0x10, .format_set2[4] = 0x10, .format_set2[5] = 0x10, + + /*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, + }, + }, + + [ AHD20_1080P_50P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x62, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x88, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x8e, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x88, .contrast[2] = 0x88, .contrast[3] = 0x88, .contrast[4] = 0x88, .contrast[5] = 0x7e, + .h_peaking[0] = 0x3f, .h_peaking[1] = 0x3f, .h_peaking[2] = 0x3f, .h_peaking[3] = 0x3f, .h_peaking[4] = 0x3f, .h_peaking[5] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0x92, + + .hue[0] = 0xfe, .hue[1] = 0xfe, .hue[2] = 0xfe, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x30, .u_gain[1] = 0x30, .u_gain[2] = 0x30, .u_gain[3] = 0x30, .u_gain[4] = 0x30, .u_gain[5] = 0x30, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0xf0, .v_gain[4] = 0xf0, .v_gain[5] = 0xf0, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x86, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xc0, .sub_saturation[1] = 0xc0, .sub_saturation[2] = 0xb8, .sub_saturation[3] = 0xb8, .sub_saturation[4] = 0xb0, .sub_saturation[5] = 0xb0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x8e, .h_delay_a[2] = 0x8a, .h_delay_a[3] = 0x86, .h_delay_a[4] = 0x86, .h_delay_a[5] = 0x86, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x03, .format_set1[1] = 0x03, .format_set1[2] = 0x03, .format_set1[3] = 0x03, .format_set1[4] = 0x03, .format_set1[5] = 0x03, + /*B0 0x85*/ .format_set2[0] = 0x0b, .format_set2[1] = 0x0b, .format_set2[2] = 0x0b, .format_set2[3] = 0x0b, .format_set2[4] = 0x0b, .format_set2[5] = 0x0b, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + + [ AHD20_1080P_60P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x62, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x88, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x8e, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x88, .contrast[2] = 0x88, .contrast[3] = 0x88, .contrast[4] = 0x88, .contrast[5] = 0x7e, + .h_peaking[0] = 0x3f, .h_peaking[1] = 0x3f, .h_peaking[2] = 0x3f, .h_peaking[3] = 0x3f, .h_peaking[4] = 0x3f, .h_peaking[5] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0x92, + + .hue[0] = 0xfe, .hue[1] = 0xfe, .hue[2] = 0xfe, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x30, .u_gain[1] = 0x30, .u_gain[2] = 0x30, .u_gain[3] = 0x30, .u_gain[4] = 0x30, .u_gain[5] = 0x30, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0xf0, .v_gain[4] = 0xf0, .v_gain[5] = 0xf0, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x86, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xc0, .sub_saturation[1] = 0xc0, .sub_saturation[2] = 0xb8, .sub_saturation[3] = 0xb8, .sub_saturation[4] = 0xb0, .sub_saturation[5] = 0xb0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x8e, .h_delay_a[2] = 0x8a, .h_delay_a[3] = 0x86, .h_delay_a[4] = 0x86, .h_delay_a[5] = 0x86, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x02, .format_set1[1] = 0x02, .format_set1[2] = 0x02, .format_set1[3] = 0x02, .format_set1[4] = 0x02, .format_set1[5] = 0x02, + /*B0 0x85*/ .format_set2[0] = 0x0b, .format_set2[1] = 0x0b, .format_set2[2] = 0x0b, .format_set2[3] = 0x0b, .format_set2[4] = 0x0b, .format_set2[5] = 0x0b, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + + [ AHD30_8M_7_5P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x86, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x7e, .contrast[4] = 0x7c, .contrast[5] = 0x77, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x0f, .h_peaking[2] = 0x0f, .h_peaking[3] = 0x0f, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, + .u_gain[0] = 0x10, .u_gain[1] = 0x10, .u_gain[2] = 0x04, .u_gain[3] = 0xfc, .u_gain[4] = 0xfc, .u_gain[5] = 0xfc, + .v_gain[0] = 0x10, .v_gain[1] = 0x10, .v_gain[2] = 0x04, .v_gain[3] = 0xf4, .v_gain[4] = 0x08, .v_gain[5] = 0x08, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xfb, .u_offset[3] = 0xfb, .u_offset[4] = 0xfb, .u_offset[5] = 0xfe, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xfb, + + .black_level[0] = 0x80, .black_level[1] = 0x81, .black_level[2] = 0x81, .black_level[3] = 0x83, .black_level[4] = 0x85, .black_level[5] = 0x87, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa8, .sub_saturation[2] = 0xa8, .sub_saturation[3] = 0xa8, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x05, .y_delay[1] = 0x03, .y_delay[2] = 0x03, .y_delay[3] = 0x03, .y_delay[4] = 0x03, .y_delay[5] = 0x03, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x00, .format_set1[1] = 0x00, .format_set1[2] = 0x00, .format_set1[3] = 0x00, .format_set1[4] = 0x00, .format_set1[5] = 0x00, + /*B0 0x85*/ .format_set2[0] = 0x08, .format_set2[1] = 0x08, .format_set2[2] = 0x08, .format_set2[3] = 0x08, .format_set2[4] = 0x08, .format_set2[5] = 0x08, + + /*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, + }, + }, + + [ AHD30_8M_12_5P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7e, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x98, .deq_a_sel[4] = 0x98, .deq_a_sel[5] = 0x98, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0xa0, .contrast[1] = 0x9c, .contrast[2] = 0x90, .contrast[3] = 0x95, .contrast[4] = 0x90, .contrast[5] = 0x8a, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x0f, .h_peaking[2] = 0x0f, .h_peaking[3] = 0x0f, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x04, .hue[1] = 0x04, .hue[2] = 0x04, .hue[3] = 0x04, .hue[4] = 0x04, .hue[5] = 0x04, + .u_gain[0] = 0x10, .u_gain[1] = 0x10, .u_gain[2] = 0x04, .u_gain[3] = 0xfc, .u_gain[4] = 0xfc, .u_gain[5] = 0xfc, + .v_gain[0] = 0x10, .v_gain[1] = 0x10, .v_gain[2] = 0x04, .v_gain[3] = 0xf4, .v_gain[4] = 0x08, .v_gain[5] = 0x08, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xfb, .u_offset[3] = 0xfb, .u_offset[4] = 0xfb, .u_offset[5] = 0xfb, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, + + .black_level[0] = 0x84, .black_level[1] = 0x82, .black_level[2] = 0x84, .black_level[3] = 0x85, .black_level[4] = 0x89, .black_level[5] = 0x8c, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xb0, .sub_saturation[1] = 0xb0, .sub_saturation[2] = 0xa0, .sub_saturation[3] = 0xd0, .sub_saturation[4] = 0xb4, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x7f, .h_delay_a[4] = 0x7f, .h_delay_a[5] = 0x7f, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x01, .format_set1[1] = 0x01, .format_set1[2] = 0x01, .format_set1[3] = 0x01, .format_set1[4] = 0x01, .format_set1[5] = 0x01, + /*B0 0x85*/ .format_set2[0] = 0x08, .format_set2[1] = 0x08, .format_set2[2] = 0x08, .format_set2[3] = 0x08, .format_set2[4] = 0x08, .format_set2[5] = 0x08, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + [ AHD30_8M_15P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7b, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7e, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x98, .deq_a_sel[4] = 0x98, .deq_a_sel[5] = 0x98, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x20, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0xa0, .contrast[1] = 0x9c, .contrast[2] = 0x90, .contrast[3] = 0x95, .contrast[4] = 0x90, .contrast[5] = 0x8a, + .h_peaking[0] = 0x0f, .h_peaking[1] = 0x0f, .h_peaking[2] = 0x0f, .h_peaking[3] = 0x0f, .h_peaking[4] = 0x0f, .h_peaking[5] = 0x0f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xb2, + + .hue[0] = 0x04, .hue[1] = 0x04, .hue[2] = 0x04, .hue[3] = 0x04, .hue[4] = 0x04, .hue[5] = 0x04, + .u_gain[0] = 0x10, .u_gain[1] = 0x10, .u_gain[2] = 0x04, .u_gain[3] = 0xfc, .u_gain[4] = 0xfc, .u_gain[5] = 0xfc, + .v_gain[0] = 0x10, .v_gain[1] = 0x10, .v_gain[2] = 0x04, .v_gain[3] = 0xf4, .v_gain[4] = 0x08, .v_gain[5] = 0x08, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xfb, .u_offset[3] = 0xfb, .u_offset[4] = 0xfb, .u_offset[5] = 0xfb, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, + + .black_level[0] = 0x84, .black_level[1] = 0x82, .black_level[2] = 0x84, .black_level[3] = 0x85, .black_level[4] = 0x89, .black_level[5] = 0x8c, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xb0, .sub_saturation[1] = 0xb0, .sub_saturation[2] = 0xa0, .sub_saturation[3] = 0xd0, .sub_saturation[4] = 0xb4, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x6c, .h_delay_a[1] = 0x6c, .h_delay_a[2] = 0x6c, .h_delay_a[3] = 0x6c, .h_delay_a[4] = 0x6c, .h_delay_a[5] = 0x6c, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x02, .h_delay_c[1] = 0x02, .h_delay_c[2] = 0x02, .h_delay_c[3] = 0x02, .h_delay_c[4] = 0x02, .h_delay_c[5] = 0x02, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x02, .format_set1[1] = 0x02, .format_set1[2] = 0x02, .format_set1[3] = 0x02, .format_set1[4] = 0x02, .format_set1[5] = 0x02, + /*B0 0x85*/ .format_set2[0] = 0x08, .format_set2[1] = 0x08, .format_set2[2] = 0x08, .format_set2[3] = 0x08, .format_set2[4] = 0x08, .format_set2[5] = 0x08, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + + [ TVI_FHD_25P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x67, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x27, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x92, .deq_a_sel[5] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x82, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x82, .contrast[4] = 0x80, .contrast[5] = 0x80, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x70, .h_peaking[5] = 0x70, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x92, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x05, .hue[1] = 0x05, .hue[2] = 0x05, .hue[3] = 0x05, .hue[4] = 0x05, .hue[5] = 0x05, + .u_gain[0] = 0x50, .u_gain[1] = 0x50, .u_gain[2] = 0x50, .u_gain[3] = 0x50, .u_gain[4] = 0x70, .u_gain[5] = 0x70, + .v_gain[0] = 0xf0, .v_gain[1] = 0xf0, .v_gain[2] = 0xf0, .v_gain[3] = 0xf0, .v_gain[4] = 0x00, .v_gain[5] = 0x00, + .u_offset[0] = 0x04, .u_offset[1] = 0x04, .u_offset[2] = 0x04, .u_offset[3] = 0x04, .u_offset[4] = 0x04, .u_offset[5] = 0x04, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf0, .v_offset[5] = 0xf8, + + .black_level[0] = 0x88, .black_level[1] = 0x8c, .black_level[2] = 0x8a, .black_level[3] = 0x8a, .black_level[4] = 0x86, .black_level[5] = 0x86, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x40, .acc_ref[5] = 0x40, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xf0, .sub_saturation[1] = 0xf0, .sub_saturation[2] = 0xe0, .sub_saturation[3] = 0xe0, .sub_saturation[4] = 0xd0, .sub_saturation[5] = 0xd0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0xb0, .c_option[5] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x70, .h_delay_a[1] = 0x70, .h_delay_a[2] = 0x72, .h_delay_a[3] = 0x75, .h_delay_a[4] = 0x7b, .h_delay_a[5] = 0x7b, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x01, .h_delay_c[1] = 0x01, .h_delay_c[2] = 0x01, .h_delay_c[3] = 0x01, .h_delay_c[4] = 0x01, .h_delay_c[5] = 0x01, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x03, .format_set1[1] = 0x03, .format_set1[2] = 0x03, .format_set1[3] = 0x03, .format_set1[4] = 0x03, .format_set1[5] = 0x03, + /*B0 0x85*/ .format_set2[0] = 0x01, .format_set2[1] = 0x01, .format_set2[2] = 0x01, .format_set2[3] = 0x01, .format_set2[4] = 0x01, .format_set2[5] = 0x01, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + [ TVI_FHD_30P ] = + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x67, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x27, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x92, .deq_a_sel[5] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x82, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x82, .contrast[4] = 0x80, .contrast[5] = 0x80, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x70, .h_peaking[5] = 0x70, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x92, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x05, .hue[1] = 0x05, .hue[2] = 0x05, .hue[3] = 0x05, .hue[4] = 0x05, .hue[5] = 0x05, + .u_gain[0] = 0x50, .u_gain[1] = 0x50, .u_gain[2] = 0x50, .u_gain[3] = 0x50, .u_gain[4] = 0x70, .u_gain[5] = 0x70, + .v_gain[0] = 0xf0, .v_gain[1] = 0xf0, .v_gain[2] = 0xf0, .v_gain[3] = 0xf0, .v_gain[4] = 0x00, .v_gain[5] = 0x00, + .u_offset[0] = 0x04, .u_offset[1] = 0x04, .u_offset[2] = 0x04, .u_offset[3] = 0x04, .u_offset[4] = 0x04, .u_offset[5] = 0x04, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf0, .v_offset[5] = 0xf8, + + .black_level[0] = 0x88, .black_level[1] = 0x8c, .black_level[2] = 0x8a, .black_level[3] = 0x8a, .black_level[4] = 0x86, .black_level[5] = 0x86, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x40, .acc_ref[5] = 0x40, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xf0, .sub_saturation[1] = 0xf0, .sub_saturation[2] = 0xe0, .sub_saturation[3] = 0xe0, .sub_saturation[4] = 0xd0, .sub_saturation[5] = 0xd0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0xb0, .c_option[5] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x70, .h_delay_a[1] = 0x70, .h_delay_a[2] = 0x73, .h_delay_a[3] = 0x75, .h_delay_a[4] = 0x75, .h_delay_a[5] = 0x75, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x02, .format_set1[1] = 0x02, .format_set1[2] = 0x02, .format_set1[3] = 0x02, .format_set1[4] = 0x02, .format_set1[5] = 0x02, + /*B0 0x85*/ .format_set2[0] = 0x01, .format_set2[1] = 0x01, .format_set2[2] = 0x01, .format_set2[3] = 0x01, .format_set2[4] = 0x01, .format_set2[5] = 0x01, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + + + [ AHD20_720P_25P_EX_Btype ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x62, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, .eq_band_sel[6] = 0x47, .eq_band_sel[7] = 0x47, .eq_band_sel[8] = 0x27, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x17, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x86, .deq_a_sel[2] = 0x88, .deq_a_sel[3] = 0x8d, .deq_a_sel[4] = 0x8e, .deq_a_sel[5] = 0x94, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x94, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x8d, .deq_a_sel[10] = 0x8d, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x88, .contrast[2] = 0x88, .contrast[3] = 0x88, .contrast[4] = 0x88, .contrast[5] = 0x7e, .contrast[6] = 0x78, .contrast[7] = 0x74, .contrast[8] = 0x74, .contrast[9] = 0x74, .contrast[10] = 0x74, + .h_peaking[0] = 0x3f, .h_peaking[1] = 0x3f, .h_peaking[2] = 0x3f, .h_peaking[3] = 0x3f, .h_peaking[4] = 0x3f, .h_peaking[5] = 0x3f, .h_peaking[6] = 0x3f, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x4f, .h_peaking[10] = 0x4f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0x92, .c_filter[6] = 0x92, .c_filter[7] = 0x92, .c_filter[8] = 0x92, .c_filter[9] = 0x92, .c_filter[10] = 0x92, + + .hue[0] = 0xfe, .hue[1] = 0xfe, .hue[2] = 0xfe, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, .hue[6] = 0xfe, .hue[7] = 0xfe, .hue[8] = 0xfe, .hue[9] = 0xfe, .hue[10] = 0xfe, + .u_gain[0] = 0x30, .u_gain[1] = 0x30, .u_gain[2] = 0x30, .u_gain[3] = 0x30, .u_gain[4] = 0x30, .u_gain[5] = 0x30, .u_gain[6] = 0x30, .u_gain[7] = 0x30, .u_gain[8] = 0x30, .u_gain[9] = 0x30, .u_gain[10] = 0x30, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, .u_offset[6] = 0x00, .u_offset[7] = 0x00, .u_offset[8] = 0x00, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x86, .black_level[6] = 0x86, .black_level[7] = 0x8c, .black_level[8] = 0x8c, .black_level[9] = 0x90, .black_level[10] = 0x90, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x57, .acc_ref[8] = 0x57, .acc_ref[9] = 0x47, .acc_ref[10] = 0x47, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x90, .cti_delay[10] = 0x90, + .sub_saturation[0] = 0xb0, .sub_saturation[1] = 0xab, .sub_saturation[2] = 0xb0, .sub_saturation[3] = 0xb0, .sub_saturation[4] = 0xa4, .sub_saturation[5] = 0xa0, .sub_saturation[6] = 0xa0, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x90, .sub_saturation[10] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0x90, .c_option[5] = 0x90, .c_option[6] = 0x90, .c_option[7] = 0x90, .c_option[8] = 0x90, .c_option[9] = 0x90, .c_option[10] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0xa0, .h_delay_a[2] = 0x9e, .h_delay_a[3] = 0x9b, .h_delay_a[4] = 0x99, .h_delay_a[5] = 0x99, .h_delay_a[6] = 0x9b, .h_delay_a[7] = 0x98, .h_delay_a[8] = 0x98, .h_delay_a[9] = 0x98, .h_delay_a[10] = 0x98, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, .h_delay_c[6] = 0x00, .h_delay_c[7] = 0x00, .h_delay_c[8] = 0x00, .h_delay_c[9] = 0x00, .h_delay_c[10] = 0x00, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, .h_scaler1[6] = 0x00, .h_scaler1[7] = 0x00, .h_scaler1[8] = 0x00, .h_scaler1[9] = 0x00, .h_scaler1[10] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, .h_scaler2[6] = 0x00, .h_scaler2[7] = 0x00, .h_scaler2[8] = 0x00, .h_scaler2[9] = 0x00, .h_scaler2[10] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, .h_scaler3[6] = 0x00, .h_scaler3[7] = 0x00, .h_scaler3[8] = 0x00, .h_scaler3[9] = 0x00, .h_scaler3[10] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, .comb_mode[6] = 0x01, .comb_mode[7] = 0x01, .comb_mode[8] = 0x01, .comb_mode[9] = 0x01, .comb_mode[10] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, .mem_path[6] = 0x00, .mem_path[7] = 0x00, .mem_path[8] = 0x00, .mem_path[9] = 0x00, .mem_path[10] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0d, .format_set1[1] = 0x0d, .format_set1[2] = 0x0d, .format_set1[3] = 0x0d, .format_set1[4] = 0x0d, .format_set1[5] = 0x0d, .format_set1[6] = 0x0d, .format_set1[7] = 0x0d, .format_set1[8] = 0x0d, .format_set1[9] = 0x0d, .format_set1[10] = 0x0d, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, .format_set2[6] = 0x00, .format_set2[7] = 0x00, .format_set2[8] = 0x00, .format_set2[9] = 0x00, .format_set2[10] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, .v_delay[6] = 0x00, .v_delay[7] = 0x00, .v_delay[8] = 0x00, .v_delay[9] = 0x00, .v_delay[10] = 0x00, + }, + }, + [ AHD20_720P_30P_EX_Btype ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x62, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, .eq_band_sel[6] = 0x47, .eq_band_sel[7] = 0x47, .eq_band_sel[8] = 0x27, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x17, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x86, .deq_a_sel[2] = 0x88, .deq_a_sel[3] = 0x8d, .deq_a_sel[4] = 0x8e, .deq_a_sel[5] = 0x94, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x94, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x8d, .deq_a_sel[10] = 0x8d, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x88, .contrast[2] = 0x88, .contrast[3] = 0x88, .contrast[4] = 0x88, .contrast[5] = 0x7e, .contrast[6] = 0x78, .contrast[7] = 0x74, .contrast[8] = 0x74, .contrast[9] = 0x74, .contrast[10] = 0x74, + .h_peaking[0] = 0x3f, .h_peaking[1] = 0x3f, .h_peaking[2] = 0x3f, .h_peaking[3] = 0x3f, .h_peaking[4] = 0x3f, .h_peaking[5] = 0x3f, .h_peaking[6] = 0x3f, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x4f, .h_peaking[10] = 0x4f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0x92, .c_filter[6] = 0x92, .c_filter[7] = 0x92, .c_filter[8] = 0x92, .c_filter[9] = 0x92, .c_filter[10] = 0x92, + + .hue[0] = 0xfe, .hue[1] = 0xfe, .hue[2] = 0xfe, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, .hue[6] = 0xfe, .hue[7] = 0xfe, .hue[8] = 0xfe, .hue[9] = 0xfe, .hue[10] = 0xfe, + .u_gain[0] = 0x30, .u_gain[1] = 0x30, .u_gain[2] = 0x30, .u_gain[3] = 0x30, .u_gain[4] = 0x30, .u_gain[5] = 0x30, .u_gain[6] = 0x30, .u_gain[7] = 0x30, .u_gain[8] = 0x30, .u_gain[9] = 0x30, .u_gain[10] = 0x30, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, .u_offset[6] = 0x00, .u_offset[7] = 0x00, .u_offset[8] = 0x00, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x86, .black_level[6] = 0x86, .black_level[7] = 0x8c, .black_level[8] = 0x8c, .black_level[9] = 0x90, .black_level[10] = 0x90, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x57, .acc_ref[8] = 0x57, .acc_ref[9] = 0x47, .acc_ref[10] = 0x47, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x90, .cti_delay[10] = 0x90, + .sub_saturation[0] = 0xb0, .sub_saturation[1] = 0xab, .sub_saturation[2] = 0xb0, .sub_saturation[3] = 0xb0, .sub_saturation[4] = 0xa4, .sub_saturation[5] = 0xa0, .sub_saturation[6] = 0xa0, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x90, .sub_saturation[10] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0x90, .c_option[5] = 0x90, .c_option[6] = 0x90, .c_option[7] = 0x90, .c_option[8] = 0x90, .c_option[9] = 0x90, .c_option[10] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0xa0, .h_delay_a[2] = 0x9e, .h_delay_a[3] = 0x9b, .h_delay_a[4] = 0x99, .h_delay_a[5] = 0x99, .h_delay_a[6] = 0x9b, .h_delay_a[7] = 0x98, .h_delay_a[8] = 0x98, .h_delay_a[9] = 0x98, .h_delay_a[10] = 0x98, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, .h_delay_c[6] = 0x00, .h_delay_c[7] = 0x00, .h_delay_c[8] = 0x00, .h_delay_c[9] = 0x00, .h_delay_c[10] = 0x00, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, .h_scaler1[6] = 0x00, .h_scaler1[7] = 0x00, .h_scaler1[8] = 0x00, .h_scaler1[9] = 0x00, .h_scaler1[10] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, .h_scaler2[6] = 0x00, .h_scaler2[7] = 0x00, .h_scaler2[8] = 0x00, .h_scaler2[9] = 0x00, .h_scaler2[10] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, .h_scaler3[6] = 0x00, .h_scaler3[7] = 0x00, .h_scaler3[8] = 0x00, .h_scaler3[9] = 0x00, .h_scaler3[10] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, .comb_mode[6] = 0x01, .comb_mode[7] = 0x01, .comb_mode[8] = 0x01, .comb_mode[9] = 0x01, .comb_mode[10] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, .mem_path[6] = 0x00, .mem_path[7] = 0x00, .mem_path[8] = 0x00, .mem_path[9] = 0x00, .mem_path[10] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0c, .format_set1[1] = 0x0c, .format_set1[2] = 0x0c, .format_set1[3] = 0x0c, .format_set1[4] = 0x0c, .format_set1[5] = 0x0c, .format_set1[6] = 0x0c, .format_set1[7] = 0x0c, .format_set1[8] = 0x0c, .format_set1[9] = 0x0c, .format_set1[10] = 0x0c, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, .format_set2[6] = 0x00, .format_set2[7] = 0x00, .format_set2[8] = 0x00, .format_set2[9] = 0x00, .format_set2[10] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, .v_delay[6] = 0x00, .v_delay[7] = 0x00, .v_delay[8] = 0x00, .v_delay[9] = 0x00, .v_delay[10] = 0x00, + }, + }, + + [ AHD20_720P_25P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x62, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, .eq_band_sel[6] = 0x47, .eq_band_sel[7] = 0x47, .eq_band_sel[8] = 0x27, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x17, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x86, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x8e, .deq_a_sel[5] = 0x8e, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x8d, .deq_a_sel[10] = 0x8d, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x88, .contrast[2] = 0x78, .contrast[3] = 0x88, .contrast[4] = 0x88, .contrast[5] = 0x7e, .contrast[6] = 0x78, .contrast[7] = 0x78, .contrast[8] = 0x74, .contrast[9] = 0x74, .contrast[10] = 0x74, + .h_peaking[0] = 0x3f, .h_peaking[1] = 0x3f, .h_peaking[2] = 0x3f, .h_peaking[3] = 0x3f, .h_peaking[4] = 0x3f, .h_peaking[5] = 0x3f, .h_peaking[6] = 0x3f, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x4f, .h_peaking[10] = 0x4f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0x92, .c_filter[6] = 0x92, .c_filter[7] = 0x92, .c_filter[8] = 0x92, .c_filter[9] = 0x92, .c_filter[10] = 0x92, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x00, .u_gain[3] = 0x00, .u_gain[4] = 0x00, .u_gain[5] = 0x00, .u_gain[6] = 0x00, .u_gain[7] = 0x00, .u_gain[8] = 0x00, .u_gain[9] = 0x00, .u_gain[10] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, .u_offset[6] = 0x00, .u_offset[7] = 0x00, .u_offset[8] = 0x00, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x86, .black_level[6] = 0x86, .black_level[7] = 0x8c, .black_level[8] = 0x8c, .black_level[9] = 0x90, .black_level[10] = 0x90, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x57, .acc_ref[8] = 0x57, .acc_ref[9] = 0x47, .acc_ref[10] = 0x47, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x90, .cti_delay[10] = 0x90, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xab, .sub_saturation[2] = 0xb0, .sub_saturation[3] = 0xb0, .sub_saturation[4] = 0xa4, .sub_saturation[5] = 0xa0, .sub_saturation[6] = 0xa0, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x90, .sub_saturation[10] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0x90, .c_option[5] = 0x90, .c_option[6] = 0x90, .c_option[7] = 0x90, .c_option[8] = 0x90, .c_option[9] = 0x90, .c_option[10] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0xa0, .h_delay_a[1] = 0xa0, .h_delay_a[2] = 0x9e, .h_delay_a[3] = 0x9b, .h_delay_a[4] = 0x99, .h_delay_a[5] = 0x99, .h_delay_a[6] = 0x9b, .h_delay_a[7] = 0x98, .h_delay_a[8] = 0x98, .h_delay_a[9] = 0x98, .h_delay_a[10] = 0x98, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, .h_delay_c[6] = 0x00, .h_delay_c[7] = 0x00, .h_delay_c[8] = 0x00, .h_delay_c[9] = 0x00, .h_delay_c[10] = 0x00, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, .h_scaler1[6] = 0x00, .h_scaler1[7] = 0x00, .h_scaler1[8] = 0x00, .h_scaler1[9] = 0x00, .h_scaler1[10] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, .h_scaler2[6] = 0x00, .h_scaler2[7] = 0x00, .h_scaler2[8] = 0x00, .h_scaler2[9] = 0x00, .h_scaler2[10] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, .h_scaler3[6] = 0x00, .h_scaler3[7] = 0x00, .h_scaler3[8] = 0x00, .h_scaler3[9] = 0x00, .h_scaler3[10] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, .comb_mode[6] = 0x01, .comb_mode[7] = 0x01, .comb_mode[8] = 0x01, .comb_mode[9] = 0x01, .comb_mode[10] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, .mem_path[6] = 0x00, .mem_path[7] = 0x00, .mem_path[8] = 0x00, .mem_path[9] = 0x00, .mem_path[10] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x07, .format_set1[1] = 0x07, .format_set1[2] = 0x07, .format_set1[3] = 0x07, .format_set1[4] = 0x07, .format_set1[5] = 0x07, .format_set1[6] = 0x07, .format_set1[7] = 0x07, .format_set1[8] = 0x07, .format_set1[9] = 0x07, .format_set1[10] = 0x07, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, .format_set2[6] = 0x00, .format_set2[7] = 0x00, .format_set2[8] = 0x00, .format_set2[9] = 0x00, .format_set2[10] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, .v_delay[6] = 0x21, .v_delay[7] = 0x21, .v_delay[8] = 0x21, .v_delay[9] = 0x21, .v_delay[10] = 0x21, + }, + }, + [ AHD20_720P_30P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x62, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, .eq_band_sel[6] = 0x47, .eq_band_sel[7] = 0x47, .eq_band_sel[8] = 0x27, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x17, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x86, .deq_a_sel[2] = 0x87, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x8e, .deq_a_sel[5] = 0x8e, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x8d, .deq_a_sel[10] = 0x8d, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x88, .contrast[2] = 0x78, .contrast[3] = 0x88, .contrast[4] = 0x88, .contrast[5] = 0x7e, .contrast[6] = 0x78, .contrast[7] = 0x78, .contrast[8] = 0x74, .contrast[9] = 0x74, .contrast[10] = 0x74, + .h_peaking[0] = 0x3f, .h_peaking[1] = 0x3f, .h_peaking[2] = 0x3f, .h_peaking[3] = 0x3f, .h_peaking[4] = 0x3f, .h_peaking[5] = 0x3f, .h_peaking[6] = 0x3f, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x4f, .h_peaking[10] = 0x4f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0x92, .c_filter[6] = 0x92, .c_filter[7] = 0x92, .c_filter[8] = 0x92, .c_filter[9] = 0x92, .c_filter[10] = 0x92, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x00, .u_gain[3] = 0x00, .u_gain[4] = 0x00, .u_gain[5] = 0x00, .u_gain[6] = 0x00, .u_gain[7] = 0x00, .u_gain[8] = 0x00, .u_gain[9] = 0x00, .u_gain[10] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, .u_offset[6] = 0x00, .u_offset[7] = 0x00, .u_offset[8] = 0x00, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x86, .black_level[6] = 0x86, .black_level[7] = 0x8c, .black_level[8] = 0x8c, .black_level[9] = 0x90, .black_level[10] = 0x90, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x57, .acc_ref[8] = 0x57, .acc_ref[9] = 0x47, .acc_ref[10] = 0x47, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x90, .cti_delay[10] = 0x90, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xab, .sub_saturation[2] = 0xb0, .sub_saturation[3] = 0xb0, .sub_saturation[4] = 0xa4, .sub_saturation[5] = 0xa0, .sub_saturation[6] = 0xa0, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x90, .sub_saturation[10] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0x90, .c_option[5] = 0x90, .c_option[6] = 0x90, .c_option[7] = 0x90, .c_option[8] = 0x90, .c_option[9] = 0x90, .c_option[10] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0xa0, .h_delay_a[1] = 0xa0, .h_delay_a[2] = 0x9e, .h_delay_a[3] = 0x9b, .h_delay_a[4] = 0x99, .h_delay_a[5] = 0x99, .h_delay_a[6] = 0x9b, .h_delay_a[7] = 0x98, .h_delay_a[8] = 0x98, .h_delay_a[9] = 0x98, .h_delay_a[10] = 0x98, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, .h_delay_c[6] = 0x00, .h_delay_c[7] = 0x00, .h_delay_c[8] = 0x00, .h_delay_c[9] = 0x00, .h_delay_c[10] = 0x00, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, .h_scaler1[6] = 0x00, .h_scaler1[7] = 0x00, .h_scaler1[8] = 0x00, .h_scaler1[9] = 0x00, .h_scaler1[10] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, .h_scaler2[6] = 0x00, .h_scaler2[7] = 0x00, .h_scaler2[8] = 0x00, .h_scaler2[9] = 0x00, .h_scaler2[10] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, .h_scaler3[6] = 0x00, .h_scaler3[7] = 0x00, .h_scaler3[8] = 0x00, .h_scaler3[9] = 0x00, .h_scaler3[10] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, .comb_mode[6] = 0x01, .comb_mode[7] = 0x01, .comb_mode[8] = 0x01, .comb_mode[9] = 0x01, .comb_mode[10] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, .mem_path[6] = 0x00, .mem_path[7] = 0x00, .mem_path[8] = 0x00, .mem_path[9] = 0x00, .mem_path[10] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x06, .format_set1[1] = 0x06, .format_set1[2] = 0x06, .format_set1[3] = 0x06, .format_set1[4] = 0x06, .format_set1[5] = 0x06, .format_set1[6] = 0x06, .format_set1[7] = 0x06, .format_set1[8] = 0x06, .format_set1[9] = 0x06, .format_set1[10] = 0x06, + /*B0 0x85*/ .format_set2[0] = 0x00, .format_set2[1] = 0x00, .format_set2[2] = 0x00, .format_set2[3] = 0x00, .format_set2[4] = 0x00, .format_set2[5] = 0x00, .format_set2[6] = 0x00, .format_set2[7] = 0x00, .format_set2[8] = 0x00, .format_set2[9] = 0x00, .format_set2[10] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, .v_delay[6] = 0x21, .v_delay[7] = 0x21, .v_delay[8] = 0x21, .v_delay[9] = 0x21, .v_delay[10] = 0x21, + }, + }, + + [ CVI_HD_25P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x57, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x37, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x78, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x93, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x8c, .contrast[2] = 0x8a, .contrast[3] = 0x87, .contrast[4] = 0x85, .contrast[5] = 0x84, .contrast[6] = 0x80, .contrast[7] = 0x80, .contrast[8] = 0x79, .contrast[9] = 0x72, .contrast[10] = 0x72, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, .h_peaking[6] = 0x00, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xa2, .c_filter[6] = 0xb2, .c_filter[7] = 0xb2, .c_filter[8] = 0xb2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x00, .u_gain[3] = 0x00, .u_gain[4] = 0x00, .u_gain[5] = 0x00, .u_gain[6] = 0x00, .u_gain[7] = 0x00, .u_gain[8] = 0x00, .u_gain[9] = 0x00, .u_gain[10] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, .u_offset[6] = 0x00, .u_offset[7] = 0x00, .u_offset[8] = 0x00, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x86, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x86, .black_level[5] = 0x88, .black_level[6] = 0x8a, .black_level[7] = 0x90, .black_level[8] = 0x93, .black_level[9] = 0x96, .black_level[10] = 0x96, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x37, .acc_ref[8] = 0x20, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xaa, .sub_saturation[2] = 0xaa, .sub_saturation[3] = 0xac, .sub_saturation[4] = 0xa8, .sub_saturation[5] = 0xa6, .sub_saturation[6] = 0x98, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0xa0, .c_option[5] = 0xa0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x60, .h_delay_a[1] = 0x60, .h_delay_a[2] = 0x5e, .h_delay_a[3] = 0x5b, .h_delay_a[4] = 0x59, .h_delay_a[5] = 0x59, .h_delay_a[6] = 0x5b, .h_delay_a[7] = 0x58, .h_delay_a[8] = 0x58, .h_delay_a[9] = 0x58, .h_delay_a[10] = 0x58, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, .h_delay_c[6] = 0x00, .h_delay_c[7] = 0x00, .h_delay_c[8] = 0x00, .h_delay_c[9] = 0x00, .h_delay_c[10] = 0x00, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, .h_scaler1[6] = 0x01, .h_scaler1[7] = 0x01, .h_scaler1[8] = 0x01, .h_scaler1[9] = 0x01, .h_scaler1[10] = 0x01, + /*B9 0x97*/ .h_scaler2[0] = 0x29, .h_scaler2[1] = 0x29, .h_scaler2[2] = 0x29, .h_scaler2[3] = 0x29, .h_scaler2[4] = 0x29, .h_scaler2[5] = 0x29, .h_scaler2[6] = 0x29, .h_scaler2[7] = 0x29, .h_scaler2[8] = 0x29, .h_scaler2[9] = 0x29, .h_scaler2[10] = 0x29, + /*B9 0x98*/ .h_scaler3[0] = 0xc0, .h_scaler3[1] = 0xc0, .h_scaler3[2] = 0xc0, .h_scaler3[3] = 0xc0, .h_scaler3[4] = 0xc0, .h_scaler3[5] = 0xc0, .h_scaler3[6] = 0xc0, .h_scaler3[7] = 0xc0, .h_scaler3[8] = 0xc0, .h_scaler3[9] = 0xc0, .h_scaler3[10] = 0xc0, + /*B9 0x99*/ .h_scaler4[0] = 0xc1, .h_scaler4[1] = 0xc1, .h_scaler4[2] = 0xc1, .h_scaler4[3] = 0xc1, .h_scaler4[4] = 0xc1, .h_scaler4[5] = 0xc1, .h_scaler4[6] = 0xc1, .h_scaler4[7] = 0xc1, .h_scaler4[8] = 0xc1, .h_scaler4[9] = 0xc1, .h_scaler4[10] = 0xc1, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x07, .format_set1[1] = 0x07, .format_set1[2] = 0x07, .format_set1[3] = 0x07, .format_set1[4] = 0x07, .format_set1[5] = 0x07, .format_set1[6] = 0x07, .format_set1[7] = 0x07, .format_set1[8] = 0x07, .format_set1[9] = 0x07, .format_set1[10] = 0x07, + /*B0 0x85*/ .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, .format_set2[6] = 0x02, .format_set2[7] = 0x02, .format_set2[8] = 0x02, .format_set2[9] = 0x02, .format_set2[10] = 0x02, + + /*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, .v_delay[6] = 0x21, .v_delay[7] = 0x21, .v_delay[8] = 0x21, .v_delay[9] = 0x21, .v_delay[10] = 0x21, + }, + }, + [ CVI_HD_30P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x57, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x37, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x78, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x93, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x8c, .contrast[2] = 0x8a, .contrast[3] = 0x87, .contrast[4] = 0x85, .contrast[5] = 0x84, .contrast[6] = 0x80, .contrast[7] = 0x80, .contrast[8] = 0x79, .contrast[9] = 0x72, .contrast[10] = 0x72, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, .h_peaking[6] = 0x00, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xa2, .c_filter[5] = 0xa2, .c_filter[6] = 0xb2, .c_filter[7] = 0xb2, .c_filter[8] = 0xb2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x00, .u_gain[3] = 0x00, .u_gain[4] = 0x00, .u_gain[5] = 0x00, .u_gain[6] = 0x00, .u_gain[7] = 0x00, .u_gain[8] = 0x00, .u_gain[9] = 0x00, .u_gain[10] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, .u_offset[6] = 0x00, .u_offset[7] = 0x00, .u_offset[8] = 0x00, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x86, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x86, .black_level[5] = 0x88, .black_level[6] = 0x8a, .black_level[7] = 0x90, .black_level[8] = 0x93, .black_level[9] = 0x96, .black_level[10] = 0x96, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x37, .acc_ref[8] = 0x20, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xaa, .sub_saturation[2] = 0xaa, .sub_saturation[3] = 0xac, .sub_saturation[4] = 0xa8, .sub_saturation[5] = 0xa6, .sub_saturation[6] = 0x98, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0xa0, .c_option[5] = 0xa0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x60, .h_delay_a[1] = 0x60, .h_delay_a[2] = 0x5e, .h_delay_a[3] = 0x5b, .h_delay_a[4] = 0x59, .h_delay_a[5] = 0x59, .h_delay_a[6] = 0x5b, .h_delay_a[7] = 0x58, .h_delay_a[8] = 0x58, .h_delay_a[9] = 0x58, .h_delay_a[10] = 0x58, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, .h_delay_c[6] = 0x00, .h_delay_c[7] = 0x00, .h_delay_c[8] = 0x00, .h_delay_c[9] = 0x00, .h_delay_c[10] = 0x00, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, .h_scaler1[6] = 0x01, .h_scaler1[7] = 0x01, .h_scaler1[8] = 0x01, .h_scaler1[9] = 0x01, .h_scaler1[10] = 0x01, + /*B9 0x97*/ .h_scaler2[0] = 0x29, .h_scaler2[1] = 0x29, .h_scaler2[2] = 0x29, .h_scaler2[3] = 0x29, .h_scaler2[4] = 0x29, .h_scaler2[5] = 0x29, .h_scaler2[6] = 0x29, .h_scaler2[7] = 0x29, .h_scaler2[8] = 0x29, .h_scaler2[9] = 0x29, .h_scaler2[10] = 0x29, + /*B9 0x98*/ .h_scaler3[0] = 0xc0, .h_scaler3[1] = 0xc0, .h_scaler3[2] = 0xc0, .h_scaler3[3] = 0xc0, .h_scaler3[4] = 0xc0, .h_scaler3[5] = 0xc0, .h_scaler3[6] = 0xc0, .h_scaler3[7] = 0xc0, .h_scaler3[8] = 0xc0, .h_scaler3[9] = 0xc0, .h_scaler3[10] = 0xc0, + /*B9 0x99*/ .h_scaler4[0] = 0xc1, .h_scaler4[1] = 0xc1, .h_scaler4[2] = 0xc1, .h_scaler4[3] = 0xc1, .h_scaler4[4] = 0xc1, .h_scaler4[5] = 0xc1, .h_scaler4[6] = 0xc1, .h_scaler4[7] = 0xc1, .h_scaler4[8] = 0xc1, .h_scaler4[9] = 0xc1, .h_scaler4[10] = 0xc1, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x06, .format_set1[1] = 0x06, .format_set1[2] = 0x06, .format_set1[3] = 0x06, .format_set1[4] = 0x06, .format_set1[5] = 0x06, .format_set1[6] = 0x06, .format_set1[7] = 0x06, .format_set1[8] = 0x06, .format_set1[9] = 0x06, .format_set1[10] = 0x06, + /*B0 0x85*/ .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, .format_set2[6] = 0x02, .format_set2[7] = 0x02, .format_set2[8] = 0x02, .format_set2[9] = 0x02, .format_set2[10] = 0x02, + + /*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, .v_delay[6] = 0x21, .v_delay[7] = 0x21, .v_delay[8] = 0x21, .v_delay[9] = 0x21, .v_delay[10] = 0x21, + }, + }, + + [ CVI_HD_25P_EX ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x63, .eq_band_sel[4] = 0x53, .eq_band_sel[5] = 0x57, .eq_band_sel[6] = 0x57, .eq_band_sel[7] = 0x17, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7d, .eq_gain_sel[5] = 0x7d, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x8c, .deq_a_sel[3] = 0x8d, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x94, .deq_a_sel[6] = 0x95, .deq_a_sel[7] = 0x91, .deq_a_sel[8] = 0x92, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x80, .contrast[1] = 0x80, .contrast[2] = 0x80, .contrast[3] = 0x80, .contrast[4] = 0x80, .contrast[5] = 0x80, .contrast[6] = 0x80, .contrast[7] = 0x80, .contrast[8] = 0x80, .contrast[9] = 0x72, .contrast[10] = 0x72, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, .h_peaking[6] = 0x00, .h_peaking[7] = 0x00, .h_peaking[8] = 0x00, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0xa2, .c_filter[6] = 0xa2, .c_filter[7] = 0xa2, .c_filter[8] = 0xa2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x00, .u_gain[3] = 0x00, .u_gain[4] = 0x00, .u_gain[5] = 0x00, .u_gain[6] = 0x00, .u_gain[7] = 0x00, .u_gain[8] = 0x00, .u_gain[9] = 0x00, .u_gain[10] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0x08, .u_offset[1] = 0x08, .u_offset[2] = 0x08, .u_offset[3] = 0x08, .u_offset[4] = 0x08, .u_offset[5] = 0x08, .u_offset[6] = 0x08, .u_offset[7] = 0x08, .u_offset[8] = 0x08, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, .v_offset[6] = 0xf8, .v_offset[7] = 0xf8, .v_offset[8] = 0xf8, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x7c, .black_level[1] = 0x7c, .black_level[2] = 0x7c, .black_level[3] = 0x7c, .black_level[4] = 0x7c, .black_level[5] = 0x7c, .black_level[6] = 0x7c, .black_level[7] = 0x7c, .black_level[8] = 0x7c, .black_level[9] = 0x96, .black_level[10] = 0x96, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x47, .acc_ref[8] = 0x37, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xa0, .sub_saturation[1] = 0xa0, .sub_saturation[2] = 0xa0, .sub_saturation[3] = 0xa0, .sub_saturation[4] = 0xa0, .sub_saturation[5] = 0xa0, .sub_saturation[6] = 0xa0, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x6b, .h_delay_a[1] = 0x60, .h_delay_a[2] = 0x6a, .h_delay_a[3] = 0x69, .h_delay_a[4] = 0x69, .h_delay_a[5] = 0x6a, .h_delay_a[6] = 0x7a, .h_delay_a[7] = 0x7a, .h_delay_a[8] = 0x7a, .h_delay_a[9] = 0x7a, .h_delay_a[10] = 0x7a, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, .h_delay_c[6] = 0x00, .h_delay_c[7] = 0x00, .h_delay_c[8] = 0x00, .h_delay_c[9] = 0x00, .h_delay_c[10] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, .y_delay[6] = 0x00, .y_delay[7] = 0x00, .y_delay[8] = 0x00, .y_delay[9] = 0x00, .y_delay[10] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, .h_scaler1[6] = 0x00, .h_scaler1[7] = 0x00, .h_scaler1[8] = 0x00, .h_scaler1[9] = 0x00, .h_scaler1[10] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x29, .h_scaler2[1] = 0x29, .h_scaler2[2] = 0x29, .h_scaler2[3] = 0x29, .h_scaler2[4] = 0x29, .h_scaler2[5] = 0x29, .h_scaler2[6] = 0x29, .h_scaler2[7] = 0x29, .h_scaler2[8] = 0x29, .h_scaler2[9] = 0x29, .h_scaler2[10] = 0x29, + /*B9 0x98*/ .h_scaler3[0] = 0xdc, .h_scaler3[1] = 0xdc, .h_scaler3[2] = 0xdc, .h_scaler3[3] = 0xdc, .h_scaler3[4] = 0xdc, .h_scaler3[5] = 0xdc, .h_scaler3[6] = 0xdc, .h_scaler3[7] = 0xdc, .h_scaler3[8] = 0xdc, .h_scaler3[9] = 0xdc, .h_scaler3[10] = 0xdc, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x80, .h_scaler9[1] = 0x80, .h_scaler9[2] = 0x80, .h_scaler9[3] = 0x80, .h_scaler9[4] = 0x80, .h_scaler9[5] = 0x80, .h_scaler9[6] = 0x80, .h_scaler9[7] = 0x80, .h_scaler9[8] = 0x80, .h_scaler9[9] = 0x80, .h_scaler9[10] = 0x80, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0b, .format_set1[1] = 0x0b, .format_set1[2] = 0x0b, .format_set1[3] = 0x0b, .format_set1[4] = 0x0b, .format_set1[5] = 0x0b, .format_set1[6] = 0x0b, .format_set1[7] = 0x0b, .format_set1[8] = 0x0b, .format_set1[9] = 0x0b, .format_set1[10] = 0x0b, + /*B0 0x85*/ .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, .format_set2[6] = 0x02, .format_set2[7] = 0x02, .format_set2[8] = 0x02, .format_set2[9] = 0x02, .format_set2[10] = 0x02, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, .v_delay[6] = 0x00, .v_delay[7] = 0x00, .v_delay[8] = 0x00, .v_delay[9] = 0x00, .v_delay[10] = 0x00, + }, + }, + [ CVI_HD_30P_EX ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x63, .eq_band_sel[4] = 0x53, .eq_band_sel[5] = 0x57, .eq_band_sel[6] = 0x57, .eq_band_sel[7] = 0x17, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7d, .eq_gain_sel[5] = 0x7d, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x8c, .deq_a_sel[3] = 0x8d, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x94, .deq_a_sel[6] = 0x95, .deq_a_sel[7] = 0x91, .deq_a_sel[8] = 0x92, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x80, .contrast[1] = 0x80, .contrast[2] = 0x80, .contrast[3] = 0x80, .contrast[4] = 0x80, .contrast[5] = 0x80, .contrast[6] = 0x80, .contrast[7] = 0x80, .contrast[8] = 0x80, .contrast[9] = 0x72, .contrast[10] = 0x72, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, .h_peaking[6] = 0x00, .h_peaking[7] = 0x00, .h_peaking[8] = 0x00, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0xa2, .c_filter[6] = 0xa2, .c_filter[7] = 0xa2, .c_filter[8] = 0xa2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0x00, .u_gain[1] = 0x00, .u_gain[2] = 0x00, .u_gain[3] = 0x00, .u_gain[4] = 0x00, .u_gain[5] = 0x00, .u_gain[6] = 0x00, .u_gain[7] = 0x00, .u_gain[8] = 0x00, .u_gain[9] = 0x00, .u_gain[10] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0x08, .u_offset[1] = 0x08, .u_offset[2] = 0x08, .u_offset[3] = 0x08, .u_offset[4] = 0x08, .u_offset[5] = 0x08, .u_offset[6] = 0x08, .u_offset[7] = 0x08, .u_offset[8] = 0x08, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf8, .v_offset[5] = 0xf8, .v_offset[6] = 0xf8, .v_offset[7] = 0xf8, .v_offset[8] = 0xf8, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x7c, .black_level[1] = 0x7c, .black_level[2] = 0x7c, .black_level[3] = 0x7c, .black_level[4] = 0x7c, .black_level[5] = 0x7c, .black_level[6] = 0x7c, .black_level[7] = 0x7c, .black_level[8] = 0x7c, .black_level[9] = 0x96, .black_level[10] = 0x96, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x47, .acc_ref[8] = 0x37, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xa0, .sub_saturation[1] = 0xa0, .sub_saturation[2] = 0xa0, .sub_saturation[3] = 0xa0, .sub_saturation[4] = 0xa0, .sub_saturation[5] = 0xa0, .sub_saturation[6] = 0xa0, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0xa0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, .h_delay_a[6] = 0x7a, .h_delay_a[7] = 0x7a, .h_delay_a[8] = 0x7a, .h_delay_a[9] = 0x7a, .h_delay_a[10] = 0x7a, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, .h_delay_c[6] = 0x00, .h_delay_c[7] = 0x00, .h_delay_c[8] = 0x00, .h_delay_c[9] = 0x00, .h_delay_c[10] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, .y_delay[6] = 0x00, .y_delay[7] = 0x00, .y_delay[8] = 0x00, .y_delay[9] = 0x00, .y_delay[10] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, .h_scaler1[6] = 0x00, .h_scaler1[7] = 0x00, .h_scaler1[8] = 0x00, .h_scaler1[9] = 0x00, .h_scaler1[10] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x19, .h_scaler2[1] = 0x19, .h_scaler2[2] = 0x19, .h_scaler2[3] = 0x19, .h_scaler2[4] = 0x19, .h_scaler2[5] = 0x19, .h_scaler2[6] = 0x19, .h_scaler2[7] = 0x19, .h_scaler2[8] = 0x19, .h_scaler2[9] = 0x19, .h_scaler2[10] = 0x19, + /*B9 0x98*/ .h_scaler3[0] = 0x50, .h_scaler3[1] = 0x50, .h_scaler3[2] = 0x50, .h_scaler3[3] = 0x50, .h_scaler3[4] = 0x50, .h_scaler3[5] = 0x50, .h_scaler3[6] = 0x50, .h_scaler3[7] = 0x50, .h_scaler3[8] = 0x50, .h_scaler3[9] = 0x50, .h_scaler3[10] = 0x50, + /*B9 0x99*/ .h_scaler4[0] = 0x01, .h_scaler4[1] = 0x01, .h_scaler4[2] = 0x01, .h_scaler4[3] = 0x01, .h_scaler4[4] = 0x01, .h_scaler4[5] = 0x01, .h_scaler4[6] = 0x01, .h_scaler4[7] = 0x01, .h_scaler4[8] = 0x01, .h_scaler4[9] = 0x01, .h_scaler4[10] = 0x01, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x80, .h_scaler9[1] = 0x80, .h_scaler9[2] = 0x80, .h_scaler9[3] = 0x80, .h_scaler9[4] = 0x80, .h_scaler9[5] = 0x80, .h_scaler9[6] = 0x80, .h_scaler9[7] = 0x80, .h_scaler9[8] = 0x80, .h_scaler9[9] = 0x80, .h_scaler9[10] = 0x80, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0a, .format_set1[1] = 0x0a, .format_set1[2] = 0x0a, .format_set1[3] = 0x0a, .format_set1[4] = 0x0a, .format_set1[5] = 0x0a, .format_set1[6] = 0x0a, .format_set1[7] = 0x0a, .format_set1[8] = 0x0a, .format_set1[9] = 0x0a, .format_set1[10] = 0x0a, + /*B0 0x85*/ .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, .format_set2[6] = 0x02, .format_set2[7] = 0x02, .format_set2[8] = 0x02, .format_set2[9] = 0x02, .format_set2[10] = 0x02, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, .v_delay[6] = 0x00, .v_delay[7] = 0x00, .v_delay[8] = 0x00, .v_delay[9] = 0x00, .v_delay[10] = 0x00, + }, + }, + [ CVI_HD_50P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x47, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7f, .eq_gain_sel[2] = 0x6f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x95, .deq_a_sel[5] = 0x93, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x98, .contrast[1] = 0x98, .contrast[2] = 0x98, .contrast[3] = 0x98, .contrast[4] = 0x98, .contrast[5] = 0x98, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, + .c_filter[0] = 0x92, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x03, .hue[1] = 0x03, .hue[2] = 0x04, .hue[3] = 0x04, .hue[4] = 0x04, .hue[5] = 0x04, + .u_gain[0] = 0x0c, .u_gain[1] = 0x0c, .u_gain[2] = 0x0c, .u_gain[3] = 0x0c, .u_gain[4] = 0x0c, .u_gain[5] = 0x0c, + .v_gain[0] = 0x1a, .v_gain[1] = 0x1a, .v_gain[2] = 0x1a, .v_gain[3] = 0x1a, .v_gain[4] = 0x1a, .v_gain[5] = 0x1a, + .u_offset[0] = 0xfa, .u_offset[1] = 0xfa, .u_offset[2] = 0xfa, .u_offset[3] = 0xfa, .u_offset[4] = 0xfa, .u_offset[5] = 0xfa, + .v_offset[0] = 0xfa, .v_offset[1] = 0xfa, .v_offset[2] = 0xfa, .v_offset[3] = 0xfa, .v_offset[4] = 0xfa, .v_offset[5] = 0xfa, + + .black_level[0] = 0x86, .black_level[1] = 0x7a, .black_level[2] = 0x88, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x84, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x47, .acc_ref[5] = 0x37, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa0, .sub_saturation[2] = 0xa0, .sub_saturation[3] = 0x90, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0xc0, .c_option[1] = 0xc0, .c_option[2] = 0xc0, .c_option[3] = 0xc0, .c_option[4] = 0xc0, .c_option[5] = 0xc0, + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + .h_scaler2[0] = 0x29, .h_scaler2[1] = 0x29, .h_scaler2[2] = 0x29, .h_scaler2[3] = 0x29, .h_scaler2[4] = 0x29, .h_scaler2[5] = 0x29, + .h_scaler3[0] = 0xe0, .h_scaler3[1] = 0xe0, .h_scaler3[2] = 0xe0, .h_scaler3[3] = 0xe0, .h_scaler3[4] = 0xe0, .h_scaler3[5] = 0xe0, + .h_scaler4[0] = 0x01, .h_scaler4[1] = 0x01, .h_scaler4[2] = 0x01, .h_scaler4[3] = 0x01, .h_scaler4[4] = 0x01, .h_scaler4[5] = 0x01, + .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + .h_scaler9[0] = 0x80, .h_scaler9[1] = 0x80, .h_scaler9[2] = 0x80, .h_scaler9[3] = 0x80, .h_scaler9[4] = 0x80, .h_scaler9[5] = 0x80, + + .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + .format_set1[0] = 0x05, .format_set1[1] = 0x05, .format_set1[2] = 0x05, .format_set1[3] = 0x05, .format_set1[4] = 0x05, .format_set1[5] = 0x05, + .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, + + .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + [ CVI_HD_60P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x47, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7f, .eq_gain_sel[2] = 0x6f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x95, .deq_a_sel[5] = 0x93, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x98, .contrast[1] = 0x98, .contrast[2] = 0x98, .contrast[3] = 0x98, .contrast[4] = 0x98, .contrast[5] = 0x98, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, + .c_filter[0] = 0x92, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0x92, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x03, .hue[1] = 0x03, .hue[2] = 0x04, .hue[3] = 0x04, .hue[4] = 0x04, .hue[5] = 0x04, + .u_gain[0] = 0x0c, .u_gain[1] = 0x0c, .u_gain[2] = 0x0c, .u_gain[3] = 0x0c, .u_gain[4] = 0x0c, .u_gain[5] = 0x0c, + .v_gain[0] = 0x1a, .v_gain[1] = 0x1a, .v_gain[2] = 0x1a, .v_gain[3] = 0x1a, .v_gain[4] = 0x1a, .v_gain[5] = 0x1a, + .u_offset[0] = 0xfa, .u_offset[1] = 0xfa, .u_offset[2] = 0xfa, .u_offset[3] = 0xfa, .u_offset[4] = 0xfa, .u_offset[5] = 0xfa, + .v_offset[0] = 0xfa, .v_offset[1] = 0xfa, .v_offset[2] = 0xfa, .v_offset[3] = 0xfa, .v_offset[4] = 0xfa, .v_offset[5] = 0xfa, + + .black_level[0] = 0x86, .black_level[1] = 0x7a, .black_level[2] = 0x88, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x84, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x47, .acc_ref[5] = 0x37, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xa0, .sub_saturation[2] = 0xa0, .sub_saturation[3] = 0x90, .sub_saturation[4] = 0x90, .sub_saturation[5] = 0x90, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0xc0, .c_option[1] = 0xc0, .c_option[2] = 0xc0, .c_option[3] = 0xc0, .c_option[4] = 0xc0, .c_option[5] = 0xc0, + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + .h_scaler2[0] = 0x19, .h_scaler2[1] = 0x19, .h_scaler2[2] = 0x19, .h_scaler2[3] = 0x19, .h_scaler2[4] = 0x19, .h_scaler2[5] = 0x19, + .h_scaler3[0] = 0x28, .h_scaler3[1] = 0x28, .h_scaler3[2] = 0x28, .h_scaler3[3] = 0x28, .h_scaler3[4] = 0x28, .h_scaler3[5] = 0x28, + .h_scaler4[0] = 0x01, .h_scaler4[1] = 0x01, .h_scaler4[2] = 0x01, .h_scaler4[3] = 0x01, .h_scaler4[4] = 0x01, .h_scaler4[5] = 0x01, + .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + .h_scaler9[0] = 0x80, .h_scaler9[1] = 0x80, .h_scaler9[2] = 0x80, .h_scaler9[3] = 0x80, .h_scaler9[4] = 0x80, .h_scaler9[5] = 0x80, + .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + .format_set1[0] = 0x04, .format_set1[1] = 0x04, .format_set1[2] = 0x04, .format_set1[3] = 0x04, .format_set1[4] = 0x04, .format_set1[5] = 0x04, + .format_set2[0] = 0x02, .format_set2[1] = 0x02, .format_set2[2] = 0x02, .format_set2[3] = 0x02, .format_set2[4] = 0x02, .format_set2[5] = 0x02, + + .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + + [ TVI_HD_25P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x57, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x37, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x78, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x93, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x82, .contrast[1] = 0x86, .contrast[2] = 0x84, .contrast[3] = 0x81, .contrast[4] = 0x7f, .contrast[5] = 0x7e, .contrast[6] = 0x7a, .contrast[7] = 0x7a, .contrast[8] = 0x72, .contrast[9] = 0x6d, .contrast[10] = 0x6d, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, .h_peaking[6] = 0x00, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0xa2, .c_filter[4] = 0xa2, .c_filter[5] = 0xa2, .c_filter[6] = 0xb2, .c_filter[7] = 0xb2, .c_filter[8] = 0xb2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0xe0, .u_gain[1] = 0xe0, .u_gain[2] = 0xe0, .u_gain[3] = 0xe0, .u_gain[4] = 0xe0, .u_gain[5] = 0xe0, .u_gain[6] = 0xe0, .u_gain[7] = 0xe0, .u_gain[8] = 0xe0, .u_gain[9] = 0x00, .u_gain[10] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0xff, .u_offset[1] = 0xff, .u_offset[2] = 0xff, .u_offset[3] = 0xff, .u_offset[4] = 0xff, .u_offset[5] = 0xff, .u_offset[6] = 0xff, .u_offset[7] = 0xff, .u_offset[8] = 0xff, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x86, .black_level[1] = 0x88, .black_level[2] = 0x86, .black_level[3] = 0x86, .black_level[4] = 0x88, .black_level[5] = 0x8a, .black_level[6] = 0x8c, .black_level[7] = 0x92, .black_level[8] = 0x95, .black_level[9] = 0x98, .black_level[10] = 0x98, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x37, .acc_ref[8] = 0x20, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xaa, .sub_saturation[2] = 0xaa, .sub_saturation[3] = 0xac, .sub_saturation[4] = 0xa8, .sub_saturation[5] = 0xa6, .sub_saturation[6] = 0x98, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x7e, .h_delay_a[2] = 0x7d, .h_delay_a[3] = 0x7c, .h_delay_a[4] = 0x5c, .h_delay_a[5] = 0x7d, .h_delay_a[6] = 0x7d, .h_delay_a[7] = 0x7d, .h_delay_a[8] = 0x7d, .h_delay_a[9] = 0x7d, .h_delay_a[10] = 0x7d, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x20, .h_delay_c[1] = 0x20, .h_delay_c[2] = 0x20, .h_delay_c[3] = 0x20, .h_delay_c[4] = 0x20, .h_delay_c[5] = 0x20, .h_delay_c[6] = 0x20, .h_delay_c[7] = 0x20, .h_delay_c[8] = 0x20, .h_delay_c[9] = 0x20, .h_delay_c[10] = 0x20, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, .clk_adc[6] = 0x05, .clk_adc[7] = 0x05, .clk_adc[8] = 0x05, .clk_adc[9] = 0x05, .clk_adc[10] = 0x05, + .clk_dec[0] = 0x04, .clk_dec[1] = 0x04, .clk_dec[2] = 0x04, .clk_dec[3] = 0x04, .clk_dec[4] = 0x04, .clk_dec[5] = 0x04, .clk_dec[6] = 0x04, .clk_dec[7] = 0x04, .clk_dec[8] = 0x04, .clk_dec[9] = 0x04, .clk_dec[10] = 0x04, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, .h_scaler1[6] = 0x01, .h_scaler1[7] = 0x01, .h_scaler1[8] = 0x01, .h_scaler1[9] = 0x01, .h_scaler1[10] = 0x01, + /*B9 0x97*/ .h_scaler2[0] = 0x59, .h_scaler2[1] = 0x59, .h_scaler2[2] = 0x59, .h_scaler2[3] = 0x59, .h_scaler2[4] = 0x59, .h_scaler2[5] = 0x59, .h_scaler2[6] = 0x59, .h_scaler2[7] = 0x59, .h_scaler2[8] = 0x59, .h_scaler2[9] = 0x59, .h_scaler2[10] = 0x59, + /*B9 0x98*/ .h_scaler3[0] = 0xc0, .h_scaler3[1] = 0xc0, .h_scaler3[2] = 0xc0, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0xc0, .h_scaler3[5] = 0xc0, .h_scaler3[6] = 0xc0, .h_scaler3[7] = 0xc0, .h_scaler3[8] = 0xc0, .h_scaler3[9] = 0xc0, .h_scaler3[10] = 0xc0, + /*B9 0x99*/ .h_scaler4[0] = 0x01, .h_scaler4[1] = 0x01, .h_scaler4[2] = 0x01, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x01, .h_scaler4[5] = 0x01, .h_scaler4[6] = 0x01, .h_scaler4[7] = 0x01, .h_scaler4[8] = 0x01, .h_scaler4[9] = 0x01, .h_scaler4[10] = 0x01, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x07, .format_set1[1] = 0x07, .format_set1[2] = 0x07, .format_set1[3] = 0x07, .format_set1[4] = 0x07, .format_set1[5] = 0x07, .format_set1[6] = 0x07, .format_set1[7] = 0x07, .format_set1[8] = 0x07, .format_set1[9] = 0x07, .format_set1[10] = 0x07, + /*B0 0x85*/ .format_set2[0] = 0x01, .format_set2[1] = 0x01, .format_set2[2] = 0x01, .format_set2[3] = 0x01, .format_set2[4] = 0x01, .format_set2[5] = 0x01, .format_set2[6] = 0x01, .format_set2[7] = 0x01, .format_set2[8] = 0x01, .format_set2[9] = 0x01, .format_set2[10] = 0x01, + + /*B0 0x64*/ .v_delay[0] = 0x21, .v_delay[1] = 0x21, .v_delay[2] = 0x21, .v_delay[3] = 0x21, .v_delay[4] = 0x21, .v_delay[5] = 0x21, .v_delay[6] = 0x21, .v_delay[7] = 0x21, .v_delay[8] = 0x21, .v_delay[9] = 0x21, .v_delay[10] = 0x21, + }, + }, + [ TVI_HD_30P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x57, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x37, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x78, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x93, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x82, .contrast[1] = 0x86, .contrast[2] = 0x84, .contrast[3] = 0x81, .contrast[4] = 0x7f, .contrast[5] = 0x7e, .contrast[6] = 0x7a, .contrast[7] = 0x7a, .contrast[8] = 0x72, .contrast[9] = 0x6d, .contrast[10] = 0x6d, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, .h_peaking[6] = 0x00, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0xa2, .c_filter[4] = 0xa2, .c_filter[5] = 0xa2, .c_filter[6] = 0xb2, .c_filter[7] = 0xb2, .c_filter[8] = 0xb2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0xe0, .u_gain[1] = 0xe0, .u_gain[2] = 0xe0, .u_gain[3] = 0xe0, .u_gain[4] = 0xe0, .u_gain[5] = 0xe0, .u_gain[6] = 0xe0, .u_gain[7] = 0xe0, .u_gain[8] = 0xe0, .u_gain[9] = 0xe0, .u_gain[10] = 0xe0, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0xff, .u_offset[1] = 0xff, .u_offset[2] = 0xff, .u_offset[3] = 0xff, .u_offset[4] = 0xff, .u_offset[5] = 0xff, .u_offset[6] = 0xff, .u_offset[7] = 0xff, .u_offset[8] = 0xff, .u_offset[9] = 0xff, .u_offset[10] = 0xff, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x86, .black_level[1] = 0x88, .black_level[2] = 0x86, .black_level[3] = 0x86, .black_level[4] = 0x88, .black_level[5] = 0x8a, .black_level[6] = 0x8c, .black_level[7] = 0x92, .black_level[8] = 0x95, .black_level[9] = 0x98, .black_level[10] = 0x98, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x37, .acc_ref[8] = 0x20, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xaa, .sub_saturation[2] = 0xaa, .sub_saturation[3] = 0xac, .sub_saturation[4] = 0xa8, .sub_saturation[5] = 0xa6, .sub_saturation[6] = 0x98, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x20, .h_delay_a[1] = 0x1e, .h_delay_a[2] = 0x1d, .h_delay_a[3] = 0x1c, .h_delay_a[4] = 0x1c, .h_delay_a[5] = 0x1d, .h_delay_a[6] = 0x1d, .h_delay_a[7] = 0x1d, .h_delay_a[8] = 0x1d, .h_delay_a[9] = 0x1d, .h_delay_a[10] = 0x1d, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x10, .h_delay_c[1] = 0x10, .h_delay_c[2] = 0x10, .h_delay_c[3] = 0x10, .h_delay_c[4] = 0x10, .h_delay_c[5] = 0x10, .h_delay_c[6] = 0x10, .h_delay_c[7] = 0x10, .h_delay_c[8] = 0x10, .h_delay_c[9] = 0x10, .h_delay_c[10] = 0x10, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, .clk_adc[6] = 0x05, .clk_adc[7] = 0x05, .clk_adc[8] = 0x05, .clk_adc[9] = 0x05, .clk_adc[10] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, .clk_dec[6] = 0x44, .clk_dec[7] = 0x44, .clk_dec[8] = 0x44, .clk_dec[9] = 0x44, .clk_dec[10] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, .h_scaler1[6] = 0x01, .h_scaler1[7] = 0x01, .h_scaler1[8] = 0x01, .h_scaler1[9] = 0x01, .h_scaler1[10] = 0x01, + /*B9 0x97*/ .h_scaler2[0] = 0x59, .h_scaler2[1] = 0x59, .h_scaler2[2] = 0x59, .h_scaler2[3] = 0x59, .h_scaler2[4] = 0x59, .h_scaler2[5] = 0x59, .h_scaler2[6] = 0x59, .h_scaler2[7] = 0x59, .h_scaler2[8] = 0x59, .h_scaler2[9] = 0x59, .h_scaler2[10] = 0x59, + /*B9 0x98*/ .h_scaler3[0] = 0xff, .h_scaler3[1] = 0x30, .h_scaler3[2] = 0x30, .h_scaler3[3] = 0x30, .h_scaler3[4] = 0x30, .h_scaler3[5] = 0x30, .h_scaler3[6] = 0x30, .h_scaler3[7] = 0x30, .h_scaler3[8] = 0x30, .h_scaler3[9] = 0x30, .h_scaler3[10] = 0x30, + /*B9 0x99*/ .h_scaler4[0] = 0x001, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x06, .format_set1[1] = 0x06, .format_set1[2] = 0x06, .format_set1[3] = 0x06, .format_set1[4] = 0x06, .format_set1[5] = 0x06, .format_set1[6] = 0x06, .format_set1[7] = 0x06, .format_set1[8] = 0x06, .format_set1[9] = 0x06, .format_set1[10] = 0x06, + /*B0 0x85*/ .format_set2[0] = 0x01, .format_set2[1] = 0x01, .format_set2[2] = 0x01, .format_set2[3] = 0x01, .format_set2[4] = 0x01, .format_set2[5] = 0x01, .format_set2[6] = 0x01, .format_set2[7] = 0x01, .format_set2[8] = 0x01, .format_set2[9] = 0x01, .format_set2[10] = 0x01, + + /*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, .v_delay[6] = 0x20, .v_delay[7] = 0x20, .v_delay[8] = 0x20, .v_delay[9] = 0x20, .v_delay[10] = 0x20, + }, + }, + + [ TVI_HD_B_25P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x57, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x37, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x78, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x93, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x82, .contrast[1] = 0x86, .contrast[2] = 0x84, .contrast[3] = 0x81, .contrast[4] = 0x7f, .contrast[5] = 0x7e, .contrast[6] = 0x7a, .contrast[7] = 0x7a, .contrast[8] = 0x72, .contrast[9] = 0x6d, .contrast[10] = 0x6d, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, .h_peaking[6] = 0x00, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0xa2, .c_filter[4] = 0xa2, .c_filter[5] = 0xa2, .c_filter[6] = 0xb2, .c_filter[7] = 0xb2, .c_filter[8] = 0xb2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0xe0, .u_gain[1] = 0x00, .u_gain[2] = 0x00, .u_gain[3] = 0x00, .u_gain[4] = 0x00, .u_gain[5] = 0x00, .u_gain[6] = 0x00, .u_gain[7] = 0x00, .u_gain[8] = 0x00, .u_gain[9] = 0x00, .u_gain[10] = 0x00, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0xff, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, .u_offset[6] = 0x00, .u_offset[7] = 0x00, .u_offset[8] = 0x00, .u_offset[9] = 0x00, .u_offset[10] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x86, .black_level[1] = 0x88, .black_level[2] = 0x86, .black_level[3] = 0x86, .black_level[4] = 0x88, .black_level[5] = 0x8a, .black_level[6] = 0x8c, .black_level[7] = 0x92, .black_level[8] = 0x95, .black_level[9] = 0x98, .black_level[10] = 0x98, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x37, .acc_ref[8] = 0x20, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xaa, .sub_saturation[2] = 0xaa, .sub_saturation[3] = 0xac, .sub_saturation[4] = 0xa8, .sub_saturation[5] = 0xa6, .sub_saturation[6] = 0x98, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x82, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x7f, .h_delay_a[3] = 0x7e, .h_delay_a[4] = 0x7e, .h_delay_a[5] = 0x7f, .h_delay_a[6] = 0x7f, .h_delay_a[7] = 0x7f, .h_delay_a[8] = 0x7f, .h_delay_a[9] = 0x7f, .h_delay_a[10] = 0x7f, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, .h_delay_b[6] = 0x10, .h_delay_b[7] = 0x10, .h_delay_b[8] = 0x10, .h_delay_b[9] = 0x10, .h_delay_b[10] = 0x10, + .h_delay_c[0] = 0x01, .h_delay_c[1] = 0x01, .h_delay_c[2] = 0x01, .h_delay_c[3] = 0x01, .h_delay_c[4] = 0x01, .h_delay_c[5] = 0x01, .h_delay_c[6] = 0x01, .h_delay_c[7] = 0x01, .h_delay_c[8] = 0x01, .h_delay_c[9] = 0x01, .h_delay_c[10] = 0x01, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, .h_scaler1[6] = 0x00, .h_scaler1[7] = 0x00, .h_scaler1[8] = 0x00, .h_scaler1[9] = 0x00, .h_scaler1[10] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, .h_scaler2[6] = 0x00, .h_scaler2[7] = 0x00, .h_scaler2[8] = 0x00, .h_scaler2[9] = 0x00, .h_scaler2[10] = 0x59, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, .h_scaler3[6] = 0x00, .h_scaler3[7] = 0x00, .h_scaler3[8] = 0x00, .h_scaler3[9] = 0x00, .h_scaler3[10] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x07, .format_set1[1] = 0x07, .format_set1[2] = 0x07, .format_set1[3] = 0x07, .format_set1[4] = 0x07, .format_set1[5] = 0x07, .format_set1[6] = 0x07, .format_set1[7] = 0x07, .format_set1[8] = 0x07, .format_set1[9] = 0x07, .format_set1[10] = 0x07, + /*B0 0x85*/ .format_set2[0] = 0x03, .format_set2[1] = 0x03, .format_set2[2] = 0x03, .format_set2[3] = 0x03, .format_set2[4] = 0x03, .format_set2[5] = 0x03, .format_set2[6] = 0x03, .format_set2[7] = 0x03, .format_set2[8] = 0x03, .format_set2[9] = 0x03, .format_set2[10] = 0x03, + + /*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, .v_delay[6] = 0x20, .v_delay[7] = 0x20, .v_delay[8] = 0x20, .v_delay[9] = 0x20, .v_delay[10] = 0x20, + }, + }, + [ TVI_HD_B_30P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x57, .eq_band_sel[3] = 0x57, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x37, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x78, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x93, .deq_a_sel[6] = 0x93, .deq_a_sel[7] = 0x93, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x82, .contrast[1] = 0x86, .contrast[2] = 0x84, .contrast[3] = 0x81, .contrast[4] = 0x7f, .contrast[5] = 0x7e, .contrast[6] = 0x7a, .contrast[7] = 0x7a, .contrast[8] = 0x72, .contrast[9] = 0x6d, .contrast[10] = 0x6d, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x00, .h_peaking[5] = 0x00, .h_peaking[6] = 0x00, .h_peaking[7] = 0x3f, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0xa2, .c_filter[4] = 0xa2, .c_filter[5] = 0xa2, .c_filter[6] = 0xb2, .c_filter[7] = 0xb2, .c_filter[8] = 0xb2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, .hue[6] = 0x00, .hue[7] = 0x00, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0xe0, .u_gain[1] = 0xe0, .u_gain[2] = 0xe0, .u_gain[3] = 0xe0, .u_gain[4] = 0xe0, .u_gain[5] = 0xe0, .u_gain[6] = 0xe0, .u_gain[7] = 0xe0, .u_gain[8] = 0xe0, .u_gain[9] = 0xe0, .u_gain[10] = 0xe0, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0x00, .v_gain[3] = 0x00, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0xff, .u_offset[1] = 0xff, .u_offset[2] = 0xff, .u_offset[3] = 0xff, .u_offset[4] = 0xff, .u_offset[5] = 0xff, .u_offset[6] = 0xff, .u_offset[7] = 0xff, .u_offset[8] = 0xff, .u_offset[9] = 0xff, .u_offset[10] = 0xff, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, .v_offset[6] = 0x00, .v_offset[7] = 0x00, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x86, .black_level[1] = 0x88, .black_level[2] = 0x86, .black_level[3] = 0x86, .black_level[4] = 0x88, .black_level[5] = 0x8a, .black_level[6] = 0x8c, .black_level[7] = 0x92, .black_level[8] = 0x95, .black_level[9] = 0x98, .black_level[10] = 0x98, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x57, .acc_ref[7] = 0x37, .acc_ref[8] = 0x20, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xa8, .sub_saturation[1] = 0xaa, .sub_saturation[2] = 0xaa, .sub_saturation[3] = 0xac, .sub_saturation[4] = 0xa8, .sub_saturation[5] = 0xa6, .sub_saturation[6] = 0x98, .sub_saturation[7] = 0xa0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x7e, .h_delay_a[2] = 0x7d, .h_delay_a[3] = 0x7c, .h_delay_a[4] = 0x7c, .h_delay_a[5] = 0x7d, .h_delay_a[6] = 0x7d, .h_delay_a[7] = 0x7d, .h_delay_a[8] = 0x7d, .h_delay_a[9] = 0x7d, .h_delay_a[10] = 0x7d, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, .h_delay_b[6] = 0x10, .h_delay_b[7] = 0x10, .h_delay_b[8] = 0x10, .h_delay_b[9] = 0x10, .h_delay_b[10] = 0x10, + .h_delay_c[0] = 0x02, .h_delay_c[1] = 0x02, .h_delay_c[2] = 0x02, .h_delay_c[3] = 0x02, .h_delay_c[4] = 0x02, .h_delay_c[5] = 0x02, .h_delay_c[6] = 0x02, .h_delay_c[7] = 0x02, .h_delay_c[8] = 0x02, .h_delay_c[9] = 0x02, .h_delay_c[10] = 0x02, + .y_delay[0] = 0x05, .y_delay[1] = 0x05, .y_delay[2] = 0x05, .y_delay[3] = 0x05, .y_delay[4] = 0x05, .y_delay[5] = 0x05, .y_delay[6] = 0x05, .y_delay[7] = 0x05, .y_delay[8] = 0x05, .y_delay[9] = 0x05, .y_delay[10] = 0x05, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x01, .h_scaler1[1] = 0x01, .h_scaler1[2] = 0x01, .h_scaler1[3] = 0x01, .h_scaler1[4] = 0x01, .h_scaler1[5] = 0x01, .h_scaler1[6] = 0x01, .h_scaler1[7] = 0x01, .h_scaler1[8] = 0x01, .h_scaler1[9] = 0x01, .h_scaler1[10] = 0x01, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, .h_scaler2[6] = 0x00, .h_scaler2[7] = 0x00, .h_scaler2[8] = 0x00, .h_scaler2[9] = 0x00, .h_scaler2[10] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, .h_scaler3[6] = 0x00, .h_scaler3[7] = 0x00, .h_scaler3[8] = 0x00, .h_scaler3[9] = 0x00, .h_scaler3[10] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x06, .format_set1[1] = 0x06, .format_set1[2] = 0x06, .format_set1[3] = 0x06, .format_set1[4] = 0x06, .format_set1[5] = 0x06, .format_set1[6] = 0x06, .format_set1[7] = 0x06, .format_set1[8] = 0x06, .format_set1[9] = 0x06, .format_set1[10] = 0x06, + /*B0 0x85*/ .format_set2[0] = 0x03, .format_set2[1] = 0x03, .format_set2[2] = 0x03, .format_set2[3] = 0x03, .format_set2[4] = 0x03, .format_set2[5] = 0x03, .format_set2[6] = 0x03, .format_set2[7] = 0x03, .format_set2[8] = 0x03, .format_set2[9] = 0x03, .format_set2[10] = 0x03, + + /*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, .v_delay[6] = 0x20, .v_delay[7] = 0x20, .v_delay[8] = 0x20, .v_delay[9] = 0x20, .v_delay[10] = 0x20, + }, + }, + + [ TVI_HD_25P_EX ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x67, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x27, .eq_band_sel[6] = 0x27, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7b, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x92, .deq_a_sel[5] = 0x92, .deq_a_sel[6] = 0x92, .deq_a_sel[7] = 0x92, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x82, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x82, .contrast[4] = 0x80, .contrast[5] = 0x80, .contrast[6] = 0x98, .contrast[7] = 0x98, .contrast[8] = 0x72, .contrast[9] = 0x6d, .contrast[10] = 0x6d, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x70, .h_peaking[5] = 0x70, .h_peaking[6] = 0x70, .h_peaking[7] = 0x70, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x92, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, .c_filter[6] = 0xb2, .c_filter[7] = 0xb2, .c_filter[8] = 0xb2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x05, .hue[1] = 0x05, .hue[2] = 0x05, .hue[3] = 0x05, .hue[4] = 0x05, .hue[5] = 0x05, .hue[6] = 0x05, .hue[7] = 0x05, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0x50, .u_gain[1] = 0x50, .u_gain[2] = 0x50, .u_gain[3] = 0x50, .u_gain[4] = 0x70, .u_gain[5] = 0x70, .u_gain[6] = 0x70, .u_gain[7] = 0x70, .u_gain[8] = 0xe0, .u_gain[9] = 0xe0, .u_gain[10] = 0xe0, + .v_gain[0] = 0xf0, .v_gain[1] = 0xf0, .v_gain[2] = 0xf0, .v_gain[3] = 0xf0, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0x04, .u_offset[1] = 0x04, .u_offset[2] = 0x04, .u_offset[3] = 0x04, .u_offset[4] = 0x04, .u_offset[5] = 0x04, .u_offset[6] = 0x04, .u_offset[7] = 0x04, .u_offset[8] = 0xff, .u_offset[9] = 0xff, .u_offset[10] = 0xff, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf0, .v_offset[5] = 0xf8, .v_offset[6] = 0xf8, .v_offset[7] = 0xf8, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x88, .black_level[1] = 0x8c, .black_level[2] = 0x8a, .black_level[3] = 0x8a, .black_level[4] = 0x86, .black_level[5] = 0x86, .black_level[6] = 0x86, .black_level[7] = 0x86, .black_level[8] = 0x95, .black_level[9] = 0x98, .black_level[10] = 0x98, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x40, .acc_ref[5] = 0x40, .acc_ref[6] = 0x40, .acc_ref[7] = 0x40, .acc_ref[8] = 0x20, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xf0, .sub_saturation[1] = 0xf0, .sub_saturation[2] = 0xe0, .sub_saturation[3] = 0xe0, .sub_saturation[4] = 0xd0, .sub_saturation[5] = 0xd0, .sub_saturation[6] = 0xd0, .sub_saturation[7] = 0xd0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0xb0, .c_option[5] = 0xb0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x5e, .h_delay_a[2] = 0x5d, .h_delay_a[3] = 0x5c, .h_delay_a[4] = 0x5c, .h_delay_a[5] = 0x5d, .h_delay_a[6] = 0x5d, .h_delay_a[7] = 0x5d, .h_delay_a[8] = 0x5d, .h_delay_a[9] = 0x5d, .h_delay_a[10] = 0x5d, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, .h_delay_c[6] = 0x00, .h_delay_c[7] = 0x00, .h_delay_c[8] = 0x00, .h_delay_c[9] = 0x00, .h_delay_c[10] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, .y_delay[6] = 0x00, .y_delay[7] = 0x00, .y_delay[8] = 0x00, .y_delay[9] = 0x00, .y_delay[10] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, .clk_adc[6] = 0x05, .clk_adc[7] = 0x05, .clk_adc[8] = 0x05, .clk_adc[9] = 0x05, .clk_adc[10] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, .clk_dec[6] = 0x44, .clk_dec[7] = 0x44, .clk_dec[8] = 0x44, .clk_dec[9] = 0x44, .clk_dec[10] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, .h_scaler1[6] = 0x00, .h_scaler1[7] = 0x00, .h_scaler1[8] = 0x00, .h_scaler1[9] = 0x00, .h_scaler1[10] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x59, .h_scaler2[1] = 0x59, .h_scaler2[2] = 0x59, .h_scaler2[3] = 0x59, .h_scaler2[4] = 0x59, .h_scaler2[5] = 0x59, .h_scaler2[6] = 0x59, .h_scaler2[7] = 0x59, .h_scaler2[8] = 0x59, .h_scaler2[9] = 0x59, .h_scaler2[10] = 0x59, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, .h_scaler3[6] = 0x00, .h_scaler3[7] = 0x00, .h_scaler3[8] = 0x00, .h_scaler3[9] = 0x00, .h_scaler3[10] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x80, .h_scaler9[1] = 0x80, .h_scaler9[2] = 0x80, .h_scaler9[3] = 0x80, .h_scaler9[4] = 0x80, .h_scaler9[5] = 0x80, .h_scaler9[6] = 0x80, .h_scaler9[7] = 0x80, .h_scaler9[8] = 0x80, .h_scaler9[9] = 0x80, .h_scaler9[10] = 0x80, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0b, .format_set1[1] = 0x0b, .format_set1[2] = 0x0b, .format_set1[3] = 0x0b, .format_set1[4] = 0x0b, .format_set1[5] = 0x0b, .format_set1[6] = 0x0b, .format_set1[7] = 0x0b, .format_set1[8] = 0x0b, .format_set1[9] = 0x0b, .format_set1[10] = 0x0b, + /*B0 0x85*/ .format_set2[0] = 0x01, .format_set2[1] = 0x01, .format_set2[2] = 0x01, .format_set2[3] = 0x01, .format_set2[4] = 0x01, .format_set2[5] = 0x01, .format_set2[6] = 0x01, .format_set2[7] = 0x01, .format_set2[8] = 0x01, .format_set2[9] = 0x01, .format_set2[10] = 0x01, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, .v_delay[6] = 0x00, .v_delay[7] = 0x00, .v_delay[8] = 0x00, .v_delay[9] = 0x00, .v_delay[10] = 0x00, + }, + }, + [ TVI_HD_30P_EX ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x67, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x27, .eq_band_sel[6] = 0x27, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x17, .eq_band_sel[9] = 0x17, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7b, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x94, .deq_a_sel[4] = 0x92, .deq_a_sel[5] = 0x92, .deq_a_sel[6] = 0x92, .deq_a_sel[7] = 0x92, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x82, .contrast[1] = 0x82, .contrast[2] = 0x82, .contrast[3] = 0x82, .contrast[4] = 0x80, .contrast[5] = 0x80, .contrast[6] = 0x98, .contrast[7] = 0x98, .contrast[8] = 0x72, .contrast[9] = 0x6d, .contrast[10] = 0x6d, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x00, .h_peaking[2] = 0x00, .h_peaking[3] = 0x00, .h_peaking[4] = 0x70, .h_peaking[5] = 0x70, .h_peaking[6] = 0x70, .h_peaking[7] = 0x70, .h_peaking[8] = 0x3f, .h_peaking[9] = 0x3f, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x92, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, .c_filter[6] = 0xb2, .c_filter[7] = 0xb2, .c_filter[8] = 0xb2, .c_filter[9] = 0xb2, .c_filter[10] = 0xb2, + .hue[0] = 0x05, .hue[1] = 0x05, .hue[2] = 0x05, .hue[3] = 0x05, .hue[4] = 0x05, .hue[5] = 0x05, .hue[6] = 0x05, .hue[7] = 0x05, .hue[8] = 0x00, .hue[9] = 0x00, .hue[10] = 0x00, + .u_gain[0] = 0x50, .u_gain[1] = 0x50, .u_gain[2] = 0x50, .u_gain[3] = 0x50, .u_gain[4] = 0x70, .u_gain[5] = 0x70, .u_gain[6] = 0x70, .u_gain[7] = 0x70, .u_gain[8] = 0xe0, .u_gain[9] = 0xe0, .u_gain[10] = 0xe0, + .v_gain[0] = 0xf0, .v_gain[1] = 0xf0, .v_gain[2] = 0xf0, .v_gain[3] = 0xf0, .v_gain[4] = 0x00, .v_gain[5] = 0x00, .v_gain[6] = 0x00, .v_gain[7] = 0x00, .v_gain[8] = 0x00, .v_gain[9] = 0x00, .v_gain[10] = 0x00, + .u_offset[0] = 0x04, .u_offset[1] = 0x04, .u_offset[2] = 0x04, .u_offset[3] = 0x04, .u_offset[4] = 0x04, .u_offset[5] = 0x04, .u_offset[6] = 0x04, .u_offset[7] = 0x04, .u_offset[8] = 0xff, .u_offset[9] = 0xff, .u_offset[10] = 0xff, + .v_offset[0] = 0xf8, .v_offset[1] = 0xf8, .v_offset[2] = 0xf8, .v_offset[3] = 0xf8, .v_offset[4] = 0xf0, .v_offset[5] = 0xf8, .v_offset[6] = 0xf8, .v_offset[7] = 0xf8, .v_offset[8] = 0x00, .v_offset[9] = 0x00, .v_offset[10] = 0x00, + + .black_level[0] = 0x88, .black_level[1] = 0x8c, .black_level[2] = 0x8a, .black_level[3] = 0x8a, .black_level[4] = 0x86, .black_level[5] = 0x86, .black_level[6] = 0x86, .black_level[7] = 0x86, .black_level[8] = 0x95, .black_level[9] = 0x98, .black_level[10] = 0x98, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x40, .acc_ref[5] = 0x40, .acc_ref[6] = 0x40, .acc_ref[7] = 0x40, .acc_ref[8] = 0x20, .acc_ref[9] = 0x20, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xf0, .sub_saturation[1] = 0xf0, .sub_saturation[2] = 0xe0, .sub_saturation[3] = 0xe0, .sub_saturation[4] = 0xd0, .sub_saturation[5] = 0xd0, .sub_saturation[6] = 0xd0, .sub_saturation[7] = 0xd0, .sub_saturation[8] = 0xa0, .sub_saturation[9] = 0x50, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x90, .c_option[4] = 0xb0, .c_option[5] = 0xb0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x7e, .h_delay_a[2] = 0x7d, .h_delay_a[3] = 0x7c, .h_delay_a[4] = 0x7c, .h_delay_a[5] = 0x7d, .h_delay_a[6] = 0x7d, .h_delay_a[7] = 0x7d, .h_delay_a[8] = 0x7d, .h_delay_a[9] = 0x7d, .h_delay_a[10] = 0x7d, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, .h_delay_c[6] = 0x00, .h_delay_c[7] = 0x00, .h_delay_c[8] = 0x00, .h_delay_c[9] = 0x00, .h_delay_c[10] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, .y_delay[6] = 0x00, .y_delay[7] = 0x00, .y_delay[8] = 0x00, .y_delay[9] = 0x00, .y_delay[10] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, .clk_adc[6] = 0x05, .clk_adc[7] = 0x05, .clk_adc[8] = 0x05, .clk_adc[9] = 0x05, .clk_adc[10] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, .clk_dec[6] = 0x44, .clk_dec[7] = 0x44, .clk_dec[8] = 0x44, .clk_dec[9] = 0x44, .clk_dec[10] = 0x44, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, .h_scaler1[6] = 0x00, .h_scaler1[7] = 0x00, .h_scaler1[8] = 0x00, .h_scaler1[9] = 0x00, .h_scaler1[10] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x59, .h_scaler2[1] = 0x59, .h_scaler2[2] = 0x59, .h_scaler2[3] = 0x59, .h_scaler2[4] = 0x59, .h_scaler2[5] = 0x59, .h_scaler2[6] = 0x59, .h_scaler2[7] = 0x59, .h_scaler2[8] = 0x59, .h_scaler2[9] = 0x59, .h_scaler2[10] = 0x59, + /*B9 0x98*/ .h_scaler3[0] = 0x20, .h_scaler3[1] = 0x20, .h_scaler3[2] = 0x20, .h_scaler3[3] = 0x20, .h_scaler3[4] = 0x20, .h_scaler3[5] = 0x20, .h_scaler3[6] = 0x20, .h_scaler3[7] = 0x20, .h_scaler3[8] = 0x20, .h_scaler3[9] = 0x20, .h_scaler3[10] = 0x20, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x80, .h_scaler9[1] = 0x80, .h_scaler9[2] = 0x80, .h_scaler9[3] = 0x80, .h_scaler9[4] = 0x80, .h_scaler9[5] = 0x80, .h_scaler9[6] = 0x80, .h_scaler9[7] = 0x80, .h_scaler9[8] = 0x80, .h_scaler9[9] = 0x80, .h_scaler9[10] = 0x80, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0A, .format_set1[1] = 0x0A, .format_set1[2] = 0x0A, .format_set1[3] = 0x0A, .format_set1[4] = 0x0A, .format_set1[5] = 0x0A, .format_set1[6] = 0x0A, .format_set1[7] = 0x0A, .format_set1[8] = 0x0A, .format_set1[9] = 0x0A, .format_set1[10] = 0x0A, + /*B0 0x85*/ .format_set2[0] = 0x01, .format_set2[1] = 0x01, .format_set2[2] = 0x01, .format_set2[3] = 0x01, .format_set2[4] = 0x01, .format_set2[5] = 0x01, .format_set2[6] = 0x01, .format_set2[7] = 0x01, .format_set2[8] = 0x01, .format_set2[9] = 0x01, .format_set2[10] = 0x01, + + /*B0 0x64*/ .v_delay[0] = 0x20, .v_delay[1] = 0x20, .v_delay[2] = 0x20, .v_delay[3] = 0x20, .v_delay[4] = 0x20, .v_delay[5] = 0x20, .v_delay[6] = 0x20, .v_delay[7] = 0x20, .v_delay[8] = 0x20, .v_delay[9] = 0x20, .v_delay[10] = 0x20, + }, + }, + + + [ TVI_HD_B_25P_EX ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x67, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x27, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x27, .eq_band_sel[9] = 0x27, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7c, .eq_gain_sel[3] = 0x7c, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x92, .deq_a_sel[6] = 0x91, .deq_a_sel[7] = 0x92, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x84, .contrast[1] = 0x80, .contrast[2] = 0x80, .contrast[3] = 0x80, .contrast[4] = 0x80, .contrast[5] = 0x80, .contrast[6] = 0x80, .contrast[7] = 0x80, .contrast[8] = 0x80, .contrast[9] = 0x80, .contrast[10] = 0x6d, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x20, .h_peaking[2] = 0x20, .h_peaking[3] = 0x20, .h_peaking[4] = 0x20, .h_peaking[5] = 0x00, .h_peaking[6] = 0x70, .h_peaking[7] = 0x70, .h_peaking[8] = 0x70, .h_peaking[9] = 0x70, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0x82, .c_filter[6] = 0x92, .c_filter[7] = 0x92, .c_filter[8] = 0x92, .c_filter[9] = 0x92, .c_filter[10] = 0xb2, + .hue[0] = 0x06, .hue[1] = 0x06, .hue[2] = 0x06, .hue[3] = 0x06, .hue[4] = 0x06, .hue[5] = 0x06, .hue[6] = 0x06, .hue[7] = 0x06, .hue[8] = 0x06, .hue[9] = 0x06, .hue[10] = 0x00, + .u_gain[0] = 0x50, .u_gain[1] = 0x50, .u_gain[2] = 0x50, .u_gain[3] = 0x50, .u_gain[4] = 0x50, .u_gain[5] = 0x50, .u_gain[6] = 0x50, .u_gain[7] = 0x50, .u_gain[8] = 0x50, .u_gain[9] = 0x50, .u_gain[10] = 0x00, + .v_gain[0] = 0xf8, .v_gain[1] = 0xf8, .v_gain[2] = 0xf8, .v_gain[3] = 0xf8, .v_gain[4] = 0xf8, .v_gain[5] = 0xf8, .v_gain[6] = 0xf8, .v_gain[7] = 0xf8, .v_gain[8] = 0xf8, .v_gain[9] = 0xf8, .v_gain[10] = 0x00, + .u_offset[0] = 0x04, .u_offset[1] = 0x04, .u_offset[2] = 0x04, .u_offset[3] = 0x04, .u_offset[4] = 0x04, .u_offset[5] = 0x04, .u_offset[6] = 0x04, .u_offset[7] = 0x04, .u_offset[8] = 0x04, .u_offset[9] = 0x04, .u_offset[10] = 0x00, + .v_offset[0] = 0xf4, .v_offset[1] = 0xf4, .v_offset[2] = 0xf4, .v_offset[3] = 0xf4, .v_offset[4] = 0xf4, .v_offset[5] = 0xf4, .v_offset[6] = 0xf4, .v_offset[7] = 0xf4, .v_offset[8] = 0xf4, .v_offset[9] = 0xf4, .v_offset[10] = 0x00, + + .black_level[0] = 0x86, .black_level[1] = 0x86, .black_level[2] = 0x86, .black_level[3] = 0x86, .black_level[4] = 0x86, .black_level[5] = 0x8c, .black_level[6] = 0x8c, .black_level[7] = 0x8c, .black_level[8] = 0x8c, .black_level[9] = 0x8c, .black_level[10] = 0x98, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x50, .acc_ref[7] = 0x50, .acc_ref[8] = 0x50, .acc_ref[9] = 0x50, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xf0, .sub_saturation[1] = 0xf0, .sub_saturation[2] = 0xf0, .sub_saturation[3] = 0xf0, .sub_saturation[4] = 0xf0, .sub_saturation[5] = 0xf0, .sub_saturation[6] = 0xf0, .sub_saturation[7] = 0xc0, .sub_saturation[8] = 0xc0, .sub_saturation[9] = 0xc0, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0xb0, .c_option[5] = 0xb0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x60, .h_delay_a[1] = 0x62, .h_delay_a[2] = 0x62, .h_delay_a[3] = 0x62, .h_delay_a[4] = 0x62, .h_delay_a[5] = 0x62, .h_delay_a[6] = 0x7f, .h_delay_a[7] = 0x7f, .h_delay_a[8] = 0x7f, .h_delay_a[9] = 0x7f, .h_delay_a[10] = 0x7f, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, .h_delay_c[6] = 0x00, .h_delay_c[7] = 0x00, .h_delay_c[8] = 0x00, .h_delay_c[9] = 0x00, .h_delay_c[10] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, .y_delay[6] = 0x00, .y_delay[7] = 0x00, .y_delay[8] = 0x00, .y_delay[9] = 0x00, .y_delay[10] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, .h_scaler1[6] = 0x00, .h_scaler1[7] = 0x00, .h_scaler1[8] = 0x00, .h_scaler1[9] = 0x00, .h_scaler1[10] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, .h_scaler2[6] = 0x00, .h_scaler2[7] = 0x00, .h_scaler2[8] = 0x00, .h_scaler2[9] = 0x00, .h_scaler2[10] = 0x59, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, .h_scaler3[6] = 0x00, .h_scaler3[7] = 0x00, .h_scaler3[8] = 0x00, .h_scaler3[9] = 0x00, .h_scaler3[10] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0b, .format_set1[1] = 0x0b, .format_set1[2] = 0x0b, .format_set1[3] = 0x0b, .format_set1[4] = 0x0b, .format_set1[5] = 0x0b, .format_set1[6] = 0x0b, .format_set1[7] = 0x0b, .format_set1[8] = 0x0b, .format_set1[9] = 0x0b, .format_set1[10] = 0x0b, + /*B0 0x85*/ .format_set2[0] = 0x03, .format_set2[1] = 0x03, .format_set2[2] = 0x03, .format_set2[3] = 0x03, .format_set2[4] = 0x03, .format_set2[5] = 0x03, .format_set2[6] = 0x03, .format_set2[7] = 0x03, .format_set2[8] = 0x03, .format_set2[9] = 0x03, .format_set2[10] = 0x03, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, .v_delay[6] = 0x00, .v_delay[7] = 0x00, .v_delay[8] = 0x00, .v_delay[9] = 0x00, .v_delay[10] = 0x00, + }, + }, + + [ TVI_HD_B_30P_EX ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x67, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x27, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x27, .eq_band_sel[9] = 0x27, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7c, .eq_gain_sel[3] = 0x7c, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x92, .deq_a_sel[6] = 0x91, .deq_a_sel[7] = 0x92, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x84, .contrast[1] = 0x80, .contrast[2] = 0x80, .contrast[3] = 0x80, .contrast[4] = 0x80, .contrast[5] = 0x80, .contrast[6] = 0x80, .contrast[7] = 0x80, .contrast[8] = 0x80, .contrast[9] = 0x80, .contrast[10] = 0x6d, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x20, .h_peaking[2] = 0x20, .h_peaking[3] = 0x20, .h_peaking[4] = 0x20, .h_peaking[5] = 0x00, .h_peaking[6] = 0x70, .h_peaking[7] = 0x70, .h_peaking[8] = 0x70, .h_peaking[9] = 0x70, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0x82, .c_filter[6] = 0x92, .c_filter[7] = 0x92, .c_filter[8] = 0x92, .c_filter[9] = 0x92, .c_filter[10] = 0xb2, + .hue[0] = 0x06, .hue[1] = 0x06, .hue[2] = 0x06, .hue[3] = 0x06, .hue[4] = 0x06, .hue[5] = 0x06, .hue[6] = 0x06, .hue[7] = 0x06, .hue[8] = 0x06, .hue[9] = 0x06, .hue[10] = 0x00, + .u_gain[0] = 0x50, .u_gain[1] = 0x50, .u_gain[2] = 0x50, .u_gain[3] = 0x50, .u_gain[4] = 0x50, .u_gain[5] = 0x50, .u_gain[6] = 0x50, .u_gain[7] = 0x50, .u_gain[8] = 0x50, .u_gain[9] = 0x50, .u_gain[10] = 0x00, + .v_gain[0] = 0xf8, .v_gain[1] = 0xf8, .v_gain[2] = 0xf8, .v_gain[3] = 0xf8, .v_gain[4] = 0xf8, .v_gain[5] = 0xf8, .v_gain[6] = 0xf8, .v_gain[7] = 0xf8, .v_gain[8] = 0xf8, .v_gain[9] = 0xf8, .v_gain[10] = 0x00, + .u_offset[0] = 0x04, .u_offset[1] = 0x04, .u_offset[2] = 0x04, .u_offset[3] = 0x04, .u_offset[4] = 0x04, .u_offset[5] = 0x04, .u_offset[6] = 0x04, .u_offset[7] = 0x04, .u_offset[8] = 0x04, .u_offset[9] = 0x04, .u_offset[10] = 0x00, + .v_offset[0] = 0xf4, .v_offset[1] = 0xf4, .v_offset[2] = 0xf4, .v_offset[3] = 0xf4, .v_offset[4] = 0xf4, .v_offset[5] = 0xf4, .v_offset[6] = 0xf4, .v_offset[7] = 0xf4, .v_offset[8] = 0xf4, .v_offset[9] = 0xf4, .v_offset[10] = 0x00, + + .black_level[0] = 0x86, .black_level[1] = 0x86, .black_level[2] = 0x86, .black_level[3] = 0x86, .black_level[4] = 0x86, .black_level[5] = 0x8c, .black_level[6] = 0x8c, .black_level[7] = 0x8c, .black_level[8] = 0x8c, .black_level[9] = 0x8c, .black_level[10] = 0x98, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x50, .acc_ref[7] = 0x50, .acc_ref[8] = 0x50, .acc_ref[9] = 0x50, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xf0, .sub_saturation[1] = 0xf0, .sub_saturation[2] = 0xf0, .sub_saturation[3] = 0xf0, .sub_saturation[4] = 0xf0, .sub_saturation[5] = 0xf0, .sub_saturation[6] = 0xf0, .sub_saturation[7] = 0xc0, .sub_saturation[8] = 0xc0, .sub_saturation[9] = 0xc0, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0xb0, .c_option[5] = 0xb0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x5f, .h_delay_a[1] = 0x62, .h_delay_a[2] = 0x62, .h_delay_a[3] = 0x63, .h_delay_a[4] = 0x63, .h_delay_a[5] = 0x63, .h_delay_a[6] = 0x7f, .h_delay_a[7] = 0x7f, .h_delay_a[8] = 0x7f, .h_delay_a[9] = 0x7f, .h_delay_a[10] = 0x7f, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, .h_delay_c[6] = 0x00, .h_delay_c[7] = 0x00, .h_delay_c[8] = 0x00, .h_delay_c[9] = 0x00, .h_delay_c[10] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, .y_delay[6] = 0x00, .y_delay[7] = 0x00, .y_delay[8] = 0x00, .y_delay[9] = 0x00, .y_delay[10] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, .h_scaler1[6] = 0x00, .h_scaler1[7] = 0x00, .h_scaler1[8] = 0x00, .h_scaler1[9] = 0x00, .h_scaler1[10] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, .h_scaler2[6] = 0x00, .h_scaler2[7] = 0x00, .h_scaler2[8] = 0x00, .h_scaler2[9] = 0x00, .h_scaler2[10] = 0x59, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, .h_scaler3[6] = 0x00, .h_scaler3[7] = 0x00, .h_scaler3[8] = 0x00, .h_scaler3[9] = 0x00, .h_scaler3[10] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x0a, .format_set1[1] = 0x0a, .format_set1[2] = 0x0a, .format_set1[3] = 0x0a, .format_set1[4] = 0x0a, .format_set1[5] = 0x0a, .format_set1[6] = 0x0a, .format_set1[7] = 0x0a, .format_set1[8] = 0x0a, .format_set1[9] = 0x0a, .format_set1[10] = 0x0a, + /*B0 0x85*/ .format_set2[0] = 0x03, .format_set2[1] = 0x03, .format_set2[2] = 0x03, .format_set2[3] = 0x03, .format_set2[4] = 0x03, .format_set2[5] = 0x03, .format_set2[6] = 0x03, .format_set2[7] = 0x03, .format_set2[8] = 0x03, .format_set2[9] = 0x03, .format_set2[10] = 0x03, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, .v_delay[6] = 0x00, .v_delay[7] = 0x00, .v_delay[8] = 0x00, .v_delay[9] = 0x00, .v_delay[10] = 0x00, + }, + }, + + [ TVI_HD_50P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x67, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x27, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x27, .eq_band_sel[9] = 0x27, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7c, .eq_gain_sel[3] = 0x7c, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x92, .deq_a_sel[6] = 0x91, .deq_a_sel[7] = 0x92, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x84, .contrast[1] = 0x80, .contrast[2] = 0x80, .contrast[3] = 0x80, .contrast[4] = 0x80, .contrast[5] = 0x80, .contrast[6] = 0x80, .contrast[7] = 0x80, .contrast[8] = 0x80, .contrast[9] = 0x80, .contrast[10] = 0x6d, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x20, .h_peaking[2] = 0x20, .h_peaking[3] = 0x20, .h_peaking[4] = 0x20, .h_peaking[5] = 0x00, .h_peaking[6] = 0x70, .h_peaking[7] = 0x70, .h_peaking[8] = 0x70, .h_peaking[9] = 0x70, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0x92, .c_filter[6] = 0x92, .c_filter[7] = 0x92, .c_filter[8] = 0x92, .c_filter[9] = 0x92, .c_filter[10] = 0xb2, + .hue[0] = 0x06, .hue[1] = 0x06, .hue[2] = 0x06, .hue[3] = 0x06, .hue[4] = 0x06, .hue[5] = 0x06, .hue[6] = 0x06, .hue[7] = 0x06, .hue[8] = 0x06, .hue[9] = 0x06, .hue[10] = 0x00, + .u_gain[0] = 0x50, .u_gain[1] = 0x50, .u_gain[2] = 0x50, .u_gain[3] = 0x50, .u_gain[4] = 0x50, .u_gain[5] = 0x50, .u_gain[6] = 0x50, .u_gain[7] = 0x50, .u_gain[8] = 0x50, .u_gain[9] = 0x50, .u_gain[10] = 0xe0, + .v_gain[0] = 0xf8, .v_gain[1] = 0xf8, .v_gain[2] = 0xf8, .v_gain[3] = 0xf8, .v_gain[4] = 0xf8, .v_gain[5] = 0xf8, .v_gain[6] = 0xf8, .v_gain[7] = 0xf8, .v_gain[8] = 0xf8, .v_gain[9] = 0xf8, .v_gain[10] = 0x00, + .u_offset[0] = 0x04, .u_offset[1] = 0x04, .u_offset[2] = 0x04, .u_offset[3] = 0x04, .u_offset[4] = 0x04, .u_offset[5] = 0x04, .u_offset[6] = 0x04, .u_offset[7] = 0x04, .u_offset[8] = 0x04, .u_offset[9] = 0x04, .u_offset[10] = 0xff, + .v_offset[0] = 0xf4, .v_offset[1] = 0xf4, .v_offset[2] = 0xf4, .v_offset[3] = 0xf4, .v_offset[4] = 0xf4, .v_offset[5] = 0xf4, .v_offset[6] = 0xf4, .v_offset[7] = 0xf4, .v_offset[8] = 0xf4, .v_offset[9] = 0xf4, .v_offset[10] = 0x00, + + .black_level[0] = 0x86, .black_level[1] = 0x86, .black_level[2] = 0x86, .black_level[3] = 0x86, .black_level[4] = 0x86, .black_level[5] = 0x8c, .black_level[6] = 0x8c, .black_level[7] = 0x8c, .black_level[8] = 0x8c, .black_level[9] = 0x8c, .black_level[10] = 0x98, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x50, .acc_ref[7] = 0x50, .acc_ref[8] = 0x50, .acc_ref[9] = 0x50, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xf0, .sub_saturation[1] = 0xf0, .sub_saturation[2] = 0xf0, .sub_saturation[3] = 0xf0, .sub_saturation[4] = 0xf0, .sub_saturation[5] = 0xf0, .sub_saturation[6] = 0xf0, .sub_saturation[7] = 0xc0, .sub_saturation[8] = 0xc0, .sub_saturation[9] = 0xc0, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x64, .h_delay_a[1] = 0x7e, .h_delay_a[2] = 0x7d, .h_delay_a[3] = 0x7c, .h_delay_a[4] = 0x7c, .h_delay_a[5] = 0x7d, .h_delay_a[6] = 0x7d, .h_delay_a[7] = 0x7d, .h_delay_a[8] = 0x7d, .h_delay_a[9] = 0x7d, .h_delay_a[10] = 0x7d, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, .h_delay_c[6] = 0x00, .h_delay_c[7] = 0x00, .h_delay_c[8] = 0x00, .h_delay_c[9] = 0x00, .h_delay_c[10] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, .y_delay[6] = 0x00, .y_delay[7] = 0x00, .y_delay[8] = 0x00, .y_delay[9] = 0x00, .y_delay[10] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, .h_scaler1[6] = 0x00, .h_scaler1[7] = 0x00, .h_scaler1[8] = 0x00, .h_scaler1[9] = 0x00, .h_scaler1[10] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, .h_scaler2[6] = 0x00, .h_scaler2[7] = 0x00, .h_scaler2[8] = 0x00, .h_scaler2[9] = 0x00, .h_scaler2[10] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, .h_scaler3[6] = 0x00, .h_scaler3[7] = 0x00, .h_scaler3[8] = 0x00, .h_scaler3[9] = 0x00, .h_scaler3[10] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x05, .format_set1[1] = 0x05, .format_set1[2] = 0x05, .format_set1[3] = 0x05, .format_set1[4] = 0x05, .format_set1[5] = 0x05, .format_set1[6] = 0x05, .format_set1[7] = 0x05, .format_set1[8] = 0x05, .format_set1[9] = 0x05, .format_set1[10] = 0x05, + /*B0 0x85*/ .format_set2[0] = 0x01, .format_set2[1] = 0x01, .format_set2[2] = 0x01, .format_set2[3] = 0x01, .format_set2[4] = 0x01, .format_set2[5] = 0x01, .format_set2[6] = 0x01, .format_set2[7] = 0x01, .format_set2[8] = 0x01, .format_set2[9] = 0x01, .format_set2[10] = 0x01, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, .v_delay[6] = 0x00, .v_delay[7] = 0x00, .v_delay[8] = 0x00, .v_delay[9] = 0x00, .v_delay[10] = 0x00, + }, + }, + + [ TVI_HD_60P ] = /* o */ + { + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, .eq_bypass[6] = 0x22, .eq_bypass[7] = 0x22, .eq_bypass[8] = 0x22, .eq_bypass[9] = 0x22, .eq_bypass[10] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x67, .eq_band_sel[2] = 0x67, .eq_band_sel[3] = 0x67, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x47, .eq_band_sel[6] = 0x27, .eq_band_sel[7] = 0x27, .eq_band_sel[8] = 0x27, .eq_band_sel[9] = 0x27, .eq_band_sel[10] = 0x07, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7c, .eq_gain_sel[3] = 0x7c, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, .eq_gain_sel[6] = 0x7f, .eq_gain_sel[7] = 0x7f, .eq_gain_sel[8] = 0x7f, .eq_gain_sel[9] = 0x7f, .eq_gain_sel[10] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, .deq_a_on[6] = 0x01, .deq_a_on[7] = 0x01, .deq_a_on[8] = 0x01, .deq_a_on[9] = 0x01, .deq_a_on[10] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x91, .deq_a_sel[2] = 0x92, .deq_a_sel[3] = 0x93, .deq_a_sel[4] = 0x93, .deq_a_sel[5] = 0x92, .deq_a_sel[6] = 0x91, .deq_a_sel[7] = 0x92, .deq_a_sel[8] = 0x93, .deq_a_sel[9] = 0x93, .deq_a_sel[10] = 0x92, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, .deq_b_sel[6] = 0x00, .deq_b_sel[7] = 0x00, .deq_b_sel[8] = 0x00, .deq_b_sel[9] = 0x00, .deq_b_sel[10] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, .deqA_01[6] = 0xAC, .deqA_01[7] = 0xAC, .deqA_01[8] = 0xAC, .deqA_01[9] = 0xAC, .deqA_01[10] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, .deqA_02[6] = 0x78, .deqA_02[7] = 0x78, .deqA_02[8] = 0x78, .deqA_02[9] = 0x78, .deqA_02[10] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, .deqA_03[6] = 0x17, .deqA_03[7] = 0x17, .deqA_03[8] = 0x17, .deqA_03[9] = 0x17, .deqA_03[10] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, .deqA_04[6] = 0xC1, .deqA_04[7] = 0xC1, .deqA_04[8] = 0xC1, .deqA_04[9] = 0xC1, .deqA_04[10] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, .deqA_05[6] = 0x40, .deqA_05[7] = 0x40, .deqA_05[8] = 0x40, .deqA_05[9] = 0x40, .deqA_05[10] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, .deqA_06[6] = 0x00, .deqA_06[7] = 0x00, .deqA_06[8] = 0x00, .deqA_06[9] = 0x00, .deqA_06[10] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, .deqA_07[6] = 0xC3, .deqA_07[7] = 0xC3, .deqA_07[8] = 0xC3, .deqA_07[9] = 0xC3, .deqA_07[10] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, .deqA_08[6] = 0x0A, .deqA_08[7] = 0x0A, .deqA_08[8] = 0x0A, .deqA_08[9] = 0x0A, .deqA_08[10] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, .deqA_09[6] = 0x00, .deqA_09[7] = 0x00, .deqA_09[8] = 0x00, .deqA_09[9] = 0x00, .deqA_09[10] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, .deqA_10[6] = 0x02, .deqA_10[7] = 0x02, .deqA_10[8] = 0x02, .deqA_10[9] = 0x02, .deqA_10[10] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, .deqA_11[6] = 0x00, .deqA_11[7] = 0x00, .deqA_11[8] = 0x00, .deqA_11[9] = 0x00, .deqA_11[10] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, .deqA_12[6] = 0xB2, .deqA_12[7] = 0xB2, .deqA_12[8] = 0xB2, .deqA_12[9] = 0xB2, .deqA_12[10] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x84, .contrast[1] = 0x80, .contrast[2] = 0x80, .contrast[3] = 0x80, .contrast[4] = 0x80, .contrast[5] = 0x80, .contrast[6] = 0x80, .contrast[7] = 0x80, .contrast[8] = 0x80, .contrast[9] = 0x80, .contrast[10] = 0x6d, + .h_peaking[0] = 0x00, .h_peaking[1] = 0x20, .h_peaking[2] = 0x20, .h_peaking[3] = 0x20, .h_peaking[4] = 0x20, .h_peaking[5] = 0x00, .h_peaking[6] = 0x70, .h_peaking[7] = 0x70, .h_peaking[8] = 0x70, .h_peaking[9] = 0x70, .h_peaking[10] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0x92, .c_filter[6] = 0x92, .c_filter[7] = 0x92, .c_filter[8] = 0x92, .c_filter[9] = 0x92, .c_filter[10] = 0xb2, + .hue[0] = 0x06, .hue[1] = 0x06, .hue[2] = 0x06, .hue[3] = 0x06, .hue[4] = 0x06, .hue[5] = 0x06, .hue[6] = 0x06, .hue[7] = 0x06, .hue[8] = 0x06, .hue[9] = 0x06, .hue[10] = 0x00, + .u_gain[0] = 0x50, .u_gain[1] = 0x50, .u_gain[2] = 0x50, .u_gain[3] = 0x50, .u_gain[4] = 0x50, .u_gain[5] = 0x50, .u_gain[6] = 0x50, .u_gain[7] = 0x50, .u_gain[8] = 0x50, .u_gain[9] = 0x50, .u_gain[10] = 0xe0, + .v_gain[0] = 0xf8, .v_gain[1] = 0xf8, .v_gain[2] = 0xf8, .v_gain[3] = 0xf8, .v_gain[4] = 0xf8, .v_gain[5] = 0xf8, .v_gain[6] = 0xf8, .v_gain[7] = 0xf8, .v_gain[8] = 0xf8, .v_gain[9] = 0xf8, .v_gain[10] = 0x00, + .u_offset[0] = 0x04, .u_offset[1] = 0x04, .u_offset[2] = 0x04, .u_offset[3] = 0x04, .u_offset[4] = 0x04, .u_offset[5] = 0x04, .u_offset[6] = 0x04, .u_offset[7] = 0x04, .u_offset[8] = 0x04, .u_offset[9] = 0x04, .u_offset[10] = 0xff, + .v_offset[0] = 0xf4, .v_offset[1] = 0xf4, .v_offset[2] = 0xf4, .v_offset[3] = 0xf4, .v_offset[4] = 0xf4, .v_offset[5] = 0xf4, .v_offset[6] = 0xf4, .v_offset[7] = 0xf4, .v_offset[8] = 0xf4, .v_offset[9] = 0xf4, .v_offset[10] = 0x00, + + .black_level[0] = 0x86, .black_level[1] = 0x86, .black_level[2] = 0x86, .black_level[3] = 0x86, .black_level[4] = 0x86, .black_level[5] = 0x8c, .black_level[6] = 0x8c, .black_level[7] = 0x8c, .black_level[8] = 0x8c, .black_level[9] = 0x8c, .black_level[10] = 0x98, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, .acc_ref[6] = 0x50, .acc_ref[7] = 0x50, .acc_ref[8] = 0x50, .acc_ref[9] = 0x50, .acc_ref[10] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, .cti_delay[6] = 0x80, .cti_delay[7] = 0x80, .cti_delay[8] = 0x80, .cti_delay[9] = 0x80, .cti_delay[10] = 0x80, + .sub_saturation[0] = 0xf0, .sub_saturation[1] = 0xf0, .sub_saturation[2] = 0xf0, .sub_saturation[3] = 0xf0, .sub_saturation[4] = 0xf0, .sub_saturation[5] = 0xf0, .sub_saturation[6] = 0xf0, .sub_saturation[7] = 0xc0, .sub_saturation[8] = 0xc0, .sub_saturation[9] = 0xc0, .sub_saturation[10] = 0x50, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, .burst_dec_a[6] = 0x2a, .burst_dec_a[7] = 0x2a, .burst_dec_a[8] = 0x2a, .burst_dec_a[9] = 0x2a, .burst_dec_a[10] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, .burst_dec_b[6] = 0x00, .burst_dec_b[7] = 0x00, .burst_dec_b[8] = 0x00, .burst_dec_b[9] = 0x00, .burst_dec_b[10] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, .burst_dec_c[6] = 0x00, .burst_dec_c[7] = 0x00, .burst_dec_c[8] = 0x00, .burst_dec_c[9] = 0x00, .burst_dec_c[10] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0xb0, .c_option[4] = 0xb0, .c_option[5] = 0xb0, .c_option[6] = 0xb0, .c_option[7] = 0xb0, .c_option[8] = 0xb0, .c_option[9] = 0xb0, .c_option[10] = 0xb0, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, .y_filter_b[6] = 0x10, .y_filter_b[7] = 0x10, .y_filter_b[8] = 0x10, .y_filter_b[9] = 0x10, .y_filter_b[10] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, .y_filter_b_sel[6] = 0x1e, .y_filter_b_sel[7] = 0x1e, .y_filter_b_sel[8] = 0x1e, .y_filter_b_sel[9] = 0x1e, .y_filter_b_sel[10] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x64, .h_delay_a[1] = 0x7e, .h_delay_a[2] = 0x7d, .h_delay_a[3] = 0x7c, .h_delay_a[4] = 0x7c, .h_delay_a[5] = 0x7d, .h_delay_a[6] = 0x7d, .h_delay_a[7] = 0x7d, .h_delay_a[8] = 0x7d, .h_delay_a[9] = 0x7d, .h_delay_a[10] = 0x7d, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, .h_delay_b[6] = 0x00, .h_delay_b[7] = 0x00, .h_delay_b[8] = 0x00, .h_delay_b[9] = 0x00, .h_delay_b[10] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, .h_delay_c[6] = 0x00, .h_delay_c[7] = 0x00, .h_delay_c[8] = 0x00, .h_delay_c[9] = 0x00, .h_delay_c[10] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, .y_delay[6] = 0x00, .y_delay[7] = 0x00, .y_delay[8] = 0x00, .y_delay[9] = 0x00, .y_delay[10] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, .clk_adc[6] = 0x02, .clk_adc[7] = 0x02, .clk_adc[8] = 0x02, .clk_adc[9] = 0x02, .clk_adc[10] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, .clk_dec[6] = 0x40, .clk_dec[7] = 0x40, .clk_dec[8] = 0x40, .clk_dec[9] = 0x40, .clk_dec[10] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, .h_scaler1[6] = 0x00, .h_scaler1[7] = 0x00, .h_scaler1[8] = 0x00, .h_scaler1[9] = 0x00, .h_scaler1[10] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, .h_scaler2[6] = 0x00, .h_scaler2[7] = 0x00, .h_scaler2[8] = 0x00, .h_scaler2[9] = 0x00, .h_scaler2[10] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, .h_scaler3[6] = 0x00, .h_scaler3[7] = 0x00, .h_scaler3[8] = 0x00, .h_scaler3[9] = 0x00, .h_scaler3[10] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, .h_scaler4[6] = 0x00, .h_scaler4[7] = 0x00, .h_scaler4[8] = 0x00, .h_scaler4[9] = 0x00, .h_scaler4[10] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, .h_scaler5[6] = 0x00, .h_scaler5[7] = 0x00, .h_scaler5[8] = 0x00, .h_scaler5[9] = 0x00, .h_scaler5[10] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, .h_scaler6[6] = 0x00, .h_scaler6[7] = 0x00, .h_scaler6[8] = 0x00, .h_scaler6[9] = 0x00, .h_scaler6[10] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, .h_scaler7[6] = 0x00, .h_scaler7[7] = 0x00, .h_scaler7[8] = 0x00, .h_scaler7[9] = 0x00, .h_scaler7[10] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, .h_scaler8[6] = 0x00, .h_scaler8[7] = 0x00, .h_scaler8[8] = 0x00, .h_scaler8[9] = 0x00, .h_scaler8[10] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, .h_scaler9[6] = 0x00, .h_scaler9[7] = 0x00, .h_scaler9[8] = 0x00, .h_scaler9[9] = 0x00, .h_scaler9[10] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, .pn_auto[6] = 0x00, .pn_auto[7] = 0x00, .pn_auto[8] = 0x00, .pn_auto[9] = 0x00, .pn_auto[10] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, .comb_mode[6] = 0x05, .comb_mode[7] = 0x05, .comb_mode[8] = 0x05, .comb_mode[9] = 0x05, .comb_mode[10] = 0x05, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, .h_pll_op_a[6] = 0x72, .h_pll_op_a[7] = 0x72, .h_pll_op_a[8] = 0x72, .h_pll_op_a[9] = 0x72, .h_pll_op_a[10] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, .mem_path[6] = 0x10, .mem_path[7] = 0x10, .mem_path[8] = 0x10, .mem_path[9] = 0x10, .mem_path[10] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, .fsc_lock_speed[6] = 0xdc, .fsc_lock_speed[7] = 0xdc, .fsc_lock_speed[8] = 0xdc, .fsc_lock_speed[9] = 0xdc, .fsc_lock_speed[10] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x04, .format_set1[1] = 0x04, .format_set1[2] = 0x04, .format_set1[3] = 0x04, .format_set1[4] = 0x04, .format_set1[5] = 0x04, .format_set1[6] = 0x04, .format_set1[7] = 0x04, .format_set1[8] = 0x04, .format_set1[9] = 0x04, .format_set1[10] = 0x04, + /*B0 0x85*/ .format_set2[0] = 0x01, .format_set2[1] = 0x01, .format_set2[2] = 0x01, .format_set2[3] = 0x01, .format_set2[4] = 0x01, .format_set2[5] = 0x01, .format_set2[6] = 0x01, .format_set2[7] = 0x01, .format_set2[8] = 0x01, .format_set2[9] = 0x01, .format_set2[10] = 0x01, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, .v_delay[6] = 0x00, .v_delay[7] = 0x00, .v_delay[8] = 0x00, .v_delay[9] = 0x00, .v_delay[10] = 0x00, + }, + }, + + [ AHD20_SD_H960_NT ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, // BankA 0x31 + .eq_gain_sel[0] = 0x78, // BankA 0x32 + .deq_a_on[0] = 0x00, // BankA 0x33 + .deq_a_sel[0] = 0x00, // BankA 0x34 + .deq_b_sel[0] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x90, + .h_peaking[0] = 0x08, + .c_filter[0] = 0x82, + + .hue[0] = 0x00, + .u_gain[0] = 0x00, + .v_gain[0] = 0x00, + .u_offset[0] = 0x00, + .v_offset[0] = 0x00, + + .black_level[0] = 0x90, + .acc_ref[0] = 0x57, + .cti_delay[0] = 0x80, + .sub_saturation[0] = 0xc0, + + .burst_dec_a[0] = 0x2a, + .burst_dec_b[0] = 0x00, + .burst_dec_c[0] = 0x00, + + .c_option[0] = 0x80, + + .y_filter_b[0] = 0x10, + .y_filter_b_sel[0] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, + .h_delay_b[0] = 0x10, + .h_delay_c[0] = 0x04, + .y_delay[0] = 0x27, + + }, + /* clk */ + { + .clk_adc[0] = 0x06, + .clk_dec[0] = 0xa6, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x10, + /*B9 0x97*/ .h_scaler2[0] = 0x10, + /*B9 0x98*/ .h_scaler3[0] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, + + + // /*B9 0x40*/ .pn_auto[0] = 0x60, + /*B9 0x40*/ .pn_auto[0] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, + .fsc_lock_speed[0] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x00, + /*B0 0x85*/ .format_set2[0] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0xc0, + }, + }, + + [ AHD20_SD_H960_PAL ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, // Bank5 0x30 + .eq_band_sel[0] = 0x71, // BankA 0x31 + .eq_gain_sel[0] = 0x78, // BankA 0x32 + .deq_a_on[0] = 0x00, // BankA 0x33 + .deq_a_sel[0] = 0x00, // BankA 0x34 + .deq_b_sel[0] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x90, + .h_peaking[0] = 0x08, + .c_filter[0] = 0x82, + + .hue[0] = 0x00, + .u_gain[0] = 0x00, + .v_gain[0] = 0x00, + .u_offset[0] = 0x00, + .v_offset[0] = 0x00, + + .black_level[0] = 0x90, + .acc_ref[0] = 0x57, + .cti_delay[0] = 0x80, + .sub_saturation[0] = 0xc0, + + .burst_dec_a[0] = 0x1a, + .burst_dec_b[0] = 0x00, + .burst_dec_c[0] = 0x00, + + .c_option[0] = 0x80, + + .y_filter_b[0] = 0x10, + .y_filter_b_sel[0] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x54, + .h_delay_b[0] = 0x10, + .h_delay_c[0] = 0x07, + .y_delay[0] = 0x18, + + }, + /* clk */ + { + .clk_adc[0] = 0x06, + .clk_dec[0] = 0xa6, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x10, + /*B9 0x97*/ .h_scaler2[0] = 0x10, + /*B9 0x98*/ .h_scaler3[0] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0xb2, + /*B9 0x57*/ .mem_path[0] = 0x00, + .fsc_lock_speed[0] = 0xcc, + + /*B0 0x81*/ .format_set1[0] = 0x10, + /*B0 0x85*/ .format_set2[0] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x80, + }, + }, + [ AHD20_SD_H960_EX_NT ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, // BankA 0x31 + .eq_gain_sel[0] = 0x78, // BankA 0x32 + .deq_a_on[0] = 0x00, // BankA 0x33 + .deq_a_sel[0] = 0x00, // BankA 0x34 + .deq_b_sel[0] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x90, + .h_peaking[0] = 0x08, + .c_filter[0] = 0x82, + + .hue[0] = 0x00, + .u_gain[0] = 0x00, + .v_gain[0] = 0x00, + .u_offset[0] = 0x00, + .v_offset[0] = 0x00, + + .black_level[0] = 0x90, + .acc_ref[0] = 0x57, + .cti_delay[0] = 0x80, + .sub_saturation[0] = 0xc0, + + .burst_dec_a[0] = 0x2a, + .burst_dec_b[0] = 0x00, + .burst_dec_c[0] = 0x00, + + .c_option[0] = 0x80, + + .y_filter_b[0] = 0x10, + .y_filter_b_sel[0] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0xC0, + .h_delay_b[0] = 0x00, + .h_delay_c[0] = 0x00, + .y_delay[0] = 0x18, + + }, + /* clk */ + { + .clk_adc[0] = 0x06, + .clk_dec[0] = 0xa6, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x10, + /*B9 0x97*/ .h_scaler2[0] = 0x10, + /*B9 0x98*/ .h_scaler3[0] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x60, + + /*B5 0x90*/ .comb_mode[0] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, + .fsc_lock_speed[0] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0xa0, + /*B0 0x85*/ .format_set2[0] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0xc0, + }, + }, + + [ AHD20_SD_H960_EX_PAL ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, // BankA 0x31 + .eq_gain_sel[0] = 0x78, // BankA 0x32 + .deq_a_on[0] = 0x00, // BankA 0x33 + .deq_a_sel[0] = 0x00, // BankA 0x34 + .deq_b_sel[0] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x90, + .h_peaking[0] = 0x08, + .c_filter[0] = 0x82, + + .hue[0] = 0x00, + .u_gain[0] = 0x00, + .v_gain[0] = 0x00, + .u_offset[0] = 0x00, + .v_offset[0] = 0x00, + + .black_level[0] = 0x90, + .acc_ref[0] = 0x57, + .cti_delay[0] = 0x80, + .sub_saturation[0] = 0xc0, + + .burst_dec_a[0] = 0x2a, + .burst_dec_b[0] = 0x00, + .burst_dec_c[0] = 0x00, + + .c_option[0] = 0x80, + + .y_filter_b[0] = 0x10, + .y_filter_b_sel[0] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, + .h_delay_b[0] = 0x10, + .h_delay_c[0] = 0x07, + .y_delay[0] = 0x18, + + }, + /* clk */ + { + .clk_adc[0] = 0x06, + .clk_dec[0] = 0xa6, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x10, + /*B9 0x97*/ .h_scaler2[0] = 0x10, + /*B9 0x98*/ .h_scaler3[0] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, + .fsc_lock_speed[0] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0xb0, + /*B0 0x85*/ .format_set2[0] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x80, + }, + }, + [ AHD20_SD_H960_2EX_Btype_NT ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, // Bank5 0x30 + .eq_band_sel[0] = 0x77, // BankA 0x31 + .eq_gain_sel[0] = 0x78, // BankA 0x32 + .deq_a_on[0] = 0x00, // BankA 0x33 + .deq_a_sel[0] = 0x00, // BankA 0x34 + .deq_b_sel[0] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x90, + .h_peaking[0] = 0x08, + .c_filter[0] = 0x82, + + .hue[0] = 0x00, + .u_gain[0] = 0x00, + .v_gain[0] = 0x00, + .u_offset[0] = 0x00, + .v_offset[0] = 0x00, + + .black_level[0] = 0x90, + .acc_ref[0] = 0x57, + .cti_delay[0] = 0x80, + .sub_saturation[0] = 0xc0, + + .burst_dec_a[0] = 0x2a, + .burst_dec_b[0] = 0x00, + .burst_dec_c[0] = 0x00, + + .c_option[0] = 0x80, + + .y_filter_b[0] = 0x10, + .y_filter_b_sel[0] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, + .h_delay_b[0] = 0x00, + .h_delay_c[0] = 0x00, + .y_delay[0] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, + .clk_dec[0] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x10, + /*B9 0x97*/ .h_scaler2[0] = 0x10, + /*B9 0x98*/ .h_scaler3[0] = 0xE0, + /*B9 0x99*/ .h_scaler4[0] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, + .fsc_lock_speed[0] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0xe0, + /*B0 0x85*/ .format_set2[0] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0xc0, + }, + }, + + [ AHD20_SD_H960_2EX_Btype_PAL ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x62, // Bank5 0x30 + .eq_band_sel[0] = 0x77, // BankA 0x31 + .eq_gain_sel[0] = 0x78, // BankA 0x32 + .deq_a_on[0] = 0x00, // BankA 0x33 + .deq_a_sel[0] = 0x00, // BankA 0x34 + .deq_b_sel[0] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x90, + .h_peaking[0] = 0x08, + .c_filter[0] = 0x82, + + .hue[0] = 0x00, + .u_gain[0] = 0x00, + .v_gain[0] = 0x00, + .u_offset[0] = 0x00, + .v_offset[0] = 0x00, + + .black_level[0] = 0x90, + .acc_ref[0] = 0x57, + .cti_delay[0] = 0x80, + .sub_saturation[0] = 0xc0, + + .burst_dec_a[0] = 0x2a, + .burst_dec_b[0] = 0x00, + .burst_dec_c[0] = 0x00, + + .c_option[0] = 0x80, + + .y_filter_b[0] = 0x10, + .y_filter_b_sel[0] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, + .h_delay_b[0] = 0x00, + .h_delay_c[0] = 0x00, + .y_delay[0] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, + .clk_dec[0] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x10, + /*B9 0x97*/ .h_scaler2[0] = 0x10, + /*B9 0x98*/ .h_scaler3[0] = 0xC0, + /*B9 0x99*/ .h_scaler4[0] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, + .fsc_lock_speed[0] = 0xcc, + + /*B0 0x81*/ .format_set1[0] = 0xf0, + /*B0 0x85*/ .format_set2[0] = 0x00, + + /*B0 0x64*/ .v_delay[0] = 0x80, + }, + }, + + [ TVI_8M_15P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7a, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x95, .deq_a_sel[4] = 0x94, .deq_a_sel[5] = 0x95, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x88, .contrast[2] = 0x88, .contrast[3] = 0x88, .contrast[4] = 0x88, .contrast[5] = 0x88, + .h_peaking[0] = 0x20, .h_peaking[1] = 0x20, .h_peaking[2] = 0x30, .h_peaking[3] = 0x30, .h_peaking[4] = 0x30, .h_peaking[5] = 0x30, + .c_filter[0] = 0x92, .c_filter[1] = 0x92, .c_filter[2] = 0x92, .c_filter[3] = 0xa2, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x05, .hue[1] = 0x05, .hue[2] = 0x05, .hue[3] = 0x05, .hue[4] = 0x05, .hue[5] = 0x05, + .u_gain[0] = 0x50, .u_gain[1] = 0x50, .u_gain[2] = 0x14, .u_gain[3] = 0x14, .u_gain[4] = 0x14, .u_gain[5] = 0x14, + .v_gain[0] = 0xe0, .v_gain[1] = 0xf8, .v_gain[2] = 0x14, .v_gain[3] = 0x14, .v_gain[4] = 0x14, .v_gain[5] = 0x14, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xf6, .u_offset[3] = 0xf6, .u_offset[4] = 0xf6, .u_offset[5] = 0xf6, + .v_offset[0] = 0xfc, .v_offset[1] = 0xfc, .v_offset[2] = 0xfc, .v_offset[3] = 0xfc, .v_offset[4] = 0xfc, .v_offset[5] = 0xfc, + + .black_level[0] = 0x85, .black_level[1] = 0x85, .black_level[2] = 0x88, .black_level[3] = 0x8b, .black_level[4] = 0x8b, .black_level[5] = 0x8b, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x47, .acc_ref[5] = 0x37, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xd0, .sub_saturation[1] = 0xd0, .sub_saturation[2] = 0xa0, .sub_saturation[3] = 0x90, .sub_saturation[4] = 0x48, .sub_saturation[5] = 0x20, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0xc0, .c_option[1] = 0xc0, .c_option[2] = 0xc0, .c_option[3] = 0xc0, .c_option[4] = 0xc0, .c_option[5] = 0xc0, + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + + }, + /* timing_a */ + { + .h_delay_a[0] = 0x6a, .h_delay_a[1] = 0x6a, .h_delay_a[2] = 0x6a, .h_delay_a[3] = 0x6a, .h_delay_a[4] = 0x6a, .h_delay_a[5] = 0x6a, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x02, .h_delay_c[1] = 0x02, .h_delay_c[2] = 0x02, .h_delay_c[3] = 0x02, .h_delay_c[4] = 0x02, .h_delay_c[5] = 0x02, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + .format_set1[0] = 0x02, .format_set1[1] = 0x02, .format_set1[2] = 0x02, .format_set1[3] = 0x02, .format_set1[4] = 0x02, .format_set1[5] = 0x02, + .format_set2[0] = 0x09, .format_set2[1] = 0x09, .format_set2[2] = 0x09, .format_set2[3] = 0x09, .format_set2[4] = 0x09, .format_set2[5] = 0x09, + + .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + [ TVI_8M_12_5P ] = { /* o */ + /* base */ + { + .eq_bypass[0] = 0x22, .eq_bypass[1] = 0x22, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x57, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x7a, .eq_gain_sel[2] = 0x7f, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x93, .deq_a_sel[3] = 0x95, .deq_a_sel[4] = 0x94, .deq_a_sel[5] = 0x95, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x7e, .contrast[1] = 0x7c, .contrast[2] = 0x7a, .contrast[3] = 0x79, .contrast[4] = 0x79, .contrast[5] = 0x79, + .h_peaking[0] = 0x20, .h_peaking[1] = 0x20, .h_peaking[2] = 0x30, .h_peaking[3] = 0x30, .h_peaking[4] = 0x30, .h_peaking[5] = 0x30, + .c_filter[0] = 0x81, .c_filter[1] = 0x91, .c_filter[2] = 0x91, .c_filter[3] = 0xa2, .c_filter[4] = 0xb2, .c_filter[5] = 0xb2, + + .hue[0] = 0x00, .hue[1] = 0x00, .hue[2] = 0x00, .hue[3] = 0x00, .hue[4] = 0x00, .hue[5] = 0x00, + .u_gain[0] = 0xd8, .u_gain[1] = 0xf0, .u_gain[2] = 0x14, .u_gain[3] = 0x14, .u_gain[4] = 0x14, .u_gain[5] = 0x14, + .v_gain[0] = 0xe0, .v_gain[1] = 0xf8, .v_gain[2] = 0x14, .v_gain[3] = 0x14, .v_gain[4] = 0x14, .v_gain[5] = 0x14, + .u_offset[0] = 0xfb, .u_offset[1] = 0xfb, .u_offset[2] = 0xf6, .u_offset[3] = 0xf6, .u_offset[4] = 0xf6, .u_offset[5] = 0xf6, + .v_offset[0] = 0xfc, .v_offset[1] = 0xfc, .v_offset[2] = 0xfc, .v_offset[3] = 0xfc, .v_offset[4] = 0xfc, .v_offset[5] = 0xfc, + + .black_level[0] = 0x85, .black_level[1] = 0x85, .black_level[2] = 0x88, .black_level[3] = 0x8b, .black_level[4] = 0x8b, .black_level[5] = 0x8b, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x47, .acc_ref[5] = 0x37, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xb0, .sub_saturation[1] = 0x90, .sub_saturation[2] = 0x90, .sub_saturation[3] = 0x80, .sub_saturation[4] = 0x48, .sub_saturation[5] = 0x20, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x90, .c_option[1] = 0x90, .c_option[2] = 0x90, .c_option[3] = 0x90, .c_option[4] = 0x90, .c_option[5] = 0x90, + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x80, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x10, .h_delay_b[1] = 0x10, .h_delay_b[2] = 0x10, .h_delay_b[3] = 0x10, .h_delay_b[4] = 0x10, .h_delay_b[5] = 0x10, + .h_delay_c[0] = 0x02, .h_delay_c[1] = 0x02, .h_delay_c[2] = 0x02, .h_delay_c[3] = 0x02, .h_delay_c[4] = 0x02, .h_delay_c[5] = 0x02, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x05, .clk_adc[1] = 0x05, .clk_adc[2] = 0x05, .clk_adc[3] = 0x05, .clk_adc[4] = 0x05, .clk_adc[5] = 0x05, + .clk_dec[0] = 0x44, .clk_dec[1] = 0x44, .clk_dec[2] = 0x44, .clk_dec[3] = 0x44, .clk_dec[4] = 0x44, .clk_dec[5] = 0x44, + }, + /* timing_b */ + { + .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + .comb_mode[0] = 0x05, .comb_mode[1] = 0x05, .comb_mode[2] = 0x05, .comb_mode[3] = 0x05, .comb_mode[4] = 0x05, .comb_mode[5] = 0x05, + .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + .mem_path[0] = 0x10, .mem_path[1] = 0x10, .mem_path[2] = 0x10, .mem_path[3] = 0x10, .mem_path[4] = 0x10, .mem_path[5] = 0x10, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + .format_set1[0] = 0x01, .format_set1[1] = 0x01, .format_set1[2] = 0x01, .format_set1[3] = 0x01, .format_set1[4] = 0x01, .format_set1[5] = 0x01, + .format_set2[0] = 0x09, .format_set2[1] = 0x09, .format_set2[2] = 0x09, .format_set2[3] = 0x09, .format_set2[4] = 0x09, .format_set2[5] = 0x09, + + .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + + [ AHD20_960P_30P ] = { + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x62, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x88, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x8e, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x88, .contrast[2] = 0x88, .contrast[3] = 0x88, .contrast[4] = 0x88, .contrast[5] = 0x7e, + .h_peaking[0] = 0x3f, .h_peaking[1] = 0x3f, .h_peaking[2] = 0x3f, .h_peaking[3] = 0x3f, .h_peaking[4] = 0x3f, .h_peaking[5] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0x92, + + .hue[0] = 0xfe, .hue[1] = 0xfe, .hue[2] = 0xfe, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x30, .u_gain[1] = 0x30, .u_gain[2] = 0x30, .u_gain[3] = 0x30, .u_gain[4] = 0x30, .u_gain[5] = 0x30, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0xf0, .v_gain[4] = 0xf0, .v_gain[5] = 0xf0, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x86, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xc0, .sub_saturation[1] = 0xc0, .sub_saturation[2] = 0xb8, .sub_saturation[3] = 0xb8, .sub_saturation[4] = 0xb0, .sub_saturation[5] = 0xb0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x3b, .h_delay_a[1] = 0x3b, .h_delay_a[2] = 0x3b, .h_delay_a[3] = 0x3b, .h_delay_a[4] = 0x3b, .h_delay_a[5] = 0x3b, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x06, .format_set1[1] = 0x06, .format_set1[2] = 0x06, .format_set1[3] = 0x06, .format_set1[4] = 0x06, .format_set1[5] = 0x06, + /*B0 0x85*/ .format_set2[0] = 0x0b, .format_set2[1] = 0x0b, .format_set2[2] = 0x0b, .format_set2[3] = 0x0b, .format_set2[4] = 0x0b, .format_set2[5] = 0x0b, + + /*B0 0x64*/ .v_delay[0] = 0x29, .v_delay[1] = 0x29, .v_delay[2] = 0x29, .v_delay[3] = 0x29, .v_delay[4] = 0x29, .v_delay[5] = 0x29, + }, + }, + + [ AHD20_960P_25P ] = { + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x62, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x88, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x8e, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x88, .contrast[2] = 0x88, .contrast[3] = 0x88, .contrast[4] = 0x88, .contrast[5] = 0x7e, + .h_peaking[0] = 0x3f, .h_peaking[1] = 0x3f, .h_peaking[2] = 0x3f, .h_peaking[3] = 0x3f, .h_peaking[4] = 0x3f, .h_peaking[5] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0x92, + + .hue[0] = 0xfe, .hue[1] = 0xfe, .hue[2] = 0xfe, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x30, .u_gain[1] = 0x30, .u_gain[2] = 0x30, .u_gain[3] = 0x30, .u_gain[4] = 0x30, .u_gain[5] = 0x30, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0xf0, .v_gain[4] = 0xf0, .v_gain[5] = 0xf0, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x86, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xc0, .sub_saturation[1] = 0xc0, .sub_saturation[2] = 0xb8, .sub_saturation[3] = 0xb8, .sub_saturation[4] = 0xb0, .sub_saturation[5] = 0xb0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x38, .h_delay_a[1] = 0x38, .h_delay_a[2] = 0x38, .h_delay_a[3] = 0x38, .h_delay_a[4] = 0x38, .h_delay_a[5] = 0x38, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x07, .format_set1[1] = 0x07, .format_set1[2] = 0x07, .format_set1[3] = 0x07, .format_set1[4] = 0x07, .format_set1[5] = 0x07, + /*B0 0x85*/ .format_set2[0] = 0x0b, .format_set2[1] = 0x0b, .format_set2[2] = 0x0b, .format_set2[3] = 0x0b, .format_set2[4] = 0x0b, .format_set2[5] = 0x0b, + + /*B0 0x64*/ .v_delay[0] = 0x28, .v_delay[1] = 0x28, .v_delay[2] = 0x28, .v_delay[3] = 0x28, .v_delay[4] = 0x28, .v_delay[5] = 0x28, + }, + }, + + [ AHD20_960P_60P ] = { + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x62, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x88, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x8e, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x88, .contrast[2] = 0x88, .contrast[3] = 0x88, .contrast[4] = 0x88, .contrast[5] = 0x7e, + .h_peaking[0] = 0x3f, .h_peaking[1] = 0x3f, .h_peaking[2] = 0x3f, .h_peaking[3] = 0x3f, .h_peaking[4] = 0x3f, .h_peaking[5] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0x92, + + .hue[0] = 0xfe, .hue[1] = 0xfe, .hue[2] = 0xfe, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x30, .u_gain[1] = 0x30, .u_gain[2] = 0x30, .u_gain[3] = 0x30, .u_gain[4] = 0x30, .u_gain[5] = 0x30, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0xf0, .v_gain[4] = 0xf0, .v_gain[5] = 0xf0, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x86, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xc0, .sub_saturation[1] = 0xc0, .sub_saturation[2] = 0xb8, .sub_saturation[3] = 0xb8, .sub_saturation[4] = 0xb0, .sub_saturation[5] = 0xb0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x84, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x04, .format_set1[1] = 0x04, .format_set1[2] = 0x04, .format_set1[3] = 0x04, .format_set1[4] = 0x04, .format_set1[5] = 0x04, + /*B0 0x85*/ .format_set2[0] = 0x0b, .format_set2[1] = 0x0b, .format_set2[2] = 0x0b, .format_set2[3] = 0x0b, .format_set2[4] = 0x0b, .format_set2[5] = 0x0b, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, + + [ AHD20_960P_50P ] = { + /* base */ + { + .eq_bypass[0] = 0x62, .eq_bypass[1] = 0x62, .eq_bypass[2] = 0x22, .eq_bypass[3] = 0x22, .eq_bypass[4] = 0x22, .eq_bypass[5] = 0x22, // Bank5 0x30 + .eq_band_sel[0] = 0x77, .eq_band_sel[1] = 0x77, .eq_band_sel[2] = 0x77, .eq_band_sel[3] = 0x77, .eq_band_sel[4] = 0x67, .eq_band_sel[5] = 0x57, // BankA 0x31 + .eq_gain_sel[0] = 0x78, .eq_gain_sel[1] = 0x78, .eq_gain_sel[2] = 0x7a, .eq_gain_sel[3] = 0x7f, .eq_gain_sel[4] = 0x7f, .eq_gain_sel[5] = 0x7f, // BankA 0x32 + .deq_a_on[0] = 0x00, .deq_a_on[1] = 0x01, .deq_a_on[2] = 0x01, .deq_a_on[3] = 0x01, .deq_a_on[4] = 0x01, .deq_a_on[5] = 0x01, // BankA 0x33 + .deq_a_sel[0] = 0x00, .deq_a_sel[1] = 0x92, .deq_a_sel[2] = 0x88, .deq_a_sel[3] = 0x89, .deq_a_sel[4] = 0x8e, .deq_a_sel[5] = 0x94, // BankA 0x34 + .deq_b_sel[0] = 0x00, .deq_b_sel[1] = 0x00, .deq_b_sel[2] = 0x00, .deq_b_sel[3] = 0x00, .deq_b_sel[4] = 0x00, .deq_b_sel[5] = 0x00, // BankA 0x35 + }, + /* coeff */ + { + .deqA_01[0] = 0xAC, .deqA_01[1] = 0xAC, .deqA_01[2] = 0xAC, .deqA_01[3] = 0xAC, .deqA_01[4] = 0xAC, .deqA_01[5] = 0xAC, // BankA 0x30 + .deqA_02[0] = 0x78, .deqA_02[1] = 0x78, .deqA_02[2] = 0x78, .deqA_02[3] = 0x78, .deqA_02[4] = 0x78, .deqA_02[5] = 0x78, // BankA 0x31 + .deqA_03[0] = 0x17, .deqA_03[1] = 0x17, .deqA_03[2] = 0x17, .deqA_03[3] = 0x17, .deqA_03[4] = 0x17, .deqA_03[5] = 0x17, // BankA 0x32 + .deqA_04[0] = 0xC1, .deqA_04[1] = 0xC1, .deqA_04[2] = 0xC1, .deqA_04[3] = 0xC1, .deqA_04[4] = 0xC1, .deqA_04[5] = 0xC1, // BankA 0x33 + .deqA_05[0] = 0x40, .deqA_05[1] = 0x40, .deqA_05[2] = 0x40, .deqA_05[3] = 0x40, .deqA_05[4] = 0x40, .deqA_05[5] = 0x40, // BankA 0x34 + .deqA_06[0] = 0x00, .deqA_06[1] = 0x00, .deqA_06[2] = 0x00, .deqA_06[3] = 0x00, .deqA_06[4] = 0x00, .deqA_06[5] = 0x00, // BankA 0x35 + .deqA_07[0] = 0xC3, .deqA_07[1] = 0xC3, .deqA_07[2] = 0xC3, .deqA_07[3] = 0xC3, .deqA_07[4] = 0xC3, .deqA_07[5] = 0xC3, // BankA 0x36 + .deqA_08[0] = 0x0A, .deqA_08[1] = 0x0A, .deqA_08[2] = 0x0A, .deqA_08[3] = 0x0A, .deqA_08[4] = 0x0A, .deqA_08[5] = 0x0A, // BankA 0x37 + .deqA_09[0] = 0x00, .deqA_09[1] = 0x00, .deqA_09[2] = 0x00, .deqA_09[3] = 0x00, .deqA_09[4] = 0x00, .deqA_09[5] = 0x00, // BankA 0x38 + .deqA_10[0] = 0x02, .deqA_10[1] = 0x02, .deqA_10[2] = 0x02, .deqA_10[3] = 0x02, .deqA_10[4] = 0x02, .deqA_10[5] = 0x02, // BankA 0x39 + .deqA_11[0] = 0x00, .deqA_11[1] = 0x00, .deqA_11[2] = 0x00, .deqA_11[3] = 0x00, .deqA_11[4] = 0x00, .deqA_11[5] = 0x00, // BankA 0x3a + .deqA_12[0] = 0xB2, .deqA_12[1] = 0xB2, .deqA_12[2] = 0xB2, .deqA_12[3] = 0xB2, .deqA_12[4] = 0xB2, .deqA_12[5] = 0xB2, // BankA 0x3b + }, + /* color */ + { + .contrast[0] = 0x88, .contrast[1] = 0x88, .contrast[2] = 0x88, .contrast[3] = 0x88, .contrast[4] = 0x88, .contrast[5] = 0x7e, + .h_peaking[0] = 0x3f, .h_peaking[1] = 0x3f, .h_peaking[2] = 0x3f, .h_peaking[3] = 0x3f, .h_peaking[4] = 0x3f, .h_peaking[5] = 0x3f, + .c_filter[0] = 0x82, .c_filter[1] = 0x82, .c_filter[2] = 0x82, .c_filter[3] = 0x82, .c_filter[4] = 0x92, .c_filter[5] = 0x92, + + .hue[0] = 0xfe, .hue[1] = 0xfe, .hue[2] = 0xfe, .hue[3] = 0xfe, .hue[4] = 0xfe, .hue[5] = 0xfe, + .u_gain[0] = 0x30, .u_gain[1] = 0x30, .u_gain[2] = 0x30, .u_gain[3] = 0x30, .u_gain[4] = 0x30, .u_gain[5] = 0x30, + .v_gain[0] = 0x00, .v_gain[1] = 0x00, .v_gain[2] = 0xf0, .v_gain[3] = 0xf0, .v_gain[4] = 0xf0, .v_gain[5] = 0xf0, + .u_offset[0] = 0x00, .u_offset[1] = 0x00, .u_offset[2] = 0x00, .u_offset[3] = 0x00, .u_offset[4] = 0x00, .u_offset[5] = 0x00, + .v_offset[0] = 0x00, .v_offset[1] = 0x00, .v_offset[2] = 0x00, .v_offset[3] = 0x00, .v_offset[4] = 0x00, .v_offset[5] = 0x00, + + .black_level[0] = 0x84, .black_level[1] = 0x84, .black_level[2] = 0x84, .black_level[3] = 0x84, .black_level[4] = 0x84, .black_level[5] = 0x86, + .acc_ref[0] = 0x57, .acc_ref[1] = 0x57, .acc_ref[2] = 0x57, .acc_ref[3] = 0x57, .acc_ref[4] = 0x57, .acc_ref[5] = 0x57, + .cti_delay[0] = 0x80, .cti_delay[1] = 0x80, .cti_delay[2] = 0x80, .cti_delay[3] = 0x80, .cti_delay[4] = 0x80, .cti_delay[5] = 0x80, + .sub_saturation[0] = 0xc0, .sub_saturation[1] = 0xc0, .sub_saturation[2] = 0xb8, .sub_saturation[3] = 0xb8, .sub_saturation[4] = 0xb0, .sub_saturation[5] = 0xb0, + + .burst_dec_a[0] = 0x2a, .burst_dec_a[1] = 0x2a, .burst_dec_a[2] = 0x2a, .burst_dec_a[3] = 0x2a, .burst_dec_a[4] = 0x2a, .burst_dec_a[5] = 0x2a, + .burst_dec_b[0] = 0x00, .burst_dec_b[1] = 0x00, .burst_dec_b[2] = 0x00, .burst_dec_b[3] = 0x00, .burst_dec_b[4] = 0x00, .burst_dec_b[5] = 0x00, + .burst_dec_c[0] = 0x00, .burst_dec_c[1] = 0x00, .burst_dec_c[2] = 0x00, .burst_dec_c[3] = 0x00, .burst_dec_c[4] = 0x00, .burst_dec_c[5] = 0x00, + + .c_option[0] = 0x80, .c_option[1] = 0x80, .c_option[2] = 0x80, .c_option[3] = 0x80, .c_option[4] = 0x90, .c_option[5] = 0x90, + + .y_filter_b[0] = 0x10, .y_filter_b[1] = 0x10, .y_filter_b[2] = 0x10, .y_filter_b[3] = 0x10, .y_filter_b[4] = 0x10, .y_filter_b[5] = 0x10, + .y_filter_b_sel[0] = 0x1e, .y_filter_b_sel[1] = 0x1e, .y_filter_b_sel[2] = 0x1e, .y_filter_b_sel[3] = 0x1e, .y_filter_b_sel[4] = 0x1e, .y_filter_b_sel[5] = 0x1e, + }, + /* timing_a */ + { + .h_delay_a[0] = 0x80, .h_delay_a[1] = 0x84, .h_delay_a[2] = 0x80, .h_delay_a[3] = 0x80, .h_delay_a[4] = 0x80, .h_delay_a[5] = 0x80, + .h_delay_b[0] = 0x00, .h_delay_b[1] = 0x00, .h_delay_b[2] = 0x00, .h_delay_b[3] = 0x00, .h_delay_b[4] = 0x00, .h_delay_b[5] = 0x00, + .h_delay_c[0] = 0x00, .h_delay_c[1] = 0x00, .h_delay_c[2] = 0x00, .h_delay_c[3] = 0x00, .h_delay_c[4] = 0x00, .h_delay_c[5] = 0x00, + .y_delay[0] = 0x00, .y_delay[1] = 0x00, .y_delay[2] = 0x00, .y_delay[3] = 0x00, .y_delay[4] = 0x00, .y_delay[5] = 0x00, + + }, + /* clk */ + { + .clk_adc[0] = 0x02, .clk_adc[1] = 0x02, .clk_adc[2] = 0x02, .clk_adc[3] = 0x02, .clk_adc[4] = 0x02, .clk_adc[5] = 0x02, + .clk_dec[0] = 0x40, .clk_dec[1] = 0x40, .clk_dec[2] = 0x40, .clk_dec[3] = 0x40, .clk_dec[4] = 0x40, .clk_dec[5] = 0x40, + }, + /* timing_b */ + { + /*B9 0x96*/ .h_scaler1[0] = 0x00, .h_scaler1[1] = 0x00, .h_scaler1[2] = 0x00, .h_scaler1[3] = 0x00, .h_scaler1[4] = 0x00, .h_scaler1[5] = 0x00, + /*B9 0x97*/ .h_scaler2[0] = 0x00, .h_scaler2[1] = 0x00, .h_scaler2[2] = 0x00, .h_scaler2[3] = 0x00, .h_scaler2[4] = 0x00, .h_scaler2[5] = 0x00, + /*B9 0x98*/ .h_scaler3[0] = 0x00, .h_scaler3[1] = 0x00, .h_scaler3[2] = 0x00, .h_scaler3[3] = 0x00, .h_scaler3[4] = 0x00, .h_scaler3[5] = 0x00, + /*B9 0x99*/ .h_scaler4[0] = 0x00, .h_scaler4[1] = 0x00, .h_scaler4[2] = 0x00, .h_scaler4[3] = 0x00, .h_scaler4[4] = 0x00, .h_scaler4[5] = 0x00, + /*B9 0x9a*/ .h_scaler5[0] = 0x00, .h_scaler5[1] = 0x00, .h_scaler5[2] = 0x00, .h_scaler5[3] = 0x00, .h_scaler5[4] = 0x00, .h_scaler5[5] = 0x00, + /*B9 0x9b*/ .h_scaler6[0] = 0x00, .h_scaler6[1] = 0x00, .h_scaler6[2] = 0x00, .h_scaler6[3] = 0x00, .h_scaler6[4] = 0x00, .h_scaler6[5] = 0x00, + /*B9 0x9c*/ .h_scaler7[0] = 0x00, .h_scaler7[1] = 0x00, .h_scaler7[2] = 0x00, .h_scaler7[3] = 0x00, .h_scaler7[4] = 0x00, .h_scaler7[5] = 0x00, + /*B9 0x9d*/ .h_scaler8[0] = 0x00, .h_scaler8[1] = 0x00, .h_scaler8[2] = 0x00, .h_scaler8[3] = 0x00, .h_scaler8[4] = 0x00, .h_scaler8[5] = 0x00, + /*B9 0x9e*/ .h_scaler9[0] = 0x00, .h_scaler9[1] = 0x00, .h_scaler9[2] = 0x00, .h_scaler9[3] = 0x00, .h_scaler9[4] = 0x00, .h_scaler9[5] = 0x00, + + + /*B9 0x40*/ .pn_auto[0] = 0x00, .pn_auto[1] = 0x00, .pn_auto[2] = 0x00, .pn_auto[3] = 0x00, .pn_auto[4] = 0x00, .pn_auto[5] = 0x00, + + /*B5 0x90*/ .comb_mode[0] = 0x01, .comb_mode[1] = 0x01, .comb_mode[2] = 0x01, .comb_mode[3] = 0x01, .comb_mode[4] = 0x01, .comb_mode[5] = 0x01, + /*B9 0xb9*/ .h_pll_op_a[0] = 0x72, .h_pll_op_a[1] = 0x72, .h_pll_op_a[2] = 0x72, .h_pll_op_a[3] = 0x72, .h_pll_op_a[4] = 0x72, .h_pll_op_a[5] = 0x72, + /*B9 0x57*/ .mem_path[0] = 0x00, .mem_path[1] = 0x00, .mem_path[2] = 0x00, .mem_path[3] = 0x00, .mem_path[4] = 0x00, .mem_path[5] = 0x00, + .fsc_lock_speed[0] = 0xdc, .fsc_lock_speed[1] = 0xdc, .fsc_lock_speed[2] = 0xdc, .fsc_lock_speed[3] = 0xdc, .fsc_lock_speed[4] = 0xdc, .fsc_lock_speed[5] = 0xdc, + + /*B0 0x81*/ .format_set1[0] = 0x05, .format_set1[1] = 0x05, .format_set1[2] = 0x05, .format_set1[3] = 0x05, .format_set1[4] = 0x05, .format_set1[5] = 0x05, + /*B0 0x85*/ .format_set2[0] = 0x0b, .format_set2[1] = 0x0b, .format_set2[2] = 0x0b, .format_set2[3] = 0x0b, .format_set2[4] = 0x0b, .format_set2[5] = 0x0b, + + /*B0 0x64*/ .v_delay[0] = 0x00, .v_delay[1] = 0x00, .v_delay[2] = 0x00, .v_delay[3] = 0x00, .v_delay[4] = 0x00, .v_delay[5] = 0x00, + }, + }, +}; + +#endif // End of NVP6168 EQ TABLE