Lines Matching +full:bcm2835 +full:- +full:hvs
1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (C) 2014-2015 Broadcom
11 * OpenGL ES 2.0-compatible 3D engine called V3D, and a highly
16 * compute shader-style jobs using the same shader processor as is
27 #include <linux/dma-mapping.h>
41 #include <soc/bcm2835/raspberrypi-firmware.h>
68 int min_pitch = DIV_ROUND_UP(args->width * args->bpp, 8); in vc4_dumb_fixup_args()
70 if (args->pitch < min_pitch) in vc4_dumb_fixup_args()
71 args->pitch = min_pitch; in vc4_dumb_fixup_args()
73 if (args->size < args->pitch * args->height) in vc4_dumb_fixup_args()
74 args->size = args->pitch * args->height; in vc4_dumb_fixup_args()
99 if (args->pad != 0) in vc4_get_param_ioctl()
100 return -EINVAL; in vc4_get_param_ioctl()
102 if (WARN_ON_ONCE(vc4->gen > VC4_GEN_4)) in vc4_get_param_ioctl()
103 return -ENODEV; in vc4_get_param_ioctl()
105 if (!vc4->v3d) in vc4_get_param_ioctl()
106 return -ENODEV; in vc4_get_param_ioctl()
108 switch (args->param) { in vc4_get_param_ioctl()
113 args->value = V3D_READ(V3D_IDENT0); in vc4_get_param_ioctl()
120 args->value = V3D_READ(V3D_IDENT1); in vc4_get_param_ioctl()
127 args->value = V3D_READ(V3D_IDENT2); in vc4_get_param_ioctl()
136 args->value = true; in vc4_get_param_ioctl()
139 DRM_DEBUG("Unknown parameter %d\n", args->param); in vc4_get_param_ioctl()
140 return -EINVAL; in vc4_get_param_ioctl()
151 if (WARN_ON_ONCE(vc4->gen > VC4_GEN_4)) in vc4_open()
152 return -ENODEV; in vc4_open()
156 return -ENOMEM; in vc4_open()
157 vc4file->dev = vc4; in vc4_open()
160 file->driver_priv = vc4file; in vc4_open()
167 struct vc4_file *vc4file = file->driver_priv; in vc4_close()
169 if (WARN_ON_ONCE(vc4->gen > VC4_GEN_4)) in vc4_close()
172 if (vc4file->bin_bo_used) in vc4_close()
258 struct device_driver *drv = &drivers[i]->driver; in vc4_match_add_drivers()
274 component_unbind_all(vc4->dev, &vc4->base); in vc4_component_unbind_all()
278 { .compatible = "brcm,bcm2711-hvs" },
279 { .compatible = "brcm,bcm2712-hvs" },
280 { .compatible = "brcm,bcm2835-hvs" },
281 { .compatible = "brcm,bcm2835-v3d" },
282 { .compatible = "brcm,cygnus-v3d" },
283 { .compatible = "brcm,vc4-v3d" },
299 dev->coherent_dma_mask = DMA_BIT_MASK(32); in vc4_drm_bind()
326 vc4->gen = gen; in vc4_drm_bind()
327 vc4->dev = dev; in vc4_drm_bind()
329 drm = &vc4->base; in vc4_drm_bind()
333 ret = drmm_mutex_init(drm, &vc4->bin_bo_lock); in vc4_drm_bind()
352 node = of_find_compatible_node(NULL, NULL, "raspberrypi,bcm2835-firmware"); in vc4_drm_bind()
358 ret = -EPROBE_DEFER; in vc4_drm_bind()
363 ret = aperture_remove_all_conflicting_devices(driver->name); in vc4_drm_bind()
426 * - The TXP driver needs to be bound before the PixelValves (CRTC)
427 * but after the HVS to set the possible_crtc field properly
428 * - The HDMI driver needs to be bound after the HVS so that we can
429 * lookup the HVS maximum core clock rate and figure out if we
446 struct device *dev = &pdev->dev; in vc4_platform_drm_probe()
456 component_master_del(&pdev->dev, &vc4_drm_ops); in vc4_platform_drm_remove()
465 { .compatible = "brcm,bcm2711-vc5", .data = (void *)VC4_GEN_5 },
467 { .compatible = "brcm,bcm2712-vc6", .data = (void *)VC4_GEN_6_C },
468 { .compatible = "brcm,bcm2835-vc4", .data = (void *)VC4_GEN_4 },
469 { .compatible = "brcm,cygnus-vc4", .data = (void *)VC4_GEN_4 },
479 .name = "vc4-drm",
489 return -ENODEV; in vc4_drm_register()
514 MODULE_ALIAS("platform:vc4-drm");
515 MODULE_SOFTDEP("pre: snd-soc-hdmi-codec");