}
 
        /* It should have at least one I/O entity */
-       if (!io_v4l && !io_vbi && !io_swradio)
+       if (!io_v4l && !io_vbi && !io_swradio) {
+               dev_warn(mdev->dev, "Didn't find any I/O entity\n");
                return -EINVAL;
+       }
 
        /*
         * Here, webcams are modelled on a very simple way: the sensor is
         * PC-consumer's hardware.
         */
        if (is_webcam) {
-               if (!io_v4l)
+               if (!io_v4l) {
+                       dev_warn(mdev->dev, "Didn't find a MEDIA_ENT_F_IO_V4L\n");
                        return -EINVAL;
+               }
 
                media_device_for_each_entity(entity, mdev) {
                        if (entity->function != MEDIA_ENT_F_CAM_SENSOR)
                        ret = media_create_pad_link(entity, 0,
                                                    io_v4l, 0,
                                                    MEDIA_LNK_FL_ENABLED);
-                       if (ret)
+                       if (ret) {
+                               dev_warn(mdev->dev, "Failed to create a sensor link\n");
                                return ret;
+                       }
                }
                if (!decoder)
                        return 0;
        }
 
        /* The device isn't a webcam. So, it should have a decoder */
-       if (!decoder)
+       if (!decoder) {
+               dev_warn(mdev->dev, "Decoder not found\n");
                return -EINVAL;
+       }
 
        /* Link the tuner and IF video output pads */
        if (tuner) {
                                                         PAD_SIGNAL_ANALOG);
                        pad_sink = media_get_pad_index(if_vid, true,
                                                       PAD_SIGNAL_ANALOG);
-                       if (pad_source < 0 || pad_sink < 0)
+                       if (pad_source < 0 || pad_sink < 0) {
+                               dev_warn(mdev->dev, "Couldn't get tuner and/or PLL pad(s): (%d, %d)\n",
+                                        pad_source, pad_sink);
                                return -EINVAL;
+                       }
                        ret = media_create_pad_link(tuner, pad_source,
                                                    if_vid, pad_sink,
                                                    MEDIA_LNK_FL_ENABLED);
-                       if (ret)
+                       if (ret) {
+                               dev_warn(mdev->dev, "Couldn't create tuner->PLL link)\n");
                                return ret;
+                       }
 
                        pad_source = media_get_pad_index(if_vid, false,
                                                         PAD_SIGNAL_ANALOG);
                        pad_sink = media_get_pad_index(decoder, true,
                                                       PAD_SIGNAL_ANALOG);
-                       if (pad_source < 0 || pad_sink < 0)
+                       if (pad_source < 0 || pad_sink < 0) {
+                               dev_warn(mdev->dev, "get decoder and/or PLL pad(s): (%d, %d)\n",
+                                        pad_source, pad_sink);
                                return -EINVAL;
+                       }
                        ret = media_create_pad_link(if_vid, pad_source,
                                                    decoder, pad_sink,
                                                    MEDIA_LNK_FL_ENABLED);
-                       if (ret)
+                       if (ret) {
+                               dev_warn(mdev->dev, "couldn't link PLL to decoder\n");
                                return ret;
+                       }
                } else {
                        pad_source = media_get_pad_index(tuner, false,
                                                         PAD_SIGNAL_ANALOG);
                        pad_sink = media_get_pad_index(decoder, true,
                                                       PAD_SIGNAL_ANALOG);
-                       if (pad_source < 0 || pad_sink < 0)
+                       if (pad_source < 0 || pad_sink < 0) {
+                               dev_warn(mdev->dev, "couldn't get tuner and/or decoder pad(s): (%d, %d)\n",
+                                        pad_source, pad_sink);
                                return -EINVAL;
+                       }
                        ret = media_create_pad_link(tuner, pad_source,
                                                    decoder, pad_sink,
                                                    MEDIA_LNK_FL_ENABLED);
                                                         PAD_SIGNAL_AUDIO);
                        pad_sink = media_get_pad_index(if_aud, true,
                                                       PAD_SIGNAL_AUDIO);
-                       if (pad_source < 0 || pad_sink < 0)
+                       if (pad_source < 0 || pad_sink < 0) {
+                               dev_warn(mdev->dev, "couldn't get tuner and/or decoder pad(s) for audio: (%d, %d)\n",
+                                        pad_source, pad_sink);
                                return -EINVAL;
+                       }
                        ret = media_create_pad_link(tuner, pad_source,
                                                    if_aud, pad_sink,
                                                    MEDIA_LNK_FL_ENABLED);
-                       if (ret)
+                       if (ret) {
+                               dev_warn(mdev->dev, "couldn't link tuner->audio PLL\n");
                                return ret;
+                       }
                } else {
                        if_aud = tuner;
                }
        /* Create demod to V4L, VBI and SDR radio links */
        if (io_v4l) {
                pad_source = media_get_pad_index(decoder, false, PAD_SIGNAL_DV);
-               if (pad_source < 0)
+               if (pad_source < 0) {
+                       dev_warn(mdev->dev, "couldn't get decoder output pad for V4L I/O\n");
                        return -EINVAL;
+               }
                ret = media_create_pad_link(decoder, pad_source,
                                            io_v4l, 0,
                                            MEDIA_LNK_FL_ENABLED);
-               if (ret)
+               if (ret) {
+                       dev_warn(mdev->dev, "couldn't link decoder output to V4L I/O\n");
                        return ret;
+               }
        }
 
        if (io_swradio) {
                pad_source = media_get_pad_index(decoder, false, PAD_SIGNAL_DV);
-               if (pad_source < 0)
+               if (pad_source < 0) {
+                       dev_warn(mdev->dev, "couldn't get decoder output pad for SDR\n");
                        return -EINVAL;
+               }
                ret = media_create_pad_link(decoder, pad_source,
                                            io_swradio, 0,
                                            MEDIA_LNK_FL_ENABLED);
-               if (ret)
+               if (ret) {
+                       dev_warn(mdev->dev, "couldn't link decoder output to SDR\n");
                        return ret;
+               }
        }
 
        if (io_vbi) {
                pad_source = media_get_pad_index(decoder, false, PAD_SIGNAL_DV);
-               if (pad_source < 0)
+               if (pad_source < 0) {
+                       dev_warn(mdev->dev, "couldn't get decoder output pad for VBI\n");
                        return -EINVAL;
+               }
                ret = media_create_pad_link(decoder, pad_source,
                                            io_vbi, 0,
                                            MEDIA_LNK_FL_ENABLED);
-               if (ret)
+               if (ret) {
+                       dev_warn(mdev->dev, "couldn't link decoder output to VBI\n");
                        return ret;
+               }
        }
 
        /* Create links for the media connectors */
                                continue;
                        pad_sink = media_get_pad_index(tuner, true,
                                                       PAD_SIGNAL_ANALOG);
-                       if (pad_sink < 0)
+                       if (pad_sink < 0) {
+                               dev_warn(mdev->dev, "couldn't get tuner analog pad sink\n");
                                return -EINVAL;
+                       }
                        ret = media_create_pad_link(entity, 0, tuner,
                                                    pad_sink,
                                                    flags);
                case MEDIA_ENT_F_CONN_COMPOSITE:
                        pad_sink = media_get_pad_index(decoder, true,
                                                       PAD_SIGNAL_ANALOG);
-                       if (pad_sink < 0)
+                       if (pad_sink < 0) {
+                               dev_warn(mdev->dev, "couldn't get tuner analog pad sink\n");
                                return -EINVAL;
+                       }
                        ret = media_create_pad_link(entity, 0, decoder,
                                                    pad_sink,
                                                    flags);