123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900 |
- // SPDX-License-Identifier: GPL-2.0
- /*
- * Copyright (C) 2021 StarFive Technology Co., Ltd.
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <assert.h>
- #include <getopt.h>
- #ifndef VERSION
- #define VERSION "v0.0.1"
- #endif
- #define OV4689_SETFILE "ov4689_stf_isp_fw.bin"
- #define OV4689_DUMP_SETFILE "ov4689_stf_isp_fw_dump.bin"
- #define SC2235_SETFILE "sc2235_stf_isp_fw.bin"
- #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
- typedef unsigned int u32;
- typedef struct {
- u32 addr;
- u32 val;
- u32 mask;
- u32 delay_ms;
- } regval_t;
- struct reg_table {
- const regval_t *regval;
- int regval_num;
- };
- // 0x11BB, 0 1 0 1 2 3 2 3, R Gr R Gr Gb B Gb B
- static const regval_t isp_sc2235_reg_config_list[] = {
- {0x00000014, 0x00000008, 0, 0},
- // {0x00000018, 0x000011BB, 0, 0},
- {0x00000A1C, 0x00000030, 0, 0},
- // {0x0000001C, 0x00000000, 0, 0},
- // {0x00000020, 0x0437077F, 0, 0},
- // {0x00000A0C, 0x04380780, 0, 0},
- // {0x00000A80, 0xF9000000, 0, 0},
- // {0x00000A84, 0xF91FA400, 0, 0},
- // {0x00000A88, 0x00000780, 0, 0},
- {0x00000A8C, 0x00000010, 0, 0},
- {0x00000A90, 0x00000000, 0, 0},
- {0x00000AC4, 0x00000000, 0, 0},
- {0x00000E40, 0x0000004D, 0, 0},
- {0x00000E44, 0x00000096, 0, 0},
- {0x00000E48, 0x0000001D, 0, 0},
- {0x00000E4C, 0x000001DA, 0, 0},
- {0x00000E50, 0x000001B6, 0, 0},
- {0x00000E54, 0x00000070, 0, 0},
- {0x00000E58, 0x0000009D, 0, 0},
- {0x00000E5C, 0x0000017C, 0, 0},
- {0x00000E60, 0x000001E6, 0, 0},
- {0x00000010, 0x00000000, 0, 0},
- {0x00000A08, 0x10000022, 0xFFFFFFF, 0},
- {0x00000044, 0x00000000, 0, 0},
- {0x00000008, 0x00010005, 0, 0},
- {0x00000A00, 0x00120002, 0, 0},
- {0x00000A00, 0x00120000, 0, 0},
- {0x00000A00, 0x00120001, 0, 0},
- {0x00000008, 0x00010004, 0, 0},
- {0x00000000, 0x00000001, 0, 0},
- };
- // 0x11BB, 0 1 0 1 2 3 2 3, R Gr R Gr Gb B Gb B
- #if 0
- static const regval_t isp_1080p_reg_config_list[] = {
- {0x00000014, 0x0000000D, 0, 0},
- // {0x00000018, 0x000011BB, 0, 0},
- {0x00000A1C, 0x00000032, 0, 0},
- // {0x0000001C, 0x00000000, 0, 0},
- // {0x00000020, 0x0437077F, 0, 0},
- // {0x00000A0C, 0x04380780, 0, 0},
- // {0x00000A80, 0xF9000000, 0, 0},
- // {0x00000A84, 0xF91FA400, 0, 0},
- // {0x00000A88, 0x00000780, 0, 0},
- {0x00000A8C, 0x00000000, 0, 0},
- {0x00000A90, 0x00000000, 0, 0},
- {0x00000E40, 0x0000004C, 0, 0},
- {0x00000E44, 0x00000097, 0, 0},
- {0x00000E48, 0x0000001D, 0, 0},
- {0x00000E4C, 0x000001D5, 0, 0},
- {0x00000E50, 0x000001AC, 0, 0},
- {0x00000E54, 0x00000080, 0, 0},
- {0x00000E58, 0x00000080, 0, 0},
- {0x00000E5C, 0x00000194, 0, 0},
- {0x00000E60, 0x000001EC, 0, 0},
- {0x00000280, 0x00000000, 0, 0},
- {0x00000284, 0x00000000, 0, 0},
- {0x00000288, 0x00000000, 0, 0},
- {0x0000028C, 0x00000000, 0, 0},
- {0x00000290, 0x00000000, 0, 0},
- {0x00000294, 0x00000000, 0, 0},
- {0x00000298, 0x00000000, 0, 0},
- {0x0000029C, 0x00000000, 0, 0},
- {0x000002A0, 0x00000000, 0, 0},
- {0x000002A4, 0x00000000, 0, 0},
- {0x000002A8, 0x00000000, 0, 0},
- {0x000002AC, 0x00000000, 0, 0},
- {0x000002B0, 0x00000000, 0, 0},
- {0x000002B4, 0x00000000, 0, 0},
- {0x000002B8, 0x00000000, 0, 0},
- {0x000002BC, 0x00000000, 0, 0},
- {0x000002C0, 0x00F000F0, 0, 0},
- {0x000002C4, 0x00F000F0, 0, 0},
- {0x000002C8, 0x00800080, 0, 0},
- {0x000002CC, 0x00800080, 0, 0},
- {0x000002D0, 0x00800080, 0, 0},
- {0x000002D4, 0x00800080, 0, 0},
- {0x000002D8, 0x00B000B0, 0, 0},
- {0x000002DC, 0x00B000B0, 0, 0},
- {0x00000E00, 0x24000000, 0, 0},
- {0x00000E04, 0x159500A5, 0, 0},
- {0x00000E08, 0x0F9900EE, 0, 0},
- {0x00000E0C, 0x0CE40127, 0, 0},
- {0x00000E10, 0x0B410157, 0, 0},
- {0x00000E14, 0x0A210181, 0, 0},
- {0x00000E18, 0x094B01A8, 0, 0},
- {0x00000E1C, 0x08A401CC, 0, 0},
- {0x00000E20, 0x081D01EE, 0, 0},
- {0x00000E24, 0x06B20263, 0, 0},
- {0x00000E28, 0x05D802C7, 0, 0},
- {0x00000E2C, 0x05420320, 0, 0},
- {0x00000E30, 0x04D30370, 0, 0},
- {0x00000E34, 0x047C03BB, 0, 0},
- {0x00000E38, 0x043703FF, 0, 0},
- {0x00000010, 0x00000080, 0, 0},
- {0x00000A08, 0x10000032, 0xFFFFFFF, 0},
- {0x00000A00, 0x00120002, 0, 0},
- {0x00000A00, 0x00120000, 0, 0},
- {0x00000A50, 0x00000002, 0, 0},
- {0x00000A00, 0x00120001, 0, 0},
- {0x00000008, 0x00010000, 0, 0},
- {0x00000008, 0x0002000A, 0, 0},
- {0x00000000, 0x00000001, 0, 0},
- };
- #else
- /* isp v3
- static const regval_t isp_1080p_reg_config_list[] = {
- {0x00000014, 0x0000000D, 0, 0},
- // {0x00000018, 0x000011BB, 0, 0},
- {0x00000A1C, 0x00000032, 0, 0},
- // {0x0000001C, 0x00000000, 0, 0},
- // {0x00000020, 0x0437077F, 0, 0},
- // {0x00000A0C, 0x04380780, 0, 0},
- // {0x00000A80, 0xF9000000, 0, 0},
- // {0x00000A84, 0xF91FA400, 0, 0},
- // {0x00000A88, 0x00000780, 0, 0},
- {0x00000A8C, 0x00000000, 0, 0},
- {0x00000A90, 0x00000000, 0, 0},
- {0x00000E40, 0x0000004C, 0, 0},
- {0x00000E44, 0x00000097, 0, 0},
- {0x00000E48, 0x0000001D, 0, 0},
- {0x00000E4C, 0x000001D5, 0, 0},
- {0x00000E50, 0x000001AC, 0, 0},
- {0x00000E54, 0x00000080, 0, 0},
- {0x00000E58, 0x00000080, 0, 0},
- {0x00000E5C, 0x00000194, 0, 0},
- {0x00000E60, 0x000001EC, 0, 0},
- {0x00000280, 0x00000000, 0, 0},
- {0x00000284, 0x00000000, 0, 0},
- {0x00000288, 0x00000000, 0, 0},
- {0x0000028C, 0x00000000, 0, 0},
- {0x00000290, 0x00000000, 0, 0},
- {0x00000294, 0x00000000, 0, 0},
- {0x00000298, 0x00000000, 0, 0},
- {0x0000029C, 0x00000000, 0, 0},
- {0x000002A0, 0x00000000, 0, 0},
- {0x000002A4, 0x00000000, 0, 0},
- {0x000002A8, 0x00000000, 0, 0},
- {0x000002AC, 0x00000000, 0, 0},
- {0x000002B0, 0x00000000, 0, 0},
- {0x000002B4, 0x00000000, 0, 0},
- {0x000002B8, 0x00000000, 0, 0},
- {0x000002BC, 0x00000000, 0, 0},
- {0x000002C0, 0x009D009D, 0, 0},
- {0x000002C4, 0x009D009D, 0, 0},
- {0x000002C8, 0x00800080, 0, 0},
- {0x000002CC, 0x00800080, 0, 0},
- {0x000002D0, 0x00800080, 0, 0},
- {0x000002D4, 0x00800080, 0, 0},
- {0x000002D8, 0x00AF00AF, 0, 0},
- {0x000002DC, 0x00AF00AF, 0, 0},
- {0x00000E00, 0x24000000, 0, 0},
- {0x00000E04, 0x159500A5, 0, 0},
- {0x00000E08, 0x0F9900EE, 0, 0},
- {0x00000E0C, 0x0CE40127, 0, 0},
- {0x00000E10, 0x0B410157, 0, 0},
- {0x00000E14, 0x0A210181, 0, 0},
- {0x00000E18, 0x094B01A8, 0, 0},
- {0x00000E1C, 0x08A401CC, 0, 0},
- {0x00000E20, 0x081D01EE, 0, 0},
- {0x00000E24, 0x06B20263, 0, 0},
- {0x00000E28, 0x05D802C7, 0, 0},
- {0x00000E2C, 0x05420320, 0, 0},
- {0x00000E30, 0x04D30370, 0, 0},
- {0x00000E34, 0x047C03BB, 0, 0},
- {0x00000E38, 0x043703FF, 0, 0},
- {0x00000010, 0x00000080, 0, 0},
- {0x00000A08, 0x10000032, 0xFFFFFFF, 0},
- {0x00000A00, 0x00120002, 0, 0},
- {0x00000A00, 0x00120000, 0, 0},
- {0x00000A50, 0x00000002, 0, 0},
- {0x00000A00, 0x00120001, 0, 0},
- {0x00000008, 0x00010000, 0, 0},
- {0x00000008, 0x0002000A, 0, 0},
- {0x00000000, 0x00000001, 0, 0},
- };
- */
- // 20210802 v02
- /*
- static const regval_t isp_1080p_reg_config_list[] = {
- {0x00000014, 0x0000000D, 0, 0},
- // {0x00000018, 0x000011BB, 0, 0},
- {0x00000A1C, 0x00000032, 0, 0},
- // {0x0000001C, 0x00000000, 0, 0},
- // {0x00000020, 0x0437077F, 0, 0},
- // {0x00000A0C, 0x04380780, 0, 0},
- // {0x00000A80, 0xF9000000, 0, 0},
- // {0x00000A84, 0xF91FA400, 0, 0},
- // {0x00000A88, 0x00000780, 0, 0},
- {0x00000A8C, 0x00000000, 0, 0},
- {0x00000A90, 0x00000000, 0, 0},
- {0x00000E40, 0x0000004C, 0, 0},
- {0x00000E44, 0x00000097, 0, 0},
- {0x00000E48, 0x0000001D, 0, 0},
- {0x00000E4C, 0x000001D5, 0, 0},
- {0x00000E50, 0x000001AC, 0, 0},
- {0x00000E54, 0x00000080, 0, 0},
- {0x00000E58, 0x00000080, 0, 0},
- {0x00000E5C, 0x00000194, 0, 0},
- {0x00000E60, 0x000001EC, 0, 0},
- {0x00000280, 0x00000000, 0, 0},
- {0x00000284, 0x00000000, 0, 0},
- {0x00000288, 0x00000000, 0, 0},
- {0x0000028C, 0x00000000, 0, 0},
- {0x00000290, 0x00000000, 0, 0},
- {0x00000294, 0x00000000, 0, 0},
- {0x00000298, 0x00000000, 0, 0},
- {0x0000029C, 0x00000000, 0, 0},
- {0x000002A0, 0x00000000, 0, 0},
- {0x000002A4, 0x00000000, 0, 0},
- {0x000002A8, 0x00000000, 0, 0},
- {0x000002AC, 0x00000000, 0, 0},
- {0x000002B0, 0x00000000, 0, 0},
- {0x000002B4, 0x00000000, 0, 0},
- {0x000002B8, 0x00000000, 0, 0},
- {0x000002BC, 0x00000000, 0, 0},
- {0x000002C0, 0x009D009D, 0, 0},
- {0x000002C4, 0x009D009D, 0, 0},
- {0x000002C8, 0x00800080, 0, 0},
- {0x000002CC, 0x00800080, 0, 0},
- {0x000002D0, 0x00800080, 0, 0},
- {0x000002D4, 0x00800080, 0, 0},
- {0x000002D8, 0x00AF00AF, 0, 0},
- {0x000002DC, 0x00AF00AF, 0, 0},
- {0x00000E00, 0x24000000, 0, 0},
- {0x00000E04, 0x159500A5, 0, 0},
- {0x00000E08, 0x0F9900EE, 0, 0},
- {0x00000E0C, 0x0CE40127, 0, 0},
- {0x00000E10, 0x0B410157, 0, 0},
- {0x00000E14, 0x0A210181, 0, 0},
- {0x00000E18, 0x094B01A8, 0, 0},
- {0x00000E1C, 0x08A401CC, 0, 0},
- {0x00000E20, 0x081D01EE, 0, 0},
- {0x00000E24, 0x06B20263, 0, 0},
- {0x00000E28, 0x05D802C7, 0, 0},
- {0x00000E2C, 0x05420320, 0, 0},
- {0x00000E30, 0x04D30370, 0, 0},
- {0x00000E34, 0x047C03BB, 0, 0},
- {0x00000E38, 0x043703FF, 0, 0},
- {0x00000010, 0x00000080, 0, 0},
- {0x00000A08, 0x10000022, 0xFFFFFFF, 0},
- {0x00000A00, 0x00120002, 0, 0},
- {0x00000A00, 0x00120000, 0, 0},
- {0x00000A50, 0x00000002, 0, 0},
- {0x00000A00, 0x00120001, 0, 0},
- {0x00000008, 0x00010000, 0, 0},
- {0x00000008, 0x0002000A, 0, 0},
- {0x00000000, 0x00000001, 0, 0},
- };
- */
- // gammaoff_v01
- /*
- static const regval_t isp_1080p_reg_config_list[] = {
- {0x00000014, 0x0000000D, 0, 0},
- // {0x00000018, 0x000011BB, 0, 0},
- {0x00000A1C, 0x00000032, 0, 0},
- // {0x0000001C, 0x00000000, 0, 0},
- // {0x00000020, 0x0437077F, 0, 0},
- // {0x00000A0C, 0x04380780, 0, 0},
- // {0x00000A80, 0xF9000000, 0, 0},
- // {0x00000A84, 0xF91FA400, 0, 0},
- // {0x00000A88, 0x00000780, 0, 0},
- {0x00000A8C, 0x00000000, 0, 0},
- {0x00000A90, 0x00000000, 0, 0},
- {0x00000E40, 0x0000004C, 0, 0},
- {0x00000E44, 0x00000097, 0, 0},
- {0x00000E48, 0x0000001D, 0, 0},
- {0x00000E4C, 0x000001D5, 0, 0},
- {0x00000E50, 0x000001AC, 0, 0},
- {0x00000E54, 0x00000080, 0, 0},
- {0x00000E58, 0x00000080, 0, 0},
- {0x00000E5C, 0x00000194, 0, 0},
- {0x00000E60, 0x000001EC, 0, 0},
- {0x00000280, 0x00000000, 0, 0},
- {0x00000284, 0x00000000, 0, 0},
- {0x00000288, 0x00000000, 0, 0},
- {0x0000028C, 0x00000000, 0, 0},
- {0x00000290, 0x00000000, 0, 0},
- {0x00000294, 0x00000000, 0, 0},
- {0x00000298, 0x00000000, 0, 0},
- {0x0000029C, 0x00000000, 0, 0},
- {0x000002A0, 0x00000000, 0, 0},
- {0x000002A4, 0x00000000, 0, 0},
- {0x000002A8, 0x00000000, 0, 0},
- {0x000002AC, 0x00000000, 0, 0},
- {0x000002B0, 0x00000000, 0, 0},
- {0x000002B4, 0x00000000, 0, 0},
- {0x000002B8, 0x00000000, 0, 0},
- {0x000002BC, 0x00000000, 0, 0},
- {0x000002C0, 0x00A500A5, 0, 0},
- {0x000002C4, 0x00A500A5, 0, 0},
- {0x000002C8, 0x00800080, 0, 0},
- {0x000002CC, 0x00800080, 0, 0},
- {0x000002D0, 0x00800080, 0, 0},
- {0x000002D4, 0x00800080, 0, 0},
- {0x000002D8, 0x00A800A8, 0, 0},
- {0x000002DC, 0x00A800A8, 0, 0},
- {0x00000E00, 0x24000000, 0, 0},
- {0x00000E04, 0x159500A5, 0, 0},
- {0x00000E08, 0x0F9900EE, 0, 0},
- {0x00000E0C, 0x0CE40127, 0, 0},
- {0x00000E10, 0x0B410157, 0, 0},
- {0x00000E14, 0x0A210181, 0, 0},
- {0x00000E18, 0x094B01A8, 0, 0},
- {0x00000E1C, 0x08A401CC, 0, 0},
- {0x00000E20, 0x081D01EE, 0, 0},
- {0x00000E24, 0x06B20263, 0, 0},
- {0x00000E28, 0x05D802C7, 0, 0},
- {0x00000E2C, 0x05420320, 0, 0},
- {0x00000E30, 0x04D30370, 0, 0},
- {0x00000E34, 0x047C03BB, 0, 0},
- {0x00000E38, 0x043703FF, 0, 0},
- {0x00000010, 0x00000080, 0, 0},
- {0x00000A08, 0x10000022, 0xFFFFFFF, 0},
- {0x00000A00, 0x00120002, 0, 0},
- {0x00000A00, 0x00120000, 0, 0},
- {0x00000A50, 0x00000002, 0, 0},
- {0x00000A00, 0x00120001, 0, 0},
- {0x00000008, 0x00010000, 0, 0},
- {0x00000008, 0x0002000A, 0, 0},
- {0x00000000, 0x00000001, 0, 0},
- };
- */
- //gamaon_v01
- /*
- static const regval_t isp_1080p_reg_config_list[] = {
- {0x00000014, 0x0000000D, 0, 0},
- // {0x00000018, 0x000011BB, 0, 0},
- {0x00000A1C, 0x00000032, 0, 0},
- // {0x0000001C, 0x00000000, 0, 0},
- // {0x00000020, 0x0437077F, 0, 0},
- // {0x00000A0C, 0x04380780, 0, 0},
- // {0x00000A80, 0xF9000000, 0, 0},
- // {0x00000A84, 0xF91FA400, 0, 0},
- // {0x00000A88, 0x00000780, 0, 0},
- {0x00000A8C, 0x00000000, 0, 0},
- {0x00000A90, 0x00000000, 0, 0},
- {0x00000E40, 0x0000004C, 0, 0},
- {0x00000E44, 0x00000097, 0, 0},
- {0x00000E48, 0x0000001D, 0, 0},
- {0x00000E4C, 0x000001D5, 0, 0},
- {0x00000E50, 0x000001AC, 0, 0},
- {0x00000E54, 0x00000080, 0, 0},
- {0x00000E58, 0x00000080, 0, 0},
- {0x00000E5C, 0x00000194, 0, 0},
- {0x00000E60, 0x000001EC, 0, 0},
- {0x00000280, 0x00000000, 0, 0},
- {0x00000284, 0x00000000, 0, 0},
- {0x00000288, 0x00000000, 0, 0},
- {0x0000028C, 0x00000000, 0, 0},
- {0x00000290, 0x00000000, 0, 0},
- {0x00000294, 0x00000000, 0, 0},
- {0x00000298, 0x00000000, 0, 0},
- {0x0000029C, 0x00000000, 0, 0},
- {0x000002A0, 0x00000000, 0, 0},
- {0x000002A4, 0x00000000, 0, 0},
- {0x000002A8, 0x00000000, 0, 0},
- {0x000002AC, 0x00000000, 0, 0},
- {0x000002B0, 0x00000000, 0, 0},
- {0x000002B4, 0x00000000, 0, 0},
- {0x000002B8, 0x00000000, 0, 0},
- {0x000002BC, 0x00000000, 0, 0},
- {0x000002C0, 0x00A500A5, 0, 0},
- {0x000002C4, 0x00A500A5, 0, 0},
- {0x000002C8, 0x00800080, 0, 0},
- {0x000002CC, 0x00800080, 0, 0},
- {0x000002D0, 0x00800080, 0, 0},
- {0x000002D4, 0x00800080, 0, 0},
- {0x000002D8, 0x00A800A8, 0, 0},
- {0x000002DC, 0x00A800A8, 0, 0},
- {0x00000E00, 0x24000000, 0, 0},
- {0x00000E04, 0x159500A5, 0, 0},
- {0x00000E08, 0x0F9900EE, 0, 0},
- {0x00000E0C, 0x0CE40127, 0, 0},
- {0x00000E10, 0x0B410157, 0, 0},
- {0x00000E14, 0x0A210181, 0, 0},
- {0x00000E18, 0x094B01A8, 0, 0},
- {0x00000E1C, 0x08A401CC, 0, 0},
- {0x00000E20, 0x081D01EE, 0, 0},
- {0x00000E24, 0x06B20263, 0, 0},
- {0x00000E28, 0x05D802C7, 0, 0},
- {0x00000E2C, 0x05420320, 0, 0},
- {0x00000E30, 0x04D30370, 0, 0},
- {0x00000E34, 0x047C03BB, 0, 0},
- {0x00000E38, 0x043703FF, 0, 0},
- {0x00000010, 0x00000080, 0, 0},
- {0x00000A08, 0x10000032, 0xFFFFFFF, 0},
- {0x00000A00, 0x00120002, 0, 0},
- {0x00000A00, 0x00120000, 0, 0},
- {0x00000A50, 0x00000002, 0, 0},
- {0x00000A00, 0x00120001, 0, 0},
- {0x00000008, 0x00010000, 0, 0},
- {0x00000008, 0x0002000A, 0, 0},
- {0x00000000, 0x00000001, 0, 0},
- };*/
- //v02 gama off
- static const regval_t isp_1080p_reg_config_list[] = {
- {0x00000014, 0x0000000D, 0, 0},
- // {0x00000018, 0x000011BB, 0, 0},
- {0x00000A1C, 0x00000032, 0, 0},
- // {0x0000001C, 0x00000000, 0, 0},
- // {0x00000020, 0x0437077F, 0, 0},
- // {0x00000A0C, 0x04380780, 0, 0},
- // {0x00000A80, 0xF9000000, 0, 0},
- // {0x00000A84, 0xF91FA400, 0, 0},
- // {0x00000A88, 0x00000780, 0, 0},
- {0x00000A8C, 0x00000000, 0, 0},
- {0x00000A90, 0x00000000, 0, 0},
- {0x00000E40, 0x0000004C, 0, 0},
- {0x00000E44, 0x00000097, 0, 0},
- {0x00000E48, 0x0000001D, 0, 0},
- {0x00000E4C, 0x000001D5, 0, 0},
- {0x00000E50, 0x000001AC, 0, 0},
- {0x00000E54, 0x00000080, 0, 0},
- {0x00000E58, 0x00000080, 0, 0},
- {0x00000E5C, 0x00000194, 0, 0},
- {0x00000E60, 0x000001EC, 0, 0},
- {0x00000280, 0x00000000, 0, 0},
- {0x00000284, 0x00000000, 0, 0},
- {0x00000288, 0x00000000, 0, 0},
- {0x0000028C, 0x00000000, 0, 0},
- {0x00000290, 0x00000000, 0, 0},
- {0x00000294, 0x00000000, 0, 0},
- {0x00000298, 0x00000000, 0, 0},
- {0x0000029C, 0x00000000, 0, 0},
- {0x000002A0, 0x00000000, 0, 0},
- {0x000002A4, 0x00000000, 0, 0},
- {0x000002A8, 0x00000000, 0, 0},
- {0x000002AC, 0x00000000, 0, 0},
- {0x000002B0, 0x00000000, 0, 0},
- {0x000002B4, 0x00000000, 0, 0},
- {0x000002B8, 0x00000000, 0, 0},
- {0x000002BC, 0x00000000, 0, 0},
- {0x000002C0, 0x00C000C0, 0, 0},
- {0x000002C4, 0x00C000C0, 0, 0},
- {0x000002C8, 0x00800080, 0, 0},
- {0x000002CC, 0x00800080, 0, 0},
- {0x000002D0, 0x00800080, 0, 0},
- {0x000002D4, 0x00800080, 0, 0},
- {0x000002D8, 0x00C400C4, 0, 0},
- {0x000002DC, 0x00C400C4, 0, 0},
- {0x00000E00, 0x24000000, 0, 0},
- {0x00000E04, 0x159500A5, 0, 0},
- {0x00000E08, 0x0F9900EE, 0, 0},
- {0x00000E0C, 0x0CE40127, 0, 0},
- {0x00000E10, 0x0B410157, 0, 0},
- {0x00000E14, 0x0A210181, 0, 0},
- {0x00000E18, 0x094B01A8, 0, 0},
- {0x00000E1C, 0x08A401CC, 0, 0},
- {0x00000E20, 0x081D01EE, 0, 0},
- {0x00000E24, 0x06B20263, 0, 0},
- {0x00000E28, 0x05D802C7, 0, 0},
- {0x00000E2C, 0x05420320, 0, 0},
- {0x00000E30, 0x04D30370, 0, 0},
- {0x00000E34, 0x047C03BB, 0, 0},
- {0x00000E38, 0x043703FF, 0, 0},
- {0x00000010, 0x00000080, 0, 0},
- {0x00000A08, 0x10000022, 0xFFFFFFF, 0},
- {0x00000A00, 0x00120002, 0, 0},
- {0x00000A00, 0x00120000, 0, 0},
- {0x00000A50, 0x00000002, 0, 0},
- {0x00000A00, 0x00120001, 0, 0},
- {0x00000008, 0x00010000, 0, 0},
- {0x00000008, 0x0002000A, 0, 0},
- {0x00000000, 0x00000001, 0, 0},
- };
- //gama on v2
- /*
- static const regval_t isp_1080p_reg_config_list[] = {
- {0x00000014, 0x0000000D, 0, 0},
- // {0x00000018, 0x000011BB, 0, 0},
- {0x00000A1C, 0x00000032, 0, 0},
- // {0x0000001C, 0x00000000, 0, 0},
- // {0x00000020, 0x0437077F, 0, 0},
- // {0x00000A0C, 0x04380780, 0, 0},
- // {0x00000A80, 0xF9000000, 0, 0},
- // {0x00000A84, 0xF91FA400, 0, 0},
- // {0x00000A88, 0x00000780, 0, 0},
- {0x00000A8C, 0x00000000, 0, 0},
- {0x00000A90, 0x00000000, 0, 0},
- {0x00000E40, 0x0000004C, 0, 0},
- {0x00000E44, 0x00000097, 0, 0},
- {0x00000E48, 0x0000001D, 0, 0},
- {0x00000E4C, 0x000001D5, 0, 0},
- {0x00000E50, 0x000001AC, 0, 0},
- {0x00000E54, 0x00000080, 0, 0},
- {0x00000E58, 0x00000080, 0, 0},
- {0x00000E5C, 0x00000194, 0, 0},
- {0x00000E60, 0x000001EC, 0, 0},
- {0x00000280, 0x00000000, 0, 0},
- {0x00000284, 0x00000000, 0, 0},
- {0x00000288, 0x00000000, 0, 0},
- {0x0000028C, 0x00000000, 0, 0},
- {0x00000290, 0x00000000, 0, 0},
- {0x00000294, 0x00000000, 0, 0},
- {0x00000298, 0x00000000, 0, 0},
- {0x0000029C, 0x00000000, 0, 0},
- {0x000002A0, 0x00000000, 0, 0},
- {0x000002A4, 0x00000000, 0, 0},
- {0x000002A8, 0x00000000, 0, 0},
- {0x000002AC, 0x00000000, 0, 0},
- {0x000002B0, 0x00000000, 0, 0},
- {0x000002B4, 0x00000000, 0, 0},
- {0x000002B8, 0x00000000, 0, 0},
- {0x000002BC, 0x00000000, 0, 0},
- {0x000002C0, 0x00C000C0, 0, 0},
- {0x000002C4, 0x00C000C0, 0, 0},
- {0x000002C8, 0x00800080, 0, 0},
- {0x000002CC, 0x00800080, 0, 0},
- {0x000002D0, 0x00800080, 0, 0},
- {0x000002D4, 0x00800080, 0, 0},
- {0x000002D8, 0x00C400C4, 0, 0},
- {0x000002DC, 0x00C400C4, 0, 0},
- {0x00000E00, 0x24000000, 0, 0},
- {0x00000E04, 0x159500A5, 0, 0},
- {0x00000E08, 0x0F9900EE, 0, 0},
- {0x00000E0C, 0x0CE40127, 0, 0},
- {0x00000E10, 0x0B410157, 0, 0},
- {0x00000E14, 0x0A210181, 0, 0},
- {0x00000E18, 0x094B01A8, 0, 0},
- {0x00000E1C, 0x08A401CC, 0, 0},
- {0x00000E20, 0x081D01EE, 0, 0},
- {0x00000E24, 0x06B20263, 0, 0},
- {0x00000E28, 0x05D802C7, 0, 0},
- {0x00000E2C, 0x05420320, 0, 0},
- {0x00000E30, 0x04D30370, 0, 0},
- {0x00000E34, 0x047C03BB, 0, 0},
- {0x00000E38, 0x043703FF, 0, 0},
- {0x00000010, 0x00000080, 0, 0},
- {0x00000A08, 0x10000032, 0xFFFFFFF, 0},
- {0x00000A00, 0x00120002, 0, 0},
- {0x00000A00, 0x00120000, 0, 0},
- {0x00000A50, 0x00000002, 0, 0},
- {0x00000A00, 0x00120001, 0, 0},
- {0x00000008, 0x00010000, 0, 0},
- {0x00000008, 0x0002000A, 0, 0},
- {0x00000000, 0x00000001, 0, 0},
- };
- */
- /* //isp dump raw data
- static const regval_t isp_1080p_reg_config_list[] = {
- {0x00000014, 0x0000000D, 0, 0},
- // {0x00000018, 0x000011BB, 0, 0},
- {0x00000A1C, 0x00000032, 0, 0},
- // {0x0000001C, 0x00000000, 0, 0},
- // {0x00000020, 0x0437077F, 0, 0},
- // {0x00000A0C, 0x04380780, 0, 0},
- // {0x00000A80, 0xF9000000, 0, 0},
- // {0x00000A84, 0xF91FA400, 0, 0},
- // {0x00000A88, 0x00000780, 0, 0},
- {0x00000024, 0xfb000000, 0, 0}, // Buffer size = 3179520
- {0x00000028, 0x00030B80, 0, 0},
- {0x00000A8C, 0x00000000, 0, 0},
- {0x00000A90, 0x00000000, 0, 0},
- {0x00000E40, 0x0000004C, 0, 0},
- {0x00000E44, 0x00000097, 0, 0},
- {0x00000E48, 0x0000001D, 0, 0},
- {0x00000E4C, 0x000001D5, 0, 0},
- {0x00000E50, 0x000001AC, 0, 0},
- {0x00000E54, 0x00000080, 0, 0},
- {0x00000E58, 0x00000080, 0, 0},
- {0x00000E5C, 0x00000194, 0, 0},
- {0x00000E60, 0x000001EC, 0, 0},
- {0x00000280, 0x00000000, 0, 0},
- {0x00000284, 0x00000000, 0, 0},
- {0x00000288, 0x00000000, 0, 0},
- {0x0000028C, 0x00000000, 0, 0},
- {0x00000290, 0x00000000, 0, 0},
- {0x00000294, 0x00000000, 0, 0},
- {0x00000298, 0x00000000, 0, 0},
- {0x0000029C, 0x00000000, 0, 0},
- {0x000002A0, 0x00000000, 0, 0},
- {0x000002A4, 0x00000000, 0, 0},
- {0x000002A8, 0x00000000, 0, 0},
- {0x000002AC, 0x00000000, 0, 0},
- {0x000002B0, 0x00000000, 0, 0},
- {0x000002B4, 0x00000000, 0, 0},
- {0x000002B8, 0x00000000, 0, 0},
- {0x000002BC, 0x00000000, 0, 0},
- {0x000002C0, 0x00800080, 0, 0},
- {0x000002C4, 0x00800080, 0, 0},
- {0x000002C8, 0x00800080, 0, 0},
- {0x000002CC, 0x00800080, 0, 0},
- {0x000002D0, 0x00800080, 0, 0},
- {0x000002D4, 0x00800080, 0, 0},
- {0x000002D8, 0x00800080, 0, 0},
- {0x000002DC, 0x00800080, 0, 0},
- {0x00000E00, 0x24000000, 0, 0},
- {0x00000E04, 0x159500A5, 0, 0},
- {0x00000E08, 0x0F9900EE, 0, 0},
- {0x00000E0C, 0x0CE40127, 0, 0},
- {0x00000E10, 0x0B410157, 0, 0},
- {0x00000E14, 0x0A210181, 0, 0},
- {0x00000E18, 0x094B01A8, 0, 0},
- {0x00000E1C, 0x08A401CC, 0, 0},
- {0x00000E20, 0x081D01EE, 0, 0},
- {0x00000E24, 0x06B20263, 0, 0},
- {0x00000E28, 0x05D802C7, 0, 0},
- {0x00000E2C, 0x05420320, 0, 0},
- {0x00000E30, 0x04D30370, 0, 0},
- {0x00000E34, 0x047C03BB, 0, 0},
- {0x00000E38, 0x043703FF, 0, 0},
- // {0x00000010, 0x00000080, 0, 0},
- {0x00000010, 0x00080080, 0, 0},
- {0x00000A08, 0x10000032, 0xFFFFFFF, 0},
- {0x00000A00, 0x00120002, 0, 0},
- {0x00000A00, 0x00120000, 0, 0},
- {0x00000A50, 0x00000002, 0, 0},
- {0x00000A00, 0x00120001, 0, 0},
- {0x00000008, 0x00010000, 0, 0},
- {0x00000008, 0x0002000A, 0, 0},
- {0x00000000, 0x00000001, 0, 0},
- };
- */
- #endif
- static const regval_t isp_dump_1080p_reg_config_list[] = {
- {0x00000014, 0x0000000D,0,0},
- // {0x00000018, 0x000011BB,0,0},
- {0x00000A1C, 0x00000032,0,0},
- // {0x0000001C, 0x00000000,0,0},
- // {0x00000020, 0x0437077F,0,0},
- // {0x00000A0C, 0x04380780,0,0},
- // {0x00000A80, 0xF9000000,0,0},
- // {0x00000A84, 0xF91FA400,0,0},
- {0x00000A88, 0x00000780,0,0},
- // {0x00000024, 0xFB000000, 0, 0},// Buffer size = 3179520
- {0x00000028, 0x00030B80, 0, 0},
- {0x00000A8C, 0x00000000,0,0},
- {0x00000A90, 0x00000000,0,0},
- {0x00000E40, 0x0000004C,0,0},
- {0x00000E44, 0x00000097,0,0},
- {0x00000E48, 0x0000001D,0,0},
- {0x00000E4C, 0x000001D5,0,0},
- {0x00000E50, 0x000001AC,0,0},
- {0x00000E54, 0x00000080,0,0},
- {0x00000E58, 0x00000080,0,0},
- {0x00000E5C, 0x00000194,0,0},
- {0x00000E60, 0x000001EC,0,0},
- {0x00000280, 0x00000000,0,0},
- {0x00000284, 0x00000000,0,0},
- {0x00000288, 0x00000000,0,0},
- {0x0000028C, 0x00000000,0,0},
- {0x00000290, 0x00000000,0,0},
- {0x00000294, 0x00000000,0,0},
- {0x00000298, 0x00000000,0,0},
- {0x0000029C, 0x00000000,0,0},
- {0x000002A0, 0x00000000,0,0},
- {0x000002A4, 0x00000000,0,0},
- {0x000002A8, 0x00000000,0,0},
- {0x000002AC, 0x00000000,0,0},
- {0x000002B0, 0x00000000,0,0},
- {0x000002B4, 0x00000000,0,0},
- {0x000002B8, 0x00000000,0,0},
- {0x000002BC, 0x00000000,0,0},
- {0x000002C0, 0x00800080, 0, 0},
- {0x000002C4, 0x00800080, 0, 0},
- {0x000002C8, 0x00800080,0,0},
- {0x000002CC, 0x00800080,0,0},
- {0x000002D0, 0x00800080,0,0},
- {0x000002D4, 0x00800080,0,0},
- {0x000002D8, 0x00800080, 0, 0},
- {0x000002DC, 0x00800080, 0, 0},
- {0x00000E00, 0x24000000,0,0},
- {0x00000E04, 0x159500A5,0,0},
- {0x00000E08, 0x0F9900EE,0,0},
- {0x00000E0C, 0x0CE40127,0,0},
- {0x00000E10, 0x0B410157,0,0},
- {0x00000E14, 0x0A210181,0,0},
- {0x00000E18, 0x094B01A8,0,0},
- {0x00000E1C, 0x08A401CC,0,0},
- {0x00000E20, 0x081D01EE,0,0},
- {0x00000E24, 0x06B20263,0,0},
- {0x00000E28, 0x05D802C7,0,0},
- {0x00000E2C, 0x05420320,0,0},
- {0x00000E30, 0x04D30370,0,0},
- {0x00000E34, 0x047C03BB,0,0},
- {0x00000E38, 0x043703FF,0,0},
- {0x00000010, 0x00080080, 0, 0},
- {0x00000A08, 0x10000032,0xFFFFFFF,0},
- {0x00000A00, 0x00120002,0,0},
- {0x00000A00, 0x00120000,0,0},
- {0x00000A50, 0x00000002,0,0},
- {0x00000A00, 0x00120001,0,0},
- {0x00000008, 0x00010000,0,0},
- {0x00000008, 0x0002000A,0,0},
- {0x00000000, 0x00000001,0,0},
- };
- static const regval_t isp_imx219_reg_config_list[] = {
- {0x00000014, 0x0000000D, 0, 0},
- // {0x00000018, 0x000011BB, 0, 0},
- {0x00000A1C, 0x00000032, 0, 0},
- // {0x0000001C, 0x00000000, 0, 0},
- // {0x00000020, 0x0437077F, 0, 0},
- // {0x00000A0C, 0x04380780, 0, 0},
- // {0x00000A80, 0xF9000000, 0, 0},
- // {0x00000A84, 0xF91FA400, 0, 0},
- // {0x00000A88, 0x00000780, 0, 0},
- {0x00000A8C, 0x00000000, 0, 0},
- {0x00000A90, 0x00000000, 0, 0},
- {0x00000E40, 0x0000004C, 0, 0},
- {0x00000E44, 0x00000097, 0, 0},
- {0x00000E48, 0x0000001D, 0, 0},
- {0x00000E4C, 0x000001D5, 0, 0},
- {0x00000E50, 0x000001AC, 0, 0},
- {0x00000E54, 0x00000080, 0, 0},
- {0x00000E58, 0x00000080, 0, 0},
- {0x00000E5C, 0x00000194, 0, 0},
- {0x00000E60, 0x000001EC, 0, 0},
- {0x00000280, 0x00000000, 0, 0},
- {0x00000284, 0x00000000, 0, 0},
- {0x00000288, 0x00000000, 0, 0},
- {0x0000028C, 0x00000000, 0, 0},
- {0x00000290, 0x00000000, 0, 0},
- {0x00000294, 0x00000000, 0, 0},
- {0x00000298, 0x00000000, 0, 0},
- {0x0000029C, 0x00000000, 0, 0},
- {0x000002A0, 0x00000000, 0, 0},
- {0x000002A4, 0x00000000, 0, 0},
- {0x000002A8, 0x00000000, 0, 0},
- {0x000002AC, 0x00000000, 0, 0},
- {0x000002B0, 0x00000000, 0, 0},
- {0x000002B4, 0x00000000, 0, 0},
- {0x000002B8, 0x00000000, 0, 0},
- {0x000002BC, 0x00000000, 0, 0},
- {0x000002C0, 0x00F000F0, 0, 0},
- {0x000002C4, 0x00F000F0, 0, 0},
- {0x000002C8, 0x00800080, 0, 0},
- {0x000002CC, 0x00800080, 0, 0},
- {0x000002D0, 0x00800080, 0, 0},
- {0x000002D4, 0x00800080, 0, 0},
- {0x000002D8, 0x00B000B0, 0, 0},
- {0x000002DC, 0x00B000B0, 0, 0},
- {0x00000E00, 0x24000000, 0, 0},
- {0x00000E04, 0x159500A5, 0, 0},
- {0x00000E08, 0x0F9900EE, 0, 0},
- {0x00000E0C, 0x0CE40127, 0, 0},
- {0x00000E10, 0x0B410157, 0, 0},
- {0x00000E14, 0x0A210181, 0, 0},
- {0x00000E18, 0x094B01A8, 0, 0},
- {0x00000E1C, 0x08A401CC, 0, 0},
- {0x00000E20, 0x081D01EE, 0, 0},
- {0x00000E24, 0x06B20263, 0, 0},
- {0x00000E28, 0x05D802C7, 0, 0},
- {0x00000E2C, 0x05420320, 0, 0},
- {0x00000E30, 0x04D30370, 0, 0},
- {0x00000E34, 0x047C03BB, 0, 0},
- {0x00000E38, 0x043703FF, 0, 0},
- {0x00000010, 0x00000080, 0, 0},
- {0x00000A08, 0x10000032, 0xFFFFFFF, 0},
- {0x00000A00, 0x00120002, 0, 0},
- {0x00000A00, 0x00120000, 0, 0},
- {0x00000A50, 0x00000002, 0, 0},
- {0x00000A00, 0x00120001, 0, 0},
- {0x00000008, 0x00010000, 0, 0},
- {0x00000008, 0x0002000A, 0, 0},
- {0x00000000, 0x00000001, 0, 0},
- };
- const struct reg_table isp_1920_1080_settings[] = {
- {isp_1080p_reg_config_list,
- ARRAY_SIZE(isp_1080p_reg_config_list)},
- };
- const struct reg_table isp_dump_1920_1080_settings[] = {
- {isp_dump_1080p_reg_config_list,
- ARRAY_SIZE(isp_dump_1080p_reg_config_list)},
- };
- const struct reg_table isp_sc2235_settings[] = {
- {isp_sc2235_reg_config_list,
- ARRAY_SIZE(isp_sc2235_reg_config_list)},
- };
- /**
- print usage information
- */
- static void usage(FILE* fp, int argc, char** argv)
- {
- fprintf(fp,
- "Usage: %s [options]\n\n"
- "Options:\n"
- "-i | --input Set input filename\n"
- "-o | --output Set output filename\n"
- "-h | --help Print this message\n"
- "-v | --version Print version\n"
- "",
- argv[0]);
- }
- static const char short_options [] = "hv";
- static const struct option
- long_options [] = {
- { "help", no_argument, NULL, 'h' },
- { "version", no_argument, NULL, 'v' },
- { 0, 0, 0, 0 }
- };
- int write_file (char * filename, unsigned char *image_buffer, int size)
- {
- FILE * outfile; /* target file */
- if ((outfile = fopen(filename, "w+")) == NULL) {
- fprintf(stderr, "can't open %s\n", filename);
- return -1;
- }
- fwrite(image_buffer, size * sizeof(regval_t), 1, outfile);
- fwrite(&size, sizeof(int), 1, outfile);
- fclose(outfile);
- return 0 ;
- }
- int main(int argc, char **argv)
- {
- for (;;) {
- int index, c = 0;
- c = getopt_long(argc, argv, short_options, long_options, &index);
- if (-1 == c)
- break;
- switch (c) {
- case 0: /* getopt_long() flag */
- break;
- case 'h':
- // print help
- usage(stdout, argc, argv);
- exit(EXIT_SUCCESS);
- case 'v':
- printf("Version: %s\n", VERSION);
- exit(EXIT_SUCCESS);
- break;
- default:
- usage(stderr, argc, argv);
- exit(EXIT_FAILURE);
- }
- }
- printf("isp_1920_1080_settings size: %d, sizeof(regval_t): %lu, sizeof(int): %lu\n",
- isp_1920_1080_settings->regval_num, sizeof(regval_t), sizeof(int));
- write_file(OV4689_SETFILE, (unsigned char *)isp_1920_1080_settings->regval,
- isp_1920_1080_settings->regval_num);
- printf("isp_dump_1920_1080_settings size: %d, sizeof(regval_t): %lu, sizeof(int): %lu\n",
- isp_dump_1920_1080_settings->regval_num, sizeof(regval_t), sizeof(int));
- write_file(OV4689_DUMP_SETFILE, (unsigned char *)isp_dump_1920_1080_settings->regval,
- isp_dump_1920_1080_settings->regval_num);
- printf("isp_sc2235_settings size: %d, sizeof(regval_t): %lu\n",
- isp_sc2235_settings->regval_num, sizeof(regval_t));
- write_file(SC2235_SETFILE, (unsigned char *)isp_sc2235_settings->regval,
- isp_sc2235_settings->regval_num);
- return 0;
- }
|