ov8830: add full resolution mode 8 Mpix, 3264x2448 pixels
authorTuukka Toivonen <tuukka.toivonen@intel.com>
Fri, 27 Jan 2012 17:40:43 +0000 (19:40 +0200)
committerbuildbot <buildbot@intel.com>
Wed, 1 Feb 2012 14:04:39 +0000 (06:04 -0800)
BZ: 21601

Change-Id: I41262f65bba11f758f1f5146a12baefc13f3c98d
Signed-off-by: Tuukka Toivonen <tuukka.toivonen@intel.com>
Reviewed-on: http://android.intel.com:8080/33228
Reviewed-by: Kruger, Jozef <jozef.kruger@intel.com>
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 12ce344..5dd3878 100644 (file)
@@ -309,6 +309,304 @@ static const struct ov8830_reg ov8830_mode1[] = {
        { OV8830_TOK_TERM, {0}, 0}
 };
 
+/* 30 RES_3264x2448_15fps_2lane OV8830_AM35.ovd */
+static const struct ov8830_reg ov8830_mode2[] = {
+       { 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 }, 0x21 },
+       { OV8830_8BIT, { 0x3012 }, 0x08 },
+       { OV8830_8BIT, { 0x3013 }, 0x10 },
+       { OV8830_8BIT, { 0x3014 }, 0x00 },
+       { OV8830_8BIT, { 0x3015 }, 0xc8 },
+       { 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 }, 0x03 },
+       { OV8830_8BIT, { 0x3091 }, 0x11 },
+       { OV8830_8BIT, { 0x3092 }, 0x00 },
+       { OV8830_8BIT, { 0x3093 }, 0x00 },
+       { OV8830_8BIT, { 0x3098 }, 0x03 },
+       { OV8830_8BIT, { 0x3099 }, 0x1e },
+       { OV8830_8BIT, { 0x309a }, 0x00 },
+       { OV8830_8BIT, { 0x309b }, 0x00 },
+       { OV8830_8BIT, { 0x30a2 }, 0x01 },
+       { OV8830_8BIT, { 0x30b0 }, 0x05 },
+       { OV8830_8BIT, { 0x30b2 }, 0x00 },
+       { OV8830_8BIT, { 0x30b3 }, 0x55 },
+       { OV8830_8BIT, { 0x30b4 }, 0x03 },
+       { OV8830_8BIT, { 0x30b5 }, 0x04 },
+       { OV8830_8BIT, { 0x30b6 }, 0x01 },
+       { 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 }, 0x9a },
+       { OV8830_8BIT, { 0x3502 }, 0x80 },
+       { 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, { 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 }, 0x0c },
+       { OV8830_8BIT, { 0x3802 }, 0x00 },
+       { OV8830_8BIT, { 0x3803 }, 0x0c },
+       { OV8830_8BIT, { 0x3804 }, 0x0c },
+       { OV8830_8BIT, { 0x3805 }, 0xd3 },
+       { OV8830_8BIT, { 0x3806 }, 0x09 },
+       { OV8830_8BIT, { 0x3807 }, 0xa3 },
+       { OV8830_8BIT, { 0x3808 }, 0x0c },
+       { OV8830_8BIT, { 0x3809 }, 0xc0 },
+       { OV8830_8BIT, { 0x380a }, 0x09 },
+       { OV8830_8BIT, { 0x380b }, 0x90 },
+       { OV8830_8BIT, { 0x380c }, 0x0e },
+       { OV8830_8BIT, { 0x380d }, 0x18 },
+       { OV8830_8BIT, { 0x380e }, 0x09 },
+       { OV8830_8BIT, { 0x380f }, 0xb4 },
+       { OV8830_8BIT, { 0x3810 }, 0x00 },
+       { OV8830_8BIT, { 0x3811 }, 0x04 },
+       { OV8830_8BIT, { 0x3812 }, 0x00 },
+       { OV8830_8BIT, { 0x3813 }, 0x04 },
+       { OV8830_8BIT, { 0x3814 }, 0x11 },
+       { OV8830_8BIT, { 0x3815 }, 0x11 },
+       { OV8830_8BIT, { 0x3820 }, 0x10 },
+       { OV8830_8BIT, { 0x3821 }, 0x0e },
+       { 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, { 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 }, 0x00 },
+       { 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 }, 0x01 },
+       { 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 }, 0x0c },
+       { 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}
+};
+
 /* divides a by b using half up rounding and div/0 prevention
  * (result is 0 if b == 0) */
 #define divsave_rounded(a, b)  (((b) != 0) ? (((a)+((b)>>1))/(b)) : (-1))
@@ -347,6 +645,16 @@ struct ov8830_resolution ov8830_res_preview[] = {
                 .lines_per_frame = 0x02F7, /* consistent with regs arrays */
                 .regs =        ov8830_mode1    ,
        },
+       {
+               .desc =        "STILL_8M_15fps"        ,
+               .width =       3264    ,
+               .height =      2448    ,
+               .fps =         15      ,
+               .used =        0       ,
+               .pixels_per_line = 3608, /* consistent with regs arrays */
+               .lines_per_frame = 2484, /* consistent with regs arrays */
+               .regs =        ov8830_mode2  ,
+       },
 };
 
 #define N_RES_PREVIEW (ARRAY_SIZE(ov8830_res_preview))
@@ -362,6 +670,16 @@ struct ov8830_resolution ov8830_res_still[] = {
                 .lines_per_frame = 0x02F7, /* consistent with regs arrays */
                 .regs =        ov8830_mode1    ,
        },
+       {
+               .desc =        "STILL_8M_15fps"        ,
+               .width =       3264    ,
+               .height =      2448    ,
+               .fps =         15      ,
+               .used =        0       ,
+               .pixels_per_line = 3608, /* consistent with regs arrays */
+               .lines_per_frame = 2484, /* consistent with regs arrays */
+               .regs =        ov8830_mode2  ,
+       },
 };
 
 #define N_RES_STILL (ARRAY_SIZE(ov8830_res_still))
@@ -377,6 +695,16 @@ struct ov8830_resolution ov8830_res_video[] = {
                 .lines_per_frame = 0x02F7, /* consistent with regs arrays */
                 .regs =        ov8830_mode1    ,
        },
+       {
+               .desc =        "STILL_8M_15fps"        ,
+               .width =       3264    ,
+               .height =      2448    ,
+               .fps =         15      ,
+               .used =        0       ,
+               .pixels_per_line = 3608, /* consistent with regs arrays */
+               .lines_per_frame = 2484, /* consistent with regs arrays */
+               .regs =        ov8830_mode2  ,
+       },
 };
 
 #define N_RES_VIDEO (ARRAY_SIZE(ov8830_res_video))