at91: devices and boards files update for 3.3
Subsystems (2)
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
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
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.gitfor-arnd-3.3-device_boardSure, 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 initializerarch/arm/mach-at91/board-sam9m10g45ek.c:195: warning: excess elements in struct initializerarch/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
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
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/
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
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/
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
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
(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.gitfor-3.3I 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/
PATCH v3 1/2 V4L: atmel-isi: add code to enable/disable ISI_MCK clock
In reply to Olof JohanssonFrom: 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
@@ -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
@@ -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
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
- addISI_MCKclock enable/disable code.
- change field name inisi_platform_datastructureSigned-off-by Josh Wu <[email protected]>[g.liakhovetski at gmx.de: fix label names]Signed-off-by Guennadi Liakhovetski <[email protected]>Acked-by Nicolas Ferre <[email protected]>---
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@@ -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@@ -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
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
- addISI_MCKclock enable/disable code.
- change field name inisi_platform_datastructureSigned-off-by Josh Wu <[email protected]>[g.liakhovetski at gmx.de: fix label names]Signed-off-by Guennadi Liakhovetski <[email protected]>Acked-by Nicolas Ferre <[email protected]>---
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@@ -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@@ -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
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
- addISI_MCKclock enable/disable code.
- change field name inisi_platform_datastructureSigned-off-by Josh Wu <[email protected]>[g.liakhovetski at gmx.de: fix label names]Signed-off-by Guennadi Liakhovetski <[email protected]>Acked-by Nicolas Ferre <[email protected]>---
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@@ -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@@ -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-kernelSignature · 1 line
Nicolas Ferre
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
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
GuennadiQuoted 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
- addISI_MCKclock enable/disable code.
- change field name inisi_platform_datastructure
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
Signed-off-by Josh Wu <[email protected]>[g.liakhovetski at gmx.de: fix label names]Signed-off-by Guennadi Liakhovetski <[email protected]>Acked-by Nicolas Ferre <[email protected]>---
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
-0struct 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
-0if (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
-0icd->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
-0BUG_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
-1if (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
-0isi->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
-1struct 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
-0INIT_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@@ -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.5Quoted 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-kernelSignature · 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]
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.gitfor-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_counthandling. (2011-12-29 09:20:04 +0100)are available in the git repository at:
git://github.com/at91linux/linux-at91.gitfor-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
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.gitfor-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_counthandling. (2011-12-29 09:20:04 +0100)are available in the git repository at:
git://github.com/at91linux/linux-at91.gitfor-arnd-3.3-device_boardV2Hi 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