diff mbox

[RFC] add LNA support for DVB API

Message ID 1342055041-18377-1-git-send-email-crope@iki.fi (mailing list archive)
State New, archived
Headers show

Commit Message

Antti Palosaari July 12, 2012, 1:04 a.m. UTC
Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/dvb/dvb-core/dvb_frontend.c |    5 +++++
 drivers/media/dvb/dvb-core/dvb_frontend.h |    1 +
 include/linux/dvb/frontend.h              |    4 +++-
 3 files changed, 9 insertions(+), 1 deletion(-)

Comments

Antti Palosaari Aug. 9, 2012, 10:38 p.m. UTC | #1
On 07/12/2012 04:04 AM, Antti Palosaari wrote:

Any comment about that?
Should I store value to cache?
Should I offer get too?
Should I offer way to query possible values?

I think that implementation is quite simply and safe to add. Lets extend 
later if really needed...


regards
Antti


> Signed-off-by: Antti Palosaari <crope@iki.fi>
> ---
>   drivers/media/dvb/dvb-core/dvb_frontend.c |    5 +++++
>   drivers/media/dvb/dvb-core/dvb_frontend.h |    1 +
>   include/linux/dvb/frontend.h              |    4 +++-
>   3 files changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.c b/drivers/media/dvb/dvb-core/dvb_frontend.c
> index b54c297..fe22aaa 100644
> --- a/drivers/media/dvb/dvb-core/dvb_frontend.c
> +++ b/drivers/media/dvb/dvb-core/dvb_frontend.c
> @@ -1020,6 +1020,7 @@ static struct dtv_cmds_h dtv_cmds[DTV_MAX_COMMAND + 1] = {
>
>   	_DTV_CMD(DTV_ISDBS_TS_ID, 1, 0),
>   	_DTV_CMD(DTV_DVBT2_PLP_ID, 1, 0),
> +	_DTV_CMD(DTV_LNA, 1, 0),
>
>   	/* Get */
>   	_DTV_CMD(DTV_DISEQC_SLAVE_REPLY, 0, 1),
> @@ -1723,6 +1724,10 @@ static int dtv_property_process_set(struct dvb_frontend *fe,
>   	case DTV_INTERLEAVING:
>   		c->interleaving = tvp->u.data;
>   		break;
> +	case DTV_LNA:
> +		if (fe->ops.set_lna)
> +			r = fe->ops.set_lna(fe, tvp->u.data);
> +		break;
>
>   	/* ISDB-T Support here */
>   	case DTV_ISDBT_PARTIAL_RECEPTION:
> diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.h b/drivers/media/dvb/dvb-core/dvb_frontend.h
> index 31a3d1c..628a821 100644
> --- a/drivers/media/dvb/dvb-core/dvb_frontend.h
> +++ b/drivers/media/dvb/dvb-core/dvb_frontend.h
> @@ -302,6 +302,7 @@ struct dvb_frontend_ops {
>   	int (*dishnetwork_send_legacy_command)(struct dvb_frontend* fe, unsigned long cmd);
>   	int (*i2c_gate_ctrl)(struct dvb_frontend* fe, int enable);
>   	int (*ts_bus_ctrl)(struct dvb_frontend* fe, int acquire);
> +	int (*set_lna)(struct dvb_frontend *, int);
>
>   	/* These callbacks are for devices that implement their own
>   	 * tuning algorithms, rather than a simple swzigzag
> diff --git a/include/linux/dvb/frontend.h b/include/linux/dvb/frontend.h
> index 2dd5823..e28802a 100644
> --- a/include/linux/dvb/frontend.h
> +++ b/include/linux/dvb/frontend.h
> @@ -350,8 +350,9 @@ struct dvb_frontend_event {
>   #define DTV_ATSCMH_SCCC_CODE_MODE_D	59
>
>   #define DTV_INTERLEAVING			60
> +#define DTV_LNA					61
>
> -#define DTV_MAX_COMMAND				DTV_INTERLEAVING
> +#define DTV_MAX_COMMAND				DTV_LNA
>
>   typedef enum fe_pilot {
>   	PILOT_ON,
> @@ -424,6 +425,7 @@ enum atscmh_rs_code_mode {
>   	ATSCMH_RSCODE_RES        = 3,
>   };
>
> +#define LNA_AUTO INT_MIN
>
>   struct dtv_cmds_h {
>   	char	*name;		/* A display name for debugging purposes */
>
diff mbox

Patch

diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.c b/drivers/media/dvb/dvb-core/dvb_frontend.c
index b54c297..fe22aaa 100644
--- a/drivers/media/dvb/dvb-core/dvb_frontend.c
+++ b/drivers/media/dvb/dvb-core/dvb_frontend.c
@@ -1020,6 +1020,7 @@  static struct dtv_cmds_h dtv_cmds[DTV_MAX_COMMAND + 1] = {
 
 	_DTV_CMD(DTV_ISDBS_TS_ID, 1, 0),
 	_DTV_CMD(DTV_DVBT2_PLP_ID, 1, 0),
+	_DTV_CMD(DTV_LNA, 1, 0),
 
 	/* Get */
 	_DTV_CMD(DTV_DISEQC_SLAVE_REPLY, 0, 1),
@@ -1723,6 +1724,10 @@  static int dtv_property_process_set(struct dvb_frontend *fe,
 	case DTV_INTERLEAVING:
 		c->interleaving = tvp->u.data;
 		break;
+	case DTV_LNA:
+		if (fe->ops.set_lna)
+			r = fe->ops.set_lna(fe, tvp->u.data);
+		break;
 
 	/* ISDB-T Support here */
 	case DTV_ISDBT_PARTIAL_RECEPTION:
diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.h b/drivers/media/dvb/dvb-core/dvb_frontend.h
index 31a3d1c..628a821 100644
--- a/drivers/media/dvb/dvb-core/dvb_frontend.h
+++ b/drivers/media/dvb/dvb-core/dvb_frontend.h
@@ -302,6 +302,7 @@  struct dvb_frontend_ops {
 	int (*dishnetwork_send_legacy_command)(struct dvb_frontend* fe, unsigned long cmd);
 	int (*i2c_gate_ctrl)(struct dvb_frontend* fe, int enable);
 	int (*ts_bus_ctrl)(struct dvb_frontend* fe, int acquire);
+	int (*set_lna)(struct dvb_frontend *, int);
 
 	/* These callbacks are for devices that implement their own
 	 * tuning algorithms, rather than a simple swzigzag
diff --git a/include/linux/dvb/frontend.h b/include/linux/dvb/frontend.h
index 2dd5823..e28802a 100644
--- a/include/linux/dvb/frontend.h
+++ b/include/linux/dvb/frontend.h
@@ -350,8 +350,9 @@  struct dvb_frontend_event {
 #define DTV_ATSCMH_SCCC_CODE_MODE_D	59
 
 #define DTV_INTERLEAVING			60
+#define DTV_LNA					61
 
-#define DTV_MAX_COMMAND				DTV_INTERLEAVING
+#define DTV_MAX_COMMAND				DTV_LNA
 
 typedef enum fe_pilot {
 	PILOT_ON,
@@ -424,6 +425,7 @@  enum atscmh_rs_code_mode {
 	ATSCMH_RSCODE_RES        = 3,
 };
 
+#define LNA_AUTO INT_MIN
 
 struct dtv_cmds_h {
 	char	*name;		/* A display name for debugging purposes */