Kernel Driver: Implement O_NONBLOCK in reads

* Also modify kernel debug loglevel in ioctl

Signed-off-by: Kumar Abhishek <abhishek@theembeddedkitchen.net>
Kernel Driver: Support sample rates down to 1 Hz

Signed-off-by: Kumar Abhishek <abhishek@theembeddedkitchen.net>
Kernel Driver: Fix poll()

Fixes infinite loop and a segfault occurring due to poll() called before
data was actually reading from the buffer.

Signed-off-by: Kumar Abhishek <abhishek@theembeddedkitchen.net>
Kernel Driver: open() optimize and read() changes

Only the first buffer is mapped as the other buffers will get
mapped/unmapped on the fly.

Signed-off-by: Kumar Abhishek <abhishek@theembeddedkitchen.net>