Hello Guennadi,
*1*
> I haven't reviewed your sources in detail, just two comments, regarding
> something, that caught my eye:
> > +static struct platform_device rj65na20_camera = {
> > + .name = "soc-camera-pdrv-2M",
>
> This name has to match with what's advertised in
> drivers/media/video/soc_camera.c, namely "soc-camera-pdrv"
*2*
> > static struct i2c_board_info i2c0_devices[] = {
> > {
> > I2C_BOARD_INFO("ag5evm_ts", 0x20),
> > .irq = pint2irq(12), /* PINTC3 */
> > },
> > + /* 2M camera */
> > + {
> > + I2C_BOARD_INFO("rj65na20", 0x40),
> > + },
I fixed the both above, thank you.
And add CEU init in it.
This is my current patch for temporary start.
(builds without error at least)
With kind regards,
Akira
--- linux_kernel_bsp/arch/arm/mach-shmobile/board-ag5evm.c 2011-03-22
12:30:14.000000000 +0900
+++ linux_kernel/arch/arm/mach-shmobile/board-ag5evm.c 2011-04-19
16:54:47.000000000 +0900
@@ -59,6 +59,7 @@
#include <sound/sh_fsi.h>
#include <video/sh_mobile_lcdc.h>
+#include <media/soc_camera.h>
static struct r8a66597_platdata usb_host_data = {
.on_chip = 1,
@@ -317,11 +318,38 @@ static struct platform_device fsi_device
},
};
+static struct i2c_board_info rj65na20_info = {
+ I2C_BOARD_INFO("rj65na20", 0x40),
+};
+
+struct soc_camera_link rj65na20_link = {
+ .bus_id = 0,
+ .board_info = &rj65na20_info,
+ .i2c_adapter_id = 0,
+ .module_name = "rj65na20",
+};
+
+static struct platform_device rj65na20_camera = {
+ .name = "soc-camera-pdrv",
+ .id = 0,
+ .dev = {
+ .platform_data = &rj65na20_link,
+ },
+};
+
static struct i2c_board_info i2c0_devices[] = {
{
I2C_BOARD_INFO("ag5evm_ts", 0x20),
.irq = pint2irq(12), /* PINTC3 */
},
};
static struct i2c_board_info i2c1_devices[] = {
@@ -548,6 +576,8 @@ static struct platform_device *ag5evm_de
&usb_mass_storage_device,
&android_usb_device,
+
+ &rj65na20_camera,
};
static struct map_desc ag5evm_io_desc[] __initdata = {
@@ -748,6 +778,7 @@ static void __init ag5evm_init(void)
struct clk *sub_clk = clk_get(NULL, "sub_clk");
struct clk *extal2_clk = clk_get(NULL, "extal2");
struct clk *fsia_clk = clk_get(NULL, "fsia_clk");
+ struct clk *vck1_clk = clk_get(NULL, "vck1_clk");
clk_set_parent(sub_clk, extal2_clk);
__raw_writel(__raw_readl(SUBCKCR) & ~(1<<9), SUBCKCR);
@@ -853,6 +884,56 @@ static void __init ag5evm_init(void)
__raw_writel(0x2a8b9111, DSI1PHYCR);
clk_enable(clk_get(NULL, "dsi-tx"));
+ /* CEU */
+ gpio_request(GPIO_FN_VIO2_CLK2, NULL);
+ gpio_request(GPIO_FN_VIO2_VD3, NULL);
+ gpio_request(GPIO_FN_VIO2_HD3, NULL);
+ gpio_request(GPIO_FN_PORT16_VIO_CKOR, NULL);
+ gpio_request(GPIO_FN_VIO_D15, NULL);
+ gpio_request(GPIO_FN_VIO_D14, NULL);
+ gpio_request(GPIO_FN_VIO_D13, NULL);
+ gpio_request(GPIO_FN_VIO_D12, NULL);
+ gpio_request(GPIO_FN_VIO_D11, NULL);
+ gpio_request(GPIO_FN_VIO_D10, NULL);
+ gpio_request(GPIO_FN_VIO_D9, NULL);
+ gpio_request(GPIO_FN_VIO_D8, NULL);
+
+ if (!IS_ERR(vck1_clk)) {
+ clk_set_rate(vck1_clk, clk_round_rate(vck1_clk, 24000000));
+ clk_enable(vck1_clk);
+ clk_put(vck1_clk);
+ udelay(50);
+ } else {
+ printk(KERN_ERR "clk_get(vck1_clk) failed.\n");
+ }
+
+ /* 2M camera */
+ gpio_request(GPIO_PORT44, NULL);
+ gpio_direction_output(GPIO_PORT44, 0);
+ udelay(10);
+ gpio_set_value(GPIO_PORT44, 1);
+
/* Unreset LCD Panel */
gpio_request(GPIO_PORT217, NULL);
gpio_direction_output(GPIO_PORT217, 0);
--
Akira Tsukamoto
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html