#else /* CONFIG_OF_LIBFDT */
-static inline int tegra_gpu_enable_node(void *blob, const char *gpupath)
+static inline int tegra_gpu_enable_node(void *blob, const char *compat)
{
return 0;
}
*/
int ft_system_setup(void *blob, bd_t *bd)
{
- const char *gpu_path =
-#if defined(CONFIG_TEGRA124) || defined(CONFIG_TEGRA210)
- "/gpu@0,57000000";
-#else
- NULL;
+ const char *gpu_compats[] = {
+#if defined(CONFIG_TEGRA124)
+ "nvidia,gk20a",
+#endif
+#if defined(CONFIG_TEGRA210)
+ "nvidia,gm20b",
#endif
+ };
+ int i, ret;
/* Enable GPU node if GPU setup has been performed */
- if (gpu_path != NULL)
- return tegra_gpu_enable_node(blob, gpu_path);
+ for (i = 0; i < ARRAY_SIZE(gpu_compats); i++) {
+ ret = tegra_gpu_enable_node(blob, gpu_compats[i]);
+ if (ret)
+ return ret;
+ }
return 0;
}
#if defined(CONFIG_OF_LIBFDT)
-int tegra_gpu_enable_node(void *blob, const char *gpupath)
+int tegra_gpu_enable_node(void *blob, const char *compat)
{
int offset;
- if (_configured) {
- offset = fdt_path_offset(blob, gpupath);
- if (offset > 0) {
- fdt_status_okay(blob, offset);
- debug("enabled GPU node %s\n", gpupath);
- }
+ if (!_configured)
+ return 0;
+
+ offset = fdt_node_offset_by_compatible(blob, -1, compat);
+ while (offset != -FDT_ERR_NOTFOUND) {
+ fdt_status_okay(blob, offset);
+ offset = fdt_node_offset_by_compatible(blob, offset, compat);
}
return 0;