ov8830: add sensor mode 1600x1200 with binning
authorTuukka Toivonen <tuukka.toivonen@intel.com>
Thu, 23 Feb 2012 09:13:21 +0000 (11:13 +0200)
committerbuildbot <buildbot@intel.com>
Mon, 12 Mar 2012 10:17:11 +0000 (03:17 -0700)
BZ: 25738

Add mode 1600x1200. The mode assumes 24 MHz clock which is wrong.
Correct this in later patches.

Change-Id: I930c41b111da9b6bc1343e4ecdfed0d16c3086d8
Signed-off-by: Tuukka Toivonen <tuukka.toivonen@intel.com>
Reviewed-on: http://android.intel.com:8080/37224
Reviewed-by: Koski, Anttu <anttu.koski@intel.com>
Tested-by: Koski, Anttu <anttu.koski@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
drivers/media/video/ov8830.c

index 5982530..21c613b 100644 (file)
@@ -309,6 +309,304 @@ static const struct ov8830_reg ov8830_mode1[] = {
        { OV8830_TOK_TERM, {0}, 0}
 };
 
+/* 40 RES_1600x1200_BIN_48fps_4lane OV8830_AM35.ovd */
+static const struct ov8830_reg ov8830_mode_1600[] = {
+       { OV8830_8BIT, { 0x0100 }, 0x00 },
+       { OV8830_8BIT, { 0x0103 }, 0x01 },
+       { OV8830_8BIT, { 0x0100 }, 0x00 },
+       { OV8830_8BIT, { 0x0100 }, 0x00 },
+       { OV8830_8BIT, { 0x0100 }, 0x00 },
+       { OV8830_8BIT, { 0x0100 }, 0x00 },
+       { OV8830_8BIT, { 0x0102 }, 0x01 },
+       { OV8830_8BIT, { 0x3000 }, 0x00 },
+       { OV8830_8BIT, { 0x3001 }, 0x2A },
+       { OV8830_8BIT, { 0x3002 }, 0x88 },
+       { OV8830_8BIT, { 0x3003 }, 0x00 },
+       { OV8830_8BIT, { 0x3004 }, 0x00 },
+       { OV8830_8BIT, { 0x3005 }, 0x00 },
+       { OV8830_8BIT, { 0x3006 }, 0x00 },
+       { OV8830_8BIT, { 0x3007 }, 0x00 },
+       { OV8830_8BIT, { 0x3008 }, 0x00 },
+       { OV8830_8BIT, { 0x3009 }, 0x00 },
+       { OV8830_8BIT, { 0x3011 }, 0x41 },
+       { OV8830_8BIT, { 0x3012 }, 0x08 },
+       { OV8830_8BIT, { 0x3013 }, 0x10 },
+       { OV8830_8BIT, { 0x3014 }, 0x00 },
+       { OV8830_8BIT, { 0x3015 }, 0x08 },
+       { OV8830_8BIT, { 0x3016 }, 0xF0 },
+       { OV8830_8BIT, { 0x3017 }, 0xF0 },
+       { OV8830_8BIT, { 0x3018 }, 0xF0 },
+       { OV8830_8BIT, { 0x301B }, 0xB4 },
+       { OV8830_8BIT, { 0x301D }, 0x02 },
+       { OV8830_8BIT, { 0x3021 }, 0x00 },
+       { OV8830_8BIT, { 0x3022 }, 0x00 },
+       { OV8830_8BIT, { 0x3024 }, 0x00 },
+       { OV8830_8BIT, { 0x3026 }, 0x00 },
+       { OV8830_8BIT, { 0x3027 }, 0x00 },
+       { OV8830_8BIT, { 0x3081 }, 0x02 },
+       { OV8830_8BIT, { 0x3083 }, 0x01 },
+       { OV8830_8BIT, { 0x3090 }, 0x02 },      /* PLL2_prediv */
+       { OV8830_8BIT, { 0x3091 }, 0x12 },      /* PLL2_multiplier */
+       { OV8830_8BIT, { 0x3092 }, 0x00 },      /* PLL2_divs */
+       { OV8830_8BIT, { 0x3093 }, 0x00 },      /* PLL2_seld5 */
+       { OV8830_8BIT, { 0x3098 }, 0x03 },      /* PLL3_prediv */
+       { OV8830_8BIT, { 0x3099 }, 0x1E },      /* PLL3_mult2 */
+       { OV8830_8BIT, { 0x309A }, 0x00 },      /* PLL3_divs */
+       { OV8830_8BIT, { 0x309B }, 0x00 },      /* PLL3_div */
+       { OV8830_8BIT, { 0x30A2 }, 0x01 },
+       { OV8830_8BIT, { 0x30B0 }, 0x05 },
+       { OV8830_8BIT, { 0x30B2 }, 0x00 },
+       { OV8830_8BIT, { 0x30B3 }, 0x4B },      /* PLL1_multiplier */
+       { OV8830_8BIT, { 0x30B4 }, 0x03 },      /* PLL1_prediv */
+       { OV8830_8BIT, { 0x30B5 }, 0x04 },      /* PLL1_op_pix_div */
+       { OV8830_8BIT, { 0x30B6 }, 0x01 },      /* PLL1_op_sys_div */
+       { OV8830_8BIT, { 0x3104 }, 0xA1 },
+       { OV8830_8BIT, { 0x3106 }, 0x01 },
+       { OV8830_8BIT, { 0x3300 }, 0x00 },
+       { 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, { 0x3500 }, 0x00 },
+       { OV8830_8BIT, { 0x3501 }, 0x4C },
+       { OV8830_8BIT, { 0x3502 }, 0x80 },
+       { OV8830_8BIT, { 0x3503 }, 0x07 },
+       { OV8830_8BIT, { 0x3504 }, 0x00 },
+       { OV8830_8BIT, { 0x3505 }, 0x30 },
+       { OV8830_8BIT, { 0x3506 }, 0x00 },
+       { OV8830_8BIT, { 0x3507 }, 0x08 },
+       { OV8830_8BIT, { 0x3508 }, 0x80 },
+       { OV8830_8BIT, { 0x3509 }, 0x10 },
+       { OV8830_8BIT, { 0x350A }, 0x00 },
+       { OV8830_8BIT, { 0x350B }, 0x38 },
+       { OV8830_8BIT, { 0x350C }, 0x00 },
+       { OV8830_8BIT, { 0x350D }, 0x00 },
+       { OV8830_8BIT, { 0x3600 }, 0x78 },
+       { OV8830_8BIT, { 0x3601 }, 0x02 },
+       { OV8830_8BIT, { 0x3602 }, 0x1C },
+       { OV8830_8BIT, { 0x3604 }, 0x38 },
+       { OV8830_8BIT, { 0x3620 }, 0x64 },
+       { OV8830_8BIT, { 0x3621 }, 0xB5 },
+       { OV8830_8BIT, { 0x3622 }, 0x03 },
+       { OV8830_8BIT, { 0x3625 }, 0x64 },
+       { OV8830_8BIT, { 0x3630 }, 0x55 },
+       { OV8830_8BIT, { 0x3631 }, 0xD2 },
+       { OV8830_8BIT, { 0x3632 }, 0x00 },
+       { OV8830_8BIT, { 0x3633 }, 0x34 },
+       { OV8830_8BIT, { 0x3634 }, 0x03 },
+       { 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 }, 0xE0 },
+       { OV8830_8BIT, { 0x3681 }, 0x00 },
+       { OV8830_8BIT, { 0x3701 }, 0x14 },
+       { OV8830_8BIT, { 0x3702 }, 0xBF },
+       { OV8830_8BIT, { 0x3703 }, 0x8C },
+       { OV8830_8BIT, { 0x3704 }, 0x78 },
+       { OV8830_8BIT, { 0x3705 }, 0x02 },
+       { OV8830_8BIT, { 0x3708 }, 0xE4 },
+       { OV8830_8BIT, { 0x3709 }, 0x03 },
+       { 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 }, 0x08 },
+       { OV8830_8BIT, { 0x373A }, 0x51 },
+       { 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 }, 0x0C },
+       { OV8830_8BIT, { 0x3784 }, 0x2C },
+       { OV8830_8BIT, { 0x3785 }, 0x1E },
+       { OV8830_8BIT, { 0x378F }, 0xF5 },
+       { OV8830_8BIT, { 0x3791 }, 0xB0 },
+       { OV8830_8BIT, { 0x3795 }, 0x00 },
+       { OV8830_8BIT, { 0x3796 }, 0x64 },
+       { 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, { 0x37C0 }, 0x00 },
+       { OV8830_8BIT, { 0x37C1 }, 0x00 },
+       { OV8830_8BIT, { 0x37C2 }, 0x00 },
+       { OV8830_8BIT, { 0x37C3 }, 0x00 },
+       { OV8830_8BIT, { 0x37C4 }, 0x00 },
+       { OV8830_8BIT, { 0x37C5 }, 0x00 },
+       { OV8830_8BIT, { 0x37C6 }, 0xA0 },
+       { OV8830_8BIT, { 0x37C7 }, 0x00 },
+       { OV8830_8BIT, { 0x37C8 }, 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, { 0x3800 }, 0x00 },
+       { OV8830_8BIT, { 0x3801 }, 0x28 },
+       { OV8830_8BIT, { 0x3802 }, 0x00 },
+       { OV8830_8BIT, { 0x3803 }, 0x20 },
+       { OV8830_8BIT, { 0x3804 }, 0x0C },
+       { OV8830_8BIT, { 0x3805 }, 0xB7 },
+       { OV8830_8BIT, { 0x3806 }, 0x09 },
+       { OV8830_8BIT, { 0x3807 }, 0x8F },
+       { OV8830_8BIT, { 0x3808 }, 0x06 },
+       { OV8830_8BIT, { 0x3809 }, 0x40 },
+       { OV8830_8BIT, { 0x380A }, 0x04 },
+       { OV8830_8BIT, { 0x380B }, 0xB0 },
+       { OV8830_8BIT, { 0x380C }, 0x0E },
+       { OV8830_8BIT, { 0x380D }, 0x18 },
+       { OV8830_8BIT, { 0x380E }, 0x04 },
+       { OV8830_8BIT, { 0x380F }, 0xCC },
+       { OV8830_8BIT, { 0x3810 }, 0x00 },
+       { OV8830_8BIT, { 0x3811 }, 0x04 },
+       { OV8830_8BIT, { 0x3812 }, 0x00 },
+       { OV8830_8BIT, { 0x3813 }, 0x04 },
+       { OV8830_8BIT, { 0x3814 }, 0x31 },
+       { OV8830_8BIT, { 0x3815 }, 0x31 },
+       { OV8830_8BIT, { 0x3820 }, 0x11 },
+       { OV8830_8BIT, { 0x3821 }, 0x0F },
+       { 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 }, 0x04 },
+       { OV8830_8BIT, { 0x3A05 }, 0xC9 },
+       { OV8830_8BIT, { 0x3A06 }, 0x00 },
+       { OV8830_8BIT, { 0x3A07 }, 0xF8 },
+       { OV8830_8BIT, { 0x3A18 }, 0x00 },
+       { OV8830_8BIT, { 0x3A19 }, 0x00 },
+       { OV8830_8BIT, { 0x3B00 }, 0x00 },
+       { OV8830_8BIT, { 0x3B01 }, 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, { 0x3E07 }, 0x20 },
+       { OV8830_8BIT, { 0x4000 }, 0x18 },
+       { OV8830_8BIT, { 0x4001 }, 0x04 },
+       { OV8830_8BIT, { 0x4002 }, 0x45 },
+       { OV8830_8BIT, { 0x4004 }, 0x02 },
+       { OV8830_8BIT, { 0x4005 }, 0x18 },
+       { OV8830_8BIT, { 0x4006 }, 0x16 },
+       { OV8830_8BIT, { 0x4008 }, 0x20 },
+       { OV8830_8BIT, { 0x4009 }, 0x10 },
+       { OV8830_8BIT, { 0x400C }, 0x00 },
+       { OV8830_8BIT, { 0x400D }, 0x00 },
+       { OV8830_8BIT, { 0x4058 }, 0x01 },
+       { OV8830_8BIT, { 0x4101 }, 0x12 },
+       { OV8830_8BIT, { 0x4104 }, 0x5B },
+       { OV8830_8BIT, { 0x4303 }, 0x00 },
+       { OV8830_8BIT, { 0x4304 }, 0x08 },
+       { OV8830_8BIT, { 0x4307 }, 0x30 },
+       { OV8830_8BIT, { 0x4315 }, 0x00 },
+       { OV8830_8BIT, { 0x4511 }, 0x05 },
+       { OV8830_8BIT, { 0x4512 }, 0x00 },
+       { OV8830_8BIT, { 0x4750 }, 0x00 },
+       { OV8830_8BIT, { 0x4751 }, 0x00 },
+       { OV8830_8BIT, { 0x4752 }, 0x00 },
+       { OV8830_8BIT, { 0x4753 }, 0x00 },
+       { OV8830_8BIT, { 0x4805 }, 0x01 },
+       { OV8830_8BIT, { 0x4806 }, 0x00 },
+       { OV8830_8BIT, { 0x481F }, 0x36 },
+       { OV8830_8BIT, { 0x4831 }, 0x6C },
+       { OV8830_8BIT, { 0x4837 }, 0x0D },
+       { OV8830_8BIT, { 0x4A00 }, 0xAA },
+       { OV8830_8BIT, { 0x4A03 }, 0x01 },
+       { OV8830_8BIT, { 0x4A05 }, 0x08 },
+       { OV8830_8BIT, { 0x4A0A }, 0x88 },
+       { 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}
+};
+
 /* 30 RES_3264x2448_15fps_2lane OV8830_AM35.ovd */
 static const struct ov8830_reg ov8830_mode2[] = {
        { OV8830_8BIT, { 0x0100 }, 0x00 },
@@ -647,6 +945,16 @@ struct ov8830_resolution ov8830_res_preview[] = {
                 .regs =        ov8830_mode1    ,
        },
        {
+                .desc =        "MODE1600x1200" ,
+                .width =       1600    ,
+                .height =      1200    ,
+                .fps =         48      ,
+                .used =        0       ,
+                .pixels_per_line = 3608, /* consistent with regs arrays */
+                .lines_per_frame = 1228, /* consistent with regs arrays */
+                .regs =        ov8830_mode_1600        ,
+       },
+       {
                .desc =        "STILL_8M_15fps"        ,
                .width =       3264    ,
                .height =      2448    ,
@@ -672,6 +980,16 @@ struct ov8830_resolution ov8830_res_still[] = {
                 .regs =        ov8830_mode1    ,
        },
        {
+                .desc =        "MODE1600x1200" ,
+                .width =       1600    ,
+                .height =      1200    ,
+                .fps =         48      ,
+                .used =        0       ,
+                .pixels_per_line = 3608, /* consistent with regs arrays */
+                .lines_per_frame = 1228, /* consistent with regs arrays */
+                .regs =        ov8830_mode_1600        ,
+       },
+       {
                .desc =        "STILL_8M_15fps"        ,
                .width =       3264    ,
                .height =      2448    ,
@@ -697,6 +1015,16 @@ struct ov8830_resolution ov8830_res_video[] = {
                 .regs =        ov8830_mode1    ,
        },
        {
+                .desc =        "MODE1600x1200" ,
+                .width =       1600    ,
+                .height =      1200    ,
+                .fps =         48      ,
+                .used =        0       ,
+                .pixels_per_line = 3608, /* consistent with regs arrays */
+                .lines_per_frame = 1228, /* consistent with regs arrays */
+                .regs =        ov8830_mode_1600        ,
+       },
+       {
                .desc =        "STILL_8M_15fps"        ,
                .width =       3264    ,
                .height =      2448    ,