Message ID | 1425531661-20040-4-git-send-email-josh.wu@atmel.com (mailing list archive) |
---|---|
State | Superseded, archived |
Delegated to: | Guennadi Liakhovetski |
Headers |
Received: from mail.tu-berlin.de ([130.149.7.33]) by www.linuxtv.org with esmtp (Exim 4.72) (envelope-from <linux-media-owner@vger.kernel.org>) id 1YTNtT-0004cP-Rx; Thu, 05 Mar 2015 06:00:19 +0100 X-tubIT-Incoming-IP: 209.132.180.67 Received: from vger.kernel.org ([209.132.180.67]) by mail.tu-berlin.de (exim-4.72/mailfrontend-5) with esmtp id 1YTNtR-0006hp-9N; Thu, 05 Mar 2015 06:00:19 +0100 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750730AbbCEFAO (ORCPT <rfc822;mkrufky@linuxtv.org> + 1 other); Thu, 5 Mar 2015 00:00:14 -0500 Received: from nasmtp01.atmel.com ([192.199.1.245]:25564 "EHLO DVREDG01.corp.atmel.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750698AbbCEFAO (ORCPT <rfc822; linux-media@vger.kernel.org>); Thu, 5 Mar 2015 00:00:14 -0500 Received: from apsmtp01.atmel.com (10.168.254.30) by DVREDG01.corp.atmel.com (10.42.103.30) with Microsoft SMTP Server (TLS) id 14.2.347.0; Wed, 4 Mar 2015 22:00:07 -0700 Received: from melon.corp.atmel.com (10.168.254.13) by apsmtp01.corp.atmel.com (10.168.254.30) with Microsoft SMTP Server id 14.2.347.0; Thu, 5 Mar 2015 13:04:20 +0800 From: Josh Wu <josh.wu@atmel.com> To: Linux Media Mailing List <linux-media@vger.kernel.org>, "Guennadi Liakhovetski" <g.liakhovetski@gmx.de> CC: <linux-arm-kernel@lists.infradead.org>, Laurent Pinchart <laurent.pinchart@ideasonboard.com>, Josh Wu <josh.wu@atmel.com> Subject: [PATCH 3/3] media: atmel-isi: remove mck back compatiable code as we don't need it Date: Thu, 5 Mar 2015 13:01:01 +0800 Message-ID: <1425531661-20040-4-git-send-email-josh.wu@atmel.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1425531661-20040-1-git-send-email-josh.wu@atmel.com> References: <1425531661-20040-1-git-send-email-josh.wu@atmel.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: <linux-media.vger.kernel.org> X-Mailing-List: linux-media@vger.kernel.org X-PMX-Version: 6.0.0.2142326, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2015.3.5.45419 X-PMX-Spam: Gauge=IIIIIIIII, Probability=9%, Report=' MULTIPLE_RCPTS 0.1, HTML_00_01 0.05, HTML_00_10 0.05, MSGID_ADDED_BY_MTA 0.05, BODYTEXTP_SIZE_3000_LESS 0, BODY_SIZE_2000_2999 0, BODY_SIZE_5000_LESS 0, BODY_SIZE_7000_LESS 0, REFERENCES 0, URI_ENDS_IN_HTML 0, __ANY_URI 0, __CP_URI_IN_BODY 0, __CT 0, __CT_TEXT_PLAIN 0, __DATE_TZ_HK 0, __HAS_FROM 0, __HAS_MSGID 0, __HAS_X_MAILER 0, __HAS_X_MAILING_LIST 0, __IN_REP_TO 0, __MIME_TEXT_ONLY 0, __MIME_VERSION 0, __MULTIPLE_RCPTS_CC_X2 0, __REFERENCES 0, __SANE_MSGID 0, __TO_MALFORMED_2 0, __URI_NO_WWW 0, __URI_NS ' |
Commit Message
Josh Wu
March 5, 2015, 5:01 a.m. UTC
The master clock should handled by sensor itself.
Signed-off-by: Josh Wu <josh.wu@atmel.com>
---
drivers/media/platform/soc_camera/atmel-isi.c | 32 ---------------------------
1 file changed, 32 deletions(-)
Comments
Hi Josh, Thank you for the patch. On Thursday 05 March 2015 13:01:01 Josh Wu wrote: > The master clock should handled by sensor itself. I like that :-) > Signed-off-by: Josh Wu <josh.wu@atmel.com> > --- > > drivers/media/platform/soc_camera/atmel-isi.c | 32 ------------------------ > 1 file changed, 32 deletions(-) > > diff --git a/drivers/media/platform/soc_camera/atmel-isi.c > b/drivers/media/platform/soc_camera/atmel-isi.c index 4a384f1..50375ce > 100644 > --- a/drivers/media/platform/soc_camera/atmel-isi.c > +++ b/drivers/media/platform/soc_camera/atmel-isi.c > @@ -83,8 +83,6 @@ struct atmel_isi { > 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; > @@ -725,26 +723,12 @@ static void isi_camera_remove_device(struct > soc_camera_device *icd) /* Called with .host_lock held */ > static int isi_camera_clock_start(struct soc_camera_host *ici) > { > - struct atmel_isi *isi = ici->priv; > - int ret; > - > - if (!IS_ERR(isi->mck)) { > - ret = clk_prepare_enable(isi->mck); > - if (ret) { > - return ret; > - } > - } > - > return 0; Would it make sense to make the clock_start and clock_stop operations optional in the soc-camera core ? > } > > /* Called with .host_lock held */ > static void isi_camera_clock_stop(struct soc_camera_host *ici) > { > - struct atmel_isi *isi = ici->priv; > - > - if (!IS_ERR(isi->mck)) > - clk_disable_unprepare(isi->mck); > } > > static unsigned int isi_camera_poll(struct file *file, poll_table *pt) > @@ -894,7 +878,6 @@ static int atmel_isi_probe_dt(struct atmel_isi *isi, > > /* Default settings for ISI */ > isi->pdata.full_mode = 1; > - isi->pdata.mck_hz = ISI_DEFAULT_MCLK_FREQ; > isi->pdata.frate = ISI_CFG1_FRATE_CAPTURE_ALL; > > np = of_graph_get_next_endpoint(np, NULL); > @@ -970,21 +953,6 @@ static int atmel_isi_probe(struct platform_device > *pdev) INIT_LIST_HEAD(&isi->video_buffer_list); > INIT_LIST_HEAD(&isi->dma_desc_head); > > - /* ISI_MCK is the sensor master clock. It should be handled by the > - * sensor driver directly, as the ISI has no use for that clock. Make > - * the clock optional here while platforms transition to the correct > - * model. > - */ > - isi->mck = devm_clk_get(dev, "isi_mck"); > - if (!IS_ERR(isi->mck)) { > - /* Set ISI_MCK's frequency, it should be faster than pixel > - * clock. > - */ > - ret = clk_set_rate(isi->mck, isi->pdata.mck_hz); > - if (ret < 0) > - return ret; > - } > - > isi->p_fb_descriptors = dma_alloc_coherent(&pdev->dev, > sizeof(struct fbd) * MAX_BUFFER_NUM, > &isi->fb_descriptors_phys,
On 3/5/2015 6:41 PM, Laurent Pinchart wrote: > Hi Josh, > > Thank you for the patch. > > On Thursday 05 March 2015 13:01:01 Josh Wu wrote: >> The master clock should handled by sensor itself. > I like that :-) > >> Signed-off-by: Josh Wu <josh.wu@atmel.com> >> --- >> >> drivers/media/platform/soc_camera/atmel-isi.c | 32 ------------------------ >> 1 file changed, 32 deletions(-) >> >> diff --git a/drivers/media/platform/soc_camera/atmel-isi.c >> b/drivers/media/platform/soc_camera/atmel-isi.c index 4a384f1..50375ce >> 100644 >> --- a/drivers/media/platform/soc_camera/atmel-isi.c >> +++ b/drivers/media/platform/soc_camera/atmel-isi.c >> @@ -83,8 +83,6 @@ struct atmel_isi { >> 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; >> @@ -725,26 +723,12 @@ static void isi_camera_remove_device(struct >> soc_camera_device *icd) /* Called with .host_lock held */ >> static int isi_camera_clock_start(struct soc_camera_host *ici) >> { >> - struct atmel_isi *isi = ici->priv; >> - int ret; >> - >> - if (!IS_ERR(isi->mck)) { >> - ret = clk_prepare_enable(isi->mck); >> - if (ret) { >> - return ret; >> - } >> - } >> - >> return 0; > Would it make sense to make the clock_start and clock_stop operations optional > in the soc-camera core ? I agree. For those camera host which don't provide master clock for sensor, clock_start and clock_stop should be optional. Hi, Guennadi Do you agree with this? Best Regards, Josh Wu > >> } >> >> /* Called with .host_lock held */ >> static void isi_camera_clock_stop(struct soc_camera_host *ici) >> { >> - struct atmel_isi *isi = ici->priv; >> - >> - if (!IS_ERR(isi->mck)) >> - clk_disable_unprepare(isi->mck); >> } >> >> static unsigned int isi_camera_poll(struct file *file, poll_table *pt) >> @@ -894,7 +878,6 @@ static int atmel_isi_probe_dt(struct atmel_isi *isi, >> >> /* Default settings for ISI */ >> isi->pdata.full_mode = 1; >> - isi->pdata.mck_hz = ISI_DEFAULT_MCLK_FREQ; >> isi->pdata.frate = ISI_CFG1_FRATE_CAPTURE_ALL; >> >> np = of_graph_get_next_endpoint(np, NULL); >> @@ -970,21 +953,6 @@ static int atmel_isi_probe(struct platform_device >> *pdev) INIT_LIST_HEAD(&isi->video_buffer_list); >> INIT_LIST_HEAD(&isi->dma_desc_head); >> >> - /* ISI_MCK is the sensor master clock. It should be handled by the >> - * sensor driver directly, as the ISI has no use for that clock. Make >> - * the clock optional here while platforms transition to the correct >> - * model. >> - */ >> - isi->mck = devm_clk_get(dev, "isi_mck"); >> - if (!IS_ERR(isi->mck)) { >> - /* Set ISI_MCK's frequency, it should be faster than pixel >> - * clock. >> - */ >> - ret = clk_set_rate(isi->mck, isi->pdata.mck_hz); >> - if (ret < 0) >> - return ret; >> - } >> - >> isi->p_fb_descriptors = dma_alloc_coherent(&pdev->dev, >> sizeof(struct fbd) * MAX_BUFFER_NUM, >> &isi->fb_descriptors_phys, -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Josh, Laurent, On Fri, 6 Mar 2015, Josh Wu wrote: > On 3/5/2015 6:41 PM, Laurent Pinchart wrote: > > Hi Josh, > > > > Thank you for the patch. > > > > On Thursday 05 March 2015 13:01:01 Josh Wu wrote: > > > The master clock should handled by sensor itself. > > I like that :-) > > > > > Signed-off-by: Josh Wu <josh.wu@atmel.com> > > > --- > > > > > > drivers/media/platform/soc_camera/atmel-isi.c | 32 > > > ------------------------ > > > 1 file changed, 32 deletions(-) > > > > > > diff --git a/drivers/media/platform/soc_camera/atmel-isi.c > > > b/drivers/media/platform/soc_camera/atmel-isi.c index 4a384f1..50375ce > > > 100644 > > > --- a/drivers/media/platform/soc_camera/atmel-isi.c > > > +++ b/drivers/media/platform/soc_camera/atmel-isi.c > > > @@ -83,8 +83,6 @@ struct atmel_isi { > > > 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; > > > @@ -725,26 +723,12 @@ static void isi_camera_remove_device(struct > > > soc_camera_device *icd) /* Called with .host_lock held */ > > > static int isi_camera_clock_start(struct soc_camera_host *ici) > > > { > > > - struct atmel_isi *isi = ici->priv; > > > - int ret; > > > - > > > - if (!IS_ERR(isi->mck)) { > > > - ret = clk_prepare_enable(isi->mck); > > > - if (ret) { > > > - return ret; > > > - } > > > - } > > > - > > > return 0; > > Would it make sense to make the clock_start and clock_stop operations > > optional > > in the soc-camera core ? > I agree. For those camera host which don't provide master clock for sensor, > clock_start and clock_stop should be optional. > > Hi, Guennadi > > Do you agree with this? Yes, sure, we can do this. Would anyone like to prepare a patch? Thanks Guennadi -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Friday 06 March 2015 21:25:36 Guennadi Liakhovetski wrote: > On Fri, 6 Mar 2015, Josh Wu wrote: > > On 3/5/2015 6:41 PM, Laurent Pinchart wrote: > >> On Thursday 05 March 2015 13:01:01 Josh Wu wrote: > >>> The master clock should handled by sensor itself. > >> > >> I like that :-) > >> > >>> Signed-off-by: Josh Wu <josh.wu@atmel.com> > >>> --- > >>> > >>> drivers/media/platform/soc_camera/atmel-isi.c | 32 ------------------- > >>> 1 file changed, 32 deletions(-) > >>> > >>> diff --git a/drivers/media/platform/soc_camera/atmel-isi.c > >>> b/drivers/media/platform/soc_camera/atmel-isi.c index 4a384f1..50375ce > >>> 100644 > >>> --- a/drivers/media/platform/soc_camera/atmel-isi.c > >>> +++ b/drivers/media/platform/soc_camera/atmel-isi.c > >>> @@ -83,8 +83,6 @@ struct atmel_isi { > >>> > >>> 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; > >>> > >>> @@ -725,26 +723,12 @@ static void isi_camera_remove_device(struct > >>> soc_camera_device *icd) /* Called with .host_lock held */ > >>> > >>> static int isi_camera_clock_start(struct soc_camera_host *ici) > >>> { > >>> > >>> - struct atmel_isi *isi = ici->priv; > >>> - int ret; > >>> - > >>> - if (!IS_ERR(isi->mck)) { > >>> - ret = clk_prepare_enable(isi->mck); > >>> - if (ret) { > >>> - return ret; > >>> - } > >>> - } > >>> - > >>> > >>> return 0; > >> > >> Would it make sense to make the clock_start and clock_stop operations > >> optional in the soc-camera core ? > > > > I agree. For those camera host which don't provide master clock for > > sensor, clock_start and clock_stop should be optional. > > > > Hi, Guennadi > > > > Do you agree with this? > > Yes, sure, we can do this. Would anyone like to prepare a patch? Josh, would you like to do that, or should I give it a go ?
Hi, Laurent On 3/8/2015 8:28 AM, Laurent Pinchart wrote: > On Friday 06 March 2015 21:25:36 Guennadi Liakhovetski wrote: >> On Fri, 6 Mar 2015, Josh Wu wrote: >>> On 3/5/2015 6:41 PM, Laurent Pinchart wrote: >>>> On Thursday 05 March 2015 13:01:01 Josh Wu wrote: >>>>> The master clock should handled by sensor itself. >>>> I like that :-) >>>> >>>>> Signed-off-by: Josh Wu <josh.wu@atmel.com> >>>>> --- >>>>> >>>>> drivers/media/platform/soc_camera/atmel-isi.c | 32 ------------------- >>>>> 1 file changed, 32 deletions(-) >>>>> >>>>> diff --git a/drivers/media/platform/soc_camera/atmel-isi.c >>>>> b/drivers/media/platform/soc_camera/atmel-isi.c index 4a384f1..50375ce >>>>> 100644 >>>>> --- a/drivers/media/platform/soc_camera/atmel-isi.c >>>>> +++ b/drivers/media/platform/soc_camera/atmel-isi.c >>>>> @@ -83,8 +83,6 @@ struct atmel_isi { >>>>> >>>>> 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; >>>>> >>>>> @@ -725,26 +723,12 @@ static void isi_camera_remove_device(struct >>>>> soc_camera_device *icd) /* Called with .host_lock held */ >>>>> >>>>> static int isi_camera_clock_start(struct soc_camera_host *ici) >>>>> { >>>>> >>>>> - struct atmel_isi *isi = ici->priv; >>>>> - int ret; >>>>> - >>>>> - if (!IS_ERR(isi->mck)) { >>>>> - ret = clk_prepare_enable(isi->mck); >>>>> - if (ret) { >>>>> - return ret; >>>>> - } >>>>> - } >>>>> - >>>>> >>>>> return 0; >>>> Would it make sense to make the clock_start and clock_stop operations >>>> optional in the soc-camera core ? >>> I agree. For those camera host which don't provide master clock for >>> sensor, clock_start and clock_stop should be optional. >>> >>> Hi, Guennadi >>> >>> Do you agree with this? >> Yes, sure, we can do this. Would anyone like to prepare a patch? > Josh, would you like to do that, or should I give it a go ? > Yes, you can do that if you have time. ;-) Best Regards, Josh Wu -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/media/platform/soc_camera/atmel-isi.c b/drivers/media/platform/soc_camera/atmel-isi.c index 4a384f1..50375ce 100644 --- a/drivers/media/platform/soc_camera/atmel-isi.c +++ b/drivers/media/platform/soc_camera/atmel-isi.c @@ -83,8 +83,6 @@ struct atmel_isi { 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; @@ -725,26 +723,12 @@ static void isi_camera_remove_device(struct soc_camera_device *icd) /* Called with .host_lock held */ static int isi_camera_clock_start(struct soc_camera_host *ici) { - struct atmel_isi *isi = ici->priv; - int ret; - - if (!IS_ERR(isi->mck)) { - ret = clk_prepare_enable(isi->mck); - if (ret) { - return ret; - } - } - return 0; } /* Called with .host_lock held */ static void isi_camera_clock_stop(struct soc_camera_host *ici) { - struct atmel_isi *isi = ici->priv; - - if (!IS_ERR(isi->mck)) - clk_disable_unprepare(isi->mck); } static unsigned int isi_camera_poll(struct file *file, poll_table *pt) @@ -894,7 +878,6 @@ static int atmel_isi_probe_dt(struct atmel_isi *isi, /* Default settings for ISI */ isi->pdata.full_mode = 1; - isi->pdata.mck_hz = ISI_DEFAULT_MCLK_FREQ; isi->pdata.frate = ISI_CFG1_FRATE_CAPTURE_ALL; np = of_graph_get_next_endpoint(np, NULL); @@ -970,21 +953,6 @@ static int atmel_isi_probe(struct platform_device *pdev) INIT_LIST_HEAD(&isi->video_buffer_list); INIT_LIST_HEAD(&isi->dma_desc_head); - /* ISI_MCK is the sensor master clock. It should be handled by the - * sensor driver directly, as the ISI has no use for that clock. Make - * the clock optional here while platforms transition to the correct - * model. - */ - isi->mck = devm_clk_get(dev, "isi_mck"); - if (!IS_ERR(isi->mck)) { - /* Set ISI_MCK's frequency, it should be faster than pixel - * clock. - */ - ret = clk_set_rate(isi->mck, isi->pdata.mck_hz); - if (ret < 0) - return ret; - } - isi->p_fb_descriptors = dma_alloc_coherent(&pdev->dev, sizeof(struct fbd) * MAX_BUFFER_NUM, &isi->fb_descriptors_phys,