blob: 567ed24f2de34d50666bc7069847f854e80ab9eb [file] [log] [blame]
Manu Abrahamb3b96142009-12-04 05:41:11 -03001/*
Manu Abraham8825a092009-12-15 09:13:49 -03002 Hopper VP-3028 driver
Manu Abrahamb3b96142009-12-04 05:41:11 -03003
Manu Abraham8825a092009-12-15 09:13:49 -03004 Copyright (C) Manu Abraham (abraham.manu@gmail.com)
Manu Abrahamb3b96142009-12-04 05:41:11 -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"
32#include "mantis_common.h"
33#include "mantis_ioc.h"
34#include "mantis_dvb.h"
35#include "hopper_vp3028.h"
36
37struct zl10353_config hopper_vp3028_config = {
38 .demod_address = 0x0f,
39};
40
41#define MANTIS_MODEL_NAME "VP-3028"
42#define MANTIS_DEV_TYPE "DVB-T"
43
44static int vp3028_frontend_init(struct mantis_pci *mantis, struct dvb_frontend *fe)
45{
46 struct i2c_adapter *adapter = &mantis->adapter;
Manu Abrahambc832fa2009-12-04 05:57:28 -030047 struct mantis_hwconfig *config = mantis->hwconfig;
Manu Abrahamb3b96142009-12-04 05:41:11 -030048 int err = 0;
49
Manu Abrahambc832fa2009-12-04 05:57:28 -030050 gpio_set_bits(mantis, config->reset, 0);
51 msleep(100);
Manu Abrahamb3b96142009-12-04 05:41:11 -030052 err = mantis_frontend_power(mantis, POWER_ON);
Manu Abrahambc832fa2009-12-04 05:57:28 -030053 msleep(100);
54 gpio_set_bits(mantis, config->reset, 1);
Manu Abrahamb3b96142009-12-04 05:41:11 -030055
Manu Abrahambc832fa2009-12-04 05:57:28 -030056 err = mantis_frontend_power(mantis, POWER_ON);
57 if (err == 0) {
58 msleep(250);
59 dprintk(MANTIS_ERROR, 1, "Probing for 10353 (DVB-T)");
Bjørn Morka22407f2010-11-14 14:24:36 -030060 fe = dvb_attach(zl10353_attach, &hopper_vp3028_config, adapter);
Manu Abrahamb3b96142009-12-04 05:41:11 -030061
Manu Abrahambc832fa2009-12-04 05:57:28 -030062 if (!fe)
63 return -1;
64 } else {
65 dprintk(MANTIS_ERROR, 1, "Frontend on <%s> POWER ON failed! <%d>",
66 adapter->name,
67 err);
Manu Abrahamb3b96142009-12-04 05:41:11 -030068
Manu Abrahambc832fa2009-12-04 05:57:28 -030069 return -EIO;
70 }
Manu Abrahamb3b96142009-12-04 05:41:11 -030071 dprintk(MANTIS_ERROR, 1, "Done!");
72
73 return 0;
74}
75
76struct mantis_hwconfig vp3028_config = {
77 .model_name = MANTIS_MODEL_NAME,
78 .dev_type = MANTIS_DEV_TYPE,
79 .ts_size = MANTIS_TS_188,
80
81 .baud_rate = MANTIS_BAUD_9600,
82 .parity = MANTIS_PARITY_NONE,
83 .bytes = 0,
84
85 .frontend_init = vp3028_frontend_init,
86 .power = GPIF_A00,
87 .reset = GPIF_A03,
88};