it does not have to be all-or-nothing. you could make a linkable library available (or just some .o files) and some headers and draw a line where the source ends and binary blob begins. it happens enough that its an understood problem.
talking to the SoC chips is asking a lot; so give an api that abstracts things and gives enough control so that a user (programmer) could write an event loop and handle things that they want, display to the screen what they want, etc.
it would take some work to create that abstraction; but on the plus side, once you did that, you could spend less effort and time on the UI since that part could be open and you'd get many volunteers to add neat features at the UI side. you guys would spend your time fixing bugs that are below the api level and getting that layer rock solid.
the vendor has to want that and see value in it, and budget for its people and how the source code control system works, how the bug reporting system works, etc. a public and private 'view' would be useful; but this is all already solved and many companies do this. hell, the android model is like this; they give api access to things but we'll NEVER see real access to the radio and gfx system. that part will be closed source and always will be. but if the api abstraction is sufficient, it would not be a problem.
anyway, something to think about. if you got some open source guys on the payroll and ones that had done this before, you could pull it off.
+10000 for opensourcing the firmware!
the already huge and extremely helpfull linux community would definitely be interested.