blob: 1f4334214953f4c43caa5d896340005f39278dad [file] [log] [blame]
Manu Abraham41e840b2009-12-02 21:57:10 -03001/*
2 Mantis VP-3030 driver
3
Manu Abraham8825a092009-12-15 09:13:49 -03004 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
Manu Abraham41e840b2009-12-02 21:57:10 -03005
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19*/
20
Manu Abrahamb3b96142009-12-04 05:41:11 -030021#include <linux/signal.h>
22#include <linux/sched.h>
23#include <linux/interrupt.h>
24
25#include "dmxdev.h"
26#include "dvbdev.h"
27#include "dvb_demux.h"
28#include "dvb_frontend.h"
29#include "dvb_net.h"
30
31#include "zl10353.h"
Manu Abraham3e978a82009-12-04 05:56:35 -030032#include "tda665x.h"
Manu Abraham41e840b2009-12-02 21:57:10 -030033#include "mantis_common.h"
Manu Abraham3e978a82009-12-04 05:56:35 -030034#include "mantis_ioc.h"
35#include "mantis_dvb.h"
Manu Abraham41e840b2009-12-02 21:57:10 -030036#include "mantis_vp3030.h"
37
38struct zl10353_config mantis_vp3030_config = {
Manu Abraham3e978a82009-12-04 05:56:35 -030039 .demod_address = 0x0f,
40};
41
42struct tda665x_config env57h12d5_config = {
43 .name = "ENV57H12D5 (ET-50DT)",
44 .addr = 0x60,
45 .frequency_min = 47000000,
46 .frequency_max = 862000000,
47 .frequency_offst = 3616667,
48 .ref_multiplier = 6, /* 1/6 MHz */
49 .ref_divider = 100000, /* 1/6 MHz */
Manu Abrahamdf0cca12009-12-02 22:07:24 -030050};
51
52#define MANTIS_MODEL_NAME "VP-3030"
53#define MANTIS_DEV_TYPE "DVB-T"
54
Manu Abrahamb3b96142009-12-04 05:41:11 -030055
56static int vp3030_frontend_init(struct mantis_pci *mantis, struct dvb_frontend *fe)
57{
58 struct i2c_adapter *adapter = &mantis->adapter;
Manu Abraham3e978a82009-12-04 05:56:35 -030059 struct mantis_hwconfig *config = mantis->hwconfig;
60 int err = 0;
61
62 gpio_set_bits(mantis, config->reset, 0);
63 msleep(100);
64 err = mantis_frontend_power(mantis, POWER_ON);
65 msleep(100);
66 gpio_set_bits(mantis, config->reset, 1);
Manu Abrahamb3b96142009-12-04 05:41:11 -030067
Manu Abrahambc832fa2009-12-04 05:57:28 -030068 if (err == 0) {
69 msleep(250);
70 dprintk(MANTIS_ERROR, 1, "Probing for 10353 (DVB-T)");
71 fe = zl10353_attach(&mantis_vp3030_config, adapter);
Manu Abrahamb3b96142009-12-04 05:41:11 -030072
Manu Abrahambc832fa2009-12-04 05:57:28 -030073 if (!fe)
74 return -1;
Manu Abrahamb3b96142009-12-04 05:41:11 -030075
Manu Abrahambc832fa2009-12-04 05:57:28 -030076 tda665x_attach(fe, &env57h12d5_config, adapter);
77 } else {
78 dprintk(MANTIS_ERROR, 1, "Frontend on <%s> POWER ON failed! <%d>",
79 adapter->name,
80 err);
81
82 return -EIO;
83
84 }
Manu Abrahamb3b96142009-12-04 05:41:11 -030085 mantis->fe = fe;
86 dprintk(MANTIS_ERROR, 1, "Done!");
87
88 return 0;
89}
90
91struct mantis_hwconfig vp3030_config = {
92 .model_name = MANTIS_MODEL_NAME,
93 .dev_type = MANTIS_DEV_TYPE,
94 .ts_size = MANTIS_TS_188,
95
96 .baud_rate = MANTIS_BAUD_9600,
97 .parity = MANTIS_PARITY_NONE,
98 .bytes = 0,
99
100 .frontend_init = vp3030_frontend_init,
Manu Abraham3e978a82009-12-04 05:56:35 -0300101 .power = GPIF_A12,
102 .reset = GPIF_A13,
Manu Abrahambc832fa2009-12-04 05:57:28 -0300103
104 .i2c_mode = MANTIS_BYTE_MODE
Manu Abrahamb3b96142009-12-04 05:41:11 -0300105};