Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael...
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / media / dvb / mantis / mantis_vp3030.c
CommitLineData
41e840b1
MA
1/*
2 Mantis VP-3030 driver
3
8825a097 4 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
41e840b1
MA
5
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
b3b96144
MA
21#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"
3e978a82 32#include "tda665x.h"
41e840b1 33#include "mantis_common.h"
3e978a82
MA
34#include "mantis_ioc.h"
35#include "mantis_dvb.h"
41e840b1
MA
36#include "mantis_vp3030.h"
37
38struct zl10353_config mantis_vp3030_config = {
3e978a82
MA
39 .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 */
df0cca17
MA
50};
51
52#define MANTIS_MODEL_NAME "VP-3030"
53#define MANTIS_DEV_TYPE "DVB-T"
54
b3b96144
MA
55
56static int vp3030_frontend_init(struct mantis_pci *mantis, struct dvb_frontend *fe)
57{
58 struct i2c_adapter *adapter = &mantis->adapter;
3e978a82
MA
59 struct mantis_hwconfig *config = mantis->hwconfig;
60 int err = 0;
61
3037fd14 62 mantis_gpio_set_bits(mantis, config->reset, 0);
3e978a82
MA
63 msleep(100);
64 err = mantis_frontend_power(mantis, POWER_ON);
65 msleep(100);
3037fd14 66 mantis_gpio_set_bits(mantis, config->reset, 1);
b3b96144 67
bc832fa2
MA
68 if (err == 0) {
69 msleep(250);
70 dprintk(MANTIS_ERROR, 1, "Probing for 10353 (DVB-T)");
a22407fa 71 fe = dvb_attach(zl10353_attach, &mantis_vp3030_config, adapter);
b3b96144 72
bc832fa2
MA
73 if (!fe)
74 return -1;
b3b96144 75
a22407fa 76 dvb_attach(tda665x_attach, fe, &env57h12d5_config, adapter);
bc832fa2
MA
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 }
b3b96144
MA
85 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,
3e978a82
MA
101 .power = GPIF_A12,
102 .reset = GPIF_A13,
bc832fa2
MA
103
104 .i2c_mode = MANTIS_BYTE_MODE
b3b96144 105};