/* * Support for Omnivision OV8830 camera sensor. * Based on Aptina mt9e013 driver. * * Copyright (c) 2012 Intel Corporation. All Rights Reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * */ #ifndef __OV8835_H__ #define __OV8835_H__ #include "ov8830.h" static const struct ov8830_reg ov8835_basic_settings[] = { { OV8830_8BIT, { 0x0103 }, 0x01 }, { OV8830_8BIT, { 0x0100 }, 0x00 }, { OV8830_8BIT, { 0x0102 }, 0x01 }, { OV8830_8BIT, { 0x3001 }, 0x2a }, { OV8830_8BIT, { 0x3002 }, 0x88 }, { OV8830_8BIT, { 0x3005 }, 0x00 }, { OV8830_8BIT, { 0x3011 }, 0x41 }, { OV8830_8BIT, { 0x3015 }, 0x08 }, { OV8830_8BIT, { 0x301b }, 0xb4 }, { OV8830_8BIT, { 0x301d }, 0x02 }, { OV8830_8BIT, { 0x3021 }, 0x00 }, { OV8830_8BIT, { 0x3022 }, 0x02 }, { OV8830_8BIT, { 0x3081 }, 0x02 }, { OV8830_8BIT, { 0x3083 }, 0x01 }, { OV8830_8BIT, { 0x3090 }, 0x02 }, /* PLL2 Settings 278.4MHz*/ { OV8830_8BIT, { 0x3091 }, 0x1d }, { OV8830_8BIT, { 0x3094 }, 0x00 }, { OV8830_8BIT, { 0x3092 }, 0x00 }, { OV8830_8BIT, { 0x3093 }, 0x00 }, { OV8830_8BIT, { 0x3098 }, 0x03 }, /* PLL3 Settings REF_CLK 256Mhz*/ { OV8830_8BIT, { 0x3099 }, 0x14 }, { OV8830_8BIT, { 0x309a }, 0x00 }, { OV8830_8BIT, { 0x309b }, 0x00 }, { OV8830_8BIT, { 0x309c }, 0x01 }, { OV8830_8BIT, { 0x30a2 }, 0x01 }, /* Ref Clk -> Manual mode enabled */ { OV8830_8BIT, { 0x30b0 }, 0x05 }, { OV8830_8BIT, { 0x30b2 }, 0x00 }, { OV8830_8BIT, { 0x30b3 }, 0x6b }, /* MIPI PLL1 Settings 684.4Mbps*/ { OV8830_8BIT, { 0x30b4 }, 0x03 }, { OV8830_8BIT, { 0x30b5 }, 0x04 }, { OV8830_8BIT, { 0x30b6 }, 0x01 }, { OV8830_8BIT, { 0x3104 }, 0xa1 }, { OV8830_8BIT, { 0x3106 }, 0x01 }, { OV8830_8BIT, { 0x3400 }, 0x04 }, { OV8830_8BIT, { 0x3401 }, 0x00 }, { OV8830_8BIT, { 0x3402 }, 0x04 }, { OV8830_8BIT, { 0x3403 }, 0x00 }, { OV8830_8BIT, { 0x3404 }, 0x04 }, { OV8830_8BIT, { 0x3405 }, 0x00 }, { OV8830_8BIT, { 0x3406 }, 0x01 }, { OV8830_8BIT, { 0x3503 }, 0x07 }, { OV8830_8BIT, { 0x3504 }, 0x00 }, { OV8830_8BIT, { 0x3505 }, 0x30 }, { OV8830_8BIT, { 0x3506 }, 0x00 }, { OV8830_8BIT, { 0x3507 }, 0x10 }, { OV8830_8BIT, { 0x3508 }, 0x80 }, { OV8830_8BIT, { 0x3509 }, 0x10 }, { OV8830_8BIT, { 0x350a }, 0x00 }, { OV8830_8BIT, { 0x350b }, 0x38 }, { OV8830_8BIT, { 0x3600 }, 0x98 }, { OV8830_8BIT, { 0x3601 }, 0x02 }, { OV8830_8BIT, { 0x3602 }, 0x7c }, { OV8830_8BIT, { 0x3604 }, 0x38 }, { OV8830_8BIT, { 0x3612 }, 0x80 }, { OV8830_8BIT, { 0x3620 }, 0x41 }, { OV8830_8BIT, { 0x3621 }, 0xa4 }, { OV8830_8BIT, { 0x3622 }, 0x0f }, { OV8830_8BIT, { 0x3625 }, 0x44 }, { OV8830_8BIT, { 0x3630 }, 0x55 }, { OV8830_8BIT, { 0x3631 }, 0xf2 }, { OV8830_8BIT, { 0x3632 }, 0x00 }, { OV8830_8BIT, { 0x3633 }, 0x34 }, { OV8830_8BIT, { 0x3634 }, 0x03 }, { OV8830_8BIT, { 0x364d }, 0x0d }, { OV8830_8BIT, { 0x364f }, 0x60 }, { OV8830_8BIT, { 0x3660 }, 0x80 }, { OV8830_8BIT, { 0x3662 }, 0x10 }, { OV8830_8BIT, { 0x3665 }, 0x00 }, { OV8830_8BIT, { 0x3666 }, 0x00 }, { OV8830_8BIT, { 0x3667 }, 0x00 }, { OV8830_8BIT, { 0x366a }, 0x80 }, { OV8830_8BIT, { 0x366c }, 0x00 }, { OV8830_8BIT, { 0x366d }, 0x00 }, { OV8830_8BIT, { 0x366e }, 0x00 }, { OV8830_8BIT, { 0x366f }, 0x20 }, { OV8830_8BIT, { 0x3680 }, 0xb5 }, { OV8830_8BIT, { 0x3681 }, 0x00 }, { OV8830_8BIT, { 0x3701 }, 0x14 }, { OV8830_8BIT, { 0x3702 }, 0x50 }, { OV8830_8BIT, { 0x3703 }, 0x8c }, { OV8830_8BIT, { 0x3704 }, 0x68 }, { OV8830_8BIT, { 0x3705 }, 0x02 }, { OV8830_8BIT, { 0x3709 }, 0x43 }, { OV8830_8BIT, { 0x370a }, 0x00 }, { OV8830_8BIT, { 0x370b }, 0x20 }, { OV8830_8BIT, { 0x370c }, 0x0c }, { OV8830_8BIT, { 0x370d }, 0x11 }, { OV8830_8BIT, { 0x370e }, 0x00 }, { OV8830_8BIT, { 0x370f }, 0x00 }, { OV8830_8BIT, { 0x3710 }, 0x00 }, { OV8830_8BIT, { 0x371c }, 0x01 }, { OV8830_8BIT, { 0x371f }, 0x0c }, { OV8830_8BIT, { 0x3721 }, 0x00 }, { OV8830_8BIT, { 0x3724 }, 0x10 }, { OV8830_8BIT, { 0x3726 }, 0x00 }, { OV8830_8BIT, { 0x372a }, 0x01 }, { OV8830_8BIT, { 0x3730 }, 0x18 }, { OV8830_8BIT, { 0x3738 }, 0x22 }, { OV8830_8BIT, { 0x3739 }, 0xd0 }, { OV8830_8BIT, { 0x373a }, 0x50 }, { OV8830_8BIT, { 0x373b }, 0x02 }, { OV8830_8BIT, { 0x373c }, 0x20 }, { OV8830_8BIT, { 0x373f }, 0x02 }, { OV8830_8BIT, { 0x3740 }, 0x42 }, { OV8830_8BIT, { 0x3741 }, 0x02 }, { OV8830_8BIT, { 0x3742 }, 0x18 }, { OV8830_8BIT, { 0x3743 }, 0x01 }, { OV8830_8BIT, { 0x3744 }, 0x02 }, { OV8830_8BIT, { 0x3747 }, 0x10 }, { OV8830_8BIT, { 0x374c }, 0x04 }, { OV8830_8BIT, { 0x3751 }, 0xf0 }, { OV8830_8BIT, { 0x3752 }, 0x00 }, { OV8830_8BIT, { 0x3753 }, 0x00 }, { OV8830_8BIT, { 0x3754 }, 0xc0 }, { OV8830_8BIT, { 0x3755 }, 0x00 }, { OV8830_8BIT, { 0x3756 }, 0x1a }, { OV8830_8BIT, { 0x3758 }, 0x00 }, { OV8830_8BIT, { 0x3759 }, 0x0f }, { OV8830_8BIT, { 0x375c }, 0x04 }, { OV8830_8BIT, { 0x3767 }, 0x01 }, { OV8830_8BIT, { 0x376b }, 0x44 }, { OV8830_8BIT, { 0x3774 }, 0x10 }, { OV8830_8BIT, { 0x3776 }, 0x00 }, { OV8830_8BIT, { 0x377f }, 0x08 }, { OV8830_8BIT, { 0x3780 }, 0x22 }, { OV8830_8BIT, { 0x3781 }, 0xcc }, { OV8830_8BIT, { 0x3784 }, 0x2c }, { OV8830_8BIT, { 0x3785 }, 0x08 }, { OV8830_8BIT, { 0x3786 }, 0x16 }, { OV8830_8BIT, { 0x378f }, 0xf5 }, { OV8830_8BIT, { 0x3791 }, 0xb0 }, { OV8830_8BIT, { 0x3795 }, 0x00 }, { OV8830_8BIT, { 0x3796 }, 0x94 }, { OV8830_8BIT, { 0x3797 }, 0x11 }, { OV8830_8BIT, { 0x3798 }, 0x30 }, { OV8830_8BIT, { 0x3799 }, 0x41 }, { OV8830_8BIT, { 0x379a }, 0x07 }, { OV8830_8BIT, { 0x379b }, 0xb0 }, { OV8830_8BIT, { 0x379c }, 0x0c }, { OV8830_8BIT, { 0x37c5 }, 0x00 }, { OV8830_8BIT, { 0x37c6 }, 0xa0 }, { OV8830_8BIT, { 0x37c7 }, 0x00 }, { OV8830_8BIT, { 0x37c9 }, 0x00 }, { OV8830_8BIT, { 0x37ca }, 0x00 }, { OV8830_8BIT, { 0x37cb }, 0x00 }, { OV8830_8BIT, { 0x37cc }, 0x00 }, { OV8830_8BIT, { 0x37cd }, 0x00 }, { OV8830_8BIT, { 0x37ce }, 0x01 }, { OV8830_8BIT, { 0x37cf }, 0x00 }, { OV8830_8BIT, { 0x37d1 }, 0x01 }, { OV8830_8BIT, { 0x37de }, 0x00 }, { OV8830_8BIT, { 0x37df }, 0x00 }, { OV8830_8BIT, { 0x3810 }, 0x00 }, { OV8830_8BIT, { 0x3811 }, 0x04 }, { OV8830_8BIT, { 0x3812 }, 0x00 }, { OV8830_8BIT, { 0x3813 }, 0x04 }, { OV8830_8BIT, { 0x3823 }, 0x00 }, { OV8830_8BIT, { 0x3824 }, 0x00 }, { OV8830_8BIT, { 0x3825 }, 0x00 }, { OV8830_8BIT, { 0x3826 }, 0x00 }, { OV8830_8BIT, { 0x3827 }, 0x00 }, { OV8830_8BIT, { 0x382a }, 0x04 }, { OV8830_8BIT, { 0x3a04 }, 0x09 }, { OV8830_8BIT, { 0x3a05 }, 0xa9 }, { OV8830_8BIT, { 0x3a06 }, 0x00 }, { OV8830_8BIT, { 0x3a07 }, 0xf8 }, { OV8830_8BIT, { 0x3b00 }, 0x00 }, { OV8830_8BIT, { 0x3b02 }, 0x00 }, { OV8830_8BIT, { 0x3b03 }, 0x00 }, { OV8830_8BIT, { 0x3b04 }, 0x00 }, { OV8830_8BIT, { 0x3b05 }, 0x00 }, { OV8830_8BIT, { 0x3d00 }, 0x00 }, { OV8830_8BIT, { 0x3d01 }, 0x00 }, { OV8830_8BIT, { 0x3d02 }, 0x00 }, { OV8830_8BIT, { 0x3d03 }, 0x00 }, { OV8830_8BIT, { 0x3d04 }, 0x00 }, { OV8830_8BIT, { 0x3d05 }, 0x00 }, { OV8830_8BIT, { 0x3d06 }, 0x00 }, { OV8830_8BIT, { 0x3d07 }, 0x00 }, { OV8830_8BIT, { 0x3d08 }, 0x00 }, { OV8830_8BIT, { 0x3d09 }, 0x00 }, { OV8830_8BIT, { 0x3d0a }, 0x00 }, { OV8830_8BIT, { 0x3d0b }, 0x00 }, { OV8830_8BIT, { 0x3d0c }, 0x00 }, { OV8830_8BIT, { 0x3d0d }, 0x00 }, { OV8830_8BIT, { 0x3d0e }, 0x00 }, { OV8830_8BIT, { 0x3d0f }, 0x00 }, { OV8830_8BIT, { 0x3d80 }, 0x00 }, { OV8830_8BIT, { 0x3d81 }, 0x00 }, { OV8830_8BIT, { 0x3d84 }, 0x00 }, { OV8830_8BIT, { 0x4000 }, 0x18 }, { OV8830_8BIT, { 0x4001 }, 0x04 }, { OV8830_8BIT, { 0x4002 }, 0x45 }, { OV8830_8BIT, { 0x4005 }, 0x18 }, { OV8830_8BIT, { 0x4006 }, 0x20 }, { OV8830_8BIT, { 0x4008 }, 0x24 }, { OV8830_8BIT, { 0x4009 }, 0x10 }, { OV8830_8BIT, { 0x4100 }, 0x17 }, { OV8830_8BIT, { 0x4101 }, 0x03 }, { OV8830_8BIT, { 0x4102 }, 0x04 }, { OV8830_8BIT, { 0x4103 }, 0x03 }, { OV8830_8BIT, { 0x4104 }, 0x5a }, { OV8830_8BIT, { 0x4307 }, 0x30 }, { OV8830_8BIT, { 0x4315 }, 0x00 }, { OV8830_8BIT, { 0x4511 }, 0x05 }, { OV8830_8BIT, { 0x4512 }, 0x01 }, /* Binning option Average */ { OV8830_8BIT, { 0x4805 }, 0x21 }, { OV8830_8BIT, { 0x4806 }, 0x00 }, { OV8830_8BIT, { 0x481f }, 0x36 }, { OV8830_8BIT, { 0x4831 }, 0x6c }, { OV8830_8BIT, { 0x4837 }, 0x0c }, /* MIPI Global timing */ { OV8830_8BIT, { 0x4a00 }, 0xaa }, { OV8830_8BIT, { 0x4a03 }, 0x01 }, { OV8830_8BIT, { 0x4a05 }, 0x08 }, { OV8830_8BIT, { 0x4a0a }, 0x88 }, { OV8830_8BIT, { 0x4d03 }, 0xbb }, { OV8830_8BIT, { 0x5000 }, 0x06 }, { OV8830_8BIT, { 0x5001 }, 0x01 }, { OV8830_8BIT, { 0x5002 }, 0x80 }, { OV8830_8BIT, { 0x5003 }, 0x20 }, { OV8830_8BIT, { 0x5013 }, 0x00 }, { OV8830_8BIT, { 0x5046 }, 0x4a }, { OV8830_8BIT, { 0x5780 }, 0x1c }, { OV8830_8BIT, { 0x5786 }, 0x20 }, { OV8830_8BIT, { 0x5787 }, 0x10 }, { OV8830_8BIT, { 0x5788 }, 0x18 }, { OV8830_8BIT, { 0x578a }, 0x04 }, { OV8830_8BIT, { 0x578b }, 0x02 }, { OV8830_8BIT, { 0x578c }, 0x02 }, { OV8830_8BIT, { 0x578e }, 0x06 }, { OV8830_8BIT, { 0x578f }, 0x02 }, { OV8830_8BIT, { 0x5790 }, 0x02 }, { OV8830_8BIT, { 0x5791 }, 0xff }, { OV8830_8BIT, { 0x5a08 }, 0x02 }, { OV8830_8BIT, { 0x5e00 }, 0x00 }, { OV8830_8BIT, { 0x5e10 }, 0x0c }, { OV8830_TOK_TERM, {0}, 0} }; /*****************************OV8835 STILL & PREVIEW**************************/ static const struct ov8830_reg ov8835_cif_mode[] = { { OV8830_8BIT, { 0x3708 }, 0xe6 }, /* Binning Related e6 : e3 */ { OV8830_8BIT, { 0x3800 }, 0x00 }, /* 172, 20, 3123, 2459 2944x2432 */ { OV8830_8BIT, { 0x3801 }, 0xac }, { OV8830_8BIT, { 0x3802 }, 0x00 }, { OV8830_8BIT, { 0x3803 }, 0x14 }, { OV8830_8BIT, { 0x3804 }, 0x0c }, { OV8830_8BIT, { 0x3805 }, 0x33 }, { OV8830_8BIT, { 0x3806 }, 0x09 }, { OV8830_8BIT, { 0x3807 }, 0x9b }, { OV8830_8BIT, { 0x3808 }, 0x01 }, /* 368x304 O/p Binning+Scaling */ { OV8830_8BIT, { 0x3809 }, 0x70 }, { OV8830_8BIT, { 0x380a }, 0x01 }, { OV8830_8BIT, { 0x380b }, 0x30 }, { OV8830_8BIT, { 0x3814 }, 0x71 }, { OV8830_8BIT, { 0x3815 }, 0x71 }, { OV8830_8BIT, { 0x3820 }, 0x11 }, { OV8830_8BIT, { 0x3821 }, 0x0f }, { OV8830_8BIT, { 0x4004 }, 0x02 }, /* BLC No. of blacklines used. */ { OV8830_8BIT, { 0x404f }, 0xa0 }, { OV8830_8BIT, { 0x5002 }, 0x80 }, /* Scale enable */ { OV8830_8BIT, { 0x5041 }, 0x04 }, /* Auto scale */ { OV8830_TOK_TERM, {0}, 0} }; static struct ov8830_reg const ov8835_binning_4x3_mode[] = { { OV8830_8BIT, { 0x3708 }, 0xe6 }, /* Binning Related e6 : e3 */ { OV8830_8BIT, { 0x3800 }, 0x00 }, /* 4, 4, 3291, 2475, 3288X2472 */ { OV8830_8BIT, { 0x3801 }, 0x04 }, { OV8830_8BIT, { 0x3802 }, 0x00 }, { OV8830_8BIT, { 0x3803 }, 0x04 }, { OV8830_8BIT, { 0x3804 }, 0x0c }, { OV8830_8BIT, { 0x3805 }, 0xdb }, { OV8830_8BIT, { 0x3806 }, 0x09 }, { OV8830_8BIT, { 0x3807 }, 0xab }, { OV8830_8BIT, { 0x3808 }, 0x06 }, /* Output size: 1632x1224 */ { OV8830_8BIT, { 0x3809 }, 0x60 }, { OV8830_8BIT, { 0x380a }, 0x04 }, { OV8830_8BIT, { 0x380b }, 0xc8 }, { OV8830_8BIT, { 0x3814 }, 0x31 }, { OV8830_8BIT, { 0x3815 }, 0x31 }, { OV8830_8BIT, { 0x3820 }, 0x11 }, /* Vertical Binning 0n */ { OV8830_8BIT, { 0x3821 }, 0x0f }, /* Horizontal Binning 0n */ { OV8830_8BIT, { 0x4004 }, 0x02 }, /* BLC No. of blacklines used. */ { OV8830_8BIT, { 0x404f }, 0xa0 }, { OV8830_8BIT, { 0x5002 }, 0x00 }, /* Scale disable */ { OV8830_8BIT, { 0x5041 }, 0x84 }, /* Set manual scale and disable */ { OV8830_TOK_TERM, {0}, 0} }; static const struct ov8830_reg ov8835_binning_16x9_mode[] = { { OV8830_8BIT, { 0x3708 }, 0xe6 }, /* Binning Related */ { OV8830_8BIT, { 0x3800 }, 0x00 }, /* 4, 310, 3291, 2169 3288x1860 */ { OV8830_8BIT, { 0x3801 }, 0x04 }, { OV8830_8BIT, { 0x3802 }, 0x01 }, { OV8830_8BIT, { 0x3803 }, 0x36 }, { OV8830_8BIT, { 0x3804 }, 0x0c }, { OV8830_8BIT, { 0x3805 }, 0xdb }, { OV8830_8BIT, { 0x3806 }, 0x08 }, { OV8830_8BIT, { 0x3807 }, 0x79 }, { OV8830_8BIT, { 0x3808 }, 0x06 }, /* Output size 1632x 916 */ { OV8830_8BIT, { 0x3809 }, 0x60 }, { OV8830_8BIT, { 0x380a }, 0x03 }, { OV8830_8BIT, { 0x380b }, 0x94 }, { OV8830_8BIT, { 0x3814 }, 0x31 }, { OV8830_8BIT, { 0x3815 }, 0x31 }, { OV8830_8BIT, { 0x3820 }, 0x11 }, /* Binning off */ { OV8830_8BIT, { 0x3821 }, 0x0f }, { OV8830_8BIT, { 0x4004 }, 0x08 }, /* BLC No. of blacklines used. */ { OV8830_8BIT, { 0x404f }, 0x90 }, { OV8830_8BIT, { 0x5002 }, 0x00 }, /* Scale disable */ { OV8830_8BIT, { 0x5041 }, 0x84 }, /* Set manual scale and disable */ { OV8830_TOK_TERM, {0}, 0} }; static const struct ov8830_reg ov8835_8M_mode[] = { { OV8830_8BIT, { 0x3708 }, 0xe3 }, /* Binning Related */ { OV8830_8BIT, { 0x3800 }, 0x00 }, /* 4, 4, 3291, 2475, 3288X2472 */ { OV8830_8BIT, { 0x3801 }, 0x04 }, { OV8830_8BIT, { 0x3802 }, 0x00 }, { OV8830_8BIT, { 0x3803 }, 0x04 }, { OV8830_8BIT, { 0x3804 }, 0x0c }, { OV8830_8BIT, { 0x3805 }, 0xdb }, { OV8830_8BIT, { 0x3806 }, 0x09 }, { OV8830_8BIT, { 0x3807 }, 0xab }, { OV8830_8BIT, { 0x3808 }, 0x0c }, /* Output size 3280x2464 */ { OV8830_8BIT, { 0x3809 }, 0xd0 }, { OV8830_8BIT, { 0x380a }, 0x09 }, { OV8830_8BIT, { 0x380b }, 0xa0 }, { OV8830_8BIT, { 0x3814 }, 0x11 }, /* Binning off */ { OV8830_8BIT, { 0x3815 }, 0x11 }, { OV8830_8BIT, { 0x3820 }, 0x10 }, { OV8830_8BIT, { 0x3821 }, 0x0e }, { OV8830_8BIT, { 0x4004 }, 0x08 }, /* BLC No. of blacklines used. */ { OV8830_8BIT, { 0x404f }, 0xa0 }, { OV8830_8BIT, { 0x5002 }, 0x00 }, /* Scale disable */ { OV8830_8BIT, { 0x5041 }, 0x84 }, /* Set manual scale and disable */ { OV8830_TOK_TERM, {0}, 0} }; static const struct ov8830_reg ov8835_6M_mode[] = { { OV8830_8BIT, { 0x3708 }, 0xe3 }, /* Binning Related */ { OV8830_8BIT, { 0x3800 }, 0x00 }, /* 4, 310, 3291, 2169 3288x1860 */ { OV8830_8BIT, { 0x3801 }, 0x04 }, { OV8830_8BIT, { 0x3802 }, 0x01 }, { OV8830_8BIT, { 0x3803 }, 0x36 }, { OV8830_8BIT, { 0x3804 }, 0x0c }, { OV8830_8BIT, { 0x3805 }, 0xdb }, { OV8830_8BIT, { 0x3806 }, 0x08 }, { OV8830_8BIT, { 0x3807 }, 0x79 }, { OV8830_8BIT, { 0x3808 }, 0x0c }, /* Output size 3280x1852 */ { OV8830_8BIT, { 0x3809 }, 0xd0 }, { OV8830_8BIT, { 0x380a }, 0x07 }, { OV8830_8BIT, { 0x380b }, 0x3c }, { OV8830_8BIT, { 0x3814 }, 0x11 }, { OV8830_8BIT, { 0x3815 }, 0x11 }, { OV8830_8BIT, { 0x3820 }, 0x10 }, /* Binning off */ { OV8830_8BIT, { 0x3821 }, 0x0e }, { OV8830_8BIT, { 0x4004 }, 0x08 }, /* BLC No. of blacklines used. */ { OV8830_8BIT, { 0x404f }, 0x90 }, { OV8830_8BIT, { 0x5002 }, 0x00 }, /* Scale disable */ { OV8830_8BIT, { 0x5041 }, 0x84 }, /* Set manual scale and disable */ { OV8830_TOK_TERM, {0}, 0} }; /***************** OV8835 VIDEO ***************************************/ static const struct ov8830_reg ov8835_video_qcif[] = { { OV8830_8BIT, { 0x3708 }, 0xe6 }, /* Binning Related e6 : e3 */ { OV8830_8BIT, { 0x3800 }, 0x00 }, /* 180, 16,3115, 2463 2928x2440 */ { OV8830_8BIT, { 0x3801 }, 0xb4 }, { OV8830_8BIT, { 0x3802 }, 0x00 }, { OV8830_8BIT, { 0x3803 }, 0x10 }, { OV8830_8BIT, { 0x3804 }, 0x0c }, { OV8830_8BIT, { 0x3805 }, 0x2b }, { OV8830_8BIT, { 0x3806 }, 0x09 }, { OV8830_8BIT, { 0x3807 }, 0x9f }, { OV8830_8BIT, { 0x3808 }, 0x00 }, /* O/p Binning + Scaling 192x160 */ { OV8830_8BIT, { 0x3809 }, 0xc0 }, { OV8830_8BIT, { 0x380a }, 0x00 }, { OV8830_8BIT, { 0x380b }, 0xa0 }, { OV8830_8BIT, { 0x3814 }, 0x71 }, { OV8830_8BIT, { 0x3815 }, 0x71 }, { OV8830_8BIT, { 0x3820 }, 0x11 }, { OV8830_8BIT, { 0x3821 }, 0x0f }, { OV8830_8BIT, { 0x4004 }, 0x02 }, /* BLC No. of blacklines used. */ { OV8830_8BIT, { 0x404f }, 0xa0 }, { OV8830_8BIT, { 0x5002 }, 0x80 }, /* Scale enable */ { OV8830_8BIT, { 0x5041 }, 0x04 }, /* Auto scale */ { OV8830_TOK_TERM, {0}, 0} }; static const struct ov8830_reg ov8835_video_qvga_dvs[] = { { OV8830_8BIT, { 0x3708 }, 0xe6 }, /* Binning Related e6 : e3 */ { OV8830_8BIT, { 0x3800 }, 0x00 }, /* 4, 4, 3291, 2475 3288x2472 */ { OV8830_8BIT, { 0x3801 }, 0x04 }, { OV8830_8BIT, { 0x3802 }, 0x00 }, { OV8830_8BIT, { 0x3803 }, 0x04 }, { OV8830_8BIT, { 0x3804 }, 0x0c }, { OV8830_8BIT, { 0x3805 }, 0xdb }, { OV8830_8BIT, { 0x3806 }, 0x09 }, { OV8830_8BIT, { 0x3807 }, 0xab }, { OV8830_8BIT, { 0x3808 }, 0x01 }, /* 408x308 Binning+Scaling */ { OV8830_8BIT, { 0x3809 }, 0x98 }, { OV8830_8BIT, { 0x380a }, 0x01 }, { OV8830_8BIT, { 0x380b }, 0x34 }, { OV8830_8BIT, { 0x3814 }, 0x31 }, { OV8830_8BIT, { 0x3815 }, 0x31 }, { OV8830_8BIT, { 0x3820 }, 0x11 }, { OV8830_8BIT, { 0x3821 }, 0x0f }, { OV8830_8BIT, { 0x4004 }, 0x02 }, /* BLC No. of blacklines used. */ { OV8830_8BIT, { 0x404f }, 0xa0 }, { OV8830_8BIT, { 0x5002 }, 0x80 }, /* Scale enable */ { OV8830_8BIT, { 0x5041 }, 0x04 }, /* Auto scale */ { OV8830_TOK_TERM, {0}, 0} }; static const struct ov8830_reg ov8835_video_vga_dvs[] = { { OV8830_8BIT, { 0x3708 }, 0xe6 }, /* Binning Related e6 : e3 */ { OV8830_8BIT, { 0x3800 }, 0x00 }, /* 4, 4, 3291, 2475 3288x2472 */ { OV8830_8BIT, { 0x3801 }, 0x04 }, { OV8830_8BIT, { 0x3802 }, 0x00 }, { OV8830_8BIT, { 0x3803 }, 0x04 }, { OV8830_8BIT, { 0x3804 }, 0x0c }, { OV8830_8BIT, { 0x3805 }, 0xdb }, { OV8830_8BIT, { 0x3806 }, 0x09 }, { OV8830_8BIT, { 0x3807 }, 0xab }, { OV8830_8BIT, { 0x3808 }, 0x03 }, /* 820x616 Binning + Scaling */ { OV8830_8BIT, { 0x3809 }, 0x34 }, { OV8830_8BIT, { 0x380a }, 0x02 }, { OV8830_8BIT, { 0x380b }, 0x68 }, { OV8830_8BIT, { 0x3814 }, 0x31 }, { OV8830_8BIT, { 0x3815 }, 0x31 }, { OV8830_8BIT, { 0x3820 }, 0x11 }, { OV8830_8BIT, { 0x3821 }, 0x0f }, { OV8830_8BIT, { 0x4004 }, 0x02 }, /* BLC No. of blacklines used. */ { OV8830_8BIT, { 0x404f }, 0xa0 }, { OV8830_8BIT, { 0x5002 }, 0x80 }, /* Scale enable */ { OV8830_8BIT, { 0x5041 }, 0x04 }, /* Auto scale */ { OV8830_TOK_TERM, {0}, 0} }; static struct ov8830_reg const ov8835_video_480p_dvs[] = { { OV8830_8BIT, { 0x3708 }, 0xe6 }, /* Binning Related e6 : e3 */ { OV8830_8BIT, { 0x3800 }, 0x01 }, { OV8830_8BIT, { 0x3801 }, 0x08 }, { OV8830_8BIT, { 0x3802 }, 0x01 }, { OV8830_8BIT, { 0x3803 }, 0x40 }, { OV8830_8BIT, { 0x3804 }, 0x0b }, { OV8830_8BIT, { 0x3805 }, 0xd5 }, { OV8830_8BIT, { 0x3806 }, 0x08 }, { OV8830_8BIT, { 0x3807 }, 0x73 }, /* TODO! 2766 x 1844 */ { OV8830_8BIT, { 0x3808 }, 0x03 }, /* 936x602 Binning + Scaling */ { OV8830_8BIT, { 0x3809 }, 0xa8 }, { OV8830_8BIT, { 0x380a }, 0x02 }, { OV8830_8BIT, { 0x380b }, 0x5a }, { OV8830_8BIT, { 0x3814 }, 0x31 }, { OV8830_8BIT, { 0x3815 }, 0x31 }, { OV8830_8BIT, { 0x3820 }, 0x11 }, /* Binning on */ { OV8830_8BIT, { 0x3821 }, 0x0f }, { OV8830_8BIT, { 0x4004 }, 0x02 }, /* BLC No. of blacklines used. */ { OV8830_8BIT, { 0x404f }, 0xa0 }, { OV8830_8BIT, { 0x5002 }, 0x80 }, /* Scale enable */ { OV8830_8BIT, { 0x5041 }, 0x04 }, /* Auto scale */ { OV8830_TOK_TERM, {0}, 0} }; static struct ov8830_reg const ov8835_video_800x600_dvs[] = { { OV8830_8BIT, { 0x3708 }, 0xe6 }, /* Binning Related e6 : e3 */ { OV8830_8BIT, { 0x3800 }, 0x01 }, /* 414, 310, 2881, 2169 2468x1860 */ { OV8830_8BIT, { 0x3801 }, 0x9e }, { OV8830_8BIT, { 0x3802 }, 0x01 }, { OV8830_8BIT, { 0x3803 }, 0x36 }, { OV8830_8BIT, { 0x3804 }, 0x0b }, { OV8830_8BIT, { 0x3805 }, 0x41 }, { OV8830_8BIT, { 0x3806 }, 0x08 }, { OV8830_8BIT, { 0x3807 }, 0x79 }, { OV8830_8BIT, { 0x3808 }, 0x03 }, /* O/p 976x736 Bin+Scale */ { OV8830_8BIT, { 0x3809 }, 0xD0 }, { OV8830_8BIT, { 0x380a }, 0x02 }, { OV8830_8BIT, { 0x380b }, 0xe0 }, { OV8830_8BIT, { 0x3814 }, 0x31 }, { OV8830_8BIT, { 0x3815 }, 0x31 }, { OV8830_8BIT, { 0x3820 }, 0x11 }, { OV8830_8BIT, { 0x3821 }, 0x0f }, { OV8830_8BIT, { 0x4004 }, 0x02 }, /* BLC No. of blacklines used. */ { OV8830_8BIT, { 0x404f }, 0x90 }, { OV8830_8BIT, { 0x5002 }, 0x80 }, /* Scale enable */ { OV8830_8BIT, { 0x5041 }, 0x04 }, /* Auto scale */ { OV8830_TOK_TERM, {0}, 0} }; static struct ov8830_reg const ov8835_video_720p_dvs[] = { { OV8830_8BIT, { 0x3708 }, 0xe6 }, /* Binning Related e6 : e3 */ { OV8830_8BIT, { 0x3800 }, 0x00 }, /* 4, 310, 3291, 2169 3288x1860 */ { OV8830_8BIT, { 0x3801 }, 0x04 }, { OV8830_8BIT, { 0x3802 }, 0x01 }, { OV8830_8BIT, { 0x3803 }, 0x36 }, { OV8830_8BIT, { 0x3804 }, 0x0c }, { OV8830_8BIT, { 0x3805 }, 0xdb }, { OV8830_8BIT, { 0x3806 }, 0x08 }, { OV8830_8BIT, { 0x3807 }, 0x79 }, { OV8830_8BIT, { 0x3808 }, 0x06 }, /* O/p 1568*880 Bin+Scale */ { OV8830_8BIT, { 0x3809 }, 0x20 }, { OV8830_8BIT, { 0x380a }, 0x03 }, { OV8830_8BIT, { 0x380b }, 0x70 }, { OV8830_8BIT, { 0x3814 }, 0x31 }, { OV8830_8BIT, { 0x3815 }, 0x31 }, { OV8830_8BIT, { 0x3820 }, 0x11 }, { OV8830_8BIT, { 0x3821 }, 0x0f }, { OV8830_8BIT, { 0x4004 }, 0x02 }, /* BLC No. of blacklines used. */ { OV8830_8BIT, { 0x404f }, 0x90 }, { OV8830_8BIT, { 0x5002 }, 0x80 }, /* Scale enable */ { OV8830_8BIT, { 0x5041 }, 0x04 }, /* Auto scale */ { OV8830_TOK_TERM, {0}, 0} }; static const struct ov8830_reg ov8835_video_1080p_dvs[] = { { OV8830_8BIT, { 0x3708 }, 0xe3 }, /* Binning Related e6 : e3 */ { OV8830_8BIT, { 0x3800 }, 0x00 }, /* 4, 310, 3291, 2169 3288x1860 */ { OV8830_8BIT, { 0x3801 }, 0x04 }, { OV8830_8BIT, { 0x3802 }, 0x01 }, { OV8830_8BIT, { 0x3803 }, 0x36 }, { OV8830_8BIT, { 0x3804 }, 0x0c }, { OV8830_8BIT, { 0x3805 }, 0xdb }, { OV8830_8BIT, { 0x3806 }, 0x08 }, { OV8830_8BIT, { 0x3807 }, 0x79 }, { OV8830_8BIT, { 0x3808 }, 0x09 }, /* 2336x1336 DVS O/p */ { OV8830_8BIT, { 0x3809 }, 0x20 }, { OV8830_8BIT, { 0x380a }, 0x05 }, { OV8830_8BIT, { 0x380b }, 0x38 }, { OV8830_8BIT, { 0x3814 }, 0x11 }, { OV8830_8BIT, { 0x3815 }, 0x11 }, { OV8830_8BIT, { 0x3820 }, 0x10 }, { OV8830_8BIT, { 0x3821 }, 0x0e }, { OV8830_8BIT, { 0x4004 }, 0x08 }, /* BLC No. of blacklines used. */ { OV8830_8BIT, { 0x404f }, 0x90 }, { OV8830_8BIT, { 0x5002 }, 0x80 }, /* Scale enable */ { OV8830_8BIT, { 0x5041 }, 0x04 }, /* Auto scale */ { OV8830_TOK_TERM, {0}, 0} }; static struct ov8830_resolution ov8835_res_preview[] = { { .desc = "ov8835_cif_mode_for_preview", .width = 368, .height = 304, .used = 0, .regs = ov8835_cif_mode, .bin_factor_x = 2, .bin_factor_y = 2, .skip_frames = 1, .fps_options = { { .fps = 30, .pixels_per_line = 5458, .lines_per_frame = 1700, }, { } }, }, { .desc = "ov8835_binning_16x9_mode_for_preview", .width = 1632, .height = 916, .used = 0, .regs = ov8835_binning_16x9_mode, .bin_factor_x = 1, .bin_factor_y = 1, .skip_frames = 1, .fps_options = { { .fps = 30, .pixels_per_line = 4496, .lines_per_frame = 2064, }, { } }, }, { .desc = "ov8835_bnning_4x3_mode", .width = 1632, .height = 1224, .used = 0, .regs = ov8835_binning_4x3_mode, .bin_factor_x = 1, .bin_factor_y = 1, .skip_frames = 1, .fps_options = { { .fps = 30, .pixels_per_line = 4400, .lines_per_frame = 2100, }, { } }, }, { .desc = "ov8835_6M_mode_for_cont_capture", .width = 3280, .height = 1852, .used = 0, .regs = ov8835_6M_mode, .bin_factor_x = 0, .bin_factor_y = 0, .skip_frames = 1, .fps_options = { { .fps = 30, .pixels_per_line = 4496, .lines_per_frame = 2064, }, { .fps = 24, .pixels_per_line = 5496, .lines_per_frame = 2064, }, { .fps = 19, .pixels_per_line = 5800, .lines_per_frame = 2500, } }, }, { .desc = "ov8835_8M_mode_for_cont_capture", .width = 3280, .height = 2464, .used = 0, .regs = ov8835_8M_mode, .bin_factor_x = 0, .bin_factor_y = 0, .skip_frames = 1, .fps_options = { { .fps = 25, .pixels_per_line = 4450, .lines_per_frame = 2500, }, { .fps = 19, .pixels_per_line = 5800, .lines_per_frame = 2500, }, { } }, }, }; static struct ov8830_resolution ov8835_res_still[] = { { .desc = "ov8835_cif_mode_for_still", .width = 368, .height = 304, .used = 0, .regs = ov8835_cif_mode, .bin_factor_x = 2, .bin_factor_y = 2, .skip_frames = 1, .fps_options = { { .fps = 30, .pixels_per_line = 6814, .lines_per_frame = 2724, }, { } }, }, { .desc = "ov8835_binning_16x9_mode_for_still", .width = 1632, .height = 916, .used = 0, .regs = ov8835_binning_16x9_mode, .bin_factor_x = 1, .bin_factor_y = 1, .skip_frames = 1, .fps_options = { { .fps = 15, .pixels_per_line = 6814, .lines_per_frame = 2724, }, { } }, }, { .desc = "ov8835_bnning_4x3_mode_for_still", .width = 1632, .height = 1224, .used = 0, .regs = ov8835_binning_4x3_mode, .bin_factor_x = 1, .bin_factor_y = 1, .skip_frames = 1, .fps_options = { { .fps = 15, .pixels_per_line = 6474, .lines_per_frame = 2867, }, { } }, }, { .desc = "ov8835_6M_mode_for_still", .width = 3280, .height = 1852, .used = 0, .regs = ov8835_6M_mode, .bin_factor_x = 0, .bin_factor_y = 0, .skip_frames = 1, .fps_options = { { .fps = 15, .pixels_per_line = 6814, .lines_per_frame = 2724, }, { } }, }, { .desc = "ov8835_cont_cap_8M_for_still", .width = 3280, .height = 2464, .used = 0, .regs = ov8835_8M_mode, .bin_factor_x = 0, .bin_factor_y = 0, .skip_frames = 1, .fps_options = { { .fps = 15, .pixels_per_line = 6474, .lines_per_frame = 2867, }, { } }, }, }; static struct ov8830_resolution ov8835_res_video[] = { { .desc = "ov8835_video_qcif", .width = 192, .height = 160, .used = 0, .regs = ov8835_video_qcif, .bin_factor_x = 2, .bin_factor_y = 2, .skip_frames = 1, .fps_options = { { .fps = 30, .pixels_per_line = 5458, .lines_per_frame = 1700, }, { } }, }, { .desc = "ov8835_video_cif_dvs", .width = 368, .height = 304, .used = 0, .regs = ov8835_cif_mode, .bin_factor_x = 2, .bin_factor_y = 2, .skip_frames = 1, .fps_options = { { .fps = 30, .pixels_per_line = 5458, .lines_per_frame = 1700, }, { } }, }, { .desc = "ov8835_video_qvga_dvs", .width = 408, .height = 308, .used = 0, .regs = ov8835_video_qvga_dvs, .bin_factor_x = 1, .bin_factor_y = 1, .skip_frames = 1, .fps_options = { { .fps = 30, .pixels_per_line = 5458, .lines_per_frame = 1700, }, { } }, }, { .desc = "ov8835_video_vga_dvs", .width = 820, .height = 616, .used = 0, .regs = ov8835_video_vga_dvs, .bin_factor_x = 1, .bin_factor_y = 1, .skip_frames = 1, .fps_options = { { .fps = 30, .pixels_per_line = 5458, .lines_per_frame = 1700, }, { } }, }, { .desc = "ov8835_video_480p_dvs", .width = 936, .height = 602, .used = 0, .regs = ov8835_video_480p_dvs, .bin_factor_x = 1, .bin_factor_y = 1, .skip_frames = 1, .fps_options = { { .fps = 30, .pixels_per_line = 5458, .lines_per_frame = 1700, }, { } }, }, { .desc = "ov8835_video_800x600_dvs", .width = 976, .height = 736, .used = 0, .regs = ov8835_video_800x600_dvs, .bin_factor_x = 1, .bin_factor_y = 1, .skip_frames = 1, .fps_options = { { .fps = 30, .pixels_per_line = 5458, .lines_per_frame = 1700, }, { } }, }, { .desc = "ov8835_video_720p_dvs", .width = 1568, .height = 880, .used = 0, .regs = ov8835_video_720p_dvs, .bin_factor_x = 1, .bin_factor_y = 1, .skip_frames = 1, .fps_options = { { .fps = 30, .pixels_per_line = 5458, .lines_per_frame = 1700, }, { } }, }, { .desc = "ov8835_video_1080p_dvs", .width = 2336, .height = 1336, .used = 0, .regs = ov8835_video_1080p_dvs, .bin_factor_x = 0, .bin_factor_y = 0, .skip_frames = 2, .fps_options = { { .fps = 30, .pixels_per_line = 4300, .lines_per_frame = 2158, }, { .fps = 24, .pixels_per_line = 5300, .lines_per_frame = 2158, }, { } }, }, }; #endif