* [PATCH v5 0/3] R8A7779/Marzen R-Car VIN driver support
@ 2013-08-22 21:19 Sergei Shtylyov
2013-08-22 21:23 ` [PATCH v5 1/3] ARM: shmobile: r8a7779: add VIN support Sergei Shtylyov
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Sergei Shtylyov @ 2013-08-22 21:19 UTC (permalink / raw)
To: linux-arm-kernel
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
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v5 1/3] ARM: shmobile: r8a7779: add VIN support
2013-08-22 21:19 [PATCH v5 0/3] R8A7779/Marzen R-Car VIN driver support Sergei Shtylyov
@ 2013-08-22 21:23 ` Sergei Shtylyov
2013-08-22 21:25 ` [PATCH v5 2/3] ARM: shmobile: Marzen: add VIN and ADV7180 support Sergei Shtylyov
` (2 subsequent siblings)
3 siblings, 0 replies; 7+ messages in thread
From: Sergei Shtylyov @ 2013-08-22 21:23 UTC (permalink / raw)
To: linux-arm-kernel
From: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
Add VIN clocks and platform devices for R8A7779 SoC; add function to register
the VIN platform devices.
Signed-off-by: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
[Sergei: added 'id' parameter check to r8a7779_add_vin_device(), used '*pdata'
in *sizeof* operator there, renamed some variables, annotated vin[0-3]_resources
[] and 'vin[0-3]_info' as '__initdata'.]
Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
---
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(+)
Index: media_tree/arch/arm/mach-shmobile/clock-r8a7779.c
=================================--- media_tree.orig/arch/arm/mach-shmobile/clock-r8a7779.c
+++ media_tree/arch/arm/mach-shmobile/clock-r8a7779.c
@@ -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 */
Index: media_tree/arch/arm/mach-shmobile/include/mach/r8a7779.h
=================================--- media_tree.orig/arch/arm/mach-shmobile/include/mach/r8a7779.h
+++ media_tree/arch/arm/mach-shmobile/include/mach/r8a7779.h
@@ -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_devices
extern 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);
Index: media_tree/arch/arm/mach-shmobile/setup-r8a7779.c
=================================--- media_tree.orig/arch/arm/mach-shmobile/setup-r8a7779.c
+++ media_tree/arch/arm/mach-shmobile/setup-r8a7779.c
@@ -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) { }
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v5 2/3] ARM: shmobile: Marzen: add VIN and ADV7180 support
2013-08-22 21:19 [PATCH v5 0/3] R8A7779/Marzen R-Car VIN driver support Sergei Shtylyov
2013-08-22 21:23 ` [PATCH v5 1/3] ARM: shmobile: r8a7779: add VIN support Sergei Shtylyov
@ 2013-08-22 21:25 ` Sergei Shtylyov
2013-08-22 21:27 ` [PATCH v5 3/3] ARM: shmobile: Marzen: enable VIN and ADV7180 in defconfig Sergei Shtylyov
2013-08-23 0:11 ` [PATCH v5 0/3] R8A7779/Marzen R-Car VIN driver support Simon Horman
3 siblings, 0 replies; 7+ messages in thread
From: Sergei Shtylyov @ 2013-08-22 21:25 UTC (permalink / raw)
To: linux-arm-kernel
From: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
Add ADV7180 platform devices on the Marzen board, configure VIN1/3 pins, and
register VIN1/3 devices with the ADV7180 specific platform data.
Signed-off-by: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
[Sergei: removed superfluous tabulation and inserted empty lines in the macro
definition, updated the copyrights, annotated VIN platform data as '__initdata']
Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
---
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(-)
Index: media_tree/arch/arm/mach-shmobile/board-marzen.c
=================================--- media_tree.orig/arch/arm/mach-shmobile/board-marzen.c
+++ media_tree/arch/arm/mach-shmobile/board-marzen.c
@@ -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));
}
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v5 3/3] ARM: shmobile: Marzen: enable VIN and ADV7180 in defconfig
2013-08-22 21:19 [PATCH v5 0/3] R8A7779/Marzen R-Car VIN driver support Sergei Shtylyov
2013-08-22 21:23 ` [PATCH v5 1/3] ARM: shmobile: r8a7779: add VIN support Sergei Shtylyov
2013-08-22 21:25 ` [PATCH v5 2/3] ARM: shmobile: Marzen: add VIN and ADV7180 support Sergei Shtylyov
@ 2013-08-22 21:27 ` Sergei Shtylyov
2013-08-23 0:11 ` [PATCH v5 0/3] R8A7779/Marzen R-Car VIN driver support Simon Horman
3 siblings, 0 replies; 7+ messages in thread
From: Sergei Shtylyov @ 2013-08-22 21:27 UTC (permalink / raw)
To: linux-arm-kernel
From: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
Add the VIN and ADV7180 drivers to 'marzen_defconfig'.
Signed-off-by: Vladimir Barinov <vladimir.barinov@cogentembedded.com>
Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
---
arch/arm/configs/marzen_defconfig | 7 +++++++
1 file changed, 7 insertions(+)
Index: media_tree/arch/arm/configs/marzen_defconfig
=================================--- media_tree.orig/arch/arm/configs/marzen_defconfig
+++ media_tree/arch/arm/configs/marzen_defconfig
@@ -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
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v5 0/3] R8A7779/Marzen R-Car VIN driver support
2013-08-22 21:19 [PATCH v5 0/3] R8A7779/Marzen R-Car VIN driver support Sergei Shtylyov
` (2 preceding siblings ...)
2013-08-22 21:27 ` [PATCH v5 3/3] ARM: shmobile: Marzen: enable VIN and ADV7180 in defconfig Sergei Shtylyov
@ 2013-08-23 0:11 ` Simon Horman
2013-08-24 16:39 ` Sergei Shtylyov
3 siblings, 1 reply; 7+ messages in thread
From: Simon Horman @ 2013-08-23 0:11 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, Aug 23, 2013 at 01:19:13AM +0400, Sergei Shtylyov wrote:
> 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?
All three patches:
Acked-by: Simon Horman <horms+renesas@verge.net.au>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v5 0/3] R8A7779/Marzen R-Car VIN driver support
2013-08-23 0:11 ` [PATCH v5 0/3] R8A7779/Marzen R-Car VIN driver support Simon Horman
@ 2013-08-24 16:39 ` Sergei Shtylyov
2013-08-24 18:48 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 7+ messages in thread
From: Sergei Shtylyov @ 2013-08-24 16:39 UTC (permalink / raw)
To: linux-arm-kernel
Hello.
On 08/23/2013 04:11 AM, Simon Horman wrote:
>> [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?
> All three patches:
> Acked-by: Simon Horman <horms+renesas@verge.net.au>
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
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v5 0/3] R8A7779/Marzen R-Car VIN driver support
2013-08-24 16:39 ` Sergei Shtylyov
@ 2013-08-24 18:48 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 7+ messages in thread
From: Mauro Carvalho Chehab @ 2013-08-24 18:48 UTC (permalink / raw)
To: linux-arm-kernel
Em Sat, 24 Aug 2013 20:39:42 +0400
Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> escreveu:
> Hello.
>
> On 08/23/2013 04:11 AM, Simon Horman wrote:
>
> >> [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?
>
> > All three patches:
>
> > Acked-by: Simon Horman <horms+renesas@verge.net.au>
>
> 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
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2013-08-24 18:48 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-22 21:19 [PATCH v5 0/3] R8A7779/Marzen R-Car VIN driver support Sergei Shtylyov
2013-08-22 21:23 ` [PATCH v5 1/3] ARM: shmobile: r8a7779: add VIN support Sergei Shtylyov
2013-08-22 21:25 ` [PATCH v5 2/3] ARM: shmobile: Marzen: add VIN and ADV7180 support Sergei Shtylyov
2013-08-22 21:27 ` [PATCH v5 3/3] ARM: shmobile: Marzen: enable VIN and ADV7180 in defconfig Sergei Shtylyov
2013-08-23 0:11 ` [PATCH v5 0/3] R8A7779/Marzen R-Car VIN driver support Simon Horman
2013-08-24 16:39 ` Sergei Shtylyov
2013-08-24 18:48 ` Mauro Carvalho Chehab
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).