#include #include #include #include #include #include #include "w100fb.h" #define dump_reg(x) { caddr=0x010000+x; if (! qaddr) reg=*((unsigned long *)(map+caddr)); if (! qaddr || caddr==qaddr) { printf(#x "(0x%x): 0x%lx\n", caddr, reg);} } #define dump_reg_b(x,b) { if (! qaddr || caddr==qaddr) { printf(x " 0x%lx ", (reg) & ((1 << b)-1)); reg >>= b; }} #define dump_reg_bd(x,b) { if (! qaddr || caddr==qaddr) { printf(x " %ld ", (reg) & ((1 << b)-1)); reg >>= b; }} int main(int argc, char **argv) { int fd; unsigned long addr; unsigned long qaddr=0,caddr; int page,debug=0; int pagesize,offset; void *map; unsigned long *l; unsigned long reg; if (argv[1]) { qaddr=strtoul(argv[1], NULL, 0); reg=strtoul(argv[2], NULL, 0); } else { pagesize=getpagesize(); addr=0x08000000; if (debug) printf("ok addr=0x%lx\n",addr); fd=open("/dev/mem",O_RDWR); if (debug) printf("fd=%d\n", fd); map=mmap(NULL, pagesize*4096, PROT_READ|PROT_WRITE, MAP_SHARED, fd, addr); l=map+0x010000; } dump_reg(mmCHIP_ID); printf("\n"); dump_reg(mmLCD_FORMAT); dump_reg(mmLCDD_CNTL1); dump_reg(mmLCDD_CNTL2); dump_reg(mmGENLCD_CNTL1); dump_reg(mmGENLCD_CNTL2); dump_reg(mmGENLCD_CNTL3); dump_reg(mmCRTC_PS1_ACTIVE); printf("\n"); dump_reg(mmCRTC_SS); printf("\t"); dump_reg_b("ss_start",10); dump_reg_b("",6); dump_reg_b("ss_end",10); dump_reg_b("",2); dump_reg_b("ss_align",1); dump_reg_b("ss_pol",1); dump_reg_b("ss_run_mode",1); dump_reg_b("ss_en",1); printf("\n"); dump_reg(mmCRTC_LS); dump_reg(mmCRTC_GS); dump_reg(mmCRTC_VPOS_GS); dump_reg(mmCRTC_REV); dump_reg(mmCRTC_DCLK); dump_reg(mmCRTC_GCLK); dump_reg(mmCRTC_GOE); printf("\n"); dump_reg(mmMEM_EXT_CNTL); dump_reg(mmMEM_SDRAM_MODE_REG); dump_reg(mmMEM_EXT_TIMING_CNTL); dump_reg(mmMEM_IO_CNTL); printf("\n"); dump_reg(mmBM_EXT_MEM_BANDWIDTH); dump_reg(mmBM_OFFSET); dump_reg(mmBM_MEM_EXT_TIMING_CNTL); dump_reg(mmBM_MEM_EXT_CNTL); dump_reg(mmBM_MEM_MODE_REG); dump_reg(mmBM_MEM_IO_CNTL); dump_reg(mmBM_CONFIG); printf("\n"); dump_reg(mmGPIO_DATA); dump_reg(mmGPIO_DATA2); dump_reg(mmGPIO_CNTL1); dump_reg(mmGPIO_CNTL2); dump_reg(mmGPIO_CNTL3); dump_reg(mmGPIO_CNTL4); printf("\n"); dump_reg(mmCLK_PIN_CNTL); printf("\t"); dump_reg_b("osc_en",1); dump_reg_b("osc_gain",5); dump_reg_b("dont_use_xtalin",1); dump_reg_b("xtalin_pm_en",1); dump_reg_b("xtalin_dbl_en",1); dump_reg_b("",7); dump_reg_b("cg_debug",16); printf("\n"); dump_reg(mmPLL_REF_FB_DIV); printf("\t"); dump_reg_b("pll_ref_div",4); dump_reg_b("",4); dump_reg_b("pll_fb_div_int",6); dump_reg_b("",2); dump_reg_b("pll_fb_div_frac",3); dump_reg_b("",1); dump_reg_b("pll_reset_time",4); dump_reg_b("pll_lock_time",8); printf("\n"); dump_reg(mmPLL_CNTL); printf("\t"); dump_reg_b("pll_pwdn",1); dump_reg_b("pll_reset",1); dump_reg_b("pll_pm_en",1); dump_reg_b("pll_mode",1); dump_reg_b("pll_refclk_sel",1); dump_reg_b("pll_fbclk_sel",1); dump_reg_b("pll_tcpoff",1); dump_reg_b("pll_pcp",3); dump_reg_b("pll_pvg",3); dump_reg_b("pll_vcofr",1); dump_reg_b("pll_ioffset",2); dump_reg_b("pll_pecc_mode",2); dump_reg_b("pll_pecc_scon",2); dump_reg_b("pll_dactal",4); dump_reg_b("pll_cp_clip",2); dump_reg_b("pll_conf",3); dump_reg_b("pll_mbctrl",2); dump_reg_b("pll_ring_off",1); printf("\n"); dump_reg(mmSCLK_CNTL); printf("\t"); dump_reg_b("sclk_src_sel",2); dump_reg_b("",2); dump_reg_b("sclk_post_div_fast",4); dump_reg_b("sclk_clkon_hys",3); dump_reg_b("sclk_post_div_slow",4); dump_reg_b("disp_cg_ok2switch_en",1); dump_reg_b("sclk_force_reg",1); dump_reg_b("sclk_force_disp",1); dump_reg_b("sclk_force_mc",1); dump_reg_b("sclk_force_extmc",1); dump_reg_b("sclk_force_cp",1); dump_reg_b("sclk_force_e2",1); dump_reg_b("sclk_force_e3",1); dump_reg_b("sclk_force_idct",1); dump_reg_b("sclk_force_bist",1); dump_reg_b("busy_extend_cp",1); dump_reg_b("busy_extend_e2",1); dump_reg_b("busy_extend_e3",1); dump_reg_b("busy_extend_idct",1); dump_reg_b("",3); printf("\n"); dump_reg(mmPCLK_CNTL); printf("\t"); dump_reg_b("pclk_src_sel",2); dump_reg_b("",2); dump_reg_b("pclk_post_div",4); dump_reg_b("",8); dump_reg_b("pclk_force_disp",1); dump_reg_b("",15); printf("\n"); dump_reg(mmCLK_TEST_CNTL); printf("\t"); dump_reg_b("testclk_sel",4); dump_reg_b("",3); dump_reg_b("start_check_freq",1); dump_reg_b("tstcount_rst",1); dump_reg_b("",15); dump_reg_b("test_count",8); printf("\n"); dump_reg(mmPWRMGT_CNTL); printf("\t"); dump_reg_b("pwm_enable",1); dump_reg_b("",1); dump_reg_b("pwm_mode_req",2); dump_reg_b("pwm_wakeup_cond",2); dump_reg_b("pwm_fast_noml_hw_en",1); dump_reg_b("pwm_noml_fast_hw_en",1); dump_reg_b("pwm_fast_noml_cond",4); dump_reg_b("pwm_noml_fast_cond",4); dump_reg_b("pwm_idle_timer",8); dump_reg_b("pwm_busy_timer",8); printf("\n"); dump_reg(mmMC_FB_LOCATION); dump_reg(mmGRAPHIC_CTRL); printf("\t"); dump_reg_b("color_depth",3); dump_reg_b("portrait_mode",2); dump_reg_b("low_power_on",1); dump_reg_b("req_freq",4); dump_reg_b("en_crtc",1); dump_reg_b("en_graphic_req",1); dump_reg_b("en_graphic_crtc",1); dump_reg_b("total_req_graphic",10); dump_reg_b("lcd_pclk_on",1); dump_reg_b("lcd_sclk_on",1); dump_reg_b("pclk_running",1); dump_reg_b("sclk_running",1); dump_reg_b("",5); printf("\n"); dump_reg(mmGRAPHIC_OFFSET); dump_reg(mmCRTC_TOTAL); printf("\t"); dump_reg_bd("crtc_h_total",10); dump_reg_b("",6); dump_reg_bd("crtc_v_total",10); dump_reg_b("",6); printf("\n"); dump_reg(mmACTIVE_H_DISP); printf("\t"); dump_reg_bd("active_h_start",10); dump_reg_b("",6); dump_reg_bd("active_h_end",10); dump_reg_b("",6); printf("\n"); dump_reg(mmACTIVE_V_DISP); printf("\t"); dump_reg_bd("active_v_start",10); dump_reg_b("",6); dump_reg_bd("active_v_end",10); dump_reg_b("",6); printf("\n"); dump_reg(mmGRAPHIC_H_DISP); printf("\t"); dump_reg_bd("graphic_h_start",10); dump_reg_b("",6); dump_reg_bd("graphic_h_end",10); dump_reg_b("",6); printf("\n"); dump_reg(mmGRAPHIC_V_DISP); printf("\t"); dump_reg_bd("graphic_v_start",10); dump_reg_b("",6); dump_reg_bd("graphic_v_end",10); dump_reg_b("",6); printf("\n"); dump_reg(mmDISP_DEBUG); dump_reg(mmLCD_BACKGROUND_COLOR); dump_reg(mmCRTC_PS1_ACTIVE); dump_reg(mmDISP_DEBUG2); dump_reg(mmWRAP_TOP_DIR); printf("\t"); dump_reg_b("top_addr",23); dump_reg_b("",9); printf("\n"); dump_reg(mmWRAP_START_DIR); dump_reg(mmCIF_CNTL); printf("\t"); dump_reg_b("swap_reg",2); dump_reg_b("swap_fbuf_1",2); dump_reg_b("swap_fbuf_2",2); dump_reg_b("swap_fbuf_3",2); dump_reg_b("pmi_int_disable",1); dump_reg_b("pmi_schmen_disable",1); dump_reg_b("intb_oe",1); dump_reg_b("en_wait_to_compensate_dq_prop_dly",1); dump_reg_b("compensate_wait_rd_size",2); dump_reg_b("wait_asserted_timeout_val",2); dump_reg_b("wait_masked_val",2); dump_reg_b("en_wait_timeout",1); dump_reg_b("en_one_clk_setup_before_wait",1); dump_reg_b("interrupt_active_high",1); dump_reg_b("en_overwrite_straps",1); dump_reg_b("strap_wait_active_hi",1); dump_reg_b("lat_busy_count",2); dump_reg_b("lat_rd_pm4_sclk_busy",1); dump_reg_b("dis_system_bits",1); dump_reg_b("dis_mr",1); dump_reg_b("cif_spare_1",4); printf("\n"); dump_reg(mmCFGREG_BASE); printf("\t"); dump_reg_b("cfgreg_base",24); dump_reg_b("",8); printf("\n"); dump_reg(mmCIF_IO); printf("\t"); dump_reg_b("dq_srp",1); dump_reg_b("dq_srn",1); dump_reg_b("dq_sp",4); dump_reg_b("dq_sn",4); dump_reg_b("waitb_srp",1); dump_reg_b("waitb_srn",1); dump_reg_b("waitb_sp",4); dump_reg_b("waitb_sn",4); dump_reg_b("intb_srp",1); dump_reg_b("intb_srn",1); dump_reg_b("intb_sp",4); dump_reg_b("intb_sn",4); dump_reg_b("",2); printf("\n"); dump_reg(mmCIF_READ_DBG); dump_reg(mmCIF_WRITE_DBG); dump_reg(mmRBBM_CNTL); dump_reg(mmMC_EXT_MEM_LOCATION); dump_reg(mmSCRATCH_UMSK); dump_reg(mmGRAPHIC_PITCH); dump_reg(mmCRTC_FRAME); dump_reg(mmCRTC_FRAME_VPOS); dump_reg(mmDISP_DB_BUF_CNTL); printf("\t"); dump_reg_b("en_db_buf",1); dump_reg_b("update_db_buf_done",1); dump_reg_b("db_buf_cntl",6); dump_reg_b("",24); printf("\n"); dump_reg(mmCRTC_DEFAULT_COUNT); return 0; }