[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <8e7b99e0-2649-fa3d-4fbd-e027a65aff6a@marek.ca>
Date: Tue, 22 Oct 2024 00:25:46 -0400
From: Jonathan Marek <jonathan@...ek.ca>
To: Stephan Gerhold <stephan.gerhold@...aro.org>
Cc: linux-arm-msm@...r.kernel.org, Bjorn Andersson <andersson@...nel.org>,
Konrad Dybcio <konradybcio@...nel.org>, Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>, Conor Dooley
<conor+dt@...nel.org>,
"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS"
<devicetree@...r.kernel.org>, open list <linux-kernel@...r.kernel.org>,
Abel Vesa <abel.vesa@...aro.org>, Johan Hovold <johan@...nel.org>
Subject: Re: [PATCH v2 2/3] arm64: dts: qcom: x1e80100-crd: enable otg on usb
ports
On 10/21/24 8:54 AM, Stephan Gerhold wrote:
> +Cc Abel and Johan
>
> FYI, this landed in qcom for-next last week for CRD and T14s.
>
> On Fri, Oct 11, 2024 at 07:16:22PM -0400, Jonathan Marek wrote:
>> The 3 USB ports on x1e80100-crd are OTG-capable, remove the dr_mode
>> override to enable OTG.
>>
>> Signed-off-by: Jonathan Marek <jonathan@...ek.ca>
>
> This is a bit problematic, because dr_mode = "otg" seems to imply
> gadget/peripheral mode by default and we are currently unable to detect
> the role at runtime until the ADSP is started. Being in peripheral mode
> by default will break USB installers; they won't be able find the rootfs
> via USB. Unfortunately, they wouldn't be able to detect it once in the
> rootfs either, because usually you first need to copy the ADSP firmware
> from Windows (at least on the laptops).
>
> I think the best quick fix would be to set
>
> role-switch-default-mode = "host";
>
I have no objection to this but its a hack to workaround qcom's broken
design and perhaps should include a comment along those lines. The
situation is also the same on anything sm8350 and newer.
FYI upstream doesn't support a rootfs on USB because loading a new ADSP
firmware breaks it (cuts off vbus for a moment I guess), but I guess
that doesn't apply to the USB installer case. (maybe the people making
these USB installers should just have to carry a patch with this?)
> for now to restore the old behavior in initrd, while still allowing to
> switch to peripheral mode once detected by the ADSP later.
>
> It would be nice to have gadget mode in initrd as well, since e.g.
> postmarketOS needs that to set up the USB debug shell. But I'm not sure
> how we could support that:
>
> - We could designate some of the ports as "peripheral by default" and
> some as "host by default". E.g. usb_1_ss0 is also used for EDL and
> Fastboot on CRD, so it's more likely to be used in peripheral mode.
> But there still would be users confused about why they cannot plug in
> their USB installer into one of the ports...
>
> - Long term, I wonder if there is any way we could reuse the reduced
> ADSP firmware from UEFI for USB detection until we start the full one
> later? Perhaps it provides a similar interface?
This is what I do (minus the "start the full one later" part), with a
hack [1] to make the remoteproc driver skip loading any firmware and
trying to boot the DSP. The UEFI-loaded ADSP firmware has the same
charging/usb functionality as the full ADSP firmware.
[1]
https://github.com/flto/linux/commit/36921742d28b55dc02d8e5a8d6598e567e7874ab
Powered by blists - more mailing lists