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

Commit ae8dc8ee authored by Malcolm Priestley's avatar Malcolm Priestley Committed by Mauro Carvalho Chehab
Browse files

[media] m88rs2000 1.12 v2 DVB-S frontend and tuner module



Support for m88rs2000 chip used in lmedm04 driver.

Note there are still lock problems.

Slow channel change due to the large block of registers sent in set_frontend.

Version 2 differences.
Front end is completely shut down when in sleep mode. This allow user to regain
control of device.
Kaffeine scan problem solved by removing register calls from get_frontend.
Kaffeine seems to call get_frontend when updating signal data. This can happen
in the middle of a tune stalling the driver.
Change calculations to those in the DS3000 driver.

Signed-off-by: default avatarMalcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 77c2402d
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -705,6 +705,14 @@ config DVB_IT913X_FE
	  A DVB-T tuner module.
	  Say Y when you want to support this frontend.

config DVB_M88RS2000
	tristate "M88RS2000 DVB-S demodulator and tuner"
	depends on DVB_CORE && I2C
	default m if DVB_FE_CUSTOMISE
	help
	  A DVB-S tuner module.
	  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
@@ -97,4 +97,5 @@ obj-$(CONFIG_DVB_IT913X_FE) += it913x-fe.o
obj-$(CONFIG_DVB_A8293) += a8293.o
obj-$(CONFIG_DVB_TDA10071) += tda10071.o
obj-$(CONFIG_DVB_RTL2830) += rtl2830.o
obj-$(CONFIG_DVB_M88RS2000) += m88rs2000.o
+906 −0

File added.

Preview size limit exceeded, changes collapsed.

+66 −0
Original line number Diff line number Diff line
/*
	Driver for M88RS2000 demodulator

	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.

	You should have received a copy of the GNU General Public License
	along with this program; if not, write to the Free Software
	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

*/

#ifndef M88RS2000_H
#define M88RS2000_H

#include <linux/dvb/frontend.h>
#include "dvb_frontend.h"

struct m88rs2000_config {
	/* Demodulator i2c address */
	u8 demod_addr;
	/* Tuner address */
	u8 tuner_addr;

	u8 *inittab;

	/* minimum delay before retuning */
	int min_delay_ms;

	int (*set_ts_params)(struct dvb_frontend *, int);
};

enum {
	CALL_IS_SET_FRONTEND = 0x0,
	CALL_IS_READ,
};

#if defined(CONFIG_DVB_M88RS2000) || (defined(CONFIG_DVB_M88RS2000_MODULE) && \
							defined(MODULE))
extern struct dvb_frontend *m88rs2000_attach(
	const struct m88rs2000_config *config, struct i2c_adapter *i2c);
#else
static inline struct dvb_frontend *m88rs2000_attach(
	const struct m88rs2000_config *config, struct i2c_adapter *i2c)
{
	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
	return NULL;
}
#endif /* CONFIG_DVB_M88RS2000 */

#define FE_CRYSTAL_KHZ 27000
#define FREQ_OFFSET_LOW_SYM_RATE 3000

enum {
	DEMOD_WRITE = 0x1,
	TUNER_WRITE,
	WRITE_DELAY = 0x10,
};
#endif /* M88RS2000_H */