return NULL;
        }
 
-       return i2c_new_device(adap, &info);
+       return i2c_new_client_device(adap, &info);
 }
 
 static int
                    struct drm_encoder_slave *encoder)
 {
        struct sil164_priv *priv;
+       struct i2c_client *slave_client;
 
        priv = kzalloc(sizeof(*priv), GFP_KERNEL);
        if (!priv)
        encoder->slave_priv = priv;
        encoder->slave_funcs = &sil164_encoder_funcs;
 
-       priv->duallink_slave = sil164_detect_slave(client);
+       slave_client = sil164_detect_slave(client);
+       if (!IS_ERR(slave_client))
+               priv->duallink_slave = slave_client;
 
        return 0;
 }