Lines Matching +full:0 +full:xf0ffffff
118 } while (0)
125 } while (0)
144 0, /* EXT_VERT_STRETCH */
185 return 0; in aty_ld_lcd()
288 640, 480, 640, 480, 0, 0, 8, 0,
289 {0, 8, 0}, {0, 8, 0}, {0, 8, 0}, {0, 0, 0},
290 0, 0, -1, -1, 0, 39722, 48, 16, 33, 10, 96, 2,
291 0, FB_VMODE_NONINTERLACED
297 0, FB_VMODE_NONINTERLACED
336 module_param_named(vmode, default_vmode, int, 0);
338 module_param_named(cmode, default_cmode, int, 0);
343 static unsigned int mach64_count = 0;
344 static unsigned long phys_vmembase[FB_MAX] = { 0, };
345 static unsigned long phys_size[FB_MAX] = { 0, };
346 static unsigned long phys_guiregbase[FB_MAX] = { 0, };
388 { PCI_CHIP_MACH64GX, "ATI888GX00 (Mach64 GX)", 135, 50, 50, 0, ATI_CHIP_88800GX },
389 { PCI_CHIP_MACH64CX, "ATI888CX00 (Mach64 CX)", 135, 50, 50, 0, ATI_CHIP_88800CX },
393 { PCI_CHIP_MACH64CT, "ATI264CT (Mach64 CT)", 135, 60, 60, 0, ATI_CHIP_264CT },
394 { PCI_CHIP_MACH64ET, "ATI264ET (Mach64 ET)", 135, 60, 60, 0, ATI_CHIP_264ET },
397 { PCI_CHIP_MACH64LT, "ATI264LT (Mach64 LT)", 135, 63, 63, 0, ATI_CHIP_264LT },
449 (info->fix.smem_len == 0x800000 || in aty_fudge_framebuffer_len()
450 (par->bus_type == ISA && info->fix.smem_len == 0x400000))) in aty_fudge_framebuffer_len()
462 for (i = (int)ARRAY_SIZE(aty_chips) - 1; i >= 0; i--) in correct_chipset()
466 if (i < 0) in correct_chipset()
483 if (type != 0x00d7) in correct_chipset()
487 if (type != 0x0057) in correct_chipset()
493 switch (rev & 0x07) { in correct_chipset()
494 case 0x00: in correct_chipset()
495 switch (rev & 0xc0) { in correct_chipset()
496 case 0x00: in correct_chipset()
504 case 0x40: in correct_chipset()
514 case 0x01: in correct_chipset()
522 case 0x02: in correct_chipset()
533 switch (rev & 0x07) { in correct_chipset()
534 case 0x01: in correct_chipset()
542 case 0x02: in correct_chipset()
555 PRINTKI("%s [0x%04x rev 0x%02x]\n", name, type, rev); in correct_chipset()
556 return 0; in correct_chipset()
598 par->pll.ct.xres = 0; in atyfb_get_pixclock()
599 if (par->lcd_table != 0) { in atyfb_get_pixclock()
620 aty_st_le32(GP_IO, 0x31003100, par); /* drive outputs high */ in read_aty_sense()
622 aty_st_le32(GP_IO, 0, par); /* turn off outputs */ in read_aty_sense()
625 sense = ((i & 0x3000) >> 3) | (i & 0x100); in read_aty_sense()
628 aty_st_le32(GP_IO, 0x20000000, par); /* drive A low */ in read_aty_sense()
631 sense |= ((i & 0x1000) >> 7) | ((i & 0x100) >> 4); in read_aty_sense()
632 aty_st_le32(GP_IO, 0x20002000, par); /* drive A high again */ in read_aty_sense()
635 aty_st_le32(GP_IO, 0x10000000, par); /* drive B low */ in read_aty_sense()
638 sense |= ((i & 0x2000) >> 10) | ((i & 0x100) >> 6); in read_aty_sense()
639 aty_st_le32(GP_IO, 0x10001000, par); /* drive B high again */ in read_aty_sense()
642 aty_st_le32(GP_IO, 0x01000000, par); /* drive C low */ in read_aty_sense()
644 sense |= (aty_ld_le32(GP_IO, par) & 0x3000) >> 12; in read_aty_sense()
645 aty_st_le32(GP_IO, 0, par); /* turn off outputs */ in read_aty_sense()
660 if (par->lcd_table != 0) { in aty_get_crtc()
689 if (par->lcd_table != 0) { in aty_get_crtc()
707 if (par->lcd_table != 0) { in aty_set_crtc()
730 ((((crtc->h_tot_disp >> 16) & 0xff) + 1) << 3), in aty_set_crtc()
731 (((crtc->v_tot_disp >> 16) & 0x7ff) + 1), in aty_set_crtc()
732 (crtc->h_sync_strt_wid & 0x200000) ? 'N' : 'P', in aty_set_crtc()
733 (crtc->v_sync_strt_wid & 0x200000) ? 'N' : 'P', in aty_set_crtc()
752 #if 0 in aty_set_crtc()
759 if (par->lcd_table != 0) { in aty_set_crtc()
765 ((((crtc->shadow_h_tot_disp >> 16) & 0xff) + 1) << 3), in aty_set_crtc()
766 (((crtc->shadow_v_tot_disp >> 16) & 0x7ff) + 1), in aty_set_crtc()
767 (crtc->shadow_h_sync_strt_wid & 0x200000) ? 'N' : 'P', in aty_set_crtc()
768 (crtc->shadow_v_sync_strt_wid & 0x200000) ? 'N' : 'P'); in aty_set_crtc()
886 h_sync_pol = sync & FB_SYNC_HOR_HIGH_ACT ? 0 : 1; in aty_var_to_crtc()
887 v_sync_pol = sync & FB_SYNC_VERT_HIGH_ACT ? 0 : 1; in aty_var_to_crtc()
903 if (par->lcd_table != 0) { in aty_var_to_crtc()
915 crtc->lcd_config_panel = aty_ld_lcd(CNFG_PANEL, par) | 0x4000; in aty_var_to_crtc()
946 if ((par->lcd_table != 0) && (crtc->lcd_gen_cntl & LCD_ON)) { in aty_var_to_crtc()
948 /* bpp -> bytespp, 1,4 -> 0; 8 -> 2; 15,16 -> 1; 24 -> 6; 32 -> 5 in aty_var_to_crtc()
949 const u8 DFP_h_sync_dly_LT[] = { 0, 2, 1, 6, 5 }; in aty_var_to_crtc()
950 const u8 ADD_to_strt_wid_and_dly_LT_DAC[] = { 0, 5, 6, 9, 9, 12, 12 }; */ in aty_var_to_crtc()
988 FAIL_MAX("h_disp too large", h_disp, 0xff); in aty_var_to_crtc()
989 FAIL_MAX("h_sync_strt too large", h_sync_strt, 0x1ff); in aty_var_to_crtc()
990 /*FAIL_MAX("h_sync_wid too large", h_sync_wid, 0x1f);*/ in aty_var_to_crtc()
991 if (h_sync_wid > 0x1f) in aty_var_to_crtc()
992 h_sync_wid = 0x1f; in aty_var_to_crtc()
993 FAIL_MAX("h_total too large", h_total, 0x1ff); in aty_var_to_crtc()
1008 FAIL_MAX("v_disp too large", v_disp, 0x7ff); in aty_var_to_crtc()
1009 FAIL_MAX("v_sync_stsrt too large", v_sync_strt, 0x7ff); in aty_var_to_crtc()
1010 /*FAIL_MAX("v_sync_wid too large", v_sync_wid, 0x1f);*/ in aty_var_to_crtc()
1011 if (v_sync_wid > 0x1f) in aty_var_to_crtc()
1012 v_sync_wid = 0x1f; in aty_var_to_crtc()
1013 FAIL_MAX("v_total too large", v_total, 0x7ff); in aty_var_to_crtc()
1015 c_sync = sync & FB_SYNC_COMP_HIGH_ACT ? CRTC_CSYNC_EN : 0; in aty_var_to_crtc()
1026 crtc->vline_crnt_vline = 0; in aty_var_to_crtc()
1029 crtc->h_sync_strt_wid = (h_sync_strt & 0xff) | (h_sync_dly << 8) | in aty_var_to_crtc()
1030 ((h_sync_strt & 0x100) << 4) | (h_sync_wid << 16) | in aty_var_to_crtc()
1047 if (par->lcd_table != 0) { in aty_var_to_crtc()
1097 while (--Index >= 0) { in aty_var_to_crtc()
1107 if ((horz_stretch_loop >= 0) && !BestRemainder) { in aty_var_to_crtc()
1108 int horz_stretch_ratio = 0, Accumulator = 0; in aty_var_to_crtc()
1113 while (--Index >= 0) { in aty_var_to_crtc()
1114 if (Accumulator > 0) in aty_var_to_crtc()
1125 break; /* Out of the do { ... } while (0) */ in aty_var_to_crtc()
1131 } while (0); in aty_var_to_crtc()
1146 crtc->vert_stretching = 0; in aty_var_to_crtc()
1163 return 0; in aty_var_to_crtc()
1176 h_total = crtc->h_tot_disp & 0x1ff; in aty_crtc_to_var()
1177 h_disp = (crtc->h_tot_disp >> 16) & 0xff; in aty_crtc_to_var()
1178 h_sync_strt = (crtc->h_sync_strt_wid & 0xff) | ((crtc->h_sync_strt_wid >> 4) & 0x100); in aty_crtc_to_var()
1179 h_sync_dly = (crtc->h_sync_strt_wid >> 8) & 0x7; in aty_crtc_to_var()
1180 h_sync_wid = (crtc->h_sync_strt_wid >> 16) & 0x1f; in aty_crtc_to_var()
1181 h_sync_pol = (crtc->h_sync_strt_wid >> 21) & 0x1; in aty_crtc_to_var()
1182 v_total = crtc->v_tot_disp & 0x7ff; in aty_crtc_to_var()
1183 v_disp = (crtc->v_tot_disp >> 16) & 0x7ff; in aty_crtc_to_var()
1184 v_sync_strt = crtc->v_sync_strt_wid & 0x7ff; in aty_crtc_to_var()
1185 v_sync_wid = (crtc->v_sync_strt_wid >> 16) & 0x1f; in aty_crtc_to_var()
1186 v_sync_pol = (crtc->v_sync_strt_wid >> 21) & 0x1; in aty_crtc_to_var()
1187 c_sync = crtc->gen_cntl & CRTC_CSYNC_EN ? 1 : 0; in aty_crtc_to_var()
1201 sync = (h_sync_pol ? 0 : FB_SYNC_HOR_HIGH_ACT) | in aty_crtc_to_var()
1202 (v_sync_pol ? 0 : FB_SYNC_VERT_HIGH_ACT) | in aty_crtc_to_var()
1203 (c_sync ? FB_SYNC_COMP_HIGH_ACT : 0); in aty_crtc_to_var()
1208 var->red.offset = 0; in aty_crtc_to_var()
1210 var->green.offset = 0; in aty_crtc_to_var()
1212 var->blue.offset = 0; in aty_crtc_to_var()
1214 var->transp.offset = 0; in aty_crtc_to_var()
1215 var->transp.length = 0; in aty_crtc_to_var()
1223 var->blue.offset = 0; in aty_crtc_to_var()
1225 var->transp.offset = 0; in aty_crtc_to_var()
1226 var->transp.length = 0; in aty_crtc_to_var()
1234 var->blue.offset = 0; in aty_crtc_to_var()
1236 var->transp.offset = 0; in aty_crtc_to_var()
1237 var->transp.length = 0; in aty_crtc_to_var()
1245 var->blue.offset = 0; in aty_crtc_to_var()
1247 var->transp.offset = 0; in aty_crtc_to_var()
1248 var->transp.length = 0; in aty_crtc_to_var()
1256 var->blue.offset = 0; in aty_crtc_to_var()
1297 return 0; in aty_crtc_to_var()
1313 return 0; in atyfb_set_par()
1321 if (pixclock == 0) { in atyfb_set_par()
1353 pixclock_in_ps = 0; in atyfb_set_par()
1355 if (0 == pixclock_in_ps) { in atyfb_set_par()
1356 PRINTKE("ALERT ops->pll_to_var get 0\n"); in atyfb_set_par()
1360 memset(&debug, 0, sizeof(debug)); in atyfb_set_par()
1406 tmp = aty_ld_le32(MEM_CNTL, par) & 0xf0ffffff; in atyfb_set_par()
1409 tmp |= 0x02000000; in atyfb_set_par()
1412 tmp |= 0x03000000; in atyfb_set_par()
1415 tmp |= 0x06000000; in atyfb_set_par()
1420 tmp = aty_ld_le32(MEM_CNTL, par) & 0xf00fffff; in atyfb_set_par()
1426 tmp |= 0x00000000; in atyfb_set_par()
1429 tmp |= 0x04000000; in atyfb_set_par()
1432 tmp |= 0x08000000; in atyfb_set_par()
1436 aty_st_le32(DAC_CNTL, 0x87010184, par); in atyfb_set_par()
1437 aty_st_le32(BUS_CNTL, 0x680000f9, par); in atyfb_set_par()
1439 aty_st_le32(DAC_CNTL, 0x87010184, par); in atyfb_set_par()
1440 aty_st_le32(BUS_CNTL, 0x680000f9, par); in atyfb_set_par()
1442 aty_st_le32(DAC_CNTL, 0x80010102, par); in atyfb_set_par()
1443 aty_st_le32(BUS_CNTL, 0x7b33a040 | (par->aux_start ? BUS_APER_REG_DIS : 0), par); in atyfb_set_par()
1446 aty_st_le32(DAC_CNTL, 0x86010102, par); in atyfb_set_par()
1447 aty_st_le32(BUS_CNTL, 0x7b23a040 | (par->aux_start ? BUS_APER_REG_DIS : 0), par); in atyfb_set_par()
1448 aty_st_le32(EXT_MEM_CNTL, aty_ld_le32(EXT_MEM_CNTL, par) | 0x5000001, par); in atyfb_set_par()
1452 aty_st_8(DAC_MASK, 0xff, par); in atyfb_set_par()
1466 (((par->crtc.h_tot_disp >> 16) & 0xff) + 1) * 8, in atyfb_set_par()
1467 ((par->crtc.v_tot_disp >> 16) & 0x7ff) + 1, in atyfb_set_par()
1477 base = 0x2000; in atyfb_set_par()
1479 for (i = 0; i < 256; i = i+4) { in atyfb_set_par()
1480 if (i % 16 == 0) { in atyfb_set_par()
1482 printk("debug atyfb: 0x%04X: ", base + i); in atyfb_set_par()
1490 base = 0x00; in atyfb_set_par()
1492 for (i = 0; i < 64; i++) { in atyfb_set_par()
1493 if (i % 16 == 0) { in atyfb_set_par()
1495 printk("debug atyfb: 0x%02X: ", base + i); in atyfb_set_par()
1497 if (i % 4 == 0) in atyfb_set_par()
1505 if (par->lcd_table != 0) { in atyfb_set_par()
1507 base = 0x00; in atyfb_set_par()
1510 for (i = 0; i <= POWER_MANAGEMENT; i++) { in atyfb_set_par()
1513 pr_cont("\ndebug atyfb: 0x%04X: ", in atyfb_set_par()
1518 for (i = 0; i < 64; i++) { in atyfb_set_par()
1519 if (i % 4 == 0) in atyfb_set_par()
1520 pr_cont("\ndebug atyfb: 0x%02X: ", in atyfb_set_par()
1530 return 0; in atyfb_set_par()
1549 if (pixclock == 0) { in atyfb_check_var()
1563 info->var.accel_flags = 0; in atyfb_check_var()
1567 return 0; in atyfb_check_var()
1594 par->mmaped = 0; in atyfb_open()
1597 return 0; in atyfb_open()
1603 int handled = 0; in aty_irq()
1616 par->vblank.pan_display = 0; in aty_irq()
1632 if (!test_and_set_bit(0, &par->irq_flags)) { in aty_enable_irq()
1634 clear_bit(0, &par->irq_flags); in aty_enable_irq()
1657 return 0; in aty_enable_irq()
1664 if (test_and_clear_bit(0, &par->irq_flags)) { in aty_disable_irq()
1666 par->vblank.pan_display = 0; in aty_disable_irq()
1677 return 0; in aty_disable_irq()
1688 return 0; in atyfb_release()
1695 return 0; in atyfb_release()
1700 par->mmaped = 0; in atyfb_release()
1728 return 0; in atyfb_release()
1743 xres = (((par->crtc.h_tot_disp >> 16) & 0xff) + 1) * 8; in atyfb_pan_display()
1744 yres = ((par->crtc.v_tot_disp >> 16) & 0x7ff) + 1; in atyfb_pan_display()
1755 return 0; in atyfb_pan_display()
1758 if ((var->activate & FB_ACTIVATE_VBL) && !aty_enable_irq(par, 0)) { in atyfb_pan_display()
1761 par->vblank.pan_display = 0; in atyfb_pan_display()
1765 return 0; in atyfb_pan_display()
1775 case 0: in aty_waitforvblank()
1782 ret = aty_enable_irq(par, 0); in aty_waitforvblank()
1789 if (ret < 0) in aty_waitforvblank()
1791 if (ret == 0) { in aty_waitforvblank()
1796 return 0; in aty_waitforvblank()
1801 #define ATYIO_CLKR 0x41545900 /* ATY\00 */
1802 #define ATYIO_CLKW 0x41545901 /* ATY\01 */
1813 u32 dsp_xclks_per_row; /* 0-16383 */
1814 u32 dsp_loop_latency; /* 0-15 */
1815 u32 dsp_precision; /* 0-7 */
1816 u32 dsp_on; /* 0-2047 */
1817 u32 dsp_off; /* 0-2047 */
1820 #define ATYIO_FEATR 0x41545902 /* ATY\02 */
1821 #define ATYIO_FEATW 0x41545903 /* ATY\03 */
1859 struct atyclk clk = { 0 }; in atyfb_ioctl()
1871 clk.dsp_xclks_per_row = dsp_config & 0x3fff; in atyfb_ioctl()
1872 clk.dsp_loop_latency = (dsp_config >> 16) & 0xf; in atyfb_ioctl()
1874 clk.dsp_off = dsp_on_off & 0x7ff; in atyfb_ioctl()
1875 clk.dsp_on = (dsp_on_off >> 16) & 0x7ff; in atyfb_ioctl()
1897 pll->ct.dsp_config = (clk.dsp_xclks_per_row & 0x3fff) | in atyfb_ioctl()
1898 ((clk.dsp_loop_latency & 0xf) << 16) | in atyfb_ioctl()
1900 pll->ct.dsp_on_off = (clk.dsp_off & 0x7ff) | in atyfb_ioctl()
1901 ((clk.dsp_on & 0x7ff) << 16); in atyfb_ioctl()
1919 return 0; in atyfb_ioctl()
1928 return 0; in atyfb_sync()
1935 unsigned int size, page, map_size = 0; in atyfb_mmap()
1936 unsigned long map_offset = 0; in atyfb_mmap()
1943 if (vma->vm_pgoff > (~0UL >> PAGE_SHIFT)) in atyfb_mmap()
1951 if (((vma->vm_pgoff == 0) && (size == info->fix.smem_len)) || in atyfb_mmap()
1953 off += 0x8000000000000000UL; in atyfb_mmap()
1958 for (page = 0; page < size;) { in atyfb_mmap()
1959 map_size = 0; in atyfb_mmap()
1960 for (i = 0; par->mmap_map[i].size; i++) { in atyfb_mmap()
1996 return 0; in atyfb_mmap()
2034 if ((--timeout) == 0) in aty_power_mgmt()
2053 if ((--timeout) == 0) in aty_power_mgmt()
2055 } while ((pm & PWR_MGT_STATUS_MASK) != 0); in aty_power_mgmt()
2059 return timeout ? 0 : -EIO; in aty_power_mgmt()
2070 return 0; in atyfb_pci_suspend_late()
2095 par->asleep = 0; in atyfb_pci_suspend_late()
2096 par->lock_blank = 0; in atyfb_pci_suspend_late()
2098 fb_set_suspend(info, 0); in atyfb_pci_suspend_late()
2108 return 0; in atyfb_pci_suspend_late()
2147 return 0; in atyfb_pci_resume()
2160 aty_power_mgmt(0, par); in atyfb_pci_resume()
2165 par->asleep = 0; in atyfb_pci_resume()
2171 fb_set_suspend(info, 0); in atyfb_pci_resume()
2174 par->lock_blank = 0; in atyfb_pci_resume()
2181 return 0; in atyfb_pci_resume()
2199 #define MAX_LEVEL 0xFF
2210 if (atylevel < 0) in aty_bl_get_level_brightness()
2211 atylevel = 0; in aty_bl_get_level_brightness()
2226 level = 0; in aty_bl_update_status()
2231 if (level > 0) { in aty_bl_update_status()
2236 reg |= (aty_bl_get_level_brightness(par, 0) << BIAS_MOD_LEVEL_SHIFT); in aty_bl_update_status()
2240 return 0; in aty_bl_update_status()
2261 memset(&props, 0, sizeof(struct backlight_properties)); in aty_bl_init()
2273 fb_bl_default_curve(info, 0, in aty_bl_init()
2274 0x3F * FB_BACKLIGHT_MAX / MAX_LEVEL, in aty_bl_init()
2275 0xFF * FB_BACKLIGHT_MAX / MAX_LEVEL); in aty_bl_init()
2319 for (i = 0; i < size; i++) { in aty_calc_mem_refresh()
2338 if (par->lcd_table != 0 && (aty_ld_lcd(LCD_GEN_CNTL, par) & LCD_ON)) { in atyfb_get_timings_from_lcd()
2352 ret = 0; in atyfb_get_timings_from_lcd()
2363 int gtb_memsize, has_var = 0; in aty_init()
2378 par->bus_type = (stat0 >> 0) & 0x07; in aty_init()
2379 par->ram_type = (stat0 >> 3) & 0x07; in aty_init()
2384 dac_type = (stat0 >> 9) & 0x07; in aty_init()
2385 if (dac_type == 0x07) in aty_init()
2388 dac_subtype = (aty_ld_8(SCRATCH_REG1 + 1, par) & 0xF0) | dac_type; in aty_init()
2434 par->ram_type = (aty_ld_le32(CNFG_STAT0, par) & 0x07); in aty_init()
2482 if (diff1 < 0) in aty_init()
2484 if (diff2 < 0) in aty_init()
2502 /* 0xF used instead of MEM_SIZE_ALIAS */ in aty_init()
2503 switch (par->mem_cntl & 0xF) { in aty_init()
2505 info->fix.smem_len = 0x80000; in aty_init()
2508 info->fix.smem_len = 0x100000; in aty_init()
2511 info->fix.smem_len = 0x200000; in aty_init()
2514 info->fix.smem_len = 0x400000; in aty_init()
2517 info->fix.smem_len = 0x600000; in aty_init()
2520 info->fix.smem_len = 0x800000; in aty_init()
2523 info->fix.smem_len = 0x80000; in aty_init()
2527 info->fix.smem_len = 0x80000; in aty_init()
2530 info->fix.smem_len = 0x100000; in aty_init()
2533 info->fix.smem_len = 0x200000; in aty_init()
2536 info->fix.smem_len = 0x400000; in aty_init()
2539 info->fix.smem_len = 0x600000; in aty_init()
2542 info->fix.smem_len = 0x800000; in aty_init()
2545 info->fix.smem_len = 0x80000; in aty_init()
2549 if (aty_ld_le32(CNFG_STAT1, par) & 0x40000000) in aty_init()
2550 info->fix.smem_len += 0x400000; in aty_init()
2555 par->mem_cntl &= ~(gtb_memsize ? 0xF : MEM_SIZE_ALIAS); in aty_init()
2556 if (info->fix.smem_len <= 0x80000) in aty_init()
2558 else if (info->fix.smem_len <= 0x100000) in aty_init()
2560 else if (info->fix.smem_len <= 0x200000) in aty_init()
2562 else if (info->fix.smem_len <= 0x400000) in aty_init()
2564 else if (info->fix.smem_len <= 0x600000) in aty_init()
2572 * Reg Block 0 (CT-compatible block) is at mmio_start in aty_init()
2573 * Reg Block 1 (multimedia extensions) is at mmio_start - 0x400 in aty_init()
2576 info->fix.mmio_len = 0x400; in aty_init()
2579 info->fix.mmio_len = 0x400; in aty_init()
2582 info->fix.mmio_start -= 0x400; in aty_init()
2583 info->fix.mmio_len = 0x800; in aty_init()
2586 info->fix.mmio_start -= 0x400; in aty_init()
2587 info->fix.mmio_len = 0x800; in aty_init()
2592 info->fix.smem_len == 0x80000 ? 512 : (info->fix.smem_len>>20), in aty_init()
2593 info->fix.smem_len == 0x80000 ? 'K' : 'M', ramname, xtal, in aty_init()
2615 for (i = 0; i < 40; i++) in aty_init()
2669 memset(&var, 0, sizeof(var)); in aty_init()
2696 if (default_vmode <= 0 || default_vmode > VMODE_MAX) in aty_init()
2713 if (mode && fb_find_mode(&var, info, mode, NULL, 0, &defmode, 8)) in aty_init()
2750 ret = fb_alloc_cmap(&info->cmap, 256, 0); in aty_init()
2751 if (ret < 0) in aty_init()
2755 if (ret < 0) { in aty_init()
2764 return 0; in aty_init()
2785 vmembase = simple_strtoul(p, NULL, 0); in store_video_par()
2788 size = simple_strtoul(p, NULL, 0); in store_video_par()
2791 guiregbase = simple_strtoul(p, NULL, 0); in store_video_par()
2798 return 0; in store_video_par()
2801 phys_vmembase[m64_num] = 0; in store_video_par()
2816 return 0; in atyfb_blank()
2828 gen_cntl &= ~0x400004c; in atyfb_blank()
2833 gen_cntl |= 0x4000040; in atyfb_blank()
2836 gen_cntl |= 0x4000048; in atyfb_blank()
2839 gen_cntl |= 0x4000044; in atyfb_blank()
2842 gen_cntl |= 0x400004c; in atyfb_blank()
2856 return 0; in atyfb_blank()
2871 * entries in the var structure). Return != 0 for invalid regno.
2887 return 0; in atyfb_setcolreg()
2920 i = aty_ld_8(DAC_CNTL, par) & 0xfc; in atyfb_setcolreg()
2922 i |= 0x2; /* DAC_CNTL | 0x2 turns off the extra brightness for gt */ in atyfb_setcolreg()
2924 aty_st_8(DAC_MASK, 0xff, par); in atyfb_setcolreg()
2937 for (i = 0; i < 8; i++) in atyfb_setcolreg()
2943 return 0; in atyfb_setcolreg()
2961 par->ati_regbase = (void *)addr + 0x7ffc00UL; in atyfb_setup_sparc()
2962 info->fix.mmio_start = addr + 0x7ffc00UL; in atyfb_setup_sparc()
2967 info->screen_base = (char *) (addr + 0x800000UL); in atyfb_setup_sparc()
2968 info->fix.smem_start = addr + 0x800000UL; in atyfb_setup_sparc()
2974 for (i = 0; i < 6 && pdev->resource[i].start; i++) in atyfb_setup_sparc()
2984 for (i = 0, j = 2; i < 6 && pdev->resource[i].start; i++) { in atyfb_setup_sparc()
3008 par->mmap_map[j].voff = (pbase + 0x10000000) & PAGE_MASK; in atyfb_setup_sparc()
3021 par->mmap_map[j].voff = (pbase + 0x800000) & PAGE_MASK; in atyfb_setup_sparc()
3022 par->mmap_map[j].poff = (base + 0x800000) & PAGE_MASK; in atyfb_setup_sparc()
3023 par->mmap_map[j].size = 0x800000; in atyfb_setup_sparc()
3026 size -= 0x800000; in atyfb_setup_sparc()
3049 switch (mem & 0x0f) { in atyfb_setup_sparc()
3051 mem = (mem & ~(0x0f)) | 2; in atyfb_setup_sparc()
3054 mem = (mem & ~(0x0f)) | 3; in atyfb_setup_sparc()
3057 mem = (mem & ~(0x0f)) | 4; in atyfb_setup_sparc()
3060 mem = (mem & ~(0x0f)) | 5; in atyfb_setup_sparc()
3066 mem &= ~(0x00700000); in atyfb_setup_sparc()
3068 mem &= ~(0xcf80e000); /* Turn off all undocumented bits. */ in atyfb_setup_sparc()
3083 var->xoffset = var->yoffset = 0; in atyfb_setup_sparc()
3096 for (i = 0; i < 16; i++) in atyfb_setup_sparc()
3139 return 0; in atyfb_setup_sparc()
3159 /* Address of driver information table is at offset 0x78. */ in aty_init_lcd()
3160 driv_inf_tab = bios_base + *((u16 *)(bios_base+0x78)); in aty_init_lcd()
3164 if ((sig == 0x54504c24) || /* Rage LT pro */ in aty_init_lcd()
3165 (sig == 0x544d5224) || /* Rage mobility */ in aty_init_lcd()
3166 (sig == 0x54435824) || /* Rage XC */ in aty_init_lcd()
3167 (sig == 0x544c5824)) { /* Rage XL */ in aty_init_lcd()
3170 par->lcd_table = 0; in aty_init_lcd()
3171 if (lcd_ofs != 0) in aty_init_lcd()
3175 if (par->lcd_table != 0) { in aty_init_lcd()
3196 model[23] = 0; in aty_init_lcd()
3211 case 0: in aty_init_lcd()
3230 if (tech == 0 || tech == 2) { in aty_init_lcd()
3232 case 0: in aty_init_lcd()
3246 case 0: in aty_init_lcd()
3272 refresh_rates_buf[0] = 0; in aty_init_lcd()
3275 f = 0; in aty_init_lcd()
3276 for (i = 0; i < 16; i++) { in aty_init_lcd()
3278 if (f == 0) { in aty_init_lcd()
3290 default_refresh_rate = (*(u8 *)(par->lcd_table+61) & 0xf0) >> 4; in aty_init_lcd()
3307 while (*lcdmodeptr != 0) { in aty_init_lcd()
3312 mwidth = *((u16 *)(modeptr+0)); in aty_init_lcd()
3346 if (*lcdmodeptr == 0) { in aty_init_lcd()
3382 rom_addr = 0xc0000 + ((aty_ld_le32(SCRATCH_REG1, par) & 0x7f) << 11); in init_from_bios()
3383 bios_base = (unsigned long)ioremap(rom_addr, 0x10000); in init_from_bios()
3385 /* The BIOS starts with 0xaa55. */ in init_from_bios()
3386 if (*((u16 *)bios_base) == 0xaa55) { in init_from_bios()
3396 rom_table_offset = (u16)(bios_ptr[0x48] | (bios_ptr[0x49] << 8)); in init_from_bios()
3419 ret = 0; in init_from_bios()
3437 int ret = 0; in atyfb_setup_generic()
3439 raddr = addr + 0x7ff000UL; in atyfb_setup_generic()
3454 par->ati_regbase = ioremap_uc(info->fix.mmio_start, 0x1000); in atyfb_setup_generic()
3458 info->fix.mmio_start += par->aux_start ? 0x400 : 0xc00; in atyfb_setup_generic()
3459 par->ati_regbase += par->aux_start ? 0x400 : 0xc00; in atyfb_setup_generic()
3472 addr += 0x800000; in atyfb_setup_generic()
3489 info->fix.smem_len = 0x800000; in atyfb_setup_generic()
3509 par->clk_wr_offset = (inb(R_GENMO) & 0x0CU) >> 2; in atyfb_setup_generic()
3511 par->clk_wr_offset = aty_ld_8(CLOCK_CNTL, par) & 0x03U; in atyfb_setup_generic()
3516 return 0; in atyfb_setup_generic()
3550 rp = &pdev->resource[0]; in atyfb_pci_probe()
3598 par->mmap_map[0].voff = 0x8000000000000000UL; in atyfb_pci_probe()
3599 par->mmap_map[0].poff = (unsigned long) info->screen_base & PAGE_MASK; in atyfb_pci_probe()
3600 par->mmap_map[0].size = info->fix.smem_len; in atyfb_pci_probe()
3601 par->mmap_map[0].prot_mask = _PAGE_CACHE; in atyfb_pci_probe()
3602 par->mmap_map[0].prot_flag = _PAGE_E; in atyfb_pci_probe()
3603 par->mmap_map[1].voff = par->mmap_map[0].voff + info->fix.smem_len; in atyfb_pci_probe()
3615 return 0; in atyfb_pci_probe()
3646 int num_found = 0; in atyfb_atari_probe()
3648 for (m64_num = 0; m64_num < mach64_count; m64_num++) { in atyfb_atari_probe()
3673 par->ati_regbase = ioremap(phys_guiregbase[m64_num], 0x10000) + in atyfb_atari_probe()
3674 0xFC00ul; in atyfb_atari_probe()
3677 aty_st_le32(CLOCK_CNTL, 0x12345678, par); in atyfb_atari_probe()
3680 switch (clock_r & 0x003F) { in atyfb_atari_probe()
3681 case 0x12: in atyfb_atari_probe()
3684 case 0x34: in atyfb_atari_probe()
3687 case 0x16: in atyfb_atari_probe()
3690 case 0x38: in atyfb_atari_probe()
3691 par->clk_wr_offset = 0; /* Panther 1 ISA Adapter (Gerald) */ in atyfb_atari_probe()
3697 case 0x00d7: in atyfb_atari_probe()
3700 case 0x0057: in atyfb_atari_probe()
3716 return num_found ? 0 : -ENXIO; in atyfb_atari_probe()
3846 return 0; in atyfb_setup()
3854 vram = simple_strtoul(this_opt + 5, NULL, 0); in atyfb_setup()
3856 pll = simple_strtoul(this_opt + 4, NULL, 0); in atyfb_setup()
3858 mclk = simple_strtoul(this_opt + 5, NULL, 0); in atyfb_setup()
3860 xclk = simple_strtoul(this_opt+5, NULL, 0); in atyfb_setup()
3862 comp_sync = simple_strtoul(this_opt+10, NULL, 0); in atyfb_setup()
3864 backlight = simple_strtoul(this_opt+10, NULL, 0); in atyfb_setup()
3868 simple_strtoul(this_opt + 6, NULL, 0); in atyfb_setup()
3869 if (vmode > 0 && vmode <= VMODE_MAX) in atyfb_setup()
3873 simple_strtoul(this_opt + 6, NULL, 0); in atyfb_setup()
3875 case 0: in atyfb_setup()
3909 return 0; in atyfb_setup()
3989 return 0; in atyfb_init()
4007 module_param(noaccel, bool, 0);
4009 module_param(vram, int, 0);
4011 module_param(pll, int, 0);
4013 module_param(mclk, int, 0);
4015 module_param(xclk, int, 0);
4017 module_param(comp_sync, int, 0);
4018 MODULE_PARM_DESC(comp_sync, "Set composite sync signal to low (0) or high (1)");
4019 module_param(mode, charp, 0);
4021 module_param(nomtrr, bool, 0);