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

Commit 74ea15d9 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
  [media] cinergyT2-fe: Fix bandwdith settings
  [media] V4L: atmel-isi: add clk_prepare()/clk_unprepare() functions
  [media] cxd2820r: sleep on DVB-T/T2 delivery system switch
  [media] anysee: fix CI init
  [media] cxd2820r: remove unused parameter from cxd2820r_attach
  [media] cxd2820r: fix dvb_frontend_ops
parents c75d5c5d c79eba92
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -887,8 +887,7 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)

		/* attach demod */
		adap->fe_adap[state->fe_id].fe = dvb_attach(cxd2820r_attach,
				&anysee_cxd2820r_config, &adap->dev->i2c_adap,
				NULL);
				&anysee_cxd2820r_config, &adap->dev->i2c_adap);

		state->has_ci = true;

@@ -1189,6 +1188,14 @@ static int anysee_ci_init(struct dvb_usb_device *d)
	if (ret)
		return ret;

	ret = anysee_wr_reg_mask(d, REG_IOD, (0 << 2)|(0 << 1)|(0 << 0), 0x07);
	if (ret)
		return ret;

	ret = anysee_wr_reg_mask(d, REG_IOD, (1 << 2)|(1 << 1)|(1 << 0), 0x07);
	if (ret)
		return ret;

	ret = dvb_ca_en50221_init(&d->adapter[0].dvb_adap, &state->ci, 0, 1);
	if (ret)
		return ret;
+4 −3
Original line number Diff line number Diff line
@@ -276,14 +276,15 @@ static int cinergyt2_fe_set_frontend(struct dvb_frontend *fe)
	param.flags = 0;

	switch (fep->bandwidth_hz) {
	default:
	case 8000000:
		param.bandwidth = 0;
		param.bandwidth = 8;
		break;
	case 7000000:
		param.bandwidth = 1;
		param.bandwidth = 7;
		break;
	case 6000000:
		param.bandwidth = 2;
		param.bandwidth = 6;
		break;
	}

+2 −4
Original line number Diff line number Diff line
@@ -77,14 +77,12 @@ struct cxd2820r_config {
	(defined(CONFIG_DVB_CXD2820R_MODULE) && defined(MODULE))
extern struct dvb_frontend *cxd2820r_attach(
	const struct cxd2820r_config *config,
	struct i2c_adapter *i2c,
	struct dvb_frontend *fe
	struct i2c_adapter *i2c
);
#else
static inline struct dvb_frontend *cxd2820r_attach(
	const struct cxd2820r_config *config,
	struct i2c_adapter *i2c,
	struct dvb_frontend *fe
	struct i2c_adapter *i2c
)
{
	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
+15 −5
Original line number Diff line number Diff line
@@ -482,11 +482,20 @@ static enum dvbfe_search cxd2820r_search(struct dvb_frontend *fe)

	/* switch between DVB-T and DVB-T2 when tune fails */
	if (priv->last_tune_failed) {
		if (priv->delivery_system == SYS_DVBT)
		if (priv->delivery_system == SYS_DVBT) {
			ret = cxd2820r_sleep_t(fe);
			if (ret)
				goto error;

			c->delivery_system = SYS_DVBT2;
		else if (priv->delivery_system == SYS_DVBT2)
		} else if (priv->delivery_system == SYS_DVBT2) {
			ret = cxd2820r_sleep_t2(fe);
			if (ret)
				goto error;

			c->delivery_system = SYS_DVBT;
		}
	}

	/* set frontend */
	ret = cxd2820r_set_frontend(fe);
@@ -562,7 +571,7 @@ static const struct dvb_frontend_ops cxd2820r_ops = {
	.delsys = { SYS_DVBT, SYS_DVBT2, SYS_DVBC_ANNEX_A },
	/* default: DVB-T/T2 */
	.info = {
		.name = "Sony CXD2820R (DVB-T/T2)",
		.name = "Sony CXD2820R",

		.caps =	FE_CAN_FEC_1_2			|
			FE_CAN_FEC_2_3			|
@@ -572,7 +581,9 @@ static const struct dvb_frontend_ops cxd2820r_ops = {
			FE_CAN_FEC_AUTO			|
			FE_CAN_QPSK			|
			FE_CAN_QAM_16			|
			FE_CAN_QAM_32			|
			FE_CAN_QAM_64			|
			FE_CAN_QAM_128			|
			FE_CAN_QAM_256			|
			FE_CAN_QAM_AUTO			|
			FE_CAN_TRANSMISSION_MODE_AUTO	|
@@ -602,8 +613,7 @@ static const struct dvb_frontend_ops cxd2820r_ops = {
};

struct dvb_frontend *cxd2820r_attach(const struct cxd2820r_config *cfg,
				     struct i2c_adapter *i2c,
				     struct dvb_frontend *fe)
		struct i2c_adapter *i2c)
{
	struct cxd2820r_priv *priv = NULL;
	int ret;
+14 −0
Original line number Diff line number Diff line
@@ -922,7 +922,9 @@ static int __devexit atmel_isi_remove(struct platform_device *pdev)
			isi->fb_descriptors_phys);

	iounmap(isi->regs);
	clk_unprepare(isi->mck);
	clk_put(isi->mck);
	clk_unprepare(isi->pclk);
	clk_put(isi->pclk);
	kfree(isi);

@@ -955,6 +957,10 @@ static int __devinit atmel_isi_probe(struct platform_device *pdev)
	if (IS_ERR(pclk))
		return PTR_ERR(pclk);

	ret = clk_prepare(pclk);
	if (ret)
		goto err_clk_prepare_pclk;

	isi = kzalloc(sizeof(struct atmel_isi), GFP_KERNEL);
	if (!isi) {
		ret = -ENOMEM;
@@ -978,6 +984,10 @@ static int __devinit atmel_isi_probe(struct platform_device *pdev)
		goto err_clk_get;
	}

	ret = clk_prepare(isi->mck);
	if (ret)
		goto err_clk_prepare_mck;

	/* Set ISI_MCK's frequency, it should be faster than pixel clock */
	ret = clk_set_rate(isi->mck, pdata->mck_hz);
	if (ret < 0)
@@ -1059,10 +1069,14 @@ static int __devinit atmel_isi_probe(struct platform_device *pdev)
			isi->fb_descriptors_phys);
err_alloc_descriptors:
err_set_mck_rate:
	clk_unprepare(isi->mck);
err_clk_prepare_mck:
	clk_put(isi->mck);
err_clk_get:
	kfree(isi);
err_alloc_isi:
	clk_unprepare(pclk);
err_clk_prepare_pclk:
	clk_put(pclk);

	return ret;
Loading