void __init exynos_firmware_init(void) { struct device_node *nd; const __be32 *addr; nd = of_find_compatible_node(NULL, NULL, "samsung,secure-firmware"); if (!nd) return; addr = of_get_address(nd, 0, NULL, NULL); if (!addr) { pr_err("%s: No address specified.\n", __func__); return; } pr_info("Running under secure firmware.\n"); register_firmware_ops(&exynos_firmware_ops); /* * Exynos 4 SoCs (based on Cortex A9 and equipped with L2C-310), * running under secure firmware, require certain registers of L2 * cache controller to be written in secure mode. Here .write_sec * callback is provided to perform necessary SMC calls. */ if (IS_ENABLED(CONFIG_CACHE_L2X0) && read_cpuid_part() == ARM_CPU_PART_CORTEX_A9) { outer_cache.write_sec = exynos_l2_write_sec; outer_cache.configure = exynos_l2_configure; } }
void __init exynos_firmware_init(void) { struct device_node *nd; const __be32 *addr; nd = of_find_compatible_node(NULL, NULL, "samsung,secure-firmware"); if (!nd) return; addr = of_get_address(nd, 0, NULL, NULL); if (!addr) { pr_err("%s: No address specified.\n", __func__); return; } pr_info("Running under secure firmware.\n"); register_firmware_ops(&exynos_firmware_ops); }
void __init sunxi_firmware_init(void) { register_firmware_ops(&sunxi_firmware_ops); }