[PATCH] drm: mali-dp: Set encoder possible_clones
Ville Syrjälä
ville.syrjala at linux.intel.com
Thu Jul 12 13:10:21 UTC 2018
On Thu, Jul 12, 2018 at 01:54:07PM +0100, Alexandru-Cosmin Gheorghe wrote:
> On Thu, Jul 12, 2018 at 03:37:36PM +0300, Ville Syrjälä wrote:
> > On Thu, Jul 12, 2018 at 09:48:56AM +0100, Alexandru Gheorghe wrote:
> > > Set possible_clones field to report that the writeback connector and
> > > the one driving the display could be enabled at the same time.
> > >
> > > Signed-off-by: Alexandru Gheorghe <alexandru-cosmin.gheorghe at arm.com>
> > > ---
> > > drivers/gpu/drm/arm/malidp_drv.c | 10 ++++++++++
> > > 1 file changed, 10 insertions(+)
> > >
> > > diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
> > > index 5b72605..3664da9 100644
> > > --- a/drivers/gpu/drm/arm/malidp_drv.c
> > > +++ b/drivers/gpu/drm/arm/malidp_drv.c
> > > @@ -616,6 +616,8 @@ static int malidp_bind(struct device *dev)
> > > struct malidp_hw_device *hwdev;
> > > struct platform_device *pdev = to_platform_device(dev);
> > > struct of_device_id const *dev_id;
> > > + struct drm_encoder *encoder;
> > > + int num_encoders = 0;
> > > /* number of lines for the R, G and B output */
> > > u8 output_width[MAX_OUTPUT_CHANNELS];
> > > int ret = 0, i;
> > > @@ -737,6 +739,14 @@ static int malidp_bind(struct device *dev)
> > > goto bind_fail;
> > > }
> > >
> > > + list_for_each_entry(encoder, &drm->mode_config.encoder_list, head) {
> > > + num_encoders++;
> > > + }
> >
> > dev->mode_config.num_encoder ?
>
> Thanks for that, I will use it.
>
> >
> > > +
> > > + list_for_each_entry(encoder, &drm->mode_config.encoder_list, head) {
> > > + encoder->possible_clones = (1 << num_encoders) - 1;
> > > + }
> >
> > Your commit message speaks only about two specific encoders but here
> > you're claiming any encoder can be cloned with any other. I can't
> > actually figure out how many encoders there can be because the encoder
> > registration seems to happen by magic means. Some explanation would
> > be nice.
> >
> > I'm interested because I'd like to clean up the possible_clones stuff
> > to actually reflect reality so that userspace could actually use that
> > information for something. See
> > https://patchwork.freedesktop.org/series/44849/
> >
>
> There are just two encoders, encoder->possible_clones = 0x3 would've
> done the job, do you think I should use it to better convey intent?
Are there any direct pointers to those encoders? If there are I
might recommend a more explicit
a.possible_clones = drm_encoder_mask(a) | drm_encoder_mask(b);
b.possible_clones = drm_encodrr_mask(a) | drm_encoder_mask(b);
or something like that.
But if there aren't then I think the num_encoder thing should work
fine. But I would suggest adding a comment to explain the situation,
and maybe even a WARN_ON(num_encoder != 2) so that people will
realize that this code needs to be updated if more encoders show up
in the future.
--
Ville Syrjälä
Intel
More information about the dri-devel
mailing list