mbox series

[0/4] drm/msm/dp: Add support for SC8180x eDP controller

Message ID 20210511042043.592802-1-bjorn.andersson@linaro.org (mailing list archive)
Headers show
Series drm/msm/dp: Add support for SC8180x eDP controller | expand

Message

Bjorn Andersson May 11, 2021, 4:20 a.m. UTC
The first patch in the series is somewhat unrelated to the support, but
simplifies reasoning and debugging of timing related issues.

The second patch introduces support for dealing with different register block
layouts, which is used in the forth patch to describe the hardware blocks found
in the SC8180x eDP block.

The third patch configures the INTF_CONFIG register, which carries the
configuration for widebus handling. As with the DPU the bootloader enables
widebus and we need to disable it, or implement support for adjusting the
timing.

Bjorn Andersson (4):
  drm/msm/dp: Simplify the mvid/nvid calculation
  drm/msm/dp: Store each subblock in the io region
  drm/msm/dp: Initialize the INTF_CONFIG register
  drm/msm/dp: Add support for SC8180x eDP

 drivers/gpu/drm/msm/dp/dp_catalog.c | 99 +++++++----------------------
 drivers/gpu/drm/msm/dp/dp_display.c |  1 +
 drivers/gpu/drm/msm/dp/dp_parser.c  | 22 +++++++
 drivers/gpu/drm/msm/dp/dp_parser.h  |  8 +++
 4 files changed, 53 insertions(+), 77 deletions(-)

Comments

Abhinav Kumar May 19, 2021, 3:41 a.m. UTC | #1
Hi Bjorn

I had a quick glance on the series and before getting to other things 
wanted to know how you are initializing two different connectors for
DP & EDP resp.

The connector type for DP should be DRM_MODE_CONNECTOR_DisplayPort and 
eDP should be DRM_MODE_CONNECTOR_eDP.
We need both to be created so that both EDP and DP can be supported 
concurrently.

Will these changes work for concurrent eDP and DP case?

Thanks

Abhinav

On 2021-05-10 21:20, Bjorn Andersson wrote:
> The first patch in the series is somewhat unrelated to the support, but
> simplifies reasoning and debugging of timing related issues.
> 
> The second patch introduces support for dealing with different register 
> block
> layouts, which is used in the forth patch to describe the hardware 
> blocks found
> in the SC8180x eDP block.
> 
> The third patch configures the INTF_CONFIG register, which carries the
> configuration for widebus handling. As with the DPU the bootloader 
> enables
> widebus and we need to disable it, or implement support for adjusting 
> the
> timing.
> 
> Bjorn Andersson (4):
>   drm/msm/dp: Simplify the mvid/nvid calculation
>   drm/msm/dp: Store each subblock in the io region
>   drm/msm/dp: Initialize the INTF_CONFIG register
>   drm/msm/dp: Add support for SC8180x eDP
> 
>  drivers/gpu/drm/msm/dp/dp_catalog.c | 99 +++++++----------------------
>  drivers/gpu/drm/msm/dp/dp_display.c |  1 +
>  drivers/gpu/drm/msm/dp/dp_parser.c  | 22 +++++++
>  drivers/gpu/drm/msm/dp/dp_parser.h  |  8 +++
>  4 files changed, 53 insertions(+), 77 deletions(-)
Bjorn Andersson May 19, 2021, 2:51 p.m. UTC | #2
On Tue 18 May 22:41 CDT 2021, abhinavk@codeaurora.org wrote:

> Hi Bjorn
> 
> I had a quick glance on the series and before getting to other things wanted
> to know how you are initializing two different connectors for
> DP & EDP resp.
> 
> The connector type for DP should be DRM_MODE_CONNECTOR_DisplayPort and eDP
> should be DRM_MODE_CONNECTOR_eDP.

As far as I've been able to conclude there is no eDP support in the
upstream DPU driver; an encoder of type DRM_MODE_ENCODER_TMDS will only
attach to INTF_DP.

> We need both to be created so that both EDP and DP can be supported
> concurrently.
> 

Further more the DP controller driver has a global variable to track
state and the INTF-picker will always pick the interface of index 0 when
setting up the DP controller.

> Will these changes work for concurrent eDP and DP case?
> 

The proposed changes are all that I need to get eDP working on my
sc8180x laptop. But the DPU code does not currently support more than a
single DP interface - and that has to be on the first INTF_DP that the
DPU driver knows about.

But this is a limitation we should fix, rather than claiming that you
can only have one of each. Further more, afaict the sc7280 DP controller
can do both DP and eDP, so it would make sense not to distinguish the
interfaces as eDP or DP - just because the product in mind will use eDP.


PS. I've currently disabled the eDP interface on my laptop and am
working on trying to get Type-C DP working. Once that's in place I'd
need a better INTF/encoder picker - because the current model of just
picking INTF_DP 0 (or in a sequential fashion) won't work.

Regards,
Bjorn

> Thanks
> 
> Abhinav
> 
> On 2021-05-10 21:20, Bjorn Andersson wrote:
> > The first patch in the series is somewhat unrelated to the support, but
> > simplifies reasoning and debugging of timing related issues.
> > 
> > The second patch introduces support for dealing with different register
> > block
> > layouts, which is used in the forth patch to describe the hardware
> > blocks found
> > in the SC8180x eDP block.
> > 
> > The third patch configures the INTF_CONFIG register, which carries the
> > configuration for widebus handling. As with the DPU the bootloader
> > enables
> > widebus and we need to disable it, or implement support for adjusting
> > the
> > timing.
> > 
> > Bjorn Andersson (4):
> >   drm/msm/dp: Simplify the mvid/nvid calculation
> >   drm/msm/dp: Store each subblock in the io region
> >   drm/msm/dp: Initialize the INTF_CONFIG register
> >   drm/msm/dp: Add support for SC8180x eDP
> > 
> >  drivers/gpu/drm/msm/dp/dp_catalog.c | 99 +++++++----------------------
> >  drivers/gpu/drm/msm/dp/dp_display.c |  1 +
> >  drivers/gpu/drm/msm/dp/dp_parser.c  | 22 +++++++
> >  drivers/gpu/drm/msm/dp/dp_parser.h  |  8 +++
> >  4 files changed, 53 insertions(+), 77 deletions(-)
Abhinav Kumar May 28, 2021, 10:37 p.m. UTC | #3
Hi Bjorn

On 2021-05-19 07:51, Bjorn Andersson wrote:
> On Tue 18 May 22:41 CDT 2021, abhinavk@codeaurora.org wrote:
> 
>> Hi Bjorn
>> 
>> I had a quick glance on the series and before getting to other things 
>> wanted
>> to know how you are initializing two different connectors for
>> DP & EDP resp.
>> 
>> The connector type for DP should be DRM_MODE_CONNECTOR_DisplayPort and 
>> eDP
>> should be DRM_MODE_CONNECTOR_eDP.
> 
> As far as I've been able to conclude there is no eDP support in the
> upstream DPU driver; an encoder of type DRM_MODE_ENCODER_TMDS will only
> attach to INTF_DP.
> 
>> We need both to be created so that both EDP and DP can be supported
>> concurrently.
>> 
> 
> Further more the DP controller driver has a global variable to track
> state and the INTF-picker will always pick the interface of index 0 
> when
> setting up the DP controller.
> 
>> Will these changes work for concurrent eDP and DP case?
>> 
> 
> The proposed changes are all that I need to get eDP working on my
> sc8180x laptop. But the DPU code does not currently support more than a
> single DP interface - and that has to be on the first INTF_DP that the
> DPU driver knows about.
> 
> But this is a limitation we should fix, rather than claiming that you
> can only have one of each. Further more, afaict the sc7280 DP 
> controller
> can do both DP and eDP, so it would make sense not to distinguish the
> interfaces as eDP or DP - just because the product in mind will use 
> eDP.
> 
> 
> PS. I've currently disabled the eDP interface on my laptop and am
> working on trying to get Type-C DP working. Once that's in place I'd
> need a better INTF/encoder picker - because the current model of just
> picking INTF_DP 0 (or in a sequential fashion) won't work.
> 
> Regards,
> Bjorn

Yes, we should be able to support eDP + DP concurrently on both sc7280
and sc8180x. Some of the changes we will be posting in the coming weeks
should add support for it. Till then, as we spoke on IRC, since your 
changes
dont break existing DP functionality, will continue reviewing rest of 
the changes.

> 
>> Thanks
>> 
>> Abhinav
>> 
>> On 2021-05-10 21:20, Bjorn Andersson wrote:
>> > The first patch in the series is somewhat unrelated to the support, but
>> > simplifies reasoning and debugging of timing related issues.
>> >
>> > The second patch introduces support for dealing with different register
>> > block
>> > layouts, which is used in the forth patch to describe the hardware
>> > blocks found
>> > in the SC8180x eDP block.
>> >
>> > The third patch configures the INTF_CONFIG register, which carries the
>> > configuration for widebus handling. As with the DPU the bootloader
>> > enables
>> > widebus and we need to disable it, or implement support for adjusting
>> > the
>> > timing.
>> >
>> > Bjorn Andersson (4):
>> >   drm/msm/dp: Simplify the mvid/nvid calculation
>> >   drm/msm/dp: Store each subblock in the io region
>> >   drm/msm/dp: Initialize the INTF_CONFIG register
>> >   drm/msm/dp: Add support for SC8180x eDP
>> >
>> >  drivers/gpu/drm/msm/dp/dp_catalog.c | 99 +++++++----------------------
>> >  drivers/gpu/drm/msm/dp/dp_display.c |  1 +
>> >  drivers/gpu/drm/msm/dp/dp_parser.c  | 22 +++++++
>> >  drivers/gpu/drm/msm/dp/dp_parser.h  |  8 +++
>> >  4 files changed, 53 insertions(+), 77 deletions(-)