Hi Eugene,
Thanks for this post. it might help me in a while. however,
I have been trying to set up dfb on 8634 and have following issues.
When I load the directdb samples, I am gettting the following messages from
the framebuffer driver.
resolution : 0
Warning, mambolfb_setcolreg, unsupported resolution : 0
Warning, mambolfb_setcolreg, unsupported resolution : 0
Warning, mambolfb_setcolreg, unsupported resolution : 0
Warning, mambolfb_setcolreg, unsupported resolution : 0
Warning, mambolfb_setcolreg, unsupported resolution : 0
Warning, mambolfb_setcolreg, unsupported resolution : 0
fbcon_setup: No support for fontwidth 8
fbcon_setup: type 0 (aux 0, depth 16) not supported
I am using the following command the load the framebuffer driver.
./osdbuf_control -c -Ftck:16bpp_565
OSD format : tck:16bpp_565
videomemory=0x13969c00 videomemorysize=614400 palette=0x79000
mode=640:480:16
# ./osdbuf_control -p
videomemory=0x13969c00 videomemorysize=614400 palette=0x79000
mode=640:480:16
# insmod
/mnt/mrua_SMP8634_2.7.144.0_legacy_dev.mips/MRUA_src/mambolfb/mambolfb.o
videomemory=
0x13969c00 videomemorysize=614400 palette=0x79000 mode=640:480:16
Using
/mnt/mrua_SMP8634_2.7.144.0_legacy_dev.mips/MRUA_src/mambolfb/mambolfb.o
Is the parameters correct? I am using conventional TV as my output device.
I think I am getting unsupported resolution error, because none of
FBCON_HAS_CFB16, FBCON_HAS_CFB32,FBCON_HAS_CFB24 have been defined. I tried
recompiling the kernel with these options enabled, but when I insert the
mambolfb driver, the system produces oops message with a segmentation fault.
So I moved back to the original kernel.
Please have a look at the following piece of code.
#ifdef FBCON_HAS_CFB16
red >>= 3;
green >>= 2;
blue >>= 3;
fbcon_cmap.cfb16[regno] = (u16) red << 11 |
(u16) green << 5 | (u16) blue ;
#endif
break;
case 24:
#ifdef FBCON_HAS_CFB24
fbcon_cmap.cfb24[regno] = 0xFF << 24 | red
<< 16 | green << 8 | blue ;
#endif
break;
case 32:
#ifdef FBCON_HAS_CFB32
fbcon_cmap.cfb32[regno] = 0xFF << 24 | red
<< 16 | green << 8 | blue ;
#endif
break;
default:
printk(KERN_WARNING "Warning,
mambolfb_setcolreg, unsupported resolution : %d\n",
info->var.bits_per_pixel);
}
When none of them have been defined, there is no way of plotting a pixel. I
think that is the reason why I am not able to get anything on the screen.
But there should be some proper way of enabling FBCON_HAS_CFB32 or
FBCON_HAS_CFB16 option in the kernel. I looked at the documents which I
have. but I could not find any information related to this.
When I insmod the driver, I am getting the following crash. This is when I
enable FBCON_HAS_CFB16 or FBCON_HAS_CFB32. If I dont enable these, then the
setcolreg function wont be able to plot a pixel.
mode = 640:480:16
mode = 640x480 16 bpp
locked 1 regions, starting from region 328637440 at offset 0x00000000
OSD videomemory=0x13969c00 (614400 bytes)
Line 874
Line 780
Line 783
Line 795
mambolfb_set_var, con = -1
Line length = 1280 (640x16)
registering fb
con 0 currcon 0
Unable to handle kernel paging request at virtual address 139e1c00, epc ==
901a1ed0, ra == 901
a1f50
Oops in fault.c::do_page_fault, line 206:
$0 : 00000000 90450000 00000000 00000000 00000000 00000000 902d9db9 902da9a8
$8 : 139e1c00 0000000e 00000063 ffffffff 00000008 00000800 00000200 00000000
$16: 00000000 00000000 9044fa30 00000500 0000000f 915b8f02 139e1c00 ffffffff
$24: 00000000 901bd918 91b3e000 91b3f9b8 902da9a8 901a1f50
Hi : 00000000
Lo : 00000630
epc : 901a1ed0 Tainted: P
Status: 10001c03
Cause : 5080800c
PrId : 00019068
Process insmod (pid: 62, stackpage=91b3e000)
Stack: 90440000 ffffffff 9013d908 0101a8c0 00000001 9043ea04 00000010
00000000 904266f8 90440000 00000000 90440000 9043ea04 9019d568 90776480
9043ea04 00000000 00000011 00000018 00000000 0000000a 9013a4bc 91b3fb30
00000000 90222c98 91be6058 00000000 00000000 00000010 00000000 9043ea04
00000000 902ad280 0000136f 90425378 0000136f 00001380 90425378 fffffec5
90430000 ...
Call Trace: [<9013d908>] [<9019d568>] [<9013a4bc>] [<90222c98>]
[<900360d0>]
[<900364e8>] [<90036820>] [<d0631ad7>] [<90223938>] [<d063209c>]
[<d063209c>]
[<d0630668>] [<d0630fd0>] [<9025e650>] [<9005bda4>] [<901a090c>]
[<9013d908>]
[<9025e650>] [<9005c324>] [<901376e8>] [<90137a38>] [<90058414>]
[<9013837c>]
[<902247d0>] [<900e5e7c>] [<900e5e4c>] [<9025e650>] [<9005bda4>]
[<900e6024>]
[<9025e650>] [<9005c324>] [<90057280>] [<9013a3d0>] [<9013a3d0>]
[<90242e30>]
[<9025e650>] [<9019c93c>] [<d063209c>] [<90242e30>] [<9025e650>] ...
Code: 00912024 00902026 30a3000c <ad040000> 00471021 00675021 8c430000
30a50003 00052880
note: insmod[62] exited with preempt_count 1
Eugene Everson-2 wrote:
>
>
> I've a had hard time to get dfb to run on sigma 8634/8635 boards with
> their
> mrua libraries above 142. Hope someone will find this usefull.
>
> The alignment have to be changed like this,
>
> systems/fbdev/fbdev.c, in system_initialize function under where the
> memory
> gets mapped,
>
> /* Map the framebuffer */
> dfb_fbdev->framebuffer_base = mmap( NULL, shared->fix.smem_len,
> PROT_READ | PROT_WRITE,
> MAP_SHARED,
> dfb_fbdev->fd, 0 );
>
> Add this to fix the allignment(only needed for standalone boards),
>
> printf("Base memory: %x\n", dfb_fbdev->framebuffer_base);
>
> #define PAGE_SIZE (4096)
>
> if (shared->fix.smem_start & (PAGE_SIZE-1)) {
> dfb_fbdev->framebuffer_base += (shared->fix.smem_start &
> (PAGE_SIZE-1));
> fprintf(stderr, "Fix alignment 0x%08lx -> %p.\n",
> shared->fix.smem_start, dfb_fbdev->framebuffer_base);
> }
>
> _______________________________________________
> directfb-dev mailing list
> [email protected]
> http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev
>
>
--
View this message in context:
http://www.nabble.com/sigma-8634-8635-fix-tf4199088.html#a13102510
Sent from the DirectFB Dev mailing list archive at Nabble.com.
_______________________________________________
directfb-dev mailing list
[email protected]
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev