Skip to content

Commit

Permalink
ARM: bcm: Make secure API call optional
Browse files Browse the repository at this point in the history
The current bcm_kona_smc_init function throws a BUG_ON if there's no SMC
device node defined in the device tree.

Since secure API access is optional depending the chip configuration,
fix this by allowing the rest of the code to run even if there's no SMC
device node defined

Signed-off-by: Christian Daudt <csd@broadcom.com>
Reviewed-by: Markus Mayer <markus.mayer@linaro.org>
  • Loading branch information
Christian Daudt committed Aug 20, 2013
1 parent aea237b commit 3a76b35
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 8 deletions.
9 changes: 6 additions & 3 deletions arch/arm/mach-bcm/bcm_kona_smc.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,14 @@ static const struct of_device_id bcm_kona_smc_ids[] __initconst = {
};

/* Map in the bounce area */
void __init bcm_kona_smc_init(void)
int __init bcm_kona_smc_init(void)
{
struct device_node *node;

/* Read buffer addr and size from the device tree node */
node = of_find_matching_node(NULL, bcm_kona_smc_ids);
BUG_ON(!node);
if (!node)
return -ENODEV;

/* Don't care about size or flags of the DT node */
bridge_data.buffer_addr =
Expand All @@ -60,7 +61,9 @@ void __init bcm_kona_smc_init(void)

bridge_data.initialized = 1;

pr_info("Secure API initialized!\n");
pr_info("Kona Secure API initialized\n");

return 0;
}

/* __bcm_kona_smc() should only run on CPU 0, with pre-emption disabled */
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-bcm/bcm_kona_smc.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
#define SSAPI_BRCM_START_VC_CORE 0x0E000008

#ifndef __ASSEMBLY__
extern void bcm_kona_smc_init(void);
extern int __init bcm_kona_smc_init(void);

extern unsigned bcm_kona_smc(unsigned service_id,
unsigned arg0,
Expand Down
10 changes: 6 additions & 4 deletions arch/arm/mach-bcm/board_bcm281xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,18 @@ static int __init kona_l2_cache_init(void)
if (!IS_ENABLED(CONFIG_CACHE_L2X0))
return 0;

if (bcm_kona_smc_init() < 0) {
pr_info("Kona secure API not available. Skipping L2 init\n");
return 0;
}

bcm_kona_smc(SSAPI_ENABLE_L2_CACHE, 0, 0, 0, 0);

/*
* The aux_val and aux_mask have no effect since L2 cache is already
* enabled. Pass 0s for aux_val and 1s for aux_mask for default value.
*/
l2x0_of_init(0, ~0);

return 0;
return l2x0_of_init(0, ~0);
}

static void bcm_board_setup_restart(void)
Expand All @@ -58,7 +61,6 @@ static void __init board_init(void)
of_platform_populate(NULL, of_default_bus_match_table, NULL,
&platform_bus);

bcm_kona_smc_init();
bcm_board_setup_restart();
kona_l2_cache_init();
}
Expand Down

0 comments on commit 3a76b35

Please sign in to comment.