summaryrefslogtreecommitdiff
path: root/drivers/media/dvb-frontends/cx24120.h
diff options
context:
space:
mode:
authorJemma Denson <jdenson@gmail.com>2015-04-14 09:04:50 -0300
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>2015-05-18 16:31:35 -0300
commit5afc9a25be8d4e627cf07aa8a7500eafe3664b94 (patch)
treedfdde92a1caa90f87140b3f097ec20d4b2dc1c61 /drivers/media/dvb-frontends/cx24120.h
parent9cae84b32dd52768cf2fd2fcb214c3f570676c4b (diff)
[media] Add support for TechniSat Skystar S2
This patch adds support for the Technisat Skystar S2 - this has been tried before but the cx24120 driver was a bit out of shape and it didn't got any further: https://patchwork.linuxtv.org/patch/10575/ It is an old card, but currently being sold off for next to nothing, so it's proving quite popular of late. Noticing it's quite similar to the cx24116 and cx24117 I've rewritten the driver in a similar way. There were a few registers and commands from those drivers missing from this one I've tested out and found they do something so they've been added in to speed up tuning and to make get_frontend return something useful. Signed-off-by: Jemma Denson <jdenson@gmail.com> Signed-off-by: Patrick.Boettcher <patrick.boettcher@posteo.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Diffstat (limited to 'drivers/media/dvb-frontends/cx24120.h')
-rw-r--r--drivers/media/dvb-frontends/cx24120.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/drivers/media/dvb-frontends/cx24120.h b/drivers/media/dvb-frontends/cx24120.h
new file mode 100644
index 000000000000..9a394d4c70e4
--- /dev/null
+++ b/drivers/media/dvb-frontends/cx24120.h
@@ -0,0 +1,56 @@
+/*
+ * Conexant CX24120/CX24118 - DVB-S/S2 demod/tuner driver
+ *
+ * Copyright (C) 2008 Patrick Boettcher <pb@linuxtv.org>
+ * Copyright (C) 2009 Sergey Tyurin <forum.free-x.de>
+ * Updated 2012 by Jannis Achstetter <jannis_achstetter@web.de>
+ * Copyright (C) 2015 Jemma Denson <jdenson@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.
+ */
+
+#ifndef CX24120_H
+#define CX24120_H
+
+#include <linux/kconfig.h>
+#include <linux/dvb/frontend.h>
+#include <linux/firmware.h>
+
+struct cx24120_initial_mpeg_config {
+ u8 x1;
+ u8 x2;
+ u8 x3;
+};
+
+struct cx24120_config {
+ u8 i2c_addr;
+ u32 xtal_khz;
+ struct cx24120_initial_mpeg_config initial_mpeg_config;
+
+ int (*request_firmware)(struct dvb_frontend *fe,
+ const struct firmware **fw, char *name);
+};
+
+#if IS_REACHABLE(CONFIG_DVB_CX24120)
+extern struct dvb_frontend *cx24120_attach(
+ const struct cx24120_config *config,
+ struct i2c_adapter *i2c);
+#else
+static inline struct dvb_frontend *cx24120_attach(
+ const struct cx24120_config *config,
+ struct i2c_adapter *i2c)
+{
+ printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
+ return NULL;
+}
+#endif
+
+#endif /* CX24120_H */