So, Don't hate me for this, but I have to ask what is potentially a stupid question.
Why does this have to be done? why does each individual controller need support programmed into the kernal?
Why isnt there just some generic controller library that just lets any and every controller work without anything special?