static int mixer_dbg_show(struct seq_file *s, void *arg) { struct drm_info_node *node = s->private; struct sti_mixer *mixer = (struct sti_mixer *)node->info_ent->data; seq_printf(s, "%s: (vaddr = 0x%p)", sti_mixer_to_str(mixer), mixer->regs); DBGFS_DUMP(GAM_MIXER_CTL); mixer_dbg_ctl(s, sti_mixer_reg_read(mixer, GAM_MIXER_CTL)); DBGFS_DUMP(GAM_MIXER_BKC); DBGFS_DUMP(GAM_MIXER_BCO); DBGFS_DUMP(GAM_MIXER_BCS); DBGFS_DUMP(GAM_MIXER_AVO); DBGFS_DUMP(GAM_MIXER_AVS); DBGFS_DUMP(GAM_MIXER_CRB); mixer_dbg_crb(s, sti_mixer_reg_read(mixer, GAM_MIXER_CRB)); DBGFS_DUMP(GAM_MIXER_ACT); DBGFS_DUMP(GAM_MIXER_MBP); DBGFS_DUMP(GAM_MIXER_MX0); mixer_dbg_mxn(s, mixer->regs + GAM_MIXER_MX0); seq_putc(s, '\n'); return 0; }
static int tvout_dbg_show(struct seq_file *s, void *data) { struct drm_info_node *node = s->private; struct sti_tvout *tvout = (struct sti_tvout *)node->info_ent->data; struct drm_crtc *crtc; seq_printf(s, "TVOUT: (vaddr = 0x%p)", tvout->regs); seq_puts(s, "\n\n HDMI encoder: "); crtc = tvout->hdmi->crtc; if (crtc) { seq_printf(s, "connected to %s path", sti_crtc_is_main(crtc) ? "main" : "aux"); DBGFS_DUMP(TVO_HDMI_SYNC_SEL); DBGFS_DUMP(TVO_VIP_HDMI); tvout_dbg_vip(s, readl(tvout->regs + TVO_VIP_HDMI)); } else { seq_puts(s, "disabled"); } seq_puts(s, "\n\n DVO encoder: "); crtc = tvout->dvo->crtc; if (crtc) { seq_printf(s, "connected to %s path", sti_crtc_is_main(crtc) ? "main" : "aux"); DBGFS_DUMP(TVO_DVO_SYNC_SEL); DBGFS_DUMP(TVO_DVO_CONFIG); DBGFS_DUMP(TVO_VIP_DVO); tvout_dbg_vip(s, readl(tvout->regs + TVO_VIP_DVO)); } else { seq_puts(s, "disabled"); } seq_puts(s, "\n\n HDA encoder: "); crtc = tvout->hda->crtc; if (crtc) { seq_printf(s, "connected to %s path", sti_crtc_is_main(crtc) ? "main" : "aux"); DBGFS_DUMP(TVO_HD_SYNC_SEL); DBGFS_DUMP(TVO_HD_DAC_CFG_OFF); tvout_dbg_hd_dac_cfg(s, readl(tvout->regs + TVO_HD_DAC_CFG_OFF)); DBGFS_DUMP(TVO_VIP_HDF); tvout_dbg_vip(s, readl(tvout->regs + TVO_VIP_HDF)); } else { seq_puts(s, "disabled"); } seq_puts(s, "\n\n main path configuration"); DBGFS_DUMP(TVO_CSC_MAIN_M0); DBGFS_DUMP(TVO_CSC_MAIN_M1); DBGFS_DUMP(TVO_CSC_MAIN_M2); DBGFS_DUMP(TVO_CSC_MAIN_M3); DBGFS_DUMP(TVO_CSC_MAIN_M4); DBGFS_DUMP(TVO_CSC_MAIN_M5); DBGFS_DUMP(TVO_CSC_MAIN_M6); DBGFS_DUMP(TVO_CSC_MAIN_M7); DBGFS_DUMP(TVO_MAIN_IN_VID_FORMAT); seq_puts(s, "\n\n auxiliary path configuration"); DBGFS_DUMP(TVO_CSC_AUX_M0); DBGFS_DUMP(TVO_CSC_AUX_M2); DBGFS_DUMP(TVO_CSC_AUX_M3); DBGFS_DUMP(TVO_CSC_AUX_M4); DBGFS_DUMP(TVO_CSC_AUX_M5); DBGFS_DUMP(TVO_CSC_AUX_M6); DBGFS_DUMP(TVO_CSC_AUX_M7); DBGFS_DUMP(TVO_AUX_IN_VID_FORMAT); seq_putc(s, '\n'); return 0; }
static int hqvdp_dbg_show(struct seq_file *s, void *data) { struct drm_info_node *node = s->private; struct sti_hqvdp *hqvdp = (struct sti_hqvdp *)node->info_ent->data; int cmd, cmd_offset, infoxp70; void *virt; seq_printf(s, "%s: (vaddr = 0x%p)", sti_plane_to_str(&hqvdp->plane), hqvdp->regs); DBGFS_DUMP(HQVDP_MBX_IRQ_TO_XP70); DBGFS_DUMP(HQVDP_MBX_INFO_HOST); DBGFS_DUMP(HQVDP_MBX_IRQ_TO_HOST); DBGFS_DUMP(HQVDP_MBX_INFO_XP70); infoxp70 = readl(hqvdp->regs + HQVDP_MBX_INFO_XP70); seq_puts(s, "\tFirmware state: "); if (infoxp70 & INFO_XP70_FW_READY) seq_puts(s, "idle and ready"); else if (infoxp70 & INFO_XP70_FW_PROCESSING) seq_puts(s, "processing a picture"); else if (infoxp70 & INFO_XP70_FW_INITQUEUES) seq_puts(s, "programming queues"); else seq_puts(s, "NOT READY"); DBGFS_DUMP(HQVDP_MBX_SW_RESET_CTRL); DBGFS_DUMP(HQVDP_MBX_STARTUP_CTRL1); if (readl(hqvdp->regs + HQVDP_MBX_STARTUP_CTRL1) & STARTUP_CTRL1_RST_DONE) seq_puts(s, "\tReset is done"); else seq_puts(s, "\tReset is NOT done"); DBGFS_DUMP(HQVDP_MBX_STARTUP_CTRL2); if (readl(hqvdp->regs + HQVDP_MBX_STARTUP_CTRL2) & STARTUP_CTRL2_FETCH_EN) seq_puts(s, "\tFetch is enabled"); else seq_puts(s, "\tFetch is NOT enabled"); DBGFS_DUMP(HQVDP_MBX_GP_STATUS); DBGFS_DUMP(HQVDP_MBX_NEXT_CMD); DBGFS_DUMP(HQVDP_MBX_CURRENT_CMD); DBGFS_DUMP(HQVDP_MBX_SOFT_VSYNC); if (!(readl(hqvdp->regs + HQVDP_MBX_SOFT_VSYNC) & 3)) seq_puts(s, "\tHW Vsync"); else seq_puts(s, "\tSW Vsync ?!?!"); /* Last command */ cmd = readl(hqvdp->regs + HQVDP_MBX_CURRENT_CMD); cmd_offset = sti_hqvdp_get_curr_cmd(hqvdp); if (cmd_offset == -1) { seq_puts(s, "\n\n Last command: unknown"); } else { virt = hqvdp->hqvdp_cmd + cmd_offset; seq_printf(s, "\n\n Last command: address @ 0x%x (0x%p)", cmd, virt); hqvdp_dbg_dump_cmd(s, (struct sti_hqvdp_cmd *)virt); } /* Next command */ cmd = readl(hqvdp->regs + HQVDP_MBX_NEXT_CMD); cmd_offset = sti_hqvdp_get_next_cmd(hqvdp); if (cmd_offset == -1) { seq_puts(s, "\n\n Next command: unknown"); } else { virt = hqvdp->hqvdp_cmd + cmd_offset; seq_printf(s, "\n\n Next command address: @ 0x%x (0x%p)", cmd, virt); hqvdp_dbg_dump_cmd(s, (struct sti_hqvdp_cmd *)virt); } seq_puts(s, "\n"); return 0; }