• Home
  • Raw
  • Download

Lines Matching refs:rinfo

280 void _radeon_msleep(struct radeonfb_info *rinfo, unsigned long ms)  in _radeon_msleep()  argument
282 if (rinfo->no_schedule || oops_in_progress) in _radeon_msleep()
288 void radeon_pll_errata_after_index_slow(struct radeonfb_info *rinfo) in radeon_pll_errata_after_index_slow() argument
295 void radeon_pll_errata_after_data_slow(struct radeonfb_info *rinfo) in radeon_pll_errata_after_data_slow() argument
297 if (rinfo->errata & CHIP_ERRATA_PLL_DELAY) { in radeon_pll_errata_after_data_slow()
299 _radeon_msleep(rinfo, 5); in radeon_pll_errata_after_data_slow()
301 if (rinfo->errata & CHIP_ERRATA_R300_CG) { in radeon_pll_errata_after_data_slow()
311 void _OUTREGP(struct radeonfb_info *rinfo, u32 addr, u32 val, u32 mask) in _OUTREGP() argument
316 spin_lock_irqsave(&rinfo->reg_lock, flags); in _OUTREGP()
321 spin_unlock_irqrestore(&rinfo->reg_lock, flags); in _OUTREGP()
324 u32 __INPLL(struct radeonfb_info *rinfo, u32 addr) in __INPLL() argument
329 radeon_pll_errata_after_index(rinfo); in __INPLL()
331 radeon_pll_errata_after_data(rinfo); in __INPLL()
335 void __OUTPLL(struct radeonfb_info *rinfo, unsigned int index, u32 val) in __OUTPLL() argument
338 radeon_pll_errata_after_index(rinfo); in __OUTPLL()
340 radeon_pll_errata_after_data(rinfo); in __OUTPLL()
343 void __OUTPLLP(struct radeonfb_info *rinfo, unsigned int index, in __OUTPLLP() argument
348 tmp = __INPLL(rinfo, index); in __OUTPLLP()
351 __OUTPLL(rinfo, index, tmp); in __OUTPLLP()
354 void _radeon_fifo_wait(struct radeonfb_info *rinfo, int entries) in _radeon_fifo_wait() argument
366 void radeon_engine_flush(struct radeonfb_info *rinfo) in radeon_engine_flush() argument
377 _radeon_fifo_wait(rinfo, 64); in radeon_engine_flush()
388 void _radeon_engine_idle(struct radeonfb_info *rinfo) in _radeon_engine_idle() argument
393 _radeon_fifo_wait(rinfo, 64); in _radeon_engine_idle()
397 radeon_engine_flush(rinfo); in _radeon_engine_idle()
407 static void radeon_unmap_ROM(struct radeonfb_info *rinfo, struct pci_dev *dev) in radeon_unmap_ROM() argument
409 if (!rinfo->bios_seg) in radeon_unmap_ROM()
411 pci_unmap_rom(dev, rinfo->bios_seg); in radeon_unmap_ROM()
414 static int radeon_map_ROM(struct radeonfb_info *rinfo, struct pci_dev *dev) in radeon_map_ROM() argument
437 pci_name(rinfo->pdev)); in radeon_map_ROM()
441 rinfo->bios_seg = rom; in radeon_map_ROM()
447 pci_name(rinfo->pdev), BIOS_IN16(0)); in radeon_map_ROM()
479 "incorrect: %08x\n", pci_name(rinfo->pdev), BIOS_IN32(dptr)); in radeon_map_ROM()
499 rinfo->fp_bios_start = BIOS_IN16(0x48); in radeon_map_ROM()
503 rinfo->bios_seg = NULL; in radeon_map_ROM()
504 radeon_unmap_ROM(rinfo, dev); in radeon_map_ROM()
509 static int radeon_find_mem_vbios(struct radeonfb_info *rinfo) in radeon_find_mem_vbios() argument
532 rinfo->bios_seg = rom_base; in radeon_find_mem_vbios()
533 rinfo->fp_bios_start = BIOS_IN16(0x48); in radeon_find_mem_vbios()
544 static int radeon_read_xtal_OF(struct radeonfb_info *rinfo) in radeon_read_xtal_OF() argument
546 struct device_node *dp = rinfo->of_node; in radeon_read_xtal_OF()
557 rinfo->pll.ref_clk = (*val) / 10; in radeon_read_xtal_OF()
561 rinfo->pll.sclk = (*val) / 10; in radeon_read_xtal_OF()
565 rinfo->pll.mclk = (*val) / 10; in radeon_read_xtal_OF()
574 static int radeon_probe_pll_params(struct radeonfb_info *rinfo) in radeon_probe_pll_params() argument
643 radeon_pll_errata_after_index(rinfo); in radeon_probe_pll_params()
697 rinfo->pll.ref_clk = xtal; in radeon_probe_pll_params()
698 rinfo->pll.ref_div = ref_div; in radeon_probe_pll_params()
699 rinfo->pll.sclk = sclk; in radeon_probe_pll_params()
700 rinfo->pll.mclk = mclk; in radeon_probe_pll_params()
708 static void radeon_get_pllinfo(struct radeonfb_info *rinfo) in radeon_get_pllinfo() argument
715 switch (rinfo->chipset) { in radeon_get_pllinfo()
718 rinfo->pll.ppll_max = 35000; in radeon_get_pllinfo()
719 rinfo->pll.ppll_min = 12000; in radeon_get_pllinfo()
720 rinfo->pll.mclk = 23000; in radeon_get_pllinfo()
721 rinfo->pll.sclk = 23000; in radeon_get_pllinfo()
722 rinfo->pll.ref_clk = 2700; in radeon_get_pllinfo()
729 rinfo->pll.ppll_max = 35000; in radeon_get_pllinfo()
730 rinfo->pll.ppll_min = 12000; in radeon_get_pllinfo()
731 rinfo->pll.mclk = 27500; in radeon_get_pllinfo()
732 rinfo->pll.sclk = 27500; in radeon_get_pllinfo()
733 rinfo->pll.ref_clk = 2700; in radeon_get_pllinfo()
739 rinfo->pll.ppll_max = 35000; in radeon_get_pllinfo()
740 rinfo->pll.ppll_min = 12000; in radeon_get_pllinfo()
741 rinfo->pll.mclk = 25000; in radeon_get_pllinfo()
742 rinfo->pll.sclk = 25000; in radeon_get_pllinfo()
743 rinfo->pll.ref_clk = 2700; in radeon_get_pllinfo()
749 rinfo->pll.ppll_max = 40000; in radeon_get_pllinfo()
750 rinfo->pll.ppll_min = 20000; in radeon_get_pllinfo()
751 rinfo->pll.mclk = 27000; in radeon_get_pllinfo()
752 rinfo->pll.sclk = 27000; in radeon_get_pllinfo()
753 rinfo->pll.ref_clk = 2700; in radeon_get_pllinfo()
760 rinfo->pll.ppll_max = 35000; in radeon_get_pllinfo()
761 rinfo->pll.ppll_min = 12000; in radeon_get_pllinfo()
762 rinfo->pll.mclk = 16600; in radeon_get_pllinfo()
763 rinfo->pll.sclk = 16600; in radeon_get_pllinfo()
764 rinfo->pll.ref_clk = 2700; in radeon_get_pllinfo()
767 rinfo->pll.ref_div = INPLL(PPLL_REF_DIV) & PPLL_REF_DIV_MASK; in radeon_get_pllinfo()
774 if (!force_measure_pll && radeon_read_xtal_OF(rinfo) == 0) { in radeon_get_pllinfo()
784 if (!force_measure_pll && rinfo->bios_seg) { in radeon_get_pllinfo()
785 u16 pll_info_block = BIOS_IN16(rinfo->fp_bios_start + 0x30); in radeon_get_pllinfo()
787 rinfo->pll.sclk = BIOS_IN16(pll_info_block + 0x08); in radeon_get_pllinfo()
788 rinfo->pll.mclk = BIOS_IN16(pll_info_block + 0x0a); in radeon_get_pllinfo()
789 rinfo->pll.ref_clk = BIOS_IN16(pll_info_block + 0x0e); in radeon_get_pllinfo()
790 rinfo->pll.ref_div = BIOS_IN16(pll_info_block + 0x10); in radeon_get_pllinfo()
791 rinfo->pll.ppll_min = BIOS_IN32(pll_info_block + 0x12); in radeon_get_pllinfo()
792 rinfo->pll.ppll_max = BIOS_IN32(pll_info_block + 0x16); in radeon_get_pllinfo()
802 if (radeon_probe_pll_params(rinfo) == 0) { in radeon_get_pllinfo()
818 if (rinfo->pll.mclk == 0) in radeon_get_pllinfo()
819 rinfo->pll.mclk = 20000; in radeon_get_pllinfo()
820 if (rinfo->pll.sclk == 0) in radeon_get_pllinfo()
821 rinfo->pll.sclk = 20000; in radeon_get_pllinfo()
824 rinfo->pll.ref_clk / 100, rinfo->pll.ref_clk % 100, in radeon_get_pllinfo()
825 rinfo->pll.ref_div, in radeon_get_pllinfo()
826 rinfo->pll.mclk / 100, rinfo->pll.mclk % 100, in radeon_get_pllinfo()
827 rinfo->pll.sclk / 100, rinfo->pll.sclk % 100); in radeon_get_pllinfo()
828 printk("radeonfb: PLL min %d max %d\n", rinfo->pll.ppll_min, rinfo->pll.ppll_max); in radeon_get_pllinfo()
833 struct radeonfb_info *rinfo = info->par; in radeonfb_check_var() local
838 if (radeon_match_mode(rinfo, &v, var)) in radeonfb_check_var()
916 if (rinfo->info->flags & FBINFO_HWACCEL_DISABLED) { in radeonfb_check_var()
924 if (((v.xres_virtual * v.yres_virtual * nom) / den) > rinfo->mapped_vram) in radeonfb_check_var()
949 struct radeonfb_info *rinfo = info->par; in radeonfb_pan_display() local
955 if (rinfo->asleep) in radeonfb_pan_display()
968 struct radeonfb_info *rinfo = info->par; in radeonfb_ioctl() local
980 if (!rinfo->is_mobility) in radeonfb_ioctl()
1017 if (!rinfo->is_mobility) in radeonfb_ioctl()
1037 int radeon_screen_blank(struct radeonfb_info *rinfo, int blank, int mode_switch) in radeon_screen_blank() argument
1043 if (rinfo->lock_blank) in radeon_screen_blank()
1072 switch (rinfo->mon1_type) { in radeon_screen_blank()
1084 del_timer_sync(&rinfo->lvds_timer); in radeon_screen_blank()
1088 | LVDS_EN | (rinfo->init_state.lvds_gen_cntl in radeon_screen_blank()
1095 rinfo->init_state.lvds_gen_cntl &= ~LVDS_STATE_MASK; in radeon_screen_blank()
1096 rinfo->init_state.lvds_gen_cntl |= in radeon_screen_blank()
1099 radeon_msleep(rinfo->panel_info.pwr_delay); in radeon_screen_blank()
1103 rinfo->pending_lvds_gen_cntl = target_val; in radeon_screen_blank()
1104 mod_timer(&rinfo->lvds_timer, in radeon_screen_blank()
1106 msecs_to_jiffies(rinfo->panel_info.pwr_delay)); in radeon_screen_blank()
1121 if (rinfo->is_mobility || rinfo->is_IGP) in radeon_screen_blank()
1129 rinfo->pending_lvds_gen_cntl = val; in radeon_screen_blank()
1130 mod_timer(&rinfo->lvds_timer, in radeon_screen_blank()
1132 msecs_to_jiffies(rinfo->panel_info.pwr_delay)); in radeon_screen_blank()
1133 rinfo->init_state.lvds_gen_cntl &= ~LVDS_STATE_MASK; in radeon_screen_blank()
1134 rinfo->init_state.lvds_gen_cntl |= val & LVDS_STATE_MASK; in radeon_screen_blank()
1135 if (rinfo->is_mobility || rinfo->is_IGP) in radeon_screen_blank()
1150 struct radeonfb_info *rinfo = info->par; in radeonfb_blank() local
1152 if (rinfo->asleep) in radeonfb_blank()
1155 return radeon_screen_blank(rinfo, blank, 0); in radeonfb_blank()
1160 struct radeonfb_info *rinfo) in radeon_setcolreg() argument
1172 rinfo->palette[regno].red = red; in radeon_setcolreg()
1173 rinfo->palette[regno].green = green; in radeon_setcolreg()
1174 rinfo->palette[regno].blue = blue; in radeon_setcolreg()
1179 if (!rinfo->asleep) { in radeon_setcolreg()
1182 if (rinfo->bpp == 16) { in radeon_setcolreg()
1185 if (rinfo->depth == 16 && regno > 63) in radeon_setcolreg()
1187 if (rinfo->depth == 15 && regno > 31) in radeon_setcolreg()
1193 if (rinfo->depth == 16) { in radeon_setcolreg()
1196 (rinfo->palette[regno>>1].red << 16) | in radeon_setcolreg()
1198 (rinfo->palette[regno>>1].blue)); in radeon_setcolreg()
1199 green = rinfo->palette[regno<<1].green; in radeon_setcolreg()
1203 if (rinfo->depth != 16 || regno < 32) { in radeon_setcolreg()
1210 u32 *pal = rinfo->info->pseudo_palette; in radeon_setcolreg()
1211 switch (rinfo->depth) { in radeon_setcolreg()
1234 struct radeonfb_info *rinfo = info->par; in radeonfb_setcolreg() local
1238 if (!rinfo->asleep) { in radeonfb_setcolreg()
1239 if (rinfo->is_mobility) { in radeonfb_setcolreg()
1246 if (rinfo->has_CRTC2) { in radeonfb_setcolreg()
1253 rc = radeon_setcolreg (regno, red, green, blue, transp, rinfo); in radeonfb_setcolreg()
1255 if (!rinfo->asleep && rinfo->is_mobility) in radeonfb_setcolreg()
1263 struct radeonfb_info *rinfo = info->par; in radeonfb_setcmap() local
1268 if (!rinfo->asleep) { in radeonfb_setcmap()
1269 if (rinfo->is_mobility) { in radeonfb_setcmap()
1276 if (rinfo->has_CRTC2) { in radeonfb_setcmap()
1298 rinfo); in radeonfb_setcmap()
1303 if (!rinfo->asleep && rinfo->is_mobility) in radeonfb_setcmap()
1309 static void radeon_save_state (struct radeonfb_info *rinfo, in radeon_save_state() argument
1340 radeon_pll_errata_after_index(rinfo); in radeon_save_state()
1346 static void radeon_write_pll_regs(struct radeonfb_info *rinfo, struct radeon_regs *mode) in radeon_write_pll_regs() argument
1353 if (rinfo->is_mobility) { in radeon_write_pll_regs()
1370 radeon_pll_errata_after_index(rinfo); in radeon_write_pll_regs()
1371 radeon_pll_errata_after_data(rinfo); in radeon_write_pll_regs()
1388 radeon_pll_errata_after_index(rinfo); in radeon_write_pll_regs()
1389 radeon_pll_errata_after_data(rinfo); in radeon_write_pll_regs()
1392 if (IS_R300_VARIANT(rinfo) || in radeon_write_pll_regs()
1393 rinfo->family == CHIP_FAMILY_RS300 || in radeon_write_pll_regs()
1394 rinfo->family == CHIP_FAMILY_RS400 || in radeon_write_pll_regs()
1395 rinfo->family == CHIP_FAMILY_RS480) { in radeon_write_pll_regs()
1445 struct radeonfb_info *rinfo = from_timer(rinfo, t, lvds_timer); in radeon_lvds_timer_func() local
1449 OUTREG(LVDS_GEN_CNTL, rinfo->pending_lvds_gen_cntl); in radeon_lvds_timer_func()
1456 void radeon_write_mode (struct radeonfb_info *rinfo, struct radeon_regs *mode, in radeon_write_mode() argument
1460 int primary_mon = PRIMARY_MONITOR(rinfo); in radeon_write_mode()
1466 radeon_screen_blank(rinfo, FB_BLANK_NORMAL, 0); in radeon_write_mode()
1493 radeon_write_pll_regs(rinfo, mode); in radeon_write_mode()
1509 radeon_screen_blank(rinfo, FB_BLANK_UNBLANK, 0); in radeon_write_mode()
1520 static void radeon_calc_pll_regs(struct radeonfb_info *rinfo, struct radeon_regs *regs, in radeon_calc_pll_regs() argument
1555 while (rinfo->has_CRTC2) { in radeon_calc_pll_regs()
1566 if (rinfo->family == CHIP_FAMILY_R200 || IS_R300_VARIANT(rinfo)) { in radeon_calc_pll_regs()
1588 if (freq > rinfo->pll.ppll_max) in radeon_calc_pll_regs()
1589 freq = rinfo->pll.ppll_max; in radeon_calc_pll_regs()
1590 if (freq*12 < rinfo->pll.ppll_min) in radeon_calc_pll_regs()
1591 freq = rinfo->pll.ppll_min / 12; in radeon_calc_pll_regs()
1593 freq, rinfo->pll.ppll_min, rinfo->pll.ppll_max); in radeon_calc_pll_regs()
1602 if (pll_output_freq >= rinfo->pll.ppll_min && in radeon_calc_pll_regs()
1603 pll_output_freq <= rinfo->pll.ppll_max) in radeon_calc_pll_regs()
1614 rinfo->pll.ref_div, rinfo->pll.ref_clk, in radeon_calc_pll_regs()
1624 rinfo->pll.ref_div, rinfo->pll.ref_clk, in radeon_calc_pll_regs()
1627 fb_div = round_div(rinfo->pll.ref_div*pll_output_freq, in radeon_calc_pll_regs()
1628 rinfo->pll.ref_clk); in radeon_calc_pll_regs()
1629 regs->ppll_ref_div = rinfo->pll.ref_div; in radeon_calc_pll_regs()
1639 struct radeonfb_info *rinfo = info->par; in radeonfb_set_par() local
1651 int primary_mon = PRIMARY_MONITOR(rinfo); in radeonfb_set_par()
1678 if (rinfo->panel_info.xres < mode->xres) in radeonfb_set_par()
1679 mode->xres = rinfo->panel_info.xres; in radeonfb_set_par()
1680 if (rinfo->panel_info.yres < mode->yres) in radeonfb_set_par()
1681 mode->yres = rinfo->panel_info.yres; in radeonfb_set_par()
1683 hTotal = mode->xres + rinfo->panel_info.hblank; in radeonfb_set_par()
1684 hSyncStart = mode->xres + rinfo->panel_info.hOver_plus; in radeonfb_set_par()
1685 hSyncEnd = hSyncStart + rinfo->panel_info.hSync_width; in radeonfb_set_par()
1687 vTotal = mode->yres + rinfo->panel_info.vblank; in radeonfb_set_par()
1688 vSyncStart = mode->yres + rinfo->panel_info.vOver_plus; in radeonfb_set_par()
1689 vSyncEnd = vSyncStart + rinfo->panel_info.vSync_width; in radeonfb_set_par()
1691 h_sync_pol = !rinfo->panel_info.hAct_high; in radeonfb_set_par()
1692 v_sync_pol = !rinfo->panel_info.vAct_high; in radeonfb_set_par()
1694 pixClock = 100000000 / rinfo->panel_info.clock; in radeonfb_set_par()
1696 if (rinfo->panel_info.use_bios_dividers) { in radeonfb_set_par()
1698 newmode->ppll_div_3 = rinfo->panel_info.fbk_divider | in radeonfb_set_par()
1699 (rinfo->panel_info.post_divider << 16); in radeonfb_set_par()
1700 newmode->ppll_ref_div = rinfo->panel_info.ref_divider; in radeonfb_set_par()
1736 newmode->crtc_more_cntl = rinfo->init_state.crtc_more_cntl; in radeonfb_set_par()
1768 rinfo->pitch = ((mode->xres_virtual * ((mode->bits_per_pixel + 1) / 8) + 0x3f) in radeonfb_set_par()
1772 newmode->crtc_pitch = (rinfo->pitch << 3) / ((mode->bits_per_pixel + 1) / 8); in radeonfb_set_par()
1816 rinfo->bpp = mode->bits_per_pixel; in radeonfb_set_par()
1817 rinfo->depth = depth; in radeonfb_set_par()
1827 radeon_calc_pll_regs(rinfo, newmode, freq); in radeonfb_set_par()
1829 newmode->vclk_ecp_cntl = rinfo->init_state.vclk_ecp_cntl; in radeonfb_set_par()
1834 if (mode->xres > rinfo->panel_info.xres) in radeonfb_set_par()
1835 mode->xres = rinfo->panel_info.xres; in radeonfb_set_par()
1836 if (mode->yres > rinfo->panel_info.yres) in radeonfb_set_par()
1837 mode->yres = rinfo->panel_info.yres; in radeonfb_set_par()
1839 newmode->fp_horz_stretch = (((rinfo->panel_info.xres / 8) - 1) in radeonfb_set_par()
1841 newmode->fp_vert_stretch = ((rinfo->panel_info.yres - 1) in radeonfb_set_par()
1844 if (mode->xres != rinfo->panel_info.xres) { in radeonfb_set_par()
1846 rinfo->panel_info.xres); in radeonfb_set_par()
1857 if (mode->yres != rinfo->panel_info.yres) { in radeonfb_set_par()
1859 rinfo->panel_info.yres); in radeonfb_set_par()
1869 newmode->fp_gen_cntl = (rinfo->init_state.fp_gen_cntl & (u32) in radeonfb_set_par()
1883 if (IS_R300_VARIANT(rinfo) || in radeonfb_set_par()
1884 (rinfo->family == CHIP_FAMILY_R200)) { in radeonfb_set_par()
1893 newmode->lvds_gen_cntl = rinfo->init_state.lvds_gen_cntl; in radeonfb_set_par()
1894 newmode->lvds_pll_cntl = rinfo->init_state.lvds_pll_cntl; in radeonfb_set_par()
1895 newmode->tmds_crc = rinfo->init_state.tmds_crc; in radeonfb_set_par()
1896 newmode->tmds_transmitter_cntl = rinfo->init_state.tmds_transmitter_cntl; in radeonfb_set_par()
1906 if (IS_R300_VARIANT(rinfo) || in radeonfb_set_par()
1907 (rinfo->family == CHIP_FAMILY_R200) || !rinfo->has_CRTC2) in radeonfb_set_par()
1914 newmode->fp_crtc_h_total_disp = (((rinfo->panel_info.hblank / 8) & 0x3ff) | in radeonfb_set_par()
1916 newmode->fp_crtc_v_total_disp = (rinfo->panel_info.vblank & 0xffff) | in radeonfb_set_par()
1918 newmode->fp_h_sync_strt_wid = ((rinfo->panel_info.hOver_plus & 0x1fff) | in radeonfb_set_par()
1920 newmode->fp_v_sync_strt_wid = ((rinfo->panel_info.vOver_plus & 0xfff) | in radeonfb_set_par()
1925 if (!rinfo->asleep) { in radeonfb_set_par()
1926 memcpy(&rinfo->state, newmode, sizeof(*newmode)); in radeonfb_set_par()
1927 radeon_write_mode (rinfo, newmode, 0); in radeonfb_set_par()
1930 radeonfb_engine_init (rinfo); in radeonfb_set_par()
1934 info->fix.line_length = rinfo->pitch*64; in radeonfb_set_par()
1938 info->fix.visual = rinfo->depth == 8 ? FB_VISUAL_PSEUDOCOLOR in radeonfb_set_par()
1943 btext_update_display(rinfo->fb_base_phys, mode->xres, mode->yres, in radeonfb_set_par()
1944 rinfo->depth, info->fix.line_length); in radeonfb_set_par()
1968 static int radeon_set_fbinfo(struct radeonfb_info *rinfo) in radeon_set_fbinfo() argument
1970 struct fb_info *info = rinfo->info; in radeon_set_fbinfo()
1972 info->par = rinfo; in radeon_set_fbinfo()
1973 info->pseudo_palette = rinfo->pseudo_palette; in radeon_set_fbinfo()
1980 info->screen_base = rinfo->fb_base; in radeon_set_fbinfo()
1981 info->screen_size = rinfo->mapped_vram; in radeon_set_fbinfo()
1983 strlcpy(info->fix.id, rinfo->name, sizeof(info->fix.id)); in radeon_set_fbinfo()
1984 info->fix.smem_start = rinfo->fb_base_phys; in radeon_set_fbinfo()
1985 info->fix.smem_len = rinfo->video_ram; in radeon_set_fbinfo()
1992 info->fix.mmio_start = rinfo->mmio_base_phys; in radeon_set_fbinfo()
2017 static void fixup_memory_mappings(struct radeonfb_info *rinfo) in fixup_memory_mappings() argument
2025 if (rinfo->has_CRTC2) { in fixup_memory_mappings()
2043 rinfo->fb_local_base = aper_base; in fixup_memory_mappings()
2046 rinfo->fb_local_base = 0; in fixup_memory_mappings()
2067 if (rinfo->has_CRTC2) in fixup_memory_mappings()
2072 if (rinfo->has_CRTC2) in fixup_memory_mappings()
2081 if (rinfo->has_CRTC2) in fixup_memory_mappings()
2092 static void radeon_identify_vram(struct radeonfb_info *rinfo) in radeon_identify_vram() argument
2097 if ((rinfo->family == CHIP_FAMILY_RS100) || in radeon_identify_vram()
2098 (rinfo->family == CHIP_FAMILY_RS200) || in radeon_identify_vram()
2099 (rinfo->family == CHIP_FAMILY_RS300) || in radeon_identify_vram()
2100 (rinfo->family == CHIP_FAMILY_RC410) || in radeon_identify_vram()
2101 (rinfo->family == CHIP_FAMILY_RS400) || in radeon_identify_vram()
2102 (rinfo->family == CHIP_FAMILY_RS480) ) { in radeon_identify_vram()
2115 if ((rinfo->family == CHIP_FAMILY_RS100) || in radeon_identify_vram()
2116 (rinfo->family == CHIP_FAMILY_RS200)) { in radeon_identify_vram()
2128 rinfo->video_ram = tmp & CNFG_MEMSIZE_MASK; in radeon_identify_vram()
2134 if (rinfo->video_ram == 0) { in radeon_identify_vram()
2135 switch (rinfo->pdev->device) { in radeon_identify_vram()
2138 rinfo->video_ram = 8192 * 1024; in radeon_identify_vram()
2149 if (rinfo->is_IGP || (rinfo->family >= CHIP_FAMILY_R300) || in radeon_identify_vram()
2151 rinfo->vram_ddr = 1; in radeon_identify_vram()
2153 rinfo->vram_ddr = 0; in radeon_identify_vram()
2156 if (IS_R300_VARIANT(rinfo)) { in radeon_identify_vram()
2159 case 0: rinfo->vram_width = 64; break; in radeon_identify_vram()
2160 case 1: rinfo->vram_width = 128; break; in radeon_identify_vram()
2161 case 2: rinfo->vram_width = 256; break; in radeon_identify_vram()
2162 default: rinfo->vram_width = 128; break; in radeon_identify_vram()
2164 } else if ((rinfo->family == CHIP_FAMILY_RV100) || in radeon_identify_vram()
2165 (rinfo->family == CHIP_FAMILY_RS100) || in radeon_identify_vram()
2166 (rinfo->family == CHIP_FAMILY_RS200)){ in radeon_identify_vram()
2168 rinfo->vram_width = 32; in radeon_identify_vram()
2170 rinfo->vram_width = 64; in radeon_identify_vram()
2173 rinfo->vram_width = 128; in radeon_identify_vram()
2175 rinfo->vram_width = 64; in radeon_identify_vram()
2183 pci_name(rinfo->pdev), in radeon_identify_vram()
2184 rinfo->video_ram / 1024, in radeon_identify_vram()
2185 rinfo->vram_ddr ? "DDR" : "SDRAM", in radeon_identify_vram()
2186 rinfo->vram_width); in radeon_identify_vram()
2205 struct radeonfb_info *rinfo = info->par; in radeon_show_edid1() local
2207 return radeon_show_one_edid(buf, off, count, rinfo->mon1_EDID); in radeon_show_edid1()
2217 struct radeonfb_info *rinfo = info->par; in radeon_show_edid2() local
2219 return radeon_show_one_edid(buf, off, count, rinfo->mon2_EDID); in radeon_show_edid2()
2262 struct radeonfb_info *rinfo; in radeonfb_pci_register() local
2282 rinfo = info->par; in radeonfb_pci_register()
2283 rinfo->info = info; in radeonfb_pci_register()
2284 rinfo->pdev = pdev; in radeonfb_pci_register()
2286 spin_lock_init(&rinfo->reg_lock); in radeonfb_pci_register()
2287 timer_setup(&rinfo->lvds_timer, radeon_lvds_timer_func, 0); in radeonfb_pci_register()
2292 snprintf(rinfo->name, sizeof(rinfo->name), in radeonfb_pci_register()
2295 snprintf(rinfo->name, sizeof(rinfo->name), in radeonfb_pci_register()
2298 rinfo->family = ent->driver_data & CHIP_FAMILY_MASK; in radeonfb_pci_register()
2299 rinfo->chipset = pdev->device; in radeonfb_pci_register()
2300 rinfo->has_CRTC2 = (ent->driver_data & CHIP_HAS_CRTC2) != 0; in radeonfb_pci_register()
2301 rinfo->is_mobility = (ent->driver_data & CHIP_IS_MOBILITY) != 0; in radeonfb_pci_register()
2302 rinfo->is_IGP = (ent->driver_data & CHIP_IS_IGP) != 0; in radeonfb_pci_register()
2305 rinfo->fb_base_phys = pci_resource_start (pdev, 0); in radeonfb_pci_register()
2306 rinfo->mmio_base_phys = pci_resource_start (pdev, 2); in radeonfb_pci_register()
2316 pci_name(rinfo->pdev)); in radeonfb_pci_register()
2323 pci_name(rinfo->pdev)); in radeonfb_pci_register()
2328 rinfo->mmio_base = ioremap(rinfo->mmio_base_phys, RADEON_REGSIZE); in radeonfb_pci_register()
2329 if (!rinfo->mmio_base) { in radeonfb_pci_register()
2331 pci_name(rinfo->pdev)); in radeonfb_pci_register()
2336 rinfo->fb_local_base = INREG(MC_FB_LOCATION) << 16; in radeonfb_pci_register()
2341 rinfo->errata = 0; in radeonfb_pci_register()
2342 if (rinfo->family == CHIP_FAMILY_R300 && in radeonfb_pci_register()
2345 rinfo->errata |= CHIP_ERRATA_R300_CG; in radeonfb_pci_register()
2347 if (rinfo->family == CHIP_FAMILY_RV200 || in radeonfb_pci_register()
2348 rinfo->family == CHIP_FAMILY_RS200) in radeonfb_pci_register()
2349 rinfo->errata |= CHIP_ERRATA_PLL_DUMMYREADS; in radeonfb_pci_register()
2351 if (rinfo->family == CHIP_FAMILY_RV100 || in radeonfb_pci_register()
2352 rinfo->family == CHIP_FAMILY_RS100 || in radeonfb_pci_register()
2353 rinfo->family == CHIP_FAMILY_RS200) in radeonfb_pci_register()
2354 rinfo->errata |= CHIP_ERRATA_PLL_DELAY; in radeonfb_pci_register()
2360 rinfo->of_node = pci_device_to_OF_node(pdev); in radeonfb_pci_register()
2361 if (rinfo->of_node == NULL) in radeonfb_pci_register()
2363 pci_name(rinfo->pdev)); in radeonfb_pci_register()
2371 fixup_memory_mappings(rinfo); in radeonfb_pci_register()
2375 radeon_identify_vram(rinfo); in radeonfb_pci_register()
2377 rinfo->mapped_vram = min_t(unsigned long, MAX_MAPPED_VRAM, rinfo->video_ram); in radeonfb_pci_register()
2380 rinfo->fb_base = ioremap_wc(rinfo->fb_base_phys, in radeonfb_pci_register()
2381 rinfo->mapped_vram); in radeonfb_pci_register()
2382 } while (rinfo->fb_base == NULL && in radeonfb_pci_register()
2383 ((rinfo->mapped_vram /= 2) >= MIN_MAPPED_VRAM)); in radeonfb_pci_register()
2385 if (rinfo->fb_base == NULL) { in radeonfb_pci_register()
2387 pci_name(rinfo->pdev)); in radeonfb_pci_register()
2392 pr_debug("radeonfb (%s): mapped %ldk videoram\n", pci_name(rinfo->pdev), in radeonfb_pci_register()
2393 rinfo->mapped_vram/1024); in radeonfb_pci_register()
2406 if (!rinfo->is_mobility) in radeonfb_pci_register()
2407 radeon_map_ROM(rinfo, pdev); in radeonfb_pci_register()
2416 if (rinfo->bios_seg == NULL) in radeonfb_pci_register()
2417 radeon_find_mem_vbios(rinfo); in radeonfb_pci_register()
2423 if (rinfo->bios_seg == NULL && rinfo->is_mobility) in radeonfb_pci_register()
2424 radeon_map_ROM(rinfo, pdev); in radeonfb_pci_register()
2427 radeon_get_pllinfo(rinfo); in radeonfb_pci_register()
2431 radeon_create_i2c_busses(rinfo); in radeonfb_pci_register()
2435 radeon_set_fbinfo (rinfo); in radeonfb_pci_register()
2438 radeon_probe_screens(rinfo, monitor_layout, ignore_edid); in radeonfb_pci_register()
2441 radeon_check_modes(rinfo, mode_option); in radeonfb_pci_register()
2444 if (rinfo->mon1_EDID) in radeonfb_pci_register()
2445 err |= sysfs_create_bin_file(&rinfo->pdev->dev.kobj, in radeonfb_pci_register()
2447 if (rinfo->mon2_EDID) in radeonfb_pci_register()
2448 err |= sysfs_create_bin_file(&rinfo->pdev->dev.kobj, in radeonfb_pci_register()
2457 radeon_save_state (rinfo, &rinfo->init_state); in radeonfb_pci_register()
2458 memcpy(&rinfo->state, &rinfo->init_state, sizeof(struct radeon_regs)); in radeonfb_pci_register()
2465 radeonfb_pm_init(rinfo, rinfo->is_mobility ? 1 : -1, ignore_devlist, force_sleep); in radeonfb_pci_register()
2467 radeonfb_pm_init(rinfo, default_dynclk, ignore_devlist, force_sleep); in radeonfb_pci_register()
2475 pci_name(rinfo->pdev)); in radeonfb_pci_register()
2480 rinfo->wc_cookie = arch_phys_wc_add(rinfo->fb_base_phys, in radeonfb_pci_register()
2481 rinfo->video_ram); in radeonfb_pci_register()
2484 radeonfb_bl_init(rinfo); in radeonfb_pci_register()
2486 printk ("radeonfb (%s): %s\n", pci_name(rinfo->pdev), rinfo->name); in radeonfb_pci_register()
2488 if (rinfo->bios_seg) in radeonfb_pci_register()
2489 radeon_unmap_ROM(rinfo, pdev); in radeonfb_pci_register()
2494 iounmap(rinfo->fb_base); in radeonfb_pci_register()
2496 kfree(rinfo->mon1_EDID); in radeonfb_pci_register()
2497 kfree(rinfo->mon2_EDID); in radeonfb_pci_register()
2498 if (rinfo->mon1_modedb) in radeonfb_pci_register()
2499 fb_destroy_modedb(rinfo->mon1_modedb); in radeonfb_pci_register()
2502 radeon_delete_i2c_busses(rinfo); in radeonfb_pci_register()
2504 if (rinfo->bios_seg) in radeonfb_pci_register()
2505 radeon_unmap_ROM(rinfo, pdev); in radeonfb_pci_register()
2506 iounmap(rinfo->mmio_base); in radeonfb_pci_register()
2523 struct radeonfb_info *rinfo = info->par; in radeonfb_pci_unregister() local
2525 if (!rinfo) in radeonfb_pci_unregister()
2528 radeonfb_pm_exit(rinfo); in radeonfb_pci_unregister()
2530 if (rinfo->mon1_EDID) in radeonfb_pci_unregister()
2531 sysfs_remove_bin_file(&rinfo->pdev->dev.kobj, &edid1_attr); in radeonfb_pci_unregister()
2532 if (rinfo->mon2_EDID) in radeonfb_pci_unregister()
2533 sysfs_remove_bin_file(&rinfo->pdev->dev.kobj, &edid2_attr); in radeonfb_pci_unregister()
2535 del_timer_sync(&rinfo->lvds_timer); in radeonfb_pci_unregister()
2536 arch_phys_wc_del(rinfo->wc_cookie); in radeonfb_pci_unregister()
2539 radeonfb_bl_exit(rinfo); in radeonfb_pci_unregister()
2541 iounmap(rinfo->mmio_base); in radeonfb_pci_unregister()
2542 iounmap(rinfo->fb_base); in radeonfb_pci_unregister()
2547 kfree(rinfo->mon1_EDID); in radeonfb_pci_unregister()
2548 kfree(rinfo->mon2_EDID); in radeonfb_pci_unregister()
2549 if (rinfo->mon1_modedb) in radeonfb_pci_unregister()
2550 fb_destroy_modedb(rinfo->mon1_modedb); in radeonfb_pci_unregister()
2552 radeon_delete_i2c_busses(rinfo); in radeonfb_pci_unregister()