Linux Framebuffer Layer development
 help / color / mirror / Atom feed
* Re: [F]Framebuffer driver using SM501 hardware.
       [not found]   ` <Pine.LNX.4.62.0508171317540.6073@numbat.sonytel.be>
@ 2005-08-17 12:15     ` Andrey Volkov
  2005-08-17 12:42       ` Geert Uytterhoeven
  0 siblings, 1 reply; 5+ messages in thread
From: Andrey Volkov @ 2005-08-17 12:15 UTC (permalink / raw)
  To: Geert Uytterhoeven, linux-fbdev-devel
  Cc: Wolfgang Denk, Linux/PPC Development, surendra.yadav



Geert Uytterhoeven wrote:
> On Wed, 17 Aug 2005, Andrey Volkov wrote:
> 
>>Todo:
>>- 16 bpp colormap (needed reverse endian support in fbcon/fbmem)
> 
> 
> Can you please elaborate? For 2.6, there should be no such problems (for 2.4,
> there are).

Sorry for inexactitude, problem (as usually :)) in next (for case of
MPC5200 connected through PCI to SM501): PCI on PPC (and hence SM501) is
a little endian, PPC - big endian.
Currently (up to 2.6.13-rc6) frame buffer routines use
__raw_writeXX for write to fb memory. Result - garbage with colors in
RGB565/RGB888 modes (but pixels, meanwhile, are in place). If using
write[lw] - colors are diplayed correctly, but all image pixels are
shifted for (RGB565). This is not bug of frame buffer, this is lack of
some define in .config which tell fb/device driver how palette must be
generated (more precisely it is unknown when must be RGB565, but when
must be BGR565).

Problem redouble when hw accel, as bus muster, entered in the game:
for accelerated imageblit pixels must be in RGB565 mode :((

-- 
Regards
Andrey Volkov


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [F]Framebuffer driver using SM501 hardware.
  2005-08-17 12:15     ` [F]Framebuffer driver using SM501 hardware Andrey Volkov
@ 2005-08-17 12:42       ` Geert Uytterhoeven
  2005-08-17 14:23         ` Andrey Volkov
  2005-08-17 14:31         ` Clemens Koller
  0 siblings, 2 replies; 5+ messages in thread
From: Geert Uytterhoeven @ 2005-08-17 12:42 UTC (permalink / raw)
  To: Andrey Volkov
  Cc: Linux Frame Buffer Device Development, Wolfgang Denk,
	Linux/PPC Development, surendra.yadav

On Wed, 17 Aug 2005, Andrey Volkov wrote:
> Geert Uytterhoeven wrote:
> > On Wed, 17 Aug 2005, Andrey Volkov wrote:
> > 
> >>Todo:
> >>- 16 bpp colormap (needed reverse endian support in fbcon/fbmem)
> > 
> > 
> > Can you please elaborate? For 2.6, there should be no such problems (for 2.4,
> > there are).
> 
> Sorry for inexactitude, problem (as usually :)) in next (for case of
> MPC5200 connected through PCI to SM501): PCI on PPC (and hence SM501) is
> a little endian, PPC - big endian.
> Currently (up to 2.6.13-rc6) frame buffer routines use
> __raw_writeXX for write to fb memory. Result - garbage with colors in
> RGB565/RGB888 modes (but pixels, meanwhile, are in place). If using
> write[lw] - colors are diplayed correctly, but all image pixels are
> shifted for (RGB565). This is not bug of frame buffer, this is lack of
> some define in .config which tell fb/device driver how palette must be
> generated (more precisely it is unknown when must be RGB565, but when
> must be BGR565).

Sorry, I cannot follow.

 1. If it's a palette issue, your setcolreg() routine doesn't fill in correctly
    the pseudo palette,
 2. If it's a RGB565 vs. BGR565 issue, you don't fill in correctly the offsets
    in the color bitfields in fb_var_screeninfo,
 3. If it's an endian issue, it's RRRRRGGGGGGBBBBB vs.GGBBBBBRRRRGGGG, right?
    And then there's no much we can do...

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [F]Framebuffer driver using SM501 hardware.
  2005-08-17 12:42       ` Geert Uytterhoeven
@ 2005-08-17 14:23         ` Andrey Volkov
  2005-08-17 14:31         ` Clemens Koller
  1 sibling, 0 replies; 5+ messages in thread
From: Andrey Volkov @ 2005-08-17 14:23 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Linux Frame Buffer Device Development, Wolfgang Denk,
	Linux/PPC Development, surendra.yadav


Geert Uytterhoeven wrote:
> On Wed, 17 Aug 2005, Andrey Volkov wrote:
> 
>>Geert Uytterhoeven wrote:
>>
>>>On Wed, 17 Aug 2005, Andrey Volkov wrote:
>>>
>>>
>>>>Todo:
>>>>- 16 bpp colormap (needed reverse endian support in fbcon/fbmem)
>>>
>>>
>>>Can you please elaborate? For 2.6, there should be no such problems (for 2.4,
>>>there are).
>>
>>Sorry for inexactitude, problem (as usually :)) in next (for case of
>>MPC5200 connected through PCI to SM501): PCI on PPC (and hence SM501) is
>>a little endian, PPC - big endian.
>>Currently (up to 2.6.13-rc6) frame buffer routines use
>>__raw_writeXX for write to fb memory. Result - garbage with colors in
>>RGB565/RGB888 modes (but pixels, meanwhile, are in place). If using
>>write[lw] - colors are diplayed correctly, but all image pixels are
>>shifted for (RGB565). This is not bug of frame buffer, this is lack of
>>some define in .config which tell fb/device driver how palette must be
>>generated (more precisely it is unknown when must be RGB565, but when
>>must be BGR565).
> 
> 
> Sorry, I cannot follow.

Ok, I'll try more clearly:
> 
>  1. If it's a palette issue, your setcolreg() routine doesn't fill in correctly
>     the pseudo palette,
>  2. If it's a RGB565 vs. BGR565 issue, you don't fill in correctly the offsets
>     in the color bitfields in fb_var_screeninfo,
Yes, due to duality of SM501: in memory mapped mode, its endian same as
on the host, BUT in PCI mode it work only as little endian
(theoretically it could be switched to big endian too, but for PPC it
have not meaning).

Both above problems could be solved by #ifdef/#else in SM5xx driver (as
I said before, my driver in prerelease stage :) ).
But it will be more useful, IMHO, if somewhere in Kconfig will be
defined something like CONFIG_PCI_LITTLE_ENDIAN/
CONFIG_FB_TARGET_LITTLE_ENDIAN.

>  3. If it's an endian issue, it's RRRRRGGGGGGBBBBB vs.GGBBBBBRRRRGGGG, right?
Right. As I wrote before, when SM501 blitter work as PCI bus master, it
read/write from/to host memory in little endian mode. But situation
changed when HOST (MPC), read/write from/to framebuffer - PCI subsystem
of MPC convert endian on the fly :(.

 Currently I've two workarounds:
 1) Don't use SM501 as bus master (more preferably, since SM501 anyway
    have some silicon bugs when work as bus master)
 2) Try use different functions for accelerated/unaccelerated bitblit.

>     And then there's no much we can do...
> 


-- 
Regards
Andrey Volkov


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [F]Framebuffer driver using SM501 hardware.
  2005-08-17 12:42       ` Geert Uytterhoeven
  2005-08-17 14:23         ` Andrey Volkov
@ 2005-08-17 14:31         ` Clemens Koller
  2005-08-17 14:52           ` Andrey Volkov
  1 sibling, 1 reply; 5+ messages in thread
From: Clemens Koller @ 2005-08-17 14:31 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Andrey Volkov, Linux/PPC Development,
	Linux Frame Buffer Device Development, surendra.yadav

Hi Geert, Andrey and friends...

I am working on ppc, MPC8540, SM501 on PCI,
drivers=voyagerfb-0.2.tar.gz from last post.
on linux-2.6

Geert wrote:
> Sorry, I cannot follow.
> 
>  1. If it's a palette issue, your setcolreg() routine doesn't fill in correctly
>     the pseudo palette,
>  2. If it's a RGB565 vs. BGR565 issue, you don't fill in correctly the offsets
>     in the color bitfields in fb_var_screeninfo,
>  3. If it's an endian issue, it's RRRRRGGGGGGBBBBB vs.GGBBBBBRRRRGGGG, right?
>     And then there's no much we can do...

It looks for me like 3. = bytes are flipped = an endian issue:
In 32 (RGBAlpha) mode (the one we want to use) the colors appear
wrong. I get my /dev/fb0 appear as 

BB GG RR aa BB GG RR aa BB GG RR aa ...

In the great SM501 Databook Version 1.02, Page 2-39, it says:
Configuration 2, Endian Control at MMIO_base+0x00005c:
write 0x00000000 for little endian or
write 0xffffffff for big endian
into this register before touching any other register of the sm501.
I've tried that, but it didn't change anything on my system. :-(
(Well, we can flip the DAC outputs in our hw design ;-)

Best greets,

Clemens
_______________________________
R&D Imaging Devices
Anagramm GmbH
Rupert-Mayer-Str. 45/1
81379 Muenchen
Germany

http://www.anagramm.de
Phone: +49-89-741518-50
Fax: +49-89-741518-19

------------------------------------------------
details:

$ cp red /dev/fb0 
gives me a some red color...
$ bvi red
00000000  00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 ................
00000010  00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 ................
00000020  00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 ................
...
$ cp green /dev/fb0 
gives me a some green color...
00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00
...
$ cp blue /dev/fb0
well... blue
FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [F]Framebuffer driver using SM501 hardware.
  2005-08-17 14:31         ` Clemens Koller
@ 2005-08-17 14:52           ` Andrey Volkov
  0 siblings, 0 replies; 5+ messages in thread
From: Andrey Volkov @ 2005-08-17 14:52 UTC (permalink / raw)
  To: Clemens Koller
  Cc: Geert Uytterhoeven, Linux/PPC Development,
	Linux Frame Buffer Device Development, surendra.yadav



Clemens Koller wrote:
> Hi Geert, Andrey and friends...
> 
> I am working on ppc, MPC8540, SM501 on PCI,
> drivers=voyagerfb-0.2.tar.gz from last post.
> on linux-2.6
> 
> Geert wrote:
> 
>> Sorry, I cannot follow.
>>
>>  1. If it's a palette issue, your setcolreg() routine doesn't fill in
>> correctly
>>     the pseudo palette,
>>  2. If it's a RGB565 vs. BGR565 issue, you don't fill in correctly the
>> offsets
>>     in the color bitfields in fb_var_screeninfo,
>>  3. If it's an endian issue, it's RRRRRGGGGGGBBBBB vs.GGBBBBBRRRRGGGG,
>> right?
>>     And then there's no much we can do...
> 
> 
> It looks for me like 3. = bytes are flipped = an endian issue:
> In 32 (RGBAlpha) mode (the one we want to use) the colors appear
> wrong. I get my /dev/fb0 appear as
> BB GG RR aa BB GG RR aa BB GG RR aa ...
> 
> In the 
> great 
You're forget qutation here :)

SM501 Databook Version 1.02, Page 2-39, it says:
> Configuration 2, Endian Control at MMIO_base+0x00005c:
> write 0x00000000 for little endian or
> write 0xffffffff for big endian
> into this register before touching any other register of the sm501.
> I've tried that, but it didn't change anything on my system. :-(
> (Well, we can flip the DAC outputs in our hw design ;-)
As I understand, but I'm not sure, LE/BE controlled only by some GPIO
pin (GPIO4 was on rev A/B). I try write to this reg too, with same result.

> 
> Best greets,
> 
> Clemens
> _______________________________
> R&D Imaging Devices
> Anagramm GmbH
> Rupert-Mayer-Str. 45/1
> 81379 Muenchen
> Germany
> 
> http://www.anagramm.de
> Phone: +49-89-741518-50
> Fax: +49-89-741518-19
> 
> ------------------------------------------------
> details:
> 
> $ cp red /dev/fb0 gives me a some red color...
> $ bvi red
> 00000000  00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 ................
> 00000010  00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 ................
> 00000020  00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 ................
> ...
> $ cp green /dev/fb0 gives me a some green color...
> 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00
> ...
> $ cp blue /dev/fb0
> well... blue
> FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00
> 

-- 
Regards
Andrey Volkov


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2005-08-17 14:52 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20050816194825.A62AC353AB5@atlas.denx.de>
     [not found] ` <43030D41.3000508@varma-el.com>
     [not found]   ` <Pine.LNX.4.62.0508171317540.6073@numbat.sonytel.be>
2005-08-17 12:15     ` [F]Framebuffer driver using SM501 hardware Andrey Volkov
2005-08-17 12:42       ` Geert Uytterhoeven
2005-08-17 14:23         ` Andrey Volkov
2005-08-17 14:31         ` Clemens Koller
2005-08-17 14:52           ` Andrey Volkov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox