|
@@ -24,6 +24,15 @@
|
|
#include <media/videobuf2-v4l2.h>
|
|
#include <media/videobuf2-v4l2.h>
|
|
#include <media/videobuf2-vmalloc.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) */
|
|
/* HackRF USB API commands (from HackRF Library) */
|
|
enum {
|
|
enum {
|
|
CMD_SET_TRANSCEIVER_MODE = 0x01,
|
|
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");
|
|
dev_err(dev->dev, "Could not initialize controls\n");
|
|
goto err_v4l2_ctrl_handler_free_rx;
|
|
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);
|
|
v4l2_ctrl_handler_setup(&dev->rx_ctrl_handler);
|
|
|
|
|
|
/* Register controls for transmitter */
|
|
/* 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");
|
|
dev_err(dev->dev, "Could not initialize controls\n");
|
|
goto err_v4l2_ctrl_handler_free_tx;
|
|
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);
|
|
v4l2_ctrl_handler_setup(&dev->tx_ctrl_handler);
|
|
|
|
|
|
/* Register the v4l2_device structure */
|
|
/* Register the v4l2_device structure */
|