Calling write_current_mode() in add_gpu seems weird. Not to mention write_current_mode() actually writes the current mode for the last source. write_current_mode() is also called at multiple places. It just seems that it should be called at one appropriate place and that's it.
Also, why is this patch necessary?