From patchwork Tue Jul 11 12:32:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alain Volmat X-Patchwork-Id: 118537 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp489004vqm; Tue, 11 Jul 2023 06:43:44 -0700 (PDT) X-Google-Smtp-Source: APBJJlGUY4heqvIVtNr/Jvi/bvHR58vbw1ygo+Usdh+XDxAMOPx/QH1v0llXr5i+kOtQ1sG8ALZQ X-Received: by 2002:a05:6a20:3d20:b0:12d:1fba:faca with SMTP id y32-20020a056a203d2000b0012d1fbafacamr19876728pzi.28.1689083023708; Tue, 11 Jul 2023 06:43:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689083023; cv=none; d=google.com; s=arc-20160816; b=R2MIoNb/3T5XO3FpN3D2f1e63PerAfENfiixHO712VqP67VTn6C4txV9Zh3lf9VuXd QwHbmzZicwyGoNJdQUM2I3Gydj2PM+PnBNMNaxAqWLDqkYK5YiimQeWYGaNfAr/N6RUO NmsO8slBtYB3t8uACKa88JeJO0Yp7wVv9Qu+Odf2OadHdYfjsjhFH2uC+kD7HRyAb9My W39hvZ9F0bVpetz88p1170Huy+CcsQiYJqwBBsedZl7oBJX6eWjYvRSigU3CRrjhZF9w 0AaFL7B+qgHCt2qoyMCs8ggvNTpT3n9cSz/nOcBaBmWtxGWexB80knE/xdqm807d6Y7J xzGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=bZyrpsmbqDtckH2IvHk4LGejHt9ZGYj7tCxIp9TuL2s=; fh=YD/nA9JLhCy3FooY5RNtEXpwprfU+c/k7IOnWC/ueVE=; b=DGNDso53tfHdXe+fSWsohShU1tC9F6VYYsThLqg6WCguAtpXeiNiKAHbLH2NcOcCGe LwsVbTKzOgX42oPeQOQHhsdYvfTKMMX37TJtWifUxF0MEhaQAGWlMz2Tci86Mzb3umur kZR0mXmLvvO4Ogv34+PLgRFI8NRv27tOGJURAXGoGtSa6ibDW8jQCpQFWVTCEdW/5d2w BChNNf0pMZZoCMhP7tfNykbstzFyfHaCi8i/TGEOqD3P2ZpZOtI9qsg8hCsZb5qjtvFq 6xam5ZG5yyjyXvGscLdybEsDrE/ezxxFwF+K+7jHNMd8VZUkFt8EOAuq0IZXfJa+ZP4F PxZA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@foss.st.com header.s=selector1 header.b=kxFrX+yu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=foss.st.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s193-20020a632cca000000b00553859c59c1si1502787pgs.695.2023.07.11.06.43.29; Tue, 11 Jul 2023 06:43:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@foss.st.com header.s=selector1 header.b=kxFrX+yu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=foss.st.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230281AbjGKNZf (ORCPT + 99 others); Tue, 11 Jul 2023 09:25:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46336 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230078AbjGKNZb (ORCPT ); Tue, 11 Jul 2023 09:25:31 -0400 Received: from mx07-00178001.pphosted.com (mx07-00178001.pphosted.com [185.132.182.106]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BE60118D; Tue, 11 Jul 2023 06:25:30 -0700 (PDT) Received: from pps.filterd (m0288072.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36BC933w015239; Tue, 11 Jul 2023 14:33:10 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foss.st.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=selector1; bh=bZyrpsmbqDtckH2IvHk4LGejHt9ZGYj7tCxIp9TuL2s=; b=kxFrX+yubZp6WwlU9HtqXxBhiAtD9mJ2YofZRBbaQAfC1yiILOEzG/VKb3mN6p0Ez1GG Q/gyGiukohOfXqDgf5SfMh+IMhOXEGSZDnLPtxTKHlg32GU6RWLhnKYrJSvf/OBff9/8 AaH5a4dMVCtU7oWpDLjLXXHJ+ZfvYgEP6+7xEythRVccCLC7Y8SDiPLJwGyoNQiUJGmN LG8gpJ0yrpmHda7/NRP3KD232dsbIoV3Mcq4R3VitiaUeF1ueCr4rEX/dR13yg7v5sC8 5Jc0lFvEqGiMNgg6wcZ3hYffzHlQiW4377nGA+HhhIfeGV1PFFeGAjJ+ZzMCIWACfplV 1g== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com (PPS) with ESMTPS id 3rs6u684x4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Jul 2023 14:33:10 +0200 Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 21ECA100058; Tue, 11 Jul 2023 14:33:10 +0200 (CEST) Received: from Webmail-eu.st.com (shfdag1node1.st.com [10.75.129.69]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id 9B936222CB6; Tue, 11 Jul 2023 14:33:09 +0200 (CEST) Received: from localhost (10.129.178.213) by SHFDAG1NODE1.st.com (10.75.129.69) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Tue, 11 Jul 2023 14:33:09 +0200 From: Alain Volmat To: Benjamin Mugnier , Sylvain Petinot , Mauro Carvalho Chehab CC: , , Subject: [PATCH 1/2] media: i2c: st_mipid02: cascade s_stream call to the source subdev Date: Tue, 11 Jul 2023 14:32:09 +0200 Message-ID: <20230711123211.794838-2-alain.volmat@foss.st.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230711123211.794838-1-alain.volmat@foss.st.com> References: <20230711123211.794838-1-alain.volmat@foss.st.com> MIME-Version: 1.0 X-Originating-IP: [10.129.178.213] X-ClientProxiedBy: SHFCAS1NODE2.st.com (10.75.129.73) To SHFDAG1NODE1.st.com (10.75.129.69) X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-07-11_06,2023-07-11_01,2023-05-22_02 X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771129831707306300 X-GMAIL-MSGID: 1771131920615668858 Cascade the s_stream call to the source subdev whenever the bridge streaming is enable / disabled. Signed-off-by: Alain Volmat --- drivers/media/i2c/st-mipid02.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/media/i2c/st-mipid02.c b/drivers/media/i2c/st-mipid02.c index 906553a28676..703d2f06f552 100644 --- a/drivers/media/i2c/st-mipid02.c +++ b/drivers/media/i2c/st-mipid02.c @@ -547,6 +547,13 @@ static int mipid02_stream_disable(struct mipid02_dev *bridge) struct i2c_client *client = bridge->i2c_client; int ret; + if (!bridge->s_subdev) + goto error; + + ret = v4l2_subdev_call(bridge->s_subdev, video, s_stream, 0); + if (ret) + goto error; + /* Disable all lanes */ ret = mipid02_write_reg(bridge, MIPID02_CLK_LANE_REG1, 0); if (ret) @@ -633,6 +640,10 @@ static int mipid02_stream_enable(struct mipid02_dev *bridge) if (ret) goto error; + ret = v4l2_subdev_call(bridge->s_subdev, video, s_stream, 1); + if (ret) + goto error; + return 0; error: From patchwork Tue Jul 11 12:32:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alain Volmat X-Patchwork-Id: 118503 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a6b2:0:b0:3e4:2afc:c1 with SMTP id c18csp455098vqm; Tue, 11 Jul 2023 05:57:21 -0700 (PDT) X-Google-Smtp-Source: APBJJlGtfIKtf2qKzVkhWWqennub0NlUkxTTVGFc3OGTvhD49lDd4Wl+QNoNcj07IA/IeqTNcDvz X-Received: by 2002:aa7:d610:0:b0:51a:200b:d8ff with SMTP id c16-20020aa7d610000000b0051a200bd8ffmr14602088edr.13.1689080240896; Tue, 11 Jul 2023 05:57:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689080240; cv=none; d=google.com; s=arc-20160816; b=sXIBv5fBp+0THPaUdY5voncfhBK4RNhmoaAZEaW8reuMtsDHkHzCnMMk6GpOoLuppn kJyGgzUUGw/L7/xnK+4HmYmvTATdz2y8zo8cIzP7HQVBU8UHkL67+T2FUHvuS8eV9Rco 3n1Sj9mUeXQq4FsZ6x2j3efdQ+VNFLtz5Eutrn2DY2/efyJo89wc0/UvCFrYdzpvvwPZ 9ItRTZnlLjbqgR90wFwDmImiRWyWVOAtkJMDUI2Rx1m7oQITwIH2SXf4PS5EFHIprxW8 IcLblljVgeSnVUViTzQ0kgrQ4y7EFVCDRhtZ+GqYD6a6PFsL2cCGbMbDrprNMR/F0lz5 bDpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=QJv4FgeoZI13kyNGmPPMTf96OOf5S9wcDXXdOT9sXaA=; fh=+b9+Zspl3Mh5tDUeHpTxuAJY6uNXlc3BXcWnfBhqk24=; b=Q4io42J9d3CBgYxdM0Zz3qaQFDEN+AXuEQYbb9AYJ9bqAJgmLK/NoB5i5s0Cr/RLCH EtgOUsWMgSXPVDHJagsMJvzXYlnosCvOQTFqc6AoRN83INMM4gaw6uCIMDptLhoa60kb g2MHdYDLds75/xF6p4Z7TceCDIiE8v1nr4TvkH5HLtuXCwsf7MoYTWuQyCU3CUp4/wuF +HxrRNuspsyX4mDo6/sBYXLi87X8yFG1u316xzlShKGDrGXbqGvt2mubRvS6ZNsrodEj 390RKgm76/+ateBhSam6R8pgTXDKHO72bh6IvnIchPE4uKT355QLa8zf+HavNG4XakEK C3cQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@foss.st.com header.s=selector1 header.b=ux39JguA; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=foss.st.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b3-20020aa7cd03000000b0051be8be77afsi1901288edw.145.2023.07.11.05.56.56; Tue, 11 Jul 2023 05:57:20 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@foss.st.com header.s=selector1 header.b=ux39JguA; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=foss.st.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232660AbjGKMfb (ORCPT + 99 others); Tue, 11 Jul 2023 08:35:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39232 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232616AbjGKMfW (ORCPT ); Tue, 11 Jul 2023 08:35:22 -0400 Received: from mx07-00178001.pphosted.com (mx07-00178001.pphosted.com [185.132.182.106]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E72A819B7; Tue, 11 Jul 2023 05:34:54 -0700 (PDT) Received: from pps.filterd (m0241204.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 36BCDhnj007024; Tue, 11 Jul 2023 14:33:11 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foss.st.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=selector1; bh=QJv4FgeoZI13kyNGmPPMTf96OOf5S9wcDXXdOT9sXaA=; b=ux39JguAlYY+jh7XS7y8SJTpRyHyL+aEJMOQV9brHU5R/r5EZs9t+vCos6Viru9E/Sse mF9b/GF4Z7n4+nZRSrMwqYfdetW2rr9al4JJiBHQHhkOlkcOZizh781ngO4ukUsg3S9Y LfW0AZBpUv9FGT00iONGPBo8z2NIEaryH2ExMkj/IOlsfq+Oe3WzZHWVexQq2G6hOe3T Ol/wE57wuU3psJfIywqD3VGHAF0jO0MRc5r5RWcouHz67Q9orlmjl+UJREpAbwC12np3 hg7iYPPjWwlMuQKh0BlbrMErwnc+KdBC4slDAcdhj67SZrOPLw5FVy4h2WIZPyADaCVC vQ== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com (PPS) with ESMTPS id 3rs6wb8407-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 11 Jul 2023 14:33:11 +0200 Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 56BFE100058; Tue, 11 Jul 2023 14:33:11 +0200 (CEST) Received: from Webmail-eu.st.com (shfdag1node1.st.com [10.75.129.69]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id CF3702248AE; Tue, 11 Jul 2023 14:33:10 +0200 (CEST) Received: from localhost (10.129.178.213) by SHFDAG1NODE1.st.com (10.75.129.69) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Tue, 11 Jul 2023 14:33:11 +0200 From: Alain Volmat To: Hugues Fruchet , Mauro Carvalho Chehab , Maxime Coquelin , Alexandre Torgue CC: , , , , Subject: [PATCH 2/2] media: stm32: dcmi: only call s_stream on the source subdev Date: Tue, 11 Jul 2023 14:32:10 +0200 Message-ID: <20230711123211.794838-3-alain.volmat@foss.st.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230711123211.794838-1-alain.volmat@foss.st.com> References: <20230711123211.794838-1-alain.volmat@foss.st.com> MIME-Version: 1.0 X-Originating-IP: [10.129.178.213] X-ClientProxiedBy: SHFCAS1NODE2.st.com (10.75.129.73) To SHFDAG1NODE1.st.com (10.75.129.69) X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-07-11_06,2023-07-11_01,2023-05-22_02 X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771129002886707098 X-GMAIL-MSGID: 1771129002886707098 Avoid calling s_stream on each subdev until reaching the sensor and instead call s_stream on the source subdev only (which will in turn do whatever needed to start the stream). Signed-off-by: Alain Volmat --- drivers/media/platform/st/stm32/stm32-dcmi.c | 63 +++++--------------- 1 file changed, 14 insertions(+), 49 deletions(-) diff --git a/drivers/media/platform/st/stm32/stm32-dcmi.c b/drivers/media/platform/st/stm32/stm32-dcmi.c index dad6e22e4ce4..ac8a5031dce6 100644 --- a/drivers/media/platform/st/stm32/stm32-dcmi.c +++ b/drivers/media/platform/st/stm32/stm32-dcmi.c @@ -134,6 +134,7 @@ struct stm32_dcmi { struct video_device *vdev; struct v4l2_async_notifier notifier; struct v4l2_subdev *source; + struct v4l2_subdev *s_subdev; struct v4l2_format fmt; struct v4l2_rect crop; bool do_crop; @@ -692,51 +693,6 @@ static int dcmi_pipeline_s_fmt(struct stm32_dcmi *dcmi, return 0; } -static int dcmi_pipeline_s_stream(struct stm32_dcmi *dcmi, int state) -{ - struct media_entity *entity = &dcmi->vdev->entity; - struct v4l2_subdev *subdev; - struct media_pad *pad; - int ret; - - /* Start/stop all entities within pipeline */ - while (1) { - pad = &entity->pads[0]; - if (!(pad->flags & MEDIA_PAD_FL_SINK)) - break; - - pad = media_pad_remote_pad_first(pad); - if (!pad || !is_media_entity_v4l2_subdev(pad->entity)) - break; - - entity = pad->entity; - subdev = media_entity_to_v4l2_subdev(entity); - - ret = v4l2_subdev_call(subdev, video, s_stream, state); - if (ret < 0 && ret != -ENOIOCTLCMD) { - dev_err(dcmi->dev, "%s: \"%s\" failed to %s streaming (%d)\n", - __func__, subdev->name, - state ? "start" : "stop", ret); - return ret; - } - - dev_dbg(dcmi->dev, "\"%s\" is %s\n", - subdev->name, state ? "started" : "stopped"); - } - - return 0; -} - -static int dcmi_pipeline_start(struct stm32_dcmi *dcmi) -{ - return dcmi_pipeline_s_stream(dcmi, 1); -} - -static void dcmi_pipeline_stop(struct stm32_dcmi *dcmi) -{ - dcmi_pipeline_s_stream(dcmi, 0); -} - static int dcmi_start_streaming(struct vb2_queue *vq, unsigned int count) { struct stm32_dcmi *dcmi = vb2_get_drv_priv(vq); @@ -758,9 +714,12 @@ static int dcmi_start_streaming(struct vb2_queue *vq, unsigned int count) goto err_pm_put; } - ret = dcmi_pipeline_start(dcmi); - if (ret) + ret = v4l2_subdev_call(dcmi->s_subdev, video, s_stream, 1); + if (ret < 0) { + dev_err(dcmi->dev, "%s: Failed to start source subdev, error (%d)\n", + __func__, ret); goto err_media_pipeline_stop; + } spin_lock_irq(&dcmi->irqlock); @@ -862,7 +821,7 @@ static int dcmi_start_streaming(struct vb2_queue *vq, unsigned int count) return 0; err_pipeline_stop: - dcmi_pipeline_stop(dcmi); + v4l2_subdev_call(dcmi->s_subdev, video, s_stream, 0); err_media_pipeline_stop: video_device_pipeline_stop(dcmi->vdev); @@ -889,8 +848,12 @@ static void dcmi_stop_streaming(struct vb2_queue *vq) { struct stm32_dcmi *dcmi = vb2_get_drv_priv(vq); struct dcmi_buf *buf, *node; + int ret; - dcmi_pipeline_stop(dcmi); + ret = v4l2_subdev_call(dcmi->s_subdev, video, s_stream, 0); + if (ret < 0) + dev_err(dcmi->dev, "%s: Failed to stop source subdev, error (%d)\n", + __func__, ret); video_device_pipeline_stop(dcmi->vdev); @@ -1876,6 +1839,8 @@ static int dcmi_graph_notify_bound(struct v4l2_async_notifier *notifier, dev_dbg(dcmi->dev, "DCMI is now linked to \"%s\"\n", subdev->name); + dcmi->s_subdev = subdev; + return ret; }