Message ID | 20250205233016.1600517-2-swboyd@chromium.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | arm64: dts: qcom: sc7180-trogdor: Wire up USB | expand |
On 6.02.2025 12:30 AM, Stephen Boyd wrote: > Describe the set of pins used to connect the detachable keyboard on > detachable ChromeOS devices. The set of pins is called the "pogo pins". > It's basically USB 2.0 with an extra pin for base detection. We expect > to find a keyboard on the other side of this connector with a specific > vid/pid, so describe that as a child device at the port of the usb > device connected upstream. > > Cc: Rob Herring <robh@kernel.org> > Cc: Krzysztof Kozlowski <krzk+dt@kernel.org> > Cc: Conor Dooley <conor+dt@kernel.org> > Cc: Benson Leung <bleung@chromium.org> > Cc: <devicetree@vger.kernel.org> > Cc: <chrome-platform@lists.linux.dev> > Cc: Pin-yen Lin <treapking@chromium.org> > Signed-off-by: Stephen Boyd <swboyd@chromium.org> > --- > .../chrome/google,pogo-pin-connector.yaml | 68 +++++++++++++++++++ > 1 file changed, 68 insertions(+) > create mode 100644 Documentation/devicetree/bindings/chrome/google,pogo-pin-connector.yaml > > diff --git a/Documentation/devicetree/bindings/chrome/google,pogo-pin-connector.yaml b/Documentation/devicetree/bindings/chrome/google,pogo-pin-connector.yaml > new file mode 100644 > index 000000000000..622e171b6b08 > --- /dev/null > +++ b/Documentation/devicetree/bindings/chrome/google,pogo-pin-connector.yaml > @@ -0,0 +1,68 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/chrome/google,pogo-pin-connector.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Google Pogo Pin Connector This looks like a very generic piece of hw.. many boards (esp. convertibles) do the same thing, with 4 or 5 pins on the bottom of the device. But of course hw manufacturers being hw manufacturers, many different kinds of signals go through such connectors - if it's not USB then it's perhaps I2C or some variation thereof IMO, we could perhaps add this to usb-connector.yaml as "usb-custom-connector" or so Konrad
Quoting Konrad Dybcio (2025-02-06 03:30:50) > On 6.02.2025 12:30 AM, Stephen Boyd wrote: > > diff --git a/Documentation/devicetree/bindings/chrome/google,pogo-pin-connector.yaml b/Documentation/devicetree/bindings/chrome/google,pogo-pin-connector.yaml > > new file mode 100644 > > index 000000000000..622e171b6b08 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/chrome/google,pogo-pin-connector.yaml > > @@ -0,0 +1,68 @@ > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/chrome/google,pogo-pin-connector.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: Google Pogo Pin Connector > > This looks like a very generic piece of hw.. many boards (esp. convertibles) > do the same thing, with 4 or 5 pins on the bottom of the device. Yes, connectors are basically just pins :-) > > But of course hw manufacturers being hw manufacturers, many different kinds > of signals go through such connectors - if it's not USB then it's perhaps > I2C or some variation thereof Right, and I doubt they call them "pogo". > > IMO, we could perhaps add this to usb-connector.yaml as "usb-custom-connector" > or so Do you have a device that could use such a generic binding? I can't really design something in the abstract without two or more concrete use cases. Coming up with something generic looks like a quagmire, because as you say the signals going through the pins could be anything: i2c, 1-wire, etc. At least this is a vendor prefixed binding, meaning a generic binding could supersede this one later. The risk of accepting this binding is low because it can be replaced by a more generic one at a later date. I will move the file to usb/ so that it is more likely to be seen, but I'm hesitant to sign up to work on any sort of generic binding for USB2 plus an extra pin used for who knows what.
On 6.02.2025 9:43 PM, Stephen Boyd wrote: > Quoting Konrad Dybcio (2025-02-06 03:30:50) >> On 6.02.2025 12:30 AM, Stephen Boyd wrote: >>> diff --git a/Documentation/devicetree/bindings/chrome/google,pogo-pin-connector.yaml b/Documentation/devicetree/bindings/chrome/google,pogo-pin-connector.yaml >>> new file mode 100644 >>> index 000000000000..622e171b6b08 >>> --- /dev/null >>> +++ b/Documentation/devicetree/bindings/chrome/google,pogo-pin-connector.yaml >>> @@ -0,0 +1,68 @@ >>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) >>> +%YAML 1.2 >>> +--- >>> +$id: http://devicetree.org/schemas/chrome/google,pogo-pin-connector.yaml# >>> +$schema: http://devicetree.org/meta-schemas/core.yaml# >>> + >>> +title: Google Pogo Pin Connector >> >> This looks like a very generic piece of hw.. many boards (esp. convertibles) >> do the same thing, with 4 or 5 pins on the bottom of the device. > > Yes, connectors are basically just pins :-) > >> >> But of course hw manufacturers being hw manufacturers, many different kinds >> of signals go through such connectors - if it's not USB then it's perhaps >> I2C or some variation thereof > > Right, and I doubt they call them "pogo". > >> >> IMO, we could perhaps add this to usb-connector.yaml as "usb-custom-connector" >> or so > > Do you have a device that could use such a generic binding? I can't > really design something in the abstract without two or more concrete use > cases. Coming up with something generic looks like a quagmire, because > as you say the signals going through the pins could be anything: i2c, > 1-wire, etc. Right, we can't be overly generic either. FWIW I'm not standing in the way of this patch getting merged. Konrad > At least this is a vendor prefixed binding, meaning a generic binding > could supersede this one later. The risk of accepting this binding is > low because it can be replaced by a more generic one at a later date. > > I will move the file to usb/ so that it is more likely to be seen, but > I'm hesitant to sign up to work on any sort of generic binding for USB2 > plus an extra pin used for who knows what.
Quoting Konrad Dybcio (2025-02-10 11:09:57) > On 6.02.2025 9:43 PM, Stephen Boyd wrote: > > > > Do you have a device that could use such a generic binding? I can't > > really design something in the abstract without two or more concrete use > > cases. Coming up with something generic looks like a quagmire, because > > as you say the signals going through the pins could be anything: i2c, > > 1-wire, etc. > > Right, we can't be overly generic either. FWIW I'm not standing in the way > of this patch getting merged. > Ok, got it. I've renamed this to google,usb-pogo-keyboard and made it keyboard specific. I'll send v3 shortly.
diff --git a/Documentation/devicetree/bindings/chrome/google,pogo-pin-connector.yaml b/Documentation/devicetree/bindings/chrome/google,pogo-pin-connector.yaml new file mode 100644 index 000000000000..622e171b6b08 --- /dev/null +++ b/Documentation/devicetree/bindings/chrome/google,pogo-pin-connector.yaml @@ -0,0 +1,68 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/chrome/google,pogo-pin-connector.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Google Pogo Pin Connector + +maintainers: + - Stephen Boyd <swboyd@chromium.org> + +description: + ChromeOS devices with a detachable keyboard have a set of five pins called + pogo pins that are the typical four pins for USB (D+/D-, vbus, ground) and an + extra pin for base detection. The detachable keyboard is a USB device that + connects to the pogo pins. + +properties: + compatible: + const: google,pogo-pin-connector + + '#address-cells': + const: 1 + + '#size-cells': + const: 0 + + port: + $ref: /schemas/graph.yaml#/properties/port + description: Connection to USB2 port providing USB signals + required: + - endpoint + +patternProperties: + "^keyboard@[0-9a-f]{1,2}$": + description: The detachable keyboard + type: object + $ref: /schemas/usb/usb-device.yaml + unevaluatedProperties: false + +required: + - compatible + - '#address-cells' + - '#size-cells' + - port + +additionalProperties: false + +examples: + - | + connector { + compatible = "google,pogo-pin-connector"; + #address-cells = <1>; + #size-cells = <0>; + + keyboard@2 { + compatible = "usb18d1,504c"; + reg = <2>; + }; + + port { + pogo_connector_in: endpoint { + remote-endpoint = <&usb_hub_dsp3_hs>; + }; + }; + }; + +...
Describe the set of pins used to connect the detachable keyboard on detachable ChromeOS devices. The set of pins is called the "pogo pins". It's basically USB 2.0 with an extra pin for base detection. We expect to find a keyboard on the other side of this connector with a specific vid/pid, so describe that as a child device at the port of the usb device connected upstream. Cc: Rob Herring <robh@kernel.org> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org> Cc: Conor Dooley <conor+dt@kernel.org> Cc: Benson Leung <bleung@chromium.org> Cc: <devicetree@vger.kernel.org> Cc: <chrome-platform@lists.linux.dev> Cc: Pin-yen Lin <treapking@chromium.org> Signed-off-by: Stephen Boyd <swboyd@chromium.org> --- .../chrome/google,pogo-pin-connector.yaml | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 Documentation/devicetree/bindings/chrome/google,pogo-pin-connector.yaml