All of lore.kernel.org
 help / color / mirror / Atom feed
* [GIT PULL FINAL 00/21] misc DTV stuff for 3.18
@ 2014-08-22 10:57 Antti Palosaari
  2014-08-22 10:57 ` [GIT PULL FINAL 01/21] si2168: clean logging Antti Palosaari
                   ` (22 more replies)
  0 siblings, 23 replies; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:57 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov, Antti Palosaari

Moikka
I picked these from patchwork and this is just final review before
PULL request I will send very shortly. I don't expect any change
requests at this late, without a very good reason :)

However, I could add some tags until Mauro PULLs to master.

regards
Antti

Antti Palosaari (10):
  dvb-usb-v2: remove dvb_usb_device NULL check
  msi2500: remove unneeded local pointer on msi2500_isoc_init()
  m88ts2022: fix 32bit overflow on filter calc
  m88ts2022: fix coding style issues
  m88ts2022: rename device state (priv => s)
  m88ts2022: clean up logging
  m88ts2022: convert to RegMap I2C API
  m88ts2022: change parameter type of m88ts2022_cmd
  m88ds3103: change .set_voltage() implementation
  m88ds3103: fix coding style issues

CrazyCat (1):
  si2168: DVB-T2 PLP selection implemented

Olli Salonen (9):
  si2168: clean logging
  si2157: clean logging
  si2168: add ts_mode setting and move to si2168_init
  em28xx: add ts mode setting for PCTV 292e
  cxusb: add ts mode setting for TechnoTrend CT2-4400
  sp2: Add I2C driver for CIMaX SP2 common interface module
  cxusb: Add support for TechnoTrend TT-connect CT2-4650 CI
  cxusb: Add read_mac_address for TT CT2-4400 and CT2-4650
  si2157: Add support for delivery system SYS_ATSC

nibble.max (1):
  m88ds3103: implement set voltage and TS clock

 drivers/media/dvb-core/dvb-usb-ids.h       |   1 +
 drivers/media/dvb-frontends/Kconfig        |   7 +
 drivers/media/dvb-frontends/Makefile       |   1 +
 drivers/media/dvb-frontends/m88ds3103.c    | 101 +++++--
 drivers/media/dvb-frontends/m88ds3103.h    |  35 ++-
 drivers/media/dvb-frontends/si2168.c       | 101 ++++---
 drivers/media/dvb-frontends/si2168.h       |   6 +
 drivers/media/dvb-frontends/si2168_priv.h  |   1 +
 drivers/media/dvb-frontends/sp2.c          | 441 +++++++++++++++++++++++++++++
 drivers/media/dvb-frontends/sp2.h          |  53 ++++
 drivers/media/dvb-frontends/sp2_priv.h     |  50 ++++
 drivers/media/tuners/Kconfig               |   1 +
 drivers/media/tuners/m88ts2022.c           | 355 +++++++++--------------
 drivers/media/tuners/m88ts2022_priv.h      |   5 +-
 drivers/media/tuners/si2157.c              |  55 ++--
 drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c |   2 +-
 drivers/media/usb/dvb-usb/Kconfig          |   2 +-
 drivers/media/usb/dvb-usb/cxusb.c          | 128 ++++++++-
 drivers/media/usb/dvb-usb/cxusb.h          |   4 +
 drivers/media/usb/em28xx/em28xx-dvb.c      |   5 +-
 drivers/media/usb/msi2500/msi2500.c        |   9 +-
 21 files changed, 1022 insertions(+), 341 deletions(-)
 create mode 100644 drivers/media/dvb-frontends/sp2.c
 create mode 100644 drivers/media/dvb-frontends/sp2.h
 create mode 100644 drivers/media/dvb-frontends/sp2_priv.h

-- 
http://palosaari.fi/


^ permalink raw reply	[flat|nested] 34+ messages in thread

* [GIT PULL FINAL 01/21] si2168: clean logging
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
@ 2014-08-22 10:57 ` Antti Palosaari
  2014-08-22 11:47   ` Mauro Carvalho Chehab
  2014-08-22 10:57 ` [GIT PULL FINAL 02/21] si2157: " Antti Palosaari
                   ` (21 subsequent siblings)
  22 siblings, 1 reply; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:57 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov, Antti Palosaari

From: Olli Salonen <olli.salonen@iki.fi>

Same thing for si2168 as Antti did earlier for tda18212:

There is no need to print module name nor function name as those
are done by kernel logging system when dev_xxx logging is used and
driver is proper I2C driver.

Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
Reviewed-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/dvb-frontends/si2168.c | 70 +++++++++++++++++-------------------
 1 file changed, 33 insertions(+), 37 deletions(-)

diff --git a/drivers/media/dvb-frontends/si2168.c b/drivers/media/dvb-frontends/si2168.c
index 8f81d97..59a4218 100644
--- a/drivers/media/dvb-frontends/si2168.c
+++ b/drivers/media/dvb-frontends/si2168.c
@@ -55,8 +55,7 @@ static int si2168_cmd_execute(struct si2168 *s, struct si2168_cmd *cmd)
 				break;
 		}
 
-		dev_dbg(&s->client->dev, "%s: cmd execution took %d ms\n",
-				__func__,
+		dev_dbg(&s->client->dev, "cmd execution took %d ms\n",
 				jiffies_to_msecs(jiffies) -
 				(jiffies_to_msecs(timeout) - TIMEOUT));
 
@@ -75,7 +74,7 @@ err_mutex_unlock:
 
 	return 0;
 err:
-	dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
+	dev_dbg(&s->client->dev, "failed=%d\n", ret);
 	return ret;
 }
 
@@ -150,12 +149,12 @@ static int si2168_read_status(struct dvb_frontend *fe, fe_status_t *status)
 		c->cnr.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
 	}
 
-	dev_dbg(&s->client->dev, "%s: status=%02x args=%*ph\n",
-			__func__, *status, cmd.rlen, cmd.args);
+	dev_dbg(&s->client->dev, "status=%02x args=%*ph\n",
+			*status, cmd.rlen, cmd.args);
 
 	return 0;
 err:
-	dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
+	dev_dbg(&s->client->dev, "failed=%d\n", ret);
 	return ret;
 }
 
@@ -168,8 +167,8 @@ static int si2168_set_frontend(struct dvb_frontend *fe)
 	u8 bandwidth, delivery_system;
 
 	dev_dbg(&s->client->dev,
-			"%s: delivery_system=%u modulation=%u frequency=%u bandwidth_hz=%u symbol_rate=%u inversion=%u\n",
-			__func__, c->delivery_system, c->modulation,
+			"delivery_system=%u modulation=%u frequency=%u bandwidth_hz=%u symbol_rate=%u inversion=%u\n",
+			c->delivery_system, c->modulation,
 			c->frequency, c->bandwidth_hz, c->symbol_rate,
 			c->inversion);
 
@@ -343,7 +342,7 @@ static int si2168_set_frontend(struct dvb_frontend *fe)
 
 	return 0;
 err:
-	dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
+	dev_dbg(&s->client->dev, "failed=%d\n", ret);
 	return ret;
 }
 
@@ -357,7 +356,7 @@ static int si2168_init(struct dvb_frontend *fe)
 	struct si2168_cmd cmd;
 	unsigned int chip_id;
 
-	dev_dbg(&s->client->dev, "%s:\n", __func__);
+	dev_dbg(&s->client->dev, "\n");
 
 	memcpy(cmd.args, "\xc0\x12\x00\x0c\x00\x0d\x16\x00\x00\x00\x00\x00\x00", 13);
 	cmd.wlen = 13;
@@ -400,16 +399,16 @@ static int si2168_init(struct dvb_frontend *fe)
 		break;
 	default:
 		dev_err(&s->client->dev,
-				"%s: unkown chip version Si21%d-%c%c%c\n",
-				KBUILD_MODNAME, cmd.args[2], cmd.args[1],
+				"unknown chip version Si21%d-%c%c%c\n",
+				cmd.args[2], cmd.args[1],
 				cmd.args[3], cmd.args[4]);
 		ret = -EINVAL;
 		goto err;
 	}
 
 	/* cold state - try to download firmware */
-	dev_info(&s->client->dev, "%s: found a '%s' in cold state\n",
-			KBUILD_MODNAME, si2168_ops.info.name);
+	dev_info(&s->client->dev, "found a '%s' in cold state\n",
+			si2168_ops.info.name);
 
 	/* request the firmware, this will block and timeout */
 	ret = request_firmware(&fw, fw_file, &s->client->dev);
@@ -422,18 +421,18 @@ static int si2168_init(struct dvb_frontend *fe)
 
 		if (ret == 0) {
 			dev_notice(&s->client->dev,
-					"%s: please install firmware file '%s'\n",
-					KBUILD_MODNAME, SI2168_B40_FIRMWARE);
+					"please install firmware file '%s'\n",
+					SI2168_B40_FIRMWARE);
 		} else {
 			dev_err(&s->client->dev,
-					"%s: firmware file '%s' not found\n",
-					KBUILD_MODNAME, fw_file);
+					"firmware file '%s' not found\n",
+					fw_file);
 			goto err;
 		}
 	}
 
-	dev_info(&s->client->dev, "%s: downloading firmware from file '%s'\n",
-			KBUILD_MODNAME, fw_file);
+	dev_info(&s->client->dev, "downloading firmware from file '%s'\n",
+			fw_file);
 
 	for (remaining = fw->size; remaining > 0; remaining -= i2c_wr_max) {
 		len = remaining;
@@ -446,8 +445,8 @@ static int si2168_init(struct dvb_frontend *fe)
 		ret = si2168_cmd_execute(s, &cmd);
 		if (ret) {
 			dev_err(&s->client->dev,
-					"%s: firmware download failed=%d\n",
-					KBUILD_MODNAME, ret);
+					"firmware download failed=%d\n",
+					ret);
 			goto err;
 		}
 	}
@@ -462,8 +461,8 @@ static int si2168_init(struct dvb_frontend *fe)
 	if (ret)
 		goto err;
 
-	dev_info(&s->client->dev, "%s: found a '%s' in warm state\n",
-			KBUILD_MODNAME, si2168_ops.info.name);
+	dev_info(&s->client->dev, "found a '%s' in warm state\n",
+			si2168_ops.info.name);
 
 	s->active = true;
 
@@ -472,7 +471,7 @@ err:
 	if (fw)
 		release_firmware(fw);
 
-	dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
+	dev_dbg(&s->client->dev, "failed=%d\n", ret);
 	return ret;
 }
 
@@ -482,7 +481,7 @@ static int si2168_sleep(struct dvb_frontend *fe)
 	int ret;
 	struct si2168_cmd cmd;
 
-	dev_dbg(&s->client->dev, "%s:\n", __func__);
+	dev_dbg(&s->client->dev, "\n");
 
 	s->active = false;
 
@@ -495,7 +494,7 @@ static int si2168_sleep(struct dvb_frontend *fe)
 
 	return 0;
 err:
-	dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
+	dev_dbg(&s->client->dev, "failed=%d\n", ret);
 	return ret;
 }
 
@@ -528,8 +527,7 @@ static int si2168_select(struct i2c_adapter *adap, void *mux_priv, u32 chan)
 	/* open tuner I2C gate */
 	ret = __i2c_transfer(s->client->adapter, &gate_open_msg, 1);
 	if (ret != 1) {
-		dev_warn(&s->client->dev, "%s: i2c write failed=%d\n",
-				KBUILD_MODNAME, ret);
+		dev_warn(&s->client->dev, "i2c write failed=%d\n", ret);
 		if (ret >= 0)
 			ret = -EREMOTEIO;
 	} else {
@@ -553,8 +551,7 @@ static int si2168_deselect(struct i2c_adapter *adap, void *mux_priv, u32 chan)
 	/* close tuner I2C gate */
 	ret = __i2c_transfer(s->client->adapter, &gate_close_msg, 1);
 	if (ret != 1) {
-		dev_warn(&s->client->dev, "%s: i2c write failed=%d\n",
-				KBUILD_MODNAME, ret);
+		dev_warn(&s->client->dev, "i2c write failed=%d\n", ret);
 		if (ret >= 0)
 			ret = -EREMOTEIO;
 	} else {
@@ -607,12 +604,12 @@ static int si2168_probe(struct i2c_client *client,
 	struct si2168 *s;
 	int ret;
 
-	dev_dbg(&client->dev, "%s:\n", __func__);
+	dev_dbg(&client->dev, "\n");
 
 	s = kzalloc(sizeof(struct si2168), GFP_KERNEL);
 	if (!s) {
 		ret = -ENOMEM;
-		dev_err(&client->dev, "%s: kzalloc() failed\n", KBUILD_MODNAME);
+		dev_err(&client->dev, "kzalloc() failed\n");
 		goto err;
 	}
 
@@ -637,12 +634,11 @@ static int si2168_probe(struct i2c_client *client,
 	i2c_set_clientdata(client, s);
 
 	dev_info(&s->client->dev,
-			"%s: Silicon Labs Si2168 successfully attached\n",
-			KBUILD_MODNAME);
+			"Silicon Labs Si2168 successfully attached\n");
 	return 0;
 err:
 	kfree(s);
-	dev_dbg(&client->dev, "%s: failed=%d\n", __func__, ret);
+	dev_dbg(&client->dev, "failed=%d\n", ret);
 	return ret;
 }
 
@@ -650,7 +646,7 @@ static int si2168_remove(struct i2c_client *client)
 {
 	struct si2168 *s = i2c_get_clientdata(client);
 
-	dev_dbg(&client->dev, "%s:\n", __func__);
+	dev_dbg(&client->dev, "\n");
 
 	i2c_del_mux_adapter(s->adapter);
 
-- 
http://palosaari.fi/


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [GIT PULL FINAL 02/21] si2157: clean logging
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
  2014-08-22 10:57 ` [GIT PULL FINAL 01/21] si2168: clean logging Antti Palosaari
@ 2014-08-22 10:57 ` Antti Palosaari
  2014-08-22 10:57 ` [GIT PULL FINAL 03/21] m88ds3103: implement set voltage and TS clock Antti Palosaari
                   ` (20 subsequent siblings)
  22 siblings, 0 replies; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:57 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov, Antti Palosaari

From: Olli Salonen <olli.salonen@iki.fi>

Same thing for si2157 as Antti did earlier for tda18212:

There is no need to print module name nor function name as those
are done by kernel logging system when dev_xxx logging is used and
driver is proper I2C driver.

While here, fix a typo ("unknown") in si2157_init.

Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
Reviewed-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/tuners/si2157.c | 52 +++++++++++++++++++++----------------------
 1 file changed, 25 insertions(+), 27 deletions(-)

diff --git a/drivers/media/tuners/si2157.c b/drivers/media/tuners/si2157.c
index 6c53edb..2281b7d 100644
--- a/drivers/media/tuners/si2157.c
+++ b/drivers/media/tuners/si2157.c
@@ -55,8 +55,7 @@ static int si2157_cmd_execute(struct si2157 *s, struct si2157_cmd *cmd)
 				break;
 		}
 
-		dev_dbg(&s->client->dev, "%s: cmd execution took %d ms\n",
-				__func__,
+		dev_dbg(&s->client->dev, "cmd execution took %d ms\n",
 				jiffies_to_msecs(jiffies) -
 				(jiffies_to_msecs(timeout) - TIMEOUT));
 
@@ -75,7 +74,7 @@ err_mutex_unlock:
 
 	return 0;
 err:
-	dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
+	dev_dbg(&s->client->dev, "failed=%d\n", ret);
 	return ret;
 }
 
@@ -88,7 +87,7 @@ static int si2157_init(struct dvb_frontend *fe)
 	u8 *fw_file;
 	unsigned int chip_id;
 
-	dev_dbg(&s->client->dev, "%s:\n", __func__);
+	dev_dbg(&s->client->dev, "\n");
 
 	/* configure? */
 	memcpy(cmd.args, "\xc0\x00\x0c\x00\x00\x01\x01\x01\x01\x01\x01\x02\x00\x00\x01", 15);
@@ -121,35 +120,35 @@ static int si2157_init(struct dvb_frontend *fe)
 		break;
 	default:
 		dev_err(&s->client->dev,
-				"%s: unkown chip version Si21%d-%c%c%c\n",
-				KBUILD_MODNAME, cmd.args[2], cmd.args[1],
+				"unknown chip version Si21%d-%c%c%c\n",
+				cmd.args[2], cmd.args[1],
 				cmd.args[3], cmd.args[4]);
 		ret = -EINVAL;
 		goto err;
 	}
 
 	/* cold state - try to download firmware */
-	dev_info(&s->client->dev, "%s: found a '%s' in cold state\n",
-			KBUILD_MODNAME, si2157_ops.info.name);
+	dev_info(&s->client->dev, "found a '%s' in cold state\n",
+			si2157_ops.info.name);
 
 	/* request the firmware, this will block and timeout */
 	ret = request_firmware(&fw, fw_file, &s->client->dev);
 	if (ret) {
-		dev_err(&s->client->dev, "%s: firmware file '%s' not found\n",
-				KBUILD_MODNAME, fw_file);
+		dev_err(&s->client->dev, "firmware file '%s' not found\n",
+				fw_file);
 		goto err;
 	}
 
 	/* firmware should be n chunks of 17 bytes */
 	if (fw->size % 17 != 0) {
-		dev_err(&s->client->dev, "%s: firmware file '%s' is invalid\n",
-				KBUILD_MODNAME, fw_file);
+		dev_err(&s->client->dev, "firmware file '%s' is invalid\n",
+				fw_file);
 		ret = -EINVAL;
 		goto err;
 	}
 
-	dev_info(&s->client->dev, "%s: downloading firmware from file '%s'\n",
-			KBUILD_MODNAME, fw_file);
+	dev_info(&s->client->dev, "downloading firmware from file '%s'\n",
+			fw_file);
 
 	for (remaining = fw->size; remaining > 0; remaining -= 17) {
 		len = fw->data[fw->size - remaining];
@@ -159,8 +158,8 @@ static int si2157_init(struct dvb_frontend *fe)
 		ret = si2157_cmd_execute(s, &cmd);
 		if (ret) {
 			dev_err(&s->client->dev,
-					"%s: firmware download failed=%d\n",
-					KBUILD_MODNAME, ret);
+					"firmware download failed=%d\n",
+					ret);
 			goto err;
 		}
 	}
@@ -184,7 +183,7 @@ err:
 	if (fw)
 		release_firmware(fw);
 
-	dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
+	dev_dbg(&s->client->dev, "failed=%d\n", ret);
 	return ret;
 }
 
@@ -194,7 +193,7 @@ static int si2157_sleep(struct dvb_frontend *fe)
 	int ret;
 	struct si2157_cmd cmd;
 
-	dev_dbg(&s->client->dev, "%s:\n", __func__);
+	dev_dbg(&s->client->dev, "\n");
 
 	s->active = false;
 
@@ -207,7 +206,7 @@ static int si2157_sleep(struct dvb_frontend *fe)
 
 	return 0;
 err:
-	dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
+	dev_dbg(&s->client->dev, "failed=%d\n", ret);
 	return ret;
 }
 
@@ -220,8 +219,8 @@ static int si2157_set_params(struct dvb_frontend *fe)
 	u8 bandwidth, delivery_system;
 
 	dev_dbg(&s->client->dev,
-			"%s: delivery_system=%d frequency=%u bandwidth_hz=%u\n",
-			__func__, c->delivery_system, c->frequency,
+			"delivery_system=%d frequency=%u bandwidth_hz=%u\n",
+			c->delivery_system, c->frequency,
 			c->bandwidth_hz);
 
 	if (!s->active) {
@@ -275,7 +274,7 @@ static int si2157_set_params(struct dvb_frontend *fe)
 
 	return 0;
 err:
-	dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
+	dev_dbg(&s->client->dev, "failed=%d\n", ret);
 	return ret;
 }
 
@@ -310,7 +309,7 @@ static int si2157_probe(struct i2c_client *client,
 	s = kzalloc(sizeof(struct si2157), GFP_KERNEL);
 	if (!s) {
 		ret = -ENOMEM;
-		dev_err(&client->dev, "%s: kzalloc() failed\n", KBUILD_MODNAME);
+		dev_err(&client->dev, "kzalloc() failed\n");
 		goto err;
 	}
 
@@ -333,11 +332,10 @@ static int si2157_probe(struct i2c_client *client,
 	i2c_set_clientdata(client, s);
 
 	dev_info(&s->client->dev,
-			"%s: Silicon Labs Si2157/Si2158 successfully attached\n",
-			KBUILD_MODNAME);
+			"Silicon Labs Si2157/Si2158 successfully attached\n");
 	return 0;
 err:
-	dev_dbg(&client->dev, "%s: failed=%d\n", __func__, ret);
+	dev_dbg(&client->dev, "failed=%d\n", ret);
 	kfree(s);
 
 	return ret;
@@ -348,7 +346,7 @@ static int si2157_remove(struct i2c_client *client)
 	struct si2157 *s = i2c_get_clientdata(client);
 	struct dvb_frontend *fe = s->fe;
 
-	dev_dbg(&client->dev, "%s:\n", __func__);
+	dev_dbg(&client->dev, "\n");
 
 	memset(&fe->ops.tuner_ops, 0, sizeof(struct dvb_tuner_ops));
 	fe->tuner_priv = NULL;
-- 
http://palosaari.fi/


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [GIT PULL FINAL 03/21] m88ds3103: implement set voltage and TS clock
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
  2014-08-22 10:57 ` [GIT PULL FINAL 01/21] si2168: clean logging Antti Palosaari
  2014-08-22 10:57 ` [GIT PULL FINAL 02/21] si2157: " Antti Palosaari
@ 2014-08-22 10:57 ` Antti Palosaari
  2014-08-22 10:57 ` [GIT PULL FINAL 04/21] si2168: add ts_mode setting and move to si2168_init Antti Palosaari
                   ` (19 subsequent siblings)
  22 siblings, 0 replies; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:57 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov, Antti Palosaari

From: "nibble.max" <nibble.max@gmail.com>

Implement set voltage operation.
Separate TS clock as a own configuration parameter.
Add TS clock polarity parameter.

[crope@iki.fi: merge em28xx driver m88ds3103 config change patch
to that one, in order to keep build unbroken]

Signed-off-by: Nibble Max <nibble.max@gmail.com>
Reviewed-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/dvb-frontends/m88ds3103.c | 72 ++++++++++++++++++++-------------
 drivers/media/dvb-frontends/m88ds3103.h | 35 +++++++++++++---
 drivers/media/usb/em28xx/em28xx-dvb.c   |  4 +-
 3 files changed, 78 insertions(+), 33 deletions(-)

diff --git a/drivers/media/dvb-frontends/m88ds3103.c b/drivers/media/dvb-frontends/m88ds3103.c
index dfe0c2f..238b04e 100644
--- a/drivers/media/dvb-frontends/m88ds3103.c
+++ b/drivers/media/dvb-frontends/m88ds3103.c
@@ -247,7 +247,7 @@ static int m88ds3103_set_frontend(struct dvb_frontend *fe)
 	u8 u8tmp, u8tmp1, u8tmp2;
 	u8 buf[2];
 	u16 u16tmp, divide_ratio;
-	u32 tuner_frequency, target_mclk, ts_clk;
+	u32 tuner_frequency, target_mclk;
 	s32 s32tmp;
 	dev_dbg(&priv->i2c->dev,
 			"%s: delivery_system=%d modulation=%d frequency=%d symbol_rate=%d inversion=%d pilot=%d rolloff=%d\n",
@@ -316,9 +316,6 @@ static int m88ds3103_set_frontend(struct dvb_frontend *fe)
 				target_mclk = 144000;
 			break;
 		case M88DS3103_TS_PARALLEL:
-		case M88DS3103_TS_PARALLEL_12:
-		case M88DS3103_TS_PARALLEL_16:
-		case M88DS3103_TS_PARALLEL_19_2:
 		case M88DS3103_TS_CI:
 			if (c->symbol_rate < 18000000)
 				target_mclk = 96000;
@@ -352,33 +349,17 @@ static int m88ds3103_set_frontend(struct dvb_frontend *fe)
 	switch (priv->cfg->ts_mode) {
 	case M88DS3103_TS_SERIAL:
 		u8tmp1 = 0x00;
-		ts_clk = 0;
-		u8tmp = 0x46;
+		u8tmp = 0x06;
 		break;
 	case M88DS3103_TS_SERIAL_D7:
 		u8tmp1 = 0x20;
-		ts_clk = 0;
-		u8tmp = 0x46;
+		u8tmp = 0x06;
 		break;
 	case M88DS3103_TS_PARALLEL:
-		ts_clk = 24000;
-		u8tmp = 0x42;
-		break;
-	case M88DS3103_TS_PARALLEL_12:
-		ts_clk = 12000;
-		u8tmp = 0x42;
-		break;
-	case M88DS3103_TS_PARALLEL_16:
-		ts_clk = 16000;
-		u8tmp = 0x42;
-		break;
-	case M88DS3103_TS_PARALLEL_19_2:
-		ts_clk = 19200;
-		u8tmp = 0x42;
+		u8tmp = 0x02;
 		break;
 	case M88DS3103_TS_CI:
-		ts_clk = 6000;
-		u8tmp = 0x43;
+		u8tmp = 0x03;
 		break;
 	default:
 		dev_dbg(&priv->i2c->dev, "%s: invalid ts_mode\n", __func__);
@@ -386,6 +367,9 @@ static int m88ds3103_set_frontend(struct dvb_frontend *fe)
 		goto err;
 	}
 
+	if (priv->cfg->ts_clk_pol)
+		u8tmp |= 0x40;
+
 	/* TS mode */
 	ret = m88ds3103_wr_reg(priv, 0xfd, u8tmp);
 	if (ret)
@@ -399,8 +383,8 @@ static int m88ds3103_set_frontend(struct dvb_frontend *fe)
 			goto err;
 	}
 
-	if (ts_clk) {
-		divide_ratio = DIV_ROUND_UP(target_mclk, ts_clk);
+	if (priv->cfg->ts_clk) {
+		divide_ratio = DIV_ROUND_UP(target_mclk, priv->cfg->ts_clk);
 		u8tmp1 = divide_ratio / 2;
 		u8tmp2 = DIV_ROUND_UP(divide_ratio, 2);
 	} else {
@@ -411,7 +395,7 @@ static int m88ds3103_set_frontend(struct dvb_frontend *fe)
 
 	dev_dbg(&priv->i2c->dev,
 			"%s: target_mclk=%d ts_clk=%d divide_ratio=%d\n",
-			__func__, target_mclk, ts_clk, divide_ratio);
+			__func__, target_mclk, priv->cfg->ts_clk, divide_ratio);
 
 	u8tmp1--;
 	u8tmp2--;
@@ -1053,6 +1037,39 @@ err:
 	return ret;
 }
 
+static int m88ds3103_set_voltage(struct dvb_frontend *fe,
+	fe_sec_voltage_t voltage)
+{
+	struct m88ds3103_priv *priv = fe->demodulator_priv;
+	u8 data;
+
+	m88ds3103_rd_reg(priv, 0xa2, &data);
+
+	data &= ~0x03; /* bit0 V/H, bit1 off/on */
+	if (priv->cfg->lnb_en_pol)
+		data |= 0x02;
+
+	switch (voltage) {
+	case SEC_VOLTAGE_18:
+		if (priv->cfg->lnb_hv_pol == 0)
+			data |= 0x01;
+		break;
+	case SEC_VOLTAGE_13:
+		if (priv->cfg->lnb_hv_pol)
+			data |= 0x01;
+		break;
+	case SEC_VOLTAGE_OFF:
+		if (priv->cfg->lnb_en_pol)
+			data &= ~0x02;
+		else
+			data |= 0x02;
+		break;
+	}
+	m88ds3103_wr_reg(priv, 0xa2, data);
+
+	return 0;
+}
+
 static int m88ds3103_diseqc_send_master_cmd(struct dvb_frontend *fe,
 		struct dvb_diseqc_master_cmd *diseqc_cmd)
 {
@@ -1370,6 +1387,7 @@ static struct dvb_frontend_ops m88ds3103_ops = {
 	.diseqc_send_burst = m88ds3103_diseqc_send_burst,
 
 	.set_tone = m88ds3103_set_tone,
+	.set_voltage = m88ds3103_set_voltage,
 };
 
 MODULE_AUTHOR("Antti Palosaari <crope@iki.fi>");
diff --git a/drivers/media/dvb-frontends/m88ds3103.h b/drivers/media/dvb-frontends/m88ds3103.h
index bbb7e3a..9b3b496 100644
--- a/drivers/media/dvb-frontends/m88ds3103.h
+++ b/drivers/media/dvb-frontends/m88ds3103.h
@@ -47,14 +47,23 @@ struct m88ds3103_config {
 	 */
 #define M88DS3103_TS_SERIAL             0 /* TS output pin D0, normal */
 #define M88DS3103_TS_SERIAL_D7          1 /* TS output pin D7 */
-#define M88DS3103_TS_PARALLEL           2 /* 24 MHz, normal */
-#define M88DS3103_TS_PARALLEL_12        3 /* 12 MHz */
-#define M88DS3103_TS_PARALLEL_16        4 /* 16 MHz */
-#define M88DS3103_TS_PARALLEL_19_2      5 /* 19.2 MHz */
-#define M88DS3103_TS_CI                 6 /* 6 MHz */
+#define M88DS3103_TS_PARALLEL           2 /* TS Parallel mode */
+#define M88DS3103_TS_CI                 3 /* TS CI Mode */
 	u8 ts_mode;
 
 	/*
+	 * TS clk in KHz
+	 * Default: 0.
+	 */
+	u32 ts_clk;
+
+	/*
+	 * TS clk polarity.
+	 * Default: 0. 1-active at falling edge; 0-active at rising edge.
+	 */
+	u8 ts_clk_pol:1;
+
+	/*
 	 * spectrum inversion
 	 * Default: 0
 	 */
@@ -86,6 +95,22 @@ struct m88ds3103_config {
 	 * Default: none, must set
 	 */
 	u8 agc;
+
+	/*
+	 * LNB H/V pin polarity
+	 * Default: 0.
+	 * 1: pin high set to VOLTAGE_13, pin low to set VOLTAGE_18.
+	 * 0: pin high set to VOLTAGE_18, pin low to set VOLTAGE_13.
+	 */
+	u8 lnb_hv_pol:1;
+
+	/*
+	 * LNB enable pin polarity
+	 * Default: 0.
+	 * 1: pin high to enable, pin low to disable.
+	 * 0: pin high to disable, pin low to enable.
+	 */
+	u8 lnb_en_pol:1;
 };
 
 /*
diff --git a/drivers/media/usb/em28xx/em28xx-dvb.c b/drivers/media/usb/em28xx/em28xx-dvb.c
index 3a3e243..d8e9760 100644
--- a/drivers/media/usb/em28xx/em28xx-dvb.c
+++ b/drivers/media/usb/em28xx/em28xx-dvb.c
@@ -856,7 +856,9 @@ static const struct m88ds3103_config pctv_461e_m88ds3103_config = {
 	.clock = 27000000,
 	.i2c_wr_max = 33,
 	.clock_out = 0,
-	.ts_mode = M88DS3103_TS_PARALLEL_16,
+	.ts_mode = M88DS3103_TS_PARALLEL,
+	.ts_clk = 16000,
+	.ts_clk_pol = 1,
 	.agc = 0x99,
 };
 
-- 
http://palosaari.fi/


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [GIT PULL FINAL 04/21] si2168: add ts_mode setting and move to si2168_init
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
                   ` (2 preceding siblings ...)
  2014-08-22 10:57 ` [GIT PULL FINAL 03/21] m88ds3103: implement set voltage and TS clock Antti Palosaari
@ 2014-08-22 10:57 ` Antti Palosaari
  2014-08-22 10:57 ` [GIT PULL FINAL 05/21] em28xx: add ts mode setting for PCTV 292e Antti Palosaari
                   ` (18 subsequent siblings)
  22 siblings, 0 replies; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:57 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov, Antti Palosaari

From: Olli Salonen <olli.salonen@iki.fi>

Luis Alves submitted a TS mode patch to si2168 earlier, but the
patch was rejected due to a small issue. Here is a working version.
Also, setting of TS mode is moved from si2168_set_frontend to
si2168_init.

This patch adds the TS mode as a config option for the si2168 demod:
- ts_mode added to config struct.
- Possible (interesting) values are
   * Parallel mode = 0x06
   * Serial mode = 0x03

Currently the modules using this demod only use parallel mode.
Patches for these modules later in this patch series.

Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
Reviewed-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/dvb-frontends/si2168.c      | 17 ++++++++++-------
 drivers/media/dvb-frontends/si2168.h      |  6 ++++++
 drivers/media/dvb-frontends/si2168_priv.h |  1 +
 3 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/drivers/media/dvb-frontends/si2168.c b/drivers/media/dvb-frontends/si2168.c
index 59a4218..97614db 100644
--- a/drivers/media/dvb-frontends/si2168.c
+++ b/drivers/media/dvb-frontends/si2168.c
@@ -296,13 +296,6 @@ static int si2168_set_frontend(struct dvb_frontend *fe)
 	if (ret)
 		goto err;
 
-	memcpy(cmd.args, "\x14\x00\x01\x10\x16\x00", 6);
-	cmd.wlen = 6;
-	cmd.rlen = 4;
-	ret = si2168_cmd_execute(s, &cmd);
-	if (ret)
-		goto err;
-
 	memcpy(cmd.args, "\x14\x00\x09\x10\xe3\x18", 6);
 	cmd.wlen = 6;
 	cmd.rlen = 4;
@@ -464,6 +457,15 @@ static int si2168_init(struct dvb_frontend *fe)
 	dev_info(&s->client->dev, "found a '%s' in warm state\n",
 			si2168_ops.info.name);
 
+	/* set ts mode */
+	memcpy(cmd.args, "\x14\x00\x01\x10\x10\x00", 6);
+	cmd.args[4] |= s->ts_mode;
+	cmd.wlen = 6;
+	cmd.rlen = 4;
+	ret = si2168_cmd_execute(s, &cmd);
+	if (ret)
+		goto err;
+
 	s->active = true;
 
 	return 0;
@@ -630,6 +632,7 @@ static int si2168_probe(struct i2c_client *client,
 
 	*config->i2c_adapter = s->adapter;
 	*config->fe = &s->fe;
+	s->ts_mode = config->ts_mode;
 
 	i2c_set_clientdata(client, s);
 
diff --git a/drivers/media/dvb-frontends/si2168.h b/drivers/media/dvb-frontends/si2168.h
index 3c5b5ab..e086d67 100644
--- a/drivers/media/dvb-frontends/si2168.h
+++ b/drivers/media/dvb-frontends/si2168.h
@@ -34,6 +34,12 @@ struct si2168_config {
 	 * returned by driver
 	 */
 	struct i2c_adapter **i2c_adapter;
+
+	/* TS mode */
+	u8 ts_mode;
 };
 
+#define SI2168_TS_PARALLEL	0x06
+#define SI2168_TS_SERIAL	0x03
+
 #endif
diff --git a/drivers/media/dvb-frontends/si2168_priv.h b/drivers/media/dvb-frontends/si2168_priv.h
index ebbf502..0f83284 100644
--- a/drivers/media/dvb-frontends/si2168_priv.h
+++ b/drivers/media/dvb-frontends/si2168_priv.h
@@ -36,6 +36,7 @@ struct si2168 {
 	fe_delivery_system_t delivery_system;
 	fe_status_t fe_status;
 	bool active;
+	u8 ts_mode;
 };
 
 /* firmare command struct */
-- 
http://palosaari.fi/


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [GIT PULL FINAL 05/21] em28xx: add ts mode setting for PCTV 292e
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
                   ` (3 preceding siblings ...)
  2014-08-22 10:57 ` [GIT PULL FINAL 04/21] si2168: add ts_mode setting and move to si2168_init Antti Palosaari
@ 2014-08-22 10:57 ` Antti Palosaari
  2014-08-22 10:57 ` [GIT PULL FINAL 06/21] cxusb: add ts mode setting for TechnoTrend CT2-4400 Antti Palosaari
                   ` (17 subsequent siblings)
  22 siblings, 0 replies; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:57 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov, Antti Palosaari

From: Olli Salonen <olli.salonen@iki.fi>

TS mode must be set in the existing PCTV 292e driver.

Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
Reviewed-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/usb/em28xx/em28xx-dvb.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/usb/em28xx/em28xx-dvb.c b/drivers/media/usb/em28xx/em28xx-dvb.c
index d8e9760..0645793 100644
--- a/drivers/media/usb/em28xx/em28xx-dvb.c
+++ b/drivers/media/usb/em28xx/em28xx-dvb.c
@@ -1535,6 +1535,7 @@ static int em28xx_dvb_init(struct em28xx *dev)
 			/* attach demod */
 			si2168_config.i2c_adapter = &adapter;
 			si2168_config.fe = &dvb->fe[0];
+			si2168_config.ts_mode = SI2168_TS_PARALLEL;
 			memset(&info, 0, sizeof(struct i2c_board_info));
 			strlcpy(info.type, "si2168", I2C_NAME_SIZE);
 			info.addr = 0x64;
-- 
http://palosaari.fi/


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [GIT PULL FINAL 06/21] cxusb: add ts mode setting for TechnoTrend CT2-4400
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
                   ` (4 preceding siblings ...)
  2014-08-22 10:57 ` [GIT PULL FINAL 05/21] em28xx: add ts mode setting for PCTV 292e Antti Palosaari
@ 2014-08-22 10:57 ` Antti Palosaari
  2014-08-22 10:57 ` [GIT PULL FINAL 07/21] sp2: Add I2C driver for CIMaX SP2 common interface module Antti Palosaari
                   ` (16 subsequent siblings)
  22 siblings, 0 replies; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:57 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov, Antti Palosaari

From: Olli Salonen <olli.salonen@iki.fi>

TS mode must be set in the existing TechnoTrend CT2-4400 driver.

Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
Reviewed-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/usb/dvb-usb/cxusb.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c
index 16bc579..87842e9 100644
--- a/drivers/media/usb/dvb-usb/cxusb.c
+++ b/drivers/media/usb/dvb-usb/cxusb.c
@@ -1369,6 +1369,7 @@ static int cxusb_tt_ct2_4400_attach(struct dvb_usb_adapter *adap)
 	/* attach frontend */
 	si2168_config.i2c_adapter = &adapter;
 	si2168_config.fe = &adap->fe_adap[0].fe;
+	si2168_config.ts_mode = SI2168_TS_PARALLEL;
 	memset(&info, 0, sizeof(struct i2c_board_info));
 	strlcpy(info.type, "si2168", I2C_NAME_SIZE);
 	info.addr = 0x64;
-- 
http://palosaari.fi/


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [GIT PULL FINAL 07/21] sp2: Add I2C driver for CIMaX SP2 common interface module
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
                   ` (5 preceding siblings ...)
  2014-08-22 10:57 ` [GIT PULL FINAL 06/21] cxusb: add ts mode setting for TechnoTrend CT2-4400 Antti Palosaari
@ 2014-08-22 10:57 ` Antti Palosaari
  2014-08-22 10:58 ` [GIT PULL FINAL 08/21] cxusb: Add support for TechnoTrend TT-connect CT2-4650 CI Antti Palosaari
                   ` (15 subsequent siblings)
  22 siblings, 0 replies; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:57 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov, Antti Palosaari

From: Olli Salonen <olli.salonen@iki.fi>

Driver for the CIMaX SP2 common interface chip. It is very much based on
the existing cimax2 driver for cx23885, but should be more reusable. The
product has been sold with name Atmel T90FJR as well and the data sheets
for that chip seem to be publicly available.

It seems that the USB device that I have and the cx23885 based devices will
need to interact differently with the chip for the CAM operations. Thus
there is one callback function that is passed on to the sp2 driver
(see function sp2_ci_op_cam for that one).

IRQ functionality is not included currently (not needed by USB devices
and I don't have a PCIe device for development).

This is the second version of the patch series after review by Antti
Palosaari.

Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
Reviewed-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/dvb-frontends/Kconfig    |   7 +
 drivers/media/dvb-frontends/Makefile   |   1 +
 drivers/media/dvb-frontends/sp2.c      | 441 +++++++++++++++++++++++++++++++++
 drivers/media/dvb-frontends/sp2.h      |  53 ++++
 drivers/media/dvb-frontends/sp2_priv.h |  50 ++++
 5 files changed, 552 insertions(+)
 create mode 100644 drivers/media/dvb-frontends/sp2.c
 create mode 100644 drivers/media/dvb-frontends/sp2.h
 create mode 100644 drivers/media/dvb-frontends/sp2_priv.h

diff --git a/drivers/media/dvb-frontends/Kconfig b/drivers/media/dvb-frontends/Kconfig
index aa5ae22..704403f 100644
--- a/drivers/media/dvb-frontends/Kconfig
+++ b/drivers/media/dvb-frontends/Kconfig
@@ -725,6 +725,13 @@ config DVB_A8293
 	depends on DVB_CORE && I2C
 	default m if !MEDIA_SUBDRV_AUTOSELECT
 
+config DVB_SP2
+	tristate "CIMaX SP2"
+	depends on DVB_CORE && I2C
+	default m if !MEDIA_SUBDRV_AUTOSELECT
+	help
+	  CIMaX SP2/SP2HF Common Interface module.
+
 config DVB_LGS8GL5
 	tristate "Silicon Legend LGS-8GL5 demodulator (OFDM)"
 	depends on DVB_CORE && I2C
diff --git a/drivers/media/dvb-frontends/Makefile b/drivers/media/dvb-frontends/Makefile
index fc4e689..1e19a74 100644
--- a/drivers/media/dvb-frontends/Makefile
+++ b/drivers/media/dvb-frontends/Makefile
@@ -107,6 +107,7 @@ obj-$(CONFIG_DVB_DRXK) += drxk.o
 obj-$(CONFIG_DVB_TDA18271C2DD) += tda18271c2dd.o
 obj-$(CONFIG_DVB_SI2165) += si2165.o
 obj-$(CONFIG_DVB_A8293) += a8293.o
+obj-$(CONFIG_DVB_SP2) += sp2.o
 obj-$(CONFIG_DVB_TDA10071) += tda10071.o
 obj-$(CONFIG_DVB_RTL2830) += rtl2830.o
 obj-$(CONFIG_DVB_RTL2832) += rtl2832.o
diff --git a/drivers/media/dvb-frontends/sp2.c b/drivers/media/dvb-frontends/sp2.c
new file mode 100644
index 0000000..9b684d5
--- /dev/null
+++ b/drivers/media/dvb-frontends/sp2.c
@@ -0,0 +1,441 @@
+/*
+ * CIMaX SP2/SP2HF (Atmel T90FJR) CI driver
+ *
+ * Copyright (C) 2014 Olli Salonen <olli.salonen@iki.fi>
+ *
+ * Heavily based on CIMax2(R) SP2 driver in conjunction with NetUp Dual
+ * DVB-S2 CI card (cimax2) with following copyrights:
+ *
+ *  Copyright (C) 2009 NetUP Inc.
+ *  Copyright (C) 2009 Igor M. Liplianin <liplianin@netup.ru>
+ *  Copyright (C) 2009 Abylay Ospan <aospan@netup.ru>
+ *
+ *    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.
+ */
+
+#include "sp2_priv.h"
+
+static int sp2_read_i2c(struct sp2 *s, u8 reg, u8 *buf, int len)
+{
+	int ret;
+	struct i2c_client *client = s->client;
+	struct i2c_adapter *adap = client->adapter;
+	struct i2c_msg msg[] = {
+		{
+			.addr = client->addr,
+			.flags = 0,
+			.buf = &reg,
+			.len = 1
+		}, {
+			.addr = client->addr,
+			.flags	= I2C_M_RD,
+			.buf = buf,
+			.len = len
+		}
+	};
+
+	ret = i2c_transfer(adap, msg, 2);
+
+	if (ret != 2) {
+		dev_err(&client->dev, "i2c read error, reg = 0x%02x, status = %d\n",
+				reg, ret);
+		if (ret < 0)
+			return ret;
+		else
+			return -EIO;
+	}
+
+	dev_dbg(&s->client->dev, "addr=0x%04x, reg = 0x%02x, data = %02x\n",
+				client->addr, reg, buf[0]);
+
+	return 0;
+}
+
+static int sp2_write_i2c(struct sp2 *s, u8 reg, u8 *buf, int len)
+{
+	int ret;
+	u8 buffer[35];
+	struct i2c_client *client = s->client;
+	struct i2c_adapter *adap = client->adapter;
+	struct i2c_msg msg = {
+		.addr = client->addr,
+		.flags = 0,
+		.buf = &buffer[0],
+		.len = len + 1
+	};
+
+	if ((len + 1) > sizeof(buffer)) {
+		dev_err(&client->dev, "i2c wr reg=%02x: len=%d is too big!\n",
+				reg, len);
+		return -EINVAL;
+	}
+
+	buffer[0] = reg;
+	memcpy(&buffer[1], buf, len);
+
+	ret = i2c_transfer(adap, &msg, 1);
+
+	if (ret != 1) {
+		dev_err(&client->dev, "i2c write error, reg = 0x%02x, status = %d\n",
+				reg, ret);
+		if (ret < 0)
+			return ret;
+		else
+			return -EIO;
+	}
+
+	return 0;
+}
+
+static int sp2_ci_op_cam(struct dvb_ca_en50221 *en50221, int slot, u8 acs,
+			u8 read, int addr, u8 data)
+{
+	struct sp2 *s = en50221->data;
+	u8 store;
+	int mem, ret;
+	int (*ci_op_cam)(void*, u8, int, u8, int*) = s->ci_control;
+
+	dev_dbg(&s->client->dev, "slot=%d, acs=0x%02x, addr=0x%04x, data = 0x%02x",
+			slot, acs, addr, data);
+
+	if (slot != 0)
+		return -EINVAL;
+
+	/*
+	 * change module access type between IO space and attribute memory
+	 * when needed
+	 */
+	if (s->module_access_type != acs) {
+		ret = sp2_read_i2c(s, 0x00, &store, 1);
+
+		if (ret)
+			return ret;
+
+		store &= ~(SP2_MOD_CTL_ACS1 | SP2_MOD_CTL_ACS0);
+		store |= acs;
+
+		ret = sp2_write_i2c(s, 0x00, &store, 1);
+		if (ret)
+			return ret;
+	}
+
+	s->module_access_type = acs;
+
+	/* implementation of ci_op_cam is device specific */
+	if (ci_op_cam) {
+		ret = ci_op_cam(s->priv, read, addr, data, &mem);
+	} else {
+		dev_err(&s->client->dev, "callback not defined");
+		return -EINVAL;
+	}
+
+	if (ret)
+		return ret;
+
+	if (read) {
+		dev_dbg(&s->client->dev, "cam read, addr=0x%04x, data = 0x%04x",
+				addr, mem);
+		return mem;
+	} else {
+		return 0;
+	}
+}
+
+int sp2_ci_read_attribute_mem(struct dvb_ca_en50221 *en50221,
+				int slot, int addr)
+{
+	return sp2_ci_op_cam(en50221, slot, SP2_CI_ATTR_ACS,
+			SP2_CI_RD, addr, 0);
+}
+
+int sp2_ci_write_attribute_mem(struct dvb_ca_en50221 *en50221,
+				int slot, int addr, u8 data)
+{
+	return sp2_ci_op_cam(en50221, slot, SP2_CI_ATTR_ACS,
+			SP2_CI_WR, addr, data);
+}
+
+int sp2_ci_read_cam_control(struct dvb_ca_en50221 *en50221,
+				int slot, u8 addr)
+{
+	return sp2_ci_op_cam(en50221, slot, SP2_CI_IO_ACS,
+			SP2_CI_RD, addr, 0);
+}
+
+int sp2_ci_write_cam_control(struct dvb_ca_en50221 *en50221,
+				int slot, u8 addr, u8 data)
+{
+	return sp2_ci_op_cam(en50221, slot, SP2_CI_IO_ACS,
+			SP2_CI_WR, addr, data);
+}
+
+int sp2_ci_slot_reset(struct dvb_ca_en50221 *en50221, int slot)
+{
+	struct sp2 *s = en50221->data;
+	u8 buf;
+	int ret;
+
+	dev_dbg(&s->client->dev, "slot: %d\n", slot);
+
+	if (slot != 0)
+		return -EINVAL;
+
+	/* RST on */
+	buf = SP2_MOD_CTL_RST;
+	ret = sp2_write_i2c(s, 0x00, &buf, 1);
+
+	if (ret)
+		return ret;
+
+	usleep_range(500, 600);
+
+	/* RST off */
+	buf = 0x00;
+	ret = sp2_write_i2c(s, 0x00, &buf, 1);
+
+	if (ret)
+		return ret;
+
+	msleep(1000);
+
+	return 0;
+}
+
+int sp2_ci_slot_shutdown(struct dvb_ca_en50221 *en50221, int slot)
+{
+	struct sp2 *s = en50221->data;
+
+	dev_dbg(&s->client->dev, "slot:%d\n", slot);
+
+	/* not implemented */
+	return 0;
+}
+
+int sp2_ci_slot_ts_enable(struct dvb_ca_en50221 *en50221, int slot)
+{
+	struct sp2 *s = en50221->data;
+	u8 buf;
+
+	dev_dbg(&s->client->dev, "slot:%d\n", slot);
+
+	if (slot != 0)
+		return -EINVAL;
+
+	sp2_read_i2c(s, 0x00, &buf, 1);
+
+	/* disable bypass and enable TS */
+	buf |= (SP2_MOD_CTL_TSOEN | SP2_MOD_CTL_TSIEN);
+	return sp2_write_i2c(s, 0, &buf, 1);
+}
+
+int sp2_ci_poll_slot_status(struct dvb_ca_en50221 *en50221,
+				int slot, int open)
+{
+	struct sp2 *s = en50221->data;
+	u8 buf[2];
+	int ret;
+
+	dev_dbg(&s->client->dev, "slot:%d open:%d\n", slot, open);
+
+	/*
+	 * CAM module INSERT/REMOVE processing. Slow operation because of i2c
+	 * transfers. Throttle read to one per sec.
+	 */
+	if (time_after(jiffies, s->next_status_checked_time)) {
+		ret = sp2_read_i2c(s, 0x00, buf, 1);
+		s->next_status_checked_time = jiffies +	msecs_to_jiffies(1000);
+
+		if (ret)
+			return 0;
+
+		if (buf[0] & SP2_MOD_CTL_DET)
+			s->status = DVB_CA_EN50221_POLL_CAM_PRESENT |
+					DVB_CA_EN50221_POLL_CAM_READY;
+		else
+			s->status = 0;
+	}
+
+	return s->status;
+}
+
+int sp2_init(struct sp2 *s)
+{
+	int ret = 0;
+	u8 buf;
+	u8 cimax_init[34] = {
+		0x00, /* module A control*/
+		0x00, /* auto select mask high A */
+		0x00, /* auto select mask low A */
+		0x00, /* auto select pattern high A */
+		0x00, /* auto select pattern low A */
+		0x44, /* memory access time A, 600 ns */
+		0x00, /* invert input A */
+		0x00, /* RFU */
+		0x00, /* RFU */
+		0x00, /* module B control*/
+		0x00, /* auto select mask high B */
+		0x00, /* auto select mask low B */
+		0x00, /* auto select pattern high B */
+		0x00, /* auto select pattern low B */
+		0x44, /* memory access time B, 600 ns */
+		0x00, /* invert input B */
+		0x00, /* RFU */
+		0x00, /* RFU */
+		0x00, /* auto select mask high Ext */
+		0x00, /* auto select mask low Ext */
+		0x00, /* auto select pattern high Ext */
+		0x00, /* auto select pattern low Ext */
+		0x00, /* RFU */
+		0x02, /* destination - module A */
+		0x01, /* power control reg, VCC power on */
+		0x00, /* RFU */
+		0x00, /* int status read only */
+		0x00, /* Interrupt Mask Register */
+		0x05, /* EXTINT=active-high, INT=push-pull */
+		0x00, /* USCG1 */
+		0x04, /* ack active low */
+		0x00, /* LOCK = 0 */
+		0x22, /* unknown */
+		0x00, /* synchronization? */
+	};
+
+	dev_dbg(&s->client->dev, "\n");
+
+	s->ca.owner = THIS_MODULE;
+	s->ca.read_attribute_mem = sp2_ci_read_attribute_mem;
+	s->ca.write_attribute_mem = sp2_ci_write_attribute_mem;
+	s->ca.read_cam_control = sp2_ci_read_cam_control;
+	s->ca.write_cam_control = sp2_ci_write_cam_control;
+	s->ca.slot_reset = sp2_ci_slot_reset;
+	s->ca.slot_shutdown = sp2_ci_slot_shutdown;
+	s->ca.slot_ts_enable = sp2_ci_slot_ts_enable;
+	s->ca.poll_slot_status = sp2_ci_poll_slot_status;
+	s->ca.data = s;
+	s->module_access_type = 0;
+
+	/* initialize all regs */
+	ret = sp2_write_i2c(s, 0x00, &cimax_init[0], 34);
+	if (ret)
+		goto err;
+
+	/* lock registers */
+	buf = 1;
+	ret = sp2_write_i2c(s, 0x1f, &buf, 1);
+	if (ret)
+		goto err;
+
+	/* power on slots */
+	ret = sp2_write_i2c(s, 0x18, &buf, 1);
+	if (ret)
+		goto err;
+
+	ret = dvb_ca_en50221_init(s->dvb_adap, &s->ca, 0, 1);
+	if (ret)
+		goto err;
+
+	return 0;
+
+err:
+	dev_dbg(&s->client->dev, "init failed=%d\n", ret);
+	return ret;
+}
+
+int sp2_exit(struct i2c_client *client)
+{
+	struct sp2 *s;
+
+	dev_dbg(&client->dev, "\n");
+
+	if (client == NULL)
+		return 0;
+
+	s = i2c_get_clientdata(client);
+	if (s == NULL)
+		return 0;
+
+	if (s->ca.data == NULL)
+		return 0;
+
+	dvb_ca_en50221_release(&s->ca);
+
+	return 0;
+}
+
+static int sp2_probe(struct i2c_client *client,
+		const struct i2c_device_id *id)
+{
+	struct sp2_config *cfg = client->dev.platform_data;
+	struct sp2 *s;
+	int ret;
+
+	dev_dbg(&client->dev, "\n");
+
+	s = kzalloc(sizeof(struct sp2), GFP_KERNEL);
+	if (!s) {
+		ret = -ENOMEM;
+		dev_err(&client->dev, "kzalloc() failed\n");
+		goto err;
+	}
+
+	s->client = client;
+	s->dvb_adap = cfg->dvb_adap;
+	s->priv = cfg->priv;
+	s->ci_control = cfg->ci_control;
+
+	i2c_set_clientdata(client, s);
+
+	ret = sp2_init(s);
+	if (ret)
+		goto err;
+
+	dev_info(&s->client->dev, "CIMaX SP2 successfully attached\n");
+	return 0;
+err:
+	dev_dbg(&client->dev, "init failed=%d\n", ret);
+	kfree(s);
+
+	return ret;
+}
+
+static int sp2_remove(struct i2c_client *client)
+{
+	struct si2157 *s = i2c_get_clientdata(client);
+
+	dev_dbg(&client->dev, "\n");
+
+	sp2_exit(client);
+	if (s != NULL)
+		kfree(s);
+
+	return 0;
+}
+
+static const struct i2c_device_id sp2_id[] = {
+	{"sp2", 0},
+	{}
+};
+MODULE_DEVICE_TABLE(i2c, sp2_id);
+
+static struct i2c_driver sp2_driver = {
+	.driver = {
+		.owner	= THIS_MODULE,
+		.name	= "sp2",
+	},
+	.probe		= sp2_probe,
+	.remove		= sp2_remove,
+	.id_table	= sp2_id,
+};
+
+module_i2c_driver(sp2_driver);
+
+MODULE_DESCRIPTION("CIMaX SP2/HF CI driver");
+MODULE_AUTHOR("Olli Salonen <olli.salonen@iki.fi>");
+MODULE_LICENSE("GPL");
diff --git a/drivers/media/dvb-frontends/sp2.h b/drivers/media/dvb-frontends/sp2.h
new file mode 100644
index 0000000..6cceea0
--- /dev/null
+++ b/drivers/media/dvb-frontends/sp2.h
@@ -0,0 +1,53 @@
+/*
+ * CIMaX SP2/HF CI driver
+ *
+ * Copyright (C) 2014 Olli Salonen <olli.salonen@iki.fi>
+ *
+ *    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.
+ */
+
+#ifndef SP2_H
+#define SP2_H
+
+#include <linux/kconfig.h>
+#include "dvb_ca_en50221.h"
+
+/*
+ * I2C address
+ * 0x40 (port 0)
+ * 0x41 (port 1)
+ */
+struct sp2_config {
+	/* dvb_adapter to attach the ci to */
+	struct dvb_adapter *dvb_adap;
+
+	/* function ci_control handles the device specific ci ops */
+	void *ci_control;
+
+	/* priv is passed back to function ci_control */
+	void *priv;
+};
+
+extern int sp2_ci_read_attribute_mem(struct dvb_ca_en50221 *en50221,
+					int slot, int addr);
+extern int sp2_ci_write_attribute_mem(struct dvb_ca_en50221 *en50221,
+					int slot, int addr, u8 data);
+extern int sp2_ci_read_cam_control(struct dvb_ca_en50221 *en50221,
+					int slot, u8 addr);
+extern int sp2_ci_write_cam_control(struct dvb_ca_en50221 *en50221,
+					int slot, u8 addr, u8 data);
+extern int sp2_ci_slot_reset(struct dvb_ca_en50221 *en50221, int slot);
+extern int sp2_ci_slot_shutdown(struct dvb_ca_en50221 *en50221, int slot);
+extern int sp2_ci_slot_ts_enable(struct dvb_ca_en50221 *en50221, int slot);
+extern int sp2_ci_poll_slot_status(struct dvb_ca_en50221 *en50221,
+					int slot, int open);
+
+#endif
diff --git a/drivers/media/dvb-frontends/sp2_priv.h b/drivers/media/dvb-frontends/sp2_priv.h
new file mode 100644
index 0000000..37fef7b
--- /dev/null
+++ b/drivers/media/dvb-frontends/sp2_priv.h
@@ -0,0 +1,50 @@
+/*
+ * CIMaX SP2/HF CI driver
+ *
+ * Copyright (C) 2014 Olli Salonen <olli.salonen@iki.fi>
+ *
+ *    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.
+ */
+
+#ifndef SP2_PRIV_H
+#define SP2_PRIV_H
+
+#include "sp2.h"
+#include "dvb_frontend.h"
+
+/* state struct */
+struct sp2 {
+	int status;
+	struct i2c_client *client;
+	struct dvb_adapter *dvb_adap;
+	struct dvb_ca_en50221 ca;
+	int module_access_type;
+	unsigned long next_status_checked_time;
+	void *priv;
+	void *ci_control;
+};
+
+#define SP2_CI_ATTR_ACS		0x00
+#define SP2_CI_IO_ACS		0x04
+#define SP2_CI_WR		0
+#define SP2_CI_RD		1
+
+/* Module control register (0x00 module A, 0x09 module B) bits */
+#define SP2_MOD_CTL_DET		0x01
+#define SP2_MOD_CTL_AUTO	0x02
+#define SP2_MOD_CTL_ACS0	0x04
+#define SP2_MOD_CTL_ACS1	0x08
+#define SP2_MOD_CTL_HAD		0x10
+#define SP2_MOD_CTL_TSIEN	0x20
+#define SP2_MOD_CTL_TSOEN	0x40
+#define SP2_MOD_CTL_RST		0x80
+
+#endif
-- 
http://palosaari.fi/


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [GIT PULL FINAL 08/21] cxusb: Add support for TechnoTrend TT-connect CT2-4650 CI
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
                   ` (6 preceding siblings ...)
  2014-08-22 10:57 ` [GIT PULL FINAL 07/21] sp2: Add I2C driver for CIMaX SP2 common interface module Antti Palosaari
@ 2014-08-22 10:58 ` Antti Palosaari
  2014-08-22 10:58 ` [GIT PULL FINAL 09/21] cxusb: Add read_mac_address for TT CT2-4400 and CT2-4650 Antti Palosaari
                   ` (14 subsequent siblings)
  22 siblings, 0 replies; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:58 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov, Antti Palosaari

From: Olli Salonen <olli.salonen@iki.fi>

TechnoTrend TT-connect CT2-4650 CI (0b48:3012) is an USB DVB-T2/C tuner with
the following components:

 USB interface: Cypress CY7C68013A-56LTXC
 Demodulator: Silicon Labs Si2168-A20
 Tuner: Silicon Labs Si2158-A20
 CI chip: CIMaX SP2HF

The firmware for the tuner is the same as for TechnoTrend TT-TVStick CT2-4400.
See https://www.mail-archive.com/linux-media@vger.kernel.org/msg76944.html

The demodulator needs a firmware that can be extracted from the Windows drivers.
File ttConnect4650_64.sys should be extracted from
http://www.tt-downloads.de/bda-treiber_4.1.0.4.zip (MD5 sum below).

3464bfc37a47b4032568718bacba23fb  ttConnect4650_64.sys

Then the firmware can be extracted:
dd if=ttConnect4650_64.sys ibs=1 skip=273376 count=6424 of=dvb-demod-si2168-a20-01.fw

The SP2 CI module requires a definition of a function cxusb_tt_ct2_4650_ci_ctrl
that is passed on to the SP2 driver and called back for CAM operations.

[crope@iki.fi: meld USB ID define patch to this]

Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
Reviewed-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/dvb-core/dvb-usb-ids.h |  1 +
 drivers/media/usb/dvb-usb/Kconfig    |  2 +-
 drivers/media/usb/dvb-usb/cxusb.c    | 92 +++++++++++++++++++++++++++++++++++-
 drivers/media/usb/dvb-usb/cxusb.h    |  4 ++
 4 files changed, 97 insertions(+), 2 deletions(-)

diff --git a/drivers/media/dvb-core/dvb-usb-ids.h b/drivers/media/dvb-core/dvb-usb-ids.h
index 5135a09..b7a9b98 100644
--- a/drivers/media/dvb-core/dvb-usb-ids.h
+++ b/drivers/media/dvb-core/dvb-usb-ids.h
@@ -244,6 +244,7 @@
 #define USB_PID_TECHNOTREND_CONNECT_S2400               0x3006
 #define USB_PID_TECHNOTREND_CONNECT_S2400_8KEEPROM	0x3009
 #define USB_PID_TECHNOTREND_CONNECT_CT3650		0x300d
+#define USB_PID_TECHNOTREND_CONNECT_CT2_4650_CI		0x3012
 #define USB_PID_TECHNOTREND_TVSTICK_CT2_4400		0x3014
 #define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY	0x005a
 #define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY_2	0x0081
diff --git a/drivers/media/usb/dvb-usb/Kconfig b/drivers/media/usb/dvb-usb/Kconfig
index 10aef21..41d3eb9 100644
--- a/drivers/media/usb/dvb-usb/Kconfig
+++ b/drivers/media/usb/dvb-usb/Kconfig
@@ -130,7 +130,7 @@ config DVB_USB_CXUSB
 
 	  Medion MD95700 hybrid USB2.0 device.
 	  DViCO FusionHDTV (Bluebird) USB2.0 devices
-	  TechnoTrend TVStick CT2-4400
+	  TechnoTrend TVStick CT2-4400 and CT2-4650 CI devices
 
 config DVB_USB_M920X
 	tristate "Uli m920x DVB-T USB2.0 support"
diff --git a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c
index 87842e9..4ab3459 100644
--- a/drivers/media/usb/dvb-usb/cxusb.c
+++ b/drivers/media/usb/dvb-usb/cxusb.c
@@ -44,6 +44,7 @@
 #include "atbm8830.h"
 #include "si2168.h"
 #include "si2157.h"
+#include "sp2.h"
 
 /* Max transfer size done by I2C transfer functions */
 #define MAX_XFER_SIZE  80
@@ -672,6 +673,37 @@ static struct rc_map_table rc_map_d680_dmb_table[] = {
 	{ 0x0025, KEY_POWER },
 };
 
+static int cxusb_tt_ct2_4650_ci_ctrl(void *priv, u8 read, int addr,
+					u8 data, int *mem)
+{
+	struct dvb_usb_device *d = priv;
+	u8 wbuf[3];
+	u8 rbuf[2];
+	int ret;
+
+	wbuf[0] = (addr >> 8) & 0xff;
+	wbuf[1] = addr & 0xff;
+
+	if (read) {
+		ret = cxusb_ctrl_msg(d, CMD_SP2_CI_READ, wbuf, 2, rbuf, 2);
+	} else {
+		wbuf[2] = data;
+		ret = cxusb_ctrl_msg(d, CMD_SP2_CI_WRITE, wbuf, 3, rbuf, 1);
+	}
+
+	if (ret)
+		goto err;
+
+	if (read)
+		*mem = rbuf[1];
+
+	return 0;
+err:
+	deb_info("%s: ci usb write returned %d\n", __func__, ret);
+	return ret;
+
+}
+
 static int cxusb_dee1601_demod_init(struct dvb_frontend* fe)
 {
 	static u8 clock_config []  = { CLOCK_CTL,  0x38, 0x28 };
@@ -1350,9 +1382,12 @@ static int cxusb_tt_ct2_4400_attach(struct dvb_usb_adapter *adap)
 	struct i2c_adapter *adapter;
 	struct i2c_client *client_demod;
 	struct i2c_client *client_tuner;
+	struct i2c_client *client_ci;
 	struct i2c_board_info info;
 	struct si2168_config si2168_config;
 	struct si2157_config si2157_config;
+	struct sp2_config sp2_config;
+	u8 o[2], i;
 
 	/* reset the tuner */
 	if (cxusb_tt_ct2_4400_gpio_tuner(d, 0) < 0) {
@@ -1409,6 +1444,48 @@ static int cxusb_tt_ct2_4400_attach(struct dvb_usb_adapter *adap)
 
 	st->i2c_client_tuner = client_tuner;
 
+	/* initialize CI */
+	if (d->udev->descriptor.idProduct ==
+		USB_PID_TECHNOTREND_CONNECT_CT2_4650_CI) {
+
+		memcpy(o, "\xc0\x01", 2);
+		cxusb_ctrl_msg(d, CMD_GPIO_WRITE, o, 2, &i, 1);
+		msleep(100);
+
+		memcpy(o, "\xc0\x00", 2);
+		cxusb_ctrl_msg(d, CMD_GPIO_WRITE, o, 2, &i, 1);
+		msleep(100);
+
+		memset(&sp2_config, 0, sizeof(sp2_config));
+		sp2_config.dvb_adap = &adap->dvb_adap;
+		sp2_config.priv = d;
+		sp2_config.ci_control = cxusb_tt_ct2_4650_ci_ctrl;
+		memset(&info, 0, sizeof(struct i2c_board_info));
+		strlcpy(info.type, "sp2", I2C_NAME_SIZE);
+		info.addr = 0x40;
+		info.platform_data = &sp2_config;
+		request_module(info.type);
+		client_ci = i2c_new_device(&d->i2c_adap, &info);
+		if (client_ci == NULL || client_ci->dev.driver == NULL) {
+			module_put(client_tuner->dev.driver->owner);
+			i2c_unregister_device(client_tuner);
+			module_put(client_demod->dev.driver->owner);
+			i2c_unregister_device(client_demod);
+			return -ENODEV;
+		}
+		if (!try_module_get(client_ci->dev.driver->owner)) {
+			i2c_unregister_device(client_ci);
+			module_put(client_tuner->dev.driver->owner);
+			i2c_unregister_device(client_tuner);
+			module_put(client_demod->dev.driver->owner);
+			i2c_unregister_device(client_demod);
+			return -ENODEV;
+		}
+
+		st->i2c_client_ci = client_ci;
+
+	}
+
 	return 0;
 }
 
@@ -1538,6 +1615,13 @@ static void cxusb_disconnect(struct usb_interface *intf)
 	struct cxusb_state *st = d->priv;
 	struct i2c_client *client;
 
+	/* remove I2C client for CI */
+	client = st->i2c_client_ci;
+	if (client) {
+		module_put(client->dev.driver->owner);
+		i2c_unregister_device(client);
+	}
+
 	/* remove I2C client for tuner */
 	client = st->i2c_client_tuner;
 	if (client) {
@@ -1577,6 +1661,7 @@ static struct usb_device_id cxusb_table [] = {
 	{ USB_DEVICE(USB_VID_CONEXANT, USB_PID_CONEXANT_D680_DMB) },
 	{ USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_D689) },
 	{ USB_DEVICE(USB_VID_TECHNOTREND, USB_PID_TECHNOTREND_TVSTICK_CT2_4400) },
+	{ USB_DEVICE(USB_VID_TECHNOTREND, USB_PID_TECHNOTREND_CONNECT_CT2_4650_CI) },
 	{}		/* Terminating entry */
 };
 MODULE_DEVICE_TABLE (usb, cxusb_table);
@@ -2266,13 +2351,18 @@ static struct dvb_usb_device_properties cxusb_tt_ct2_4400_properties = {
 		.rc_interval    = 150,
 	},
 
-	.num_device_descs = 1,
+	.num_device_descs = 2,
 	.devices = {
 		{
 			"TechnoTrend TVStick CT2-4400",
 			{ NULL },
 			{ &cxusb_table[20], NULL },
 		},
+		{
+			"TechnoTrend TT-connect CT2-4650 CI",
+			{ NULL },
+			{ &cxusb_table[21], NULL },
+		},
 	}
 };
 
diff --git a/drivers/media/usb/dvb-usb/cxusb.h b/drivers/media/usb/dvb-usb/cxusb.h
index 527ff79..29f3e2e 100644
--- a/drivers/media/usb/dvb-usb/cxusb.h
+++ b/drivers/media/usb/dvb-usb/cxusb.h
@@ -28,10 +28,14 @@
 #define CMD_ANALOG        0x50
 #define CMD_DIGITAL       0x51
 
+#define CMD_SP2_CI_WRITE  0x70
+#define CMD_SP2_CI_READ   0x71
+
 struct cxusb_state {
 	u8 gpio_write_state[3];
 	struct i2c_client *i2c_client_demod;
 	struct i2c_client *i2c_client_tuner;
+	struct i2c_client *i2c_client_ci;
 };
 
 #endif
-- 
http://palosaari.fi/


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [GIT PULL FINAL 09/21] cxusb: Add read_mac_address for TT CT2-4400 and CT2-4650
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
                   ` (7 preceding siblings ...)
  2014-08-22 10:58 ` [GIT PULL FINAL 08/21] cxusb: Add support for TechnoTrend TT-connect CT2-4650 CI Antti Palosaari
@ 2014-08-22 10:58 ` Antti Palosaari
  2014-08-22 10:58 ` [GIT PULL FINAL 10/21] si2168: DVB-T2 PLP selection implemented Antti Palosaari
                   ` (13 subsequent siblings)
  22 siblings, 0 replies; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:58 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov, Antti Palosaari

From: Olli Salonen <olli.salonen@iki.fi>

Read MAC address from the EEPROM.

This version two corrects a flaw in the result code returning that
did exist in the first version.

Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
Reviewed-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/usb/dvb-usb/cxusb.c | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c
index 4ab3459..187d529 100644
--- a/drivers/media/usb/dvb-usb/cxusb.c
+++ b/drivers/media/usb/dvb-usb/cxusb.c
@@ -673,6 +673,39 @@ static struct rc_map_table rc_map_d680_dmb_table[] = {
 	{ 0x0025, KEY_POWER },
 };
 
+static int cxusb_tt_ct2_4400_read_mac_address(struct dvb_usb_device *d, u8 mac[6])
+{
+	u8 wbuf[2];
+	u8 rbuf[6];
+	int ret;
+	struct i2c_msg msg[] = {
+		{
+			.addr = 0x51,
+			.flags = 0,
+			.buf = wbuf,
+			.len = 2,
+		}, {
+			.addr = 0x51,
+			.flags = I2C_M_RD,
+			.buf = rbuf,
+			.len = 6,
+		}
+	};
+
+	wbuf[0] = 0x1e;
+	wbuf[1] = 0x00;
+	ret = cxusb_i2c_xfer(&d->i2c_adap, msg, 2);
+
+	if (ret == 2) {
+		memcpy(mac, rbuf, 6);
+		return 0;
+	} else {
+		if (ret < 0)
+			return ret;
+		return -EIO;
+	}
+}
+
 static int cxusb_tt_ct2_4650_ci_ctrl(void *priv, u8 read, int addr,
 					u8 data, int *mem)
 {
@@ -2316,6 +2349,8 @@ static struct dvb_usb_device_properties cxusb_tt_ct2_4400_properties = {
 	.size_of_priv     = sizeof(struct cxusb_state),
 
 	.num_adapters = 1,
+	.read_mac_address = cxusb_tt_ct2_4400_read_mac_address,
+
 	.adapter = {
 		{
 		.num_frontends = 1,
-- 
http://palosaari.fi/


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [GIT PULL FINAL 10/21] si2168: DVB-T2 PLP selection implemented
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
                   ` (8 preceding siblings ...)
  2014-08-22 10:58 ` [GIT PULL FINAL 09/21] cxusb: Add read_mac_address for TT CT2-4400 and CT2-4650 Antti Palosaari
@ 2014-08-22 10:58 ` Antti Palosaari
  2014-08-22 10:58 ` [GIT PULL FINAL 11/21] si2157: Add support for delivery system SYS_ATSC Antti Palosaari
                   ` (12 subsequent siblings)
  22 siblings, 0 replies; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:58 UTC (permalink / raw)
  To: linux-media
  Cc: Nibble Max, Olli Salonen, Evgeny Plehov, CrazyCat, Antti Palosaari

From: CrazyCat <crazycat69@narod.ru>

DVB-T2 PLP selection implemented for Si2168 demod.
Tested with PCTV 292e.

Signed-off-by: Evgeny Plehov <EvgenyPlehov@ukr.net>
Reviewed-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/dvb-frontends/si2168.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/drivers/media/dvb-frontends/si2168.c b/drivers/media/dvb-frontends/si2168.c
index 97614db..55a4212 100644
--- a/drivers/media/dvb-frontends/si2168.c
+++ b/drivers/media/dvb-frontends/si2168.c
@@ -167,10 +167,10 @@ static int si2168_set_frontend(struct dvb_frontend *fe)
 	u8 bandwidth, delivery_system;
 
 	dev_dbg(&s->client->dev,
-			"delivery_system=%u modulation=%u frequency=%u bandwidth_hz=%u symbol_rate=%u inversion=%u\n",
+			"delivery_system=%u modulation=%u frequency=%u bandwidth_hz=%u symbol_rate=%u inversion=%u, stream_id=%d\n",
 			c->delivery_system, c->modulation,
 			c->frequency, c->bandwidth_hz, c->symbol_rate,
-			c->inversion);
+			c->inversion, c->stream_id);
 
 	if (!s->active) {
 		ret = -EAGAIN;
@@ -234,6 +234,18 @@ static int si2168_set_frontend(struct dvb_frontend *fe)
 	if (ret)
 		goto err;
 
+	if (c->delivery_system == SYS_DVBT2) {
+		/* select PLP */
+		cmd.args[0] = 0x52;
+		cmd.args[1] = c->stream_id & 0xff;
+		cmd.args[2] = c->stream_id == NO_STREAM_ID_FILTER ? 0 : 1;
+		cmd.wlen = 3;
+		cmd.rlen = 1;
+		ret = si2168_cmd_execute(s, &cmd);
+		if (ret)
+			goto err;
+	}
+
 	memcpy(cmd.args, "\x51\x03", 2);
 	cmd.wlen = 2;
 	cmd.rlen = 12;
-- 
http://palosaari.fi/


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [GIT PULL FINAL 11/21] si2157: Add support for delivery system SYS_ATSC
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
                   ` (9 preceding siblings ...)
  2014-08-22 10:58 ` [GIT PULL FINAL 10/21] si2168: DVB-T2 PLP selection implemented Antti Palosaari
@ 2014-08-22 10:58 ` Antti Palosaari
  2014-08-22 10:58 ` [GIT PULL FINAL 12/21] dvb-usb-v2: remove dvb_usb_device NULL check Antti Palosaari
                   ` (11 subsequent siblings)
  22 siblings, 0 replies; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:58 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov, Antti Palosaari

From: Olli Salonen <olli.salonen@iki.fi>

Set the property for delivery system also in case of SYS_ATSC. This
behaviour is observed in the sniffs taken with Hauppauge HVR-955Q
Windows driver.

Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
Reviewed-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/tuners/si2157.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/media/tuners/si2157.c b/drivers/media/tuners/si2157.c
index 2281b7d..efb5cce 100644
--- a/drivers/media/tuners/si2157.c
+++ b/drivers/media/tuners/si2157.c
@@ -238,6 +238,9 @@ static int si2157_set_params(struct dvb_frontend *fe)
 		bandwidth = 0x0f;
 
 	switch (c->delivery_system) {
+	case SYS_ATSC:
+			delivery_system = 0x00;
+			break;
 	case SYS_DVBT:
 	case SYS_DVBT2: /* it seems DVB-T and DVB-T2 both are 0x20 here */
 			delivery_system = 0x20;
-- 
http://palosaari.fi/


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [GIT PULL FINAL 12/21] dvb-usb-v2: remove dvb_usb_device NULL check
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
                   ` (10 preceding siblings ...)
  2014-08-22 10:58 ` [GIT PULL FINAL 11/21] si2157: Add support for delivery system SYS_ATSC Antti Palosaari
@ 2014-08-22 10:58 ` Antti Palosaari
  2014-08-22 10:58 ` [GIT PULL FINAL 13/21] msi2500: remove unneeded local pointer on msi2500_isoc_init() Antti Palosaari
                   ` (10 subsequent siblings)
  22 siblings, 0 replies; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:58 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov, Antti Palosaari

Reported by Dan Carpenter:

The patch d10d1b9ac97b: "[media] dvb_usb_v2: use dev_* logging
macros" from Jun 26, 2012, leads to the following Smatch complaint:

drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c:31 dvb_usb_v2_generic_io()
	 error: we previously assumed 'd' could be null (see line 29)

...
Remove whole check as it must not happen in any case. Driver is
totally broken if it does not have valid pointer to device.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c b/drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c
index 33ff97e..22bdce1 100644
--- a/drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c
+++ b/drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c
@@ -26,7 +26,7 @@ static int dvb_usb_v2_generic_io(struct dvb_usb_device *d,
 {
 	int ret, actual_length;
 
-	if (!d || !wbuf || !wlen || !d->props->generic_bulk_ctrl_endpoint ||
+	if (!wbuf || !wlen || !d->props->generic_bulk_ctrl_endpoint ||
 			!d->props->generic_bulk_ctrl_endpoint_response) {
 		dev_dbg(&d->udev->dev, "%s: failed=%d\n", __func__, -EINVAL);
 		return -EINVAL;
-- 
http://palosaari.fi/


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [GIT PULL FINAL 13/21] msi2500: remove unneeded local pointer on msi2500_isoc_init()
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
                   ` (11 preceding siblings ...)
  2014-08-22 10:58 ` [GIT PULL FINAL 12/21] dvb-usb-v2: remove dvb_usb_device NULL check Antti Palosaari
@ 2014-08-22 10:58 ` Antti Palosaari
  2014-08-22 10:58 ` [GIT PULL FINAL 14/21] m88ts2022: fix 32bit overflow on filter calc Antti Palosaari
                   ` (9 subsequent siblings)
  22 siblings, 0 replies; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:58 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov, Antti Palosaari

There is no need to keep local copy of usb_device pointer as we
have same pointer stored and available easily from device state.

Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/usb/msi2500/msi2500.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/media/usb/msi2500/msi2500.c b/drivers/media/usb/msi2500/msi2500.c
index 26b1334..71e0960 100644
--- a/drivers/media/usb/msi2500/msi2500.c
+++ b/drivers/media/usb/msi2500/msi2500.c
@@ -501,14 +501,12 @@ static void msi2500_isoc_cleanup(struct msi2500_state *s)
 /* Both v4l2_lock and vb_queue_lock should be locked when calling this */
 static int msi2500_isoc_init(struct msi2500_state *s)
 {
-	struct usb_device *udev;
 	struct urb *urb;
 	int i, j, ret;
 
 	dev_dbg(&s->udev->dev, "%s:\n", __func__);
 
 	s->isoc_errors = 0;
-	udev = s->udev;
 
 	ret = usb_set_interface(s->udev, 0, 1);
 	if (ret)
@@ -527,10 +525,11 @@ static int msi2500_isoc_init(struct msi2500_state *s)
 		dev_dbg(&s->udev->dev, "Allocated URB at 0x%p\n", urb);
 
 		urb->interval = 1;
-		urb->dev = udev;
-		urb->pipe = usb_rcvisocpipe(udev, 0x81);
+		urb->dev = s->udev;
+		urb->pipe = usb_rcvisocpipe(s->udev, 0x81);
 		urb->transfer_flags = URB_ISO_ASAP | URB_NO_TRANSFER_DMA_MAP;
-		urb->transfer_buffer = usb_alloc_coherent(udev, ISO_BUFFER_SIZE,
+		urb->transfer_buffer = usb_alloc_coherent(s->udev,
+				ISO_BUFFER_SIZE,
 				GFP_KERNEL, &urb->transfer_dma);
 		if (urb->transfer_buffer == NULL) {
 			dev_err(&s->udev->dev,
-- 
http://palosaari.fi/


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [GIT PULL FINAL 14/21] m88ts2022: fix 32bit overflow on filter calc
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
                   ` (12 preceding siblings ...)
  2014-08-22 10:58 ` [GIT PULL FINAL 13/21] msi2500: remove unneeded local pointer on msi2500_isoc_init() Antti Palosaari
@ 2014-08-22 10:58 ` Antti Palosaari
  2014-08-22 10:58 ` [GIT PULL FINAL 15/21] m88ts2022: fix coding style issues Antti Palosaari
                   ` (8 subsequent siblings)
  22 siblings, 0 replies; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:58 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov, Antti Palosaari

Maximum satellite symbol rate used is 45000000Sps which overflows
when multiplied by 135. As final calculation result is fraction,
we could use mult_frac macro in order to keep calculation inside
32 bit number limits and prevent overflow.

Original bug and fix was provided by Nibble Max. I decided to
implement it differently as it is now.

Reported-by: Nibble Max <nibble.max@gmail.com>
Tested-by: Nibble Max <nibble.max@gmail.com>
Cc: <stable@kernel.org>
Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/tuners/m88ts2022.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/tuners/m88ts2022.c b/drivers/media/tuners/m88ts2022.c
index 40c42de..7a62097 100644
--- a/drivers/media/tuners/m88ts2022.c
+++ b/drivers/media/tuners/m88ts2022.c
@@ -314,7 +314,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 	div_min = gdiv28 * 78 / 100;
 	div_max = clamp_val(div_max, 0U, 63U);
 
-	f_3db_hz = c->symbol_rate * 135UL / 200UL;
+	f_3db_hz = mult_frac(c->symbol_rate, 135, 200);
 	f_3db_hz +=  2000000U + (frequency_offset_khz * 1000U);
 	f_3db_hz = clamp(f_3db_hz, 7000000U, 40000000U);
 
-- 
http://palosaari.fi/


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [GIT PULL FINAL 15/21] m88ts2022: fix coding style issues
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
                   ` (13 preceding siblings ...)
  2014-08-22 10:58 ` [GIT PULL FINAL 14/21] m88ts2022: fix 32bit overflow on filter calc Antti Palosaari
@ 2014-08-22 10:58 ` Antti Palosaari
  2014-08-22 10:58 ` [GIT PULL FINAL 16/21] m88ts2022: rename device state (priv => s) Antti Palosaari
                   ` (7 subsequent siblings)
  22 siblings, 0 replies; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:58 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov, Antti Palosaari

Fix coding style issues pointed out by checkpatch.pl.

Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/tuners/m88ts2022.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/media/tuners/m88ts2022.c b/drivers/media/tuners/m88ts2022.c
index 7a62097..f51b107 100644
--- a/drivers/media/tuners/m88ts2022.c
+++ b/drivers/media/tuners/m88ts2022.c
@@ -176,6 +176,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 	unsigned int f_ref_khz, f_vco_khz, div_ref, div_out, pll_n, gdiv28;
 	u8 buf[3], u8tmp, cap_code, lpf_gm, lpf_mxdiv, div_max, div_min;
 	u16 u16tmp;
+
 	dev_dbg(&priv->client->dev,
 			"%s: frequency=%d symbol_rate=%d rolloff=%d\n",
 			__func__, c->frequency, c->symbol_rate, c->rolloff);
@@ -393,6 +394,7 @@ static int m88ts2022_init(struct dvb_frontend *fe)
 		{0x24, 0x02},
 		{0x12, 0xa0},
 	};
+
 	dev_dbg(&priv->client->dev, "%s:\n", __func__);
 
 	ret = m88ts2022_wr_reg(priv, 0x00, 0x01);
@@ -448,6 +450,7 @@ static int m88ts2022_sleep(struct dvb_frontend *fe)
 {
 	struct m88ts2022_priv *priv = fe->tuner_priv;
 	int ret;
+
 	dev_dbg(&priv->client->dev, "%s:\n", __func__);
 
 	ret = m88ts2022_wr_reg(priv, 0x00, 0x00);
@@ -462,6 +465,7 @@ err:
 static int m88ts2022_get_frequency(struct dvb_frontend *fe, u32 *frequency)
 {
 	struct m88ts2022_priv *priv = fe->tuner_priv;
+
 	dev_dbg(&priv->client->dev, "%s:\n", __func__);
 
 	*frequency = priv->frequency_khz;
@@ -471,6 +475,7 @@ static int m88ts2022_get_frequency(struct dvb_frontend *fe, u32 *frequency)
 static int m88ts2022_get_if_frequency(struct dvb_frontend *fe, u32 *frequency)
 {
 	struct m88ts2022_priv *priv = fe->tuner_priv;
+
 	dev_dbg(&priv->client->dev, "%s:\n", __func__);
 
 	*frequency = 0; /* Zero-IF */
@@ -642,6 +647,7 @@ static int m88ts2022_remove(struct i2c_client *client)
 {
 	struct m88ts2022_priv *priv = i2c_get_clientdata(client);
 	struct dvb_frontend *fe = priv->cfg.fe;
+
 	dev_dbg(&client->dev, "%s:\n", __func__);
 
 	memset(&fe->ops.tuner_ops, 0, sizeof(struct dvb_tuner_ops));
-- 
http://palosaari.fi/


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [GIT PULL FINAL 16/21] m88ts2022: rename device state (priv => s)
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
                   ` (14 preceding siblings ...)
  2014-08-22 10:58 ` [GIT PULL FINAL 15/21] m88ts2022: fix coding style issues Antti Palosaari
@ 2014-08-22 10:58 ` Antti Palosaari
  2014-09-02 18:51   ` Mauro Carvalho Chehab
  2014-08-22 10:58 ` [GIT PULL FINAL 17/21] m88ts2022: clean up logging Antti Palosaari
                   ` (6 subsequent siblings)
  22 siblings, 1 reply; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:58 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov, Antti Palosaari

I like short names for things which are used everywhere overall the
driver. Due to that rename device state pointer from 'priv' to 's'.

Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/tuners/m88ts2022.c      | 190 +++++++++++++++++-----------------
 drivers/media/tuners/m88ts2022_priv.h |   2 +-
 2 files changed, 96 insertions(+), 96 deletions(-)

diff --git a/drivers/media/tuners/m88ts2022.c b/drivers/media/tuners/m88ts2022.c
index f51b107..43856df 100644
--- a/drivers/media/tuners/m88ts2022.c
+++ b/drivers/media/tuners/m88ts2022.c
@@ -19,7 +19,7 @@
 #include "m88ts2022_priv.h"
 
 /* write multiple registers */
-static int m88ts2022_wr_regs(struct m88ts2022_priv *priv,
+static int m88ts2022_wr_regs(struct m88ts2022 *s,
 		u8 reg, const u8 *val, int len)
 {
 #define MAX_WR_LEN 3
@@ -28,7 +28,7 @@ static int m88ts2022_wr_regs(struct m88ts2022_priv *priv,
 	u8 buf[MAX_WR_XFER_LEN];
 	struct i2c_msg msg[1] = {
 		{
-			.addr = priv->client->addr,
+			.addr = s->client->addr,
 			.flags = 0,
 			.len = 1 + len,
 			.buf = buf,
@@ -41,11 +41,11 @@ static int m88ts2022_wr_regs(struct m88ts2022_priv *priv,
 	buf[0] = reg;
 	memcpy(&buf[1], val, len);
 
-	ret = i2c_transfer(priv->client->adapter, msg, 1);
+	ret = i2c_transfer(s->client->adapter, msg, 1);
 	if (ret == 1) {
 		ret = 0;
 	} else {
-		dev_warn(&priv->client->dev,
+		dev_warn(&s->client->dev,
 				"%s: i2c wr failed=%d reg=%02x len=%d\n",
 				KBUILD_MODNAME, ret, reg, len);
 		ret = -EREMOTEIO;
@@ -55,7 +55,7 @@ static int m88ts2022_wr_regs(struct m88ts2022_priv *priv,
 }
 
 /* read multiple registers */
-static int m88ts2022_rd_regs(struct m88ts2022_priv *priv, u8 reg,
+static int m88ts2022_rd_regs(struct m88ts2022 *s, u8 reg,
 		u8 *val, int len)
 {
 #define MAX_RD_LEN 1
@@ -64,12 +64,12 @@ static int m88ts2022_rd_regs(struct m88ts2022_priv *priv, u8 reg,
 	u8 buf[MAX_RD_XFER_LEN];
 	struct i2c_msg msg[2] = {
 		{
-			.addr = priv->client->addr,
+			.addr = s->client->addr,
 			.flags = 0,
 			.len = 1,
 			.buf = &reg,
 		}, {
-			.addr = priv->client->addr,
+			.addr = s->client->addr,
 			.flags = I2C_M_RD,
 			.len = len,
 			.buf = buf,
@@ -79,12 +79,12 @@ static int m88ts2022_rd_regs(struct m88ts2022_priv *priv, u8 reg,
 	if (WARN_ON(len > MAX_RD_LEN))
 		return -EINVAL;
 
-	ret = i2c_transfer(priv->client->adapter, msg, 2);
+	ret = i2c_transfer(s->client->adapter, msg, 2);
 	if (ret == 2) {
 		memcpy(val, buf, len);
 		ret = 0;
 	} else {
-		dev_warn(&priv->client->dev,
+		dev_warn(&s->client->dev,
 				"%s: i2c rd failed=%d reg=%02x len=%d\n",
 				KBUILD_MODNAME, ret, reg, len);
 		ret = -EREMOTEIO;
@@ -94,19 +94,19 @@ static int m88ts2022_rd_regs(struct m88ts2022_priv *priv, u8 reg,
 }
 
 /* write single register */
-static int m88ts2022_wr_reg(struct m88ts2022_priv *priv, u8 reg, u8 val)
+static int m88ts2022_wr_reg(struct m88ts2022 *s, u8 reg, u8 val)
 {
-	return m88ts2022_wr_regs(priv, reg, &val, 1);
+	return m88ts2022_wr_regs(s, reg, &val, 1);
 }
 
 /* read single register */
-static int m88ts2022_rd_reg(struct m88ts2022_priv *priv, u8 reg, u8 *val)
+static int m88ts2022_rd_reg(struct m88ts2022 *s, u8 reg, u8 *val)
 {
-	return m88ts2022_rd_regs(priv, reg, val, 1);
+	return m88ts2022_rd_regs(s, reg, val, 1);
 }
 
 /* write single register with mask */
-static int m88ts2022_wr_reg_mask(struct m88ts2022_priv *priv,
+static int m88ts2022_wr_reg_mask(struct m88ts2022 *s,
 		u8 reg, u8 val, u8 mask)
 {
 	int ret;
@@ -114,7 +114,7 @@ static int m88ts2022_wr_reg_mask(struct m88ts2022_priv *priv,
 
 	/* no need for read if whole reg is written */
 	if (mask != 0xff) {
-		ret = m88ts2022_rd_regs(priv, reg, &u8tmp, 1);
+		ret = m88ts2022_rd_regs(s, reg, &u8tmp, 1);
 		if (ret)
 			return ret;
 
@@ -123,13 +123,13 @@ static int m88ts2022_wr_reg_mask(struct m88ts2022_priv *priv,
 		val |= u8tmp;
 	}
 
-	return m88ts2022_wr_regs(priv, reg, &val, 1);
+	return m88ts2022_wr_regs(s, reg, &val, 1);
 }
 
 static int m88ts2022_cmd(struct dvb_frontend *fe,
 		int op, int sleep, u8 reg, u8 mask, u8 val, u8 *reg_val)
 {
-	struct m88ts2022_priv *priv = fe->tuner_priv;
+	struct m88ts2022 *s = fe->tuner_priv;
 	int ret, i;
 	u8 u8tmp;
 	struct m88ts2022_reg_val reg_vals[] = {
@@ -140,12 +140,12 @@ static int m88ts2022_cmd(struct dvb_frontend *fe,
 	};
 
 	for (i = 0; i < 2; i++) {
-		dev_dbg(&priv->client->dev,
+		dev_dbg(&s->client->dev,
 				"%s: i=%d op=%02x reg=%02x mask=%02x val=%02x\n",
 				__func__, i, op, reg, mask, val);
 
 		for (i = 0; i < ARRAY_SIZE(reg_vals); i++) {
-			ret = m88ts2022_wr_reg(priv, reg_vals[i].reg,
+			ret = m88ts2022_wr_reg(s, reg_vals[i].reg,
 					reg_vals[i].val);
 			if (ret)
 				goto err;
@@ -153,7 +153,7 @@ static int m88ts2022_cmd(struct dvb_frontend *fe,
 
 		usleep_range(sleep * 1000, sleep * 10000);
 
-		ret = m88ts2022_rd_reg(priv, reg, &u8tmp);
+		ret = m88ts2022_rd_reg(s, reg, &u8tmp);
 		if (ret)
 			goto err;
 
@@ -169,7 +169,7 @@ err:
 
 static int m88ts2022_set_params(struct dvb_frontend *fe)
 {
-	struct m88ts2022_priv *priv = fe->tuner_priv;
+	struct m88ts2022 *s = fe->tuner_priv;
 	struct dtv_frontend_properties *c = &fe->dtv_property_cache;
 	int ret;
 	unsigned int frequency_khz, frequency_offset_khz, f_3db_hz;
@@ -177,14 +177,14 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 	u8 buf[3], u8tmp, cap_code, lpf_gm, lpf_mxdiv, div_max, div_min;
 	u16 u16tmp;
 
-	dev_dbg(&priv->client->dev,
+	dev_dbg(&s->client->dev,
 			"%s: frequency=%d symbol_rate=%d rolloff=%d\n",
 			__func__, c->frequency, c->symbol_rate, c->rolloff);
 	/*
 	 * Integer-N PLL synthesizer
 	 * kHz is used for all calculations to keep calculations within 32-bit
 	 */
-	f_ref_khz = DIV_ROUND_CLOSEST(priv->cfg.clock, 1000);
+	f_ref_khz = DIV_ROUND_CLOSEST(s->cfg.clock, 1000);
 	div_ref = DIV_ROUND_CLOSEST(f_ref_khz, 2000);
 
 	if (c->symbol_rate < 5000000)
@@ -204,14 +204,14 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 
 	buf[0] = u8tmp;
 	buf[1] = 0x40;
-	ret = m88ts2022_wr_regs(priv, 0x10, buf, 2);
+	ret = m88ts2022_wr_regs(s, 0x10, buf, 2);
 	if (ret)
 		goto err;
 
 	f_vco_khz = frequency_khz * div_out;
 	pll_n = f_vco_khz * div_ref / f_ref_khz;
 	pll_n += pll_n % 2;
-	priv->frequency_khz = pll_n * f_ref_khz / div_ref / div_out;
+	s->frequency_khz = pll_n * f_ref_khz / div_ref / div_out;
 
 	if (pll_n < 4095)
 		u16tmp = pll_n - 1024;
@@ -223,31 +223,31 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 	buf[0] = (u16tmp >> 8) & 0x3f;
 	buf[1] = (u16tmp >> 0) & 0xff;
 	buf[2] = div_ref - 8;
-	ret = m88ts2022_wr_regs(priv, 0x01, buf, 3);
+	ret = m88ts2022_wr_regs(s, 0x01, buf, 3);
 	if (ret)
 		goto err;
 
-	dev_dbg(&priv->client->dev,
+	dev_dbg(&s->client->dev,
 			"%s: frequency=%u offset=%d f_vco_khz=%u pll_n=%u div_ref=%u div_out=%u\n",
-			__func__, priv->frequency_khz,
-			priv->frequency_khz - c->frequency, f_vco_khz, pll_n,
+			__func__, s->frequency_khz,
+			s->frequency_khz - c->frequency, f_vco_khz, pll_n,
 			div_ref, div_out);
 
 	ret = m88ts2022_cmd(fe, 0x10, 5, 0x15, 0x40, 0x00, NULL);
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_rd_reg(priv, 0x14, &u8tmp);
+	ret = m88ts2022_rd_reg(s, 0x14, &u8tmp);
 	if (ret)
 		goto err;
 
 	u8tmp &= 0x7f;
 	if (u8tmp < 64) {
-		ret = m88ts2022_wr_reg_mask(priv, 0x10, 0x80, 0x80);
+		ret = m88ts2022_wr_reg_mask(s, 0x10, 0x80, 0x80);
 		if (ret)
 			goto err;
 
-		ret = m88ts2022_wr_reg(priv, 0x11, 0x6f);
+		ret = m88ts2022_wr_reg(s, 0x11, 0x6f);
 		if (ret)
 			goto err;
 
@@ -256,13 +256,13 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 			goto err;
 	}
 
-	ret = m88ts2022_rd_reg(priv, 0x14, &u8tmp);
+	ret = m88ts2022_rd_reg(s, 0x14, &u8tmp);
 	if (ret)
 		goto err;
 
 	u8tmp &= 0x1f;
 	if (u8tmp > 19) {
-		ret = m88ts2022_wr_reg_mask(priv, 0x10, 0x00, 0x02);
+		ret = m88ts2022_wr_reg_mask(s, 0x10, 0x00, 0x02);
 		if (ret)
 			goto err;
 	}
@@ -271,26 +271,26 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_wr_reg(priv, 0x25, 0x00);
+	ret = m88ts2022_wr_reg(s, 0x25, 0x00);
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_wr_reg(priv, 0x27, 0x70);
+	ret = m88ts2022_wr_reg(s, 0x27, 0x70);
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_wr_reg(priv, 0x41, 0x09);
+	ret = m88ts2022_wr_reg(s, 0x41, 0x09);
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_wr_reg(priv, 0x08, 0x0b);
+	ret = m88ts2022_wr_reg(s, 0x08, 0x0b);
 	if (ret)
 		goto err;
 
 	/* filters */
 	gdiv28 = DIV_ROUND_CLOSEST(f_ref_khz * 1694U, 1000000U);
 
-	ret = m88ts2022_wr_reg(priv, 0x04, gdiv28);
+	ret = m88ts2022_wr_reg(s, 0x04, gdiv28);
 	if (ret)
 		goto err;
 
@@ -300,7 +300,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 
 	cap_code = u8tmp & 0x3f;
 
-	ret = m88ts2022_wr_reg(priv, 0x41, 0x0d);
+	ret = m88ts2022_wr_reg(s, 0x41, 0x0d);
 	if (ret)
 		goto err;
 
@@ -328,11 +328,11 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 		lpf_mxdiv = DIV_ROUND_CLOSEST(++lpf_gm * LPF_COEFF * f_ref_khz, f_3db_hz);
 	lpf_mxdiv = clamp_val(lpf_mxdiv, 0U, div_max);
 
-	ret = m88ts2022_wr_reg(priv, 0x04, lpf_mxdiv);
+	ret = m88ts2022_wr_reg(s, 0x04, lpf_mxdiv);
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_wr_reg(priv, 0x06, lpf_gm);
+	ret = m88ts2022_wr_reg(s, 0x06, lpf_gm);
 	if (ret)
 		goto err;
 
@@ -342,7 +342,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 
 	cap_code = u8tmp & 0x3f;
 
-	ret = m88ts2022_wr_reg(priv, 0x41, 0x09);
+	ret = m88ts2022_wr_reg(s, 0x41, 0x09);
 	if (ret)
 		goto err;
 
@@ -354,15 +354,15 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 	cap_code = (cap_code + u8tmp) / 2;
 
 	u8tmp = cap_code | 0x80;
-	ret = m88ts2022_wr_reg(priv, 0x25, u8tmp);
+	ret = m88ts2022_wr_reg(s, 0x25, u8tmp);
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_wr_reg(priv, 0x27, 0x30);
+	ret = m88ts2022_wr_reg(s, 0x27, 0x30);
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_wr_reg(priv, 0x08, 0x09);
+	ret = m88ts2022_wr_reg(s, 0x08, 0x09);
 	if (ret)
 		goto err;
 
@@ -371,14 +371,14 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 		goto err;
 err:
 	if (ret)
-		dev_dbg(&priv->client->dev, "%s: failed=%d\n", __func__, ret);
+		dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
 
 	return ret;
 }
 
 static int m88ts2022_init(struct dvb_frontend *fe)
 {
-	struct m88ts2022_priv *priv = fe->tuner_priv;
+	struct m88ts2022 *s = fe->tuner_priv;
 	int ret, i;
 	u8 u8tmp;
 	static const struct m88ts2022_reg_val reg_vals[] = {
@@ -395,23 +395,23 @@ static int m88ts2022_init(struct dvb_frontend *fe)
 		{0x12, 0xa0},
 	};
 
-	dev_dbg(&priv->client->dev, "%s:\n", __func__);
+	dev_dbg(&s->client->dev, "%s:\n", __func__);
 
-	ret = m88ts2022_wr_reg(priv, 0x00, 0x01);
+	ret = m88ts2022_wr_reg(s, 0x00, 0x01);
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_wr_reg(priv, 0x00, 0x03);
+	ret = m88ts2022_wr_reg(s, 0x00, 0x03);
 	if (ret)
 		goto err;
 
-	switch (priv->cfg.clock_out) {
+	switch (s->cfg.clock_out) {
 	case M88TS2022_CLOCK_OUT_DISABLED:
 		u8tmp = 0x60;
 		break;
 	case M88TS2022_CLOCK_OUT_ENABLED:
 		u8tmp = 0x70;
-		ret = m88ts2022_wr_reg(priv, 0x05, priv->cfg.clock_out_div);
+		ret = m88ts2022_wr_reg(s, 0x05, s->cfg.clock_out_div);
 		if (ret)
 			goto err;
 		break;
@@ -422,61 +422,61 @@ static int m88ts2022_init(struct dvb_frontend *fe)
 		goto err;
 	}
 
-	ret = m88ts2022_wr_reg(priv, 0x42, u8tmp);
+	ret = m88ts2022_wr_reg(s, 0x42, u8tmp);
 	if (ret)
 		goto err;
 
-	if (priv->cfg.loop_through)
+	if (s->cfg.loop_through)
 		u8tmp = 0xec;
 	else
 		u8tmp = 0x6c;
 
-	ret = m88ts2022_wr_reg(priv, 0x62, u8tmp);
+	ret = m88ts2022_wr_reg(s, 0x62, u8tmp);
 	if (ret)
 		goto err;
 
 	for (i = 0; i < ARRAY_SIZE(reg_vals); i++) {
-		ret = m88ts2022_wr_reg(priv, reg_vals[i].reg, reg_vals[i].val);
+		ret = m88ts2022_wr_reg(s, reg_vals[i].reg, reg_vals[i].val);
 		if (ret)
 			goto err;
 	}
 err:
 	if (ret)
-		dev_dbg(&priv->client->dev, "%s: failed=%d\n", __func__, ret);
+		dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
 	return ret;
 }
 
 static int m88ts2022_sleep(struct dvb_frontend *fe)
 {
-	struct m88ts2022_priv *priv = fe->tuner_priv;
+	struct m88ts2022 *s = fe->tuner_priv;
 	int ret;
 
-	dev_dbg(&priv->client->dev, "%s:\n", __func__);
+	dev_dbg(&s->client->dev, "%s:\n", __func__);
 
-	ret = m88ts2022_wr_reg(priv, 0x00, 0x00);
+	ret = m88ts2022_wr_reg(s, 0x00, 0x00);
 	if (ret)
 		goto err;
 err:
 	if (ret)
-		dev_dbg(&priv->client->dev, "%s: failed=%d\n", __func__, ret);
+		dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
 	return ret;
 }
 
 static int m88ts2022_get_frequency(struct dvb_frontend *fe, u32 *frequency)
 {
-	struct m88ts2022_priv *priv = fe->tuner_priv;
+	struct m88ts2022 *s = fe->tuner_priv;
 
-	dev_dbg(&priv->client->dev, "%s:\n", __func__);
+	dev_dbg(&s->client->dev, "%s:\n", __func__);
 
-	*frequency = priv->frequency_khz;
+	*frequency = s->frequency_khz;
 	return 0;
 }
 
 static int m88ts2022_get_if_frequency(struct dvb_frontend *fe, u32 *frequency)
 {
-	struct m88ts2022_priv *priv = fe->tuner_priv;
+	struct m88ts2022 *s = fe->tuner_priv;
 
-	dev_dbg(&priv->client->dev, "%s:\n", __func__);
+	dev_dbg(&s->client->dev, "%s:\n", __func__);
 
 	*frequency = 0; /* Zero-IF */
 	return 0;
@@ -484,27 +484,27 @@ static int m88ts2022_get_if_frequency(struct dvb_frontend *fe, u32 *frequency)
 
 static int m88ts2022_get_rf_strength(struct dvb_frontend *fe, u16 *strength)
 {
-	struct m88ts2022_priv *priv = fe->tuner_priv;
+	struct m88ts2022 *s = fe->tuner_priv;
 	int ret;
 	u8 u8tmp;
 	u16 gain, u16tmp;
 	unsigned int gain1, gain2, gain3;
 
-	ret = m88ts2022_rd_reg(priv, 0x3d, &u8tmp);
+	ret = m88ts2022_rd_reg(s, 0x3d, &u8tmp);
 	if (ret)
 		goto err;
 
 	gain1 = (u8tmp >> 0) & 0x1f;
 	gain1 = clamp(gain1, 0U, 15U);
 
-	ret = m88ts2022_rd_reg(priv, 0x21, &u8tmp);
+	ret = m88ts2022_rd_reg(s, 0x21, &u8tmp);
 	if (ret)
 		goto err;
 
 	gain2 = (u8tmp >> 0) & 0x1f;
 	gain2 = clamp(gain2, 2U, 16U);
 
-	ret = m88ts2022_rd_reg(priv, 0x66, &u8tmp);
+	ret = m88ts2022_rd_reg(s, 0x66, &u8tmp);
 	if (ret)
 		goto err;
 
@@ -520,7 +520,7 @@ static int m88ts2022_get_rf_strength(struct dvb_frontend *fe, u16 *strength)
 	*strength = (u16tmp - 59000) * 0xffff / (61500 - 59000);
 err:
 	if (ret)
-		dev_dbg(&priv->client->dev, "%s: failed=%d\n", __func__, ret);
+		dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
 	return ret;
 }
 
@@ -545,44 +545,44 @@ static int m88ts2022_probe(struct i2c_client *client,
 {
 	struct m88ts2022_config *cfg = client->dev.platform_data;
 	struct dvb_frontend *fe = cfg->fe;
-	struct m88ts2022_priv *priv;
+	struct m88ts2022 *s;
 	int ret;
 	u8 chip_id, u8tmp;
 
-	priv = kzalloc(sizeof(*priv), GFP_KERNEL);
-	if (!priv) {
+	s = kzalloc(sizeof(*s), GFP_KERNEL);
+	if (!s) {
 		ret = -ENOMEM;
 		dev_err(&client->dev, "%s: kzalloc() failed\n", KBUILD_MODNAME);
 		goto err;
 	}
 
-	memcpy(&priv->cfg, cfg, sizeof(struct m88ts2022_config));
-	priv->client = client;
+	memcpy(&s->cfg, cfg, sizeof(struct m88ts2022_config));
+	s->client = client;
 
 	/* check if the tuner is there */
-	ret = m88ts2022_rd_reg(priv, 0x00, &u8tmp);
+	ret = m88ts2022_rd_reg(s, 0x00, &u8tmp);
 	if (ret)
 		goto err;
 
 	if ((u8tmp & 0x03) == 0x00) {
-		ret = m88ts2022_wr_reg(priv, 0x00, 0x01);
+		ret = m88ts2022_wr_reg(s, 0x00, 0x01);
 		if (ret < 0)
 			goto err;
 
 		usleep_range(2000, 50000);
 	}
 
-	ret = m88ts2022_wr_reg(priv, 0x00, 0x03);
+	ret = m88ts2022_wr_reg(s, 0x00, 0x03);
 	if (ret)
 		goto err;
 
 	usleep_range(2000, 50000);
 
-	ret = m88ts2022_rd_reg(priv, 0x00, &chip_id);
+	ret = m88ts2022_rd_reg(s, 0x00, &chip_id);
 	if (ret)
 		goto err;
 
-	dev_dbg(&priv->client->dev, "%s: chip_id=%02x\n", __func__, chip_id);
+	dev_dbg(&s->client->dev, "%s: chip_id=%02x\n", __func__, chip_id);
 
 	switch (chip_id) {
 	case 0xc3:
@@ -592,13 +592,13 @@ static int m88ts2022_probe(struct i2c_client *client,
 		goto err;
 	}
 
-	switch (priv->cfg.clock_out) {
+	switch (s->cfg.clock_out) {
 	case M88TS2022_CLOCK_OUT_DISABLED:
 		u8tmp = 0x60;
 		break;
 	case M88TS2022_CLOCK_OUT_ENABLED:
 		u8tmp = 0x70;
-		ret = m88ts2022_wr_reg(priv, 0x05, priv->cfg.clock_out_div);
+		ret = m88ts2022_wr_reg(s, 0x05, s->cfg.clock_out_div);
 		if (ret)
 			goto err;
 		break;
@@ -609,50 +609,50 @@ static int m88ts2022_probe(struct i2c_client *client,
 		goto err;
 	}
 
-	ret = m88ts2022_wr_reg(priv, 0x42, u8tmp);
+	ret = m88ts2022_wr_reg(s, 0x42, u8tmp);
 	if (ret)
 		goto err;
 
-	if (priv->cfg.loop_through)
+	if (s->cfg.loop_through)
 		u8tmp = 0xec;
 	else
 		u8tmp = 0x6c;
 
-	ret = m88ts2022_wr_reg(priv, 0x62, u8tmp);
+	ret = m88ts2022_wr_reg(s, 0x62, u8tmp);
 	if (ret)
 		goto err;
 
 	/* sleep */
-	ret = m88ts2022_wr_reg(priv, 0x00, 0x00);
+	ret = m88ts2022_wr_reg(s, 0x00, 0x00);
 	if (ret)
 		goto err;
 
-	dev_info(&priv->client->dev,
+	dev_info(&s->client->dev,
 			"%s: Montage M88TS2022 successfully identified\n",
 			KBUILD_MODNAME);
 
-	fe->tuner_priv = priv;
+	fe->tuner_priv = s;
 	memcpy(&fe->ops.tuner_ops, &m88ts2022_tuner_ops,
 			sizeof(struct dvb_tuner_ops));
 
-	i2c_set_clientdata(client, priv);
+	i2c_set_clientdata(client, s);
 	return 0;
 err:
 	dev_dbg(&client->dev, "%s: failed=%d\n", __func__, ret);
-	kfree(priv);
+	kfree(s);
 	return ret;
 }
 
 static int m88ts2022_remove(struct i2c_client *client)
 {
-	struct m88ts2022_priv *priv = i2c_get_clientdata(client);
-	struct dvb_frontend *fe = priv->cfg.fe;
+	struct m88ts2022 *s = i2c_get_clientdata(client);
+	struct dvb_frontend *fe = s->cfg.fe;
 
 	dev_dbg(&client->dev, "%s:\n", __func__);
 
 	memset(&fe->ops.tuner_ops, 0, sizeof(struct dvb_tuner_ops));
 	fe->tuner_priv = NULL;
-	kfree(priv);
+	kfree(s);
 
 	return 0;
 }
diff --git a/drivers/media/tuners/m88ts2022_priv.h b/drivers/media/tuners/m88ts2022_priv.h
index 0363dd8..cbc9e2b 100644
--- a/drivers/media/tuners/m88ts2022_priv.h
+++ b/drivers/media/tuners/m88ts2022_priv.h
@@ -19,7 +19,7 @@
 
 #include "m88ts2022.h"
 
-struct m88ts2022_priv {
+struct m88ts2022 {
 	struct m88ts2022_config cfg;
 	struct i2c_client *client;
 	struct dvb_frontend *fe;
-- 
http://palosaari.fi/


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [GIT PULL FINAL 17/21] m88ts2022: clean up logging
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
                   ` (15 preceding siblings ...)
  2014-08-22 10:58 ` [GIT PULL FINAL 16/21] m88ts2022: rename device state (priv => s) Antti Palosaari
@ 2014-08-22 10:58 ` Antti Palosaari
  2014-08-22 10:58 ` [GIT PULL FINAL 18/21] m88ts2022: convert to RegMap I2C API Antti Palosaari
                   ` (5 subsequent siblings)
  22 siblings, 0 replies; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:58 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov, Antti Palosaari

There is no need to print module name nor function name as those
are done by kernel logging system when dev_xxx logging is used and
driver is proper I2C driver.

Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/tuners/m88ts2022.c | 51 +++++++++++++++++++---------------------
 1 file changed, 24 insertions(+), 27 deletions(-)

diff --git a/drivers/media/tuners/m88ts2022.c b/drivers/media/tuners/m88ts2022.c
index 43856df..dd179ff 100644
--- a/drivers/media/tuners/m88ts2022.c
+++ b/drivers/media/tuners/m88ts2022.c
@@ -46,8 +46,8 @@ static int m88ts2022_wr_regs(struct m88ts2022 *s,
 		ret = 0;
 	} else {
 		dev_warn(&s->client->dev,
-				"%s: i2c wr failed=%d reg=%02x len=%d\n",
-				KBUILD_MODNAME, ret, reg, len);
+				"i2c wr failed=%d reg=%02x len=%d\n",
+				ret, reg, len);
 		ret = -EREMOTEIO;
 	}
 
@@ -85,8 +85,8 @@ static int m88ts2022_rd_regs(struct m88ts2022 *s, u8 reg,
 		ret = 0;
 	} else {
 		dev_warn(&s->client->dev,
-				"%s: i2c rd failed=%d reg=%02x len=%d\n",
-				KBUILD_MODNAME, ret, reg, len);
+				"i2c rd failed=%d reg=%02x len=%d\n",
+				ret, reg, len);
 		ret = -EREMOTEIO;
 	}
 
@@ -141,8 +141,8 @@ static int m88ts2022_cmd(struct dvb_frontend *fe,
 
 	for (i = 0; i < 2; i++) {
 		dev_dbg(&s->client->dev,
-				"%s: i=%d op=%02x reg=%02x mask=%02x val=%02x\n",
-				__func__, i, op, reg, mask, val);
+				"i=%d op=%02x reg=%02x mask=%02x val=%02x\n",
+				i, op, reg, mask, val);
 
 		for (i = 0; i < ARRAY_SIZE(reg_vals); i++) {
 			ret = m88ts2022_wr_reg(s, reg_vals[i].reg,
@@ -178,8 +178,8 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 	u16 u16tmp;
 
 	dev_dbg(&s->client->dev,
-			"%s: frequency=%d symbol_rate=%d rolloff=%d\n",
-			__func__, c->frequency, c->symbol_rate, c->rolloff);
+			"frequency=%d symbol_rate=%d rolloff=%d\n",
+			c->frequency, c->symbol_rate, c->rolloff);
 	/*
 	 * Integer-N PLL synthesizer
 	 * kHz is used for all calculations to keep calculations within 32-bit
@@ -228,10 +228,9 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 		goto err;
 
 	dev_dbg(&s->client->dev,
-			"%s: frequency=%u offset=%d f_vco_khz=%u pll_n=%u div_ref=%u div_out=%u\n",
-			__func__, s->frequency_khz,
-			s->frequency_khz - c->frequency, f_vco_khz, pll_n,
-			div_ref, div_out);
+			"frequency=%u offset=%d f_vco_khz=%u pll_n=%u div_ref=%u div_out=%u\n",
+			s->frequency_khz, s->frequency_khz - c->frequency,
+			f_vco_khz, pll_n, div_ref, div_out);
 
 	ret = m88ts2022_cmd(fe, 0x10, 5, 0x15, 0x40, 0x00, NULL);
 	if (ret)
@@ -371,7 +370,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 		goto err;
 err:
 	if (ret)
-		dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
+		dev_dbg(&s->client->dev, "failed=%d\n", ret);
 
 	return ret;
 }
@@ -395,7 +394,7 @@ static int m88ts2022_init(struct dvb_frontend *fe)
 		{0x12, 0xa0},
 	};
 
-	dev_dbg(&s->client->dev, "%s:\n", __func__);
+	dev_dbg(&s->client->dev, "\n");
 
 	ret = m88ts2022_wr_reg(s, 0x00, 0x01);
 	if (ret)
@@ -442,7 +441,7 @@ static int m88ts2022_init(struct dvb_frontend *fe)
 	}
 err:
 	if (ret)
-		dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
+		dev_dbg(&s->client->dev, "failed=%d\n", ret);
 	return ret;
 }
 
@@ -451,14 +450,14 @@ static int m88ts2022_sleep(struct dvb_frontend *fe)
 	struct m88ts2022 *s = fe->tuner_priv;
 	int ret;
 
-	dev_dbg(&s->client->dev, "%s:\n", __func__);
+	dev_dbg(&s->client->dev, "\n");
 
 	ret = m88ts2022_wr_reg(s, 0x00, 0x00);
 	if (ret)
 		goto err;
 err:
 	if (ret)
-		dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
+		dev_dbg(&s->client->dev, "failed=%d\n", ret);
 	return ret;
 }
 
@@ -466,7 +465,7 @@ static int m88ts2022_get_frequency(struct dvb_frontend *fe, u32 *frequency)
 {
 	struct m88ts2022 *s = fe->tuner_priv;
 
-	dev_dbg(&s->client->dev, "%s:\n", __func__);
+	dev_dbg(&s->client->dev, "\n");
 
 	*frequency = s->frequency_khz;
 	return 0;
@@ -476,7 +475,7 @@ static int m88ts2022_get_if_frequency(struct dvb_frontend *fe, u32 *frequency)
 {
 	struct m88ts2022 *s = fe->tuner_priv;
 
-	dev_dbg(&s->client->dev, "%s:\n", __func__);
+	dev_dbg(&s->client->dev, "\n");
 
 	*frequency = 0; /* Zero-IF */
 	return 0;
@@ -520,7 +519,7 @@ static int m88ts2022_get_rf_strength(struct dvb_frontend *fe, u16 *strength)
 	*strength = (u16tmp - 59000) * 0xffff / (61500 - 59000);
 err:
 	if (ret)
-		dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
+		dev_dbg(&s->client->dev, "failed=%d\n", ret);
 	return ret;
 }
 
@@ -552,7 +551,7 @@ static int m88ts2022_probe(struct i2c_client *client,
 	s = kzalloc(sizeof(*s), GFP_KERNEL);
 	if (!s) {
 		ret = -ENOMEM;
-		dev_err(&client->dev, "%s: kzalloc() failed\n", KBUILD_MODNAME);
+		dev_err(&client->dev, "kzalloc() failed\n");
 		goto err;
 	}
 
@@ -582,7 +581,7 @@ static int m88ts2022_probe(struct i2c_client *client,
 	if (ret)
 		goto err;
 
-	dev_dbg(&s->client->dev, "%s: chip_id=%02x\n", __func__, chip_id);
+	dev_dbg(&s->client->dev, "chip_id=%02x\n", chip_id);
 
 	switch (chip_id) {
 	case 0xc3:
@@ -627,9 +626,7 @@ static int m88ts2022_probe(struct i2c_client *client,
 	if (ret)
 		goto err;
 
-	dev_info(&s->client->dev,
-			"%s: Montage M88TS2022 successfully identified\n",
-			KBUILD_MODNAME);
+	dev_info(&s->client->dev, "Montage M88TS2022 successfully identified\n");
 
 	fe->tuner_priv = s;
 	memcpy(&fe->ops.tuner_ops, &m88ts2022_tuner_ops,
@@ -638,7 +635,7 @@ static int m88ts2022_probe(struct i2c_client *client,
 	i2c_set_clientdata(client, s);
 	return 0;
 err:
-	dev_dbg(&client->dev, "%s: failed=%d\n", __func__, ret);
+	dev_dbg(&client->dev, "failed=%d\n", ret);
 	kfree(s);
 	return ret;
 }
@@ -648,7 +645,7 @@ static int m88ts2022_remove(struct i2c_client *client)
 	struct m88ts2022 *s = i2c_get_clientdata(client);
 	struct dvb_frontend *fe = s->cfg.fe;
 
-	dev_dbg(&client->dev, "%s:\n", __func__);
+	dev_dbg(&client->dev, "\n");
 
 	memset(&fe->ops.tuner_ops, 0, sizeof(struct dvb_tuner_ops));
 	fe->tuner_priv = NULL;
-- 
http://palosaari.fi/


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [GIT PULL FINAL 18/21] m88ts2022: convert to RegMap I2C API
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
                   ` (16 preceding siblings ...)
  2014-08-22 10:58 ` [GIT PULL FINAL 17/21] m88ts2022: clean up logging Antti Palosaari
@ 2014-08-22 10:58 ` Antti Palosaari
  2014-08-22 10:58 ` [GIT PULL FINAL 19/21] m88ts2022: change parameter type of m88ts2022_cmd Antti Palosaari
                   ` (4 subsequent siblings)
  22 siblings, 0 replies; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:58 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov, Antti Palosaari

Use RegMap to cover I2C register routines.

Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/tuners/Kconfig          |   1 +
 drivers/media/tuners/m88ts2022.c      | 231 ++++++++++------------------------
 drivers/media/tuners/m88ts2022_priv.h |   2 +
 3 files changed, 69 insertions(+), 165 deletions(-)

diff --git a/drivers/media/tuners/Kconfig b/drivers/media/tuners/Kconfig
index d79fd1c..8319996 100644
--- a/drivers/media/tuners/Kconfig
+++ b/drivers/media/tuners/Kconfig
@@ -226,6 +226,7 @@ config MEDIA_TUNER_FC2580
 config MEDIA_TUNER_M88TS2022
 	tristate "Montage M88TS2022 silicon tuner"
 	depends on MEDIA_SUPPORT && I2C
+	select REGMAP_I2C
 	default m if !MEDIA_SUBDRV_AUTOSELECT
 	help
 	  Montage M88TS2022 silicon tuner driver.
diff --git a/drivers/media/tuners/m88ts2022.c b/drivers/media/tuners/m88ts2022.c
index dd179ff..04d3979 100644
--- a/drivers/media/tuners/m88ts2022.c
+++ b/drivers/media/tuners/m88ts2022.c
@@ -18,120 +18,12 @@
 
 #include "m88ts2022_priv.h"
 
-/* write multiple registers */
-static int m88ts2022_wr_regs(struct m88ts2022 *s,
-		u8 reg, const u8 *val, int len)
-{
-#define MAX_WR_LEN 3
-#define MAX_WR_XFER_LEN (MAX_WR_LEN + 1)
-	int ret;
-	u8 buf[MAX_WR_XFER_LEN];
-	struct i2c_msg msg[1] = {
-		{
-			.addr = s->client->addr,
-			.flags = 0,
-			.len = 1 + len,
-			.buf = buf,
-		}
-	};
-
-	if (WARN_ON(len > MAX_WR_LEN))
-		return -EINVAL;
-
-	buf[0] = reg;
-	memcpy(&buf[1], val, len);
-
-	ret = i2c_transfer(s->client->adapter, msg, 1);
-	if (ret == 1) {
-		ret = 0;
-	} else {
-		dev_warn(&s->client->dev,
-				"i2c wr failed=%d reg=%02x len=%d\n",
-				ret, reg, len);
-		ret = -EREMOTEIO;
-	}
-
-	return ret;
-}
-
-/* read multiple registers */
-static int m88ts2022_rd_regs(struct m88ts2022 *s, u8 reg,
-		u8 *val, int len)
-{
-#define MAX_RD_LEN 1
-#define MAX_RD_XFER_LEN (MAX_RD_LEN)
-	int ret;
-	u8 buf[MAX_RD_XFER_LEN];
-	struct i2c_msg msg[2] = {
-		{
-			.addr = s->client->addr,
-			.flags = 0,
-			.len = 1,
-			.buf = &reg,
-		}, {
-			.addr = s->client->addr,
-			.flags = I2C_M_RD,
-			.len = len,
-			.buf = buf,
-		}
-	};
-
-	if (WARN_ON(len > MAX_RD_LEN))
-		return -EINVAL;
-
-	ret = i2c_transfer(s->client->adapter, msg, 2);
-	if (ret == 2) {
-		memcpy(val, buf, len);
-		ret = 0;
-	} else {
-		dev_warn(&s->client->dev,
-				"i2c rd failed=%d reg=%02x len=%d\n",
-				ret, reg, len);
-		ret = -EREMOTEIO;
-	}
-
-	return ret;
-}
-
-/* write single register */
-static int m88ts2022_wr_reg(struct m88ts2022 *s, u8 reg, u8 val)
-{
-	return m88ts2022_wr_regs(s, reg, &val, 1);
-}
-
-/* read single register */
-static int m88ts2022_rd_reg(struct m88ts2022 *s, u8 reg, u8 *val)
-{
-	return m88ts2022_rd_regs(s, reg, val, 1);
-}
-
-/* write single register with mask */
-static int m88ts2022_wr_reg_mask(struct m88ts2022 *s,
-		u8 reg, u8 val, u8 mask)
-{
-	int ret;
-	u8 u8tmp;
-
-	/* no need for read if whole reg is written */
-	if (mask != 0xff) {
-		ret = m88ts2022_rd_regs(s, reg, &u8tmp, 1);
-		if (ret)
-			return ret;
-
-		val &= mask;
-		u8tmp &= ~mask;
-		val |= u8tmp;
-	}
-
-	return m88ts2022_wr_regs(s, reg, &val, 1);
-}
-
 static int m88ts2022_cmd(struct dvb_frontend *fe,
 		int op, int sleep, u8 reg, u8 mask, u8 val, u8 *reg_val)
 {
 	struct m88ts2022 *s = fe->tuner_priv;
 	int ret, i;
-	u8 u8tmp;
+	unsigned int utmp;
 	struct m88ts2022_reg_val reg_vals[] = {
 		{0x51, 0x1f - op},
 		{0x51, 0x1f},
@@ -145,7 +37,7 @@ static int m88ts2022_cmd(struct dvb_frontend *fe,
 				i, op, reg, mask, val);
 
 		for (i = 0; i < ARRAY_SIZE(reg_vals); i++) {
-			ret = m88ts2022_wr_reg(s, reg_vals[i].reg,
+			ret = regmap_write(s->regmap, reg_vals[i].reg,
 					reg_vals[i].val);
 			if (ret)
 				goto err;
@@ -153,16 +45,16 @@ static int m88ts2022_cmd(struct dvb_frontend *fe,
 
 		usleep_range(sleep * 1000, sleep * 10000);
 
-		ret = m88ts2022_rd_reg(s, reg, &u8tmp);
+		ret = regmap_read(s->regmap, reg, &utmp);
 		if (ret)
 			goto err;
 
-		if ((u8tmp & mask) != val)
+		if ((utmp & mask) != val)
 			break;
 	}
 
 	if (reg_val)
-		*reg_val = u8tmp;
+		*reg_val = utmp;
 err:
 	return ret;
 }
@@ -172,7 +64,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 	struct m88ts2022 *s = fe->tuner_priv;
 	struct dtv_frontend_properties *c = &fe->dtv_property_cache;
 	int ret;
-	unsigned int frequency_khz, frequency_offset_khz, f_3db_hz;
+	unsigned int utmp, frequency_khz, frequency_offset_khz, f_3db_hz;
 	unsigned int f_ref_khz, f_vco_khz, div_ref, div_out, pll_n, gdiv28;
 	u8 buf[3], u8tmp, cap_code, lpf_gm, lpf_mxdiv, div_max, div_min;
 	u16 u16tmp;
@@ -204,7 +96,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 
 	buf[0] = u8tmp;
 	buf[1] = 0x40;
-	ret = m88ts2022_wr_regs(s, 0x10, buf, 2);
+	ret = regmap_bulk_write(s->regmap, 0x10, buf, 2);
 	if (ret)
 		goto err;
 
@@ -223,7 +115,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 	buf[0] = (u16tmp >> 8) & 0x3f;
 	buf[1] = (u16tmp >> 0) & 0xff;
 	buf[2] = div_ref - 8;
-	ret = m88ts2022_wr_regs(s, 0x01, buf, 3);
+	ret = regmap_bulk_write(s->regmap, 0x01, buf, 3);
 	if (ret)
 		goto err;
 
@@ -236,17 +128,17 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_rd_reg(s, 0x14, &u8tmp);
+	ret = regmap_read(s->regmap, 0x14, &utmp);
 	if (ret)
 		goto err;
 
-	u8tmp &= 0x7f;
-	if (u8tmp < 64) {
-		ret = m88ts2022_wr_reg_mask(s, 0x10, 0x80, 0x80);
+	utmp &= 0x7f;
+	if (utmp < 64) {
+		ret = regmap_update_bits(s->regmap, 0x10, 0x80, 0x80);
 		if (ret)
 			goto err;
 
-		ret = m88ts2022_wr_reg(s, 0x11, 0x6f);
+		ret = regmap_write(s->regmap, 0x11, 0x6f);
 		if (ret)
 			goto err;
 
@@ -255,13 +147,13 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 			goto err;
 	}
 
-	ret = m88ts2022_rd_reg(s, 0x14, &u8tmp);
+	ret = regmap_read(s->regmap, 0x14, &utmp);
 	if (ret)
 		goto err;
 
-	u8tmp &= 0x1f;
-	if (u8tmp > 19) {
-		ret = m88ts2022_wr_reg_mask(s, 0x10, 0x00, 0x02);
+	utmp &= 0x1f;
+	if (utmp > 19) {
+		ret = regmap_update_bits(s->regmap, 0x10, 0x02, 0x00);
 		if (ret)
 			goto err;
 	}
@@ -270,26 +162,26 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_wr_reg(s, 0x25, 0x00);
+	ret = regmap_write(s->regmap, 0x25, 0x00);
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_wr_reg(s, 0x27, 0x70);
+	ret = regmap_write(s->regmap, 0x27, 0x70);
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_wr_reg(s, 0x41, 0x09);
+	ret = regmap_write(s->regmap, 0x41, 0x09);
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_wr_reg(s, 0x08, 0x0b);
+	ret = regmap_write(s->regmap, 0x08, 0x0b);
 	if (ret)
 		goto err;
 
 	/* filters */
 	gdiv28 = DIV_ROUND_CLOSEST(f_ref_khz * 1694U, 1000000U);
 
-	ret = m88ts2022_wr_reg(s, 0x04, gdiv28);
+	ret = regmap_write(s->regmap, 0x04, gdiv28);
 	if (ret)
 		goto err;
 
@@ -299,7 +191,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 
 	cap_code = u8tmp & 0x3f;
 
-	ret = m88ts2022_wr_reg(s, 0x41, 0x0d);
+	ret = regmap_write(s->regmap, 0x41, 0x0d);
 	if (ret)
 		goto err;
 
@@ -327,11 +219,11 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 		lpf_mxdiv = DIV_ROUND_CLOSEST(++lpf_gm * LPF_COEFF * f_ref_khz, f_3db_hz);
 	lpf_mxdiv = clamp_val(lpf_mxdiv, 0U, div_max);
 
-	ret = m88ts2022_wr_reg(s, 0x04, lpf_mxdiv);
+	ret = regmap_write(s->regmap, 0x04, lpf_mxdiv);
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_wr_reg(s, 0x06, lpf_gm);
+	ret = regmap_write(s->regmap, 0x06, lpf_gm);
 	if (ret)
 		goto err;
 
@@ -341,7 +233,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 
 	cap_code = u8tmp & 0x3f;
 
-	ret = m88ts2022_wr_reg(s, 0x41, 0x09);
+	ret = regmap_write(s->regmap, 0x41, 0x09);
 	if (ret)
 		goto err;
 
@@ -353,15 +245,15 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 	cap_code = (cap_code + u8tmp) / 2;
 
 	u8tmp = cap_code | 0x80;
-	ret = m88ts2022_wr_reg(s, 0x25, u8tmp);
+	ret = regmap_write(s->regmap, 0x25, u8tmp);
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_wr_reg(s, 0x27, 0x30);
+	ret = regmap_write(s->regmap, 0x27, 0x30);
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_wr_reg(s, 0x08, 0x09);
+	ret = regmap_write(s->regmap, 0x08, 0x09);
 	if (ret)
 		goto err;
 
@@ -396,11 +288,11 @@ static int m88ts2022_init(struct dvb_frontend *fe)
 
 	dev_dbg(&s->client->dev, "\n");
 
-	ret = m88ts2022_wr_reg(s, 0x00, 0x01);
+	ret = regmap_write(s->regmap, 0x00, 0x01);
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_wr_reg(s, 0x00, 0x03);
+	ret = regmap_write(s->regmap, 0x00, 0x03);
 	if (ret)
 		goto err;
 
@@ -410,7 +302,7 @@ static int m88ts2022_init(struct dvb_frontend *fe)
 		break;
 	case M88TS2022_CLOCK_OUT_ENABLED:
 		u8tmp = 0x70;
-		ret = m88ts2022_wr_reg(s, 0x05, s->cfg.clock_out_div);
+		ret = regmap_write(s->regmap, 0x05, s->cfg.clock_out_div);
 		if (ret)
 			goto err;
 		break;
@@ -421,7 +313,7 @@ static int m88ts2022_init(struct dvb_frontend *fe)
 		goto err;
 	}
 
-	ret = m88ts2022_wr_reg(s, 0x42, u8tmp);
+	ret = regmap_write(s->regmap, 0x42, u8tmp);
 	if (ret)
 		goto err;
 
@@ -430,12 +322,12 @@ static int m88ts2022_init(struct dvb_frontend *fe)
 	else
 		u8tmp = 0x6c;
 
-	ret = m88ts2022_wr_reg(s, 0x62, u8tmp);
+	ret = regmap_write(s->regmap, 0x62, u8tmp);
 	if (ret)
 		goto err;
 
 	for (i = 0; i < ARRAY_SIZE(reg_vals); i++) {
-		ret = m88ts2022_wr_reg(s, reg_vals[i].reg, reg_vals[i].val);
+		ret = regmap_write(s->regmap, reg_vals[i].reg, reg_vals[i].val);
 		if (ret)
 			goto err;
 	}
@@ -452,7 +344,7 @@ static int m88ts2022_sleep(struct dvb_frontend *fe)
 
 	dev_dbg(&s->client->dev, "\n");
 
-	ret = m88ts2022_wr_reg(s, 0x00, 0x00);
+	ret = regmap_write(s->regmap, 0x00, 0x00);
 	if (ret)
 		goto err;
 err:
@@ -485,29 +377,28 @@ static int m88ts2022_get_rf_strength(struct dvb_frontend *fe, u16 *strength)
 {
 	struct m88ts2022 *s = fe->tuner_priv;
 	int ret;
-	u8 u8tmp;
 	u16 gain, u16tmp;
-	unsigned int gain1, gain2, gain3;
+	unsigned int utmp, gain1, gain2, gain3;
 
-	ret = m88ts2022_rd_reg(s, 0x3d, &u8tmp);
+	ret = regmap_read(s->regmap, 0x3d, &utmp);
 	if (ret)
 		goto err;
 
-	gain1 = (u8tmp >> 0) & 0x1f;
+	gain1 = (utmp >> 0) & 0x1f;
 	gain1 = clamp(gain1, 0U, 15U);
 
-	ret = m88ts2022_rd_reg(s, 0x21, &u8tmp);
+	ret = regmap_read(s->regmap, 0x21, &utmp);
 	if (ret)
 		goto err;
 
-	gain2 = (u8tmp >> 0) & 0x1f;
+	gain2 = (utmp >> 0) & 0x1f;
 	gain2 = clamp(gain2, 2U, 16U);
 
-	ret = m88ts2022_rd_reg(s, 0x66, &u8tmp);
+	ret = regmap_read(s->regmap, 0x66, &utmp);
 	if (ret)
 		goto err;
 
-	gain3 = (u8tmp >> 3) & 0x07;
+	gain3 = (utmp >> 3) & 0x07;
 	gain3 = clamp(gain3, 0U, 6U);
 
 	gain = gain1 * 265 + gain2 * 338 + gain3 * 285;
@@ -546,7 +437,12 @@ static int m88ts2022_probe(struct i2c_client *client,
 	struct dvb_frontend *fe = cfg->fe;
 	struct m88ts2022 *s;
 	int ret;
-	u8 chip_id, u8tmp;
+	u8 u8tmp;
+	unsigned int utmp;
+	static const struct regmap_config regmap_config = {
+		.reg_bits = 8,
+		.val_bits = 8,
+	};
 
 	s = kzalloc(sizeof(*s), GFP_KERNEL);
 	if (!s) {
@@ -557,33 +453,38 @@ static int m88ts2022_probe(struct i2c_client *client,
 
 	memcpy(&s->cfg, cfg, sizeof(struct m88ts2022_config));
 	s->client = client;
+	s->regmap = devm_regmap_init_i2c(client, &regmap_config);
+	if (IS_ERR(s->regmap)) {
+		ret = PTR_ERR(s->regmap);
+		goto err;
+	}
 
 	/* check if the tuner is there */
-	ret = m88ts2022_rd_reg(s, 0x00, &u8tmp);
+	ret = regmap_read(s->regmap, 0x00, &utmp);
 	if (ret)
 		goto err;
 
-	if ((u8tmp & 0x03) == 0x00) {
-		ret = m88ts2022_wr_reg(s, 0x00, 0x01);
-		if (ret < 0)
+	if ((utmp & 0x03) == 0x00) {
+		ret = regmap_write(s->regmap, 0x00, 0x01);
+		if (ret)
 			goto err;
 
 		usleep_range(2000, 50000);
 	}
 
-	ret = m88ts2022_wr_reg(s, 0x00, 0x03);
+	ret = regmap_write(s->regmap, 0x00, 0x03);
 	if (ret)
 		goto err;
 
 	usleep_range(2000, 50000);
 
-	ret = m88ts2022_rd_reg(s, 0x00, &chip_id);
+	ret = regmap_read(s->regmap, 0x00, &utmp);
 	if (ret)
 		goto err;
 
-	dev_dbg(&s->client->dev, "chip_id=%02x\n", chip_id);
+	dev_dbg(&s->client->dev, "chip_id=%02x\n", utmp);
 
-	switch (chip_id) {
+	switch (utmp) {
 	case 0xc3:
 	case 0x83:
 		break;
@@ -597,7 +498,7 @@ static int m88ts2022_probe(struct i2c_client *client,
 		break;
 	case M88TS2022_CLOCK_OUT_ENABLED:
 		u8tmp = 0x70;
-		ret = m88ts2022_wr_reg(s, 0x05, s->cfg.clock_out_div);
+		ret = regmap_write(s->regmap, 0x05, s->cfg.clock_out_div);
 		if (ret)
 			goto err;
 		break;
@@ -608,7 +509,7 @@ static int m88ts2022_probe(struct i2c_client *client,
 		goto err;
 	}
 
-	ret = m88ts2022_wr_reg(s, 0x42, u8tmp);
+	ret = regmap_write(s->regmap, 0x42, u8tmp);
 	if (ret)
 		goto err;
 
@@ -617,12 +518,12 @@ static int m88ts2022_probe(struct i2c_client *client,
 	else
 		u8tmp = 0x6c;
 
-	ret = m88ts2022_wr_reg(s, 0x62, u8tmp);
+	ret = regmap_write(s->regmap, 0x62, u8tmp);
 	if (ret)
 		goto err;
 
 	/* sleep */
-	ret = m88ts2022_wr_reg(s, 0x00, 0x00);
+	ret = regmap_write(s->regmap, 0x00, 0x00);
 	if (ret)
 		goto err;
 
diff --git a/drivers/media/tuners/m88ts2022_priv.h b/drivers/media/tuners/m88ts2022_priv.h
index cbc9e2b..a67afe3 100644
--- a/drivers/media/tuners/m88ts2022_priv.h
+++ b/drivers/media/tuners/m88ts2022_priv.h
@@ -18,10 +18,12 @@
 #define M88TS2022_PRIV_H
 
 #include "m88ts2022.h"
+#include <linux/regmap.h>
 
 struct m88ts2022 {
 	struct m88ts2022_config cfg;
 	struct i2c_client *client;
+	struct regmap *regmap;
 	struct dvb_frontend *fe;
 	u32 frequency_khz;
 };
-- 
http://palosaari.fi/


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [GIT PULL FINAL 19/21] m88ts2022: change parameter type of m88ts2022_cmd
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
                   ` (17 preceding siblings ...)
  2014-08-22 10:58 ` [GIT PULL FINAL 18/21] m88ts2022: convert to RegMap I2C API Antti Palosaari
@ 2014-08-22 10:58 ` Antti Palosaari
  2014-08-22 10:58 ` [GIT PULL FINAL 20/21] m88ds3103: change .set_voltage() implementation Antti Palosaari
                   ` (3 subsequent siblings)
  22 siblings, 0 replies; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:58 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov, Antti Palosaari

It is driver internal function and does not need anything from
frontend structure. Due to that change parameter type to driver
state which is better for driver internal functions.

Also remove one unused variable from state itself.

Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/tuners/m88ts2022.c      | 21 ++++++++++-----------
 drivers/media/tuners/m88ts2022_priv.h |  1 -
 2 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/drivers/media/tuners/m88ts2022.c b/drivers/media/tuners/m88ts2022.c
index 04d3979..90e1a35 100644
--- a/drivers/media/tuners/m88ts2022.c
+++ b/drivers/media/tuners/m88ts2022.c
@@ -18,10 +18,9 @@
 
 #include "m88ts2022_priv.h"
 
-static int m88ts2022_cmd(struct dvb_frontend *fe,
-		int op, int sleep, u8 reg, u8 mask, u8 val, u8 *reg_val)
+static int m88ts2022_cmd(struct m88ts2022 *s, int op, int sleep, u8 reg,
+		u8 mask, u8 val, u8 *reg_val)
 {
-	struct m88ts2022 *s = fe->tuner_priv;
 	int ret, i;
 	unsigned int utmp;
 	struct m88ts2022_reg_val reg_vals[] = {
@@ -124,7 +123,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 			s->frequency_khz, s->frequency_khz - c->frequency,
 			f_vco_khz, pll_n, div_ref, div_out);
 
-	ret = m88ts2022_cmd(fe, 0x10, 5, 0x15, 0x40, 0x00, NULL);
+	ret = m88ts2022_cmd(s, 0x10, 5, 0x15, 0x40, 0x00, NULL);
 	if (ret)
 		goto err;
 
@@ -142,7 +141,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 		if (ret)
 			goto err;
 
-		ret = m88ts2022_cmd(fe, 0x10, 5, 0x15, 0x40, 0x00, NULL);
+		ret = m88ts2022_cmd(s, 0x10, 5, 0x15, 0x40, 0x00, NULL);
 		if (ret)
 			goto err;
 	}
@@ -158,7 +157,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 			goto err;
 	}
 
-	ret = m88ts2022_cmd(fe, 0x08, 5, 0x3c, 0xff, 0x00, NULL);
+	ret = m88ts2022_cmd(s, 0x08, 5, 0x3c, 0xff, 0x00, NULL);
 	if (ret)
 		goto err;
 
@@ -185,7 +184,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_cmd(fe, 0x04, 2, 0x26, 0xff, 0x00, &u8tmp);
+	ret = m88ts2022_cmd(s, 0x04, 2, 0x26, 0xff, 0x00, &u8tmp);
 	if (ret)
 		goto err;
 
@@ -195,7 +194,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_cmd(fe, 0x04, 2, 0x26, 0xff, 0x00, &u8tmp);
+	ret = m88ts2022_cmd(s, 0x04, 2, 0x26, 0xff, 0x00, &u8tmp);
 	if (ret)
 		goto err;
 
@@ -227,7 +226,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_cmd(fe, 0x04, 2, 0x26, 0xff, 0x00, &u8tmp);
+	ret = m88ts2022_cmd(s, 0x04, 2, 0x26, 0xff, 0x00, &u8tmp);
 	if (ret)
 		goto err;
 
@@ -237,7 +236,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_cmd(fe, 0x04, 2, 0x26, 0xff, 0x00, &u8tmp);
+	ret = m88ts2022_cmd(s, 0x04, 2, 0x26, 0xff, 0x00, &u8tmp);
 	if (ret)
 		goto err;
 
@@ -257,7 +256,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
 	if (ret)
 		goto err;
 
-	ret = m88ts2022_cmd(fe, 0x01, 20, 0x21, 0xff, 0x00, NULL);
+	ret = m88ts2022_cmd(s, 0x01, 20, 0x21, 0xff, 0x00, NULL);
 	if (ret)
 		goto err;
 err:
diff --git a/drivers/media/tuners/m88ts2022_priv.h b/drivers/media/tuners/m88ts2022_priv.h
index a67afe3..a0e22fa 100644
--- a/drivers/media/tuners/m88ts2022_priv.h
+++ b/drivers/media/tuners/m88ts2022_priv.h
@@ -24,7 +24,6 @@ struct m88ts2022 {
 	struct m88ts2022_config cfg;
 	struct i2c_client *client;
 	struct regmap *regmap;
-	struct dvb_frontend *fe;
 	u32 frequency_khz;
 };
 
-- 
http://palosaari.fi/


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [GIT PULL FINAL 20/21] m88ds3103: change .set_voltage() implementation
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
                   ` (18 preceding siblings ...)
  2014-08-22 10:58 ` [GIT PULL FINAL 19/21] m88ts2022: change parameter type of m88ts2022_cmd Antti Palosaari
@ 2014-08-22 10:58 ` Antti Palosaari
  2014-08-22 10:58 ` [GIT PULL FINAL 21/21] m88ds3103: fix coding style issues Antti Palosaari
                   ` (2 subsequent siblings)
  22 siblings, 0 replies; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:58 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov, Antti Palosaari

Add some error checking and implement functionality a little bit
differently.

Cc: Nibble Max <nibble.max@gmail.com>
Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/dvb-frontends/m88ds3103.c | 50 ++++++++++++++++++++++-----------
 1 file changed, 34 insertions(+), 16 deletions(-)

diff --git a/drivers/media/dvb-frontends/m88ds3103.c b/drivers/media/dvb-frontends/m88ds3103.c
index 238b04e..25d9d97 100644
--- a/drivers/media/dvb-frontends/m88ds3103.c
+++ b/drivers/media/dvb-frontends/m88ds3103.c
@@ -1038,36 +1038,54 @@ err:
 }
 
 static int m88ds3103_set_voltage(struct dvb_frontend *fe,
-	fe_sec_voltage_t voltage)
+	fe_sec_voltage_t fe_sec_voltage)
 {
 	struct m88ds3103_priv *priv = fe->demodulator_priv;
-	u8 data;
+	int ret;
+	u8 u8tmp;
+	bool voltage_sel, voltage_dis;
 
-	m88ds3103_rd_reg(priv, 0xa2, &data);
+	dev_dbg(&priv->i2c->dev, "%s: fe_sec_voltage=%d\n", __func__,
+			fe_sec_voltage);
 
-	data &= ~0x03; /* bit0 V/H, bit1 off/on */
-	if (priv->cfg->lnb_en_pol)
-		data |= 0x02;
+	if (!priv->warm) {
+		ret = -EAGAIN;
+		goto err;
+	}
 
-	switch (voltage) {
+	switch (fe_sec_voltage) {
 	case SEC_VOLTAGE_18:
-		if (priv->cfg->lnb_hv_pol == 0)
-			data |= 0x01;
+		voltage_sel = 1;
+		voltage_dis = 0;
 		break;
 	case SEC_VOLTAGE_13:
-		if (priv->cfg->lnb_hv_pol)
-			data |= 0x01;
+		voltage_sel = 0;
+		voltage_dis = 0;
 		break;
 	case SEC_VOLTAGE_OFF:
-		if (priv->cfg->lnb_en_pol)
-			data &= ~0x02;
-		else
-			data |= 0x02;
+		voltage_sel = 0;
+		voltage_dis = 1;
 		break;
+	default:
+		dev_dbg(&priv->i2c->dev, "%s: invalid fe_sec_voltage\n",
+				__func__);
+		ret = -EINVAL;
+		goto err;
 	}
-	m88ds3103_wr_reg(priv, 0xa2, data);
+
+	/* output pin polarity */
+	voltage_sel ^= priv->cfg->lnb_hv_pol;
+	voltage_dis ^= priv->cfg->lnb_en_pol;
+
+	u8tmp = voltage_dis << 1 | voltage_sel << 0;
+	ret = m88ds3103_wr_reg_mask(priv, 0xa2, u8tmp, 0x03);
+	if (ret)
+		goto err;
 
 	return 0;
+err:
+	dev_dbg(&priv->i2c->dev, "%s: failed=%d\n", __func__, ret);
+	return ret;
 }
 
 static int m88ds3103_diseqc_send_master_cmd(struct dvb_frontend *fe,
-- 
http://palosaari.fi/


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [GIT PULL FINAL 21/21] m88ds3103: fix coding style issues
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
                   ` (19 preceding siblings ...)
  2014-08-22 10:58 ` [GIT PULL FINAL 20/21] m88ds3103: change .set_voltage() implementation Antti Palosaari
@ 2014-08-22 10:58 ` Antti Palosaari
  2014-08-22 11:08 ` [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
  2014-09-02 18:59 ` Mauro Carvalho Chehab
  22 siblings, 0 replies; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 10:58 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov, Antti Palosaari

Fix coding style issues pointed out by checkpatch.pl.

Signed-off-by: Antti Palosaari <crope@iki.fi>
---
 drivers/media/dvb-frontends/m88ds3103.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/drivers/media/dvb-frontends/m88ds3103.c b/drivers/media/dvb-frontends/m88ds3103.c
index 25d9d97..6eae2c6 100644
--- a/drivers/media/dvb-frontends/m88ds3103.c
+++ b/drivers/media/dvb-frontends/m88ds3103.c
@@ -159,6 +159,7 @@ static int m88ds3103_wr_reg_val_tab(struct m88ds3103_priv *priv,
 {
 	int ret, i, j;
 	u8 buf[83];
+
 	dev_dbg(&priv->i2c->dev, "%s: tab_len=%d\n", __func__, tab_len);
 
 	if (tab_len > 83) {
@@ -249,6 +250,7 @@ static int m88ds3103_set_frontend(struct dvb_frontend *fe)
 	u16 u16tmp, divide_ratio;
 	u32 tuner_frequency, target_mclk;
 	s32 s32tmp;
+
 	dev_dbg(&priv->i2c->dev,
 			"%s: delivery_system=%d modulation=%d frequency=%d symbol_rate=%d inversion=%d pilot=%d rolloff=%d\n",
 			__func__, c->delivery_system,
@@ -520,6 +522,7 @@ static int m88ds3103_init(struct dvb_frontend *fe)
 	const struct firmware *fw = NULL;
 	u8 *fw_file = M88DS3103_FIRMWARE;
 	u8 u8tmp;
+
 	dev_dbg(&priv->i2c->dev, "%s:\n", __func__);
 
 	/* set cold state by default */
@@ -632,6 +635,7 @@ static int m88ds3103_sleep(struct dvb_frontend *fe)
 {
 	struct m88ds3103_priv *priv = fe->demodulator_priv;
 	int ret;
+
 	dev_dbg(&priv->i2c->dev, "%s:\n", __func__);
 
 	priv->delivery_system = SYS_UNDEFINED;
@@ -666,6 +670,7 @@ static int m88ds3103_get_frontend(struct dvb_frontend *fe)
 	struct dtv_frontend_properties *c = &fe->dtv_property_cache;
 	int ret;
 	u8 buf[3];
+
 	dev_dbg(&priv->i2c->dev, "%s:\n", __func__);
 
 	if (!priv->warm || !(priv->fe_status & FE_HAS_LOCK)) {
@@ -841,6 +846,7 @@ static int m88ds3103_read_snr(struct dvb_frontend *fe, u16 *snr)
 	u8 buf[3];
 	u16 noise, signal;
 	u32 noise_tot, signal_tot;
+
 	dev_dbg(&priv->i2c->dev, "%s:\n", __func__);
 	/* reports SNR in resolution of 0.1 dB */
 
@@ -917,6 +923,7 @@ static int m88ds3103_read_ber(struct dvb_frontend *fe, u32 *ber)
 	int ret;
 	unsigned int utmp;
 	u8 buf[3], u8tmp;
+
 	dev_dbg(&priv->i2c->dev, "%s:\n", __func__);
 
 	switch (c->delivery_system) {
@@ -997,6 +1004,7 @@ static int m88ds3103_set_tone(struct dvb_frontend *fe,
 	struct m88ds3103_priv *priv = fe->demodulator_priv;
 	int ret;
 	u8 u8tmp, tone, reg_a1_mask;
+
 	dev_dbg(&priv->i2c->dev, "%s: fe_sec_tone_mode=%d\n", __func__,
 			fe_sec_tone_mode);
 
@@ -1094,6 +1102,7 @@ static int m88ds3103_diseqc_send_master_cmd(struct dvb_frontend *fe,
 	struct m88ds3103_priv *priv = fe->demodulator_priv;
 	int ret, i;
 	u8 u8tmp;
+
 	dev_dbg(&priv->i2c->dev, "%s: msg=%*ph\n", __func__,
 			diseqc_cmd->msg_len, diseqc_cmd->msg);
 
@@ -1165,6 +1174,7 @@ static int m88ds3103_diseqc_send_burst(struct dvb_frontend *fe,
 	struct m88ds3103_priv *priv = fe->demodulator_priv;
 	int ret, i;
 	u8 u8tmp, burst;
+
 	dev_dbg(&priv->i2c->dev, "%s: fe_sec_mini_cmd=%d\n", __func__,
 			fe_sec_mini_cmd);
 
@@ -1237,6 +1247,7 @@ static int m88ds3103_get_tune_settings(struct dvb_frontend *fe,
 static void m88ds3103_release(struct dvb_frontend *fe)
 {
 	struct m88ds3103_priv *priv = fe->demodulator_priv;
+
 	i2c_del_mux_adapter(priv->i2c_adapter);
 	kfree(priv);
 }
-- 
http://palosaari.fi/


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* Re: [GIT PULL FINAL 00/21] misc DTV stuff for 3.18
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
                   ` (20 preceding siblings ...)
  2014-08-22 10:58 ` [GIT PULL FINAL 21/21] m88ds3103: fix coding style issues Antti Palosaari
@ 2014-08-22 11:08 ` Antti Palosaari
  2014-09-02 18:59 ` Mauro Carvalho Chehab
  22 siblings, 0 replies; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 11:08 UTC (permalink / raw)
  To: linux-media; +Cc: Nibble Max, Olli Salonen, Evgeny Plehov

Oops, cut a pull message wrongly and actual tree was missing:

The following changes since commit 1baa466e84975a595b2c3cd10af1100c807ebab5:

   [media] media: ttpci: fix av7110 build to be compatible with 
CONFIG_INPUT_EVDEV (2014-08-15 21:26:26 -0300)

are available in the git repository at:

   git://linuxtv.org/anttip/media_tree.git dtv_misc_3.18

for you to fetch changes up to 04e9307d324343ea6eab9bce0c49457f30250057:

   m88ds3103: fix coding style issues (2014-08-22 13:46:06 +0300)

----------------------------------------------------------------

Antti


On 08/22/2014 01:57 PM, Antti Palosaari wrote:
> Moikka
> I picked these from patchwork and this is just final review before
> PULL request I will send very shortly. I don't expect any change
> requests at this late, without a very good reason :)
>
> However, I could add some tags until Mauro PULLs to master.
>
> regards
> Antti
>
> Antti Palosaari (10):
>    dvb-usb-v2: remove dvb_usb_device NULL check
>    msi2500: remove unneeded local pointer on msi2500_isoc_init()
>    m88ts2022: fix 32bit overflow on filter calc
>    m88ts2022: fix coding style issues
>    m88ts2022: rename device state (priv => s)
>    m88ts2022: clean up logging
>    m88ts2022: convert to RegMap I2C API
>    m88ts2022: change parameter type of m88ts2022_cmd
>    m88ds3103: change .set_voltage() implementation
>    m88ds3103: fix coding style issues
>
> CrazyCat (1):
>    si2168: DVB-T2 PLP selection implemented
>
> Olli Salonen (9):
>    si2168: clean logging
>    si2157: clean logging
>    si2168: add ts_mode setting and move to si2168_init
>    em28xx: add ts mode setting for PCTV 292e
>    cxusb: add ts mode setting for TechnoTrend CT2-4400
>    sp2: Add I2C driver for CIMaX SP2 common interface module
>    cxusb: Add support for TechnoTrend TT-connect CT2-4650 CI
>    cxusb: Add read_mac_address for TT CT2-4400 and CT2-4650
>    si2157: Add support for delivery system SYS_ATSC
>
> nibble.max (1):
>    m88ds3103: implement set voltage and TS clock
>
>   drivers/media/dvb-core/dvb-usb-ids.h       |   1 +
>   drivers/media/dvb-frontends/Kconfig        |   7 +
>   drivers/media/dvb-frontends/Makefile       |   1 +
>   drivers/media/dvb-frontends/m88ds3103.c    | 101 +++++--
>   drivers/media/dvb-frontends/m88ds3103.h    |  35 ++-
>   drivers/media/dvb-frontends/si2168.c       | 101 ++++---
>   drivers/media/dvb-frontends/si2168.h       |   6 +
>   drivers/media/dvb-frontends/si2168_priv.h  |   1 +
>   drivers/media/dvb-frontends/sp2.c          | 441 +++++++++++++++++++++++++++++
>   drivers/media/dvb-frontends/sp2.h          |  53 ++++
>   drivers/media/dvb-frontends/sp2_priv.h     |  50 ++++
>   drivers/media/tuners/Kconfig               |   1 +
>   drivers/media/tuners/m88ts2022.c           | 355 +++++++++--------------
>   drivers/media/tuners/m88ts2022_priv.h      |   5 +-
>   drivers/media/tuners/si2157.c              |  55 ++--
>   drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c |   2 +-
>   drivers/media/usb/dvb-usb/Kconfig          |   2 +-
>   drivers/media/usb/dvb-usb/cxusb.c          | 128 ++++++++-
>   drivers/media/usb/dvb-usb/cxusb.h          |   4 +
>   drivers/media/usb/em28xx/em28xx-dvb.c      |   5 +-
>   drivers/media/usb/msi2500/msi2500.c        |   9 +-
>   21 files changed, 1022 insertions(+), 341 deletions(-)
>   create mode 100644 drivers/media/dvb-frontends/sp2.c
>   create mode 100644 drivers/media/dvb-frontends/sp2.h
>   create mode 100644 drivers/media/dvb-frontends/sp2_priv.h
>

-- 
http://palosaari.fi/

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [GIT PULL FINAL 01/21] si2168: clean logging
  2014-08-22 10:57 ` [GIT PULL FINAL 01/21] si2168: clean logging Antti Palosaari
@ 2014-08-22 11:47   ` Mauro Carvalho Chehab
  2014-08-22 12:13     ` Antti Palosaari
  0 siblings, 1 reply; 34+ messages in thread
From: Mauro Carvalho Chehab @ 2014-08-22 11:47 UTC (permalink / raw)
  To: Antti Palosaari; +Cc: linux-media, Nibble Max, Olli Salonen, Evgeny Plehov

Hi Antti,

Please don't add "GIT PULL" on patches. That breaks my scripts, as they
will run a completely different logic when those magic words are there
on a message at patchwork.

Also, the word "FINAL" makes me nervous... That means that you sent me
a non-final pull request?

I'll tag all patches in this series, except for the real pull request,
as superseded, as I'll look on them only when dealing with the real
pull request.

Regards,
Mauro

Em Fri, 22 Aug 2014 13:57:53 +0300
Antti Palosaari <crope@iki.fi> escreveu:

> From: Olli Salonen <olli.salonen@iki.fi>
> 
> Same thing for si2168 as Antti did earlier for tda18212:
> 
> There is no need to print module name nor function name as those
> are done by kernel logging system when dev_xxx logging is used and
> driver is proper I2C driver.
> 
> Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
> Reviewed-by: Antti Palosaari <crope@iki.fi>
> Signed-off-by: Antti Palosaari <crope@iki.fi>
> ---
>  drivers/media/dvb-frontends/si2168.c | 70 +++++++++++++++++-------------------
>  1 file changed, 33 insertions(+), 37 deletions(-)
> 
> diff --git a/drivers/media/dvb-frontends/si2168.c b/drivers/media/dvb-frontends/si2168.c
> index 8f81d97..59a4218 100644
> --- a/drivers/media/dvb-frontends/si2168.c
> +++ b/drivers/media/dvb-frontends/si2168.c
> @@ -55,8 +55,7 @@ static int si2168_cmd_execute(struct si2168 *s, struct si2168_cmd *cmd)
>  				break;
>  		}
>  
> -		dev_dbg(&s->client->dev, "%s: cmd execution took %d ms\n",
> -				__func__,
> +		dev_dbg(&s->client->dev, "cmd execution took %d ms\n",
>  				jiffies_to_msecs(jiffies) -
>  				(jiffies_to_msecs(timeout) - TIMEOUT));
>  
> @@ -75,7 +74,7 @@ err_mutex_unlock:
>  
>  	return 0;
>  err:
> -	dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
> +	dev_dbg(&s->client->dev, "failed=%d\n", ret);
>  	return ret;
>  }
>  
> @@ -150,12 +149,12 @@ static int si2168_read_status(struct dvb_frontend *fe, fe_status_t *status)
>  		c->cnr.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
>  	}
>  
> -	dev_dbg(&s->client->dev, "%s: status=%02x args=%*ph\n",
> -			__func__, *status, cmd.rlen, cmd.args);
> +	dev_dbg(&s->client->dev, "status=%02x args=%*ph\n",
> +			*status, cmd.rlen, cmd.args);
>  
>  	return 0;
>  err:
> -	dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
> +	dev_dbg(&s->client->dev, "failed=%d\n", ret);
>  	return ret;
>  }
>  
> @@ -168,8 +167,8 @@ static int si2168_set_frontend(struct dvb_frontend *fe)
>  	u8 bandwidth, delivery_system;
>  
>  	dev_dbg(&s->client->dev,
> -			"%s: delivery_system=%u modulation=%u frequency=%u bandwidth_hz=%u symbol_rate=%u inversion=%u\n",
> -			__func__, c->delivery_system, c->modulation,
> +			"delivery_system=%u modulation=%u frequency=%u bandwidth_hz=%u symbol_rate=%u inversion=%u\n",
> +			c->delivery_system, c->modulation,
>  			c->frequency, c->bandwidth_hz, c->symbol_rate,
>  			c->inversion);
>  
> @@ -343,7 +342,7 @@ static int si2168_set_frontend(struct dvb_frontend *fe)
>  
>  	return 0;
>  err:
> -	dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
> +	dev_dbg(&s->client->dev, "failed=%d\n", ret);
>  	return ret;
>  }
>  
> @@ -357,7 +356,7 @@ static int si2168_init(struct dvb_frontend *fe)
>  	struct si2168_cmd cmd;
>  	unsigned int chip_id;
>  
> -	dev_dbg(&s->client->dev, "%s:\n", __func__);
> +	dev_dbg(&s->client->dev, "\n");
>  
>  	memcpy(cmd.args, "\xc0\x12\x00\x0c\x00\x0d\x16\x00\x00\x00\x00\x00\x00", 13);
>  	cmd.wlen = 13;
> @@ -400,16 +399,16 @@ static int si2168_init(struct dvb_frontend *fe)
>  		break;
>  	default:
>  		dev_err(&s->client->dev,
> -				"%s: unkown chip version Si21%d-%c%c%c\n",
> -				KBUILD_MODNAME, cmd.args[2], cmd.args[1],
> +				"unknown chip version Si21%d-%c%c%c\n",
> +				cmd.args[2], cmd.args[1],
>  				cmd.args[3], cmd.args[4]);
>  		ret = -EINVAL;
>  		goto err;
>  	}
>  
>  	/* cold state - try to download firmware */
> -	dev_info(&s->client->dev, "%s: found a '%s' in cold state\n",
> -			KBUILD_MODNAME, si2168_ops.info.name);
> +	dev_info(&s->client->dev, "found a '%s' in cold state\n",
> +			si2168_ops.info.name);
>  
>  	/* request the firmware, this will block and timeout */
>  	ret = request_firmware(&fw, fw_file, &s->client->dev);
> @@ -422,18 +421,18 @@ static int si2168_init(struct dvb_frontend *fe)
>  
>  		if (ret == 0) {
>  			dev_notice(&s->client->dev,
> -					"%s: please install firmware file '%s'\n",
> -					KBUILD_MODNAME, SI2168_B40_FIRMWARE);
> +					"please install firmware file '%s'\n",
> +					SI2168_B40_FIRMWARE);
>  		} else {
>  			dev_err(&s->client->dev,
> -					"%s: firmware file '%s' not found\n",
> -					KBUILD_MODNAME, fw_file);
> +					"firmware file '%s' not found\n",
> +					fw_file);
>  			goto err;
>  		}
>  	}
>  
> -	dev_info(&s->client->dev, "%s: downloading firmware from file '%s'\n",
> -			KBUILD_MODNAME, fw_file);
> +	dev_info(&s->client->dev, "downloading firmware from file '%s'\n",
> +			fw_file);
>  
>  	for (remaining = fw->size; remaining > 0; remaining -= i2c_wr_max) {
>  		len = remaining;
> @@ -446,8 +445,8 @@ static int si2168_init(struct dvb_frontend *fe)
>  		ret = si2168_cmd_execute(s, &cmd);
>  		if (ret) {
>  			dev_err(&s->client->dev,
> -					"%s: firmware download failed=%d\n",
> -					KBUILD_MODNAME, ret);
> +					"firmware download failed=%d\n",
> +					ret);
>  			goto err;
>  		}
>  	}
> @@ -462,8 +461,8 @@ static int si2168_init(struct dvb_frontend *fe)
>  	if (ret)
>  		goto err;
>  
> -	dev_info(&s->client->dev, "%s: found a '%s' in warm state\n",
> -			KBUILD_MODNAME, si2168_ops.info.name);
> +	dev_info(&s->client->dev, "found a '%s' in warm state\n",
> +			si2168_ops.info.name);
>  
>  	s->active = true;
>  
> @@ -472,7 +471,7 @@ err:
>  	if (fw)
>  		release_firmware(fw);
>  
> -	dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
> +	dev_dbg(&s->client->dev, "failed=%d\n", ret);
>  	return ret;
>  }
>  
> @@ -482,7 +481,7 @@ static int si2168_sleep(struct dvb_frontend *fe)
>  	int ret;
>  	struct si2168_cmd cmd;
>  
> -	dev_dbg(&s->client->dev, "%s:\n", __func__);
> +	dev_dbg(&s->client->dev, "\n");
>  
>  	s->active = false;
>  
> @@ -495,7 +494,7 @@ static int si2168_sleep(struct dvb_frontend *fe)
>  
>  	return 0;
>  err:
> -	dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
> +	dev_dbg(&s->client->dev, "failed=%d\n", ret);
>  	return ret;
>  }
>  
> @@ -528,8 +527,7 @@ static int si2168_select(struct i2c_adapter *adap, void *mux_priv, u32 chan)
>  	/* open tuner I2C gate */
>  	ret = __i2c_transfer(s->client->adapter, &gate_open_msg, 1);
>  	if (ret != 1) {
> -		dev_warn(&s->client->dev, "%s: i2c write failed=%d\n",
> -				KBUILD_MODNAME, ret);
> +		dev_warn(&s->client->dev, "i2c write failed=%d\n", ret);
>  		if (ret >= 0)
>  			ret = -EREMOTEIO;
>  	} else {
> @@ -553,8 +551,7 @@ static int si2168_deselect(struct i2c_adapter *adap, void *mux_priv, u32 chan)
>  	/* close tuner I2C gate */
>  	ret = __i2c_transfer(s->client->adapter, &gate_close_msg, 1);
>  	if (ret != 1) {
> -		dev_warn(&s->client->dev, "%s: i2c write failed=%d\n",
> -				KBUILD_MODNAME, ret);
> +		dev_warn(&s->client->dev, "i2c write failed=%d\n", ret);
>  		if (ret >= 0)
>  			ret = -EREMOTEIO;
>  	} else {
> @@ -607,12 +604,12 @@ static int si2168_probe(struct i2c_client *client,
>  	struct si2168 *s;
>  	int ret;
>  
> -	dev_dbg(&client->dev, "%s:\n", __func__);
> +	dev_dbg(&client->dev, "\n");
>  
>  	s = kzalloc(sizeof(struct si2168), GFP_KERNEL);
>  	if (!s) {
>  		ret = -ENOMEM;
> -		dev_err(&client->dev, "%s: kzalloc() failed\n", KBUILD_MODNAME);
> +		dev_err(&client->dev, "kzalloc() failed\n");
>  		goto err;
>  	}
>  
> @@ -637,12 +634,11 @@ static int si2168_probe(struct i2c_client *client,
>  	i2c_set_clientdata(client, s);
>  
>  	dev_info(&s->client->dev,
> -			"%s: Silicon Labs Si2168 successfully attached\n",
> -			KBUILD_MODNAME);
> +			"Silicon Labs Si2168 successfully attached\n");
>  	return 0;
>  err:
>  	kfree(s);
> -	dev_dbg(&client->dev, "%s: failed=%d\n", __func__, ret);
> +	dev_dbg(&client->dev, "failed=%d\n", ret);
>  	return ret;
>  }
>  
> @@ -650,7 +646,7 @@ static int si2168_remove(struct i2c_client *client)
>  {
>  	struct si2168 *s = i2c_get_clientdata(client);
>  
> -	dev_dbg(&client->dev, "%s:\n", __func__);
> +	dev_dbg(&client->dev, "\n");
>  
>  	i2c_del_mux_adapter(s->adapter);
>  


-- 

Cheers,
Mauro

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [GIT PULL FINAL 01/21] si2168: clean logging
  2014-08-22 11:47   ` Mauro Carvalho Chehab
@ 2014-08-22 12:13     ` Antti Palosaari
  2014-08-22 12:28       ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 12:13 UTC (permalink / raw)
  To: Mauro Carvalho Chehab
  Cc: linux-media, Nibble Max, Olli Salonen, Evgeny Plehov

On 08/22/2014 02:47 PM, Mauro Carvalho Chehab wrote:
> Hi Antti,
>
> Please don't add "GIT PULL" on patches. That breaks my scripts, as they
> will run a completely different logic when those magic words are there
> on a message at patchwork.
>
> Also, the word "FINAL" makes me nervous... That means that you sent me
> a non-final pull request?

I didn't find better term. Also for eyes it wasn't proper term, but 
there is no such prefix which fits that case:
http://lwn.net/Articles/529490/

I am not even sure if there is much idea to send those "final" patches 
to list before pull request, but I need many times edit patches 
slightly, change commit description, fix compile errors and so. Stable 
patches seems to be sent similarly for last minute review just before merge.

regards
Antti

>
> I'll tag all patches in this series, except for the real pull request,
> as superseded, as I'll look on them only when dealing with the real
> pull request.
>
> Regards,
> Mauro
>
> Em Fri, 22 Aug 2014 13:57:53 +0300
> Antti Palosaari <crope@iki.fi> escreveu:
>
>> From: Olli Salonen <olli.salonen@iki.fi>
>>
>> Same thing for si2168 as Antti did earlier for tda18212:
>>
>> There is no need to print module name nor function name as those
>> are done by kernel logging system when dev_xxx logging is used and
>> driver is proper I2C driver.
>>
>> Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
>> Reviewed-by: Antti Palosaari <crope@iki.fi>
>> Signed-off-by: Antti Palosaari <crope@iki.fi>
>> ---
>>   drivers/media/dvb-frontends/si2168.c | 70 +++++++++++++++++-------------------
>>   1 file changed, 33 insertions(+), 37 deletions(-)
>>
>> diff --git a/drivers/media/dvb-frontends/si2168.c b/drivers/media/dvb-frontends/si2168.c
>> index 8f81d97..59a4218 100644
>> --- a/drivers/media/dvb-frontends/si2168.c
>> +++ b/drivers/media/dvb-frontends/si2168.c
>> @@ -55,8 +55,7 @@ static int si2168_cmd_execute(struct si2168 *s, struct si2168_cmd *cmd)
>>   				break;
>>   		}
>>
>> -		dev_dbg(&s->client->dev, "%s: cmd execution took %d ms\n",
>> -				__func__,
>> +		dev_dbg(&s->client->dev, "cmd execution took %d ms\n",
>>   				jiffies_to_msecs(jiffies) -
>>   				(jiffies_to_msecs(timeout) - TIMEOUT));
>>
>> @@ -75,7 +74,7 @@ err_mutex_unlock:
>>
>>   	return 0;
>>   err:
>> -	dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
>> +	dev_dbg(&s->client->dev, "failed=%d\n", ret);
>>   	return ret;
>>   }
>>
>> @@ -150,12 +149,12 @@ static int si2168_read_status(struct dvb_frontend *fe, fe_status_t *status)
>>   		c->cnr.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
>>   	}
>>
>> -	dev_dbg(&s->client->dev, "%s: status=%02x args=%*ph\n",
>> -			__func__, *status, cmd.rlen, cmd.args);
>> +	dev_dbg(&s->client->dev, "status=%02x args=%*ph\n",
>> +			*status, cmd.rlen, cmd.args);
>>
>>   	return 0;
>>   err:
>> -	dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
>> +	dev_dbg(&s->client->dev, "failed=%d\n", ret);
>>   	return ret;
>>   }
>>
>> @@ -168,8 +167,8 @@ static int si2168_set_frontend(struct dvb_frontend *fe)
>>   	u8 bandwidth, delivery_system;
>>
>>   	dev_dbg(&s->client->dev,
>> -			"%s: delivery_system=%u modulation=%u frequency=%u bandwidth_hz=%u symbol_rate=%u inversion=%u\n",
>> -			__func__, c->delivery_system, c->modulation,
>> +			"delivery_system=%u modulation=%u frequency=%u bandwidth_hz=%u symbol_rate=%u inversion=%u\n",
>> +			c->delivery_system, c->modulation,
>>   			c->frequency, c->bandwidth_hz, c->symbol_rate,
>>   			c->inversion);
>>
>> @@ -343,7 +342,7 @@ static int si2168_set_frontend(struct dvb_frontend *fe)
>>
>>   	return 0;
>>   err:
>> -	dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
>> +	dev_dbg(&s->client->dev, "failed=%d\n", ret);
>>   	return ret;
>>   }
>>
>> @@ -357,7 +356,7 @@ static int si2168_init(struct dvb_frontend *fe)
>>   	struct si2168_cmd cmd;
>>   	unsigned int chip_id;
>>
>> -	dev_dbg(&s->client->dev, "%s:\n", __func__);
>> +	dev_dbg(&s->client->dev, "\n");
>>
>>   	memcpy(cmd.args, "\xc0\x12\x00\x0c\x00\x0d\x16\x00\x00\x00\x00\x00\x00", 13);
>>   	cmd.wlen = 13;
>> @@ -400,16 +399,16 @@ static int si2168_init(struct dvb_frontend *fe)
>>   		break;
>>   	default:
>>   		dev_err(&s->client->dev,
>> -				"%s: unkown chip version Si21%d-%c%c%c\n",
>> -				KBUILD_MODNAME, cmd.args[2], cmd.args[1],
>> +				"unknown chip version Si21%d-%c%c%c\n",
>> +				cmd.args[2], cmd.args[1],
>>   				cmd.args[3], cmd.args[4]);
>>   		ret = -EINVAL;
>>   		goto err;
>>   	}
>>
>>   	/* cold state - try to download firmware */
>> -	dev_info(&s->client->dev, "%s: found a '%s' in cold state\n",
>> -			KBUILD_MODNAME, si2168_ops.info.name);
>> +	dev_info(&s->client->dev, "found a '%s' in cold state\n",
>> +			si2168_ops.info.name);
>>
>>   	/* request the firmware, this will block and timeout */
>>   	ret = request_firmware(&fw, fw_file, &s->client->dev);
>> @@ -422,18 +421,18 @@ static int si2168_init(struct dvb_frontend *fe)
>>
>>   		if (ret == 0) {
>>   			dev_notice(&s->client->dev,
>> -					"%s: please install firmware file '%s'\n",
>> -					KBUILD_MODNAME, SI2168_B40_FIRMWARE);
>> +					"please install firmware file '%s'\n",
>> +					SI2168_B40_FIRMWARE);
>>   		} else {
>>   			dev_err(&s->client->dev,
>> -					"%s: firmware file '%s' not found\n",
>> -					KBUILD_MODNAME, fw_file);
>> +					"firmware file '%s' not found\n",
>> +					fw_file);
>>   			goto err;
>>   		}
>>   	}
>>
>> -	dev_info(&s->client->dev, "%s: downloading firmware from file '%s'\n",
>> -			KBUILD_MODNAME, fw_file);
>> +	dev_info(&s->client->dev, "downloading firmware from file '%s'\n",
>> +			fw_file);
>>
>>   	for (remaining = fw->size; remaining > 0; remaining -= i2c_wr_max) {
>>   		len = remaining;
>> @@ -446,8 +445,8 @@ static int si2168_init(struct dvb_frontend *fe)
>>   		ret = si2168_cmd_execute(s, &cmd);
>>   		if (ret) {
>>   			dev_err(&s->client->dev,
>> -					"%s: firmware download failed=%d\n",
>> -					KBUILD_MODNAME, ret);
>> +					"firmware download failed=%d\n",
>> +					ret);
>>   			goto err;
>>   		}
>>   	}
>> @@ -462,8 +461,8 @@ static int si2168_init(struct dvb_frontend *fe)
>>   	if (ret)
>>   		goto err;
>>
>> -	dev_info(&s->client->dev, "%s: found a '%s' in warm state\n",
>> -			KBUILD_MODNAME, si2168_ops.info.name);
>> +	dev_info(&s->client->dev, "found a '%s' in warm state\n",
>> +			si2168_ops.info.name);
>>
>>   	s->active = true;
>>
>> @@ -472,7 +471,7 @@ err:
>>   	if (fw)
>>   		release_firmware(fw);
>>
>> -	dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
>> +	dev_dbg(&s->client->dev, "failed=%d\n", ret);
>>   	return ret;
>>   }
>>
>> @@ -482,7 +481,7 @@ static int si2168_sleep(struct dvb_frontend *fe)
>>   	int ret;
>>   	struct si2168_cmd cmd;
>>
>> -	dev_dbg(&s->client->dev, "%s:\n", __func__);
>> +	dev_dbg(&s->client->dev, "\n");
>>
>>   	s->active = false;
>>
>> @@ -495,7 +494,7 @@ static int si2168_sleep(struct dvb_frontend *fe)
>>
>>   	return 0;
>>   err:
>> -	dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
>> +	dev_dbg(&s->client->dev, "failed=%d\n", ret);
>>   	return ret;
>>   }
>>
>> @@ -528,8 +527,7 @@ static int si2168_select(struct i2c_adapter *adap, void *mux_priv, u32 chan)
>>   	/* open tuner I2C gate */
>>   	ret = __i2c_transfer(s->client->adapter, &gate_open_msg, 1);
>>   	if (ret != 1) {
>> -		dev_warn(&s->client->dev, "%s: i2c write failed=%d\n",
>> -				KBUILD_MODNAME, ret);
>> +		dev_warn(&s->client->dev, "i2c write failed=%d\n", ret);
>>   		if (ret >= 0)
>>   			ret = -EREMOTEIO;
>>   	} else {
>> @@ -553,8 +551,7 @@ static int si2168_deselect(struct i2c_adapter *adap, void *mux_priv, u32 chan)
>>   	/* close tuner I2C gate */
>>   	ret = __i2c_transfer(s->client->adapter, &gate_close_msg, 1);
>>   	if (ret != 1) {
>> -		dev_warn(&s->client->dev, "%s: i2c write failed=%d\n",
>> -				KBUILD_MODNAME, ret);
>> +		dev_warn(&s->client->dev, "i2c write failed=%d\n", ret);
>>   		if (ret >= 0)
>>   			ret = -EREMOTEIO;
>>   	} else {
>> @@ -607,12 +604,12 @@ static int si2168_probe(struct i2c_client *client,
>>   	struct si2168 *s;
>>   	int ret;
>>
>> -	dev_dbg(&client->dev, "%s:\n", __func__);
>> +	dev_dbg(&client->dev, "\n");
>>
>>   	s = kzalloc(sizeof(struct si2168), GFP_KERNEL);
>>   	if (!s) {
>>   		ret = -ENOMEM;
>> -		dev_err(&client->dev, "%s: kzalloc() failed\n", KBUILD_MODNAME);
>> +		dev_err(&client->dev, "kzalloc() failed\n");
>>   		goto err;
>>   	}
>>
>> @@ -637,12 +634,11 @@ static int si2168_probe(struct i2c_client *client,
>>   	i2c_set_clientdata(client, s);
>>
>>   	dev_info(&s->client->dev,
>> -			"%s: Silicon Labs Si2168 successfully attached\n",
>> -			KBUILD_MODNAME);
>> +			"Silicon Labs Si2168 successfully attached\n");
>>   	return 0;
>>   err:
>>   	kfree(s);
>> -	dev_dbg(&client->dev, "%s: failed=%d\n", __func__, ret);
>> +	dev_dbg(&client->dev, "failed=%d\n", ret);
>>   	return ret;
>>   }
>>
>> @@ -650,7 +646,7 @@ static int si2168_remove(struct i2c_client *client)
>>   {
>>   	struct si2168 *s = i2c_get_clientdata(client);
>>
>> -	dev_dbg(&client->dev, "%s:\n", __func__);
>> +	dev_dbg(&client->dev, "\n");
>>
>>   	i2c_del_mux_adapter(s->adapter);
>>
>
>

-- 
http://palosaari.fi/

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [GIT PULL FINAL 01/21] si2168: clean logging
  2014-08-22 12:13     ` Antti Palosaari
@ 2014-08-22 12:28       ` Mauro Carvalho Chehab
  2014-08-22 12:50         ` Antti Palosaari
  0 siblings, 1 reply; 34+ messages in thread
From: Mauro Carvalho Chehab @ 2014-08-22 12:28 UTC (permalink / raw)
  To: Antti Palosaari; +Cc: linux-media, Nibble Max, Olli Salonen, Evgeny Plehov

Em Fri, 22 Aug 2014 15:13:47 +0300
Antti Palosaari <crope@iki.fi> escreveu:

> On 08/22/2014 02:47 PM, Mauro Carvalho Chehab wrote:
> > Hi Antti,
> >
> > Please don't add "GIT PULL" on patches. That breaks my scripts, as they
> > will run a completely different logic when those magic words are there
> > on a message at patchwork.
> >
> > Also, the word "FINAL" makes me nervous... That means that you sent me
> > a non-final pull request?
> 
> I didn't find better term. Also for eyes it wasn't proper term, but 
> there is no such prefix which fits that case:
> http://lwn.net/Articles/529490/

What is written there is:

	Once your patches have been reviewed/acked you can post either a pull request
	("[GIT PULL]") or use the "[FINAL PATCH x/y]" tag if you don't have a public
	git tree.

E. g. either send git pull or tag the patches as final, *if* the person 
sending the patches doesn't have a public git tree (although, in practice,
I think that nobody is using FINAL on patches nowadays).

I don't have any issue if someone uses "FINAL" on patches, but what
turns on a red flag is when someone uses "FINAL" on a git pull request,
because a pull request should be sent only when the patches are already ok.

In other words, a FINAL word on a GIT PULL makes me wander that there
is a previous pull request that is bad, but it doesn't give any glue 
about what pull request is broken.

Is it the case of this pull request? If so, what previous pull
request is broken?

I would rather strongly prefer that, in the case that you sent a previous
pull request that should be discarded, that you would reply to the
original GIT PULL request thread with a NACK for me to be aware that
I should discard it at patchwork.

Regards,
Mauro

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [GIT PULL FINAL 01/21] si2168: clean logging
  2014-08-22 12:28       ` Mauro Carvalho Chehab
@ 2014-08-22 12:50         ` Antti Palosaari
  2014-08-22 13:41           ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 34+ messages in thread
From: Antti Palosaari @ 2014-08-22 12:50 UTC (permalink / raw)
  To: Mauro Carvalho Chehab
  Cc: linux-media, Nibble Max, Olli Salonen, Evgeny Plehov



On 08/22/2014 03:28 PM, Mauro Carvalho Chehab wrote:
> Em Fri, 22 Aug 2014 15:13:47 +0300
> Antti Palosaari <crope@iki.fi> escreveu:
>
>> On 08/22/2014 02:47 PM, Mauro Carvalho Chehab wrote:
>>> Hi Antti,
>>>
>>> Please don't add "GIT PULL" on patches. That breaks my scripts, as they
>>> will run a completely different logic when those magic words are there
>>> on a message at patchwork.
>>>
>>> Also, the word "FINAL" makes me nervous... That means that you sent me
>>> a non-final pull request?
>>
>> I didn't find better term. Also for eyes it wasn't proper term, but
>> there is no such prefix which fits that case:
>> http://lwn.net/Articles/529490/
>
> What is written there is:
>
> 	Once your patches have been reviewed/acked you can post either a pull request
> 	("[GIT PULL]") or use the "[FINAL PATCH x/y]" tag if you don't have a public
> 	git tree.
>
> E. g. either send git pull or tag the patches as final, *if* the person
> sending the patches doesn't have a public git tree (although, in practice,
> I think that nobody is using FINAL on patches nowadays).
>
> I don't have any issue if someone uses "FINAL" on patches, but what
> turns on a red flag is when someone uses "FINAL" on a git pull request,
> because a pull request should be sent only when the patches are already ok.
>
> In other words, a FINAL word on a GIT PULL makes me wander that there
> is a previous pull request that is bad, but it doesn't give any glue
> about what pull request is broken.
>
> Is it the case of this pull request? If so, what previous pull
> request is broken?
>
> I would rather strongly prefer that, in the case that you sent a previous
> pull request that should be discarded, that you would reply to the
> original GIT PULL request thread with a NACK for me to be aware that
> I should discard it at patchwork.

There was no previous pull request. I just decided to send whole pull 
request to mailing list for last minute review, like they do on stable 
cases. But sure I could next time just pick patches and send pull 
request only.

regards
Antti

-- 
http://palosaari.fi/

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [GIT PULL FINAL 01/21] si2168: clean logging
  2014-08-22 12:50         ` Antti Palosaari
@ 2014-08-22 13:41           ` Mauro Carvalho Chehab
  0 siblings, 0 replies; 34+ messages in thread
From: Mauro Carvalho Chehab @ 2014-08-22 13:41 UTC (permalink / raw)
  To: Antti Palosaari; +Cc: linux-media, Nibble Max, Olli Salonen, Evgeny Plehov

Em Fri, 22 Aug 2014 15:50:03 +0300
Antti Palosaari <crope@iki.fi> escreveu:

> 
> 
> On 08/22/2014 03:28 PM, Mauro Carvalho Chehab wrote:
> > Em Fri, 22 Aug 2014 15:13:47 +0300
> > Antti Palosaari <crope@iki.fi> escreveu:
> >
> >> On 08/22/2014 02:47 PM, Mauro Carvalho Chehab wrote:
> >>> Hi Antti,
> >>>
> >>> Please don't add "GIT PULL" on patches. That breaks my scripts, as they
> >>> will run a completely different logic when those magic words are there
> >>> on a message at patchwork.
> >>>
> >>> Also, the word "FINAL" makes me nervous... That means that you sent me
> >>> a non-final pull request?
> >>
> >> I didn't find better term. Also for eyes it wasn't proper term, but
> >> there is no such prefix which fits that case:
> >> http://lwn.net/Articles/529490/
> >
> > What is written there is:
> >
> > 	Once your patches have been reviewed/acked you can post either a pull request
> > 	("[GIT PULL]") or use the "[FINAL PATCH x/y]" tag if you don't have a public
> > 	git tree.
> >
> > E. g. either send git pull or tag the patches as final, *if* the person
> > sending the patches doesn't have a public git tree (although, in practice,
> > I think that nobody is using FINAL on patches nowadays).
> >
> > I don't have any issue if someone uses "FINAL" on patches, but what
> > turns on a red flag is when someone uses "FINAL" on a git pull request,
> > because a pull request should be sent only when the patches are already ok.
> >
> > In other words, a FINAL word on a GIT PULL makes me wander that there
> > is a previous pull request that is bad, but it doesn't give any glue
> > about what pull request is broken.
> >
> > Is it the case of this pull request? If so, what previous pull
> > request is broken?
> >
> > I would rather strongly prefer that, in the case that you sent a previous
> > pull request that should be discarded, that you would reply to the
> > original GIT PULL request thread with a NACK for me to be aware that
> > I should discard it at patchwork.
> 
> There was no previous pull request. 

Ah! OK, then.

> I just decided to send whole pull 
> request to mailing list for last minute review, like they do on stable 
> cases. But sure I could next time just pick patches and send pull 
> request only.

Please send in separate. The patches should be sent to the ML for people
to review with "PATCH" at their titles, while the pull request should
have "GIT PULL" at the subject. That helps both patch reviewers and
automatic scripts to do the right thing.

Thanks!
Mauro

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [GIT PULL FINAL 16/21] m88ts2022: rename device state (priv => s)
  2014-08-22 10:58 ` [GIT PULL FINAL 16/21] m88ts2022: rename device state (priv => s) Antti Palosaari
@ 2014-09-02 18:51   ` Mauro Carvalho Chehab
  2014-09-03  2:26     ` Antti Palosaari
  0 siblings, 1 reply; 34+ messages in thread
From: Mauro Carvalho Chehab @ 2014-09-02 18:51 UTC (permalink / raw)
  To: Antti Palosaari; +Cc: linux-media, Nibble Max, Olli Salonen, Evgeny Plehov

Em Fri, 22 Aug 2014 13:58:08 +0300
Antti Palosaari <crope@iki.fi> escreveu:

> I like short names for things which are used everywhere overall the
> driver. Due to that rename device state pointer from 'priv' to 's'.

Please, don't do that. "s" is generally used on several places for string.
If you want a shorter name, call it "st" for example.

Regards,
Mauro

> 
> Signed-off-by: Antti Palosaari <crope@iki.fi>
> ---
>  drivers/media/tuners/m88ts2022.c      | 190 +++++++++++++++++-----------------
>  drivers/media/tuners/m88ts2022_priv.h |   2 +-
>  2 files changed, 96 insertions(+), 96 deletions(-)
> 
> diff --git a/drivers/media/tuners/m88ts2022.c b/drivers/media/tuners/m88ts2022.c
> index f51b107..43856df 100644
> --- a/drivers/media/tuners/m88ts2022.c
> +++ b/drivers/media/tuners/m88ts2022.c
> @@ -19,7 +19,7 @@
>  #include "m88ts2022_priv.h"
>  
>  /* write multiple registers */
> -static int m88ts2022_wr_regs(struct m88ts2022_priv *priv,
> +static int m88ts2022_wr_regs(struct m88ts2022 *s,
>  		u8 reg, const u8 *val, int len)
>  {
>  #define MAX_WR_LEN 3
> @@ -28,7 +28,7 @@ static int m88ts2022_wr_regs(struct m88ts2022_priv *priv,
>  	u8 buf[MAX_WR_XFER_LEN];
>  	struct i2c_msg msg[1] = {
>  		{
> -			.addr = priv->client->addr,
> +			.addr = s->client->addr,
>  			.flags = 0,
>  			.len = 1 + len,
>  			.buf = buf,
> @@ -41,11 +41,11 @@ static int m88ts2022_wr_regs(struct m88ts2022_priv *priv,
>  	buf[0] = reg;
>  	memcpy(&buf[1], val, len);
>  
> -	ret = i2c_transfer(priv->client->adapter, msg, 1);
> +	ret = i2c_transfer(s->client->adapter, msg, 1);
>  	if (ret == 1) {
>  		ret = 0;
>  	} else {
> -		dev_warn(&priv->client->dev,
> +		dev_warn(&s->client->dev,
>  				"%s: i2c wr failed=%d reg=%02x len=%d\n",
>  				KBUILD_MODNAME, ret, reg, len);
>  		ret = -EREMOTEIO;
> @@ -55,7 +55,7 @@ static int m88ts2022_wr_regs(struct m88ts2022_priv *priv,
>  }
>  
>  /* read multiple registers */
> -static int m88ts2022_rd_regs(struct m88ts2022_priv *priv, u8 reg,
> +static int m88ts2022_rd_regs(struct m88ts2022 *s, u8 reg,
>  		u8 *val, int len)
>  {
>  #define MAX_RD_LEN 1
> @@ -64,12 +64,12 @@ static int m88ts2022_rd_regs(struct m88ts2022_priv *priv, u8 reg,
>  	u8 buf[MAX_RD_XFER_LEN];
>  	struct i2c_msg msg[2] = {
>  		{
> -			.addr = priv->client->addr,
> +			.addr = s->client->addr,
>  			.flags = 0,
>  			.len = 1,
>  			.buf = &reg,
>  		}, {
> -			.addr = priv->client->addr,
> +			.addr = s->client->addr,
>  			.flags = I2C_M_RD,
>  			.len = len,
>  			.buf = buf,
> @@ -79,12 +79,12 @@ static int m88ts2022_rd_regs(struct m88ts2022_priv *priv, u8 reg,
>  	if (WARN_ON(len > MAX_RD_LEN))
>  		return -EINVAL;
>  
> -	ret = i2c_transfer(priv->client->adapter, msg, 2);
> +	ret = i2c_transfer(s->client->adapter, msg, 2);
>  	if (ret == 2) {
>  		memcpy(val, buf, len);
>  		ret = 0;
>  	} else {
> -		dev_warn(&priv->client->dev,
> +		dev_warn(&s->client->dev,
>  				"%s: i2c rd failed=%d reg=%02x len=%d\n",
>  				KBUILD_MODNAME, ret, reg, len);
>  		ret = -EREMOTEIO;
> @@ -94,19 +94,19 @@ static int m88ts2022_rd_regs(struct m88ts2022_priv *priv, u8 reg,
>  }
>  
>  /* write single register */
> -static int m88ts2022_wr_reg(struct m88ts2022_priv *priv, u8 reg, u8 val)
> +static int m88ts2022_wr_reg(struct m88ts2022 *s, u8 reg, u8 val)
>  {
> -	return m88ts2022_wr_regs(priv, reg, &val, 1);
> +	return m88ts2022_wr_regs(s, reg, &val, 1);
>  }
>  
>  /* read single register */
> -static int m88ts2022_rd_reg(struct m88ts2022_priv *priv, u8 reg, u8 *val)
> +static int m88ts2022_rd_reg(struct m88ts2022 *s, u8 reg, u8 *val)
>  {
> -	return m88ts2022_rd_regs(priv, reg, val, 1);
> +	return m88ts2022_rd_regs(s, reg, val, 1);
>  }
>  
>  /* write single register with mask */
> -static int m88ts2022_wr_reg_mask(struct m88ts2022_priv *priv,
> +static int m88ts2022_wr_reg_mask(struct m88ts2022 *s,
>  		u8 reg, u8 val, u8 mask)
>  {
>  	int ret;
> @@ -114,7 +114,7 @@ static int m88ts2022_wr_reg_mask(struct m88ts2022_priv *priv,
>  
>  	/* no need for read if whole reg is written */
>  	if (mask != 0xff) {
> -		ret = m88ts2022_rd_regs(priv, reg, &u8tmp, 1);
> +		ret = m88ts2022_rd_regs(s, reg, &u8tmp, 1);
>  		if (ret)
>  			return ret;
>  
> @@ -123,13 +123,13 @@ static int m88ts2022_wr_reg_mask(struct m88ts2022_priv *priv,
>  		val |= u8tmp;
>  	}
>  
> -	return m88ts2022_wr_regs(priv, reg, &val, 1);
> +	return m88ts2022_wr_regs(s, reg, &val, 1);
>  }
>  
>  static int m88ts2022_cmd(struct dvb_frontend *fe,
>  		int op, int sleep, u8 reg, u8 mask, u8 val, u8 *reg_val)
>  {
> -	struct m88ts2022_priv *priv = fe->tuner_priv;
> +	struct m88ts2022 *s = fe->tuner_priv;
>  	int ret, i;
>  	u8 u8tmp;
>  	struct m88ts2022_reg_val reg_vals[] = {
> @@ -140,12 +140,12 @@ static int m88ts2022_cmd(struct dvb_frontend *fe,
>  	};
>  
>  	for (i = 0; i < 2; i++) {
> -		dev_dbg(&priv->client->dev,
> +		dev_dbg(&s->client->dev,
>  				"%s: i=%d op=%02x reg=%02x mask=%02x val=%02x\n",
>  				__func__, i, op, reg, mask, val);
>  
>  		for (i = 0; i < ARRAY_SIZE(reg_vals); i++) {
> -			ret = m88ts2022_wr_reg(priv, reg_vals[i].reg,
> +			ret = m88ts2022_wr_reg(s, reg_vals[i].reg,
>  					reg_vals[i].val);
>  			if (ret)
>  				goto err;
> @@ -153,7 +153,7 @@ static int m88ts2022_cmd(struct dvb_frontend *fe,
>  
>  		usleep_range(sleep * 1000, sleep * 10000);
>  
> -		ret = m88ts2022_rd_reg(priv, reg, &u8tmp);
> +		ret = m88ts2022_rd_reg(s, reg, &u8tmp);
>  		if (ret)
>  			goto err;
>  
> @@ -169,7 +169,7 @@ err:
>  
>  static int m88ts2022_set_params(struct dvb_frontend *fe)
>  {
> -	struct m88ts2022_priv *priv = fe->tuner_priv;
> +	struct m88ts2022 *s = fe->tuner_priv;
>  	struct dtv_frontend_properties *c = &fe->dtv_property_cache;
>  	int ret;
>  	unsigned int frequency_khz, frequency_offset_khz, f_3db_hz;
> @@ -177,14 +177,14 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
>  	u8 buf[3], u8tmp, cap_code, lpf_gm, lpf_mxdiv, div_max, div_min;
>  	u16 u16tmp;
>  
> -	dev_dbg(&priv->client->dev,
> +	dev_dbg(&s->client->dev,
>  			"%s: frequency=%d symbol_rate=%d rolloff=%d\n",
>  			__func__, c->frequency, c->symbol_rate, c->rolloff);
>  	/*
>  	 * Integer-N PLL synthesizer
>  	 * kHz is used for all calculations to keep calculations within 32-bit
>  	 */
> -	f_ref_khz = DIV_ROUND_CLOSEST(priv->cfg.clock, 1000);
> +	f_ref_khz = DIV_ROUND_CLOSEST(s->cfg.clock, 1000);
>  	div_ref = DIV_ROUND_CLOSEST(f_ref_khz, 2000);
>  
>  	if (c->symbol_rate < 5000000)
> @@ -204,14 +204,14 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
>  
>  	buf[0] = u8tmp;
>  	buf[1] = 0x40;
> -	ret = m88ts2022_wr_regs(priv, 0x10, buf, 2);
> +	ret = m88ts2022_wr_regs(s, 0x10, buf, 2);
>  	if (ret)
>  		goto err;
>  
>  	f_vco_khz = frequency_khz * div_out;
>  	pll_n = f_vco_khz * div_ref / f_ref_khz;
>  	pll_n += pll_n % 2;
> -	priv->frequency_khz = pll_n * f_ref_khz / div_ref / div_out;
> +	s->frequency_khz = pll_n * f_ref_khz / div_ref / div_out;
>  
>  	if (pll_n < 4095)
>  		u16tmp = pll_n - 1024;
> @@ -223,31 +223,31 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
>  	buf[0] = (u16tmp >> 8) & 0x3f;
>  	buf[1] = (u16tmp >> 0) & 0xff;
>  	buf[2] = div_ref - 8;
> -	ret = m88ts2022_wr_regs(priv, 0x01, buf, 3);
> +	ret = m88ts2022_wr_regs(s, 0x01, buf, 3);
>  	if (ret)
>  		goto err;
>  
> -	dev_dbg(&priv->client->dev,
> +	dev_dbg(&s->client->dev,
>  			"%s: frequency=%u offset=%d f_vco_khz=%u pll_n=%u div_ref=%u div_out=%u\n",
> -			__func__, priv->frequency_khz,
> -			priv->frequency_khz - c->frequency, f_vco_khz, pll_n,
> +			__func__, s->frequency_khz,
> +			s->frequency_khz - c->frequency, f_vco_khz, pll_n,
>  			div_ref, div_out);
>  
>  	ret = m88ts2022_cmd(fe, 0x10, 5, 0x15, 0x40, 0x00, NULL);
>  	if (ret)
>  		goto err;
>  
> -	ret = m88ts2022_rd_reg(priv, 0x14, &u8tmp);
> +	ret = m88ts2022_rd_reg(s, 0x14, &u8tmp);
>  	if (ret)
>  		goto err;
>  
>  	u8tmp &= 0x7f;
>  	if (u8tmp < 64) {
> -		ret = m88ts2022_wr_reg_mask(priv, 0x10, 0x80, 0x80);
> +		ret = m88ts2022_wr_reg_mask(s, 0x10, 0x80, 0x80);
>  		if (ret)
>  			goto err;
>  
> -		ret = m88ts2022_wr_reg(priv, 0x11, 0x6f);
> +		ret = m88ts2022_wr_reg(s, 0x11, 0x6f);
>  		if (ret)
>  			goto err;
>  
> @@ -256,13 +256,13 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
>  			goto err;
>  	}
>  
> -	ret = m88ts2022_rd_reg(priv, 0x14, &u8tmp);
> +	ret = m88ts2022_rd_reg(s, 0x14, &u8tmp);
>  	if (ret)
>  		goto err;
>  
>  	u8tmp &= 0x1f;
>  	if (u8tmp > 19) {
> -		ret = m88ts2022_wr_reg_mask(priv, 0x10, 0x00, 0x02);
> +		ret = m88ts2022_wr_reg_mask(s, 0x10, 0x00, 0x02);
>  		if (ret)
>  			goto err;
>  	}
> @@ -271,26 +271,26 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
>  	if (ret)
>  		goto err;
>  
> -	ret = m88ts2022_wr_reg(priv, 0x25, 0x00);
> +	ret = m88ts2022_wr_reg(s, 0x25, 0x00);
>  	if (ret)
>  		goto err;
>  
> -	ret = m88ts2022_wr_reg(priv, 0x27, 0x70);
> +	ret = m88ts2022_wr_reg(s, 0x27, 0x70);
>  	if (ret)
>  		goto err;
>  
> -	ret = m88ts2022_wr_reg(priv, 0x41, 0x09);
> +	ret = m88ts2022_wr_reg(s, 0x41, 0x09);
>  	if (ret)
>  		goto err;
>  
> -	ret = m88ts2022_wr_reg(priv, 0x08, 0x0b);
> +	ret = m88ts2022_wr_reg(s, 0x08, 0x0b);
>  	if (ret)
>  		goto err;
>  
>  	/* filters */
>  	gdiv28 = DIV_ROUND_CLOSEST(f_ref_khz * 1694U, 1000000U);
>  
> -	ret = m88ts2022_wr_reg(priv, 0x04, gdiv28);
> +	ret = m88ts2022_wr_reg(s, 0x04, gdiv28);
>  	if (ret)
>  		goto err;
>  
> @@ -300,7 +300,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
>  
>  	cap_code = u8tmp & 0x3f;
>  
> -	ret = m88ts2022_wr_reg(priv, 0x41, 0x0d);
> +	ret = m88ts2022_wr_reg(s, 0x41, 0x0d);
>  	if (ret)
>  		goto err;
>  
> @@ -328,11 +328,11 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
>  		lpf_mxdiv = DIV_ROUND_CLOSEST(++lpf_gm * LPF_COEFF * f_ref_khz, f_3db_hz);
>  	lpf_mxdiv = clamp_val(lpf_mxdiv, 0U, div_max);
>  
> -	ret = m88ts2022_wr_reg(priv, 0x04, lpf_mxdiv);
> +	ret = m88ts2022_wr_reg(s, 0x04, lpf_mxdiv);
>  	if (ret)
>  		goto err;
>  
> -	ret = m88ts2022_wr_reg(priv, 0x06, lpf_gm);
> +	ret = m88ts2022_wr_reg(s, 0x06, lpf_gm);
>  	if (ret)
>  		goto err;
>  
> @@ -342,7 +342,7 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
>  
>  	cap_code = u8tmp & 0x3f;
>  
> -	ret = m88ts2022_wr_reg(priv, 0x41, 0x09);
> +	ret = m88ts2022_wr_reg(s, 0x41, 0x09);
>  	if (ret)
>  		goto err;
>  
> @@ -354,15 +354,15 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
>  	cap_code = (cap_code + u8tmp) / 2;
>  
>  	u8tmp = cap_code | 0x80;
> -	ret = m88ts2022_wr_reg(priv, 0x25, u8tmp);
> +	ret = m88ts2022_wr_reg(s, 0x25, u8tmp);
>  	if (ret)
>  		goto err;
>  
> -	ret = m88ts2022_wr_reg(priv, 0x27, 0x30);
> +	ret = m88ts2022_wr_reg(s, 0x27, 0x30);
>  	if (ret)
>  		goto err;
>  
> -	ret = m88ts2022_wr_reg(priv, 0x08, 0x09);
> +	ret = m88ts2022_wr_reg(s, 0x08, 0x09);
>  	if (ret)
>  		goto err;
>  
> @@ -371,14 +371,14 @@ static int m88ts2022_set_params(struct dvb_frontend *fe)
>  		goto err;
>  err:
>  	if (ret)
> -		dev_dbg(&priv->client->dev, "%s: failed=%d\n", __func__, ret);
> +		dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
>  
>  	return ret;
>  }
>  
>  static int m88ts2022_init(struct dvb_frontend *fe)
>  {
> -	struct m88ts2022_priv *priv = fe->tuner_priv;
> +	struct m88ts2022 *s = fe->tuner_priv;
>  	int ret, i;
>  	u8 u8tmp;
>  	static const struct m88ts2022_reg_val reg_vals[] = {
> @@ -395,23 +395,23 @@ static int m88ts2022_init(struct dvb_frontend *fe)
>  		{0x12, 0xa0},
>  	};
>  
> -	dev_dbg(&priv->client->dev, "%s:\n", __func__);
> +	dev_dbg(&s->client->dev, "%s:\n", __func__);
>  
> -	ret = m88ts2022_wr_reg(priv, 0x00, 0x01);
> +	ret = m88ts2022_wr_reg(s, 0x00, 0x01);
>  	if (ret)
>  		goto err;
>  
> -	ret = m88ts2022_wr_reg(priv, 0x00, 0x03);
> +	ret = m88ts2022_wr_reg(s, 0x00, 0x03);
>  	if (ret)
>  		goto err;
>  
> -	switch (priv->cfg.clock_out) {
> +	switch (s->cfg.clock_out) {
>  	case M88TS2022_CLOCK_OUT_DISABLED:
>  		u8tmp = 0x60;
>  		break;
>  	case M88TS2022_CLOCK_OUT_ENABLED:
>  		u8tmp = 0x70;
> -		ret = m88ts2022_wr_reg(priv, 0x05, priv->cfg.clock_out_div);
> +		ret = m88ts2022_wr_reg(s, 0x05, s->cfg.clock_out_div);
>  		if (ret)
>  			goto err;
>  		break;
> @@ -422,61 +422,61 @@ static int m88ts2022_init(struct dvb_frontend *fe)
>  		goto err;
>  	}
>  
> -	ret = m88ts2022_wr_reg(priv, 0x42, u8tmp);
> +	ret = m88ts2022_wr_reg(s, 0x42, u8tmp);
>  	if (ret)
>  		goto err;
>  
> -	if (priv->cfg.loop_through)
> +	if (s->cfg.loop_through)
>  		u8tmp = 0xec;
>  	else
>  		u8tmp = 0x6c;
>  
> -	ret = m88ts2022_wr_reg(priv, 0x62, u8tmp);
> +	ret = m88ts2022_wr_reg(s, 0x62, u8tmp);
>  	if (ret)
>  		goto err;
>  
>  	for (i = 0; i < ARRAY_SIZE(reg_vals); i++) {
> -		ret = m88ts2022_wr_reg(priv, reg_vals[i].reg, reg_vals[i].val);
> +		ret = m88ts2022_wr_reg(s, reg_vals[i].reg, reg_vals[i].val);
>  		if (ret)
>  			goto err;
>  	}
>  err:
>  	if (ret)
> -		dev_dbg(&priv->client->dev, "%s: failed=%d\n", __func__, ret);
> +		dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
>  	return ret;
>  }
>  
>  static int m88ts2022_sleep(struct dvb_frontend *fe)
>  {
> -	struct m88ts2022_priv *priv = fe->tuner_priv;
> +	struct m88ts2022 *s = fe->tuner_priv;
>  	int ret;
>  
> -	dev_dbg(&priv->client->dev, "%s:\n", __func__);
> +	dev_dbg(&s->client->dev, "%s:\n", __func__);
>  
> -	ret = m88ts2022_wr_reg(priv, 0x00, 0x00);
> +	ret = m88ts2022_wr_reg(s, 0x00, 0x00);
>  	if (ret)
>  		goto err;
>  err:
>  	if (ret)
> -		dev_dbg(&priv->client->dev, "%s: failed=%d\n", __func__, ret);
> +		dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
>  	return ret;
>  }
>  
>  static int m88ts2022_get_frequency(struct dvb_frontend *fe, u32 *frequency)
>  {
> -	struct m88ts2022_priv *priv = fe->tuner_priv;
> +	struct m88ts2022 *s = fe->tuner_priv;
>  
> -	dev_dbg(&priv->client->dev, "%s:\n", __func__);
> +	dev_dbg(&s->client->dev, "%s:\n", __func__);
>  
> -	*frequency = priv->frequency_khz;
> +	*frequency = s->frequency_khz;
>  	return 0;
>  }
>  
>  static int m88ts2022_get_if_frequency(struct dvb_frontend *fe, u32 *frequency)
>  {
> -	struct m88ts2022_priv *priv = fe->tuner_priv;
> +	struct m88ts2022 *s = fe->tuner_priv;
>  
> -	dev_dbg(&priv->client->dev, "%s:\n", __func__);
> +	dev_dbg(&s->client->dev, "%s:\n", __func__);
>  
>  	*frequency = 0; /* Zero-IF */
>  	return 0;
> @@ -484,27 +484,27 @@ static int m88ts2022_get_if_frequency(struct dvb_frontend *fe, u32 *frequency)
>  
>  static int m88ts2022_get_rf_strength(struct dvb_frontend *fe, u16 *strength)
>  {
> -	struct m88ts2022_priv *priv = fe->tuner_priv;
> +	struct m88ts2022 *s = fe->tuner_priv;
>  	int ret;
>  	u8 u8tmp;
>  	u16 gain, u16tmp;
>  	unsigned int gain1, gain2, gain3;
>  
> -	ret = m88ts2022_rd_reg(priv, 0x3d, &u8tmp);
> +	ret = m88ts2022_rd_reg(s, 0x3d, &u8tmp);
>  	if (ret)
>  		goto err;
>  
>  	gain1 = (u8tmp >> 0) & 0x1f;
>  	gain1 = clamp(gain1, 0U, 15U);
>  
> -	ret = m88ts2022_rd_reg(priv, 0x21, &u8tmp);
> +	ret = m88ts2022_rd_reg(s, 0x21, &u8tmp);
>  	if (ret)
>  		goto err;
>  
>  	gain2 = (u8tmp >> 0) & 0x1f;
>  	gain2 = clamp(gain2, 2U, 16U);
>  
> -	ret = m88ts2022_rd_reg(priv, 0x66, &u8tmp);
> +	ret = m88ts2022_rd_reg(s, 0x66, &u8tmp);
>  	if (ret)
>  		goto err;
>  
> @@ -520,7 +520,7 @@ static int m88ts2022_get_rf_strength(struct dvb_frontend *fe, u16 *strength)
>  	*strength = (u16tmp - 59000) * 0xffff / (61500 - 59000);
>  err:
>  	if (ret)
> -		dev_dbg(&priv->client->dev, "%s: failed=%d\n", __func__, ret);
> +		dev_dbg(&s->client->dev, "%s: failed=%d\n", __func__, ret);
>  	return ret;
>  }
>  
> @@ -545,44 +545,44 @@ static int m88ts2022_probe(struct i2c_client *client,
>  {
>  	struct m88ts2022_config *cfg = client->dev.platform_data;
>  	struct dvb_frontend *fe = cfg->fe;
> -	struct m88ts2022_priv *priv;
> +	struct m88ts2022 *s;
>  	int ret;
>  	u8 chip_id, u8tmp;
>  
> -	priv = kzalloc(sizeof(*priv), GFP_KERNEL);
> -	if (!priv) {
> +	s = kzalloc(sizeof(*s), GFP_KERNEL);
> +	if (!s) {
>  		ret = -ENOMEM;
>  		dev_err(&client->dev, "%s: kzalloc() failed\n", KBUILD_MODNAME);
>  		goto err;
>  	}
>  
> -	memcpy(&priv->cfg, cfg, sizeof(struct m88ts2022_config));
> -	priv->client = client;
> +	memcpy(&s->cfg, cfg, sizeof(struct m88ts2022_config));
> +	s->client = client;
>  
>  	/* check if the tuner is there */
> -	ret = m88ts2022_rd_reg(priv, 0x00, &u8tmp);
> +	ret = m88ts2022_rd_reg(s, 0x00, &u8tmp);
>  	if (ret)
>  		goto err;
>  
>  	if ((u8tmp & 0x03) == 0x00) {
> -		ret = m88ts2022_wr_reg(priv, 0x00, 0x01);
> +		ret = m88ts2022_wr_reg(s, 0x00, 0x01);
>  		if (ret < 0)
>  			goto err;
>  
>  		usleep_range(2000, 50000);
>  	}
>  
> -	ret = m88ts2022_wr_reg(priv, 0x00, 0x03);
> +	ret = m88ts2022_wr_reg(s, 0x00, 0x03);
>  	if (ret)
>  		goto err;
>  
>  	usleep_range(2000, 50000);
>  
> -	ret = m88ts2022_rd_reg(priv, 0x00, &chip_id);
> +	ret = m88ts2022_rd_reg(s, 0x00, &chip_id);
>  	if (ret)
>  		goto err;
>  
> -	dev_dbg(&priv->client->dev, "%s: chip_id=%02x\n", __func__, chip_id);
> +	dev_dbg(&s->client->dev, "%s: chip_id=%02x\n", __func__, chip_id);
>  
>  	switch (chip_id) {
>  	case 0xc3:
> @@ -592,13 +592,13 @@ static int m88ts2022_probe(struct i2c_client *client,
>  		goto err;
>  	}
>  
> -	switch (priv->cfg.clock_out) {
> +	switch (s->cfg.clock_out) {
>  	case M88TS2022_CLOCK_OUT_DISABLED:
>  		u8tmp = 0x60;
>  		break;
>  	case M88TS2022_CLOCK_OUT_ENABLED:
>  		u8tmp = 0x70;
> -		ret = m88ts2022_wr_reg(priv, 0x05, priv->cfg.clock_out_div);
> +		ret = m88ts2022_wr_reg(s, 0x05, s->cfg.clock_out_div);
>  		if (ret)
>  			goto err;
>  		break;
> @@ -609,50 +609,50 @@ static int m88ts2022_probe(struct i2c_client *client,
>  		goto err;
>  	}
>  
> -	ret = m88ts2022_wr_reg(priv, 0x42, u8tmp);
> +	ret = m88ts2022_wr_reg(s, 0x42, u8tmp);
>  	if (ret)
>  		goto err;
>  
> -	if (priv->cfg.loop_through)
> +	if (s->cfg.loop_through)
>  		u8tmp = 0xec;
>  	else
>  		u8tmp = 0x6c;
>  
> -	ret = m88ts2022_wr_reg(priv, 0x62, u8tmp);
> +	ret = m88ts2022_wr_reg(s, 0x62, u8tmp);
>  	if (ret)
>  		goto err;
>  
>  	/* sleep */
> -	ret = m88ts2022_wr_reg(priv, 0x00, 0x00);
> +	ret = m88ts2022_wr_reg(s, 0x00, 0x00);
>  	if (ret)
>  		goto err;
>  
> -	dev_info(&priv->client->dev,
> +	dev_info(&s->client->dev,
>  			"%s: Montage M88TS2022 successfully identified\n",
>  			KBUILD_MODNAME);
>  
> -	fe->tuner_priv = priv;
> +	fe->tuner_priv = s;
>  	memcpy(&fe->ops.tuner_ops, &m88ts2022_tuner_ops,
>  			sizeof(struct dvb_tuner_ops));
>  
> -	i2c_set_clientdata(client, priv);
> +	i2c_set_clientdata(client, s);
>  	return 0;
>  err:
>  	dev_dbg(&client->dev, "%s: failed=%d\n", __func__, ret);
> -	kfree(priv);
> +	kfree(s);
>  	return ret;
>  }
>  
>  static int m88ts2022_remove(struct i2c_client *client)
>  {
> -	struct m88ts2022_priv *priv = i2c_get_clientdata(client);
> -	struct dvb_frontend *fe = priv->cfg.fe;
> +	struct m88ts2022 *s = i2c_get_clientdata(client);
> +	struct dvb_frontend *fe = s->cfg.fe;
>  
>  	dev_dbg(&client->dev, "%s:\n", __func__);
>  
>  	memset(&fe->ops.tuner_ops, 0, sizeof(struct dvb_tuner_ops));
>  	fe->tuner_priv = NULL;
> -	kfree(priv);
> +	kfree(s);
>  
>  	return 0;
>  }
> diff --git a/drivers/media/tuners/m88ts2022_priv.h b/drivers/media/tuners/m88ts2022_priv.h
> index 0363dd8..cbc9e2b 100644
> --- a/drivers/media/tuners/m88ts2022_priv.h
> +++ b/drivers/media/tuners/m88ts2022_priv.h
> @@ -19,7 +19,7 @@
>  
>  #include "m88ts2022.h"
>  
> -struct m88ts2022_priv {
> +struct m88ts2022 {
>  	struct m88ts2022_config cfg;
>  	struct i2c_client *client;
>  	struct dvb_frontend *fe;

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [GIT PULL FINAL 00/21] misc DTV stuff for 3.18
  2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
                   ` (21 preceding siblings ...)
  2014-08-22 11:08 ` [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
@ 2014-09-02 18:59 ` Mauro Carvalho Chehab
  22 siblings, 0 replies; 34+ messages in thread
From: Mauro Carvalho Chehab @ 2014-09-02 18:59 UTC (permalink / raw)
  To: Antti Palosaari; +Cc: linux-media, Nibble Max, Olli Salonen, Evgeny Plehov

Em Fri, 22 Aug 2014 13:57:52 +0300
Antti Palosaari <crope@iki.fi> escreveu:

> Moikka
> I picked these from patchwork and this is just final review before
> PULL request I will send very shortly. I don't expect any change
> requests at this late, without a very good reason :)
> 
> However, I could add some tags until Mauro PULLs to master.
> 
> regards
> Antti
> 
> Antti Palosaari (10):
>   dvb-usb-v2: remove dvb_usb_device NULL check
>   msi2500: remove unneeded local pointer on msi2500_isoc_init()
>   m88ts2022: fix 32bit overflow on filter calc
>   m88ts2022: fix coding style issues
>   m88ts2022: rename device state (priv => s)

As I didn't apply the above patch...

>   m88ts2022: clean up logging
>   m88ts2022: convert to RegMap I2C API
>   m88ts2022: change parameter type of m88ts2022_cmd

Those tree patches also didn't apply.

>   m88ds3103: change .set_voltage() implementation
>   m88ds3103: fix coding style issues
> 
> CrazyCat (1):
>   si2168: DVB-T2 PLP selection implemented
> 
> Olli Salonen (9):
>   si2168: clean logging
>   si2157: clean logging
>   si2168: add ts_mode setting and move to si2168_init
>   em28xx: add ts mode setting for PCTV 292e
>   cxusb: add ts mode setting for TechnoTrend CT2-4400
>   sp2: Add I2C driver for CIMaX SP2 common interface module
>   cxusb: Add support for TechnoTrend TT-connect CT2-4650 CI
>   cxusb: Add read_mac_address for TT CT2-4400 and CT2-4650
>   si2157: Add support for delivery system SYS_ATSC
> 
> nibble.max (1):
>   m88ds3103: implement set voltage and TS clock
> 
>  drivers/media/dvb-core/dvb-usb-ids.h       |   1 +
>  drivers/media/dvb-frontends/Kconfig        |   7 +
>  drivers/media/dvb-frontends/Makefile       |   1 +
>  drivers/media/dvb-frontends/m88ds3103.c    | 101 +++++--
>  drivers/media/dvb-frontends/m88ds3103.h    |  35 ++-
>  drivers/media/dvb-frontends/si2168.c       | 101 ++++---
>  drivers/media/dvb-frontends/si2168.h       |   6 +
>  drivers/media/dvb-frontends/si2168_priv.h  |   1 +
>  drivers/media/dvb-frontends/sp2.c          | 441 +++++++++++++++++++++++++++++
>  drivers/media/dvb-frontends/sp2.h          |  53 ++++
>  drivers/media/dvb-frontends/sp2_priv.h     |  50 ++++
>  drivers/media/tuners/Kconfig               |   1 +
>  drivers/media/tuners/m88ts2022.c           | 355 +++++++++--------------
>  drivers/media/tuners/m88ts2022_priv.h      |   5 +-
>  drivers/media/tuners/si2157.c              |  55 ++--
>  drivers/media/usb/dvb-usb-v2/dvb_usb_urb.c |   2 +-
>  drivers/media/usb/dvb-usb/Kconfig          |   2 +-
>  drivers/media/usb/dvb-usb/cxusb.c          | 128 ++++++++-
>  drivers/media/usb/dvb-usb/cxusb.h          |   4 +
>  drivers/media/usb/em28xx/em28xx-dvb.c      |   5 +-
>  drivers/media/usb/msi2500/msi2500.c        |   9 +-
>  21 files changed, 1022 insertions(+), 341 deletions(-)
>  create mode 100644 drivers/media/dvb-frontends/sp2.c
>  create mode 100644 drivers/media/dvb-frontends/sp2.h
>  create mode 100644 drivers/media/dvb-frontends/sp2_priv.h
> 

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [GIT PULL FINAL 16/21] m88ts2022: rename device state (priv => s)
  2014-09-02 18:51   ` Mauro Carvalho Chehab
@ 2014-09-03  2:26     ` Antti Palosaari
  2014-09-03 10:38       ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 34+ messages in thread
From: Antti Palosaari @ 2014-09-03  2:26 UTC (permalink / raw)
  To: Mauro Carvalho Chehab
  Cc: linux-media, Nibble Max, Olli Salonen, Evgeny Plehov

On 09/02/2014 09:51 PM, Mauro Carvalho Chehab wrote:
> Em Fri, 22 Aug 2014 13:58:08 +0300
> Antti Palosaari <crope@iki.fi> escreveu:
>
>> I like short names for things which are used everywhere overall the
>> driver. Due to that rename device state pointer from 'priv' to 's'.
>
> Please, don't do that. "s" is generally used on several places for string.
> If you want a shorter name, call it "st" for example.

huoh :/
st is not even much better. 'dev' seems to be the 'official' term. I 
will start using it. There is one caveat when 'dev' is used as kernel 
dev_foo() logging requires pointer to device, which is also called dev.

for USB it is: intf->dev
for PCI it is: pci->dev
for I2C it is: client->dev

And you have to store that also your state in order to use logging (and 
usually needed other things too). So for example I2C driver it goes:

struct driver_dev *dev = i2c_get_clientdata(client);
dev_info(&dev->client->dev, "Hello World\n");

Maybe macro needed to shorten that dev_ logging, which takes as a first 
parameter pointer to your own driver state.

I have used that 's' for many of my drivers already and there is likely 
over 50 patches on my queue which needs to be rebased. And rebasing that 
kind of thing for 50 patches is *really* painful, ugh.

Antti

-- 
http://palosaari.fi/

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [GIT PULL FINAL 16/21] m88ts2022: rename device state (priv => s)
  2014-09-03  2:26     ` Antti Palosaari
@ 2014-09-03 10:38       ` Mauro Carvalho Chehab
  2014-09-03 10:50         ` Antti Palosaari
  0 siblings, 1 reply; 34+ messages in thread
From: Mauro Carvalho Chehab @ 2014-09-03 10:38 UTC (permalink / raw)
  To: Antti Palosaari; +Cc: linux-media, Nibble Max, Olli Salonen, Evgeny Plehov

Em Wed, 03 Sep 2014 05:26:53 +0300
Antti Palosaari <crope@iki.fi> escreveu:

> On 09/02/2014 09:51 PM, Mauro Carvalho Chehab wrote:
> > Em Fri, 22 Aug 2014 13:58:08 +0300
> > Antti Palosaari <crope@iki.fi> escreveu:
> >
> >> I like short names for things which are used everywhere overall the
> >> driver. Due to that rename device state pointer from 'priv' to 's'.
> >
> > Please, don't do that. "s" is generally used on several places for string.
> > If you want a shorter name, call it "st" for example.
> 
> huoh :/
> st is not even much better. 'dev' seems to be the 'official' term. I 
> will start using it. There is one caveat when 'dev' is used as kernel 
> dev_foo() logging requires pointer to device, which is also called dev.

Yeah, on v4l2, we generally use 'dev' for such struct on several drivers.
Yet, it looks confusing, especially when some part of the code needs to
work with the private structure and struct device.

So, we end having things like dev->udev->dev inside them, with looks
ugly, IMHO.

> for USB it is: intf->dev
> for PCI it is: pci->dev
> for I2C it is: client->dev
> 
> And you have to store that also your state in order to use logging (and 
> usually needed other things too). So for example I2C driver it goes:
> 
> struct driver_dev *dev = i2c_get_clientdata(client);
> dev_info(&dev->client->dev, "Hello World\n");
> 
> Maybe macro needed to shorten that dev_ logging, which takes as a first 
> parameter pointer to your own driver state.
> 
> I have used that 's' for many of my drivers already and there is likely 
> over 50 patches on my queue which needs to be rebased. And rebasing that 
> kind of thing for 50 patches is *really* painful, ugh.

No, it is as easy as running a one line command, as you can use git
filter-branch. I generally use it like:
	$ git filter-branch -f --msg-filter 'cat && sed s,foo,bar,g' patchwork..topic/r820t
To replace something at the comment (or to add a new comment), but I
used it already to automatically change some vars at replace.

You could also try to use the bfg[1].

Yet, one of problems of using 's' as a name is that seeking for it could
match something different. So, you'll likely need to use \bs\b as the
regex expression and likely review it.

[1] http://rtyley.github.io/bfg-repo-cleaner/

Another way of doing it is to export all patches to a directory
with:
	$ mkdir patches
	$ git format-patch -o patches some_base_branch..

then you can run a command to replace them like (untested):
	$ for i in `quilt series`; do sed -r 's,\bs\b,state,g' <$i >a && mv a $i; done

and then reapply on another branch with:

	$ git am --directory patches 

Btw, this revels another problem with names that are not unique
(like "dev") or too short, like "s": if later need to do some changes
or seek for all occurrences of such var, it could become a real pain.

Regards,
Mauro

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [GIT PULL FINAL 16/21] m88ts2022: rename device state (priv => s)
  2014-09-03 10:38       ` Mauro Carvalho Chehab
@ 2014-09-03 10:50         ` Antti Palosaari
  2014-09-03 11:47           ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 34+ messages in thread
From: Antti Palosaari @ 2014-09-03 10:50 UTC (permalink / raw)
  To: Mauro Carvalho Chehab
  Cc: linux-media, Nibble Max, Olli Salonen, Evgeny Plehov

On 09/03/2014 01:38 PM, Mauro Carvalho Chehab wrote:
> Em Wed, 03 Sep 2014 05:26:53 +0300
> Antti Palosaari <crope@iki.fi> escreveu:
>
>> On 09/02/2014 09:51 PM, Mauro Carvalho Chehab wrote:
>>> Em Fri, 22 Aug 2014 13:58:08 +0300
>>> Antti Palosaari <crope@iki.fi> escreveu:
>>>
>>>> I like short names for things which are used everywhere overall the
>>>> driver. Due to that rename device state pointer from 'priv' to 's'.
>>>
>>> Please, don't do that. "s" is generally used on several places for string.
>>> If you want a shorter name, call it "st" for example.
>>
>> huoh :/
>> st is not even much better. 'dev' seems to be the 'official' term. I
>> will start using it. There is one caveat when 'dev' is used as kernel
>> dev_foo() logging requires pointer to device, which is also called dev.
>
> Yeah, on v4l2, we generally use 'dev' for such struct on several drivers.
> Yet, it looks confusing, especially when some part of the code needs to
> work with the private structure and struct device.
>
> So, we end having things like dev->udev->dev inside them, with looks
> ugly, IMHO.

I renamed it to dev due to 2 reasons (I did quite a lot of work to find 
out which it should be):
1) it was mostly used term in kernel code base for that structure 
holding device instance state
2) it was used in book Linux Device Drivers, Third Edition

regards
Antti

-- 
http://palosaari.fi/

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [GIT PULL FINAL 16/21] m88ts2022: rename device state (priv => s)
  2014-09-03 10:50         ` Antti Palosaari
@ 2014-09-03 11:47           ` Mauro Carvalho Chehab
  0 siblings, 0 replies; 34+ messages in thread
From: Mauro Carvalho Chehab @ 2014-09-03 11:47 UTC (permalink / raw)
  To: Antti Palosaari; +Cc: linux-media, Nibble Max, Olli Salonen, Evgeny Plehov

Em Wed, 03 Sep 2014 13:50:05 +0300
Antti Palosaari <crope@iki.fi> escreveu:

> On 09/03/2014 01:38 PM, Mauro Carvalho Chehab wrote:
> > Em Wed, 03 Sep 2014 05:26:53 +0300
> > Antti Palosaari <crope@iki.fi> escreveu:
> >
> >> On 09/02/2014 09:51 PM, Mauro Carvalho Chehab wrote:
> >>> Em Fri, 22 Aug 2014 13:58:08 +0300
> >>> Antti Palosaari <crope@iki.fi> escreveu:
> >>>
> >>>> I like short names for things which are used everywhere overall the
> >>>> driver. Due to that rename device state pointer from 'priv' to 's'.
> >>>
> >>> Please, don't do that. "s" is generally used on several places for string.
> >>> If you want a shorter name, call it "st" for example.
> >>
> >> huoh :/
> >> st is not even much better. 'dev' seems to be the 'official' term. I
> >> will start using it. There is one caveat when 'dev' is used as kernel
> >> dev_foo() logging requires pointer to device, which is also called dev.
> >
> > Yeah, on v4l2, we generally use 'dev' for such struct on several drivers.
> > Yet, it looks confusing, especially when some part of the code needs to
> > work with the private structure and struct device.
> >
> > So, we end having things like dev->udev->dev inside them, with looks
> > ugly, IMHO.
> 
> I renamed it to dev due to 2 reasons (I did quite a lot of work to find 
> out which it should be):
> 1) it was mostly used term in kernel code base for that structure 
> holding device instance state
> 2) it was used in book Linux Device Drivers, Third Edition

Works for me.

Regards,
Mauro

^ permalink raw reply	[flat|nested] 34+ messages in thread

end of thread, other threads:[~2014-09-03 11:47 UTC | newest]

Thread overview: 34+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-22 10:57 [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
2014-08-22 10:57 ` [GIT PULL FINAL 01/21] si2168: clean logging Antti Palosaari
2014-08-22 11:47   ` Mauro Carvalho Chehab
2014-08-22 12:13     ` Antti Palosaari
2014-08-22 12:28       ` Mauro Carvalho Chehab
2014-08-22 12:50         ` Antti Palosaari
2014-08-22 13:41           ` Mauro Carvalho Chehab
2014-08-22 10:57 ` [GIT PULL FINAL 02/21] si2157: " Antti Palosaari
2014-08-22 10:57 ` [GIT PULL FINAL 03/21] m88ds3103: implement set voltage and TS clock Antti Palosaari
2014-08-22 10:57 ` [GIT PULL FINAL 04/21] si2168: add ts_mode setting and move to si2168_init Antti Palosaari
2014-08-22 10:57 ` [GIT PULL FINAL 05/21] em28xx: add ts mode setting for PCTV 292e Antti Palosaari
2014-08-22 10:57 ` [GIT PULL FINAL 06/21] cxusb: add ts mode setting for TechnoTrend CT2-4400 Antti Palosaari
2014-08-22 10:57 ` [GIT PULL FINAL 07/21] sp2: Add I2C driver for CIMaX SP2 common interface module Antti Palosaari
2014-08-22 10:58 ` [GIT PULL FINAL 08/21] cxusb: Add support for TechnoTrend TT-connect CT2-4650 CI Antti Palosaari
2014-08-22 10:58 ` [GIT PULL FINAL 09/21] cxusb: Add read_mac_address for TT CT2-4400 and CT2-4650 Antti Palosaari
2014-08-22 10:58 ` [GIT PULL FINAL 10/21] si2168: DVB-T2 PLP selection implemented Antti Palosaari
2014-08-22 10:58 ` [GIT PULL FINAL 11/21] si2157: Add support for delivery system SYS_ATSC Antti Palosaari
2014-08-22 10:58 ` [GIT PULL FINAL 12/21] dvb-usb-v2: remove dvb_usb_device NULL check Antti Palosaari
2014-08-22 10:58 ` [GIT PULL FINAL 13/21] msi2500: remove unneeded local pointer on msi2500_isoc_init() Antti Palosaari
2014-08-22 10:58 ` [GIT PULL FINAL 14/21] m88ts2022: fix 32bit overflow on filter calc Antti Palosaari
2014-08-22 10:58 ` [GIT PULL FINAL 15/21] m88ts2022: fix coding style issues Antti Palosaari
2014-08-22 10:58 ` [GIT PULL FINAL 16/21] m88ts2022: rename device state (priv => s) Antti Palosaari
2014-09-02 18:51   ` Mauro Carvalho Chehab
2014-09-03  2:26     ` Antti Palosaari
2014-09-03 10:38       ` Mauro Carvalho Chehab
2014-09-03 10:50         ` Antti Palosaari
2014-09-03 11:47           ` Mauro Carvalho Chehab
2014-08-22 10:58 ` [GIT PULL FINAL 17/21] m88ts2022: clean up logging Antti Palosaari
2014-08-22 10:58 ` [GIT PULL FINAL 18/21] m88ts2022: convert to RegMap I2C API Antti Palosaari
2014-08-22 10:58 ` [GIT PULL FINAL 19/21] m88ts2022: change parameter type of m88ts2022_cmd Antti Palosaari
2014-08-22 10:58 ` [GIT PULL FINAL 20/21] m88ds3103: change .set_voltage() implementation Antti Palosaari
2014-08-22 10:58 ` [GIT PULL FINAL 21/21] m88ds3103: fix coding style issues Antti Palosaari
2014-08-22 11:08 ` [GIT PULL FINAL 00/21] misc DTV stuff for 3.18 Antti Palosaari
2014-09-02 18:59 ` Mauro Carvalho Chehab

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.