On the BCM2711, we currently call the vc4_bo_cache_init() and vc4_gem_init() functions. These functions initialize the BO and GEM backends. However, this code was initially created to accomodate the requirements of the GPU on the older SoCs, while the BCM2711 has a separate driver for it. So let's just skip these calls when we're on a newer hardware.
Unified · Split
| @@ -285,19 +285,23 @@ static int vc4_drm_bind(struct device *dev) · 284 unmodified lines | |||
| 285 | platform_set_drvdata(pdev, drm); | 285 | platform_set_drvdata(pdev, drm); |
| 286 | INIT_LIST_HEAD(&vc4->debugfs_list); | 286 | INIT_LIST_HEAD(&vc4->debugfs_list); |
| 287 | 287 | ||
| 288 | mutex_init(&vc4->bin_bo_lock); | 288 | if (!is_vc5) { |
| 289 | mutex_init(&vc4->bin_bo_lock); | ||
| 289 | 290 | ||
| 290 | ret = vc4_bo_cache_init(drm); | 291 | ret = vc4_bo_cache_init(drm); |
| 291 | if (ret) | 292 | if (ret) |
| 292 | return ret; | 293 | return ret; |
| 294 | } | ||
| 293 | 295 | ||
| 294 | ret = drmm_mode_config_init(drm); | 296 | ret = drmm_mode_config_init(drm); |
| 295 | if (ret) | 297 | if (ret) |
| 296 | return ret; | 298 | return ret; |
| 297 | 299 | ||
| 298 | ret = vc4_gem_init(drm); | 300 | if (!is_vc5) { |
| 299 | if (ret) | 301 | ret = vc4_gem_init(drm); |
| 300 | return ret; | 302 | if (ret) |
| 303 | return ret; | ||
| 304 | } | ||
| 301 | 305 | ||
| 302 | node = of_find_compatible_node(NULL, NULL, "raspberrypi,bcm2835-firmware"); | 306 | node = of_find_compatible_node(NULL, NULL, "raspberrypi,bcm2835-firmware"); |
| 303 | if (node) { | 307 | if (node) { |