From patchwork Wed Sep 7 15:03:13 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guennadi Liakhovetski X-Patchwork-Id: 1127302 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter2.kernel.org (8.14.4/8.14.4) with ESMTP id p87GA8m4016759 for ; Wed, 7 Sep 2011 16:10:09 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756126Ab1IGQJv (ORCPT ); Wed, 7 Sep 2011 12:09:51 -0400 Received: from moutng.kundenserver.de ([212.227.17.10]:58156 "EHLO moutng.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752308Ab1IGQJt (ORCPT ); Wed, 7 Sep 2011 12:09:49 -0400 Received: from axis700.grange (dslb-178-006-246-092.pools.arcor-ip.net [178.6.246.92]) by mrelayeu.kundenserver.de (node=mrbap4) with ESMTP (Nemesis) id 0MKIQ2-1Qzexr3Fag-0021IG; Wed, 07 Sep 2011 17:03:13 +0200 Received: by axis700.grange (Postfix, from userid 1000) id 74A0418B03D; Wed, 7 Sep 2011 17:03:13 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by axis700.grange (Postfix) with ESMTP id 7161D18B03C for ; Wed, 7 Sep 2011 17:03:13 +0200 (CEST) Date: Wed, 7 Sep 2011 17:03:13 +0200 (CEST) From: Guennadi Liakhovetski X-X-Sender: lyakh@axis700.grange To: Linux Media Mailing List Subject: [PATCH 2/2] V4L: sh_mobile_csi2: do not guess the client, the host tells us In-Reply-To: Message-ID: References: MIME-Version: 1.0 X-Provags-ID: V02:K0:qJCVheYvte+tjEommcjQsYmziZDU1iUZlWf/xPweqz6 386XzhK+jVPq8snvhLEKENn/RvO72mFrf9Hpb8sMtEA5NONgjC A2scjox1+Kydbon944NAXKGrbmBLEX5etf3PX043ViVqEiiKuh R9bx7Fz+fLEdv9O5RyShyqIRPqhrXxXid/zUapzWAUHuIWEMLn HbGDjtBlKwdOE3XaY77lH1oGEVdE1VbFNFXEtoqxKmm4WMum1s 4Vsn/L5AEOHWchce4dAzO8B69DPQ9aeOdb9Y9HaAiL7gFZ0xbg n/GGuhjHubEtHFWZNK/5tUlfrSnKMAhEyyTTm/i9JNHjjo8dYX IuQ8eOIgX4+450g4Eg4nk+5Tbjq9v2/CXc+6kVJExc64uoWoF3 h/ycUveoY/YOQ== Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter2.kernel.org [140.211.167.43]); Wed, 07 Sep 2011 16:10:09 +0000 (UTC) We do not have to scan the list of subdevices to find our client - the sensor, the host has already set our grp_id value. Signed-off-by: Guennadi Liakhovetski --- drivers/media/video/sh_mobile_csi2.c | 18 +++--------------- 1 files changed, 3 insertions(+), 15 deletions(-) diff --git a/drivers/media/video/sh_mobile_csi2.c b/drivers/media/video/sh_mobile_csi2.c index 6f9f2b7..91c680a 100644 --- a/drivers/media/video/sh_mobile_csi2.c +++ b/drivers/media/video/sh_mobile_csi2.c @@ -201,22 +201,13 @@ static void sh_csi2_hwinit(struct sh_csi2 *priv) static int sh_csi2_client_connect(struct sh_csi2 *priv) { struct sh_csi2_pdata *pdata = priv->pdev->dev.platform_data; - struct v4l2_subdev *sd, *csi2_sd = &priv->subdev; - struct soc_camera_device *icd = NULL; + struct soc_camera_device *icd = (struct soc_camera_device *)priv->subdev.grp_id; + struct v4l2_subdev *client_sd = soc_camera_to_subdev(icd); struct device *dev = v4l2_get_subdevdata(&priv->subdev); struct v4l2_mbus_config cfg; unsigned long common_flags, csi2_flags; int i, ret; - v4l2_device_for_each_subdev(sd, csi2_sd->v4l2_dev) - if (sd->grp_id) { - icd = (struct soc_camera_device *)sd->grp_id; - break; - } - - if (!icd) - return -EINVAL; - for (i = 0; i < pdata->num_clients; i++) if (&pdata->clients[i].pdev->dev == icd->pdev) break; @@ -246,7 +237,7 @@ static int sh_csi2_client_connect(struct sh_csi2 *priv) } cfg.type = V4L2_MBUS_CSI2; - ret = v4l2_subdev_call(sd, video, g_mbus_config, &cfg); + ret = v4l2_subdev_call(client_sd, video, g_mbus_config, &cfg); if (ret == -ENOIOCTLCMD) common_flags = csi2_flags; else if (!ret) @@ -262,8 +253,6 @@ static int sh_csi2_client_connect(struct sh_csi2 *priv) priv->mipi_flags = common_flags; priv->client = pdata->clients + i; - csi2_sd->grp_id = (long)icd; - pm_runtime_get_sync(dev); sh_csi2_hwinit(priv); @@ -274,7 +263,6 @@ static int sh_csi2_client_connect(struct sh_csi2 *priv) static void sh_csi2_client_disconnect(struct sh_csi2 *priv) { priv->client = NULL; - priv->subdev.grp_id = 0; pm_runtime_put(v4l2_get_subdevdata(&priv->subdev)); }