ndufresne: so, for v4l drivers: after reading up, it seems like start_streaming and stop_streaming could come at any time? can they be called while the other is still running? do i need to take that into account?
cause in my case both can trigger a init_complete(), which iiuc does not wait on it's own completion?
can I safely assume that start_streaming and stop_streaming will not be called while either of them is still running/waiting?
alien_lappy: I'd need to check the locking again, but it would be very surprising if they are concurrent 
In short I expect both calls to share the same lock
None of these are supposed to block for a long time