| .. | .. |
|---|
| 185 | 185 | exynos_smc(SMC_CMD_L2X0SETUP2, regs->pwr_ctrl, regs->aux_ctrl, 0); |
|---|
| 186 | 186 | } |
|---|
| 187 | 187 | |
|---|
| 188 | | -void __init exynos_firmware_init(void) |
|---|
| 188 | +bool __init exynos_secure_firmware_available(void) |
|---|
| 189 | 189 | { |
|---|
| 190 | 190 | struct device_node *nd; |
|---|
| 191 | 191 | const __be32 *addr; |
|---|
| .. | .. |
|---|
| 193 | 193 | nd = of_find_compatible_node(NULL, NULL, |
|---|
| 194 | 194 | "samsung,secure-firmware"); |
|---|
| 195 | 195 | if (!nd) |
|---|
| 196 | | - return; |
|---|
| 196 | + return false; |
|---|
| 197 | 197 | |
|---|
| 198 | 198 | addr = of_get_address(nd, 0, NULL, NULL); |
|---|
| 199 | 199 | of_node_put(nd); |
|---|
| 200 | 200 | if (!addr) { |
|---|
| 201 | 201 | pr_err("%s: No address specified.\n", __func__); |
|---|
| 202 | | - return; |
|---|
| 202 | + return false; |
|---|
| 203 | 203 | } |
|---|
| 204 | 204 | |
|---|
| 205 | + return true; |
|---|
| 206 | +} |
|---|
| 207 | + |
|---|
| 208 | +void __init exynos_firmware_init(void) |
|---|
| 209 | +{ |
|---|
| 210 | + if (!exynos_secure_firmware_available()) |
|---|
| 211 | + return; |
|---|
| 212 | + |
|---|
| 205 | 213 | pr_info("Running under secure firmware.\n"); |
|---|
| 206 | 214 | |
|---|
| 207 | 215 | register_firmware_ops(&exynos_firmware_ops); |
|---|