Received: by 2002:a05:6358:16cc:b0:ea:6187:17c9 with SMTP id r12csp2098520rwl; Mon, 26 Dec 2022 08:53:02 -0800 (PST) X-Google-Smtp-Source: AMrXdXvy7776aiV0xuQryYqjeJajNck/MS5miltQ0MikugqXnC+UPpBK+jd/ShV6nplcEbPsvfC/ X-Received: by 2002:a17:902:654e:b0:191:14c1:626c with SMTP id d14-20020a170902654e00b0019114c1626cmr22908211pln.9.1672073582541; Mon, 26 Dec 2022 08:53:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1672073582; cv=none; d=google.com; s=arc-20160816; b=Jj8lBr7iMUNXJmOdJPO1R4qAlNVO0ug00Zy7+urbELkph37t9ooUDqzI81AiCbiZRo S8POWoT6gtSs5bSY9jtcTK0806Bx4ZQIykdbDcrzhpZH9Pi3Xi6MjAbm6rQvfa9yPl1o j7nCg2OfvtLb32egLGK3tzqDUuWgaqZ6eKa3mIIL9gAOVZifMsFRI9MFUQpT0D2+MNdT 43Yoo7Y4iem1zJEKogjl6hAJ8cvy/n+HtAEswU70ydr7zGW8e57L3+BzODQRsgvE3CaT RKQ/FgSuUog2SEYiWJOa5xx4UBVigK/roTdmTdKTkQlOWuR9vZuBLdNCDLuqJ84VVS1V cy6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=BF8FZxJ+lSLuYQvzaXFNNAMo/uHZJpeOWOwMdbz0euI=; b=cIN1B1/JlLF7eBdnSfz7cxTjWqQXU+95foyqXbStoNgDfzM5NeE6KGqunxOL233Nxe ijQQZ++wV+yUNKLXgAiQcprcYI1EutW8H97m/IEjEJeTnKWyweHhZCP1RwPZ0EJjGPBk BCEeSha7iD0wbU96YeJssCgxij3F9Vrpa0R7kjfeCLIduW17+wEOLTAtkwi9WqTOs/+q q1353Mks+YGhVv9A+2meitknztcA6O+6LMR1HZyooDGedq6dQRHIMQwypLvG2vzfuQCw geJFbY848FM1MI8fVhG4xsUdi6BzX4Q2k35McLMiwea6DQqDhzDync4hoNMUKCUtTb8F xrfQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=EMKCIIfZ; 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 Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i7-20020a17090332c700b00176bcd1ccf3si12265804plr.591.2022.12.26.08.52.51; Mon, 26 Dec 2022 08:53:02 -0800 (PST) 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 (test mode) header.i=@ideasonboard.com header.s=mail header.b=EMKCIIfZ; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229762AbiLZQqv (ORCPT + 67 others); Mon, 26 Dec 2022 11:46:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47040 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229476AbiLZQqs (ORCPT ); Mon, 26 Dec 2022 11:46:48 -0500 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C3C1260ED; Mon, 26 Dec 2022 08:46:47 -0800 (PST) Received: from pendragon.ideasonboard.com (213-243-189-158.bb.dnainternet.fi [213.243.189.158]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id EC3CB74C; Mon, 26 Dec 2022 17:46:44 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1672073205; bh=tymU+9oaT3DlRP52T9kKDH9739McwyQei6aFVO6yYLI=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=EMKCIIfZyVSzN7kH6nntk9WL6EeYoVgwh+mztZXIRamYx4kp2ixIG0MQPXqYuk4mB HTc/M4vG7FgtdFAsn30qJhb8RfayYWoyNAyxIwBuFJTLzSG3uLEPFnnGf+j7MGkkfB zVaYFzY0fzSY9ewGxbhcW7s3qaURjeBqksuYISw0= Date: Mon, 26 Dec 2022 18:46:40 +0200 From: Laurent Pinchart To: Tomi Valkeinen Cc: linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-i2c@vger.kernel.org, Rob Herring , Krzysztof Kozlowski , Wolfram Sang , Luca Ceresoli , Andy Shevchenko , Matti Vaittinen , Mauro Carvalho Chehab , Peter Rosin , Liam Girdwood , Mark Brown , Sakari Ailus , Michael Tretter , Shawn Tu , Hans Verkuil , Mike Pagano , Krzysztof =?utf-8?Q?Ha=C5=82asa?= , Marek Vasut Subject: Re: [PATCH v5 3/8] dt-bindings: media: add bindings for TI DS90UB913 Message-ID: References: <20221208104006.316606-1-tomi.valkeinen@ideasonboard.com> <20221208104006.316606-4-tomi.valkeinen@ideasonboard.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS 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 Hi Tomi, On Tue, Dec 13, 2022 at 03:36:49PM +0200, Tomi Valkeinen wrote: > On 11/12/2022 19:21, Laurent Pinchart wrote: > > On Sun, Dec 11, 2022 at 07:13:10PM +0200, Laurent Pinchart wrote: > >> On Thu, Dec 08, 2022 at 12:40:01PM +0200, Tomi Valkeinen wrote: > >>> Add DT bindings for TI DS90UB913 FPDLink-3 Serializer. > >>> > >>> Signed-off-by: Tomi Valkeinen > >>> --- > >>> .../bindings/media/i2c/ti,ds90ub913.yaml | 121 ++++++++++++++++++ > >>> 1 file changed, 121 insertions(+) > >>> create mode 100644 Documentation/devicetree/bindings/media/i2c/ti,ds90ub913.yaml > >>> > >>> diff --git a/Documentation/devicetree/bindings/media/i2c/ti,ds90ub913.yaml b/Documentation/devicetree/bindings/media/i2c/ti,ds90ub913.yaml > >>> new file mode 100644 > >>> index 000000000000..3a5b34c6bb64 > >>> --- /dev/null > >>> +++ b/Documentation/devicetree/bindings/media/i2c/ti,ds90ub913.yaml > >>> @@ -0,0 +1,121 @@ > >>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > >>> +%YAML 1.2 > >>> +--- > >>> +$id: http://devicetree.org/schemas/media/i2c/ti,ds90ub913.yaml# > >>> +$schema: http://devicetree.org/meta-schemas/core.yaml# > >>> + > >>> +title: Texas Instruments DS90UB913 FPD-Link 3 Serializer > >> > >> I think TI consistently writes it "FPD-Link III". If you rename it, > >> please do so through the whole series. > >> > >>> + > >>> +maintainers: > >>> + - Tomi Valkeinen > >>> + > >>> +description: > >>> + The TI DS90UB913 is an FPD-Link 3 video serializer for parallel video. > >>> + > >>> +properties: > >>> + compatible: > >>> + enum: > >>> + - ti,ds90ub913a-q1 > >> > >> Is the -q1 suffix needed, are there other variants ? > >> > >>> + > >>> + '#gpio-cells': > >>> + const: 2 > >>> + > >>> + gpio-controller: true > >>> + > >>> + clocks: > >>> + maxItems: 1 > >>> + description: > >>> + Reference clock connected to the CLKIN pin. > >>> + > >>> + clock-names: > >>> + items: > >>> + - const: clkin > >>> + > >>> + '#clock-cells': > >>> + const: 0 > >>> + > >>> + ports: > >>> + $ref: /schemas/graph.yaml#/properties/ports > >>> + > >>> + properties: > >>> + port@0: > >>> + $ref: /schemas/graph.yaml#/$defs/port-base > >>> + unevaluatedProperties: false > >>> + description: CSI-2 input port > > > > This should be "Parallel input port". > > Oops... > > >>> + > >>> + properties: > >>> + endpoint: > >>> + $ref: /schemas/media/video-interfaces.yaml# > >>> + unevaluatedProperties: false > > > > Should at least the bus-width property be mandatory, as the device > > supports both 10- and 12-bit inputs ? > > Hmm... It supports 10-bit, 12-bit HF and 12-bit LF modes. If we need to > configure the mode based on DT, we need one more property for the HF/LF. > Then again, the HF/LF is separate from the input port, it's more about > internal operation and the link to the deserializer. > > However, this (the mode) should always be set in the HW via the MODE > pins. And the driver can read the HW's MODE from the registers. Only in > some very odd circumstances should the mode be configured by hand (and > then carefully, as the link to the deserializer will drop). Both the DS90UB913A and DS90UB913Q datasheets state that the MODE pin on the serializer only selects between PCLK and external oscillator modes. The DS90UB913A datasheet seems to hint in documentation of the mode select register (0x05) that the mode is selected on the deserializer and transmitted to the serializer through the back-channel, as the MODE_OVERRIDE bit is documented as "Allows overriding mode select bits coming from back-channel" and the MODE_UP_TO_DATE bit as "Status of mode select from Deserializer is up-to- date". Bits 2 and 3 are however named "Pin_MODE_12-bit High Frequency" and "Pin_MODE_10-bit mode", which hint that their value could come from a mode pin, but I see no trace of that anywhere. The DS90UB913Q datasheet is similar, with a notable difference in that it documents bits 1 and 0 as reserved, where the DS90UB913A datasheet documents them as mode override selection. In the same document, the DS90UB914Q MODE pin is documented as selecting the 10-bit, 12-bit LF or 12-bit HF operation mode. The datasheet also states that "The deserializer automatically configures the serializer to correct mode through the back-channel". Th DS90UB953 datasheet also hints in the documentation of the BC_MODE_SELECT register (0x04) that the mode is configured automatically for backward-compatible DVP mode. For CSI-2 mode, I assume the mode is strapped from the MODE pin and not configured through the back-channel. The DS90UB960 datasheet documents how to configure the mode on the deserializer side, but doesn't state whether the serializer is then automatically configured through the back-channel (in RAW/DVP mode). I assume it is, do you have any information about this ? > So the bus-width is not something that the driver would normally use. If > we would need to define the bus-width and HF/LF in the DT for some > reason in the future, I think an "old" DT without those specified should > continue working fine, as the mode can be read from a register. > > That said, to complicate matters, the deserializer needs to know the > serializer's mode before it can communicate with it (and thus, before we > can read the mode). This is set with the deserializer's "ti,rx-mode" > property, where you find RAW10, RAW12LF and RAW12HF modes (and for > ub953, CSI-2 sync and non-sync modes). > > So if we would define the bus-width and HF/LF in ub913's properties, the > deserializer could go peeking the mode from there. But is that a good > idea... I'm not so sure. Peeking into another device's DT node isn't great. It looks like the best option for the DS90UB913 is to specify the mode on the deserializer's side (either through the MODE strap or with a software override through DT). In case the serializer mode would need to be manually overridden in the future, we could add an optional DT property. -- Regards, Laurent Pinchart