* si470x_v4l2_queryctrl - query control
  */
 static struct v4l2_queryctrl si470x_v4l2_queryctrl[] = {
-/* HINT: the disabled controls are only here to satify kradio and such apps */
        {
                .id             = V4L2_CID_AUDIO_VOLUME,
                .type           = V4L2_CTRL_TYPE_INTEGER,
                .step           = 1,
                .default_value  = 15,
        },
-       {
-               .id             = V4L2_CID_AUDIO_BALANCE,
-               .flags          = V4L2_CTRL_FLAG_DISABLED,
-       },
-       {
-               .id             = V4L2_CID_AUDIO_BASS,
-               .flags          = V4L2_CTRL_FLAG_DISABLED,
-       },
-       {
-               .id             = V4L2_CID_AUDIO_TREBLE,
-               .flags          = V4L2_CTRL_FLAG_DISABLED,
-       },
        {
                .id             = V4L2_CID_AUDIO_MUTE,
                .type           = V4L2_CTRL_TYPE_BOOLEAN,
                .step           = 1,
                .default_value  = 1,
        },
-       {
-               .id             = V4L2_CID_AUDIO_LOUDNESS,
-               .flags          = V4L2_CTRL_FLAG_DISABLED,
-       },
 };
 
 
 static int si470x_vidioc_queryctrl(struct file *file, void *priv,
                struct v4l2_queryctrl *qc)
 {
-       unsigned char i;
+       unsigned char i = 0;
        int retval = -EINVAL;
 
-       /* safety checks */
-       if (!qc->id)
+       /* abort if qc->id is below V4L2_CID_BASE */
+       if (qc->id < V4L2_CID_BASE)
                goto done;
 
+       /* search video control */
        for (i = 0; i < ARRAY_SIZE(si470x_v4l2_queryctrl); i++) {
                if (qc->id == si470x_v4l2_queryctrl[i].id) {
                        memcpy(qc, &(si470x_v4l2_queryctrl[i]), sizeof(*qc));
-                       retval = 0;
+                       retval = 0; /* found */
                        break;
                }
        }
 
+       /* disable unsupported base controls */
+       /* to satisfy kradio and such apps */
+       if ((retval == -EINVAL) && (qc->id < V4L2_CID_LASTP1)) {
+               qc->flags = V4L2_CTRL_FLAG_DISABLED;
+               retval = 0;
+       }
+
 done:
        if (retval < 0)
                printk(KERN_WARNING DRIVER_NAME