unsigned int mode;
        u8  rf_mode;
        u8  radio_input;
+       u16  output_amp;
 
        int chip_id;
        u16 pll_register_no;
                return -EIO;
        }
 
-       xc_write_reg(priv, XREG_OUTPUT_AMP, 0x8a);
+       dprintk(1, "%s() setting OUTPUT_AMP to 0x%x\n",
+               __func__, priv->output_amp);
+       xc_write_reg(priv, XREG_OUTPUT_AMP, priv->output_amp);
 
        xc_tune_channel(priv, priv->freq_hz, XC_TUNE_DIGITAL);
 
        if (p->radio_input)
                priv->radio_input = p->radio_input;
 
+       if (p->output_amp)
+               priv->output_amp = p->output_amp;
+
        return 0;
 }
 
                   it can be overridden if this is a hybrid driver */
                priv->chip_id = (cfg->chip_id) ? cfg->chip_id : 0;
 
+       /* don't override output_amp if it's already been set
+          unless explicitly specified */
+       if ((priv->output_amp == 0) || (cfg->output_amp))
+               /* use default output_amp value if none specified */
+               priv->output_amp = (cfg->output_amp) ? cfg->output_amp : 0x8a;
+
        /* Check if firmware has been loaded. It is possible that another
           instance of the driver has loaded the firmware.
         */