RNG driver for Intel IXP4xx NPU. Signed-off-by: Deepak Saxena <[email protected]> --- Tested and works. Index: linux-2.6-rng/drivers/char/rng/ixp4xx-rng.c =================================================================== --- /dev/null +++ linux-2.6-rng/drivers/char/rng/ixp4xx-rng.c @@ -0,0 +1,66 @@ +/* + * drivers/char/rng/ixp4xx-rng.c + * + * RNG driver for Intel IXP4xx family of NPUs + * + * Author: Deepak Saxena <[email protected]> + * + * Copyright 2005 (c) MontaVista Software, Inc. + * + * This file is licensed under the terms of the GNU General Public + * License version 2. This program is licensed "as is" without any + * warranty of any kind, whether express or implied. + */ + +#include <linux/kernel.h> +#include <linux/config.h> +#include <linux/types.h> +#include <linux/module.h> +#include <linux/moduleparam.h> +#include <linux/init.h> +#include <linux/bitops.h> + +#include <asm/io.h> +#include <asm/hardware.h> + +#include "rng.h" + +static u32* __iomem rng_base; + +static int ixp4xx_rng_data_present(void) +{ + return 1; +} + +static int ixp4xx_rng_data_read(u32 *buffer) +{ + *buffer = __raw_readl(rng_base); + + return 4; +} + +struct rng_operations ixp4xx_rng_ops = { + .data_present = ixp4xx_rng_data_present, + .data_read = ixp4xx_rng_data_read, +}; + +static int __init ixp4xx_rng_init(void) +{ + rng_base = (u32* __iomem) ioremap(0x70002100, 4); + if (!rng_base) return -ENOMEM; + + return register_rng(&ixp4xx_rng_ops); +} + +static void __exit ixp4xx_rng_exit(void) +{ + unregister_rng(&ixp4xx_rng_ops); + iounmap(rng_base); +} + +subsys_initcall(ixp4xx_rng_init); +module_exit(ixp4xx_rng_exit); + +MODULE_AUTHOR("Deepak Saxena <[email protected]>"); +MODULE_DESCRIPTION("H/W Random Number Generator (RNG) driver for IXP4xx"); +MODULE_LICENSE("GPL"); Index: linux-2.6-rng/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h =================================================================== --- linux-2.6-rng.orig/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h +++ linux-2.6-rng/include/asm-arm/arch-ixp4xx/ixp4xx-regs.h @@ -36,6 +36,8 @@ * * 0x6000000 0x00004000 ioremap'd QMgr * + * 0x7000000 0x00004000 ioremap'd Public-Key Exchange Unit + * * 0xC0000000 0x00001000 0xffbfe000 PCI CFG * * 0xC4000000 0x00001000 0xffbfd000 EXP CFG -- Deepak Saxena - [email protected] - http://www.plexity.net Even a stopped clock gives the right time twice a day. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
- References:
- Prev by Date: [patch 2/5] Core HW RNG support
- Next by Date: [patch 5/5] TI OMAP driver
- Previous by thread: Re: [patch 2/5] Core HW RNG support
- Next by thread: [patch 5/5] TI OMAP driver
- Index(es):