Skip to contentSkip to conversation

at91: devices and boards files update for 3.3

GIT PULL New Nicolas Ferre 6 participants 17 messages Dec 15, 2011 – Jan 6, 2012 1 message not in the archive

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Arnd, Olof,

This pull request adds the ISI to the sam9m10g45 board. As ISI has been waited for a long time on AT91, I think it is not possible to wait for the DT support. Moreover, DT support for this camera sensor + ISI soc interface seems not so trivial and will certainly need a handful of kernel releases before being stabilized.
Other changes are quite simple and self-explanatory...

The following changes since commit dc47ce90c3a822cd7c9e9339fe4d5f61dcb26b50:

Linux 3.2-rc5 (2011-12-09 15:09:32 -0800)

are available in the git repository at:
git://github.com/at91linux/linux-at91.git for-arnd-3.3-device_board

Hong Xu (1):
ARM: at91: Update struct atmel_nand_data to support PMECC

Josh Wu (2):
ARM: at91: add clock selection parameter for at91_add_device_isi()
ARM: at91: add Atmel ISI and ov2640 support on sam9m10g45 board

Nicolas Ferre (2):
ARM: at91/dma: remove platform data from DMA controller
ARM: at91/dma: DMA controller registering with DT support

 arch/arm/mach-at91/at91sam9263_devices.c |   13 +++-
 arch/arm/mach-at91/at91sam9g45_devices.c |  113 +++++++++++++++++++++++++++---
 arch/arm/mach-at91/at91sam9rl_devices.c  |    8 +--
 arch/arm/mach-at91/board-sam9m10g45ek.c  |   80 ++++++++++++++++++++-
 arch/arm/mach-at91/include/mach/board.h  |    6 ++-
 5 files changed, 198 insertions(+), 22 deletions(-)

Thanks, best regards,

Signature · 1 line
Nicolas Ferre
#1 lore raw

Hi,

Quoted 9 lines · Nicolas Ferre

Arnd, Olof,

This pull request adds the ISI to the sam9m10g45 board. As ISI has been waited for a long time on AT91, I think it is not possible to wait for the DT support. Moreover, DT support for this camera sensor + ISI soc interface seems not so trivial and will certainly need a handful of kernel releases before being stabilized.
Other changes are quite simple and self-explanatory...

Quoted 6 lines

The following changes since commit dc47ce90c3a822cd7c9e9339fe4d5f61dcb26b50:

?Linux 3.2-rc5 (2011-12-09 15:09:32 -0800)

are available in the git repository at:
?git://github.com/at91linux/linux-at91.git for-arnd-3.3-device_board

Sure, since you removed a defconfig I'm OK with a small amount of board addition for ISI.

However, I noticed that it doesn't build with at91sam9g45_defconfig:

arch/arm/mach-at91/board-sam9m10g45ek.c:195: error: unknown field 'full_mode' specified in initializer arch/arm/mach-at91/board-sam9m10g45ek.c:195: warning: excess elements in struct initializer arch/arm/mach-at91/board-sam9m10g45ek.c:195: warning: (near initialization for 'isi_data') arch/arm/mach-at91/board-sam9m10g45ek.c:198: error: unknown field 'mck_hz' specified in initializer

Please fixup and send fresh request.

-Olof

#2 lore raw

On 12/16/2011 08:06 AM, Olof Johansson :

Quoted 33 lines

Hi,

Quoted 9 lines · Nicolas Ferre

Arnd, Olof,

This pull request adds the ISI to the sam9m10g45 board. As ISI has been waited for a long time on AT91, I think it is not possible to wait for the DT support. Moreover, DT support for this camera sensor + ISI soc interface seems not so trivial and will certainly need a handful of kernel releases before being stabilized.
Other changes are quite simple and self-explanatory...

Quoted 6 lines

The following changes since commit dc47ce90c3a822cd7c9e9339fe4d5f61dcb26b50:

Linux 3.2-rc5 (2011-12-09 15:09:32 -0800)

are available in the git repository at:
git://github.com/at91linux/linux-at91.git for-arnd-3.3-device_board

Sure, since you removed a defconfig I'm OK with a small amount of board addition for ISI.

However, I noticed that it doesn't build with at91sam9g45_defconfig:

arch/arm/mach-at91/board-sam9m10g45ek.c:195: error: unknown field 'full_mode' specified in initializer arch/arm/mach-at91/board-sam9m10g45ek.c:195: warning: excess elements in struct initializer arch/arm/mach-at91/board-sam9m10g45ek.c:195: warning: (near initialization for 'isi_data') arch/arm/mach-at91/board-sam9m10g45ek.c:198: error: unknown field 'mck_hz' specified in initializer

Quoted 1 line

Please fixup and send fresh request.

Olof,

Yes, this ISI driver addition is also dependent on an update of the ISI driver itself that will certainly be included in 3.3 by Guennadi using v4L2 path.

So, do we have to wait for its inclusion in linux-next or maybe we can manage this little out-of-sync situation during the 3.3 life cycle...

ISI is a "several times reworked" and "long-awaited" driver and I really would like to see it included in mainline soon...

Best regards,

Signature · 1 line
Nicolas Ferre
#3 lore raw

Hi Nicolas,

Quoted 9 lines · Nicolas Ferre

Yes, this ISI driver addition is also dependent on an update of the ISI driver itself that will certainly be included in 3.3 by Guennadi using v4L2 path.

So, do we have to wait for its inclusion in linux-next or maybe we can manage this little out-of-sync situation during the 3.3 life cycle...

ISI is a "several times reworked" and "long-awaited" driver and I really would like to see it included in mainline soon...

I don't see why code that is known to be broken should be added to the kernel.

The way these things are normally handled is that once Guennadi has the patch on a stable branch, we can add that branch as a dependency that your code requires. So we pull that in as a dependency and apply your code on top of it (or, if it is just one or two patches, that they are are cherry-picked into your branch in the same way).

But that requires that he picks up the v4l patches and keeps it in a stable, small, branch and that said branch gets merged in the 3.3 merge window before the branch containing these at91 changes do.

Guennadi, sound reasonable to you?

-Olof

#4 lore raw

Hi Olof

Quoted 22 lines · Olof Johansson

Hi Nicolas,

Quoted 9 lines · Nicolas Ferre

Yes, this ISI driver addition is also dependent on an update of the ISI driver itself that will certainly be included in 3.3 by Guennadi using v4L2 path.

So, do we have to wait for its inclusion in linux-next or maybe we can manage this little out-of-sync situation during the 3.3 life cycle...

ISI is a "several times reworked" and "long-awaited" driver and I really would like to see it included in mainline soon...

I don't see why code that is known to be broken should be added to the kernel.

The way these things are normally handled is that once Guennadi has the patch on a stable branch, we can add that branch as a dependency that your code requires. So we pull that in as a dependency and apply your code on top of it (or, if it is just one or two patches, that they are are cherry-picked into your branch in the same way).

Quoted 5 lines

But that requires that he picks up the v4l patches and keeps it in a stable, small, branch and that said branch gets merged in the 3.3 merge window before the branch containing these at91 changes do.

Guennadi, sound reasonable to you?

I'm not sure what you call a "stable" branch. If you mean a branch in some tree somewhere (like my tree on linuxtv.org) then I wouldn't yet use that. I think, there are two ways to handle this:

1. Safe from the dependency and synchronisation PoV, but might cause problems during merge. One of the patches gets an ack from the respective maintainer but gets merged together with the other patch via the "wrong" tree. E.g., someone from at91 could ack this patch and I could apply it to V4L together with the actual ISI patch.

2. Each patch goes via its own tree, but we make sure, that at91 tree is pushed to Linus after the V4L tree. This is more "correct" - each patch is merged via its respective tree, but if the V4L tree is merged near the end of the merge interval, it might be difficult for at91 to hit the remaining window.

I'm ok with either of the above.

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/

#5 lore raw

Hi,

Quoted 30 lines · Guennadi Liakhovetski

Hi Olof

Quoted 26 lines · Olof Johansson

Hi Nicolas,

Quoted 9 lines · Nicolas Ferre

Yes, this ISI driver addition is also dependent on an update of the ISI driver itself that will certainly be included in 3.3 by Guennadi using v4L2 path.

So, do we have to wait for its inclusion in linux-next or maybe we can manage this little out-of-sync situation during the 3.3 life cycle...

ISI is a "several times reworked" and "long-awaited" driver and I really would like to see it included in mainline soon...

I don't see why code that is known to be broken should be added to the kernel.

The way these things are normally handled is that once Guennadi has the patch on a stable branch, we can add that branch as a dependency that your code requires. So we pull that in as a dependency and apply your code on top of it (or, if it is just one or two patches, that they are are cherry-picked into your branch in the same way).

But that requires that he picks up the v4l patches and keeps it in a stable, small, branch and that said branch gets merged in the 3.3 merge window before the branch containing these at91 changes do.

Quoted 5 lines
Quoted 1 line

Guennadi, sound reasonable to you?

I'm not sure what you call a "stable" branch. If you mean a branch in some tree somewhere (like my tree on linuxtv.org) then I wouldn't yet use that. I think, there are two ways to handle this:

When I say "stable" branch, I mean a topic branch that is staged for 3.3, pulled into a for-next branch that is picked up by linux-next and that *will not be rebased* before the merge window. In other words, patches that have been staged and won't be touched before they go in. It would them match case (2) below, but it would also allow us to merge in either a branch pull of said stable staging branch as a base for the at91 patch -- if the V4L code is merged before the at91 branch then git will handle it nicely.

Quoted 6 lines

1. Safe from the dependency and synchronisation PoV, but might cause problems during merge. One of the patches gets an ack from the respective maintainer but gets merged together with the other patch via the "wrong" tree. E.g., someone from at91 could ack this patch and I could apply it to V4L together with the actual ISI patch.

Quoted 7 lines

2. Each patch goes via its own tree, but we make sure, that at91 tree is pushed to Linus after the V4L tree. This is more "correct" - each patch is merged via its respective tree, but if the V4L tree is merged near the end of the merge interval, it might be difficult for at91 to hit the remaining window.

I'm ok with either of the above.

Since we're trying to keep the amount of board code addition to a minimum on ARM right now, I would prefer if all changes to said code goes through arm-soc mostly to keep an eye on just what goes in, which means (2). Do you normally get the v4l tree merged very late during the merge window?

We can keep one late-merge branch in arm-soc that contain patches with external and possibly late dependencies and submit that branch last, but it would be good if we had a bit of margin to get it in. :)

-Olof

#6 lore raw
Quoted 36 lines · Olof Johansson

Hi,

Quoted 32 lines · Guennadi Liakhovetski

Hi Olof

Quoted 27 lines · Olof Johansson

Hi Nicolas,

Quoted 9 lines · Nicolas Ferre

Yes, this ISI driver addition is also dependent on an update of the ISI driver itself that will certainly be included in 3.3 by Guennadi using v4L2 path.

So, do we have to wait for its inclusion in linux-next or maybe we can manage this little out-of-sync situation during the 3.3 life cycle...

ISI is a "several times reworked" and "long-awaited" driver and I really would like to see it included in mainline soon...

I don't see why code that is known to be broken should be added to the kernel.

The way these things are normally handled is that once Guennadi has the patch on a stable branch, we can add that branch as a dependency that your code requires. So we pull that in as a dependency and apply your code on top of it (or, if it is just one or two patches, that they are are cherry-picked into your branch in the same way).

But that requires that he picks up the v4l patches and keeps it in a stable, small, branch and that said branch gets merged in the 3.3 merge window before the branch containing these at91 changes do.

Guennadi, sound reasonable to you?

Quoted 8 lines
Quoted 3 lines

I'm not sure what you call a "stable" branch. If you mean a branch in some tree somewhere (like my tree on linuxtv.org) then I wouldn't yet use that. I think, there are two ways to handle this:

When I say "stable" branch, I mean a topic branch that is staged for 3.3, pulled into a for-next branch that is picked up by linux-next and that *will not be rebased* before the merge window. In other words, patches that have been staged and won't be touched before they go in.

Yeah, but it's only the actual Linus' tree, that is really stable, you know;-)

Quoted 17 lines

It would them match case (2) below, but it would also allow us to merge in either a branch pull of said stable staging branch as a base for the at91 patch -- if the V4L code is merged before the at91 branch then git will handle it nicely.

Quoted 12 lines

1. Safe from the dependency and synchronisation PoV, but might cause problems during merge. One of the patches gets an ack from the respective maintainer but gets merged together with the other patch via the "wrong" tree. E.g., someone from at91 could ack this patch and I could apply it to V4L together with the actual ISI patch.

2. Each patch goes via its own tree, but we make sure, that at91 tree is pushed to Linus after the V4L tree. This is more "correct" - each patch is merged via its respective tree, but if the V4L tree is merged near the end of the merge interval, it might be difficult for at91 to hit the remaining window.

Quoted 6 lines
Quoted 1 line

I'm ok with either of the above.

Since we're trying to keep the amount of board code addition to a minimum on ARM right now, I would prefer if all changes to said code goes through arm-soc mostly to keep an eye on just what goes in, which means (2).

That's exactly why I said "with an ack" - I certainly wouldn't take a patch for outside of v4l without suitable acks.

Quoted 2 lines

Do you normally get the v4l tree merged very late during the merge window?

IIRC, normally Mauro is trying to push v4l twice per merge window, so, it would be my task then to manage it in the first pull request.

Quoted 3 lines

We can keep one late-merge branch in arm-soc that contain patches with external and possibly late dependencies and submit that branch last, but it would be good if we had a bit of margin to get it in. :)

Ok, let's try this.

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/

#7 lore raw
Quoted 5 lines · Guennadi Liakhovetski
Quoted 3 lines

We can keep one late-merge branch in arm-soc that contain patches with external and possibly late dependencies and submit that branch last, but it would be good if we had a bit of margin to get it in. :)

Ok, let's try this.

Sounds good. Let us know when the stable branch is available. Nicolas, please prepare your branch as soon as possible once you have that info and send a pull request -- we still want the code into arm-soc branches very soon.

Thanks!

-Olof

#8 lore raw

On 12/20/2011 05:32 AM, Olof Johansson :

Quoted 7 lines
Quoted 4 lines · Guennadi Liakhovetski
Quoted 3 lines

We can keep one late-merge branch in arm-soc that contain patches with external and possibly late dependencies and submit that branch last, but it would be good if we had a bit of margin to get it in. :)

Quoted 6 lines
Quoted 1 line

Ok, let's try this.

Sounds good. Let us know when the stable branch is available. Nicolas, please prepare your branch as soon as possible once you have that info and send a pull request -- we still want the code into arm-soc branches very soon.

Olof, Guennadi,

I rebase today this branch on top of:
git://linuxtv.org/gliakhovetski/v4l-dvb.git for-3.3

I send another pull request real-soon-now...
Will it be still possible to make it for 3.3 merge window?

Best regards,

Signature · 1 line
Nicolas Ferre
#9 lore raw

(added Mauro and linux-media to CC)

Quoted 15 lines · Nicolas Ferre

On 12/20/2011 05:32 AM, Olof Johansson :

Quoted 7 lines
Quoted 4 lines · Guennadi Liakhovetski
Quoted 3 lines

We can keep one late-merge branch in arm-soc that contain patches with external and possibly late dependencies and submit that branch last, but it would be good if we had a bit of margin to get it in. :)

Quoted 6 lines
Quoted 1 line

Ok, let's try this.

Sounds good. Let us know when the stable branch is available. Nicolas, please prepare your branch as soon as possible once you have that info and send a pull request -- we still want the code into arm-soc branches very soon.

Quoted 7 lines

Olof, Guennadi,

I rebase today this branch on top of:
git://linuxtv.org/gliakhovetski/v4l-dvb.git for-3.3

I send another pull request real-soon-now...
Will it be still possible to make it for 3.3 merge window?

Looks like Mauro still hasn't pulled my branch in. I did ask him on IRC to do this and to push to Linus asap, but maybe he has missed that, I really should have mentioned that in the pull request. Mauro, could you, please, pull and include my branch in your first pull request for Linus for 3.3?

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/

#10 lore raw

PATCH v3 1/2 V4L: atmel-isi: add code to enable/disable ISI_MCK clock

In reply to Olof Johansson

From: Josh Wu <[email protected]>

This patch
- add ISI_MCK clock enable/disable code.
- change field name in isi_platform_data structure

---

Arnd, please, pull this patch via your tree to avoid having to wait for the V4L tree, Mauro has acked it.

 drivers/media/video/atmel-isi.c |   31 +++++++++++++++++++++++++++++--
 include/media/atmel-isi.h       |    4 +++-
 2 files changed, 32 insertions(+), 3 deletions(-)
drivers/media/video/atmel-isi.c +29 -2
index b25bd7b..9fe4519 100644
@@ -90,7 +90,10 @@ struct atmel_isi {
 	struct isi_dma_desc		dma_desc[MAX_BUFFER_NUM];
 
 	struct completion		complete;
+	/* ISI peripherial clock */
 	struct clk			*pclk;
+	/* ISI_MCK, feed to camera sensor to generate pixel clock */
+	struct clk			*mck;
 	unsigned int			irq;
 
 	struct isi_platform_data	*pdata;
@@ -766,6 +769,12 @@ static int isi_camera_add_device(struct soc_camera_device *icd)
 	if (ret)
 		return ret;
 
+	ret = clk_enable(isi->mck);
+	if (ret) {
+		clk_disable(isi->pclk);
+		return ret;
+	}
+
 	isi->icd = icd;
 	dev_dbg(icd->parent, "Atmel ISI Camera driver attached to camera %d\n",
 		 icd->devnum);
@@ -779,6 +788,7 @@ static void isi_camera_remove_device(struct soc_camera_device *icd)
 
 	BUG_ON(icd != isi->icd);
 
+	clk_disable(isi->mck);
 	clk_disable(isi->pclk);
 	isi->icd = NULL;
 
@@ -874,7 +884,7 @@ static int isi_camera_set_bus_param(struct soc_camera_device *icd)
 
 	if (isi->pdata->has_emb_sync)
 		cfg1 |= ISI_CFG1_EMB_SYNC;
-	if (isi->pdata->isi_full_mode)
+	if (isi->pdata->full_mode)
 		cfg1 |= ISI_CFG1_FULL_MODE;
 
 	isi_writel(isi, ISI_CTRL, ISI_CTRL_DIS);
@@ -912,6 +922,7 @@ static int __devexit atmel_isi_remove(struct platform_device *pdev)
 			isi->fb_descriptors_phys);
 
 	iounmap(isi->regs);
+	clk_put(isi->mck);
 	clk_put(isi->pclk);
 	kfree(isi);
 
@@ -930,7 +941,7 @@ static int __devinit atmel_isi_probe(struct platform_device *pdev)
 	struct isi_platform_data *pdata;
 
 	pdata = dev->platform_data;
-	if (!pdata || !pdata->data_width_flags) {
+	if (!pdata || !pdata->data_width_flags || !pdata->mck_hz) {
 		dev_err(&pdev->dev,
 			"No config available for Atmel ISI\n");
 		return -EINVAL;
@@ -959,6 +970,19 @@ static int __devinit atmel_isi_probe(struct platform_device *pdev)
 	INIT_LIST_HEAD(&isi->video_buffer_list);
 	INIT_LIST_HEAD(&isi->dma_desc_head);
 
+	/* Get ISI_MCK, provided by programmable clock or external clock */
+	isi->mck = clk_get(dev, "isi_mck");
+	if (IS_ERR(isi->mck)) {
+		dev_err(dev, "Failed to get isi_mck\n");
+		ret = PTR_ERR(isi->mck);
+		goto err_clk_get;
+	}
+
+	/* Set ISI_MCK's frequency, it should be faster than pixel clock */
+	ret = clk_set_rate(isi->mck, pdata->mck_hz);
+	if (ret < 0)
+		goto err_set_mck_rate;
+
 	isi->p_fb_descriptors = dma_alloc_coherent(&pdev->dev,
 				sizeof(struct fbd) * MAX_BUFFER_NUM,
 				&isi->fb_descriptors_phys,
@@ -1034,6 +1058,9 @@ err_alloc_ctx:
 			isi->p_fb_descriptors,
 			isi->fb_descriptors_phys);
 err_alloc_descriptors:
+err_set_mck_rate:
+	clk_put(isi->mck);
+err_clk_get:
 	kfree(isi);
 err_alloc_isi:
 	clk_put(pclk);
include/media/atmel-isi.h +3 -1
index 26cece5..6568230 100644
@@ -110,10 +110,12 @@ struct isi_platform_data {
 	u8 hsync_act_low;
 	u8 vsync_act_low;
 	u8 pclk_act_falling;
-	u8 isi_full_mode;
+	u8 full_mode;
 	u32 data_width_flags;
 	/* Using for ISI_CFG1 */
 	u32 frate;
+	/* Using for ISI_MCK */
+	u32 mck_hz;
 };
 
 #endif /* __ATMEL_ISI_H__ */
Signature · 1 line
1.7.2.5
#11 lore raw

PATCH v3 1/2 V4L: atmel-isi: add code to enable/disable ISI_MCK clock

clk_prepare/clk_unprepare?

Quoted 138 lines · Guennadi Liakhovetski

From: Josh Wu <[email protected]>

This patch
- add ISI_MCK clock enable/disable code.
- change field name in isi_platform_data structure

---

Arnd, please, pull this patch via your tree to avoid having to wait for the V4L tree, Mauro has acked it.

 drivers/media/video/atmel-isi.c |   31 +++++++++++++++++++++++++++++--
 include/media/atmel-isi.h       |    4 +++-
 2 files changed, 32 insertions(+), 3 deletions(-)
drivers/media/video/atmel-isi.c +29 -2
index b25bd7b..9fe4519 100644
@@ -90,7 +90,10 @@ struct atmel_isi {
 	struct isi_dma_desc		dma_desc[MAX_BUFFER_NUM];
 
 	struct completion		complete;
+	/* ISI peripherial clock */
 	struct clk			*pclk;
+	/* ISI_MCK, feed to camera sensor to generate pixel clock */
+	struct clk			*mck;
 	unsigned int			irq;
 
 	struct isi_platform_data	*pdata;
@@ -766,6 +769,12 @@ static int isi_camera_add_device(struct soc_camera_device *icd)
 	if (ret)
 		return ret;
 
+	ret = clk_enable(isi->mck);
+	if (ret) {
+		clk_disable(isi->pclk);
+		return ret;
+	}
+
 	isi->icd = icd;
 	dev_dbg(icd->parent, "Atmel ISI Camera driver attached to camera %d\n",
 		 icd->devnum);
@@ -779,6 +788,7 @@ static void isi_camera_remove_device(struct soc_camera_device *icd)
 
 	BUG_ON(icd != isi->icd);
 
+	clk_disable(isi->mck);
 	clk_disable(isi->pclk);
 	isi->icd = NULL;
 
@@ -874,7 +884,7 @@ static int isi_camera_set_bus_param(struct soc_camera_device *icd)
 
 	if (isi->pdata->has_emb_sync)
 		cfg1 |= ISI_CFG1_EMB_SYNC;
-	if (isi->pdata->isi_full_mode)
+	if (isi->pdata->full_mode)
 		cfg1 |= ISI_CFG1_FULL_MODE;
 
 	isi_writel(isi, ISI_CTRL, ISI_CTRL_DIS);
@@ -912,6 +922,7 @@ static int __devexit atmel_isi_remove(struct platform_device *pdev)
 			isi->fb_descriptors_phys);
 
 	iounmap(isi->regs);
+	clk_put(isi->mck);
 	clk_put(isi->pclk);
 	kfree(isi);
 
@@ -930,7 +941,7 @@ static int __devinit atmel_isi_probe(struct platform_device *pdev)
 	struct isi_platform_data *pdata;
 
 	pdata = dev->platform_data;
-	if (!pdata || !pdata->data_width_flags) {
+	if (!pdata || !pdata->data_width_flags || !pdata->mck_hz) {
 		dev_err(&pdev->dev,
 			"No config available for Atmel ISI\n");
 		return -EINVAL;
@@ -959,6 +970,19 @@ static int __devinit atmel_isi_probe(struct platform_device *pdev)
 	INIT_LIST_HEAD(&isi->video_buffer_list);
 	INIT_LIST_HEAD(&isi->dma_desc_head);
 
+	/* Get ISI_MCK, provided by programmable clock or external clock */
+	isi->mck = clk_get(dev, "isi_mck");
+	if (IS_ERR(isi->mck)) {
+		dev_err(dev, "Failed to get isi_mck\n");
+		ret = PTR_ERR(isi->mck);
+		goto err_clk_get;
+	}
+
+	/* Set ISI_MCK's frequency, it should be faster than pixel clock */
+	ret = clk_set_rate(isi->mck, pdata->mck_hz);
+	if (ret < 0)
+		goto err_set_mck_rate;
+
 	isi->p_fb_descriptors = dma_alloc_coherent(&pdev->dev,
 				sizeof(struct fbd) * MAX_BUFFER_NUM,
 				&isi->fb_descriptors_phys,
@@ -1034,6 +1058,9 @@ err_alloc_ctx:
 			isi->p_fb_descriptors,
 			isi->fb_descriptors_phys);
 err_alloc_descriptors:
+err_set_mck_rate:
+	clk_put(isi->mck);
+err_clk_get:
 	kfree(isi);
 err_alloc_isi:
 	clk_put(pclk);
include/media/atmel-isi.h +3 -1
index 26cece5..6568230 100644
@@ -110,10 +110,12 @@ struct isi_platform_data {
 	u8 hsync_act_low;
 	u8 vsync_act_low;
 	u8 pclk_act_falling;
-	u8 isi_full_mode;
+	u8 full_mode;
 	u32 data_width_flags;
 	/* Using for ISI_CFG1 */
 	u32 frate;
+	/* Using for ISI_MCK */
+	u32 mck_hz;
 };
 
 #endif /* __ATMEL_ISI_H__ */
Signature · 7 lines
1.7.2.5


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
#12 lore raw

PATCH v3 1/2 V4L: atmel-isi: add code to enable/disable ISI_MCK clock

On 01/05/2012 06:09 PM, Russell King - ARM Linux :

Quoted 1 line

clk_prepare/clk_unprepare?

Right, Guennadi, this modification has already made by Josh and it was the second patch of this series:
"[PATCH v3 2/2] [media] V4L: atmel-isi: add clk_prepare()/clk_unprepare() functions"

Moreover, I thought that both of them should go through v4l git tree?...
If it is not the case anymore, I think that Olof and Arnd prefer to pull from git better than individual patches.

Best regards,

Quoted 140 lines · Guennadi Liakhovetski
Quoted 138 lines

From: Josh Wu <[email protected]>

This patch
- add ISI_MCK clock enable/disable code.
- change field name in isi_platform_data structure

---

Arnd, please, pull this patch via your tree to avoid having to wait for the V4L tree, Mauro has acked it.

 drivers/media/video/atmel-isi.c |   31 +++++++++++++++++++++++++++++--
 include/media/atmel-isi.h       |    4 +++-
 2 files changed, 32 insertions(+), 3 deletions(-)
drivers/media/video/atmel-isi.c +29 -2
index b25bd7b..9fe4519 100644
@@ -90,7 +90,10 @@ struct atmel_isi {
 	struct isi_dma_desc		dma_desc[MAX_BUFFER_NUM];
 
 	struct completion		complete;
+	/* ISI peripherial clock */
 	struct clk			*pclk;
+	/* ISI_MCK, feed to camera sensor to generate pixel clock */
+	struct clk			*mck;
 	unsigned int			irq;
 
 	struct isi_platform_data	*pdata;
@@ -766,6 +769,12 @@ static int isi_camera_add_device(struct soc_camera_device *icd)
 	if (ret)
 		return ret;
 
+	ret = clk_enable(isi->mck);
+	if (ret) {
+		clk_disable(isi->pclk);
+		return ret;
+	}
+
 	isi->icd = icd;
 	dev_dbg(icd->parent, "Atmel ISI Camera driver attached to camera %d\n",
 		 icd->devnum);
@@ -779,6 +788,7 @@ static void isi_camera_remove_device(struct soc_camera_device *icd)
 
 	BUG_ON(icd != isi->icd);
 
+	clk_disable(isi->mck);
 	clk_disable(isi->pclk);
 	isi->icd = NULL;
 
@@ -874,7 +884,7 @@ static int isi_camera_set_bus_param(struct soc_camera_device *icd)
 
 	if (isi->pdata->has_emb_sync)
 		cfg1 |= ISI_CFG1_EMB_SYNC;
-	if (isi->pdata->isi_full_mode)
+	if (isi->pdata->full_mode)
 		cfg1 |= ISI_CFG1_FULL_MODE;
 
 	isi_writel(isi, ISI_CTRL, ISI_CTRL_DIS);
@@ -912,6 +922,7 @@ static int __devexit atmel_isi_remove(struct platform_device *pdev)
 			isi->fb_descriptors_phys);
 
 	iounmap(isi->regs);
+	clk_put(isi->mck);
 	clk_put(isi->pclk);
 	kfree(isi);
 
@@ -930,7 +941,7 @@ static int __devinit atmel_isi_probe(struct platform_device *pdev)
 	struct isi_platform_data *pdata;
 
 	pdata = dev->platform_data;
-	if (!pdata || !pdata->data_width_flags) {
+	if (!pdata || !pdata->data_width_flags || !pdata->mck_hz) {
 		dev_err(&pdev->dev,
 			"No config available for Atmel ISI\n");
 		return -EINVAL;
@@ -959,6 +970,19 @@ static int __devinit atmel_isi_probe(struct platform_device *pdev)
 	INIT_LIST_HEAD(&isi->video_buffer_list);
 	INIT_LIST_HEAD(&isi->dma_desc_head);
 
+	/* Get ISI_MCK, provided by programmable clock or external clock */
+	isi->mck = clk_get(dev, "isi_mck");
+	if (IS_ERR(isi->mck)) {
+		dev_err(dev, "Failed to get isi_mck\n");
+		ret = PTR_ERR(isi->mck);
+		goto err_clk_get;
+	}
+
+	/* Set ISI_MCK's frequency, it should be faster than pixel clock */
+	ret = clk_set_rate(isi->mck, pdata->mck_hz);
+	if (ret < 0)
+		goto err_set_mck_rate;
+
 	isi->p_fb_descriptors = dma_alloc_coherent(&pdev->dev,
 				sizeof(struct fbd) * MAX_BUFFER_NUM,
 				&isi->fb_descriptors_phys,
@@ -1034,6 +1058,9 @@ err_alloc_ctx:
 			isi->p_fb_descriptors,
 			isi->fb_descriptors_phys);
 err_alloc_descriptors:
+err_set_mck_rate:
+	clk_put(isi->mck);
+err_clk_get:
 	kfree(isi);
 err_alloc_isi:
 	clk_put(pclk);
include/media/atmel-isi.h +3 -1
index 26cece5..6568230 100644
@@ -110,10 +110,12 @@ struct isi_platform_data {
 	u8 hsync_act_low;
 	u8 vsync_act_low;
 	u8 pclk_act_falling;
-	u8 isi_full_mode;
+	u8 full_mode;
 	u32 data_width_flags;
 	/* Using for ISI_CFG1 */
 	u32 frate;
+	/* Using for ISI_MCK */
+	u32 mck_hz;
 };
 
 #endif /* __ATMEL_ISI_H__ */
Signature · 7 lines
1.7.2.5


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Signature · 1 line
Nicolas Ferre
#13 lore raw

PATCH v3 1/2 V4L: atmel-isi: add code to enable/disable ISI_MCK clock

Quoted 5 lines · Nicolas Ferre

On 01/05/2012 06:09 PM, Russell King - ARM Linux :

Quoted 1 line

clk_prepare/clk_unprepare?

Right, Guennadi, this modification has already made by Josh and it was the second patch of this series:
"[PATCH v3 2/2] [media] V4L: atmel-isi: add clk_prepare()/clk_unprepare() functions"

Right, but not for this patch... I'll let him fix it here too.

Quoted 1 line

Moreover, I thought that both of them should go through v4l git tree?...

It could, but another arm patch depends on this one, so, we decided, it would be easier to pull also this one via arm.

Quoted 2 lines

If it is not the case anymore, I think that Olof and Arnd prefer to pull from git better than individual patches.

Hm, this shouldn't be a problem normally...

Thanks
Guennadi

Quoted 138 lines

Best regards,

Quoted 135 lines · Guennadi Liakhovetski
Quoted 134 lines

From: Josh Wu <[email protected]>

This patch
- add ISI_MCK clock enable/disable code.
- change field name in isi_platform_data structure

---

Arnd, please, pull this patch via your tree to avoid having to wait for the V4L tree, Mauro has acked it.

 drivers/media/video/atmel-isi.c |   31 +++++++++++++++++++++++++++++--
 include/media/atmel-isi.h       |    4 +++-
 2 files changed, 32 insertions(+), 3 deletions(-)
drivers/media/video/atmel-isi.c +29 -2
index b25bd7b..9fe4519 100644
@@ -90,7 +90,10 @@ struct atmel_isi {
 	struct isi_dma_desc		dma_desc[MAX_BUFFER_NUM];
 
 	struct completion		complete;
+	/* ISI peripherial clock */
 	struct clk			*pclk;
+	/* ISI_MCK, feed to camera sensor to generate pixel clock */
+	struct clk			*mck;
 	unsigned int			irq;
 
 	struct isi_platform_data	*pdata;
@@ -766,6 +769,12 @@ static int isi_camera_add_device(struct soc_camera_device *icd)
 	if (ret)
 		return ret;
 
+	ret = clk_enable(isi->mck);
+	if (ret) {
+		clk_disable(isi->pclk);
+		return ret;
+	}
+
 	isi->icd = icd;
 	dev_dbg(icd->parent, "Atmel ISI Camera driver attached to camera %d\n",
 		 icd->devnum);
@@ -779,6 +788,7 @@ static void isi_camera_remove_device(struct soc_camera_device *icd)
 
 	BUG_ON(icd != isi->icd);
 
+	clk_disable(isi->mck);
 	clk_disable(isi->pclk);
 	isi->icd = NULL;
 
@@ -874,7 +884,7 @@ static int isi_camera_set_bus_param(struct soc_camera_device *icd)
 
 	if (isi->pdata->has_emb_sync)
 		cfg1 |= ISI_CFG1_EMB_SYNC;
-	if (isi->pdata->isi_full_mode)
+	if (isi->pdata->full_mode)
 		cfg1 |= ISI_CFG1_FULL_MODE;
 
 	isi_writel(isi, ISI_CTRL, ISI_CTRL_DIS);
@@ -912,6 +922,7 @@ static int __devexit atmel_isi_remove(struct platform_device *pdev)
 			isi->fb_descriptors_phys);
 
 	iounmap(isi->regs);
+	clk_put(isi->mck);
 	clk_put(isi->pclk);
 	kfree(isi);
 
@@ -930,7 +941,7 @@ static int __devinit atmel_isi_probe(struct platform_device *pdev)
 	struct isi_platform_data *pdata;
 
 	pdata = dev->platform_data;
-	if (!pdata || !pdata->data_width_flags) {
+	if (!pdata || !pdata->data_width_flags || !pdata->mck_hz) {
 		dev_err(&pdev->dev,
 			"No config available for Atmel ISI\n");
 		return -EINVAL;
@@ -959,6 +970,19 @@ static int __devinit atmel_isi_probe(struct platform_device *pdev)
 	INIT_LIST_HEAD(&isi->video_buffer_list);
 	INIT_LIST_HEAD(&isi->dma_desc_head);
 
+	/* Get ISI_MCK, provided by programmable clock or external clock */
+	isi->mck = clk_get(dev, "isi_mck");
+	if (IS_ERR(isi->mck)) {
+		dev_err(dev, "Failed to get isi_mck\n");
+		ret = PTR_ERR(isi->mck);
+		goto err_clk_get;
+	}
+
+	/* Set ISI_MCK's frequency, it should be faster than pixel clock */
+	ret = clk_set_rate(isi->mck, pdata->mck_hz);
+	if (ret < 0)
+		goto err_set_mck_rate;
+
 	isi->p_fb_descriptors = dma_alloc_coherent(&pdev->dev,
 				sizeof(struct fbd) * MAX_BUFFER_NUM,
 				&isi->fb_descriptors_phys,
@@ -1034,6 +1058,9 @@ err_alloc_ctx:
 			isi->p_fb_descriptors,
 			isi->fb_descriptors_phys);
 err_alloc_descriptors:
+err_set_mck_rate:
+	clk_put(isi->mck);
+err_clk_get:
 	kfree(isi);
 err_alloc_isi:
 	clk_put(pclk);
include/media/atmel-isi.h +3 -1
index 26cece5..6568230 100644
@@ -110,10 +110,12 @@ struct isi_platform_data {
 	u8 hsync_act_low;
 	u8 vsync_act_low;
 	u8 pclk_act_falling;
-	u8 isi_full_mode;
+	u8 full_mode;
 	u32 data_width_flags;
 	/* Using for ISI_CFG1 */
 	u32 frate;
+	/* Using for ISI_MCK */
+	u32 mck_hz;
 };
 
 #endif /* __ATMEL_ISI_H__ */
Signature · 1 line
1.7.2.5
Quoted 10 lines
Quoted 5 lines
Quoted 4 lines

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Signature · 1 line
Nicolas Ferre

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/

#14 lore raw

PATCH v3 1/2 V4L: atmel-isi: add code to enable/disable ISI_MCK clock

Hi, Guennadi

Quoted 6 lines · Guennadi Liakhovetski
Quoted 4 lines · Nicolas Ferre

On 01/05/2012 06:09 PM, Russell King - ARM Linux :

Quoted 1 line

clk_prepare/clk_unprepare?

Right, Guennadi, this modification has already made by Josh and it

was the second patch of this series:

Quoted 1 line
Quoted 1 line

"[PATCH v3 2/2] [media] V4L: atmel-isi: add

clk_prepare()/clk_unprepare() functions"

Quoted 1 line

Right, but not for this patch... I'll let him fix it here too.

I checked the second patch: "[PATCH v3 2/2] [media] V4L: atmel-isi: add clk_prepare()/clk_unprepare() functions", it can be applied after this patch in the branch for-3.3 in your git tree.

Could you give me more details about that I need to fix in the second patch?

Best Regards,
Josh Wu

Quoted 1 line
Quoted 1 line

Moreover, I thought that both of them should go through v4l git

tree?...

Quoted 1 line

It could, but another arm patch depends on this one, so, we decided,

it

Quoted 3 lines

would be easier to pull also this one via arm.

Quoted 1 line

If it is not the case anymore, I think that Olof and Arnd prefer to

pull

Quoted 11 lines
Quoted 1 line

from git better than individual patches.

Hm, this shouldn't be a problem normally...

Thanks
Guennadi

Quoted 4 lines

Best regards,

Quoted 1 line

On Thu, Jan 05, 2012 at 05:55:17PM +0100, Guennadi Liakhovetski

Quoted 6 lines · wrote:
Quoted 6 lines
Quoted 6 lines
Quoted 6 lines

From: Josh Wu <[email protected]>

This patch
- add ISI_MCK clock enable/disable code.
- change field name in isi_platform_data structure

Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines

---

Arnd, please, pull this patch via your tree to avoid having to

wait for

Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines

the V4L tree, Mauro has acked it.

 drivers/media/video/atmel-isi.c |   31

+++++++++++++++++++++++++++++--

Quoted 4 lines
Quoted 4 lines
Quoted 4 lines

Review

Quoted 4 lines
 include/media/atmel-isi.h       |    4 +++-
 2 files changed, 32 insertions(+), 3 deletions(-)
(quoted diff) +0 -0

b/drivers/media/video/atmel-isi.c

Quoted 13 lines
Quoted 13 lines
Quoted 13 lines
Quoted 13 lines

index b25bd7b..9fe4519 100644

drivers/media/video/atmel-isi.c +3 -0
@@ -90,7 +90,10 @@ struct atmel_isi {
 	struct isi_dma_desc		dma_desc[MAX_BUFFER_NUM];
 
 	struct completion		complete;
+	/* ISI peripherial clock */
 	struct clk			*pclk;
+	/* ISI_MCK, feed to camera sensor to generate pixel clock */
+	struct clk			*mck;
 	unsigned int			irq;
 
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines

drivers/media/video/atmel-isi.c static int isi_camera_add_device(struct

Quoted 2 lines
drivers/media/video/atmel-isi.c +0 -0
 	struct isi_platform_data	*pdata;
@@ -766,6 +769,12 @@ static int isi_camera_add_device(struct

soc_camera_device *icd)

Quoted 11 lines
Quoted 11 lines
Quoted 11 lines

drivers/media/video/atmel-isi.c static int isi_camera_add_device(struct soc_camera_device *icd)

Quoted 11 lines
drivers/media/video/atmel-isi.c +6 -0
 	if (ret)
 		return ret;
 
+	ret = clk_enable(isi->mck);
+	if (ret) {
+		clk_disable(isi->pclk);
+		return ret;
+	}
+
 	isi->icd = icd;
 	dev_dbg(icd->parent, "Atmel ISI Camera driver attached to camera

%d\n",

Quoted 2 lines
Quoted 2 lines
Quoted 2 lines

drivers/media/video/atmel-isi.c static void isi_camera_remove_device(struct

Quoted 2 lines
drivers/media/video/atmel-isi.c +0 -0
 		 icd->devnum);
@@ -779,6 +788,7 @@ static void isi_camera_remove_device(struct

soc_camera_device *icd)

Quoted 8 lines
Quoted 8 lines
Quoted 8 lines

drivers/media/video/atmel-isi.c static int isi_camera_set_bus_param(struct

Quoted 8 lines
drivers/media/video/atmel-isi.c +1 -0
 	BUG_ON(icd != isi->icd);
 
+	clk_disable(isi->mck);
 	clk_disable(isi->pclk);
 	isi->icd = NULL;
 
@@ -874,7 +884,7 @@ static int isi_camera_set_bus_param(struct

soc_camera_device *icd)

Quoted 9 lines
Quoted 9 lines
Quoted 9 lines

drivers/media/video/atmel-isi.c static int __devexit atmel_isi_remove(struct

Quoted 9 lines
drivers/media/video/atmel-isi.c +1 -1
 	if (isi->pdata->has_emb_sync)
 		cfg1 |= ISI_CFG1_EMB_SYNC;
-	if (isi->pdata->isi_full_mode)
+	if (isi->pdata->full_mode)
 		cfg1 |= ISI_CFG1_FULL_MODE;
 
 	isi_writel(isi, ISI_CTRL, ISI_CTRL_DIS);
@@ -912,6 +922,7 @@ static int __devexit atmel_isi_remove(struct

platform_device *pdev)

Quoted 8 lines
Quoted 8 lines
Quoted 8 lines

drivers/media/video/atmel-isi.c static int __devinit atmel_isi_probe(struct

Quoted 8 lines
drivers/media/video/atmel-isi.c +1 -0
 			isi->fb_descriptors_phys);
 
 	iounmap(isi->regs);
+	clk_put(isi->mck);
 	clk_put(isi->pclk);
 	kfree(isi);
 
@@ -930,7 +941,7 @@ static int __devinit atmel_isi_probe(struct

platform_device *pdev)

Quoted 9 lines
Quoted 9 lines
Quoted 9 lines

drivers/media/video/atmel-isi.c static int __devinit atmel_isi_probe(struct

Quoted 9 lines
drivers/media/video/atmel-isi.c +1 -1
 	struct isi_platform_data *pdata;
 
 	pdata = dev->platform_data;
-	if (!pdata || !pdata->data_width_flags) {
+	if (!pdata || !pdata->data_width_flags || !pdata->mck_hz) {
 		dev_err(&pdev->dev,
 			"No config available for Atmel ISI\n");
 		return -EINVAL;
@@ -959,6 +970,19 @@ static int __devinit atmel_isi_probe(struct

platform_device *pdev)

Quoted 4 lines
Quoted 4 lines
Quoted 4 lines

drivers/media/video/atmel-isi.c static int __devinit atmel_isi_probe(struct platform_device *pdev)

Quoted 4 lines
drivers/media/video/atmel-isi.c +1 -0
 	INIT_LIST_HEAD(&isi->video_buffer_list);
 	INIT_LIST_HEAD(&isi->dma_desc_head);
 
+	/* Get ISI_MCK, provided by programmable clock or external clock

*/

Quoted 8 lines
Quoted 8 lines
Quoted 8 lines

drivers/media/video/atmel-isi.c static int __devinit atmel_isi_probe(struct platform_device *pdev)

Quoted 8 lines
drivers/media/video/atmel-isi.c +8 -0
+	isi->mck = clk_get(dev, "isi_mck");
+	if (IS_ERR(isi->mck)) {
+		dev_err(dev, "Failed to get isi_mck\n");
+		ret = PTR_ERR(isi->mck);
+		goto err_clk_get;
+	}
+
+	/* Set ISI_MCK's frequency, it should be faster than pixel clock

*/

Quoted 59 lines
Quoted 39 lines
Quoted 39 lines
Quoted 39 lines
drivers/media/video/atmel-isi.c +7 -0
+	ret = clk_set_rate(isi->mck, pdata->mck_hz);
+	if (ret < 0)
+		goto err_set_mck_rate;
+
 	isi->p_fb_descriptors = dma_alloc_coherent(&pdev->dev,
 				sizeof(struct fbd) * MAX_BUFFER_NUM,
 				&isi->fb_descriptors_phys,
@@ -1034,6 +1058,9 @@ err_alloc_ctx:
 			isi->p_fb_descriptors,
 			isi->fb_descriptors_phys);
 err_alloc_descriptors:
+err_set_mck_rate:
+	clk_put(isi->mck);
+err_clk_get:
 	kfree(isi);
 err_alloc_isi:
 	clk_put(pclk);
include/media/atmel-isi.h +3 -1
index 26cece5..6568230 100644
@@ -110,10 +110,12 @@ struct isi_platform_data {
 	u8 hsync_act_low;
 	u8 vsync_act_low;
 	u8 pclk_act_falling;
-	u8 isi_full_mode;
+	u8 full_mode;
 	u32 data_width_flags;
 	/* Using for ISI_CFG1 */
 	u32 frate;
+	/* Using for ISI_MCK */
+	u32 mck_hz;
 };
 
 #endif /* __ATMEL_ISI_H__ */
Signature · 1 line
1.7.2.5
Quoted 10 lines
Quoted 5 lines
Quoted 4 lines

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Signature · 1 line
Nicolas Ferre

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

A message that is not in the archive (sent off-list or not yet received): [email protected]

#16 lore raw
Quoted 13 lines · Nicolas Ferre

Arnd, Olof,

According to our discussion with Olof and Guennadi, I rebased this pull request on top of V4L git tree:
git://linuxtv.org/gliakhovetski/v4l-dvb.git for-3.3 (v3.2-rc2-262-g7a13e73 today)

This pull request adds some bits to at91 devices and board files. The ISI driver is the biggest part and does not have DT support. As ISI has been waited for a long time on AT91, I think it is not possible to wait for the DT support. Moreover, DT support for this camera sensor + ISI soc interface seems not so trivial and will certainly need a handful of kernel releases before being stabilized.

Quoted 6 lines

The following changes since commit 7a13e733707d9cc1225ba07274360da2be9984cb:

media i.MX27 camera: Fix field_count handling. (2011-12-29 09:20:04 +0100)

are available in the git repository at:
git://github.com/at91linux/linux-at91.git for-arnd-3.3-device_boardV2

Hi Nicolas,

Looks all good to me. I've pulled it into the next/drivers2 branch even though your patches are not really all driver specific. However, the drivers2 branch already holds some samsung changes that have dependencies on external branches, so I can nicely group these together.

How we end up submitting these will depend on the timing of dependencies during the merge window.

Arnd

#17 lore raw

On 01/03/2012 10:39 PM, Arnd Bergmann :

Quoted 23 lines · Nicolas Ferre
Quoted 13 lines

Arnd, Olof,

According to our discussion with Olof and Guennadi, I rebased this pull request on top of V4L git tree:
git://linuxtv.org/gliakhovetski/v4l-dvb.git for-3.3 (v3.2-rc2-262-g7a13e73 today)

This pull request adds some bits to at91 devices and board files. The ISI driver is the biggest part and does not have DT support. As ISI has been waited for a long time on AT91, I think it is not possible to wait for the DT support. Moreover, DT support for this camera sensor + ISI soc interface seems not so trivial and will certainly need a handful of kernel releases before being stabilized.

Quoted 6 lines

The following changes since commit 7a13e733707d9cc1225ba07274360da2be9984cb:

media i.MX27 camera: Fix field_count handling. (2011-12-29 09:20:04 +0100)

are available in the git repository at:
git://github.com/at91linux/linux-at91.git for-arnd-3.3-device_boardV2

Hi Nicolas,

Quoted 7 lines

Looks all good to me. I've pulled it into the next/drivers2 branch even though your patches are not really all driver specific. However, the drivers2 branch already holds some samsung changes that have dependencies on external branches, so I can nicely group these together.

How we end up submitting these will depend on the timing of dependencies during the merge window.

Ok, very nice. I will keep monitoring it also.

Thanks a lot, best regards,

Signature · 1 line
Nicolas Ferre