Lines Matching refs:par
1122 static int ami_decode_var(struct fb_var_screeninfo *var, struct amifb_par *par, in ami_decode_var() argument
1140 par->clk_shift = clk_shift; in ami_decode_var()
1146 if ((par->xres = var->xres) < 64) in ami_decode_var()
1147 par->xres = 64; in ami_decode_var()
1148 if ((par->yres = var->yres) < 64) in ami_decode_var()
1149 par->yres = 64; in ami_decode_var()
1150 if ((par->vxres = var->xres_virtual) < par->xres) in ami_decode_var()
1151 par->vxres = par->xres; in ami_decode_var()
1152 if ((par->vyres = var->yres_virtual) < par->yres) in ami_decode_var()
1153 par->vyres = par->yres; in ami_decode_var()
1155 par->bpp = var->bits_per_pixel; in ami_decode_var()
1157 if (par->bpp < 1) in ami_decode_var()
1158 par->bpp = 1; in ami_decode_var()
1159 if (par->bpp > maxdepth[clk_shift]) { in ami_decode_var()
1161 par->bpp = maxdepth[clk_shift]; in ami_decode_var()
1168 if (par->bpp < 6) in ami_decode_var()
1169 par->bpp = 6; in ami_decode_var()
1170 if (par->bpp != 6) { in ami_decode_var()
1171 if (par->bpp < 8) in ami_decode_var()
1172 par->bpp = 8; in ami_decode_var()
1173 if (par->bpp != 8 || !IS_AGA) { in ami_decode_var()
1188 par->vmode = var->vmode | FB_VMODE_SMOOTH_XPAN; in ami_decode_var()
1189 switch (par->vmode & FB_VMODE_MASK) { in ami_decode_var()
1208 par->line_shift = line_shift; in ami_decode_var()
1214 xres_n = par->xres << clk_shift; in ami_decode_var()
1215 yres_n = par->yres << line_shift; in ami_decode_var()
1216 par->htotal = down8((var->left_margin + par->xres + var->right_margin + in ami_decode_var()
1218 par->vtotal = in ami_decode_var()
1219 down2(((var->upper_margin + par->yres + var->lower_margin + in ami_decode_var()
1223 par->bplcon3 = sprpixmode[clk_shift]; in ami_decode_var()
1225 par->bplcon3 = 0; in ami_decode_var()
1227 par->diwstop_h = par->htotal - in ami_decode_var()
1230 par->diwstop_h += mod4(var->hsync_len); in ami_decode_var()
1232 par->diwstop_h = down4(par->diwstop_h); in ami_decode_var()
1234 par->diwstrt_h = par->diwstop_h - xres_n; in ami_decode_var()
1235 par->diwstop_v = par->vtotal - in ami_decode_var()
1237 par->diwstrt_v = par->diwstop_v - yres_n; in ami_decode_var()
1238 if (par->diwstop_h >= par->htotal + 8) { in ami_decode_var()
1242 if (par->diwstop_v > par->vtotal) { in ami_decode_var()
1249 par->hsstrt = 160; in ami_decode_var()
1250 par->hsstop = 320; in ami_decode_var()
1251 par->vsstrt = 30; in ami_decode_var()
1252 par->vsstop = 34; in ami_decode_var()
1254 par->hsstrt = 0; in ami_decode_var()
1255 par->hsstop = 0; in ami_decode_var()
1256 par->vsstrt = 0; in ami_decode_var()
1257 par->vsstop = 0; in ami_decode_var()
1259 if (par->vtotal > (PAL_VTOTAL + NTSC_VTOTAL) / 2) { in ami_decode_var()
1261 if (par->htotal != PAL_HTOTAL) { in ami_decode_var()
1265 if (par->diwstrt_h < PAL_DIWSTRT_H) { in ami_decode_var()
1269 if (par->diwstrt_v < PAL_DIWSTRT_V) { in ami_decode_var()
1276 par->beamcon0 = BMC0_PAL; in ami_decode_var()
1277 par->bplcon3 |= BPC3_BRDRBLNK; in ami_decode_var()
1280 par->beamcon0 = BMC0_PAL; in ami_decode_var()
1281 par->hsstop = 1; in ami_decode_var()
1291 if (par->htotal != NTSC_HTOTAL) { in ami_decode_var()
1295 if (par->diwstrt_h < NTSC_DIWSTRT_H) { in ami_decode_var()
1299 if (par->diwstrt_v < NTSC_DIWSTRT_V) { in ami_decode_var()
1306 par->beamcon0 = 0; in ami_decode_var()
1307 par->bplcon3 |= BPC3_BRDRBLNK; in ami_decode_var()
1310 par->beamcon0 = 0; in ami_decode_var()
1311 par->hsstop = 1; in ami_decode_var()
1318 if (par->diwstrt_h >= 1024 || par->diwstop_h < 1024 || in ami_decode_var()
1319 par->diwstrt_v >= 512 || par->diwstop_v < 256) { in ami_decode_var()
1326 par->hsstrt = var->right_margin << clk_shift; in ami_decode_var()
1327 par->hsstop = (var->right_margin + var->hsync_len) << clk_shift; in ami_decode_var()
1328 par->diwstop_h = par->htotal - mod8(par->hsstrt) + 8 - (1 << clk_shift); in ami_decode_var()
1330 par->diwstop_h = down4(par->diwstop_h) - 16; in ami_decode_var()
1331 par->diwstrt_h = par->diwstop_h - xres_n; in ami_decode_var()
1332 par->hbstop = par->diwstrt_h + 4; in ami_decode_var()
1333 par->hbstrt = par->diwstop_h + 4; in ami_decode_var()
1334 if (par->hbstrt >= par->htotal + 8) in ami_decode_var()
1335 par->hbstrt -= par->htotal; in ami_decode_var()
1336 par->hcenter = par->hsstrt + (par->htotal >> 1); in ami_decode_var()
1337 par->vsstrt = var->lower_margin << line_shift; in ami_decode_var()
1338 par->vsstop = (var->lower_margin + var->vsync_len) << line_shift; in ami_decode_var()
1339 par->diwstop_v = par->vtotal; in ami_decode_var()
1340 if ((par->vmode & FB_VMODE_MASK) == FB_VMODE_INTERLACED) in ami_decode_var()
1341 par->diwstop_v -= 2; in ami_decode_var()
1342 par->diwstrt_v = par->diwstop_v - yres_n; in ami_decode_var()
1343 par->vbstop = par->diwstrt_v - 2; in ami_decode_var()
1344 par->vbstrt = par->diwstop_v - 2; in ami_decode_var()
1345 if (par->vtotal > 2048) { in ami_decode_var()
1349 if (par->htotal > 2048) { in ami_decode_var()
1353 par->bplcon3 |= BPC3_EXTBLKEN; in ami_decode_var()
1354 par->beamcon0 = BMC0_HARDDIS | BMC0_VARVBEN | BMC0_LOLDIS | in ami_decode_var()
1358 par->beamcon0 |= BMC0_HSYTRUE; in ami_decode_var()
1360 par->beamcon0 |= BMC0_VSYTRUE; in ami_decode_var()
1362 par->beamcon0 |= BMC0_CSYTRUE; in ami_decode_var()
1363 htotal = par->htotal>>clk_shift; in ami_decode_var()
1364 vtotal = par->vtotal>>1; in ami_decode_var()
1383 fstrt = downx(fconst, par->diwstrt_h - 4) - fsize; in ami_decode_var()
1393 fstrt = downx(fconst, par->diwstrt_h - fconst + (1 << clk_shift) - 4) - in ami_decode_var()
1396 par->vmode &= ~FB_VMODE_SMOOTH_XPAN; in ami_decode_var()
1398 maxfetchstop = down16(par->htotal - 80); in ami_decode_var()
1400 fstrt = downx(fconst, par->diwstrt_h - 4) - 64 - fconst; in ami_decode_var()
1402 modx(fconst, downx(1 << clk_shift, par->diwstrt_h - 4))); in ami_decode_var()
1404 par->vmode &= ~FB_VMODE_SMOOTH_XPAN; in ami_decode_var()
1415 par->vmode &= ~FB_VMODE_SMOOTH_XPAN; in ami_decode_var()
1431 if (par->htotal - fsize - 64 < par->bpp * 64) in ami_decode_var()
1432 par->vmode &= ~FB_VMODE_YWRAP; in ami_decode_var()
1439 par->next_plane = div8(upx(16 << maxfmode, par->vxres)); in ami_decode_var()
1440 par->next_line = par->bpp * par->next_plane; in ami_decode_var()
1441 if (par->next_line * par->vyres > info->fix.smem_len) { in ami_decode_var()
1446 par->next_line = div8(upx(16 << maxfmode, par->vxres)); in ami_decode_var()
1447 par->next_plane = par->vyres * par->next_line; in ami_decode_var()
1448 if (par->next_plane * par->bpp > info->fix.smem_len) { in ami_decode_var()
1458 par->bplcon0 = BPC0_COLOR | bplpixmode[clk_shift]; in ami_decode_var()
1460 par->bplcon0 |= BPC0_ECSENA; in ami_decode_var()
1461 if (par->bpp == 8) in ami_decode_var()
1462 par->bplcon0 |= BPC0_BPU3; in ami_decode_var()
1464 par->bplcon0 |= par->bpp << 12; in ami_decode_var()
1466 par->bplcon0 |= BPC0_HAM; in ami_decode_var()
1468 par->bplcon0 |= BPC0_ERSY; in ami_decode_var()
1471 par->fmode = bplfetchmode[maxfmode]; in ami_decode_var()
1473 switch (par->vmode & FB_VMODE_MASK) { in ami_decode_var()
1475 par->bplcon0 |= BPC0_LACE; in ami_decode_var()
1479 par->fmode |= FMODE_SSCAN2 | FMODE_BSCAN2; in ami_decode_var()
1483 if (!((par->vmode ^ var->vmode) & FB_VMODE_YWRAP)) { in ami_decode_var()
1484 par->xoffset = var->xoffset; in ami_decode_var()
1485 par->yoffset = var->yoffset; in ami_decode_var()
1486 if (par->vmode & FB_VMODE_YWRAP) { in ami_decode_var()
1487 if (par->xoffset || par->yoffset < 0 || in ami_decode_var()
1488 par->yoffset >= par->vyres) in ami_decode_var()
1489 par->xoffset = par->yoffset = 0; in ami_decode_var()
1491 if (par->xoffset < 0 || in ami_decode_var()
1492 par->xoffset > upx(16 << maxfmode, par->vxres - par->xres) || in ami_decode_var()
1493 par->yoffset < 0 || par->yoffset > par->vyres - par->yres) in ami_decode_var()
1494 par->xoffset = par->yoffset = 0; in ami_decode_var()
1497 par->xoffset = par->yoffset = 0; in ami_decode_var()
1499 par->crsr.crsr_x = par->crsr.crsr_y = 0; in ami_decode_var()
1500 par->crsr.spot_x = par->crsr.spot_y = 0; in ami_decode_var()
1501 par->crsr.height = par->crsr.width = 0; in ami_decode_var()
1512 struct amifb_par *par) in ami_encode_var() argument
1518 clk_shift = par->clk_shift; in ami_encode_var()
1519 line_shift = par->line_shift; in ami_encode_var()
1521 var->xres = par->xres; in ami_encode_var()
1522 var->yres = par->yres; in ami_encode_var()
1523 var->xres_virtual = par->vxres; in ami_encode_var()
1524 var->yres_virtual = par->vyres; in ami_encode_var()
1525 var->xoffset = par->xoffset; in ami_encode_var()
1526 var->yoffset = par->yoffset; in ami_encode_var()
1528 var->bits_per_pixel = par->bpp; in ami_encode_var()
1533 var->red.length = par->bpp; in ami_encode_var()
1534 if (par->bplcon0 & BPC0_HAM) in ami_encode_var()
1541 if (par->bplcon0 & BPC0_HAM) in ami_encode_var()
1552 if (IS_AGA && par->fmode & FMODE_BSCAN2) in ami_encode_var()
1554 else if (par->bplcon0 & BPC0_LACE) in ami_encode_var()
1559 if (!IS_OCS && par->beamcon0 & BMC0_VARBEAMEN) { in ami_encode_var()
1560 var->hsync_len = (par->hsstop - par->hsstrt)>>clk_shift; in ami_encode_var()
1561 var->right_margin = par->hsstrt>>clk_shift; in ami_encode_var()
1562 var->left_margin = (par->htotal>>clk_shift) - var->xres - var->right_margin - var->hsync_len; in ami_encode_var()
1563 var->vsync_len = (par->vsstop - par->vsstrt)>>line_shift; in ami_encode_var()
1564 var->lower_margin = par->vsstrt>>line_shift; in ami_encode_var()
1565 var->upper_margin = (par->vtotal>>line_shift) - var->yres - var->lower_margin - var->vsync_len; in ami_encode_var()
1567 if (par->beamcon0 & BMC0_HSYTRUE) in ami_encode_var()
1569 if (par->beamcon0 & BMC0_VSYTRUE) in ami_encode_var()
1571 if (par->beamcon0 & BMC0_CSYTRUE) in ami_encode_var()
1575 var->hsync_len = (152>>clk_shift) + mod4(par->diwstop_h); in ami_encode_var()
1576 var->right_margin = ((par->htotal - down4(par->diwstop_h))>>clk_shift) + var->hsync_len; in ami_encode_var()
1577 var->left_margin = (par->htotal>>clk_shift) - var->xres - var->right_margin - var->hsync_len; in ami_encode_var()
1579 var->lower_margin = ((par->vtotal - par->diwstop_v)>>line_shift) + var->vsync_len; in ami_encode_var()
1580 var->upper_margin = (((par->vtotal - 2)>>line_shift) + 1) - var->yres - in ami_encode_var()
1584 if (par->bplcon0 & BPC0_ERSY) in ami_encode_var()
1586 if (par->vmode & FB_VMODE_YWRAP) in ami_encode_var()
1597 struct amifb_par *par = info->par; in ami_update_par() local
1600 clk_shift = par->clk_shift; in ami_update_par()
1602 if (!(par->vmode & FB_VMODE_SMOOTH_XPAN)) in ami_update_par()
1603 par->xoffset = upx(16 << maxfmode, par->xoffset); in ami_update_par()
1606 vshift = modx(16 << maxfmode, par->xoffset); in ami_update_par()
1607 fstrt = par->diwstrt_h - (vshift << clk_shift) - 4; in ami_update_par()
1608 fsize = (par->xres + vshift) << clk_shift; in ami_update_par()
1610 move = downx(2 << maxfmode, div8(par->xoffset)); in ami_update_par()
1626 mod = par->next_line - div8(fsize>>clk_shift); in ami_update_par()
1627 par->ddfstrt = fstrt; in ami_update_par()
1628 par->ddfstop = fstop; in ami_update_par()
1629 par->bplcon1 = hscroll2hw(shift); in ami_update_par()
1630 par->bpl2mod = mod; in ami_update_par()
1631 if (par->bplcon0 & BPC0_LACE) in ami_update_par()
1632 par->bpl2mod += par->next_line; in ami_update_par()
1633 if (IS_AGA && (par->fmode & FMODE_BSCAN2)) in ami_update_par()
1634 par->bpl1mod = -div8(fsize>>clk_shift); in ami_update_par()
1636 par->bpl1mod = par->bpl2mod; in ami_update_par()
1638 if (par->yoffset) { in ami_update_par()
1639 par->bplpt0 = info->fix.smem_start + in ami_update_par()
1640 par->next_line * par->yoffset + move; in ami_update_par()
1641 if (par->vmode & FB_VMODE_YWRAP) { in ami_update_par()
1642 if (par->yoffset > par->vyres - par->yres) { in ami_update_par()
1643 par->bplpt0wrap = info->fix.smem_start + move; in ami_update_par()
1644 if (par->bplcon0 & BPC0_LACE && in ami_update_par()
1645 mod2(par->diwstrt_v + par->vyres - in ami_update_par()
1646 par->yoffset)) in ami_update_par()
1647 par->bplpt0wrap += par->next_line; in ami_update_par()
1651 par->bplpt0 = info->fix.smem_start + move; in ami_update_par()
1653 if (par->bplcon0 & BPC0_LACE && mod2(par->diwstrt_v)) in ami_update_par()
1654 par->bplpt0 += par->next_line; in ami_update_par()
1667 struct amifb_par *par = info->par; in ami_pan_var() local
1669 par->xoffset = var->xoffset; in ami_pan_var()
1670 par->yoffset = var->yoffset; in ami_pan_var()
1672 par->vmode |= FB_VMODE_YWRAP; in ami_pan_var()
1674 par->vmode &= ~FB_VMODE_YWRAP; in ami_pan_var()
1682 static void ami_update_display(const struct amifb_par *par) in ami_update_display() argument
1684 custom.bplcon1 = par->bplcon1; in ami_update_display()
1685 custom.bpl1mod = par->bpl1mod; in ami_update_display()
1686 custom.bpl2mod = par->bpl2mod; in ami_update_display()
1687 custom.ddfstrt = ddfstrt2hw(par->ddfstrt); in ami_update_display()
1688 custom.ddfstop = ddfstop2hw(par->ddfstop); in ami_update_display()
1695 static void ami_init_display(const struct amifb_par *par) in ami_init_display() argument
1699 custom.bplcon0 = par->bplcon0 & ~BPC0_LACE; in ami_init_display()
1702 custom.bplcon3 = par->bplcon3; in ami_init_display()
1705 if (par->beamcon0 & BMC0_VARBEAMEN) { in ami_init_display()
1706 custom.htotal = htotal2hw(par->htotal); in ami_init_display()
1707 custom.hbstrt = hbstrt2hw(par->hbstrt); in ami_init_display()
1708 custom.hbstop = hbstop2hw(par->hbstop); in ami_init_display()
1709 custom.hsstrt = hsstrt2hw(par->hsstrt); in ami_init_display()
1710 custom.hsstop = hsstop2hw(par->hsstop); in ami_init_display()
1711 custom.hcenter = hcenter2hw(par->hcenter); in ami_init_display()
1712 custom.vtotal = vtotal2hw(par->vtotal); in ami_init_display()
1713 custom.vbstrt = vbstrt2hw(par->vbstrt); in ami_init_display()
1714 custom.vbstop = vbstop2hw(par->vbstop); in ami_init_display()
1715 custom.vsstrt = vsstrt2hw(par->vsstrt); in ami_init_display()
1716 custom.vsstop = vsstop2hw(par->vsstop); in ami_init_display()
1719 if (!IS_OCS || par->hsstop) in ami_init_display()
1720 custom.beamcon0 = par->beamcon0; in ami_init_display()
1722 custom.fmode = par->fmode; in ami_init_display()
1728 amiga_audio_min_period = div16(par->htotal); in ami_init_display()
1730 is_lace = par->bplcon0 & BPC0_LACE ? 1 : 0; in ami_init_display()
1749 static void ami_do_blank(const struct amifb_par *par) in ami_do_blank() argument
1752 u_short bplcon3 = par->bplcon3; in ami_do_blank()
1762 custom.hsstrt = hsstrt2hw(par->hsstrt); in ami_do_blank()
1763 custom.hsstop = hsstop2hw(par->hsstop); in ami_do_blank()
1764 custom.vsstrt = vsstrt2hw(par->vtotal + 4); in ami_do_blank()
1765 custom.vsstop = vsstop2hw(par->vtotal + 4); in ami_do_blank()
1768 custom.hsstrt = hsstrt2hw(par->htotal + 16); in ami_do_blank()
1769 custom.hsstop = hsstop2hw(par->htotal + 16); in ami_do_blank()
1770 custom.vsstrt = vsstrt2hw(par->vsstrt); in ami_do_blank()
1771 custom.vsstop = vsstrt2hw(par->vsstop); in ami_do_blank()
1774 custom.hsstrt = hsstrt2hw(par->htotal + 16); in ami_do_blank()
1775 custom.hsstop = hsstop2hw(par->htotal + 16); in ami_do_blank()
1776 custom.vsstrt = vsstrt2hw(par->vtotal + 4); in ami_do_blank()
1777 custom.vsstop = vsstop2hw(par->vtotal + 4); in ami_do_blank()
1780 if (!(par->beamcon0 & BMC0_VARBEAMEN)) { in ami_do_blank()
1781 custom.htotal = htotal2hw(par->htotal); in ami_do_blank()
1782 custom.vtotal = vtotal2hw(par->vtotal); in ami_do_blank()
1793 custom.hsstrt = hsstrt2hw(par->hsstrt); in ami_do_blank()
1794 custom.hsstop = hsstop2hw(par->hsstop); in ami_do_blank()
1795 custom.vsstrt = vsstrt2hw(par->vsstrt); in ami_do_blank()
1796 custom.vsstop = vsstop2hw(par->vsstop); in ami_do_blank()
1797 custom.beamcon0 = par->beamcon0; in ami_do_blank()
1810 if (par->bplcon0 & BPC0_SHRES) { in ami_do_blank()
1828 const struct amifb_par *par) in ami_get_fix_cursorinfo() argument
1830 fix->crsr_width = fix->crsr_xsize = par->crsr.width; in ami_get_fix_cursorinfo()
1831 fix->crsr_height = fix->crsr_ysize = par->crsr.height; in ami_get_fix_cursorinfo()
1839 const struct amifb_par *par) in ami_get_var_cursorinfo() argument
1852 size = par->crsr.height * par->crsr.width; in ami_get_var_cursorinfo()
1854 var->height = par->crsr.height; in ami_get_var_cursorinfo()
1855 var->width = par->crsr.width; in ami_get_var_cursorinfo()
1856 var->xspot = par->crsr.spot_x; in ami_get_var_cursorinfo()
1857 var->yspot = par->crsr.spot_y; in ami_get_var_cursorinfo()
1862 delta = 1 << par->crsr.fmode; in ami_get_var_cursorinfo()
1864 if (par->bplcon0 & BPC0_LACE) in ami_get_var_cursorinfo()
1914 u_char __user *data, struct amifb_par *par) in ami_set_var_cursorinfo() argument
1945 if (par->bplcon0 & BPC0_LACE) { in ami_set_var_cursorinfo()
2018 par->crsr.height = var->height; in ami_set_var_cursorinfo()
2019 par->crsr.width = var->width; in ami_set_var_cursorinfo()
2020 par->crsr.spot_x = var->xspot; in ami_set_var_cursorinfo()
2021 par->crsr.spot_y = var->yspot; in ami_set_var_cursorinfo()
2022 par->crsr.fmode = fmode; in ami_set_var_cursorinfo()
2024 par->fmode &= ~(FMODE_SPAGEM | FMODE_SPR32); in ami_set_var_cursorinfo()
2025 par->fmode |= sprfetchmode[fmode]; in ami_set_var_cursorinfo()
2026 custom.fmode = par->fmode; in ami_set_var_cursorinfo()
2032 const struct amifb_par *par) in ami_get_cursorstate() argument
2034 state->xoffset = par->crsr.crsr_x; in ami_get_cursorstate()
2035 state->yoffset = par->crsr.crsr_y; in ami_get_cursorstate()
2041 struct amifb_par *par) in ami_set_cursorstate() argument
2043 par->crsr.crsr_x = state->xoffset; in ami_set_cursorstate()
2044 par->crsr.crsr_y = state->yoffset; in ami_set_cursorstate()
2051 static void ami_set_sprite(const struct amifb_par *par) in ami_set_sprite() argument
2061 mx = par->crsr.crsr_x - par->crsr.spot_x; in ami_set_sprite()
2062 my = par->crsr.crsr_y - par->crsr.spot_y; in ami_set_sprite()
2063 if (!(par->vmode & FB_VMODE_YWRAP)) { in ami_set_sprite()
2064 mx -= par->xoffset; in ami_set_sprite()
2065 my -= par->yoffset; in ami_set_sprite()
2067 if (!is_blanked && cursorstate > 0 && par->crsr.height > 0 && in ami_set_sprite()
2068 mx > -(short)par->crsr.width && mx < par->xres && in ami_set_sprite()
2069 my > -(short)par->crsr.height && my < par->yres) { in ami_set_sprite()
2071 hs = par->diwstrt_h + (mx << par->clk_shift) - 4; in ami_set_sprite()
2072 vs = par->diwstrt_v + (my << par->line_shift); in ami_set_sprite()
2073 ve = vs + (par->crsr.height << par->line_shift); in ami_set_sprite()
2074 if (par->bplcon0 & BPC0_LACE) { in ami_set_sprite()
2079 lofsprite[1 << par->crsr.fmode] = spr2hw_ctl(vs, hs, ve); in ami_set_sprite()
2080 shfsprite[1 << par->crsr.fmode] = spr2hw_ctl(vs + 1, hs, ve + 1); in ami_set_sprite()
2083 lofsprite[1 << par->crsr.fmode] = spr2hw_ctl(vs, hs, ve + 1); in ami_set_sprite()
2084 shfsprite[1 << par->crsr.fmode] = spr2hw_ctl(vs + 1, hs, ve); in ami_set_sprite()
2087 lofsprite[0] = spr2hw_pos(vs, hs) | (IS_AGA && (par->fmode & FMODE_BSCAN2) ? 0x80 : 0); in ami_set_sprite()
2088 lofsprite[1 << par->crsr.fmode] = spr2hw_ctl(vs, hs, ve); in ami_set_sprite()
2093 if (par->bplcon0 & BPC0_LACE) { in ami_set_sprite()
2134 static void ami_reinit_copper(const struct amifb_par *par) in ami_reinit_copper() argument
2136 …copdisplay.init[cip_bplcon0].w[1] = ~(BPC0_BPU3 | BPC0_BPU2 | BPC0_BPU1 | BPC0_BPU0) & par->bplcon… in ami_reinit_copper()
2137 copdisplay.wait->l = CWAIT(32, par->diwstrt_v - 4); in ami_reinit_copper()
2147 static void ami_rebuild_copper(const struct amifb_par *par) in ami_rebuild_copper() argument
2154 if (IS_AGA && maxfmode + par->clk_shift == 0) in ami_rebuild_copper()
2155 h_end1 = par->diwstrt_h - 64; in ami_rebuild_copper()
2157 h_end1 = par->htotal - 32; in ami_rebuild_copper()
2158 h_end2 = par->ddfstop + 64; in ami_rebuild_copper()
2160 ami_set_sprite(par); in ami_rebuild_copper()
2163 p = par->bplpt0; in ami_rebuild_copper()
2164 if (par->vmode & FB_VMODE_YWRAP) { in ami_rebuild_copper()
2165 if ((par->vyres - par->yoffset) != 1 || !mod2(par->diwstrt_v)) { in ami_rebuild_copper()
2166 if (par->yoffset > par->vyres - par->yres) { in ami_rebuild_copper()
2167 for (i = 0; i < (short)par->bpp; i++, p += par->next_plane) { in ami_rebuild_copper()
2171 line = par->diwstrt_v + ((par->vyres - par->yoffset) << par->line_shift) - 1; in ami_rebuild_copper()
2176 if (line >= 510 && IS_AGA && maxfmode + par->clk_shift == 0) in ami_rebuild_copper()
2180 p = par->bplpt0wrap; in ami_rebuild_copper()
2183 p = par->bplpt0wrap; in ami_rebuild_copper()
2185 for (i = 0; i < (short)par->bpp; i++, p += par->next_plane) { in ami_rebuild_copper()
2191 if (par->bplcon0 & BPC0_LACE) { in ami_rebuild_copper()
2193 p = par->bplpt0; in ami_rebuild_copper()
2194 if (mod2(par->diwstrt_v)) in ami_rebuild_copper()
2195 p -= par->next_line; in ami_rebuild_copper()
2197 p += par->next_line; in ami_rebuild_copper()
2198 if (par->vmode & FB_VMODE_YWRAP) { in ami_rebuild_copper()
2199 if ((par->vyres - par->yoffset) != 1 || mod2(par->diwstrt_v)) { in ami_rebuild_copper()
2200 if (par->yoffset > par->vyres - par->yres + 1) { in ami_rebuild_copper()
2201 for (i = 0; i < (short)par->bpp; i++, p += par->next_plane) { in ami_rebuild_copper()
2205 line = par->diwstrt_v + ((par->vyres - par->yoffset) << par->line_shift) - 2; in ami_rebuild_copper()
2210 if (line > 510 && IS_AGA && maxfmode + par->clk_shift == 0) in ami_rebuild_copper()
2214 p = par->bplpt0wrap; in ami_rebuild_copper()
2215 if (mod2(par->diwstrt_v + par->vyres - in ami_rebuild_copper()
2216 par->yoffset)) in ami_rebuild_copper()
2217 p -= par->next_line; in ami_rebuild_copper()
2219 p += par->next_line; in ami_rebuild_copper()
2222 p = par->bplpt0wrap - par->next_line; in ami_rebuild_copper()
2224 for (i = 0; i < (short)par->bpp; i++, p += par->next_plane) { in ami_rebuild_copper()
2239 struct amifb_par *par = info->par; in ami_build_copper() local
2248 (copl++)->l = CMOVE(par->bplcon0, bplcon0); in ami_build_copper()
2252 if (par->bplcon0 & BPC0_LACE) { in ami_build_copper()
2256 (cops++)->l = CMOVE(par->bplcon0, bplcon0); in ami_build_copper()
2260 (copl++)->l = CMOVE(diwstrt2hw(par->diwstrt_h, par->diwstrt_v + 1), diwstrt); in ami_build_copper()
2261 (copl++)->l = CMOVE(diwstop2hw(par->diwstop_h, par->diwstop_v + 1), diwstop); in ami_build_copper()
2262 (cops++)->l = CMOVE(diwstrt2hw(par->diwstrt_h, par->diwstrt_v), diwstrt); in ami_build_copper()
2263 (cops++)->l = CMOVE(diwstop2hw(par->diwstop_h, par->diwstop_v), diwstop); in ami_build_copper()
2265 (copl++)->l = CMOVE(diwhigh2hw(par->diwstrt_h, par->diwstrt_v + 1, in ami_build_copper()
2266 par->diwstop_h, par->diwstop_v + 1), diwhigh); in ami_build_copper()
2267 (cops++)->l = CMOVE(diwhigh2hw(par->diwstrt_h, par->diwstrt_v, in ami_build_copper()
2268 par->diwstop_h, par->diwstop_v), diwhigh); in ami_build_copper()
2270 if (par->beamcon0 & BMC0_VARBEAMEN) { in ami_build_copper()
2271 (copl++)->l = CMOVE(vtotal2hw(par->vtotal), vtotal); in ami_build_copper()
2272 (copl++)->l = CMOVE(vbstrt2hw(par->vbstrt + 1), vbstrt); in ami_build_copper()
2273 (copl++)->l = CMOVE(vbstop2hw(par->vbstop + 1), vbstop); in ami_build_copper()
2274 (cops++)->l = CMOVE(vtotal2hw(par->vtotal), vtotal); in ami_build_copper()
2275 (cops++)->l = CMOVE(vbstrt2hw(par->vbstrt), vbstrt); in ami_build_copper()
2276 (cops++)->l = CMOVE(vbstop2hw(par->vbstop), vbstop); in ami_build_copper()
2288 (copl++)->l = CMOVE(diwstrt2hw(par->diwstrt_h, par->diwstrt_v), diwstrt); in ami_build_copper()
2289 (copl++)->l = CMOVE(diwstop2hw(par->diwstop_h, par->diwstop_v), diwstop); in ami_build_copper()
2291 (copl++)->l = CMOVE(diwhigh2hw(par->diwstrt_h, par->diwstrt_v, in ami_build_copper()
2292 par->diwstop_h, par->diwstop_v), diwhigh); in ami_build_copper()
2294 if (par->beamcon0 & BMC0_VARBEAMEN) { in ami_build_copper()
2295 (copl++)->l = CMOVE(vtotal2hw(par->vtotal), vtotal); in ami_build_copper()
2296 (copl++)->l = CMOVE(vbstrt2hw(par->vbstrt), vbstrt); in ami_build_copper()
2297 (copl++)->l = CMOVE(vbstop2hw(par->vbstop), vbstop); in ami_build_copper()
2305 ami_rebuild_copper(info->par); in ami_build_copper()
2379 struct amifb_par par; in amifb_check_var() local
2382 err = ami_decode_var(var, &par, info); in amifb_check_var()
2387 ami_encode_var(var, &par); in amifb_check_var()
2394 struct amifb_par *par = info->par; in amifb_set_par() local
2401 error = ami_decode_var(&info->var, par, info); in amifb_set_par()
2412 if (par->bpp == 1) { in amifb_set_par()
2417 info->fix.type_aux = par->next_line; in amifb_set_par()
2422 info->fix.line_length = div8(upx(16 << maxfmode, par->vxres)); in amifb_set_par()
2424 if (par->vmode & FB_VMODE_YWRAP) { in amifb_set_par()
2432 if (par->vmode & FB_VMODE_SMOOTH_XPAN) in amifb_set_par()
2452 const struct amifb_par *par = info->par; in amifb_setcolreg() local
2457 } else if (par->bplcon0 & BPC0_SHRES) { in amifb_setcolreg()
2484 u_short bplcon3 = par->bplcon3; in amifb_setcolreg()
2498 if (par->bplcon0 & BPC0_SHRES) { in amifb_setcolreg()
3169 struct amifb_par *par = info->par; in amifb_fillrect() local
3191 dst_idx += rect->dy * par->next_line * 8 + rect->dx; in amifb_fillrect()
3196 par->next_plane, dst, dst_idx, width, in amifb_fillrect()
3201 xor_one_line(info->var.bits_per_pixel, par->next_plane, in amifb_fillrect()
3205 dst_idx += par->next_line * 8; in amifb_fillrect()
3247 struct amifb_par *par = info->par; in amifb_copyarea() local
3286 dst_idx += dy * par->next_line * 8 + dx; in amifb_copyarea()
3287 src_idx += sy * par->next_line * 8 + sx; in amifb_copyarea()
3290 dst_idx -= par->next_line * 8; in amifb_copyarea()
3291 src_idx -= par->next_line * 8; in amifb_copyarea()
3293 par->next_plane, dst, dst_idx, src, in amifb_copyarea()
3299 par->next_plane, dst, dst_idx, src, in amifb_copyarea()
3301 dst_idx += par->next_line * 8; in amifb_copyarea()
3302 src_idx += par->next_line * 8; in amifb_copyarea()
3340 struct amifb_par *par = info->par; in amifb_imageblit() local
3365 dst_idx += dy * par->next_line * 8 + dx; in amifb_imageblit()
3370 par->next_plane, dst, dst_idx, width, in amifb_imageblit()
3373 dst_idx += par->next_line * 8; in amifb_imageblit()
3378 height, par->next_line, par->next_plane, in amifb_imageblit()
3401 i = ami_get_fix_cursorinfo(&crsr.fix, info->par); in amifb_ioctl()
3410 info->par); in amifb_ioctl()
3421 info->par); in amifb_ioctl()
3424 i = ami_get_cursorstate(&crsr.state, info->par); in amifb_ioctl()
3433 return ami_set_cursorstate(&crsr.state, info->par); in amifb_ioctl()
3464 struct amifb_par *par = dev_id; in amifb_interrupt() local
3467 ami_update_display(par); in amifb_interrupt()
3470 ami_init_display(par); in amifb_interrupt()
3474 ami_rebuild_copper(par); in amifb_interrupt()
3478 ami_set_sprite(par); in amifb_interrupt()
3482 ami_set_sprite(par); in amifb_interrupt()
3486 ami_do_blank(par); in amifb_interrupt()
3491 ami_reinit_copper(par); in amifb_interrupt()
3731 "fb vertb handler", info->par); in amifb_probe()
3753 free_irq(IRQ_AMIGA_COPPER, info->par); in amifb_probe()
3771 free_irq(IRQ_AMIGA_COPPER, info->par); in amifb_remove()