Message ID | 20231020-fsa4480-swap-v2-0-9a7f9bb59873@fairphone.com |
---|---|
Headers | show |
Series | Handle reversed SBU orientation for FSA4480 | expand |
On Fri, 20 Oct 2023 11:33:18 +0200, Luca Weiss wrote: > Allow specifying data-lanes to reverse the muxing orientation between > AUX+/- and SBU1/2 where necessary by the hardware design. > > In the mux there's a switch that needs to be controlled from the OS, and > it either connects AUX+ -> SBU1 and AUX- -> SBU2, or the reverse: AUX+ > -> SBU2 and AUX- -> SBU1, depending on the orientation of how the USB-C > connector is plugged in. > > With this data-lanes property we can now specify that AUX+ and AUX- > connections are swapped between the SoC and the mux, therefore the OS > needs to consider this and reverse the direction of this switch in the > mux. > > _______ _______ > | | | > |-- HP --| | > |-- MIC --| |or > SoC | | MUX |-- SBU1 ---> To the USB-C > Codec |-- AUX+ --| |-- SBU2 ---> connected > |-- AUX- --| | > ______| |_____| > > (thanks to Neil Armstrong for this ASCII art) > > Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> > --- > .../devicetree/bindings/usb/fcs,fsa4480.yaml | 29 +++++++++++++++++++++- > 1 file changed, 28 insertions(+), 1 deletion(-) > Reviewed-by: Rob Herring <robh@kernel.org>
On Fri, 20 Oct 2023 11:33:20 +0200, Luca Weiss wrote: > The Orient-Chip OCP96011 is generally compatible with the FSA4480, add a > compatible for it with the fallback on fsa4480. > > However the AUX/SBU connections are expected to be swapped compared to > FSA4480, so document this in the data-lanes description. > > Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> > --- > Documentation/devicetree/bindings/usb/fcs,fsa4480.yaml | 18 ++++++++++++++---- > 1 file changed, 14 insertions(+), 4 deletions(-) > Reviewed-by: Rob Herring <robh@kernel.org>
Short reason: Without swapping the SBU lanes, on QCM6490 Fairphone 5 the DisplayPort-over-USB-C doesn't work. The Orient-Chip OCP96011 used in this phone is generally compatible with FSA4480 but has a difference how AUX+/- should be connected to SBU1/2. Long explanation, with my current understanding: * FSA4480 block diagram shows AUX+ connected to SBU2 and AUX- to SBU1. * OCP96011 block diagram shows AUX+ connected to SBU1 and AUX- to SBU2 (it's not 100% clear though in the picture but makes sense with the observed behavior) * Fairphone 5 schematics have AUX+ connected to SBU2 and AUX- to SBU1, which would be correct for FSA4480 but since OCP96011 is used (which expects it to be the other way around) the Linux driver needs to reverse it. If AUX+ would be connected to SBU1 and AUX- to SBU2 as shown in the OCP96011 block diagram, then no driver/dts change would be needed. Not sure if I've implemented the best solution in this patch. Other solutions I could think of are: * Add some custom boolean property to the node, e.g. 'fsa,swap-sbu' * Reverse when ocs,ocp96011 compatible is used. This would be incorrect since when following the OCP96011 block diagram no reversing would be needed, as explained above. However I think the current solution with data-lanes in the endpoint is the best fit and is also already used for a similar purpose in another USB mux driver. Signed-off-by: Luca Weiss <luca.weiss@fairphone.com> --- Changes in v2: - Expand commit message for first dt-bindings patch incl. ASCII art - Use fwnode_* instead of_* APIs - Drop manual check for data-lanes property length, read_u32_array will already error on too short or too long property. - Drop dev_info for reversed data-lanes mapping - Link to v1: https://lore.kernel.org/r/20231013-fsa4480-swap-v1-0-b877f62046cc@fairphone.com --- Luca Weiss (3): dt-bindings: usb: fsa4480: Add data-lanes property to endpoint usb: typec: fsa4480: Add support to swap SBU orientation dt-bindings: usb: fsa4480: Add compatible for OCP96011 .../devicetree/bindings/usb/fcs,fsa4480.yaml | 43 ++++++++++++- drivers/usb/typec/mux/fsa4480.c | 71 ++++++++++++++++++++++ 2 files changed, 111 insertions(+), 3 deletions(-) --- base-commit: e3b18f7200f45d66f7141136c25554ac1e82009b change-id: 20231013-fsa4480-swap-9b0f76d73c19 Best regards,