diff mbox

[v2,05/25] media: lirc_zilog: fix variable types and other ugliness

Message ID 8248d13145c18006b0f1bf0629be40e218622fda.1507192752.git.sean@mess.org (mailing list archive)
State New, archived
Headers show

Commit Message

Sean Young Oct. 5, 2017, 8:45 a.m. UTC
Cleans up code and makes checkpatch happy.

Signed-off-by: Sean Young <sean@mess.org>
---
 drivers/staging/media/lirc/lirc_zilog.c | 162 +++++++++++---------------------
 1 file changed, 55 insertions(+), 107 deletions(-)
diff mbox

Patch

diff --git a/drivers/staging/media/lirc/lirc_zilog.c b/drivers/staging/media/lirc/lirc_zilog.c
index 757b3fc247ac..902fade98d57 100644
--- a/drivers/staging/media/lirc/lirc_zilog.c
+++ b/drivers/staging/media/lirc/lirc_zilog.c
@@ -32,32 +32,15 @@ 
  *  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.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
  */
 
+#include <asm/unaligned.h>
 #include <linux/module.h>
-#include <linux/kmod.h>
-#include <linux/kernel.h>
-#include <linux/sched/signal.h>
-#include <linux/fs.h>
-#include <linux/poll.h>
-#include <linux/string.h>
-#include <linux/timer.h>
 #include <linux/delay.h>
-#include <linux/completion.h>
-#include <linux/errno.h>
-#include <linux/slab.h>
 #include <linux/i2c.h>
 #include <linux/firmware.h>
 #include <linux/vmalloc.h>
 
-#include <linux/mutex.h>
-#include <linux/kthread.h>
-
 #include <media/lirc_dev.h>
 #include <media/lirc.h>
 
@@ -70,7 +53,7 @@  struct IR_tx {
 	struct i2c_client *c;
 
 	/* TX additional actions needed */
-	int need_boot;
+	bool need_boot;
 	bool post_tx_ready_poll;
 	struct lirc_dev *l;
 };
@@ -81,45 +64,39 @@  struct IR_tx {
 /* Hauppauge IR transmitter data */
 struct tx_data_struct {
 	/* Boot block */
-	unsigned char *boot_data;
+	u8 *boot_data;
 
 	/* Start of binary data block */
-	unsigned char *datap;
+	u8 *datap;
 
 	/* End of binary data block */
-	unsigned char *endp;
+	u8 *endp;
 
 	/* Number of installed codesets */
-	unsigned int num_code_sets;
+	u32 num_code_sets;
 
 	/* Pointers to codesets */
-	unsigned char **code_sets;
+	u8 **code_sets;
 
 	/* Global fixed data template */
 	int fixed[TX_BLOCK_SIZE];
 };
 
 static struct tx_data_struct *tx_data;
-static struct mutex tx_data_lock;
-
-/* module parameters */
-static bool debug;	/* debug output */
+static DEFINE_MUTEX(tx_data_lock);
 
 /* safe read of a uint32 (always network byte order) */
-static int read_uint32(unsigned char **data,
-		       unsigned char *endp, unsigned int *val)
+static int read_u32(u8 **data, u8 *endp, u32 *val)
 {
 	if (*data + 4 > endp)
 		return 0;
-	*val = ((*data)[0] << 24) | ((*data)[1] << 16) |
-	       ((*data)[2] << 8) | (*data)[3];
+	*val = get_unaligned_be32(*data);
 	*data += 4;
 	return 1;
 }
 
 /* safe read of a uint8 */
-static int read_uint8(unsigned char **data,
-		      unsigned char *endp, unsigned char *val)
+static int read_u8(u8 **data, u8 *endp, u8 *val)
 {
 	if (*data + 1 > endp)
 		return 0;
@@ -128,8 +105,8 @@  static int read_uint8(unsigned char **data,
 }
 
 /* safe skipping of N bytes */
-static int skip(unsigned char **data,
-		unsigned char *endp, unsigned int distance)
+static int skip(u8 **data,
+		u8 *endp, unsigned int distance)
 {
 	if (*data + distance > endp)
 		return 0;
@@ -138,11 +115,11 @@  static int skip(unsigned char **data,
 }
 
 /* decompress key data into the given buffer */
-static int get_key_data(unsigned char *buf,
+static int get_key_data(u8 *buf,
 			unsigned int codeset, unsigned int key)
 {
-	unsigned char *data, *endp, *diffs, *key_block;
-	unsigned char keys, ndiffs, id;
+	u8 *data, *endp, *diffs, *key_block;
+	u8 keys, ndiffs, id;
 	unsigned int base, lim, pos, i;
 
 	/* Binary search for the codeset */
@@ -150,7 +127,7 @@  static int get_key_data(unsigned char *buf,
 		pos = base + (lim >> 1);
 		data = tx_data->code_sets[pos];
 
-		if (!read_uint32(&data, tx_data->endp, &i))
+		if (!read_u32(&data, tx_data->endp, &i))
 			goto corrupt;
 
 		if (i == codeset) {
@@ -169,8 +146,8 @@  static int get_key_data(unsigned char *buf,
 		tx_data->code_sets[pos + 1] : tx_data->endp;
 
 	/* Read the block header */
-	if (!read_uint8(&data, endp, &keys) ||
-	    !read_uint8(&data, endp, &ndiffs) ||
+	if (!read_u8(&data, endp, &keys) ||
+	    !read_u8(&data, endp, &ndiffs) ||
 	    ndiffs > TX_BLOCK_SIZE || keys == 0)
 		goto corrupt;
 
@@ -180,16 +157,16 @@  static int get_key_data(unsigned char *buf,
 		goto corrupt;
 
 	/* Read the id of the first key */
-	if (!read_uint8(&data, endp, &id))
+	if (!read_u8(&data, endp, &id))
 		goto corrupt;
 
 	/* Unpack the first key's data */
 	for (i = 0; i < TX_BLOCK_SIZE; ++i) {
 		if (tx_data->fixed[i] == -1) {
-			if (!read_uint8(&data, endp, &buf[i]))
+			if (!read_u8(&data, endp, &buf[i]))
 				goto corrupt;
 		} else {
-			buf[i] = (unsigned char)tx_data->fixed[i];
+			buf[i] = tx_data->fixed[i];
 		}
 	}
 
@@ -207,7 +184,7 @@  static int get_key_data(unsigned char *buf,
 	/* Binary search for the key */
 	for (base = 0, lim = keys - 1; lim; lim >>= 1) {
 		/* Seek to block */
-		unsigned char *key_data;
+		u8 *key_data;
 
 		pos = base + (lim >> 1);
 		key_data = key_block + (ndiffs + 1) * pos;
@@ -218,9 +195,9 @@  static int get_key_data(unsigned char *buf,
 
 			/* found, so unpack the diffs */
 			for (i = 0; i < ndiffs; ++i) {
-				unsigned char val;
+				u8 val;
 
-				if (!read_uint8(&key_data, endp, &val) ||
+				if (!read_u8(&key_data, endp, &val) ||
 				    diffs[i] >= TX_BLOCK_SIZE)
 					goto corrupt;
 				buf[diffs[i]] = val;
@@ -241,17 +218,17 @@  static int get_key_data(unsigned char *buf,
 }
 
 /* send a block of data to the IR TX device */
-static int send_data_block(struct IR_tx *tx, unsigned char *data_block)
+static int send_data_block(struct IR_tx *tx, u8 *data_block)
 {
 	int i, j, ret;
-	unsigned char buf[5];
+	u8 buf[5];
 
 	for (i = 0; i < TX_BLOCK_SIZE;) {
 		int tosend = TX_BLOCK_SIZE - i;
 
 		if (tosend > 4)
 			tosend = 4;
-		buf[0] = (unsigned char)(i + 1);
+		buf[0] = i + 1;
 		for (j = 0; j < tosend; ++j)
 			buf[1 + j] = data_block[i + j];
 		dev_dbg(&tx->l->dev, "%*ph", 5, buf);
@@ -270,7 +247,7 @@  static int send_data_block(struct IR_tx *tx, unsigned char *data_block)
 static int send_boot_data(struct IR_tx *tx)
 {
 	int ret, i;
-	unsigned char buf[4];
+	u8 buf[4];
 
 	/* send the boot block */
 	ret = send_data_block(tx, tx_data->boot_data);
@@ -295,7 +272,7 @@  static int send_boot_data(struct IR_tx *tx)
 		ret = i2c_master_send(tx->c, buf, 1);
 		if (ret == 1)
 			break;
-		udelay(100);
+		usleep_range(100, 110);
 	}
 
 	if (ret != 1) {
@@ -348,7 +325,7 @@  static int fw_load(struct IR_tx *tx)
 {
 	int ret;
 	unsigned int i;
-	unsigned char *data, version, num_global_fixed;
+	u8 *data, version, num_global_fixed;
 	const struct firmware *fw_entry;
 
 	/* Already loaded? */
@@ -392,7 +369,7 @@  static int fw_load(struct IR_tx *tx)
 
 	/* Check version */
 	data = tx_data->datap;
-	if (!read_uint8(&data, tx_data->endp, &version))
+	if (!read_u8(&data, tx_data->endp, &version))
 		goto corrupt;
 	if (version != 1) {
 		dev_err(&tx->l->dev,
@@ -408,8 +385,8 @@  static int fw_load(struct IR_tx *tx)
 	if (!skip(&data, tx_data->endp, TX_BLOCK_SIZE))
 		goto corrupt;
 
-	if (!read_uint32(&data, tx_data->endp,
-			 &tx_data->num_code_sets))
+	if (!read_u32(&data, tx_data->endp,
+		      &tx_data->num_code_sets))
 		goto corrupt;
 
 	dev_dbg(&tx->l->dev, "%u IR blaster codesets loaded\n",
@@ -427,14 +404,14 @@  static int fw_load(struct IR_tx *tx)
 		tx_data->fixed[i] = -1;
 
 	/* Read global fixed data template */
-	if (!read_uint8(&data, tx_data->endp, &num_global_fixed) ||
+	if (!read_u8(&data, tx_data->endp, &num_global_fixed) ||
 	    num_global_fixed > TX_BLOCK_SIZE)
 		goto corrupt;
 	for (i = 0; i < num_global_fixed; ++i) {
-		unsigned char pos, val;
+		u8 pos, val;
 
-		if (!read_uint8(&data, tx_data->endp, &pos) ||
-		    !read_uint8(&data, tx_data->endp, &val) ||
+		if (!read_u8(&data, tx_data->endp, &pos) ||
+		    !read_u8(&data, tx_data->endp, &val) ||
 		    pos >= TX_BLOCK_SIZE)
 			goto corrupt;
 		tx_data->fixed[pos] = (int)val;
@@ -442,17 +419,17 @@  static int fw_load(struct IR_tx *tx)
 
 	/* Filch out the position of each code set */
 	for (i = 0; i < tx_data->num_code_sets; ++i) {
-		unsigned int id;
-		unsigned char keys;
-		unsigned char ndiffs;
+		u32 id;
+		u8 keys;
+		u8 ndiffs;
 
 		/* Save the codeset position */
 		tx_data->code_sets[i] = data;
 
 		/* Read header */
-		if (!read_uint32(&data, tx_data->endp, &id) ||
-		    !read_uint8(&data, tx_data->endp, &keys) ||
-		    !read_uint8(&data, tx_data->endp, &ndiffs) ||
+		if (!read_u32(&data, tx_data->endp, &id) ||
+		    !read_u8(&data, tx_data->endp, &keys) ||
+		    !read_u8(&data, tx_data->endp, &ndiffs) ||
 		    ndiffs > TX_BLOCK_SIZE || keys == 0)
 			goto corrupt;
 
@@ -489,8 +466,8 @@  static int fw_load(struct IR_tx *tx)
 /* send a keypress to the IR TX device */
 static int send_code(struct IR_tx *tx, unsigned int code, unsigned int key)
 {
-	unsigned char data_block[TX_BLOCK_SIZE];
-	unsigned char buf[2];
+	u8 data_block[TX_BLOCK_SIZE];
+	u8 buf[2];
 	int i, ret;
 
 	/* Get data for the codeset/key */
@@ -524,7 +501,7 @@  static int send_code(struct IR_tx *tx, unsigned int code, unsigned int key)
 		ret = i2c_master_send(tx->c, buf, 1);
 		if (ret == 1)
 			break;
-		udelay(100);
+		usleep_range(100, 110);
 	}
 
 	if (ret != 1) {
@@ -638,7 +615,7 @@  static ssize_t write(struct file *filep, const char __user *buf, size_t n,
 		}
 
 		/* Send boot data first if required */
-		if (tx->need_boot == 1) {
+		if (tx->need_boot) {
 			/* Make sure we have the 'firmware' loaded, first */
 			ret = fw_load(tx);
 			if (ret != 0) {
@@ -650,13 +627,13 @@  static ssize_t write(struct file *filep, const char __user *buf, size_t n,
 			/* Prep the chip for transmitting codes */
 			ret = send_boot_data(tx);
 			if (ret == 0)
-				tx->need_boot = 0;
+				tx->need_boot = false;
 		}
 
 		/* Send the code */
 		if (ret == 0) {
 			ret = send_code(tx, (unsigned int)command >> 16,
-					    (unsigned int)command & 0xFFFF);
+					(unsigned int)command & 0xFFFF);
 			if (ret == -EPROTO) {
 				mutex_unlock(&tx->client_lock);
 				return ret;
@@ -680,7 +657,7 @@  static ssize_t write(struct file *filep, const char __user *buf, size_t n,
 			}
 			set_current_state(TASK_UNINTERRUPTIBLE);
 			schedule_timeout((100 * HZ + 999) / 1000);
-			tx->need_boot = 1;
+			tx->need_boot = true;
 			++failures;
 		} else {
 			i += sizeof(int);
@@ -693,7 +670,6 @@  static ssize_t write(struct file *filep, const char __user *buf, size_t n,
 	return n;
 }
 
-
 static long ioctl(struct file *filep, unsigned int cmd, unsigned long arg)
 {
 	struct IR_tx *tx = lirc_get_pdata(filep);
@@ -773,7 +749,7 @@  static const struct i2c_device_id ir_transceiver_id[] = {
 };
 MODULE_DEVICE_TABLE(i2c, ir_transceiver_id);
 
-static struct i2c_driver driver = {
+static struct i2c_driver zilog_driver = {
 	.driver = {
 		.name	= "Zilog/Hauppauge i2c IR",
 	},
@@ -806,17 +782,13 @@  static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
 	 * The IR receiver    is at i2c address 0x71.
 	 * The IR transmitter is at i2c address 0x70.
 	 */
-
-	pr_info("probing IR Tx on %s (i2c-%d)\n", adap->name, adap->nr);
-
-	/* Set up a struct IR_tx instance */
 	tx = devm_kzalloc(&client->dev, sizeof(*tx), GFP_KERNEL);
 	if (!tx)
 		return -ENOMEM;
 
 	mutex_init(&tx->client_lock);
 	tx->c = client;
-	tx->need_boot = 1;
+	tx->need_boot = true;
 	tx->post_tx_ready_poll = !(id->driver_data & ID_FLAG_HDPVR);
 
 	/* set lirc_dev stuff */
@@ -855,40 +827,21 @@  static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id)
 	/* A tx ref goes to the i2c_client */
 	i2c_set_clientdata(client, tx);
 
-	dev_info(&tx->l->dev,
-		 "IR unit on %s (i2c-%d) registered as lirc%d and ready\n",
-		 adap->name, adap->nr, tx->l->minor);
-
-	dev_info(&tx->l->dev,
-		 "probe of IR Tx on %s (i2c-%d) done\n", adap->name, adap->nr);
 	return 0;
 }
 
 static int __init zilog_init(void)
 {
-	int ret;
-
-	pr_notice("Zilog/Hauppauge IR driver initializing\n");
-
-	mutex_init(&tx_data_lock);
-
 	request_module("firmware_class");
 
-	ret = i2c_add_driver(&driver);
-	if (ret)
-		pr_err("initialization failed\n");
-	else
-		pr_notice("initialization complete\n");
-
-	return ret;
+	return i2c_add_driver(&zilog_driver);
 }
 
 static void __exit zilog_exit(void)
 {
-	i2c_del_driver(&driver);
+	i2c_del_driver(&zilog_driver);
 	/* if loaded */
 	fw_unload();
-	pr_notice("Zilog/Hauppauge IR driver unloaded\n");
 }
 
 module_init(zilog_init);
@@ -897,8 +850,3 @@  module_exit(zilog_exit);
 MODULE_DESCRIPTION("Zilog/Hauppauge infrared transmitter driver (i2c stack)");
 MODULE_AUTHOR("Gerd Knorr, Michal Kochanowicz, Christoph Bartelmus, Ulrich Mueller, Stefan Jahn, Jerome Brock, Mark Weaver, Andy Walls");
 MODULE_LICENSE("GPL");
-/* for compat with old name, which isn't all that accurate anymore */
-MODULE_ALIAS("lirc_pvr150");
-
-module_param(debug, bool, 0644);
-MODULE_PARM_DESC(debug, "Enable debugging messages");