Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp696169imm; Wed, 25 Jul 2018 04:45:06 -0700 (PDT) X-Google-Smtp-Source: AAOMgpc+yA3NUHy2/rZUZXabynyFXRYe2Tp/c54p/d045bEEDHWgvN5hdUpgExiP8yeoMh5ctBQ7 X-Received: by 2002:a63:7f16:: with SMTP id a22-v6mr20180554pgd.255.1532519106947; Wed, 25 Jul 2018 04:45:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1532519106; cv=none; d=google.com; s=arc-20160816; b=qSWigujdMaU0QEr07QRYKE9zhHfwFerS7g1C7yr1WK19TZl+tNOOyjZVawTyUa1kJK QWv0JmGXKk7lRsDFCkJ+2AcmjteyPKR4RaZbihOvoz51++ztCyHktUA5IDHYn/cArIXR LApluMkySA9cmBZupfWe/U4Y91RNV4Yzw3Zpv51EpyD3NdIye9yLN3oeR9xHSKniNxam XDsrLAGSElQxsWMP9B7j4/w2qlHxFrJFMo31n4QuOolt51yB8dAdfb7J98CS2e2i+tHo IH31bJPrOOL3tRW09+fyhkGglleS+qPZdDVrLF3R2VTnY6IeHW2B0hescFEqMJU7bZ9L uMeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=lMkl+nUpmjEb3xUvhOlZ1OPMie+K9wn3OaeVR5AwmnQ=; b=rdAfvOLX9Dg70WponS6YkvDV7jmK9KdPp2eDDaveeW5VgtPmDWOWTBeZvEGuhuG1bc 1V6wYwknphpVyDFZUTman1WbbmnmGWElUwtQMKuwhOK8YrP9chH+TmcyuCPHEGFV5gNE DO9Cy+feMoewY9NoYv+w0w1YXB9InTps0N6QxOx3z0UOH1WxCycPxCYQORoC19muLLni iems3/J8E/bdHXpeZ8HyZEw0+0qRmydZ5Z7wV6HcQ9+K7Q9diDMhUA/l9BCliZ5uwZLz vR61NnEh/dl2QncCVm0YvU+xJz4Ts/375CtcSYNCIcvLMSXW4SP3bqwhR3yTfAvJVGHh SZag== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q90-v6si14097558pfa.272.2018.07.25.04.44.51; Wed, 25 Jul 2018 04:45:06 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728899AbeGYMzW (ORCPT + 99 others); Wed, 25 Jul 2018 08:55:22 -0400 Received: from mga03.intel.com ([134.134.136.65]:12223 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728390AbeGYMzW (ORCPT ); Wed, 25 Jul 2018 08:55:22 -0400 X-Amp-Result: UNSCANNABLE X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Jul 2018 04:44:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,401,1526367600"; d="scan'208";a="70183250" Received: from paasikivi.fi.intel.com ([10.237.72.42]) by fmsmga002.fm.intel.com with ESMTP; 25 Jul 2018 04:43:45 -0700 Received: by paasikivi.fi.intel.com (Postfix, from userid 1000) id C9B84204DA; Wed, 25 Jul 2018 14:43:44 +0300 (EEST) Date: Wed, 25 Jul 2018 14:43:44 +0300 From: Sakari Ailus To: Yong Cc: Sakari Ailus , Maxime Ripard , Mauro Carvalho Chehab , Rob Herring , Mark Rutland , Chen-Yu Tsai , "David S. Miller" , Greg Kroah-Hartman , Andrew Morton , Linus Walleij , Randy Dunlap , Hans Verkuil , Arnd Bergmann , Stanimir Varbanov , Philipp Zabel , Ramesh Shanmugasundaram , Jacob Chen , Yannick Fertre , Thierry Reding , Benjamin Gaignard , Todor Tomov , linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-sunxi@googlegroups.com Subject: Re: [PATCH v10 2/2] media: V3s: Add support for Allwinner CSI. Message-ID: <20180725114344.eyra7g52xwagqkcv@paasikivi.fi.intel.com> References: <1525417745-37964-1-git-send-email-yong.deng@magewell.com> <20180626110821.wkal6fcnoncsze6y@valkosipuli.retiisi.org.uk> <20180705154802.03604f156709be11892b19c0@magewell.com> <20180718095513.4cm77g2iuilvfmd6@paasikivi.fi.intel.com> <20180725184224.cab5172f8558162cc74bde9e@magewell.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180725184224.cab5172f8558162cc74bde9e@magewell.com> User-Agent: NeoMutt/20170113 (1.7.2) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Yong, On Wed, Jul 25, 2018 at 06:42:24PM +0800, Yong wrote: > Hi Sakari, > > On Wed, 18 Jul 2018 12:55:14 +0300 > Sakari Ailus wrote: > > > Hi Yong, > > > > On Thu, Jul 05, 2018 at 03:48:02PM +0800, Yong wrote: > > > > > + > > > > > +/* ----------------------------------------------------------------------------- > > > > > + * Media Operations > > > > > + */ > > > > > +static int sun6i_video_formats_init(struct sun6i_video *video, > > > > > + const struct media_pad *remote) > > > > > +{ > > > > > + struct v4l2_subdev_mbus_code_enum mbus_code = { 0 }; > > > > > + struct sun6i_csi *csi = video->csi; > > > > > + struct v4l2_format format; > > > > > + struct v4l2_subdev *subdev; > > > > > + u32 pad; > > > > > + const u32 *pixformats; > > > > > + int pixformat_count = 0; > > > > > + u32 subdev_codes[32]; /* subdev format codes, 32 should be enough */ > > > > > + int codes_count = 0; > > > > > + int num_fmts = 0; > > > > > + int i, j; > > > > > + > > > > > + pad = remote->index; > > > > > + subdev = media_entity_to_v4l2_subdev(remote->entity); > > > > > + if (subdev == NULL) > > > > > + return -ENXIO; > > > > > + > > > > > + /* Get supported pixformats of CSI */ > > > > > + pixformat_count = sun6i_csi_get_supported_pixformats(csi, &pixformats); > > > > > + if (pixformat_count <= 0) > > > > > + return -ENXIO; > > > > > + > > > > > + /* Get subdev formats codes */ > > > > > + mbus_code.pad = pad; > > > > > + mbus_code.which = V4L2_SUBDEV_FORMAT_ACTIVE; > > > > > + while (!v4l2_subdev_call(subdev, pad, enum_mbus_code, NULL, > > > > > + &mbus_code)) { > > > > > > > > The formats supported by the external sub-device may depend on horizontal > > > > and vertical flipping. You shouldn't assume any particular configuration > > > > here: instead, bridge drivers generally just need to make sure the formats > > > > match in link validation when streaming is started. At least the CSI-2 > > > > receiver driver and the DMA engine driver (video device) should check the > > > > configuration is valid. See e.g. the IPU3 driver: > > > > drivers/media/pci/intel/ipu3/ipu3-cio2.c . > > > > > > Can mbus_code be added dynamically ? > > > The code here only enum the mbus code and get the possible supported > > > pairs of pixformat and mbus by SoC. Not try to check if the formats > > > (width height ...) is valid or not. The formats validation will be > > > in link validation when streaming is started as per your advise. > > > > The formats that can be enumerated from the sensor here are those settable > > using SUBDEV_S_FMT. The enumeration will change on raw sensors if you use > > the flipping controls. As the bridge driver implements MC as well as subdev > > APIs, generally the sensor configuration is out of scope of this driver > > since it's directly configured from the user space. > > > > Just check that the pipeline is valid before starting streaming in your > > driver. > > Sorry. I am still confused. > As the CSI driver does not enum the formats supported by sensor. > How to get a valid format if I do not want to open the subdev? For MC-enabled drivers that expose the pipeline, the user is responsible for configuring the pipeline. There are bridge drivers that do not expose the pipeline but that will exclude the use of e.g. some sensor drivers with those bridge drivers. > Many applications still only open /dev/video*. That's true, and this is indeed a known gap: So in other words, there is no solution for that issue right now, but this is in no way specific to your driver, and it is known that this needs to be addressed. -- Kind regards, Sakari Ailus sakari.ailus@linux.intel.com