• Home
  • Raw
  • Download

Lines Matching +full:ati +full:- +full:base

2  *  linux/drivers/video/offb.c -- Open Firmware based frame buffer device
40 cmap_simple, /* ATI Mach64 */
41 cmap_r128, /* ATI Rage128 */
42 cmap_M3A, /* ATI Rage Mobility M3 Head A */
43 cmap_M3B, /* ATI Rage Mobility M3 Head B */
44 cmap_radeon, /* ATI Radeon */
46 cmap_avivo, /* ATI R5xx */
99 struct offb_par *par = (struct offb_par *) info->par; in offb_setcolreg()
101 if (info->fix.visual == FB_VISUAL_TRUECOLOR) { in offb_setcolreg()
102 u32 *pal = info->pseudo_palette; in offb_setcolreg()
103 u32 cr = red >> (16 - info->var.red.length); in offb_setcolreg()
104 u32 cg = green >> (16 - info->var.green.length); in offb_setcolreg()
105 u32 cb = blue >> (16 - info->var.blue.length); in offb_setcolreg()
109 return -EINVAL; in offb_setcolreg()
111 value = (cr << info->var.red.offset) | in offb_setcolreg()
112 (cg << info->var.green.offset) | in offb_setcolreg()
113 (cb << info->var.blue.offset); in offb_setcolreg()
114 if (info->var.transp.length > 0) { in offb_setcolreg()
115 u32 mask = (1 << info->var.transp.length) - 1; in offb_setcolreg()
116 mask <<= info->var.transp.offset; in offb_setcolreg()
124 return -EINVAL; in offb_setcolreg()
130 if (!par->cmap_adr) in offb_setcolreg()
133 switch (par->cmap_type) { in offb_setcolreg()
135 writeb(regno, par->cmap_adr); in offb_setcolreg()
136 writeb(red, par->cmap_data); in offb_setcolreg()
137 writeb(green, par->cmap_data); in offb_setcolreg()
138 writeb(blue, par->cmap_data); in offb_setcolreg()
142 out_le32(par->cmap_adr + 0x58, in offb_setcolreg()
143 in_le32(par->cmap_adr + 0x58) & ~0x20); in offb_setcolreg()
146 out_8(par->cmap_adr + 0xb0, regno); in offb_setcolreg()
147 out_le32(par->cmap_adr + 0xb4, in offb_setcolreg()
152 out_le32(par->cmap_adr + 0x58, in offb_setcolreg()
153 in_le32(par->cmap_adr + 0x58) | 0x20); in offb_setcolreg()
155 out_8(par->cmap_adr + 0xb0, regno); in offb_setcolreg()
156 out_le32(par->cmap_adr + 0xb4, (red << 16 | green << 8 | blue)); in offb_setcolreg()
160 out_8(par->cmap_adr + 0xb0, regno); in offb_setcolreg()
161 out_le32(par->cmap_adr + 0xb4, (red << 16 | green << 8 | blue)); in offb_setcolreg()
164 out_le32(((unsigned __iomem *) par->cmap_adr) + regno, in offb_setcolreg()
169 writel(1, par->cmap_adr + AVIVO_DC_LUT_RW_SELECT); in offb_setcolreg()
170 writeb(regno, par->cmap_adr + AVIVO_DC_LUT_RW_INDEX); in offb_setcolreg()
172 par->cmap_adr + AVIVO_DC_LUT_30_COLOR); in offb_setcolreg()
173 writel(0, par->cmap_adr + AVIVO_DC_LUT_RW_SELECT); in offb_setcolreg()
174 writeb(regno, par->cmap_adr + AVIVO_DC_LUT_RW_INDEX); in offb_setcolreg()
176 par->cmap_adr + AVIVO_DC_LUT_30_COLOR); in offb_setcolreg()
189 struct offb_par *par = (struct offb_par *) info->par; in offb_blank()
192 if (!par->cmap_adr) in offb_blank()
195 if (!par->blanked) in offb_blank()
199 par->blanked = blank; in offb_blank()
203 switch (par->cmap_type) { in offb_blank()
205 writeb(i, par->cmap_adr); in offb_blank()
207 writeb(0, par->cmap_data); in offb_blank()
211 out_le32(par->cmap_adr + 0x58, in offb_blank()
212 in_le32(par->cmap_adr + 0x58) & ~0x20); in offb_blank()
215 out_8(par->cmap_adr + 0xb0, i); in offb_blank()
216 out_le32(par->cmap_adr + 0xb4, 0); in offb_blank()
220 out_le32(par->cmap_adr + 0x58, in offb_blank()
221 in_le32(par->cmap_adr + 0x58) | 0x20); in offb_blank()
223 out_8(par->cmap_adr + 0xb0, i); in offb_blank()
224 out_le32(par->cmap_adr + 0xb4, 0); in offb_blank()
227 out_8(par->cmap_adr + 0xb0, i); in offb_blank()
228 out_le32(par->cmap_adr + 0xb4, 0); in offb_blank()
231 out_le32(((unsigned __iomem *) par->cmap_adr) + i, in offb_blank()
235 writel(1, par->cmap_adr + AVIVO_DC_LUT_RW_SELECT); in offb_blank()
236 writeb(i, par->cmap_adr + AVIVO_DC_LUT_RW_INDEX); in offb_blank()
237 writel(0, par->cmap_adr + AVIVO_DC_LUT_30_COLOR); in offb_blank()
238 writel(0, par->cmap_adr + AVIVO_DC_LUT_RW_SELECT); in offb_blank()
239 writeb(i, par->cmap_adr + AVIVO_DC_LUT_RW_INDEX); in offb_blank()
240 writel(0, par->cmap_adr + AVIVO_DC_LUT_30_COLOR); in offb_blank()
244 fb_set_cmap(&info->cmap, info); in offb_blank()
250 struct offb_par *par = (struct offb_par *) info->par; in offb_set_par()
253 if (par->cmap_type == cmap_avivo) { in offb_set_par()
254 writel(0, par->cmap_adr + AVIVO_DC_LUTA_CONTROL); in offb_set_par()
255 writel(0, par->cmap_adr + AVIVO_DC_LUTA_BLACK_OFFSET_BLUE); in offb_set_par()
256 writel(0, par->cmap_adr + AVIVO_DC_LUTA_BLACK_OFFSET_GREEN); in offb_set_par()
257 writel(0, par->cmap_adr + AVIVO_DC_LUTA_BLACK_OFFSET_RED); in offb_set_par()
258 writel(0x0000ffff, par->cmap_adr + AVIVO_DC_LUTA_WHITE_OFFSET_BLUE); in offb_set_par()
259 writel(0x0000ffff, par->cmap_adr + AVIVO_DC_LUTA_WHITE_OFFSET_GREEN); in offb_set_par()
260 writel(0x0000ffff, par->cmap_adr + AVIVO_DC_LUTA_WHITE_OFFSET_RED); in offb_set_par()
261 writel(0, par->cmap_adr + AVIVO_DC_LUTB_CONTROL); in offb_set_par()
262 writel(0, par->cmap_adr + AVIVO_DC_LUTB_BLACK_OFFSET_BLUE); in offb_set_par()
263 writel(0, par->cmap_adr + AVIVO_DC_LUTB_BLACK_OFFSET_GREEN); in offb_set_par()
264 writel(0, par->cmap_adr + AVIVO_DC_LUTB_BLACK_OFFSET_RED); in offb_set_par()
265 writel(0x0000ffff, par->cmap_adr + AVIVO_DC_LUTB_WHITE_OFFSET_BLUE); in offb_set_par()
266 writel(0x0000ffff, par->cmap_adr + AVIVO_DC_LUTB_WHITE_OFFSET_GREEN); in offb_set_par()
267 writel(0x0000ffff, par->cmap_adr + AVIVO_DC_LUTB_WHITE_OFFSET_RED); in offb_set_par()
268 writel(1, par->cmap_adr + AVIVO_DC_LUT_RW_SELECT); in offb_set_par()
269 writel(0, par->cmap_adr + AVIVO_DC_LUT_RW_MODE); in offb_set_par()
270 writel(0x0000003f, par->cmap_adr + AVIVO_DC_LUT_WRITE_EN_MASK); in offb_set_par()
271 writel(0, par->cmap_adr + AVIVO_DC_LUT_RW_SELECT); in offb_set_par()
272 writel(0, par->cmap_adr + AVIVO_DC_LUT_RW_MODE); in offb_set_par()
273 writel(0x0000003f, par->cmap_adr + AVIVO_DC_LUT_WRITE_EN_MASK); in offb_set_par()
280 if (info->screen_base) in offb_destroy()
281 iounmap(info->screen_base); in offb_destroy()
282 release_mem_region(info->apertures->ranges[0].base, info->apertures->ranges[0].size); in offb_destroy()
283 fb_dealloc_cmap(&info->cmap); in offb_destroy()
323 struct offb_par *par = (struct offb_par *) info->par; in offb_init_palette_hacks()
326 par->cmap_adr = offb_map_reg(dp, 2, 0, 0x1fff); in offb_init_palette_hacks()
327 if (par->cmap_adr) in offb_init_palette_hacks()
328 par->cmap_type = cmap_r128; in offb_init_palette_hacks()
331 par->cmap_adr = offb_map_reg(dp, 2, 0, 0x1fff); in offb_init_palette_hacks()
332 if (par->cmap_adr) in offb_init_palette_hacks()
333 par->cmap_type = cmap_M3A; in offb_init_palette_hacks()
335 par->cmap_adr = offb_map_reg(dp, 2, 0, 0x1fff); in offb_init_palette_hacks()
336 if (par->cmap_adr) in offb_init_palette_hacks()
337 par->cmap_type = cmap_M3B; in offb_init_palette_hacks()
339 par->cmap_adr = offb_map_reg(dp, 1, 0, 0x1fff); in offb_init_palette_hacks()
340 if (par->cmap_adr) in offb_init_palette_hacks()
341 par->cmap_type = cmap_radeon; in offb_init_palette_hacks()
343 unsigned long base = address & 0xff000000UL; in offb_init_palette_hacks() local
344 par->cmap_adr = in offb_init_palette_hacks()
345 ioremap(base + 0x7ff000, 0x1000) + 0xcc0; in offb_init_palette_hacks()
346 par->cmap_data = par->cmap_adr + 1; in offb_init_palette_hacks()
347 par->cmap_type = cmap_simple; in offb_init_palette_hacks()
350 par->cmap_adr = offb_map_reg(dp, 0, 0x6000, 0x1000); in offb_init_palette_hacks()
351 if (par->cmap_adr) in offb_init_palette_hacks()
352 par->cmap_type = cmap_gxt2000; in offb_init_palette_hacks()
353 } else if (dp && !strncmp(name, "vga,Display-", 12)) { in offb_init_palette_hacks()
357 vid = of_get_property(pciparent, "vendor-id", NULL); in offb_init_palette_hacks()
358 did = of_get_property(pciparent, "device-id", NULL); in offb_init_palette_hacks()
363 par->cmap_adr = offb_map_reg(pciparent, 2, 0, 0x10000); in offb_init_palette_hacks()
364 if (par->cmap_adr) in offb_init_palette_hacks()
365 par->cmap_type = cmap_avivo; in offb_init_palette_hacks()
368 } else if (dp && of_device_is_compatible(dp, "qemu,std-vga")) { in offb_init_palette_hacks()
376 par->cmap_adr = ioremap(io_addr + 0x3c8, 2); in offb_init_palette_hacks()
377 if (par->cmap_adr) { in offb_init_palette_hacks()
378 par->cmap_type = cmap_simple; in offb_init_palette_hacks()
379 par->cmap_data = par->cmap_adr + 1; in offb_init_palette_hacks()
383 info->fix.visual = (par->cmap_type != cmap_unknown) ? in offb_init_palette_hacks()
418 fix = &info->fix; in offb_init_fb()
419 var = &info->var; in offb_init_fb()
420 info->par = par; in offb_init_fb()
422 strcpy(fix->id, "OFfb "); in offb_init_fb()
423 strncat(fix->id, name, sizeof(fix->id) - sizeof("OFfb ")); in offb_init_fb()
424 fix->id[sizeof(fix->id) - 1] = '\0'; in offb_init_fb()
426 var->xres = var->xres_virtual = width; in offb_init_fb()
427 var->yres = var->yres_virtual = height; in offb_init_fb()
428 fix->line_length = pitch; in offb_init_fb()
430 fix->smem_start = address; in offb_init_fb()
431 fix->smem_len = pitch * height; in offb_init_fb()
432 fix->type = FB_TYPE_PACKED_PIXELS; in offb_init_fb()
433 fix->type_aux = 0; in offb_init_fb()
435 par->cmap_type = cmap_unknown; in offb_init_fb()
439 fix->visual = FB_VISUAL_TRUECOLOR; in offb_init_fb()
441 var->xoffset = var->yoffset = 0; in offb_init_fb()
444 var->bits_per_pixel = 8; in offb_init_fb()
445 var->red.offset = 0; in offb_init_fb()
446 var->red.length = 8; in offb_init_fb()
447 var->green.offset = 0; in offb_init_fb()
448 var->green.length = 8; in offb_init_fb()
449 var->blue.offset = 0; in offb_init_fb()
450 var->blue.length = 8; in offb_init_fb()
451 var->transp.offset = 0; in offb_init_fb()
452 var->transp.length = 0; in offb_init_fb()
455 var->bits_per_pixel = 16; in offb_init_fb()
456 var->red.offset = 10; in offb_init_fb()
457 var->red.length = 5; in offb_init_fb()
458 var->green.offset = 5; in offb_init_fb()
459 var->green.length = 5; in offb_init_fb()
460 var->blue.offset = 0; in offb_init_fb()
461 var->blue.length = 5; in offb_init_fb()
462 var->transp.offset = 0; in offb_init_fb()
463 var->transp.length = 0; in offb_init_fb()
466 var->bits_per_pixel = 16; in offb_init_fb()
467 var->red.offset = 11; in offb_init_fb()
468 var->red.length = 5; in offb_init_fb()
469 var->green.offset = 5; in offb_init_fb()
470 var->green.length = 6; in offb_init_fb()
471 var->blue.offset = 0; in offb_init_fb()
472 var->blue.length = 5; in offb_init_fb()
473 var->transp.offset = 0; in offb_init_fb()
474 var->transp.length = 0; in offb_init_fb()
477 var->bits_per_pixel = 32; in offb_init_fb()
478 var->red.offset = 16; in offb_init_fb()
479 var->red.length = 8; in offb_init_fb()
480 var->green.offset = 8; in offb_init_fb()
481 var->green.length = 8; in offb_init_fb()
482 var->blue.offset = 0; in offb_init_fb()
483 var->blue.length = 8; in offb_init_fb()
484 var->transp.offset = 24; in offb_init_fb()
485 var->transp.length = 8; in offb_init_fb()
488 var->red.msb_right = var->green.msb_right = var->blue.msb_right = in offb_init_fb()
489 var->transp.msb_right = 0; in offb_init_fb()
490 var->grayscale = 0; in offb_init_fb()
491 var->nonstd = 0; in offb_init_fb()
492 var->activate = 0; in offb_init_fb()
493 var->height = var->width = -1; in offb_init_fb()
494 var->pixclock = 10000; in offb_init_fb()
495 var->left_margin = var->right_margin = 16; in offb_init_fb()
496 var->upper_margin = var->lower_margin = 16; in offb_init_fb()
497 var->hsync_len = var->vsync_len = 8; in offb_init_fb()
498 var->sync = 0; in offb_init_fb()
499 var->vmode = FB_VMODE_NONINTERLACED; in offb_init_fb()
502 info->apertures = alloc_apertures(1); in offb_init_fb()
503 if (!info->apertures) in offb_init_fb()
505 info->apertures->ranges[0].base = address; in offb_init_fb()
506 info->apertures->ranges[0].size = fix->smem_len; in offb_init_fb()
508 info->fbops = &offb_ops; in offb_init_fb()
509 info->screen_base = ioremap(address, fix->smem_len); in offb_init_fb()
510 info->pseudo_palette = (void *) (info + 1); in offb_init_fb()
511 info->flags = FBINFO_DEFAULT | FBINFO_MISC_FIRMWARE | foreign_endian; in offb_init_fb()
513 fb_alloc_cmap(&info->cmap, 256, 0); in offb_init_fb()
522 fb_dealloc_cmap(&info->cmap); in offb_init_fb()
523 iounmap(info->screen_base); in offb_init_fb()
525 iounmap(par->cmap_adr); in offb_init_fb()
526 par->cmap_adr = NULL; in offb_init_fb()
544 if (of_get_property(dp, "little-endian", NULL)) in offb_init_nodriver()
547 if (of_get_property(dp, "big-endian", NULL)) in offb_init_nodriver()
551 pp = of_get_property(dp, "linux,bootx-depth", &len); in offb_init_nodriver()
557 pp = of_get_property(dp, "linux,bootx-width", &len); in offb_init_nodriver()
563 pp = of_get_property(dp, "linux,bootx-height", &len); in offb_init_nodriver()
569 pp = of_get_property(dp, "linux,bootx-linebytes", &len); in offb_init_nodriver()
589 up = of_get_property(dp, "linux,bootx-addr", &len); in offb_init_nodriver()
634 vidp = of_get_property(dp, "vendor-id", NULL); in offb_init_nodriver()
635 didp = of_get_property(dp, "device-id", NULL); in offb_init_nodriver()
645 if (strcmp(dp->name, "valkyrie") == 0) in offb_init_nodriver()
647 offb_init_fb(no_real_node ? "bootx" : dp->name, in offb_init_nodriver()
658 return -ENODEV; in offb_init()
661 if (of_get_property(of_chosen, "linux,bootx-noscreen", NULL) != NULL) { in offb_init()
673 of_get_property(dp, "linux,boot-display", NULL)) { in offb_init()