diff options
Diffstat (limited to 'drivers/media/usb/hackrf/hackrf.c')
| -rw-r--r-- | drivers/media/usb/hackrf/hackrf.c | 13 | 
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/media/usb/hackrf/hackrf.c b/drivers/media/usb/hackrf/hackrf.c index d7a3aa2029d2..9e700caf0d66 100644 --- a/drivers/media/usb/hackrf/hackrf.c +++ b/drivers/media/usb/hackrf/hackrf.c @@ -24,6 +24,15 @@  #include <media/videobuf2-v4l2.h>  #include <media/videobuf2-vmalloc.h> +/* + * Used Avago MGA-81563 RF amplifier could be destroyed pretty easily with too + * strong signal or transmitting to bad antenna. + * Set RF gain control to 'grabbed' state by default for sure. + */ +static bool hackrf_enable_rf_gain_ctrl; +module_param_named(enable_rf_gain_ctrl, hackrf_enable_rf_gain_ctrl, bool, 0644); +MODULE_PARM_DESC(enable_rf_gain_ctrl, "enable RX/TX RF amplifier control (warn: could damage amplifier)"); +  /* HackRF USB API commands (from HackRF Library) */  enum {  	CMD_SET_TRANSCEIVER_MODE           = 0x01, @@ -1451,6 +1460,7 @@ static int hackrf_probe(struct usb_interface *intf,  		dev_err(dev->dev, "Could not initialize controls\n");  		goto err_v4l2_ctrl_handler_free_rx;  	} +	v4l2_ctrl_grab(dev->rx_rf_gain, !hackrf_enable_rf_gain_ctrl);  	v4l2_ctrl_handler_setup(&dev->rx_ctrl_handler);  	/* Register controls for transmitter */ @@ -1471,6 +1481,7 @@ static int hackrf_probe(struct usb_interface *intf,  		dev_err(dev->dev, "Could not initialize controls\n");  		goto err_v4l2_ctrl_handler_free_tx;  	} +	v4l2_ctrl_grab(dev->tx_rf_gain, !hackrf_enable_rf_gain_ctrl);  	v4l2_ctrl_handler_setup(&dev->tx_ctrl_handler);  	/* Register the v4l2_device structure */ @@ -1530,7 +1541,7 @@ err_v4l2_ctrl_handler_free_rx:  err_kfree:  	kfree(dev);  err: -	dev_dbg(dev->dev, "failed=%d\n", ret); +	dev_dbg(&intf->dev, "failed=%d\n", ret);  	return ret;  }  | 
