Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2dc1ed4e authored by Abylay Ospan's avatar Abylay Ospan Committed by Mauro Carvalho Chehab
Browse files

[media] Add support Sony HELENE Sat/Ter Tuner



This is Sony HELENE DVB-S/S2 DVB-T/T2 DVB-C/C2 ISDB-T/S tuner
driver (CXD2858ER).

Tuner is used on NetUP Dual Universal DVB CI card (hardware revision 1.4).
Use 'helene_attach_s' to attach tuner in 'satellite mode'.
Use 'helene_attach' for 'terrestrial mode'.

Satellite delivery systems supported:
 DVB-S/S2, ISDB-S

Terrestrial delivery systems supported:
 DVB-T/T2, ISDB-T

Cable delivery systems supported:
 DVB-C/C2

Signed-off-by: default avatarAbylay Ospan <aospan@netup.ru>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent 92a63459
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -853,6 +853,13 @@ config DVB_ASCOT2E
	help
	  Say Y when you want to support this frontend.

config DVB_HELENE
	tristate "Sony HELENE Sat/Ter tuner (CXD2858ER)"
	depends on DVB_CORE && I2C
	default m if !MEDIA_SUBDRV_AUTOSELECT
	help
	Say Y when you want to support this frontend.

comment "Tools to develop new frontends"

config DVB_DUMMY_FE
+1 −0
Original line number Diff line number Diff line
@@ -123,3 +123,4 @@ obj-$(CONFIG_DVB_AS102_FE) += as102_fe.o
obj-$(CONFIG_DVB_TC90522) += tc90522.o
obj-$(CONFIG_DVB_HORUS3A) += horus3a.o
obj-$(CONFIG_DVB_ASCOT2E) += ascot2e.o
obj-$(CONFIG_DVB_HELENE) += helene.o
+1042 −0

File added.

Preview size limit exceeded, changes collapsed.

+79 −0
Original line number Diff line number Diff line
/*
 * helene.h
 *
 * Sony HELENE DVB-S/S2/T/T2/C/C2/ISDB-T/S tuner driver (CXD2858ER)
 *
 * Copyright 2012 Sony Corporation
 * Copyright (C) 2014 NetUP Inc.
 * Copyright (C) 2014 Abylay Ospan <aospan@netup.ru>
 *
 * 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 __DVB_HELENE_H__
#define __DVB_HELENE_H__

#include <linux/kconfig.h>
#include <linux/dvb/frontend.h>
#include <linux/i2c.h>

enum helene_xtal {
	SONY_HELENE_XTAL_16000, /* 16 MHz */
	SONY_HELENE_XTAL_20500, /* 20.5 MHz */
	SONY_HELENE_XTAL_24000, /* 24 MHz */
	SONY_HELENE_XTAL_41000 /* 41 MHz */
};

/**
 * struct helene_config - the configuration of 'Helene' tuner driver
 * @i2c_address:	I2C address of the tuner
 * @xtal_freq_mhz:	Oscillator frequency, MHz
 * @set_tuner_priv:	Callback function private context
 * @set_tuner_callback:	Callback function that notifies the parent driver
 *			which tuner is active now
 */
struct helene_config {
	u8	i2c_address;
	u8	xtal_freq_mhz;
	void	*set_tuner_priv;
	int	(*set_tuner_callback)(void *, int);
	enum helene_xtal xtal;
};

#if IS_REACHABLE(CONFIG_DVB_HELENE)
extern struct dvb_frontend *helene_attach(struct dvb_frontend *fe,
					const struct helene_config *config,
					struct i2c_adapter *i2c);
#else
static inline struct dvb_frontend *helene_attach(struct dvb_frontend *fe,
					const struct helene_config *config,
					struct i2c_adapter *i2c)
{
	pr_warn("%s: driver disabled by Kconfig\n", __func__);
	return NULL;
}
#endif

#if IS_REACHABLE(CONFIG_DVB_HELENE)
extern struct dvb_frontend *helene_attach_s(struct dvb_frontend *fe,
					const struct helene_config *config,
					struct i2c_adapter *i2c);
#else
static inline struct dvb_frontend *helene_attach_s(struct dvb_frontend *fe,
					const struct helene_config *config,
					struct i2c_adapter *i2c)
{
	pr_warn("%s: driver disabled by Kconfig\n", __func__);
	return NULL;
}
#endif

#endif
+6 −1
Original line number Diff line number Diff line
@@ -5,8 +5,13 @@ config DVB_NETUP_UNIDVB
    select VIDEOBUF2_VMALLOC
	select DVB_HORUS3A if MEDIA_SUBDRV_AUTOSELECT
	select DVB_ASCOT2E if MEDIA_SUBDRV_AUTOSELECT
	select DVB_HELENE if MEDIA_SUBDRV_AUTOSELECT
	select DVB_LNBH25 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_CXD2841ER if MEDIA_SUBDRV_AUTOSELECT
	---help---
	  Support for NetUP PCI express Universal DVB card.
     help
	Say Y when you want to support NetUP Dual Universal DVB card
	Card can receive two independent streams in following standards:
		DVB-S/S2, T/T2, C/C2
	Two CI slots available for CAM modules.