diff mbox

[2/2] RX-51: Add support for OMAP3 ROM Random Number Generator

Message ID 1379534757-20870-3-git-send-email-pali.rohar@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Pali Rohár Sept. 18, 2013, 8:05 p.m. UTC
Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
---
 arch/arm/mach-omap2/board-rx51.c  |   10 ++++++++++
 arch/arm/mach-omap2/omap-secure.c |   11 +++++++++++
 arch/arm/mach-omap2/omap-secure.h |    1 +
 3 files changed, 22 insertions(+)

Comments

Tony Lindgren Sept. 18, 2013, 8:39 p.m. UTC | #1
* Pali Rohár <pali.rohar@gmail.com> [130918 13:15]:
> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>

Description please, then also add a note that this makes
sense to do as a platform device at least until we have
some ARM generic way to deal with SMC calls.

>  arch/arm/mach-omap2/board-rx51.c  |   10 ++++++++++
>  arch/arm/mach-omap2/omap-secure.c |   11 +++++++++++
>  arch/arm/mach-omap2/omap-secure.h |    1 +
>  3 files changed, 22 insertions(+)
> 
> diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c
> index db168c9..c2a3e39 100644
> --- a/arch/arm/mach-omap2/board-rx51.c
> +++ b/arch/arm/mach-omap2/board-rx51.c
> @@ -93,6 +93,14 @@ static struct omap_musb_board_data musb_board_data = {
>  	.power			= 0,
>  };
>  
> +static struct platform_device omap3_rom_rng_device = {
> +	.name		= "omap_rng",
> +	.id		= -1,
> +	.dev	= {
> +		.platform_data	= rx51_secure_rng_call,
> +	},
> +};
> +
>  static void __init rx51_init(void)
>  {
>  	struct omap_sdrc_params *sdrc_params;
> @@ -113,6 +121,8 @@ static void __init rx51_init(void)
>  		/* set IBE to 1 */
>  		rx51_secure_update_aux_cr(BIT(6), 0);
>  #endif
> +		pr_info("RX-51: Registring OMAP3 HWRNG device\n");
> +		platform_device_register(&omap3_rom_rng_device);
>  	}
>  
>  	/* Ensure SDRC pins are mux'd for self-refresh */

Maybe this should be in board-rx51-peripherals.c instead?

That way we can initialize the legacy platform devices
from there for DT based booting too and don't have to
move code around when moving to DT based booting.

Regards,

Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c
index db168c9..c2a3e39 100644
--- a/arch/arm/mach-omap2/board-rx51.c
+++ b/arch/arm/mach-omap2/board-rx51.c
@@ -93,6 +93,14 @@  static struct omap_musb_board_data musb_board_data = {
 	.power			= 0,
 };
 
+static struct platform_device omap3_rom_rng_device = {
+	.name		= "omap_rng",
+	.id		= -1,
+	.dev	= {
+		.platform_data	= rx51_secure_rng_call,
+	},
+};
+
 static void __init rx51_init(void)
 {
 	struct omap_sdrc_params *sdrc_params;
@@ -113,6 +121,8 @@  static void __init rx51_init(void)
 		/* set IBE to 1 */
 		rx51_secure_update_aux_cr(BIT(6), 0);
 #endif
+		pr_info("RX-51: Registring OMAP3 HWRNG device\n");
+		platform_device_register(&omap3_rom_rng_device);
 	}
 
 	/* Ensure SDRC pins are mux'd for self-refresh */
diff --git a/arch/arm/mach-omap2/omap-secure.c b/arch/arm/mach-omap2/omap-secure.c
index 146a7c4..5ac122e 100644
--- a/arch/arm/mach-omap2/omap-secure.c
+++ b/arch/arm/mach-omap2/omap-secure.c
@@ -135,3 +135,14 @@  u32 rx51_secure_update_aux_cr(u32 set_bits, u32 clear_bits)
 				      FLAG_START_CRITICAL,
 				      1, acr, 0, 0, 0);
 }
+
+/**
+ * rx51_secure_rng_call: Routine for HW random generator
+ */
+u32 rx51_secure_rng_call(u32 ptr, u32 count, u32 flag)
+{
+	return rx51_secure_dispatcher(RX51_PPA_HWRNG,
+				      0,
+				      NO_FLAG,
+				      3, ptr, count, flag, 0);
+}
diff --git a/arch/arm/mach-omap2/omap-secure.h b/arch/arm/mach-omap2/omap-secure.h
index 51b59c6..f6cabb0 100644
--- a/arch/arm/mach-omap2/omap-secure.h
+++ b/arch/arm/mach-omap2/omap-secure.h
@@ -65,6 +65,7 @@  extern int omap_secure_ram_reserve_memblock(void);
 extern u32 rx51_secure_dispatcher(u32 idx, u32 process, u32 flag, u32 nargs,
 				  u32 arg1, u32 arg2, u32 arg3, u32 arg4);
 extern u32 rx51_secure_update_aux_cr(u32 set_bits, u32 clear_bits);
+extern u32 rx51_secure_rng_call(u32 ptr, u32 count, u32 flag);
 
 #ifdef CONFIG_OMAP4_ERRATA_I688
 extern int omap_barrier_reserve_memblock(void);