Lines Matching refs:rinfo

285 void _radeon_msleep(struct radeonfb_info *rinfo, unsigned long ms)  in _radeon_msleep()  argument
287 if (rinfo->no_schedule || oops_in_progress) in _radeon_msleep()
293 void radeon_pll_errata_after_index_slow(struct radeonfb_info *rinfo) in radeon_pll_errata_after_index_slow() argument
300 void radeon_pll_errata_after_data_slow(struct radeonfb_info *rinfo) in radeon_pll_errata_after_data_slow() argument
302 if (rinfo->errata & CHIP_ERRATA_PLL_DELAY) { in radeon_pll_errata_after_data_slow()
304 _radeon_msleep(rinfo, 5); in radeon_pll_errata_after_data_slow()
306 if (rinfo->errata & CHIP_ERRATA_R300_CG) { in radeon_pll_errata_after_data_slow()
316 void _OUTREGP(struct radeonfb_info *rinfo, u32 addr, u32 val, u32 mask) in _OUTREGP() argument
321 spin_lock_irqsave(&rinfo->reg_lock, flags); in _OUTREGP()
326 spin_unlock_irqrestore(&rinfo->reg_lock, flags); in _OUTREGP()
329 u32 __INPLL(struct radeonfb_info *rinfo, u32 addr) in __INPLL() argument
334 radeon_pll_errata_after_index(rinfo); in __INPLL()
336 radeon_pll_errata_after_data(rinfo); in __INPLL()
340 void __OUTPLL(struct radeonfb_info *rinfo, unsigned int index, u32 val) in __OUTPLL() argument
343 radeon_pll_errata_after_index(rinfo); in __OUTPLL()
345 radeon_pll_errata_after_data(rinfo); in __OUTPLL()
348 void __OUTPLLP(struct radeonfb_info *rinfo, unsigned int index, in __OUTPLLP() argument
353 tmp = __INPLL(rinfo, index); in __OUTPLLP()
356 __OUTPLL(rinfo, index, tmp); in __OUTPLLP()
359 void _radeon_fifo_wait(struct radeonfb_info *rinfo, int entries) in _radeon_fifo_wait() argument
371 void radeon_engine_flush(struct radeonfb_info *rinfo) in radeon_engine_flush() argument
382 _radeon_fifo_wait(rinfo, 64); in radeon_engine_flush()
393 void _radeon_engine_idle(struct radeonfb_info *rinfo) in _radeon_engine_idle() argument
398 _radeon_fifo_wait(rinfo, 64); in _radeon_engine_idle()
402 radeon_engine_flush(rinfo); in _radeon_engine_idle()
412 static void radeon_unmap_ROM(struct radeonfb_info *rinfo, struct pci_dev *dev) in radeon_unmap_ROM() argument
414 if (!rinfo->bios_seg) in radeon_unmap_ROM()
416 pci_unmap_rom(dev, rinfo->bios_seg); in radeon_unmap_ROM()
419 static int radeon_map_ROM(struct radeonfb_info *rinfo, struct pci_dev *dev) in radeon_map_ROM() argument
442 pci_name(rinfo->pdev)); in radeon_map_ROM()
446 rinfo->bios_seg = rom; in radeon_map_ROM()
452 pci_name(rinfo->pdev), BIOS_IN16(0)); in radeon_map_ROM()
484 "incorrect: %08x\n", pci_name(rinfo->pdev), BIOS_IN32(dptr)); in radeon_map_ROM()
504 rinfo->fp_bios_start = BIOS_IN16(0x48); in radeon_map_ROM()
508 rinfo->bios_seg = NULL; in radeon_map_ROM()
509 radeon_unmap_ROM(rinfo, dev); in radeon_map_ROM()
514 static int radeon_find_mem_vbios(struct radeonfb_info *rinfo) in radeon_find_mem_vbios() argument
537 rinfo->bios_seg = rom_base; in radeon_find_mem_vbios()
538 rinfo->fp_bios_start = BIOS_IN16(0x48); in radeon_find_mem_vbios()
549 static int radeon_read_xtal_OF(struct radeonfb_info *rinfo) in radeon_read_xtal_OF() argument
551 struct device_node *dp = rinfo->of_node; in radeon_read_xtal_OF()
562 rinfo->pll.ref_clk = (*val) / 10; in radeon_read_xtal_OF()
566 rinfo->pll.sclk = (*val) / 10; in radeon_read_xtal_OF()
570 rinfo->pll.mclk = (*val) / 10; in radeon_read_xtal_OF()
579 static int radeon_probe_pll_params(struct radeonfb_info *rinfo) in radeon_probe_pll_params() argument
652 radeon_pll_errata_after_index(rinfo); in radeon_probe_pll_params()
706 rinfo->pll.ref_clk = xtal; in radeon_probe_pll_params()
707 rinfo->pll.ref_div = ref_div; in radeon_probe_pll_params()
708 rinfo->pll.sclk = sclk; in radeon_probe_pll_params()
709 rinfo->pll.mclk = mclk; in radeon_probe_pll_params()
717 static void radeon_get_pllinfo(struct radeonfb_info *rinfo) in radeon_get_pllinfo() argument
724 switch (rinfo->chipset) { in radeon_get_pllinfo()
727 rinfo->pll.ppll_max = 35000; in radeon_get_pllinfo()
728 rinfo->pll.ppll_min = 12000; in radeon_get_pllinfo()
729 rinfo->pll.mclk = 23000; in radeon_get_pllinfo()
730 rinfo->pll.sclk = 23000; in radeon_get_pllinfo()
731 rinfo->pll.ref_clk = 2700; in radeon_get_pllinfo()
738 rinfo->pll.ppll_max = 35000; in radeon_get_pllinfo()
739 rinfo->pll.ppll_min = 12000; in radeon_get_pllinfo()
740 rinfo->pll.mclk = 27500; in radeon_get_pllinfo()
741 rinfo->pll.sclk = 27500; in radeon_get_pllinfo()
742 rinfo->pll.ref_clk = 2700; in radeon_get_pllinfo()
748 rinfo->pll.ppll_max = 35000; in radeon_get_pllinfo()
749 rinfo->pll.ppll_min = 12000; in radeon_get_pllinfo()
750 rinfo->pll.mclk = 25000; in radeon_get_pllinfo()
751 rinfo->pll.sclk = 25000; in radeon_get_pllinfo()
752 rinfo->pll.ref_clk = 2700; in radeon_get_pllinfo()
758 rinfo->pll.ppll_max = 40000; in radeon_get_pllinfo()
759 rinfo->pll.ppll_min = 20000; in radeon_get_pllinfo()
760 rinfo->pll.mclk = 27000; in radeon_get_pllinfo()
761 rinfo->pll.sclk = 27000; in radeon_get_pllinfo()
762 rinfo->pll.ref_clk = 2700; in radeon_get_pllinfo()
769 rinfo->pll.ppll_max = 35000; in radeon_get_pllinfo()
770 rinfo->pll.ppll_min = 12000; in radeon_get_pllinfo()
771 rinfo->pll.mclk = 16600; in radeon_get_pllinfo()
772 rinfo->pll.sclk = 16600; in radeon_get_pllinfo()
773 rinfo->pll.ref_clk = 2700; in radeon_get_pllinfo()
776 rinfo->pll.ref_div = INPLL(PPLL_REF_DIV) & PPLL_REF_DIV_MASK; in radeon_get_pllinfo()
783 if (!force_measure_pll && radeon_read_xtal_OF(rinfo) == 0) { in radeon_get_pllinfo()
793 if (!force_measure_pll && rinfo->bios_seg) { in radeon_get_pllinfo()
794 u16 pll_info_block = BIOS_IN16(rinfo->fp_bios_start + 0x30); in radeon_get_pllinfo()
796 rinfo->pll.sclk = BIOS_IN16(pll_info_block + 0x08); in radeon_get_pllinfo()
797 rinfo->pll.mclk = BIOS_IN16(pll_info_block + 0x0a); in radeon_get_pllinfo()
798 rinfo->pll.ref_clk = BIOS_IN16(pll_info_block + 0x0e); in radeon_get_pllinfo()
799 rinfo->pll.ref_div = BIOS_IN16(pll_info_block + 0x10); in radeon_get_pllinfo()
800 rinfo->pll.ppll_min = BIOS_IN32(pll_info_block + 0x12); in radeon_get_pllinfo()
801 rinfo->pll.ppll_max = BIOS_IN32(pll_info_block + 0x16); in radeon_get_pllinfo()
811 if (radeon_probe_pll_params(rinfo) == 0) { in radeon_get_pllinfo()
827 if (rinfo->pll.mclk == 0) in radeon_get_pllinfo()
828 rinfo->pll.mclk = 20000; in radeon_get_pllinfo()
829 if (rinfo->pll.sclk == 0) in radeon_get_pllinfo()
830 rinfo->pll.sclk = 20000; in radeon_get_pllinfo()
833 rinfo->pll.ref_clk / 100, rinfo->pll.ref_clk % 100, in radeon_get_pllinfo()
834 rinfo->pll.ref_div, in radeon_get_pllinfo()
835 rinfo->pll.mclk / 100, rinfo->pll.mclk % 100, in radeon_get_pllinfo()
836 rinfo->pll.sclk / 100, rinfo->pll.sclk % 100); in radeon_get_pllinfo()
837 printk("radeonfb: PLL min %d max %d\n", rinfo->pll.ppll_min, rinfo->pll.ppll_max); in radeon_get_pllinfo()
842 struct radeonfb_info *rinfo = info->par; in radeonfb_check_var() local
847 if (radeon_match_mode(rinfo, &v, var)) in radeonfb_check_var()
931 if (rinfo->info->flags & FBINFO_HWACCEL_DISABLED) { in radeonfb_check_var()
939 if (((v.xres_virtual * v.yres_virtual * nom) / den) > rinfo->mapped_vram) in radeonfb_check_var()
964 struct radeonfb_info *rinfo = info->par; in radeonfb_pan_display() local
970 if (rinfo->asleep) in radeonfb_pan_display()
983 struct radeonfb_info *rinfo = info->par; in radeonfb_ioctl() local
995 if (!rinfo->is_mobility) in radeonfb_ioctl()
1032 if (!rinfo->is_mobility) in radeonfb_ioctl()
1052 int radeon_screen_blank(struct radeonfb_info *rinfo, int blank, int mode_switch) in radeon_screen_blank() argument
1058 if (rinfo->lock_blank) in radeon_screen_blank()
1087 switch (rinfo->mon1_type) { in radeon_screen_blank()
1099 del_timer_sync(&rinfo->lvds_timer); in radeon_screen_blank()
1103 | LVDS_EN | (rinfo->init_state.lvds_gen_cntl in radeon_screen_blank()
1110 rinfo->init_state.lvds_gen_cntl &= ~LVDS_STATE_MASK; in radeon_screen_blank()
1111 rinfo->init_state.lvds_gen_cntl |= in radeon_screen_blank()
1114 radeon_msleep(rinfo->panel_info.pwr_delay); in radeon_screen_blank()
1118 rinfo->pending_lvds_gen_cntl = target_val; in radeon_screen_blank()
1119 mod_timer(&rinfo->lvds_timer, in radeon_screen_blank()
1121 msecs_to_jiffies(rinfo->panel_info.pwr_delay)); in radeon_screen_blank()
1136 if (rinfo->is_mobility || rinfo->is_IGP) in radeon_screen_blank()
1144 rinfo->pending_lvds_gen_cntl = val; in radeon_screen_blank()
1145 mod_timer(&rinfo->lvds_timer, in radeon_screen_blank()
1147 msecs_to_jiffies(rinfo->panel_info.pwr_delay)); in radeon_screen_blank()
1148 rinfo->init_state.lvds_gen_cntl &= ~LVDS_STATE_MASK; in radeon_screen_blank()
1149 rinfo->init_state.lvds_gen_cntl |= val & LVDS_STATE_MASK; in radeon_screen_blank()
1150 if (rinfo->is_mobility || rinfo->is_IGP) in radeon_screen_blank()
1165 struct radeonfb_info *rinfo = info->par; in radeonfb_blank() local
1167 if (rinfo->asleep) in radeonfb_blank()
1170 return radeon_screen_blank(rinfo, blank, 0); in radeonfb_blank()
1175 struct radeonfb_info *rinfo) in radeon_setcolreg() argument
1187 rinfo->palette[regno].red = red; in radeon_setcolreg()
1188 rinfo->palette[regno].green = green; in radeon_setcolreg()
1189 rinfo->palette[regno].blue = blue; in radeon_setcolreg()
1194 if (!rinfo->asleep) { in radeon_setcolreg()
1197 if (rinfo->bpp == 16) { in radeon_setcolreg()
1200 if (rinfo->depth == 16 && regno > 63) in radeon_setcolreg()
1202 if (rinfo->depth == 15 && regno > 31) in radeon_setcolreg()
1208 if (rinfo->depth == 16) { in radeon_setcolreg()
1211 (rinfo->palette[regno>>1].red << 16) | in radeon_setcolreg()
1213 (rinfo->palette[regno>>1].blue)); in radeon_setcolreg()
1214 green = rinfo->palette[regno<<1].green; in radeon_setcolreg()
1218 if (rinfo->depth != 16 || regno < 32) { in radeon_setcolreg()
1225 u32 *pal = rinfo->info->pseudo_palette; in radeon_setcolreg()
1226 switch (rinfo->depth) { in radeon_setcolreg()
1249 struct radeonfb_info *rinfo = info->par; in radeonfb_setcolreg() local
1253 if (!rinfo->asleep) { in radeonfb_setcolreg()
1254 if (rinfo->is_mobility) { in radeonfb_setcolreg()
1261 if (rinfo->has_CRTC2) { in radeonfb_setcolreg()
1268 rc = radeon_setcolreg (regno, red, green, blue, transp, rinfo); in radeonfb_setcolreg()
1270 if (!rinfo->asleep && rinfo->is_mobility) in radeonfb_setcolreg()
1278 struct radeonfb_info *rinfo = info->par; in radeonfb_setcmap() local
1283 if (!rinfo->asleep) { in radeonfb_setcmap()
1284 if (rinfo->is_mobility) { in radeonfb_setcmap()
1291 if (rinfo->has_CRTC2) { in radeonfb_setcmap()
1313 rinfo); in radeonfb_setcmap()
1318 if (!rinfo->asleep && rinfo->is_mobility) in radeonfb_setcmap()
1324 static void radeon_save_state (struct radeonfb_info *rinfo, in radeon_save_state() argument
1355 radeon_pll_errata_after_index(rinfo); in radeon_save_state()
1361 static void radeon_write_pll_regs(struct radeonfb_info *rinfo, struct radeon_regs *mode) in radeon_write_pll_regs() argument
1368 if (rinfo->is_mobility) { in radeon_write_pll_regs()
1385 radeon_pll_errata_after_index(rinfo); in radeon_write_pll_regs()
1386 radeon_pll_errata_after_data(rinfo); in radeon_write_pll_regs()
1403 radeon_pll_errata_after_index(rinfo); in radeon_write_pll_regs()
1404 radeon_pll_errata_after_data(rinfo); in radeon_write_pll_regs()
1407 if (IS_R300_VARIANT(rinfo) || in radeon_write_pll_regs()
1408 rinfo->family == CHIP_FAMILY_RS300 || in radeon_write_pll_regs()
1409 rinfo->family == CHIP_FAMILY_RS400 || in radeon_write_pll_regs()
1410 rinfo->family == CHIP_FAMILY_RS480) { in radeon_write_pll_regs()
1460 struct radeonfb_info *rinfo = (struct radeonfb_info *)data; in radeon_lvds_timer_func() local
1464 OUTREG(LVDS_GEN_CNTL, rinfo->pending_lvds_gen_cntl); in radeon_lvds_timer_func()
1471 void radeon_write_mode (struct radeonfb_info *rinfo, struct radeon_regs *mode, in radeon_write_mode() argument
1475 int primary_mon = PRIMARY_MONITOR(rinfo); in radeon_write_mode()
1481 radeon_screen_blank(rinfo, FB_BLANK_NORMAL, 0); in radeon_write_mode()
1508 radeon_write_pll_regs(rinfo, mode); in radeon_write_mode()
1524 radeon_screen_blank(rinfo, FB_BLANK_UNBLANK, 0); in radeon_write_mode()
1535 static void radeon_calc_pll_regs(struct radeonfb_info *rinfo, struct radeon_regs *regs, in radeon_calc_pll_regs() argument
1570 while (rinfo->has_CRTC2) { in radeon_calc_pll_regs()
1581 if (rinfo->family == CHIP_FAMILY_R200 || IS_R300_VARIANT(rinfo)) { in radeon_calc_pll_regs()
1603 if (freq > rinfo->pll.ppll_max) in radeon_calc_pll_regs()
1604 freq = rinfo->pll.ppll_max; in radeon_calc_pll_regs()
1605 if (freq*12 < rinfo->pll.ppll_min) in radeon_calc_pll_regs()
1606 freq = rinfo->pll.ppll_min / 12; in radeon_calc_pll_regs()
1608 freq, rinfo->pll.ppll_min, rinfo->pll.ppll_max); in radeon_calc_pll_regs()
1617 if (pll_output_freq >= rinfo->pll.ppll_min && in radeon_calc_pll_regs()
1618 pll_output_freq <= rinfo->pll.ppll_max) in radeon_calc_pll_regs()
1629 rinfo->pll.ref_div, rinfo->pll.ref_clk, in radeon_calc_pll_regs()
1639 rinfo->pll.ref_div, rinfo->pll.ref_clk, in radeon_calc_pll_regs()
1642 fb_div = round_div(rinfo->pll.ref_div*pll_output_freq, in radeon_calc_pll_regs()
1643 rinfo->pll.ref_clk); in radeon_calc_pll_regs()
1644 regs->ppll_ref_div = rinfo->pll.ref_div; in radeon_calc_pll_regs()
1654 struct radeonfb_info *rinfo = info->par; in radeonfb_set_par() local
1666 int primary_mon = PRIMARY_MONITOR(rinfo); in radeonfb_set_par()
1693 if (rinfo->panel_info.xres < mode->xres) in radeonfb_set_par()
1694 mode->xres = rinfo->panel_info.xres; in radeonfb_set_par()
1695 if (rinfo->panel_info.yres < mode->yres) in radeonfb_set_par()
1696 mode->yres = rinfo->panel_info.yres; in radeonfb_set_par()
1698 hTotal = mode->xres + rinfo->panel_info.hblank; in radeonfb_set_par()
1699 hSyncStart = mode->xres + rinfo->panel_info.hOver_plus; in radeonfb_set_par()
1700 hSyncEnd = hSyncStart + rinfo->panel_info.hSync_width; in radeonfb_set_par()
1702 vTotal = mode->yres + rinfo->panel_info.vblank; in radeonfb_set_par()
1703 vSyncStart = mode->yres + rinfo->panel_info.vOver_plus; in radeonfb_set_par()
1704 vSyncEnd = vSyncStart + rinfo->panel_info.vSync_width; in radeonfb_set_par()
1706 h_sync_pol = !rinfo->panel_info.hAct_high; in radeonfb_set_par()
1707 v_sync_pol = !rinfo->panel_info.vAct_high; in radeonfb_set_par()
1709 pixClock = 100000000 / rinfo->panel_info.clock; in radeonfb_set_par()
1711 if (rinfo->panel_info.use_bios_dividers) { in radeonfb_set_par()
1713 newmode->ppll_div_3 = rinfo->panel_info.fbk_divider | in radeonfb_set_par()
1714 (rinfo->panel_info.post_divider << 16); in radeonfb_set_par()
1715 newmode->ppll_ref_div = rinfo->panel_info.ref_divider; in radeonfb_set_par()
1757 newmode->crtc_more_cntl = rinfo->init_state.crtc_more_cntl; in radeonfb_set_par()
1789 rinfo->pitch = ((mode->xres_virtual * ((mode->bits_per_pixel + 1) / 8) + 0x3f) in radeonfb_set_par()
1793 newmode->crtc_pitch = (rinfo->pitch << 3) / ((mode->bits_per_pixel + 1) / 8); in radeonfb_set_par()
1837 rinfo->bpp = mode->bits_per_pixel; in radeonfb_set_par()
1838 rinfo->depth = depth; in radeonfb_set_par()
1848 radeon_calc_pll_regs(rinfo, newmode, freq); in radeonfb_set_par()
1850 newmode->vclk_ecp_cntl = rinfo->init_state.vclk_ecp_cntl; in radeonfb_set_par()
1855 if (mode->xres > rinfo->panel_info.xres) in radeonfb_set_par()
1856 mode->xres = rinfo->panel_info.xres; in radeonfb_set_par()
1857 if (mode->yres > rinfo->panel_info.yres) in radeonfb_set_par()
1858 mode->yres = rinfo->panel_info.yres; in radeonfb_set_par()
1860 newmode->fp_horz_stretch = (((rinfo->panel_info.xres / 8) - 1) in radeonfb_set_par()
1862 newmode->fp_vert_stretch = ((rinfo->panel_info.yres - 1) in radeonfb_set_par()
1865 if (mode->xres != rinfo->panel_info.xres) { in radeonfb_set_par()
1867 rinfo->panel_info.xres); in radeonfb_set_par()
1878 if (mode->yres != rinfo->panel_info.yres) { in radeonfb_set_par()
1880 rinfo->panel_info.yres); in radeonfb_set_par()
1890 newmode->fp_gen_cntl = (rinfo->init_state.fp_gen_cntl & (u32) in radeonfb_set_par()
1904 if (IS_R300_VARIANT(rinfo) || in radeonfb_set_par()
1905 (rinfo->family == CHIP_FAMILY_R200)) { in radeonfb_set_par()
1914 newmode->lvds_gen_cntl = rinfo->init_state.lvds_gen_cntl; in radeonfb_set_par()
1915 newmode->lvds_pll_cntl = rinfo->init_state.lvds_pll_cntl; in radeonfb_set_par()
1916 newmode->tmds_crc = rinfo->init_state.tmds_crc; in radeonfb_set_par()
1917 newmode->tmds_transmitter_cntl = rinfo->init_state.tmds_transmitter_cntl; in radeonfb_set_par()
1927 if (IS_R300_VARIANT(rinfo) || in radeonfb_set_par()
1928 (rinfo->family == CHIP_FAMILY_R200) || !rinfo->has_CRTC2) in radeonfb_set_par()
1935 newmode->fp_crtc_h_total_disp = (((rinfo->panel_info.hblank / 8) & 0x3ff) | in radeonfb_set_par()
1937 newmode->fp_crtc_v_total_disp = (rinfo->panel_info.vblank & 0xffff) | in radeonfb_set_par()
1939 newmode->fp_h_sync_strt_wid = ((rinfo->panel_info.hOver_plus & 0x1fff) | in radeonfb_set_par()
1941 newmode->fp_v_sync_strt_wid = ((rinfo->panel_info.vOver_plus & 0xfff) | in radeonfb_set_par()
1946 if (!rinfo->asleep) { in radeonfb_set_par()
1947 memcpy(&rinfo->state, newmode, sizeof(*newmode)); in radeonfb_set_par()
1948 radeon_write_mode (rinfo, newmode, 0); in radeonfb_set_par()
1951 radeonfb_engine_init (rinfo); in radeonfb_set_par()
1955 info->fix.line_length = rinfo->pitch*64; in radeonfb_set_par()
1959 info->fix.visual = rinfo->depth == 8 ? FB_VISUAL_PSEUDOCOLOR in radeonfb_set_par()
1964 btext_update_display(rinfo->fb_base_phys, mode->xres, mode->yres, in radeonfb_set_par()
1965 rinfo->depth, info->fix.line_length); in radeonfb_set_par()
1989 static int radeon_set_fbinfo(struct radeonfb_info *rinfo) in radeon_set_fbinfo() argument
1991 struct fb_info *info = rinfo->info; in radeon_set_fbinfo()
1993 info->par = rinfo; in radeon_set_fbinfo()
1994 info->pseudo_palette = rinfo->pseudo_palette; in radeon_set_fbinfo()
2001 info->screen_base = rinfo->fb_base; in radeon_set_fbinfo()
2002 info->screen_size = rinfo->mapped_vram; in radeon_set_fbinfo()
2004 strlcpy(info->fix.id, rinfo->name, sizeof(info->fix.id)); in radeon_set_fbinfo()
2005 info->fix.smem_start = rinfo->fb_base_phys; in radeon_set_fbinfo()
2006 info->fix.smem_len = rinfo->video_ram; in radeon_set_fbinfo()
2013 info->fix.mmio_start = rinfo->mmio_base_phys; in radeon_set_fbinfo()
2038 static void fixup_memory_mappings(struct radeonfb_info *rinfo) in fixup_memory_mappings() argument
2046 if (rinfo->has_CRTC2) { in fixup_memory_mappings()
2064 rinfo->fb_local_base = aper_base; in fixup_memory_mappings()
2067 rinfo->fb_local_base = 0; in fixup_memory_mappings()
2088 if (rinfo->has_CRTC2) in fixup_memory_mappings()
2093 if (rinfo->has_CRTC2) in fixup_memory_mappings()
2102 if (rinfo->has_CRTC2) in fixup_memory_mappings()
2113 static void radeon_identify_vram(struct radeonfb_info *rinfo) in radeon_identify_vram() argument
2118 if ((rinfo->family == CHIP_FAMILY_RS100) || in radeon_identify_vram()
2119 (rinfo->family == CHIP_FAMILY_RS200) || in radeon_identify_vram()
2120 (rinfo->family == CHIP_FAMILY_RS300) || in radeon_identify_vram()
2121 (rinfo->family == CHIP_FAMILY_RC410) || in radeon_identify_vram()
2122 (rinfo->family == CHIP_FAMILY_RS400) || in radeon_identify_vram()
2123 (rinfo->family == CHIP_FAMILY_RS480) ) { in radeon_identify_vram()
2136 if ((rinfo->family == CHIP_FAMILY_RS100) || in radeon_identify_vram()
2137 (rinfo->family == CHIP_FAMILY_RS200)) { in radeon_identify_vram()
2149 rinfo->video_ram = tmp & CNFG_MEMSIZE_MASK; in radeon_identify_vram()
2155 if (rinfo->video_ram == 0) { in radeon_identify_vram()
2156 switch (rinfo->pdev->device) { in radeon_identify_vram()
2159 rinfo->video_ram = 8192 * 1024; in radeon_identify_vram()
2170 if (rinfo->is_IGP || (rinfo->family >= CHIP_FAMILY_R300) || in radeon_identify_vram()
2172 rinfo->vram_ddr = 1; in radeon_identify_vram()
2174 rinfo->vram_ddr = 0; in radeon_identify_vram()
2177 if (IS_R300_VARIANT(rinfo)) { in radeon_identify_vram()
2180 case 0: rinfo->vram_width = 64; break; in radeon_identify_vram()
2181 case 1: rinfo->vram_width = 128; break; in radeon_identify_vram()
2182 case 2: rinfo->vram_width = 256; break; in radeon_identify_vram()
2183 default: rinfo->vram_width = 128; break; in radeon_identify_vram()
2185 } else if ((rinfo->family == CHIP_FAMILY_RV100) || in radeon_identify_vram()
2186 (rinfo->family == CHIP_FAMILY_RS100) || in radeon_identify_vram()
2187 (rinfo->family == CHIP_FAMILY_RS200)){ in radeon_identify_vram()
2189 rinfo->vram_width = 32; in radeon_identify_vram()
2191 rinfo->vram_width = 64; in radeon_identify_vram()
2194 rinfo->vram_width = 128; in radeon_identify_vram()
2196 rinfo->vram_width = 64; in radeon_identify_vram()
2204 pci_name(rinfo->pdev), in radeon_identify_vram()
2205 rinfo->video_ram / 1024, in radeon_identify_vram()
2206 rinfo->vram_ddr ? "DDR" : "SDRAM", in radeon_identify_vram()
2207 rinfo->vram_width); in radeon_identify_vram()
2227 struct radeonfb_info *rinfo = info->par; in radeon_show_edid1() local
2229 return radeon_show_one_edid(buf, off, count, rinfo->mon1_EDID); in radeon_show_edid1()
2240 struct radeonfb_info *rinfo = info->par; in radeon_show_edid2() local
2242 return radeon_show_one_edid(buf, off, count, rinfo->mon2_EDID); in radeon_show_edid2()
2268 struct radeonfb_info *rinfo; in radeonfb_pci_register() local
2290 rinfo = info->par; in radeonfb_pci_register()
2291 rinfo->info = info; in radeonfb_pci_register()
2292 rinfo->pdev = pdev; in radeonfb_pci_register()
2294 spin_lock_init(&rinfo->reg_lock); in radeonfb_pci_register()
2295 init_timer(&rinfo->lvds_timer); in radeonfb_pci_register()
2296 rinfo->lvds_timer.function = radeon_lvds_timer_func; in radeonfb_pci_register()
2297 rinfo->lvds_timer.data = (unsigned long)rinfo; in radeonfb_pci_register()
2302 snprintf(rinfo->name, sizeof(rinfo->name), in radeonfb_pci_register()
2305 snprintf(rinfo->name, sizeof(rinfo->name), in radeonfb_pci_register()
2308 rinfo->family = ent->driver_data & CHIP_FAMILY_MASK; in radeonfb_pci_register()
2309 rinfo->chipset = pdev->device; in radeonfb_pci_register()
2310 rinfo->has_CRTC2 = (ent->driver_data & CHIP_HAS_CRTC2) != 0; in radeonfb_pci_register()
2311 rinfo->is_mobility = (ent->driver_data & CHIP_IS_MOBILITY) != 0; in radeonfb_pci_register()
2312 rinfo->is_IGP = (ent->driver_data & CHIP_IS_IGP) != 0; in radeonfb_pci_register()
2315 rinfo->fb_base_phys = pci_resource_start (pdev, 0); in radeonfb_pci_register()
2316 rinfo->mmio_base_phys = pci_resource_start (pdev, 2); in radeonfb_pci_register()
2322 pci_name(rinfo->pdev)); in radeonfb_pci_register()
2329 pci_name(rinfo->pdev)); in radeonfb_pci_register()
2334 rinfo->mmio_base = ioremap(rinfo->mmio_base_phys, RADEON_REGSIZE); in radeonfb_pci_register()
2335 if (!rinfo->mmio_base) { in radeonfb_pci_register()
2337 pci_name(rinfo->pdev)); in radeonfb_pci_register()
2342 rinfo->fb_local_base = INREG(MC_FB_LOCATION) << 16; in radeonfb_pci_register()
2347 rinfo->errata = 0; in radeonfb_pci_register()
2348 if (rinfo->family == CHIP_FAMILY_R300 && in radeonfb_pci_register()
2351 rinfo->errata |= CHIP_ERRATA_R300_CG; in radeonfb_pci_register()
2353 if (rinfo->family == CHIP_FAMILY_RV200 || in radeonfb_pci_register()
2354 rinfo->family == CHIP_FAMILY_RS200) in radeonfb_pci_register()
2355 rinfo->errata |= CHIP_ERRATA_PLL_DUMMYREADS; in radeonfb_pci_register()
2357 if (rinfo->family == CHIP_FAMILY_RV100 || in radeonfb_pci_register()
2358 rinfo->family == CHIP_FAMILY_RS100 || in radeonfb_pci_register()
2359 rinfo->family == CHIP_FAMILY_RS200) in radeonfb_pci_register()
2360 rinfo->errata |= CHIP_ERRATA_PLL_DELAY; in radeonfb_pci_register()
2366 rinfo->of_node = pci_device_to_OF_node(pdev); in radeonfb_pci_register()
2367 if (rinfo->of_node == NULL) in radeonfb_pci_register()
2369 pci_name(rinfo->pdev)); in radeonfb_pci_register()
2377 fixup_memory_mappings(rinfo); in radeonfb_pci_register()
2381 radeon_identify_vram(rinfo); in radeonfb_pci_register()
2383 rinfo->mapped_vram = min_t(unsigned long, MAX_MAPPED_VRAM, rinfo->video_ram); in radeonfb_pci_register()
2386 rinfo->fb_base = ioremap_wc(rinfo->fb_base_phys, in radeonfb_pci_register()
2387 rinfo->mapped_vram); in radeonfb_pci_register()
2388 } while (rinfo->fb_base == NULL && in radeonfb_pci_register()
2389 ((rinfo->mapped_vram /= 2) >= MIN_MAPPED_VRAM)); in radeonfb_pci_register()
2391 if (rinfo->fb_base == NULL) { in radeonfb_pci_register()
2393 pci_name(rinfo->pdev)); in radeonfb_pci_register()
2398 pr_debug("radeonfb (%s): mapped %ldk videoram\n", pci_name(rinfo->pdev), in radeonfb_pci_register()
2399 rinfo->mapped_vram/1024); in radeonfb_pci_register()
2412 if (!rinfo->is_mobility) in radeonfb_pci_register()
2413 radeon_map_ROM(rinfo, pdev); in radeonfb_pci_register()
2422 if (rinfo->bios_seg == NULL) in radeonfb_pci_register()
2423 radeon_find_mem_vbios(rinfo); in radeonfb_pci_register()
2429 if (rinfo->bios_seg == NULL && rinfo->is_mobility) in radeonfb_pci_register()
2430 radeon_map_ROM(rinfo, pdev); in radeonfb_pci_register()
2433 radeon_get_pllinfo(rinfo); in radeonfb_pci_register()
2437 radeon_create_i2c_busses(rinfo); in radeonfb_pci_register()
2441 radeon_set_fbinfo (rinfo); in radeonfb_pci_register()
2444 radeon_probe_screens(rinfo, monitor_layout, ignore_edid); in radeonfb_pci_register()
2447 radeon_check_modes(rinfo, mode_option); in radeonfb_pci_register()
2450 if (rinfo->mon1_EDID) in radeonfb_pci_register()
2451 err |= sysfs_create_bin_file(&rinfo->pdev->dev.kobj, in radeonfb_pci_register()
2453 if (rinfo->mon2_EDID) in radeonfb_pci_register()
2454 err |= sysfs_create_bin_file(&rinfo->pdev->dev.kobj, in radeonfb_pci_register()
2463 radeon_save_state (rinfo, &rinfo->init_state); in radeonfb_pci_register()
2464 memcpy(&rinfo->state, &rinfo->init_state, sizeof(struct radeon_regs)); in radeonfb_pci_register()
2471 radeonfb_pm_init(rinfo, rinfo->is_mobility ? 1 : -1, ignore_devlist, force_sleep); in radeonfb_pci_register()
2473 radeonfb_pm_init(rinfo, default_dynclk, ignore_devlist, force_sleep); in radeonfb_pci_register()
2481 pci_name(rinfo->pdev)); in radeonfb_pci_register()
2486 rinfo->wc_cookie = arch_phys_wc_add(rinfo->fb_base_phys, in radeonfb_pci_register()
2487 rinfo->video_ram); in radeonfb_pci_register()
2490 radeonfb_bl_init(rinfo); in radeonfb_pci_register()
2492 printk ("radeonfb (%s): %s\n", pci_name(rinfo->pdev), rinfo->name); in radeonfb_pci_register()
2494 if (rinfo->bios_seg) in radeonfb_pci_register()
2495 radeon_unmap_ROM(rinfo, pdev); in radeonfb_pci_register()
2500 iounmap(rinfo->fb_base); in radeonfb_pci_register()
2502 kfree(rinfo->mon1_EDID); in radeonfb_pci_register()
2503 kfree(rinfo->mon2_EDID); in radeonfb_pci_register()
2504 if (rinfo->mon1_modedb) in radeonfb_pci_register()
2505 fb_destroy_modedb(rinfo->mon1_modedb); in radeonfb_pci_register()
2508 radeon_delete_i2c_busses(rinfo); in radeonfb_pci_register()
2510 if (rinfo->bios_seg) in radeonfb_pci_register()
2511 radeon_unmap_ROM(rinfo, pdev); in radeonfb_pci_register()
2512 iounmap(rinfo->mmio_base); in radeonfb_pci_register()
2529 struct radeonfb_info *rinfo = info->par; in radeonfb_pci_unregister() local
2531 if (!rinfo) in radeonfb_pci_unregister()
2534 radeonfb_pm_exit(rinfo); in radeonfb_pci_unregister()
2536 if (rinfo->mon1_EDID) in radeonfb_pci_unregister()
2537 sysfs_remove_bin_file(&rinfo->pdev->dev.kobj, &edid1_attr); in radeonfb_pci_unregister()
2538 if (rinfo->mon2_EDID) in radeonfb_pci_unregister()
2539 sysfs_remove_bin_file(&rinfo->pdev->dev.kobj, &edid2_attr); in radeonfb_pci_unregister()
2548 radeon_write_mode (rinfo, &rinfo->init_state, 1); in radeonfb_pci_unregister()
2551 del_timer_sync(&rinfo->lvds_timer); in radeonfb_pci_unregister()
2552 arch_phys_wc_del(rinfo->wc_cookie); in radeonfb_pci_unregister()
2555 radeonfb_bl_exit(rinfo); in radeonfb_pci_unregister()
2557 iounmap(rinfo->mmio_base); in radeonfb_pci_unregister()
2558 iounmap(rinfo->fb_base); in radeonfb_pci_unregister()
2563 kfree(rinfo->mon1_EDID); in radeonfb_pci_unregister()
2564 kfree(rinfo->mon2_EDID); in radeonfb_pci_unregister()
2565 if (rinfo->mon1_modedb) in radeonfb_pci_unregister()
2566 fb_destroy_modedb(rinfo->mon1_modedb); in radeonfb_pci_unregister()
2568 radeon_delete_i2c_busses(rinfo); in radeonfb_pci_unregister()