From: Jemma Denson <jdenson@gmail.com>
To: linux-media@vger.kernel.org
Cc: mchehab@osg.samsung.com, patrick.boettcher@posteo.de,
Jemma Denson <jdenson@gmail.com>
Subject: [PATCH v2 4/4] cx24120: Take control of b2c2 streams
Date: Sat, 30 May 2015 19:10:09 +0100 [thread overview]
Message-ID: <1433009409-5622-5-git-send-email-jdenson@gmail.com> (raw)
In-Reply-To: <1433009409-5622-1-git-send-email-jdenson@gmail.com>
Now that b2c2 has an option to allow us to do so, turn off the
flexcop streams when we turn off mpeg output whilst tuning.
Signed-off-by: Jemma Denson <jdenson@gmail.com>
---
drivers/media/common/b2c2/flexcop-fe-tuner.c | 10 ++++++++++
drivers/media/dvb-frontends/cx24120.c | 29 +++++++++++++++++++---------
drivers/media/dvb-frontends/cx24120.h | 1 +
3 files changed, 31 insertions(+), 9 deletions(-)
diff --git a/drivers/media/common/b2c2/flexcop-fe-tuner.c b/drivers/media/common/b2c2/flexcop-fe-tuner.c
index 31ebf1e..706ff26 100644
--- a/drivers/media/common/b2c2/flexcop-fe-tuner.c
+++ b/drivers/media/common/b2c2/flexcop-fe-tuner.c
@@ -625,11 +625,20 @@ fail:
/* SkyStar S2 PCI DVB-S/S2 card based on Conexant cx24120/cx24118 */
#if FE_SUPPORTED(CX24120) && FE_SUPPORTED(ISL6421)
+static int skystarS2_rev33_stream_control(struct dvb_frontend *fe, int onoff)
+{
+ struct flexcop_device *fc = fe->dvb->priv;
+
+ flexcop_external_stream_control(fc, onoff);
+ return 0;
+}
+
static const struct cx24120_config skystar2_rev3_3_cx24120_config = {
.i2c_addr = 0x55,
.xtal_khz = 10111,
.initial_mpeg_config = { 0xa1, 0x76, 0x07 },
.request_firmware = flexcop_fe_request_firmware,
+ .stream_control = skystarS2_rev33_stream_control,
.i2c_wr_max = 4,
};
@@ -651,6 +660,7 @@ static int skystarS2_rev33_attach(struct flexcop_device *fc,
}
info("ISL6421 successfully attached.");
+ fc->use_external_stream_control = 1;
if (fc->has_32_hw_pid_filter)
fc->skip_6_hw_pid_filter = 1;
diff --git a/drivers/media/dvb-frontends/cx24120.c b/drivers/media/dvb-frontends/cx24120.c
index a14d0f1..d625c1c 100644
--- a/drivers/media/dvb-frontends/cx24120.c
+++ b/drivers/media/dvb-frontends/cx24120.c
@@ -371,6 +371,8 @@ static void cx24120_check_cmd(struct cx24120_state *state, u8 id)
case CMD_DISEQC_BURST:
cx24120_msg_mpeg_output_global_config(state, 0);
/* Old driver would do a msleep(100) here */
+ state->config->stream_control(&state->frontend, 0);
+ state->mpeg_enabled = 0;
default:
return;
}
@@ -382,10 +384,9 @@ static int cx24120_message_send(struct cx24120_state *state,
{
int ficus;
- if (state->mpeg_enabled) {
- /* Disable mpeg out on certain commands */
+ /* If controlling stream, turn if off whilst tuning */
+ if (state->config->stream_control && state->mpeg_enabled)
cx24120_check_cmd(state, cmd->id);
- }
cx24120_writereg(state, CX24120_REG_CMD_START, cmd->id);
cx24120_writeregs(state, CX24120_REG_CMD_ARGS, &cmd->arg[0],
@@ -464,7 +465,6 @@ static int cx24120_msg_mpeg_output_global_config(struct cx24120_state *state,
return ret;
}
- state->mpeg_enabled = enable;
dev_dbg(&state->i2c->dev, "MPEG output %s\n",
enable ? "enabled" : "disabled");
@@ -743,11 +743,13 @@ static int cx24120_read_status(struct dvb_frontend *fe, fe_status_t *status)
/* Set clock ratios */
cx24120_set_clock_ratios(fe);
- /* Old driver would do a msleep(200) here */
-
/* Renable mpeg output */
- if (!state->mpeg_enabled)
+ if (state->config->stream_control && !state->mpeg_enabled) {
+ /* Old driver would do a msleep(200) here */
cx24120_msg_mpeg_output_global_config(state, 1);
+ state->config->stream_control(fe, 1);
+ state->mpeg_enabled = 1;
+ }
state->need_clock_set = 0;
}
@@ -1418,8 +1420,17 @@ static int cx24120_init(struct dvb_frontend *fe)
/* Initialise mpeg outputs */
cx24120_writereg(state, 0xeb, 0x0a);
- if (cx24120_msg_mpeg_output_global_config(state, 0) ||
- cx24120_msg_mpeg_output_config(state, 0) ||
+
+ /* Enable global output now if we're not doing stream control */
+ if (!state->config->stream_control)
+ ret = cx24120_msg_mpeg_output_global_config(state, 1);
+ else
+ ret = cx24120_msg_mpeg_output_global_config(state, 0);
+
+ if (ret != 0)
+ return ret;
+
+ if (cx24120_msg_mpeg_output_config(state, 0) ||
cx24120_msg_mpeg_output_config(state, 1) ||
cx24120_msg_mpeg_output_config(state, 2)) {
err("Error initialising mpeg output. :(\n");
diff --git a/drivers/media/dvb-frontends/cx24120.h b/drivers/media/dvb-frontends/cx24120.h
index f097042..313518c 100644
--- a/drivers/media/dvb-frontends/cx24120.h
+++ b/drivers/media/dvb-frontends/cx24120.h
@@ -37,6 +37,7 @@ struct cx24120_config {
int (*request_firmware)(struct dvb_frontend *fe,
const struct firmware **fw, char *name);
+ int (*stream_control)(struct dvb_frontend *fe, int onoff);
/* max bytes I2C provider can write at once */
u16 i2c_wr_max;
--
2.1.0
prev parent reply other threads:[~2015-05-30 18:10 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-30 18:10 [PATCH v2 0/4] SkystarS2 pid filtering fix and stream control Jemma Denson
2015-05-30 18:10 ` [PATCH v2 1/4] b2c2: Add option to skip the first 6 pid filters Jemma Denson
2015-06-01 6:14 ` Antti Palosaari
2015-06-01 8:08 ` Jemma Denson
2015-06-01 8:44 ` Patrick Boettcher
2015-05-30 18:10 ` [PATCH v2 2/4] b2c2: Move stream reset code from flexcop-pci to flexcop Jemma Denson
2015-05-30 18:10 ` [PATCH v2 3/4] b2c2: Add external stream control Jemma Denson
2015-05-30 18:10 ` Jemma Denson [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1433009409-5622-5-git-send-email-jdenson@gmail.com \
--to=jdenson@gmail.com \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@osg.samsung.com \
--cc=patrick.boettcher@posteo.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.