linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Thierry Reding <thierry.reding@gmail.com>
To: Jon Hunter <jonathanh@nvidia.com>
Cc: Rob Herring <robh+dt@kernel.org>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Wayne Chang <waynec@nvidia.com>,
	gregkh@linuxfoundation.org, treding@nvidia.com,
	heikki.krogerus@linux.intel.com, ajayg@nvidia.com, kishon@ti.com,
	vkoul@kernel.org, p.zabel@pengutronix.de, balbi@kernel.org,
	mathias.nyman@intel.com, jckuo@nvidia.com,
	linux-usb@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, singhanc@nvidia.com,
	linux-i2c@vger.kernel.org, linux-phy@lists.infradead.org,
	linux-tegra@vger.kernel.org
Subject: Re: [PATCH 03/11] dt-bindings: usb: Add binding for Cypress cypd4226 I2C driver
Date: Fri, 28 Oct 2022 16:07:30 +0200	[thread overview]
Message-ID: <Y1viIsL+Nxthc97j@orome> (raw)
In-Reply-To: <7a1c4943-4ae2-cde4-221b-fa972c2baab2@nvidia.com>

[-- Attachment #1: Type: text/plain, Size: 5498 bytes --]

On Fri, Oct 28, 2022 at 01:42:36PM +0100, Jon Hunter wrote:
> 
> On 28/10/2022 13:31, Thierry Reding wrote:
> > On Wed, Oct 26, 2022 at 08:13:57AM +0100, Jon Hunter wrote:
> > > 
> > > On 24/10/2022 08:41, Wayne Chang wrote:
> > > > add device-tree binding documentation for Cypress cypd4226 type-C
> > > > controller's I2C interface. It is a standard i2c slave with GPIO
> > > > input as IRQ interface.
> > > > 
> > > > Signed-off-by: Wayne Chang <waynec@nvidia.com>
> > > > ---
> > > >    .../bindings/usb/cypress,cypd4226.yaml        | 86 +++++++++++++++++++
> > > >    1 file changed, 86 insertions(+)
> > > >    create mode 100644 Documentation/devicetree/bindings/usb/cypress,cypd4226.yaml
> > > > 
> > > > diff --git a/Documentation/devicetree/bindings/usb/cypress,cypd4226.yaml b/Documentation/devicetree/bindings/usb/cypress,cypd4226.yaml
> > > > new file mode 100644
> > > > index 000000000000..5ac28ab4e7a1
> > > > --- /dev/null
> > > > +++ b/Documentation/devicetree/bindings/usb/cypress,cypd4226.yaml
> > > > @@ -0,0 +1,86 @@
> > > > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > > > +%YAML 1.2
> > > > +---
> > > > +$id: http://devicetree.org/schemas/usb/cypress,cypd4226.yaml#
> > > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > > +
> > > > +title: Cypress cypd4226 UCSI I2C Type-C Controller
> > > > +
> > > > +maintainers:
> > > > +  - Wayne Chang <waynec@nvidia.com>
> > > > +
> > > > +description: |
> > > > +  The Cypress cypd4226 UCSI I2C type-C controller is a I2C interface type-C
> > > > +  controller.
> > > > +
> > > > +properties:
> > > > +  compatible:
> > > > +    const: cypress,cypd4226
> > > > +
> > > > +  '#address-cells':
> > > > +    const: 1
> > > > +
> > > > +  '#size-cells':
> > > > +    const: 0
> > > > +
> > > > +  reg:
> > > > +    const: 0x08
> > > > +
> > > > +  interrupts:
> > > > +    maxItems: 1
> > > > +
> > > > +  cypress,firmware-build:
> > > > +    enum:
> > > > +      - nv
> > > > +      - gn
> > > > +    description: |
> > > > +      the name of the CCGx firmware built for product series.
> > > > +      should be set one of following:
> > > > +      - "nv" for the RTX product series
> > > 
> > > Please add 'NVIDIA' so that it is 'for the NVIDIA RTX product series'
> > > 
> > > > +      - "gn" for the Jetson product series
> > > 
> > > Same here please add 'NVIDIA' so that it is 'for the NVIDIA Jetson product
> > > series'.
> > > 
> > > Rob, any concerns about this property in general? Unfortunately, ACPI choose
> > > a 16-bit type for this and used 'nv' for the RTX product. I don't find 'gn'
> > > for Jetson very descriptive but we need a way to differentiate from RTX.
> > > 
> > > This is needed in the Cypress CCGX driver for the following ...
> > > 
> > > https://lore.kernel.org/lkml/20220928150840.3804313-1-waynec@nvidia.com/
> > > 
> > > Ideally, this should have been included in this series but was sent before.
> > > We can always re-work/update the above patch even though it has been queued
> > > up now.
> > 
> > The driver seems to use this 16-bit value only to compare with a
> > corresponding field in the firmware headers. How exactly we obtain this
> > value is therefore not important. However, since this 16-bit value is
> > embedded in firmware images, we also cannot substitute them with
> > something more sensible.
> 
> I am actually wondering if this is actually embedded in any images because I
> see it populated by the i2c-nvidia-gpu.c driver [0]. So I am wondering if we
> can use PROPERTY_ENTRY_STRING() for this driver instead and have a more
> descriptive name such as 'nvidia,rtx'?

What I mean by "embedded in firmware images" is that the value read from
the property is compared to values read from a firmware blob (either one
read back from the chip or one loaded using request_firmware()). See for
example ccg_check_vendor_version() and ccg_check_fw_version().

So the way that this 16-bit number is used is to define what type of
vendor firmware we support. So this is also used to avoid trying to load
a Tegra firmware on a GPU and vice versa.

So yes, we could potentially still make the i2c-nvidia-gpu.c driver add
a "nvidia,rtx" string to make it more descriptive like DT, but then we'd
still need to somehow resolve that to the "nv" string for the assignment
to uc->fw_build.

Not sure about how that would impact the AMD bits. Another of those CCGX
UCSI devices is registered by the i2c-designware-pcidrv.c driver, but it
doesn't pass a software node. From what I can tell that simply means all
of those checks will work with fw_build == 0x00. Primarily I think that
will cause flashing of the firmware not to be supported.

So yeah, having that string be something else (i.e. more descriptive)
and then match on that instead would definitely work. After looking at
this some more, using existing driver-matching may not work after all
because while there's ACPI matching and with this series DT matching,
the various GPU I2C instantiations are purely done in software, so they
have neither and therefore would need a secondary lookup mechanism. We
may be stuck with that ccgx,firmware-build property, but as you said it
should be possible to at least sanitize it.

Thierry

> 
> Jon
> 
> [0] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/i2c/busses/i2c-nvidia-gpu.c#n261
> -- 
> nvpublic

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2022-10-28 14:07 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-24  7:41 [PATCH 00/11] Enable USB host and device functions on Jetson Wayne Chang
2022-10-24  7:41 ` [PATCH 01/11] dt-bindings: usb: tegra-xudc: Add Tegra234 XUSB controller support Wayne Chang
2022-10-25 23:24   ` Rob Herring
2022-11-03 10:36     ` Wayne Chang
2022-10-24  7:41 ` [PATCH 02/11] dt-bindings: usb: Add NVIDIA Tegra XUSB host controller binding Wayne Chang
2022-10-24 13:30   ` Rob Herring
2022-10-24 15:58     ` Jon Hunter
2022-10-24 14:54   ` Rob Herring
2022-10-25  8:02     ` Wayne Chang
2022-10-28  2:19       ` Krzysztof Kozlowski
2022-10-28  9:25         ` Jon Hunter
2022-10-28 11:07           ` Jon Hunter
2022-10-28 11:30             ` Thierry Reding
2022-11-03 10:24               ` Wayne Chang
2022-10-24  7:41 ` [PATCH 03/11] dt-bindings: usb: Add binding for Cypress cypd4226 I2C driver Wayne Chang
2022-10-26  1:07   ` Rob Herring
2022-10-26  7:13   ` Jon Hunter
2022-10-28 12:31     ` Thierry Reding
2022-10-28 12:42       ` Jon Hunter
2022-10-28 14:07         ` Thierry Reding [this message]
2022-11-03 10:47           ` Wayne Chang
2022-10-24  7:41 ` [PATCH 04/11] arm64: tegra: Enable XUSB host and device on Jetson AGX Orin Wayne Chang
2022-10-28  2:23   ` Krzysztof Kozlowski
2022-10-28  9:33     ` Jon Hunter
2022-10-28 11:27       ` Krzysztof Kozlowski
2022-10-28 11:34         ` Jon Hunter
2022-10-28 12:38         ` Thierry Reding
2022-10-28 21:48           ` Krzysztof Kozlowski
2022-10-24  7:41 ` [PATCH 05/11] usb: typec: ucsi_ccg: Add OF support Wayne Chang
2022-10-24  7:41 ` [PATCH 06/11] usb: typec: ucsi_ccg: Replace ccgx to well-known regex Wayne Chang
2022-10-24  8:01   ` Heikki Krogerus
2022-10-24  8:29     ` Felipe Balbi
2022-10-24  8:46       ` Heikki Krogerus
2022-10-25  7:26         ` Wayne Chang
2022-10-24  7:41 ` [PATCH 07/11] i2c: nvidia-gpu: " Wayne Chang
2022-11-01 15:07   ` Jon Hunter
2022-11-03 11:36     ` Wayne Chang
2022-10-24  7:41 ` [PATCH 08/11] phy: tegra: xusb: Disable trk clk when not using Wayne Chang
2022-11-05 14:58   ` Vinod Koul
2022-11-07 10:37     ` Wayne Chang
2022-10-24  7:41 ` [PATCH 09/11] phy: tegra: xusb: Add Tegra234 support Wayne Chang
2022-10-28 12:56   ` Thierry Reding
2022-11-03 11:42     ` Wayne Chang
2022-11-05 15:01   ` Vinod Koul
2022-11-07 10:36     ` Wayne Chang
2022-10-24  7:41 ` [PATCH 10/11] usb: host: xhci-tegra: Add Tegra234 XHCI support Wayne Chang
2022-10-28 13:39   ` Thierry Reding
2022-11-01 14:53     ` Jon Hunter
2022-11-03 11:35       ` Wayne Chang
2022-10-24  7:41 ` [PATCH 11/11] usb: gadget: tegra-xudc: Add Tegra234 support Wayne Chang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Y1viIsL+Nxthc97j@orome \
    --to=thierry.reding@gmail.com \
    --cc=ajayg@nvidia.com \
    --cc=balbi@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=heikki.krogerus@linux.intel.com \
    --cc=jckuo@nvidia.com \
    --cc=jonathanh@nvidia.com \
    --cc=kishon@ti.com \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-phy@lists.infradead.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mathias.nyman@intel.com \
    --cc=p.zabel@pengutronix.de \
    --cc=robh+dt@kernel.org \
    --cc=singhanc@nvidia.com \
    --cc=treding@nvidia.com \
    --cc=vkoul@kernel.org \
    --cc=waynec@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).