	Hardware driver for Intel/AMD/VIA Random Number Generators (RNG)
	Copyright 2000,2001 Jeff Garzik <jgarzik@pobox.com>
	Copyright 2000,2001 Philipp Rumpf <prumpf@mandrakesoft.com>

Introduction:

	The hw_random device driver is software that makes use of a
	special hardware feature on your CPU or motherboard,
	a Random Number Generator (RNG).

	In order to make effective use of this device driver, you
	should download the support software as well.  Download the
	latest version of the "rng-tools" package from the
	hw_random driver's official Web site:

		http://sourceforge.net/projects/gkernel/

About the Intel RNG hardware, from the firmware hub datasheet:

	The Firmware Hub integrates a Random Number Generator (RNG)
	using thermal noise generated from inherently random quantum
	mechanical properties of silicon. When not generating new random
	bits the RNG circuitry will enter a low power state. Intel will
	provide a binary software driver to give third party software
	access to our RNG for use as a security feature. At this time,
	the RNG is only to be used with a system in an OS-present state.

Theory of operation:

	Character driver.  Using the standard open()
	and read() system calls, you can read random data from
	the hardware RNG device.  This data is NOT CHECKED by any
	fitness tests, and could potentially be bogus (if the
	hardware is faulty or has been tampered with).  Data is only
	output if the hardware "has-data" flag is set, but nevertheless
	a security-conscious person would run fitness tests on the
	data before assuming it is truly random.

	/dev/hwrandom is char device major 10, minor 183.

Driver notes:

	* FIXME: support poll(2)

	NOTE: request_mem_region was removed, for two reasons:
	1) Only one RNG is supported by this driver, 2) The location
	used by the RNG is a fixed location in MMIO-addressable memory,
	3) users with properly working BIOS e820 handling will always
	have the region in which the RNG is located reserved, so
	request_mem_region calls always fail for proper setups.
	However, for people who use mem=XX, BIOS e820 information is
	-not- in /proc/iomem, and request_mem_region(RNG_ADDR) can
	succeed.

Driver details:

	Based on:
	Intel 82802AB/82802AC Firmware Hub (FWH) Datasheet
		May 1999 Order Number: 290658-002 R

	Intel 82802 Firmware Hub: Random Number Generator
	Programmer's Reference Manual
		December 1999 Order Number: 298029-001 R

	Intel 82802 Firmware HUB Random Number Generator Driver
	Copyright (c) 2000 Matt Sottek <msottek@quiknet.com>

	Special thanks to Matt Sottek.  I did the "guts", he
	did the "brains" and all the testing.

Change history:

	Version 1.0.0:
	* Merge Intel, AMD, VIA RNG drivers into one.
	  Further changelog in BitKeeper.

	Version 0.9.8:
	* Support other i8xx chipsets by adding 82801E detection
	* 82801DB detection is the same as for 82801CA.

	Version 0.9.7:
	* Support other i8xx chipsets too (by adding 82801BA(M) and
	  82801CA(M) detection)

	Version 0.9.6:
	* Internal driver cleanups, prep for 1.0.0 release.

	Version 0.9.5:
	* Rip out entropy injection via timer.  It never ever worked,
	  and a better solution (rngd) is now available.

	Version 0.9.4:
	* Fix: Remove request_mem_region
	* Fix: Horrible bugs in FIPS calculation and test execution

	Version 0.9.3:
	* Clean up rng_read a bit.
	* Update i810_rng driver Web site URL.
	* Increase default timer interval to 4 samples per second.
	* Abort if mem region is not available.
	* BSS zero-initialization cleanup.
	* Call misc_register() from rng_init_one.
	* Fix O_NONBLOCK to occur before we schedule.

	Version 0.9.2:
	* Simplify open blocking logic

	Version 0.9.1:
	* Support i815 chipsets too (Matt Sottek)
	* Fix reference counting when statically compiled (prumpf)
	* Rewrite rng_dev_read (prumpf)
	* Make module races less likely (prumpf)
	* Small miscellaneous bug fixes (prumpf)
	* Use pci table for PCI id list

	Version 0.9.0:
	* Don't register a pci_driver, because we are really
	  using PCI bridge vendor/device ids, and someone
	  may want to register a driver for the bridge. (bug fix)
	* Don't let the usage count go negative (bug fix)
	* Clean up spinlocks (bug fix)
	* Enable PCI device, if necessary (bug fix)
	* iounmap on module unload (bug fix)
	* If RNG chrdev is already in use when open(2) is called,
	  sleep until it is available.
	* Remove redundant globals rng_allocated, rng_use_count
	* Convert numeric globals to unsigned
	* Module unload cleanup

	Version 0.6.2:
	* Clean up spinlocks.  Since we don't have any interrupts
	  to worry about, but we do have a timer to worry about,
	  we use spin_lock_bh everywhere except the timer function
	  itself.
	* Fix module load/unload.
	* Fix timer function and h/w enable/disable logic
	* New timer interval sysctl
	* Clean up sysctl names
