Lines Matching refs:minfo

84 static inline int *get_ctrl_ptr(struct matrox_fb_info *minfo, unsigned int idx)
86 return (int*)((char*)minfo + g450_controls[idx].control);
89 static void tvo_fill_defaults(struct matrox_fb_info *minfo)
94 *get_ctrl_ptr(minfo, i) = g450_controls[i].desc.default_value;
98 static int cve2_get_reg(struct matrox_fb_info *minfo, int reg)
104 matroxfb_DAC_out(minfo, 0x87, reg);
105 val = matroxfb_DAC_in(minfo, 0x88);
110 static void cve2_set_reg(struct matrox_fb_info *minfo, int reg, int val)
115 matroxfb_DAC_out(minfo, 0x87, reg);
116 matroxfb_DAC_out(minfo, 0x88, val);
120 static void cve2_set_reg10(struct matrox_fb_info *minfo, int reg, int val)
125 matroxfb_DAC_out(minfo, 0x87, reg);
126 matroxfb_DAC_out(minfo, 0x88, val >> 2);
127 matroxfb_DAC_out(minfo, 0x87, reg + 1);
128 matroxfb_DAC_out(minfo, 0x88, val & 3);
132 static void g450_compute_bwlevel(const struct matrox_fb_info *minfo, int *bl,
135 const int b = minfo->altout.tvo_params.brightness + BLMIN;
136 const int c = minfo->altout.tvo_params.contrast;
165 struct matrox_fb_info *minfo = md;
173 if (p->value == *get_ctrl_ptr(minfo, i)) return 0;
184 *get_ctrl_ptr(minfo, i) = p->value;
191 g450_compute_bwlevel(minfo, &blacklevel, &whitelevel);
192 cve2_set_reg10(minfo, 0x0e, blacklevel);
193 cve2_set_reg10(minfo, 0x1e, whitelevel);
197 cve2_set_reg(minfo, 0x20, p->value);
198 cve2_set_reg(minfo, 0x22, p->value);
201 cve2_set_reg(minfo, 0x25, p->value);
205 unsigned char val = cve2_get_reg(minfo, 0x05);
208 cve2_set_reg(minfo, 0x05, val);
219 struct matrox_fb_info *minfo = md;
223 p->value = *get_ctrl_ptr(minfo, i);
237 static void computeRegs(struct matrox_fb_info *minfo, struct mavenregs *r,
264 mnp = matroxfb_g450_setclk(minfo, piic, M_VIDEO_PLL);
267 mt->pixclock = g450_mnp2f(minfo, mnp);
503 #define LR(x) cve2_set_reg(minfo, (x), m->regs[(x)])
504 static void cve2_init_TV(struct matrox_fb_info *minfo,
513 cve2_set_reg(minfo, 0x3E, 0x01);
518 cve2_set_reg(minfo, 0x3E, 0x00);
522 struct matrox_fb_info *minfo = md;
524 dprintk(KERN_DEBUG "Computing, mode=%u\n", minfo->outputs[1].mode);
527 minfo->outputs[1].mode != MATROXFB_OUTPUT_MODE_MONITOR) {
530 cve2_init_TVdata(minfo->outputs[1].mode, &minfo->hw.maven, &outd);
533 g450_compute_bwlevel(minfo, &blacklevel, &whitelevel);
534 minfo->hw.maven.regs[0x0E] = blacklevel >> 2;
535 minfo->hw.maven.regs[0x0F] = blacklevel & 3;
536 minfo->hw.maven.regs[0x1E] = whitelevel >> 2;
537 minfo->hw.maven.regs[0x1F] = whitelevel & 3;
539 minfo->hw.maven.regs[0x20] =
540 minfo->hw.maven.regs[0x22] = minfo->altout.tvo_params.saturation;
542 minfo->hw.maven.regs[0x25] = minfo->altout.tvo_params.hue;
544 if (minfo->altout.tvo_params.testout) {
545 minfo->hw.maven.regs[0x05] |= 0x02;
548 computeRegs(minfo, &minfo->hw.maven, mt, outd);
552 mt->mnp = matroxfb_g450_setclk(minfo, mt->pixclock, (mt->crtc == MATROXFB_SRC_CRTC1) ? M_PIXEL_PLL_C : M_VIDEO_PLL);
553 mt->pixclock = g450_mnp2f(minfo, mt->mnp);
560 struct matrox_fb_info *minfo = md;
562 if (minfo->outputs[1].mode != MATROXFB_OUTPUT_MODE_MONITOR) {
563 cve2_init_TV(minfo, &minfo->hw.maven);
579 struct matrox_fb_info *minfo = md;
582 mt->mnp = matroxfb_g450_setclk(minfo, mt->pixclock, (mt->crtc == MATROXFB_SRC_CRTC1) ? M_PIXEL_PLL_C : M_VIDEO_PLL);
583 mt->pixclock = g450_mnp2f(minfo, mt->mnp);
603 void matroxfb_g450_connect(struct matrox_fb_info *minfo)
605 if (minfo->devflags.g450dac) {
606 down_write(&minfo->altout.lock);
607 tvo_fill_defaults(minfo);
608 minfo->outputs[1].src = minfo->outputs[1].default_src;
609 minfo->outputs[1].data = minfo;
610 minfo->outputs[1].output = &matroxfb_g450_altout;
611 minfo->outputs[1].mode = MATROXFB_OUTPUT_MODE_MONITOR;
612 minfo->outputs[2].src = minfo->outputs[2].default_src;
613 minfo->outputs[2].data = minfo;
614 minfo->outputs[2].output = &matroxfb_g450_dvi;
615 minfo->outputs[2].mode = MATROXFB_OUTPUT_MODE_MONITOR;
616 up_write(&minfo->altout.lock);
620 void matroxfb_g450_shutdown(struct matrox_fb_info *minfo)
622 if (minfo->devflags.g450dac) {
623 down_write(&minfo->altout.lock);
624 minfo->outputs[1].src = MATROXFB_SRC_NONE;
625 minfo->outputs[1].output = NULL;
626 minfo->outputs[1].data = NULL;
627 minfo->outputs[1].mode = MATROXFB_OUTPUT_MODE_MONITOR;
628 minfo->outputs[2].src = MATROXFB_SRC_NONE;
629 minfo->outputs[2].output = NULL;
630 minfo->outputs[2].data = NULL;
631 minfo->outputs[2].mode = MATROXFB_OUTPUT_MODE_MONITOR;
632 up_write(&minfo->altout.lock);