Commit d88d30e7 authored by Lokesh Vutla's avatar Lokesh Vutla Committed by Tony Lindgren
Browse files

ARM: AMx3xx: hwmod: Add data for RNG



Hardware random number generator is present in both AM33xx and AM43xx
SoC's. So moving the hwmod data to common data.

Signed-off-by: default avatarLokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: default avatarTero Kristo <t-kristo@ti.com>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent d7e4c128
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -68,6 +68,7 @@ extern struct omap_hwmod_ocp_if am33xx_l4_ls__uart6;
extern struct omap_hwmod_ocp_if am33xx_l3_main__ocmc;
extern struct omap_hwmod_ocp_if am33xx_l3_main__sha0;
extern struct omap_hwmod_ocp_if am33xx_l3_main__aes0;
extern struct omap_hwmod_ocp_if am33xx_l4_per__rng;

extern struct omap_hwmod am33xx_l3_main_hwmod;
extern struct omap_hwmod am33xx_l3_s_hwmod;
@@ -80,6 +81,7 @@ extern struct omap_hwmod am33xx_gfx_hwmod;
extern struct omap_hwmod am33xx_prcm_hwmod;
extern struct omap_hwmod am33xx_aes0_hwmod;
extern struct omap_hwmod am33xx_sha0_hwmod;
extern struct omap_hwmod am33xx_rng_hwmod;
extern struct omap_hwmod am33xx_ocmcram_hwmod;
extern struct omap_hwmod am33xx_smartreflex0_hwmod;
extern struct omap_hwmod am33xx_smartreflex1_hwmod;
+8 −0
Original line number Diff line number Diff line
@@ -547,3 +547,11 @@ struct omap_hwmod_ocp_if am33xx_l3_main__aes0 = {
	.addr		= am33xx_aes0_addrs,
	.user		= OCP_USER_MPU | OCP_USER_SDMA,
};

/* l4 per -> rng */
struct omap_hwmod_ocp_if am33xx_l4_per__rng = {
	.master		= &am33xx_l4_ls_hwmod,
	.slave		= &am33xx_rng_hwmod,
	.clk		= "rng_fck",
	.user		= OCP_USER_MPU,
};
+29 −0
Original line number Diff line number Diff line
@@ -268,6 +268,33 @@ struct omap_hwmod am33xx_sha0_hwmod = {
	},
};

/* rng */
static struct omap_hwmod_class_sysconfig am33xx_rng_sysc = {
	.rev_offs	= 0x1fe0,
	.sysc_offs	= 0x1fe4,
	.sysc_flags	= SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE,
	.idlemodes	= SIDLE_FORCE | SIDLE_NO,
	.sysc_fields	= &omap_hwmod_sysc_type1,
};

static struct omap_hwmod_class am33xx_rng_hwmod_class = {
	.name		= "rng",
	.sysc		= &am33xx_rng_sysc,
};

struct omap_hwmod am33xx_rng_hwmod = {
	.name		= "rng",
	.class		= &am33xx_rng_hwmod_class,
	.clkdm_name	= "l4ls_clkdm",
	.flags		= HWMOD_SWSUP_SIDLE,
	.main_clk	= "rng_fck",
	.prcm		= {
		.omap4	= {
			.modulemode	= MODULEMODE_SWCTRL,
		},
	},
};

/* ocmcram */
static struct omap_hwmod_class am33xx_ocmcram_hwmod_class = {
	.name = "ocmcram",
@@ -1315,6 +1342,7 @@ static void omap_hwmod_am33xx_clkctrl(void)
	CLKCTRL(am33xx_ocmcram_hwmod , AM33XX_CM_PER_OCMCRAM_CLKCTRL_OFFSET);
	CLKCTRL(am33xx_sha0_hwmod , AM33XX_CM_PER_SHA0_CLKCTRL_OFFSET);
	CLKCTRL(am33xx_aes0_hwmod , AM33XX_CM_PER_AES0_CLKCTRL_OFFSET);
	CLKCTRL(am33xx_rng_hwmod, AM33XX_CM_PER_RNG_CLKCTRL_OFFSET);
}

static void omap_hwmod_am33xx_rst(void)
@@ -1388,6 +1416,7 @@ static void omap_hwmod_am43xx_clkctrl(void)
	CLKCTRL(am33xx_ocmcram_hwmod , AM43XX_CM_PER_OCMCRAM_CLKCTRL_OFFSET);
	CLKCTRL(am33xx_sha0_hwmod , AM43XX_CM_PER_SHA0_CLKCTRL_OFFSET);
	CLKCTRL(am33xx_aes0_hwmod , AM43XX_CM_PER_AES0_CLKCTRL_OFFSET);
	CLKCTRL(am33xx_rng_hwmod, AM43XX_CM_PER_RNG_CLKCTRL_OFFSET);
}

static void omap_hwmod_am43xx_rst(void)
+0 −35
Original line number Diff line number Diff line
@@ -503,41 +503,6 @@ static struct omap_hwmod_ocp_if am33xx_l3_s__usbss = {
	.flags		= OCPIF_SWSUP_IDLE,
};

/* rng */
static struct omap_hwmod_class_sysconfig am33xx_rng_sysc = {
	.rev_offs	= 0x1fe0,
	.sysc_offs	= 0x1fe4,
	.sysc_flags	= SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE,
	.idlemodes	= SIDLE_FORCE | SIDLE_NO,
	.sysc_fields	= &omap_hwmod_sysc_type1,
};

static struct omap_hwmod_class am33xx_rng_hwmod_class = {
	.name		= "rng",
	.sysc		= &am33xx_rng_sysc,
};

static struct omap_hwmod am33xx_rng_hwmod = {
	.name		= "rng",
	.class		= &am33xx_rng_hwmod_class,
	.clkdm_name	= "l4ls_clkdm",
	.flags		= HWMOD_SWSUP_SIDLE,
	.main_clk	= "rng_fck",
	.prcm		= {
		.omap4	= {
			.clkctrl_offs	= AM33XX_CM_PER_RNG_CLKCTRL_OFFSET,
			.modulemode	= MODULEMODE_SWCTRL,
		},
	},
};

static struct omap_hwmod_ocp_if am33xx_l4_per__rng = {
	.master		= &am33xx_l4_ls_hwmod,
	.slave		= &am33xx_rng_hwmod,
	.clk		= "rng_fck",
	.user		= OCP_USER_MPU,
};

static struct omap_hwmod_ocp_if *am33xx_hwmod_ocp_ifs[] __initdata = {
	&am33xx_l3_main__emif,
	&am33xx_mpu__l3_main,
+1 −0
Original line number Diff line number Diff line
@@ -949,6 +949,7 @@ static struct omap_hwmod_ocp_if *am43xx_hwmod_ocp_ifs[] __initdata = {
	&am33xx_l4_per__i2c2,
	&am33xx_l4_per__i2c3,
	&am33xx_l4_per__mailbox,
	&am33xx_l4_per__rng,
	&am33xx_l4_ls__mcasp0,
	&am33xx_l4_ls__mcasp1,
	&am33xx_l4_ls__mmc0,
Loading