Lines Matching +full:display +full:- +full:depth

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
100 unsigned int depth; member
114 {"broadcom,bcm2835-fb", 1},
115 {"brcm,bcm2708-fb", 1},
129 if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) in bcm_fb_probe()
164 sc->fb_addr = (intptr_t)pmap_mapdev(fb.base, fb.size); in bcm_fb_attach()
165 sc->fb_paddr = fb.base; in bcm_fb_attach()
166 sc->fb_size = fb.size; in bcm_fb_attach()
167 sc->depth = fb.bpp; in bcm_fb_attach()
168 sc->stride = fb.pitch; in bcm_fb_attach()
169 sc->width = fb.xres; in bcm_fb_attach()
170 sc->height = fb.yres; in bcm_fb_attach()
171 bcmfb_update_margins(&sc->va); in bcm_fb_attach()
183 sc->fbswap, fb.pitch, fb.base, fb.size); in bcm_fb_attach()
322 video_adapter_t* adp = scp->sc->adp; in bcmrend_draw()
327 vidd_puts(adp, from, (uint16_t*)sc_vtb_pointer(&scp->vtb, from), count); in bcmrend_draw()
330 for (i = count; i-- > 0; ++from) { in bcmrend_draw()
331 c = sc_vtb_getc(&scp->vtb, from); in bcmrend_draw()
332 a = sc_vtb_geta(&scp->vtb, from) >> 8; in bcmrend_draw()
351 adp = scp->sc->adp; in bcmrend_draw_cursor()
354 if (scp->curs_attr.height <= 0) in bcmrend_draw_cursor()
357 if (sc->fb_addr == 0) in bcmrend_draw_cursor()
360 if (off >= adp->va_info.vi_width * adp->va_info.vi_height) in bcmrend_draw_cursor()
364 row = (off / adp->va_info.vi_width) * adp->va_info.vi_cheight; in bcmrend_draw_cursor()
365 col = (off % adp->va_info.vi_width) * adp->va_info.vi_cwidth; in bcmrend_draw_cursor()
367 addr = (uint8_t *)sc->fb_addr in bcmrend_draw_cursor()
368 + (row + sc->ymargin)*(sc->stride) in bcmrend_draw_cursor()
369 + (sc->depth/8) * (col + sc->xmargin); in bcmrend_draw_cursor()
371 bytes = sc->depth / 8; in bcmrend_draw_cursor()
373 for (i = 0; i < adp->va_info.vi_cheight; i++) { in bcmrend_draw_cursor()
374 for (j = 0; j < adp->va_info.vi_cwidth; j++) { in bcmrend_draw_cursor()
375 switch (sc->depth) { in bcmrend_draw_cursor()
389 addr += sc->stride; in bcmrend_draw_cursor()
406 vidd_putm(scp->sc->adp, x, y, mouse_pointer, 0xffffffff, 16, 8); in bcmrend_draw_mouse()
422 vi = &adp->va_info; in bcmfb_update_margins()
424 sc->xmargin = (sc->width - (vi->vi_width * vi->vi_cwidth)) / 2; in bcmfb_update_margins()
425 sc->ymargin = (sc->height - (vi->vi_height * vi->vi_cheight)) / 2; in bcmfb_update_margins()
433 phandle_t chosen, display, root; in bcmfb_configure() local
437 if (sc->initialized) in bcmfb_configure()
440 sc->width = 0; in bcmfb_configure()
441 sc->height = 0; in bcmfb_configure()
446 * to fetch data from FDT bootargs, FDT display data and in bcmfb_configure()
450 if (chosen != -1 && in bcmfb_configure()
458 sc->width = (unsigned int)strtol(v, NULL, 0); in bcmfb_configure()
461 sc->height = (unsigned int)strtol(v, NULL, 0); in bcmfb_configure()
465 sc->fbswap = 1; in bcmfb_configure()
470 if ((root != -1) && in bcmfb_configure()
471 (display = fdt_find_compatible(root, "broadcom,bcm2835-fb", 1))) { in bcmfb_configure()
472 if (sc->width == 0) { in bcmfb_configure()
473 if ((OF_getencprop(display, "broadcom,width", in bcmfb_configure()
475 sc->width = cell; in bcmfb_configure()
478 if (sc->height == 0) { in bcmfb_configure()
479 if ((OF_getencprop(display, "broadcom,height", in bcmfb_configure()
481 sc->height = cell; in bcmfb_configure()
485 if (sc->width == 0) in bcmfb_configure()
486 sc->width = FB_WIDTH; in bcmfb_configure()
487 if (sc->height == 0) in bcmfb_configure()
488 sc->height = FB_HEIGHT; in bcmfb_configure()
490 bcmfb_init(0, &sc->va, 0); in bcmfb_configure()
491 sc->initialized = 1; in bcmfb_configure()
510 vi = &adp->va_info; in bcmfb_init()
512 vid_init_struct(adp, "bcmfb", -1, unit); in bcmfb_init()
514 sc->font = dflt_font_16; in bcmfb_init()
515 vi->vi_cheight = BCMFB_FONT_HEIGHT; in bcmfb_init()
516 vi->vi_cwidth = BCMFB_FONT_WIDTH; in bcmfb_init()
517 vi->vi_width = sc->width / vi->vi_cwidth; in bcmfb_init()
518 vi->vi_height = sc->height / vi->vi_cheight; in bcmfb_init()
523 if (vi->vi_width > COL) in bcmfb_init()
524 vi->vi_width = COL; in bcmfb_init()
525 if (vi->vi_height > ROW) in bcmfb_init()
526 vi->vi_height = ROW; in bcmfb_init()
528 sc->xmargin = (sc->width - (vi->vi_width * vi->vi_cwidth)) / 2; in bcmfb_init()
529 sc->ymargin = (sc->height - (vi->vi_height * vi->vi_cheight)) / 2; in bcmfb_init()
531 adp->va_window = (vm_offset_t) bcmfb_static_window; in bcmfb_init()
532 adp->va_flags |= V_ADP_FONT /* | V_ADP_COLOR | V_ADP_MODECHANGE */; in bcmfb_init()
534 vid_register(&sc->va); in bcmfb_init()
542 bcopy(&adp->va_info, info, sizeof(*info)); in bcmfb_get_info()
572 sc->font = data; in bcmfb_load_font()
647 if (sc && sc->fb_addr) in bcmfb_blank_display()
648 memset((void*)sc->fb_addr, 0, sc->fb_size); in bcmfb_blank_display()
665 if (offset < sc->stride*sc->height) { in bcmfb_mmap()
666 *paddr = sc->fb_paddr + offset; in bcmfb_mmap()
684 fb->fb_type = FBTYPE_PCIMISC; in bcmfb_ioctl()
685 fb->fb_height = sc->height; in bcmfb_ioctl()
686 fb->fb_width = sc->width; in bcmfb_ioctl()
687 fb->fb_depth = sc->depth; in bcmfb_ioctl()
688 if (sc->depth <= 1 || sc->depth > 8) in bcmfb_ioctl()
689 fb->fb_cmsize = 0; in bcmfb_ioctl()
691 fb->fb_cmsize = 1 << sc->depth; in bcmfb_ioctl()
692 fb->fb_size = sc->fb_size; in bcmfb_ioctl()
769 if (sc->fb_addr == 0) in bcmfb_putc()
772 row = (off / adp->va_info.vi_width) * adp->va_info.vi_cheight; in bcmfb_putc()
773 col = (off % adp->va_info.vi_width) * adp->va_info.vi_cwidth; in bcmfb_putc()
774 p = sc->font + c*BCMFB_FONT_HEIGHT; in bcmfb_putc()
775 addr = (uint8_t *)sc->fb_addr in bcmfb_putc()
776 + (row + sc->ymargin)*(sc->stride) in bcmfb_putc()
777 + (sc->depth/8) * (col + sc->xmargin); in bcmfb_putc()
782 bytes = sc->depth / 8; in bcmfb_putc()
784 for (j = 0, k = 7; j < 8; j++, k--) { in bcmfb_putc()
790 switch (sc->depth) { in bcmfb_putc()
793 if (sc->fbswap) { in bcmfb_putc()
808 if (sc->depth == 32) in bcmfb_putc()
824 addr += (sc->stride); in bcmfb_putc()