#include "stv6111.h"
 #include "lnbh25.h"
 #include "cxd2099.h"
+#include "dvb_dummy_fe.h"
 
 /****************************************************************************/
 
 MODULE_PARM_DESC(dma_buf_size,
                 "DMA buffer size as multiple of 128*47, possible values: 1-43");
 
+static int dummy_tuner;
+module_param(dummy_tuner, int, 0444);
+MODULE_PARM_DESC(dummy_tuner,
+                "attach dummy tuner to port 0 on Octopus V3 or Octopus Mini cards");
+
 /****************************************************************************/
 
 static DEFINE_MUTEX(redirect_lock);
 
        ddbwritel(dev, 0x09, TS_CONTROL(input));
 
+       if (input->port->type == DDB_TUNER_DUMMY)
+               ddbwritel(dev, 0x000fff01, TS_CONTROL2(input));
+
        input->dma->running = 1;
        spin_unlock_irq(&input->dma->lock);
 }
        return 0;
 }
 
+static int demod_attach_dummy(struct ddb_input *input)
+{
+       struct ddb_dvb *dvb = &input->port->dvb[input->nr & 1];
+       struct device *dev = input->port->dev->dev;
+
+       dvb->fe = dvb_attach(dvb_dummy_fe_qam_attach);
+       if (!dvb->fe) {
+               dev_err(dev, "QAM dummy attach failed!\n");
+               return -ENODEV;
+       }
+
+       return 0;
+}
+
 static int start_feed(struct dvb_demux_feed *dvbdmxfeed)
 {
        struct dvb_demux *dvbdmx = dvbdmxfeed->demux;
                if (tuner_attach_tda18212(input, port->type) < 0)
                        goto err_tuner;
                break;
+       case DDB_TUNER_DUMMY:
+               if (demod_attach_dummy(input) < 0)
+                       goto err_detach;
+               break;
        default:
                return 0;
        }
 
        /* Handle missing ports and ports without I2C */
 
+       if (dummy_tuner && !port->nr &&
+           dev->link[0].ids.device == 0x0005) {
+               port->name = "DUMMY";
+               port->class = DDB_PORT_TUNER;
+               port->type = DDB_TUNER_DUMMY;
+               port->type_name = "DUMMY";
+               return;
+       }
+
        if (port->nr == ts_loop) {
                port->name = "TS LOOP";
                port->class = DDB_PORT_LOOP;