Lines Matching +full:memory +full:- +full:width
1 // SPDX-License-Identifier: GPL-2.0-only
152 int width, height, stride; in efidrm_device_create() local
168 dpy = dev_get_platdata(&pdev->dev); in efidrm_device_create()
170 return ERR_PTR(-ENODEV); in efidrm_device_create()
171 si = &dpy->screen; in efidrm_device_create()
174 return ERR_PTR(-ENODEV); in efidrm_device_create()
180 efi = devm_drm_dev_alloc(&pdev->dev, drv, struct efidrm_device, sysfb.dev); in efidrm_device_create()
183 sysfb = &efi->sysfb; in efidrm_device_create()
184 dev = &sysfb->dev; in efidrm_device_create()
193 return ERR_PTR(-EINVAL); in efidrm_device_create()
194 width = drm_sysfb_get_width_si(dev, si); in efidrm_device_create()
195 if (width < 0) in efidrm_device_create()
196 return ERR_PTR(width); in efidrm_device_create()
202 return ERR_PTR(-EINVAL); in efidrm_device_create()
203 stride = drm_sysfb_get_stride_si(dev, si, format, width, height, resource_size(res)); in efidrm_device_create()
208 return ERR_PTR(-EINVAL); in efidrm_device_create()
211 &format->format, width, height, stride); in efidrm_device_create()
214 if (drm_edid_header_is_valid(dpy->edid.dummy) == 8) in efidrm_device_create()
215 sysfb->edid = dpy->edid.dummy; in efidrm_device_create()
217 sysfb->fb_mode = drm_sysfb_mode(width, height, 0, 0); in efidrm_device_create()
218 sysfb->fb_format = format; in efidrm_device_create()
219 sysfb->fb_pitch = stride; in efidrm_device_create()
222 * Memory management in efidrm_device_create()
225 ret = devm_aperture_acquire_for_platform_device(pdev, res->start, vsize); in efidrm_device_create()
227 drm_err(dev, "could not acquire memory range %pr: %d\n", res, ret); in efidrm_device_create()
231 drm_dbg(dev, "using I/O memory framebuffer at %pr\n", res); in efidrm_device_create()
233 mem = devm_request_mem_region(&pdev->dev, res->start, vsize, drv->name); in efidrm_device_create()
238 * the I/O-memory resource as-is and try to map that instead. in efidrm_device_create()
240 drm_warn(dev, "could not acquire memory region %pr\n", res); in efidrm_device_create()
244 mem_flags = efidrm_get_mem_flags(dev, res->start, vsize); in efidrm_device_create()
247 void __iomem *screen_base = devm_ioremap_wc(&pdev->dev, mem->start, in efidrm_device_create()
251 return ERR_PTR(-ENXIO); in efidrm_device_create()
252 iosys_map_set_vaddr_iomem(&sysfb->fb_addr, screen_base); in efidrm_device_create()
254 void __iomem *screen_base = devm_ioremap(&pdev->dev, mem->start, in efidrm_device_create()
258 return ERR_PTR(-ENXIO); in efidrm_device_create()
259 iosys_map_set_vaddr_iomem(&sysfb->fb_addr, screen_base); in efidrm_device_create()
261 void *screen_base = devm_memremap(&pdev->dev, mem->start, in efidrm_device_create()
266 iosys_map_set_vaddr(&sysfb->fb_addr, screen_base); in efidrm_device_create()
268 void *screen_base = devm_memremap(&pdev->dev, mem->start, in efidrm_device_create()
273 iosys_map_set_vaddr(&sysfb->fb_addr, screen_base); in efidrm_device_create()
276 return ERR_PTR(-EINVAL); in efidrm_device_create()
287 max_width = max_t(unsigned long, width, DRM_SHADOW_PLANE_MAX_WIDTH); in efidrm_device_create()
290 dev->mode_config.min_width = width; in efidrm_device_create()
291 dev->mode_config.max_width = max_width; in efidrm_device_create()
292 dev->mode_config.min_height = height; in efidrm_device_create()
293 dev->mode_config.max_height = max_height; in efidrm_device_create()
294 dev->mode_config.preferred_depth = format->depth; in efidrm_device_create()
295 dev->mode_config.funcs = &efidrm_mode_config_funcs; in efidrm_device_create()
299 nformats = drm_sysfb_build_fourcc_list(dev, &format->format, 1, in efidrm_device_create()
300 efi->formats, ARRAY_SIZE(efi->formats)); in efidrm_device_create()
302 primary_plane = &efi->primary_plane; in efidrm_device_create()
304 efi->formats, nformats, in efidrm_device_create()
314 crtc = &efi->crtc; in efidrm_device_create()
323 encoder = &efi->encoder; in efidrm_device_create()
328 encoder->possible_crtcs = drm_crtc_mask(crtc); in efidrm_device_create()
332 connector = &efi->connector; in efidrm_device_create()
340 width, height); in efidrm_device_create()
341 if (sysfb->edid) in efidrm_device_create()
384 sysfb = &efi->sysfb; in efidrm_probe()
385 dev = &sysfb->dev; in efidrm_probe()
391 drm_client_setup(dev, sysfb->fb_format); in efidrm_probe()
405 .name = "efi-framebuffer",