}
 
 
-int pvr2_channel_check_stream_no_lock(struct pvr2_channel *cp,
-                             struct pvr2_context_stream *sp)
-{
-       if (sp == cp->stream) return 0;
-       if (sp->user) {
-               return -EBUSY;
-       }
-       return 0;
-}
-
-
 int pvr2_channel_claim_stream(struct pvr2_channel *cp,
                              struct pvr2_context_stream *sp)
 {
 
 void pvr2_channel_done(struct pvr2_channel *);
 int pvr2_channel_claim_stream(struct pvr2_channel *,
                              struct pvr2_context_stream *);
-int pvr2_channel_check_stream_no_lock(struct pvr2_channel *,
-                             struct pvr2_context_stream *);
 struct pvr2_ioread *pvr2_channel_create_mpeg_stream(
        struct pvr2_context_stream *);
 
 
                pvr2_trace(PVR2_TRACE_STRUCT,"Creating pvr_v4l2_fh id=%p",fhp);
                pvr2_channel_init(&fhp->channel,vp->channel.mc_head);
 
-               /* pk: warning, severe ugliness follows. 18+ only.
-                  please blaim V4L(ivtv) for braindamaged interfaces,
-                  not the implementor. This is probably flawed, but
-                  suggestions on how to do this "right" are welcome! */
+               /* Opening the /dev/radioX device implies a mode switch.
+                  So execute that here.  Note that you can get the
+                  IDENTICAL effect merely by opening the normal video
+                  device and setting the input appropriately. */
                if (dip->config == pvr2_config_radio) {
-                       int ret;
-                       if ((pvr2_channel_check_stream_no_lock(&fhp->channel,
-                                             fhp->dev_info->stream)) != 0) {
-                               /* We can 't switch modes while streaming */
-                               pvr2_channel_done(&fhp->channel);
-                               kfree(fhp);
-                               pvr2_context_exit(vp->channel.mc_head);
-                               return -EBUSY;
-                       }
-
-                       if ((ret = pvr2_ctrl_set_value(
+                       pvr2_ctrl_set_value(
                                pvr2_hdw_get_ctrl_by_id(hdw,PVR2_CID_INPUT),
-                                                 PVR2_CVAL_INPUT_RADIO))) {
-                               pvr2_channel_done(&fhp->channel);
-                               kfree(fhp);
-                               pvr2_context_exit(vp->channel.mc_head);
-                               return ret;
-                       }
+                               PVR2_CVAL_INPUT_RADIO);
                }
 
                fhp->vnext = NULL;