I've spent some time cleaning up the usbaudio driver. I felt that the existing implementation was quite difficult to follow because it contained code for all sorts of things mixed up in one big file.
So I split the driver into pieces and tried to be as less intrusive as I can, meaning that I didn't touch much real code but rather copied the functions as they were and factored them out. Of course, non-static functions were properly prefixed to avoid name space pollution.
I also moved almost all quirks to a seperate file and introduced two more generic hooks to handle them, so the excecption add less to the actual code of the driver.
Unfortunately it wasn't easily possible to put that big change into smaller pieces, and so 3/3 became a huge chunk.
After all, I feel that it is easier to read now, but I don't know whether you agree. So take this as RFC for now :)
Daniel