R8A7779/Marzen R-Car VIN driver support
Subsystems (5)
v5 cover R8A7779/Marzen R-Car VIN driver support
Hello.
[Resending with a real version #.]
Here's the set of 3 patches against the Mauro's 'media_tree.git' repo's
'master' branch. Here we add the VIN driver platform code for the R8A7779/Marzen with ADV7180 I2C video decoder.
[1/3] ARM: shmobile: r8a7779: add VIN support
[2/3] ARM: shmobile: Marzen: add VIN and ADV7180 support [3/3] ARM: shmobile: Marzen: enable VIN and ADV7180 in defconfig
Mauro has kindly agreed to merge this patchset thru his tree to resolve the
dependency on the driver's platform data header, provided that the maintainer ACKs this. Simon, could you ACK the patchset ASAP -- Mauro expects to close his tree for 3.12 this weekend or next Monday?
WBR, Sergei
PATCH v5 1/3 ARM: shmobile: r8a7779: add VIN support
From: Vladimir Barinov <[email protected]>
Add VIN clocks and platform devices for R8A7779 SoC; add function to register the VIN platform devices.
[Sergei: added 'id' parameter check to r8a7779_add_vin_device(), used '*pdata' in *sizeof* operator there, renamed some variables, annotated vin[0-3]_resources
---
Changes since version 4:
- resolved reject.
Changes since version 3:
- changed the VIN platform device name to be R8A7779 specific;
- used '*pdata' in *sizeof* operator in r8a7779_add_vin_device();
- resolved reject in <mach/r8a7779.h> due to USB patch rework.
Changes since version 2:
- annotated vin[0-3]_resources[] and 'vin[0-3]_info' as '__initdata' since they are kmemdup()'ed while registering the platform devices anyway;
Changes since the original posting:
- added 'id' parameter check to r8a7779_add_vin_device().
arch/arm/mach-shmobile/clock-r8a7779.c | 10 +++++++ arch/arm/mach-shmobile/include/mach/r8a7779.h | 3 ++ arch/arm/mach-shmobile/setup-r8a7779.c | 37 ++++++++++++++++++++++++++ 3 files changed, 50 insertions(+)
arch/arm/mach-shmobile/clock-r8a7779.c +10 -0
@@ -112,7 +112,9 @@ static struct clk *main_clks[] = { };enum {MSTP323 ,MSTP322 ,MSTP321 ,MSTP320 , +MSTP120 ,MSTP116 ,MSTP115 ,MSTP114 , +MSTP110 ,MSTP109 ,MSTP108 ,MSTP103 ,MSTP101 ,MSTP100 ,MSTP030 ,MSTP029 ,MSTP028 ,MSTP027 ,MSTP026 ,MSTP025 ,MSTP024 ,MSTP023 ,MSTP022 ,MSTP021 ,
@@ -125,9 +127,13 @@ static struct clk mstp_clks[MSTP_NR] = { [MSTP322] = SH_CLK_MSTP32(&clkp_clk, MSTPCR3, 22, 0), /* SDHI1 */ [MSTP321] = SH_CLK_MSTP32(&clkp_clk, MSTPCR3, 21, 0), /* SDHI2 */ [MSTP320] = SH_CLK_MSTP32(&clkp_clk, MSTPCR3, 20, 0), /* SDHI3 */ + [MSTP120] = SH_CLK_MSTP32(&clks_clk, MSTPCR1, 20, 0), /* VIN3 */ [MSTP116] = SH_CLK_MSTP32(&clkp_clk, MSTPCR1, 16, 0), /* PCIe */ [MSTP115] = SH_CLK_MSTP32(&clkp_clk, MSTPCR1, 15, 0), /* SATA */ [MSTP114] = SH_CLK_MSTP32(&clkp_clk, MSTPCR1, 14, 0), /* Ether */ + [MSTP110] = SH_CLK_MSTP32(&clks_clk, MSTPCR1, 10, 0), /* VIN0 */ + [MSTP109] = SH_CLK_MSTP32(&clks_clk, MSTPCR1, 9, 0), /* VIN1 */ + [MSTP108] = SH_CLK_MSTP32(&clks_clk, MSTPCR1, 8, 0), /* VIN2 */ [MSTP103] = SH_CLK_MSTP32(&clks_clk, MSTPCR1, 3, 0), /* DU */ [MSTP101] = SH_CLK_MSTP32(&clkp_clk, MSTPCR1, 1, 0), /* USB2 */ [MSTP100] = SH_CLK_MSTP32(&clkp_clk, MSTPCR1, 0, 0), /* USB0/1 */
@@ -162,10 +168,14 @@ static struct clk_lookup lookups[] = {CLKDEV_CON_ID ("peripheral_clk" , &clkp_clk),/* MSTP32 clocks */ +CLKDEV_DEV_ID ("r8a7779-vin.3" , &mstp_clks[MSTP120 ]),/* VIN3 */ CLKDEV_DEV_ID ("rcar-pcie" , &mstp_clks[MSTP116 ]),/* PCIe */ CLKDEV_DEV_ID ("sata_rcar" , &mstp_clks[MSTP115 ]),/* SATA */ CLKDEV_DEV_ID ("fc600000.sata" , &mstp_clks[MSTP115 ]),/* SATA w/DT */ CLKDEV_DEV_ID ("r8a777x-ether" , &mstp_clks[MSTP114 ]),/* Ether */ +CLKDEV_DEV_ID ("r8a7779-vin.0" , &mstp_clks[MSTP110 ]),/* VIN0 */ +CLKDEV_DEV_ID ("r8a7779-vin.1" , &mstp_clks[MSTP109 ]),/* VIN1 */ +CLKDEV_DEV_ID ("r8a7779-vin.2" , &mstp_clks[MSTP108 ]),/* VIN2 */ CLKDEV_DEV_ID ("ehci-platform.1" , &mstp_clks[MSTP101 ]),/* USB EHCI port2 */ CLKDEV_DEV_ID ("ohci-platform.1" , &mstp_clks[MSTP101 ]),/* USB OHCI port2 */ CLKDEV_DEV_ID("ehci-platform.0", &mstp_clks[MSTP100]), /* USB EHCI port0/1 */
arch/arm/mach-shmobile/include/mach/r8a7779.h +3 -0
@@ -5,6 +5,7 @@#include <linux/pm_domain.h> #include <linux/sh_eth.h> #include <linux/platform_data/usb-rcar-phy.h> +#include <linux/platform_data/camera-rcar.h> struct platform_device ;
@@ -35,6 +36,8 @@ extern void r8a7779_add_standard_devicesextern void r8a7779_add_standard_devices_dt (void );extern void r8a7779_add_ether_device (struct sh_eth_plat_data *pdata);extern void r8a7779_add_usb_phy_device (struct rcar_phy_platform_data *pdata); +extern void r8a7779_add_vin_device (int idx, +struct rcar_vin_platform_data *pdata);extern void r8a7779_init_late (void );extern void r8a7779_clock_init (void );extern void r8a7779_pinmux_init (void );
arch/arm/mach-shmobile/setup-r8a7779.c +37 -0
@@ -559,6 +559,33 @@ static struct resource ether_resources[] }, }; +#define R8A7779_VIN (idx) \ +static struct resource vin##idx##_resources[] __initdata = { \ + DEFINE_RES_MEM(0xffc50000 + 0x1000 * (idx), 0x1000), \ + DEFINE_RES_IRQ(gic_iid(0x5f + (idx))), \ +}; \ + \ +static struct platform_device_info vin##idx##_info __initdata = { \ + .parent = &platform_bus, \ + .name = "r8a7779-vin", \ + .id = idx, \ + .res = vin##idx##_resources, \ + .num_res = ARRAY_SIZE(vin##idx##_resources), \ + .dma_mask = DMA_BIT_MASK(32), \ +} + +R8A7779_VIN (0 ); +R8A7779_VIN (1 ); +R8A7779_VIN (2 ); +R8A7779_VIN (3 ); + +static struct platform_device_info *vin_info_table[]__initdata = { + &vin0_info, + &vin1_info, + &vin2_info, + &vin3_info, +}; +static struct platform_device *r8a7779_devices_dt[]__initdata = { &scif0_device, &scif1_device,
@@ -610,6 +637,16 @@ void __init r8a7779_add_usb_phy_device(s pdata, sizeof(*pdata)); } +void __init r8a7779_add_vin_device (int id,struct rcar_vin_platform_data *pdata) +{ +BUG_ON (id <0 || id >3 ); + + vin_info_table[id]->data = pdata; + vin_info_table[id]->size_data =sizeof (*pdata); + +platform_device_register_full (vin_info_table[id]); +} +/* do nothing for !CONFIG_SMP or !CONFIG_HAVE_TWD */ void __init __weak r8a7779_register_twd (void ) { }
PATCH v5 2/3 ARM: shmobile: Marzen: add VIN and ADV7180 support
In reply to Sergei ShtylyovFrom: Vladimir Barinov <[email protected]>
Add ADV7180 platform devices on the Marzen board, configure VIN1/3 pins, and register VIN1/3 devices with the ADV7180 specific platform data.
[Sergei: removed superfluous tabulation and inserted empty lines in the macro definition, updated the copyrights, annotated VIN platform data as '__initdata']
---
Changes since version 3:
- changed the VIN platform device names to be R8A7779 specific.
Changes since version 2:
- annotated 'vin_platform_data' as '__initdata' since they're kmemdup()'ed while registering the platform devices anyway.
Changes since the original posting:
- used a macro to define the camera platform devices;
- updated the copyrights;
- refreshed the patch.
arch/arm/mach-shmobile/board-marzen.c | 44 +++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-)
arch/arm/mach-shmobile/board-marzen.c +43 -1
@@ -1,8 +1,9 @@/* * marzen board support * -* Copyright (C) 2011 Renesas Solutions Corp. +* Copyright (C) 2011, 2013 Renesas Solutions Corp. * Copyright (C) 2011 Magnus Damm +* Copyright (C) 2013 Cogent Embedded, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by
@@ -37,6 +38,7 @@#include <linux/mmc/host.h> #include <linux/mmc/sh_mobile_sdhi.h> #include <linux/mfd/tmio.h> +#include <media/soc_camera.h> #include <mach/hardware.h> #include <mach/r8a7779.h> #include <mach/common.h>
@@ -178,12 +180,40 @@ static struct platform_device leds_devic }, }; +static struct rcar_vin_platform_data vin_platform_data__initdata = { + .flags =RCAR_VIN_BT656 , +}; + +#define MARZEN_CAMERA (idx) \ +static struct i2c_board_info camera##idx##_info = { \ + I2C_BOARD_INFO("adv7180", 0x20 + (idx)), \ +}; \ + \ +static struct soc_camera_link iclink##idx##_adv7180 = { \ + .bus_id = 1 + 2 * (idx), \ + .i2c_adapter_id = 0, \ + .board_info = &camera##idx##_info, \ +}; \ + \ +static struct platform_device camera##idx##_device = { \ + .name = "soc-camera-pdrv", \ + .id = idx, \ + .dev = { \ + .platform_data = &iclink##idx##_adv7180, \ + }, \ +}; + +MARZEN_CAMERA (0 ); +MARZEN_CAMERA (1 ); +static struct platform_device *marzen_devices[]__initdata = { ð_device, &sdhi0_device, &thermal_device, &hspi_device, &leds_device, + &camera0_device, + &camera1_device, };static const struct pinctrl_map marzen_pinctrl_map[] = {
@@ -219,6 +249,16 @@ static const struct pinctrl_map marzen_p/* USB2 */ PIN_MAP_MUX_GROUP_DEFAULT ("ehci-platform.1" ,"pfc-r8a7779" ,"usb2" ,"usb2" ), +/* VIN1 */ +PIN_MAP_MUX_GROUP_DEFAULT ("r8a7779-vin.1" ,"pfc-r8a7779" , +"vin1_clk" ,"vin1" ), +PIN_MAP_MUX_GROUP_DEFAULT ("r8a7779-vin.1" ,"pfc-r8a7779" , +"vin1_data8" ,"vin1" ), +/* VIN3 */ +PIN_MAP_MUX_GROUP_DEFAULT ("r8a7779-vin.3" ,"pfc-r8a7779" , +"vin3_clk" ,"vin3" ), +PIN_MAP_MUX_GROUP_DEFAULT ("r8a7779-vin.3" ,"pfc-r8a7779" , + "vin3_data8", "vin3"), };static void __init marzen_init (void )
@@ -235,6 +275,8 @@ static void __init marzen_init(void)r8a7779_add_standard_devices ();r8a7779_add_usb_phy_device (&usb_phy_platform_data); +r8a7779_add_vin_device (1 , &vin_platform_data); +r8a7779_add_vin_device (3 , &vin_platform_data);platform_add_devices (marzen_devices,ARRAY_SIZE (marzen_devices)); }
PATCH v5 3/3 ARM: shmobile: Marzen: enable VIN and ADV7180 in defconfig
In reply to Sergei ShtylyovFrom: Vladimir Barinov <[email protected]>
Add the VIN and ADV7180 drivers to 'marzen_defconfig'.
--- arch/arm/configs/marzen_defconfig | 7 +++++++ 1 file changed, 7 insertions(+)
arch/arm/configs/marzen_defconfig +7 -0
@@ -84,6 +84,13 @@ CONFIG_GPIO_RCAR=y CONFIG_THERMAL=y CONFIG_RCAR_THERMAL=y CONFIG_SSB=y +CONFIG_MEDIA_SUPPORT=y +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_SOC_CAMERA=y +CONFIG_VIDEO_RCAR_VIN=y +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set +CONFIG_VIDEO_ADV7180=y CONFIG_USB=y CONFIG_USB_RCAR_PHY=y CONFIG_MMC=y
v5 cover R8A7779/Marzen R-Car VIN driver support
In reply to Sergei ShtylyovQuoted 8 lines · Sergei Shtylyov
Hello.
[Resending with a real version #.]
Here's the set of 3 patches against the Mauro's 'media_tree.git' repo's
'master' branch. Here we add the VIN driver platform code for the R8A7779/Marzen with ADV7180 I2C video decoder.
Quoted 8 lines
[1/3] ARM: shmobile: r8a7779: add VIN support
[2/3] ARM: shmobile: Marzen: add VIN and ADV7180 support [3/3] ARM: shmobile: Marzen: enable VIN and ADV7180 in defconfigMauro has kindly agreed to merge this patchset thru his tree to resolve the
dependency on the driver's platform data header, provided that the maintainer ACKs this. Simon, could you ACK the patchset ASAP -- Mauro expects to close his tree for 3.12 this weekend or next Monday?
All three patches:
v5 cover R8A7779/Marzen R-Car VIN driver support
Hello.
Quoted 10 lines · Simon Horman
Quoted 9 lines
[Resending with a real version #.]
Here's the set of 3 patches against the Mauro's 'media_tree.git' repo's
'master' branch. Here we add the VIN driver platform code for the R8A7779/Marzen with ADV7180 I2C video decoder.[1/3] ARM: shmobile: r8a7779: add VIN support
[2/3] ARM: shmobile: Marzen: add VIN and ADV7180 support [3/3] ARM: shmobile: Marzen: enable VIN and ADV7180 in defconfig
Quoted 8 lines
Quoted 4 lines
Mauro has kindly agreed to merge this patchset thru his tree to resolve the
dependency on the driver's platform data header, provided that the maintainer ACKs this. Simon, could you ACK the patchset ASAP -- Mauro expects to close his tree for 3.12 this weekend or next Monday?All three patches:
Acked-by Simon Horman <[email protected]>
Mauro, I see you have only merged the R8A7778/BOCK-W VIN series and didn't
merge this one, obsoleting its patches in patchwork instead. What's wrong with them?
WBR, Sergei
v5 cover R8A7779/Marzen R-Car VIN driver support
Em Sat, 24 Aug 2013 20:39:42 +0400
Sergei Shtylyov <[email protected]> escreveu:
Quoted 19 lines
Hello.
Quoted 14 lines · Simon Horman
Quoted 14 lines
[Resending with a real version #.]
Here's the set of 3 patches against the Mauro's 'media_tree.git' repo's
'master' branch. Here we add the VIN driver platform code for the R8A7779/Marzen with ADV7180 I2C video decoder.[1/3] ARM: shmobile: r8a7779: add VIN support
[2/3] ARM: shmobile: Marzen: add VIN and ADV7180 support [3/3] ARM: shmobile: Marzen: enable VIN and ADV7180 in defconfigMauro has kindly agreed to merge this patchset thru his tree to resolve the
dependency on the driver's platform data header, provided that the maintainer ACKs this. Simon, could you ACK the patchset ASAP -- Mauro expects to close his tree for 3.12 this weekend or next Monday?
Quoted 7 lines
Quoted 3 lines
All three patches:
Acked-by Simon Horman <[email protected]>Mauro, I see you have only merged the R8A7778/BOCK-W VIN series and didn't
merge this one, obsoleting its patches in patchwork instead. What's wrong with them?
Sorry... as I saw v5 and v6 versions, one after the other, and both with VIN, from you, I assumed that v6 were just an update over v5.
I re-tagged them as new. I'll handle them on a next spin this weekend.
Regards,
Mauro