summaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/mantis/mantis_vp3030.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-01-18 14:07:07 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2010-01-18 14:07:07 -0800
commit2faae42233778676607a2a45b95aeb375bebe2c6 (patch)
tree8d9d1da5980eeacdd2467bc841125faccff93c4c /drivers/media/dvb/mantis/mantis_vp3030.c
parent630ca048cec9f06eb4cceddb9df066ca68ace9d4 (diff)
parentfcd89de3bd1c8735f9b7c759dc4848ab6e525bb9 (diff)
Merge branch 'mantis' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6
* 'mantis' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: (117 commits) V4L/DVB (13851): Fix Input dependency for Mantis V4L/DVB(13824a): mantis: Fix __devexit bad annotations V4L/DVB (13808b): mantis: replace DMA_nnBIT_MASK to DMA_BIT_MASK(32) V4L/DVB (13808): [Mantis/Hopper] Build update for Mantis/Hopper based cards V4L/DVB(13808a): mantis: convert it to the new ir-core register/unregister functions V4L/DVB (13812): [Mantis/Hopper] Update Copyright header V4L/DVB (13811): [MB86A16] Update Copyright header V4L/DVB (13810): [MB86A16] Use DVB_* macros V4L/DVB (13809): Fix Checkpatch violations V4L/DVB (13807): Fix: Free device in the device registration failure case V4L/DVB (13806): Register and Initialize Remote control V4L/DVB (13805): Fix: Unregister the frontend before detaching V4L/DVB (13804): Remove unused I2C Adapter ID V4L/DVB (13803): Remove unused dependency on CU1216 V4L/DVB (13802): [Mantis/Hopper] Fix all build related warnings V4L/DVB (13801): [MB86A16] Use the search callback V4L/DVB (13800): [Mantis] I2C optimization. Required delay is much lesser than 1mS. V4L/DVB (13799): [Mantis] Unregister frontend V4L/DVB (13798): [Mantis] Enable power for all cards, use byte mode only on relevant devices V4L/DVB (13797): [Mantis/Hopper/TDA665x] Large overhaul, ...
Diffstat (limited to 'drivers/media/dvb/mantis/mantis_vp3030.c')
-rw-r--r--drivers/media/dvb/mantis/mantis_vp3030.c105
1 files changed, 105 insertions, 0 deletions
diff --git a/drivers/media/dvb/mantis/mantis_vp3030.c b/drivers/media/dvb/mantis/mantis_vp3030.c
new file mode 100644
index 00000000000..1f433421495
--- /dev/null
+++ b/drivers/media/dvb/mantis/mantis_vp3030.c
@@ -0,0 +1,105 @@
+/*
+ Mantis VP-3030 driver
+
+ Copyright (C) Manu Abraham (abraham.manu@gmail.com)
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include <linux/signal.h>
+#include <linux/sched.h>
+#include <linux/interrupt.h>
+
+#include "dmxdev.h"
+#include "dvbdev.h"
+#include "dvb_demux.h"
+#include "dvb_frontend.h"
+#include "dvb_net.h"
+
+#include "zl10353.h"
+#include "tda665x.h"
+#include "mantis_common.h"
+#include "mantis_ioc.h"
+#include "mantis_dvb.h"
+#include "mantis_vp3030.h"
+
+struct zl10353_config mantis_vp3030_config = {
+ .demod_address = 0x0f,
+};
+
+struct tda665x_config env57h12d5_config = {
+ .name = "ENV57H12D5 (ET-50DT)",
+ .addr = 0x60,
+ .frequency_min = 47000000,
+ .frequency_max = 862000000,
+ .frequency_offst = 3616667,
+ .ref_multiplier = 6, /* 1/6 MHz */
+ .ref_divider = 100000, /* 1/6 MHz */
+};
+
+#define MANTIS_MODEL_NAME "VP-3030"
+#define MANTIS_DEV_TYPE "DVB-T"
+
+
+static int vp3030_frontend_init(struct mantis_pci *mantis, struct dvb_frontend *fe)
+{
+ struct i2c_adapter *adapter = &mantis->adapter;
+ struct mantis_hwconfig *config = mantis->hwconfig;
+ int err = 0;
+
+ gpio_set_bits(mantis, config->reset, 0);
+ msleep(100);
+ err = mantis_frontend_power(mantis, POWER_ON);
+ msleep(100);
+ gpio_set_bits(mantis, config->reset, 1);
+
+ if (err == 0) {
+ msleep(250);
+ dprintk(MANTIS_ERROR, 1, "Probing for 10353 (DVB-T)");
+ fe = zl10353_attach(&mantis_vp3030_config, adapter);
+
+ if (!fe)
+ return -1;
+
+ tda665x_attach(fe, &env57h12d5_config, adapter);
+ } else {
+ dprintk(MANTIS_ERROR, 1, "Frontend on <%s> POWER ON failed! <%d>",
+ adapter->name,
+ err);
+
+ return -EIO;
+
+ }
+ mantis->fe = fe;
+ dprintk(MANTIS_ERROR, 1, "Done!");
+
+ return 0;
+}
+
+struct mantis_hwconfig vp3030_config = {
+ .model_name = MANTIS_MODEL_NAME,
+ .dev_type = MANTIS_DEV_TYPE,
+ .ts_size = MANTIS_TS_188,
+
+ .baud_rate = MANTIS_BAUD_9600,
+ .parity = MANTIS_PARITY_NONE,
+ .bytes = 0,
+
+ .frontend_init = vp3030_frontend_init,
+ .power = GPIF_A12,
+ .reset = GPIF_A13,
+
+ .i2c_mode = MANTIS_BYTE_MODE
+};