diff options
author | Jacopo Mondi <jacopo.mondi@ideasonboard.com> | 2023-12-13 09:29:19 +0100 |
---|---|---|
committer | Hans Verkuil <hverkuil-cisco@xs4all.nl> | 2023-12-13 13:21:21 +0100 |
commit | 03d93f8ed7e3db7351462c2d94fb010ad82ca0ea (patch) | |
tree | 561ef0a31505508dbdf3f7b431814393ca26df48 | |
parent | 00c68a4b5a6081f370ec39abf310c681744902a1 (diff) | |
download | linux-03d93f8ed7e3db7351462c2d94fb010ad82ca0ea.tar.gz linux-03d93f8ed7e3db7351462c2d94fb010ad82ca0ea.tar.bz2 linux-03d93f8ed7e3db7351462c2d94fb010ad82ca0ea.zip |
media: i2c: Add driver for OmniVision OV64A40
Add a driver for the OmniVision OV64A40 image sensor.
Co-developed-by: Lee Jackson <lee.jackson@arducam.com>
Signed-off-by: Lee Jackson <lee.jackson@arducam.com>
Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
-rw-r--r-- | MAINTAINERS | 8 | ||||
-rw-r--r-- | drivers/media/i2c/Kconfig | 10 | ||||
-rw-r--r-- | drivers/media/i2c/Makefile | 1 | ||||
-rw-r--r-- | drivers/media/i2c/ov64a40.c | 3690 |
4 files changed, 3709 insertions, 0 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 8d3587aa6279..675e5d63a25b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -16048,6 +16048,14 @@ S: Maintained T: git git://linuxtv.org/media_tree.git F: drivers/media/i2c/ov5695.c +OMNIVISION OV64A40 SENSOR DRIVER +M: Jacopo Mondi <jacopo.mondi@ideasonboard.com> +L: linux-media@vger.kernel.org +S: Maintained +T: git git://linuxtv.org/media_tree.git +F: Documentation/devicetree/bindings/media/i2c/ovti,ov64a40.yaml +F: drivers/media/i2c/ov64a40.c + OMNIVISION OV7670 SENSOR DRIVER L: linux-media@vger.kernel.org S: Orphan diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig index b0ba5ba008c3..78a87331686e 100644 --- a/drivers/media/i2c/Kconfig +++ b/drivers/media/i2c/Kconfig @@ -485,6 +485,16 @@ config VIDEO_OV5695 To compile this driver as a module, choose M here: the module will be called ov5695. +config VIDEO_OV64A40 + tristate "OmniVision OV64A40 sensor support" + select V4L2_CCI_I2C + help + This is a Video4Linux2 sensor driver for the OmniVision + OV64A40 camera. + + To compile this driver as a module, choose M here: the + module will be called ov64a40. + config VIDEO_OV6650 tristate "OmniVision OV6650 sensor support" help diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile index 4bdb2366e9e0..dfbe6448b549 100644 --- a/drivers/media/i2c/Makefile +++ b/drivers/media/i2c/Makefile @@ -95,6 +95,7 @@ obj-$(CONFIG_VIDEO_OV5670) += ov5670.o obj-$(CONFIG_VIDEO_OV5675) += ov5675.o obj-$(CONFIG_VIDEO_OV5693) += ov5693.o obj-$(CONFIG_VIDEO_OV5695) += ov5695.o +obj-$(CONFIG_VIDEO_OV64A40) += ov64a40.o obj-$(CONFIG_VIDEO_OV6650) += ov6650.o obj-$(CONFIG_VIDEO_OV7251) += ov7251.o obj-$(CONFIG_VIDEO_OV7640) += ov7640.o diff --git a/drivers/media/i2c/ov64a40.c b/drivers/media/i2c/ov64a40.c new file mode 100644 index 000000000000..4fba4c2cb064 --- /dev/null +++ b/drivers/media/i2c/ov64a40.c @@ -0,0 +1,3690 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * V4L2 sensor driver for OmniVision OV64A40 + * + * Copyright (C) 2023 Ideas On Board Oy + * Copyright (C) 2023 Arducam + */ + +#include <linux/clk.h> +#include <linux/delay.h> +#include <linux/gpio/consumer.h> +#include <linux/i2c.h> +#include <linux/mod_devicetable.h> +#include <linux/module.h> +#include <linux/pm_runtime.h> +#include <linux/regulator/consumer.h> + +#include <media/v4l2-cci.h> +#include <media/v4l2-ctrls.h> +#include <media/v4l2-device.h> +#include <media/v4l2-event.h> +#include <media/v4l2-fwnode.h> +#include <media/v4l2-mediabus.h> +#include <media/v4l2-subdev.h> + +#define OV64A40_XCLK_FREQ 24000000 + +#define OV64A40_NATIVE_WIDTH 9286 +#define OV64A40_NATIVE_HEIGHT 6976 +#define OV64A40_PIXEL_ARRAY_TOP 0 +#define OV64A40_PIXEL_ARRAY_LEFT 0 +#define OV64A40_PIXEL_ARRAY_WIDTH 9248 +#define OV64A40_PIXEL_ARRAY_HEIGHT 6944 + +#define OV64A40_PIXEL_RATE 300000000 + +#define OV64A40_LINK_FREQ_360M 360000000 +#define OV64A40_LINK_FREQ_456M 456000000 + +#define OV64A40_PLL1_PRE_DIV0 CCI_REG8(0x0301) +#define OV64A40_PLL1_PRE_DIV CCI_REG8(0x0303) +#define OV64A40_PLL1_MULTIPLIER CCI_REG16(0x0304) +#define OV64A40_PLL1_M_DIV CCI_REG8(0x0307) +#define OV64A40_PLL2_SEL_BAK_SA1 CCI_REG8(0x0320) +#define OV64A40_PLL2_PRE_DIV CCI_REG8(0x0323) +#define OV64A40_PLL2_MULTIPLIER CCI_REG16(0x0324) +#define OV64A40_PLL2_PRE_DIV0 CCI_REG8(0x0326) +#define OV64A40_PLL2_DIVDAC CCI_REG8(0x0329) +#define OV64A40_PLL2_DIVSP CCI_REG8(0x032d) +#define OV64A40_PLL2_DACPREDIV CCI_REG8(0x032e) + +/* TODO: validate vblank_min, it's not characterized in the datasheet. */ +#define OV64A40_VBLANK_MIN 128 +#define OV64A40_VTS_MAX 0xffffff + +#define OV64A40_REG_MEC_LONG_EXPO CCI_REG24(0x3500) +#define OV64A40_EXPOSURE_MIN 16 +#define OV64A40_EXPOSURE_MARGIN 32 + +#define OV64A40_REG_MEC_LONG_GAIN CCI_REG16(0x3508) +#define OV64A40_ANA_GAIN_MIN 0x80 +#define OV64A40_ANA_GAIN_MAX 0x7ff +#define OV64A40_ANA_GAIN_DEFAULT 0x80 + +#define OV64A40_REG_TIMING_CTRL0 CCI_REG16(0x3800) +#define OV64A40_REG_TIMING_CTRL2 CCI_REG16(0x3802) +#define OV64A40_REG_TIMING_CTRL4 CCI_REG16(0x3804) +#define OV64A40_REG_TIMING_CTRL6 CCI_REG16(0x3806) +#define OV64A40_REG_TIMING_CTRL8 CCI_REG16(0x3808) +#define OV64A40_REG_TIMING_CTRLA CCI_REG16(0x380a) +#define OV64A40_REG_TIMING_CTRLC CCI_REG16(0x380c) +#define OV64A40_REG_TIMING_CTRLE CCI_REG16(0x380e) +#define OV64A40_REG_TIMING_CTRL10 CCI_REG16(0x3810) +#define OV64A40_REG_TIMING_CTRL12 CCI_REG16(0x3812) + +/* + * Careful: a typo in the datasheet calls this register + * OV64A40_REG_TIMING_CTRL20. + */ +#define OV64A40_REG_TIMING_CTRL14 CCI_REG8(0x3814) +#define OV64A40_REG_TIMING_CTRL15 CCI_REG8(0x3815) +#define OV64A40_ODD_INC_SHIFT 4 +#define OV64A40_SKIPPING_CONFIG(_odd, _even) \ + (((_odd) << OV64A40_ODD_INC_SHIFT) | (_even)) + +#define OV64A40_REG_TIMING_CTRL_20 CCI_REG8(0x3820) +#define OV64A40_TIMING_CTRL_20_VFLIP BIT(2) +#define OV64A40_TIMING_CTRL_20_VBIN BIT(1) + +#define OV64A40_REG_TIMING_CTRL_21 CCI_REG8(0x3821) +#define OV64A40_TIMING_CTRL_21_HBIN BIT(4) +#define OV64A40_TIMING_CTRL_21_HFLIP BIT(2) +#define OV64A40_TIMING_CTRL_21_DSPEED BIT(0) +#define OV64A40_TIMING_CTRL_21_HBIN_CONF \ + (OV64A40_TIMING_CTRL_21_HBIN | \ + OV64A40_TIMING_CTRL_21_DSPEED) + +#define OV64A40_REG_TIMINGS_VTS_HIGH CCI_REG8(0x3840) +#define OV64A40_REG_TIMINGS_VTS_MID CCI_REG8(0x380e) +#define OV64A40_REG_TIMINGS_VTS_LOW CCI_REG8(0x380f) + +/* The test pattern control is weirdly named PRE_ISP_2325_D2V2_TOP_1 in TRM. */ +#define OV64A40_REG_TEST_PATTERN CCI_REG8(0x50c1) +#define OV64A40_TEST_PATTERN_DISABLED 0x00 +#define OV64A40_TEST_PATTERN_TYPE1 BIT(0) +#define OV64A40_TEST_PATTERN_TYPE2 (BIT(4) | BIT(0)) +#define OV64A40_TEST_PATTERN_TYPE3 (BIT(5) | BIT(0)) +#define OV64A40_TEST_PATTERN_TYPE4 (BIT(5) | BIT(4) | BIT(0)) + +#define OV64A40_REG_CHIP_ID CCI_REG24(0x300a) +#define OV64A40_CHIP_ID 0x566441 + +#define OV64A40_REG_SMIA CCI_REG8(0x0100) +#define OV64A40_REG_SMIA_STREAMING BIT(0) + +enum ov64a40_link_freq_ids { + OV64A40_LINK_FREQ_456M_ID, + OV64A40_LINK_FREQ_360M_ID, + OV64A40_NUM_LINK_FREQ, +}; + +static const char * const ov64a40_supply_names[] = { + /* Supplies can be enabled in any order */ + "avdd", /* Analog (2.8V) supply */ + "dovdd", /* Digital Core (1.8V) supply */ + "dvdd", /* IF (1.1V) supply */ +}; + +static const char * const ov64a40_test_pattern_menu[] = { + "Disabled", + "Type1", + "Type2", + "Type3", + "Type4", +}; + +static const int ov64a40_test_pattern_val[] = { + OV64A40_TEST_PATTERN_DISABLED, + OV64A40_TEST_PATTERN_TYPE1, + OV64A40_TEST_PATTERN_TYPE2, + OV64A40_TEST_PATTERN_TYPE3, + OV64A40_TEST_PATTERN_TYPE4, +}; + +static const unsigned int ov64a40_mbus_codes[] = { + MEDIA_BUS_FMT_SBGGR10_1X10, + MEDIA_BUS_FMT_SGRBG10_1X10, + MEDIA_BUS_FMT_SGBRG10_1X10, + MEDIA_BUS_FMT_SRGGB10_1X10, +}; + +static const struct cci_reg_sequence ov64a40_init[] = { + { CCI_REG8(0x0103), 0x01 }, { CCI_REG8(0x0301), 0x88 }, + { CCI_REG8(0x0304), 0x00 }, { CCI_REG8(0x0305), 0x96 }, + { CCI_REG8(0x0306), 0x03 }, { CCI_REG8(0x0307), 0x00 }, + { CCI_REG8(0x0345), 0x2c }, { CCI_REG8(0x034a), 0x02 }, + { CCI_REG8(0x034b), 0x02 }, { CCI_REG8(0x0350), 0xc0 }, + { CCI_REG8(0x0360), 0x09 }, { CCI_REG8(0x3012), 0x31 }, + { CCI_REG8(0x3015), 0xf0 }, { CCI_REG8(0x3017), 0xf0 }, + { CCI_REG8(0x301d), 0xf6 }, { CCI_REG8(0x301e), 0xf1 }, + { CCI_REG8(0x3022), 0xf0 }, { CCI_REG8(0x3400), 0x08 }, + { CCI_REG8(0x3608), 0x41 }, { CCI_REG8(0x3421), 0x02 }, + { CCI_REG8(0x3500), 0x00 }, { CCI_REG8(0x3501), 0x00 }, + { CCI_REG8(0x3502), 0x18 }, { CCI_REG8(0x3504), 0x0c }, + { CCI_REG8(0x3508), 0x01 }, { CCI_REG8(0x3509), 0x00 }, + { CCI_REG8(0x350a), 0x01 }, { CCI_REG8(0x350b), 0x00 }, + { CCI_REG8(0x350b), 0x00 }, { CCI_REG8(0x3540), 0x00 }, + { CCI_REG8(0x3541), 0x00 }, { CCI_REG8(0x3542), 0x08 }, + { CCI_REG8(0x3548), 0x01 }, { CCI_REG8(0x3549), 0xa0 }, + { CCI_REG8(0x3549), 0x00 }, { CCI_REG8(0x3549), 0x00 }, + { CCI_REG8(0x3549), 0x00 }, { CCI_REG8(0x3580), 0x00 }, + { CCI_REG8(0x3581), 0x00 }, { CCI_REG8(0x3582), 0x04 }, + { CCI_REG8(0x3588), 0x01 }, { CCI_REG8(0x3589), 0xf0 }, + { CCI_REG8(0x3589), 0x00 }, { CCI_REG8(0x3589), 0x00 }, + { CCI_REG8(0x3589), 0x00 }, { CCI_REG8(0x360d), 0x83 }, + { CCI_REG8(0x3616), 0xa0 }, { CCI_REG8(0x3617), 0x31 }, + { CCI_REG8(0x3623), 0x10 }, { CCI_REG8(0x3633), 0x03 }, + { CCI_REG8(0x3634), 0x03 }, { CCI_REG8(0x3635), 0x77 }, + { CCI_REG8(0x3640), 0x19 }, { CCI_REG8(0x3641), 0x80 }, + { CCI_REG8(0x364d), 0x0f }, { CCI_REG8(0x3680), 0x80 }, + { CCI_REG8(0x3682), 0x00 }, { CCI_REG8(0x3683), 0x00 }, + { CCI_REG8(0x3684), 0x07 }, { CCI_REG8(0x3688), 0x01 }, + { CCI_REG8(0x3689), 0x08 }, { CCI_REG8(0x368a), 0x26 }, + { CCI_REG8(0x368b), 0xc8 }, { CCI_REG8(0x368e), 0x70 }, + { CCI_REG8(0x368f), 0x00 }, { CCI_REG8(0x3692), 0x04 }, + { CCI_REG8(0x3693), 0x00 }, { CCI_REG8(0x3696), 0xd1 }, + { CCI_REG8(0x3697), 0xe0 }, { CCI_REG8(0x3698), 0x80 }, + { CCI_REG8(0x3699), 0x2b }, { CCI_REG8(0x369a), 0x00 }, + { CCI_REG8(0x369d), 0x00 }, { CCI_REG8(0x369e), 0x14 }, + { CCI_REG8(0x369f), 0x20 }, { CCI_REG8(0x36a5), 0x80 }, + { CCI_REG8(0x36a6), 0x00 }, { CCI_REG8(0x36a7), 0x00 }, + { CCI_REG8(0x36a8), 0x00 }, { CCI_REG8(0x36b5), 0x17 }, + { CCI_REG8(0x3701), 0x30 }, { CCI_REG8(0x3706), 0x2b }, + { CCI_REG8(0x3709), 0x8d }, { CCI_REG8(0x370b), 0x4f }, + { CCI_REG8(0x3711), 0x00 }, { CCI_REG8(0x3712), 0x01 }, + { CCI_REG8(0x3713), 0x00 }, { CCI_REG8(0x3720), 0x08 }, + { CCI_REG8(0x3727), 0x22 }, { CCI_REG8(0x3728), 0x01 }, + { CCI_REG8(0x375e), 0x00 }, { CCI_REG8(0x3760), 0x08 }, + { CCI_REG8(0x3761), 0x10 }, { CCI_REG8(0x3762), 0x08 }, + { CCI_REG8(0x3765), 0x10 }, { CCI_REG8(0x3766), 0x18 }, + { CCI_REG8(0x376a), 0x08 }, { CCI_REG8(0x376b), 0x00 }, + { CCI_REG8(0x376d), 0x1b }, { CCI_REG8(0x3791), 0x2b }, + { CCI_REG8(0x3793), 0x2b }, { CCI_REG8(0x3795), 0x2b }, + { CCI_REG8(0x3797), 0x4f }, { CCI_REG8(0x3799), 0x4f }, + { CCI_REG8(0x379b), 0x4f }, { CCI_REG8(0x37a0), 0x22 }, + { CCI_REG8(0x37da), 0x04 }, { CCI_REG8(0x37f9), 0x02 }, + { CCI_REG8(0x37fa), 0x02 }, { CCI_REG8(0x37fb), 0x02 }, + { CCI_REG8(0x3814), 0x11 }, { CCI_REG8(0x3815), 0x11 }, + { CCI_REG8(0x3820), 0x40 }, { CCI_REG8(0x3821), 0x04 }, + { CCI_REG8(0x3822), 0x00 }, { CCI_REG8(0x3823), 0x04 }, + { CCI_REG8(0x3827), 0x08 }, { CCI_REG8(0x3828), 0x00 }, + { CCI_REG8(0x382a), 0x81 }, { CCI_REG8(0x382e), 0x70 }, + { CCI_REG8(0x3837), 0x10 }, { CCI_REG8(0x3839), 0x00 }, + { CCI_REG8(0x383b), 0x00 }, { CCI_REG8(0x383c), 0x00 }, + { CCI_REG8(0x383d), 0x10 }, { CCI_REG8(0x383f), 0x00 }, + { CCI_REG8(0x384c), 0x02 }, { CCI_REG8(0x384d), 0x8c }, + { CCI_REG8(0x3852), 0x00 }, { CCI_REG8(0x3856), 0x10 }, + { CCI_REG8(0x3857), 0x10 }, { CCI_REG8(0x3858), 0x20 }, + { CCI_REG8(0x3859), 0x20 }, { CCI_REG8(0x3894), 0x00 }, + { CCI_REG8(0x3895), 0x00 }, { CCI_REG8(0x3896), 0x00 }, + { CCI_REG8(0x3897), 0x00 }, { CCI_REG8(0x3900), 0x40 }, + { CCI_REG8(0x3aed), 0x6e }, { CCI_REG8(0x3af1), 0x73 }, + { CCI_REG8(0x3d86), 0x12 }, { CCI_REG8(0x3d87), 0x30 }, + { CCI_REG8(0x3d8c), 0xab }, { CCI_REG8(0x3d8d), 0xb0 }, + { CCI_REG8(0x3f00), 0x12 }, { CCI_REG8(0x3f00), 0x12 }, + { CCI_REG8(0x3f00), 0x12 }, { CCI_REG8(0x3f01), 0x03 }, + { CCI_REG8(0x4009), 0x01 }, { CCI_REG8(0x400e), 0xc6 }, + { CCI_REG8(0x400f), 0x00 }, { CCI_REG8(0x4010), 0x28 }, + { CCI_REG8(0x4011), 0x01 }, { CCI_REG8(0x4012), 0x0c }, + { CCI_REG8(0x4015), 0x00 }, { CCI_REG8(0x4016), 0x1f }, + { CCI_REG8(0x4017), 0x00 }, { CCI_REG8(0x4018), 0x07 }, + { CCI_REG8(0x401a), 0x40 }, { CCI_REG8(0x4028), 0x01 }, + { CCI_REG8(0x4504), 0x00 }, { CCI_REG8(0x4506), 0x01 }, + { CCI_REG8(0x4508), 0x00 }, { CCI_REG8(0x4509), 0x35 }, + { CCI_REG8(0x450a), 0x08 }, { CCI_REG8(0x450c), 0x00 }, + { CCI_REG8(0x450d), 0x20 }, { CCI_REG8(0x450e), 0x00 }, + { CCI_REG8(0x450f), 0x20 }, { CCI_REG8(0x451e), 0x00 }, + { CCI_REG8(0x451f), 0x00 }, { CCI_REG8(0x4523), 0x00 }, + { CCI_REG8(0x4526), 0x00 }, { CCI_REG8(0x4527), 0x18 }, + { CCI_REG8(0x4580), 0x01 }, { CCI_REG8(0x4583), 0x00 }, + { CCI_REG8(0x4584), 0x00 }, { CCI_REG8(0x45c0), 0xa1 }, + { CCI_REG8(0x4602), 0x08 }, { CCI_REG8(0x4603), 0x05 }, + { CCI_REG8(0x4606), 0x12 }, { CCI_REG8(0x4607), 0x30 }, + { CCI_REG8(0x460b), 0x00 }, { CCI_REG8(0x460d), 0x00 }, + { CCI_REG8(0x4640), 0x00 }, { CCI_REG8(0x4641), 0x24 }, + { CCI_REG8(0x4643), 0x08 }, { CCI_REG8(0x4645), 0x14 }, + { CCI_REG8(0x4648), 0x0a }, { CCI_REG8(0x4649), 0x06 }, + { CCI_REG8(0x464a), 0x00 }, { CCI_REG8(0x464b), 0x30 }, + { CCI_REG8(0x4800), 0x04 }, { CCI_REG8(0x4802), 0x02 }, + { CCI_REG8(0x480b), 0x10 }, { CCI_REG8(0x480c), 0x80 }, + { CCI_REG8(0x480e), 0x04 }, { CCI_REG8(0x480f), 0x32 }, + { CCI_REG8(0x481b), 0x12 }, { CCI_REG8(0x4833), 0x30 }, + { CCI_REG8(0x4837), 0x08 }, { CCI_REG8(0x484b), 0x27 }, + { CCI_REG8(0x4850), 0x42 }, { CCI_REG8(0x4851), 0xaa }, + { CCI_REG8(0x4860), 0x01 }, { CCI_REG8(0x4861), 0xec }, + { CCI_REG8(0x4862), 0x25 }, { CCI_REG8(0x4888), 0x00 }, + { CCI_REG8(0x4889), 0x03 }, { CCI_REG8(0x488c), 0x60 }, + { CCI_REG8(0x4910), 0x28 }, { CCI_REG8(0x4911), 0x01 }, + { CCI_REG8(0x4912), 0x0c }, { CCI_REG8(0x491a), 0x40 }, + { CCI_REG8(0x4915), 0x00 }, { CCI_REG8(0x4916), 0x0f }, + { CCI_REG8(0x4917), 0x00 }, { CCI_REG8(0x4918), 0x07 }, + { CCI_REG8(0x4a10), 0x28 }, { CCI_REG8(0x4a11), 0x01 }, + { CCI_REG8(0x4a12), 0x0c }, { CCI_REG8(0x4a1a), 0x40 }, + { CCI_REG8(0x4a15), 0x00 }, { CCI_REG8(0x4a16), 0x0f }, + { CCI_REG8(0x4a17), 0x00 }, { CCI_REG8(0x4a18), 0x07 }, + { CCI_REG8(0x4d00), 0x04 }, { CCI_REG8(0x4d01), 0x5a }, + { CCI_REG8(0x4d02), 0xbb }, { CCI_REG8(0x4d03), 0x84 }, + { CCI_REG8(0x4d04), 0xd1 }, { CCI_REG8(0x4d05), 0x68 }, + { CCI_REG8(0xc4fa), 0x10 }, { CCI_REG8(0x3b56), 0x0a }, + { CCI_REG8(0x3b57), 0x0a }, { CCI_REG8(0x3b58), 0x0c }, + { CCI_REG8(0x3b59), 0x10 }, { CCI_REG8(0x3a1d), 0x30 }, + { CCI_REG8(0x3a1e), 0x30 }, { CCI_REG8(0x3a21), 0x30 }, + { CCI_REG8(0x3a22), 0x30 }, { CCI_REG8(0x3992), 0x02 }, + { CCI_REG8(0x399e), 0x02 }, { CCI_REG8(0x39fb), 0x30 }, + { CCI_REG8(0x39fc), 0x30 }, { CCI_REG8(0x39fd), 0x30 }, + { CCI_REG8(0x39fe), 0x30 }, { CCI_REG8(0x3a6d), 0x83 }, + { CCI_REG8(0x3a5e), 0x83 }, { CCI_REG8(0xc500), 0x12 }, + { CCI_REG8(0xc501), 0x12 }, { CCI_REG8(0xc502), 0x12 }, + { CCI_REG8(0xc503), 0x12 }, { CCI_REG8(0xc505), 0x12 }, + { CCI_REG8(0xc506), 0x12 }, { CCI_REG8(0xc507), 0x12 }, + { CCI_REG8(0xc508), 0x12 }, { CCI_REG8(0x3a77), 0x12 }, + { CCI_REG8(0x3a73), 0x12 }, { CCI_REG8(0x3a7b), 0x12 }, + { CCI_REG8(0x3a7f), 0x12 }, { CCI_REG8(0x3b2e), 0x13 }, + { CCI_REG8(0x3b29), 0x13 }, { CCI_REG8(0xc439), 0x13 }, + { CCI_REG8(0xc469), 0x13 }, { CCI_REG8(0xc41c), 0x89 }, + { CCI_REG8(0x3618), 0x80 }, { CCI_REG8(0xc514), 0x51 }, + { CCI_REG8(0xc515), 0x2c }, { CCI_REG8(0xc516), 0x16 }, + { CCI_REG8(0xc517), 0x0d }, { CCI_REG8(0x3615), 0x7f }, + { CCI_REG8(0x3632), 0x99 }, { CCI_REG8(0x3642), 0x00 }, + { CCI_REG8(0x3645), 0x80 }, { CCI_REG8(0x3702), 0x2a }, + { CCI_REG8(0x3703), 0x2a }, { CCI_REG8(0x3708), 0x2f }, + { CCI_REG8(0x3721), 0x15 }, { CCI_REG8(0x3744), 0x28 }, + { CCI_REG8(0x3991), 0x0c }, { CCI_REG8(0x371d), 0x24 }, + { CCI_REG8(0x371f), 0x0c }, { CCI_REG8(0x374b), 0x03 }, + { CCI_REG8(0x37d0), 0x00 }, { CCI_REG8(0x391d), 0x55 }, + { CCI_REG8(0x391e), 0x52 }, { CCI_REG8(0x399d), 0x0c }, + { CCI_REG8(0x3a2f), 0x01 }, { CCI_REG8(0x3a30), 0x01 }, + { CCI_REG8(0x3a31), 0x01 }, { CCI_REG8(0x3a32), 0x01 }, + { CCI_REG8(0x3a34), 0x01 }, { CCI_REG8(0x3a35), 0x01 }, + { CCI_REG8(0x3a36), 0x01 }, { CCI_REG8(0x3a37), 0x01 }, + { CCI_REG8(0x3a43), 0x01 }, { CCI_REG8(0x3a44), 0x01 }, + { CCI_REG8(0x3a45), 0x01 }, { CCI_REG8(0x3a46), 0x01 }, + { CCI_REG8(0x3a48), 0x01 }, { CCI_REG8(0x3a49), 0x01 }, + { CCI_REG8(0x3a4a), 0x01 }, { CCI_REG8(0x3a4b), 0x01 }, + { CCI_REG8(0x3a50), 0x14 }, { CCI_REG8(0x3a54), 0x14 }, + { CCI_REG8(0x3a60), 0x20 }, { CCI_REG8(0x3a6f), 0x20 }, + { CCI_REG8(0x3ac5), 0x01 }, { CCI_REG8(0x3ac6), 0x01 }, + { CCI_REG8(0x3ac7), 0x01 }, { CCI_REG8(0x3ac8), 0x01 }, + { CCI_REG8(0x3ac9), 0x01 }, { CCI_REG8(0x3aca), 0x01 }, + { CCI_REG8(0x3acb), 0x01 }, { CCI_REG8(0x3acc), 0x01 }, + { CCI_REG8(0x3acd), 0x01 }, { CCI_REG8(0x3ace), 0x01 }, + { CCI_REG8(0x3acf), 0x01 }, { CCI_REG8(0x3ad0), 0x01 }, + { CCI_REG8(0x3ad1), 0x01 }, { CCI_REG8(0x3ad2), 0x01 }, + { CCI_REG8(0x3ad3), 0x01 }, { CCI_REG8(0x3ad4), 0x01 }, + { CCI_REG8(0x3add), 0x1f }, { CCI_REG8(0x3adf), 0x24 }, + { CCI_REG8(0x3aef), 0x1f }, { CCI_REG8(0x3af0), 0x24 }, + { CCI_REG8(0x3b92), 0x08 }, { CCI_REG8(0x3b93), 0x08 }, + { CCI_REG8(0x3b94), 0x08 }, { CCI_REG8(0x3b95), 0x08 }, + { CCI_REG8(0x3be7), 0x1e }, { CCI_REG8(0x3be8), 0x26 }, + { CCI_REG8(0xc44a), 0x20 }, { CCI_REG8(0xc44c), 0x20 }, + { CCI_REG8(0xc483), 0x00 }, { CCI_REG8(0xc484), 0x00 }, + { CCI_REG8(0xc485), 0x00 }, { CCI_REG8(0xc486), 0x00 }, + { CCI_REG8(0xc487), 0x01 }, { CCI_REG8(0xc488), 0x01 }, + { CCI_REG8(0xc489), 0x01 }, { CCI_REG8(0xc48a), 0x01 }, + { CCI_REG8(0xc4c1), 0x00 }, { CCI_REG8(0xc4c2), 0x00 }, + { CCI_REG8(0xc4c3), 0x00 }, { CCI_REG8(0xc4c4), 0x00 }, + { CCI_REG8(0xc4c6), 0x10 }, { CCI_REG8(0xc4c7), 0x10 }, + { CCI_REG8(0xc4c8), 0x10 }, { CCI_REG8(0xc4c9), 0x10 }, + { CCI_REG8(0xc4ca), 0x10 }, { CCI_REG8(0xc4cb), 0x10 }, + { CCI_REG8(0xc4cc), 0x10 }, { CCI_REG8(0xc4cd), 0x10 }, + { CCI_REG8(0xc4ea), 0x07 }, { CCI_REG8(0xc4eb), 0x07 }, + { CCI_REG8(0xc4ec), 0x07 }, { CCI_REG8(0xc4ed), 0x07 }, + { CCI_REG8(0xc4ee), 0x07 }, { CCI_REG8(0xc4f6), 0x10 }, + { CCI_REG8(0xc4f7), 0x10 }, { CCI_REG8(0xc4f8), 0x10 }, + { CCI_REG8(0xc4f9), 0x10 }, { CCI_REG8(0xc518), 0x0e }, + { CCI_REG8(0xc519), 0x0e }, { CCI_REG8(0xc51a), 0x0e }, + { CCI_REG8(0xc51b), 0x0e }, { CCI_REG8(0xc51c), 0x0e }, + { CCI_REG8(0xc51d), 0x0e }, { CCI_REG8(0xc51e), 0x0e }, + { CCI_REG8(0xc51f), 0x0e }, { CCI_REG8(0xc520), 0x0e }, + { CCI_REG8(0xc521), 0x0e }, { CCI_REG8(0xc522), 0x0e }, + { CCI_REG8(0xc523), 0x0e }, { CCI_REG8(0xc524), 0x0e }, + { CCI_REG8(0xc525), 0x0e }, { CCI_REG8(0xc526), 0x0e }, + { CCI_REG8(0xc527), 0x0e }, { CCI_REG8(0xc528), 0x0e }, + { CCI_REG8(0xc529), 0x0e }, { CCI_REG8(0xc52a), 0x0e }, + { CCI_REG8(0xc52b), 0x0e }, { CCI_REG8(0xc52c), 0x0e }, + { CCI_REG8(0xc52d), 0x0e }, { CCI_REG8(0xc52e), 0x0e }, + { CCI_REG8(0xc52f), 0x0e }, { CCI_REG8(0xc530), 0x0e }, + { CCI_REG8(0xc531), 0x0e }, { CCI_REG8(0xc532), 0x0e }, + { CCI_REG8(0xc533), 0x0e }, { CCI_REG8(0xc534), 0x0e }, + { CCI_REG8(0xc535), 0x0e }, { CCI_REG8(0xc536), 0x0e }, + { CCI_REG8(0xc537), 0x0e }, { CCI_REG8(0xc538), 0x0e }, + { CCI_REG8(0xc539), 0x0e }, { CCI_REG8(0xc53a), 0x0e }, + { CCI_REG8(0xc53b), 0x0e }, { CCI_REG8(0xc53c), 0x0e }, + { CCI_REG8(0xc53d), 0x0e }, { CCI_REG8(0xc53e), 0x0e }, + { CCI_REG8(0xc53f), 0x0e }, { CCI_REG8(0xc540), 0x0e }, + { CCI_REG8(0xc541), 0x0e }, { CCI_REG8(0xc542), 0x0e }, + { CCI_REG8(0xc543), 0x0e }, { CCI_REG8(0xc544), 0x0e }, + { CCI_REG8(0xc545), 0x0e }, { CCI_REG8(0xc546), 0x0e }, + { CCI_REG8(0xc547), 0x0e }, { CCI_REG8(0xc548), 0x0e }, + { CCI_REG8(0xc549), 0x0e }, { CCI_REG8(0xc57f), 0x22 }, + { CCI_REG8(0xc580), 0x22 }, { CCI_REG8(0xc581), 0x22 }, + { CCI_REG8(0xc582), 0x22 }, { CCI_REG8(0xc583), 0x22 }, + { CCI_REG8(0xc584), 0x22 }, { CCI_REG8(0xc585), 0x22 }, + { CCI_REG8(0xc586), 0x22 }, { CCI_REG8(0xc587), 0x22 }, + { CCI_REG8(0xc588), 0x22 }, { CCI_REG8(0xc589), 0x22 }, + { CCI_REG8(0xc58a), 0x22 }, { CCI_REG8(0xc58b), 0x22 }, + { CCI_REG8(0xc58c), 0x22 }, { CCI_REG8(0xc58d), 0x22 }, + { CCI_REG8(0xc58e), 0x22 }, { CCI_REG8(0xc58f), 0x22 }, + { CCI_REG8(0xc590), 0x22 }, { CCI_REG8(0xc591), 0x22 }, + { CCI_REG8(0xc592), 0x22 }, { CCI_REG8(0xc598), 0x22 }, + { CCI_REG8(0xc599), 0x22 }, { CCI_REG8(0xc59a), 0x22 }, + { CCI_REG8(0xc59b), 0x22 }, { CCI_REG8(0xc59c), 0x22 }, + { CCI_REG8(0xc59d), 0x22 }, { CCI_REG8(0xc59e), 0x22 }, + { CCI_REG8(0xc59f), 0x22 }, { CCI_REG8(0xc5a0), 0x22 }, + { CCI_REG8(0xc5a1), 0x22 }, { CCI_REG8(0xc5a2), 0x22 }, + { CCI_REG8(0xc5a3), 0x22 }, { CCI_REG8(0xc5a4), 0x22 }, + { CCI_REG8(0xc5a5), 0x22 }, { CCI_REG8(0xc5a6), 0x22 }, + { CCI_REG8(0xc5a7), 0x22 }, { CCI_REG8(0xc5a8), 0x22 }, + { CCI_REG8(0xc5a9), 0x22 }, { CCI_REG8(0xc5aa), 0x22 }, + { CCI_REG8(0xc5ab), 0x22 }, { CCI_REG8(0xc5b1), 0x2a }, + { CCI_REG8(0xc5b2), 0x2a }, { CCI_REG8(0xc5b3), 0x2a }, + { CCI_REG8(0xc5b4), 0x2a }, { CCI_REG8(0xc5b5), 0x2a }, + { CCI_REG8(0xc5b6), 0x2a }, { CCI_REG8(0xc5b7), 0x2a }, + { CCI_REG8(0xc5b8), 0x2a }, { CCI_REG8(0xc5b9), 0x2a }, + { CCI_REG8(0xc5ba), 0x2a }, { CCI_REG8(0xc5bb), 0x2a }, + { CCI_REG8(0xc5bc), 0x2a }, { CCI_REG8(0xc5bd), 0x2a }, + { CCI_REG8(0xc5be), 0x2a }, { CCI_REG8(0xc5bf), 0x2a }, + { CCI_REG8(0xc5c0), 0x2a }, { CCI_REG8(0xc5c1), 0x2a }, + { CCI_REG8(0xc5c2), 0x2a }, { CCI_REG8(0xc5c3), 0x2a }, + { CCI_REG8(0xc5c4), 0x2a }, { CCI_REG8(0xc5ca), 0x2a }, + { CCI_REG8(0xc5cb), 0x2a }, { CCI_REG8(0xc5cc), 0x2a }, + { CCI_REG8(0xc5cd), 0x2a }, { CCI_REG8(0xc5ce), 0x2a }, + { CCI_REG8(0xc5cf), 0x2a }, { CCI_REG8(0xc5d0), 0x2a }, + { CCI_REG8(0xc5d1), 0x2a }, { CCI_REG8(0xc5d2), 0x2a }, + { CCI_REG8(0xc5d3), 0x2a }, { CCI_REG8(0xc5d4), 0x2a }, + { CCI_REG8(0xc5d5), 0x2a }, { CCI_REG8(0xc5d6), 0x2a }, + { CCI_REG8(0xc5d7), 0x2a }, { CCI_REG8(0xc5d8), 0x2a }, + { CCI_REG8(0xc5d9), 0x2a }, { CCI_REG8(0xc5da), 0x2a }, + { CCI_REG8(0xc5db), 0x2a }, { CCI_REG8(0xc5dc), 0x2a }, + { CCI_REG8(0xc5dd), 0x2a }, { CCI_REG8(0xc5e8), 0x22 }, + { CCI_REG8(0xc5ea), 0x22 }, { CCI_REG8(0x4540), 0x12 }, + { CCI_REG8(0x4541), 0x30 }, { CCI_REG8(0x3d86), 0x12 }, + { CCI_REG8(0x3d87), 0x30 }, { CCI_REG8(0x4606), 0x12 }, + { CCI_REG8(0x4607), 0x30 }, { CCI_REG8(0x4648), 0x0a }, + { CCI_REG8(0x4649), 0x06 }, { CCI_REG8(0x3220), 0x12 }, + { CCI_REG8(0x3221), 0x30 }, { CCI_REG8(0x40c2), 0x12 }, + { CCI_REG8(0x49c2), 0x12 }, { CCI_REG8(0x4ac2), 0x12 }, + { CCI_REG8(0x40c3), 0x30 }, { CCI_REG8(0x49c3), 0x30 }, + { CCI_REG8(0x4ac3), 0x30 }, { CCI_REG8(0x36b0), 0x12 }, + { CCI_REG8(0x36b1), 0x30 }, { CCI_REG8(0x45cb), 0x12 }, + { CCI_REG8(0x45cc), 0x30 }, { CCI_REG8(0x4585), 0x12 }, + { CCI_REG8(0x4586), 0x30 }, { CCI_REG8(0x36b2), 0x12 }, + { CCI_REG8(0x36b3), 0x30 }, { CCI_REG8(0x5a40), 0x75 }, + { CCI_REG8(0x5a41), 0x75 }, { CCI_REG8(0x5a42), 0x75 }, + { CCI_REG8(0x5a43), 0x75 }, { CCI_REG8(0x5a44), 0x75 }, + { CCI_REG8(0x5a45), 0x75 }, { CCI_REG8(0x5a46), 0x75 }, + { CCI_REG8(0x5a47), 0x75 }, { CCI_REG8(0x5a48), 0x75 }, + { CCI_REG8(0x5a49), 0x75 }, { CCI_REG8(0x5a4a), 0x75 }, + { CCI_REG8(0x5a4b), 0x75 }, { CCI_REG8(0x5a4c), 0x75 }, + { CCI_REG8(0x5a4d), 0x75 }, { CCI_REG8(0x5a4e), 0x75 }, + { CCI_REG8(0x5a4f), 0x75 }, { CCI_REG8(0x5a50), 0x75 }, + { CCI_REG8(0x5a51), 0x75 }, { CCI_REG8(0x5a52), 0x75 }, + { CCI_REG8(0x5a53), 0x75 }, { CCI_REG8(0x5a54), 0x75 }, + { CCI_REG8(0x5a55), 0x75 }, { CCI_REG8(0x5a56), 0x75 }, + { CCI_REG8(0x5a57), 0x75 }, { CCI_REG8(0x5a58), 0x75 }, + { CCI_REG8(0x5a59), 0x75 }, { CCI_REG8(0x5a5a), 0x75 }, + { CCI_REG8(0x5a5b), 0x75 }, { CCI_REG8(0x5a5c), 0x75 }, + { CCI_REG8(0x5a5d), 0x75 }, { CCI_REG8(0x5a5e), 0x75 }, + { CCI_REG8(0x5a5f), 0x75 }, { CCI_REG8(0x5a60), 0x75 }, + { CCI_REG8(0x5a61), 0x75 }, { CCI_REG8(0x5a62), 0x75 }, + { CCI_REG8(0x5a63), 0x75 }, { CCI_REG8(0x5a64), 0x75 }, + { CCI_REG8(0x5a65), 0x75 }, { CCI_REG8(0x5a66), 0x75 }, + { CCI_REG8(0x5a67), 0x75 }, { CCI_REG8(0x5a68), 0x75 }, + { CCI_REG8(0x5a69), 0x75 }, { CCI_REG8(0x5a6a), 0x75 }, + { CCI_REG8(0x5a6b), 0x75 }, { CCI_REG8(0x5a6c), 0x75 }, + { CCI_REG8(0x5a6d), 0x75 }, { CCI_REG8(0x5a6e), 0x75 }, + { CCI_REG8(0x5a6f), 0x75 }, { CCI_REG8(0x5a70), 0x75 }, + { CCI_REG8(0x5a71), 0x75 }, { CCI_REG8(0x5a72), 0x75 }, + { CCI_REG8(0x5a73), 0x75 }, { CCI_REG8(0x5a74), 0x75 }, + { CCI_REG8(0x5a75), 0x75 }, { CCI_REG8(0x5a76), 0x75 }, + { CCI_REG8(0x5a77), 0x75 }, { CCI_REG8(0x5a78), 0x75 }, + { CCI_REG8(0x5a79), 0x75 }, { CCI_REG8(0x5a7a), 0x75 }, + { CCI_REG8(0x5a7b), 0x75 }, { CCI_REG8(0x5a7c), 0x75 }, + { CCI_REG8(0x5a7d), 0x75 }, { CCI_REG8(0x5a7e), 0x75 }, + { CCI_REG8(0x5a7f), 0x75 }, { CCI_REG8(0x5a80), 0x75 }, + { CCI_REG8(0x5a81), 0x75 }, { CCI_REG8(0x5a82), 0x75 }, + { CCI_REG8(0x5a83), 0x75 }, { CCI_REG8(0x5a84), 0x75 }, + { CCI_REG8(0x5a85), 0x75 }, { CCI_REG8(0x5a86), 0x75 }, + { CCI_REG8(0x5a87), 0x75 }, { CCI_REG8(0x5a88), 0x75 }, + { CCI_REG8(0x5a89), 0x75 }, { CCI_REG8(0x5a8a), 0x75 }, + { CCI_REG8(0x5a8b), 0x75 }, { CCI_REG8(0x5a8c), 0x75 }, + { CCI_REG8(0x5a8d), 0x75 }, { CCI_REG8(0x5a8e), 0x75 }, + { CCI_REG8(0x5a8f), 0x75 }, { CCI_REG8(0x5a90), 0x75 }, + { CCI_REG8(0x5a91), 0x75 }, { CCI_REG8(0x5a92), 0x75 }, + { CCI_REG8(0x5a93), 0x75 }, { CCI_REG8(0x5a94), 0x75 }, + { CCI_REG8(0x5a95), 0x75 }, { CCI_REG8(0x5a96), 0x75 }, + { CCI_REG8(0x5a97), 0x75 }, { CCI_REG8(0x5a98), 0x75 }, + { CCI_REG8(0x5a99), 0x75 }, { CCI_REG8(0x5a9a), 0x75 }, + { CCI_REG8(0x5a9b), 0x75 }, { CCI_REG8(0x5a9c), 0x75 }, + { CCI_REG8(0x5a9d), 0x75 }, { CCI_REG8(0x5a9e), 0x75 }, + { CCI_REG8(0x5a9f), 0x75 }, { CCI_REG8(0x5aa0), 0x75 }, + { CCI_REG8(0x5aa1), 0x75 }, { CCI_REG8(0x5aa2), 0x75 }, + { CCI_REG8(0x5aa3), 0x75 }, { CCI_REG8(0x5aa4), 0x75 }, + { CCI_REG8(0x5aa5), 0x75 }, { CCI_REG8(0x5aa6), 0x75 }, + { CCI_REG8(0x5aa7), 0x75 }, { CCI_REG8(0x5aa8), 0x75 }, + { CCI_REG8(0x5aa9), 0x75 }, { CCI_REG8(0x5aaa), 0x75 }, + { CCI_REG8(0x5aab), 0x75 }, { CCI_REG8(0x5aac), 0x75 }, + { CCI_REG8(0x5aad), 0x75 }, { CCI_REG8(0x5aae), 0x75 }, + { CCI_REG8(0x5aaf), 0x75 }, { CCI_REG8(0x5ab0), 0x75 }, + { CCI_REG8(0x5ab1), 0x75 }, { CCI_REG8(0x5ab2), 0x75 }, + { CCI_REG8(0x5ab3), 0x75 }, { CCI_REG8(0x5ab4), 0x75 }, + { CCI_REG8(0x5ab5), 0x75 }, { CCI_REG8(0x5ab6), 0x75 }, + { CCI_REG8(0x5ab7), 0x75 }, { CCI_REG8(0x5ab8), 0x75 }, + { CCI_REG8(0x5ab9), 0x75 }, { CCI_REG8(0x5aba), 0x75 }, + { CCI_REG8(0x5abb), 0x75 }, { CCI_REG8(0x5abc), 0x75 }, + { CCI_REG8(0x5abd), 0x75 }, { CCI_REG8(0x5abe), 0x75 }, + { CCI_REG8(0x5abf), 0x75 }, { CCI_REG8(0x5ac0), 0x75 }, + { CCI_REG8(0x5ac1), 0x75 }, { CCI_REG8(0x5ac2), 0x75 }, + { CCI_REG8(0x5ac3), 0x75 }, { CCI_REG8(0x5ac4), 0x75 }, + { CCI_REG8(0x5ac5), 0x75 }, { CCI_REG8(0x5ac6), 0x75 }, + { CCI_REG8(0x5ac7), 0x75 }, { CCI_REG8(0x5ac8), 0x75 }, + { CCI_REG8(0x5ac9), 0x75 }, { CCI_REG8(0x5aca), 0x75 }, + { CCI_REG8(0x5acb), 0x75 }, { CCI_REG8(0x5acc), 0x75 }, + { CCI_REG8(0x5acd), 0x75 }, { CCI_REG8(0x5ace), 0x75 }, + { CCI_REG8(0x5acf), 0x75 }, { CCI_REG8(0x5ad0), 0x75 }, + { CCI_REG8(0x5ad1), 0x75 }, { CCI_REG8(0x5ad2), 0x75 }, + { CCI_REG8(0x5ad3), 0x75 }, { CCI_REG8(0x5ad4), 0x75 }, + { CCI_REG8(0x5ad5), 0x75 }, { CCI_REG8(0x5ad6), 0x75 }, + { CCI_REG8(0x5ad7), 0x75 }, { CCI_REG8(0x5ad8), 0x75 }, + { CCI_REG8(0x5ad9), 0x75 }, { CCI_REG8(0x5ada), 0x75 }, + { CCI_REG8(0x5adb), 0x75 }, { CCI_REG8(0x5adc), 0x75 }, + { CCI_REG8(0x5add), 0x75 }, { CCI_REG8(0x5ade), 0x75 }, + { CCI_REG8(0x5adf), 0x75 }, { CCI_REG8(0x5ae0), 0x75 }, + { CCI_REG8(0x5ae1), 0x75 }, { CCI_REG8(0x5ae2), 0x75 }, + { CCI_REG8(0x5ae3), 0x75 }, { CCI_REG8(0x5ae4), 0x75 }, + { CCI_REG8(0x5ae5), 0x75 }, { CCI_REG8(0x5ae6), 0x75 }, + { CCI_REG8(0x5ae7), 0x75 }, { CCI_REG8(0x5ae8), 0x75 }, + { CCI_REG8(0x5ae9), 0x75 }, { CCI_REG8(0x5aea), 0x75 }, + { CCI_REG8(0x5aeb), 0x75 }, { CCI_REG8(0x5aec), 0x75 }, + { CCI_REG8(0x5aed), 0x75 }, { CCI_REG8(0x5aee), 0x75 }, + { CCI_REG8(0x5aef), 0x75 }, { CCI_REG8(0x5af0), 0x75 }, + { CCI_REG8(0x5af1), 0x75 }, { CCI_REG8(0x5af2), 0x75 }, + { CCI_REG8(0x5af3), 0x75 }, { CCI_REG8(0x5af4), 0x75 }, + { CCI_REG8(0x5af5), 0x75 }, { CCI_REG8(0x5af6), 0x75 }, + { CCI_REG8(0x5af7), 0x75 }, { CCI_REG8(0x5af8), 0x75 }, + { CCI_REG8(0x5af9), 0x75 }, { CCI_REG8(0x5afa), 0x75 }, + { CCI_REG8(0x5afb), 0x75 }, { CCI_REG8(0x5afc), 0x75 }, + { CCI_REG8(0x5afd), 0x75 }, { CCI_REG8(0x5afe), 0x75 }, + { CCI_REG8(0x5aff), 0x75 }, { CCI_REG8(0x5b00), 0x75 }, + { CCI_REG8(0x5b01), 0x75 }, { CCI_REG8(0x5b02), 0x75 }, + { CCI_REG8(0x5b03), 0x75 }, { CCI_REG8(0x5b04), 0x75 }, + { CCI_REG8(0x5b05), 0x75 }, { CCI_REG8(0x5b06), 0x75 }, + { CCI_REG8(0x5b07), 0x75 }, { CCI_REG8(0x5b08), 0x75 }, + { CCI_REG8(0x5b09), 0x75 }, { CCI_REG8(0x5b0a), 0x75 }, + { CCI_REG8(0x5b0b), 0x75 }, { CCI_REG8(0x5b0c), 0x75 }, + { CCI_REG8(0x5b0d), 0x75 }, { CCI_REG8(0x5b0e), 0x75 }, + { CCI_REG8(0x5b0f), 0x75 }, { CCI_REG8(0x5b10), 0x75 }, + { CCI_REG8(0x5b11), 0x75 }, { CCI_REG8(0x5b12), 0x75 }, + { CCI_REG8(0x5b13), 0x75 }, { CCI_REG8(0x5b14), 0x75 }, + { CCI_REG8(0x5b15), 0x75 }, { CCI_REG8(0x5b16), 0x75 }, + { CCI_REG8(0x5b17), 0x75 }, { CCI_REG8(0x5b18), 0x75 }, + { CCI_REG8(0x5b19), 0x75 }, { CCI_REG8(0x5b1a), 0x75 }, + { CCI_REG8(0x5b1b), 0x75 }, { CCI_REG8(0x5b1c), 0x75 }, + { CCI_REG8(0x5b1d), 0x75 }, { CCI_REG8(0x5b1e), 0x75 }, + { CCI_REG8(0x5b1f), 0x75 }, { CCI_REG8(0x5b20), 0x75 }, + { CCI_REG8(0x5b21), 0x75 }, { CCI_REG8(0x5b22), 0x75 }, + { CCI_REG8(0x5b23), 0x75 }, { CCI_REG8(0x5b24), 0x75 }, + { CCI_REG8(0x5b25), 0x75 }, { CCI_REG8(0x5b26), 0x75 }, + { CCI_REG8(0x5b27), 0x75 }, { CCI_REG8(0x5b28), 0x75 }, + { CCI_REG8(0x5b29), 0x75 }, { CCI_REG8(0x5b2a), 0x75 }, + { CCI_REG8(0x5b2b), 0x75 }, { CCI_REG8(0x5b2c), 0x75 }, + { CCI_REG8(0x5b2d), 0x75 }, { CCI_REG8(0x5b2e), 0x75 }, + { CCI_REG8(0x5b2f), 0x75 }, { CCI_REG8(0x5b30), 0x75 }, + { CCI_REG8(0x5b31), 0x75 }, { CCI_REG8(0x5b32), 0x75 }, + { CCI_REG8(0x5b33), 0x75 }, { CCI_REG8(0x5b34), 0x75 }, + { CCI_REG8(0x5b35), 0x75 }, { CCI_REG8(0x5b36), 0x75 }, + { CCI_REG8(0x5b37), 0x75 }, { CCI_REG8(0x5b38), 0x75 }, + { CCI_REG8(0x5b39), 0x75 }, { CCI_REG8(0x5b3a), 0x75 }, + { CCI_REG8(0x5b3b), 0x75 }, { CCI_REG8(0x5b3c), 0x75 }, + { CCI_REG8(0x5b3d), 0x75 }, { CCI_REG8(0x5b3e), 0x75 }, + { CCI_REG8(0x5b3f), 0x75 }, { CCI_REG8(0x5b40), 0x75 }, + { CCI_REG8(0x5b41), 0x75 }, { CCI_REG8(0x5b42), 0x75 }, + { CCI_REG8(0x5b43), 0x75 }, { CCI_REG8(0x5b44), 0x75 }, + { CCI_REG8(0x5b45), 0x75 }, { CCI_REG8(0x5b46), 0x75 }, + { CCI_REG8(0x5b47), 0x75 }, { CCI_REG8(0x5b48), 0x75 }, + { CCI_REG8(0x5b49), 0x75 }, { CCI_REG8(0x5b4a), 0x75 }, + { CCI_REG8(0x5b4b), 0x75 }, { CCI_REG8(0x5b4c), 0x75 }, + { CCI_REG8(0x5b4d), 0x75 }, { CCI_REG8(0x5b4e), 0x75 }, + { CCI_REG8(0x5b4f), 0x75 }, { CCI_REG8(0x5b50), 0x75 }, + { CCI_REG8(0x5b51), 0x75 }, { CCI_REG8(0x5b52), 0x75 }, + { CCI_REG8(0x5b53), 0x75 }, { CCI_REG8(0x5b54), 0x75 }, + { CCI_REG8(0x5b55), 0x75 }, { CCI_REG8(0x5b56), 0x75 }, + { CCI_REG8(0x5b57), 0x75 }, { CCI_REG8(0x5b58), 0x75 }, + { CCI_REG8(0x5b59), 0x75 }, { CCI_REG8(0x5b5a), 0x75 }, + { CCI_REG8(0x5b5b), 0x75 }, { CCI_REG8(0x5b5c), 0x75 }, + { CCI_REG8(0x5b5d), 0x75 }, { CCI_REG8(0x5b5e), 0x75 }, + { CCI_REG8(0x5b5f), 0x75 }, { CCI_REG8(0x5b80), 0x75 }, + { CCI_REG8(0x5b81), 0x75 }, { CCI_REG8(0x5b82), 0x75 }, + { CCI_REG8(0x5b83), 0x75 }, { CCI_REG8(0x5b84), 0x75 }, + { CCI_REG8(0x5b85), 0x75 }, { CCI_REG8(0x5b86), 0x75 }, + { CCI_REG8(0x5b87), 0x75 }, { CCI_REG8(0x5b88), 0x75 }, + { CCI_REG8(0x5b89), 0x75 }, { CCI_REG8(0x5b8a), 0x75 }, + { CCI_REG8(0x5b8b), 0x75 }, { CCI_REG8(0x5b8c), 0x75 }, + { CCI_REG8(0x5b8d), 0x75 }, { CCI_REG8(0x5b8e), 0x75 }, + { CCI_REG8(0x5b8f), 0x75 }, { CCI_REG8(0x5b90), 0x75 }, + { CCI_REG8(0x5b91), 0x75 }, { CCI_REG8(0x5b92), 0x75 }, + { CCI_REG8(0x5b93), 0x75 }, { CCI_REG8(0x5b94), 0x75 }, + { CCI_REG8(0x5b95), 0x75 }, { CCI_REG8(0x5b96), 0x75 }, + { CCI_REG8(0x5b97), 0x75 }, { CCI_REG8(0x5b98), 0x75 }, + { CCI_REG8(0x5b99), 0x75 }, { CCI_REG8(0x5b9a), 0x75 }, + { CCI_REG8(0x5b9b), 0x75 }, { CCI_REG8(0x5b9c), 0x75 }, + { CCI_REG8(0x5b9d), 0x75 }, { CCI_REG8(0x5b9e), 0x75 }, + { CCI_REG8(0x5b9f), 0x75 }, { CCI_REG8(0x5ba0), 0x75 }, + { CCI_REG8(0x5ba1), 0x75 }, { CCI_REG8(0x5ba2), 0x75 }, + { CCI_REG8(0x5ba3), 0x75 }, { CCI_REG8(0x5ba4), 0x75 }, + { CCI_REG8(0x5ba5), 0x75 }, { CCI_REG8(0x5ba6), 0x75 }, + { CCI_REG8(0x5ba7), 0x75 }, { CCI_REG8(0x5ba8), 0x75 }, + { CCI_REG8(0x5ba9), 0x75 }, { CCI_REG8(0x5baa), 0x75 }, + { CCI_REG8(0x5bab), 0x75 }, { CCI_REG8(0x5bac), 0x75 }, + { CCI_REG8(0x5bad), 0x75 }, { CCI_REG8(0x5bae), 0x75 }, + { CCI_REG8(0x5baf), 0x75 }, { CCI_REG8(0x5bb0), 0x75 }, + { CCI_REG8(0x5bb1), 0x75 }, { CCI_REG8(0x5bb2), 0x75 }, + { CCI_REG8(0x5bb3), 0x75 }, { CCI_REG8(0x5bb4), 0x75 }, + { CCI_REG8(0x5bb5), 0x75 }, { CCI_REG8(0x5bb6), 0x75 }, + { CCI_REG8(0x5bb7), 0x75 }, { CCI_REG8(0x5bb8), 0x75 }, + { CCI_REG8(0x5bb9), 0x75 }, { CCI_REG8(0x5bba), 0x75 }, + { CCI_REG8(0x5bbb), 0x75 }, { CCI_REG8(0x5bbc), 0x75 }, + { CCI_REG8(0x5bbd), 0x75 }, { CCI_REG8(0x5bbe), 0x75 }, + { CCI_REG8(0x5bbf), 0x75 }, { CCI_REG8(0x5bc0), 0x75 }, + { CCI_REG8(0x5bc1), 0x75 }, { CCI_REG8(0x5bc2), 0x75 }, + { CCI_REG8(0x5bc3), 0x75 }, { CCI_REG8(0x5bc4), 0x75 }, + { CCI_REG8(0x5bc5), 0x75 }, { CCI_REG8(0x5bc6), 0x75 }, + { CCI_REG8(0x5bc7), 0x75 }, { CCI_REG8(0x5bc8), 0x75 }, + { CCI_REG8(0x5bc9), 0x75 }, { CCI_REG8(0x5bca), 0x75 }, + { CCI_REG8(0x5bcb), 0x75 }, { CCI_REG8(0x5bcc), 0x75 }, + { CCI_REG8(0x5bcd), 0x75 }, { CCI_REG8(0x5bce), 0x75 }, + { CCI_REG8(0x5bcf), 0x75 }, { CCI_REG8(0x5bd0), 0x75 }, + { CCI_REG8(0x5bd1), 0x75 }, { CCI_REG8(0x5bd2), 0x75 }, + { CCI_REG8(0x5bd3), 0x75 }, { CCI_REG8(0x5bd4), 0x75 }, + { CCI_REG8(0x5bd5), 0x75 }, { CCI_REG8(0x5bd6), 0x75 }, + { CCI_REG8(0x5bd7), 0x75 }, { CCI_REG8(0x5bd8), 0x75 }, + { CCI_REG8(0x5bd9), 0x75 }, { CCI_REG8(0x5bda), 0x75 }, + { CCI_REG8(0x5bdb), 0x75 }, { CCI_REG8(0x5bdc), 0x75 }, + { CCI_REG8(0x5bdd), 0x75 }, { CCI_REG8(0x5bde), 0x75 }, + { CCI_REG8(0x5bdf), 0x75 }, { CCI_REG8(0x5be0), 0x75 }, + { CCI_REG8(0x5be1), 0x75 }, { CCI_REG8(0x5be2), 0x75 }, + { CCI_REG8(0x5be3), 0x75 }, { CCI_REG8(0x5be4), 0x75 }, + { CCI_REG8(0x5be5), 0x75 }, { CCI_REG8(0x5be6), 0x75 }, + { CCI_REG8(0x5be7), 0x75 }, { CCI_REG8(0x5be8), 0x75 }, + { CCI_REG8(0x5be9), 0x75 }, { CCI_REG8(0x5bea), 0x75 }, + { CCI_REG8(0x5beb), 0x75 }, { CCI_REG8(0x5bec), 0x75 }, + { CCI_REG8(0x5bed), 0x75 }, { CCI_REG8(0x5bee), 0x75 }, + { CCI_REG8(0x5bef), 0x75 }, { CCI_REG8(0x5bf0), 0x75 }, + { CCI_REG8(0x5bf1), 0x75 }, { CCI_REG8(0x5bf2), 0x75 }, + { CCI_REG8(0x5bf3), 0x75 }, { CCI_REG8(0x5bf4), 0x75 }, + { CCI_REG8(0x5bf5), 0x75 }, { CCI_REG8(0x5bf6), 0x75 }, + { CCI_REG8(0x5bf7), 0x75 }, { CCI_REG8(0x5bf8), 0x75 }, + { CCI_REG8(0x5bf9), 0x75 }, { CCI_REG8(0x5bfa), 0x75 }, + { CCI_REG8(0x5bfb), 0x75 }, { CCI_REG8(0x5bfc), 0x75 }, + { CCI_REG8(0x5bfd), 0x75 }, { CCI_REG8(0x5bfe), 0x75 }, + { CCI_REG8(0x5bff), 0x75 }, { CCI_REG8(0x5c00), 0x75 }, + { CCI_REG8(0x5c01), 0x75 }, { CCI_REG8(0x5c02), 0x75 }, + { CCI_REG8(0x5c03), 0x75 }, { CCI_REG8(0x5c04), 0x75 }, + { CCI_REG8(0x5c05), 0x75 }, { CCI_REG8(0x5c06), 0x75 }, + { CCI_REG8(0x5c07), 0x75 }, { CCI_REG8(0x5c08), 0x75 }, + { CCI_REG8(0x5c09), 0x75 }, { CCI_REG8(0x5c0a), 0x75 }, + { CCI_REG8(0x5c0b), 0x75 }, { CCI_REG8(0x5c0c), 0x75 }, + { CCI_REG8(0x5c0d), 0x75 }, { CCI_REG8(0x5c0e), 0x75 }, + { CCI_REG8(0x5c0f), 0x75 }, { CCI_REG8(0x5c10), 0x75 }, + { CCI_REG8(0x5c11), 0x75 }, { CCI_REG8(0x5c12), 0x75 }, + { CCI_REG8(0x5c13), 0x75 }, { CCI_REG8(0x5c14), 0x75 }, + { CCI_REG8(0x5c15), 0x75 }, { CCI_REG8(0x5c16), 0x75 }, + { CCI_REG8(0x5c17), 0x75 }, { CCI_REG8(0x5c18), 0x75 }, + { CCI_REG8(0x5c19), 0x75 }, { CCI_REG8(0x5c1a), 0x75 }, + { CCI_REG8(0x5c1b), 0x75 }, { CCI_REG8(0x5c1c), 0x75 }, + { CCI_REG8(0x5c1d), 0x75 }, { CCI_REG8(0x5c1e), 0x75 }, + { CCI_REG8(0x5c1f), 0x75 }, { CCI_REG8(0x5c20), 0x75 }, + { CCI_REG8(0x5c21), 0x75 }, { CCI_REG8(0x5c22), 0x75 }, + { CCI_REG8(0x5c23), 0x75 }, { CCI_REG8(0x5c24), 0x75 }, + { CCI_REG8(0x5c25), 0x75 }, { CCI_REG8(0x5c26), 0x75 }, + { CCI_REG8(0x5c27), 0x75 }, { CCI_REG8(0x5c28), 0x75 }, + { CCI_REG8(0x5c29), 0x75 }, { CCI_REG8(0x5c2a), 0x75 }, + { CCI_REG8(0x5c2b), 0x75 }, { CCI_REG8(0x5c2c), 0x75 }, + { CCI_REG8(0x5c2d), 0x75 }, { CCI_REG8(0x5c2e), 0x75 }, + { CCI_REG8(0x5c2f), 0x75 }, { CCI_REG8(0x5c30), 0x75 }, + { CCI_REG8(0x5c31), 0x75 }, { CCI_REG8(0x5c32), 0x75 }, + { CCI_REG8(0x5c33), 0x75 }, { CCI_REG8(0x5c34), 0x75 }, + { CCI_REG8(0x5c35), 0x75 }, { CCI_REG8(0x5c36), 0x75 }, + { CCI_REG8(0x5c37), 0x75 }, { CCI_REG8(0x5c38), 0x75 }, + { CCI_REG8(0x5c39), 0x75 }, { CCI_REG8(0x5c3a), 0x75 }, + { CCI_REG8(0x5c3b), 0x75 }, { CCI_REG8(0x5c3c), 0x75 }, + { CCI_REG8(0x5c3d), 0x75 }, { CCI_REG8(0x5c3e), 0x75 }, + { CCI_REG8(0x5c3f), 0x75 }, { CCI_REG8(0x5c40), 0x75 }, + { CCI_REG8(0x5c41), 0x75 }, { CCI_REG8(0x5c42), 0x75 }, + { CCI_REG8(0x5c43), 0x75 }, { CCI_REG8(0x5c44), 0x75 }, + { CCI_REG8(0x5c45), 0x75 }, { CCI_REG8(0x5c46), 0x75 }, + { CCI_REG8(0x5c47), 0x75 }, { CCI_REG8(0x5c48), 0x75 }, + { CCI_REG8(0x5c49), 0x75 }, { CCI_REG8(0x5c4a), 0x75 }, + { CCI_REG8(0x5c4b), 0x75 }, { CCI_REG8(0x5c4c), 0x75 }, + { CCI_REG8(0x5c4d), 0x75 }, { CCI_REG8(0x5c4e), 0x75 }, + { CCI_REG8(0x5c4f), 0x75 }, { CCI_REG8(0x5c50), 0x75 }, + { CCI_REG8(0x5c51), 0x75 }, { CCI_REG8(0x5c52), 0x75 }, + { CCI_REG8(0x5c53), 0x75 }, { CCI_REG8(0x5c54), 0x75 }, + { CCI_REG8(0x5c55), 0x75 }, { CCI_REG8(0x5c56), 0x75 }, + { CCI_REG8(0x5c57), 0x75 }, { CCI_REG8(0x5c58), 0x75 }, + { CCI_REG8(0x5c59), 0x75 }, { CCI_REG8(0x5c5a), 0x75 }, + { CCI_REG8(0x5c5b), 0x75 }, { CCI_REG8(0x5c5c), 0x75 }, + { CCI_REG8(0x5c5d), 0x75 }, { CCI_REG8(0x5c5e), 0x75 }, + { CCI_REG8(0x5c5f), 0x75 }, { CCI_REG8(0x5c60), 0x75 }, + { CCI_REG8(0x5c61), 0x75 }, { CCI_REG8(0x5c62), 0x75 }, + { CCI_REG8(0x5c63), 0x75 }, { CCI_REG8(0x5c64), 0x75 }, + { CCI_REG8(0x5c65), 0x75 }, { CCI_REG8(0x5c66), 0x75 }, + { CCI_REG8(0x5c67), 0x75 }, { CCI_REG8(0x5c68), 0x75 }, + { CCI_REG8(0x5c69), 0x75 }, { CCI_REG8(0x5c6a), 0x75 }, + { CCI_REG8(0x5c6b), 0x75 }, { CCI_REG8(0x5c6c), 0x75 }, + { CCI_REG8(0x5c6d), 0x75 }, { CCI_REG8(0x5c6e), 0x75 }, + { CCI_REG8(0x5c6f), 0x75 }, { CCI_REG8(0x5c70), 0x75 }, + { CCI_REG8(0x5c71), 0x75 }, { CCI_REG8(0x5c72), 0x75 }, + { CCI_REG8(0x5c73), 0x75 }, { CCI_REG8(0x5c74), 0x75 }, + { CCI_REG8(0x5c75), 0x75 }, { CCI_REG8(0x5c76), 0x75 }, + { CCI_REG8(0x5c77), 0x75 }, { CCI_REG8(0x5c78), 0x75 }, + { CCI_REG8(0x5c79), 0x75 }, { CCI_REG8(0x5c7a), 0x75 }, + { CCI_REG8(0x5c7b), 0x75 }, { CCI_REG8(0x5c7c), 0x75 }, + { CCI_REG8(0x5c7d), 0x75 }, { CCI_REG8(0x5c7e), 0x75 }, + { CCI_REG8(0x5c7f), 0x75 }, { CCI_REG8(0x5c80), 0x75 }, + { CCI_REG8(0x5c81), 0x75 }, { CCI_REG8(0x5c82), 0x75 }, + { CCI_REG8(0x5c83), 0x75 }, { CCI_REG8(0x5c84), 0x75 }, + { CCI_REG8(0x5c85), 0x75 }, { CCI_REG8(0x5c86), 0x75 }, + { CCI_REG8(0x5c87), 0x75 }, { CCI_REG8(0x5c88), 0x75 }, + { CCI_REG8(0x5c89), 0x75 }, { CCI_REG8(0x5c8a), 0x75 }, + { CCI_REG8(0x5c8b), 0x75 }, { CCI_REG8(0x5c8c), 0x75 }, + { CCI_REG8(0x5c8d), 0x75 }, { CCI_REG8(0x5c8e), 0x75 }, + { CCI_REG8(0x5c8f), 0x75 }, { CCI_REG8(0x5c90), 0x75 }, + { CCI_REG8(0x5c91), 0x75 }, { CCI_REG8(0x5c92), 0x75 }, + { CCI_REG8(0x5c93), 0x75 }, { CCI_REG8(0x5c94), 0x75 }, + { CCI_REG8(0x5c95), 0x75 }, { CCI_REG8(0x5c96), 0x75 }, + { CCI_REG8(0x5c97), 0x75 }, { CCI_REG8(0x5c98), 0x75 }, + { CCI_REG8(0x5c99), 0x75 }, { CCI_REG8(0x5c9a), 0x75 }, + { CCI_REG8(0x5c9b), 0x75 }, { CCI_REG8(0x5c9c), 0x75 }, + { CCI_REG8(0x5c9d), 0x75 }, { CCI_REG8(0x5c9e), 0x75 }, + { CCI_REG8(0x5c9f), 0x75 }, { CCI_REG8(0x5ca0), 0x75 }, + { CCI_REG8(0x5ca1), 0x75 }, { CCI_REG8(0x5ca2), 0x75 }, + { CCI_REG8(0x5ca3), 0x75 }, { CCI_REG8(0x5ca4), 0x75 }, + { CCI_REG8(0x5ca5), 0x75 }, { CCI_REG8(0x5ca6), 0x75 }, + { CCI_REG8(0x5ca7), 0x75 }, { CCI_REG8(0x5ca8), 0x75 }, + { CCI_REG8(0x5ca9), 0x75 }, { CCI_REG8(0x5caa), 0x75 }, + { CCI_REG8(0x5cab), 0x75 }, { CCI_REG8(0x5cac), 0x75 }, + { CCI_REG8(0x5cad), 0x75 }, { CCI_REG8(0x5cae), 0x75 }, + { CCI_REG8(0x5caf), 0x75 }, { CCI_REG8(0x5cb0), 0x75 }, + { CCI_REG8(0x5cb |