arm: omap3evm: Add support for an MT9M032 based camera board.
Subsystems (4)
PATCH v2 1/1 arm: omap3evm: Add support for an MT9M032 based camera board.
Adds board support for an MT9M032 based camera to omap3evm.
--- arch/arm/mach-omap2/Makefile | 1 + arch/arm/mach-omap2/board-omap3evm-camera.c | 183 +++++++++++++++++++++++++++ 2 files changed, 184 insertions(+), 0 deletions(-) create mode 100644 arch/arm/mach-omap2/board-omap3evm-camera.c
Changes in V2:
* ported to current mainline
* Style fixes
* Fix error handling
arch/arm/mach-omap2/Makefile +1 -0
@@ -202,6 +202,7 @@ obj-$(CONFIG_MACH_OMAP3_TORPEDO) += board-omap3logic.o \ obj-$(CONFIG_MACH_OVERO) += board-overo.o \ hsmmc.o obj-$(CONFIG_MACH_OMAP3EVM) += board-omap3evm.o \ + board-omap3evm-camera.o \ hsmmc.o obj-$(CONFIG_MACH_OMAP3_PANDORA) += board-omap3pandora.o \ hsmmc.o
arch/arm/mach-omap2/board-omap3evm-camera.c new file +183 -0
183 lines not on this page · raw message
Signature · 1 line
1.7.2.5
PATCH v2 1/1 arm: omap3evm: Add support for an MT9M032 based camera board.
Quoted 1 line · Martin Hostettler
Adds board support for an MT9M032 based camera to omap3evm.
All of the logging messages could be
prefixed by the printk subsystem if you
add #define pr_fmt before any #include
arch/arm/mach-omap2/board-omap3evm-camera.c
Quoted 1 line
arch/arm/mach-omap2/board-omap3evm-camera.c +0
-0
[]
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
[]
Quoted 1 line
+static int
omap3evm_set_mux(enum omap3evmdc_mux mux_id)
[]
arch/arm/mach-omap2/board-omap3evm-camera.c line 62
Quoted 1 line
arch/arm/mach-omap2/board-omap3evm-camera.c +1
-0+switch (mux_id) {
[]
arch/arm/mach-omap2/board-omap3evm-camera.c line 78
Quoted 2 lines
arch/arm/mach-omap2/board-omap3evm-camera.c +2
-0+default : +pr_err ("omap3evm-camera: Invalid mux id #%d\n" , mux_id);
pr_err("Invalid mux id #%d\n", mux_id);[]
Quoted 1 line
+static int
__initcamera_init(void)
[]
arch/arm/mach-omap2/board-omap3evm-camera.c line 134
Quoted 3 lines
arch/arm/mach-omap2/board-omap3evm-camera.c +3
-0+if (gpio_request (nCAM_VD_SEL,"nCAM_VD_SEL" ) <0 ) { +pr_err ("omap3evm-camera: Failed to get GPIO nCAM_VD_SEL(%d)\n" , + nCAM_VD_SEL);
pr_err("Failed to get GPIO nCAM_VD_SEL(%d)\n",
nCAM_VD_SEL);etc.
PATCH v2 1/1 arm: omap3evm: Add support for an MT9M032 based camera board.
Quoted 6 lines · Joe Perches
Quoted 1 line · Martin Hostettler
Adds board support for an MT9M032 based camera to omap3evm.
All of the logging messages could be
prefixed by the printk subsystem if you
add #definepr_fmtbefore any #include
Ah, i didn't really knew about that feature yet. I really have to keep that in mind when grepping for error messages in the future.
But i don't think it would help much, as i now reducted the total number of pr_err calls to 2 in this patch.
Thanks for the idea anyway.
- Martin Hostettler
Quoted 24 lines
arch/arm/mach-omap2/board-omap3evm-camera.c
Quoted 2 lines
arch/arm/mach-omap2/board-omap3evm-camera.c +0
-0[]
#definepr_fmt(fmt)KBUILD_MODNAME": " fmt
[]Quoted 1 line
+static int
omap3evm_set_mux(enum omap3evmdc_mux mux_id)[]
arch/arm/mach-omap2/board-omap3evm-camera.c line 62
Quoted 1 line
arch/arm/mach-omap2/board-omap3evm-camera.c +1
-0+switch (mux_id) {[]
arch/arm/mach-omap2/board-omap3evm-camera.c line 78
Quoted 2 lines
arch/arm/mach-omap2/board-omap3evm-camera.c +2
-0+default : +pr_err ("omap3evm-camera: Invalid mux id #%d\n" , mux_id);pr_err("Invalid mux id #%d\n", mux_id);[]
Quoted 1 line
+static int
__initcamera_init(void)[]
arch/arm/mach-omap2/board-omap3evm-camera.c line 134
Quoted 3 lines
arch/arm/mach-omap2/board-omap3evm-camera.c +3
-0+if (gpio_request (nCAM_VD_SEL,"nCAM_VD_SEL" ) <0 ) { +pr_err ("omap3evm-camera: Failed to get GPIO nCAM_VD_SEL(%d)\n" , + nCAM_VD_SEL);pr_err("Failed to get GPIO nCAM_VD_SEL(%d)\n", nCAM_VD_SEL);etc.
PATCH v2 1/1 arm: omap3evm: Add support for an MT9M032 based camera board.
In reply to Martin HostettlerQuoted 1 line · Martin Hostettler
Adds board support for an MT9M032 based camera to omap3evm.
...
Quoted 6 lines
arch/arm/mach-omap2/board-omap3evm-camera.c new file +6
-0+ +static int __init camera_init (void ) +{ +int ret = -EINVAL ; + +omap_mux_init_gpio (nCAM_VD_SEL,OMAP_PIN_OUTPUT );
arch/arm/mach-omap2/board-omap3evm-camera.c line 141
Quoted 10 lines
arch/arm/mach-omap2/board-omap3evm-camera.c new file +10
-0+if (gpio_request (nCAM_VD_SEL,"nCAM_VD_SEL" )<0 ) { +pr_err ("omap3evm-camera: Failed to get GPIO nCAM_VD_SEL(%d)\n" , + nCAM_VD_SEL); + goto err; + } +if (gpio_direction_output (nCAM_VD_SEL,1 )<0 ) { +pr_err ("omap3evm-camera: Failed to set GPIO nCAM_VD_SEL(%d) direction\n" , + nCAM_VD_SEL); + goto err_vdsel; + }
How about replacing gpio_request + gpio_direction_output with:
gpio_request_one(nCAM_VD_SEL, GPIOF_OUT_INIT_HIGH, "nCAM_VD_SEL");
arch/arm/mach-omap2/board-omap3evm-camera.c line 152
Quoted 11 lines
arch/arm/mach-omap2/board-omap3evm-camera.c new file +11
-0+ +if (gpio_request (EVM_TWL_GPIO_BASE +2 ,"T2_GPIO2" )<0 ) { +pr_err ("omap3evm-camera: Failed to get GPIO T2_GPIO2(%d)\n" , +EVM_TWL_GPIO_BASE +2 ); + goto err_vdsel; + } +if (gpio_direction_output (EVM_TWL_GPIO_BASE +2 ,0 )<0 ) { +pr_err ("omap3evm-camera: Failed to set GPIO T2_GPIO2(%d) direction\n" , +EVM_TWL_GPIO_BASE +2 ); + goto err_2; + }
gpio_request_one(EVM_TWL_GPIO_BASE + 2, GPIOF_OUT_INIT_LOW, "T2_GPIO2");
arch/arm/mach-omap2/board-omap3evm-camera.c line 163
Quoted 11 lines
arch/arm/mach-omap2/board-omap3evm-camera.c new file +11
-0+ +if (gpio_request (EVM_TWL_GPIO_BASE +8 ,"nCAM_VD_EN" )<0 ) { +pr_err ("omap3evm-camera: Failed to get GPIO nCAM_VD_EN(%d)\n" , +EVM_TWL_GPIO_BASE +8 ); + goto err_2; + } +if (gpio_direction_output (EVM_TWL_GPIO_BASE +8 ,0 )<0 ) { +pr_err ("omap3evm-camera: Failed to set GPIO nCAM_VD_EN(%d) direction\n" , +EVM_TWL_GPIO_BASE +8 ); + goto err_8; + }
...and gpio_request_one(EVM_TWL_GPIO_BASE + 8, GPIOF_OUT_INIT_LOW, "nCAM_VD_EN") ?
Quoted 10 lines
arch/arm/mach-omap2/board-omap3evm-camera.c new file +10
-0+ +omap3evm_set_mux (MUX_CAMERA_SENSOR ); + + + ret =omap3_init_camera (&isp_platform_data); +if (ret<0 ) + goto err_8; +return 0 ; + +err_8:
arch/arm/mach-omap2/board-omap3evm-camera.c line 183
Quoted 10 lines
arch/arm/mach-omap2/board-omap3evm-camera.c new file +10
-0+gpio_free (EVM_TWL_GPIO_BASE +8 ); +err_2: +gpio_free (EVM_TWL_GPIO_BASE +2 ); +err_vdsel: +gpio_free (nCAM_VD_SEL); +err: +return ret; +} + +device_initcall (camera_init);
--
Regards,
Sylwester
PATCH v2 1/1 arm: omap3evm: Add support for an MT9M032 based camera board.
Quoted 24 lines · On Sunday 18 September 2011 00:00:16 Sylwester Nawrocki wrote:
Quoted 1 line · Martin Hostettler
Adds board support for an MT9M032 based camera to omap3evm.
...
Quoted 14 lines
arch/arm/mach-omap2/board-omap3evm-camera.c new file +13
-0+ +static int __init camera_init (void ) +{ +int ret = -EINVAL ; + +omap_mux_init_gpio (nCAM_VD_SEL,OMAP_PIN_OUTPUT ); +if (gpio_request (nCAM_VD_SEL,"nCAM_VD_SEL" )<0 ) { +pr_err ("omap3evm-camera: Failed to get GPIO nCAM_VD_SEL(%d)\n" , + nCAM_VD_SEL); + goto err; + } +if (gpio_direction_output (nCAM_VD_SEL,1 )<0 ) { + pr_err("omap3evm-camera: Failed to set GPIO nCAM_VD_SEL(%d)direction\n", +
nCAM_VD_SEL);Review
Quoted 2 lines
(quoted diff) +2
-0+ goto err_vdsel; + }How about replacing
gpio_request+gpio_direction_outputwith:
Quoted 1 line
gpio_request_one(nCAM_VD_SEL, GPIOF_OUT_INIT_HIGH, "nCAM_VD_SEL");
I'd even propose gpio_request_array().
Quoted 8 lines
arch/arm/mach-omap2/board-omap3evm-camera.c
Quoted 8 lines
arch/arm/mach-omap2/board-omap3evm-camera.c new file +8
-0+ +if (gpio_request (EVM_TWL_GPIO_BASE +2 ,"T2_GPIO2" )<0 ) { +pr_err ("omap3evm-camera: Failed to get GPIO T2_GPIO2(%d)\n" , +EVM_TWL_GPIO_BASE +2 ); + goto err_vdsel; + } +if (gpio_direction_output (EVM_TWL_GPIO_BASE +2 ,0 )<0 ) { + pr_err("omap3evm-camera: Failed to set GPIO T2_GPIO2(%d)
direction\n",
Quoted 41 lines
arch/arm/mach-omap2/board-omap3evm-camera.c line 152
Quoted 3 lines
arch/arm/mach-omap2/board-omap3evm-camera.c new file +3
-0+ EVM_TWL_GPIO_BASE + 2); + goto err_2; + }
gpio_request_one(EVM_TWL_GPIO_BASE + 2, GPIOF_OUT_INIT_LOW, "T2_GPIO2");Review
Quoted 11 lines
arch/arm/mach-omap2/board-omap3evm-camera.c new file +8
-0+ +if (gpio_request (EVM_TWL_GPIO_BASE +8 ,"nCAM_VD_EN" )<0 ) { +pr_err ("omap3evm-camera: Failed to get GPIO nCAM_VD_EN(%d)\n" , +EVM_TWL_GPIO_BASE +8 ); + goto err_2; + } +if (gpio_direction_output (EVM_TWL_GPIO_BASE +8 ,0 )<0 ) { + pr_err("omap3evm-camera: Failed to set GPIO nCAM_VD_EN(%d)direction\n", +
EVM_TWL_GPIO_BASE+ 8);(quoted diff) +2
-0+ goto err_8; + }...and gpio_request_one(EVM_TWL_GPIO_BASE + 8,
GPIOF_OUT_INIT_LOW,
"nCAM_VD_EN") ?Quoted 20 lines
arch/arm/mach-omap2/board-omap3evm-camera.c new file +20
-0+ +omap3evm_set_mux (MUX_CAMERA_SENSOR ); + + + ret =omap3_init_camera (&isp_platform_data); +if (ret<0 ) + goto err_8; +return 0 ; + +err_8: +gpio_free (EVM_TWL_GPIO_BASE +8 ); +err_2: +gpio_free (EVM_TWL_GPIO_BASE +2 ); +err_vdsel: +gpio_free (nCAM_VD_SEL); +err: +return ret; +} + +device_initcall (camera_init);
Signature · 3 lines
Regards, Laurent Pinchart
PATCH v2 1/1 arm: omap3evm: Add support for an MT9M032 based camera board.
Quoted 25 lines · Laurent Pinchart
Quoted 24 lines · On Sunday 18 September 2011 00:00:16 Sylwester Nawrocki wrote:
Quoted 1 line · Martin Hostettler
Adds board support for an MT9M032 based camera to omap3evm.
...
Quoted 14 lines
arch/arm/mach-omap2/board-omap3evm-camera.c new file +13
-0+ +static int __init camera_init (void ) +{ +int ret = -EINVAL ; + +omap_mux_init_gpio (nCAM_VD_SEL,OMAP_PIN_OUTPUT ); +if (gpio_request (nCAM_VD_SEL,"nCAM_VD_SEL" )<0 ) { +pr_err ("omap3evm-camera: Failed to get GPIO nCAM_VD_SEL(%d)\n" , + nCAM_VD_SEL); + goto err; + } +if (gpio_direction_output (nCAM_VD_SEL,1 )<0 ) { + pr_err("omap3evm-camera: Failed to set GPIO nCAM_VD_SEL(%d)direction\n", +
nCAM_VD_SEL);Review
Quoted 2 lines
(quoted diff) +2
-0+ goto err_vdsel; + }How about replacing
gpio_request+gpio_direction_outputwith:
Quoted 4 lines
Quoted 1 line
gpio_request_one(nCAM_VD_SEL, GPIOF_OUT_INIT_HIGH, "nCAM_VD_SEL");I'd even propose
gpio_request_array().
Nice interface. Apart from a bit less detailed error reporting it nicely simplifies the code. I'll make a new patch using that soon.
- Martin Hostettler
PATCH v2 1/1 arm: omap3evm: Add support for an MT9M032 based camera board.
In reply to Martin HostettlerHi Martin,
Quoted 206 lines · On Saturday 17 September 2011 11:34:57 Martin Hostettler wrote:
Adds board support for an MT9M032 based camera to omap3evm.
Sigend-off-by Martin Hostettler <[email protected]>--- arch/arm/mach-omap2/Makefile | 1 + arch/arm/mach-omap2/board-omap3evm-camera.c | 183 +++++++++++++++++++++++++++ 2 files changed, 184 insertions(+), 0 deletions(-) create mode 100644 arch/arm/mach-omap2/board-omap3evm-camera.cChanges in V2:
* ported to current mainline
* Style fixes
* Fix error handlingarch/arm/mach-omap2/Makefile +1
-0@@ -202,6 +202,7 @@ obj-$(CONFIG_MACH_OMAP3_TORPEDO) += board-omap3logic.o \ obj-$(CONFIG_MACH_OVERO) += board-overo.o \ hsmmc.o obj-$(CONFIG_MACH_OMAP3EVM) += board-omap3evm.o \ + board-omap3evm-camera.o \ hsmmc.o obj-$(CONFIG_MACH_OMAP3_PANDORA) += board-omap3pandora.o \ hsmmc.o(quoted diff) +0
-0
b/arch/arm/mach-omap2/board-omap3evm-camera.cnew file mode 100644 index 0000000..be987d9arch/arm/mach-omap2/board-omap3evm-camera.c new file +6
-0@@ -0,0 +1,183 @@ +/* +* Copyright (C) 2010-2011 Lund Engineering +* Contact: Gil Lund <[email protected]> +* Author: Martin Hostettler <[email protected]> +* +* Board intregration for a MT9M032 camera connected to IMAGE_CONN and I2C Bus 2 + *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */arch/arm/mach-omap2/board-omap3evm-camera.c new file +30
-0+ +#include <linux/i2c.h> +#include <linux/init.h> +#include <linux/platform_device.h> + +#include <linux/gpio.h> +#include <plat/mux.h> +#include "mux.h" + +#include "../../../drivers/media/video/omap3isp/isp.h" +#include "media/mt9m032.h" + +#include "devices.h" + +#define EVM_TWL_GPIO_BASE OMAP_MAX_GPIO_LINES +#define GPIO98_VID_DEC_RES 98 +#define nCAM_VD_SEL 157 + +#define MT9M032_I2C_BUS_NUM 2 + + +enum omap3evmdc_mux { +MUX_TVP5146 , +MUX_CAMERA_SENSOR , +MUX_EXP_CAMERA_SENSOR , +}; + +/** +* omap3evm_set_mux - Sets mux to enable signal routing to +* different peripherals present on new EVM board + * @mux_id: enum, mux id to enable
+ *
+ * Returns 0 for success or a negative error code
+ */arch/arm/mach-omap2/board-omap3evm-camera.c new file +83
-0+static int omap3evm_set_mux (enum omap3evmdc_mux mux_id) +{ +/* Set GPIO6 = 1 */ +gpio_set_value_cansleep (EVM_TWL_GPIO_BASE +6 ,1 ); +gpio_set_value_cansleep (EVM_TWL_GPIO_BASE +2 ,0 ); + +switch (mux_id) { +case MUX_TVP5146 : +gpio_set_value_cansleep (EVM_TWL_GPIO_BASE +2 ,0 ); +gpio_set_value (nCAM_VD_SEL,1 ); +break ; + +case MUX_CAMERA_SENSOR : +gpio_set_value_cansleep (EVM_TWL_GPIO_BASE +2 ,0 ); +gpio_set_value (nCAM_VD_SEL,0 ); +break ; + +case MUX_EXP_CAMERA_SENSOR : +gpio_set_value_cansleep (EVM_TWL_GPIO_BASE +2 ,1 ); +break ; + +default : +pr_err ("omap3evm-camera: Invalid mux id #%d\n" , mux_id); +return -EINVAL ; + } + +return 0 ; +} + +static struct mt9m032_platform_data mt9m032_platform_data = { + .ext_clock =13500000 , + .pll_pre_div =6 , + .pll_mul =120 , + .pll_out_div =5 , + .invert_pixclock =1 , +}; + +static struct i2c_board_info camera_i2c_devices[] = { + { +I2C_BOARD_INFO (MT9M032_NAME ,MT9M032_I2C_ADDR ), + .platform_data = &mt9m032_platform_data, + }, +}; + +static struct isp_subdev_i2c_board_info camera_i2c_subdevs[] = { + { + .board_info = &camera_i2c_devices[0 ], + .i2c_adapter_id =MT9M032_I2C_BUS_NUM , + }, + {}, +}; + +static struct isp_v4l2_subdevs_group camera_subdevs[] = { + { + .subdevs = camera_i2c_subdevs, + .interface =ISP_INTERFACE_PARALLEL , + .bus = { + .parallel = { + .data_lane_shift =1 , + .clk_pol =0 , + .bridge =ISPCTRL_PAR_BRIDGE_DISABLE , + } + }, + }, + {}, +}; + +static struct isp_platform_data isp_platform_data = { + .subdevs = camera_subdevs, +}; + +static int __init camera_init (void ) +{ +int ret = -EINVAL ; + +omap_mux_init_gpio (nCAM_VD_SEL,OMAP_PIN_OUTPUT ); +if (gpio_request (nCAM_VD_SEL,"nCAM_VD_SEL" ) <0 ) { +pr_err ("omap3evm-camera: Failed to get GPIO nCAM_VD_SEL(%d)\n" , + nCAM_VD_SEL); + goto err; + } +if (gpio_direction_output (nCAM_VD_SEL,1 ) <0 ) { + pr_err("omap3evm-camera: Failed to set GPIO nCAM_VD_SEL(%d)direction\n", +
nCAM_VD_SEL);arch/arm/mach-omap2/board-omap3evm-camera.c new file +34
-0+ goto err_vdsel; + } + +if (gpio_request (EVM_TWL_GPIO_BASE +2 ,"T2_GPIO2" ) <0 ) { +pr_err ("omap3evm-camera: Failed to get GPIO T2_GPIO2(%d)\n" , +EVM_TWL_GPIO_BASE +2 ); + goto err_vdsel; + } +if (gpio_direction_output (EVM_TWL_GPIO_BASE +2 ,0 ) <0 ) { +pr_err ("omap3evm-camera: Failed to set GPIO T2_GPIO2(%d) direction\n" , +EVM_TWL_GPIO_BASE +2 ); + goto err_2; + } + +if (gpio_request (EVM_TWL_GPIO_BASE +8 ,"nCAM_VD_EN" ) <0 ) { +pr_err ("omap3evm-camera: Failed to get GPIO nCAM_VD_EN(%d)\n" , +EVM_TWL_GPIO_BASE +8 ); + goto err_2; + } +if (gpio_direction_output (EVM_TWL_GPIO_BASE +8 ,0 ) <0 ) { +pr_err ("omap3evm-camera: Failed to set GPIO nCAM_VD_EN(%d) direction\n" , +EVM_TWL_GPIO_BASE +8 ); + goto err_8; + } + +omap3evm_set_mux (MUX_CAMERA_SENSOR ); + + + ret =omap3_init_camera (&isp_platform_data); +if (ret <0 ) + goto err_8; +return 0 ; + +err_8:
arch/arm/mach-omap2/board-omap3evm-camera.c line 183
Quoted 10 lines
arch/arm/mach-omap2/board-omap3evm-camera.c new file +10
-0+gpio_free (EVM_TWL_GPIO_BASE +8 ); +err_2: +gpio_free (EVM_TWL_GPIO_BASE +2 ); +err_vdsel: +gpio_free (nCAM_VD_SEL); +err: +return ret; +} + +device_initcall (camera_init);
Please don't use device_initcall(), but call the function directly from the OMAP3 EVM init handler. Otherwise camera_init() will be called if OMAP3 EVM support is compiled in the kernel, regardless of the board the kernel runs on.
Signature · 3 lines
Regards, Laurent Pinchart
PATCH v2 1/1 arm: omap3evm: Add support for an MT9M032 based camera board.
Quoted 44 lines
-----Original Message-----
From: linux-omap-owner at vger.kernel.org [mailto:linux-omap- owner at vger.kernel.org] On Behalf Of Laurent Pinchart
Sent: Monday, September 19, 2011 3:29 AM
To: Martin Hostettler
Cc: Tony Lindgren; linux-omap at vger.kernel.org; linux- media at vger.kernel.org; linux-arm-kernel at lists.infradead.org
Subject: Re: [PATCH v2] arm: omap3evm: Add support for an MT9M032 based camera board.Hi Martin,
Quoted 30 lines · On Saturday 17 September 2011 11:34:57 Martin Hostettler wrote:
Adds board support for an MT9M032 based camera to omap3evm.
Sigend-off-by Martin Hostettler <[email protected]>--- arch/arm/mach-omap2/Makefile | 1 + arch/arm/mach-omap2/board-omap3evm-camera.c | 183 +++++++++++++++++++++++++++ 2 files changed, 184 insertions(+), 0 deletions(-) create mode 100644 arch/arm/mach-omap2/board-omap3evm-camera.cChanges in V2:
* ported to current mainline
* Style fixes
* Fix error handlingarch/arm/mach-omap2/Makefile +1
-0@@ -202,6 +202,7 @@ obj-$(CONFIG_MACH_OMAP3_TORPEDO) += board-omap3logic.o \ obj-$(CONFIG_MACH_OVERO) += board-overo.o \ hsmmc.o obj-$(CONFIG_MACH_OMAP3EVM) += board-omap3evm.o \ + board-omap3evm-camera.o \ hsmmc.o obj-$(CONFIG_MACH_OMAP3_PANDORA) += board-omap3pandora.o \ hsmmc.o(quoted diff) +0
-0
b/arch/arm/mach-omap2/board-omap3evm-camera.cnew file mode 100644 index 0000000..be987d9
Quoted 8 lines
arch/arm/mach-omap2/board-omap3evm-camera.c line 5
Quoted 8 lines
arch/arm/mach-omap2/board-omap3evm-camera.c new file +5
-0@@ -0,0 +1,183 @@ +/* +* Copyright (C) 2010-2011 Lund Engineering +* Contact: Gil Lund <[email protected]> +* Author: Martin Hostettler <[email protected]> +*
[Hiremath, Vaibhav] The file below seems copied from (which is coming from all older releases of TI)
So I would appreciate if you keep original copyright and authorship of the file and add your sign-off to the patch.
Thanks,
Vaibhav
Quoted 197 lines
arch/arm/mach-omap2/board-omap3evm-camera.c line 6
Quoted 1 line
arch/arm/mach-omap2/board-omap3evm-camera.c new file +1
-0+* Board intregration for a MT9M032 camera connected to IMAGE_CONN and I2C
Quoted 133 lines
Bus 2 + *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */arch/arm/mach-omap2/board-omap3evm-camera.c new file +30
-0+ +#include <linux/i2c.h> +#include <linux/init.h> +#include <linux/platform_device.h> + +#include <linux/gpio.h> +#include <plat/mux.h> +#include "mux.h" + +#include "../../../drivers/media/video/omap3isp/isp.h" +#include "media/mt9m032.h" + +#include "devices.h" + +#define EVM_TWL_GPIO_BASE OMAP_MAX_GPIO_LINES +#define GPIO98_VID_DEC_RES 98 +#define nCAM_VD_SEL 157 + +#define MT9M032_I2C_BUS_NUM 2 + + +enum omap3evmdc_mux { +MUX_TVP5146 , +MUX_CAMERA_SENSOR , +MUX_EXP_CAMERA_SENSOR , +}; + +/** +* omap3evm_set_mux - Sets mux to enable signal routing to +* different peripherals present on new EVM board + * @mux_id: enum, mux id to enable
+ *
+ * Returns 0 for success or a negative error code
+ */arch/arm/mach-omap2/board-omap3evm-camera.c new file +83
-0+static int omap3evm_set_mux (enum omap3evmdc_mux mux_id) +{ +/* Set GPIO6 = 1 */ +gpio_set_value_cansleep (EVM_TWL_GPIO_BASE +6 ,1 ); +gpio_set_value_cansleep (EVM_TWL_GPIO_BASE +2 ,0 ); + +switch (mux_id) { +case MUX_TVP5146 : +gpio_set_value_cansleep (EVM_TWL_GPIO_BASE +2 ,0 ); +gpio_set_value (nCAM_VD_SEL,1 ); +break ; + +case MUX_CAMERA_SENSOR : +gpio_set_value_cansleep (EVM_TWL_GPIO_BASE +2 ,0 ); +gpio_set_value (nCAM_VD_SEL,0 ); +break ; + +case MUX_EXP_CAMERA_SENSOR : +gpio_set_value_cansleep (EVM_TWL_GPIO_BASE +2 ,1 ); +break ; + +default : +pr_err ("omap3evm-camera: Invalid mux id #%d\n" , mux_id); +return -EINVAL ; + } + +return 0 ; +} + +static struct mt9m032_platform_data mt9m032_platform_data = { + .ext_clock =13500000 , + .pll_pre_div =6 , + .pll_mul =120 , + .pll_out_div =5 , + .invert_pixclock =1 , +}; + +static struct i2c_board_info camera_i2c_devices[] = { + { +I2C_BOARD_INFO (MT9M032_NAME ,MT9M032_I2C_ADDR ), + .platform_data = &mt9m032_platform_data, + }, +}; + +static struct isp_subdev_i2c_board_info camera_i2c_subdevs[] = { + { + .board_info = &camera_i2c_devices[0 ], + .i2c_adapter_id =MT9M032_I2C_BUS_NUM , + }, + {}, +}; + +static struct isp_v4l2_subdevs_group camera_subdevs[] = { + { + .subdevs = camera_i2c_subdevs, + .interface =ISP_INTERFACE_PARALLEL , + .bus = { + .parallel = { + .data_lane_shift =1 , + .clk_pol =0 , + .bridge =ISPCTRL_PAR_BRIDGE_DISABLE , + } + }, + }, + {}, +}; + +static struct isp_platform_data isp_platform_data = { + .subdevs = camera_subdevs, +}; + +static int __init camera_init (void ) +{ +int ret = -EINVAL ; + +omap_mux_init_gpio (nCAM_VD_SEL,OMAP_PIN_OUTPUT ); +if (gpio_request (nCAM_VD_SEL,"nCAM_VD_SEL" ) <0 ) { +pr_err ("omap3evm-camera: Failed to get GPIO nCAM_VD_SEL(%d)\n" , + nCAM_VD_SEL); + goto err; + } +if (gpio_direction_output (nCAM_VD_SEL,1 ) <0 ) { + pr_err("omap3evm-camera: Failed to set GPIO nCAM_VD_SEL(%d)direction\n", +
nCAM_VD_SEL);arch/arm/mach-omap2/board-omap3evm-camera.c
Quoted 10 lines
arch/arm/mach-omap2/board-omap3evm-camera.c new file +10
-0+ goto err_vdsel; + } + +if (gpio_request (EVM_TWL_GPIO_BASE +2 ,"T2_GPIO2" ) <0 ) { +pr_err ("omap3evm-camera: Failed to get GPIO T2_GPIO2(%d)\n" , +EVM_TWL_GPIO_BASE +2 ); + goto err_vdsel; + } +if (gpio_direction_output (EVM_TWL_GPIO_BASE +2 ,0 ) <0 ) { + pr_err("omap3evm-camera: Failed to set GPIO T2_GPIO2(%d)direction\n",
arch/arm/mach-omap2/board-omap3evm-camera.c
Quoted 11 lines
arch/arm/mach-omap2/board-omap3evm-camera.c new file +11
-0+ EVM_TWL_GPIO_BASE + 2); + goto err_2; + } + +if (gpio_request (EVM_TWL_GPIO_BASE +8 ,"nCAM_VD_EN" ) <0 ) { +pr_err ("omap3evm-camera: Failed to get GPIO nCAM_VD_EN(%d)\n" , +EVM_TWL_GPIO_BASE +8 ); + goto err_2; + } +if (gpio_direction_output (EVM_TWL_GPIO_BASE +8 ,0 ) <0 ) { + pr_err("omap3evm-camera: Failed to set GPIO nCAM_VD_EN(%d)direction\n",
Quoted 13 lines
arch/arm/mach-omap2/board-omap3evm-camera.c new file +13
-0+ EVM_TWL_GPIO_BASE + 8); + goto err_8; + } + +omap3evm_set_mux (MUX_CAMERA_SENSOR ); + + + ret =omap3_init_camera (&isp_platform_data); +if (ret <0 ) + goto err_8; +return 0 ; + +err_8:arch/arm/mach-omap2/board-omap3evm-camera.c line 183
Quoted 10 lines
arch/arm/mach-omap2/board-omap3evm-camera.c new file +10
-0+gpio_free (EVM_TWL_GPIO_BASE +8 ); +err_2: +gpio_free (EVM_TWL_GPIO_BASE +2 ); +err_vdsel: +gpio_free (nCAM_VD_SEL); +err: +return ret; +} + +device_initcall (camera_init);Please don't use
device_initcall(), but call the function directly from the
OMAP3 EVM init handler. Otherwisecamera_init()will be called if OMAP3 EVM
support is compiled in the kernel, regardless of the board the kernel runs on.--
Regards,Laurent Pinchart
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH v2 1/1 arm: omap3evm: Add support for an MT9M032 based camera board.
Quoted 54 lines · Vaibhav
Quoted 44 lines
-----Original Message-----
From: linux-omap-owner at vger.kernel.org [mailto:linux-omap- owner at vger.kernel.org] On Behalf Of Laurent Pinchart
Sent: Monday, September 19, 2011 3:29 AM
To: Martin Hostettler
Cc: Tony Lindgren; linux-omap at vger.kernel.org; linux- media at vger.kernel.org; linux-arm-kernel at lists.infradead.org
Subject: Re: [PATCH v2] arm: omap3evm: Add support for an MT9M032 based camera board.Hi Martin,
Quoted 30 lines · On Saturday 17 September 2011 11:34:57 Martin Hostettler wrote:
Adds board support for an MT9M032 based camera to omap3evm.
Sigend-off-by Martin Hostettler <[email protected]>--- arch/arm/mach-omap2/Makefile | 1 + arch/arm/mach-omap2/board-omap3evm-camera.c | 183 +++++++++++++++++++++++++++ 2 files changed, 184 insertions(+), 0 deletions(-) create mode 100644 arch/arm/mach-omap2/board-omap3evm-camera.cChanges in V2:
* ported to current mainline
* Style fixes
* Fix error handlingarch/arm/mach-omap2/Makefile +1
-0@@ -202,6 +202,7 @@ obj-$(CONFIG_MACH_OMAP3_TORPEDO) += board-omap3logic.o \ obj-$(CONFIG_MACH_OVERO) += board-overo.o \ hsmmc.o obj-$(CONFIG_MACH_OMAP3EVM) += board-omap3evm.o \ + board-omap3evm-camera.o \ hsmmc.o obj-$(CONFIG_MACH_OMAP3_PANDORA) += board-omap3pandora.o \ hsmmc.o(quoted diff) +0
-0
b/arch/arm/mach-omap2/board-omap3evm-camera.cnew file mode 100644 index 0000000..be987d9Quoted 8 lines
arch/arm/mach-omap2/board-omap3evm-camera.c line 5
Quoted 8 lines
arch/arm/mach-omap2/board-omap3evm-camera.c new file +5
-0@@ -0,0 +1,183 @@ +/* +* Copyright (C) 2010-2011 Lund Engineering +* Contact: Gil Lund <[email protected]> +* Author: Martin Hostettler <[email protected]> +* [Hiremath, Vaibhav] The file below seems copied from (which is coming from all older releases of TI)
Quoted 4 lines
So I would appreciate if you keep original copyright and authorship of the file and add your sign-off to the patch.
First of all i don't have any problem Adding your name and the TI copyright.
Maybe i should have been more careful when looking at and adeption omap3evm_set_mux as i really took that from the TI code.
I honestly don't remember if i took any other code from that file or not. It ends up doing what the hardware needs anyway. For me it doesn't matter with such trival things, but i should have been more careful.
Do you consider it resolved if use the following at the start?
/*
* Copyright (C) 2010 Texas Instruments Inc
* Copyright (C) 2010-2011 Lund Engineering
* Contact: Gil Lund <[email protected]>
* Authors:
* Vaibhav Hiremath <[email protected]>
* Martin Hostettler <[email protected]>
*/
But then again the copy on my harddisk has these too...
* Contributors:
* Anuj Aggarwal <[email protected]>
* Sivaraj R <[email protected]>
Maybe i should add them too.
Not sure really...
- Martin Hostettler
PATCH v2 1/1 arm: omap3evm: Add support for an MT9M032 based camera board.
Quoted 74 lines
-----Original Message-----
From: martin at neutronstar.dyndns.org [mailto:martin at neutronstar.dyndns.org]
Sent: Tuesday, September 20, 2011 12:55 AM
To: Hiremath, Vaibhav
Cc: Laurent Pinchart; Tony Lindgren; linux-omap at vger.kernel.org; linux- media at vger.kernel.org; linux-arm-kernel at lists.infradead.org
Subject: Re: [PATCH v2] arm: omap3evm: Add support for an MT9M032 based camera board.Quoted 9 lines · Vaibhav
Quoted 9 lines
-----Original Message-----
From: linux-omap-owner at vger.kernel.org [mailto:linux-omap- owner at vger.kernel.org] On Behalf Of Laurent Pinchart
Sent: Monday, September 19, 2011 3:29 AM
To: Martin Hostettler
Cc: Tony Lindgren; linux-omap at vger.kernel.org; linux- media at vger.kernel.org; linux-arm-kernel at lists.infradead.org
Subject: Re: [PATCH v2] arm: omap3evm: Add support for an MT9M032based
Quoted 15 lines
Quoted 15 lines
camera board.
Hi Martin,
Quoted 10 lines · On Saturday 17 September 2011 11:34:57 Martin Hostettler wrote:
Adds board support for an MT9M032 based camera to omap3evm.
Sigend-off-by Martin Hostettler <[email protected]>--- arch/arm/mach-omap2/Makefile | 1 + arch/arm/mach-omap2/board-omap3evm-camera.c | 183 +++++++++++++++++++++++++++ 2 files changed, 184 insertions(+), 0 deletions(-) create mode 100644 arch/arm/mach-omap2/board-omap3evm-camera.cQuoted 6 lines
Quoted 6 lines
arch/arm/mach-
Quoted 6 lines
Changes in V2:
* ported to current mainline
* Style fixes
* Fix error handlingarch/arm/mach- renamed from arch/arm/mach-omap2/Makefile +0
-0omap2/Makefile
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
index f343365..8ae3d25 100644
arch/arm/mach-omap2/Makefile +0
-0@@ -202,6 +202,7 @@ obj-$(CONFIG_MACH_OMAP3_TORPEDO) +=board-omap3logic.o \ obj-$(CONFIG_MACH_OVERO) += board-
overo.o \
Quoted 10 lines
Quoted 10 lines
Quoted 10 lines
arch/arm/mach-omap2/Makefile +1
-0hsmmc.o obj-$(CONFIG_MACH_OMAP3EVM) += board-omap3evm.o \ + board-omap3evm-camera.o \ hsmmc.o obj-$(CONFIG_MACH_OMAP3_PANDORA) += board-omap3pandora.o \ hsmmc.o(quoted diff) +0
-0
b/arch/arm/mach-omap2/board-omap3evm-camera.cnew file mode 100644 index 0000000..be987d9
---/dev/nullQuoted 8 lines
Quoted 7 lines
arch/arm/mach-omap2/board-omap3evm-camera.c line 5
Quoted 7 lines
+++
b/arch/arm/mach-omap2/board-omap3evm-camera.carch/arm/mach-omap2/board-omap3evm-camera.c new file +5
-0@@ -0,0 +1,183 @@ +/* +* Copyright (C) 2010-2011 Lund Engineering +* Contact: Gil Lund <[email protected]> +* Author: Martin Hostettler <[email protected]> +* [Hiremath, Vaibhav] The file below seems copied from (which is coming
from all older releases of TI)
Quoted 2 lines
omap3.git;a=blob;f=arch/arm/mach-omap2/board-omap3evm- camera.c;h=2e6ccfef69027dee880d507b98b5a7998d4bbe7e;hb=adcd067326836777c04
9e3cb32a5b7d9d401fc31Quoted 1 line
Quoted 9 lines
Quoted 1 line
So I would appreciate if you keep original copyright and authorship of
the file and add your sign-off to the patch.
Quoted 1 line
First of all i don't have any problem Adding your name and the TI copyright.
Maybe i should have been more careful when looking at and adeptionomap3evm_set_muxas i really took that from the TI code.
The best practice it to always keep copy-right of the file intact... I wouldn't mind if you use and modify any part of the code and also add your authorship. I feel, Copy-right is important part.
Quoted 8 lines
I honestly don't remember if i took any other code from that file or not. It ends up doing what the hardware needs anyway. For me it doesn't matter with such trival things, but i should have been more careful.
Do you consider it resolved if use the following at the start?
/*
* Copyright (C) 2010 Texas Instruments Inc
Change it to 2011.
Quoted 2 lines
* Copyright (C) 2010-2011 Lund Engineering
* Contact: Gil Lund <[email protected]>
Not sure do you really need above line...
Quoted 6 lines
* Authors:
* Vaibhav Hiremath <[email protected]>
* Martin Hostettler <[email protected]>
*/
Looks ok to me.
Quoted 11 lines
But then again the copy on my harddisk has these too...
* Contributors:
* Anuj Aggarwal <[email protected]>
* Sivaraj R <[email protected]>Maybe i should add them too.
Not sure really...
I think we should not pollute source file with all our names, so I would recommend to put copy rights and probably author.
Thanks,
Vaibhav
Quoted 1 line
- Martin Hostettler
PATCH v2 1/1 arm: omap3evm: Add support for an MT9M032 based camera board.
In reply to Laurent PinchartQuoted 31 lines · Laurent Pinchart
Hi Martin,
Quoted 28 lines · On Saturday 17 September 2011 11:34:57 Martin Hostettler wrote:
Adds board support for an MT9M032 based camera to omap3evm.
Sigend-off-by Martin Hostettler <[email protected]>--- arch/arm/mach-omap2/Makefile | 1 + arch/arm/mach-omap2/board-omap3evm-camera.c | 183 +++++++++++++++++++++++++++ 2 files changed, 184 insertions(+), 0 deletions(-) create mode 100644 arch/arm/mach-omap2/board-omap3evm-camera.cChanges in V2:
* ported to current mainline
* Style fixes
* Fix error handlingarch/arm/mach-omap2/Makefile +9
-0+ return 0; + +err_8: + gpio_free(EVM_TWL_GPIO_BASE + 8); +err_2: + gpio_free(EVM_TWL_GPIO_BASE + 2); +err_vdsel: + gpio_free(nCAM_VD_SEL); +err:
Quoted 8 lines
arch/arm/mach-omap2/Makefile
Quoted 4 lines
arch/arm/mach-omap2/Makefile +4
-0+ return ret; +} + +device_initcall(camera_init);Please don't use
device_initcall(), but call the function directly from the OMAP3 EVM init handler. Otherwisecamera_init()will be called if OMAP3 EVM support is compiled in the kernel, regardless of the board the kernel runs on.
Ok, will do.
In which header should the prototyp of that function go? Or can i just add a prototyp to board-omap3evm.c directly?
I couldn't find anything that looked right, this is rather board specific after all.
- Martin Hostettler
Quoted 5 lines
Signature · 4 lines
-- Regards, Laurent Pinchart
PATCH v2 1/1 arm: omap3evm: Add support for an MT9M032 based camera board.
Hi Martin,
Quoted 43 lines · On Monday 19 September 2011 08:10:19 [email protected] wrote:
Quoted 33 lines · Laurent Pinchart
Quoted 32 lines · On Saturday 17 September 2011 11:34:57 Martin Hostettler wrote:
Adds board support for an MT9M032 based camera to omap3evm.
Sigend-off-by Martin Hostettler <[email protected]>---
arch/arm/mach-omap2/Makefile | 1 + arch/arm/mach-omap2/board-omap3evm-camera.c | 183+++++++++++++++++++++++++++ 2 files changed, 184 insertions(+), 0 deletions(-)
create mode 100644 arch/arm/mach-omap2/board-omap3evm-camera.cChanges in V2:
* ported to current mainline
* Style fixes
* Fix error handling(quoted diff) +0
-0b/arch/arm/mach-omap2/Makefile index f343365..8ae3d25 100644
arch/arm/mach-omap2/Makefile +10
-0+ return 0; + +err_8: + gpio_free(EVM_TWL_GPIO_BASE + 8); +err_2: + gpio_free(EVM_TWL_GPIO_BASE + 2); +err_vdsel: + gpio_free(nCAM_VD_SEL); +err: + return ret;Quoted 8 lines
arch/arm/mach-omap2/Makefile
Quoted 3 lines
arch/arm/mach-omap2/Makefile +3
-0+} + +device_initcall(camera_init);Please don't use
device_initcall(), but call the function directly from the OMAP3 EVM init handler. Otherwisecamera_init()will be called if OMAP3 EVM support is compiled in the kernel, regardless of the board the kernel runs on.
Quoted 5 lines
Ok, will do.
In which header should the prototyp of that function go? Or can i just add a prototyp toboard-omap3evm.cdirectly?
I couldn't find anything that looked right, this is rather board specific after all.
You can either create arch/arm/mach-omap2/board-omap3evm.h or add the prototype to board-omap3evm.c.
Signature · 3 lines
Regards, Laurent Pinchart
PATCH v2 1/1 arm: omap3evm: Add support for an MT9M032 based camera board.
In reply to Laurent PinchartHi
Quoted 36 lines · Laurent Pinchart
Hi Martin,
Quoted 33 lines · On Saturday 17 September 2011 11:34:57 Martin Hostettler wrote:
Adds board support for an MT9M032 based camera to omap3evm.
Sigend-off-by Martin Hostettler <[email protected]>--- arch/arm/mach-omap2/Makefile | 1 + arch/arm/mach-omap2/board-omap3evm-camera.c | 183 +++++++++++++++++++++++++++ 2 files changed, 184 insertions(+), 0 deletions(-) create mode 100644 arch/arm/mach-omap2/board-omap3evm-camera.cChanges in V2:
* ported to current mainline
* Style fixes
* Fix error handlingarch/arm/mach-omap2/Makefile +1
-0@@ -202,6 +202,7 @@ obj-$(CONFIG_MACH_OMAP3_TORPEDO) += board-omap3logic.o \ obj-$(CONFIG_MACH_OVERO) += board-overo.o \ hsmmc.o obj-$(CONFIG_MACH_OMAP3EVM) += board-omap3evm.o \ + board-omap3evm-camera.o \ hsmmc.o obj-$(CONFIG_MACH_OMAP3_PANDORA) += board-omap3pandora.o \ hsmmc.o(quoted diff) +0
-0
b/arch/arm/mach-omap2/board-omap3evm-camera.cnew file mode 100644 index 0000000..be987d9arch/arm/mach-omap2/board-omap3evm-camera.c new file +0
-0@@ -0,0 +1,183 @@
[snip]
Quoted 53 lines
Quoted 53 lines
arch/arm/mach-omap2/board-omap3evm-camera.c new file +12
-0+static int __init camera_init (void ) +{ +int ret = -EINVAL ; + +omap_mux_init_gpio (nCAM_VD_SEL,OMAP_PIN_OUTPUT ); +if (gpio_request (nCAM_VD_SEL,"nCAM_VD_SEL" ) <0 ) { +pr_err ("omap3evm-camera: Failed to get GPIO nCAM_VD_SEL(%d)\n" , + nCAM_VD_SEL); + goto err; + } +if (gpio_direction_output (nCAM_VD_SEL,1 ) <0 ) { + pr_err("omap3evm-camera: Failed to set GPIO nCAM_VD_SEL(%d)direction\n", +
nCAM_VD_SEL);arch/arm/mach-omap2/board-omap3evm-camera.c new file +40
-0+ goto err_vdsel; + } + +if (gpio_request (EVM_TWL_GPIO_BASE +2 ,"T2_GPIO2" ) <0 ) { +pr_err ("omap3evm-camera: Failed to get GPIO T2_GPIO2(%d)\n" , +EVM_TWL_GPIO_BASE +2 ); + goto err_vdsel; + } +if (gpio_direction_output (EVM_TWL_GPIO_BASE +2 ,0 ) <0 ) { +pr_err ("omap3evm-camera: Failed to set GPIO T2_GPIO2(%d) direction\n" , +EVM_TWL_GPIO_BASE +2 ); + goto err_2; + } + +if (gpio_request (EVM_TWL_GPIO_BASE +8 ,"nCAM_VD_EN" ) <0 ) { +pr_err ("omap3evm-camera: Failed to get GPIO nCAM_VD_EN(%d)\n" , +EVM_TWL_GPIO_BASE +8 ); + goto err_2; + } +if (gpio_direction_output (EVM_TWL_GPIO_BASE +8 ,0 ) <0 ) { +pr_err ("omap3evm-camera: Failed to set GPIO nCAM_VD_EN(%d) direction\n" , +EVM_TWL_GPIO_BASE +8 ); + goto err_8; + } + +omap3evm_set_mux (MUX_CAMERA_SENSOR ); + + + ret =omap3_init_camera (&isp_platform_data); +if (ret <0 ) + goto err_8; +return 0 ; + +err_8: +gpio_free (EVM_TWL_GPIO_BASE +8 ); +err_2: +gpio_free (EVM_TWL_GPIO_BASE +2 ); +err_vdsel: +gpio_free (nCAM_VD_SEL); +err:
Quoted 8 lines
arch/arm/mach-omap2/board-omap3evm-camera.c line 183
Quoted 4 lines
arch/arm/mach-omap2/board-omap3evm-camera.c new file +4
-0+return ret; +} + +device_initcall (camera_init);Please don't use
device_initcall(), but call the function directly from the OMAP3 EVM init handler. Otherwisecamera_init()will be called if OMAP3 EVM support is compiled in the kernel, regardless of the board the kernel runs on.
Another possibility is to put
if (!machine_is_omap3evm()) return 0;
in the beginning of the function. Probably, best to follow what other omap3 boards do.
Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/