Lines Matching defs:par
424 getclkMHz(struct imstt_par *par)
428 clk_m = par->init.pclk_m;
429 clk_n = par->init.pclk_n;
430 clk_p = par->init.pclk_p;
436 setclkMHz(struct imstt_par *par, __u32 MHz)
462 par->init.pclk_m = clk_m;
463 par->init.pclk_n = clk_n;
464 par->init.pclk_p = 0;
468 compute_imstt_regvals_ibm(struct imstt_par *par, int xres, int yres)
470 struct imstt_regvals *init = &par->init;
502 setclkMHz(par, MHz);
519 compute_imstt_regvals_tvp(struct imstt_par *par, int xres, int yres)
548 par->init = *init;
553 compute_imstt_regvals (struct imstt_par *par, u_int xres, u_int yres)
555 if (par->ramdac == IBM)
556 return compute_imstt_regvals_ibm(par, xres, yres);
558 return compute_imstt_regvals_tvp(par, xres, yres);
562 set_imstt_regvals_ibm (struct imstt_par *par, u_int bpp)
564 struct imstt_regvals *init = &par->init;
567 par->cmap_regs[PIDXHI] = 0; eieio();
568 par->cmap_regs[PIDXLO] = PIXM0; eieio();
569 par->cmap_regs[PIDXDATA] = init->pclk_m;eieio();
570 par->cmap_regs[PIDXLO] = PIXN0; eieio();
571 par->cmap_regs[PIDXDATA] = init->pclk_n;eieio();
572 par->cmap_regs[PIDXLO] = PIXP0; eieio();
573 par->cmap_regs[PIDXDATA] = init->pclk_p;eieio();
574 par->cmap_regs[PIDXLO] = PIXC0; eieio();
575 par->cmap_regs[PIDXDATA] = 0x02; eieio();
577 par->cmap_regs[PIDXLO] = PIXFMT; eieio();
578 par->cmap_regs[PIDXDATA] = pformat; eieio();
582 set_imstt_regvals_tvp (struct imstt_par *par, u_int bpp)
584 struct imstt_regvals *init = &par->init;
621 par->cmap_regs[TVPADDRW] = TVPIRPLA; eieio();
622 par->cmap_regs[TVPIDATA] = 0x00; eieio();
623 par->cmap_regs[TVPADDRW] = TVPIRPPD; eieio();
624 par->cmap_regs[TVPIDATA] = init->pclk_m; eieio();
625 par->cmap_regs[TVPADDRW] = TVPIRPPD; eieio();
626 par->cmap_regs[TVPIDATA] = init->pclk_n; eieio();
627 par->cmap_regs[TVPADDRW] = TVPIRPPD; eieio();
628 par->cmap_regs[TVPIDATA] = init->pclk_p; eieio();
630 par->cmap_regs[TVPADDRW] = TVPIRTCC; eieio();
631 par->cmap_regs[TVPIDATA] = tcc; eieio();
632 par->cmap_regs[TVPADDRW] = TVPIRMXC; eieio();
633 par->cmap_regs[TVPIDATA] = mxc; eieio();
634 par->cmap_regs[TVPADDRW] = TVPIRMIC; eieio();
635 par->cmap_regs[TVPIDATA] = mic; eieio();
637 par->cmap_regs[TVPADDRW] = TVPIRPLA; eieio();
638 par->cmap_regs[TVPIDATA] = 0x00; eieio();
639 par->cmap_regs[TVPADDRW] = TVPIRLPD; eieio();
640 par->cmap_regs[TVPIDATA] = lckl_n; eieio();
642 par->cmap_regs[TVPADDRW] = TVPIRPLA; eieio();
643 par->cmap_regs[TVPIDATA] = 0x15; eieio();
644 par->cmap_regs[TVPADDRW] = TVPIRMLC; eieio();
645 par->cmap_regs[TVPIDATA] = mlc; eieio();
647 par->cmap_regs[TVPADDRW] = TVPIRPLA; eieio();
648 par->cmap_regs[TVPIDATA] = 0x2a; eieio();
649 par->cmap_regs[TVPADDRW] = TVPIRLPD; eieio();
650 par->cmap_regs[TVPIDATA] = lckl_p; eieio();
656 struct imstt_par *par = info->par;
657 struct imstt_regvals *init = &par->init;
660 if (par->ramdac == IBM)
661 set_imstt_regvals_ibm(par, bpp);
663 set_imstt_regvals_tvp(par, bpp);
699 if (par->ramdac == TVP)
702 write_reg_le32(par->dc_regs, HES, init->hes);
703 write_reg_le32(par->dc_regs, HEB, init->heb);
704 write_reg_le32(par->dc_regs, HSB, init->hsb);
705 write_reg_le32(par->dc_regs, HT, init->ht);
706 write_reg_le32(par->dc_regs, VES, init->ves);
707 write_reg_le32(par->dc_regs, VEB, init->veb);
708 write_reg_le32(par->dc_regs, VSB, init->vsb);
709 write_reg_le32(par->dc_regs, VT, init->vt);
710 write_reg_le32(par->dc_regs, VIL, init->vil);
711 write_reg_le32(par->dc_regs, HCIV, 1);
712 write_reg_le32(par->dc_regs, VCIV, 1);
713 write_reg_le32(par->dc_regs, TCDR, 4);
714 write_reg_le32(par->dc_regs, RRCIV, 1);
715 write_reg_le32(par->dc_regs, RRSC, 0x980);
716 write_reg_le32(par->dc_regs, RRCR, 0x11);
718 if (par->ramdac == IBM) {
719 write_reg_le32(par->dc_regs, HRIR, 0x0100);
720 write_reg_le32(par->dc_regs, CMR, 0x00ff);
721 write_reg_le32(par->dc_regs, SRGCTL, 0x0073);
723 write_reg_le32(par->dc_regs, HRIR, 0x0200);
724 write_reg_le32(par->dc_regs, CMR, 0x01ff);
725 write_reg_le32(par->dc_regs, SRGCTL, 0x0003);
740 write_reg_le32(par->dc_regs, SCR, scr);
741 write_reg_le32(par->dc_regs, SPR, pitch);
742 write_reg_le32(par->dc_regs, STGCTL, ctl);
748 struct imstt_par *par = info->par;
751 write_reg_le32(par->dc_regs, SSR, off);
755 set_555 (struct imstt_par *par)
757 if (par->ramdac == IBM) {
758 par->cmap_regs[PIDXHI] = 0; eieio();
759 par->cmap_regs[PIDXLO] = BPP16; eieio();
760 par->cmap_regs[PIDXDATA] = 0x01; eieio();
762 par->cmap_regs[TVPADDRW] = TVPIRTCC; eieio();
763 par->cmap_regs[TVPIDATA] = 0x44; eieio();
768 set_565 (struct imstt_par *par)
770 if (par->ramdac == IBM) {
771 par->cmap_regs[PIDXHI] = 0; eieio();
772 par->cmap_regs[PIDXLO] = BPP16; eieio();
773 par->cmap_regs[PIDXDATA] = 0x03; eieio();
775 par->cmap_regs[TVPADDRW] = TVPIRTCC; eieio();
776 par->cmap_regs[TVPIDATA] = 0x45; eieio();
862 struct imstt_par *par = info->par;
864 if (!compute_imstt_regvals(par, info->var.xres, info->var.yres))
868 set_565(par);
870 set_555(par);
872 info->var.pixclock = 1000000 / getclkMHz(par);
880 struct imstt_par *par = info->par;
892 par->cmap_regs[PADDRW] = regno << 3;
894 par->cmap_regs[PADDRW] = regno;
897 par->cmap_regs[PDATA] = red; eieio();
898 par->cmap_regs[PDATA] = green; eieio();
899 par->cmap_regs[PDATA] = blue; eieio();
904 par->palette[regno] =
909 par->palette[regno] =
914 par->palette[regno] = (i << 16) |i;
937 struct imstt_par *par = info->par;
940 ctrl = read_reg_le32(par->dc_regs, STGCTL);
946 if (par->ramdac == IBM) {
947 par->cmap_regs[PIDXHI] = 0; eieio();
948 par->cmap_regs[PIDXLO] = MISCTL2; eieio();
949 par->cmap_regs[PIDXDATA] = 0x55; eieio();
950 par->cmap_regs[PIDXLO] = MISCTL1; eieio();
951 par->cmap_regs[PIDXDATA] = 0x11; eieio();
952 par->cmap_regs[PIDXLO] = SYNCCTL; eieio();
953 par->cmap_regs[PIDXDATA] = 0x0f; eieio();
954 par->cmap_regs[PIDXLO] = PWRMNGMT; eieio();
955 par->cmap_regs[PIDXDATA] = 0x1f; eieio();
956 par->cmap_regs[PIDXLO] = CLKCTL; eieio();
957 par->cmap_regs[PIDXDATA] = 0xc0;
968 if (par->ramdac == IBM) {
970 par->cmap_regs[PIDXHI] = 0; eieio();
971 par->cmap_regs[PIDXLO] = CLKCTL; eieio();
972 par->cmap_regs[PIDXDATA] = 0x01; eieio();
973 par->cmap_regs[PIDXLO] = PWRMNGMT; eieio();
974 par->cmap_regs[PIDXDATA] = 0x00; eieio();
975 par->cmap_regs[PIDXLO] = SYNCCTL; eieio();
976 par->cmap_regs[PIDXDATA] = 0x00; eieio();
977 par->cmap_regs[PIDXLO] = MISCTL1; eieio();
978 par->cmap_regs[PIDXDATA] = 0x01; eieio();
979 par->cmap_regs[PIDXLO] = MISCTL2; eieio();
980 par->cmap_regs[PIDXDATA] = 0x45; eieio();
984 write_reg_le32(par->dc_regs, STGCTL, ctrl);
991 struct imstt_par *par = info->par;
1009 while(read_reg_le32(par->dc_regs, SSTATUS) & 0x80);
1010 write_reg_le32(par->dc_regs, DSA, dy + dx);
1011 write_reg_le32(par->dc_regs, CNT, (height << 16) | width);
1012 write_reg_le32(par->dc_regs, DP_OCTL, line_pitch);
1013 write_reg_le32(par->dc_regs, BI, 0xffffffff);
1014 write_reg_le32(par->dc_regs, MBC, 0xffffffff);
1015 write_reg_le32(par->dc_regs, CLR, bgc);
1016 write_reg_le32(par->dc_regs, BLTCTL, 0x840); /* 0x200000 */
1017 while(read_reg_le32(par->dc_regs, SSTATUS) & 0x80);
1018 while(read_reg_le32(par->dc_regs, SSTATUS) & 0x40);
1020 while(read_reg_le32(par->dc_regs, SSTATUS) & 0x80);
1021 write_reg_le32(par->dc_regs, DSA, dy + dx);
1022 write_reg_le32(par->dc_regs, S1SA, dy + dx);
1023 write_reg_le32(par->dc_regs, CNT, (height << 16) | width);
1024 write_reg_le32(par->dc_regs, DP_OCTL, line_pitch);
1025 write_reg_le32(par->dc_regs, SP, line_pitch);
1026 write_reg_le32(par->dc_regs, BLTCTL, 0x40005);
1027 while(read_reg_le32(par->dc_regs, SSTATUS) & 0x80);
1028 while(read_reg_le32(par->dc_regs, SSTATUS) & 0x40);
1035 struct imstt_par *par = info->par;
1075 while(read_reg_le32(par->dc_regs, SSTATUS) & 0x80);
1076 write_reg_le32(par->dc_regs, S1SA, fb_offset_old);
1077 write_reg_le32(par->dc_regs, SP, sp);
1078 write_reg_le32(par->dc_regs, DSA, fb_offset_new);
1079 write_reg_le32(par->dc_regs, CNT, cnt);
1080 write_reg_le32(par->dc_regs, DP_OCTL, dp_octl);
1081 write_reg_le32(par->dc_regs, BLTCTL, bltctl);
1082 while(read_reg_le32(par->dc_regs, SSTATUS) & 0x80);
1083 while(read_reg_le32(par->dc_regs, SSTATUS) & 0x40);
1088 imsttfb_load_cursor_image(struct imstt_par *par, int width, int height, __u8 fgc)
1095 if (par->ramdac == IBM) {
1096 par->cmap_regs[PIDXHI] = 1; eieio();
1098 par->cmap_regs[PIDXLO] = x; eieio();
1099 par->cmap_regs[PIDXDATA] = 0x00; eieio();
1101 par->cmap_regs[PIDXHI] = 1; eieio();
1104 par->cmap_regs[PIDXLO] = x + y * 8; eieio();
1105 par->cmap_regs[PIDXDATA] = 0xff; eieio();
1107 par->cmap_regs[PIDXHI] = 0; eieio();
1108 par->cmap_regs[PIDXLO] = CURS1R; eieio();
1109 par->cmap_regs[PIDXDATA] = fgc; eieio();
1110 par->cmap_regs[PIDXLO] = CURS1G; eieio();
1111 par->cmap_regs[PIDXDATA] = fgc; eieio();
1112 par->cmap_regs[PIDXLO] = CURS1B; eieio();
1113 par->cmap_regs[PIDXDATA] = fgc; eieio();
1114 par->cmap_regs[PIDXLO] = CURS2R; eieio();
1115 par->cmap_regs[PIDXDATA] = fgc; eieio();
1116 par->cmap_regs[PIDXLO] = CURS2G; eieio();
1117 par->cmap_regs[PIDXDATA] = fgc; eieio();
1118 par->cmap_regs[PIDXLO] = CURS2B; eieio();
1119 par->cmap_regs[PIDXDATA] = fgc; eieio();
1120 par->cmap_regs[PIDXLO] = CURS3R; eieio();
1121 par->cmap_regs[PIDXDATA] = fgc; eieio();
1122 par->cmap_regs[PIDXLO] = CURS3G; eieio();
1123 par->cmap_regs[PIDXDATA] = fgc; eieio();
1124 par->cmap_regs[PIDXLO] = CURS3B; eieio();
1125 par->cmap_regs[PIDXDATA] = fgc; eieio();
1127 par->cmap_regs[TVPADDRW] = TVPIRICC; eieio();
1128 par->cmap_regs[TVPIDATA] &= 0x03; eieio();
1129 par->cmap_regs[TVPADDRW] = 0; eieio();
1131 par->cmap_regs[TVPCRDAT] = 0x00; eieio();
1134 par->cmap_regs[TVPCRDAT] = 0xff; eieio();
1136 par->cmap_regs[TVPADDRW] = TVPIRICC; eieio();
1137 par->cmap_regs[TVPIDATA] &= 0x03; eieio();
1140 par->cmap_regs[TVPADDRW] = x + y * 8; eieio();
1141 par->cmap_regs[TVPCRDAT] = 0xff; eieio();
1143 par->cmap_regs[TVPADDRW] = TVPIRICC; eieio();
1144 par->cmap_regs[TVPIDATA] |= 0x08; eieio();
1147 par->cmap_regs[TVPADDRW] = x + y * 8; eieio();
1148 par->cmap_regs[TVPCRDAT] = 0xff; eieio();
1150 par->cmap_regs[TVPCADRW] = 0x00; eieio();
1152 par->cmap_regs[TVPCDATA] = fgc;
1160 imstt_set_cursor(struct imstt_par *par, struct fb_image *d, int on)
1162 if (par->ramdac == IBM) {
1163 par->cmap_regs[PIDXHI] = 0; eieio();
1165 par->cmap_regs[PIDXLO] = CURSCTL; eieio();
1166 par->cmap_regs[PIDXDATA] = 0x00; eieio();
1168 par->cmap_regs[PIDXLO] = CURSXHI; eieio();
1169 par->cmap_regs[PIDXDATA] = d->dx >> 8; eieio();
1170 par->cmap_regs[PIDXLO] = CURSXLO; eieio();
1171 par->cmap_regs[PIDXDATA] = d->dx & 0xff;eieio();
1172 par->cmap_regs[PIDXLO] = CURSYHI; eieio();
1173 par->cmap_regs[PIDXDATA] = d->dy >> 8; eieio();
1174 par->cmap_regs[PIDXLO] = CURSYLO; eieio();
1175 par->cmap_regs[PIDXDATA] = d->dy & 0xff;eieio();
1176 par->cmap_regs[PIDXLO] = CURSCTL; eieio();
1177 par->cmap_regs[PIDXDATA] = 0x02; eieio();
1181 par->cmap_regs[TVPADDRW] = TVPIRICC; eieio();
1182 par->cmap_regs[TVPIDATA] = 0x00; eieio();
1186 par->cmap_regs[TVPCXPOH] = x >> 8; eieio();
1187 par->cmap_regs[TVPCXPOL] = x & 0xff; eieio();
1188 par->cmap_regs[TVPCYPOH] = y >> 8; eieio();
1189 par->cmap_regs[TVPCYPOL] = y & 0xff; eieio();
1190 par->cmap_regs[TVPADDRW] = TVPIRICC; eieio();
1191 par->cmap_regs[TVPIDATA] = 0x02; eieio();
1199 struct imstt_par *par = info->par;
1251 imsttfb_load_cursor_image(par, xx, yy, fgc);
1269 struct imstt_par *par = info->par;
1278 write_reg_le32(par->dc_regs, reg[0], reg[1]);
1283 reg[1] = read_reg_le32(par->dc_regs, reg[0]);
1290 write_reg_le32(((u_int __iomem *)par->cmap_regs), reg[0], reg[1]);
1295 reg[1] = read_reg_le32(((u_int __iomem *)par->cmap_regs), reg[0]);
1302 par->cmap_regs[PIDXHI] = 0; eieio();
1303 par->cmap_regs[PIDXLO] = idx[0]; eieio();
1304 par->cmap_regs[PIDXDATA] = idx[1]; eieio();
1309 par->cmap_regs[PIDXHI] = 0; eieio();
1310 par->cmap_regs[PIDXLO] = idx[0]; eieio();
1311 idx[1] = par->cmap_regs[PIDXDATA];
1352 struct imstt_par *par = info->par;
1355 tmp = read_reg_le32(par->dc_regs, PRC);
1356 if (par->ramdac == IBM)
1367 tmp = read_reg_le32(par->dc_regs, STGCTL);
1368 write_reg_le32(par->dc_regs, STGCTL, tmp & ~0x1);
1369 write_reg_le32(par->dc_regs, SSR, 0);
1372 if (par->ramdac == IBM) {
1373 par->cmap_regs[PPMASK] = 0xff;
1375 par->cmap_regs[PIDXHI] = 0;
1378 par->cmap_regs[PIDXLO] = ibm_initregs[i].addr;
1380 par->cmap_regs[PIDXDATA] = ibm_initregs[i].value;
1385 par->cmap_regs[TVPADDRW] = tvp_initregs[i].addr;
1387 par->cmap_regs[TVPIDATA] = tvp_initregs[i].value;
1420 || !(compute_imstt_regvals(par, info->var.xres, info->var.yres))) {
1425 sprintf(info->fix.id, "IMS TT (%s)", par->ramdac == IBM ? "IBM" : "TVP");
1438 // if (par->ramdac == IBM)
1441 set_565(par);
1443 set_555(par);
1446 info->var.pixclock = 1000000 / getclkMHz(par);
1461 tmp = (read_reg_le32(par->dc_regs, SSTATUS) & 0x0f00) >> 8;
1470 struct imstt_par *par;
1490 par = info->par;
1503 par->ramdac = IBM;
1506 par->ramdac = TVP;
1509 par->ramdac = TVP;
1519 info->screen_base = (__u8 *)ioremap(addr, par->ramdac == IBM ?
1524 par->dc_regs = ioremap(addr + 0x800000, 0x1000);
1525 if (!par->dc_regs)
1527 par->cmap_regs_phys = addr + 0x840000;
1528 par->cmap_regs = (__u8 *)ioremap(addr + 0x840000, 0x1000);
1529 if (!par->cmap_regs)
1531 info->pseudo_palette = par->palette;
1540 iounmap(par->cmap_regs);
1542 iounmap(par->dc_regs);
1555 struct imstt_par *par = info->par;
1559 iounmap(par->cmap_regs);
1560 iounmap(par->dc_regs);