m88rs2000: LNB voltage control implemented

Message ID 4246147.n44n5i5ILa@useri (mailing list archive)
State Accepted, archived
Headers

Commit Message

Igor M. Liplianin May 8, 2012, 8:25 a.m. UTC
  Trival patch to get it working with my cards stuff.

Signed-off-by: Igor M. Liplianin <liplianin@me.by>
  

Comments

Malcolm Priestley May 8, 2012, 11:37 p.m. UTC | #1
On Tue, 2012-05-08 at 11:25 +0300, Igor M. Liplianin wrote:
> Trival patch to get it working with my cards stuff.
> 
> Signed-off-by: Igor M. Liplianin <liplianin@me.by>
Acked-by: Malcolm Priestley <tvboxspy@gmail.com>

> differences between files attachment (rs2000volt.patch)
> diff --git a/drivers/media/dvb/frontends/m88rs2000.c b/drivers/media/dvb/frontends/m88rs2000.c index 547230d..f6d6e39 100644 --- a/drivers/media/dvb/frontends/m88rs2000.c +++ b/drivers/media/dvb/frontends/m88rs2000.c @@ -416,9 +416,25 @@ static int m88rs2000_tab_set(struct m88rs2000_state *state, static int m88rs2000_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t volt) { -	deb_info("%s: %s\n", __func__, -		volt == SEC_VOLTAGE_13 ? "SEC_VOLTAGE_13" : -		volt == SEC_VOLTAGE_18 ? "SEC_VOLTAGE_18" : "??"); +	struct m88rs2000_state *state = fe->demodulator_priv; +	u8 data; + +	data = m88rs2000_demod_read(state, 0xb2); +	data |= 0x03; /* bit0 V/H, bit1 off/on */ + +	switch (volt) { +	case SEC_VOLTAGE_18: +		data &= ~0x03; +		break; +	case SEC_VOLTAGE_13: +		data &= ~0x03; +		data |= 0x01; +		break; +	case SEC_VOLTAGE_OFF: +		break; +	} + +	m88rs2000_demod_write(state, 0xb2, data); 	return 0; }
Regards


Malcolm

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  

Patch

diff --git a/drivers/media/dvb/frontends/m88rs2000.c b/drivers/media/dvb/frontends/m88rs2000.c
index 547230d..f6d6e39 100644
--- a/drivers/media/dvb/frontends/m88rs2000.c
+++ b/drivers/media/dvb/frontends/m88rs2000.c
@@ -416,9 +416,25 @@  static int m88rs2000_tab_set(struct m88rs2000_state *state,
 
 static int m88rs2000_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t volt)
 {
-	deb_info("%s: %s\n", __func__,
-		volt == SEC_VOLTAGE_13 ? "SEC_VOLTAGE_13" :
-		volt == SEC_VOLTAGE_18 ? "SEC_VOLTAGE_18" : "??");
+	struct m88rs2000_state *state = fe->demodulator_priv;
+	u8 data;
+
+	data = m88rs2000_demod_read(state, 0xb2);
+	data |= 0x03; /* bit0 V/H, bit1 off/on */
+
+	switch (volt) {
+	case SEC_VOLTAGE_18:
+		data &= ~0x03;
+		break;
+	case SEC_VOLTAGE_13:
+		data &= ~0x03;
+		data |= 0x01;
+		break;
+	case SEC_VOLTAGE_OFF:
+		break;
+	}
+
+	m88rs2000_demod_write(state, 0xb2, data);
 
 	return 0;
 }