Lines Matching +full:- +full:36000

2  *	linux/drivers/video/pmagb-b-fb.c
4 * PMAGB-B TURBOchannel Smart Frame Buffer (SFB) card support,
11 * Michael Engel <engel@unix-ag.org>,
33 #include <video/pmagb-b-fb.h>
53 .height = -1,
54 .width = -1,
61 .id = "PMAGB-BA",
71 writel(v, par->sfb + reg / 4); in sfb_write()
76 return readl(par->sfb + reg / 4); in sfb_read()
81 writeb(v, par->dac + reg / 4); in dac_write()
86 return readb(par->dac + reg / 4); in dac_read()
91 writel(v, par->mmio + PMAGB_B_GP0); in gp0_write()
102 struct pmagbbfb_par *par = info->par; in pmagbbfb_setcolreg()
104 if (regno >= info->cmap.len) in pmagbbfb_setcolreg()
136 struct pmagbbfb_par *par = info->par; in pmagbbfb_erase_cursor()
150 struct pmagbbfb_par *par = info->par; in pmagbbfb_screen_setup()
152 info->var.xres = ((sfb_read(par, SFB_REG_VID_HOR) >> in pmagbbfb_screen_setup()
154 info->var.xres_virtual = info->var.xres; in pmagbbfb_screen_setup()
155 info->var.yres = (sfb_read(par, SFB_REG_VID_VER) >> in pmagbbfb_screen_setup()
157 info->var.yres_virtual = info->var.yres; in pmagbbfb_screen_setup()
158 info->var.left_margin = ((sfb_read(par, SFB_REG_VID_HOR) >> in pmagbbfb_screen_setup()
161 info->var.right_margin = ((sfb_read(par, SFB_REG_VID_HOR) >> in pmagbbfb_screen_setup()
164 info->var.upper_margin = (sfb_read(par, SFB_REG_VID_VER) >> in pmagbbfb_screen_setup()
166 info->var.lower_margin = (sfb_read(par, SFB_REG_VID_VER) >> in pmagbbfb_screen_setup()
168 info->var.hsync_len = ((sfb_read(par, SFB_REG_VID_HOR) >> in pmagbbfb_screen_setup()
171 info->var.vsync_len = (sfb_read(par, SFB_REG_VID_VER) >> in pmagbbfb_screen_setup()
174 info->fix.line_length = info->var.xres; in pmagbbfb_screen_setup()
184 69197, 66000, 65000, 50350, 36000, 32000, 25175 in pmagbbfb_osc_setup()
186 struct pmagbbfb_par *par = info->par; in pmagbbfb_osc_setup()
187 struct tc_bus *tbus = to_tc_dev(info->device)->bus; in pmagbbfb_osc_setup()
219 par->osc0 = freq0; in pmagbbfb_osc_setup()
220 if (freq0 >= pmagbbfb_freqs[0] - (pmagbbfb_freqs[0] + 32) / 64 && in pmagbbfb_osc_setup()
222 par->osc0 = pmagbbfb_freqs[0]; in pmagbbfb_osc_setup()
224 freq1 = (par->osc0 * count1 + count0 / 2) / count0; in pmagbbfb_osc_setup()
225 par->osc1 = freq1; in pmagbbfb_osc_setup()
227 if (freq1 >= pmagbbfb_freqs[i] - in pmagbbfb_osc_setup()
231 par->osc1 = pmagbbfb_freqs[i]; in pmagbbfb_osc_setup()
235 if (par->osc0 - par->osc1 <= (par->osc0 + par->osc1 + 256) / 512 || in pmagbbfb_osc_setup()
236 par->osc1 - par->osc0 <= (par->osc0 + par->osc1 + 256) / 512) in pmagbbfb_osc_setup()
237 par->osc1 = 0; in pmagbbfb_osc_setup()
239 gp0_write(par, par->osc1 != 0); /* reselect OscX */ in pmagbbfb_osc_setup()
241 info->var.pixclock = par->osc1 ? in pmagbbfb_osc_setup()
242 (1000000000 + par->osc1 / 2) / par->osc1 : in pmagbbfb_osc_setup()
243 (1000000000 + par->osc0 / 2) / par->osc0; in pmagbbfb_osc_setup()
259 return -ENOMEM; in pmagbbfb_probe()
261 par = info->par; in pmagbbfb_probe()
264 if (fb_alloc_cmap(&info->cmap, 256, 0) < 0) { in pmagbbfb_probe()
267 err = -ENOMEM; in pmagbbfb_probe()
271 info->fbops = &pmagbbfb_ops; in pmagbbfb_probe()
272 info->fix = pmagbbfb_fix; in pmagbbfb_probe()
273 info->var = pmagbbfb_defined; in pmagbbfb_probe()
276 start = tdev->resource.start; in pmagbbfb_probe()
277 len = tdev->resource.end - start + 1; in pmagbbfb_probe()
281 err = -EBUSY; in pmagbbfb_probe()
286 info->fix.mmio_start = start; in pmagbbfb_probe()
287 par->mmio = ioremap(info->fix.mmio_start, info->fix.mmio_len); in pmagbbfb_probe()
288 if (!par->mmio) { in pmagbbfb_probe()
290 err = -ENOMEM; in pmagbbfb_probe()
293 par->sfb = par->mmio + PMAGB_B_SFB; in pmagbbfb_probe()
294 par->dac = par->mmio + PMAGB_B_BT459; in pmagbbfb_probe()
297 info->fix.smem_start = start + PMAGB_B_FBMEM; in pmagbbfb_probe()
298 par->smem = ioremap(info->fix.smem_start, info->fix.smem_len); in pmagbbfb_probe()
299 if (!par->smem) { in pmagbbfb_probe()
301 err = -ENOMEM; in pmagbbfb_probe()
305 info->screen_base = (void __iomem *)par->smem + vid_base * 0x1000; in pmagbbfb_probe()
306 info->screen_size = info->fix.smem_len - 2 * vid_base * 0x1000; in pmagbbfb_probe()
322 par->osc0 / 1000, par->osc0 % 1000); in pmagbbfb_probe()
324 par->osc1 / 1000, par->osc1 % 1000); in pmagbbfb_probe()
327 info->fix.id, dev_name(dev)); in pmagbbfb_probe()
329 freq0, par->osc1 ? freq1 : "disabled", par->osc1 != 0); in pmagbbfb_probe()
335 iounmap(par->smem); in pmagbbfb_probe()
338 iounmap(par->mmio); in pmagbbfb_probe()
344 fb_dealloc_cmap(&info->cmap); in pmagbbfb_probe()
355 struct pmagbbfb_par *par = info->par; in pmagbbfb_remove()
360 iounmap(par->smem); in pmagbbfb_remove()
361 iounmap(par->mmio); in pmagbbfb_remove()
362 start = tdev->resource.start; in pmagbbfb_remove()
363 len = tdev->resource.end - start + 1; in pmagbbfb_remove()
365 fb_dealloc_cmap(&info->cmap); in pmagbbfb_remove()
375 { "DEC ", "PMAGB-BA" },
394 return -ENXIO; in pmagbbfb_init()