From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.5 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,USER_AGENT_MUTT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9A639C43612 for ; Wed, 16 Jan 2019 13:44:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 62067206C2 for ; Wed, 16 Jan 2019 13:44:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=ragnatech-se.20150623.gappssmtp.com header.i=@ragnatech-se.20150623.gappssmtp.com header.b="w28MHBH/" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2393261AbfAPNof (ORCPT ); Wed, 16 Jan 2019 08:44:35 -0500 Received: from mail-lf1-f66.google.com ([209.85.167.66]:35736 "EHLO mail-lf1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390655AbfAPNoe (ORCPT ); Wed, 16 Jan 2019 08:44:34 -0500 Received: by mail-lf1-f66.google.com with SMTP id e26so4933989lfc.2 for ; Wed, 16 Jan 2019 05:44:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ragnatech-se.20150623.gappssmtp.com; s=20150623; h=from:date:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=kJSfVfzKhoHaYIr23U4bZuc4Mw2UX1QBGLtJxKg3D8o=; b=w28MHBH/yB4Xd7VHGuOBmTTOlaCttCKuwnvZ09X+gCzpmbq3xSeVNPDpAJ/HjI5QNv p3+4duD885stnUhhrffyN5gKT7QXnupyDeV6OnKlLWvAj7Yvr5vM7T/wVhmIU/jMfZwd MUnkHjtox18MQ2L73cGCkRfXtdZkvGbudRkgmVZuOi5LsDudOKEAtnyPuySnVqrlD0+m DOTgtulP6E4Ji/ZjQZ5cnHiqNImC3SDGkN4lK2FyaGX7pdBRA7zTbzLj2CT4lwFXzHV8 v1NlvkBxwVKvBGBC3i57hePy3xDw2yaiJXMtRb9D4FlrjnSwjuJGWjXUQ+2fCIfBjRJx 0pHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:date:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to:user-agent; bh=kJSfVfzKhoHaYIr23U4bZuc4Mw2UX1QBGLtJxKg3D8o=; b=swLhqLU2gjYHWPAtohqgqHVl8ZoiWl+AlfnubHPy0YfbISRGT0X4dmvRXGeOPLSw4j 1cce/2B07vBgIEKgNW7AbcGRZorM/C+XmyailL4dUlhcjWgrV4D9MwF2zDRiMdg793uI lwZSjHGKkFmE0I4sw27hWNOHVKiQsunNHIAwXYMnNyt0Tb3b8Ne9fgRIndqyM0XKDXAt ENSH3iH73V0nKQujT2N0B7I08ux1E2TR2/0Vtg8rSa1b7elFdEUFyYV/rQxtvdElecQd YTErUTp3u6q/kF+tcmZy1mJ2A3addCdtIJjbFBK+He7AxBFzFQycce+XMYZvjbp3uxVG +9tg== X-Gm-Message-State: AJcUukdLzN8Wu4lZSzky0oudou57da9z+5EE8aTifgGfUg0q10SV/mHf f2yhg4d6+aEes2VrIBW12uFiUA== X-Google-Smtp-Source: ALg8bN6Anks9MmnFEbemw5zV+t5q8BfBtdhpbjPOuFYK9g8bqO3TBH8RGI0PDfNH94a+utqPgRg6Lg== X-Received: by 2002:a19:26ce:: with SMTP id m197mr6847680lfm.23.1547646271560; Wed, 16 Jan 2019 05:44:31 -0800 (PST) Received: from localhost (89-233-230-99.cust.bredband2.com. [89.233.230.99]) by smtp.gmail.com with ESMTPSA id j18-v6sm1027442ljc.52.2019.01.16.05.44.25 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 16 Jan 2019 05:44:25 -0800 (PST) From: "Niklas =?iso-8859-1?Q?S=F6derlund?=" X-Google-Original-From: Niklas =?iso-8859-1?Q?S=F6derlund?= Date: Wed, 16 Jan 2019 14:44:25 +0100 To: Jacopo Mondi Cc: laurent.pinchart@ideasonboard.com, kieran.bingham@ideasonboard.com, linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Kieran Bingham Subject: Re: [PATCH v3 3/6] media: adv748x: csi2: Link AFE with TXA and TXB Message-ID: <20190116134424.GP7393@bigcity.dyn.berto.se> References: <20190110140213.5198-1-jacopo+renesas@jmondi.org> <20190110140213.5198-4-jacopo+renesas@jmondi.org> <20190114145533.GK30160@bigcity.dyn.berto.se> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20190114145533.GK30160@bigcity.dyn.berto.se> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-renesas-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org Hi (again) Jacopo, I found something else in this patch unfortunately :-( On 2019-01-14 15:55:33 +0100, Niklas Söderlund wrote: > Hi Jacopo, > > Thanks for your patch. > > On 2019-01-10 15:02:10 +0100, Jacopo Mondi wrote: > > The ADV748x chip supports routing AFE output to either TXA or TXB. > > In order to support run-time configuration of video stream path, create an > > additional (not enabled) "AFE:8->TXA:0" link, and remove the IMMUTABLE flag > > from existing ones. > > > > Reviewed-by: Kieran Bingham > > Signed-off-by: Jacopo Mondi > > --- > > drivers/media/i2c/adv748x/adv748x-csi2.c | 44 +++++++++++++----------- > > 1 file changed, 23 insertions(+), 21 deletions(-) > > > > diff --git a/drivers/media/i2c/adv748x/adv748x-csi2.c b/drivers/media/i2c/adv748x/adv748x-csi2.c > > index b6b5d8c7ea7c..8c3714495e11 100644 > > --- a/drivers/media/i2c/adv748x/adv748x-csi2.c > > +++ b/drivers/media/i2c/adv748x/adv748x-csi2.c > > @@ -27,6 +27,7 @@ static int adv748x_csi2_set_virtual_channel(struct adv748x_csi2 *tx, > > * @v4l2_dev: Video registration device > > * @src: Source subdevice to establish link > > * @src_pad: Pad number of source to link to this @tx > > + * @enable: Link enabled flag > > * > > * Ensure that the subdevice is registered against the v4l2_device, and link the > > * source pad to the sink pad of the CSI2 bus entity. > > @@ -34,17 +35,11 @@ static int adv748x_csi2_set_virtual_channel(struct adv748x_csi2 *tx, > > static int adv748x_csi2_register_link(struct adv748x_csi2 *tx, > > struct v4l2_device *v4l2_dev, > > struct v4l2_subdev *src, > > - unsigned int src_pad) > > + unsigned int src_pad, > > + bool enable) > > { > > - int enabled = MEDIA_LNK_FL_ENABLED; > > int ret; > > > > - /* > > - * Dynamic linking of the AFE is not supported. > > - * Register the links as immutable. > > - */ > > - enabled |= MEDIA_LNK_FL_IMMUTABLE; > > - > > if (!src->v4l2_dev) { > > ret = v4l2_device_register_subdev(v4l2_dev, src); > > if (ret) > > @@ -53,7 +48,7 @@ static int adv748x_csi2_register_link(struct adv748x_csi2 *tx, > > > > return media_create_pad_link(&src->entity, src_pad, > > &tx->sd.entity, ADV748X_CSI2_SINK, > > - enabled); > > + enable ? MEDIA_LNK_FL_ENABLED : 0); > > } > > > > /* ----------------------------------------------------------------------------- > > @@ -68,25 +63,32 @@ static int adv748x_csi2_registered(struct v4l2_subdev *sd) > > { > > struct adv748x_csi2 *tx = adv748x_sd_to_csi2(sd); > > struct adv748x_state *state = tx->state; > > + int ret; > > > > adv_dbg(state, "Registered %s (%s)", is_txa(tx) ? "TXA":"TXB", > > sd->name); > > > > /* > > - * The adv748x hardware allows the AFE to route through the TXA, however > > - * this is not currently supported in this driver. > > + * Link TXA to AFE and HDMI, and TXB to AFE only as TXB cannot output > > + * HDMI. > > * > > - * Link HDMI->TXA, and AFE->TXB directly. > > + * The HDMI->TXA link is enabled by default, as is the AFE->TXB one. > > */ > > - if (is_txa(tx) && is_hdmi_enabled(state)) > > - return adv748x_csi2_register_link(tx, sd->v4l2_dev, > > - &state->hdmi.sd, > > - ADV748X_HDMI_SOURCE); > > - if (is_txb(tx) && is_afe_enabled(state)) > > - return adv748x_csi2_register_link(tx, sd->v4l2_dev, > > - &state->afe.sd, > > - ADV748X_AFE_SOURCE); > > - return 0; > > + if (is_afe_enabled(state)) { > > + ret = adv748x_csi2_register_link(tx, sd->v4l2_dev, > > + &state->afe.sd, > > + ADV748X_AFE_SOURCE, > > + is_txb(tx)); > > + if (ret) > > + return ret; > > + } > > + > > + /* Register link to HDMI for TXA only. */ > > + if (is_txb(tx) || !is_hdmi_enabled(state)) > > Small nit, I would s/is_txb(tx)/!is_txa(tx)/ here as to me it becomes > easier to read. With or without this change, > > Reviewed-by: Niklas Söderlund > > > + return 0; > > + > > + return adv748x_csi2_register_link(tx, sd->v4l2_dev, &state->hdmi.sd, > > + ADV748X_HDMI_SOURCE, true); If the call to adv748x_csi2_register_link() fails should not the (possible) link to the AFE be removed? > > } > > > > static const struct v4l2_subdev_internal_ops adv748x_csi2_internal_ops = { > > -- > > 2.20.1 > > > > -- > Regards, > Niklas Söderlund -- Regards, Niklas Söderlund