ARM: S5PV210: Add support for NOON010PC30 sensor on GONI board

Add platform data for CIF camera sensor and FIMC platform data
entries for it. Add platform device for s5p-fimc media device
driver and the camera port A I/O pins initialization.

Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
This commit is contained in:
Sylwester Nawrocki 2011-09-27 07:18:55 +09:00 committed by Kukjin Kim
parent b74f2fb514
commit 39aefabbc8
2 changed files with 54 additions and 0 deletions

View file

@ -100,6 +100,7 @@ config MACH_GONI
select S5PV210_SETUP_I2C2 select S5PV210_SETUP_I2C2
select S5PV210_SETUP_KEYPAD select S5PV210_SETUP_KEYPAD
select S5PV210_SETUP_SDHCI select S5PV210_SETUP_SDHCI
select S5PV210_SETUP_FIMC
help help
Machine support for Samsung GONI board Machine support for Samsung GONI board
S5PC110(MCP) is one of package option of S5PV210 S5PC110(MCP) is one of package option of S5PV210

View file

@ -48,6 +48,11 @@
#include <plat/s5p-time.h> #include <plat/s5p-time.h>
#include <plat/mfc.h> #include <plat/mfc.h>
#include <plat/regs-fb-v4.h> #include <plat/regs-fb-v4.h>
#include <plat/camport.h>
#include <media/v4l2-mediabus.h>
#include <media/s5p_fimc.h>
#include <media/noon010pc30.h>
/* Following are default values for UCON, ULCON and UFCON UART registers */ /* Following are default values for UCON, ULCON and UFCON UART registers */
#define GONI_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \ #define GONI_UCON_DEFAULT (S3C2410_UCON_TXILEVEL | \
@ -272,6 +277,14 @@ static void __init goni_tsp_init(void)
i2c2_devs[0].irq = gpio_to_irq(gpio); i2c2_devs[0].irq = gpio_to_irq(gpio);
} }
static void goni_camera_init(void)
{
s5pv210_fimc_setup_gpio(S5P_CAMPORT_A);
/* Set max driver strength on CAM_A_CLKOUT pin. */
s5p_gpio_set_drvstr(S5PV210_GPE1(3), S5P_GPIO_DRVSTR_LV4);
}
/* MAX8998 regulators */ /* MAX8998 regulators */
#if defined(CONFIG_REGULATOR_MAX8998) || defined(CONFIG_REGULATOR_MAX8998_MODULE) #if defined(CONFIG_REGULATOR_MAX8998) || defined(CONFIG_REGULATOR_MAX8998_MODULE)
@ -808,6 +821,39 @@ static void goni_setup_sdhci(void)
s3c_sdhci2_set_platdata(&goni_hsmmc2_data); s3c_sdhci2_set_platdata(&goni_hsmmc2_data);
}; };
static struct noon010pc30_platform_data noon010pc30_pldata = {
.clk_rate = 16000000UL,
.gpio_nreset = S5PV210_GPB(2), /* CAM_CIF_NRST */
.gpio_nstby = S5PV210_GPB(0), /* CAM_CIF_NSTBY */
};
static struct i2c_board_info noon010pc30_board_info = {
I2C_BOARD_INFO("NOON010PC30", 0x60 >> 1),
.platform_data = &noon010pc30_pldata,
};
static struct s5p_fimc_isp_info goni_camera_sensors[] = {
{
.mux_id = 0,
.flags = V4L2_MBUS_PCLK_SAMPLE_FALLING |
V4L2_MBUS_VSYNC_ACTIVE_LOW,
.bus_type = FIMC_ITU_601,
.board_info = &noon010pc30_board_info,
.i2c_bus_num = 0,
.clk_frequency = 16000000UL,
},
};
struct s5p_platform_fimc goni_fimc_md_platdata __initdata = {
.isp_info = goni_camera_sensors,
.num_clients = ARRAY_SIZE(goni_camera_sensors),
};
struct platform_device s5p_device_fimc_md = {
.name = "s5p-fimc-md",
.id = -1,
};
static struct platform_device *goni_devices[] __initdata = { static struct platform_device *goni_devices[] __initdata = {
&s3c_device_fb, &s3c_device_fb,
&s5p_device_onenand, &s5p_device_onenand,
@ -825,6 +871,7 @@ static struct platform_device *goni_devices[] __initdata = {
&s5p_device_fimc0, &s5p_device_fimc0,
&s5p_device_fimc1, &s5p_device_fimc1,
&s5p_device_fimc2, &s5p_device_fimc2,
&s5p_device_fimc_md,
&s3c_device_hsmmc0, &s3c_device_hsmmc0,
&s3c_device_hsmmc1, &s3c_device_hsmmc1,
&s3c_device_hsmmc2, &s3c_device_hsmmc2,
@ -893,6 +940,12 @@ static void __init goni_machine_init(void)
/* FB */ /* FB */
s3c_fb_set_platdata(&goni_lcd_pdata); s3c_fb_set_platdata(&goni_lcd_pdata);
/* FIMC */
s3c_set_platdata(&goni_fimc_md_platdata, sizeof(goni_fimc_md_platdata),
&s5p_device_fimc_md);
goni_camera_init();
/* SPI */ /* SPI */
spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info)); spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));