Color lookup support for the atmel-hlcdc driver

Boris Brezillon boris.brezillon at free-electrons.com
Thu Jun 15 11:54:30 UTC 2017


On Thu, 15 Jun 2017 13:47:35 +0200
Peter Rosin <peda at axentia.se> wrote:

> On 2017-06-15 12:15, Boris Brezillon wrote:
> > On Thu, 15 Jun 2017 11:54:29 +0200
> > Peter Rosin <peda at axentia.se> wrote:
> >   
> >> On 2017-06-13 17:30, Boris Brezillon wrote:  
> >>> Hi Peter,
> >>>
> >>> On Tue, 13 Jun 2017 16:34:25 +0200
> >>> Peter Rosin <peda at axentia.se> wrote:
> >>>     
> >>>> Hi!
> >>>>
> >>>> I need color lookup support for the atmel-hlcdc driver, and had a peek
> >>>> at the code. I also looked at the drivers/gpu/drm/stm driver and came
> >>>> up with the below diff. It compiles, but I have not booted it for the
> >>>> simple reason that I can't imagine it will work.
> >>>>
> >>>> Sure, the code fills the clut registers in the .load_lut helper function
> >>>> and I think it might even do the right thing when setting up the mode.
> >>>> I'm less sure DMA will work correctly? It might, but I haven't looked at
> >>>> it for many seconds...
> >>>>
> >>>> The big question is how the color info gets into the new clut array
> >>>> I created in atmel_hlcdc_crtc? When I look at the stm driver, which does
> >>>> it just like this AFAICT I just don't see it. So, what I'm I missing?    
> >>>
> >>> You should look at drm_atomic_helper_legacy_gamma_set() and its users.    
> >>
> >> Ok, thanks. I had a long look and could not get it to work at all.  
> > 
> > Probably because you're trying to set this up through the emulated
> > fbdev interface. The solution I proposed is supposed to be accessed
> > through DRM ioctls.  
> 
> Yes, that seems like the root cause of most of my troubles. But, the apps
> I have seem to use the fbdev interface, and if the emulation is poorly
> done, they won't work right...
> 
> >> So,
> >> I did as below instead. However, there are a few glaring problems...  
> > 
> > Well, I doubt this will be accepted. The fbdev emulation layer is
> > supposed to be rather dumb, partly because DRM people want developers
> > to switch to the DRM interface.  
> 
> Sigh.
> 
> > Also note that I won't accept a solution that supports setting the LUT
> > table only through the fbdev interface, so please try to make it work
> > the DRM way before you even consider modifying the fbdev emulation
> > layer.  
> 
> Ok, I'll have another look. But to me, it's a maze...
> 
> >>
> >> Something, somewhere, sets up default entries for the 16 first entries
> >> of the palette and seem to expect them to stay as some kind of safe
> >> basic palette, and my applications don't handle it too well. When they
> >> want to draw black, they get a poisonous cyan/green instead etc. But
> >> it's pretty close. Can anyone provide some clue as to how that is
> >> supposed to be handled?
> >>
> >> Also, I had to change the second argument of the drm_fbdev_cma_init...
> >> call at the end of atmel_hlcdc_dc.c:atmel_hlcdc_dc_load() from 24 to 8
> >> to make it possible to set 8-modes. However, doing so fucks up 24-bit
> >> modes. Which made me suspect that no non-24-bit mode work w/o my patch.
> >> And I could indeed only get 24-bit modes to work, unless I changed this
> >> value to 16. Then RGB565 works like a charm, but RGB888 don't. What's
> >> up with that? Seems like a rather silly limitation, but it's perhaps
> >> just a bug?  
> > 
> > I'm pretty sure this is not a bug. AFAIR, prefered_bpp is used when you
> > don't explicitly specify the video mode you want to use on the cmdline
> > [1].
> > 
> > [1]http://elixir.free-electrons.com/linux/v3.11/source/Documentation/fb/modedb.txt
> >   
> 
> (Why refer to v3.11 docs?)
> 
> Let's start with some basics, I tried to add
> 
> 	video=atmel-hclcd-dc:1024x768-16
> 
> and
> 
> 	video=atmel_hclcd_dc:1024x768-16
> 
> to the kernel cmdline of an unpatched linux-next kernel. No dice, I can
> still only access RBG888. I'm obviously in need of some hand-holding...
> 
> How am I supposed to get a 16-bit mode?

You should have a look at [1].

[1]https://www.at91.com/linux4sam/bin/view/Linux4SAM/UsingAtmelDRMDriver#Choose_supported_modes


More information about the dri-devel mailing list