| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077 |
- /* Copyright Statement:
- *
- * This software/firmware and related documentation ("MediaTek Software") are
- * protected under relevant copyright laws. The information contained herein
- * is confidential and proprietary to MediaTek Inc. and/or its licensors.
- * Without the prior written permission of MediaTek inc. and/or its licensors,
- * any reproduction, modification, use or disclosure of MediaTek Software,
- * and information contained herein, in whole or in part, shall be strictly prohibited.
- */
- /* MediaTek Inc. (C) 2015. All rights reserved.
- *
- * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
- * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
- * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON
- * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
- * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
- * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
- * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH
- * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
- * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
- * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
- * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
- * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND
- * CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
- * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
- * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO
- * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
- */
- #define LOG_TAG "DUMP"
- #include <platform/ddp_info.h>
- #include <platform/ddp_log.h>
- #include <platform/ddp_path.h>
- #include <platform/ddp_dump.h>
- #include <platform/disp_drv_platform.h>
- #include "platform/ddp_reg.h"
- #include <platform/ddp_dsi.h>
- static const char* ddp_signal[3][32] = {
- {
- "aal0_to_gamma0",
- "aal1_to_gamma1",
- "ccorr0_to_aal0",
- "ccorr1_to_aal1",
- "color0_to_ccorr0",
- "color0_sel_to_color0",
- "color1_to_ccorr1",
- "color1_sel_to_color1",
- "path0_sel_to_path0_sout",
- "path0_sout_out_0_to_ufoe_sel_in_0",
- "path0_sout_out_1_to_dsc_sel_in_0",
- "path1_sel_to_path1",
- "path1_sout_out_0_to_dsc_sel_in_1",
- "path1_sout_out_1_to_ufoe_sel_in_1",
- "rdma0_to_rdma0_sout",
- "rdma0_sout_out_0_to_path0_sel_in_0",
- "rdma0_sout_out_1_to_color0_sel_in_0",
- "rdma0_sout_out_2_to_dsi0_sel_in_2",
- "rdma0_sout_out_3_to_dsi1_sel_in_1",
- "rdma0_sout_out_4_to_dpi0_sel_in_1",
- "rdma1_to_rdma1_sout",
- "rdma1_sout_out_0_to_path1_sel_in_0",
- "rdma1_sout_out_1_to_color1_sel_in_0",
- "rdma1_sout_out_2_to_dsi0_sel_in_4",
- "rdma1_sout_out_3_to_dsi1_sel_in_4",
- "rdma1_sout_out_4_to_dpi0_sel_in_3",
- "rdma2_to_dpi0_sel_in_4",
- "split_out_0_to_dsi0_1",
- "split_1_to_dsi1_0",
- "wdma0_sel_to_wdma0",
- "wdma1_sel_to_wdma1",
- "dither0_to_dither0_mout",
- },
- {
- "dither0_mout_out_0_to_rdma0",
- "dither0_mout_out_1_to_path0_sel_in_1",
- "dither0_mout_out_2_to_wdma0_sel_in_1",
- "dither1_to_dither1_mout",
- "dither1_mout_out_0_to_rdma1",
- "dither1_mout_out_1_to_path1_sel_in_1",
- "dither1_mout_out_2_to_wdma1_sel_in_1",
- "dpi0_sel_to_dpi0",
- "dsc_mout_out_0_to_dsi0_sel_in_3",
- "dsc_mout_out_1_to_dsi1_sel_in_2",
- "dsc_mout_out_2_to_dpi0_sel_in_2",
- "dsc_mout_out_3_to_wdma1_sel_in_2",
- "dsc_sel_to_dsc_wrap",
- "dsi0_sel_to_dsi0",
- "dsi1_sel_to_dsi1",
- "gamma0_to_od",
- "gamma1_to_dither1",
- "od_to_dither0",
- "ovl0_2L_to_ovl0_sout",
- "ovl0_to_ovl0_mout",
- "ovl0_mout_out_0_to_ovl0_2L",
- "ovl0_mout_out_1_to_wdma0_sel_in_3",
- "ovl0_pq_mout_out_0_to_color0_sel_in_1",
- "ovl0_pq_mout_out_1_to_wdma0_sel_in_0",
- "ovl0_sel_to_ovl_pq_mout",
- "ovl0_sout_out_0_to_ovl0_sel_in_0",
- "ovl0_sout_out_1_to_ovl1",
- "ovl0_sout_out_2_to_ovl1_2L_sel_in_0",
- "ovl1_2L_to_ovl1_pq_mout",
- "ovl1_2L_sel_to_ovl1_2L",
- "ovl1_2L_to_ovl1_mout",
- "ovl1_2L_mout_out_0_to_ovl1_2L_sel_in_1",
- },
- {
- "ovl1_mout_out_1_to_ovl0_sel_in_2",
- "ovl1_mout_out_2_to_wdma1_sel_in_3",
- "ovl1_mout_out_3_to_color1_sel_in_2",
- "ovl1_pq_mout_out_0_to_color1_sel_in_1",
- "ovl1_pq_mout_out_1_to_wdma1_sel_in_0",
- "ovl1_pq_mout_out_2_to_ovl0_sel_in_1",
- "ufoe_to_ufoe_mout",
- "ufoe_mout_out_0_to_dsi0_sel_in_0",
- "ufoe_mout_out_1_to_split",
- "ufoe_mout_out_2_to_dpi0_sel_in_0",
- "ufoe_mout_out_3_to_wdma0_sel_in_2",
- "ufoe_mout_out_4_to_dsi1_sel_in_3",
- "ufoe_sel_to_ufoe",
- "dsc_wrap_to_dsc_mout",
- }
- };
- static char *ddp_greq_name(int bit)
- {
- switch (bit) {
- case 0:
- return "OVL0";
- case 1:
- return "OVL0_2L";
- case 2:
- return "RDMA0";
- case 3:
- return "WDMA0";
- case 4:
- return "MDP_RDMA0";
- case 5:
- return "MDP_WDMA";
- case 6:
- return "MDP_WROT0";
- case 16:
- return "OVL1";
- case 17:
- return "OVL1_2L";
- case 18:
- return "RDMA1";
- case 19:
- return "RDMA2";
- case 20:
- return "WDMA1";
- case 21:
- return "OD_R";
- case 22:
- return "OD_W";
- case 23:
- return "OVL0_2L_LARB4";
- case 26:
- return "WMDA0_LARB5";
- default:
- return NULL;
- }
- }
- static char *ddp_get_mutex_module0_name(unsigned int bit)
- {
- switch (bit) {
- case 0: return "rdma0";
- case 1: return "rdma1";
- case 2: return "rdma2";
- case 3: return "mdp_rdma0";
- case 4: return "mdp_rdma1";
- case 5: return "mdp_rsz0";
- case 6: return "mdp_rsz1";
- case 7: return "mdp_rsz2";
- case 8: return "mdp_tdshp";
- case 9: return "mdp_color";
- case 10: return "mdp_wdma";
- case 11: return "mdp_wrot0";
- case 12: return "mdp_wrot1";
- case 13: return "ovl0";
- case 14: return "ovl1";
- case 15: return "ovl0_2L";
- case 16: return "ovl1_2L";
- case 17: return "wdma0";
- case 18: return "wdma1";
- case 19: return "color0";
- case 20: return "color1";
- case 21: return "ccorr0";
- case 22: return "ccorr1";
- case 23: return "aal0";
- case 24: return "aal1";
- case 25: return "gamma0";
- case 26: return "gamma1";
- case 27: return "od";
- case 28: return "dither0";
- case 29: return "dither1";
- case 30: return "ufoe";
- case 31: return "dsc";
- default:
- return "mutex-unknown";
- }
- }
- static char *ddp_get_mutex_module1_name(unsigned int bit)
- {
- switch (bit) {
- case 0: return "pwm";
- case 1: return "dsi0";
- case 2: return "dsi1";
- default:
- return "mutex-unknown";
- }
- }
- char *ddp_get_fmt_name(DISP_MODULE_ENUM module, unsigned int fmt)
- {
- if (module == DISP_MODULE_WDMA0) {
- switch (fmt) {
- case 0:
- return "rgb565";
- case 1:
- return "rgb888";
- case 2:
- return "rgba8888";
- case 3:
- return "argb8888";
- case 4:
- return "uyvy";
- case 5:
- return "yuy2";
- case 7:
- return "y-only";
- case 8:
- return "iyuv";
- case 12:
- return "nv12";
- default:
- DDPDUMP("ddp_get_fmt_name, unknown fmt=%d, module=%d\n", fmt, module);
- return "unknown";
- }
- } else if (module == DISP_MODULE_OVL0) {
- switch (fmt) {
- case 0:
- return "rgb565";
- case 1:
- return "rgb888";
- case 2:
- return "rgba8888";
- case 3:
- return "argb8888";
- case 4:
- return "uyvy";
- case 5:
- return "yuyv";
- default:
- DDPDUMP("ddp_get_fmt_name, unknown fmt=%d, module=%d\n", fmt, module);
- return "unknown";
- }
- } else if (module == DISP_MODULE_RDMA0 || module == DISP_MODULE_RDMA1 || module == DISP_MODULE_RDMA2) {
- switch (fmt) {
- case 0:
- return "rgb565";
- case 1:
- return "rgb888";
- case 2:
- return "rgba8888";
- case 3:
- return "argb8888";
- case 4:
- return "uyvy";
- case 5:
- return "yuyv";
- default:
- DDPDUMP("ddp_get_fmt_name, unknown fmt=%d, module=%d\n", fmt, module);
- return "unknown";
- }
- } else {
- DDPDUMP("ddp_get_fmt_name, unknown module=%d\n", module);
- }
- return "unknown";
- }
- static char *ddp_clock_0(int bit)
- {
- switch (bit) {
- case 0:
- return "smi_common(cg), ";
- case 1:
- return "smi_larb0(cg), ";
- case 2:
- return "smi_larb4(cg), ";
- case 15:
- return "ovl0, ";
- case 16:
- return "ovl1, ";
- case 17:
- return "ovl0_2L, ";
- case 18:
- return "ovl1_2L, ";
- case 19:
- return "rdma0, ";
- case 20:
- return "rdma1, ";
- case 21:
- return "wdma0, ";
- case 22:
- return "wdma1, ";
- case 23:
- return "color, ";
- case 24:
- return "ccorr, ";
- case 25:
- return "aal, ";
- case 26:
- return "gamma, ";
- case 27:
- return "od, ";
- case 28:
- return "dither, ";
- case 29:
- return "ufoe_mout, ";
- case 30:
- return "dsc, ";
- case 31:
- return "split, ";
- default:
- return NULL;
- }
- }
- static char *ddp_clock_1(int bit)
- {
- switch (bit) {
- case 0:
- return "dsi0_mm(cg), ";
- case 1:
- return "dsi0_interface(cg), ";
- case 2:
- return "dsi1_mm(cg), ";
- case 3:
- return "dsi1_interface(cg), ";
- case 4:
- return "dpi_mm(cg), ";
- case 5:
- return "dpi_interface, ";
- case 8:
- return "ovl0_mout, ";
- default:
- return NULL;
- }
- }
- static void mutex_dump_reg(void)
- {
- DDPDUMP("==DISP MUTEX REGS==\n");
- DDPDUMP("(0x000)M_INTEN =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX_INTEN));
- DDPDUMP("(0x004)M_INTSTA =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX_INTSTA));
- DDPDUMP("(0x020)M0_EN =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX0_EN));
- DDPDUMP("(0x024)M0_GET =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX0_GET));
- DDPDUMP("(0x028)M0_RST =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX0_RST));
- DDPDUMP("(0x02c)M0_SOF =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX0_SOF));
- DDPDUMP("(0x030)M0_MOD0 =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX0_MOD0));
- DDPDUMP("(0x034)M0_MOD1 =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX0_MOD1));
- DDPDUMP("(0x040)M1_EN =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX1_EN));
- DDPDUMP("(0x044)M1_GET =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX1_GET));
- DDPDUMP("(0x048)M1_RST =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX1_RST));
- DDPDUMP("(0x04c)M1_SOF =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX1_SOF));
- DDPDUMP("(0x050)M1_MOD0 =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX1_MOD0));
- DDPDUMP("(0x054)M1_MOD1 =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX1_MOD1));
- DDPDUMP("(0x060)M2_EN =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX2_EN));
- DDPDUMP("(0x064)M2_GET =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX2_GET));
- DDPDUMP("(0x068)M2_RST =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX2_RST));
- DDPDUMP("(0x06c)M2_SOF =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX2_SOF));
- DDPDUMP("(0x070)M2_MOD0 =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX2_MOD0));
- DDPDUMP("(0x074)M2_MOD1 =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX2_MOD1));
- DDPDUMP("(0x080)M3_EN =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX3_EN));
- DDPDUMP("(0x084)M3_GET =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX3_GET));
- DDPDUMP("(0x088)M3_RST =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX3_RST));
- DDPDUMP("(0x08C)M3_SOF =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX3_SOF));
- DDPDUMP("(0x090)M3_MOD0 =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX3_MOD0));
- DDPDUMP("(0x090)M3_MOD1 =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX3_MOD1));
- DDPDUMP("(0x0a0)M4_EN =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX4_EN));
- DDPDUMP("(0x0a4)M4_GET =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX4_GET));
- DDPDUMP("(0x0a8)M4_RST =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX4_RST));
- DDPDUMP("(0x0ac)M4_SOF =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX4_SOF));
- DDPDUMP("(0x0b0)M4_MOD0 =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX4_MOD0));
- DDPDUMP("(0x0b4)M4_MOD1 =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX4_MOD1));
- DDPDUMP("(0x0c0)M5_EN =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX5_EN));
- DDPDUMP("(0x0c4)M5_GET =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX5_GET));
- DDPDUMP("(0x0c8)M5_RST =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX5_RST));
- DDPDUMP("(0x0cc)M5_SOF =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX5_SOF));
- DDPDUMP("(0x0d0)M5_MOD0 =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX5_MOD0));
- DDPDUMP("(0x0d4)M5_MOD1 =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX5_MOD1));
- DDPDUMP("(0x300)DISP_REG_CONFIG_MUTEX_DUMMY0 =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX_DUMMY0));
- DDPDUMP("(0x304)DISP_REG_CONFIG_MUTEX_DUMMY1 =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MUTEX_DUMMY1));
- DDPDUMP("(0x30c)DEBUG_OUT_SEL =0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_DEBUG_OUT_SEL));
- return;
- }
- static void mutex_dump_analysis(void)
- {
- int i = 0;
- int j = 0;
- char mutex_module[512] = { '\0' };
- char *p = NULL;
- int len = 0;
- unsigned int val;
- DDPDUMP("== DISP Mutex Analysis ==\n");
- for (i = 0; i < 5; i++) {
- p = mutex_module;
- len = 0;
- if (DISP_REG_GET(DISP_REG_CONFIG_MUTEX_MOD0(i)) == 0)
- continue;
- val = DISP_REG_GET(DISP_REG_CONFIG_MUTEX_SOF(i));
- len = sprintf(p, "MUTEX%d :SOF=%s,EOF=%s,WAIT=%d,module=(",
- i,
- ddp_get_mutex_sof_name(REG_FLD_VAL_GET(SOF_FLD_MUTEX0_SOF, val)),
- ddp_get_mutex_sof_name(REG_FLD_VAL_GET(SOF_FLD_MUTEX0_EOF, val)),
- REG_FLD_VAL_GET(SOF_FLD_MUTEX0_SOF_WAIT, val));
- p += len;
- for (j = 0; j < 32; j++) {
- unsigned int regval = DISP_REG_GET(DISP_REG_CONFIG_MUTEX_MOD0(i));
- if ((regval & (1 << j))) {
- len = sprintf(p, "%s,", ddp_get_mutex_module0_name(j));
- p += len;
- }
- }
- for (j = 0; j < 32; j++) {
- unsigned int regval = DISP_REG_GET(DISP_REG_CONFIG_MUTEX_MOD1(i));
- if ((regval & (1 << j))) {
- len = sprintf(p, "%s,", ddp_get_mutex_module1_name(j));
- p += len;
- }
- }
- DDPDUMP("%s)\n", mutex_module);
- }
- }
- static void mmsys_config_dump_reg(void)
- {
- DDPDUMP("== DISP MMSYS_Config REGS ==\n");
- DDPDUMP("OVL0_MOUT_EN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_OVL0_MOUT_EN ));
- DDPDUMP("OVL0_PQ_MOUT_EN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_OVL0_PQ_MOUT_EN ));
- DDPDUMP("OVL1_MOUT_EN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_OVL1_MOUT_EN ));
- DDPDUMP("OVL1_PQ_MOUT_EN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_OVL1_PQ_MOUT_EN ));
- DDPDUMP("DITHER_MOUT_EN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_DITHER_MOUT_EN ));
- DDPDUMP("DITHER1_MOUT_EN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_DITHER1_MOUT_EN ));
- DDPDUMP("UFOE_MOUT_EN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_UFOE_MOUT_EN ));
- DDPDUMP("DSC_MOUT_EN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_DSC_MOUT_EN ));
- DDPDUMP("COLOR0_SEL_IN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_COLOR0_SEL_IN ));
- DDPDUMP("COLOR1_SEL_IN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_COLOR1_SEL_IN ));
- DDPDUMP("WDMA0_SEL_IN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_WDMA0_SEL_IN ));
- DDPDUMP("WDMA1_SEL_IN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_WDMA1_SEL_IN ));
- DDPDUMP("UFOE_SEL_IN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_UFOE_SEL_IN ));
- DDPDUMP("DSC_SEL_IN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_DSC_SEL_IN ));
- DDPDUMP("DSI0_SEL_IN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DSI0_SEL_IN ));
- DDPDUMP("DSI1_SEL_IN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DSI1_SEL_IN ));
- DDPDUMP("DPI_SEL_IN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DPI0_SEL_IN ));
- DDPDUMP("PATH0_SEL_IN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_PATH0_SEL_IN ));
- DDPDUMP("PATH1_SEL_IN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_PATH1_SEL_IN ));
- DDPDUMP("OVL0_SEL_IN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_OVL0_SEL_IN ));
- DDPDUMP("OVL1_2L_SEL_IN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_OVL1_2L_SEL_IN ));
- DDPDUMP("PATH0_SOUT_SEL_IN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_PATH0_SOUT_SEL_IN ));
- DDPDUMP("PATH1_SOUT_SEL_IN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_PATH1_SOUT_SEL_IN ));
- DDPDUMP("RDMA0_SOUT_SEL_IN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_RDMA0_SOUT_SEL_IN ));
- DDPDUMP("RDMA1_SOUT_SEL_IN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_RDMA1_SOUT_SEL_IN ));
- DDPDUMP("OVL0_SOUT_SEL_IN=0x%x\n" , DISP_REG_GET(DISP_REG_CONFIG_DISP_OVL0_SOUT_SEL_IN ));
- DDPDUMP("(0x0F0)MM_MISC=0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MMSYS_MISC));
- DDPDUMP("(0x100)MM_CG_CON0=0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MMSYS_CG_CON0));
- DDPDUMP("(0x110)MM_CG_CON1=0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MMSYS_CG_CON1));
- DDPDUMP("(0x120)MM_HW_DCM_DIS0=0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MMSYS_HW_DCM_DIS0));
- DDPDUMP("(0x130)MM_HW_DCM_DIS1=0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MMSYS_HW_DCM_DIS1));
- DDPDUMP("(0x140)MM_SW0_RST_B=0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MMSYS_SW0_RST_B));
- DDPDUMP("(0x144)MM_SW1_RST_B=0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MMSYS_SW1_RST_B));
- DDPDUMP("(0x150)MM_LCM_RST_B=0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MMSYS_LCM_RST_B));
- DDPDUMP("(0x880)MM_DBG_OUT_SEL=0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MMSYS_DEBUG_OUT_SEL));
- DDPDUMP("(0x890)MM_DUMMY0=0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MMSYS_DUMMY0));
- DDPDUMP("(0x894)MM_DUMMY1=0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MMSYS_DUMMY1));
- DDPDUMP("(0x898)MM_DUMMY2=0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MMSYS_DUMMY2));
- DDPDUMP("(0x89C)MM_DUMMY3=0x%x\n", DISP_REG_GET(DISP_REG_CONFIG_MMSYS_DUMMY3));
- return;
- }
- /* ------ clock:
- Before power on mmsys:
- CLK_CFG_0_CLR (address is 0x10000048) = 0x80000000 (bit 31).
- Before using DISP_PWM0 or DISP_PWM1:
- CLK_CFG_1_CLR(address is 0x10000058)=0x80 (bit 7).
- Before using DPI pixel clock:
- CLK_CFG_6_CLR(address is 0x100000A8)=0x80 (bit 7).
- Only need to enable the corresponding bits of MMSYS_CG_CON0 and MMSYS_CG_CON1 for the modules:
- smi_common, larb0, mdp_crop, fake_eng, mutex_32k, pwm0, pwm1, dsi0, dsi1, dpi.
- Other bits could keep 1. Suggest to keep smi_common and larb0 always clock on.
- --------valid & ready
- example:
- ovl0 -> ovl0_mout_ready=1 means engines after ovl_mout are ready for receiving data
- ovl0_mout_ready=0 means ovl0_mout can not receive data, maybe ovl0_mout or after engines config error
- ovl0 -> ovl0_mout_valid=1 means engines before ovl0_mout is OK,
- ovl0_mout_valid=0 means ovl can not transfer data to ovl0_mout, means ovl0 or before engines are not ready.
- */
- static void mmsys_config_dump_analysis(void)
- {
- unsigned int i = 0, j;
- unsigned int reg = 0;
- char clock_on[512] = { '\0' };
- char *pos = NULL;
- const char *name;
- /* int len = 0; */
- unsigned int valid[3], ready[3];
- unsigned int greq;
- valid[0] = DISP_REG_GET(DISP_REG_CONFIG_DISP_DL_VALID_0);
- valid[1] = DISP_REG_GET(DISP_REG_CONFIG_DISP_DL_VALID_1);
- valid[2] = DISP_REG_GET(DISP_REG_CONFIG_DISP_DL_VALID_2);
- ready[0] = DISP_REG_GET(DISP_REG_CONFIG_DISP_DL_READY_0);
- ready[1] = DISP_REG_GET(DISP_REG_CONFIG_DISP_DL_READY_1);
- ready[2] = DISP_REG_GET(DISP_REG_CONFIG_DISP_DL_READY_2);
- greq = DISP_REG_GET(DISP_REG_CONFIG_SMI_LARB0_GREQ);
- DDPDUMP("== DISP MMSYS_CONFIG ANALYSIS ==\n");
- #if 0 /* TODO: mmsys clk?? */
- DDPDUMP("mmsys clock=0x%x, CG_CON0=0x%x, CG_CON1=0x%x\n",
- DISP_REG_GET(DISP_REG_CLK_CFG_0_MM_CLK),
- DISP_REG_GET(DISP_REG_CONFIG_MMSYS_CG_CON0),
- DISP_REG_GET(DISP_REG_CONFIG_MMSYS_CG_CON1));
- if ((DISP_REG_GET(DISP_REG_CLK_CFG_0_MM_CLK) >> 31) & 0x1)
- DDPERR("mmsys clock abnormal!!\n");
- #endif
- reg = DISP_REG_GET(DISP_REG_CONFIG_MMSYS_CG_CON0);
- for (i = 0; i < 32; i++) {
- if ((reg & (1 << i)) == 0) {
- name = ddp_clock_0(i);
- if (name)
- strncat(clock_on, name, sizeof(clock_on));
- }
- }
- reg = DISP_REG_GET(DISP_REG_CONFIG_MMSYS_CG_CON1);
- for (i = 0; i < 32; i++) {
- if ((reg & (1 << i)) == 0) {
- name = ddp_clock_1(i);
- if (name)
- strncat(clock_on, name, sizeof(clock_on));
- }
- }
- DDPDUMP("clock on modules:%s\n", clock_on);
- DDPDUMP("valid0=0x%x,valid1=0x%x,valid2=0x%x,ready0=0x%x,ready1=0x%x,ready2=0x%x,greq=0%x\n",
- valid[0], valid[1], valid[2], ready[0], ready[1], ready[2], greq);
- for (j = 0; j < ARRAY_SIZE(valid); j++) {
- for (i = 0; i < 32; i++) {
- name = ddp_signal[j][i];
- if (!name)
- continue;
- pos = clock_on;
- if ((valid[j] & (1 << i)))
- pos += snprintf(pos, sizeof(clock_on), "%s,", "v");
- else
- pos += snprintf(pos, sizeof(clock_on), "%s,", "n");
- if ((ready[j] & (1 << i)))
- pos += snprintf(pos, sizeof(clock_on), "%s", "r");
- else
- pos += snprintf(pos, sizeof(clock_on), "%s", "n");
- pos += snprintf(pos, sizeof(clock_on), ": %s", name);
- DDPDUMP("%s\n", clock_on);
- }
- }
- /* greq: 1 means SMI dose not grant, maybe SMI hang */
- if (greq)
- DDPDUMP("smi greq not grant module: (greq: 1 means SMI dose not grant, maybe SMI hang)");
- clock_on[0] = '\0';
- for (i = 0; i < 32; i++) {
- if (greq & (1 << i)) {
- name = ddp_greq_name(i);
- if (!name)
- continue;
- strncat(clock_on, name, sizeof(clock_on));
- }
- }
- DDPDUMP("%s\n", clock_on);
- }
- static void gamma_dump_reg(void)
- {
- DDPDUMP("== DISP GAMMA REGS ==\n");
- DDPDUMP("(0x000)GA_EN=0x%x\n", DISP_REG_GET(DISP_REG_GAMMA_EN));
- DDPDUMP("(0x004)GA_RESET=0x%x\n", DISP_REG_GET(DISP_REG_GAMMA_RESET));
- DDPDUMP("(0x008)GA_INTEN=0x%x\n", DISP_REG_GET(DISP_REG_GAMMA_INTEN));
- DDPDUMP("(0x00c)GA_INTSTA=0x%x\n", DISP_REG_GET(DISP_REG_GAMMA_INTSTA));
- DDPDUMP("(0x010)GA_STATUS=0x%x\n", DISP_REG_GET(DISP_REG_GAMMA_STATUS));
- DDPDUMP("(0x020)GA_CFG=0x%x\n", DISP_REG_GET(DISP_REG_GAMMA_CFG));
- DDPDUMP("(0x024)GA_IN_COUNT=0x%x\n", DISP_REG_GET(DISP_REG_GAMMA_INPUT_COUNT));
- DDPDUMP("(0x028)GA_OUT_COUNT=0x%x\n", DISP_REG_GET(DISP_REG_GAMMA_OUTPUT_COUNT));
- DDPDUMP("(0x02c)GA_CHKSUM=0x%x\n", DISP_REG_GET(DISP_REG_GAMMA_CHKSUM));
- DDPDUMP("(0x030)GA_SIZE=0x%x\n", DISP_REG_GET(DISP_REG_GAMMA_SIZE));
- DDPDUMP("(0x0c0)GA_DUMMY_REG=0x%x\n", DISP_REG_GET(DISP_REG_GAMMA_DUMMY_REG));
- DDPDUMP("(0x800)GA_LUT=0x%x\n", DISP_REG_GET(DISP_REG_GAMMA_LUT));
- }
- static void gamma_dump_analysis(void)
- {
- DDPDUMP("== DISP GAMMA ANALYSIS ==\n");
- DDPDUMP("gamma: en=%d, w=%d, h=%d, in_p_cnt=%d, in_l_cnt=%d, out_p_cnt=%d, out_l_cnt=%d\n",
- DISP_REG_GET(DISP_REG_GAMMA_EN),
- (DISP_REG_GET(DISP_REG_GAMMA_SIZE) >> 16) & 0x1fff,
- DISP_REG_GET(DISP_REG_GAMMA_SIZE) & 0x1fff,
- DISP_REG_GET(DISP_REG_GAMMA_INPUT_COUNT) & 0x1fff,
- (DISP_REG_GET(DISP_REG_GAMMA_INPUT_COUNT) >> 16) & 0x1fff,
- DISP_REG_GET(DISP_REG_GAMMA_OUTPUT_COUNT) & 0x1fff,
- (DISP_REG_GET(DISP_REG_GAMMA_OUTPUT_COUNT) >> 16) & 0x1fff);
- }
- static void color_dump_reg(DISP_MODULE_ENUM module)
- {
- int index = 0;
- if (DISP_MODULE_COLOR0 == module) {
- index = 0;
- } else if (DISP_MODULE_COLOR1 == module) {
- DDPDUMP("error: DISP COLOR%d dose not exist!\n", index);
- return;
- }
- DDPDUMP("== DISP COLOR%d REGS ==\n", index);
- DDPDUMP("(0x400)COLOR_CFG_MAIN=0x%x\n", DISP_REG_GET(DISP_COLOR_CFG_MAIN));
- DDPDUMP("(0x404)COLOR_PXL_CNT_MAIN=0x%x\n", DISP_REG_GET(DISP_COLOR_PXL_CNT_MAIN));
- DDPDUMP("(0x408)COLOR_LINE_CNT_MAIN=0x%x\n", DISP_REG_GET(DISP_COLOR_LINE_CNT_MAIN));
- DDPDUMP("(0xc00)COLOR_START=0x%x\n", DISP_REG_GET(DISP_COLOR_START));
- DDPDUMP("(0xc28)DISP_COLOR_CK_ON=0x%x\n", DISP_REG_GET(DISP_COLOR_CK_ON));
- DDPDUMP("(0xc50)COLOR_INTER_IP_W=0x%x\n", DISP_REG_GET(DISP_COLOR_INTERNAL_IP_WIDTH));
- DDPDUMP("(0xc54)COLOR_INTER_IP_H=0x%x\n", DISP_REG_GET(DISP_COLOR_INTERNAL_IP_HEIGHT));
- return;
- }
- static void color_dump_analysis(DISP_MODULE_ENUM module)
- {
- int index = 0;
- if (DISP_MODULE_COLOR0 == module) {
- index = 0;
- } else if (DISP_MODULE_COLOR1 == module) {
- DDPDUMP("error: DISP COLOR%d dose not exist!\n", index);
- return;
- }
- DDPDUMP("== DISP COLOR%d ANALYSIS ==\n", index);
- DDPDUMP("color%d: bypass=%d, w=%d, h=%d, pixel_cnt=%d, line_cnt=%d,\n",
- index,
- (DISP_REG_GET(DISP_COLOR_CFG_MAIN) >> 7) & 0x1,
- DISP_REG_GET(DISP_COLOR_INTERNAL_IP_WIDTH),
- DISP_REG_GET(DISP_COLOR_INTERNAL_IP_HEIGHT),
- DISP_REG_GET(DISP_COLOR_PXL_CNT_MAIN) & 0xffff,
- (DISP_REG_GET(DISP_COLOR_LINE_CNT_MAIN) >> 16) & 0x1fff);
- return;
- }
- static void aal_dump_reg(void)
- {
- DDPDUMP("== DISP AAL REGS ==\n");
- DDPDUMP("(0x000)AAL_EN=0x%x\n", DISP_REG_GET(DISP_AAL_EN));
- DDPDUMP("(0x008)AAL_INTEN=0x%x\n", DISP_REG_GET(DISP_AAL_INTEN));
- DDPDUMP("(0x00c)AAL_INTSTA=0x%x\n", DISP_REG_GET(DISP_AAL_INTSTA));
- DDPDUMP("(0x020)AAL_CFG=0x%x\n", DISP_REG_GET(DISP_AAL_CFG));
- DDPDUMP("(0x024)AAL_IN_CNT=0x%x\n", DISP_REG_GET(DISP_AAL_IN_CNT));
- DDPDUMP("(0x028)AAL_OUT_CNT=0x%x\n", DISP_REG_GET(DISP_AAL_OUT_CNT));
- DDPDUMP("(0x030)AAL_SIZE=0x%x\n", DISP_REG_GET(DISP_AAL_SIZE));
- DDPDUMP("(0x20c)AAL_CABC_00=0x%x\n", DISP_REG_GET(DISP_AAL_CABC_00));
- DDPDUMP("(0x214)AAL_CABC_02=0x%x\n", DISP_REG_GET(DISP_AAL_CABC_02));
- DDPDUMP("(0x20c)AAL_STATUS_00=0x%x\n", DISP_REG_GET(DISP_AAL_STATUS_00));
- DDPDUMP("(0x210)AAL_STATUS_01=0x%x\n", DISP_REG_GET(DISP_AAL_STATUS_00 + 0x4));
- DDPDUMP("(0x2a0)AAL_STATUS_31=0x%x\n", DISP_REG_GET(DISP_AAL_STATUS_32 - 0x4));
- DDPDUMP("(0x2a4)AAL_STATUS_32=0x%x\n", DISP_REG_GET(DISP_AAL_STATUS_32));
- DDPDUMP("(0x3b0)AAL_DRE_MAPPING_00=0x%x\n", DISP_REG_GET(DISP_AAL_DRE_MAPPING_00));
- return;
- }
- static void aal_dump_analysis(void)
- {
- DDPDUMP("== DISP AAL ANALYSIS ==\n");
- DDPDUMP("aal: bypass=%d, relay=%d, en=%d, w=%d, h=%d, in(%d,%d),out(%d,%d)\n",
- DISP_REG_GET(DISP_AAL_EN) == 0x0,
- DISP_REG_GET(DISP_AAL_CFG) & 0x01,
- DISP_REG_GET(DISP_AAL_EN),
- (DISP_REG_GET(DISP_AAL_SIZE) >> 16) & 0x1fff,
- DISP_REG_GET(DISP_AAL_SIZE) & 0x1fff,
- DISP_REG_GET(DISP_AAL_IN_CNT) & 0x1fff,
- (DISP_REG_GET(DISP_AAL_IN_CNT) >> 16) & 0x1fff,
- DISP_REG_GET(DISP_AAL_OUT_CNT) & 0x1fff,
- (DISP_REG_GET(DISP_AAL_OUT_CNT) >> 16) & 0x1fff);
- }
- static void pwm_dump_reg(DISP_MODULE_ENUM module)
- {
- int index = 0;
- unsigned long reg_base = 0;
- if (module == DISP_MODULE_PWM0) {
- index = 0;
- reg_base = DISPSYS_PWM0_BASE;
- } else {
- index = 1;
- reg_base = DISPSYS_PWM0_BASE;
- }
- DDPDUMP("== DISP PWM%d REGS ==\n", index);
- DDPDUMP("(0x000)PWM_EN=0x%x\n", DISP_REG_GET(reg_base + DISP_PWM_EN_OFF));
- DDPDUMP("(0x008)PWM_CON_0=0x%x\n", DISP_REG_GET(reg_base + DISP_PWM_CON_0_OFF));
- DDPDUMP("(0x010)PWM_CON_1=0x%x\n", DISP_REG_GET(reg_base + DISP_PWM_CON_1_OFF));
- DDPDUMP("(0x028)PWM_DEBUG=0x%x\n", DISP_REG_GET(reg_base + 0x28));
- return;
- }
- static void pwm_dump_analysis(DISP_MODULE_ENUM module)
- {
- int index = 0;
- unsigned int reg_base = 0;
- if (module == DISP_MODULE_PWM0) {
- index = 0;
- reg_base = DISPSYS_PWM0_BASE;
- } else {
- index = 1;
- reg_base = DISPSYS_PWM0_BASE;
- }
- DDPDUMP("== DISP PWM%d ANALYSIS ==\n", index);
- #if 0 /* TODO: clk reg?? */
- DDPDUMP("pwm clock=%d\n", (DISP_REG_GET(DISP_REG_CLK_CFG_1_CLR) >> 7) & 0x1);
- #endif
- return;
- }
- static void od_dump_reg(void)
- {
- DDPDUMP("== DISP OD REGS ==\n");
- DDPDUMP("(00)EN=0x%x\n", DISP_REG_GET(DISP_REG_OD_EN));
- DDPDUMP("(04)RESET=0x%x\n", DISP_REG_GET(DISP_REG_OD_RESET));
- DDPDUMP("(08)INTEN=0x%x\n", DISP_REG_GET(DISP_REG_OD_INTEN));
- DDPDUMP("(0C)INTSTA=0x%x\n", DISP_REG_GET(DISP_REG_OD_INTSTA));
- DDPDUMP("(10)STATUS=0x%x\n", DISP_REG_GET(DISP_REG_OD_STATUS));
- DDPDUMP("(20)CFG=0x%x\n", DISP_REG_GET(DISP_REG_OD_CFG));
- DDPDUMP("(24)INPUT_COUNT=0x%x\n", DISP_REG_GET(DISP_REG_OD_INPUT_COUNT));
- DDPDUMP("(28)OUTPUT_COUNT=0x%x\n", DISP_REG_GET(DISP_REG_OD_OUTPUT_COUNT));
- DDPDUMP("(2C)CHKSUM=0x%x\n", DISP_REG_GET(DISP_REG_OD_CHKSUM));
- DDPDUMP("(30)SIZE=0x%x\n", DISP_REG_GET(DISP_REG_OD_SIZE));
- DDPDUMP("(40)HSYNC_WIDTH=0x%x\n", DISP_REG_GET(DISP_REG_OD_HSYNC_WIDTH));
- DDPDUMP("(44)VSYNC_WIDTH=0x%x\n", DISP_REG_GET(DISP_REG_OD_VSYNC_WIDTH));
- DDPDUMP("(48)MISC=0x%x\n", DISP_REG_GET(DISP_REG_OD_MISC));
- DDPDUMP("(C0)DUMMY_REG=0x%x\n", DISP_REG_GET(DISP_REG_OD_DUMMY_REG));
- return;
- }
- static void od_dump_analysis(void)
- {
- DDPDUMP("== DISP OD ANALYSIS ==\n");
- DDPDUMP("od: w=%d, h=%d, bypass=%d\n",
- (DISP_REG_GET(DISP_REG_OD_SIZE) >> 16) & 0xffff,
- DISP_REG_GET(DISP_REG_OD_SIZE) & 0xffff, DISP_REG_GET(DISP_REG_OD_CFG) & 0x1);
- return;
- }
- static void ccorr_dump_reg(void)
- {
- DDPDUMP("== DISP CCORR REGS ==\n");
- DDPDUMP("(00)EN=0x%x\n", DISP_REG_GET(DISP_REG_CCORR_EN));
- DDPDUMP("(20)CFG=0x%x\n", DISP_REG_GET(DISP_REG_CCORR_CFG));
- DDPDUMP("(24)IN_CNT=0x%x\n", DISP_REG_GET(DISP_REG_CCORR_IN_CNT));
- DDPDUMP("(28)OUT_CNT=0x%x\n", DISP_REG_GET(DISP_REG_CCORR_OUT_CNT));
- DDPDUMP("(30)SIZE=0x%x\n", DISP_REG_GET(DISP_REG_CCORR_SIZE));
- }
- static void ccorr_dump_analyze(void)
- {
- DDPDUMP("ccorr: en=%d, config=%d, w=%d, h=%d, in_p_cnt=%d, in_l_cnt=%d, out_p_cnt=%d, out_l_cnt=%d\n",
- DISP_REG_GET(DISP_REG_CCORR_EN), DISP_REG_GET(DISP_REG_CCORR_CFG),
- (DISP_REG_GET(DISP_REG_CCORR_SIZE) >> 16) & 0x1fff,
- DISP_REG_GET(DISP_REG_CCORR_SIZE) & 0x1fff,
- DISP_REG_GET(DISP_REG_CCORR_IN_CNT) & 0x1fff,
- (DISP_REG_GET(DISP_REG_CCORR_IN_CNT) >> 16) & 0x1fff,
- DISP_REG_GET(DISP_REG_CCORR_IN_CNT) & 0x1fff,
- (DISP_REG_GET(DISP_REG_CCORR_IN_CNT) >> 16) & 0x1fff);
- }
- static void dither_dump_reg(void)
- {
- DDPDUMP("== DISP DITHER REGS ==\n");
- DDPDUMP("(00)EN=0x%x\n", DISP_REG_GET(DISP_REG_DITHER_EN));
- DDPDUMP("(20)CFG=0x%x\n", DISP_REG_GET(DISP_REG_DITHER_CFG));
- DDPDUMP("(24)IN_CNT=0x%x\n", DISP_REG_GET(DISP_REG_DITHER_IN_CNT));
- DDPDUMP("(28)OUT_CNT=0x%x\n", DISP_REG_GET(DISP_REG_DITHER_OUT_CNT));
- DDPDUMP("(30)SIZE=0x%x\n", DISP_REG_GET(DISP_REG_DITHER_SIZE));
- }
- static void dither_dump_analyze(void)
- {
- DDPDUMP("dither: en=%d, config=%d, w=%d, h=%d, in_p_cnt=%d, in_l_cnt=%d, out_p_cnt=%d, out_l_cnt=%d\n",
- DISP_REG_GET(DISPSYS_DITHER_BASE + 0x000), DISP_REG_GET(DISPSYS_DITHER_BASE + 0x020),
- (DISP_REG_GET(DISP_REG_DITHER_SIZE) >> 16) & 0x1fff,
- DISP_REG_GET(DISP_REG_DITHER_SIZE) & 0x1fff,
- DISP_REG_GET(DISP_REG_DITHER_IN_CNT) & 0x1fff,
- (DISP_REG_GET(DISP_REG_DITHER_IN_CNT) >> 16) & 0x1fff,
- DISP_REG_GET(DISP_REG_DITHER_OUT_CNT) & 0x1fff,
- (DISP_REG_GET(DISP_REG_DITHER_OUT_CNT) >> 16) & 0x1fff);
- }
- static void ufoe_dump(void)
- {
- DDPDUMP("== DISP UFOE REGS ==\n");
- DDPDUMP("(0x000)UFOE_START=0x%x\n", DISP_REG_GET(DISP_REG_UFO_START));
- DDPDUMP("(0x020)UFOE_PAD=0x%x\n", DISP_REG_GET(DISP_REG_UFO_CR0P6_PAD));
- DDPDUMP("(0x050)UFOE_WIDTH=0x%x\n", DISP_REG_GET(DISP_REG_UFO_FRAME_WIDTH));
- DDPDUMP("(0x054)UFOE_HEIGHT=0x%x\n", DISP_REG_GET(DISP_REG_UFO_FRAME_HEIGHT));
- DDPDUMP("(0x100)UFOE_CFG0=0x%x\n", DISP_REG_GET(DISP_REG_UFO_CFG_0B));
- DDPDUMP("(0x104)UFOE_CFG1=0x%x\n", DISP_REG_GET(DISP_REG_UFO_CFG_1B));
- }
- static void dsc_dump(void)
- {
- #if 0
- u32 i = 0;
- DDPDUMP("== DISP DSC REGS ==\n");
- DDPDUMP("(0x000)DSC_START=0x%x\n", DISP_REG_GET(DISP_REG_DSC_CON));
- DDPDUMP("(0x000)DSC_SLICE_WIDTH=0x%x\n", DISP_REG_GET(DISP_REG_DSC_SLICE_W));
- DDPDUMP("(0x000)DSC_SLICE_HIGHT=0x%x\n", DISP_REG_GET(DISP_REG_DSC_SLICE_H));
- DDPDUMP("(0x000)DSC_WIDTH=0x%x\n", DISP_REG_GET(DISP_REG_DSC_PIC_W));
- DDPDUMP("(0x000)DSC_HEIGHT=0x%x\n", DISP_REG_GET(DISP_REG_DSC_PIC_H));
- DDPDUMP("-- Start dump dsc registers --\n");
- for (i = 0; i < 204; i += 16) {
- DDPDUMP("DSC+%x: 0x%x 0x%x 0x%x 0x%x\n", i, DISP_REG_GET(DISPSYS_DSC_BASE + i),
- DISP_REG_GET(DISPSYS_DSC_BASE + i + 0x4), DISP_REG_GET(DISPSYS_DSC_BASE + i + 0x8),
- DISP_REG_GET(DISPSYS_DSC_BASE + i + 0xc));
- }
- #endif
- }
- static void dsi_dump_reg(DISP_MODULE_ENUM module)
- {
- DSI_DumpRegisters(module, 1);
- #if 0
- if (DISP_MODULE_DSI0) {
- int i = 0;
- DDPDUMP("== DISP DSI0 REGS ==\n");
- for (i = 0; i < 25 * 16; i += 16) {
- DDPDUMP("DSI0+%04x: 0x%08x 0x%08x 0x%08x 0x%08x\n", i,
- INREG32(DISPSYS_DSI0_BASE + i), INREG32(DISPSYS_DSI0_BASE + i + 0x4),
- INREG32(DISPSYS_DSI0_BASE + i + 0x8),
- INREG32(DISPSYS_DSI0_BASE + i + 0xc));
- }
- DDPDUMP("DSI0 CMDQ+0x200: 0x%08x 0x%08x 0x%08x 0x%08x\n",
- INREG32(DISPSYS_DSI0_BASE + 0x200), INREG32(DISPSYS_DSI0_BASE + 0x200 + 0x4),
- INREG32(DISPSYS_DSI0_BASE + 0x200 + 0x8),
- INREG32(DISPSYS_DSI0_BASE + 0x200 + 0xc));
- }
- #endif
- }
- static void dpi_dump_reg(void)
- {
- int i;
- DDPDUMP("-- Start dump DPI registers --\n");
- for (i = 0; i <= 0x40; i += 4)
- DDPDUMP("DPI+%04x: 0x%08x\n", i, INREG32(DISPSYS_DPI_BASE + i));
- for (i = 0x68; i <= 0x7C; i += 4)
- DDPDUMP("DPI+%04x: 0x%08x\n", i, INREG32(DISPSYS_DPI_BASE + i));
- DDPDUMP("DPI+Color Bar : 0x%04x : 0x%08x\n", 0xF00, INREG32(DISPSYS_DPI_BASE + 0xF00));
- DDPDUMP("DPI MMSYS_CG_CON0: 0x%08x\n", INREG32(DISP_REG_CONFIG_MMSYS_CG_CON0));
- DDPDUMP("DPI MMSYS_CG_CON1: 0x%08x\n", INREG32(DISP_REG_CONFIG_MMSYS_CG_CON1));
- }
- static void dpi_dump_analysis(void)
- {
- #if 0
- DDPDUMP("== DISP DPI ANALYSIS ==\n");
- /* TODO: mmsys clk?? */
- DDPDUMP("DPI clock=0x%x\n", DISP_REG_GET(DISP_REG_CLK_CFG_6_DPI));
- DDPDUMP("DPI clock_clear=%d\n", (DISP_REG_GET(DISP_REG_CLK_CFG_6_CLR) >> 7) & 0x1);
- #endif
- }
- static int split_dump_regs(void)
- {
- DDPDUMP("== DISP SPLIT0 REGS ==\n");
- DDPDUMP("(0x000)S_ENABLE=0x%x\n", DISP_REG_GET(DISP_REG_SPLIT_ENABLE));
- DDPDUMP("(0x004)S_SW_RST=0x%x\n", DISP_REG_GET(DISP_REG_SPLIT_SW_RESET));
- DDPDUMP("(0x008)S_DEBUG=0x%x\n", DISP_REG_GET(DISP_REG_SPLIT_DEBUG));
- return 0;
- }
- static char *split_state(unsigned int state)
- {
- switch (state) {
- case 1:
- return "idle";
- case 2:
- return "wait";
- case 4:
- return "busy";
- default:
- return "unknown";
- }
- return "unknown";
- }
- static int split_dump_analysis(void)
- {
- unsigned int pixel = DISP_REG_GET_FIELD(DEBUG_FLD_IN_PIXEL_CNT, DISP_REG_SPLIT_DEBUG);
- unsigned int state = DISP_REG_GET_FIELD(DEBUG_FLD_SPLIT_FSM, DISP_REG_SPLIT_DEBUG);
- DDPDUMP("== DISP SPLIT0 ANALYSIS ==\n");
- DDPDUMP("cur_pixel %u, state %s\n", pixel, split_state(state));
- return 0;
- }
- int ddp_dump_reg(DISP_MODULE_ENUM module)
- {
- switch (module) {
- case DISP_MODULE_WDMA0:
- //wdma_dump_reg(module);
- break;
- case DISP_MODULE_RDMA0:
- case DISP_MODULE_RDMA1:
- case DISP_MODULE_RDMA2:
- RDMADump(module);
- break;
- case DISP_MODULE_OVL0:
- case DISP_MODULE_OVL1:
- case DISP_MODULE_OVL0_2L:
- case DISP_MODULE_OVL1_2L:
- OVLDump(module);
- break;
- case DISP_MODULE_GAMMA0:
- gamma_dump_reg();
- break;
- case DISP_MODULE_CONFIG:
- mmsys_config_dump_reg();
- break;
- case DISP_MODULE_MUTEX:
- mutex_dump_reg();
- break;
- case DISP_MODULE_SPLIT0:
- split_dump_regs();
- break;
- case DISP_MODULE_COLOR0:
- case DISP_MODULE_COLOR1:
- color_dump_reg(module);
- break;
- case DISP_MODULE_AAL0:
- aal_dump_reg();
- break;
- case DISP_MODULE_PWM0:
- pwm_dump_reg(module);
- break;
- case DISP_MODULE_OD:
- od_dump_reg();
- break;
- case DISP_MODULE_DSI0:
- case DISP_MODULE_DSI1:
- case DISP_MODULE_DSIDUAL:
- dsi_dump_reg(module);
- break;
- case DISP_MODULE_DPI:
- dpi_dump_reg();
- break;
- case DISP_MODULE_CCORR0:
- ccorr_dump_reg();
- break;
- case DISP_MODULE_DITHER0:
- dither_dump_reg();
- break;
- case DISP_MODULE_UFOE:
- ufoe_dump();
- break;
- case DISP_MODULE_DSC:
- dsc_dump();
- break;
- default:
- DDPDUMP("no dump_reg for module %s(%d)\n", ddp_get_module_name(module), module);
- }
- return 0;
- }
- int ddp_dump_analysis(DISP_MODULE_ENUM module)
- {
- switch (module) {
- case DISP_MODULE_WDMA0:
- //wdma_dump_analysis(module);
- break;
- case DISP_MODULE_RDMA0:
- case DISP_MODULE_RDMA1:
- case DISP_MODULE_RDMA2:
- rdma_dump_analysis(module);
- break;
- case DISP_MODULE_OVL0:
- case DISP_MODULE_OVL1:
- case DISP_MODULE_OVL0_2L:
- case DISP_MODULE_OVL1_2L:
- ovl_dump_analysis(module);
- break;
- case DISP_MODULE_GAMMA0:
- gamma_dump_analysis();
- break;
- case DISP_MODULE_CONFIG:
- mmsys_config_dump_analysis();
- break;
- case DISP_MODULE_MUTEX:
- mutex_dump_analysis();
- break;
- case DISP_MODULE_SPLIT0:
- split_dump_analysis();
- break;
- case DISP_MODULE_COLOR0:
- case DISP_MODULE_COLOR1:
- color_dump_analysis(module);
- break;
- case DISP_MODULE_AAL0:
- aal_dump_analysis();
- break;
- case DISP_MODULE_OD:
- od_dump_analysis();
- break;
- case DISP_MODULE_PWM0:
- pwm_dump_analysis(module);
- break;
- case DISP_MODULE_DSI0:
- case DISP_MODULE_DSI1:
- case DISP_MODULE_DSIDUAL:
- dsi_analysis(module);
- break;
- case DISP_MODULE_DPI:
- dpi_dump_analysis();
- break;
- case DISP_MODULE_CCORR0:
- ccorr_dump_analyze();
- break;
- case DISP_MODULE_DITHER0:
- dither_dump_analyze();
- break;
- default:
- DDPDUMP("no dump_analysis for module %s(%d)\n", ddp_get_module_name(module),
- module);
- }
- return 0;
- }
|