public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] sn9c20x: Reduce data usage, make functions static
@ 2009-08-21  2:08 Joe Perches
  2009-08-31  2:24 ` Mauro Carvalho Chehab
  2009-09-04  9:24 ` Jean-Francois Moine
  0 siblings, 2 replies; 5+ messages in thread
From: Joe Perches @ 2009-08-21  2:08 UTC (permalink / raw)
  To: Brian Johnson
  Cc: Mauro Carvalho Chehab, Jean-Francois Moine, linux-media, LKML

Compiled, not tested, no hardware

Reduces size of object

Use s16 instead of int where possible.
Use struct instead of arrays

Before:
$ size drivers/media/video/gspca/sn9c20x.o
   text	   data	    bss	    dec	    hex	filename
  29346	   1124	   4128	  34598	   8726	drivers/media/video/gspca/sn9c20x.o

After:
$ size drivers/media/video/gspca/sn9c20x.o
   text	   data	    bss	    dec	    hex	filename
  25042	   1124	   4112	  30278	   7646	drivers/media/video/gspca/sn9c20x.o

Signed-off-by: Joe Perches <joe@perches.com>
---
 drivers/media/video/gspca/sn9c20x.c |  101 +++++++++++++++++++---------------
 1 files changed, 56 insertions(+), 45 deletions(-)

diff --git a/drivers/media/video/gspca/sn9c20x.c b/drivers/media/video/gspca/sn9c20x.c
index fcfbbd3..8ddf738 100644
--- a/drivers/media/video/gspca/sn9c20x.c
+++ b/drivers/media/video/gspca/sn9c20x.c
@@ -403,7 +403,7 @@ static const struct v4l2_pix_format sxga_mode[] = {
 		.priv = 3 | MODE_RAW | MODE_SXGA},
 };
 
-static const int hsv_red_x[] = {
+static const s16 hsv_red_x[] = {
 	41,  44,  46,  48,  50,  52,  54,  56,
 	58,  60,  62,  64,  66,  68,  70,  72,
 	74,  76,  78,  80,  81,  83,  85,  87,
@@ -451,7 +451,7 @@ static const int hsv_red_x[] = {
 	24,  26,  28,  30,  33,  35,  37,  39, 41
 };
 
-static const int hsv_red_y[] = {
+static const s16 hsv_red_y[] = {
 	82,  80,  78,  76,  74,  73,  71,  69,
 	67,  65,  63,  61,  58,  56,  54,  52,
 	50,  48,  46,  44,  41,  39,  37,  35,
@@ -499,7 +499,7 @@ static const int hsv_red_y[] = {
 	96, 94, 92, 91, 89, 87, 85, 84, 82
 };
 
-static const int hsv_green_x[] = {
+static const s16 hsv_green_x[] = {
 	-124, -124, -125, -125, -125, -125, -125, -125,
 	-125, -126, -126, -125, -125, -125, -125, -125,
 	-125, -124, -124, -124, -123, -123, -122, -122,
@@ -547,7 +547,7 @@ static const int hsv_green_x[] = {
 	-120, -120, -121, -122, -122, -123, -123, -124, -124
 };
 
-static const int hsv_green_y[] = {
+static const s16 hsv_green_y[] = {
 	-100, -99, -98, -97, -95, -94, -93, -91,
 	-90, -89, -87, -86, -84, -83, -81, -80,
 	-78, -76, -75, -73, -71, -70, -68, -66,
@@ -595,7 +595,7 @@ static const int hsv_green_y[] = {
 	-109, -108, -107, -106, -105, -104, -103, -102, -100
 };
 
-static const int hsv_blue_x[] = {
+static const s16 hsv_blue_x[] = {
 	112, 113, 114, 114, 115, 116, 117, 117,
 	118, 118, 119, 119, 120, 120, 120, 121,
 	121, 121, 122, 122, 122, 122, 122, 122,
@@ -643,7 +643,7 @@ static const int hsv_blue_x[] = {
 	104, 105, 106, 107, 108, 109, 110, 111, 112
 };
 
-static const int hsv_blue_y[] = {
+static const s16 hsv_blue_y[] = {
 	-11, -13, -15, -17, -19, -21, -23, -25,
 	-27, -29, -31, -33, -35, -37, -39, -41,
 	-43, -45, -46, -48, -50, -52, -54, -55,
@@ -792,7 +792,17 @@ static u8 hv7131r_gain[] = {
 	0x78 /* 8x */
 };
 
-static u8 soi968_init[][2] = {
+struct i2c_reg_u8 {
+	u8 reg;
+	u8 val;
+};
+
+struct i2c_reg_u16 {
+	u8 reg;
+	u16 val;
+};
+
+static struct i2c_reg_u8 soi968_init[] = {
 	{0x12, 0x80}, {0x0c, 0x00}, {0x0f, 0x1f},
 	{0x11, 0x80}, {0x38, 0x52}, {0x1e, 0x00},
 	{0x33, 0x08}, {0x35, 0x8c}, {0x36, 0x0c},
@@ -806,7 +816,7 @@ static u8 soi968_init[][2] = {
 	{0x00, 0x00}, {0x01, 0x80}, {0x02, 0x80},
 };
 
-static u8 ov7660_init[][2] = {
+static struct i2c_reg_u8 ov7660_init[] = {
 	{0x0e, 0x80}, {0x0d, 0x08}, {0x0f, 0xc3},
 	{0x04, 0xc3}, {0x10, 0x40}, {0x11, 0x40},
 	{0x12, 0x05}, {0x13, 0xba}, {0x14, 0x2a},
@@ -815,7 +825,7 @@ static u8 ov7660_init[][2] = {
 	{0x2e, 0x0b}, {0x01, 0x78}, {0x02, 0x50},
 };
 
-static u8 ov7670_init[][2] = {
+static struct i2c_reg_u8 ov7670_init[] = {
 	{0x12, 0x80}, {0x11, 0x80}, {0x3a, 0x04}, {0x12, 0x01},
 	{0x32, 0xb6}, {0x03, 0x0a}, {0x0c, 0x00}, {0x3e, 0x00},
 	{0x70, 0x3a}, {0x71, 0x35}, {0x72, 0x11}, {0x73, 0xf0},
@@ -872,7 +882,7 @@ static u8 ov7670_init[][2] = {
 	{0x93, 0x00},
 };
 
-static u8 ov9650_init[][2] = {
+static struct i2c_reg_u8 ov9650_init[] = {
 	{0x12, 0x80}, {0x00, 0x00}, {0x01, 0x78},
 	{0x02, 0x78}, {0x03, 0x36}, {0x04, 0x03},
 	{0x05, 0x00}, {0x06, 0x00}, {0x08, 0x00},
@@ -902,7 +912,7 @@ static u8 ov9650_init[][2] = {
 	{0xaa, 0x92}, {0xab, 0x0a},
 };
 
-static u8 ov9655_init[][2] = {
+static struct i2c_reg_u8 ov9655_init[] = {
 	{0x12, 0x80}, {0x12, 0x01}, {0x0d, 0x00}, {0x0e, 0x61},
 	{0x11, 0x80}, {0x13, 0xba}, {0x14, 0x2e}, {0x16, 0x24},
 	{0x1e, 0x04}, {0x1e, 0x04}, {0x1e, 0x04}, {0x27, 0x08},
@@ -939,7 +949,7 @@ static u8 ov9655_init[][2] = {
 	{0x00, 0x03}, {0x00, 0x0a}, {0x00, 0x10}, {0x00, 0x13},
 };
 
-static u16 mt9v112_init[][2] = {
+static struct i2c_reg_u16 mt9v112_init[] = {
 	{0xf0, 0x0000}, {0x0d, 0x0021}, {0x0d, 0x0020},
 	{0x34, 0xc019}, {0x0a, 0x0011}, {0x0b, 0x000b},
 	{0x20, 0x0703}, {0x35, 0x2022}, {0xf0, 0x0001},
@@ -958,7 +968,7 @@ static u16 mt9v112_init[][2] = {
 	{0x2c, 0x00ae}, {0x2d, 0x00ae}, {0x2e, 0x00ae},
 };
 
-static u16 mt9v111_init[][2] = {
+static struct i2c_reg_u16 mt9v111_init[] = {
 	{0x01, 0x0004}, {0x0d, 0x0001}, {0x0d, 0x0000},
 	{0x01, 0x0001}, {0x02, 0x0016}, {0x03, 0x01e1},
 	{0x04, 0x0281}, {0x05, 0x0004}, {0x07, 0x3002},
@@ -985,7 +995,7 @@ static u16 mt9v111_init[][2] = {
 	{0x0e, 0x0008},	{0x06, 0x002d},	{0x05, 0x0004},
 };
 
-static u16 mt9v011_init[][2] = {
+static struct i2c_reg_u16 mt9v011_init[] = {
 	{0x07, 0x0002},	{0x0d, 0x0001},	{0x0d, 0x0000},
 	{0x01, 0x0008},	{0x02, 0x0016},	{0x03, 0x01e1},
 	{0x04, 0x0281},	{0x05, 0x0083},	{0x06, 0x0006},
@@ -1012,7 +1022,7 @@ static u16 mt9v011_init[][2] = {
 	{0x06, 0x0029},	{0x05, 0x0009},
 };
 
-static u16 mt9m001_init[][2] = {
+static struct i2c_reg_u16 mt9m001_init[] = {
 	{0x0d, 0x0001}, {0x0d, 0x0000}, {0x01, 0x000e},
 	{0x02, 0x0014}, {0x03, 0x03c1}, {0x04, 0x0501},
 	{0x05, 0x0083}, {0x06, 0x0006}, {0x0d, 0x0002},
@@ -1025,14 +1035,14 @@ static u16 mt9m001_init[][2] = {
 	{0x2e, 0x0029}, {0x07, 0x0002},
 };
 
-static u16 mt9m111_init[][2] = {
+static struct i2c_reg_u16 mt9m111_init[] = {
 	{0xf0, 0x0000}, {0x0d, 0x0008}, {0x0d, 0x0009},
 	{0x0d, 0x0008}, {0xf0, 0x0001}, {0x3a, 0x4300},
 	{0x9b, 0x4300}, {0xa1, 0x0280}, {0xa4, 0x0200},
 	{0x06, 0x308e}, {0xf0, 0x0000},
 };
 
-static u8 hv7131r_init[][2] = {
+static struct i2c_reg_u8 hv7131r_init[] = {
 	{0x02, 0x08}, {0x02, 0x00}, {0x01, 0x08},
 	{0x02, 0x00}, {0x20, 0x00}, {0x21, 0xd0},
 	{0x22, 0x00}, {0x23, 0x09}, {0x01, 0x08},
@@ -1043,7 +1053,7 @@ static u8 hv7131r_init[][2] = {
 	{0x23, 0x09}, {0x01, 0x08},
 };
 
-int reg_r(struct gspca_dev *gspca_dev, u16 reg, u16 length)
+static int reg_r(struct gspca_dev *gspca_dev, u16 reg, u16 length)
 {
 	struct usb_device *dev = gspca_dev->dev;
 	int result;
@@ -1062,7 +1072,8 @@ int reg_r(struct gspca_dev *gspca_dev, u16 reg, u16 length)
 	return 0;
 }
 
-int reg_w(struct gspca_dev *gspca_dev, u16 reg, const u8 *buffer, int length)
+static int reg_w(struct gspca_dev *gspca_dev, u16 reg,
+		 const u8 *buffer, int length)
 {
 	struct usb_device *dev = gspca_dev->dev;
 	int result;
@@ -1082,13 +1093,13 @@ int reg_w(struct gspca_dev *gspca_dev, u16 reg, const u8 *buffer, int length)
 	return 0;
 }
 
-int reg_w1(struct gspca_dev *gspca_dev, u16 reg, const u8 value)
+static int reg_w1(struct gspca_dev *gspca_dev, u16 reg, const u8 value)
 {
 	u8 data[1] = {value};
 	return reg_w(gspca_dev, reg, data, 1);
 }
 
-int i2c_w(struct gspca_dev *gspca_dev, const u8 *buffer)
+static int i2c_w(struct gspca_dev *gspca_dev, const u8 *buffer)
 {
 	int i;
 	reg_w(gspca_dev, 0x10c0, buffer, 8);
@@ -1104,7 +1115,7 @@ int i2c_w(struct gspca_dev *gspca_dev, const u8 *buffer)
 	return -1;
 }
 
-int i2c_w1(struct gspca_dev *gspca_dev, u8 reg, u8 val)
+static int i2c_w1(struct gspca_dev *gspca_dev, u8 reg, u8 val)
 {
 	struct sd *sd = (struct sd *) gspca_dev;
 
@@ -1126,7 +1137,7 @@ int i2c_w1(struct gspca_dev *gspca_dev, u8 reg, u8 val)
 	return i2c_w(gspca_dev, row);
 }
 
-int i2c_w2(struct gspca_dev *gspca_dev, u8 reg, u16 val)
+static int i2c_w2(struct gspca_dev *gspca_dev, u8 reg, u16 val)
 {
 	struct sd *sd = (struct sd *) gspca_dev;
 	u8 row[8];
@@ -1201,8 +1212,8 @@ static int ov9650_init_sensor(struct gspca_dev *gspca_dev)
 	struct sd *sd = (struct sd *) gspca_dev;
 
 	for (i = 0; i < ARRAY_SIZE(ov9650_init); i++) {
-		if (i2c_w1(gspca_dev, ov9650_init[i][0],
-				ov9650_init[i][1]) < 0) {
+		if (i2c_w1(gspca_dev, ov9650_init[i].reg,
+				ov9650_init[i].val) < 0) {
 			err("OV9650 sensor initialization failed");
 			return -ENODEV;
 		}
@@ -1218,8 +1229,8 @@ static int ov9655_init_sensor(struct gspca_dev *gspca_dev)
 	struct sd *sd = (struct sd *) gspca_dev;
 
 	for (i = 0; i < ARRAY_SIZE(ov9655_init); i++) {
-		if (i2c_w1(gspca_dev, ov9655_init[i][0],
-				ov9655_init[i][1]) < 0) {
+		if (i2c_w1(gspca_dev, ov9655_init[i].reg,
+				ov9655_init[i].val) < 0) {
 			err("OV9655 sensor initialization failed");
 			return -ENODEV;
 		}
@@ -1237,8 +1248,8 @@ static int soi968_init_sensor(struct gspca_dev *gspca_dev)
 	struct sd *sd = (struct sd *) gspca_dev;
 
 	for (i = 0; i < ARRAY_SIZE(soi968_init); i++) {
-		if (i2c_w1(gspca_dev, soi968_init[i][0],
-				soi968_init[i][1]) < 0) {
+		if (i2c_w1(gspca_dev, soi968_init[i].reg,
+				soi968_init[i].val) < 0) {
 			err("SOI968 sensor initialization failed");
 			return -ENODEV;
 		}
@@ -1256,8 +1267,8 @@ static int ov7660_init_sensor(struct gspca_dev *gspca_dev)
 	struct sd *sd = (struct sd *) gspca_dev;
 
 	for (i = 0; i < ARRAY_SIZE(ov7660_init); i++) {
-		if (i2c_w1(gspca_dev, ov7660_init[i][0],
-				ov7660_init[i][1]) < 0) {
+		if (i2c_w1(gspca_dev, ov7660_init[i].reg,
+				ov7660_init[i].val) < 0) {
 			err("OV7660 sensor initialization failed");
 			return -ENODEV;
 		}
@@ -1275,8 +1286,8 @@ static int ov7670_init_sensor(struct gspca_dev *gspca_dev)
 	struct sd *sd = (struct sd *) gspca_dev;
 
 	for (i = 0; i < ARRAY_SIZE(ov7670_init); i++) {
-		if (i2c_w1(gspca_dev, ov7670_init[i][0],
-				ov7670_init[i][1]) < 0) {
+		if (i2c_w1(gspca_dev, ov7670_init[i].reg,
+				ov7670_init[i].val) < 0) {
 			err("OV7670 sensor initialization failed");
 			return -ENODEV;
 		}
@@ -1299,8 +1310,8 @@ static int mt9v_init_sensor(struct gspca_dev *gspca_dev)
 	ret = i2c_r2(gspca_dev, 0xff, &value);
 	if ((ret == 0) && (value == 0x8243)) {
 		for (i = 0; i < ARRAY_SIZE(mt9v011_init); i++) {
-			if (i2c_w2(gspca_dev, mt9v011_init[i][0],
-					mt9v011_init[i][1]) < 0) {
+			if (i2c_w2(gspca_dev, mt9v011_init[i].reg,
+					mt9v011_init[i].val) < 0) {
 				err("MT9V011 sensor initialization failed");
 				return -ENODEV;
 			}
@@ -1317,8 +1328,8 @@ static int mt9v_init_sensor(struct gspca_dev *gspca_dev)
 	ret = i2c_r2(gspca_dev, 0xff, &value);
 	if ((ret == 0) && (value == 0x823a)) {
 		for (i = 0; i < ARRAY_SIZE(mt9v111_init); i++) {
-			if (i2c_w2(gspca_dev, mt9v111_init[i][0],
-					mt9v111_init[i][1]) < 0) {
+			if (i2c_w2(gspca_dev, mt9v111_init[i].reg,
+					mt9v111_init[i].val) < 0) {
 				err("MT9V111 sensor initialization failed");
 				return -ENODEV;
 			}
@@ -1339,8 +1350,8 @@ static int mt9v_init_sensor(struct gspca_dev *gspca_dev)
 	ret = i2c_r2(gspca_dev, 0x00, &value);
 	if ((ret == 0) && (value == 0x1229)) {
 		for (i = 0; i < ARRAY_SIZE(mt9v112_init); i++) {
-			if (i2c_w2(gspca_dev, mt9v112_init[i][0],
-					mt9v112_init[i][1]) < 0) {
+			if (i2c_w2(gspca_dev, mt9v112_init[i].reg,
+					mt9v112_init[i].val) < 0) {
 				err("MT9V112 sensor initialization failed");
 				return -ENODEV;
 			}
@@ -1360,8 +1371,8 @@ static int mt9m111_init_sensor(struct gspca_dev *gspca_dev)
 	struct sd *sd = (struct sd *) gspca_dev;
 	int i;
 	for (i = 0; i < ARRAY_SIZE(mt9m111_init); i++) {
-		if (i2c_w2(gspca_dev, mt9m111_init[i][0],
-				mt9m111_init[i][1]) < 0) {
+		if (i2c_w2(gspca_dev, mt9m111_init[i].reg,
+				mt9m111_init[i].val) < 0) {
 			err("MT9M111 sensor initialization failed");
 			return -ENODEV;
 		}
@@ -1376,8 +1387,8 @@ static int mt9m001_init_sensor(struct gspca_dev *gspca_dev)
 	struct sd *sd = (struct sd *) gspca_dev;
 	int i;
 	for (i = 0; i < ARRAY_SIZE(mt9m001_init); i++) {
-		if (i2c_w2(gspca_dev, mt9m001_init[i][0],
-				mt9m001_init[i][1]) < 0) {
+		if (i2c_w2(gspca_dev, mt9m001_init[i].reg,
+				mt9m001_init[i].val) < 0) {
 			err("MT9M001 sensor initialization failed");
 			return -ENODEV;
 		}
@@ -1395,8 +1406,8 @@ static int hv7131r_init_sensor(struct gspca_dev *gspca_dev)
 	struct sd *sd = (struct sd *) gspca_dev;
 
 	for (i = 0; i < ARRAY_SIZE(hv7131r_init); i++) {
-		if (i2c_w1(gspca_dev, hv7131r_init[i][0],
-				hv7131r_init[i][1]) < 0) {
+		if (i2c_w1(gspca_dev, hv7131r_init[i].reg,
+				hv7131r_init[i].val) < 0) {
 			err("HV7131R Sensor initialization failed");
 			return -ENODEV;
 		}
-- 
1.6.3.1.10.g659a0.dirty




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

* Re: [PATCH] sn9c20x: Reduce data usage, make functions static
  2009-08-21  2:08 [PATCH] sn9c20x: Reduce data usage, make functions static Joe Perches
@ 2009-08-31  2:24 ` Mauro Carvalho Chehab
  2009-08-31 21:43   ` Brian Johnson
  2009-09-04  9:24 ` Jean-Francois Moine
  1 sibling, 1 reply; 5+ messages in thread
From: Mauro Carvalho Chehab @ 2009-08-31  2:24 UTC (permalink / raw)
  To: Brian Johnson; +Cc: Joe Perches, Jean-Francois Moine, linux-media, LKML

Hi Brian,

Any news about the patch? It is always a good idea to try to reduce the kernel
size footprint.

Cheers,
Mauro.

Em Thu, 20 Aug 2009 19:08:58 -0700
Joe Perches <joe@perches.com> escreveu:

> Compiled, not tested, no hardware
> 
> Reduces size of object
> 
> Use s16 instead of int where possible.
> Use struct instead of arrays
> 
> Before:
> $ size drivers/media/video/gspca/sn9c20x.o
>    text	   data	    bss	    dec	    hex	filename
>   29346	   1124	   4128	  34598	   8726	drivers/media/video/gspca/sn9c20x.o
> 
> After:
> $ size drivers/media/video/gspca/sn9c20x.o
>    text	   data	    bss	    dec	    hex	filename
>   25042	   1124	   4112	  30278	   7646	drivers/media/video/gspca/sn9c20x.o
> 
> Signed-off-by: Joe Perches <joe@perches.com>
> ---
>  drivers/media/video/gspca/sn9c20x.c |  101 +++++++++++++++++++---------------
>  1 files changed, 56 insertions(+), 45 deletions(-)
> 
> diff --git a/drivers/media/video/gspca/sn9c20x.c b/drivers/media/video/gspca/sn9c20x.c
> index fcfbbd3..8ddf738 100644
> --- a/drivers/media/video/gspca/sn9c20x.c
> +++ b/drivers/media/video/gspca/sn9c20x.c
> @@ -403,7 +403,7 @@ static const struct v4l2_pix_format sxga_mode[] = {
>  		.priv = 3 | MODE_RAW | MODE_SXGA},
>  };
>  
> -static const int hsv_red_x[] = {
> +static const s16 hsv_red_x[] = {
>  	41,  44,  46,  48,  50,  52,  54,  56,
>  	58,  60,  62,  64,  66,  68,  70,  72,
>  	74,  76,  78,  80,  81,  83,  85,  87,
> @@ -451,7 +451,7 @@ static const int hsv_red_x[] = {
>  	24,  26,  28,  30,  33,  35,  37,  39, 41
>  };
>  
> -static const int hsv_red_y[] = {
> +static const s16 hsv_red_y[] = {
>  	82,  80,  78,  76,  74,  73,  71,  69,
>  	67,  65,  63,  61,  58,  56,  54,  52,
>  	50,  48,  46,  44,  41,  39,  37,  35,
> @@ -499,7 +499,7 @@ static const int hsv_red_y[] = {
>  	96, 94, 92, 91, 89, 87, 85, 84, 82
>  };
>  
> -static const int hsv_green_x[] = {
> +static const s16 hsv_green_x[] = {
>  	-124, -124, -125, -125, -125, -125, -125, -125,
>  	-125, -126, -126, -125, -125, -125, -125, -125,
>  	-125, -124, -124, -124, -123, -123, -122, -122,
> @@ -547,7 +547,7 @@ static const int hsv_green_x[] = {
>  	-120, -120, -121, -122, -122, -123, -123, -124, -124
>  };
>  
> -static const int hsv_green_y[] = {
> +static const s16 hsv_green_y[] = {
>  	-100, -99, -98, -97, -95, -94, -93, -91,
>  	-90, -89, -87, -86, -84, -83, -81, -80,
>  	-78, -76, -75, -73, -71, -70, -68, -66,
> @@ -595,7 +595,7 @@ static const int hsv_green_y[] = {
>  	-109, -108, -107, -106, -105, -104, -103, -102, -100
>  };
>  
> -static const int hsv_blue_x[] = {
> +static const s16 hsv_blue_x[] = {
>  	112, 113, 114, 114, 115, 116, 117, 117,
>  	118, 118, 119, 119, 120, 120, 120, 121,
>  	121, 121, 122, 122, 122, 122, 122, 122,
> @@ -643,7 +643,7 @@ static const int hsv_blue_x[] = {
>  	104, 105, 106, 107, 108, 109, 110, 111, 112
>  };
>  
> -static const int hsv_blue_y[] = {
> +static const s16 hsv_blue_y[] = {
>  	-11, -13, -15, -17, -19, -21, -23, -25,
>  	-27, -29, -31, -33, -35, -37, -39, -41,
>  	-43, -45, -46, -48, -50, -52, -54, -55,
> @@ -792,7 +792,17 @@ static u8 hv7131r_gain[] = {
>  	0x78 /* 8x */
>  };
>  
> -static u8 soi968_init[][2] = {
> +struct i2c_reg_u8 {
> +	u8 reg;
> +	u8 val;
> +};
> +
> +struct i2c_reg_u16 {
> +	u8 reg;
> +	u16 val;
> +};
> +
> +static struct i2c_reg_u8 soi968_init[] = {
>  	{0x12, 0x80}, {0x0c, 0x00}, {0x0f, 0x1f},
>  	{0x11, 0x80}, {0x38, 0x52}, {0x1e, 0x00},
>  	{0x33, 0x08}, {0x35, 0x8c}, {0x36, 0x0c},
> @@ -806,7 +816,7 @@ static u8 soi968_init[][2] = {
>  	{0x00, 0x00}, {0x01, 0x80}, {0x02, 0x80},
>  };
>  
> -static u8 ov7660_init[][2] = {
> +static struct i2c_reg_u8 ov7660_init[] = {
>  	{0x0e, 0x80}, {0x0d, 0x08}, {0x0f, 0xc3},
>  	{0x04, 0xc3}, {0x10, 0x40}, {0x11, 0x40},
>  	{0x12, 0x05}, {0x13, 0xba}, {0x14, 0x2a},
> @@ -815,7 +825,7 @@ static u8 ov7660_init[][2] = {
>  	{0x2e, 0x0b}, {0x01, 0x78}, {0x02, 0x50},
>  };
>  
> -static u8 ov7670_init[][2] = {
> +static struct i2c_reg_u8 ov7670_init[] = {
>  	{0x12, 0x80}, {0x11, 0x80}, {0x3a, 0x04}, {0x12, 0x01},
>  	{0x32, 0xb6}, {0x03, 0x0a}, {0x0c, 0x00}, {0x3e, 0x00},
>  	{0x70, 0x3a}, {0x71, 0x35}, {0x72, 0x11}, {0x73, 0xf0},
> @@ -872,7 +882,7 @@ static u8 ov7670_init[][2] = {
>  	{0x93, 0x00},
>  };
>  
> -static u8 ov9650_init[][2] = {
> +static struct i2c_reg_u8 ov9650_init[] = {
>  	{0x12, 0x80}, {0x00, 0x00}, {0x01, 0x78},
>  	{0x02, 0x78}, {0x03, 0x36}, {0x04, 0x03},
>  	{0x05, 0x00}, {0x06, 0x00}, {0x08, 0x00},
> @@ -902,7 +912,7 @@ static u8 ov9650_init[][2] = {
>  	{0xaa, 0x92}, {0xab, 0x0a},
>  };
>  
> -static u8 ov9655_init[][2] = {
> +static struct i2c_reg_u8 ov9655_init[] = {
>  	{0x12, 0x80}, {0x12, 0x01}, {0x0d, 0x00}, {0x0e, 0x61},
>  	{0x11, 0x80}, {0x13, 0xba}, {0x14, 0x2e}, {0x16, 0x24},
>  	{0x1e, 0x04}, {0x1e, 0x04}, {0x1e, 0x04}, {0x27, 0x08},
> @@ -939,7 +949,7 @@ static u8 ov9655_init[][2] = {
>  	{0x00, 0x03}, {0x00, 0x0a}, {0x00, 0x10}, {0x00, 0x13},
>  };
>  
> -static u16 mt9v112_init[][2] = {
> +static struct i2c_reg_u16 mt9v112_init[] = {
>  	{0xf0, 0x0000}, {0x0d, 0x0021}, {0x0d, 0x0020},
>  	{0x34, 0xc019}, {0x0a, 0x0011}, {0x0b, 0x000b},
>  	{0x20, 0x0703}, {0x35, 0x2022}, {0xf0, 0x0001},
> @@ -958,7 +968,7 @@ static u16 mt9v112_init[][2] = {
>  	{0x2c, 0x00ae}, {0x2d, 0x00ae}, {0x2e, 0x00ae},
>  };
>  
> -static u16 mt9v111_init[][2] = {
> +static struct i2c_reg_u16 mt9v111_init[] = {
>  	{0x01, 0x0004}, {0x0d, 0x0001}, {0x0d, 0x0000},
>  	{0x01, 0x0001}, {0x02, 0x0016}, {0x03, 0x01e1},
>  	{0x04, 0x0281}, {0x05, 0x0004}, {0x07, 0x3002},
> @@ -985,7 +995,7 @@ static u16 mt9v111_init[][2] = {
>  	{0x0e, 0x0008},	{0x06, 0x002d},	{0x05, 0x0004},
>  };
>  
> -static u16 mt9v011_init[][2] = {
> +static struct i2c_reg_u16 mt9v011_init[] = {
>  	{0x07, 0x0002},	{0x0d, 0x0001},	{0x0d, 0x0000},
>  	{0x01, 0x0008},	{0x02, 0x0016},	{0x03, 0x01e1},
>  	{0x04, 0x0281},	{0x05, 0x0083},	{0x06, 0x0006},
> @@ -1012,7 +1022,7 @@ static u16 mt9v011_init[][2] = {
>  	{0x06, 0x0029},	{0x05, 0x0009},
>  };
>  
> -static u16 mt9m001_init[][2] = {
> +static struct i2c_reg_u16 mt9m001_init[] = {
>  	{0x0d, 0x0001}, {0x0d, 0x0000}, {0x01, 0x000e},
>  	{0x02, 0x0014}, {0x03, 0x03c1}, {0x04, 0x0501},
>  	{0x05, 0x0083}, {0x06, 0x0006}, {0x0d, 0x0002},
> @@ -1025,14 +1035,14 @@ static u16 mt9m001_init[][2] = {
>  	{0x2e, 0x0029}, {0x07, 0x0002},
>  };
>  
> -static u16 mt9m111_init[][2] = {
> +static struct i2c_reg_u16 mt9m111_init[] = {
>  	{0xf0, 0x0000}, {0x0d, 0x0008}, {0x0d, 0x0009},
>  	{0x0d, 0x0008}, {0xf0, 0x0001}, {0x3a, 0x4300},
>  	{0x9b, 0x4300}, {0xa1, 0x0280}, {0xa4, 0x0200},
>  	{0x06, 0x308e}, {0xf0, 0x0000},
>  };
>  
> -static u8 hv7131r_init[][2] = {
> +static struct i2c_reg_u8 hv7131r_init[] = {
>  	{0x02, 0x08}, {0x02, 0x00}, {0x01, 0x08},
>  	{0x02, 0x00}, {0x20, 0x00}, {0x21, 0xd0},
>  	{0x22, 0x00}, {0x23, 0x09}, {0x01, 0x08},
> @@ -1043,7 +1053,7 @@ static u8 hv7131r_init[][2] = {
>  	{0x23, 0x09}, {0x01, 0x08},
>  };
>  
> -int reg_r(struct gspca_dev *gspca_dev, u16 reg, u16 length)
> +static int reg_r(struct gspca_dev *gspca_dev, u16 reg, u16 length)
>  {
>  	struct usb_device *dev = gspca_dev->dev;
>  	int result;
> @@ -1062,7 +1072,8 @@ int reg_r(struct gspca_dev *gspca_dev, u16 reg, u16 length)
>  	return 0;
>  }
>  
> -int reg_w(struct gspca_dev *gspca_dev, u16 reg, const u8 *buffer, int length)
> +static int reg_w(struct gspca_dev *gspca_dev, u16 reg,
> +		 const u8 *buffer, int length)
>  {
>  	struct usb_device *dev = gspca_dev->dev;
>  	int result;
> @@ -1082,13 +1093,13 @@ int reg_w(struct gspca_dev *gspca_dev, u16 reg, const u8 *buffer, int length)
>  	return 0;
>  }
>  
> -int reg_w1(struct gspca_dev *gspca_dev, u16 reg, const u8 value)
> +static int reg_w1(struct gspca_dev *gspca_dev, u16 reg, const u8 value)
>  {
>  	u8 data[1] = {value};
>  	return reg_w(gspca_dev, reg, data, 1);
>  }
>  
> -int i2c_w(struct gspca_dev *gspca_dev, const u8 *buffer)
> +static int i2c_w(struct gspca_dev *gspca_dev, const u8 *buffer)
>  {
>  	int i;
>  	reg_w(gspca_dev, 0x10c0, buffer, 8);
> @@ -1104,7 +1115,7 @@ int i2c_w(struct gspca_dev *gspca_dev, const u8 *buffer)
>  	return -1;
>  }
>  
> -int i2c_w1(struct gspca_dev *gspca_dev, u8 reg, u8 val)
> +static int i2c_w1(struct gspca_dev *gspca_dev, u8 reg, u8 val)
>  {
>  	struct sd *sd = (struct sd *) gspca_dev;
>  
> @@ -1126,7 +1137,7 @@ int i2c_w1(struct gspca_dev *gspca_dev, u8 reg, u8 val)
>  	return i2c_w(gspca_dev, row);
>  }
>  
> -int i2c_w2(struct gspca_dev *gspca_dev, u8 reg, u16 val)
> +static int i2c_w2(struct gspca_dev *gspca_dev, u8 reg, u16 val)
>  {
>  	struct sd *sd = (struct sd *) gspca_dev;
>  	u8 row[8];
> @@ -1201,8 +1212,8 @@ static int ov9650_init_sensor(struct gspca_dev *gspca_dev)
>  	struct sd *sd = (struct sd *) gspca_dev;
>  
>  	for (i = 0; i < ARRAY_SIZE(ov9650_init); i++) {
> -		if (i2c_w1(gspca_dev, ov9650_init[i][0],
> -				ov9650_init[i][1]) < 0) {
> +		if (i2c_w1(gspca_dev, ov9650_init[i].reg,
> +				ov9650_init[i].val) < 0) {
>  			err("OV9650 sensor initialization failed");
>  			return -ENODEV;
>  		}
> @@ -1218,8 +1229,8 @@ static int ov9655_init_sensor(struct gspca_dev *gspca_dev)
>  	struct sd *sd = (struct sd *) gspca_dev;
>  
>  	for (i = 0; i < ARRAY_SIZE(ov9655_init); i++) {
> -		if (i2c_w1(gspca_dev, ov9655_init[i][0],
> -				ov9655_init[i][1]) < 0) {
> +		if (i2c_w1(gspca_dev, ov9655_init[i].reg,
> +				ov9655_init[i].val) < 0) {
>  			err("OV9655 sensor initialization failed");
>  			return -ENODEV;
>  		}
> @@ -1237,8 +1248,8 @@ static int soi968_init_sensor(struct gspca_dev *gspca_dev)
>  	struct sd *sd = (struct sd *) gspca_dev;
>  
>  	for (i = 0; i < ARRAY_SIZE(soi968_init); i++) {
> -		if (i2c_w1(gspca_dev, soi968_init[i][0],
> -				soi968_init[i][1]) < 0) {
> +		if (i2c_w1(gspca_dev, soi968_init[i].reg,
> +				soi968_init[i].val) < 0) {
>  			err("SOI968 sensor initialization failed");
>  			return -ENODEV;
>  		}
> @@ -1256,8 +1267,8 @@ static int ov7660_init_sensor(struct gspca_dev *gspca_dev)
>  	struct sd *sd = (struct sd *) gspca_dev;
>  
>  	for (i = 0; i < ARRAY_SIZE(ov7660_init); i++) {
> -		if (i2c_w1(gspca_dev, ov7660_init[i][0],
> -				ov7660_init[i][1]) < 0) {
> +		if (i2c_w1(gspca_dev, ov7660_init[i].reg,
> +				ov7660_init[i].val) < 0) {
>  			err("OV7660 sensor initialization failed");
>  			return -ENODEV;
>  		}
> @@ -1275,8 +1286,8 @@ static int ov7670_init_sensor(struct gspca_dev *gspca_dev)
>  	struct sd *sd = (struct sd *) gspca_dev;
>  
>  	for (i = 0; i < ARRAY_SIZE(ov7670_init); i++) {
> -		if (i2c_w1(gspca_dev, ov7670_init[i][0],
> -				ov7670_init[i][1]) < 0) {
> +		if (i2c_w1(gspca_dev, ov7670_init[i].reg,
> +				ov7670_init[i].val) < 0) {
>  			err("OV7670 sensor initialization failed");
>  			return -ENODEV;
>  		}
> @@ -1299,8 +1310,8 @@ static int mt9v_init_sensor(struct gspca_dev *gspca_dev)
>  	ret = i2c_r2(gspca_dev, 0xff, &value);
>  	if ((ret == 0) && (value == 0x8243)) {
>  		for (i = 0; i < ARRAY_SIZE(mt9v011_init); i++) {
> -			if (i2c_w2(gspca_dev, mt9v011_init[i][0],
> -					mt9v011_init[i][1]) < 0) {
> +			if (i2c_w2(gspca_dev, mt9v011_init[i].reg,
> +					mt9v011_init[i].val) < 0) {
>  				err("MT9V011 sensor initialization failed");
>  				return -ENODEV;
>  			}
> @@ -1317,8 +1328,8 @@ static int mt9v_init_sensor(struct gspca_dev *gspca_dev)
>  	ret = i2c_r2(gspca_dev, 0xff, &value);
>  	if ((ret == 0) && (value == 0x823a)) {
>  		for (i = 0; i < ARRAY_SIZE(mt9v111_init); i++) {
> -			if (i2c_w2(gspca_dev, mt9v111_init[i][0],
> -					mt9v111_init[i][1]) < 0) {
> +			if (i2c_w2(gspca_dev, mt9v111_init[i].reg,
> +					mt9v111_init[i].val) < 0) {
>  				err("MT9V111 sensor initialization failed");
>  				return -ENODEV;
>  			}
> @@ -1339,8 +1350,8 @@ static int mt9v_init_sensor(struct gspca_dev *gspca_dev)
>  	ret = i2c_r2(gspca_dev, 0x00, &value);
>  	if ((ret == 0) && (value == 0x1229)) {
>  		for (i = 0; i < ARRAY_SIZE(mt9v112_init); i++) {
> -			if (i2c_w2(gspca_dev, mt9v112_init[i][0],
> -					mt9v112_init[i][1]) < 0) {
> +			if (i2c_w2(gspca_dev, mt9v112_init[i].reg,
> +					mt9v112_init[i].val) < 0) {
>  				err("MT9V112 sensor initialization failed");
>  				return -ENODEV;
>  			}
> @@ -1360,8 +1371,8 @@ static int mt9m111_init_sensor(struct gspca_dev *gspca_dev)
>  	struct sd *sd = (struct sd *) gspca_dev;
>  	int i;
>  	for (i = 0; i < ARRAY_SIZE(mt9m111_init); i++) {
> -		if (i2c_w2(gspca_dev, mt9m111_init[i][0],
> -				mt9m111_init[i][1]) < 0) {
> +		if (i2c_w2(gspca_dev, mt9m111_init[i].reg,
> +				mt9m111_init[i].val) < 0) {
>  			err("MT9M111 sensor initialization failed");
>  			return -ENODEV;
>  		}
> @@ -1376,8 +1387,8 @@ static int mt9m001_init_sensor(struct gspca_dev *gspca_dev)
>  	struct sd *sd = (struct sd *) gspca_dev;
>  	int i;
>  	for (i = 0; i < ARRAY_SIZE(mt9m001_init); i++) {
> -		if (i2c_w2(gspca_dev, mt9m001_init[i][0],
> -				mt9m001_init[i][1]) < 0) {
> +		if (i2c_w2(gspca_dev, mt9m001_init[i].reg,
> +				mt9m001_init[i].val) < 0) {
>  			err("MT9M001 sensor initialization failed");
>  			return -ENODEV;
>  		}
> @@ -1395,8 +1406,8 @@ static int hv7131r_init_sensor(struct gspca_dev *gspca_dev)
>  	struct sd *sd = (struct sd *) gspca_dev;
>  
>  	for (i = 0; i < ARRAY_SIZE(hv7131r_init); i++) {
> -		if (i2c_w1(gspca_dev, hv7131r_init[i][0],
> -				hv7131r_init[i][1]) < 0) {
> +		if (i2c_w1(gspca_dev, hv7131r_init[i].reg,
> +				hv7131r_init[i].val) < 0) {
>  			err("HV7131R Sensor initialization failed");
>  			return -ENODEV;
>  		}


-- 

Cheers,
Mauro

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

* Re: [PATCH] sn9c20x: Reduce data usage, make functions static
  2009-08-31  2:24 ` Mauro Carvalho Chehab
@ 2009-08-31 21:43   ` Brian Johnson
  0 siblings, 0 replies; 5+ messages in thread
From: Brian Johnson @ 2009-08-31 21:43 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: Joe Perches, Jean-Francois Moine, linux-media, LKML

Mauro,
Yes, sorry been busy this last week.
I've tested this patch against three separate webcams and everything
works just fine.

I'd also like to ask if it would be possible to get a mercurial
account on linuxtv.org?

Brian Johnson

On Sun, Aug 30, 2009 at 10:24 PM, Mauro Carvalho
Chehab<mchehab@redhat.com> wrote:
> Hi Brian,
>
> Any news about the patch? It is always a good idea to try to reduce the kernel
> size footprint.
>
> Cheers,
> Mauro.
>
> Em Thu, 20 Aug 2009 19:08:58 -0700
> Joe Perches <joe@perches.com> escreveu:
>
>> Compiled, not tested, no hardware
>>
>> Reduces size of object
>>
>> Use s16 instead of int where possible.
>> Use struct instead of arrays
>>
>> Before:
>> $ size drivers/media/video/gspca/sn9c20x.o
>>    text          data     bss     dec     hex filename
>>   29346          1124    4128   34598    8726 drivers/media/video/gspca/sn9c20x.o
>>
>> After:
>> $ size drivers/media/video/gspca/sn9c20x.o
>>    text          data     bss     dec     hex filename
>>   25042          1124    4112   30278    7646 drivers/media/video/gspca/sn9c20x.o
>>
>> Signed-off-by: Joe Perches <joe@perches.com>
>> ---
>>  drivers/media/video/gspca/sn9c20x.c |  101 +++++++++++++++++++---------------
>>  1 files changed, 56 insertions(+), 45 deletions(-)
>>
>> diff --git a/drivers/media/video/gspca/sn9c20x.c b/drivers/media/video/gspca/sn9c20x.c
>> index fcfbbd3..8ddf738 100644
>> --- a/drivers/media/video/gspca/sn9c20x.c
>> +++ b/drivers/media/video/gspca/sn9c20x.c
>> @@ -403,7 +403,7 @@ static const struct v4l2_pix_format sxga_mode[] = {
>>               .priv = 3 | MODE_RAW | MODE_SXGA},
>>  };
>>
>> -static const int hsv_red_x[] = {
>> +static const s16 hsv_red_x[] = {
>>       41,  44,  46,  48,  50,  52,  54,  56,
>>       58,  60,  62,  64,  66,  68,  70,  72,
>>       74,  76,  78,  80,  81,  83,  85,  87,
>> @@ -451,7 +451,7 @@ static const int hsv_red_x[] = {
>>       24,  26,  28,  30,  33,  35,  37,  39, 41
>>  };
>>
>> -static const int hsv_red_y[] = {
>> +static const s16 hsv_red_y[] = {
>>       82,  80,  78,  76,  74,  73,  71,  69,
>>       67,  65,  63,  61,  58,  56,  54,  52,
>>       50,  48,  46,  44,  41,  39,  37,  35,
>> @@ -499,7 +499,7 @@ static const int hsv_red_y[] = {
>>       96, 94, 92, 91, 89, 87, 85, 84, 82
>>  };
>>
>> -static const int hsv_green_x[] = {
>> +static const s16 hsv_green_x[] = {
>>       -124, -124, -125, -125, -125, -125, -125, -125,
>>       -125, -126, -126, -125, -125, -125, -125, -125,
>>       -125, -124, -124, -124, -123, -123, -122, -122,
>> @@ -547,7 +547,7 @@ static const int hsv_green_x[] = {
>>       -120, -120, -121, -122, -122, -123, -123, -124, -124
>>  };
>>
>> -static const int hsv_green_y[] = {
>> +static const s16 hsv_green_y[] = {
>>       -100, -99, -98, -97, -95, -94, -93, -91,
>>       -90, -89, -87, -86, -84, -83, -81, -80,
>>       -78, -76, -75, -73, -71, -70, -68, -66,
>> @@ -595,7 +595,7 @@ static const int hsv_green_y[] = {
>>       -109, -108, -107, -106, -105, -104, -103, -102, -100
>>  };
>>
>> -static const int hsv_blue_x[] = {
>> +static const s16 hsv_blue_x[] = {
>>       112, 113, 114, 114, 115, 116, 117, 117,
>>       118, 118, 119, 119, 120, 120, 120, 121,
>>       121, 121, 122, 122, 122, 122, 122, 122,
>> @@ -643,7 +643,7 @@ static const int hsv_blue_x[] = {
>>       104, 105, 106, 107, 108, 109, 110, 111, 112
>>  };
>>
>> -static const int hsv_blue_y[] = {
>> +static const s16 hsv_blue_y[] = {
>>       -11, -13, -15, -17, -19, -21, -23, -25,
>>       -27, -29, -31, -33, -35, -37, -39, -41,
>>       -43, -45, -46, -48, -50, -52, -54, -55,
>> @@ -792,7 +792,17 @@ static u8 hv7131r_gain[] = {
>>       0x78 /* 8x */
>>  };
>>
>> -static u8 soi968_init[][2] = {
>> +struct i2c_reg_u8 {
>> +     u8 reg;
>> +     u8 val;
>> +};
>> +
>> +struct i2c_reg_u16 {
>> +     u8 reg;
>> +     u16 val;
>> +};
>> +
>> +static struct i2c_reg_u8 soi968_init[] = {
>>       {0x12, 0x80}, {0x0c, 0x00}, {0x0f, 0x1f},
>>       {0x11, 0x80}, {0x38, 0x52}, {0x1e, 0x00},
>>       {0x33, 0x08}, {0x35, 0x8c}, {0x36, 0x0c},
>> @@ -806,7 +816,7 @@ static u8 soi968_init[][2] = {
>>       {0x00, 0x00}, {0x01, 0x80}, {0x02, 0x80},
>>  };
>>
>> -static u8 ov7660_init[][2] = {
>> +static struct i2c_reg_u8 ov7660_init[] = {
>>       {0x0e, 0x80}, {0x0d, 0x08}, {0x0f, 0xc3},
>>       {0x04, 0xc3}, {0x10, 0x40}, {0x11, 0x40},
>>       {0x12, 0x05}, {0x13, 0xba}, {0x14, 0x2a},
>> @@ -815,7 +825,7 @@ static u8 ov7660_init[][2] = {
>>       {0x2e, 0x0b}, {0x01, 0x78}, {0x02, 0x50},
>>  };
>>
>> -static u8 ov7670_init[][2] = {
>> +static struct i2c_reg_u8 ov7670_init[] = {
>>       {0x12, 0x80}, {0x11, 0x80}, {0x3a, 0x04}, {0x12, 0x01},
>>       {0x32, 0xb6}, {0x03, 0x0a}, {0x0c, 0x00}, {0x3e, 0x00},
>>       {0x70, 0x3a}, {0x71, 0x35}, {0x72, 0x11}, {0x73, 0xf0},
>> @@ -872,7 +882,7 @@ static u8 ov7670_init[][2] = {
>>       {0x93, 0x00},
>>  };
>>
>> -static u8 ov9650_init[][2] = {
>> +static struct i2c_reg_u8 ov9650_init[] = {
>>       {0x12, 0x80}, {0x00, 0x00}, {0x01, 0x78},
>>       {0x02, 0x78}, {0x03, 0x36}, {0x04, 0x03},
>>       {0x05, 0x00}, {0x06, 0x00}, {0x08, 0x00},
>> @@ -902,7 +912,7 @@ static u8 ov9650_init[][2] = {
>>       {0xaa, 0x92}, {0xab, 0x0a},
>>  };
>>
>> -static u8 ov9655_init[][2] = {
>> +static struct i2c_reg_u8 ov9655_init[] = {
>>       {0x12, 0x80}, {0x12, 0x01}, {0x0d, 0x00}, {0x0e, 0x61},
>>       {0x11, 0x80}, {0x13, 0xba}, {0x14, 0x2e}, {0x16, 0x24},
>>       {0x1e, 0x04}, {0x1e, 0x04}, {0x1e, 0x04}, {0x27, 0x08},
>> @@ -939,7 +949,7 @@ static u8 ov9655_init[][2] = {
>>       {0x00, 0x03}, {0x00, 0x0a}, {0x00, 0x10}, {0x00, 0x13},
>>  };
>>
>> -static u16 mt9v112_init[][2] = {
>> +static struct i2c_reg_u16 mt9v112_init[] = {
>>       {0xf0, 0x0000}, {0x0d, 0x0021}, {0x0d, 0x0020},
>>       {0x34, 0xc019}, {0x0a, 0x0011}, {0x0b, 0x000b},
>>       {0x20, 0x0703}, {0x35, 0x2022}, {0xf0, 0x0001},
>> @@ -958,7 +968,7 @@ static u16 mt9v112_init[][2] = {
>>       {0x2c, 0x00ae}, {0x2d, 0x00ae}, {0x2e, 0x00ae},
>>  };
>>
>> -static u16 mt9v111_init[][2] = {
>> +static struct i2c_reg_u16 mt9v111_init[] = {
>>       {0x01, 0x0004}, {0x0d, 0x0001}, {0x0d, 0x0000},
>>       {0x01, 0x0001}, {0x02, 0x0016}, {0x03, 0x01e1},
>>       {0x04, 0x0281}, {0x05, 0x0004}, {0x07, 0x3002},
>> @@ -985,7 +995,7 @@ static u16 mt9v111_init[][2] = {
>>       {0x0e, 0x0008}, {0x06, 0x002d}, {0x05, 0x0004},
>>  };
>>
>> -static u16 mt9v011_init[][2] = {
>> +static struct i2c_reg_u16 mt9v011_init[] = {
>>       {0x07, 0x0002}, {0x0d, 0x0001}, {0x0d, 0x0000},
>>       {0x01, 0x0008}, {0x02, 0x0016}, {0x03, 0x01e1},
>>       {0x04, 0x0281}, {0x05, 0x0083}, {0x06, 0x0006},
>> @@ -1012,7 +1022,7 @@ static u16 mt9v011_init[][2] = {
>>       {0x06, 0x0029}, {0x05, 0x0009},
>>  };
>>
>> -static u16 mt9m001_init[][2] = {
>> +static struct i2c_reg_u16 mt9m001_init[] = {
>>       {0x0d, 0x0001}, {0x0d, 0x0000}, {0x01, 0x000e},
>>       {0x02, 0x0014}, {0x03, 0x03c1}, {0x04, 0x0501},
>>       {0x05, 0x0083}, {0x06, 0x0006}, {0x0d, 0x0002},
>> @@ -1025,14 +1035,14 @@ static u16 mt9m001_init[][2] = {
>>       {0x2e, 0x0029}, {0x07, 0x0002},
>>  };
>>
>> -static u16 mt9m111_init[][2] = {
>> +static struct i2c_reg_u16 mt9m111_init[] = {
>>       {0xf0, 0x0000}, {0x0d, 0x0008}, {0x0d, 0x0009},
>>       {0x0d, 0x0008}, {0xf0, 0x0001}, {0x3a, 0x4300},
>>       {0x9b, 0x4300}, {0xa1, 0x0280}, {0xa4, 0x0200},
>>       {0x06, 0x308e}, {0xf0, 0x0000},
>>  };
>>
>> -static u8 hv7131r_init[][2] = {
>> +static struct i2c_reg_u8 hv7131r_init[] = {
>>       {0x02, 0x08}, {0x02, 0x00}, {0x01, 0x08},
>>       {0x02, 0x00}, {0x20, 0x00}, {0x21, 0xd0},
>>       {0x22, 0x00}, {0x23, 0x09}, {0x01, 0x08},
>> @@ -1043,7 +1053,7 @@ static u8 hv7131r_init[][2] = {
>>       {0x23, 0x09}, {0x01, 0x08},
>>  };
>>
>> -int reg_r(struct gspca_dev *gspca_dev, u16 reg, u16 length)
>> +static int reg_r(struct gspca_dev *gspca_dev, u16 reg, u16 length)
>>  {
>>       struct usb_device *dev = gspca_dev->dev;
>>       int result;
>> @@ -1062,7 +1072,8 @@ int reg_r(struct gspca_dev *gspca_dev, u16 reg, u16 length)
>>       return 0;
>>  }
>>
>> -int reg_w(struct gspca_dev *gspca_dev, u16 reg, const u8 *buffer, int length)
>> +static int reg_w(struct gspca_dev *gspca_dev, u16 reg,
>> +              const u8 *buffer, int length)
>>  {
>>       struct usb_device *dev = gspca_dev->dev;
>>       int result;
>> @@ -1082,13 +1093,13 @@ int reg_w(struct gspca_dev *gspca_dev, u16 reg, const u8 *buffer, int length)
>>       return 0;
>>  }
>>
>> -int reg_w1(struct gspca_dev *gspca_dev, u16 reg, const u8 value)
>> +static int reg_w1(struct gspca_dev *gspca_dev, u16 reg, const u8 value)
>>  {
>>       u8 data[1] = {value};
>>       return reg_w(gspca_dev, reg, data, 1);
>>  }
>>
>> -int i2c_w(struct gspca_dev *gspca_dev, const u8 *buffer)
>> +static int i2c_w(struct gspca_dev *gspca_dev, const u8 *buffer)
>>  {
>>       int i;
>>       reg_w(gspca_dev, 0x10c0, buffer, 8);
>> @@ -1104,7 +1115,7 @@ int i2c_w(struct gspca_dev *gspca_dev, const u8 *buffer)
>>       return -1;
>>  }
>>
>> -int i2c_w1(struct gspca_dev *gspca_dev, u8 reg, u8 val)
>> +static int i2c_w1(struct gspca_dev *gspca_dev, u8 reg, u8 val)
>>  {
>>       struct sd *sd = (struct sd *) gspca_dev;
>>
>> @@ -1126,7 +1137,7 @@ int i2c_w1(struct gspca_dev *gspca_dev, u8 reg, u8 val)
>>       return i2c_w(gspca_dev, row);
>>  }
>>
>> -int i2c_w2(struct gspca_dev *gspca_dev, u8 reg, u16 val)
>> +static int i2c_w2(struct gspca_dev *gspca_dev, u8 reg, u16 val)
>>  {
>>       struct sd *sd = (struct sd *) gspca_dev;
>>       u8 row[8];
>> @@ -1201,8 +1212,8 @@ static int ov9650_init_sensor(struct gspca_dev *gspca_dev)
>>       struct sd *sd = (struct sd *) gspca_dev;
>>
>>       for (i = 0; i < ARRAY_SIZE(ov9650_init); i++) {
>> -             if (i2c_w1(gspca_dev, ov9650_init[i][0],
>> -                             ov9650_init[i][1]) < 0) {
>> +             if (i2c_w1(gspca_dev, ov9650_init[i].reg,
>> +                             ov9650_init[i].val) < 0) {
>>                       err("OV9650 sensor initialization failed");
>>                       return -ENODEV;
>>               }
>> @@ -1218,8 +1229,8 @@ static int ov9655_init_sensor(struct gspca_dev *gspca_dev)
>>       struct sd *sd = (struct sd *) gspca_dev;
>>
>>       for (i = 0; i < ARRAY_SIZE(ov9655_init); i++) {
>> -             if (i2c_w1(gspca_dev, ov9655_init[i][0],
>> -                             ov9655_init[i][1]) < 0) {
>> +             if (i2c_w1(gspca_dev, ov9655_init[i].reg,
>> +                             ov9655_init[i].val) < 0) {
>>                       err("OV9655 sensor initialization failed");
>>                       return -ENODEV;
>>               }
>> @@ -1237,8 +1248,8 @@ static int soi968_init_sensor(struct gspca_dev *gspca_dev)
>>       struct sd *sd = (struct sd *) gspca_dev;
>>
>>       for (i = 0; i < ARRAY_SIZE(soi968_init); i++) {
>> -             if (i2c_w1(gspca_dev, soi968_init[i][0],
>> -                             soi968_init[i][1]) < 0) {
>> +             if (i2c_w1(gspca_dev, soi968_init[i].reg,
>> +                             soi968_init[i].val) < 0) {
>>                       err("SOI968 sensor initialization failed");
>>                       return -ENODEV;
>>               }
>> @@ -1256,8 +1267,8 @@ static int ov7660_init_sensor(struct gspca_dev *gspca_dev)
>>       struct sd *sd = (struct sd *) gspca_dev;
>>
>>       for (i = 0; i < ARRAY_SIZE(ov7660_init); i++) {
>> -             if (i2c_w1(gspca_dev, ov7660_init[i][0],
>> -                             ov7660_init[i][1]) < 0) {
>> +             if (i2c_w1(gspca_dev, ov7660_init[i].reg,
>> +                             ov7660_init[i].val) < 0) {
>>                       err("OV7660 sensor initialization failed");
>>                       return -ENODEV;
>>               }
>> @@ -1275,8 +1286,8 @@ static int ov7670_init_sensor(struct gspca_dev *gspca_dev)
>>       struct sd *sd = (struct sd *) gspca_dev;
>>
>>       for (i = 0; i < ARRAY_SIZE(ov7670_init); i++) {
>> -             if (i2c_w1(gspca_dev, ov7670_init[i][0],
>> -                             ov7670_init[i][1]) < 0) {
>> +             if (i2c_w1(gspca_dev, ov7670_init[i].reg,
>> +                             ov7670_init[i].val) < 0) {
>>                       err("OV7670 sensor initialization failed");
>>                       return -ENODEV;
>>               }
>> @@ -1299,8 +1310,8 @@ static int mt9v_init_sensor(struct gspca_dev *gspca_dev)
>>       ret = i2c_r2(gspca_dev, 0xff, &value);
>>       if ((ret == 0) && (value == 0x8243)) {
>>               for (i = 0; i < ARRAY_SIZE(mt9v011_init); i++) {
>> -                     if (i2c_w2(gspca_dev, mt9v011_init[i][0],
>> -                                     mt9v011_init[i][1]) < 0) {
>> +                     if (i2c_w2(gspca_dev, mt9v011_init[i].reg,
>> +                                     mt9v011_init[i].val) < 0) {
>>                               err("MT9V011 sensor initialization failed");
>>                               return -ENODEV;
>>                       }
>> @@ -1317,8 +1328,8 @@ static int mt9v_init_sensor(struct gspca_dev *gspca_dev)
>>       ret = i2c_r2(gspca_dev, 0xff, &value);
>>       if ((ret == 0) && (value == 0x823a)) {
>>               for (i = 0; i < ARRAY_SIZE(mt9v111_init); i++) {
>> -                     if (i2c_w2(gspca_dev, mt9v111_init[i][0],
>> -                                     mt9v111_init[i][1]) < 0) {
>> +                     if (i2c_w2(gspca_dev, mt9v111_init[i].reg,
>> +                                     mt9v111_init[i].val) < 0) {
>>                               err("MT9V111 sensor initialization failed");
>>                               return -ENODEV;
>>                       }
>> @@ -1339,8 +1350,8 @@ static int mt9v_init_sensor(struct gspca_dev *gspca_dev)
>>       ret = i2c_r2(gspca_dev, 0x00, &value);
>>       if ((ret == 0) && (value == 0x1229)) {
>>               for (i = 0; i < ARRAY_SIZE(mt9v112_init); i++) {
>> -                     if (i2c_w2(gspca_dev, mt9v112_init[i][0],
>> -                                     mt9v112_init[i][1]) < 0) {
>> +                     if (i2c_w2(gspca_dev, mt9v112_init[i].reg,
>> +                                     mt9v112_init[i].val) < 0) {
>>                               err("MT9V112 sensor initialization failed");
>>                               return -ENODEV;
>>                       }
>> @@ -1360,8 +1371,8 @@ static int mt9m111_init_sensor(struct gspca_dev *gspca_dev)
>>       struct sd *sd = (struct sd *) gspca_dev;
>>       int i;
>>       for (i = 0; i < ARRAY_SIZE(mt9m111_init); i++) {
>> -             if (i2c_w2(gspca_dev, mt9m111_init[i][0],
>> -                             mt9m111_init[i][1]) < 0) {
>> +             if (i2c_w2(gspca_dev, mt9m111_init[i].reg,
>> +                             mt9m111_init[i].val) < 0) {
>>                       err("MT9M111 sensor initialization failed");
>>                       return -ENODEV;
>>               }
>> @@ -1376,8 +1387,8 @@ static int mt9m001_init_sensor(struct gspca_dev *gspca_dev)
>>       struct sd *sd = (struct sd *) gspca_dev;
>>       int i;
>>       for (i = 0; i < ARRAY_SIZE(mt9m001_init); i++) {
>> -             if (i2c_w2(gspca_dev, mt9m001_init[i][0],
>> -                             mt9m001_init[i][1]) < 0) {
>> +             if (i2c_w2(gspca_dev, mt9m001_init[i].reg,
>> +                             mt9m001_init[i].val) < 0) {
>>                       err("MT9M001 sensor initialization failed");
>>                       return -ENODEV;
>>               }
>> @@ -1395,8 +1406,8 @@ static int hv7131r_init_sensor(struct gspca_dev *gspca_dev)
>>       struct sd *sd = (struct sd *) gspca_dev;
>>
>>       for (i = 0; i < ARRAY_SIZE(hv7131r_init); i++) {
>> -             if (i2c_w1(gspca_dev, hv7131r_init[i][0],
>> -                             hv7131r_init[i][1]) < 0) {
>> +             if (i2c_w1(gspca_dev, hv7131r_init[i].reg,
>> +                             hv7131r_init[i].val) < 0) {
>>                       err("HV7131R Sensor initialization failed");
>>                       return -ENODEV;
>>               }
>
>
> --
>
> Cheers,
> Mauro
>

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

* Re: [PATCH] sn9c20x: Reduce data usage, make functions static
  2009-08-21  2:08 [PATCH] sn9c20x: Reduce data usage, make functions static Joe Perches
  2009-08-31  2:24 ` Mauro Carvalho Chehab
@ 2009-09-04  9:24 ` Jean-Francois Moine
  2009-09-04 11:28   ` Brian Johnson
  1 sibling, 1 reply; 5+ messages in thread
From: Jean-Francois Moine @ 2009-09-04  9:24 UTC (permalink / raw)
  To: Joe Perches, Brian Johnson; +Cc: Mauro Carvalho Chehab, linux-media

On Thu, 20 Aug 2009 19:08:58 -0700
Joe Perches <joe@perches.com> wrote:

> Compiled, not tested, no hardware
> 
> Reduces size of object
> 
> Use s16 instead of int where possible.
	[snip]
> -static const int hsv_red_x[] = {
> +static const s16 hsv_red_x[] = {
> 	41,  44,  46,  48,  50,  52,  54,  56,
> 	58,  60,  62,  64,  66,  68,  70,  72,
> 	74,  76,  78,  80,  81,  83,  85,  87,
	[snip]

Hi Joe and Brian,

I got the patch but I was wondering if such tables could be even
smaller with 's8'?

Cheers.

-- 
Ken ar c'hentañ	|	      ** Breizh ha Linux atav! **
Jef		|		http://moinejf.free.fr/

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

* Re: [PATCH] sn9c20x: Reduce data usage, make functions static
  2009-09-04  9:24 ` Jean-Francois Moine
@ 2009-09-04 11:28   ` Brian Johnson
  0 siblings, 0 replies; 5+ messages in thread
From: Brian Johnson @ 2009-09-04 11:28 UTC (permalink / raw)
  To: Jean-Francois Moine; +Cc: Joe Perches, Mauro Carvalho Chehab, linux-media

Jean-Francois,

The two red tables actually do contain values greater then 127 so
would not fit within a s8 variable, the other four i think may have
only values between -128 and 127 but i haven't gone through and made
sure of that.

Brian

On Fri, Sep 4, 2009 at 5:24 AM, Jean-Francois Moine<moinejf@free.fr> wrote:
> On Thu, 20 Aug 2009 19:08:58 -0700
> Joe Perches <joe@perches.com> wrote:
>
>> Compiled, not tested, no hardware
>>
>> Reduces size of object
>>
>> Use s16 instead of int where possible.
>        [snip]
>> -static const int hsv_red_x[] = {
>> +static const s16 hsv_red_x[] = {
>>       41,  44,  46,  48,  50,  52,  54,  56,
>>       58,  60,  62,  64,  66,  68,  70,  72,
>>       74,  76,  78,  80,  81,  83,  85,  87,
>        [snip]
>
> Hi Joe and Brian,
>
> I got the patch but I was wondering if such tables could be even
> smaller with 's8'?
>
> Cheers.
>
> --
> Ken ar c'hentañ |             ** Breizh ha Linux atav! **
> Jef             |               http://moinejf.free.fr/
>

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

end of thread, other threads:[~2009-09-04 11:28 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-21  2:08 [PATCH] sn9c20x: Reduce data usage, make functions static Joe Perches
2009-08-31  2:24 ` Mauro Carvalho Chehab
2009-08-31 21:43   ` Brian Johnson
2009-09-04  9:24 ` Jean-Francois Moine
2009-09-04 11:28   ` Brian Johnson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox