Lines Matching +full:device +full:- +full:width
1 // SPDX-License-Identifier: GPL-2.0
3 * Framebuffer driver for mdpy (mediated virtual pci display device).
5 * See mdpy-defs.h for device specs
26 #include "mdpy-defs.h"
29 .id = "mdpy-fb",
36 .height = -1,
37 .width = -1,
61 u32 *pal = info->pseudo_palette; in mdpy_fb_setcolreg()
62 u32 cr = red >> (16 - info->var.red.length); in mdpy_fb_setcolreg()
63 u32 cg = green >> (16 - info->var.green.length); in mdpy_fb_setcolreg()
64 u32 cb = blue >> (16 - info->var.blue.length); in mdpy_fb_setcolreg()
68 return -EINVAL; in mdpy_fb_setcolreg()
70 value = (cr << info->var.red.offset) | in mdpy_fb_setcolreg()
71 (cg << info->var.green.offset) | in mdpy_fb_setcolreg()
72 (cb << info->var.blue.offset); in mdpy_fb_setcolreg()
73 if (info->var.transp.length > 0) { in mdpy_fb_setcolreg()
74 mask = (1 << info->var.transp.length) - 1; in mdpy_fb_setcolreg()
75 mask <<= info->var.transp.offset; in mdpy_fb_setcolreg()
85 if (info->screen_base) in mdpy_fb_destroy()
86 iounmap(info->screen_base); in mdpy_fb_destroy()
101 u32 format, width, height; in mdpy_fb_probe() local
108 ret = pci_request_regions(pdev, "mdpy-fb"); in mdpy_fb_probe()
113 pci_read_config_dword(pdev, MDPY_WIDTH_OFFSET, &width); in mdpy_fb_probe()
118 ret = -EINVAL; in mdpy_fb_probe()
121 if (width < 100 || width > 10000) { in mdpy_fb_probe()
122 pci_err(pdev, "width (%d) out of range\n", width); in mdpy_fb_probe()
123 ret = -EINVAL; in mdpy_fb_probe()
128 ret = -EINVAL; in mdpy_fb_probe()
132 width, height); in mdpy_fb_probe()
134 info = framebuffer_alloc(sizeof(struct mdpy_fb_par), &pdev->dev); in mdpy_fb_probe()
136 ret = -ENOMEM; in mdpy_fb_probe()
140 par = info->par; in mdpy_fb_probe()
142 info->fix = mdpy_fb_fix; in mdpy_fb_probe()
143 info->fix.smem_start = pci_resource_start(pdev, 0); in mdpy_fb_probe()
144 info->fix.smem_len = pci_resource_len(pdev, 0); in mdpy_fb_probe()
145 info->fix.line_length = width * 4; in mdpy_fb_probe()
147 info->var = mdpy_fb_var; in mdpy_fb_probe()
148 info->var.xres = width; in mdpy_fb_probe()
149 info->var.yres = height; in mdpy_fb_probe()
150 info->var.xres_virtual = width; in mdpy_fb_probe()
151 info->var.yres_virtual = height; in mdpy_fb_probe()
153 info->screen_size = info->fix.smem_len; in mdpy_fb_probe()
154 info->screen_base = ioremap(info->fix.smem_start, in mdpy_fb_probe()
155 info->screen_size); in mdpy_fb_probe()
156 if (!info->screen_base) { in mdpy_fb_probe()
158 ret = -EIO; in mdpy_fb_probe()
162 info->fbops = &mdpy_fb_ops; in mdpy_fb_probe()
163 info->pseudo_palette = par->palette; in mdpy_fb_probe()
167 pci_err(pdev, "mdpy-fb device register failed: %d\n", ret); in mdpy_fb_probe()
171 pci_info(pdev, "fb%d registered\n", info->node); in mdpy_fb_probe()
175 iounmap(info->screen_base); in mdpy_fb_probe()
194 iounmap(info->screen_base); in mdpy_fb_remove()
203 .device = MDPY_PCI_DEVICE_ID,
212 .name = "mdpy-fb",
232 MODULE_DESCRIPTION("Framebuffer driver for mdpy (mediated virtual pci display device)");