All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] TCM825x: Include invertation of image mirroring in configuration
@ 2008-05-13 16:04 Sakari Ailus
  2008-05-13 16:04 ` [PATCH 2/3] N810: Don't export camera orientation Sakari Ailus
  2008-05-13 19:53 ` [PATCH 1/3] TCM825x: Include invertation of image mirroring in configuration Felipe Balbi
  0 siblings, 2 replies; 17+ messages in thread
From: Sakari Ailus @ 2008-05-13 16:04 UTC (permalink / raw)
  To: linux-omap

Add invertation of image mirroring register bits to default
configuration.

This is useful when the camera module is e.g. mounted upside down.

Signed-off-by: Sakari Ailus <sakari.ailus@nokia.com>
---
 drivers/media/video/tcm825x.c |    6 ++++++
 drivers/media/video/tcm825x.h |    1 +
 2 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/drivers/media/video/tcm825x.c b/drivers/media/video/tcm825x.c
index e57a646..216638e 100644
--- a/drivers/media/video/tcm825x.c
+++ b/drivers/media/video/tcm825x.c
@@ -523,6 +523,9 @@ static int ioctl_g_ctrl(struct v4l2_int_device *s,
 	if (val < 0)
 		return val;
 
+	if (vc->id == V4L2_CID_HFLIP || vc->id == V4L2_CID_VFLIP)
+		val ^= sensor->platform_data->is_upside_down();
+
 	vc->value = val;
 	return 0;
 }
@@ -556,6 +559,9 @@ static int ioctl_s_ctrl(struct v4l2_int_device *s,
 	if (lvc == NULL)
 		return -EINVAL;
 
+	if (vc->id == V4L2_CID_HFLIP || vc->id == V4L2_CID_VFLIP)
+		val ^= sensor->platform_data->is_upside_down();
+
 	val = val << lvc->start_bit;
 	if (tcm825x_write_reg_mask(client, lvc->reg, val))
 		return -EIO;
diff --git a/drivers/media/video/tcm825x.h b/drivers/media/video/tcm825x.h
index 966765b..770ebac 100644
--- a/drivers/media/video/tcm825x.h
+++ b/drivers/media/video/tcm825x.h
@@ -182,6 +182,7 @@ struct tcm825x_platform_data {
 	int (*needs_reset)(struct v4l2_int_device *s, void *buf,
 			   struct v4l2_pix_format *fmt);
 	int (*ifparm)(struct v4l2_ifparm *p);
+	int (*is_upside_down)(void);
 };
 
 /* Array of image sizes supported by TCM825X.  These must be ordered from
-- 
1.5.0.6


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

* [PATCH 2/3] N810: Don't export camera orientation
  2008-05-13 16:04 [PATCH 1/3] TCM825x: Include invertation of image mirroring in configuration Sakari Ailus
@ 2008-05-13 16:04 ` Sakari Ailus
  2008-05-13 16:04   ` [PATCH 3/3] N800: Select tcm825x only if wanted Sakari Ailus
  2008-05-13 20:01   ` [PATCH 2/3] N810: Don't export camera orientation Felipe Balbi
  2008-05-13 19:53 ` [PATCH 1/3] TCM825x: Include invertation of image mirroring in configuration Felipe Balbi
  1 sibling, 2 replies; 17+ messages in thread
From: Sakari Ailus @ 2008-05-13 16:04 UTC (permalink / raw)
  To: linux-omap

On Nokia N810 the camera module is mounted upside down. This affects
the mirroring controls. This patch inverts the controls for N810.

Signed-off-by: Sakari Ailus <sakari.ailus@nokia.com>
---
 arch/arm/mach-omap2/board-n800-camera.c |   65 +++++++++++++++++++++++++++---
 1 files changed, 58 insertions(+), 7 deletions(-)

diff --git a/arch/arm/mach-omap2/board-n800-camera.c b/arch/arm/mach-omap2/board-n800-camera.c
index 19be30d..9c2bead 100644
--- a/arch/arm/mach-omap2/board-n800-camera.c
+++ b/arch/arm/mach-omap2/board-n800-camera.c
@@ -28,6 +28,8 @@
 
 #include <media/v4l2-int-device.h>
 
+#include <asm/mach-types.h>
+
 #include <asm/arch/menelaus.h>
 #include <asm/arch/gpio.h>
 #include <asm/arch/board.h>
@@ -71,7 +73,8 @@ static int frames_after_reset;
 static int saturated_count;
 #endif
 
-const static struct tcm825x_reg tcm825x_default_regs_[] = {
+#ifdef CONFIG_MACH_NOKIA_N800
+const static struct tcm825x_reg tcm825x_regs_n800[] = {
 	/* initial settings for 2.5 V */
 	{0x00, 0x03}, {0x03, 0x29}, {0xaa, 0x2a}, {0xc0, 0x2b},
 	{0x10, 0x2c}, {0x4c, 0x2d}, {0x9c, 0x3f},
@@ -103,6 +106,42 @@ const static struct tcm825x_reg tcm825x_default_regs_[] = {
 	{0x08, 0x5c}, {0x08, 0x5d}, {0x08, 0x5e}, {0x08, 0x5f},
 	{TCM825X_VAL_TERM, TCM825X_REG_TERM}
 };
+#endif
+
+#ifdef CONFIG_MACH_NOKIA_N810
+const static struct tcm825x_reg tcm825x_regs_n810[] = {
+	/* initial settings for 2.5 V */
+	{0x00, 0x03}, {0x03, 0x29}, {0xaa, 0x2a}, {0xc0, 0x2b},
+	{0x10, 0x2c}, {0x4c, 0x2d}, {0x9c, 0x3f},
+
+	/* main settings */
+	{0x00, 0x00}, {0x30, 0x01}, {0x0e, 0x02}, /* initial */
+	{0xcf, 0x04}, {0x02, 0x05}, {0x0d, 0x06}, {0xc0, 0x07},
+	{0x38, 0x08}, {0x50, 0x09}, {0x80, 0x0a}, {0x40, 0x0b},
+	{0x40, 0x0c}, {0x00, 0x0d}, {0x04, 0x0e}, {0x04, 0x0f},
+	{0x22, 0x10}, {0x96, 0x11}, {0xf0, 0x12}, {0x08, 0x13},
+	{0x08, 0x14}, {0x30, 0x15}, {0x30, 0x16}, {0x01, 0x17},
+	{0x40, 0x18}, {0x87, 0x19}, {0x2b, 0x1a}, {0x84, 0x1b},
+	{0x52, 0x1c}, {0x44, 0x1d}, {0x68, 0x1e}, {0x00, 0x1f},
+	{0x00, 0x20}, {0x01, 0x21}, {0x27, 0x22}, {0x40, 0x23},
+	{0x27, 0x24}, {0x5f, 0x25}, {0x00, 0x26}, {0x16, 0x27},
+	{0x23, 0x28}, /* initial */ /* initial */ /* initial */
+	/* initial */ /* initial */ {0x00, 0x2e}, {0x00, 0x2f},
+	{0x00, 0x30}, {0x00, 0x31}, {0x00, 0x32}, {0x00, 0x33},
+	{0x00, 0x34}, {0x00, 0x35}, {0x00, 0x36}, {0x00, 0x37},
+	{0x00, 0x38}, {0x8c, 0x39}, {0xc8, 0x3A}, {0x80, 0x3b},
+	{0x00, 0x3c}, {0x17, 0x3d}, {0x85, 0x3e}, /* initial */
+	{0xa0, 0x40}, {0x00, 0x41}, {0x00, 0x42}, {0x00, 0x43},
+	{0x08, 0x44}, {0x12, 0x45}, {0x00, 0x46}, {0x20, 0x47},
+	{0x30, 0x48}, {0x18, 0x49}, {0x20, 0x4a}, {0x4d, 0x4b},
+	{0x0c, 0x4c}, {0xe0, 0x4d}, {0x20, 0x4e}, {0x89, 0x4f},
+	{0x21, 0x50}, {0x80, 0x51}, {0x02, 0x52}, {0x00, 0x53},
+	{0x30, 0x54}, {0x90, 0x55}, {0x40, 0x56}, {0x06, 0x57},
+	{0x0f, 0x58}, {0x23, 0x59}, {0x08, 0x5A}, {0x04, 0x5b},
+	{0x08, 0x5c}, {0x08, 0x5d}, {0x08, 0x5e}, {0x08, 0x5f},
+	{TCM825X_VAL_TERM, TCM825X_REG_TERM}
+};
+#endif
 
 static int tcm825x_is_okay(void)
 {
@@ -182,7 +221,10 @@ static int tcm825x_power_set(int power)
 
 static const struct tcm825x_reg *tcm825x_default_regs(void)
 {
-	return tcm825x_default_regs_;
+	if (machine_is_nokia_n810())
+		return tcm825x_regs_n810;
+
+	return tcm825x_regs_n800;
 }
 
 #ifdef OMAP24XX_CAMERA_JAM_HACK
@@ -298,12 +340,21 @@ static int tcm825x_ifparm(struct v4l2_ifparm *p)
 	return 0;
 }
 
+static int tcm825x_is_upside_down(void)
+{
+	if (machine_is_nokia_n810())
+		return 1;
+
+	return 0;
+}
+
 const struct tcm825x_platform_data n800_tcm825x_platform_data = {
-	.is_okay      = tcm825x_is_okay,
-	.power_set    = tcm825x_power_set,
-	.default_regs = tcm825x_default_regs,
-	.needs_reset  = tcm825x_needs_reset,
-	.ifparm	      = tcm825x_ifparm,
+	.is_okay	= tcm825x_is_okay,
+	.power_set	= tcm825x_power_set,
+	.default_regs	= tcm825x_default_regs,
+	.needs_reset	= tcm825x_needs_reset,
+	.ifparm		= tcm825x_ifparm,
+	.is_upside_down	= tcm825x_is_upside_down,
 };
 
 void __init n800_cam_init(void)
-- 
1.5.0.6


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

* [PATCH 3/3] N800: Select tcm825x only if wanted
  2008-05-13 16:04 ` [PATCH 2/3] N810: Don't export camera orientation Sakari Ailus
@ 2008-05-13 16:04   ` Sakari Ailus
  2008-05-13 20:01   ` [PATCH 2/3] N810: Don't export camera orientation Felipe Balbi
  1 sibling, 0 replies; 17+ messages in thread
From: Sakari Ailus @ 2008-05-13 16:04 UTC (permalink / raw)
  To: linux-omap

Don't enable automatically TCM825x on N800 unless
VIDEO_HELPER_CHIPS_AUTO is selected.

Signed-off-by: Sakari Ailus <sakari.ailus@nokia.com>
---
 arch/arm/mach-omap2/Kconfig |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
index 5c229cc..94beff0 100644
--- a/arch/arm/mach-omap2/Kconfig
+++ b/arch/arm/mach-omap2/Kconfig
@@ -35,7 +35,7 @@ config MACH_OMAP_GENERIC
 config MACH_NOKIA_N800
 	bool "Nokia N800"
 	depends on ARCH_OMAP2420
-	select VIDEO_TCM825X if VIDEO_OMAP2
+	select VIDEO_TCM825X if VIDEO_OMAP2 && VIDEO_HELPER_CHIPS_AUTO
 	select CBUS if VIDEO_TCM825X
 	select CBUS_RETU if VIDEO_TCM825X
 	select MENELAUS if VIDEO_TCM825X
-- 
1.5.0.6


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

* Re: [PATCH 1/3] TCM825x: Include invertation of image mirroring in configuration
  2008-05-13 16:04 [PATCH 1/3] TCM825x: Include invertation of image mirroring in configuration Sakari Ailus
  2008-05-13 16:04 ` [PATCH 2/3] N810: Don't export camera orientation Sakari Ailus
@ 2008-05-13 19:53 ` Felipe Balbi
  1 sibling, 0 replies; 17+ messages in thread
From: Felipe Balbi @ 2008-05-13 19:53 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: linux-omap



On Tue, 13 May 2008 19:04:21 +0300, Sakari Ailus <sakari.ailus@nokia.com>
wrote:
> Add invertation of image mirroring register bits to default
> configuration.
> 
> This is useful when the camera module is e.g. mounted upside down.
> 
> Signed-off-by: Sakari Ailus <sakari.ailus@nokia.com>
> ---
>  drivers/media/video/tcm825x.c |    6 ++++++
>  drivers/media/video/tcm825x.h |    1 +
>  2 files changed, 7 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/media/video/tcm825x.c
b/drivers/media/video/tcm825x.c
> index e57a646..216638e 100644
> --- a/drivers/media/video/tcm825x.c
> +++ b/drivers/media/video/tcm825x.c
> @@ -523,6 +523,9 @@ static int ioctl_g_ctrl(struct v4l2_int_device *s,
>  	if (val < 0)
>  		return val;
> 
> +	if (vc->id == V4L2_CID_HFLIP || vc->id == V4L2_CID_VFLIP)
> +		val ^= sensor->platform_data->is_upside_down();

you didnt put any implementation of this function, but i was wondering if
bit field would be enough?

> +
>  	vc->value = val;
>  	return 0;
>  }
> @@ -556,6 +559,9 @@ static int ioctl_s_ctrl(struct v4l2_int_device *s,
>  	if (lvc == NULL)
>  		return -EINVAL;
> 
> +	if (vc->id == V4L2_CID_HFLIP || vc->id == V4L2_CID_VFLIP)
> +		val ^= sensor->platform_data->is_upside_down();
> +
>  	val = val << lvc->start_bit;
>  	if (tcm825x_write_reg_mask(client, lvc->reg, val))
>  		return -EIO;
> diff --git a/drivers/media/video/tcm825x.h
b/drivers/media/video/tcm825x.h
> index 966765b..770ebac 100644
> --- a/drivers/media/video/tcm825x.h
> +++ b/drivers/media/video/tcm825x.h
> @@ -182,6 +182,7 @@ struct tcm825x_platform_data {
>  	int (*needs_reset)(struct v4l2_int_device *s, void *buf,
>  			   struct v4l2_pix_format *fmt);
>  	int (*ifparm)(struct v4l2_ifparm *p);
> +	int (*is_upside_down)(void);
>  };
> 
>  /* Array of image sizes supported by TCM825X.  These must be ordered
from
> --
> 1.5.0.6
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
-- 
Best Regards,

Felipe Balbi
http://felipebalbi.com
me@felipebalbi.com


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

* Re: [PATCH 2/3] N810: Don't export camera orientation
  2008-05-13 16:04 ` [PATCH 2/3] N810: Don't export camera orientation Sakari Ailus
  2008-05-13 16:04   ` [PATCH 3/3] N800: Select tcm825x only if wanted Sakari Ailus
@ 2008-05-13 20:01   ` Felipe Balbi
  2008-05-14 12:04     ` Sakari Ailus
  1 sibling, 1 reply; 17+ messages in thread
From: Felipe Balbi @ 2008-05-13 20:01 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: linux-omap



On Tue, 13 May 2008 19:04:22 +0300, Sakari Ailus <sakari.ailus@nokia.com>
wrote:
> On Nokia N810 the camera module is mounted upside down. This affects
> the mirroring controls. This patch inverts the controls for N810.
> 
> Signed-off-by: Sakari Ailus <sakari.ailus@nokia.com>
> ---
>  arch/arm/mach-omap2/board-n800-camera.c |   65
> +++++++++++++++++++++++++++---
>  1 files changed, 58 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/board-n800-camera.c
> b/arch/arm/mach-omap2/board-n800-camera.c
> index 19be30d..9c2bead 100644
> --- a/arch/arm/mach-omap2/board-n800-camera.c
> +++ b/arch/arm/mach-omap2/board-n800-camera.c
> @@ -28,6 +28,8 @@
> 
>  #include <media/v4l2-int-device.h>
> 
> +#include <asm/mach-types.h>
> +
>  #include <asm/arch/menelaus.h>
>  #include <asm/arch/gpio.h>
>  #include <asm/arch/board.h>
> @@ -71,7 +73,8 @@ static int frames_after_reset;
>  static int saturated_count;
>  #endif
> 
> -const static struct tcm825x_reg tcm825x_default_regs_[] = {
> +#ifdef CONFIG_MACH_NOKIA_N800
> +const static struct tcm825x_reg tcm825x_regs_n800[] = {
>  	/* initial settings for 2.5 V */
>  	{0x00, 0x03}, {0x03, 0x29}, {0xaa, 0x2a}, {0xc0, 0x2b},
>  	{0x10, 0x2c}, {0x4c, 0x2d}, {0x9c, 0x3f},
> @@ -103,6 +106,42 @@ const static struct tcm825x_reg
> tcm825x_default_regs_[] = {
>  	{0x08, 0x5c}, {0x08, 0x5d}, {0x08, 0x5e}, {0x08, 0x5f},
>  	{TCM825X_VAL_TERM, TCM825X_REG_TERM}
>  };
> +#endif
> +
> +#ifdef CONFIG_MACH_NOKIA_N810
> +const static struct tcm825x_reg tcm825x_regs_n810[] = {
> +	/* initial settings for 2.5 V */
> +	{0x00, 0x03}, {0x03, 0x29}, {0xaa, 0x2a}, {0xc0, 0x2b},
> +	{0x10, 0x2c}, {0x4c, 0x2d}, {0x9c, 0x3f},
> +
> +	/* main settings */
> +	{0x00, 0x00}, {0x30, 0x01}, {0x0e, 0x02}, /* initial */
> +	{0xcf, 0x04}, {0x02, 0x05}, {0x0d, 0x06}, {0xc0, 0x07},
> +	{0x38, 0x08}, {0x50, 0x09}, {0x80, 0x0a}, {0x40, 0x0b},
> +	{0x40, 0x0c}, {0x00, 0x0d}, {0x04, 0x0e}, {0x04, 0x0f},
> +	{0x22, 0x10}, {0x96, 0x11}, {0xf0, 0x12}, {0x08, 0x13},
> +	{0x08, 0x14}, {0x30, 0x15}, {0x30, 0x16}, {0x01, 0x17},
> +	{0x40, 0x18}, {0x87, 0x19}, {0x2b, 0x1a}, {0x84, 0x1b},
> +	{0x52, 0x1c}, {0x44, 0x1d}, {0x68, 0x1e}, {0x00, 0x1f},
> +	{0x00, 0x20}, {0x01, 0x21}, {0x27, 0x22}, {0x40, 0x23},
> +	{0x27, 0x24}, {0x5f, 0x25}, {0x00, 0x26}, {0x16, 0x27},
> +	{0x23, 0x28}, /* initial */ /* initial */ /* initial */
> +	/* initial */ /* initial */ {0x00, 0x2e}, {0x00, 0x2f},
> +	{0x00, 0x30}, {0x00, 0x31}, {0x00, 0x32}, {0x00, 0x33},
> +	{0x00, 0x34}, {0x00, 0x35}, {0x00, 0x36}, {0x00, 0x37},
> +	{0x00, 0x38}, {0x8c, 0x39}, {0xc8, 0x3A}, {0x80, 0x3b},
> +	{0x00, 0x3c}, {0x17, 0x3d}, {0x85, 0x3e}, /* initial */
> +	{0xa0, 0x40}, {0x00, 0x41}, {0x00, 0x42}, {0x00, 0x43},
> +	{0x08, 0x44}, {0x12, 0x45}, {0x00, 0x46}, {0x20, 0x47},
> +	{0x30, 0x48}, {0x18, 0x49}, {0x20, 0x4a}, {0x4d, 0x4b},
> +	{0x0c, 0x4c}, {0xe0, 0x4d}, {0x20, 0x4e}, {0x89, 0x4f},
> +	{0x21, 0x50}, {0x80, 0x51}, {0x02, 0x52}, {0x00, 0x53},
> +	{0x30, 0x54}, {0x90, 0x55}, {0x40, 0x56}, {0x06, 0x57},
> +	{0x0f, 0x58}, {0x23, 0x59}, {0x08, 0x5A}, {0x04, 0x5b},
> +	{0x08, 0x5c}, {0x08, 0x5d}, {0x08, 0x5e}, {0x08, 0x5f},
> +	{TCM825X_VAL_TERM, TCM825X_REG_TERM}
> +};
> +#endif
> 
>  static int tcm825x_is_okay(void)
>  {
> @@ -182,7 +221,10 @@ static int tcm825x_power_set(int power)
> 
>  static const struct tcm825x_reg *tcm825x_default_regs(void)
>  {
> -	return tcm825x_default_regs_;
> +	if (machine_is_nokia_n810())
> +		return tcm825x_regs_n810;
> +
> +	return tcm825x_regs_n800;
>  }
> 
>  #ifdef OMAP24XX_CAMERA_JAM_HACK
> @@ -298,12 +340,21 @@ static int tcm825x_ifparm(struct v4l2_ifparm *p)
>  	return 0;
>  }
> 
> +static int tcm825x_is_upside_down(void)
> +{
> +	if (machine_is_nokia_n810())
> +		return 1;
> +
> +	return 0;
> +}
> +
>  const struct tcm825x_platform_data n800_tcm825x_platform_data = {
> -	.is_okay      = tcm825x_is_okay,
> -	.power_set    = tcm825x_power_set,
> -	.default_regs = tcm825x_default_regs,
> -	.needs_reset  = tcm825x_needs_reset,
> -	.ifparm	      = tcm825x_ifparm,
> +	.is_okay	= tcm825x_is_okay,
> +	.power_set	= tcm825x_power_set,
> +	.default_regs	= tcm825x_default_regs,
> +	.needs_reset	= tcm825x_needs_reset,
> +	.ifparm		= tcm825x_ifparm,
> +	.is_upside_down	= tcm825x_is_upside_down,

ok, now i got your point but this could be:
.is_upside_down = machine_is_nokia_n810() ? 1 : 0,

>  };
> 
>  void __init n800_cam_init(void)
> --
> 1.5.0.6
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
-- 
Best Regards,

Felipe Balbi
http://felipebalbi.com
me@felipebalbi.com


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

* Re: [PATCH 2/3] N810: Don't export camera orientation
  2008-05-13 20:01   ` [PATCH 2/3] N810: Don't export camera orientation Felipe Balbi
@ 2008-05-14 12:04     ` Sakari Ailus
  2008-05-14 12:05       ` [PATCH 1/3] TCM825x: Include invertation of image mirroring in configuration Sakari Ailus
  2008-05-14 22:58       ` [PATCH 2/3] N810: Don't export camera orientation Felipe Balbi
  0 siblings, 2 replies; 17+ messages in thread
From: Sakari Ailus @ 2008-05-14 12:04 UTC (permalink / raw)
  To: ext Felipe Balbi; +Cc: linux-omap

ext Felipe Balbi wrote:

Hello Felipe, and thanks for reviewing the patch! :)

> On Tue, 13 May 2008 19:04:22 +0300, Sakari Ailus <sakari.ailus@nokia.com>
> wrote:
>> @@ -298,12 +340,21 @@ static int tcm825x_ifparm(struct v4l2_ifparm *p)
>>  	return 0;
>>  }
>>
>> +static int tcm825x_is_upside_down(void)
>> +{
>> +	if (machine_is_nokia_n810())
>> +		return 1;
>> +
>> +	return 0;
>> +}
>> +
>>  const struct tcm825x_platform_data n800_tcm825x_platform_data = {
>> -	.is_okay      = tcm825x_is_okay,
>> -	.power_set    = tcm825x_power_set,
>> -	.default_regs = tcm825x_default_regs,
>> -	.needs_reset  = tcm825x_needs_reset,
>> -	.ifparm	      = tcm825x_ifparm,
>> +	.is_okay	= tcm825x_is_okay,
>> +	.power_set	= tcm825x_power_set,
>> +	.default_regs	= tcm825x_default_regs,
>> +	.needs_reset	= tcm825x_needs_reset,
>> +	.ifparm		= tcm825x_ifparm,
>> +	.is_upside_down	= tcm825x_is_upside_down,
> 
> ok, now i got your point but this could be:
> .is_upside_down = machine_is_nokia_n810() ? 1 : 0,

This doesn't work because machine_is_nokia_n810() is not constant.

Anyway, tcm825x_is_upside_down can be made more simple as it could just 
return machine_is_nokia_n810().

I'll send new patches.

-- 
Sakari Ailus
sakari.ailus@nokia.com

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

* [PATCH 1/3] TCM825x: Include invertation of image mirroring in configuration
  2008-05-14 12:04     ` Sakari Ailus
@ 2008-05-14 12:05       ` Sakari Ailus
  2008-05-14 12:05         ` [PATCH 2/3] N810: Don't export camera orientation Sakari Ailus
  2008-05-16 17:42         ` [PATCH 1/3] TCM825x: Include invertation of image mirroring in configuration Tony Lindgren
  2008-05-14 22:58       ` [PATCH 2/3] N810: Don't export camera orientation Felipe Balbi
  1 sibling, 2 replies; 17+ messages in thread
From: Sakari Ailus @ 2008-05-14 12:05 UTC (permalink / raw)
  To: linux-omap

Add invertation of image mirroring register bits to default
configuration.

This is useful when the camera module is e.g. mounted upside down.

Signed-off-by: Sakari Ailus <sakari.ailus@nokia.com>
---
 drivers/media/video/tcm825x.c |    6 ++++++
 drivers/media/video/tcm825x.h |    1 +
 2 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/drivers/media/video/tcm825x.c b/drivers/media/video/tcm825x.c
index e57a646..216638e 100644
--- a/drivers/media/video/tcm825x.c
+++ b/drivers/media/video/tcm825x.c
@@ -523,6 +523,9 @@ static int ioctl_g_ctrl(struct v4l2_int_device *s,
 	if (val < 0)
 		return val;
 
+	if (vc->id == V4L2_CID_HFLIP || vc->id == V4L2_CID_VFLIP)
+		val ^= sensor->platform_data->is_upside_down();
+
 	vc->value = val;
 	return 0;
 }
@@ -556,6 +559,9 @@ static int ioctl_s_ctrl(struct v4l2_int_device *s,
 	if (lvc == NULL)
 		return -EINVAL;
 
+	if (vc->id == V4L2_CID_HFLIP || vc->id == V4L2_CID_VFLIP)
+		val ^= sensor->platform_data->is_upside_down();
+
 	val = val << lvc->start_bit;
 	if (tcm825x_write_reg_mask(client, lvc->reg, val))
 		return -EIO;
diff --git a/drivers/media/video/tcm825x.h b/drivers/media/video/tcm825x.h
index 966765b..770ebac 100644
--- a/drivers/media/video/tcm825x.h
+++ b/drivers/media/video/tcm825x.h
@@ -182,6 +182,7 @@ struct tcm825x_platform_data {
 	int (*needs_reset)(struct v4l2_int_device *s, void *buf,
 			   struct v4l2_pix_format *fmt);
 	int (*ifparm)(struct v4l2_ifparm *p);
+	int (*is_upside_down)(void);
 };
 
 /* Array of image sizes supported by TCM825X.  These must be ordered from
-- 
1.5.0.6


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

* [PATCH 2/3] N810: Don't export camera orientation
  2008-05-14 12:05       ` [PATCH 1/3] TCM825x: Include invertation of image mirroring in configuration Sakari Ailus
@ 2008-05-14 12:05         ` Sakari Ailus
  2008-05-14 12:05           ` [PATCH 3/3] N800: Select tcm825x only if wanted Sakari Ailus
  2008-05-16 17:44           ` [PATCH 2/3] N810: Don't export camera orientation Tony Lindgren
  2008-05-16 17:42         ` [PATCH 1/3] TCM825x: Include invertation of image mirroring in configuration Tony Lindgren
  1 sibling, 2 replies; 17+ messages in thread
From: Sakari Ailus @ 2008-05-14 12:05 UTC (permalink / raw)
  To: linux-omap

On Nokia N810 the camera module is mounted upside down. This affects
the mirroring controls. This patch inverts the controls for N810.

Signed-off-by: Sakari Ailus <sakari.ailus@nokia.com>
---
 arch/arm/mach-omap2/board-n800-camera.c |   62 +++++++++++++++++++++++++++---
 1 files changed, 55 insertions(+), 7 deletions(-)

diff --git a/arch/arm/mach-omap2/board-n800-camera.c b/arch/arm/mach-omap2/board-n800-camera.c
index 19be30d..b525125 100644
--- a/arch/arm/mach-omap2/board-n800-camera.c
+++ b/arch/arm/mach-omap2/board-n800-camera.c
@@ -28,6 +28,8 @@
 
 #include <media/v4l2-int-device.h>
 
+#include <asm/mach-types.h>
+
 #include <asm/arch/menelaus.h>
 #include <asm/arch/gpio.h>
 #include <asm/arch/board.h>
@@ -71,7 +73,8 @@ static int frames_after_reset;
 static int saturated_count;
 #endif
 
-const static struct tcm825x_reg tcm825x_default_regs_[] = {
+#ifdef CONFIG_MACH_NOKIA_N800
+const static struct tcm825x_reg tcm825x_regs_n800[] = {
 	/* initial settings for 2.5 V */
 	{0x00, 0x03}, {0x03, 0x29}, {0xaa, 0x2a}, {0xc0, 0x2b},
 	{0x10, 0x2c}, {0x4c, 0x2d}, {0x9c, 0x3f},
@@ -103,6 +106,42 @@ const static struct tcm825x_reg tcm825x_default_regs_[] = {
 	{0x08, 0x5c}, {0x08, 0x5d}, {0x08, 0x5e}, {0x08, 0x5f},
 	{TCM825X_VAL_TERM, TCM825X_REG_TERM}
 };
+#endif
+
+#ifdef CONFIG_MACH_NOKIA_N810
+const static struct tcm825x_reg tcm825x_regs_n810[] = {
+	/* initial settings for 2.5 V */
+	{0x00, 0x03}, {0x03, 0x29}, {0xaa, 0x2a}, {0xc0, 0x2b},
+	{0x10, 0x2c}, {0x4c, 0x2d}, {0x9c, 0x3f},
+
+	/* main settings */
+	{0x00, 0x00}, {0x30, 0x01}, {0x0e, 0x02}, /* initial */
+	{0xcf, 0x04}, {0x02, 0x05}, {0x0d, 0x06}, {0xc0, 0x07},
+	{0x38, 0x08}, {0x50, 0x09}, {0x80, 0x0a}, {0x40, 0x0b},
+	{0x40, 0x0c}, {0x00, 0x0d}, {0x04, 0x0e}, {0x04, 0x0f},
+	{0x22, 0x10}, {0x96, 0x11}, {0xf0, 0x12}, {0x08, 0x13},
+	{0x08, 0x14}, {0x30, 0x15}, {0x30, 0x16}, {0x01, 0x17},
+	{0x40, 0x18}, {0x87, 0x19}, {0x2b, 0x1a}, {0x84, 0x1b},
+	{0x52, 0x1c}, {0x44, 0x1d}, {0x68, 0x1e}, {0x00, 0x1f},
+	{0x00, 0x20}, {0x01, 0x21}, {0x27, 0x22}, {0x40, 0x23},
+	{0x27, 0x24}, {0x5f, 0x25}, {0x00, 0x26}, {0x16, 0x27},
+	{0x23, 0x28}, /* initial */ /* initial */ /* initial */
+	/* initial */ /* initial */ {0x00, 0x2e}, {0x00, 0x2f},
+	{0x00, 0x30}, {0x00, 0x31}, {0x00, 0x32}, {0x00, 0x33},
+	{0x00, 0x34}, {0x00, 0x35}, {0x00, 0x36}, {0x00, 0x37},
+	{0x00, 0x38}, {0x8c, 0x39}, {0xc8, 0x3A}, {0x80, 0x3b},
+	{0x00, 0x3c}, {0x17, 0x3d}, {0x85, 0x3e}, /* initial */
+	{0xa0, 0x40}, {0x00, 0x41}, {0x00, 0x42}, {0x00, 0x43},
+	{0x08, 0x44}, {0x12, 0x45}, {0x00, 0x46}, {0x20, 0x47},
+	{0x30, 0x48}, {0x18, 0x49}, {0x20, 0x4a}, {0x4d, 0x4b},
+	{0x0c, 0x4c}, {0xe0, 0x4d}, {0x20, 0x4e}, {0x89, 0x4f},
+	{0x21, 0x50}, {0x80, 0x51}, {0x02, 0x52}, {0x00, 0x53},
+	{0x30, 0x54}, {0x90, 0x55}, {0x40, 0x56}, {0x06, 0x57},
+	{0x0f, 0x58}, {0x23, 0x59}, {0x08, 0x5A}, {0x04, 0x5b},
+	{0x08, 0x5c}, {0x08, 0x5d}, {0x08, 0x5e}, {0x08, 0x5f},
+	{TCM825X_VAL_TERM, TCM825X_REG_TERM}
+};
+#endif
 
 static int tcm825x_is_okay(void)
 {
@@ -182,7 +221,10 @@ static int tcm825x_power_set(int power)
 
 static const struct tcm825x_reg *tcm825x_default_regs(void)
 {
-	return tcm825x_default_regs_;
+	if (machine_is_nokia_n810())
+		return tcm825x_regs_n810;
+
+	return tcm825x_regs_n800;
 }
 
 #ifdef OMAP24XX_CAMERA_JAM_HACK
@@ -298,12 +340,18 @@ static int tcm825x_ifparm(struct v4l2_ifparm *p)
 	return 0;
 }
 
+static int tcm825x_is_upside_down(void)
+{
+	return machine_is_nokia_n810();
+}
+
 const struct tcm825x_platform_data n800_tcm825x_platform_data = {
-	.is_okay      = tcm825x_is_okay,
-	.power_set    = tcm825x_power_set,
-	.default_regs = tcm825x_default_regs,
-	.needs_reset  = tcm825x_needs_reset,
-	.ifparm	      = tcm825x_ifparm,
+	.is_okay	= tcm825x_is_okay,
+	.power_set	= tcm825x_power_set,
+	.default_regs	= tcm825x_default_regs,
+	.needs_reset	= tcm825x_needs_reset,
+	.ifparm		= tcm825x_ifparm,
+	.is_upside_down	= tcm825x_is_upside_down,
 };
 
 void __init n800_cam_init(void)
-- 
1.5.0.6


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

* [PATCH 3/3] N800: Select tcm825x only if wanted
  2008-05-14 12:05         ` [PATCH 2/3] N810: Don't export camera orientation Sakari Ailus
@ 2008-05-14 12:05           ` Sakari Ailus
  2008-05-16 17:44             ` Tony Lindgren
  2008-05-16 17:44           ` [PATCH 2/3] N810: Don't export camera orientation Tony Lindgren
  1 sibling, 1 reply; 17+ messages in thread
From: Sakari Ailus @ 2008-05-14 12:05 UTC (permalink / raw)
  To: linux-omap

Don't enable automatically TCM825x on N800 unless
VIDEO_HELPER_CHIPS_AUTO is selected.

Signed-off-by: Sakari Ailus <sakari.ailus@nokia.com>
---
 arch/arm/mach-omap2/Kconfig |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
index 5c229cc..94beff0 100644
--- a/arch/arm/mach-omap2/Kconfig
+++ b/arch/arm/mach-omap2/Kconfig
@@ -35,7 +35,7 @@ config MACH_OMAP_GENERIC
 config MACH_NOKIA_N800
 	bool "Nokia N800"
 	depends on ARCH_OMAP2420
-	select VIDEO_TCM825X if VIDEO_OMAP2
+	select VIDEO_TCM825X if VIDEO_OMAP2 && VIDEO_HELPER_CHIPS_AUTO
 	select CBUS if VIDEO_TCM825X
 	select CBUS_RETU if VIDEO_TCM825X
 	select MENELAUS if VIDEO_TCM825X
-- 
1.5.0.6


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

* Re: [PATCH 2/3] N810: Don't export camera orientation
  2008-05-14 12:04     ` Sakari Ailus
  2008-05-14 12:05       ` [PATCH 1/3] TCM825x: Include invertation of image mirroring in configuration Sakari Ailus
@ 2008-05-14 22:58       ` Felipe Balbi
  2008-05-15  6:54         ` andrzej zaborowski
  1 sibling, 1 reply; 17+ messages in thread
From: Felipe Balbi @ 2008-05-14 22:58 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: ext Felipe Balbi, linux-omap

On Wed, May 14, 2008 at 03:04:37PM +0300, Sakari Ailus wrote:
> ext Felipe Balbi wrote:
>
> Hello Felipe, and thanks for reviewing the patch! :)
>
>> On Tue, 13 May 2008 19:04:22 +0300, Sakari Ailus <sakari.ailus@nokia.com>
>> wrote:
>>> @@ -298,12 +340,21 @@ static int tcm825x_ifparm(struct v4l2_ifparm *p)
>>>  	return 0;
>>>  }
>>>
>>> +static int tcm825x_is_upside_down(void)
>>> +{
>>> +	if (machine_is_nokia_n810())
>>> +		return 1;
>>> +
>>> +	return 0;
>>> +}
>>> +
>>>  const struct tcm825x_platform_data n800_tcm825x_platform_data = {
>>> -	.is_okay      = tcm825x_is_okay,
>>> -	.power_set    = tcm825x_power_set,
>>> -	.default_regs = tcm825x_default_regs,
>>> -	.needs_reset  = tcm825x_needs_reset,
>>> -	.ifparm	      = tcm825x_ifparm,
>>> +	.is_okay	= tcm825x_is_okay,
>>> +	.power_set	= tcm825x_power_set,
>>> +	.default_regs	= tcm825x_default_regs,
>>> +	.needs_reset	= tcm825x_needs_reset,
>>> +	.ifparm		= tcm825x_ifparm,
>>> +	.is_upside_down	= tcm825x_is_upside_down,
>>
>> ok, now i got your point but this could be:
>> .is_upside_down = machine_is_nokia_n810() ? 1 : 0,
>
> This doesn't work because machine_is_nokia_n810() is not constant.
>
> Anyway, tcm825x_is_upside_down can be made more simple as it could just  
> return machine_is_nokia_n810().
>
> I'll send new patches.

Didn't quite get, machine_is_nokia_n810() will always be true when
running in n810. Could you clarify a bit :-p

-- 
Best Regards,

Felipe Balbi
me@felipebalbi.com
http://blog.felipebalbi.com

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

* Re: [PATCH 2/3] N810: Don't export camera orientation
  2008-05-14 22:58       ` [PATCH 2/3] N810: Don't export camera orientation Felipe Balbi
@ 2008-05-15  6:54         ` andrzej zaborowski
  2008-05-15  7:57           ` Felipe Balbi
  0 siblings, 1 reply; 17+ messages in thread
From: andrzej zaborowski @ 2008-05-15  6:54 UTC (permalink / raw)
  To: me; +Cc: Sakari Ailus, linux-omap

On 15/05/2008, Felipe Balbi <me@felipebalbi.com> wrote:
> On Wed, May 14, 2008 at 03:04:37PM +0300, Sakari Ailus wrote:
>  > ext Felipe Balbi wrote:
>  >
>  > Hello Felipe, and thanks for reviewing the patch! :)
>  >
>  >> On Tue, 13 May 2008 19:04:22 +0300, Sakari Ailus <sakari.ailus@nokia.com>
>  >> wrote:
>  >>> @@ -298,12 +340,21 @@ static int tcm825x_ifparm(struct v4l2_ifparm *p)
>  >>>     return 0;
>  >>>  }
>  >>>
>  >>> +static int tcm825x_is_upside_down(void)
>  >>> +{
>  >>> +   if (machine_is_nokia_n810())
>  >>> +           return 1;
>  >>> +
>  >>> +   return 0;
>  >>> +}
>  >>> +
>  >>>  const struct tcm825x_platform_data n800_tcm825x_platform_data = {
>  >>> -   .is_okay      = tcm825x_is_okay,
>  >>> -   .power_set    = tcm825x_power_set,
>  >>> -   .default_regs = tcm825x_default_regs,
>  >>> -   .needs_reset  = tcm825x_needs_reset,
>  >>> -   .ifparm       = tcm825x_ifparm,
>  >>> +   .is_okay        = tcm825x_is_okay,
>  >>> +   .power_set      = tcm825x_power_set,
>  >>> +   .default_regs   = tcm825x_default_regs,
>  >>> +   .needs_reset    = tcm825x_needs_reset,
>  >>> +   .ifparm         = tcm825x_ifparm,
>  >>> +   .is_upside_down = tcm825x_is_upside_down,
>  >>
>  >> ok, now i got your point but this could be:
>  >> .is_upside_down = machine_is_nokia_n810() ? 1 : 0,
>  >
>  > This doesn't work because machine_is_nokia_n810() is not constant.
>  >
>  > Anyway, tcm825x_is_upside_down can be made more simple as it could just
>  > return machine_is_nokia_n810().
>  >
>  > I'll send new patches.
>
>  Didn't quite get, machine_is_nokia_n810() will always be true when
>  running in n810. Could you clarify a bit :-p

It'll *return* true, but C initialisers must be constants.  It simply
wouldn't compile.

Cheers
-- 
Please do not print this email unless absolutely necessary. Spread
environmental awareness.

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

* Re: [PATCH 2/3] N810: Don't export camera orientation
  2008-05-15  6:54         ` andrzej zaborowski
@ 2008-05-15  7:57           ` Felipe Balbi
  2008-05-15  8:11             ` andrzej zaborowski
  0 siblings, 1 reply; 17+ messages in thread
From: Felipe Balbi @ 2008-05-15  7:57 UTC (permalink / raw)
  To: andrzej zaborowski; +Cc: me, Sakari Ailus, linux-omap

On Thu, May 15, 2008 at 08:54:34AM +0200, andrzej zaborowski wrote:
> On 15/05/2008, Felipe Balbi <me@felipebalbi.com> wrote:
> > On Wed, May 14, 2008 at 03:04:37PM +0300, Sakari Ailus wrote:
> >  > ext Felipe Balbi wrote:
> >  >
> >  > Hello Felipe, and thanks for reviewing the patch! :)
> >  >
> >  >> On Tue, 13 May 2008 19:04:22 +0300, Sakari Ailus <sakari.ailus@nokia.com>
> >  >> wrote:
> >  >>> @@ -298,12 +340,21 @@ static int tcm825x_ifparm(struct v4l2_ifparm *p)
> >  >>>     return 0;
> >  >>>  }
> >  >>>
> >  >>> +static int tcm825x_is_upside_down(void)
> >  >>> +{
> >  >>> +   if (machine_is_nokia_n810())
> >  >>> +           return 1;
> >  >>> +
> >  >>> +   return 0;
> >  >>> +}
> >  >>> +
> >  >>>  const struct tcm825x_platform_data n800_tcm825x_platform_data = {
> >  >>> -   .is_okay      = tcm825x_is_okay,
> >  >>> -   .power_set    = tcm825x_power_set,
> >  >>> -   .default_regs = tcm825x_default_regs,
> >  >>> -   .needs_reset  = tcm825x_needs_reset,
> >  >>> -   .ifparm       = tcm825x_ifparm,
> >  >>> +   .is_okay        = tcm825x_is_okay,
> >  >>> +   .power_set      = tcm825x_power_set,
> >  >>> +   .default_regs   = tcm825x_default_regs,
> >  >>> +   .needs_reset    = tcm825x_needs_reset,
> >  >>> +   .ifparm         = tcm825x_ifparm,
> >  >>> +   .is_upside_down = tcm825x_is_upside_down,
> >  >>
> >  >> ok, now i got your point but this could be:
> >  >> .is_upside_down = machine_is_nokia_n810() ? 1 : 0,
> >  >
> >  > This doesn't work because machine_is_nokia_n810() is not constant.
> >  >
> >  > Anyway, tcm825x_is_upside_down can be made more simple as it could just
> >  > return machine_is_nokia_n810().
> >  >
> >  > I'll send new patches.
> >
> >  Didn't quite get, machine_is_nokia_n810() will always be true when
> >  running in n810. Could you clarify a bit :-p
> 
> It'll *return* true, but C initialisers must be constants.  It simply
> wouldn't compile.

and that's why i was using ?:

machine_is_nokia_n810 ? 1 : 0

the same as:

if (machine_is_nokia_n810)
	return 1;
else
	return 0;

> 
> Cheers
> -- 
> Please do not print this email unless absolutely necessary. Spread
> environmental awareness.

-- 
Best Regards,

Felipe Balbi
me@felipebalbi.com
http://blog.felipebalbi.com

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

* Re: [PATCH 2/3] N810: Don't export camera orientation
  2008-05-15  7:57           ` Felipe Balbi
@ 2008-05-15  8:11             ` andrzej zaborowski
  2008-05-15  8:17               ` Felipe Balbi
  0 siblings, 1 reply; 17+ messages in thread
From: andrzej zaborowski @ 2008-05-15  8:11 UTC (permalink / raw)
  To: me; +Cc: Sakari Ailus, linux-omap

On 15/05/2008, Felipe Balbi <me@felipebalbi.com> wrote:
> On Thu, May 15, 2008 at 08:54:34AM +0200, andrzej zaborowski wrote:
>  > On 15/05/2008, Felipe Balbi <me@felipebalbi.com> wrote:
>  > > On Wed, May 14, 2008 at 03:04:37PM +0300, Sakari Ailus wrote:
>  > >  > ext Felipe Balbi wrote:
>  > >  >
>  > >  > Hello Felipe, and thanks for reviewing the patch! :)
>  > >  >
>  > >  >> On Tue, 13 May 2008 19:04:22 +0300, Sakari Ailus <sakari.ailus@nokia.com>
>  > >  >> wrote:
>  > >  >>> @@ -298,12 +340,21 @@ static int tcm825x_ifparm(struct v4l2_ifparm *p)
>  > >  >>>     return 0;
>  > >  >>>  }
>  > >  >>>
>  > >  >>> +static int tcm825x_is_upside_down(void)
>  > >  >>> +{
>  > >  >>> +   if (machine_is_nokia_n810())
>  > >  >>> +           return 1;
>  > >  >>> +
>  > >  >>> +   return 0;
>  > >  >>> +}
>  > >  >>> +
>  > >  >>>  const struct tcm825x_platform_data n800_tcm825x_platform_data = {
>  > >  >>> -   .is_okay      = tcm825x_is_okay,
>  > >  >>> -   .power_set    = tcm825x_power_set,
>  > >  >>> -   .default_regs = tcm825x_default_regs,
>  > >  >>> -   .needs_reset  = tcm825x_needs_reset,
>  > >  >>> -   .ifparm       = tcm825x_ifparm,
>  > >  >>> +   .is_okay        = tcm825x_is_okay,
>  > >  >>> +   .power_set      = tcm825x_power_set,
>  > >  >>> +   .default_regs   = tcm825x_default_regs,
>  > >  >>> +   .needs_reset    = tcm825x_needs_reset,
>  > >  >>> +   .ifparm         = tcm825x_ifparm,
>  > >  >>> +   .is_upside_down = tcm825x_is_upside_down,
>  > >  >>
>  > >  >> ok, now i got your point but this could be:
>  > >  >> .is_upside_down = machine_is_nokia_n810() ? 1 : 0,
>  > >  >
>  > >  > This doesn't work because machine_is_nokia_n810() is not constant.
>  > >  >
>  > >  > Anyway, tcm825x_is_upside_down can be made more simple as it could just
>  > >  > return machine_is_nokia_n810().
>  > >  >
>  > >  > I'll send new patches.
>  > >
>  > >  Didn't quite get, machine_is_nokia_n810() will always be true when
>  > >  running in n810. Could you clarify a bit :-p
>  >
>  > It'll *return* true, but C initialisers must be constants.  It simply
>  > wouldn't compile.
>
>
> and that's why i was using ?:
>
>
>  machine_is_nokia_n810 ? 1 : 0

This doesn't change anything - since machine_is_... is not constant,
the whole expression is not constant and is a syntax error.  The
compiler needs to know at compile time whether to store a 0 or a 1 in
the initialiser.
-- 
Please do not print this email unless absolutely necessary. Spread
environmental awareness.

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

* Re: [PATCH 2/3] N810: Don't export camera orientation
  2008-05-15  8:11             ` andrzej zaborowski
@ 2008-05-15  8:17               ` Felipe Balbi
  0 siblings, 0 replies; 17+ messages in thread
From: Felipe Balbi @ 2008-05-15  8:17 UTC (permalink / raw)
  To: andrzej zaborowski; +Cc: me, Sakari Ailus, linux-omap

On Thu, May 15, 2008 at 10:11:59AM +0200, andrzej zaborowski wrote:
> This doesn't change anything - since machine_is_... is not constant,
> the whole expression is not constant and is a syntax error.  The
> compiler needs to know at compile time whether to store a 0 or a 1 in
> the initialiser.

ugh, that's true :-p
forget about it.

-- 
Best Regards,

Felipe Balbi
me@felipebalbi.com
http://blog.felipebalbi.com

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

* Re: [PATCH 1/3] TCM825x: Include invertation of image mirroring in configuration
  2008-05-14 12:05       ` [PATCH 1/3] TCM825x: Include invertation of image mirroring in configuration Sakari Ailus
  2008-05-14 12:05         ` [PATCH 2/3] N810: Don't export camera orientation Sakari Ailus
@ 2008-05-16 17:42         ` Tony Lindgren
  1 sibling, 0 replies; 17+ messages in thread
From: Tony Lindgren @ 2008-05-16 17:42 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: linux-omap

* Sakari Ailus <sakari.ailus@nokia.com> [080514 06:37]:
> Add invertation of image mirroring register bits to default
> configuration.
> 
> This is useful when the camera module is e.g. mounted upside down.

Pushing today.

Tony

> Signed-off-by: Sakari Ailus <sakari.ailus@nokia.com>
> ---
>  drivers/media/video/tcm825x.c |    6 ++++++
>  drivers/media/video/tcm825x.h |    1 +
>  2 files changed, 7 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/media/video/tcm825x.c b/drivers/media/video/tcm825x.c
> index e57a646..216638e 100644
> --- a/drivers/media/video/tcm825x.c
> +++ b/drivers/media/video/tcm825x.c
> @@ -523,6 +523,9 @@ static int ioctl_g_ctrl(struct v4l2_int_device *s,
>  	if (val < 0)
>  		return val;
>  
> +	if (vc->id == V4L2_CID_HFLIP || vc->id == V4L2_CID_VFLIP)
> +		val ^= sensor->platform_data->is_upside_down();
> +
>  	vc->value = val;
>  	return 0;
>  }
> @@ -556,6 +559,9 @@ static int ioctl_s_ctrl(struct v4l2_int_device *s,
>  	if (lvc == NULL)
>  		return -EINVAL;
>  
> +	if (vc->id == V4L2_CID_HFLIP || vc->id == V4L2_CID_VFLIP)
> +		val ^= sensor->platform_data->is_upside_down();
> +
>  	val = val << lvc->start_bit;
>  	if (tcm825x_write_reg_mask(client, lvc->reg, val))
>  		return -EIO;
> diff --git a/drivers/media/video/tcm825x.h b/drivers/media/video/tcm825x.h
> index 966765b..770ebac 100644
> --- a/drivers/media/video/tcm825x.h
> +++ b/drivers/media/video/tcm825x.h
> @@ -182,6 +182,7 @@ struct tcm825x_platform_data {
>  	int (*needs_reset)(struct v4l2_int_device *s, void *buf,
>  			   struct v4l2_pix_format *fmt);
>  	int (*ifparm)(struct v4l2_ifparm *p);
> +	int (*is_upside_down)(void);
>  };
>  
>  /* Array of image sizes supported by TCM825X.  These must be ordered from
> -- 
> 1.5.0.6
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH 2/3] N810: Don't export camera orientation
  2008-05-14 12:05         ` [PATCH 2/3] N810: Don't export camera orientation Sakari Ailus
  2008-05-14 12:05           ` [PATCH 3/3] N800: Select tcm825x only if wanted Sakari Ailus
@ 2008-05-16 17:44           ` Tony Lindgren
  1 sibling, 0 replies; 17+ messages in thread
From: Tony Lindgren @ 2008-05-16 17:44 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: linux-omap

* Sakari Ailus <sakari.ailus@nokia.com> [080514 06:37]:
> On Nokia N810 the camera module is mounted upside down. This affects
> the mirroring controls. This patch inverts the controls for N810.

Pushing.

Tony

> 
> Signed-off-by: Sakari Ailus <sakari.ailus@nokia.com>
> ---
>  arch/arm/mach-omap2/board-n800-camera.c |   62 +++++++++++++++++++++++++++---
>  1 files changed, 55 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/board-n800-camera.c b/arch/arm/mach-omap2/board-n800-camera.c
> index 19be30d..b525125 100644
> --- a/arch/arm/mach-omap2/board-n800-camera.c
> +++ b/arch/arm/mach-omap2/board-n800-camera.c
> @@ -28,6 +28,8 @@
>  
>  #include <media/v4l2-int-device.h>
>  
> +#include <asm/mach-types.h>
> +
>  #include <asm/arch/menelaus.h>
>  #include <asm/arch/gpio.h>
>  #include <asm/arch/board.h>
> @@ -71,7 +73,8 @@ static int frames_after_reset;
>  static int saturated_count;
>  #endif
>  
> -const static struct tcm825x_reg tcm825x_default_regs_[] = {
> +#ifdef CONFIG_MACH_NOKIA_N800
> +const static struct tcm825x_reg tcm825x_regs_n800[] = {
>  	/* initial settings for 2.5 V */
>  	{0x00, 0x03}, {0x03, 0x29}, {0xaa, 0x2a}, {0xc0, 0x2b},
>  	{0x10, 0x2c}, {0x4c, 0x2d}, {0x9c, 0x3f},
> @@ -103,6 +106,42 @@ const static struct tcm825x_reg tcm825x_default_regs_[] = {
>  	{0x08, 0x5c}, {0x08, 0x5d}, {0x08, 0x5e}, {0x08, 0x5f},
>  	{TCM825X_VAL_TERM, TCM825X_REG_TERM}
>  };
> +#endif
> +
> +#ifdef CONFIG_MACH_NOKIA_N810
> +const static struct tcm825x_reg tcm825x_regs_n810[] = {
> +	/* initial settings for 2.5 V */
> +	{0x00, 0x03}, {0x03, 0x29}, {0xaa, 0x2a}, {0xc0, 0x2b},
> +	{0x10, 0x2c}, {0x4c, 0x2d}, {0x9c, 0x3f},
> +
> +	/* main settings */
> +	{0x00, 0x00}, {0x30, 0x01}, {0x0e, 0x02}, /* initial */
> +	{0xcf, 0x04}, {0x02, 0x05}, {0x0d, 0x06}, {0xc0, 0x07},
> +	{0x38, 0x08}, {0x50, 0x09}, {0x80, 0x0a}, {0x40, 0x0b},
> +	{0x40, 0x0c}, {0x00, 0x0d}, {0x04, 0x0e}, {0x04, 0x0f},
> +	{0x22, 0x10}, {0x96, 0x11}, {0xf0, 0x12}, {0x08, 0x13},
> +	{0x08, 0x14}, {0x30, 0x15}, {0x30, 0x16}, {0x01, 0x17},
> +	{0x40, 0x18}, {0x87, 0x19}, {0x2b, 0x1a}, {0x84, 0x1b},
> +	{0x52, 0x1c}, {0x44, 0x1d}, {0x68, 0x1e}, {0x00, 0x1f},
> +	{0x00, 0x20}, {0x01, 0x21}, {0x27, 0x22}, {0x40, 0x23},
> +	{0x27, 0x24}, {0x5f, 0x25}, {0x00, 0x26}, {0x16, 0x27},
> +	{0x23, 0x28}, /* initial */ /* initial */ /* initial */
> +	/* initial */ /* initial */ {0x00, 0x2e}, {0x00, 0x2f},
> +	{0x00, 0x30}, {0x00, 0x31}, {0x00, 0x32}, {0x00, 0x33},
> +	{0x00, 0x34}, {0x00, 0x35}, {0x00, 0x36}, {0x00, 0x37},
> +	{0x00, 0x38}, {0x8c, 0x39}, {0xc8, 0x3A}, {0x80, 0x3b},
> +	{0x00, 0x3c}, {0x17, 0x3d}, {0x85, 0x3e}, /* initial */
> +	{0xa0, 0x40}, {0x00, 0x41}, {0x00, 0x42}, {0x00, 0x43},
> +	{0x08, 0x44}, {0x12, 0x45}, {0x00, 0x46}, {0x20, 0x47},
> +	{0x30, 0x48}, {0x18, 0x49}, {0x20, 0x4a}, {0x4d, 0x4b},
> +	{0x0c, 0x4c}, {0xe0, 0x4d}, {0x20, 0x4e}, {0x89, 0x4f},
> +	{0x21, 0x50}, {0x80, 0x51}, {0x02, 0x52}, {0x00, 0x53},
> +	{0x30, 0x54}, {0x90, 0x55}, {0x40, 0x56}, {0x06, 0x57},
> +	{0x0f, 0x58}, {0x23, 0x59}, {0x08, 0x5A}, {0x04, 0x5b},
> +	{0x08, 0x5c}, {0x08, 0x5d}, {0x08, 0x5e}, {0x08, 0x5f},
> +	{TCM825X_VAL_TERM, TCM825X_REG_TERM}
> +};
> +#endif
>  
>  static int tcm825x_is_okay(void)
>  {
> @@ -182,7 +221,10 @@ static int tcm825x_power_set(int power)
>  
>  static const struct tcm825x_reg *tcm825x_default_regs(void)
>  {
> -	return tcm825x_default_regs_;
> +	if (machine_is_nokia_n810())
> +		return tcm825x_regs_n810;
> +
> +	return tcm825x_regs_n800;
>  }
>  
>  #ifdef OMAP24XX_CAMERA_JAM_HACK
> @@ -298,12 +340,18 @@ static int tcm825x_ifparm(struct v4l2_ifparm *p)
>  	return 0;
>  }
>  
> +static int tcm825x_is_upside_down(void)
> +{
> +	return machine_is_nokia_n810();
> +}
> +
>  const struct tcm825x_platform_data n800_tcm825x_platform_data = {
> -	.is_okay      = tcm825x_is_okay,
> -	.power_set    = tcm825x_power_set,
> -	.default_regs = tcm825x_default_regs,
> -	.needs_reset  = tcm825x_needs_reset,
> -	.ifparm	      = tcm825x_ifparm,
> +	.is_okay	= tcm825x_is_okay,
> +	.power_set	= tcm825x_power_set,
> +	.default_regs	= tcm825x_default_regs,
> +	.needs_reset	= tcm825x_needs_reset,
> +	.ifparm		= tcm825x_ifparm,
> +	.is_upside_down	= tcm825x_is_upside_down,
>  };
>  
>  void __init n800_cam_init(void)
> -- 
> 1.5.0.6
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH 3/3] N800: Select tcm825x only if wanted
  2008-05-14 12:05           ` [PATCH 3/3] N800: Select tcm825x only if wanted Sakari Ailus
@ 2008-05-16 17:44             ` Tony Lindgren
  0 siblings, 0 replies; 17+ messages in thread
From: Tony Lindgren @ 2008-05-16 17:44 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: linux-omap

* Sakari Ailus <sakari.ailus@nokia.com> [080514 06:36]:
> Don't enable automatically TCM825x on N800 unless
> VIDEO_HELPER_CHIPS_AUTO is selected.

Pushing.

Tony


> Signed-off-by: Sakari Ailus <sakari.ailus@nokia.com>
> ---
>  arch/arm/mach-omap2/Kconfig |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
> index 5c229cc..94beff0 100644
> --- a/arch/arm/mach-omap2/Kconfig
> +++ b/arch/arm/mach-omap2/Kconfig
> @@ -35,7 +35,7 @@ config MACH_OMAP_GENERIC
>  config MACH_NOKIA_N800
>  	bool "Nokia N800"
>  	depends on ARCH_OMAP2420
> -	select VIDEO_TCM825X if VIDEO_OMAP2
> +	select VIDEO_TCM825X if VIDEO_OMAP2 && VIDEO_HELPER_CHIPS_AUTO
>  	select CBUS if VIDEO_TCM825X
>  	select CBUS_RETU if VIDEO_TCM825X
>  	select MENELAUS if VIDEO_TCM825X
> -- 
> 1.5.0.6
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

end of thread, other threads:[~2008-05-16 17:44 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-13 16:04 [PATCH 1/3] TCM825x: Include invertation of image mirroring in configuration Sakari Ailus
2008-05-13 16:04 ` [PATCH 2/3] N810: Don't export camera orientation Sakari Ailus
2008-05-13 16:04   ` [PATCH 3/3] N800: Select tcm825x only if wanted Sakari Ailus
2008-05-13 20:01   ` [PATCH 2/3] N810: Don't export camera orientation Felipe Balbi
2008-05-14 12:04     ` Sakari Ailus
2008-05-14 12:05       ` [PATCH 1/3] TCM825x: Include invertation of image mirroring in configuration Sakari Ailus
2008-05-14 12:05         ` [PATCH 2/3] N810: Don't export camera orientation Sakari Ailus
2008-05-14 12:05           ` [PATCH 3/3] N800: Select tcm825x only if wanted Sakari Ailus
2008-05-16 17:44             ` Tony Lindgren
2008-05-16 17:44           ` [PATCH 2/3] N810: Don't export camera orientation Tony Lindgren
2008-05-16 17:42         ` [PATCH 1/3] TCM825x: Include invertation of image mirroring in configuration Tony Lindgren
2008-05-14 22:58       ` [PATCH 2/3] N810: Don't export camera orientation Felipe Balbi
2008-05-15  6:54         ` andrzej zaborowski
2008-05-15  7:57           ` Felipe Balbi
2008-05-15  8:11             ` andrzej zaborowski
2008-05-15  8:17               ` Felipe Balbi
2008-05-13 19:53 ` [PATCH 1/3] TCM825x: Include invertation of image mirroring in configuration Felipe Balbi

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.