hw_random: fixups for msm_rng

 - add_device_randomness() if hwrng is enabled at boot
 - Replace the awful arch_get_random buffer with an atomic
   ringbuffer.  It's not contested enough to justify locking.
 - Enlarge the buffer, and loop to fill it
random: use a thread to stir erandom

The thread serves two purposes: to stir erandom's pool in an effort to
mitigate RC4's short periods, and to scrub data from the hwrng before
mixing into input_pool.
input: add_input_randomness on abs events
random: krngd fixups

 - give krngd its own waitqueue so erandom can wake it
 - restore erandom_stir_thresh & related
 - use the RC4 KSA to re-seed
 - stop seeding if pool is full
random: correctly freeze krngd
random: add_*_randomness housekeeping

 - Remove unused add_irq_randomness infrastructure
 - Remove unused add_disk_randomness infrastructure
 - Adapt add_interrupt_randomness for touchscreen input
hw_random: improve msm_rng precache

 - Use precache for ordinary reads to avoid collision in msm_rng_read
 - Expand cache to 4096 bytes in case qrngd is in use
 - Remove workarounds for pre-initialization reads
 - Tighten read delays to 10 ms
 - Schedule precache work only when needed
a2220: assorted fixups

 - Don't set config if cmds fail
 - Don't soft reset (it's unpredictable)
 - Verify suspend command was accepted
 - Initialize to invalid state
 - Force NSOFF state during suspend
random: prioritize userspace wakeups
hw_random: cache in larger chunks
hw_random: remove init_rand_state

Instead, read a chunk and submit with add_device_randomness
random: overhaul erandom

 - remove init_rand_state; piggyback erandom init on
   add_device_randomness
 - use a larger read chunk and unroll the PRGA
configs: update and enable NBD