Lines Matching defs:par
480 const struct aty128fb_par *par);
482 struct aty128fb_par *par);
483 static void aty128_timings(struct aty128fb_par *par);
484 static void aty128_init_engine(struct aty128fb_par *par);
485 static void aty128_reset_engine(const struct aty128fb_par *par);
486 static void aty128_flush_pixel_cache(const struct aty128fb_par *par);
487 static void do_wait_for_fifo(u16 entries, struct aty128fb_par *par);
488 static void wait_for_fifo(u16 entries, struct aty128fb_par *par);
489 static void wait_for_idle(struct aty128fb_par *par);
523 const struct aty128fb_par *par)
525 return readl (par->regbase + regindex);
529 const struct aty128fb_par *par)
531 writel (val, par->regbase + regindex);
535 const struct aty128fb_par *par)
537 return readb (par->regbase + regindex);
541 const struct aty128fb_par *par)
543 writeb (val, par->regbase + regindex);
546 #define aty_ld_le32(regindex) _aty_ld_le32(regindex, par)
547 #define aty_st_le32(regindex, val) _aty_st_le32(regindex, val, par)
548 #define aty_ld_8(regindex) _aty_ld_8(regindex, par)
549 #define aty_st_8(regindex, val) _aty_st_8(regindex, val, par)
555 #define aty_ld_pll(pll_index) _aty_ld_pll(pll_index, par)
556 #define aty_st_pll(pll_index, val) _aty_st_pll(pll_index, val, par)
560 const struct aty128fb_par *par)
568 const struct aty128fb_par *par)
576 static int aty_pll_readupdate(const struct aty128fb_par *par)
582 static void aty_pll_wait_readupdate(const struct aty128fb_par *par)
588 if (aty_pll_readupdate(par)) {
599 static void aty_pll_writeupdate(const struct aty128fb_par *par)
601 aty_pll_wait_readupdate(par);
609 static int register_test(const struct aty128fb_par *par)
632 static void do_wait_for_fifo(u16 entries, struct aty128fb_par *par)
638 par->fifo_slots = aty_ld_le32(GUI_STAT) & 0x0fff;
639 if (par->fifo_slots >= entries)
642 aty128_reset_engine(par);
647 static void wait_for_idle(struct aty128fb_par *par)
651 do_wait_for_fifo(64, par);
656 aty128_flush_pixel_cache(par);
657 par->blitter_may_be_busy = 0;
661 aty128_reset_engine(par);
666 static void wait_for_fifo(u16 entries, struct aty128fb_par *par)
668 if (par->fifo_slots < entries)
669 do_wait_for_fifo(64, par);
670 par->fifo_slots -= entries;
674 static void aty128_flush_pixel_cache(const struct aty128fb_par *par)
690 static void aty128_reset_engine(const struct aty128fb_par *par)
694 aty128_flush_pixel_cache(par);
718 static void aty128_init_engine(struct aty128fb_par *par)
722 wait_for_idle(par);
725 wait_for_fifo(1, par);
728 aty128_reset_engine(par);
730 pitch_value = par->crtc.pitch;
731 if (par->crtc.bpp == 24) {
735 wait_for_fifo(4, par);
752 (depth_to_dst(par->crtc.depth) << 8) |
763 wait_for_fifo(8, par);
781 wait_for_idle(par);
808 static void __iomem *aty128_map_ROM(const struct aty128fb_par *par,
895 static void aty128_get_pllinfo(struct aty128fb_par *par,
904 par->constants.ppll_max = BIOS_IN32(bios_pll + 0x16);
905 par->constants.ppll_min = BIOS_IN32(bios_pll + 0x12);
906 par->constants.xclk = BIOS_IN16(bios_pll + 0x08);
907 par->constants.ref_divider = BIOS_IN16(bios_pll + 0x10);
908 par->constants.ref_clk = BIOS_IN16(bios_pll + 0x0e);
911 par->constants.ppll_max, par->constants.ppll_min,
912 par->constants.xclk, par->constants.ref_divider,
913 par->constants.ref_clk);
918 static void __iomem *aty128_find_mem_vbios(struct aty128fb_par *par)
943 static void aty128_timings(struct aty128fb_par *par)
956 if (!par->constants.ref_clk)
957 par->constants.ref_clk = 2950;
965 par->constants.xclk = round_div((2 * Nx * par->constants.ref_clk),
968 par->constants.ref_divider =
972 if (!par->constants.ref_divider) {
973 par->constants.ref_divider = 0x3b;
976 aty_pll_writeupdate(par);
978 aty_st_pll(PPLL_REF_DIV, par->constants.ref_divider);
979 aty_pll_writeupdate(par);
982 if (!par->constants.ppll_min)
983 par->constants.ppll_min = 12500;
984 if (!par->constants.ppll_max)
985 par->constants.ppll_max = 25000; /* 23000 on some cards? */
986 if (!par->constants.xclk)
987 par->constants.xclk = 0x1d4d; /* same as mclk */
989 par->constants.fifo_width = 128;
990 par->constants.fifo_depth = 32;
994 par->mem = &sdr_128;
997 par->mem = &sdr_sgram;
1000 par->mem = &ddr_sgram;
1003 par->mem = &sdr_sgram;
1015 const struct aty128fb_par *par)
1032 const struct aty128fb_par *par)
1090 if ((u32)(vxres * vyres * bytpp) > par->vram_size) {
1277 static void aty128_set_crt_enable(struct aty128fb_par *par, int on)
1289 static void aty128_set_lcd_enable(struct aty128fb_par *par, int on)
1293 struct fb_info *info = pci_get_drvdata(par->pdev);
1318 const struct aty128fb_par *par)
1335 aty_pll_wait_readupdate(par);
1336 aty_st_pll(PPLL_REF_DIV, par->constants.ref_divider & 0x3ff);
1337 aty_pll_writeupdate(par);
1346 aty_pll_wait_readupdate(par);
1348 aty_pll_writeupdate(par);
1350 aty_pll_wait_readupdate(par);
1352 aty_pll_writeupdate(par);
1360 const struct aty128fb_par *par)
1362 const struct aty128_constants c = par->constants;
1415 const struct aty128fb_par *par)
1425 const struct aty128fb_par *par)
1427 const struct aty128_meminfo *m = par->mem;
1428 u32 xclk = par->constants.xclk;
1429 u32 fifo_width = par->constants.fifo_width;
1430 u32 fifo_depth = par->constants.fifo_depth;
1484 struct aty128fb_par *par = info->par;
1488 if ((err = aty128_decode_var(&info->var, par)) != 0)
1491 if (par->blitter_may_be_busy)
1492 wait_for_idle(par);
1510 aty128_set_crtc(&par->crtc, par);
1511 aty128_set_pll(&par->pll, par);
1512 aty128_set_fifo(&par->fifo_reg, par);
1517 if (par->crtc.bpp == 32)
1519 else if (par->crtc.bpp == 16)
1526 info->fix.line_length = (par->crtc.vxres * par->crtc.bpp) >> 3;
1527 info->fix.visual = par->crtc.bpp == 8 ? FB_VISUAL_PSEUDOCOLOR
1530 if (par->chip_gen == rage_M3) {
1531 aty128_set_crt_enable(par, par->crt_on);
1532 aty128_set_lcd_enable(par, par->lcd_on);
1534 if (par->accel_flags & FB_ACCELF_TEXT)
1535 aty128_init_engine(par);
1539 (((par->crtc.h_total>>16) & 0xff)+1)*8,
1540 ((par->crtc.v_total>>16) & 0x7ff)+1,
1541 par->crtc.bpp,
1542 par->crtc.vxres*par->crtc.bpp/8);
1553 struct aty128fb_par *par)
1560 if ((err = aty128_var_to_crtc(var, &crtc, par)))
1563 if ((err = aty128_var_to_pll(var->pixclock, &pll, par)))
1566 if ((err = aty128_ddafifo(&fifo_reg, &pll, crtc.depth, par)))
1569 par->crtc = crtc;
1570 par->pll = pll;
1571 par->fifo_reg = fifo_reg;
1572 par->accel_flags = var->accel_flags;
1579 const struct aty128fb_par *par)
1583 if ((err = aty128_crtc_to_var(&par->crtc, var)))
1586 if ((err = aty128_pll_to_var(&par->pll, var)))
1594 var->accel_flags = par->accel_flags;
1603 struct aty128fb_par par;
1606 par = *(struct aty128fb_par *)info->par;
1607 if ((err = aty128_decode_var(var, &par)) != 0)
1609 aty128_encode_var(var, &par);
1620 struct aty128fb_par *par = fb->par;
1625 xres = (((par->crtc.h_total >> 16) & 0xff) + 1) << 3;
1626 yres = ((par->crtc.v_total >> 16) & 0x7ff) + 1;
1631 if (xoffset+xres > par->crtc.vxres || yoffset+yres > par->crtc.vyres)
1634 par->crtc.xoffset = xoffset;
1635 par->crtc.yoffset = yoffset;
1637 offset = ((yoffset * par->crtc.vxres + xoffset) * (par->crtc.bpp >> 3))
1640 if (par->crtc.bpp == 24)
1653 struct aty128fb_par *par)
1655 if (par->chip_gen == rage_M3) {
1666 struct aty128fb_par *par = info->par;
1668 if (par->blitter_may_be_busy)
1669 wait_for_idle(par);
1734 static int aty128_bl_get_level_brightness(struct aty128fb_par *par,
1737 struct fb_info *info = pci_get_drvdata(par->pdev);
1763 struct aty128fb_par *par = bl_get_data(bd);
1767 if (!par->lcd_on)
1784 reg |= (aty128_bl_get_level_brightness(par, level) <<
1796 reg |= (aty128_bl_get_level_brightness(par, 0) <<
1826 static void aty128_bl_init(struct aty128fb_par *par)
1829 struct fb_info *info = pci_get_drvdata(par->pdev);
1834 if (par->chip_gen != rage_M3)
1847 bd = backlight_device_register(name, info->device, par, &aty128_bl_data,
1886 struct aty128fb_par *par = data;
1890 pci_restore_state(par->pdev);
1891 aty128_do_resume(par->pdev);
1899 struct aty128fb_par *par = info->par;
1919 if (par->vram_size % (1024 * 1024) == 0)
1920 printk("%dM %s\n", par->vram_size / (1024*1024), par->mem->name);
1922 printk("%dk %s\n", par->vram_size / 1024, par->mem->name);
1924 par->chip_gen = ent->driver_data;
1929 par->lcd_on = default_lcd_on;
1930 par->crt_on = default_crt_on;
1936 if (par->chip_gen == rage_M3) {
1944 pmac_set_early_video_resume(aty128_early_resume, par);
2010 if (par->chip_gen == rage_M3)
2022 aty128_init_engine(par);
2024 par->pdev = pdev;
2025 par->asleep = 0;
2026 par->lock_blank = 0;
2033 aty128_bl_init(par);
2047 struct aty128fb_par *par;
2085 par = info->par;
2087 info->pseudo_palette = par->pseudo_palette;
2091 par->regbase = pci_ioremap_bar(pdev, 2);
2092 if (!par->regbase)
2097 par->vram_size = aty_ld_le32(CNFG_MEMSIZE) & 0x03FFFFFF;
2100 info->screen_base = ioremap_wc(fb_addr, par->vram_size);
2107 info->fix.smem_len = par->vram_size;
2111 if (!register_test(par)) {
2117 bios = aty128_map_ROM(par, pdev);
2120 bios = aty128_find_mem_vbios(par);
2126 aty128_get_pllinfo(par, bios);
2131 aty128_timings(par);
2138 par->wc_cookie = arch_phys_wc_add(info->fix.smem_start,
2139 par->vram_size);
2145 iounmap(par->regbase);
2160 struct aty128fb_par *par;
2165 par = info->par;
2173 arch_phys_wc_del(par->wc_cookie);
2174 iounmap(par->regbase);
2192 struct aty128fb_par *par = fb->par;
2195 if (par->lock_blank || par->asleep)
2218 if (par->chip_gen == rage_M3) {
2219 aty128_set_crt_enable(par, par->crt_on && !blank);
2220 aty128_set_lcd_enable(par, par->lcd_on && !blank);
2234 struct aty128fb_par *par = info->par;
2237 || (par->crtc.depth == 16 && regno > 63)
2238 || (par->crtc.depth == 15 && regno > 31))
2249 switch (par->crtc.depth) {
2266 if (par->crtc.depth == 16 && regno > 0) {
2274 par->green[regno] = green;
2276 par->red[regno] = red;
2277 par->blue[regno] = blue;
2278 aty128_st_pal(regno * 8, red, par->green[regno*2],
2279 blue, par);
2281 red = par->red[regno/2];
2282 blue = par->blue[regno/2];
2284 } else if (par->crtc.bpp == 16)
2286 aty128_st_pal(regno, red, green, blue, par);
2301 struct aty128fb_par *par = info->par;
2307 if (par->chip_gen != rage_M3)
2312 par->lcd_on = (value & 0x01) != 0;
2313 par->crt_on = (value & 0x02) != 0;
2314 if (!par->crt_on && !par->lcd_on)
2315 par->lcd_on = 1;
2316 aty128_set_crt_enable(par, par->crt_on);
2317 aty128_set_lcd_enable(par, par->lcd_on);
2320 if (par->chip_gen != rage_M3)
2322 value = (par->crt_on << 1) | par->lcd_on;
2328 static void aty128_set_suspend(struct aty128fb_par *par, int suspend)
2332 if (!par->pdev->pm_cap)
2364 struct aty128fb_par *par = info->par;
2390 wait_for_idle(par);
2391 aty128_reset_engine(par);
2392 wait_for_idle(par);
2398 par->asleep = 1;
2399 par->lock_blank = 1;
2415 aty128_set_suspend(par, 1);
2442 struct aty128fb_par *par = info->par;
2453 aty128_set_suspend(par, 0);
2454 par->asleep = 0;
2457 aty128_reset_engine(par);
2458 wait_for_idle(par);
2467 par->lock_blank = 0;