[PATCH v4 2/3] phy: qcom: qmp-combo: get the USB3 & DisplayPort lanes mapping from DT
Neil Armstrong
neil.armstrong at linaro.org
Mon Oct 6 05:50:13 PDT 2025
On 10/6/25 12:08, Konrad Dybcio wrote:
> On 9/30/25 9:39 AM, Neil Armstrong wrote:
>> The QMP USB3/DP Combo PHY hosts an USB3 phy and a DP PHY on top
>> of a combo glue to route either lanes to the 4 shared physical lanes.
>>
>> The routing of the lanes can be:
>> - 2 DP + 2 USB3
>> - 4 DP
>> - 2 USB3
>>
>> Get the lanes mapping from DT and stop registering the USB-C
>> muxes in favor of a static mode and orientation detemined
>> by the lanes mapping.
>>
>> This allows supporting boards with direct connection of USB3 and
>> DisplayPort lanes to the QMP Combo PHY lanes, not using the
>> USB-C Altmode feature.
>>
>> Signed-off-by: Neil Armstrong <neil.armstrong at linaro.org>
>> ---
>
> [...]
>
>> +struct qmp_combo_lane_mapping {
>> + unsigned int lanes_count;
>
> "num_lanes"?
Is this significant ?
>
>> + enum typec_orientation orientation;
>> + u32 lanes[4];
>> +};
>> +
>> +static const struct qmp_combo_lane_mapping usb3_data_lanes[] = {
>> + { 2, TYPEC_ORIENTATION_NORMAL, { 1, 0 }},
>> + { 2, TYPEC_ORIENTATION_REVERSE, { 2, 3 }},
>> +};
>> +
>> +static const struct qmp_combo_lane_mapping dp_data_lanes[] = {
>> + { 1, TYPEC_ORIENTATION_NORMAL, { 0 }},
>> + { 1, TYPEC_ORIENTATION_REVERSE, { 3 }},
>
> This is not corroborated by your bindings change ^
Damn you're right, I'll fix it...
>
> I'm also frankly not sure whether it's pin 2 or 3 that 1-lane-DP
> would be TXd on
>
>> + { 2, TYPEC_ORIENTATION_NORMAL, { 3, 2 }},
>> + { 2, TYPEC_ORIENTATION_REVERSE, { 0, 1 }},
>> + { 4, TYPEC_ORIENTATION_NORMAL, { 3, 2, 1, 0 }},
>> + { 4, TYPEC_ORIENTATION_REVERSE, { 0, 1, 2, 3 }},
>
> Would it be too cheesy to check orientation based like:
>
> static bool qmpphy_mapping_orient_flipped(u32 *data_lanes)
> {
> return data_lanes[0] == 0;
> }
>
> ?
Do we want a proper check of the property content or some random check ?
Sorry I prefer something formal, since perhaps sometime we will have
a full lanes remapping available instead of just orientation and if
we have some random input it will explose...
>
>> - ret = qmp_combo_typec_register(qmp);
>> - if (ret)
>> - goto err_node_put;
>> + qmp->qmpphy_mode = QMPPHY_MODE_USB3DP;
>> +
>> + if (of_find_property(dev->of_node, "mode-switch", NULL) ||
>> + of_find_property(dev->of_node, "orientation-switch", NULL)) {
>
> of_property_present()
I'll replace with that.
Thanks,
Neil
>
> Konrad
More information about the linux-phy
mailing list