diff mbox series

drm/msm/dp: Shorten SETUP timeout

Message ID 20211005023750.2037631-1-bjorn.andersson@linaro.org (mailing list archive)
State New, archived
Headers show
Series drm/msm/dp: Shorten SETUP timeout | expand

Commit Message

Bjorn Andersson Oct. 5, 2021, 2:37 a.m. UTC
Found in the middle of a patch from Sankeerth was the reduction of the
INIT_SETUP timeout from 10s to 100ms. Upon INIT_SETUP timeout the host
is initalized and HPD interrupt start to be serviced, so in the case of
eDP this reduction improves the user experience dramatically - i.e.
removes 9.9s of bland screen time at boot.

Suggested-by: Sankeerth Billakanti <sbillaka@codeaurora.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---
 drivers/gpu/drm/msm/dp/dp_display.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Stephen Boyd Oct. 5, 2021, 6:45 p.m. UTC | #1
Quoting Bjorn Andersson (2021-10-04 19:37:50)
> Found in the middle of a patch from Sankeerth was the reduction of the
> INIT_SETUP timeout from 10s to 100ms. Upon INIT_SETUP timeout the host
> is initalized and HPD interrupt start to be serviced, so in the case of
> eDP this reduction improves the user experience dramatically - i.e.
> removes 9.9s of bland screen time at boot.
>
> Suggested-by: Sankeerth Billakanti <sbillaka@codeaurora.org>
> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> ---

Any Fixes tag? BTW, the delay design is pretty convoluted. I had to go
re-read the code a couple times to understand that it's waiting 100ms
times the 'delay' number. Whaaaaat?

Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Bjorn Andersson Oct. 5, 2021, 9:40 p.m. UTC | #2
On Tue 05 Oct 11:45 PDT 2021, Stephen Boyd wrote:

> Quoting Bjorn Andersson (2021-10-04 19:37:50)
> > Found in the middle of a patch from Sankeerth was the reduction of the
> > INIT_SETUP timeout from 10s to 100ms. Upon INIT_SETUP timeout the host
> > is initalized and HPD interrupt start to be serviced, so in the case of
> > eDP this reduction improves the user experience dramatically - i.e.
> > removes 9.9s of bland screen time at boot.
> >
> > Suggested-by: Sankeerth Billakanti <sbillaka@codeaurora.org>
> > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> > ---
> 
> Any Fixes tag? BTW, the delay design is pretty convoluted. I had to go
> re-read the code a couple times to understand that it's waiting 100ms
> times the 'delay' number. Whaaaaat?
> 

I assume you're happy with the current 10s delay on the current
devices, so I don't think we should push for this to be backported.
I have no need for it to be backported on my side at least.

> Reviewed-by: Stephen Boyd <swboyd@chromium.org>

Thanks,
Bjorn
Stephen Boyd Oct. 5, 2021, 10:36 p.m. UTC | #3
Quoting Bjorn Andersson (2021-10-05 14:40:38)
> On Tue 05 Oct 11:45 PDT 2021, Stephen Boyd wrote:
>
> > Quoting Bjorn Andersson (2021-10-04 19:37:50)
> > > Found in the middle of a patch from Sankeerth was the reduction of the
> > > INIT_SETUP timeout from 10s to 100ms. Upon INIT_SETUP timeout the host
> > > is initalized and HPD interrupt start to be serviced, so in the case of
> > > eDP this reduction improves the user experience dramatically - i.e.
> > > removes 9.9s of bland screen time at boot.
> > >
> > > Suggested-by: Sankeerth Billakanti <sbillaka@codeaurora.org>
> > > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> > > ---
> >
> > Any Fixes tag? BTW, the delay design is pretty convoluted. I had to go
> > re-read the code a couple times to understand that it's waiting 100ms
> > times the 'delay' number. Whaaaaat?
> >
>
> I assume you're happy with the current 10s delay on the current
> devices, so I don't think we should push for this to be backported.
> I have no need for it to be backported on my side at least.
>

Sure. Fixes tag != backported to stable trees but it is close.

> > Reviewed-by: Stephen Boyd <swboyd@chromium.org>
>
Kuogee Hsieh Oct. 5, 2021, 11:04 p.m. UTC | #4
On 2021-10-05 15:36, Stephen Boyd wrote:
> Quoting Bjorn Andersson (2021-10-05 14:40:38)
>> On Tue 05 Oct 11:45 PDT 2021, Stephen Boyd wrote:
>> 
>> > Quoting Bjorn Andersson (2021-10-04 19:37:50)
>> > > Found in the middle of a patch from Sankeerth was the reduction of the
>> > > INIT_SETUP timeout from 10s to 100ms. Upon INIT_SETUP timeout the host
>> > > is initalized and HPD interrupt start to be serviced, so in the case of
>> > > eDP this reduction improves the user experience dramatically - i.e.
>> > > removes 9.9s of bland screen time at boot.
>> > >
>> > > Suggested-by: Sankeerth Billakanti <sbillaka@codeaurora.org>
>> > > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
>> > > ---
>> >
>> > Any Fixes tag? BTW, the delay design is pretty convoluted. I had to go
>> > re-read the code a couple times to understand that it's waiting 100ms
>> > times the 'delay' number. Whaaaaat?
>> >
>> 
>> I assume you're happy with the current 10s delay on the current
>> devices, so I don't think we should push for this to be backported.
>> I have no need for it to be backported on my side at least.
>> 
> 
> Sure. Fixes tag != backported to stable trees but it is close.
> 
>> > Reviewed-by: Stephen Boyd <swboyd@chromium.org>
>> 
   dp_add_event(dp, EV_HPD_INIT_SETUP, 0, 1); <== to 100ms

This patch will prevent usb3 from working due to dp driver initialize 
phy earlier than usb3 which cause timeout error at power up usb3 phy 
when both edp and dp are enabled.
I had prepared a patch (drm/msm/dp: do not initialize combo phy until 
plugin interrupt) to fix this problem.
Unfortunately, my patch is depend on Bjorn's patch (PATCH v3 3/5] 
drm/msm/dp: Support up to 3 DP controllers).
I will submit my patch for review once Bjorn's patches merged in.
Therefore I would think this patch should go after both Bjorn's patches 
and my patch.
Stephen Boyd Oct. 5, 2021, 11:35 p.m. UTC | #5
Quoting khsieh@codeaurora.org (2021-10-05 16:04:40)
> On 2021-10-05 15:36, Stephen Boyd wrote:
> > Quoting Bjorn Andersson (2021-10-05 14:40:38)
> >> On Tue 05 Oct 11:45 PDT 2021, Stephen Boyd wrote:
> >>
> >> > Quoting Bjorn Andersson (2021-10-04 19:37:50)
> >> > > Found in the middle of a patch from Sankeerth was the reduction of the
> >> > > INIT_SETUP timeout from 10s to 100ms. Upon INIT_SETUP timeout the host
> >> > > is initalized and HPD interrupt start to be serviced, so in the case of
> >> > > eDP this reduction improves the user experience dramatically - i.e.
> >> > > removes 9.9s of bland screen time at boot.
> >> > >
> >> > > Suggested-by: Sankeerth Billakanti <sbillaka@codeaurora.org>
> >> > > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> >> > > ---
> >> >
> >> > Any Fixes tag? BTW, the delay design is pretty convoluted. I had to go
> >> > re-read the code a couple times to understand that it's waiting 100ms
> >> > times the 'delay' number. Whaaaaat?
> >> >
> >>
> >> I assume you're happy with the current 10s delay on the current
> >> devices, so I don't think we should push for this to be backported.
> >> I have no need for it to be backported on my side at least.
> >>
> >
> > Sure. Fixes tag != backported to stable trees but it is close.
> >
> >> > Reviewed-by: Stephen Boyd <swboyd@chromium.org>
> >>
>    dp_add_event(dp, EV_HPD_INIT_SETUP, 0, 1); <== to 100ms
>
> This patch will prevent usb3 from working due to dp driver initialize
> phy earlier than usb3 which cause timeout error at power up usb3 phy
> when both edp and dp are enabled.

That sounds pretty bad.

> I had prepared a patch (drm/msm/dp: do not initialize combo phy until
> plugin interrupt) to fix this problem.

Great! When were you planning to report this problem on the list?

> Unfortunately, my patch is depend on Bjorn's patch (PATCH v3 3/5]
> drm/msm/dp: Support up to 3 DP controllers).
> I will submit my patch for review once Bjorn's patches merged in.
> Therefore I would think this patch should go after both Bjorn's patches
> and my patch.
>

Why can't you send it now? Point to the other patch series as a
dependency.
Bjorn Andersson Oct. 6, 2021, 2:10 a.m. UTC | #6
On Tue 05 Oct 16:04 PDT 2021, khsieh@codeaurora.org wrote:

> On 2021-10-05 15:36, Stephen Boyd wrote:
> > Quoting Bjorn Andersson (2021-10-05 14:40:38)
> > > On Tue 05 Oct 11:45 PDT 2021, Stephen Boyd wrote:
> > > 
> > > > Quoting Bjorn Andersson (2021-10-04 19:37:50)
> > > > > Found in the middle of a patch from Sankeerth was the reduction of the
> > > > > INIT_SETUP timeout from 10s to 100ms. Upon INIT_SETUP timeout the host
> > > > > is initalized and HPD interrupt start to be serviced, so in the case of
> > > > > eDP this reduction improves the user experience dramatically - i.e.
> > > > > removes 9.9s of bland screen time at boot.
> > > > >
> > > > > Suggested-by: Sankeerth Billakanti <sbillaka@codeaurora.org>
> > > > > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> > > > > ---
> > > >
> > > > Any Fixes tag? BTW, the delay design is pretty convoluted. I had to go
> > > > re-read the code a couple times to understand that it's waiting 100ms
> > > > times the 'delay' number. Whaaaaat?
> > > >
> > > 
> > > I assume you're happy with the current 10s delay on the current
> > > devices, so I don't think we should push for this to be backported.
> > > I have no need for it to be backported on my side at least.
> > > 
> > 
> > Sure. Fixes tag != backported to stable trees but it is close.
> > 
> > > > Reviewed-by: Stephen Boyd <swboyd@chromium.org>
> > > 
>   dp_add_event(dp, EV_HPD_INIT_SETUP, 0, 1); <== to 100ms
> 
> This patch will prevent usb3 from working due to dp driver initialize phy
> earlier than usb3 which cause timeout error at power up usb3 phy when both
> edp and dp are enabled.

Can you please help me understand what you mean here, I use this on my
sc8180x with both eDP and USB-C/DP right now. What is it that doesn't
work? Or am I just lucky in some race condition?

Thanks,
Bjorn

> I had prepared a patch (drm/msm/dp: do not initialize combo phy until plugin
> interrupt) to fix this problem.
> Unfortunately, my patch is depend on Bjorn's patch (PATCH v3 3/5]
> drm/msm/dp: Support up to 3 DP controllers).
> I will submit my patch for review once Bjorn's patches merged in.
> Therefore I would think this patch should go after both Bjorn's patches and
> my patch.
> 
> 
>
Kuogee Hsieh Oct. 6, 2021, 3:37 p.m. UTC | #7
On 2021-10-05 19:10, Bjorn Andersson wrote:
> On Tue 05 Oct 16:04 PDT 2021, khsieh@codeaurora.org wrote:
> 
>> On 2021-10-05 15:36, Stephen Boyd wrote:
>> > Quoting Bjorn Andersson (2021-10-05 14:40:38)
>> > > On Tue 05 Oct 11:45 PDT 2021, Stephen Boyd wrote:
>> > >
>> > > > Quoting Bjorn Andersson (2021-10-04 19:37:50)
>> > > > > Found in the middle of a patch from Sankeerth was the reduction of the
>> > > > > INIT_SETUP timeout from 10s to 100ms. Upon INIT_SETUP timeout the host
>> > > > > is initalized and HPD interrupt start to be serviced, so in the case of
>> > > > > eDP this reduction improves the user experience dramatically - i.e.
>> > > > > removes 9.9s of bland screen time at boot.
>> > > > >
>> > > > > Suggested-by: Sankeerth Billakanti <sbillaka@codeaurora.org>
>> > > > > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
>> > > > > ---
>> > > >
>> > > > Any Fixes tag? BTW, the delay design is pretty convoluted. I had to go
>> > > > re-read the code a couple times to understand that it's waiting 100ms
>> > > > times the 'delay' number. Whaaaaat?
>> > > >
>> > >
>> > > I assume you're happy with the current 10s delay on the current
>> > > devices, so I don't think we should push for this to be backported.
>> > > I have no need for it to be backported on my side at least.
>> > >
>> >
>> > Sure. Fixes tag != backported to stable trees but it is close.
>> >
>> > > > Reviewed-by: Stephen Boyd <swboyd@chromium.org>
>> > >
>>   dp_add_event(dp, EV_HPD_INIT_SETUP, 0, 1); <== to 100ms
>> 
>> This patch will prevent usb3 from working due to dp driver initialize 
>> phy
>> earlier than usb3 which cause timeout error at power up usb3 phy when 
>> both
>> edp and dp are enabled.
> 
> Can you please help me understand what you mean here, I use this on my
> sc8180x with both eDP and USB-C/DP right now. What is it that doesn't
> work? Or am I just lucky in some race condition?
> 
> Thanks,
> Bjorn
> 
The problem is seen at sc7280.
Apple dongle have both  hdmi and usb port.
plug Apple dongle into type-c, then plug DP into apple's hdmi port and 
usb mouse into apple's usb port.
If edp enabled at this time, then usb mouse will not work due to timeout 
at phy power up.

>> I had prepared a patch (drm/msm/dp: do not initialize combo phy until 
>> plugin
>> interrupt) to fix this problem.
>> Unfortunately, my patch is depend on Bjorn's patch (PATCH v3 3/5]
>> drm/msm/dp: Support up to 3 DP controllers).
>> I will submit my patch for review once Bjorn's patches merged in.
>> Therefore I would think this patch should go after both Bjorn's 
>> patches and
>> my patch.
>> 
>> 
>>
Bjorn Andersson Oct. 6, 2021, 5:31 p.m. UTC | #8
On Wed 06 Oct 08:37 PDT 2021, khsieh@codeaurora.org wrote:

> On 2021-10-05 19:10, Bjorn Andersson wrote:
> > On Tue 05 Oct 16:04 PDT 2021, khsieh@codeaurora.org wrote:
> > 
> > > On 2021-10-05 15:36, Stephen Boyd wrote:
> > > > Quoting Bjorn Andersson (2021-10-05 14:40:38)
> > > > > On Tue 05 Oct 11:45 PDT 2021, Stephen Boyd wrote:
> > > > >
> > > > > > Quoting Bjorn Andersson (2021-10-04 19:37:50)
> > > > > > > Found in the middle of a patch from Sankeerth was the reduction of the
> > > > > > > INIT_SETUP timeout from 10s to 100ms. Upon INIT_SETUP timeout the host
> > > > > > > is initalized and HPD interrupt start to be serviced, so in the case of
> > > > > > > eDP this reduction improves the user experience dramatically - i.e.
> > > > > > > removes 9.9s of bland screen time at boot.
> > > > > > >
> > > > > > > Suggested-by: Sankeerth Billakanti <sbillaka@codeaurora.org>
> > > > > > > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> > > > > > > ---
> > > > > >
> > > > > > Any Fixes tag? BTW, the delay design is pretty convoluted. I had to go
> > > > > > re-read the code a couple times to understand that it's waiting 100ms
> > > > > > times the 'delay' number. Whaaaaat?
> > > > > >
> > > > >
> > > > > I assume you're happy with the current 10s delay on the current
> > > > > devices, so I don't think we should push for this to be backported.
> > > > > I have no need for it to be backported on my side at least.
> > > > >
> > > >
> > > > Sure. Fixes tag != backported to stable trees but it is close.
> > > >
> > > > > > Reviewed-by: Stephen Boyd <swboyd@chromium.org>
> > > > >
> > >   dp_add_event(dp, EV_HPD_INIT_SETUP, 0, 1); <== to 100ms
> > > 
> > > This patch will prevent usb3 from working due to dp driver
> > > initialize phy
> > > earlier than usb3 which cause timeout error at power up usb3 phy
> > > when both
> > > edp and dp are enabled.
> > 
> > Can you please help me understand what you mean here, I use this on my
> > sc8180x with both eDP and USB-C/DP right now. What is it that doesn't
> > work? Or am I just lucky in some race condition?
> > 
> > Thanks,
> > Bjorn
> > 
> The problem is seen at sc7280.
> Apple dongle have both  hdmi and usb port.
> plug Apple dongle into type-c, then plug DP into apple's hdmi port and usb
> mouse into apple's usb port.
> If edp enabled at this time, then usb mouse will not work due to timeout at
> phy power up.
> 

Okay, so you're saying that if the DP driver invokes phy_power_on()
before the USB driver does, USB initialization fails (or at least USB
doesn't work)?

Sounds like something we need to work out in the QMP phy driver. Do you
have any more details about what's going wrong.


Also, I've seen various references to said "Apple dongle", do you have a
link to the exact one you're testing with so I can pick one up for
testing purposes as well?

Regards,
Bjorn

> > > I had prepared a patch (drm/msm/dp: do not initialize combo phy
> > > until plugin
> > > interrupt) to fix this problem.
> > > Unfortunately, my patch is depend on Bjorn's patch (PATCH v3 3/5]
> > > drm/msm/dp: Support up to 3 DP controllers).
> > > I will submit my patch for review once Bjorn's patches merged in.
> > > Therefore I would think this patch should go after both Bjorn's
> > > patches and
> > > my patch.
> > > 
> > > 
> > >
Kuogee Hsieh Oct. 7, 2021, 7:51 p.m. UTC | #9
On 2021-10-06 10:31, Bjorn Andersson wrote:
> On Wed 06 Oct 08:37 PDT 2021, khsieh@codeaurora.org wrote:
> 
>> On 2021-10-05 19:10, Bjorn Andersson wrote:
>> > On Tue 05 Oct 16:04 PDT 2021, khsieh@codeaurora.org wrote:
>> >
>> > > On 2021-10-05 15:36, Stephen Boyd wrote:
>> > > > Quoting Bjorn Andersson (2021-10-05 14:40:38)
>> > > > > On Tue 05 Oct 11:45 PDT 2021, Stephen Boyd wrote:
>> > > > >
>> > > > > > Quoting Bjorn Andersson (2021-10-04 19:37:50)
>> > > > > > > Found in the middle of a patch from Sankeerth was the reduction of the
>> > > > > > > INIT_SETUP timeout from 10s to 100ms. Upon INIT_SETUP timeout the host
>> > > > > > > is initalized and HPD interrupt start to be serviced, so in the case of
>> > > > > > > eDP this reduction improves the user experience dramatically - i.e.
>> > > > > > > removes 9.9s of bland screen time at boot.
>> > > > > > >
>> > > > > > > Suggested-by: Sankeerth Billakanti <sbillaka@codeaurora.org>
>> > > > > > > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
>> > > > > > > ---
>> > > > > >
>> > > > > > Any Fixes tag? BTW, the delay design is pretty convoluted. I had to go
>> > > > > > re-read the code a couple times to understand that it's waiting 100ms
>> > > > > > times the 'delay' number. Whaaaaat?
>> > > > > >
>> > > > >
>> > > > > I assume you're happy with the current 10s delay on the current
>> > > > > devices, so I don't think we should push for this to be backported.
>> > > > > I have no need for it to be backported on my side at least.
>> > > > >
>> > > >
>> > > > Sure. Fixes tag != backported to stable trees but it is close.
>> > > >
>> > > > > > Reviewed-by: Stephen Boyd <swboyd@chromium.org>
>> > > > >
>> > >   dp_add_event(dp, EV_HPD_INIT_SETUP, 0, 1); <== to 100ms
>> > >
>> > > This patch will prevent usb3 from working due to dp driver
>> > > initialize phy
>> > > earlier than usb3 which cause timeout error at power up usb3 phy
>> > > when both
>> > > edp and dp are enabled.
>> >
>> > Can you please help me understand what you mean here, I use this on my
>> > sc8180x with both eDP and USB-C/DP right now. What is it that doesn't
>> > work? Or am I just lucky in some race condition?
>> >
>> > Thanks,
>> > Bjorn
>> >
>> The problem is seen at sc7280.
>> Apple dongle have both  hdmi and usb port.
>> plug Apple dongle into type-c, then plug DP into apple's hdmi port and 
>> usb
>> mouse into apple's usb port.
>> If edp enabled at this time, then usb mouse will not work due to 
>> timeout at
>> phy power up.
>> 
> 
> Okay, so you're saying that if the DP driver invokes phy_power_on()
> before the USB driver does, USB initialization fails (or at least USB
> doesn't work)?

if dp driver call qcom_qmp_phy_init() before usb3 call 
qcom_qmp_phy_init(),
usb3 driver will timeout at readl_poll_timeout(status, val, (val & mask) 
== ready, 10, PHY_INIT_COMPLETE_TIMEOUT) of qcom_qmp_phy_power_on().
> 
> Sounds like something we need to work out in the QMP phy driver. Do you
> have any more details about what's going wrong.
> 
> 
> Also, I've seen various references to said "Apple dongle", do you have 
> a
> link to the exact one you're testing with so I can pick one up for
> testing purposes as well?

Apple A2119 hdmi+usb dongle.
https://www.amazon.com/Apple-USB-C-Digital-Multiport-Adapter/dp/B07WF96FY5/ref=sr_1_2?dchild=1&keywords=apple+a2119&qid=1633636227&sr=8-2

> 
> Regards,
> Bjorn
> 
>> > > I had prepared a patch (drm/msm/dp: do not initialize combo phy
>> > > until plugin
>> > > interrupt) to fix this problem.
>> > > Unfortunately, my patch is depend on Bjorn's patch (PATCH v3 3/5]
>> > > drm/msm/dp: Support up to 3 DP controllers).
>> > > I will submit my patch for review once Bjorn's patches merged in.
>> > > Therefore I would think this patch should go after both Bjorn's
>> > > patches and
>> > > my patch.
>> > >
>> > >
>> > >
Bjorn Andersson Oct. 7, 2021, 8:06 p.m. UTC | #10
On Thu 07 Oct 12:51 PDT 2021, khsieh@codeaurora.org wrote:

> On 2021-10-06 10:31, Bjorn Andersson wrote:
> > On Wed 06 Oct 08:37 PDT 2021, khsieh@codeaurora.org wrote:
> > 
> > > On 2021-10-05 19:10, Bjorn Andersson wrote:
> > > > On Tue 05 Oct 16:04 PDT 2021, khsieh@codeaurora.org wrote:
> > > >
> > > > > On 2021-10-05 15:36, Stephen Boyd wrote:
> > > > > > Quoting Bjorn Andersson (2021-10-05 14:40:38)
> > > > > > > On Tue 05 Oct 11:45 PDT 2021, Stephen Boyd wrote:
> > > > > > >
> > > > > > > > Quoting Bjorn Andersson (2021-10-04 19:37:50)
> > > > > > > > > Found in the middle of a patch from Sankeerth was the reduction of the
> > > > > > > > > INIT_SETUP timeout from 10s to 100ms. Upon INIT_SETUP timeout the host
> > > > > > > > > is initalized and HPD interrupt start to be serviced, so in the case of
> > > > > > > > > eDP this reduction improves the user experience dramatically - i.e.
> > > > > > > > > removes 9.9s of bland screen time at boot.
> > > > > > > > >
> > > > > > > > > Suggested-by: Sankeerth Billakanti <sbillaka@codeaurora.org>
> > > > > > > > > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> > > > > > > > > ---
> > > > > > > >
> > > > > > > > Any Fixes tag? BTW, the delay design is pretty convoluted. I had to go
> > > > > > > > re-read the code a couple times to understand that it's waiting 100ms
> > > > > > > > times the 'delay' number. Whaaaaat?
> > > > > > > >
> > > > > > >
> > > > > > > I assume you're happy with the current 10s delay on the current
> > > > > > > devices, so I don't think we should push for this to be backported.
> > > > > > > I have no need for it to be backported on my side at least.
> > > > > > >
> > > > > >
> > > > > > Sure. Fixes tag != backported to stable trees but it is close.
> > > > > >
> > > > > > > > Reviewed-by: Stephen Boyd <swboyd@chromium.org>
> > > > > > >
> > > > >   dp_add_event(dp, EV_HPD_INIT_SETUP, 0, 1); <== to 100ms
> > > > >
> > > > > This patch will prevent usb3 from working due to dp driver
> > > > > initialize phy
> > > > > earlier than usb3 which cause timeout error at power up usb3 phy
> > > > > when both
> > > > > edp and dp are enabled.
> > > >
> > > > Can you please help me understand what you mean here, I use this on my
> > > > sc8180x with both eDP and USB-C/DP right now. What is it that doesn't
> > > > work? Or am I just lucky in some race condition?
> > > >
> > > > Thanks,
> > > > Bjorn
> > > >
> > > The problem is seen at sc7280.
> > > Apple dongle have both  hdmi and usb port.
> > > plug Apple dongle into type-c, then plug DP into apple's hdmi port
> > > and usb
> > > mouse into apple's usb port.
> > > If edp enabled at this time, then usb mouse will not work due to
> > > timeout at
> > > phy power up.
> > > 
> > 
> > Okay, so you're saying that if the DP driver invokes phy_power_on()
> > before the USB driver does, USB initialization fails (or at least USB
> > doesn't work)?
> 
> if dp driver call qcom_qmp_phy_init() before usb3 call qcom_qmp_phy_init(),
> usb3 driver will timeout at readl_poll_timeout(status, val, (val & mask) ==
> ready, 10, PHY_INIT_COMPLETE_TIMEOUT) of qcom_qmp_phy_power_on().

Thanks, I will try to reproduce this on my side. So the 10 seconds here
is strictly to give good enough time for the dwc3 driver to probe...

Any idea why you're saying that this is specific to sc7280, what changed
from sc7180?

> > 
> > Sounds like something we need to work out in the QMP phy driver. Do you
> > have any more details about what's going wrong.
> > 
> > 
> > Also, I've seen various references to said "Apple dongle", do you have a
> > link to the exact one you're testing with so I can pick one up for
> > testing purposes as well?
> 
> Apple A2119 hdmi+usb dongle.
> https://www.amazon.com/Apple-USB-C-Digital-Multiport-Adapter/dp/B07WF96FY5/ref=sr_1_2?dchild=1&keywords=apple+a2119&qid=1633636227&sr=8-2
> 

Thanks,
Bjorn

> > 
> > Regards,
> > Bjorn
> > 
> > > > > I had prepared a patch (drm/msm/dp: do not initialize combo phy
> > > > > until plugin
> > > > > interrupt) to fix this problem.
> > > > > Unfortunately, my patch is depend on Bjorn's patch (PATCH v3 3/5]
> > > > > drm/msm/dp: Support up to 3 DP controllers).
> > > > > I will submit my patch for review once Bjorn's patches merged in.
> > > > > Therefore I would think this patch should go after both Bjorn's
> > > > > patches and
> > > > > my patch.
> > > > >
> > > > >
> > > > >
Kuogee Hsieh Oct. 7, 2021, 8:28 p.m. UTC | #11
On 2021-10-07 13:06, Bjorn Andersson wrote:
> On Thu 07 Oct 12:51 PDT 2021, khsieh@codeaurora.org wrote:
> 
>> On 2021-10-06 10:31, Bjorn Andersson wrote:
>> > On Wed 06 Oct 08:37 PDT 2021, khsieh@codeaurora.org wrote:
>> >
>> > > On 2021-10-05 19:10, Bjorn Andersson wrote:
>> > > > On Tue 05 Oct 16:04 PDT 2021, khsieh@codeaurora.org wrote:
>> > > >
>> > > > > On 2021-10-05 15:36, Stephen Boyd wrote:
>> > > > > > Quoting Bjorn Andersson (2021-10-05 14:40:38)
>> > > > > > > On Tue 05 Oct 11:45 PDT 2021, Stephen Boyd wrote:
>> > > > > > >
>> > > > > > > > Quoting Bjorn Andersson (2021-10-04 19:37:50)
>> > > > > > > > > Found in the middle of a patch from Sankeerth was the reduction of the
>> > > > > > > > > INIT_SETUP timeout from 10s to 100ms. Upon INIT_SETUP timeout the host
>> > > > > > > > > is initalized and HPD interrupt start to be serviced, so in the case of
>> > > > > > > > > eDP this reduction improves the user experience dramatically - i.e.
>> > > > > > > > > removes 9.9s of bland screen time at boot.
>> > > > > > > > >
>> > > > > > > > > Suggested-by: Sankeerth Billakanti <sbillaka@codeaurora.org>
>> > > > > > > > > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
>> > > > > > > > > ---
>> > > > > > > >
>> > > > > > > > Any Fixes tag? BTW, the delay design is pretty convoluted. I had to go
>> > > > > > > > re-read the code a couple times to understand that it's waiting 100ms
>> > > > > > > > times the 'delay' number. Whaaaaat?
>> > > > > > > >
>> > > > > > >
>> > > > > > > I assume you're happy with the current 10s delay on the current
>> > > > > > > devices, so I don't think we should push for this to be backported.
>> > > > > > > I have no need for it to be backported on my side at least.
>> > > > > > >
>> > > > > >
>> > > > > > Sure. Fixes tag != backported to stable trees but it is close.
>> > > > > >
>> > > > > > > > Reviewed-by: Stephen Boyd <swboyd@chromium.org>
>> > > > > > >
>> > > > >   dp_add_event(dp, EV_HPD_INIT_SETUP, 0, 1); <== to 100ms
>> > > > >
>> > > > > This patch will prevent usb3 from working due to dp driver
>> > > > > initialize phy
>> > > > > earlier than usb3 which cause timeout error at power up usb3 phy
>> > > > > when both
>> > > > > edp and dp are enabled.
>> > > >
>> > > > Can you please help me understand what you mean here, I use this on my
>> > > > sc8180x with both eDP and USB-C/DP right now. What is it that doesn't
>> > > > work? Or am I just lucky in some race condition?
>> > > >
>> > > > Thanks,
>> > > > Bjorn
>> > > >
>> > > The problem is seen at sc7280.
>> > > Apple dongle have both  hdmi and usb port.
>> > > plug Apple dongle into type-c, then plug DP into apple's hdmi port
>> > > and usb
>> > > mouse into apple's usb port.
>> > > If edp enabled at this time, then usb mouse will not work due to
>> > > timeout at
>> > > phy power up.
>> > >
>> >
>> > Okay, so you're saying that if the DP driver invokes phy_power_on()
>> > before the USB driver does, USB initialization fails (or at least USB
>> > doesn't work)?
>> 
>> if dp driver call qcom_qmp_phy_init() before usb3 call 
>> qcom_qmp_phy_init(),
>> usb3 driver will timeout at readl_poll_timeout(status, val, (val & 
>> mask) ==
>> ready, 10, PHY_INIT_COMPLETE_TIMEOUT) of qcom_qmp_phy_power_on().
> 
> Thanks, I will try to reproduce this on my side. So the 10 seconds here
> is strictly to give good enough time for the dwc3 driver to probe...
> 
> Any idea why you're saying that this is specific to sc7280, what 
> changed
> from sc7180?

I did not have sc7180 with edp before so that i am not sure it will 
happen on sc7180 or not.
The usb3 does not work when both edp and dp enabled I just seen at 
sc7280.
Current at sc7280 EC is not boot up correctly when system power up.
I have to manual reboot EC from linux kernel shell before DP/usb3 can 
work.
I am not sure this contribute to this problem or not.


> 
>> >
>> > Sounds like something we need to work out in the QMP phy driver. Do you
>> > have any more details about what's going wrong.
>> >
>> >
>> > Also, I've seen various references to said "Apple dongle", do you have a
>> > link to the exact one you're testing with so I can pick one up for
>> > testing purposes as well?
>> 
>> Apple A2119 hdmi+usb dongle.
>> https://www.amazon.com/Apple-USB-C-Digital-Multiport-Adapter/dp/B07WF96FY5/ref=sr_1_2?dchild=1&keywords=apple+a2119&qid=1633636227&sr=8-2
>> 
> 
> Thanks,
> Bjorn
> 
>> >
>> > Regards,
>> > Bjorn
>> >
>> > > > > I had prepared a patch (drm/msm/dp: do not initialize combo phy
>> > > > > until plugin
>> > > > > interrupt) to fix this problem.
>> > > > > Unfortunately, my patch is depend on Bjorn's patch (PATCH v3 3/5]
>> > > > > drm/msm/dp: Support up to 3 DP controllers).
>> > > > > I will submit my patch for review once Bjorn's patches merged in.
>> > > > > Therefore I would think this patch should go after both Bjorn's
>> > > > > patches and
>> > > > > my patch.
>> > > > >
>> > > > >
>> > > > >
Stephen Boyd Oct. 7, 2021, 10:34 p.m. UTC | #12
Quoting khsieh@codeaurora.org (2021-10-07 13:28:12)
> On 2021-10-07 13:06, Bjorn Andersson wrote:
> > On Thu 07 Oct 12:51 PDT 2021, khsieh@codeaurora.org wrote:
> >
> >> On 2021-10-06 10:31, Bjorn Andersson wrote:
> >> > On Wed 06 Oct 08:37 PDT 2021, khsieh@codeaurora.org wrote:
> >> >
> >> > > On 2021-10-05 19:10, Bjorn Andersson wrote:
> >> > > > On Tue 05 Oct 16:04 PDT 2021, khsieh@codeaurora.org wrote:
> >> > > >
> >> > > > > On 2021-10-05 15:36, Stephen Boyd wrote:
> >> > > > > > Quoting Bjorn Andersson (2021-10-05 14:40:38)
> >> > > > > > > On Tue 05 Oct 11:45 PDT 2021, Stephen Boyd wrote:
> >> > > > > > >
> >> > > > > > > > Quoting Bjorn Andersson (2021-10-04 19:37:50)
> >> > > > > > > > > Found in the middle of a patch from Sankeerth was the reduction of the
> >> > > > > > > > > INIT_SETUP timeout from 10s to 100ms. Upon INIT_SETUP timeout the host
> >> > > > > > > > > is initalized and HPD interrupt start to be serviced, so in the case of
> >> > > > > > > > > eDP this reduction improves the user experience dramatically - i.e.
> >> > > > > > > > > removes 9.9s of bland screen time at boot.
> >> > > > > > > > >
> >> > > > > > > > > Suggested-by: Sankeerth Billakanti <sbillaka@codeaurora.org>
> >> > > > > > > > > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> >> > > > > > > > > ---
> >> > > > > > > >
> >> > > > > > > > Any Fixes tag? BTW, the delay design is pretty convoluted. I had to go
> >> > > > > > > > re-read the code a couple times to understand that it's waiting 100ms
> >> > > > > > > > times the 'delay' number. Whaaaaat?
> >> > > > > > > >
> >> > > > > > >
> >> > > > > > > I assume you're happy with the current 10s delay on the current
> >> > > > > > > devices, so I don't think we should push for this to be backported.
> >> > > > > > > I have no need for it to be backported on my side at least.
> >> > > > > > >
> >> > > > > >
> >> > > > > > Sure. Fixes tag != backported to stable trees but it is close.
> >> > > > > >
> >> > > > > > > > Reviewed-by: Stephen Boyd <swboyd@chromium.org>
> >> > > > > > >
> >> > > > >   dp_add_event(dp, EV_HPD_INIT_SETUP, 0, 1); <== to 100ms
> >> > > > >
> >> > > > > This patch will prevent usb3 from working due to dp driver
> >> > > > > initialize phy
> >> > > > > earlier than usb3 which cause timeout error at power up usb3 phy
> >> > > > > when both
> >> > > > > edp and dp are enabled.
> >> > > >
> >> > > > Can you please help me understand what you mean here, I use this on my
> >> > > > sc8180x with both eDP and USB-C/DP right now. What is it that doesn't
> >> > > > work? Or am I just lucky in some race condition?
> >> > > >
> >> > > > Thanks,
> >> > > > Bjorn
> >> > > >
> >> > > The problem is seen at sc7280.
> >> > > Apple dongle have both  hdmi and usb port.
> >> > > plug Apple dongle into type-c, then plug DP into apple's hdmi port
> >> > > and usb
> >> > > mouse into apple's usb port.
> >> > > If edp enabled at this time, then usb mouse will not work due to
> >> > > timeout at
> >> > > phy power up.
> >> > >
> >> >
> >> > Okay, so you're saying that if the DP driver invokes phy_power_on()
> >> > before the USB driver does, USB initialization fails (or at least USB
> >> > doesn't work)?
> >>
> >> if dp driver call qcom_qmp_phy_init() before usb3 call
> >> qcom_qmp_phy_init(),
> >> usb3 driver will timeout at readl_poll_timeout(status, val, (val &
> >> mask) ==
> >> ready, 10, PHY_INIT_COMPLETE_TIMEOUT) of qcom_qmp_phy_power_on().
> >
> > Thanks, I will try to reproduce this on my side. So the 10 seconds here
> > is strictly to give good enough time for the dwc3 driver to probe...
> >
> > Any idea why you're saying that this is specific to sc7280, what
> > changed
> > from sc7180?
>
> I did not have sc7180 with edp before so that i am not sure it will
> happen on sc7180 or not.
> The usb3 does not work when both edp and dp enabled I just seen at
> sc7280.
> Current at sc7280 EC is not boot up correctly when system power up.
> I have to manual reboot EC from linux kernel shell before DP/usb3 can
> work.
> I am not sure this contribute to this problem or not.
>

Can you make the usb driver into a module and only load that module
later in boot after the DP driver calls qcom_qmp_phy_init()? That would
be an easy way to move usb probe after DP probe and expose this problem.
Kuogee Hsieh Oct. 8, 2021, 4:07 p.m. UTC | #13
On 2021-10-07 15:34, Stephen Boyd wrote:
> Quoting khsieh@codeaurora.org (2021-10-07 13:28:12)
>> On 2021-10-07 13:06, Bjorn Andersson wrote:
>> > On Thu 07 Oct 12:51 PDT 2021, khsieh@codeaurora.org wrote:
>> >
>> >> On 2021-10-06 10:31, Bjorn Andersson wrote:
>> >> > On Wed 06 Oct 08:37 PDT 2021, khsieh@codeaurora.org wrote:
>> >> >
>> >> > > On 2021-10-05 19:10, Bjorn Andersson wrote:
>> >> > > > On Tue 05 Oct 16:04 PDT 2021, khsieh@codeaurora.org wrote:
>> >> > > >
>> >> > > > > On 2021-10-05 15:36, Stephen Boyd wrote:
>> >> > > > > > Quoting Bjorn Andersson (2021-10-05 14:40:38)
>> >> > > > > > > On Tue 05 Oct 11:45 PDT 2021, Stephen Boyd wrote:
>> >> > > > > > >
>> >> > > > > > > > Quoting Bjorn Andersson (2021-10-04 19:37:50)
>> >> > > > > > > > > Found in the middle of a patch from Sankeerth was the reduction of the
>> >> > > > > > > > > INIT_SETUP timeout from 10s to 100ms. Upon INIT_SETUP timeout the host
>> >> > > > > > > > > is initalized and HPD interrupt start to be serviced, so in the case of
>> >> > > > > > > > > eDP this reduction improves the user experience dramatically - i.e.
>> >> > > > > > > > > removes 9.9s of bland screen time at boot.
>> >> > > > > > > > >
>> >> > > > > > > > > Suggested-by: Sankeerth Billakanti <sbillaka@codeaurora.org>
>> >> > > > > > > > > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
>> >> > > > > > > > > ---
>> >> > > > > > > >
>> >> > > > > > > > Any Fixes tag? BTW, the delay design is pretty convoluted. I had to go
>> >> > > > > > > > re-read the code a couple times to understand that it's waiting 100ms
>> >> > > > > > > > times the 'delay' number. Whaaaaat?
>> >> > > > > > > >
>> >> > > > > > >
>> >> > > > > > > I assume you're happy with the current 10s delay on the current
>> >> > > > > > > devices, so I don't think we should push for this to be backported.
>> >> > > > > > > I have no need for it to be backported on my side at least.
>> >> > > > > > >
>> >> > > > > >
>> >> > > > > > Sure. Fixes tag != backported to stable trees but it is close.
>> >> > > > > >
>> >> > > > > > > > Reviewed-by: Stephen Boyd <swboyd@chromium.org>
>> >> > > > > > >
>> >> > > > >   dp_add_event(dp, EV_HPD_INIT_SETUP, 0, 1); <== to 100ms
>> >> > > > >
>> >> > > > > This patch will prevent usb3 from working due to dp driver
>> >> > > > > initialize phy
>> >> > > > > earlier than usb3 which cause timeout error at power up usb3 phy
>> >> > > > > when both
>> >> > > > > edp and dp are enabled.
>> >> > > >
>> >> > > > Can you please help me understand what you mean here, I use this on my
>> >> > > > sc8180x with both eDP and USB-C/DP right now. What is it that doesn't
>> >> > > > work? Or am I just lucky in some race condition?
>> >> > > >
>> >> > > > Thanks,
>> >> > > > Bjorn
>> >> > > >
>> >> > > The problem is seen at sc7280.
>> >> > > Apple dongle have both  hdmi and usb port.
>> >> > > plug Apple dongle into type-c, then plug DP into apple's hdmi port
>> >> > > and usb
>> >> > > mouse into apple's usb port.
>> >> > > If edp enabled at this time, then usb mouse will not work due to
>> >> > > timeout at
>> >> > > phy power up.
>> >> > >
>> >> >
>> >> > Okay, so you're saying that if the DP driver invokes phy_power_on()
>> >> > before the USB driver does, USB initialization fails (or at least USB
>> >> > doesn't work)?
>> >>
>> >> if dp driver call qcom_qmp_phy_init() before usb3 call
>> >> qcom_qmp_phy_init(),
>> >> usb3 driver will timeout at readl_poll_timeout(status, val, (val &
>> >> mask) ==
>> >> ready, 10, PHY_INIT_COMPLETE_TIMEOUT) of qcom_qmp_phy_power_on().
>> >
>> > Thanks, I will try to reproduce this on my side. So the 10 seconds here
>> > is strictly to give good enough time for the dwc3 driver to probe...
>> >
>> > Any idea why you're saying that this is specific to sc7280, what
>> > changed
>> > from sc7180?
>> 
>> I did not have sc7180 with edp before so that i am not sure it will
>> happen on sc7180 or not.
>> The usb3 does not work when both edp and dp enabled I just seen at
>> sc7280.
>> Current at sc7280 EC is not boot up correctly when system power up.
>> I have to manual reboot EC from linux kernel shell before DP/usb3 can
>> work.
>> I am not sure this contribute to this problem or not.
>> 
> 
> Can you make the usb driver into a module and only load that module
> later in boot after the DP driver calls qcom_qmp_phy_init()? That would
> be an easy way to move usb probe after DP probe and expose this 
> problem.

we need usb calls qcom_qmp_phy_init() before dp.
Bjorn Andersson Oct. 8, 2021, 4:44 p.m. UTC | #14
On Fri 08 Oct 09:07 PDT 2021, khsieh@codeaurora.org wrote:

> On 2021-10-07 15:34, Stephen Boyd wrote:
> > Quoting khsieh@codeaurora.org (2021-10-07 13:28:12)
> > > On 2021-10-07 13:06, Bjorn Andersson wrote:
> > > > On Thu 07 Oct 12:51 PDT 2021, khsieh@codeaurora.org wrote:
> > > >
> > > >> On 2021-10-06 10:31, Bjorn Andersson wrote:
> > > >> > On Wed 06 Oct 08:37 PDT 2021, khsieh@codeaurora.org wrote:
> > > >> >
> > > >> > > On 2021-10-05 19:10, Bjorn Andersson wrote:
> > > >> > > > On Tue 05 Oct 16:04 PDT 2021, khsieh@codeaurora.org wrote:
> > > >> > > >
> > > >> > > > > On 2021-10-05 15:36, Stephen Boyd wrote:
> > > >> > > > > > Quoting Bjorn Andersson (2021-10-05 14:40:38)
> > > >> > > > > > > On Tue 05 Oct 11:45 PDT 2021, Stephen Boyd wrote:
> > > >> > > > > > >
> > > >> > > > > > > > Quoting Bjorn Andersson (2021-10-04 19:37:50)
> > > >> > > > > > > > > Found in the middle of a patch from Sankeerth was the reduction of the
> > > >> > > > > > > > > INIT_SETUP timeout from 10s to 100ms. Upon INIT_SETUP timeout the host
> > > >> > > > > > > > > is initalized and HPD interrupt start to be serviced, so in the case of
> > > >> > > > > > > > > eDP this reduction improves the user experience dramatically - i.e.
> > > >> > > > > > > > > removes 9.9s of bland screen time at boot.
> > > >> > > > > > > > >
> > > >> > > > > > > > > Suggested-by: Sankeerth Billakanti <sbillaka@codeaurora.org>
> > > >> > > > > > > > > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> > > >> > > > > > > > > ---
> > > >> > > > > > > >
> > > >> > > > > > > > Any Fixes tag? BTW, the delay design is pretty convoluted. I had to go
> > > >> > > > > > > > re-read the code a couple times to understand that it's waiting 100ms
> > > >> > > > > > > > times the 'delay' number. Whaaaaat?
> > > >> > > > > > > >
> > > >> > > > > > >
> > > >> > > > > > > I assume you're happy with the current 10s delay on the current
> > > >> > > > > > > devices, so I don't think we should push for this to be backported.
> > > >> > > > > > > I have no need for it to be backported on my side at least.
> > > >> > > > > > >
> > > >> > > > > >
> > > >> > > > > > Sure. Fixes tag != backported to stable trees but it is close.
> > > >> > > > > >
> > > >> > > > > > > > Reviewed-by: Stephen Boyd <swboyd@chromium.org>
> > > >> > > > > > >
> > > >> > > > >   dp_add_event(dp, EV_HPD_INIT_SETUP, 0, 1); <== to 100ms
> > > >> > > > >
> > > >> > > > > This patch will prevent usb3 from working due to dp driver
> > > >> > > > > initialize phy
> > > >> > > > > earlier than usb3 which cause timeout error at power up usb3 phy
> > > >> > > > > when both
> > > >> > > > > edp and dp are enabled.
> > > >> > > >
> > > >> > > > Can you please help me understand what you mean here, I use this on my
> > > >> > > > sc8180x with both eDP and USB-C/DP right now. What is it that doesn't
> > > >> > > > work? Or am I just lucky in some race condition?
> > > >> > > >
> > > >> > > > Thanks,
> > > >> > > > Bjorn
> > > >> > > >
> > > >> > > The problem is seen at sc7280.
> > > >> > > Apple dongle have both  hdmi and usb port.
> > > >> > > plug Apple dongle into type-c, then plug DP into apple's hdmi port
> > > >> > > and usb
> > > >> > > mouse into apple's usb port.
> > > >> > > If edp enabled at this time, then usb mouse will not work due to
> > > >> > > timeout at
> > > >> > > phy power up.
> > > >> > >
> > > >> >
> > > >> > Okay, so you're saying that if the DP driver invokes phy_power_on()
> > > >> > before the USB driver does, USB initialization fails (or at least USB
> > > >> > doesn't work)?
> > > >>
> > > >> if dp driver call qcom_qmp_phy_init() before usb3 call
> > > >> qcom_qmp_phy_init(),
> > > >> usb3 driver will timeout at readl_poll_timeout(status, val, (val &
> > > >> mask) ==
> > > >> ready, 10, PHY_INIT_COMPLETE_TIMEOUT) of qcom_qmp_phy_power_on().
> > > >
> > > > Thanks, I will try to reproduce this on my side. So the 10 seconds here
> > > > is strictly to give good enough time for the dwc3 driver to probe...
> > > >
> > > > Any idea why you're saying that this is specific to sc7280, what
> > > > changed
> > > > from sc7180?
> > > 
> > > I did not have sc7180 with edp before so that i am not sure it will
> > > happen on sc7180 or not.
> > > The usb3 does not work when both edp and dp enabled I just seen at
> > > sc7280.
> > > Current at sc7280 EC is not boot up correctly when system power up.
> > > I have to manual reboot EC from linux kernel shell before DP/usb3 can
> > > work.
> > > I am not sure this contribute to this problem or not.
> > > 
> > 
> > Can you make the usb driver into a module and only load that module
> > later in boot after the DP driver calls qcom_qmp_phy_init()? That would
> > be an easy way to move usb probe after DP probe and expose this problem.
> 
> we need usb calls qcom_qmp_phy_init() before dp.

Why?
Kuogee Hsieh Oct. 11, 2021, 3:24 p.m. UTC | #15
On 2021-10-08 09:44, Bjorn Andersson wrote:
> On Fri 08 Oct 09:07 PDT 2021, khsieh@codeaurora.org wrote:
> 
>> On 2021-10-07 15:34, Stephen Boyd wrote:
>> > Quoting khsieh@codeaurora.org (2021-10-07 13:28:12)
>> > > On 2021-10-07 13:06, Bjorn Andersson wrote:
>> > > > On Thu 07 Oct 12:51 PDT 2021, khsieh@codeaurora.org wrote:
>> > > >
>> > > >> On 2021-10-06 10:31, Bjorn Andersson wrote:
>> > > >> > On Wed 06 Oct 08:37 PDT 2021, khsieh@codeaurora.org wrote:
>> > > >> >
>> > > >> > > On 2021-10-05 19:10, Bjorn Andersson wrote:
>> > > >> > > > On Tue 05 Oct 16:04 PDT 2021, khsieh@codeaurora.org wrote:
>> > > >> > > >
>> > > >> > > > > On 2021-10-05 15:36, Stephen Boyd wrote:
>> > > >> > > > > > Quoting Bjorn Andersson (2021-10-05 14:40:38)
>> > > >> > > > > > > On Tue 05 Oct 11:45 PDT 2021, Stephen Boyd wrote:
>> > > >> > > > > > >
>> > > >> > > > > > > > Quoting Bjorn Andersson (2021-10-04 19:37:50)
>> > > >> > > > > > > > > Found in the middle of a patch from Sankeerth was the reduction of the
>> > > >> > > > > > > > > INIT_SETUP timeout from 10s to 100ms. Upon INIT_SETUP timeout the host
>> > > >> > > > > > > > > is initalized and HPD interrupt start to be serviced, so in the case of
>> > > >> > > > > > > > > eDP this reduction improves the user experience dramatically - i.e.
>> > > >> > > > > > > > > removes 9.9s of bland screen time at boot.
>> > > >> > > > > > > > >
>> > > >> > > > > > > > > Suggested-by: Sankeerth Billakanti <sbillaka@codeaurora.org>
>> > > >> > > > > > > > > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
>> > > >> > > > > > > > > ---
>> > > >> > > > > > > >
>> > > >> > > > > > > > Any Fixes tag? BTW, the delay design is pretty convoluted. I had to go
>> > > >> > > > > > > > re-read the code a couple times to understand that it's waiting 100ms
>> > > >> > > > > > > > times the 'delay' number. Whaaaaat?
>> > > >> > > > > > > >
>> > > >> > > > > > >
>> > > >> > > > > > > I assume you're happy with the current 10s delay on the current
>> > > >> > > > > > > devices, so I don't think we should push for this to be backported.
>> > > >> > > > > > > I have no need for it to be backported on my side at least.
>> > > >> > > > > > >
>> > > >> > > > > >
>> > > >> > > > > > Sure. Fixes tag != backported to stable trees but it is close.
>> > > >> > > > > >
>> > > >> > > > > > > > Reviewed-by: Stephen Boyd <swboyd@chromium.org>
>> > > >> > > > > > >
>> > > >> > > > >   dp_add_event(dp, EV_HPD_INIT_SETUP, 0, 1); <== to 100ms
>> > > >> > > > >
>> > > >> > > > > This patch will prevent usb3 from working due to dp driver
>> > > >> > > > > initialize phy
>> > > >> > > > > earlier than usb3 which cause timeout error at power up usb3 phy
>> > > >> > > > > when both
>> > > >> > > > > edp and dp are enabled.
>> > > >> > > >
>> > > >> > > > Can you please help me understand what you mean here, I use this on my
>> > > >> > > > sc8180x with both eDP and USB-C/DP right now. What is it that doesn't
>> > > >> > > > work? Or am I just lucky in some race condition?
>> > > >> > > >
>> > > >> > > > Thanks,
>> > > >> > > > Bjorn
>> > > >> > > >
>> > > >> > > The problem is seen at sc7280.
>> > > >> > > Apple dongle have both  hdmi and usb port.
>> > > >> > > plug Apple dongle into type-c, then plug DP into apple's hdmi port
>> > > >> > > and usb
>> > > >> > > mouse into apple's usb port.
>> > > >> > > If edp enabled at this time, then usb mouse will not work due to
>> > > >> > > timeout at
>> > > >> > > phy power up.
>> > > >> > >
>> > > >> >
>> > > >> > Okay, so you're saying that if the DP driver invokes phy_power_on()
>> > > >> > before the USB driver does, USB initialization fails (or at least USB
>> > > >> > doesn't work)?
>> > > >>
>> > > >> if dp driver call qcom_qmp_phy_init() before usb3 call
>> > > >> qcom_qmp_phy_init(),
>> > > >> usb3 driver will timeout at readl_poll_timeout(status, val, (val &
>> > > >> mask) ==
>> > > >> ready, 10, PHY_INIT_COMPLETE_TIMEOUT) of qcom_qmp_phy_power_on().
>> > > >
>> > > > Thanks, I will try to reproduce this on my side. So the 10 seconds here
>> > > > is strictly to give good enough time for the dwc3 driver to probe...
>> > > >
>> > > > Any idea why you're saying that this is specific to sc7280, what
>> > > > changed
>> > > > from sc7180?
>> > >
>> > > I did not have sc7180 with edp before so that i am not sure it will
>> > > happen on sc7180 or not.
>> > > The usb3 does not work when both edp and dp enabled I just seen at
>> > > sc7280.
>> > > Current at sc7280 EC is not boot up correctly when system power up.
>> > > I have to manual reboot EC from linux kernel shell before DP/usb3 can
>> > > work.
>> > > I am not sure this contribute to this problem or not.
>> > >
>> >
>> > Can you make the usb driver into a module and only load that module
>> > later in boot after the DP driver calls qcom_qmp_phy_init()? That would
>> > be an easy way to move usb probe after DP probe and expose this problem.
>> 
>> we need usb calls qcom_qmp_phy_init() before dp.
> 
> Why?
I do not know the details.
But I did see below scenario,

if dp driver call qcom_qmp_phy_init() before usb3 call
qcom_qmp_phy_init(),
usb3 driver will timeout at readl_poll_timeout(status, val, (val &
mask) ==
ready, 10, PHY_INIT_COMPLETE_TIMEOUT) of qcom_qmp_phy_power_on().
Bjorn Andersson Oct. 11, 2021, 5:30 p.m. UTC | #16
On Mon 11 Oct 08:24 PDT 2021, khsieh@codeaurora.org wrote:

> On 2021-10-08 09:44, Bjorn Andersson wrote:
> > On Fri 08 Oct 09:07 PDT 2021, khsieh@codeaurora.org wrote:
> > 
> > > On 2021-10-07 15:34, Stephen Boyd wrote:
> > > > Quoting khsieh@codeaurora.org (2021-10-07 13:28:12)
> > > > > On 2021-10-07 13:06, Bjorn Andersson wrote:
> > > > > > On Thu 07 Oct 12:51 PDT 2021, khsieh@codeaurora.org wrote:
> > > > > >
> > > > > >> On 2021-10-06 10:31, Bjorn Andersson wrote:
> > > > > >> > On Wed 06 Oct 08:37 PDT 2021, khsieh@codeaurora.org wrote:
> > > > > >> >
> > > > > >> > > On 2021-10-05 19:10, Bjorn Andersson wrote:
> > > > > >> > > > On Tue 05 Oct 16:04 PDT 2021, khsieh@codeaurora.org wrote:
> > > > > >> > > >
> > > > > >> > > > > On 2021-10-05 15:36, Stephen Boyd wrote:
> > > > > >> > > > > > Quoting Bjorn Andersson (2021-10-05 14:40:38)
> > > > > >> > > > > > > On Tue 05 Oct 11:45 PDT 2021, Stephen Boyd wrote:
> > > > > >> > > > > > >
> > > > > >> > > > > > > > Quoting Bjorn Andersson (2021-10-04 19:37:50)
> > > > > >> > > > > > > > > Found in the middle of a patch from Sankeerth was the reduction of the
> > > > > >> > > > > > > > > INIT_SETUP timeout from 10s to 100ms. Upon INIT_SETUP timeout the host
> > > > > >> > > > > > > > > is initalized and HPD interrupt start to be serviced, so in the case of
> > > > > >> > > > > > > > > eDP this reduction improves the user experience dramatically - i.e.
> > > > > >> > > > > > > > > removes 9.9s of bland screen time at boot.
> > > > > >> > > > > > > > >
> > > > > >> > > > > > > > > Suggested-by: Sankeerth Billakanti <sbillaka@codeaurora.org>
> > > > > >> > > > > > > > > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> > > > > >> > > > > > > > > ---
> > > > > >> > > > > > > >
> > > > > >> > > > > > > > Any Fixes tag? BTW, the delay design is pretty convoluted. I had to go
> > > > > >> > > > > > > > re-read the code a couple times to understand that it's waiting 100ms
> > > > > >> > > > > > > > times the 'delay' number. Whaaaaat?
> > > > > >> > > > > > > >
> > > > > >> > > > > > >
> > > > > >> > > > > > > I assume you're happy with the current 10s delay on the current
> > > > > >> > > > > > > devices, so I don't think we should push for this to be backported.
> > > > > >> > > > > > > I have no need for it to be backported on my side at least.
> > > > > >> > > > > > >
> > > > > >> > > > > >
> > > > > >> > > > > > Sure. Fixes tag != backported to stable trees but it is close.
> > > > > >> > > > > >
> > > > > >> > > > > > > > Reviewed-by: Stephen Boyd <swboyd@chromium.org>
> > > > > >> > > > > > >
> > > > > >> > > > >   dp_add_event(dp, EV_HPD_INIT_SETUP, 0, 1); <== to 100ms
> > > > > >> > > > >
> > > > > >> > > > > This patch will prevent usb3 from working due to dp driver
> > > > > >> > > > > initialize phy
> > > > > >> > > > > earlier than usb3 which cause timeout error at power up usb3 phy
> > > > > >> > > > > when both
> > > > > >> > > > > edp and dp are enabled.
> > > > > >> > > >
> > > > > >> > > > Can you please help me understand what you mean here, I use this on my
> > > > > >> > > > sc8180x with both eDP and USB-C/DP right now. What is it that doesn't
> > > > > >> > > > work? Or am I just lucky in some race condition?
> > > > > >> > > >
> > > > > >> > > > Thanks,
> > > > > >> > > > Bjorn
> > > > > >> > > >
> > > > > >> > > The problem is seen at sc7280.
> > > > > >> > > Apple dongle have both  hdmi and usb port.
> > > > > >> > > plug Apple dongle into type-c, then plug DP into apple's hdmi port
> > > > > >> > > and usb
> > > > > >> > > mouse into apple's usb port.
> > > > > >> > > If edp enabled at this time, then usb mouse will not work due to
> > > > > >> > > timeout at
> > > > > >> > > phy power up.
> > > > > >> > >
> > > > > >> >
> > > > > >> > Okay, so you're saying that if the DP driver invokes phy_power_on()
> > > > > >> > before the USB driver does, USB initialization fails (or at least USB
> > > > > >> > doesn't work)?
> > > > > >>
> > > > > >> if dp driver call qcom_qmp_phy_init() before usb3 call
> > > > > >> qcom_qmp_phy_init(),
> > > > > >> usb3 driver will timeout at readl_poll_timeout(status, val, (val &
> > > > > >> mask) ==
> > > > > >> ready, 10, PHY_INIT_COMPLETE_TIMEOUT) of qcom_qmp_phy_power_on().
> > > > > >
> > > > > > Thanks, I will try to reproduce this on my side. So the 10 seconds here
> > > > > > is strictly to give good enough time for the dwc3 driver to probe...
> > > > > >
> > > > > > Any idea why you're saying that this is specific to sc7280, what
> > > > > > changed
> > > > > > from sc7180?
> > > > >
> > > > > I did not have sc7180 with edp before so that i am not sure it will
> > > > > happen on sc7180 or not.
> > > > > The usb3 does not work when both edp and dp enabled I just seen at
> > > > > sc7280.
> > > > > Current at sc7280 EC is not boot up correctly when system power up.
> > > > > I have to manual reboot EC from linux kernel shell before DP/usb3 can
> > > > > work.
> > > > > I am not sure this contribute to this problem or not.
> > > > >
> > > >
> > > > Can you make the usb driver into a module and only load that module
> > > > later in boot after the DP driver calls qcom_qmp_phy_init()? That would
> > > > be an easy way to move usb probe after DP probe and expose this problem.
> > > 
> > > we need usb calls qcom_qmp_phy_init() before dp.
> > 
> > Why?
> I do not know the details.
> But I did see below scenario,
> 
> if dp driver call qcom_qmp_phy_init() before usb3 call
> qcom_qmp_phy_init(),
> usb3 driver will timeout at readl_poll_timeout(status, val, (val &
> mask) ==
> ready, 10, PHY_INIT_COMPLETE_TIMEOUT) of qcom_qmp_phy_power_on().

Sounds like a bug in the QMP driver, something that could easily be
reproduced by waiting for DP to be up before we bring up USB - either by
chance, or following Stephen's suggestion on purpose.

Someone will have to look into this, so that we don't need a 10 second
workaround in the (e)DP driver.

Regards,
Bjorn
diff mbox series

Patch

diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
index 21b9c1de4ecb..46d9f3eb6d13 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.c
+++ b/drivers/gpu/drm/msm/dp/dp_display.c
@@ -1438,7 +1438,7 @@  void msm_dp_irq_postinstall(struct msm_dp *dp_display)
 
 	dp_hpd_event_setup(dp);
 
-	dp_add_event(dp, EV_HPD_INIT_SETUP, 0, 100);
+	dp_add_event(dp, EV_HPD_INIT_SETUP, 0, 1);
 }
 
 void msm_dp_debugfs_init(struct msm_dp *dp_display, struct drm_minor *minor)