crypto: updates to enable omap aes
authorDmitry Kasatkin <dmitry.kasatkin@nokia.com>
Fri, 3 Sep 2010 11:13:55 +0000 (19:13 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 3 Sep 2010 11:13:55 +0000 (19:13 +0800)
Signed-off-by: Dmitry Kasatkin <dmitry.kasatkin@nokia.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/arm/mach-omap2/clock2420_data.c
arch/arm/mach-omap2/clock2430_data.c
arch/arm/mach-omap2/clock3xxx_data.c
arch/arm/mach-omap2/devices.c

index 37d65d6..5f2066a 100644 (file)
@@ -1838,7 +1838,7 @@ static struct omap_clk omap2420_clks[] = {
        CLK(NULL,       "des_ick",      &des_ick,       CK_242X),
        CLK("omap-sham",        "ick",  &sha_ick,       CK_242X),
        CLK("omap_rng", "ick",          &rng_ick,       CK_242X),
-       CLK(NULL,       "aes_ick",      &aes_ick,       CK_242X),
+       CLK("omap-aes", "ick",  &aes_ick,       CK_242X),
        CLK(NULL,       "pka_ick",      &pka_ick,       CK_242X),
        CLK(NULL,       "usb_fck",      &usb_fck,       CK_242X),
        CLK("musb_hdrc",        "fck",  &osc_ck,        CK_242X),
index b33118f..701a171 100644 (file)
@@ -1926,7 +1926,7 @@ static struct omap_clk omap2430_clks[] = {
        CLK(NULL,       "des_ick",      &des_ick,       CK_243X),
        CLK("omap-sham",        "ick",  &sha_ick,       CK_243X),
        CLK("omap_rng", "ick",          &rng_ick,       CK_243X),
-       CLK(NULL,       "aes_ick",      &aes_ick,       CK_243X),
+       CLK("omap-aes", "ick",  &aes_ick,       CK_243X),
        CLK(NULL,       "pka_ick",      &pka_ick,       CK_243X),
        CLK(NULL,       "usb_fck",      &usb_fck,       CK_243X),
        CLK("musb_hdrc",        "ick",  &usbhs_ick,     CK_243X),
index d337441..e3e65d1 100644 (file)
@@ -3288,7 +3288,7 @@ static struct omap_clk omap3xxx_clks[] = {
        CLK(NULL,       "usbtll_ick",   &usbtll_ick,    CK_3430ES2 | CK_AM35XX),
        CLK("mmci-omap-hs.2",   "ick",  &mmchs3_ick,    CK_3430ES2 | CK_AM35XX),
        CLK(NULL,       "icr_ick",      &icr_ick,       CK_343X),
-       CLK(NULL,       "aes2_ick",     &aes2_ick,      CK_343X),
+       CLK("omap-aes", "ick",  &aes2_ick,      CK_343X),
        CLK("omap-sham",        "ick",  &sha12_ick,     CK_343X),
        CLK(NULL,       "des2_ick",     &des2_ick,      CK_343X),
        CLK("mmci-omap-hs.1",   "ick",  &mmchs2_ick,    CK_3XXX),
index 03e6c9e..072893a 100644 (file)
@@ -552,6 +552,76 @@ static void omap_init_sham(void)
 static inline void omap_init_sham(void) { }
 #endif
 
+#if defined(CONFIG_CRYPTO_DEV_OMAP_AES) || defined(CONFIG_CRYPTO_DEV_OMAP_AES_MODULE)
+
+#ifdef CONFIG_ARCH_OMAP24XX
+static struct resource omap2_aes_resources[] = {
+       {
+               .start  = OMAP24XX_SEC_AES_BASE,
+               .end    = OMAP24XX_SEC_AES_BASE + 0x4C,
+               .flags  = IORESOURCE_MEM,
+       },
+       {
+               .start  = OMAP24XX_DMA_AES_TX,
+               .flags  = IORESOURCE_DMA,
+       },
+       {
+               .start  = OMAP24XX_DMA_AES_RX,
+               .flags  = IORESOURCE_DMA,
+       }
+};
+static int omap2_aes_resources_sz = ARRAY_SIZE(omap2_aes_resources);
+#else
+#define omap2_aes_resources            NULL
+#define omap2_aes_resources_sz         0
+#endif
+
+#ifdef CONFIG_ARCH_OMAP34XX
+static struct resource omap3_aes_resources[] = {
+       {
+               .start  = OMAP34XX_SEC_AES_BASE,
+               .end    = OMAP34XX_SEC_AES_BASE + 0x4C,
+               .flags  = IORESOURCE_MEM,
+       },
+       {
+               .start  = OMAP34XX_DMA_AES2_TX,
+               .flags  = IORESOURCE_DMA,
+       },
+       {
+               .start  = OMAP34XX_DMA_AES2_RX,
+               .flags  = IORESOURCE_DMA,
+       }
+};
+static int omap3_aes_resources_sz = ARRAY_SIZE(omap3_aes_resources);
+#else
+#define omap3_aes_resources            NULL
+#define omap3_aes_resources_sz         0
+#endif
+
+static struct platform_device aes_device = {
+       .name           = "omap-aes",
+       .id             = -1,
+};
+
+static void omap_init_aes(void)
+{
+       if (cpu_is_omap24xx()) {
+               aes_device.resource = omap2_aes_resources;
+               aes_device.num_resources = omap2_aes_resources_sz;
+       } else if (cpu_is_omap34xx()) {
+               aes_device.resource = omap3_aes_resources;
+               aes_device.num_resources = omap3_aes_resources_sz;
+       } else {
+               pr_err("%s: platform not supported\n", __func__);
+               return;
+       }
+       platform_device_register(&aes_device);
+}
+
+#else
+static inline void omap_init_aes(void) { }
+#endif
+
 /*-------------------------------------------------------------------------*/
 
 #if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_ARCH_OMAP4)
@@ -908,6 +978,7 @@ static int __init omap2_init_devices(void)
        omap_hdq_init();
        omap_init_sti();
        omap_init_sham();
+       omap_init_aes();
        omap_init_vout();
 
        return 0;