Misc. fixups:
- [1] Make the driver friendly towards kernel without PREEMPTION. Use msleep(9) instead of simple unlock-check_variable-lock mechanisme since the later not really effective in non-preemptible kernel (especially during codec detection routine).
- Free most driver resources in a sane manner to avoid possible double free and panics especially during device detach and codec detection failure.
MFC after: 3 days
[1] http://lists.freebsd.org/pipermail/freebsd-questions/2006-March/116515.html