I might have a solution for you.
But, consider first using the default WordPress custom logo support. You just need to add this to your functions.php file:
function theme_prefix_setup() {
add_theme_support( 'custom-logo' );
}
add_action( 'after_setup_theme', 'theme_prefix_setup' );
See more details about add_theme_support( 'custom-logo' );
at https://codex.wordpress.org/Theme_Logo.
Now, if you click Appearance > Customize, under Site Identity you will se the new Logo field.
If the solution above doesn’t fit you, keep reading…
I tested the code below and it works fine (of course I changed it to fit some of your needs).
/**
* @param object $instance
*/
function customize_customize_page( $instance ) {
// Set the args. You do not need to set 'type' key here.
$args = array(
'priority' => 0,
'section' => 'home',
// 'settings' => 'home',
'label' => __( 'Logo' ),
'description' => __( 'Description' ),
);
// Here we instance WP_Customize_Image_Control class and set its paramaters.
// See that here is where you choose your option ID.
$instance->add_control( new WP_Customize_Image_Control( $instance, 'home_logo', $args ) );
}
add_action( 'customize_register', 'customize_customize_page', 199, 1 );
If the code above won’t work you should try uncommenting the key ‘settings’ and try again.