#if defined(CONFIG_MTK_MULTIBRIDGE_SUPPORT) #define MT8193_CKGEN_VFY 1 #if MT8193_CKGEN_VFY #include #include #include #include #include #include #include #include #include #include #include #include #include "mt8193.h" #include "mt8193_ckgen.h" int mt8193_ckgen_config_pad_level_shift(int i4GroupNum, int i4TurnLow) { u32 u4Tmp; pr_debug("[CKGEN] mt8193_ckgen_config_pad_level_shift() %d, %d\n", i4GroupNum, i4TurnLow); if (i4TurnLow == 0) { /* 3.3V->1.8V */ u4Tmp = CKGEN_READ32(REG_RW_LS_CTRL); u4Tmp |= LS_CTRL_SHIFT_LOW_EN; CKGEN_WRITE32(REG_RW_LS_CTRL, u4Tmp); u4Tmp &= (~(1U< 3.3V */ u4Tmp = CKGEN_READ32(REG_RW_LS_CTRL); u4Tmp |= LS_CTRL_SHIFT_HIGH_EN; CKGEN_WRITE32(REG_RW_LS_CTRL, u4Tmp); u4Tmp |= (1U< 1 && u4Crc_2 != u4Crc) { pr_err("[HDMI] CHECK CRC ERROR! 0x%x, 0x%x, %d\n", u4Crc, u4Crc_2, i); break; } else { pr_debug("[HDMI] CHECK CRC OK %d\n", i); } u4Crc = u4Crc_2; } } void mt8193_spm_control_test(int u4Func) { pr_debug("[CKGEN] mt8193_spm_control_test()enters. %d\n", u4Func); /* mt8193_io_agent_test(); */ if (u4Func == 0) { /* loop 1 */ mt8193_lvds_sys_spm_control(false); msleep(1000); mt8193_hdmi_sys_spm_control(false); msleep(1000); mt8193_nfi_sys_spm_control(false); msleep(1000); mt8193_lvds_sys_spm_control(true); msleep(1000); mt8193_hdmi_sys_spm_control(true); msleep(1000); mt8193_nfi_sys_spm_control(true); msleep(1000); mt8193_io_agent_test(); /* loop 2 */ mt8193_hdmi_sys_spm_control(false); msleep(1000); mt8193_lvds_sys_spm_control(false); msleep(1000); mt8193_nfi_sys_spm_control(false); msleep(1000); mt8193_lvds_sys_spm_control(true); msleep(1000); mt8193_hdmi_sys_spm_control(true); msleep(1000); mt8193_nfi_sys_spm_control(true); msleep(1000); mt8193_io_agent_test(); /* loop 3 */ mt8193_nfi_sys_spm_control(false); msleep(1000); mt8193_lvds_sys_spm_control(false); msleep(1000); mt8193_hdmi_sys_spm_control(false); msleep(1000); mt8193_lvds_sys_spm_control(true); msleep(1000); mt8193_hdmi_sys_spm_control(true); msleep(1000); mt8193_nfi_sys_spm_control(true); msleep(1000); mt8193_io_agent_test(); /* loop 4 */ mt8193_lvds_sys_spm_control(false); msleep(1000); mt8193_nfi_sys_spm_control(false); msleep(1000); mt8193_hdmi_sys_spm_control(false); msleep(1000); mt8193_lvds_sys_spm_control(true); msleep(1000); mt8193_hdmi_sys_spm_control(true); msleep(1000); mt8193_nfi_sys_spm_control(true); msleep(1000); mt8193_io_agent_test(); /* loop 5 */ mt8193_hdmi_sys_spm_control(false); msleep(1000); mt8193_lvds_sys_spm_control(false); msleep(1000); mt8193_nfi_sys_spm_control(false); msleep(1000); mt8193_lvds_sys_spm_control(true); msleep(1000); mt8193_hdmi_sys_spm_control(true); msleep(1000); mt8193_nfi_sys_spm_control(true); msleep(1000); mt8193_io_agent_test(); } else if (u4Func == 1) { /* step 1: turn off digital step 2: turn off analog step3: BUS CLK SWITCH TO 32K step4: PULL LOW EN_BB & CK_SEL Step5: PULL UP EN_BB & CK_SEL step6: BUS CLK SWITCH to 26M step7: turn on analog step8: turn on digital step9: test function */ /* lvds spm ctrl test */ mt8193_lvds_sys_spm_control(false); msleep(100); /*mt8193_hdmi_sys_spm_control(false);*/ msleep(100); /*mt8193_nfi_sys_spm_control(false);*/ msleep(100); mt8193_lvds_ana_pwr_control(false); msleep(100); /*mt8193_hdmi_ana_pwr_control(false);*/ msleep(100); mt8193_pllgp_ana_pwr_control(false); msleep(100); /*mt8193_nfi_ana_pwr_control(false);*/ msleep(1000); /* bus clk switch to 32K*/ mt8193_bus_clk_switch(true); msleep(20); /* pull low en_bb */ /* mt8193_en_bb_ctrl(true); */ msleep(100); /* pull up en_bb */ /* mt8193_en_bb_ctrl(false); */ /* msleep(20); */ /* bus clk switch to 26M */ mt8193_bus_clk_switch(false); /*mt8193_nfi_ana_pwr_control(true);*/ msleep(100); mt8193_pllgp_ana_pwr_control(true); msleep(100); /*mt8193_hdmi_ana_pwr_control(true);*/ msleep(100); mt8193_lvds_ana_pwr_control(true); msleep(100); mt8193_lvds_sys_spm_control(true); msleep(100); /*mt8193_hdmi_sys_spm_control(true);*/ msleep(100); /*mt8193_nfi_sys_spm_control(true);*/ msleep(100); /* lcm_mt8193_lvds_on_test();*/ } else if (u4Func == 2) { /*int i = 0;*/ /*for (; i<=1000; i++) { */ /*pr_debug("[CKGEN] LOOP %d START-------------------------------------\n", i);*/ /* hdmi spm ctrl test */ msleep(1000); mt8193_lvds_ana_pwr_control(false); msleep(20); mt8193_hdmi_ana_pwr_control(false); msleep(20); mt8193_pllgp_ana_pwr_control(false); msleep(20); mt8193_nfi_ana_pwr_control(false); msleep(20); mt8193_lvds_sys_spm_control(false); msleep(20); mt8193_hdmi_sys_spm_control(false); msleep(20); mt8193_nfi_sys_spm_control(false); msleep(20); /* bus clk switch to 32K */ mt8193_bus_clk_switch(true); msleep(1000); /* pull low en_bb */ /*mt8193_en_bb_ctrl(true);*/ /*msleep(100);*/ /* pull up en_bb*/ /*mt8193_en_bb_ctrl(false);*/ /*msleep(1);*/ /* bus clk switch to 26M */ mt8193_bus_clk_switch(false); msleep(20); mt8193_lvds_sys_spm_control(true); msleep(20); mt8193_hdmi_sys_spm_control(true); msleep(20); mt8193_nfi_sys_spm_control(true); msleep(20); mt8193_nfi_ana_pwr_control(true); msleep(20); mt8193_pllgp_ana_pwr_control(true); msleep(20); mt8193_hdmi_ana_pwr_control(true); msleep(20); mt8193_lvds_ana_pwr_control(true); msleep(1000); /*pr_debug("[CKGEN] LOOP %d END-------------------------------------\n", i); */ /*}*/ /*mt8193_hdmi_on_test();*/ } else if (u4Func == 3) { /* nfi spm ctrl test */ mt8193_nfi_sys_spm_control(false); msleep(1000); mt8193_nfi_sys_spm_control(true); msleep(1000); mt8193_io_agent_test(); } else if (u4Func == 4) { /* bus clk switch to 32K */ mt8193_bus_clk_switch(true); msleep(20); /* pull low en_bb */ /* mt8193_en_bb_ctrl(true); */ } else if (u4Func == 5) { /* pull up en_bb */ /* mt8193_en_bb_ctrl(false); */ /* bus clk switch to 32K */ mt8193_bus_clk_switch(false); } pr_debug("[CKGEN] mt8193_spm_control() exit\n"); } #endif #endif