]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
[PATCH] ARM: OMAP: 24xx RNG
authorKomal Shah <komal_shah802003@yahoo.com>
Tue, 11 Oct 2005 14:59:54 +0000 (17:59 +0300)
committerTony Lindgren <tony@atomide.com>
Tue, 11 Oct 2005 14:59:54 +0000 (17:59 +0300)
Added OMAP24xx RNG support

drivers/char/Kconfig
drivers/char/Makefile
drivers/char/omap-rng.c [moved from drivers/char/omap16xx-rng.c with 66% similarity]

index 35a3fc1b5cbba5ebdd5d60d7cc332e01dc537f95..0c4a062319fe79fdda345e6472a0152d4f442bb4 100644 (file)
@@ -659,15 +659,13 @@ config HW_RANDOM
 
          If unsure, say N.
 
-config OMAP16XX_RNG
-       tristate "OMAP16xx Random Number Generator support"
-       depends on ARCH_OMAP16XX
+config OMAP_RNG
+       tristate "OMAP Random Number Generator support"
+       depends on ARCH_OMAP16XX || ARCH_OMAP24XX
        ---help---
          This driver provides kernel-side support for the Random Number
-         Generator hardware found on OMAP16xx multimedia processors.
-
-         To compile this driver as a module, choose M here: the
-         module will be called hw_random.
+         Generator hardware found on OMAP16xx and OMAP24xx multimedia
+         processors.
 
          If unsure, say N.
 
index d7d8df647dba5cfa668709d511dbaa404a33d8ba..7633a5ad382f4f7cc372808dd11ebc707a0f6b50 100644 (file)
@@ -75,7 +75,7 @@ obj-$(CONFIG_TOSHIBA) += toshiba.o
 obj-$(CONFIG_I8K) += i8k.o
 obj-$(CONFIG_DS1620) += ds1620.o
 obj-$(CONFIG_HW_RANDOM) += hw_random.o
-obj-$(CONFIG_OMAP16XX_RNG) += omap16xx-rng.o
+obj-$(CONFIG_OMAP_RNG) += omap-rng.o
 obj-$(CONFIG_FTAPE) += ftape/
 obj-$(CONFIG_COBALT_LCD) += lcd.o
 obj-$(CONFIG_PPDEV) += ppdev.o
similarity index 66%
rename from drivers/char/omap16xx-rng.c
rename to drivers/char/omap-rng.c
index 0638eaacf90fb4f8a9bdab92443ed022ddf3929e..86ecd2939eb2f82d280e3aa57c6948a2b8ac3361 100644 (file)
@@ -1,10 +1,10 @@
 /*
- * drivers/char/omap16xx-rng.c
+ * drivers/char/omap-rng.c
  *
  * Copyright (C) 2005 Nokia Corporation
  * Author: Juha Yrjölä <juha.yrjola@nokia.com>
  *
- * OMAP16xx Random Number Generator driver
+ * OMAP16xx and OMAP24xx Random Number Generator driver
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/random.h>
+#include <linux/err.h>
+
 #include <asm/io.h>
+#include <asm/hardware/clock.h>
 
+#if defined (CONFIG_ARCH_OMAP16XX)
 #define RNG_BASE       0xfffe5000
+#endif
+#if defined (CONFIG_ARCH_OMAP24XX)
+#define RNG_BASE       0x480A0000
+#endif
 #define RNG_OUT_REG    0x00
 #define RNG_STAT_REG   0x04
 #define RNG_REV_REG    0x3c
@@ -27,6 +35,8 @@
 
 static u32 rng_base = io_p2v(RNG_BASE);
 
+static struct clk *rng_ick = NULL;
+
 static u32 rng_read_reg(int reg)
 {
        return __raw_readl(rng_base + reg);
@@ -50,10 +60,19 @@ static void rng_feed_entropy(int count)
 
 static int __init rng_init(void)
 {
-       if (!cpu_is_omap16xx())
+       if (!cpu_is_omap16xx() && !cpu_is_omap24xx())
                return -ENODEV;
 
-       printk("OMAP16xx Random Number Generator ver. %02x\n",
+       if (cpu_is_omap24xx()) {
+               rng_ick = clk_get(NULL, "rng_ick");
+               if (IS_ERR(rng_ick)) {
+                       printk(KERN_ERR "omap-rng.c: Could not get rng_ick\n");
+                       return PTR_ERR(rng_ick);
+               }
+               clk_use(rng_ick);
+       }
+
+       printk("OMAP Random Number Generator ver. %02x\n",
        rng_read_reg(RNG_REV_REG));
        rng_write_reg(RNG_MASK_REG, 0x00000001);
        rng_feed_entropy(ENTROPY_WORD_COUNT);
@@ -62,14 +81,4 @@ static int __init rng_init(void)
 
        return 0;
 }
-
-static void __exit rng_cleanup(void)
-{
-}
-
-MODULE_AUTHOR("Juha Yrjölä");
-MODULE_DESCRIPTION("OMAP16xx H/W Random Number Generator (RNG) driver");
-MODULE_LICENSE("GPL");
-
-module_init(rng_init);
-module_exit(rng_cleanup);
+late_initcall(rng_init);