Message ID | 1383643996.30496.3.camel@younglee-desktop (mailing list archive) |
---|---|
State | Accepted, archived |
Delegated to: | Hans Verkuil |
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 1Vdd1G-00044d-DB; Tue, 05 Nov 2013 10:33:54 +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-6) with esmtp id 1Vdd1D-0000jk-5y; Tue, 05 Nov 2013 10:33:53 +0100 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751263Ab3KEJdm (ORCPT <rfc822;mkrufky@linuxtv.org> + 1 other); Tue, 5 Nov 2013 04:33:42 -0500 Received: from mx0a-0016f401.pphosted.com ([67.231.148.174]:42018 "EHLO mx0a-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751097Ab3KEJdk (ORCPT <rfc822;linux-media@vger.kernel.org>); Tue, 5 Nov 2013 04:33:40 -0500 Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.14.5/8.14.5) with SMTP id rA59XKsb019002; Tue, 5 Nov 2013 01:33:20 -0800 Received: from sc-owa01.marvell.com ([199.233.58.136]) by mx0a-0016f401.pphosted.com with ESMTP id 1fxb74c4hq-17 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NOT); Tue, 05 Nov 2013 01:33:20 -0800 Received: from [10.38.36.173] (10.38.36.173) by sc-owa01.marvell.com (10.93.76.21) with Microsoft SMTP Server (TLS) id 8.3.213.0; Tue, 5 Nov 2013 01:33:17 -0800 Message-ID: <1383643996.30496.3.camel@younglee-desktop> Subject: [RFC] [PATCH] media: marvell-ccic: use devm to release clk From: lbyang <lbyang@marvell.com> Reply-To: lbyang@marvell.com To: <corbet@lwn.net> CC: <linux-media@vger.kernel.org>, <u.kleine-koenig@pengutronix.de>, <linux@arm.linux.org.uk> Date: Tue, 5 Nov 2013 17:33:16 +0800 Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.3-0ubuntu6 Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.10.8794, 1.0.431, 0.0.0000 definitions=2013-11-05_04:2013-11-05, 2013-11-05, 1970-01-01 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=1 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=7.0.1-1305240000 definitions=main-1311050019 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: 2013.11.5.92114 X-PMX-Spam: Gauge=IIIIIIIII, Probability=9%, Report=' MULTIPLE_RCPTS 0.1, FROM_NAME_ONE_WORD 0.05, HTML_00_01 0.05, HTML_00_10 0.05, MSGID_ADDED_BY_MTA 0.05, BODY_SIZE_3000_3999 0, BODY_SIZE_5000_LESS 0, BODY_SIZE_7000_LESS 0, CT_TEXT_PLAIN_UTF8_CAPS 0, INVALID_MSGID_NO_FQDN 0, URI_ENDS_IN_HTML 0, __ANY_URI 0, __CP_URI_IN_BODY 0, __CT 0, __CTE 0, __CT_TEXT_PLAIN 0, __DATE_TZ_HK 0, __HAS_FROM 0, __HAS_MSGID 0, __HAS_REPLYTO 0, __HAS_X_MAILER 0, __HAS_X_MAILING_LIST 0, __MIME_TEXT_ONLY 0, __MIME_VERSION 0, __MULTIPLE_RCPTS_CC_X2 0, __REPLYTO_SAMEAS_FROM_ACC 0, __REPLYTO_SAMEAS_FROM_ADDY 0, __REPLYTO_SAMEAS_FROM_DOMAIN 0, __SANE_MSGID 0, __SUBJ_ALPHA_END 0, __TO_MALFORMED_2 0, __TO_NO_NAME 0, __URI_NO_WWW 0, __URI_NS ' |
Commit Message
Libin Yang
Nov. 5, 2013, 9:33 a.m. UTC
From: Libin Yang <lbyang@marvell.com> Date: Tue, 5 Nov 2013 16:29:07 +0800 Subject: [PATCH] media: marvell-ccic: use devm to release clk This patch uses devm to release the clks instead of releasing manually. And it adds enable/disable mipi_clk when getting its rate. Signed-off-by: Libin Yang <lbyang@marvell.com> --- drivers/media/platform/marvell-ccic/mmp-driver.c | 39 +++++----------------- 1 file changed, 8 insertions(+), 31 deletions(-) */ @@ -186,12 +180,6 @@ static void mmpcam_power_down(struct mcam_camera *mcam) gpio_set_value(pdata->sensor_power_gpio, 0); gpio_set_value(pdata->sensor_reset_gpio, 0); - if (mcam->bus_type == V4L2_MBUS_CSI2 && !IS_ERR(cam->mipi_clk)) { - if (cam->mipi_clk) - devm_clk_put(mcam->dev, cam->mipi_clk); - cam->mipi_clk = NULL; - } - mcam_clk_disable(mcam); } @@ -292,8 +280,9 @@ void mmpcam_calc_dphy(struct mcam_camera *mcam) return; /* get the escape clk, this is hard coded */ + clk_prepare_enable(cam->mipi_clk); tx_clk_esc = (clk_get_rate(cam->mipi_clk) / 1000000) / 12; - + clk_disable_unprepare(cam->mipi_clk); /* * dphy[2] - CSI2_DPHY6: * bit 0 ~ bit 7: CK Term Enable @@ -325,19 +314,6 @@ static irqreturn_t mmpcam_irq(int irq, void *data) return IRQ_RETVAL(handled); } -static void mcam_deinit_clk(struct mcam_camera *mcam) -{ - unsigned int i; - - for (i = 0; i < NR_MCAM_CLK; i++) { - if (!IS_ERR(mcam->clk[i])) { - if (mcam->clk[i]) - devm_clk_put(mcam->dev, mcam->clk[i]); - } - mcam->clk[i] = NULL; - } -} - static void mcam_init_clk(struct mcam_camera *mcam) { unsigned int i; @@ -371,7 +347,6 @@ static int mmpcam_probe(struct platform_device *pdev) if (cam == NULL) return -ENOMEM; cam->pdev = pdev; - cam->mipi_clk = NULL; INIT_LIST_HEAD(&cam->devlist); mcam = &cam->mcam; @@ -387,6 +362,11 @@ static int mmpcam_probe(struct platform_device *pdev) mcam->mclk_div = pdata->mclk_div; mcam->bus_type = pdata->bus_type; mcam->dphy = pdata->dphy; + if (mcam->bus_type == V4L2_MBUS_CSI2) { + cam->mipi_clk = devm_clk_get(mcam->dev, "mipi"); + if ((IS_ERR(cam->mipi_clk) && mcam->dphy[2] == 0)) + return PTR_ERR(cam->mipi_clk); + } mcam->mipi_enabled = false; mcam->lane = pdata->lane; mcam->chip_id = MCAM_ARMADA610; @@ -444,7 +424,7 @@ static int mmpcam_probe(struct platform_device *pdev) */ ret = mmpcam_power_up(mcam); if (ret) - goto out_deinit_clk; + return ret; ret = mccic_register(mcam); if (ret) goto out_power_down; @@ -469,8 +449,6 @@ out_unregister: mccic_shutdown(mcam); out_power_down: mmpcam_power_down(mcam); -out_deinit_clk: - mcam_deinit_clk(mcam); return ret; } @@ -482,7 +460,6 @@ static int mmpcam_remove(struct mmp_camera *cam) mmpcam_remove_device(cam); mccic_shutdown(mcam); mmpcam_power_down(mcam); - mcam_deinit_clk(mcam); return 0; }
Comments
On Tue, 5 Nov 2013 17:33:16 +0800 lbyang <lbyang@marvell.com> wrote: > This patch uses devm to release the clks instead of releasing > manually. > And it adds enable/disable mipi_clk when getting its rate. I can't really test this, so I'll have to assume it works :) Acked-by: Jonathan Corbet <corbet@lwn.net> However: it seems that crediting Uwe Kleine-König with a Reported-by would be the right thing to do. Thanks, jon -- 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 Tue, Nov 05, 2013 at 05:33:16PM +0800, lbyang wrote: > From: Libin Yang <lbyang@marvell.com> > Date: Tue, 5 Nov 2013 16:29:07 +0800 > Subject: [PATCH] media: marvell-ccic: use devm to release clk > > This patch uses devm to release the clks instead of releasing > manually. > And it adds enable/disable mipi_clk when getting its rate. > > Signed-off-by: Libin Yang <lbyang@marvell.com> The driver still is no beauty, but with this patch the clk usage at least seems to be API conformant. Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> > --- > drivers/media/platform/marvell-ccic/mmp-driver.c | 39 > +++++----------------- > 1 file changed, 8 insertions(+), 31 deletions(-) > > diff --git a/drivers/media/platform/marvell-ccic/mmp-driver.c > b/drivers/media/platform/marvell-ccic/mmp-driver.c > index 70cb57f..054507f 100644 > --- a/drivers/media/platform/marvell-ccic/mmp-driver.c > +++ b/drivers/media/platform/marvell-ccic/mmp-driver.c > @@ -142,12 +142,6 @@ static int mmpcam_power_up(struct mcam_camera > *mcam) > struct mmp_camera *cam = mcam_to_cam(mcam); > struct mmp_camera_platform_data *pdata; > > - if (mcam->bus_type == V4L2_MBUS_CSI2) { > - cam->mipi_clk = devm_clk_get(mcam->dev, "mipi"); > - if ((IS_ERR(cam->mipi_clk) && mcam->dphy[2] == 0)) > - return PTR_ERR(cam->mipi_clk); > - } > - > /* > * Turn on power and clocks to the controller. > */ > @@ -186,12 +180,6 @@ static void mmpcam_power_down(struct mcam_camera > *mcam) > gpio_set_value(pdata->sensor_power_gpio, 0); > gpio_set_value(pdata->sensor_reset_gpio, 0); > > - if (mcam->bus_type == V4L2_MBUS_CSI2 && !IS_ERR(cam->mipi_clk)) { > - if (cam->mipi_clk) > - devm_clk_put(mcam->dev, cam->mipi_clk); > - cam->mipi_clk = NULL; > - } > - > mcam_clk_disable(mcam); > } > > @@ -292,8 +280,9 @@ void mmpcam_calc_dphy(struct mcam_camera *mcam) > return; > > /* get the escape clk, this is hard coded */ > + clk_prepare_enable(cam->mipi_clk); > tx_clk_esc = (clk_get_rate(cam->mipi_clk) / 1000000) / 12; > - > + clk_disable_unprepare(cam->mipi_clk); > /* > * dphy[2] - CSI2_DPHY6: > * bit 0 ~ bit 7: CK Term Enable > @@ -325,19 +314,6 @@ static irqreturn_t mmpcam_irq(int irq, void *data) > return IRQ_RETVAL(handled); > } > > -static void mcam_deinit_clk(struct mcam_camera *mcam) > -{ > - unsigned int i; > - > - for (i = 0; i < NR_MCAM_CLK; i++) { > - if (!IS_ERR(mcam->clk[i])) { > - if (mcam->clk[i]) > - devm_clk_put(mcam->dev, mcam->clk[i]); > - } > - mcam->clk[i] = NULL; > - } > -} > - > static void mcam_init_clk(struct mcam_camera *mcam) > { > unsigned int i; > @@ -371,7 +347,6 @@ static int mmpcam_probe(struct platform_device > *pdev) > if (cam == NULL) > return -ENOMEM; > cam->pdev = pdev; > - cam->mipi_clk = NULL; > INIT_LIST_HEAD(&cam->devlist); > > mcam = &cam->mcam; > @@ -387,6 +362,11 @@ static int mmpcam_probe(struct platform_device > *pdev) > mcam->mclk_div = pdata->mclk_div; > mcam->bus_type = pdata->bus_type; > mcam->dphy = pdata->dphy; > + if (mcam->bus_type == V4L2_MBUS_CSI2) { > + cam->mipi_clk = devm_clk_get(mcam->dev, "mipi"); > + if ((IS_ERR(cam->mipi_clk) && mcam->dphy[2] == 0)) > + return PTR_ERR(cam->mipi_clk); > + } > mcam->mipi_enabled = false; > mcam->lane = pdata->lane; > mcam->chip_id = MCAM_ARMADA610; > @@ -444,7 +424,7 @@ static int mmpcam_probe(struct platform_device > *pdev) > */ > ret = mmpcam_power_up(mcam); > if (ret) > - goto out_deinit_clk; > + return ret; > ret = mccic_register(mcam); > if (ret) > goto out_power_down; > @@ -469,8 +449,6 @@ out_unregister: > mccic_shutdown(mcam); > out_power_down: > mmpcam_power_down(mcam); > -out_deinit_clk: > - mcam_deinit_clk(mcam); > return ret; > } > > @@ -482,7 +460,6 @@ static int mmpcam_remove(struct mmp_camera *cam) > mmpcam_remove_device(cam); > mccic_shutdown(mcam); > mmpcam_power_down(mcam); > - mcam_deinit_clk(mcam); > return 0; > } > > -- > 1.7.9.5 > > > >
diff --git a/drivers/media/platform/marvell-ccic/mmp-driver.c b/drivers/media/platform/marvell-ccic/mmp-driver.c index 70cb57f..054507f 100644 --- a/drivers/media/platform/marvell-ccic/mmp-driver.c +++ b/drivers/media/platform/marvell-ccic/mmp-driver.c @@ -142,12 +142,6 @@ static int mmpcam_power_up(struct mcam_camera *mcam) struct mmp_camera *cam = mcam_to_cam(mcam); struct mmp_camera_platform_data *pdata; - if (mcam->bus_type == V4L2_MBUS_CSI2) { - cam->mipi_clk = devm_clk_get(mcam->dev, "mipi"); - if ((IS_ERR(cam->mipi_clk) && mcam->dphy[2] == 0)) - return PTR_ERR(cam->mipi_clk); - } - /* * Turn on power and clocks to the controller.